pptx-angular-viewer 2.19.0 → 2.19.1

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.
@@ -16358,7 +16358,7 @@ function withChartTitle(chartData, title) {
16358
16358
  * Without a threshold every click on a bar would commit a (tiny) value change,
16359
16359
  * so a user could not select a mark without editing it.
16360
16360
  */
16361
- const CHART_DRAG_THRESHOLD_PX$1 = 3;
16361
+ const CHART_DRAG_THRESHOLD_PX = 3;
16362
16362
  const STYLE_ELEMENT_ID$1 = 'pptx-chart-interaction-styles';
16363
16363
  const INTERACTION_CSS$1 = `
16364
16364
  .pptx-chart-interactive svg [data-chart-part] { pointer-events: auto; cursor: pointer; }
@@ -16394,19 +16394,19 @@ function ensureChartInteractionStyles$1() {
16394
16394
  /** Class a chart root carries while its marks are grabbable. */
16395
16395
  const CHART_INTERACTIVE_CLASS = 'pptx-chart-interactive';
16396
16396
  /** Class marking the currently selected mark. */
16397
- const CHART_PART_SELECTED_CLASS$1 = 'pptx-chart-part-selected';
16397
+ const CHART_PART_SELECTED_CLASS = 'pptx-chart-part-selected';
16398
16398
  /**
16399
16399
  * Re-apply the selected-part highlight class inside `root`.
16400
16400
  *
16401
16401
  * Called after every render: the projectors re-create the SVG marks on each
16402
16402
  * chart change, which drops DOM-only classes. A null `part` only clears.
16403
16403
  */
16404
- function applyChartPartHighlight$1(root, part) {
16404
+ function applyChartPartHighlight(root, part) {
16405
16405
  if (!root) {
16406
16406
  return;
16407
16407
  }
16408
- for (const node of root.querySelectorAll(`.${CHART_PART_SELECTED_CLASS$1}`)) {
16409
- node.classList.remove(CHART_PART_SELECTED_CLASS$1);
16408
+ for (const node of root.querySelectorAll(`.${CHART_PART_SELECTED_CLASS}`)) {
16409
+ node.classList.remove(CHART_PART_SELECTED_CLASS);
16410
16410
  }
16411
16411
  if (!part) {
16412
16412
  return;
@@ -16416,7 +16416,7 @@ function applyChartPartHighlight$1(root, part) {
16416
16416
  : ':not([data-chart-point])';
16417
16417
  const selector = `[data-chart-part='${part.role}'][data-chart-series='${part.seriesIndex}']${pointSelector}`;
16418
16418
  for (const node of root.querySelectorAll(selector)) {
16419
- node.classList.add(CHART_PART_SELECTED_CLASS$1);
16419
+ node.classList.add(CHART_PART_SELECTED_CLASS);
16420
16420
  }
16421
16421
  }
16422
16422
  /**
@@ -16429,7 +16429,7 @@ function applyChartPartHighlight$1(root, part) {
16429
16429
  * preview, or the axis rescales under the pointer mid-drag and the mark runs
16430
16430
  * away from the cursor.
16431
16431
  */
16432
- function beginChartValueDrag$1(params) {
16432
+ function beginChartValueDrag(params) {
16433
16433
  const { part, viewModel, chartData, clientY } = params;
16434
16434
  if (part.role !== 'dataPoint' || part.pointIndex === undefined || !viewModel.valueDrag) {
16435
16435
  return null;
@@ -16459,7 +16459,7 @@ function beginChartValueDrag$1(params) {
16459
16459
  * itself inside the slide's zoom transform.
16460
16460
  */
16461
16461
  function advanceChartValueDrag(state, clientY, svgHeight) {
16462
- if (!state.moved && Math.abs(clientY - state.startClientY) < CHART_DRAG_THRESHOLD_PX$1) {
16462
+ if (!state.moved && Math.abs(clientY - state.startClientY) < CHART_DRAG_THRESHOLD_PX) {
16463
16463
  return null;
16464
16464
  }
16465
16465
  if (svgHeight === 0 || state.part.pointIndex === undefined) {
@@ -60660,6 +60660,9 @@ function applyUniformCellPaddingPatch(el, padding) {
60660
60660
  };
60661
60661
  }
60662
60662
 
60663
+ /* oxlint-disable eslint/one-var -- pervasive pre-existing pattern in this file
60664
+ (each mutator is a short sequence of independent `const`s); merging them
60665
+ isn't a style choice here. */
60663
60666
  /**
60664
60667
  * Pure, framework-agnostic comment-array transforms, shared by every binding.
60665
60668
  *
@@ -60683,7 +60686,7 @@ function generateCommentId() {
60683
60686
  * Append a new comment to a comment list.
60684
60687
  * @returns the NEW full comment array, or `null` when `text` is blank.
60685
60688
  */
60686
- function addCommentToList(comments, text, authorName, x, y) {
60689
+ function addCommentToList(comments, text, authorName, x, y, elementId) {
60687
60690
  const trimmed = text.trim();
60688
60691
  if (trimmed.length === 0) {
60689
60692
  return null;
@@ -60696,19 +60699,83 @@ function addCommentToList(comments, text, authorName, x, y) {
60696
60699
  resolved: false,
60697
60700
  ...(typeof x === 'number' ? { x } : {}),
60698
60701
  ...(typeof y === 'number' ? { y } : {}),
60702
+ ...(elementId ? { elementId } : {}),
60699
60703
  };
60700
60704
  return [...comments, comment];
60701
60705
  }
60702
60706
  /**
60703
- * Remove a comment (by id) from a comment list.
60707
+ * Immutably map the comment matching `id` anywhere in the tree (top-level
60708
+ * rows and nested `replies`, at any depth), applying `fn` to it.
60709
+ * @returns a tuple of the new tree and whether a match was found/changed.
60710
+ */
60711
+ function mapCommentTree(comments, id, fn) {
60712
+ let changed = false;
60713
+ const next = comments.map((comment) => {
60714
+ if (comment.id === id) {
60715
+ changed = true;
60716
+ return fn(comment);
60717
+ }
60718
+ if (comment.replies && comment.replies.length > 0) {
60719
+ const [replies, repliesChanged] = mapCommentTree(comment.replies, id, fn);
60720
+ if (repliesChanged) {
60721
+ changed = true;
60722
+ return { ...comment, replies };
60723
+ }
60724
+ }
60725
+ return comment;
60726
+ });
60727
+ return [next, changed];
60728
+ }
60729
+ /**
60730
+ * Immutably drop the comment matching `id` anywhere in the tree (top-level
60731
+ * rows and nested `replies`, at any depth).
60732
+ * @returns a tuple of the new tree and whether anything was removed.
60733
+ */
60734
+ function filterCommentTree(comments, id) {
60735
+ let changed = false;
60736
+ const next = [];
60737
+ for (const comment of comments) {
60738
+ if (comment.id === id) {
60739
+ changed = true;
60740
+ continue;
60741
+ }
60742
+ if (comment.replies && comment.replies.length > 0) {
60743
+ const [replies, repliesChanged] = filterCommentTree(comment.replies, id);
60744
+ if (repliesChanged) {
60745
+ changed = true;
60746
+ next.push({ ...comment, replies });
60747
+ continue;
60748
+ }
60749
+ }
60750
+ next.push(comment);
60751
+ }
60752
+ return [next, changed];
60753
+ }
60754
+ /**
60755
+ * Remove a comment (by id) from a comment list. Searches the whole tree, so
60756
+ * a nested reply (at any depth) is removed just like a top-level comment.
60704
60757
  * @returns the NEW full comment array, or `null` when nothing changed.
60705
60758
  */
60706
60759
  function removeCommentFromList(comments, id) {
60707
- const next = comments.filter((comment) => comment.id !== id);
60708
- if (next.length === comments.length) {
60760
+ const [next, changed] = filterCommentTree(comments, id);
60761
+ return changed ? next : null;
60762
+ }
60763
+ /**
60764
+ * Update the text of a comment (by id) anywhere in the tree (top-level rows
60765
+ * and nested `replies`, at any depth).
60766
+ * @returns the NEW full comment array, or `null` when `text` is blank or the
60767
+ * comment is not found.
60768
+ */
60769
+ function editCommentInList(comments, id, text) {
60770
+ const trimmed = text.trim();
60771
+ if (trimmed.length === 0) {
60709
60772
  return null;
60710
60773
  }
60711
- return next;
60774
+ const [next, changed] = mapCommentTree(comments, id, (comment) => ({
60775
+ ...comment,
60776
+ text: trimmed,
60777
+ }));
60778
+ return changed ? next : null;
60712
60779
  }
60713
60780
  /**
60714
60781
  * Append a threaded reply under the top-level comment `parentId`.
@@ -60742,22 +60809,17 @@ function replyToCommentInList(comments, parentId, text, authorName) {
60742
60809
  : comment);
60743
60810
  }
60744
60811
  /**
60745
- * Toggle the `resolved` flag of a comment (by id) in a comment list.
60812
+ * Toggle the `resolved` flag of a comment (by id) in a comment list. Searches
60813
+ * the whole tree, so a nested reply (at any depth) can be resolved just like
60814
+ * a top-level comment.
60746
60815
  * @returns the NEW full comment array, or `null` when nothing changed.
60747
60816
  */
60748
60817
  function toggleCommentResolvedInList(comments, id) {
60749
- let changed = false;
60750
- const next = comments.map((comment) => {
60751
- if (comment.id !== id) {
60752
- return comment;
60753
- }
60754
- changed = true;
60755
- return { ...comment, resolved: !comment.resolved };
60756
- });
60757
- if (!changed) {
60758
- return null;
60759
- }
60760
- return next;
60818
+ const [next, changed] = mapCommentTree(comments, id, (comment) => ({
60819
+ ...comment,
60820
+ resolved: !comment.resolved,
60821
+ }));
60822
+ return changed ? next : null;
60761
60823
  }
60762
60824
 
60763
60825
  /**
@@ -66000,6 +66062,20 @@ function select(group, key, labelKey, choiceList) {
66000
66062
  function numberControl(group, key, labelKey, min, max, unitKey) {
66001
66063
  return { kind: 'number', group, key, labelKey, min, max, unitKey };
66002
66064
  }
66065
+ /**
66066
+ * Clamp a File > Options number-control edit into its schema range.
66067
+ *
66068
+ * Returns `undefined` when `raw` does not parse to a finite number, so the
66069
+ * caller can skip the commit and leave the field's prior value in place
66070
+ * (matches the behaviour every binding except one already had).
66071
+ */
66072
+ function clampOptionNumber(raw, min, max) {
66073
+ const parsed = Number(raw);
66074
+ if (!Number.isFinite(parsed)) {
66075
+ return undefined;
66076
+ }
66077
+ return Math.min(max, Math.max(min, parsed));
66078
+ }
66003
66079
  function textControl(group, key, labelKey) {
66004
66080
  return { kind: 'text', group, key, labelKey, maxLength: 64 };
66005
66081
  }
@@ -71204,7 +71280,7 @@ function createLocalStorageBackend(namespace) {
71204
71280
  /** Try IndexedDB first; fall back to localStorage on any failure. */
71205
71281
  async function resolveBackend(dbName, namespace) {
71206
71282
  try {
71207
- const { openChatDb, createIdbBackend } = await import('./pptx-angular-viewer-chat-history-idb-BwJthigo.mjs');
71283
+ const { openChatDb, createIdbBackend } = await import('./pptx-angular-viewer-chat-history-idb-DG82Zq8L.mjs');
71208
71284
  const db = await openChatDb(dbName);
71209
71285
  return createIdbBackend(db);
71210
71286
  }
@@ -80760,53 +80836,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
80760
80836
  type: Injectable
80761
80837
  }], ctorParameters: () => [] });
80762
80838
 
80763
- /** Minimum pointer travel (px) before a mark press becomes a value drag. */
80764
- const CHART_DRAG_THRESHOLD_PX = 3;
80765
- /** Class toggled onto the SVG marks matching the selected chart part. */
80766
- const CHART_PART_SELECTED_CLASS = 'pptx-chart-part-selected';
80767
- /**
80768
- * Begin a value drag for a pressed part, or return null when the part is not
80769
- * a draggable data point (series lines, non-cartesian charts, missing drag
80770
- * context).
80771
- */
80772
- function beginChartValueDrag(part, vm, chartData, startClientY) {
80773
- if (part.role !== 'dataPoint' || part.pointIndex === undefined || !vm.valueDrag) {
80774
- return null;
80775
- }
80776
- const startValue = chartData.series[part.seriesIndex]?.values[part.pointIndex] ?? 0;
80777
- return {
80778
- part,
80779
- drag: vm.valueDrag,
80780
- svgHeight: vm.svgHeight,
80781
- startClientY,
80782
- anchorViewY: dragAnchorViewY(startValue, vm.valueDrag, part.seriesIndex),
80783
- baseChartData: chartData,
80784
- moved: false,
80785
- lastData: null,
80786
- lastValue: null,
80787
- };
80788
- }
80789
- /**
80790
- * Advance a drag session for a pointer move. Returns the preview chart data +
80791
- * live value once the pointer has travelled past the threshold, or null while
80792
- * the press still counts as a click (or geometry is unusable).
80793
- */
80794
- function moveChartValueDrag(session, clientY, renderedSvgHeight) {
80795
- if (!session.moved && Math.abs(clientY - session.startClientY) < CHART_DRAG_THRESHOLD_PX) {
80796
- return null;
80797
- }
80798
- if (session.part.pointIndex === undefined || renderedSvgHeight === 0) {
80799
- return null;
80800
- }
80801
- session.moved = true;
80802
- const deltaViewY = ((clientY - session.startClientY) / renderedSvgHeight) * session.svgHeight;
80803
- const viewY = session.anchorViewY + deltaViewY;
80804
- const value = dragValueForPart(viewY, session.drag, session.part.seriesIndex);
80805
- const data = withChartPointValue(session.baseChartData, session.part.seriesIndex, session.part.pointIndex, value);
80806
- session.lastData = data;
80807
- session.lastValue = value;
80808
- return { data, value };
80809
- }
80839
+ // ─────────────────────────────────────────────────────────────────────────────
80840
+ // Value-drag commit gate
80841
+ // ─────────────────────────────────────────────────────────────────────────────
80810
80842
  /**
80811
80843
  * The chart data a finished drag should commit, or null when nothing should
80812
80844
  * be committed (cancelled, or the press never became a drag).
@@ -80837,57 +80869,29 @@ function commitChartElementData(editor, elementId, chartData, templateSlideId) {
80837
80869
  editor.updateElement(slideIndex, elementId, { chartData });
80838
80870
  }
80839
80871
  // ─────────────────────────────────────────────────────────────────────────────
80840
- // Selected-part highlight
80841
- // ─────────────────────────────────────────────────────────────────────────────
80842
- /**
80843
- * CSS selector matching the SVG marks tagged with `part`. A part without a
80844
- * `pointIndex` must NOT match point-level marks of the same series (and vice
80845
- * versa), so the point clause is always present in one form or the other.
80846
- */
80847
- function chartPartSelector(part) {
80848
- const pointSel = part.pointIndex !== undefined
80849
- ? `[data-chart-point='${part.pointIndex}']`
80850
- : ':not([data-chart-point])';
80851
- return `[data-chart-part='${part.role}'][data-chart-series='${part.seriesIndex}']${pointSel}`;
80852
- }
80853
- /**
80854
- * Re-apply the selected-part highlight class inside `root`: clears every
80855
- * existing highlight, then tags the marks matching `part` (no-op for null).
80856
- * Runs after each render because re-created SVG marks drop DOM-only classes.
80857
- */
80858
- function applyChartPartHighlight(root, part) {
80859
- for (const node of root.querySelectorAll(`.${CHART_PART_SELECTED_CLASS}`)) {
80860
- node.classList.remove(CHART_PART_SELECTED_CLASS);
80861
- }
80862
- if (!part) {
80863
- return;
80864
- }
80865
- for (const node of root.querySelectorAll(chartPartSelector(part))) {
80866
- node.classList.add(CHART_PART_SELECTED_CLASS);
80867
- }
80868
- }
80869
- // ─────────────────────────────────────────────────────────────────────────────
80870
- // Singleton interaction stylesheet
80872
+ // Interaction stylesheet (shared base rules + Angular's own badge/editor CSS)
80871
80873
  // ─────────────────────────────────────────────────────────────────────────────
80872
80874
  const STYLE_ELEMENT_ID = 'pptx-ng-chart-interaction-styles';
80873
80875
  /**
80874
- * Interaction CSS, injected once into `document.head` (component styles are
80875
- * view-encapsulated in Angular, so they could not reach into the chart
80876
- * renderer's SVG). The `[data-chart-part]` rules match React's stylesheet;
80877
- * the `pptx-ng-*` rules style this binding's badge / inline title editor.
80876
+ * Angular-only interaction CSS, injected once into `document.head` alongside
80877
+ * the shared `[data-chart-part]` / selected-mark rules from
80878
+ * `ensureChartInteractionStyles` (`pptx-viewer-shared`). Component styles are
80879
+ * view-encapsulated in Angular, so they cannot reach into the chart
80880
+ * renderer's SVG or style the badge/title-input this component projects
80881
+ * next to it.
80878
80882
  */
80879
80883
  const INTERACTION_CSS = `
80880
- .pptx-chart-interactive svg [data-chart-part] { pointer-events: auto; cursor: pointer; }
80881
- .pptx-chart-interactive svg [data-chart-part]:hover { filter: brightness(1.12); }
80882
- .pptx-chart-interactive svg [data-chart-part='title'] { cursor: text; }
80883
- .pptx-chart-interactive svg .${CHART_PART_SELECTED_CLASS} { filter: drop-shadow(0 0 2.5px #3b82f6); }
80884
- .pptx-chart-interactive svg .${CHART_PART_SELECTED_CLASS}:hover { filter: drop-shadow(0 0 2.5px #3b82f6) brightness(1.12); }
80885
80884
  .pptx-ng-chart-view { position: relative; width: 100%; height: 100%; }
80886
80885
  .pptx-ng-chart-drag-badge { position: absolute; top: 4px; right: 4px; z-index: 10; border-radius: 4px; background: rgba(37, 99, 235, 0.9); padding: 2px 6px; font-size: 10px; font-weight: 500; color: #fff; pointer-events: none; }
80887
80886
  .pptx-ng-chart-title-input { position: absolute; left: 50%; top: 2px; z-index: 10; width: 60%; transform: translateX(-50%); border: 1px solid #94a3b8; border-radius: 4px; background: #fff; padding: 2px 4px; text-align: center; font-size: 11px; color: #0f172a; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); }
80888
80887
  `;
80889
- /** Inject the (singleton) interaction stylesheet for chart part hit targets. */
80888
+ /**
80889
+ * Inject the interaction stylesheets for chart part hit targets: the shared
80890
+ * base rules (singleton, shared across all five bindings) plus Angular's own
80891
+ * badge/title-input CSS (singleton, this binding only).
80892
+ */
80890
80893
  function ensureChartInteractionStyles() {
80894
+ ensureChartInteractionStyles$1();
80891
80895
  if (typeof document === 'undefined' || document.getElementById(STYLE_ELEMENT_ID)) {
80892
80896
  return;
80893
80897
  }
@@ -81628,6 +81632,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
81628
81632
  }]
81629
81633
  }], propDecorators: { element: [{ type: i0.Input, args: [{ isSignal: true, alias: "element", required: true }] }] } });
81630
81634
 
81635
+ /* oxlint-disable eslint/one-var -- pervasive pre-existing pattern in this file:
81636
+ independent handler-local `const`s, not one statement */
81631
81637
  /**
81632
81638
  * ChartElementViewComponent (Angular port of React's `ChartElementView.tsx`):
81633
81639
  * renders a chart and, while it is selected + editable, makes its data marks
@@ -81791,7 +81797,12 @@ class ChartElementViewComponent {
81791
81797
  if (!chartData || !vm) {
81792
81798
  return;
81793
81799
  }
81794
- const session = beginChartValueDrag(part, vm, chartData, event.clientY);
81800
+ const session = beginChartValueDrag({
81801
+ part,
81802
+ viewModel: vm,
81803
+ chartData,
81804
+ clientY: event.clientY,
81805
+ });
81795
81806
  if (!session) {
81796
81807
  return;
81797
81808
  }
@@ -81812,14 +81823,11 @@ class ChartElementViewComponent {
81812
81823
  return;
81813
81824
  }
81814
81825
  const svg = this.wrapper()?.nativeElement.querySelector('svg');
81815
- const rect = svg?.getBoundingClientRect();
81816
- if (!rect || rect.height === 0) {
81817
- return;
81818
- }
81819
- const result = moveChartValueDrag(session, event.clientY, rect.height);
81820
- if (result) {
81821
- this.previewData.set(result.data);
81822
- this.dragValue.set(result.value);
81826
+ const height = svg?.getBoundingClientRect().height ?? 0;
81827
+ const step = advanceChartValueDrag(session, event.clientY, height);
81828
+ if (step) {
81829
+ this.previewData.set(step.chartData);
81830
+ this.dragValue.set(step.value);
81823
81831
  }
81824
81832
  }
81825
81833
  onPointerUp() {
@@ -87457,6 +87465,9 @@ function affordanceElements(elements, editTemplateMode, isTemplate) {
87457
87465
  * rendering, clearing on pointerup) stays in `SlideCanvasComponent`.
87458
87466
  */
87459
87467
 
87468
+ /* oxlint-disable eslint/one-var -- pervasive pre-existing pattern in this file
87469
+ (many independent short-lived `const`s per handler); merging them isn't a
87470
+ style choice here. */
87460
87471
  /** Pixels (screen-space) a pointer must move before a click becomes a drag. */
87461
87472
  const DRAG_THRESHOLD = 3;
87462
87473
  /** Handle size in screen pixels (fine pointer: mouse/trackpad). */
@@ -88347,7 +88358,12 @@ class SlideCanvasComponent {
88347
88358
  return;
88348
88359
  }
88349
88360
  event.preventDefault();
88350
- const id = this.interactiveElementIdAt(event.target);
88361
+ // The inline text editor renders as an overlay beside the elements, not a
88362
+ // child of the one it edits, so a right-click inside it hit-tests to
88363
+ // nothing via interactiveElementIdAt. Fall back to the element being
88364
+ // edited rather than swallowing the menu on the element the user just
88365
+ // clicked (matches Vue's and Svelte's useContextMenu/onStageContextMenu).
88366
+ const hitId = this.interactiveElementIdAt(event.target), id = resolveContextMenuElementId(hitId, event.target, this.editingId());
88351
88367
  this.contextMenu.emit({ id, x: event.clientX, y: event.clientY });
88352
88368
  }
88353
88369
  onHandlePointerDown(event, handle) {
@@ -89076,6 +89092,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
89076
89092
  `, styles: [".master-sidebar{display:flex;width:224px;min-height:0;flex-direction:column;border-right:1px solid var(--pptx-border, #33334d);background:var(--pptx-card, #1e1e2e)}header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px}header strong{color:var(--pptx-muted-foreground, #a5a5b5);font-size:11px;text-transform:uppercase}header button{border:0;background:transparent;color:inherit;font-size:20px;cursor:pointer}.tabs{display:flex;padding:0 4px;border-bottom:1px solid var(--pptx-border, #33334d)}.tabs button{flex:1;padding:6px 3px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--pptx-muted-foreground, #a5a5b5);font-size:10px;cursor:pointer}.tabs button[aria-selected=true]{border-bottom-color:#f59e0b;color:#f59e0b}.body{flex:1;min-height:0;overflow:auto;padding:8px}.master-item{display:block;width:100%;margin-bottom:6px;padding:8px;border:1px solid transparent;border-radius:5px;background:transparent;color:inherit;text-align:left}.master-item.layout{width:calc(100% - 14px);margin-left:14px}.master-item[aria-pressed=true]{border-color:var(--pptx-primary, #6366f1)}section,.background-editor{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;padding:10px;border:1px solid var(--pptx-border, #33334d);border-radius:6px}.counts{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.counts button[aria-pressed=true]{background:var(--pptx-primary, #6366f1);color:#fff}.background-editor input{width:100%;height:34px}\n"] }]
89077
89093
  }], propDecorators: { tab: [{ type: i0.Input, args: [{ isSignal: true, alias: "tab", required: true }] }], slideMasters: [{ type: i0.Input, args: [{ isSignal: true, alias: "slideMasters", required: true }] }], notesMaster: [{ type: i0.Input, args: [{ isSignal: true, alias: "notesMaster", required: false }] }], handoutMaster: [{ type: i0.Input, args: [{ isSignal: true, alias: "handoutMaster", required: false }] }], activeMasterIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeMasterIndex", required: false }] }], activeLayoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeLayoutIndex", required: false }] }], handoutSlidesPerPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "handoutSlidesPerPage", required: false }] }], editable: [{ type: i0.Input, args: [{ isSignal: true, alias: "editable", required: false }] }], tabChange: [{ type: i0.Output, args: ["tabChange"] }], selectMaster: [{ type: i0.Output, args: ["selectMaster"] }], selectLayout: [{ type: i0.Output, args: ["selectLayout"] }], slidesPerPageChange: [{ type: i0.Output, args: ["slidesPerPageChange"] }], backgroundChange: [{ type: i0.Output, args: ["backgroundChange"] }], close: [{ type: i0.Output, args: ["close"] }] } });
89078
89094
 
89095
+ /**
89096
+ * Apply a bottom-bar tap: decide the next sheet with shared's `toggleSheet`
89097
+ * (tapping the open sheet closes it, tapping a different one switches to
89098
+ * it), then close everything and open whatever `toggleSheet` decided, if
89099
+ * anything.
89100
+ */
89101
+ function applyMobileBarSheetTap(tapped, current, actions) {
89102
+ const next = toggleSheet(current, tapped);
89103
+ actions.closeAll();
89104
+ switch (next) {
89105
+ case 'slides':
89106
+ actions.openSlides();
89107
+ break;
89108
+ case 'inspector':
89109
+ actions.openInspector();
89110
+ break;
89111
+ case 'comments':
89112
+ actions.openComments();
89113
+ break;
89114
+ case 'notes':
89115
+ actions.openNotes();
89116
+ break;
89117
+ }
89118
+ }
89119
+
89079
89120
  /**
89080
89121
  * mobile-bottom-bar.component.ts: Persistent mobile bottom action bar.
89081
89122
  *
@@ -104952,7 +104993,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
104952
104993
  }], propDecorators: { canEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEdit", required: false }] }], slideIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "slideIndex", required: false }] }], selectedElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedElement", required: false }] }] } });
104953
104994
 
104954
104995
  // Generated by scripts/inline-shared.mjs from package.json. Do not edit.
104955
- const PPTX_ANGULAR_VIEWER_VERSION = "2.18.7";
104996
+ const PPTX_ANGULAR_VIEWER_VERSION = "2.19.0";
104956
104997
 
104957
104998
  /**
104958
104999
  * account-page.component.ts: File > Account content.
@@ -130037,19 +130078,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
130037
130078
  /** Read a control's current primitive value off the options snapshot. */
130038
130079
  function readOptionValue(options, control) {
130039
130080
  const group = options[control.group];
130081
+ // oxlint-disable-next-line eslint/one-var -- distinct concern from the lookup above, forcing one statement hurts readability
130040
130082
  const value = group[control.key];
130041
130083
  return typeof value === 'boolean' || typeof value === 'number' || typeof value === 'string'
130042
130084
  ? value
130043
130085
  : undefined;
130044
130086
  }
130045
- /** Clamp a number-control edit into its schema range (NaN falls to min). */
130046
- function clampOptionNumber(raw, min, max) {
130047
- const parsed = Number(raw);
130048
- if (!Number.isFinite(parsed)) {
130049
- return min;
130050
- }
130051
- return Math.min(max, Math.max(min, parsed));
130052
- }
130053
130087
  class OptionsPaneComponent {
130054
130088
  constructor() {
130055
130089
  this.tab = input.required(/* @ts-ignore */
@@ -130086,8 +130120,10 @@ class OptionsPaneComponent {
130086
130120
  if (control.kind !== 'number') {
130087
130121
  return;
130088
130122
  }
130089
- const raw = event.target.value;
130090
- this.emit(control, clampOptionNumber(raw, control.min, control.max));
130123
+ const clamped = clampOptionNumber(event.target.value, control.min, control.max);
130124
+ if (clamped !== undefined) {
130125
+ this.emit(control, clamped);
130126
+ }
130091
130127
  }
130092
130128
  emitText(control, event) {
130093
130129
  this.emit(control, event.target.value);
@@ -133744,16 +133780,33 @@ class PowerPointViewerComponent {
133744
133780
  }
133745
133781
  }
133746
133782
  /**
133747
- * Mobile "Format" slot: surface the inspector for the current selection.
133748
- * On mobile the format pane starts closed (React parity: the canvas owns
133749
- * the first paint), so this explicitly opens it; with an element selected
133750
- * it shows the element inspector, otherwise the slide-properties view.
133783
+ * Mobile bottom-bar tap: decide the next sheet with shared's `toggleSheet`
133784
+ * (via `applyMobileBarSheetTap`), same priority every binding follows -
133785
+ * tapping the open sheet closes it, tapping a different one switches to it.
133786
+ * `mobileSheetSvc` and `inspectorPanel` back different bar slots (slides/
133787
+ * notes vs. format/comments), so this is the one place that coordinates
133788
+ * both from the shared decision.
133751
133789
  */
133752
- onMobileFormat() {
133753
- this.mobileSheetSvc.mobileSheet.set(null);
133754
- // Close any tool panel, clear the mobile-closed default, and undo a
133755
- // prior swipe-down dismissal so the format pane surfaces.
133756
- this.inspectorPanel.openFormatPanel();
133790
+ applyMobileSheetTap(tapped) {
133791
+ applyMobileBarSheetTap(tapped, this.mobileBarSheet(), {
133792
+ openSlides: () => this.mobileSheetSvc.mobileSheet.set('slides'),
133793
+ // Close any tool panel, clear the mobile-closed default, and undo a
133794
+ // prior swipe-down dismissal so the format pane surfaces (with an
133795
+ // element selected it shows the element inspector, otherwise slide
133796
+ // properties).
133797
+ openInspector: () => this.inspectorPanel.openFormatPanel(),
133798
+ openComments: () => {
133799
+ this.inspectorPanel.activePanel.set('comments');
133800
+ this.inspectorPanel.mobileInspectorHidden.set(false);
133801
+ },
133802
+ openNotes: () => this.mobileSheetSvc.showNotes.set(true),
133803
+ closeAll: () => {
133804
+ this.mobileSheetSvc.mobileSheet.set(null);
133805
+ this.mobileSheetSvc.showNotes.set(false);
133806
+ this.inspectorPanel.activePanel.set(null);
133807
+ this.inspectorPanel.formatPanelClosed.set(true);
133808
+ },
133809
+ });
133757
133810
  }
133758
133811
  /** Receive draw-tool state changes from the ribbon Draw tab. */
133759
133812
  onDrawToolChange(state) {
@@ -134688,15 +134741,11 @@ class PowerPointViewerComponent {
134688
134741
  [slideCount]="slideCount()"
134689
134742
  [commentCount]="activeComments().length"
134690
134743
  [activeSheet]="mobileBarSheet()"
134691
- (openSlides)="
134692
- mobileSheetSvc.mobileSheet.set(
134693
- mobileSheetSvc.mobileSheet() === 'slides' ? null : 'slides'
134694
- )
134695
- "
134744
+ (openSlides)="applyMobileSheetTap('slides')"
134696
134745
  (insert)="mobileSheetSvc.onMobileInsert()"
134697
- (openFormat)="onMobileFormat()"
134698
- (openComments)="inspectorPanel.togglePanel('comments')"
134699
- (notes)="mobileSheetSvc.toggleNotes()"
134746
+ (openFormat)="applyMobileSheetTap('inspector')"
134747
+ (openComments)="applyMobileSheetTap('comments')"
134748
+ (notes)="applyMobileSheetTap('notes')"
134700
134749
  />
134701
134750
  }
134702
134751
  </div>
@@ -135626,15 +135675,11 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "22.1.2", ng
135626
135675
  [slideCount]="slideCount()"
135627
135676
  [commentCount]="activeComments().length"
135628
135677
  [activeSheet]="mobileBarSheet()"
135629
- (openSlides)="
135630
- mobileSheetSvc.mobileSheet.set(
135631
- mobileSheetSvc.mobileSheet() === 'slides' ? null : 'slides'
135632
- )
135633
- "
135678
+ (openSlides)="applyMobileSheetTap('slides')"
135634
135679
  (insert)="mobileSheetSvc.onMobileInsert()"
135635
- (openFormat)="onMobileFormat()"
135636
- (openComments)="inspectorPanel.togglePanel('comments')"
135637
- (notes)="mobileSheetSvc.toggleNotes()"
135680
+ (openFormat)="applyMobileSheetTap('inspector')"
135681
+ (openComments)="applyMobileSheetTap('comments')"
135682
+ (notes)="applyMobileSheetTap('notes')"
135638
135683
  />
135639
135684
  }
135640
135685
  </div>
@@ -137941,4 +137986,4 @@ function cn(...values) {
137941
137986
  */
137942
137987
 
137943
137988
  export { CommentsPanelComponent as $, ALIGN_OPTIONS as A, AnimationPlaybackService as B, AutosaveRecoveryDialogComponent as C, AutosaveService as D, BroadcastDialogComponent as E, CHART_EDITOR_STYLES as F, CURSOR_PALETTE as G, CanvasFitService as H, ChartAxisOptionsComponent as I, ChartAxisStyleOptionsComponent as J, ChartComboTypeOptionsComponent as K, ChartDataEditorComponent as L, ChartDataLabelOptionsComponent as M, ChartDatapointMarkerOptionsComponent as N, ChartDatapointOptionsComponent as O, ChartDisplayOptionsComponent as P, ChartElementViewComponent as Q, ChartErrorBarOptionsComponent as R, ChartMarkerOptionsComponent as S, ChartPartSelectionService as T, ChartPrimitivesComponent as U, ChartRendererComponent as V, ChartTrendlineOptionsComponent as W, CollaborationCursorsComponent as X, CollaborationService as Y, ColorChangedImageComponent as Z, CommentMarkersOverlayComponent as _, ANIMATION_PRESET_CATEGORIES as a, InspectorPanelComponent as a$, CommentsService as a0, ComparePanelComponent as a1, ConnectorRendererComponent as a2, ConnectorTextOverlayComponent as a3, CustomShowsComponent as a4, DATA_TABLE_HEADER_H as a5, DATA_TABLE_KEY_W as a6, DATA_TABLE_PADDING as a7, DATA_TABLE_ROW_H as a8, DEFAULT_BOUNDS as a9, EditorToolbarComponent as aA, EffectsPanelComponent as aB, ElementRendererComponent as aC, EmbeddedFontsService as aD, EncryptedFileDialogComponent as aE, EquationEditorDialogComponent as aF, EquationRendererComponent as aG, EquationTemplateGalleryComponent as aH, ExportProgressModalComponent as aI, ExportService as aJ, FieldContextService as aK, FindBarComponent as aL, FindReplaceBarComponent as aM, FollowModeBarComponent as aN, FontEmbeddingListComponent as aO, FontEmbeddingPanelComponent as aP, GALLERY_THEME_PRESETS as aQ, GRIDLINE_COLOR as aR, GradientPickerComponent as aS, HANDOUT_OPTIONS as aT, HeaderFooterDialogComponent as aU, HyperlinkDialogComponent as aV, ImagePropertiesPanelComponent as aW, InkDrawingService as aX, InkRendererComponent as aY, InsertSmartArtDialogComponent as aZ, InspectorPaneHeaderComponent as a_, DEFAULT_BROADCAST_SERVER_URL as aa, DEFAULT_CANVAS_HEIGHT as ab, DEFAULT_CANVAS_WIDTH as ac, DEFAULT_COLOR_SCHEME as ad, DEFAULT_FILL_COLOR$1 as ae, DEFAULT_LAYOUT as af, DEFAULT_PALETTE$1 as ag, DEFAULT_PATTERN_FILL_PRESET as ah, DEFAULT_PRINT_SETTINGS as ai, DEFAULT_SLIDE_BACKGROUND as aj, DEFAULT_STROKE_COLOR as ak, DEFAULT_STYLE as al, DEFAULT_TABLE_ROW_HEIGHT as am, DEFAULT_TEXT_COLOR$1 as an, DEFAULT_VIEWER_PROFILE as ao, DIRECTIONAL_PRESETS as ap, DIRECTION_OPTIONS as aq, DocumentPropertiesCardComponent as ar, EMBEDDED_FONTS_STYLE_ID as as, EMPHASIS_PRESETS as at, ENTRANCE_PRESETS as au, TEMPLATES as av, EXIT_PRESETS as aw, EditorContextMenuComponent as ax, EditorHistory as ay, EditorStateService as az, AUDIENCE_HASH as b, RibbonComponent as b$, IsMobileService as b0, KeepAnnotationsDialogComponent as b1, LOCALE_CATALOG as b2, LONG_PRESS_DURATION_MS as b3, LONG_PRESS_MOVE_TOLERANCE_PX as b4, LoadContentService as b5, LocalPresencePublisher as b6, MAX_ZOOM_SCALE as b7, MIN_ZOOM_SCALE as b8, MOTION_PATH_COLUMNS as b9, PasswordStrengthMeterComponent as bA, PowerPointViewerComponent as bB, PresentToolbarAutoHide as bC, PresentationAnnotationOverlayComponent as bD, PresentationAnnotationsService as bE, PresentationOverlayComponent as bF, PresentationPropertiesPanelComponent as bG, PresentationSettingsCardComponent as bH, PresentationSubtitleBarComponent as bI, PresentationToolbarComponent as bJ, PresentationTransitionOverlayComponent as bK, PresenterViewComponent as bL, PresenterWindowService as bM, PrintDialogComponent as bN, PrintService as bO, PrintSettingsPanelComponent as bP, PropertiesDialogComponent as bQ, REPEAT_MODE_OPTIONS as bR, RESIZE_HANDLES as bS, RULER_FONT_SIZE as bT, RULER_THICKNESS as bU, ReadingViewOverlayComponent as bV, RemoteSelectionOverlayComponent as bW, RibbonAnimationGalleryComponent as bX, RibbonAnimationsSectionComponent as bY, RibbonArrangeSectionComponent as bZ, RibbonColorPopoverComponent as b_, MediaPreviewComponent as ba, MediaPropertiesPanelComponent as bb, MediaRendererComponent as bc, MediaTrimTimelineComponent as bd, MobileBottomBarComponent as be, MobileMenuSheetComponent as bf, MobilePresenterViewComponent as bg, MobileSheetComponent as bh, MobileSlidesSheetComponent as bi, MobileToolbarComponent as bj, ModalDialogComponent as bk, Model3DRendererComponent as bl, NotesHandoutCardComponent as bm, NotesPanelComponent as bn, NotesToolbarComponent as bo, OleRendererComponent as bp, OutlineViewOverlayComponent as bq, POWER_POINT_VIEWER_PROVIDERS as br, PPTX_OPEN_ACCEPT as bs, PRESENTATION_OPEN_EXTENSIONS as bt, PRESENTER_CHANNEL_NAME as bu, PRESENTER_MSG_ORIGIN as bv, PRESENTER_TIMER_SEGMENT_MS as bw, PX_PER_CM as bx, PX_PER_INCH as by, PasswordProtectionDialogComponent as bz, AUDIENCE_NONCE_KEY as c, TEXT_3D_TOP_BEVEL_KEYS as c$, RibbonDesignSectionComponent as c0, RibbonDrawSectionComponent as c1, RibbonDrawingGroupComponent as c2, RibbonEditingSectionComponent as c3, RibbonFileSectionComponent as c4, RibbonFontControlsComponent as c5, RibbonHomeSectionComponent as c6, RibbonHyperlinkButtonComponent as c7, RibbonInsertFieldsComponent as c8, RibbonInsertSectionComponent as c9, SettingsLanguageTabComponent as cA, ShareDialogComponent as cB, ShortcutPanelComponent as cC, ShowOptionsFieldsetComponent as cD, ShowSlidesFieldsetComponent as cE, SignatureStrippedDialogComponent as cF, SignaturesPanelComponent as cG, SignaturesService as cH, SlideBackgroundCardComponent as cI, SlideCanvasComponent as cJ, SlideDefaultInspectorComponent as cK, SlideDiffChangesComponent as cL, SlideDiffRowComponent as cM, SlideDiffThumbnailsComponent as cN, SlideSizeCardComponent as cO, SlideSorterOverlayComponent as cP, SlideThemeOverridePanelComponent as cQ, SlideTransitionCardComponent as cR, SlidesPanelComponent as cS, SmartArt3DRendererComponent as cT, SmartArt3DService as cU, SmartArtPreviewComponent as cV, SmartArtPropertiesComponent as cW, SmartArtRendererComponent as cX, StatusBarComponent as cY, TABLE_STRUCTURE_TOGGLES as cZ, TEXT_3D_BOTTOM_BEVEL_KEYS as c_, RibbonMotionPathGalleryComponent as ca, RibbonParagraphControlsComponent as cb, RibbonPrimaryRowComponent as cc, RibbonReviewSectionComponent as cd, RibbonShapeExtrasComponent as ce, RibbonSlideshowSectionComponent as cf, RibbonTransitionsSectionComponent as cg, RibbonViewSectionComponent as ch, RulerGuidesService as ci, SEQUENCE_OPTIONS as cj, SEVERITY_GROUPS as ck, SEVERITY_LABELS as cl, SHORTCUT_REFERENCE_ITEMS as cm, SLIDE_TRANSITION_KEYFRAMES as cn, DEFAULT_PALETTE as co, PALETTES$1 as cp, SMART_ART_COLOR_SCHEMES as cq, SMART_ART_STYLE_OPTIONS as cr, SUB_ITEM_LABEL as cs, SVG_WARP_PRESETS as ct, SWIPE_MAX_VERTICAL_PX as cu, SWIPE_THRESHOLD_PX as cv, SelectionPaneComponent as cw, SetUpSlideShowDialogComponent as cx, SettingsAppearanceTabComponent as cy, SettingsDialogComponent as cz, AVATAR_COLOR_SWATCHES as d, animationPresetLabelKey as d$, TEXT_DIRECTION_OPTIONS$1 as d0, THEME_CATALOG as d1, TIMING_CURVE_OPTIONS as d2, TRIGGER_OPTIONS as d3, TYPE_LABELS as d4, TableCellAdvancedFillComponent as d5, TableCellFormattingComponent as d6, TableDataEditorComponent as d7, TablePropertiesComponent as d8, TableRendererComponent as d9, ViewerFileIOService as dA, ViewerFindReplaceService as dB, ViewerFormatPainterService as dC, ViewerInspectorPanelService as dD, ViewerKeyboardService as dE, ViewerMobileSheetService as dF, ViewerPresentationModeService as dG, ViewerThemeGalleryService as dH, ViewerTouchGesturesService as dI, ViewerZoomService as dJ, WEBM_MIME_CANDIDATES as dK, WriteBackScheduler as dL, ZERO_LINE_COLOR as dM, ZoomNavigationService as dN, ZoomRendererComponent as dO, ZoomTargetService as dP, addCategory as dQ, addCommentToList as dR, addGradientStopPatch as dS, addItem as dT, addSeries as dU, addSubItem as dV, advanceStep as dW, affordanceElements as dX, aiToggleVisible as dY, alignPatch as dZ, animationFor as d_, TableResizeOverlayComponent as da, TableSelectionService as db, TagsCardComponent as dc, Text3DBevelSectionComponent as dd, Text3DPanelComponent as de, TextAdvancedPanelComponent as df, ThemeEditorFieldsComponent as dg, ThemeGalleryComponent as dh, ThemeSelectorCardComponent as di, TitleBarComponent as dj, TitleBarSearchComponent as dk, TransitionDirectionPickerComponent as dl, TransitionPreviewComponent as dm, VALIGN_OPTIONS as dn, VIEWER_THEME as dp, VersionHistoryPanelComponent as dq, ViewerCanvasEditingService as dr, ViewerCollabCursorService as ds, ViewerCollaborationSessionService as dt, ViewerCompareService as du, ViewerCustomShowsService as dv, ViewerDialogsService as dw, ViewerDocumentPropertiesService as dx, ViewerExportService as dy, ViewerExtraDialogsComponent as dz, AXIS_LABEL_COLOR as e, buildWaterfallViewModel as e$, annotationMapToInkInserts as e0, applyAcceptedDiff as e1, applyAnimationPreset as e2, applyFindReplacements as e3, applyFormatToElement as e4, applyMove as e5, applyResize as e6, asMediaElement as e7, assignUserColor as e8, attachShowVisibilityPause as e9, buildEquationSegment as eA, buildFallbackViewModel as eB, buildFontFaceRule as eC, buildGradientFillCss as eD, buildGridlinesAndLabels as eE, buildHyperlinkPatch as eF, buildInkContainerStyle as eG, buildInkStrokes as eH, buildLegend as eI, buildMarkTooltip as eJ, buildModel3DContainerStyle as eK, buildModel3DViewModel as eL, buildOleActionModel as eM, buildOleInfoRows as eN, buildPatternFillCss as eO, buildPrintHtmlDocument as eP, buildPropertiesPatch as eQ, buildRegionMapViewModel as eR, buildSaveSlides as eS, buildShareUrl as eT, buildSmartArtInsertElement as eU, buildSmartArtNodes as eV, buildStockViewModel as eW, buildSurfaceViewModel as eX, buildTableViewModel as eY, buildTreemapViewModel as eZ, buildTrimFragment as e_, attachTouchGestures as ea, axisTickValues as eb, beginNodeEdit as ec, bevelSizePatch as ed, boolFromEvent as ee, bringForward as ef, bringToFront as eg, buildBarActions as eh, buildBroadcastConfig as ei, buildBroadcastViewerUrl as ej, buildCategoryLabels as ek, buildCellParagraphs as el, buildChartViewModel as em, buildChatLogExport as en, buildChatLogMarkdown as eo, buildChromeStyle as ep, buildClearHyperlinkPatch as eq, buildClickGroups as er, buildColStyles as es, buildCollaborationConfig as et, buildComboViewModel as eu, buildCssGradientFromShapeStyle as ev, buildDuotoneFilter as ew, buildDuotoneFilterId as ex, buildEmbeddedFontStyles as ey, buildEquationElement as ez, AccessibilityPanelComponent as f, computeScatterXDomain as f$, buildZeroLine as f0, buildZoomContainerStyle as f1, buildZoomViewModel as f2, bulletIndentPx as f3, canAddTopLevelNode as f4, canGroupSelection as f5, canRemoveTopLevelNode as f6, canSetStrokeWidth as f7, canStartBroadcast as f8, canStartShare as f9, commitNodeText as fA, computeAlign as fB, computeAxisTitlePrimitives as fC, computeBarRects as fD, computeBubbleRadius as fE, computeCornerHandle as fF, computeDataTablePrimitives as fG, computeDistribute as fH, computeDrawingViewBox as fI, computeErrorBarPrimitives as fJ, computeFocusTargets as fK, computeHandleBoxes as fL, computeHandoutLayout as fM, computeIsMobile as fN, computeIsTablet as fO, computeLinePoints as fP, computeLinearRegression as fQ, computePageCount as fR, computePieLayout as fS, computePieSlicePath as fT, computePieSlices as fU, computePlotLayout as fV, computeRSquared as fW, computeRadarPoints as fX, computeResizeHandleBoxes as fY, computeRotateHandleBox as fZ, computeScatterDots as f_, canUngroupSelection as fa, canUseClipboard as fb, captionDisplayText as fc, cellRunStyle as fd, cellStyleToStyleMap as fe, cellTdStyle as ff, changeCountLabel as fg, changeIcon as fh, characterSpacingPatch as fi, chartPreserveAspectRatio as fj, checkFontAvailable as fk, clampCursorPosition as fl, clampGifDimensions as fm, clampIndex as fn, clampNotesFontSize as fo, clampScale as fp, clampStep as fq, clearAllLocalViewerData as fr, clearAudienceContent as fs, cn as ft, collectAccessibilityIssues as fu, collectElementText as fv, collectSlideText as fw, collectStoredChats as fx, collectUsedFontFamilies as fy, columnWidthStyle as fz, AccessibilityService as g, formatCursorLabel as g$, computeSelectionBoxes as g0, computeSingleSelected as g1, computeSlideIndices as g2, computeSnap as g3, computeStackedBarRects as g4, computeStackedValueRange as g5, computeTrendlinePrimitives as g6, computeValueRange as g7, convertOmmlToMathMl as g8, copyFormatFromElement as g9, durationOf as gA, effectsStateOf as gB, enableGlowPatch as gC, enableInnerShadowPatch as gD, enableOuterShadowPatch as gE, enableReflectionPatch as gF, enableSoftEdgePatch as gG, encodeGif as gH, endShowMediaCleanup as gI, estimatePageCount as gJ, exitPresentationFullscreen as gK, exportAiChatLogs as gL, extractPathPoints as gM, eyedropperAvailable as gN, fillColorOf$1 as gO, findInSlides as gP, findOwningSlideIndex as gQ, findSlideIndexByElementId as gR, firstVisibleIndex as gS, fitPolynomial as gT, fitZoom as gU, focusTargetChips as gV, fontMimeForFormat as gW, fontSizeOf as gX, forgetSessionDeck as gY, formatAxisValue as gZ, formatBytes as g_, countAccessibilityIssues as ga, countAnnotationStrokes as gb, createAngularAiBridge as gc, createCustomShow as gd, createSwipeDismissDrag as ge, createWebrtcBundle as gf, createWebsocketBundle as gg, cssObjectToStyleMap as gh, currentColorScheme as gi, currentLayout as gj, currentStyle as gk, defaultCssVars as gl, defaultRadius as gm, defaultThemeColors as gn, deleteElementsByIds as go, deleteVersion as gp, demoteNode as gq, deriveModel3DBlobUrl as gr, derivePresenceList as gs, describeSmartArtBounds as gt, disableGlowPatch as gu, disableInnerShadowPatch as gv, disableOuterShadowPatch as gw, disableReflectionPatch as gx, disableSoftEdgePatch as gy, duplicateElementById as gz, AccountPageComponent as h, isLegacyBinaryPresentation as h$, formatElapsed as h0, formatFileSize as h1, formatPropertyDate as h2, formatTime as h3, fpsToFrameIntervalMs as h4, generateBroadcastRoomId as h5, generateCommentId as h6, generateCustomShowId as h7, generatePressureCircles as h8, generateTicks as h9, getWarpCategory as hA, getWarpPath as hB, gradientStateFromStyle as hC, gradientStateOf as hD, gradientStatePatch as hE, gridColumns as hF, groupIssuesBySeverity as hG, hasAnimation as hH, hasCopyableFormat as hI, hasExistingLink as hJ, hasExitedFullscreen as hK, hasGradientFill as hL, hasPressureVariation as hM, hasVisibleSlideAfter as hN, headerLabel as hO, imageDimensions as hP, inkViewBox as hQ, insertTableElementColumn as hR, insertTableElementRow as hS, interpolateWidth as hT, isAudienceTab as hU, isBold as hV, isBrowserOpenableMime as hW, isChildNode as hX, isElementInteractive as hY, isInjectableUrl as hZ, isItalic as h_, getClrChangeParams as ha, getContainerStyle as hb, getDuotoneFilterDef as hc, getImageSrc as hd, getLocalStorageUsageSummary as he, getOleAriaLabel as hf, getOleBadgeLabel as hg, getOleDisplayName as hh, getOleDownloadFileName as hi, getOleTypeColor as hj, getOleTypeLabel as hk, getPasswordStrength as hl, getPatternSvg as hm, getPlaceholderStyle as hn, getVersions as ho, getResolvedShapeClipPath as hp, getResolvedShapeClipPathFor as hq, getSessionTabId as hr, getShapeFillStrokeStyle as hs, getSlideBackgroundStyle as ht, getSlideTransitionAnimations as hu, getSmartArtNodeBounds as hv, getSpeechRecognitionCtor as hw, getTextBlockStyle as hx, getTextWarp as hy, getTouchDistance as hz, ActionSettingsPanelComponent as i, partitionSlides as i$, isPpactionUrl as i0, isPresenterMessage as i1, isSigned as i2, isSupportedPresentationFile as i3, isTextElement as i4, isTwoTableFocus as i5, isUnderline as i6, isUrlSafe as i7, isValidRoomId as i8, isViewportBackgroundPressTarget as i9, narrowToRect as iA, newChartElement as iB, newEquationElement as iC, newPresetShapeElement as iD, newShapeElement as iE, newSmartArtElement as iF, newTableElement as iG, newTextElement as iH, nextVisibleIndex as iI, nodeBold as iJ, nodeEditBox as iK, nodeFillColor as iL, nodeFontColor as iM, nodeIdFromKey as iN, nodeItalic as iO, nodeStyle as iP, normalizeFontFormat as iQ, normalizeSlidesPerPage as iR, normalizeValue as iS, numFromEvent as iT, ommlToMathml as iU, ooxmlDashToCssBorderStyle as iV, openNativeEyeDropper as iW, overallStatus as iX, paletteColor as iY, parseAudienceNonce as iZ, parseNodeTextarea as i_, isZoomActivationKey as ia, issueTrackKey as ib, issueTypeLabel as ic, keyToLabel as id, lastVisibleIndex as ie, latexToMathml as ig, layoutConnectorPaints as ih, layoutNodeLabels as ii, linePointsToSvgString as ij, lineSpacingPatch as ik, loadAudienceContent as il, loadSessionDeck as im, mediaFallbackFor as io, mediaSurfaceFor as ip, mergeCaptionResults as iq, mergeDown as ir, mergeRight as is, mergeSelection as it, moveElementBy as iu, moveNodeDown as iv, moveNodeUp as iw, msToFrameDelayCs as ix, narrowToCircle as iy, narrowToPolygon as iz, AdvancedChartEditorComponent as j, rowStyle as j$, patchChartData as j0, patchChartStyle as j1, patchTableData as j2, patchTextStyle as j3, patternPresetOptions as j4, pendingElementStyles as j5, pickColorByClickFallback as j6, pickFile as j7, pickSupportedMimeType as j8, planGifFrames as j9, removeTableElementRow as jA, removeSeries as jB, renderToCanvas as jC, reorderAnimationDown as jD, reorderAnimationUp as jE, replaceInSlides as jF, replaceMatch as jG, requestPresentationFullscreen as jH, resizeElement as jI, resolveCaptionTracks as jJ, resolveChartKind as jK, resolveFontVariant as jL, resolveHyperlinkHref as jM, resolveInteractiveElementId as jN, resolveMediaSrc as jO, resolveOleType as jP, resolveParagraphBullet as jQ, resolvePresenterNotes as jR, resolveProfileInitial as jS, resolveRegionCode as jT, resolveSlideAutoAdvanceMs as jU, resolvePalette as jV, resolveThemeCatalogEntry as jW, resolveTransitionDuration as jX, restoreSessionDeck as jY, revealedElementStyles as jZ, routeOrthogonalConnector as j_, planVideoSegments as ja, pointsToSvgPathD as jb, presenceToCursors as jc, presentationBaseName as jd, presentationStageStyle as je, presenterTimerProgress as jf, presetByLayout as jg, presetsForCategory as jh, pressuresToWidths as ji, prevVisibleIndex as jj, projectDrawingShapes as jk, promoteNode as jl, provideViewerTheme as jm, radarAngle as jn, radarRingPoints as jo, readAsDataUrl as jp, recordWebm as jq, registerCrossSlideAudio as jr, rememberSessionDeck as js, removeAnimation as jt, removeCategory as ju, removeTableElementColumn as jv, removeCommentFromList as jw, removeElementAnimation as jx, removeGradientStopPatch as jy, removeNode as jz, AiChangeOverlayComponent as k, shouldUseSvgWarp as k$, rulerDragToGuidePosition as k0, rulerHighlight as k1, rulerStripTicks as k2, sampleColorFromSlide as k3, sanitizeColor as k4, sanitizeSlideIndex as k5, sanitizeUserName as k6, saveViewerProfile as k7, savedPresentationFileName as k8, scanAvailableFonts as k9, setDelay as kA, setDirection as kB, setDuration as kC, setElementPosition as kD, setGridlineStyle as kE, setLayout as kF, setLegend as kG, setNodeStyle as kH, setNodeText as kI, setRepeatCount as kJ, setRepeatMode as kK, setSequence as kL, setSeriesChartType as kM, setSeriesColor as kN, setSeriesErrorBars as kO, setSeriesMarker as kP, setSeriesName as kQ, setSeriesTrendline as kR, setSeriesValue as kS, setStyle as kT, setTimingCurve as kU, setTitle as kV, setTrigger as kW, setTriggerShapeId as kX, shapeStylePatch$1 as kY, sheetAfterNavigate as kZ, shouldBlockClickAdvance as k_, searchSlides as ka, seedBroadcastFields as kb, seedHyperlinkDraft as kc, seedPropertiesDraft as kd, seedShareFields as ke, segmentFrameCount as kf, selectValue$2 as kg, sendBackward as kh, sendToBack as ki, sequentialColorScale as kj, serializeWriteBack as kk, seriesColor as kl, setAnimationEmphasis as km, setAnimationEntrance as kn, setAnimationExit as ko, setAxis as kp, setAxisLogScale as kq, setAxisTitleStyle as kr, setCategoryLabel as ks, setCellText as kt, setColorScheme as ku, setDataLabels as kv, setDataPointExplosion as kw, setDataPointFill as kx, setDataPointLabel as ky, setDataPointMarker as kz, AiChatPanelComponent as l, showDirectionPicker as l0, showsTemplateAffordance as l1, signatureCountLabel as l2, signatureKey as l3, signatureTimestamp as l4, signerName as l5, statusLabel as l6, slideNumberOf as l7, slidesWithReappliedLayout as l8, smartArtNodes as l9, toggleSheet as lA, topLevelNodeCount as lB, transformSelectedTextCase as lC, translationsEn as lD, updateElementById as lE, updateGlowPatch as lF, updateGradientStopPatch as lG, updateInnerShadowPatch as lH, updateOuterShadowPatch as lI, updateReflectionPatch as lJ, vAlignPatch as lK, validatePassword as lL, validatePrintSettings as lM, validateRoomId as lN, valueToY as lO, vermilionDarkColors as lP, vermilionDarkTheme as lQ, vermilionLightColors as lR, vermilionLightTheme as lS, vermilionRadius as lT, waypointsToPathD as lU, worstStatus as lV, zoomTargetSlideIndex as lW, paletteColour as la, snapToGridStep as lb, splitCursorCell as lc, splitMergedCell as ld, statusKind as le, statusLabel$1 as lf, storeAudienceContent as lg, stringFromEvent$5 as lh, strokeColorOf as li, strokeToInkElement as lj, strokeWidthOf as lk, styleShadowFilter as ll, textAdvancedPatch as lm, textAdvancedStateFromStyle as ln, textAdvancedStateOf as lo, textColorOf as lp, textDirectionPatch as lq, textStyleOf as lr, textStylePatch as ls, themeStyle as lt, themeToCssVars as lu, thumbnailHeight as lv, thumbnailZoom as lw, toggleCommentResolvedInList as lx, toggleNodeBold as ly, toggleNodeItalic as lz, AiChatService as m, AiComposerComponent as n, AiFocusBarComponent as o, AiFocusHighlightOverlayComponent as p, AiHistoryMenuComponent as q, AiHistoryService as r, AiMessageListComponent as s, toChatSummary as t, AiPanelStore as u, AiProposalCardComponent as v, AiSettingsSectionComponent as w, AiToolCallCardComponent as x, AnimationAuthorPanelComponent as y, AnimationPanelComponent as z };
137944
- //# sourceMappingURL=pptx-angular-viewer-pptx-angular-viewer-BLdLZTxr.mjs.map
137989
+ //# sourceMappingURL=pptx-angular-viewer-pptx-angular-viewer-DrfIMkrX.mjs.map