pptx-angular-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/CHANGELOG.md +13 -0
- package/fesm2022/{pptx-angular-viewer-chat-history-idb-B1LY08QA.mjs → pptx-angular-viewer-chat-history-idb-DzzfR5jW.mjs} +2 -2
- package/fesm2022/{pptx-angular-viewer-chat-history-idb-B1LY08QA.mjs.map → pptx-angular-viewer-chat-history-idb-DzzfR5jW.mjs.map} +1 -1
- package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-Dora2fol.mjs → pptx-angular-viewer-pptx-angular-viewer-bV0DbHDY.mjs} +361 -82
- package/fesm2022/pptx-angular-viewer-pptx-angular-viewer-bV0DbHDY.mjs.map +1 -0
- package/fesm2022/pptx-angular-viewer.mjs +1 -1
- package/package.json +3 -3
- package/types/pptx-angular-viewer.d.ts +32 -3
- package/fesm2022/pptx-angular-viewer-pptx-angular-viewer-Dora2fol.mjs.map +0 -1
|
@@ -15911,13 +15911,109 @@ function expandTextBuildAnimations(animations, segmentCounts) {
|
|
|
15911
15911
|
}
|
|
15912
15912
|
return result;
|
|
15913
15913
|
}
|
|
15914
|
+
/**
|
|
15915
|
+
* The within-paragraph granularity an effect's own `p:iterate` asks for, or
|
|
15916
|
+
* `undefined` when it animates the text as one object (`type="el"`, or absent).
|
|
15917
|
+
*
|
|
15918
|
+
* This is INDEPENDENT of `p:bldP/@build`: the slide build says how the text is
|
|
15919
|
+
* grouped into steps ("by paragraph"), while `p:iterate` says how each step is
|
|
15920
|
+
* subdivided in time ("by letter"). PowerPoint composes the two; reading only
|
|
15921
|
+
* the build type made a by-paragraph credit line authored to ripple in letter by
|
|
15922
|
+
* letter appear as one solid block (issue #106).
|
|
15923
|
+
*/
|
|
15924
|
+
function iterateGranularity(anim) {
|
|
15925
|
+
if (anim.iterate?.type === 'lt') {
|
|
15926
|
+
return 'byChar';
|
|
15927
|
+
}
|
|
15928
|
+
if (anim.iterate?.type === 'wd') {
|
|
15929
|
+
return 'byWord';
|
|
15930
|
+
}
|
|
15931
|
+
return undefined;
|
|
15932
|
+
}
|
|
15933
|
+
/** Per-piece sub-element id prefix and per-paragraph piece count for a split. */
|
|
15934
|
+
function pieceCounts(kind, counts) {
|
|
15935
|
+
return kind === 'byChar'
|
|
15936
|
+
? { token: 'c', perParagraph: counts.charCounts ?? [] }
|
|
15937
|
+
: { token: 'w', perParagraph: counts.wordCounts ?? [] };
|
|
15938
|
+
}
|
|
15939
|
+
/**
|
|
15940
|
+
* Emit one staggered sub-animation per letter / word.
|
|
15941
|
+
*
|
|
15942
|
+
* An `p:iterate` build overlaps: every piece runs the FULL effect duration and
|
|
15943
|
+
* merely starts `stagger` later than the one before, which is what makes
|
|
15944
|
+
* PowerPoint's "by letter" read as a ripple. `withPrevious` steps accumulate
|
|
15945
|
+
* their delay from the previous step's START, so passing the bare interval as
|
|
15946
|
+
* each step's delay yields `base + i * stagger`. The slide-build (`p:bldP`) path
|
|
15947
|
+
* keeps its original end-to-end pacing.
|
|
15948
|
+
*
|
|
15949
|
+
* `newClickStepPerParagraph` reproduces a by-paragraph build: paragraph 0 starts
|
|
15950
|
+
* with the parent effect, and every later paragraph waits for its own click,
|
|
15951
|
+
* with its pieces rippling from there.
|
|
15952
|
+
*/
|
|
15953
|
+
function emitStaggeredPieces(anim, kind, counts, output, newClickStepPerParagraph) {
|
|
15954
|
+
const targetId = anim.targetId ?? '';
|
|
15955
|
+
const baseDuration = anim.durationMs ?? 500;
|
|
15956
|
+
const stagger = iterateStaggerMs(anim, baseDuration);
|
|
15957
|
+
const { token, perParagraph } = pieceCounts(kind, counts);
|
|
15958
|
+
const fallbackDuration = kind === 'byChar'
|
|
15959
|
+
? Math.max(50, Math.round(baseDuration / 4))
|
|
15960
|
+
: Math.max(100, Math.round(baseDuration / 2));
|
|
15961
|
+
const fallbackStagger = kind === 'byChar' ? 20 : 50;
|
|
15962
|
+
let stepIndex = 0;
|
|
15963
|
+
for (let pIdx = 0; pIdx < counts.paragraphCount; pIdx++) {
|
|
15964
|
+
const pieces = perParagraph[pIdx] ?? 0;
|
|
15965
|
+
for (let i = 0; i < pieces; i++) {
|
|
15966
|
+
const opensParagraph = i === 0;
|
|
15967
|
+
const isFirstStep = stepIndex === 0;
|
|
15968
|
+
const startsClickStep = newClickStepPerParagraph && opensParagraph && !isFirstStep;
|
|
15969
|
+
output.push({
|
|
15970
|
+
...anim,
|
|
15971
|
+
targetId: `${targetId}${TEXT_BUILD_ID_SEP}${token}${pIdx}-${i}`,
|
|
15972
|
+
trigger: isFirstStep
|
|
15973
|
+
? anim.trigger
|
|
15974
|
+
: startsClickStep
|
|
15975
|
+
? 'onClick'
|
|
15976
|
+
: stagger !== undefined
|
|
15977
|
+
? 'withPrevious'
|
|
15978
|
+
: 'afterPrevious',
|
|
15979
|
+
durationMs: stagger !== undefined ? baseDuration : fallbackDuration,
|
|
15980
|
+
delayMs: isFirstStep
|
|
15981
|
+
? (anim.delayMs ?? 0)
|
|
15982
|
+
: startsClickStep
|
|
15983
|
+
? 0
|
|
15984
|
+
: (stagger ?? fallbackStagger),
|
|
15985
|
+
// Only the first sub-step inherits the parent's start delay; the
|
|
15986
|
+
// rest carry the bare stagger, so these must not re-apply it.
|
|
15987
|
+
// They are synthetic chain steps rather than OOXML `p:par`
|
|
15988
|
+
// siblings, so they also drop the wrapper index: their delay is
|
|
15989
|
+
// an interval off the step before, not an offset from the group.
|
|
15990
|
+
...(isFirstStep
|
|
15991
|
+
? {}
|
|
15992
|
+
: {
|
|
15993
|
+
triggerDelayMs: undefined,
|
|
15994
|
+
startConditions: undefined,
|
|
15995
|
+
parGroupIndex: undefined,
|
|
15996
|
+
}),
|
|
15997
|
+
buildType: undefined,
|
|
15998
|
+
iterate: undefined,
|
|
15999
|
+
});
|
|
16000
|
+
stepIndex++;
|
|
16001
|
+
}
|
|
16002
|
+
}
|
|
16003
|
+
}
|
|
15914
16004
|
/**
|
|
15915
16005
|
* Expand a single text-build animation into sub-element animations.
|
|
15916
16006
|
*/
|
|
15917
16007
|
function expandSingleBuildAnimation(anim, buildType, counts, output) {
|
|
15918
16008
|
const targetId = anim.targetId ?? '';
|
|
15919
|
-
const baseDuration = anim.durationMs ?? 500;
|
|
15920
16009
|
if (buildType === 'byParagraph') {
|
|
16010
|
+
// A by-paragraph build whose effect also iterates by letter / word still
|
|
16011
|
+
// ripples inside each paragraph; only the step boundaries are paragraphs.
|
|
16012
|
+
const granularity = iterateGranularity(anim);
|
|
16013
|
+
if (granularity) {
|
|
16014
|
+
emitStaggeredPieces(anim, granularity, counts, output, true);
|
|
16015
|
+
return;
|
|
16016
|
+
}
|
|
15921
16017
|
for (let i = 0; i < counts.paragraphCount; i++) {
|
|
15922
16018
|
output.push({
|
|
15923
16019
|
...anim,
|
|
@@ -15928,65 +16024,8 @@ function expandSingleBuildAnimation(anim, buildType, counts, output) {
|
|
|
15928
16024
|
}
|
|
15929
16025
|
return;
|
|
15930
16026
|
}
|
|
15931
|
-
|
|
15932
|
-
|
|
15933
|
-
// what makes PowerPoint's "by letter" read as a ripple. `withPrevious` steps
|
|
15934
|
-
// accumulate their delay from the previous step's START, so passing the bare
|
|
15935
|
-
// interval as each step's delay yields `base + i * stagger`. The slide-build
|
|
15936
|
-
// (`p:bldP`) path keeps its original end-to-end pacing.
|
|
15937
|
-
const stagger = iterateStaggerMs(anim, baseDuration);
|
|
15938
|
-
if (buildType === 'byWord') {
|
|
15939
|
-
const wordCounts = counts.wordCounts ?? [];
|
|
15940
|
-
let stepIndex = 0;
|
|
15941
|
-
for (let pIdx = 0; pIdx < counts.paragraphCount; pIdx++) {
|
|
15942
|
-
const wc = wordCounts[pIdx] ?? 0;
|
|
15943
|
-
for (let wIdx = 0; wIdx < wc; wIdx++) {
|
|
15944
|
-
output.push({
|
|
15945
|
-
...anim,
|
|
15946
|
-
targetId: `${targetId}${TEXT_BUILD_ID_SEP}w${pIdx}-${wIdx}`,
|
|
15947
|
-
trigger: stepIndex === 0
|
|
15948
|
-
? anim.trigger
|
|
15949
|
-
: stagger !== undefined
|
|
15950
|
-
? 'withPrevious'
|
|
15951
|
-
: 'afterPrevious',
|
|
15952
|
-
durationMs: stagger !== undefined ? baseDuration : Math.max(100, Math.round(baseDuration / 2)),
|
|
15953
|
-
delayMs: stepIndex === 0 ? (anim.delayMs ?? 0) : (stagger ?? 50),
|
|
15954
|
-
// Only the first sub-step inherits the parent's start delay; the
|
|
15955
|
-
// rest carry the bare stagger, so these must not re-apply it.
|
|
15956
|
-
...(stepIndex === 0 ? {} : { triggerDelayMs: undefined, startConditions: undefined }),
|
|
15957
|
-
buildType: undefined,
|
|
15958
|
-
iterate: undefined,
|
|
15959
|
-
});
|
|
15960
|
-
stepIndex++;
|
|
15961
|
-
}
|
|
15962
|
-
}
|
|
15963
|
-
return;
|
|
15964
|
-
}
|
|
15965
|
-
if (buildType === 'byChar') {
|
|
15966
|
-
const charCounts = counts.charCounts ?? [];
|
|
15967
|
-
let stepIndex = 0;
|
|
15968
|
-
for (let pIdx = 0; pIdx < counts.paragraphCount; pIdx++) {
|
|
15969
|
-
const cc = charCounts[pIdx] ?? 0;
|
|
15970
|
-
for (let cIdx = 0; cIdx < cc; cIdx++) {
|
|
15971
|
-
output.push({
|
|
15972
|
-
...anim,
|
|
15973
|
-
targetId: `${targetId}${TEXT_BUILD_ID_SEP}c${pIdx}-${cIdx}`,
|
|
15974
|
-
trigger: stepIndex === 0
|
|
15975
|
-
? anim.trigger
|
|
15976
|
-
: stagger !== undefined
|
|
15977
|
-
? 'withPrevious'
|
|
15978
|
-
: 'afterPrevious',
|
|
15979
|
-
durationMs: stagger !== undefined ? baseDuration : Math.max(50, Math.round(baseDuration / 4)),
|
|
15980
|
-
delayMs: stepIndex === 0 ? (anim.delayMs ?? 0) : (stagger ?? 20),
|
|
15981
|
-
// Only the first sub-step inherits the parent's start delay; the
|
|
15982
|
-
// rest carry the bare stagger, so these must not re-apply it.
|
|
15983
|
-
...(stepIndex === 0 ? {} : { triggerDelayMs: undefined, startConditions: undefined }),
|
|
15984
|
-
buildType: undefined,
|
|
15985
|
-
iterate: undefined,
|
|
15986
|
-
});
|
|
15987
|
-
stepIndex++;
|
|
15988
|
-
}
|
|
15989
|
-
}
|
|
16027
|
+
if (buildType === 'byWord' || buildType === 'byChar') {
|
|
16028
|
+
emitStaggeredPieces(anim, buildType, counts, output, false);
|
|
15990
16029
|
return;
|
|
15991
16030
|
}
|
|
15992
16031
|
// Unknown build type — keep original
|
|
@@ -16592,6 +16631,19 @@ function buildTimeline(nativeAnimations) {
|
|
|
16592
16631
|
let currentGroup = [];
|
|
16593
16632
|
/** Whether the current group was started by an onClick trigger. */
|
|
16594
16633
|
let currentGroupIsClick = false;
|
|
16634
|
+
/**
|
|
16635
|
+
* Whether the current group's OOXML click step begins on slide entry rather
|
|
16636
|
+
* than on a click (`groupAutoStart` from the parse layer).
|
|
16637
|
+
*/
|
|
16638
|
+
let currentGroupAutoStart = false;
|
|
16639
|
+
/**
|
|
16640
|
+
* Effect-wrapper (`p:par`) index of the sub-group being filled, and the time
|
|
16641
|
+
* that wrapper starts relative to the click group. Siblings of one wrapper all
|
|
16642
|
+
* measure their delay from `subGroupStartMs`; a new wrapper chains off the
|
|
16643
|
+
* previous step instead.
|
|
16644
|
+
*/
|
|
16645
|
+
let subGroupIndex;
|
|
16646
|
+
let subGroupStartMs = 0;
|
|
16595
16647
|
for (const anim of regularAnims) {
|
|
16596
16648
|
const expandedSteps = expandIterateAnimation(anim);
|
|
16597
16649
|
for (const singleAnim of expandedSteps) {
|
|
@@ -16671,24 +16723,41 @@ function buildTimeline(nativeAnimations) {
|
|
|
16671
16723
|
// Flush current group if non-empty
|
|
16672
16724
|
if (currentGroup.length > 0) {
|
|
16673
16725
|
const group = finalizeClickGroup(currentGroup);
|
|
16674
|
-
if (!currentGroupIsClick && clickGroups.length > 0) {
|
|
16726
|
+
if (currentGroupAutoStart || (!currentGroupIsClick && clickGroups.length > 0)) {
|
|
16675
16727
|
group.autoAdvance = true;
|
|
16676
16728
|
}
|
|
16677
16729
|
clickGroups.push(group);
|
|
16678
16730
|
}
|
|
16679
16731
|
currentGroup = [];
|
|
16680
16732
|
currentGroupIsClick = isOnClick || isFirstAnimation;
|
|
16733
|
+
// A group the deck marks as auto-starting plays on slide entry. This
|
|
16734
|
+
// is how PowerPoint renders a deck whose opening effects are "With
|
|
16735
|
+
// Previous"; without it the first group was always click-gated and
|
|
16736
|
+
// the slide showed nothing until the viewer clicked.
|
|
16737
|
+
currentGroupAutoStart = !isOnClick && singleAnim.groupAutoStart === true;
|
|
16738
|
+
subGroupIndex = singleAnim.parGroupIndex;
|
|
16739
|
+
subGroupStartMs = 0;
|
|
16681
16740
|
}
|
|
16682
16741
|
// Compute delay relative to start of this click-group
|
|
16742
|
+
const prevStep = currentGroup.length > 0 ? currentGroup[currentGroup.length - 1] : undefined;
|
|
16683
16743
|
let delayMs;
|
|
16684
|
-
if (
|
|
16685
|
-
|
|
16686
|
-
|
|
16744
|
+
if (singleAnim.parGroupIndex !== undefined && prevStep) {
|
|
16745
|
+
if (singleAnim.parGroupIndex !== subGroupIndex) {
|
|
16746
|
+
// New effect wrapper: it starts with (withPrevious) or after
|
|
16747
|
+
// (afterPrevious / afterDelay) the step that came before it.
|
|
16748
|
+
subGroupIndex = singleAnim.parGroupIndex;
|
|
16749
|
+
subGroupStartMs =
|
|
16750
|
+
trigger === 'withPrevious' ? prevStep.delayMs : prevStep.delayMs + prevStep.durationMs;
|
|
16751
|
+
}
|
|
16752
|
+
// Siblings of one wrapper are simultaneous in OOXML: each `@delay` is
|
|
16753
|
+
// an offset from the wrapper, never a chain off the previous effect.
|
|
16754
|
+
delayMs = subGroupStartMs + animDelay + triggerDelay;
|
|
16687
16755
|
}
|
|
16688
|
-
else if (
|
|
16689
|
-
|
|
16690
|
-
|
|
16691
|
-
|
|
16756
|
+
else if (trigger === 'withPrevious' && prevStep) {
|
|
16757
|
+
delayMs = prevStep.delayMs + animDelay + triggerDelay;
|
|
16758
|
+
}
|
|
16759
|
+
else if ((trigger === 'afterPrevious' || trigger === 'afterDelay') && prevStep) {
|
|
16760
|
+
delayMs = prevStep.delayMs + prevStep.durationMs + animDelay + triggerDelay;
|
|
16692
16761
|
}
|
|
16693
16762
|
else {
|
|
16694
16763
|
delayMs = animDelay + triggerDelay;
|
|
@@ -16718,15 +16787,15 @@ function buildTimeline(nativeAnimations) {
|
|
|
16718
16787
|
// Flush last group
|
|
16719
16788
|
if (currentGroup.length > 0) {
|
|
16720
16789
|
const group = finalizeClickGroup(currentGroup);
|
|
16721
|
-
if (!currentGroupIsClick && clickGroups.length > 0) {
|
|
16790
|
+
if (currentGroupAutoStart || (!currentGroupIsClick && clickGroups.length > 0)) {
|
|
16722
16791
|
group.autoAdvance = true;
|
|
16723
16792
|
}
|
|
16724
16793
|
clickGroups.push(group);
|
|
16725
16794
|
}
|
|
16726
16795
|
// Compute auto-advance delay for auto-advance groups
|
|
16727
|
-
for (
|
|
16728
|
-
if (
|
|
16729
|
-
|
|
16796
|
+
for (const group of clickGroups) {
|
|
16797
|
+
if (group.autoAdvance) {
|
|
16798
|
+
group.autoAdvanceDelayMs = 0;
|
|
16730
16799
|
}
|
|
16731
16800
|
}
|
|
16732
16801
|
// Build interactive sequence click-groups
|
|
@@ -17137,6 +17206,34 @@ class TimelineEngine {
|
|
|
17137
17206
|
resetHover(triggerShapeId) {
|
|
17138
17207
|
this.hoverGroupIndexes.delete(triggerShapeId);
|
|
17139
17208
|
}
|
|
17209
|
+
/**
|
|
17210
|
+
* Jump to the END of the timeline: every click-group counted as played, every
|
|
17211
|
+
* entrance revealed and every exit applied, with no CSS animation attached so
|
|
17212
|
+
* nothing replays.
|
|
17213
|
+
*
|
|
17214
|
+
* This is what PowerPoint shows when you step BACKWARD onto a slide: it
|
|
17215
|
+
* appears with its builds already complete, and a further back press walks
|
|
17216
|
+
* them off again. Re-running the timeline from zero instead made a deck whose
|
|
17217
|
+
* opening build auto-starts restart its animation every time the presenter
|
|
17218
|
+
* stepped back onto it.
|
|
17219
|
+
*/
|
|
17220
|
+
completeAll() {
|
|
17221
|
+
this.reset();
|
|
17222
|
+
for (const group of this.timeline.clickGroups) {
|
|
17223
|
+
for (const step of group.steps) {
|
|
17224
|
+
if (step.build || step.colorTargets) {
|
|
17225
|
+
this.activeSteps.set(step.elementId, step);
|
|
17226
|
+
}
|
|
17227
|
+
if (step.presetClass === 'entr') {
|
|
17228
|
+
this.revealedElements.add(step.elementId);
|
|
17229
|
+
}
|
|
17230
|
+
if (step.presetClass === 'exit') {
|
|
17231
|
+
this.exitedElements.add(step.elementId);
|
|
17232
|
+
}
|
|
17233
|
+
}
|
|
17234
|
+
}
|
|
17235
|
+
this.currentGroupIndex = this.timeline.clickGroups.length - 1;
|
|
17236
|
+
}
|
|
17140
17237
|
/**
|
|
17141
17238
|
* Reset the engine to its initial state (no animations played).
|
|
17142
17239
|
*/
|
|
@@ -17300,6 +17397,14 @@ class PresentationAnimationController {
|
|
|
17300
17397
|
reset() {
|
|
17301
17398
|
this.engine.reset();
|
|
17302
17399
|
}
|
|
17400
|
+
/**
|
|
17401
|
+
* Seed the slide as fully built: every group counted as played, nothing
|
|
17402
|
+
* animating. Bindings use it when the presenter steps BACKWARD onto a slide,
|
|
17403
|
+
* which PowerPoint shows with its builds already complete.
|
|
17404
|
+
*/
|
|
17405
|
+
completeAll() {
|
|
17406
|
+
this.engine.completeAll();
|
|
17407
|
+
}
|
|
17303
17408
|
// -----------------------------------------------------------------------
|
|
17304
17409
|
// Interactive + hover sequences (delegated to the engine)
|
|
17305
17410
|
// -----------------------------------------------------------------------
|
|
@@ -38468,6 +38573,92 @@ async function clearAudienceContent(sessionId) {
|
|
|
38468
38573
|
}
|
|
38469
38574
|
}
|
|
38470
38575
|
|
|
38576
|
+
/**
|
|
38577
|
+
* `audience-display`: the policy that governs a tab opened as a presenter's
|
|
38578
|
+
* **audience display** (the second window a presenter puts on the projector).
|
|
38579
|
+
*
|
|
38580
|
+
* That tab is a mirror of the presenter's screen, not an editor. It is the same
|
|
38581
|
+
* viewer application as the presenter's, so without an explicit policy every
|
|
38582
|
+
* ordinary "leave the slide show" path (Escape, the exit button, leaving
|
|
38583
|
+
* fullscreen, the presenter's end-of-session signal) drops the audience into
|
|
38584
|
+
* the full editing chrome: ribbon, thumbnails and inspector, live in front of
|
|
38585
|
+
* the room (issue #106).
|
|
38586
|
+
*
|
|
38587
|
+
* The rule is therefore absolute: **an audience display never returns to edit
|
|
38588
|
+
* mode.** When the presenter ends the show the tab closes itself; browsers that
|
|
38589
|
+
* refuse `window.close()` (a tab the script did not open, or one the user
|
|
38590
|
+
* re-navigated) leave the end-of-slide-show screen up instead.
|
|
38591
|
+
*
|
|
38592
|
+
* Framework-agnostic: every binding routes its exit paths through
|
|
38593
|
+
* {@link mayLeaveSlideShow} and its presenter-exit handler through
|
|
38594
|
+
* {@link endAudienceDisplay}.
|
|
38595
|
+
*
|
|
38596
|
+
* @module render/audience-display
|
|
38597
|
+
*/
|
|
38598
|
+
/**
|
|
38599
|
+
* Whether a URL hash marks the tab as an audience display.
|
|
38600
|
+
*
|
|
38601
|
+
* Accepts the bare hash and the `#pptx-audience&nonce=<uuid>` form the
|
|
38602
|
+
* presenter opens. Safe to call with `undefined` (non-browser contexts).
|
|
38603
|
+
*/
|
|
38604
|
+
function isAudienceDisplayHash(hash) {
|
|
38605
|
+
return typeof hash === 'string' && hash.startsWith(PRESENTATION_HASH);
|
|
38606
|
+
}
|
|
38607
|
+
/** Whether the current tab is an audience display. False outside a browser. */
|
|
38608
|
+
function isAudienceDisplayTab() {
|
|
38609
|
+
if (typeof window === 'undefined') {
|
|
38610
|
+
return false;
|
|
38611
|
+
}
|
|
38612
|
+
return isAudienceDisplayHash(window.location.hash);
|
|
38613
|
+
}
|
|
38614
|
+
/**
|
|
38615
|
+
* Whether a tab may leave the slide show for the editor.
|
|
38616
|
+
*
|
|
38617
|
+
* Bindings call this from EVERY exit path (Escape, the toolbar's end button,
|
|
38618
|
+
* the advance past the end-of-show screen, fullscreen change). An audience
|
|
38619
|
+
* display always answers `false`, so its editing chrome is unreachable.
|
|
38620
|
+
*
|
|
38621
|
+
* @param isAudienceDisplay - Pass the binding's audience-tab check; defaults to
|
|
38622
|
+
* {@link isAudienceDisplayTab} so callers with no state can omit it.
|
|
38623
|
+
*/
|
|
38624
|
+
function mayLeaveSlideShow(isAudienceDisplay = isAudienceDisplayTab()) {
|
|
38625
|
+
return !isAudienceDisplay;
|
|
38626
|
+
}
|
|
38627
|
+
/**
|
|
38628
|
+
* Whether this tab may drive the deck from its own input.
|
|
38629
|
+
*
|
|
38630
|
+
* An audience display mirrors the presenter's screen, so its keyboard, clicks,
|
|
38631
|
+
* taps and swipes must not navigate. When they did, a stray key moved the
|
|
38632
|
+
* audience off the presenter's slide and the next presenter snapshot yanked it
|
|
38633
|
+
* straight back, which reads as the display refusing to turn the page.
|
|
38634
|
+
*
|
|
38635
|
+
* @param isAudienceDisplay - Pass the binding's audience-tab check; defaults to
|
|
38636
|
+
* {@link isAudienceDisplayTab} so callers with no state can omit it.
|
|
38637
|
+
*/
|
|
38638
|
+
function acceptsPresentationInput(isAudienceDisplay = isAudienceDisplayTab()) {
|
|
38639
|
+
return !isAudienceDisplay;
|
|
38640
|
+
}
|
|
38641
|
+
/**
|
|
38642
|
+
* Act on the presenter's `presenter-exit` signal inside an audience tab.
|
|
38643
|
+
*
|
|
38644
|
+
* Attempts to close the tab. Returns `true` when the binding must raise its
|
|
38645
|
+
* end-of-slide-show screen because the tab is still open: `window.close()` is
|
|
38646
|
+
* refused for tabs the script did not open, and closing is asynchronous, so the
|
|
38647
|
+
* caller always shows the screen and simply never sees it if the tab goes away.
|
|
38648
|
+
*/
|
|
38649
|
+
function endAudienceDisplay(win = globalThis.window) {
|
|
38650
|
+
if (!win) {
|
|
38651
|
+
return true;
|
|
38652
|
+
}
|
|
38653
|
+
try {
|
|
38654
|
+
win.close();
|
|
38655
|
+
}
|
|
38656
|
+
catch {
|
|
38657
|
+
// Browsers refuse close() for tabs they did not script-open.
|
|
38658
|
+
}
|
|
38659
|
+
return !win.closed;
|
|
38660
|
+
}
|
|
38661
|
+
|
|
38471
38662
|
/**
|
|
38472
38663
|
* EyeDropper colour sampler (framework-agnostic).
|
|
38473
38664
|
*
|
|
@@ -52175,7 +52366,7 @@ function createLocalStorageBackend(namespace) {
|
|
|
52175
52366
|
/** Try IndexedDB first; fall back to localStorage on any failure. */
|
|
52176
52367
|
async function resolveBackend(dbName, namespace) {
|
|
52177
52368
|
try {
|
|
52178
|
-
const { openChatDb, createIdbBackend } = await import('./pptx-angular-viewer-chat-history-idb-
|
|
52369
|
+
const { openChatDb, createIdbBackend } = await import('./pptx-angular-viewer-chat-history-idb-DzzfR5jW.mjs');
|
|
52179
52370
|
const db = await openChatDb(dbName);
|
|
52180
52371
|
return createIdbBackend(db);
|
|
52181
52372
|
}
|
|
@@ -62412,9 +62603,10 @@ class AnimationPlaybackService {
|
|
|
62412
62603
|
* (entrance-animated elements start hidden). Auto-plays the first click-group
|
|
62413
62604
|
* when the slide opens with a withPrevious / afterPrevious / afterDelay build.
|
|
62414
62605
|
*/
|
|
62415
|
-
setSlide(slide, showWithAnimation) {
|
|
62606
|
+
setSlide(slide, showWithAnimation, options) {
|
|
62416
62607
|
this.showWithAnimation = showWithAnimation;
|
|
62417
62608
|
this.clearTimers();
|
|
62609
|
+
this.seededCompleted = false;
|
|
62418
62610
|
if (!slide || !this.animationsEnabled()) {
|
|
62419
62611
|
this.controller = null;
|
|
62420
62612
|
this.presentationElementStates.set(new Map());
|
|
@@ -62434,6 +62626,16 @@ class AnimationPlaybackService {
|
|
|
62434
62626
|
this.hoverTriggerShapeIds.set(controller.hoverTriggerShapeIds);
|
|
62435
62627
|
this.presentationElementStates.set(controller.computeStates());
|
|
62436
62628
|
this.syncComplete();
|
|
62629
|
+
// Stepping backward onto a slide shows it with every build already
|
|
62630
|
+
// complete, the way PowerPoint does: nothing plays, nothing is scheduled,
|
|
62631
|
+
// and a further back press replays the slide from the start.
|
|
62632
|
+
if (options?.completed) {
|
|
62633
|
+
this.seededCompleted = controller.hasMoreSteps();
|
|
62634
|
+
controller.completeAll();
|
|
62635
|
+
this.presentationElementStates.set(controller.computeStates());
|
|
62636
|
+
this.syncComplete();
|
|
62637
|
+
return;
|
|
62638
|
+
}
|
|
62437
62639
|
// Auto-play the first group when the slide opens with a withPrevious /
|
|
62438
62640
|
// afterPrevious / afterDelay build (mirrors React's entrance auto-play).
|
|
62439
62641
|
if (controller.hasMoreSteps()) {
|
|
@@ -62451,6 +62653,16 @@ class AnimationPlaybackService {
|
|
|
62451
62653
|
}
|
|
62452
62654
|
}
|
|
62453
62655
|
}
|
|
62656
|
+
/**
|
|
62657
|
+
* True while the active slide shows its builds as already complete because
|
|
62658
|
+
* the presenter stepped BACKWARD onto it. The next back press replays the
|
|
62659
|
+
* slide instead of leaving it (PowerPoint's behaviour).
|
|
62660
|
+
*/
|
|
62661
|
+
seededCompleted = false;
|
|
62662
|
+
/** Whether the active slide was seeded as fully built (backward entry). */
|
|
62663
|
+
isSeededCompleted() {
|
|
62664
|
+
return this.seededCompleted;
|
|
62665
|
+
}
|
|
62454
62666
|
// ------------------------------------------------------------------
|
|
62455
62667
|
// Playback controls
|
|
62456
62668
|
// ------------------------------------------------------------------
|
|
@@ -76831,8 +77043,9 @@ class PresenterWindowService {
|
|
|
76831
77043
|
onSlide(message.slideIndex);
|
|
76832
77044
|
}
|
|
76833
77045
|
else if (message.type === 'presenter-exit') {
|
|
77046
|
+
// The host decides what an ended session looks like (close the tab,
|
|
77047
|
+
// else show the end screen). It must never land in the editor.
|
|
76834
77048
|
onExit();
|
|
76835
|
-
window.close();
|
|
76836
77049
|
}
|
|
76837
77050
|
};
|
|
76838
77051
|
channel.addEventListener('message', onMessage);
|
|
@@ -78862,6 +79075,13 @@ class PresentationOverlayComponent {
|
|
|
78862
79075
|
...(ngDevMode ? [{ debugName: "showWithAnimation" }] : /* istanbul ignore next */ []));
|
|
78863
79076
|
subtitlesVisible = input(false, /* @ts-ignore */
|
|
78864
79077
|
...(ngDevMode ? [{ debugName: "subtitlesVisible" }] : /* istanbul ignore next */ []));
|
|
79078
|
+
/**
|
|
79079
|
+
* Set by an audience display when the presenter ends the session and the
|
|
79080
|
+
* browser refuses to close the tab. It raises the black end-of-slide-show
|
|
79081
|
+
* screen so the room never sees the editing chrome.
|
|
79082
|
+
*/
|
|
79083
|
+
sessionEnded = input(false, /* @ts-ignore */
|
|
79084
|
+
...(ngDevMode ? [{ debugName: "sessionEnded" }] : /* istanbul ignore next */ []));
|
|
78865
79085
|
// ------------------------------------------------------------------
|
|
78866
79086
|
// Outputs
|
|
78867
79087
|
// ------------------------------------------------------------------
|
|
@@ -78890,6 +79110,18 @@ class PresentationOverlayComponent {
|
|
|
78890
79110
|
*/
|
|
78891
79111
|
endOfShow = signal(false, /* @ts-ignore */
|
|
78892
79112
|
...(ngDevMode ? [{ debugName: "endOfShow" }] : /* istanbul ignore next */ []));
|
|
79113
|
+
/**
|
|
79114
|
+
* Set just before a BACKWARD slide change so the slide effect seeds the
|
|
79115
|
+
* incoming slide as fully built.
|
|
79116
|
+
*/
|
|
79117
|
+
pendingCompletedEntry = false;
|
|
79118
|
+
/** Mirror the host's audience "session ended" flag onto the end screen. */
|
|
79119
|
+
syncSessionEnded = effect(() => {
|
|
79120
|
+
if (this.sessionEnded()) {
|
|
79121
|
+
this.endOfShow.set(true);
|
|
79122
|
+
}
|
|
79123
|
+
}, /* @ts-ignore */
|
|
79124
|
+
...(ngDevMode ? [{ debugName: "syncSessionEnded" }] : /* istanbul ignore next */ []));
|
|
78893
79125
|
syncExternalIndex = effect(() => {
|
|
78894
79126
|
const count = this.slides().length;
|
|
78895
79127
|
if (count === 0) {
|
|
@@ -78957,7 +79189,9 @@ class PresentationOverlayComponent {
|
|
|
78957
79189
|
// pre-build state so entrance-animated elements start hidden) and publish its
|
|
78958
79190
|
// per-slide keyframes CSS.
|
|
78959
79191
|
effect(() => {
|
|
78960
|
-
|
|
79192
|
+
const completed = this.pendingCompletedEntry;
|
|
79193
|
+
this.pendingCompletedEntry = false;
|
|
79194
|
+
this.playback.setSlide(this.currentSlide(), this.showWithAnimation(), { completed });
|
|
78961
79195
|
this.slideKeyframes.set(this.playback.keyframesCss());
|
|
78962
79196
|
});
|
|
78963
79197
|
// Apply each element's native-animation state (visibility, CSS animation,
|
|
@@ -79258,6 +79492,12 @@ class PresentationOverlayComponent {
|
|
|
79258
79492
|
/** Digit buffer backing PowerPoint's "type a slide number, then Enter" jump. */
|
|
79259
79493
|
keyBuffer = createPresentationKeyBuffer();
|
|
79260
79494
|
onKeyDown(event) {
|
|
79495
|
+
// An audience display mirrors the presenter's screen. If its own keyboard
|
|
79496
|
+
// navigated, a stray key moved it off the presenter's slide and the next
|
|
79497
|
+
// snapshot yanked it back, which reads as the display refusing to advance.
|
|
79498
|
+
if (!acceptsPresentationInput()) {
|
|
79499
|
+
return;
|
|
79500
|
+
}
|
|
79261
79501
|
const mapped = mapPresentationKey(event, this.keyBuffer);
|
|
79262
79502
|
if (mapped.action === 'none') {
|
|
79263
79503
|
return;
|
|
@@ -79345,6 +79585,11 @@ class PresentationOverlayComponent {
|
|
|
79345
79585
|
* next/prev buttons call navigate() directly and are never gated.
|
|
79346
79586
|
*/
|
|
79347
79587
|
advanceFromClick() {
|
|
79588
|
+
// An audience display never drives itself: a tap or swipe of its own would
|
|
79589
|
+
// move it off the presenter's slide, and the next snapshot would drag it back.
|
|
79590
|
+
if (!acceptsPresentationInput()) {
|
|
79591
|
+
return;
|
|
79592
|
+
}
|
|
79348
79593
|
if (shouldBlockClickAdvance(this.playback.isComplete(), this.currentSlide())) {
|
|
79349
79594
|
return;
|
|
79350
79595
|
}
|
|
@@ -79421,6 +79666,17 @@ class PresentationOverlayComponent {
|
|
|
79421
79666
|
if (direction === 'next' && this.playback.advance()) {
|
|
79422
79667
|
return;
|
|
79423
79668
|
}
|
|
79669
|
+
if (direction === 'prev') {
|
|
79670
|
+
// A slide entered backward shows its builds already complete. The next
|
|
79671
|
+
// back press replays them from the start rather than leaving the slide,
|
|
79672
|
+
// so a presenter who overshot can watch the build again (PowerPoint).
|
|
79673
|
+
if (this.playback.isSeededCompleted()) {
|
|
79674
|
+
this.playback.setSlide(this.currentSlide(), this.showWithAnimation());
|
|
79675
|
+
return;
|
|
79676
|
+
}
|
|
79677
|
+
// PowerPoint shows a slide you step BACK onto with its builds played.
|
|
79678
|
+
this.pendingCompletedEntry = true;
|
|
79679
|
+
}
|
|
79424
79680
|
const current = this.currentIndex();
|
|
79425
79681
|
let next;
|
|
79426
79682
|
switch (direction) {
|
|
@@ -79482,6 +79738,12 @@ class PresentationOverlayComponent {
|
|
|
79482
79738
|
this.indexChange.emit(next);
|
|
79483
79739
|
}
|
|
79484
79740
|
emitClosed() {
|
|
79741
|
+
// An audience display mirrors the presenter's screen: Escape, leaving
|
|
79742
|
+
// fullscreen and the advance past the end screen must never hand the room
|
|
79743
|
+
// the editing chrome.
|
|
79744
|
+
if (!mayLeaveSlideShow()) {
|
|
79745
|
+
return;
|
|
79746
|
+
}
|
|
79485
79747
|
if (this.closing) {
|
|
79486
79748
|
return;
|
|
79487
79749
|
}
|
|
@@ -79492,7 +79754,7 @@ class PresentationOverlayComponent {
|
|
|
79492
79754
|
this.closed.emit();
|
|
79493
79755
|
}
|
|
79494
79756
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: PresentationOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
79495
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: PresentationOverlayComponent, isStandalone: true, selector: "pptx-presentation-overlay", inputs: { slides: { classPropertyName: "slides", publicName: "slides", isSignal: true, isRequired: true, transformFunction: null }, canvasSize: { classPropertyName: "canvasSize", publicName: "canvasSize", isSignal: true, isRequired: true, transformFunction: null }, mediaDataUrls: { classPropertyName: "mediaDataUrls", publicName: "mediaDataUrls", isSignal: true, isRequired: false, transformFunction: null }, startIndex: { classPropertyName: "startIndex", publicName: "startIndex", isSignal: true, isRequired: false, transformFunction: null }, showWithAnimation: { classPropertyName: "showWithAnimation", publicName: "showWithAnimation", isSignal: true, isRequired: false, transformFunction: null }, subtitlesVisible: { classPropertyName: "subtitlesVisible", publicName: "subtitlesVisible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { indexChange: "indexChange", closed: "closed", subtitlesChange: "subtitlesChange", annotationsExit: "annotationsExit" }, host: { listeners: { "document:fullscreenchange": "onFullscreenChange()", "window:resize": "onWindowResize()", "document:keydown": "onKeyDown($event)" } }, providers: [AnimationPlaybackService, PresentationAnnotationsService, ZoomNavigationService], viewQueries: [{ propertyName: "stageRef", first: true, predicate: ["stage"], descendants: true, isSignal: true }, { propertyName: "rootRef", first: true, predicate: ["root"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
79757
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: PresentationOverlayComponent, isStandalone: true, selector: "pptx-presentation-overlay", inputs: { slides: { classPropertyName: "slides", publicName: "slides", isSignal: true, isRequired: true, transformFunction: null }, canvasSize: { classPropertyName: "canvasSize", publicName: "canvasSize", isSignal: true, isRequired: true, transformFunction: null }, mediaDataUrls: { classPropertyName: "mediaDataUrls", publicName: "mediaDataUrls", isSignal: true, isRequired: false, transformFunction: null }, startIndex: { classPropertyName: "startIndex", publicName: "startIndex", isSignal: true, isRequired: false, transformFunction: null }, showWithAnimation: { classPropertyName: "showWithAnimation", publicName: "showWithAnimation", isSignal: true, isRequired: false, transformFunction: null }, subtitlesVisible: { classPropertyName: "subtitlesVisible", publicName: "subtitlesVisible", isSignal: true, isRequired: false, transformFunction: null }, sessionEnded: { classPropertyName: "sessionEnded", publicName: "sessionEnded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { indexChange: "indexChange", closed: "closed", subtitlesChange: "subtitlesChange", annotationsExit: "annotationsExit" }, host: { listeners: { "document:fullscreenchange": "onFullscreenChange()", "window:resize": "onWindowResize()", "document:keydown": "onKeyDown($event)" } }, providers: [AnimationPlaybackService, PresentationAnnotationsService, ZoomNavigationService], viewQueries: [{ propertyName: "stageRef", first: true, predicate: ["stage"], descendants: true, isSignal: true }, { propertyName: "rootRef", first: true, predicate: ["root"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
79496
79758
|
<div #root class="pptx-ng-presentation-root">
|
|
79497
79759
|
<!--
|
|
79498
79760
|
Slide counter, rendered first in DOM (before slide content) so a
|
|
@@ -79850,7 +80112,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
79850
80112
|
</button>
|
|
79851
80113
|
</div>
|
|
79852
80114
|
`, styles: [":host{display:block;position:fixed;inset:0;z-index:10000;background:#000;cursor:pointer;-webkit-user-select:none;user-select:none}.pptx-ng-presentation-root{position:absolute;inset:0;touch-action:pan-y}.pptx-ng-presentation-close:hover,.pptx-ng-presentation-nav:hover{background:#000000bf}.pptx-ng-presentation-tools{position:absolute;bottom:max(1rem,env(safe-area-inset-bottom));left:1rem;display:flex;gap:.25rem;padding:.25rem;border-radius:.5rem;background:#0000008c;z-index:80}.pptx-ng-presentation-tools button{width:2rem;height:2rem;border:none;border-radius:.35rem;background:transparent;color:#fff;font-size:1rem;cursor:pointer}.pptx-ng-presentation-tools button:hover{background:#ffffff26}.pptx-ng-presentation-tools button.is-active{background:#ffffff4d}.presenter-blank{position:absolute;inset:0;z-index:75}.pptx-ng-presentation-end{position:absolute;inset:0;z-index:90;display:flex;align-items:flex-start;border:0;padding:0;background:#000;text-align:left;cursor:default}.pptx-ng-presentation-end span{padding:.75rem 1rem;color:#ffffffb3;font-size:12px}.presenter-laser{position:absolute;z-index:76;width:20px;height:20px;transform:translate(-50%,-50%);border-radius:50%;background:#ef4444;box-shadow:0 0 20px 8px #ef444488;pointer-events:none}.presenter-caption{position:absolute;z-index:77;left:10%;right:10%;bottom:2rem;padding:.75rem 1.5rem;border-radius:.5rem;background:#000c;color:#fff;text-align:center;font-size:1.25rem;pointer-events:none}\n"] }]
|
|
79853
|
-
}], ctorParameters: () => [], propDecorators: { slides: [{ type: i0.Input, args: [{ isSignal: true, alias: "slides", required: true }] }], canvasSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "canvasSize", required: true }] }], mediaDataUrls: [{ type: i0.Input, args: [{ isSignal: true, alias: "mediaDataUrls", required: false }] }], startIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "startIndex", required: false }] }], showWithAnimation: [{ type: i0.Input, args: [{ isSignal: true, alias: "showWithAnimation", required: false }] }], subtitlesVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitlesVisible", required: false }] }], indexChange: [{ type: i0.Output, args: ["indexChange"] }], closed: [{ type: i0.Output, args: ["closed"] }], subtitlesChange: [{ type: i0.Output, args: ["subtitlesChange"] }], annotationsExit: [{ type: i0.Output, args: ["annotationsExit"] }], stageRef: [{ type: i0.ViewChild, args: ['stage', { isSignal: true }] }], rootRef: [{ type: i0.ViewChild, args: ['root', { isSignal: true }] }], onFullscreenChange: [{
|
|
80115
|
+
}], ctorParameters: () => [], propDecorators: { slides: [{ type: i0.Input, args: [{ isSignal: true, alias: "slides", required: true }] }], canvasSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "canvasSize", required: true }] }], mediaDataUrls: [{ type: i0.Input, args: [{ isSignal: true, alias: "mediaDataUrls", required: false }] }], startIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "startIndex", required: false }] }], showWithAnimation: [{ type: i0.Input, args: [{ isSignal: true, alias: "showWithAnimation", required: false }] }], subtitlesVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitlesVisible", required: false }] }], sessionEnded: [{ type: i0.Input, args: [{ isSignal: true, alias: "sessionEnded", required: false }] }], indexChange: [{ type: i0.Output, args: ["indexChange"] }], closed: [{ type: i0.Output, args: ["closed"] }], subtitlesChange: [{ type: i0.Output, args: ["subtitlesChange"] }], annotationsExit: [{ type: i0.Output, args: ["annotationsExit"] }], stageRef: [{ type: i0.ViewChild, args: ['stage', { isSignal: true }] }], rootRef: [{ type: i0.ViewChild, args: ['root', { isSignal: true }] }], onFullscreenChange: [{
|
|
79854
80116
|
type: HostListener,
|
|
79855
80117
|
args: ['document:fullscreenchange']
|
|
79856
80118
|
}], onWindowResize: [{
|
|
@@ -84515,7 +84777,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
84515
84777
|
}], propDecorators: { canEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEdit", required: false }] }], slideIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "slideIndex", required: false }] }] } });
|
|
84516
84778
|
|
|
84517
84779
|
// Generated by scripts/inline-shared.mjs from package.json. Do not edit.
|
|
84518
|
-
const PPTX_ANGULAR_VIEWER_VERSION = "2.
|
|
84780
|
+
const PPTX_ANGULAR_VIEWER_VERSION = "2.4.0";
|
|
84519
84781
|
|
|
84520
84782
|
/**
|
|
84521
84783
|
* account-page.component.ts: File > Account content.
|
|
@@ -108732,6 +108994,13 @@ class PowerPointViewerComponent {
|
|
|
108732
108994
|
...(ngDevMode ? [{ debugName: "canEdit" }] : /* istanbul ignore next */ []));
|
|
108733
108995
|
activeSlideIndex = signal(0, /* @ts-ignore */
|
|
108734
108996
|
...(ngDevMode ? [{ debugName: "activeSlideIndex" }] : /* istanbul ignore next */ []));
|
|
108997
|
+
/**
|
|
108998
|
+
* True in an audience display once the presenter ended the session and the
|
|
108999
|
+
* browser refused to close this tab: the overlay then shows the black
|
|
109000
|
+
* end-of-slide-show screen rather than falling back to the editor.
|
|
109001
|
+
*/
|
|
109002
|
+
audienceSessionEnded = signal(false, /* @ts-ignore */
|
|
109003
|
+
...(ngDevMode ? [{ debugName: "audienceSessionEnded" }] : /* istanbul ignore next */ []));
|
|
108735
109004
|
/** Slides to display: the editable deck when `canEdit`, else the loaded deck. */
|
|
108736
109005
|
displaySlides = computed(() => this.canEdit() ? this.editor.slides() : this.loader.slides(), /* @ts-ignore */
|
|
108737
109006
|
...(ngDevMode ? [{ debugName: "displaySlides" }] : /* istanbul ignore next */ []));
|
|
@@ -109311,7 +109580,15 @@ class PowerPointViewerComponent {
|
|
|
109311
109580
|
},
|
|
109312
109581
|
});
|
|
109313
109582
|
if (parseAudienceNonce()) {
|
|
109314
|
-
const disconnectAudience = this.presenterWindow.connectAudience((index) => this.activeSlideIndex.set(index),
|
|
109583
|
+
const disconnectAudience = this.presenterWindow.connectAudience((index) => this.activeSlideIndex.set(index),
|
|
109584
|
+
// The presenter ended the session. Close this tab; when the browser
|
|
109585
|
+
// refuses, raise the end-of-slide-show screen. Leaving presentation
|
|
109586
|
+
// mode would drop the room into the editor.
|
|
109587
|
+
() => {
|
|
109588
|
+
if (endAudienceDisplay(window)) {
|
|
109589
|
+
this.audienceSessionEnded.set(true);
|
|
109590
|
+
}
|
|
109591
|
+
});
|
|
109315
109592
|
this.presentationMode.presenting.set(true);
|
|
109316
109593
|
this.destroyRef.onDestroy(disconnectAudience);
|
|
109317
109594
|
}
|
|
@@ -110418,6 +110695,7 @@ class PowerPointViewerComponent {
|
|
|
110418
110695
|
[startIndex]="customShowsCtl.presentationStartIndex()"
|
|
110419
110696
|
[showWithAnimation]="loader.presentationProperties().showWithAnimation"
|
|
110420
110697
|
[subtitlesVisible]="presentationMode.subtitlesVisible()"
|
|
110698
|
+
[sessionEnded]="audienceSessionEnded()"
|
|
110421
110699
|
(subtitlesChange)="presentationMode.subtitlesVisible.set($event)"
|
|
110422
110700
|
(indexChange)="presentationMode.onPresentationIndexChange($event)"
|
|
110423
110701
|
(annotationsExit)="presentationMode.onPresentationAnnotationsExit($event)"
|
|
@@ -110696,7 +110974,7 @@ class PowerPointViewerComponent {
|
|
|
110696
110974
|
/>
|
|
110697
110975
|
}
|
|
110698
110976
|
</div>
|
|
110699
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SlideCanvasComponent, selector: "pptx-slide-canvas", inputs: ["slide", "canvasSize", "mediaDataUrls", "zoom", "editable", "showGrid", "showRulers", "showGuides", "snapToGrid", "snapToShape", "guideCommand", "spellCheck", "snapToGuides", "autoFit", "interactive", "presenting", "selectedIds", "editingId", "editTemplateMode", "templateElements", "aiHighlights", "aiActive", "aiActiveSlideIndex", "aiChangeBatch", "aiPickMode", "drawTool", "drawColor", "drawWidth"], outputs: ["elementSelect", "backgroundClick", "transformStart", "transformUpdate", "contextMenu", "textEditStart", "textCommit", "textInput", "textCancel", "textFormat", "rotateUpdate", "marqueeSelect", "inkStrokeComplete", "eraserHit", "cellCommit", "tableChange"] }, { kind: "component", type: PresentationOverlayComponent, selector: "pptx-presentation-overlay", inputs: ["slides", "canvasSize", "mediaDataUrls", "startIndex", "showWithAnimation", "subtitlesVisible"], outputs: ["indexChange", "closed", "subtitlesChange", "annotationsExit"] }, { kind: "component", type: PresenterViewComponent, selector: "pptx-presenter-view", inputs: ["slides", "currentSlideIndex", "canvasSize", "templateElements", "mediaDataUrls", "presentationStartTime", "isAudienceWindowOpen"], outputs: ["movePresentationSlide", "exit", "openAudienceWindow", "closeAudienceWindow", "navigateToSlide"] }, { kind: "component", type: MobilePresenterViewComponent, selector: "pptx-mobile-presenter-view", inputs: ["slides", "currentSlideIndex", "canvasSize", "templateElements", "mediaDataUrls", "presentationStartTime"], outputs: ["movePresentationSlide", "exit"] }, { kind: "component", type: SlideSorterOverlayComponent, selector: "pptx-slide-sorter-overlay", inputs: ["slides", "canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["select", "closed"] }, { kind: "component", type: SlideDefaultInspectorComponent, selector: "pptx-slide-default-inspector", inputs: ["slideIndex", "canEdit", "selectedElement", "comments"], outputs: ["commentAdd", "commentRemove", "commentResolve"] }, { kind: "component", type: FindBarComponent, selector: "pptx-find-bar", inputs: ["slides"], outputs: ["navigate", "closed"] }, { kind: "component", type: FindReplaceBarComponent, selector: "pptx-find-replace-bar", inputs: ["matchCount", "matchIndex"], outputs: ["find", "navigate", "replaceOne", "replaceAll", "close"] }, { kind: "component", type: SlidesPanelComponent, selector: "pptx-slides-panel", inputs: ["canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["select"] }, { kind: "component", type: StatusBarComponent, selector: "pptx-status-bar", inputs: ["slideIndex", "slideCount", "canEdit", "dirty", "autosaveStatus", "notesOpen", "zoomPercent", "sorterActive", "presenting", "hiddenActions"], outputs: ["toggleNotes", "normalView", "openSorter", "slideShow", "zoomIn", "zoomOut", "zoomReset"] }, { kind: "component", type: EditorContextMenuComponent, selector: "pptx-editor-context-menu", inputs: ["x", "y", "slideIndex", "showAiActions"], outputs: ["closed", "askAi", "fixAi"] }, { kind: "component", type: ExportProgressModalComponent, selector: "pptx-export-progress-modal", inputs: ["open", "title", "progress", "statusMessage"], outputs: ["cancel"] }, { kind: "component", type: CommentsPanelComponent, selector: "pptx-comments-panel", inputs: ["comments", "authorName"], outputs: ["add", "remove", "resolve"] }, { kind: "component", type: SignaturesPanelComponent, selector: "pptx-signatures-panel", inputs: ["signatures"] }, { kind: "component", type: AccessibilityPanelComponent, selector: "pptx-accessibility-panel", inputs: ["issues"], outputs: ["selectSlide"] }, { kind: "component", type: CollaborationCursorsComponent, selector: "pptx-collaboration-cursors", inputs: ["cursors", "zoom"] }, { kind: "component", type: RemoteSelectionOverlayComponent, selector: "pptx-remote-selection-overlay", inputs: ["presences", "elements", "activeSlideIndex", "zoom"] }, { kind: "component", type: FollowModeBarComponent, selector: "pptx-follow-mode-bar", inputs: ["presences", "followedClientId"], outputs: ["follow"] }, { kind: "component", type: PropertiesDialogComponent, selector: "pptx-properties-dialog", inputs: ["open", "properties"], outputs: ["save", "close"] }, { kind: "component", type: HyperlinkDialogComponent, selector: "pptx-hyperlink-dialog", inputs: ["open", "element"], outputs: ["save", "close"] }, { kind: "component", type: PrintDialogComponent, selector: "pptx-print-dialog", inputs: ["slides", "activeSlideIndex", "defaultSlidesPerPage", "defaultFrameSlides"], outputs: ["print", "cancel"] }, { kind: "component", type: ShareDialogComponent, selector: "pptx-share-dialog", inputs: ["open", "defaults", "active", "connected", "userCount", "shareUrl", "p2p"], outputs: ["start", "stop", "close"] }, { kind: "component", type: BroadcastDialogComponent, selector: "pptx-broadcast-dialog", inputs: ["open", "defaults", "active", "connected", "viewerCount", "viewerUrl", "p2p"], outputs: ["start", "stop", "close"] }, { kind: "component", type: MobileBottomBarComponent, selector: "pptx-mobile-bottom-bar", inputs: ["slideCount", "commentCount", "activeSheet"], outputs: ["openSlides", "insert", "openFormat", "openComments", "notes"] }, { kind: "component", type: MobileMenuSheetComponent, selector: "pptx-mobile-menu-sheet", inputs: ["open", "slideCount", "exporting", "showNotes", "canEdit", "hiddenActions"], outputs: ["closed", "openFind", "openSorter", "toggleNotes", "insertText", "present", "openFile", "savePptx", "exportPng", "exportPdf", "exportGif", "exportVideo", "print"] }, { kind: "component", type: MobileSlidesSheetComponent, selector: "pptx-mobile-slides-sheet", inputs: ["open", "slides", "canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["closed", "jumpToSlide"] }, { kind: "component", type: MobileToolbarComponent, selector: "pptx-mobile-toolbar", inputs: ["canUndo", "canRedo", "canPresent", "canEdit", "menuOpen", "aiEnabled", "aiPanelOpen", "hiddenActions"], outputs: ["toggleMenu", "toggleAiPanel", "undo", "redo", "share", "save", "present"] }, { kind: "component", type: MasterViewCanvasComponent, selector: "pptx-master-view-canvas", inputs: ["tab", "slideMasters", "activeMasterIndex", "activeLayoutIndex", "notesMaster", "handoutMaster", "canvasSize", "notesCanvasSize", "mediaDataUrls", "editable"], outputs: ["notesMasterChange", "handoutMasterChange"] }, { kind: "component", type: MasterViewSidebarComponent, selector: "pptx-master-view-sidebar", inputs: ["tab", "slideMasters", "notesMaster", "handoutMaster", "activeMasterIndex", "activeLayoutIndex", "handoutSlidesPerPage"], outputs: ["tabChange", "selectMaster", "selectLayout", "slidesPerPageChange", "backgroundChange", "close"] }, { kind: "component", type: NotesPanelComponent, selector: "pptx-notes-panel", inputs: ["slide", "expanded"], outputs: ["update", "notesToggle"] }, { kind: "component", type: RibbonComponent, selector: "pptx-ribbon", inputs: ["slideIndex", "slideCount", "canEdit", "selectedElement", "zoomPercent", "formatPainterActive", "canActivateFormatPainter", "exporting", "hasMacros", "showGrid", "showRulers", "showGuides", "snapToGrid", "snapToShape", "eyedropperActive", "themeGalleryOpen", "sidebarCollapsed", "inspectorOpen", "commentsOpen", "commentCount", "findOpen", "collabConnected", "connectedCount", "spellCheckEnabled", "showSubtitles", "hiddenActions", "aiEnabled", "aiPanelOpen", "accountAuth"], outputs: ["prev", "next", "zoomIn", "zoomOut", "zoomReset", "find", "present", "presenter", "record", "presentFromBeginning", "rehearseTimings", "toggleSubtitles", "openSubtitleSettings", "recordFromBeginning", "recordFromCurrent", "spellCheckChange", "share", "broadcast", "openFile", "openRecentFile", "createPresentation", "save", "savePpsx", "savePptm", "packageForSharing", "toggleSidebar", "toggleAiPanel", "signatures", "info", "print", "comments", "a11y", "link", "openSorter", "openMasterView", "toggleNotes", "toggleFormatPainter", "exportPng", "exportPdf", "exportGif", "exportVideo", "copySlideAsImage", "replace", "toggleInspector", "drawToolChange", "toggleThemeGallery", "toggleGrid", "toggleRulers", "toggleGuides", "toggleSelectionPane", "openCustomShows", "toggleSnapToGrid", "toggleSnapToShape", "addGuide", "zoomToFit", "toggleEyedropper", "openSmartArtDialog", "openEquationDialog", "openSetUpSlideShow", "openCompare", "openPassword", "openFontEmbedding", "openVersionHistory", "openShortcuts", "openSettings"] }, { kind: "component", type: TitleBarComponent, selector: "pptx-title-bar", inputs: ["canEdit", "fileName", "isDirty", "autosaveStatus", "autosaveEnabled", "canUndo", "canRedo", "undoLabel", "redoLabel", "findReplaceOpen", "hiddenActions", "quickAccess"], outputs: ["toggleAutosave", "save", "undo", "redo", "quickCommand", "toggleFindReplace", "commandSearch"] }, { kind: "component", type: ThemeGalleryComponent, selector: "pptx-theme-gallery", inputs: ["open", "activeName", "theme"], outputs: ["applyTheme", "applyCustomTheme", "close"] }, { kind: "component", type: SelectionPaneComponent, selector: "pptx-selection-pane", inputs: ["elements", "selectedIds"], outputs: ["selectElement", "bringForward", "sendBackward", "toggleHidden"] }, { kind: "component", type: CustomShowsComponent, selector: "pptx-custom-shows", inputs: ["open", "slides", "customShows", "activeCustomShowId"], outputs: ["create", "remove", "update", "setActive", "close"] }, { kind: "component", type: InsertSmartArtDialogComponent, selector: "pptx-insert-smart-art-dialog", inputs: ["open"], outputs: ["close", "insert"] }, { kind: "component", type: ViewerExtraDialogsComponent, selector: "pptx-viewer-extra-dialogs", inputs: ["activeSlideIndex", "selectedElementId", "filePath", "customShows", "themeKey", "availableThemes", "localeCode", "availableLocales", "aiExportVisible"], outputs: ["restoreContent", "themeKeySelect", "localeSelect"] }, { kind: "component", type: RehearseTimingsComponent, selector: "pptx-rehearse-timings", inputs: ["summary", "paused", "slideStartedAt", "presentationStartedAt", "timings"], outputs: ["togglePause", "save", "discard"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [/* @ts-ignore */
|
|
110977
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SlideCanvasComponent, selector: "pptx-slide-canvas", inputs: ["slide", "canvasSize", "mediaDataUrls", "zoom", "editable", "showGrid", "showRulers", "showGuides", "snapToGrid", "snapToShape", "guideCommand", "spellCheck", "snapToGuides", "autoFit", "interactive", "presenting", "selectedIds", "editingId", "editTemplateMode", "templateElements", "aiHighlights", "aiActive", "aiActiveSlideIndex", "aiChangeBatch", "aiPickMode", "drawTool", "drawColor", "drawWidth"], outputs: ["elementSelect", "backgroundClick", "transformStart", "transformUpdate", "contextMenu", "textEditStart", "textCommit", "textInput", "textCancel", "textFormat", "rotateUpdate", "marqueeSelect", "inkStrokeComplete", "eraserHit", "cellCommit", "tableChange"] }, { kind: "component", type: PresentationOverlayComponent, selector: "pptx-presentation-overlay", inputs: ["slides", "canvasSize", "mediaDataUrls", "startIndex", "showWithAnimation", "subtitlesVisible", "sessionEnded"], outputs: ["indexChange", "closed", "subtitlesChange", "annotationsExit"] }, { kind: "component", type: PresenterViewComponent, selector: "pptx-presenter-view", inputs: ["slides", "currentSlideIndex", "canvasSize", "templateElements", "mediaDataUrls", "presentationStartTime", "isAudienceWindowOpen"], outputs: ["movePresentationSlide", "exit", "openAudienceWindow", "closeAudienceWindow", "navigateToSlide"] }, { kind: "component", type: MobilePresenterViewComponent, selector: "pptx-mobile-presenter-view", inputs: ["slides", "currentSlideIndex", "canvasSize", "templateElements", "mediaDataUrls", "presentationStartTime"], outputs: ["movePresentationSlide", "exit"] }, { kind: "component", type: SlideSorterOverlayComponent, selector: "pptx-slide-sorter-overlay", inputs: ["slides", "canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["select", "closed"] }, { kind: "component", type: SlideDefaultInspectorComponent, selector: "pptx-slide-default-inspector", inputs: ["slideIndex", "canEdit", "selectedElement", "comments"], outputs: ["commentAdd", "commentRemove", "commentResolve"] }, { kind: "component", type: FindBarComponent, selector: "pptx-find-bar", inputs: ["slides"], outputs: ["navigate", "closed"] }, { kind: "component", type: FindReplaceBarComponent, selector: "pptx-find-replace-bar", inputs: ["matchCount", "matchIndex"], outputs: ["find", "navigate", "replaceOne", "replaceAll", "close"] }, { kind: "component", type: SlidesPanelComponent, selector: "pptx-slides-panel", inputs: ["canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["select"] }, { kind: "component", type: StatusBarComponent, selector: "pptx-status-bar", inputs: ["slideIndex", "slideCount", "canEdit", "dirty", "autosaveStatus", "notesOpen", "zoomPercent", "sorterActive", "presenting", "hiddenActions"], outputs: ["toggleNotes", "normalView", "openSorter", "slideShow", "zoomIn", "zoomOut", "zoomReset"] }, { kind: "component", type: EditorContextMenuComponent, selector: "pptx-editor-context-menu", inputs: ["x", "y", "slideIndex", "showAiActions"], outputs: ["closed", "askAi", "fixAi"] }, { kind: "component", type: ExportProgressModalComponent, selector: "pptx-export-progress-modal", inputs: ["open", "title", "progress", "statusMessage"], outputs: ["cancel"] }, { kind: "component", type: CommentsPanelComponent, selector: "pptx-comments-panel", inputs: ["comments", "authorName"], outputs: ["add", "remove", "resolve"] }, { kind: "component", type: SignaturesPanelComponent, selector: "pptx-signatures-panel", inputs: ["signatures"] }, { kind: "component", type: AccessibilityPanelComponent, selector: "pptx-accessibility-panel", inputs: ["issues"], outputs: ["selectSlide"] }, { kind: "component", type: CollaborationCursorsComponent, selector: "pptx-collaboration-cursors", inputs: ["cursors", "zoom"] }, { kind: "component", type: RemoteSelectionOverlayComponent, selector: "pptx-remote-selection-overlay", inputs: ["presences", "elements", "activeSlideIndex", "zoom"] }, { kind: "component", type: FollowModeBarComponent, selector: "pptx-follow-mode-bar", inputs: ["presences", "followedClientId"], outputs: ["follow"] }, { kind: "component", type: PropertiesDialogComponent, selector: "pptx-properties-dialog", inputs: ["open", "properties"], outputs: ["save", "close"] }, { kind: "component", type: HyperlinkDialogComponent, selector: "pptx-hyperlink-dialog", inputs: ["open", "element"], outputs: ["save", "close"] }, { kind: "component", type: PrintDialogComponent, selector: "pptx-print-dialog", inputs: ["slides", "activeSlideIndex", "defaultSlidesPerPage", "defaultFrameSlides"], outputs: ["print", "cancel"] }, { kind: "component", type: ShareDialogComponent, selector: "pptx-share-dialog", inputs: ["open", "defaults", "active", "connected", "userCount", "shareUrl", "p2p"], outputs: ["start", "stop", "close"] }, { kind: "component", type: BroadcastDialogComponent, selector: "pptx-broadcast-dialog", inputs: ["open", "defaults", "active", "connected", "viewerCount", "viewerUrl", "p2p"], outputs: ["start", "stop", "close"] }, { kind: "component", type: MobileBottomBarComponent, selector: "pptx-mobile-bottom-bar", inputs: ["slideCount", "commentCount", "activeSheet"], outputs: ["openSlides", "insert", "openFormat", "openComments", "notes"] }, { kind: "component", type: MobileMenuSheetComponent, selector: "pptx-mobile-menu-sheet", inputs: ["open", "slideCount", "exporting", "showNotes", "canEdit", "hiddenActions"], outputs: ["closed", "openFind", "openSorter", "toggleNotes", "insertText", "present", "openFile", "savePptx", "exportPng", "exportPdf", "exportGif", "exportVideo", "print"] }, { kind: "component", type: MobileSlidesSheetComponent, selector: "pptx-mobile-slides-sheet", inputs: ["open", "slides", "canvasSize", "mediaDataUrls", "activeIndex"], outputs: ["closed", "jumpToSlide"] }, { kind: "component", type: MobileToolbarComponent, selector: "pptx-mobile-toolbar", inputs: ["canUndo", "canRedo", "canPresent", "canEdit", "menuOpen", "aiEnabled", "aiPanelOpen", "hiddenActions"], outputs: ["toggleMenu", "toggleAiPanel", "undo", "redo", "share", "save", "present"] }, { kind: "component", type: MasterViewCanvasComponent, selector: "pptx-master-view-canvas", inputs: ["tab", "slideMasters", "activeMasterIndex", "activeLayoutIndex", "notesMaster", "handoutMaster", "canvasSize", "notesCanvasSize", "mediaDataUrls", "editable"], outputs: ["notesMasterChange", "handoutMasterChange"] }, { kind: "component", type: MasterViewSidebarComponent, selector: "pptx-master-view-sidebar", inputs: ["tab", "slideMasters", "notesMaster", "handoutMaster", "activeMasterIndex", "activeLayoutIndex", "handoutSlidesPerPage"], outputs: ["tabChange", "selectMaster", "selectLayout", "slidesPerPageChange", "backgroundChange", "close"] }, { kind: "component", type: NotesPanelComponent, selector: "pptx-notes-panel", inputs: ["slide", "expanded"], outputs: ["update", "notesToggle"] }, { kind: "component", type: RibbonComponent, selector: "pptx-ribbon", inputs: ["slideIndex", "slideCount", "canEdit", "selectedElement", "zoomPercent", "formatPainterActive", "canActivateFormatPainter", "exporting", "hasMacros", "showGrid", "showRulers", "showGuides", "snapToGrid", "snapToShape", "eyedropperActive", "themeGalleryOpen", "sidebarCollapsed", "inspectorOpen", "commentsOpen", "commentCount", "findOpen", "collabConnected", "connectedCount", "spellCheckEnabled", "showSubtitles", "hiddenActions", "aiEnabled", "aiPanelOpen", "accountAuth"], outputs: ["prev", "next", "zoomIn", "zoomOut", "zoomReset", "find", "present", "presenter", "record", "presentFromBeginning", "rehearseTimings", "toggleSubtitles", "openSubtitleSettings", "recordFromBeginning", "recordFromCurrent", "spellCheckChange", "share", "broadcast", "openFile", "openRecentFile", "createPresentation", "save", "savePpsx", "savePptm", "packageForSharing", "toggleSidebar", "toggleAiPanel", "signatures", "info", "print", "comments", "a11y", "link", "openSorter", "openMasterView", "toggleNotes", "toggleFormatPainter", "exportPng", "exportPdf", "exportGif", "exportVideo", "copySlideAsImage", "replace", "toggleInspector", "drawToolChange", "toggleThemeGallery", "toggleGrid", "toggleRulers", "toggleGuides", "toggleSelectionPane", "openCustomShows", "toggleSnapToGrid", "toggleSnapToShape", "addGuide", "zoomToFit", "toggleEyedropper", "openSmartArtDialog", "openEquationDialog", "openSetUpSlideShow", "openCompare", "openPassword", "openFontEmbedding", "openVersionHistory", "openShortcuts", "openSettings"] }, { kind: "component", type: TitleBarComponent, selector: "pptx-title-bar", inputs: ["canEdit", "fileName", "isDirty", "autosaveStatus", "autosaveEnabled", "canUndo", "canRedo", "undoLabel", "redoLabel", "findReplaceOpen", "hiddenActions", "quickAccess"], outputs: ["toggleAutosave", "save", "undo", "redo", "quickCommand", "toggleFindReplace", "commandSearch"] }, { kind: "component", type: ThemeGalleryComponent, selector: "pptx-theme-gallery", inputs: ["open", "activeName", "theme"], outputs: ["applyTheme", "applyCustomTheme", "close"] }, { kind: "component", type: SelectionPaneComponent, selector: "pptx-selection-pane", inputs: ["elements", "selectedIds"], outputs: ["selectElement", "bringForward", "sendBackward", "toggleHidden"] }, { kind: "component", type: CustomShowsComponent, selector: "pptx-custom-shows", inputs: ["open", "slides", "customShows", "activeCustomShowId"], outputs: ["create", "remove", "update", "setActive", "close"] }, { kind: "component", type: InsertSmartArtDialogComponent, selector: "pptx-insert-smart-art-dialog", inputs: ["open"], outputs: ["close", "insert"] }, { kind: "component", type: ViewerExtraDialogsComponent, selector: "pptx-viewer-extra-dialogs", inputs: ["activeSlideIndex", "selectedElementId", "filePath", "customShows", "themeKey", "availableThemes", "localeCode", "availableLocales", "aiExportVisible"], outputs: ["restoreContent", "themeKeySelect", "localeSelect"] }, { kind: "component", type: RehearseTimingsComponent, selector: "pptx-rehearse-timings", inputs: ["summary", "paused", "slideStartedAt", "presentationStartedAt", "timings"], outputs: ["togglePause", "save", "discard"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [/* @ts-ignore */
|
|
110700
110978
|
Promise.resolve().then(function () { return aiChatPanel_component; }).then(m => m.AiChatPanelComponent)]] });
|
|
110701
110979
|
}
|
|
110702
110980
|
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "22.0.8", ngImport: i0, type: PowerPointViewerComponent, resolveDeferredDeps: () => [/* @ts-ignore */
|
|
@@ -111203,6 +111481,7 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "22.0.8", ng
|
|
|
111203
111481
|
[startIndex]="customShowsCtl.presentationStartIndex()"
|
|
111204
111482
|
[showWithAnimation]="loader.presentationProperties().showWithAnimation"
|
|
111205
111483
|
[subtitlesVisible]="presentationMode.subtitlesVisible()"
|
|
111484
|
+
[sessionEnded]="audienceSessionEnded()"
|
|
111206
111485
|
(subtitlesChange)="presentationMode.subtitlesVisible.set($event)"
|
|
111207
111486
|
(indexChange)="presentationMode.onPresentationIndexChange($event)"
|
|
111208
111487
|
(annotationsExit)="presentationMode.onPresentationAnnotationsExit($event)"
|
|
@@ -113335,4 +113614,4 @@ function cn(...values) {
|
|
|
113335
113614
|
*/
|
|
113336
113615
|
|
|
113337
113616
|
export { DATA_TABLE_KEY_W as $, ALIGN_OPTIONS as A, BroadcastDialogComponent as B, CHART_EDITOR_STYLES as C, ChartAxisOptionsComponent as D, ChartAxisStyleOptionsComponent as E, ChartComboTypeOptionsComponent as F, ChartDataEditorComponent as G, ChartDataLabelOptionsComponent as H, ChartDatapointOptionsComponent as I, ChartDisplayOptionsComponent as J, ChartElementViewComponent as K, ChartErrorBarOptionsComponent as L, ChartMarkerOptionsComponent as M, ChartPartSelectionService as N, ChartPrimitivesComponent as O, ChartRendererComponent as P, ChartTrendlineOptionsComponent as Q, CollaborationCursorsComponent as R, CollaborationService as S, ColorChangedImageComponent as T, CommentsPanelComponent as U, CommentsService as V, ComparePanelComponent as W, ConnectorRendererComponent as X, ConnectorTextOverlayComponent as Y, CustomShowsComponent as Z, DATA_TABLE_HEADER_H as _, AUDIENCE_HASH as a, MIN_ZOOM_SCALE as a$, DATA_TABLE_PADDING as a0, DATA_TABLE_ROW_H as a1, DEFAULT_BOUNDS as a2, DEFAULT_BROADCAST_SERVER_URL as a3, DEFAULT_CANVAS_HEIGHT as a4, DEFAULT_CANVAS_WIDTH as a5, DEFAULT_COLOR_SCHEME as a6, DEFAULT_FILL_COLOR as a7, DEFAULT_LAYOUT as a8, DEFAULT_PALETTE$1 as a9, ExportProgressModalComponent as aA, ExportService as aB, FieldContextService as aC, FindBarComponent as aD, FindReplaceBarComponent as aE, FollowModeBarComponent as aF, FontEmbeddingListComponent as aG, FontEmbeddingPanelComponent as aH, GALLERY_THEME_PRESETS as aI, GradientPickerComponent as aJ, HANDOUT_OPTIONS as aK, HeaderFooterDialogComponent as aL, HyperlinkDialogComponent as aM, ImagePropertiesPanelComponent as aN, InkDrawingService as aO, InkRendererComponent as aP, InsertSmartArtDialogComponent as aQ, InspectorPaneHeaderComponent as aR, InspectorPanelComponent as aS, IsMobileService as aT, KeepAnnotationsDialogComponent as aU, LOCALE_CATALOG as aV, LONG_PRESS_DURATION_MS as aW, LONG_PRESS_MOVE_TOLERANCE_PX as aX, LoadContentService as aY, LocalPresencePublisher as aZ, MAX_ZOOM_SCALE as a_, DEFAULT_PRINT_SETTINGS as aa, DEFAULT_SLIDE_BACKGROUND as ab, DEFAULT_STROKE_COLOR as ac, DEFAULT_STYLE as ad, DEFAULT_TABLE_ROW_HEIGHT as ae, DEFAULT_TEXT_COLOR$1 as af, DEFAULT_VIEWER_PROFILE as ag, DIRECTIONAL_PRESETS as ah, DIRECTION_OPTIONS as ai, DocumentPropertiesCardComponent as aj, EMBEDDED_FONTS_STYLE_ID as ak, EMPHASIS_PRESETS as al, ENTRANCE_PRESETS as am, TEMPLATES as an, EXIT_PRESETS as ao, EditorContextMenuComponent as ap, EditorHistory as aq, EditorStateService as ar, EditorToolbarComponent as as, EffectsPanelComponent as at, ElementRendererComponent as au, EmbeddedFontsService as av, EncryptedFileDialogComponent as aw, EquationEditorDialogComponent as ax, EquationRendererComponent as ay, EquationTemplateGalleryComponent as az, AUDIENCE_NONCE_KEY as b, SLIDE_PX_PER_INCH as b$, MediaPreviewComponent as b0, MediaPropertiesPanelComponent as b1, MediaRendererComponent as b2, MediaTrimTimelineComponent as b3, MobileBottomBarComponent as b4, MobileMenuSheetComponent as b5, MobilePresenterViewComponent as b6, MobileSheetComponent as b7, MobileSlidesSheetComponent as b8, MobileToolbarComponent as b9, RESIZE_HANDLES as bA, RULER_THICKNESS as bB, RemoteSelectionOverlayComponent as bC, RibbonAnimationsSectionComponent as bD, RibbonArrangeSectionComponent as bE, RibbonColorPopoverComponent as bF, RibbonComponent as bG, RibbonDesignSectionComponent as bH, RibbonDrawSectionComponent as bI, RibbonDrawingGroupComponent as bJ, RibbonEditingSectionComponent as bK, RibbonFileSectionComponent as bL, RibbonFontControlsComponent as bM, RibbonHomeSectionComponent as bN, RibbonInsertFieldsComponent as bO, RibbonInsertSectionComponent as bP, RibbonParagraphControlsComponent as bQ, RibbonPrimaryRowComponent as bR, RibbonReviewSectionComponent as bS, RibbonSlideshowSectionComponent as bT, RibbonTransitionsSectionComponent as bU, RibbonViewSectionComponent as bV, RulerGuidesService as bW, SEQUENCE_OPTIONS as bX, SEVERITY_GROUPS as bY, SEVERITY_LABELS as bZ, SHORTCUT_REFERENCE_ITEMS as b_, ModalDialogComponent as ba, Model3DRendererComponent as bb, NotesHandoutCardComponent as bc, NotesPanelComponent as bd, NotesToolbarComponent as be, OleRendererComponent as bf, POWER_POINT_VIEWER_PROVIDERS as bg, PRESENTER_CHANNEL_NAME as bh, PRESENTER_MSG_ORIGIN as bi, PasswordProtectionDialogComponent as bj, PasswordStrengthMeterComponent as bk, PowerPointViewerComponent as bl, PresentationAnnotationOverlayComponent as bm, PresentationAnnotationsService as bn, PresentationOverlayComponent as bo, PresentationPropertiesPanelComponent as bp, PresentationSettingsCardComponent as bq, PresentationSubtitleBarComponent as br, PresentationTransitionOverlayComponent as bs, PresenterViewComponent as bt, PresenterWindowService as bu, PrintDialogComponent as bv, PrintService as bw, PrintSettingsPanelComponent as bx, PropertiesDialogComponent as by, REPEAT_MODE_OPTIONS as bz, AVATAR_COLOR_SWATCHES as c, ViewerDocumentPropertiesService as c$, SLIDE_TRANSITION_KEYFRAMES as c0, DEFAULT_PALETTE as c1, PALETTES$1 as c2, SMART_ART_COLOR_SCHEMES as c3, SMART_ART_STYLE_OPTIONS as c4, SUB_ITEM_LABEL as c5, SVG_WARP_PRESETS as c6, SWIPE_MAX_VERTICAL_PX as c7, SWIPE_THRESHOLD_PX as c8, SelectionPaneComponent as c9, TABLE_STRUCTURE_TOGGLES as cA, TEXT_DIRECTION_OPTIONS$1 as cB, THEME_CATALOG as cC, TIMING_CURVE_OPTIONS as cD, TRIGGER_OPTIONS as cE, TYPE_LABELS as cF, TableCellAdvancedFillComponent as cG, TableCellFormattingComponent as cH, TableDataEditorComponent as cI, TablePropertiesComponent as cJ, TableRendererComponent as cK, TableResizeOverlayComponent as cL, TableSelectionService as cM, TextAdvancedPanelComponent as cN, ThemeEditorFieldsComponent as cO, ThemeGalleryComponent as cP, ThemeSelectorCardComponent as cQ, TitleBarComponent as cR, VALIGN_OPTIONS as cS, VIEWER_THEME as cT, VersionHistoryPanelComponent as cU, ViewerCanvasEditingService as cV, ViewerCollabCursorService as cW, ViewerCollaborationSessionService as cX, ViewerCompareService as cY, ViewerCustomShowsService as cZ, ViewerDialogsService as c_, SetUpSlideShowDialogComponent as ca, SettingsAppearanceTabComponent as cb, SettingsDialogComponent as cc, SettingsLanguageTabComponent as cd, ShareDialogComponent as ce, ShortcutPanelComponent as cf, ShowOptionsFieldsetComponent as cg, ShowSlidesFieldsetComponent as ch, SignatureStrippedDialogComponent as ci, SignaturesPanelComponent as cj, SignaturesService as ck, SlideCanvasComponent as cl, SlideDefaultInspectorComponent as cm, SlideDiffChangesComponent as cn, SlideDiffRowComponent as co, SlideDiffThumbnailsComponent as cp, SlideSizeCardComponent as cq, SlideSorterOverlayComponent as cr, SlideThemeOverridePanelComponent as cs, SlidesPanelComponent as ct, SmartArt3DRendererComponent as cu, SmartArt3DService as cv, SmartArtPreviewComponent as cw, SmartArtPropertiesComponent as cx, SmartArtRendererComponent as cy, StatusBarComponent as cz, AccessibilityPanelComponent as d, buildFallbackViewModel as d$, ViewerExportService as d0, ViewerExtraDialogsComponent as d1, ViewerFileIOService as d2, ViewerFindReplaceService as d3, ViewerFormatPainterService as d4, ViewerInspectorPanelService as d5, ViewerKeyboardService as d6, ViewerMobileSheetService as d7, ViewerPresentationModeService as d8, ViewerThemeGalleryService as d9, asMediaElement as dA, assignUserColor as dB, attachTouchGestures as dC, beginNodeEdit as dD, boolFromEvent as dE, bringForward as dF, bringToFront as dG, buildBarActions as dH, buildBroadcastConfig as dI, buildBroadcastViewerUrl as dJ, buildCategoryLabels as dK, buildCellParagraphs as dL, buildChartViewModel as dM, buildChatLogExport as dN, buildChatLogMarkdown as dO, buildChromeStyle as dP, buildClearHyperlinkPatch as dQ, buildClickGroups as dR, buildColStyles as dS, buildCollaborationConfig as dT, buildComboViewModel as dU, buildCssGradientFromShapeStyle as dV, buildDuotoneFilter as dW, buildDuotoneFilterId as dX, buildEmbeddedFontStyles as dY, buildEquationElement as dZ, buildEquationSegment as d_, ViewerTouchGesturesService as da, ViewerZoomService as db, WEBM_MIME_CANDIDATES as dc, WriteBackScheduler as dd, ZoomNavigationService as de, ZoomRendererComponent as df, ZoomTargetService as dg, addCategory as dh, addCommentToList as di, addGradientStopPatch as dj, addItem as dk, addSeries as dl, addSubItem as dm, advanceStep as dn, aiToggleVisible as dp, alignPatch as dq, animationFor as dr, annotationMapToInkInserts as ds, applyAcceptedDiff as dt, applyAnimationPreset as du, applyFindReplacements as dv, applyFormatToElement as dw, applyMove as dx, applyResize as dy, applyTableStylePreset as dz, AccessibilityService as e, computeDataTablePrimitives as e$, buildFontFaceRule as e0, buildGradientFillCss as e1, buildGridlinesAndLabels as e2, buildHyperlinkPatch as e3, buildInkContainerStyle as e4, buildInkStrokes as e5, buildLegend as e6, buildModel3DContainerStyle as e7, buildModel3DViewModel as e8, buildOleActionModel as e9, cellStyleToStyleMap as eA, cellTdStyle as eB, changeCountLabel as eC, changeIcon as eD, characterSpacingPatch as eE, checkFontAvailable as eF, clampCursorPosition as eG, clampGifDimensions as eH, clampIndex as eI, clampNotesFontSize as eJ, clampScale as eK, clampStep as eL, clearAllLocalViewerData as eM, clearAudienceContent as eN, cn as eO, collectAccessibilityIssues as eP, collectElementText as eQ, collectSlideText as eR, collectStoredChats as eS, collectUsedFontFamilies as eT, columnWidthStyle as eU, commitNodeText as eV, computeAlign as eW, computeAxisTitlePrimitives as eX, computeBarRects as eY, computeBubbleRadius as eZ, computeCornerHandle as e_, buildOleInfoRows as ea, buildPatternFillCss as eb, buildPrintHtmlDocument as ec, buildPropertiesPatch as ed, buildRegionMapViewModel as ee, buildSaveSlides as ef, buildShareUrl as eg, buildSmartArtInsertElement as eh, buildSmartArtNodes as ei, buildStockViewModel as ej, buildSurfaceViewModel as ek, buildTableViewModel as el, buildTreemapViewModel as em, buildTrimFragment as en, buildWaterfallViewModel as eo, buildZeroLine as ep, buildZoomContainerStyle as eq, buildZoomViewModel as er, bulletIndentPx as es, canAddTopLevelNode as et, canRemoveTopLevelNode as eu, canStartBroadcast as ev, canStartShare as ew, canUseClipboard as ex, captionDisplayText as ey, cellRunStyle as ez, AccountPageComponent as f, encodeGif as f$, computeDistribute as f0, computeDrawingViewBox as f1, computeErrorBarPrimitives as f2, computeFocusTargets as f3, computeHandleBoxes as f4, computeHandoutLayout as f5, computeIsMobile as f6, computeIsTablet as f7, computeLinePoints as f8, computeLinearRegression as f9, createWebsocketBundle as fA, cssObjectToStyleMap as fB, currentColorScheme as fC, currentLayout as fD, currentStyle as fE, defaultCssVars as fF, defaultRadius as fG, defaultThemeColors as fH, deleteElementsByIds as fI, deleteVersion as fJ, demoteNode as fK, deriveModel3DBlobUrl as fL, derivePresenceList as fM, describeSmartArtBounds as fN, disableGlowPatch as fO, disableInnerShadowPatch as fP, disableOuterShadowPatch as fQ, disableReflectionPatch as fR, disableSoftEdgePatch as fS, duplicateElementById as fT, durationOf as fU, effectsStateOf as fV, enableGlowPatch as fW, enableInnerShadowPatch as fX, enableOuterShadowPatch as fY, enableReflectionPatch as fZ, enableSoftEdgePatch as f_, computePageCount as fa, computePieLayout as fb, computePieSlicePath as fc, computePieSlices as fd, computePlotLayout as fe, computeRSquared as ff, computeRadarPoints as fg, computeScatterDots as fh, computeSelectionBoxes as fi, computeSingleSelected as fj, computeSlideIndices as fk, computeSnap as fl, computeStackedBarRects as fm, computeStackedValueRange as fn, computeTextLines as fo, computeTimerProgress as fp, computeTrendlinePrimitives as fq, computeValueRange as fr, convertOmmlToMathMl as fs, copyFormatFromElement as ft, countAccessibilityIssues as fu, countAnnotationStrokes as fv, createAngularAiBridge as fw, createCustomShow as fx, createSwipeDismissDrag as fy, createWebrtcBundle as fz, ActionSettingsPanelComponent as g, hasAnimation as g$, estimatePageCount as g0, evenColumnWidths as g1, evenRowHeights as g2, exitPresentationFullscreen as g3, exportAiChatLogs as g4, extractPathPoints as g5, eyedropperAvailable as g6, fillColorOf as g7, findInSlides as g8, findOwningSlideIndex as g9, getOleBadgeLabel as gA, getOleDisplayName as gB, getOleDownloadFileName as gC, getOleTypeColor as gD, getOleTypeLabel as gE, getPasswordStrength as gF, getPatternSvg as gG, getPlaceholderStyle as gH, getVersions as gI, getResolvedShapeClipPath as gJ, getResolvedShapeClipPathFor as gK, getShapeFillStrokeStyle as gL, getSlideBackgroundStyle as gM, getSlideTransitionAnimations as gN, getSmartArtNodeBounds as gO, getSpeechRecognitionCtor as gP, getTextBlockStyle as gQ, getTextWarp as gR, getTouchDistance as gS, getWarpCategory as gT, getWarpPath as gU, gradientStateFromStyle as gV, gradientStateOf as gW, gradientStatePatch as gX, gridColumns as gY, groupElements as gZ, groupIssuesBySeverity as g_, findSlideIndexByElementId as ga, fitPolynomial as gb, fitZoom as gc, focusTargetChips as gd, fontMimeForFormat as ge, fontSizeOf as gf, formatAutoNumber as gg, formatAxisValue as gh, formatBytes as gi, formatCursorLabel as gj, formatElapsed as gk, formatFileSize as gl, formatPropertyDate as gm, formatTime as gn, fpsToFrameIntervalMs as go, generateBroadcastRoomId as gp, generateCommentId as gq, generateCustomShowId as gr, generatePressureCircles as gs, generateRulerTicks as gt, getClrChangeParams as gu, getContainerStyle as gv, getDuotoneFilterDef as gw, getImageSrc as gx, getLocalStorageUsageSummary as gy, getOleAriaLabel as gz, AdvancedChartEditorComponent as h, normalizeValue as h$, hasCopyableFormat as h0, hasExistingLink as h1, hasExitedFullscreen as h2, hasGradientFill as h3, hasPressureVariation as h4, hasVisibleSlideAfter as h5, headerLabel as h6, inkViewBox as h7, insertColumn as h8, insertRow as h9, mergeDown as hA, mergeRight as hB, mergeSelection as hC, moveElementBy as hD, moveNodeDown as hE, moveNodeUp as hF, msToFrameDelayCs as hG, narrowToCircle as hH, narrowToPolygon as hI, narrowToRect as hJ, newChartElement as hK, newEquationElement as hL, newPresetShapeElement as hM, newShapeElement as hN, newSmartArtElement as hO, newTableElement as hP, newTextElement as hQ, nextVisibleIndex as hR, nodeBold as hS, nodeEditBox as hT, nodeFillColor as hU, nodeFontColor as hV, nodeIdFromKey as hW, nodeItalic as hX, nodeStyle as hY, normalizeFontFormat as hZ, normalizeSlidesPerPage as h_, interpolateWidth as ha, isAudienceTab as hb, isBold as hc, isBrowserOpenableMime as hd, isChildNode as he, isElementInteractive as hf, isInjectableUrl as hg, isItalic as hh, isPpactionUrl as hi, isPresenterMessage as hj, isSigned as hk, isTextElement as hl, isTwoTableFocus as hm, isUnderline as hn, isUrlSafe as ho, isValidRoomId as hp, isViewportBackgroundPressTarget as hq, isZoomActivationKey as hr, issueTrackKey as hs, issueTypeLabel as ht, keyToLabel as hu, latexToMathml as hv, linePointsToSvgString as hw, lineSpacingPatch as hx, loadAudienceContent as hy, mergeCaptionResults as hz, AiChangeOverlayComponent as i, revealedElementStyles as i$, numFromEvent as i0, ommlToMathml as i1, ooxmlDashToCssBorderStyle as i2, openNativeEyeDropper as i3, overallStatus as i4, paletteColor as i5, parseAudienceNonce as i6, parseNodeTextarea as i7, partitionSlides as i8, patchChartData as i9, removeCommentFromList as iA, removeElementAnimation as iB, removeGradientStopPatch as iC, removeNode as iD, removeRow as iE, removeSeries as iF, renderToCanvas as iG, reorderAnimationDown as iH, reorderAnimationUp as iI, replaceInSlides as iJ, replaceMatch as iK, requestPresentationFullscreen as iL, resizeElement as iM, resolveCaptionTracks as iN, resolveChartKind as iO, resolveFontVariant as iP, resolveHyperlinkHref as iQ, resolveInteractiveElementId as iR, resolveMediaSrc as iS, resolveOleType as iT, resolveParagraphBullet as iU, resolvePresenterNotes as iV, resolveProfileInitial as iW, resolveRegionCode as iX, resolvePalette as iY, resolveThemeCatalogEntry as iZ, resolveTransitionDuration as i_, patchChartStyle as ia, patchTableData as ib, patchTextStyle as ic, pendingElementStyles as id, pickColorByClickFallback as ie, pickSupportedMimeType as ig, planGifFrames as ih, planVideoSegments as ii, pointsToSvgPathD as ij, presenceToCursors as ik, presetByLayout as il, presetsForCategory as im, pressuresToWidths as io, prevVisibleIndex as ip, projectDrawingShapes as iq, promoteNode as ir, provideViewerTheme as is, radarAngle as it, radarRingPoints as iu, recordWebm as iv, redistributeColumnWidth as iw, removeAnimation as ix, removeCategory as iy, removeColumn as iz, AiChatPanelComponent as j, signatureCountLabel as j$, routeOrthogonalConnector as j0, rowStyle as j1, sampleColorFromSlide as j2, sanitizeColor as j3, sanitizeSlideIndex as j4, sanitizeUserName as j5, saveViewerProfile as j6, scanAvailableFonts as j7, searchSlides as j8, seedBroadcastFields as j9, setElementPosition as jA, setGridlineStyle as jB, setLayout as jC, setLegend as jD, setNodeStyle as jE, setNodeText as jF, setRepeatCount as jG, setRepeatMode as jH, setSequence as jI, setSeriesChartType as jJ, setSeriesColor as jK, setSeriesErrorBars as jL, setSeriesMarker as jM, setSeriesName as jN, setSeriesTrendline as jO, setSeriesValue as jP, setStyle as jQ, setTimingCurve as jR, setTitle as jS, setTrigger as jT, setTriggerShapeId as jU, shapeStylePatch as jV, sheetAfterNavigate as jW, shouldBlockClickAdvance as jX, shouldUseSvgWarp as jY, showDirectionPicker as jZ, showsTemplateAffordance as j_, seedHyperlinkDraft as ja, seedPropertiesDraft as jb, seedShareFields as jc, segmentFrameCount as jd, selectValue$2 as je, sendBackward as jf, sendToBack as jg, sequentialColorScale as jh, serializeWriteBack as ji, seriesColor as jj, setAnimationEmphasis as jk, setAnimationEntrance as jl, setAnimationExit as jm, setAxis as jn, setAxisLogScale as jo, setAxisTitleStyle as jp, setCategoryLabel as jq, setCellText as jr, setColorScheme as js, setDataLabels as jt, setDataPointExplosion as ju, setDataPointFill as jv, setDataPointLabel as jw, setDelay as jx, setDirection as jy, setDuration as jz, AiChatService as k, signatureKey as k0, signatureTimestamp as k1, signerName as k2, statusLabel as k3, slideNumberOf as k4, smartArtNodes as k5, paletteColour as k6, snapToGridStep as k7, splitCursorCell as k8, splitMergedCell as k9, updateElementById as kA, updateGlowPatch as kB, updateGradientStopPatch as kC, updateInnerShadowPatch as kD, updateOuterShadowPatch as kE, updateReflectionPatch as kF, vAlignPatch as kG, validatePassword as kH, validatePrintSettings as kI, validateRoomId as kJ, valueToY as kK, vermilionDarkColors as kL, vermilionDarkTheme as kM, vermilionLightColors as kN, vermilionLightTheme as kO, vermilionRadius as kP, waypointsToPathD as kQ, worstStatus as kR, zoomTargetSlideIndex as kS, statusKind as ka, statusLabel$1 as kb, storeAudienceContent as kc, stringFromEvent$5 as kd, strokeColorOf as ke, strokeToInkElement as kf, styleShadowFilter as kg, textAdvancedPatch as kh, textAdvancedStateFromStyle as ki, textAdvancedStateOf as kj, textColorOf as kk, textDirectionPatch as kl, textStyleOf as km, textStylePatch as kn, themeStyle as ko, themeToCssVars as kp, thumbnailHeight as kq, thumbnailZoom as kr, toggleCommentResolvedInList as ks, toggleNodeBold as kt, toggleNodeItalic as ku, toggleSheet as kv, topLevelNodeCount as kw, transformSelectedTextCase as kx, translationsEn as ky, ungroupElements as kz, AiComposerComponent as l, AiFocusBarComponent as m, AiFocusHighlightOverlayComponent as n, AiMessageListComponent as o, AiPanelStore as p, AiProposalCardComponent as q, AiSettingsSectionComponent as r, AiToolCallCardComponent as s, toChatSummary as t, AnimationAuthorPanelComponent as u, AnimationPanelComponent as v, AnimationPlaybackService as w, AutosaveService as x, CURSOR_PALETTE as y, CanvasFitService as z };
|
|
113338
|
-
//# sourceMappingURL=pptx-angular-viewer-pptx-angular-viewer-
|
|
113617
|
+
//# sourceMappingURL=pptx-angular-viewer-pptx-angular-viewer-bV0DbHDY.mjs.map
|