pptx-angular-viewer 2.18.0 → 2.18.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.
- package/CHANGELOG.md +23 -0
- package/fesm2022/{pptx-angular-viewer-chat-history-idb-AerX-Co2.mjs → pptx-angular-viewer-chat-history-idb-C0GIYHCu.mjs} +2 -2
- package/fesm2022/{pptx-angular-viewer-chat-history-idb-AerX-Co2.mjs.map → pptx-angular-viewer-chat-history-idb-C0GIYHCu.mjs.map} +1 -1
- package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-mSstONYy.mjs → pptx-angular-viewer-pptx-angular-viewer-h8WcCkyN.mjs} +264 -58
- package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-mSstONYy.mjs.map → pptx-angular-viewer-pptx-angular-viewer-h8WcCkyN.mjs.map} +1 -1
- package/fesm2022/pptx-angular-viewer.mjs +1 -1
- package/package.json +1 -1
- package/types/pptx-angular-viewer.d.ts +11 -1
- package/types/pptx-angular-viewer.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,29 @@ A release listed with no entries carried no Conventional Commit in this package'
|
|
|
7
7
|
scope: scripts/release-plan.mjs re-releases a package whenever any of its files
|
|
8
8
|
change, not only on conventional ones.
|
|
9
9
|
|
|
10
|
+
## [2.18.0](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-angular-viewer@2.18.0) - 2026-08-13
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **shared:** Own the decisions the bindings were each making themselves (by @ChristopherVR) ([5421272](https://github.com/ChristopherVR/pptx-viewer/commit/5421272a531536ab3b494e5df91068c98326e6ed))
|
|
15
|
+
- **shared:** Model hyperlinks and equations, and own the group rules (by @ChristopherVR) ([a6bf4c1](https://github.com/ChristopherVR/pptx-viewer/commit/a6bf4c15ab3b49a44a2d24e2122ddbe3cdd3b8ed))
|
|
16
|
+
- **shared:** Own the decisions the bindings were still making apart (by @ChristopherVR) ([2bee9c5](https://github.com/ChristopherVR/pptx-viewer/commit/2bee9c5c1ec731d3f7097983a0c9c739ce95f5a4))
|
|
17
|
+
- **shared:** Take the last six chart kinds and the autosave policy (by @ChristopherVR) ([efe8438](https://github.com/ChristopherVR/pptx-viewer/commit/efe84381688dfb5f2a44a2990e76aa09b65e5fba))
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- **core:** Repair save-pipeline corruption found by the OpenXML parity audit (by @ChristopherVR) ([554006e](https://github.com/ChristopherVR/pptx-viewer/commit/554006e004b6212f5561eb19954bbcff17bbdf7f))
|
|
22
|
+
- **core:** Close the round-trip defects the corpus harness exposed (by @ChristopherVR) ([2011c66](https://github.com/ChristopherVR/pptx-viewer/commit/2011c664049bfd580801529c3337ba65bd8d3f13))
|
|
23
|
+
- **angular:** Bind the SmartArt descriptors and route master edits (by @ChristopherVR) ([3ccdef6](https://github.com/ChristopherVR/pptx-viewer/commit/3ccdef643aa73ec6619d258a0a31564540043bb0))
|
|
24
|
+
- **core:** Stop save rewriting what the author never wrote (by @ChristopherVR) ([6fb2767](https://github.com/ChristopherVR/pptx-viewer/commit/6fb2767583de0e82747c3700e3311869dd693a1d))
|
|
25
|
+
- **angular,svelte,vanilla:** Close the remaining binding gaps (by @ChristopherVR) ([a7c377c](https://github.com/ChristopherVR/pptx-viewer/commit/a7c377c9d40e174434e6d7801cfc72d0e871a37f))
|
|
26
|
+
- **core:** Repair the XML plumbing four separate defects were hiding behind (by @ChristopherVR) ([8beb664](https://github.com/ChristopherVR/pptx-viewer/commit/8beb66410975d492118120515bbae6cd070ef792))
|
|
27
|
+
- **bindings:** Stop read-only surfaces clobbering live state (by @ChristopherVR) ([e820984](https://github.com/ChristopherVR/pptx-viewer/commit/e8209842fad62819df1530944124f0bfc33e32ec))
|
|
28
|
+
|
|
29
|
+
### Refactor
|
|
30
|
+
|
|
31
|
+
- **angular:** Retire hand-ported logic and wire the missing renderers (by @ChristopherVR) ([d9e629e](https://github.com/ChristopherVR/pptx-viewer/commit/d9e629e283a5e8843139c88afb60b90523628f15))
|
|
32
|
+
|
|
10
33
|
## [2.17.9](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-angular-viewer@2.17.9) - 2026-08-11
|
|
11
34
|
|
|
12
35
|
### Bug Fixes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as toChatSummary } from './pptx-angular-viewer-pptx-angular-viewer-
|
|
1
|
+
import { t as toChatSummary } from './pptx-angular-viewer-pptx-angular-viewer-h8WcCkyN.mjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* IndexedDB backend for {@link createChatHistoryStore}. Kept in its own module
|
|
@@ -103,4 +103,4 @@ function createIdbBackend(db) {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
export { CHAT_STORE, createIdbBackend, openChatDb };
|
|
106
|
-
//# sourceMappingURL=pptx-angular-viewer-chat-history-idb-
|
|
106
|
+
//# sourceMappingURL=pptx-angular-viewer-chat-history-idb-C0GIYHCu.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pptx-angular-viewer-chat-history-idb-
|
|
1
|
+
{"version":3,"file":"pptx-angular-viewer-chat-history-idb-C0GIYHCu.mjs","sources":["../../src/internal/shared-src/ai/chat-history-idb.ts"],"sourcesContent":["/**\n * IndexedDB backend for {@link createChatHistoryStore}. Kept in its own module\n * so the localStorage fallback and the public factory stay within the per-file\n * size budget. Uses the raw IndexedDB API with tiny promise wrappers so no new\n * runtime dependency is pulled in.\n *\n * Every browser global is touched lazily from inside a function, never at module\n * load, so importing this file in a non-DOM environment (Node, SSR) never throws.\n */\n\nimport type { ChatBackend, PptxAiChatSummary, PptxAiStoredChat } from './chat-history-store';\nimport { toChatSummary } from './chat-history-store';\n\n/** Object store holding one record per chat, keyed by `id`. */\nexport const CHAT_STORE = 'chats';\n/** Index over the optional `deckId` key path, used for per-deck filtering. */\nconst DECK_INDEX = 'deckId';\n\n/** Resolve an `IDBRequest` to a promise. */\nfunction requestToPromise<T>(request: IDBRequest<T>): Promise<T> {\n\treturn new Promise<T>((resolve, reject) => {\n\t\trequest.onsuccess = () => resolve(request.result);\n\t\trequest.onerror = () => reject(request.error ?? new Error('IndexedDB request failed.'));\n\t});\n}\n\n/** Resolve when a transaction commits (or reject on error/abort). */\nfunction transactionDone(tx: IDBTransaction): Promise<void> {\n\treturn new Promise<void>((resolve, reject) => {\n\t\ttx.oncomplete = () => resolve();\n\t\ttx.onerror = () => reject(tx.error ?? new Error('IndexedDB transaction failed.'));\n\t\ttx.onabort = () => reject(tx.error ?? new Error('IndexedDB transaction aborted.'));\n\t});\n}\n\n/**\n * Open (and if needed create/upgrade) the chat database. Throws when there is no\n * `indexedDB` global so the caller can transparently fall back to localStorage.\n */\nexport function openChatDb(dbName: string): Promise<IDBDatabase> {\n\tconst idb = typeof indexedDB !== 'undefined' ? indexedDB : undefined;\n\tif (!idb) {\n\t\tthrow new Error('IndexedDB is not available in this environment.');\n\t}\n\treturn new Promise<IDBDatabase>((resolve, reject) => {\n\t\tconst open = idb.open(dbName, 1);\n\t\topen.onupgradeneeded = () => {\n\t\t\tconst db = open.result;\n\t\t\tif (!db.objectStoreNames.contains(CHAT_STORE)) {\n\t\t\t\tconst store = db.createObjectStore(CHAT_STORE, { keyPath: 'id' });\n\t\t\t\tstore.createIndex(DECK_INDEX, 'deckId', { unique: false });\n\t\t\t}\n\t\t};\n\t\topen.onsuccess = () => resolve(open.result);\n\t\topen.onerror = () => reject(open.error ?? new Error('Failed to open IndexedDB.'));\n\t\topen.onblocked = () => reject(new Error('IndexedDB open blocked by another connection.'));\n\t});\n}\n\n/** Read every stored chat (newest-first ordering is applied by the caller). */\nasync function readAll(db: IDBDatabase, deckId: string | undefined): Promise<PptxAiStoredChat[]> {\n\tconst tx = db.transaction(CHAT_STORE, 'readonly');\n\tconst store = tx.objectStore(CHAT_STORE);\n\tconst source =\n\t\tdeckId === undefined\n\t\t\t? store.getAll()\n\t\t\t: store.index(DECK_INDEX).getAll(IDBKeyRange.only(deckId));\n\tconst rows = await requestToPromise<PptxAiStoredChat[]>(source);\n\tawait transactionDone(tx);\n\treturn rows;\n}\n\n/** Create an IndexedDB-backed {@link ChatBackend}. */\nexport function createIdbBackend(db: IDBDatabase): ChatBackend {\n\treturn {\n\t\tasync list(deckId: string | undefined): Promise<PptxAiChatSummary[]> {\n\t\t\tconst rows = await readAll(db, deckId);\n\t\t\treturn rows.map(toChatSummary).sort((a, b) => b.updatedAt - a.updatedAt);\n\t\t},\n\t\tasync load(id: string): Promise<PptxAiStoredChat | null> {\n\t\t\tconst tx = db.transaction(CHAT_STORE, 'readonly');\n\t\t\tconst row = await requestToPromise<PptxAiStoredChat | undefined>(\n\t\t\t\ttx.objectStore(CHAT_STORE).get(id),\n\t\t\t);\n\t\t\tawait transactionDone(tx);\n\t\t\treturn row ?? null;\n\t\t},\n\t\tasync save(chat: PptxAiStoredChat): Promise<void> {\n\t\t\tconst tx = db.transaction(CHAT_STORE, 'readwrite');\n\t\t\ttx.objectStore(CHAT_STORE).put(chat);\n\t\t\tawait transactionDone(tx);\n\t\t},\n\t\tasync remove(id: string): Promise<void> {\n\t\t\tconst tx = db.transaction(CHAT_STORE, 'readwrite');\n\t\t\ttx.objectStore(CHAT_STORE).delete(id);\n\t\t\tawait transactionDone(tx);\n\t\t},\n\t\tasync clear(deckId: string | undefined): Promise<void> {\n\t\t\tconst tx = db.transaction(CHAT_STORE, 'readwrite');\n\t\t\tconst store = tx.objectStore(CHAT_STORE);\n\t\t\tif (deckId === undefined) {\n\t\t\t\tstore.clear();\n\t\t\t} else {\n\t\t\t\tconst ids = await requestToPromise<IDBValidKey[]>(\n\t\t\t\t\tstore.index(DECK_INDEX).getAllKeys(IDBKeyRange.only(deckId)),\n\t\t\t\t);\n\t\t\t\tfor (const id of ids) {\n\t\t\t\t\tstore.delete(id);\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait transactionDone(tx);\n\t\t},\n\t};\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -23988,6 +23988,70 @@ function tableCellPointerIntent(input) {
|
|
|
23988
23988
|
return 'anchor';
|
|
23989
23989
|
}
|
|
23990
23990
|
|
|
23991
|
+
/**
|
|
23992
|
+
* Replace one cell's plain text, DROPPING the per-run model that described the
|
|
23993
|
+
* text it used to hold.
|
|
23994
|
+
*
|
|
23995
|
+
* `PptxTableCell` carries the same content twice: `text`, a flat `\n`-joined
|
|
23996
|
+
* string, and `textRuns`, the styled run sequence core parses out of the cell's
|
|
23997
|
+
* `a:txBody`. Every binding's table renderer paints `textRuns` when it is
|
|
23998
|
+
* present and only falls back to `text` when it is not, so spreading a cell and
|
|
23999
|
+
* overwriting `text` alone leaves the OLD wording painted: the edit lands in the
|
|
24000
|
+
* model, `updateCellTextInRawXml` lands it in the markup, and the canvas keeps
|
|
24001
|
+
* showing what was there before. That is precisely what `desktop-manipulation`
|
|
24002
|
+
* and `mobile-table` caught in four of the five bindings; Vanilla passed only
|
|
24003
|
+
* because its editor had spelled out `textRuns: undefined` locally, which is the
|
|
24004
|
+
* usual signal that a shared decision was missing.
|
|
24005
|
+
*
|
|
24006
|
+
* Dropping the runs rather than rebuilding them is also what the markup does:
|
|
24007
|
+
* `rebuildCellTextBody` collapses the cell to a SINGLE run carrying the first
|
|
24008
|
+
* run's `a:rPr`, and `PptxTableCell.style` is that same first-run style, so the
|
|
24009
|
+
* flat-text fallback and the rewritten `a:txBody` paint the same thing.
|
|
24010
|
+
*
|
|
24011
|
+
* @param cell - The cell to re-text (not mutated).
|
|
24012
|
+
* @param text - New plain-text content.
|
|
24013
|
+
* @returns A new cell holding `text` and no stale run model.
|
|
24014
|
+
*/
|
|
24015
|
+
function withCellText(cell, text) {
|
|
24016
|
+
const next = { ...cell, text };
|
|
24017
|
+
delete next.textRuns;
|
|
24018
|
+
return next;
|
|
24019
|
+
}
|
|
24020
|
+
/**
|
|
24021
|
+
* Return a new `TablePptxElement` with the text of a single cell replaced.
|
|
24022
|
+
*
|
|
24023
|
+
* The element is not mutated: the affected row and cell are shallow-cloned and
|
|
24024
|
+
* every other row/cell is reused by reference. Returns the original element
|
|
24025
|
+
* unchanged when it carries no `tableData`.
|
|
24026
|
+
*
|
|
24027
|
+
* @param element - The source table element (not mutated).
|
|
24028
|
+
* @param rowIndex - Zero-based row index of the cell.
|
|
24029
|
+
* @param colIndex - Zero-based column index of the cell.
|
|
24030
|
+
* @param text - New plain-text content for the cell.
|
|
24031
|
+
* @returns A new `TablePptxElement` with the cell text applied.
|
|
24032
|
+
*
|
|
24033
|
+
* @example
|
|
24034
|
+
* ```ts
|
|
24035
|
+
* const updated = setCellText(el, 0, 1, "Revenue");
|
|
24036
|
+
* ```
|
|
24037
|
+
*/
|
|
24038
|
+
function setCellText(element, rowIndex, colIndex, text) {
|
|
24039
|
+
const tableData = element.tableData;
|
|
24040
|
+
if (!tableData) {
|
|
24041
|
+
return element;
|
|
24042
|
+
}
|
|
24043
|
+
const rows = tableData.rows.map((row, ri) => {
|
|
24044
|
+
if (ri !== rowIndex) {
|
|
24045
|
+
return row;
|
|
24046
|
+
}
|
|
24047
|
+
return {
|
|
24048
|
+
...row,
|
|
24049
|
+
cells: row.cells.map((cell, ci) => (ci === colIndex ? withCellText(cell, text) : cell)),
|
|
24050
|
+
};
|
|
24051
|
+
});
|
|
24052
|
+
return { ...element, tableData: { ...tableData, rows } };
|
|
24053
|
+
}
|
|
24054
|
+
|
|
23991
24055
|
// ---------------------------------------------------------------------------
|
|
23992
24056
|
// Rect helpers
|
|
23993
24057
|
// ---------------------------------------------------------------------------
|
|
@@ -24195,11 +24259,15 @@ function mergeCells(cells, tableData) {
|
|
|
24195
24259
|
if (ci < rect.startCol || ci > rect.endCol) {
|
|
24196
24260
|
return cell;
|
|
24197
24261
|
}
|
|
24262
|
+
// Every branch below re-texts the cell, so each goes through
|
|
24263
|
+
// `withCellText`: the anchor takes the CONCATENATION of the group and
|
|
24264
|
+
// the absorbed cells are emptied, and a cell that kept the `textRuns`
|
|
24265
|
+
// describing its old content would paint that content instead (the
|
|
24266
|
+
// renderers prefer the run model over the flat string).
|
|
24198
24267
|
// Top-left anchor cell
|
|
24199
24268
|
if (ri === rect.startRow && ci === rect.startCol) {
|
|
24200
24269
|
return {
|
|
24201
|
-
...cell,
|
|
24202
|
-
text: combinedText,
|
|
24270
|
+
...withCellText(cell, combinedText),
|
|
24203
24271
|
gridSpan: colCount > 1 ? colCount : undefined,
|
|
24204
24272
|
rowSpan: rowCount > 1 ? rowCount : undefined,
|
|
24205
24273
|
hMerge: undefined,
|
|
@@ -24209,8 +24277,7 @@ function mergeCells(cells, tableData) {
|
|
|
24209
24277
|
// Same row as anchor, different column → hMerge
|
|
24210
24278
|
if (ri === rect.startRow) {
|
|
24211
24279
|
return {
|
|
24212
|
-
...cell,
|
|
24213
|
-
text: '',
|
|
24280
|
+
...withCellText(cell, ''),
|
|
24214
24281
|
hMerge: true,
|
|
24215
24282
|
vMerge: undefined,
|
|
24216
24283
|
gridSpan: undefined,
|
|
@@ -24220,8 +24287,7 @@ function mergeCells(cells, tableData) {
|
|
|
24220
24287
|
// Different row, same column as anchor → vMerge
|
|
24221
24288
|
if (ci === rect.startCol) {
|
|
24222
24289
|
return {
|
|
24223
|
-
...cell,
|
|
24224
|
-
text: '',
|
|
24290
|
+
...withCellText(cell, ''),
|
|
24225
24291
|
vMerge: true,
|
|
24226
24292
|
hMerge: undefined,
|
|
24227
24293
|
gridSpan: undefined,
|
|
@@ -24231,8 +24297,7 @@ function mergeCells(cells, tableData) {
|
|
|
24231
24297
|
// Interior cell (both hMerge and vMerge apply, but OpenXML uses vMerge for rows
|
|
24232
24298
|
// below the first row and hMerge for columns after the first column in that row)
|
|
24233
24299
|
return {
|
|
24234
|
-
...cell,
|
|
24235
|
-
text: '',
|
|
24300
|
+
...withCellText(cell, ''),
|
|
24236
24301
|
hMerge: true,
|
|
24237
24302
|
vMerge: true,
|
|
24238
24303
|
gridSpan: undefined,
|
|
@@ -24599,41 +24664,6 @@ function deleteTableColumn(tableData, colIdx) {
|
|
|
24599
24664
|
return { ...tableData, rows: newRows, columnWidths: newWidths };
|
|
24600
24665
|
}
|
|
24601
24666
|
|
|
24602
|
-
/**
|
|
24603
|
-
* Return a new `TablePptxElement` with the text of a single cell replaced.
|
|
24604
|
-
*
|
|
24605
|
-
* The element is not mutated: the affected row and cell are shallow-cloned and
|
|
24606
|
-
* every other row/cell is reused by reference. Returns the original element
|
|
24607
|
-
* unchanged when it carries no `tableData`.
|
|
24608
|
-
*
|
|
24609
|
-
* @param element - The source table element (not mutated).
|
|
24610
|
-
* @param rowIndex - Zero-based row index of the cell.
|
|
24611
|
-
* @param colIndex - Zero-based column index of the cell.
|
|
24612
|
-
* @param text - New plain-text content for the cell.
|
|
24613
|
-
* @returns A new `TablePptxElement` with the cell text applied.
|
|
24614
|
-
*
|
|
24615
|
-
* @example
|
|
24616
|
-
* ```ts
|
|
24617
|
-
* const updated = setCellText(el, 0, 1, "Revenue");
|
|
24618
|
-
* ```
|
|
24619
|
-
*/
|
|
24620
|
-
function setCellText(element, rowIndex, colIndex, text) {
|
|
24621
|
-
const tableData = element.tableData;
|
|
24622
|
-
if (!tableData) {
|
|
24623
|
-
return element;
|
|
24624
|
-
}
|
|
24625
|
-
const rows = tableData.rows.map((row, ri) => {
|
|
24626
|
-
if (ri !== rowIndex) {
|
|
24627
|
-
return row;
|
|
24628
|
-
}
|
|
24629
|
-
return {
|
|
24630
|
-
...row,
|
|
24631
|
-
cells: row.cells.map((cell, ci) => (ci === colIndex ? { ...cell, text } : cell)),
|
|
24632
|
-
};
|
|
24633
|
-
});
|
|
24634
|
-
return { ...element, tableData: { ...tableData, rows } };
|
|
24635
|
-
}
|
|
24636
|
-
|
|
24637
24667
|
/**
|
|
24638
24668
|
* Build the render model for a table element's inspector data grid.
|
|
24639
24669
|
*
|
|
@@ -35387,6 +35417,39 @@ function hollowTextFillStyle(s, painted = {}) {
|
|
|
35387
35417
|
}
|
|
35388
35418
|
return hollow;
|
|
35389
35419
|
}
|
|
35420
|
+
/**
|
|
35421
|
+
* The decoration properties a NESTED span inside a run has to repeat.
|
|
35422
|
+
*
|
|
35423
|
+
* `text-decoration-line` and its colour / style / thickness companions do not
|
|
35424
|
+
* inherit: an ancestor's underline is *drawn through* its inline descendants,
|
|
35425
|
+
* but each descendant still computes `none` of its own. Four bindings never
|
|
35426
|
+
* notice, because shared's per-word split (`splitStyledRun`) clones the whole
|
|
35427
|
+
* run style onto every piece, so the element that directly parents the text
|
|
35428
|
+
* carries the underline. React renders one span per run and nests its per-word
|
|
35429
|
+
* metric pieces and per-script font spans INSIDE it, so the text's own parent
|
|
35430
|
+
* declared no decoration and a hyperlink (underlined by PowerPoint's default,
|
|
35431
|
+
* see {@link segmentStyleToCss}) reported `text-decoration-line: none` where
|
|
35432
|
+
* the other four reported `underline`.
|
|
35433
|
+
*
|
|
35434
|
+
* @returns The decoration subset to merge onto a nested span, or `undefined`
|
|
35435
|
+
* when the run carries no decoration and the span needs nothing.
|
|
35436
|
+
*/
|
|
35437
|
+
function nestedTextDecorationStyle(style) {
|
|
35438
|
+
const nested = {};
|
|
35439
|
+
for (const key of [
|
|
35440
|
+
'textDecoration',
|
|
35441
|
+
'textDecorationLine',
|
|
35442
|
+
'textDecorationColor',
|
|
35443
|
+
'textDecorationStyle',
|
|
35444
|
+
'textDecorationThickness',
|
|
35445
|
+
]) {
|
|
35446
|
+
const value = style[key];
|
|
35447
|
+
if (value !== undefined) {
|
|
35448
|
+
nested[key] = value;
|
|
35449
|
+
}
|
|
35450
|
+
}
|
|
35451
|
+
return Object.keys(nested).length > 0 ? nested : undefined;
|
|
35452
|
+
}
|
|
35390
35453
|
function segmentStyleToCss(seg, fontScale = 1, context = {}) {
|
|
35391
35454
|
const s = seg.style ?? {};
|
|
35392
35455
|
const style = {};
|
|
@@ -36232,6 +36295,16 @@ function getElementMorphName(element) {
|
|
|
36232
36295
|
* counterpart stay whole and dissolve as one object, and ordinary grouped
|
|
36233
36296
|
* artwork keeps animating as a single unit exactly as before.
|
|
36234
36297
|
*
|
|
36298
|
+
* "Level" means a level the two slides AGREE on. Real decks wrap the same cast
|
|
36299
|
+
* differently from slide to slide, and the loader used to hide it by flattening
|
|
36300
|
+
* a nested `p:grpSp` into its parent's child list; it no longer does, because
|
|
36301
|
+
* the wrapper's name, fill, locks and animation identity have to survive a
|
|
36302
|
+
* round-trip. A wrapper the counterpart has no group for is therefore taken out
|
|
36303
|
+
* of the way when, and only when, that is what stops the two casts lining up
|
|
36304
|
+
* ({@link expandUnpairedWrappers}); a wrapper both slides have is a real level
|
|
36305
|
+
* and is descended into on its own correspondence, `!!` name or not
|
|
36306
|
+
* ({@link flattenMorphLevel}).
|
|
36307
|
+
*
|
|
36235
36308
|
* Decomposed children are returned with ABSOLUTE slide coordinates, because
|
|
36236
36309
|
* that is the space every downstream geometry calculation (deltas, proximity)
|
|
36237
36310
|
* works in. A binding renders group children as absolutely positioned boxes
|
|
@@ -36379,6 +36452,69 @@ function correspondingChildren(a, b) {
|
|
|
36379
36452
|
}
|
|
36380
36453
|
return paired;
|
|
36381
36454
|
}
|
|
36455
|
+
/**
|
|
36456
|
+
* Replace every group in `children` that `counterpart` has no group to pair
|
|
36457
|
+
* with by its OWN children, offset into the parent's space (recursively).
|
|
36458
|
+
*
|
|
36459
|
+
* Two slides can express the same cast with different WRAPPING. In the issue
|
|
36460
|
+
* #131 deck the hub-adjacent topic slide keeps the panel's disc, button and
|
|
36461
|
+
* three paragraphs as five children of `!!Circle`, while the next topic slide
|
|
36462
|
+
* wraps the three paragraphs in a plain `Group 3` inside the same `!!Circle`:
|
|
36463
|
+
* five objects against three. That wrapper is not an object either slide draws,
|
|
36464
|
+
* it is authoring debris, and PowerPoint carries the disc through the morph
|
|
36465
|
+
* regardless (measured: the disc's centre pixel holds RGB 39,40,42 for the
|
|
36466
|
+
* whole of 4 -> 5, where an unpaired dissolve shows the artwork behind it).
|
|
36467
|
+
*
|
|
36468
|
+
* The loader used to hide this by flattening a nested `p:grpSp` into its
|
|
36469
|
+
* parent's child list, so a morph never saw one. It no longer does - the
|
|
36470
|
+
* wrapper's name, fill, locks and animation identity are real and have to
|
|
36471
|
+
* survive a round-trip - so the morph has to see past the wrapper itself.
|
|
36472
|
+
*
|
|
36473
|
+
* Only a wrapper with NO counterpart group is expanded, and only as a fallback
|
|
36474
|
+
* (see {@link correspondingCast}): a nested group the other slide also has is a
|
|
36475
|
+
* real level of the tree and pairs with its own twin.
|
|
36476
|
+
*/
|
|
36477
|
+
function expandUnpairedWrappers(children, counterpart) {
|
|
36478
|
+
let expanded = false;
|
|
36479
|
+
const out = [];
|
|
36480
|
+
for (const child of children) {
|
|
36481
|
+
const nested = groupChildren(child);
|
|
36482
|
+
if (nested && !correspondingGroup(child, counterpart)) {
|
|
36483
|
+
expanded = true;
|
|
36484
|
+
for (const leaf of expandUnpairedWrappers(nested, counterpart) ?? nested) {
|
|
36485
|
+
out.push(toAbsolute(leaf, child.x, child.y));
|
|
36486
|
+
}
|
|
36487
|
+
continue;
|
|
36488
|
+
}
|
|
36489
|
+
out.push(child);
|
|
36490
|
+
}
|
|
36491
|
+
return expanded ? out : undefined;
|
|
36492
|
+
}
|
|
36493
|
+
/**
|
|
36494
|
+
* The correspondence between two paired groups' contents, or `undefined` when
|
|
36495
|
+
* they hold different casts and so must dissolve as whole objects.
|
|
36496
|
+
*
|
|
36497
|
+
* Tried as authored first, so a group that lines up level for level keeps its
|
|
36498
|
+
* levels: a nested group facing a flat shape of the same box is one object
|
|
36499
|
+
* against one object and stays whole. Only when the two casts do NOT line up is
|
|
36500
|
+
* an unpaired wrapper taken out of the way ({@link expandUnpairedWrappers}),
|
|
36501
|
+
* which is the one case where it can be the wrapper that is in the way.
|
|
36502
|
+
*/
|
|
36503
|
+
function correspondingCast(children, twinChildren) {
|
|
36504
|
+
const direct = correspondingChildren(children, twinChildren);
|
|
36505
|
+
if (direct) {
|
|
36506
|
+
return { from: [...children], to: [...twinChildren], paired: direct };
|
|
36507
|
+
}
|
|
36508
|
+
const expandedFrom = expandUnpairedWrappers(children, twinChildren);
|
|
36509
|
+
const expandedTo = expandUnpairedWrappers(twinChildren, children);
|
|
36510
|
+
if (!expandedFrom && !expandedTo) {
|
|
36511
|
+
return undefined;
|
|
36512
|
+
}
|
|
36513
|
+
const from = expandedFrom ?? [...children];
|
|
36514
|
+
const to = expandedTo ?? [...twinChildren];
|
|
36515
|
+
const paired = correspondingChildren(from, to);
|
|
36516
|
+
return paired ? { from, to, paired } : undefined;
|
|
36517
|
+
}
|
|
36382
36518
|
/**
|
|
36383
36519
|
* The elements of `elements` that a morph should treat as individual units,
|
|
36384
36520
|
* given the `counterpart` slide's elements at the same level of the tree.
|
|
@@ -36387,18 +36523,36 @@ function correspondingChildren(a, b) {
|
|
|
36387
36523
|
* absolute coordinates) when it holds a `!!`-named descendant, `counterpart`
|
|
36388
36524
|
* holds a group it would pair with, AND the two groups hold the same cast of
|
|
36389
36525
|
* objects; everything else is passed through untouched. See the module comment
|
|
36390
|
-
* for why the first two are required and {@link
|
|
36526
|
+
* for why the first two are required and {@link correspondingCast} for the
|
|
36391
36527
|
* third.
|
|
36392
36528
|
*/
|
|
36393
36529
|
function flattenMorphElements(elements, counterpart, offsetX = 0, offsetY = 0) {
|
|
36530
|
+
return flattenMorphLevel(elements, counterpart, offsetX, offsetY, true);
|
|
36531
|
+
}
|
|
36532
|
+
/**
|
|
36533
|
+
* One level of {@link flattenMorphElements}.
|
|
36534
|
+
*
|
|
36535
|
+
* `topLevel` carries the `!!` requirement, and only the slide's own top level
|
|
36536
|
+
* has it. The prefix is the author naming the containers that take part in the
|
|
36537
|
+
* morph, which is a statement about what the slide shows - not about the
|
|
36538
|
+
* authoring wrappers inside it. Once a group's cast has been shown to
|
|
36539
|
+
* correspond one for one, its members ARE each other's counterparts, and a
|
|
36540
|
+
* nested group among them is descended into on the strength of that
|
|
36541
|
+
* correspondence alone. PowerPoint's own render of the deck's 5 -> 6 crossfades
|
|
36542
|
+
* the three paragraphs inside the unnamed `Group 3` individually (issue #160,
|
|
36543
|
+
* `CreateVideo` at 62.5fps: every frame of the panel is a blend of the two end
|
|
36544
|
+
* states summing to 1.000), which requiring `!!` all the way down would refuse.
|
|
36545
|
+
*/
|
|
36546
|
+
function flattenMorphLevel(elements, counterpart, offsetX, offsetY, topLevel) {
|
|
36394
36547
|
const out = [];
|
|
36395
36548
|
for (const element of elements) {
|
|
36396
36549
|
const children = groupChildren(element);
|
|
36397
|
-
if (children && containsMorphNamedDescendant(element)) {
|
|
36550
|
+
if (children && (!topLevel || containsMorphNamedDescendant(element))) {
|
|
36398
36551
|
const twin = correspondingGroup(element, counterpart);
|
|
36399
36552
|
const twinChildren = twin ? (groupChildren(twin) ?? []) : undefined;
|
|
36400
|
-
|
|
36401
|
-
|
|
36553
|
+
const cast = twinChildren ? correspondingCast(children, twinChildren) : undefined;
|
|
36554
|
+
if (cast) {
|
|
36555
|
+
out.push(...flattenMorphLevel(cast.from, cast.to, offsetX + element.x, offsetY + element.y, false));
|
|
36402
36556
|
continue;
|
|
36403
36557
|
}
|
|
36404
36558
|
}
|
|
@@ -36433,26 +36587,26 @@ function flattenMorphElements(elements, counterpart, offsetX = 0, offsetY = 0) {
|
|
|
36433
36587
|
*/
|
|
36434
36588
|
function morphGroupChildPairs(elements, counterpart) {
|
|
36435
36589
|
const pairs = new Map();
|
|
36436
|
-
collectGroupChildPairs(elements, counterpart, pairs);
|
|
36590
|
+
collectGroupChildPairs(elements, counterpart, pairs, true);
|
|
36437
36591
|
return pairs;
|
|
36438
36592
|
}
|
|
36439
36593
|
/** Walk both trees the way {@link flattenMorphElements} does, recording pairs. */
|
|
36440
|
-
function collectGroupChildPairs(elements, counterpart, into) {
|
|
36594
|
+
function collectGroupChildPairs(elements, counterpart, into, topLevel) {
|
|
36441
36595
|
for (const element of elements) {
|
|
36442
36596
|
const children = groupChildren(element);
|
|
36443
|
-
if (!children || !containsMorphNamedDescendant(element)) {
|
|
36597
|
+
if (!children || (topLevel && !containsMorphNamedDescendant(element))) {
|
|
36444
36598
|
continue;
|
|
36445
36599
|
}
|
|
36446
36600
|
const twin = correspondingGroup(element, counterpart);
|
|
36447
36601
|
const twinChildren = twin ? (groupChildren(twin) ?? []) : undefined;
|
|
36448
|
-
const
|
|
36449
|
-
if (!
|
|
36602
|
+
const cast = twinChildren ? correspondingCast(children, twinChildren) : undefined;
|
|
36603
|
+
if (!cast) {
|
|
36450
36604
|
continue;
|
|
36451
36605
|
}
|
|
36452
|
-
for (const [child, twinChild] of
|
|
36606
|
+
for (const [child, twinChild] of cast.paired) {
|
|
36453
36607
|
into.set(child.id, twinChild.id);
|
|
36454
36608
|
}
|
|
36455
|
-
collectGroupChildPairs(
|
|
36609
|
+
collectGroupChildPairs(cast.from, cast.to, into, false);
|
|
36456
36610
|
}
|
|
36457
36611
|
}
|
|
36458
36612
|
/**
|
|
@@ -70412,7 +70566,7 @@ function createLocalStorageBackend(namespace) {
|
|
|
70412
70566
|
/** Try IndexedDB first; fall back to localStorage on any failure. */
|
|
70413
70567
|
async function resolveBackend(dbName, namespace) {
|
|
70414
70568
|
try {
|
|
70415
|
-
const { openChatDb, createIdbBackend } = await import('./pptx-angular-viewer-chat-history-idb-
|
|
70569
|
+
const { openChatDb, createIdbBackend } = await import('./pptx-angular-viewer-chat-history-idb-C0GIYHCu.mjs');
|
|
70416
70570
|
const db = await openChatDb(dbName);
|
|
70417
70571
|
return createIdbBackend(db);
|
|
70418
70572
|
}
|
|
@@ -79777,6 +79931,18 @@ class AnimationPlaybackService {
|
|
|
79777
79931
|
this.ctx = {
|
|
79778
79932
|
setStates: (updater) => {
|
|
79779
79933
|
this.presentationElementStates.set(updater(this.presentationElementStates()));
|
|
79934
|
+
// Stamp the DOM NOW, in the same task as the input that caused the step.
|
|
79935
|
+
// The overlay also applies the state reactively (effect -> afterNextRender),
|
|
79936
|
+
// but that lands one change-detection cycle plus one render hook later:
|
|
79937
|
+
// measured at ~24ms (1.5 frames) after the ArrowRight that starts a
|
|
79938
|
+
// click-group, where React / Vue / Svelte / Vanilla all have the
|
|
79939
|
+
// animation on the element within the key handler's own task. The delay
|
|
79940
|
+
// is a real dropped frame at the start of every entrance, and it makes
|
|
79941
|
+
// the show observably lag its own input (`e2e/animation-entry-state.spec.ts`
|
|
79942
|
+
// reads the inline `animation` right after the key press and saw nothing).
|
|
79943
|
+
// Only playback steps route through here; the per-slide seed in
|
|
79944
|
+
// `setSlide` deliberately does not (see `onlyWhenStaged`).
|
|
79945
|
+
this.applyStyles?.();
|
|
79780
79946
|
},
|
|
79781
79947
|
timers: this.timers,
|
|
79782
79948
|
buildHandle: this.buildHandle,
|
|
@@ -79802,6 +79968,17 @@ class AnimationPlaybackService {
|
|
|
79802
79968
|
setActionSoundHandler(handler) {
|
|
79803
79969
|
this.onPlayActionSound = handler;
|
|
79804
79970
|
}
|
|
79971
|
+
/**
|
|
79972
|
+
* Register the DOM applier that stamps the element states onto the rendered
|
|
79973
|
+
* stage ({@link PresentationStageAnimator.applyAnimationStyles}). It is run
|
|
79974
|
+
* SYNCHRONOUSLY on every playback state change, so a click-advance starts its
|
|
79975
|
+
* entrance in the same task as the key press instead of waiting for Angular's
|
|
79976
|
+
* next change-detection + render pass. Pass an applier that no-ops while the
|
|
79977
|
+
* stage still shows another slide (`onlyWhenStaged`).
|
|
79978
|
+
*/
|
|
79979
|
+
setStyleApplier(apply) {
|
|
79980
|
+
this.applyStyles = apply;
|
|
79981
|
+
}
|
|
79805
79982
|
animationsEnabled() {
|
|
79806
79983
|
return this.showWithAnimation !== false;
|
|
79807
79984
|
}
|
|
@@ -95291,6 +95468,16 @@ function hasExitedFullscreen(doc) {
|
|
|
95291
95468
|
return !d?.fullscreenElement;
|
|
95292
95469
|
}
|
|
95293
95470
|
|
|
95471
|
+
/** True when at least one staged node belongs to the tracked element states. */
|
|
95472
|
+
function stageHoldsTrackedElement(nodes, states) {
|
|
95473
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
95474
|
+
const id = nodes[i].dataset['elementId'];
|
|
95475
|
+
if (id && states.has(id)) {
|
|
95476
|
+
return true;
|
|
95477
|
+
}
|
|
95478
|
+
}
|
|
95479
|
+
return false;
|
|
95480
|
+
}
|
|
95294
95481
|
/** Resolve the nearest element id above a pointer target, if any. */
|
|
95295
95482
|
function closestElementId(target) {
|
|
95296
95483
|
if (!(target instanceof Element)) {
|
|
@@ -95315,8 +95502,17 @@ class PresentationStageAnimator {
|
|
|
95315
95502
|
* cursor on interactive / hover trigger shapes. Mirrors the Vue
|
|
95316
95503
|
* `applyAnimationStyles`. Structural reveals (chart / SmartArt build, fill /
|
|
95317
95504
|
* stroke inherit) are applied declaratively by the renderers themselves.
|
|
95505
|
+
*
|
|
95506
|
+
* @param options.onlyWhenStaged - Skip entirely unless the stage already holds
|
|
95507
|
+
* a node for at least one tracked element id. Used by the SYNCHRONOUS apply
|
|
95508
|
+
* the playback service fires the instant a click-group's states change
|
|
95509
|
+
* (see {@link AnimationPlaybackService.setStyleApplier}): on a slide change
|
|
95510
|
+
* the states describe the INCOMING slide while the stage still holds the
|
|
95511
|
+
* outgoing one, and clearing the outgoing nodes' `visibility` mid-transition
|
|
95512
|
+
* would reveal shapes whose entrance never played. In that case the
|
|
95513
|
+
* `afterNextRender` pass in the overlay is the correct (and only) applier.
|
|
95318
95514
|
*/
|
|
95319
|
-
applyAnimationStyles() {
|
|
95515
|
+
applyAnimationStyles(options) {
|
|
95320
95516
|
const root = this.stageRoot();
|
|
95321
95517
|
if (!root) {
|
|
95322
95518
|
return;
|
|
@@ -95325,6 +95521,9 @@ class PresentationStageAnimator {
|
|
|
95325
95521
|
const interactive = this.playback.interactiveTriggerShapeIds();
|
|
95326
95522
|
const hover = this.playback.hoverTriggerShapeIds();
|
|
95327
95523
|
const nodes = root.querySelectorAll('[data-element-id]');
|
|
95524
|
+
if (options?.onlyWhenStaged && !stageHoldsTrackedElement(nodes, states)) {
|
|
95525
|
+
return;
|
|
95526
|
+
}
|
|
95328
95527
|
nodes.forEach((el) => {
|
|
95329
95528
|
const id = el.dataset['elementId'];
|
|
95330
95529
|
if (!id) {
|
|
@@ -97428,6 +97627,13 @@ class PresentationOverlayComponent {
|
|
|
97428
97627
|
});
|
|
97429
97628
|
// Scope media-command (`p:cmd`) target lookups to the slide stage.
|
|
97430
97629
|
this.playback.setFrameRoot(() => this.stageRef()?.nativeElement ?? null);
|
|
97630
|
+
// Stamp a playback step onto the DOM in the SAME task as the input that
|
|
97631
|
+
// caused it. The reactive path below (effect -> afterNextRender) is still
|
|
97632
|
+
// the applier for a slide change, but it lands ~24ms after a click-advance,
|
|
97633
|
+
// so the first frame of every entrance was dropped and the show visibly
|
|
97634
|
+
// lagged its own key press. `onlyWhenStaged` keeps this out of the slide
|
|
97635
|
+
// swap, where the states describe a slide the stage has not rendered yet.
|
|
97636
|
+
this.playback.setStyleApplier(() => this.stageAnimator.applyAnimationStyles({ onlyWhenStaged: true }));
|
|
97431
97637
|
// Wire the zoom-navigation context to this overlay's slide navigation so a
|
|
97432
97638
|
// descendant zoom tile can jump to its target slide on click.
|
|
97433
97639
|
this.zoomNavigation.setHandler((index) => this.navigator.goToSlide(index));
|
|
@@ -103690,7 +103896,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
103690
103896
|
}], propDecorators: { canEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEdit", required: false }] }], slideIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "slideIndex", required: false }] }] } });
|
|
103691
103897
|
|
|
103692
103898
|
// Generated by scripts/inline-shared.mjs from package.json. Do not edit.
|
|
103693
|
-
const PPTX_ANGULAR_VIEWER_VERSION = "2.
|
|
103899
|
+
const PPTX_ANGULAR_VIEWER_VERSION = "2.18.0";
|
|
103694
103900
|
|
|
103695
103901
|
/**
|
|
103696
103902
|
* account-page.component.ts: File > Account content.
|
|
@@ -136834,4 +137040,4 @@ function cn(...values) {
|
|
|
136834
137040
|
*/
|
|
136835
137041
|
|
|
136836
137042
|
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 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, applyTableStylePreset as e7, asMediaElement as e8, assignUserColor as e9, buildEquationElement as eA, buildEquationSegment as eB, buildFallbackViewModel as eC, buildFontFaceRule as eD, buildGradientFillCss as eE, buildGridlinesAndLabels as eF, buildHyperlinkPatch as eG, buildInkContainerStyle as eH, buildInkStrokes as eI, buildLegend 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_, attachShowVisibilityPause as ea, attachTouchGestures as eb, axisTickValues as ec, beginNodeEdit as ed, bevelSizePatch as ee, boolFromEvent as ef, bringForward as eg, bringToFront as eh, buildBarActions as ei, buildBroadcastConfig as ej, buildBroadcastViewerUrl as ek, buildCategoryLabels as el, buildCellParagraphs as em, buildChartViewModel as en, buildChatLogExport as eo, buildChatLogMarkdown as ep, buildChromeStyle as eq, buildClearHyperlinkPatch as er, buildClickGroups as es, buildColStyles as et, buildCollaborationConfig as eu, buildComboViewModel as ev, buildCssGradientFromShapeStyle as ew, buildDuotoneFilter as ex, buildDuotoneFilterId as ey, buildEmbeddedFontStyles 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, formatAxisValue 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, evenColumnWidths as gK, evenRowHeights as gL, exitPresentationFullscreen as gM, exportAiChatLogs as gN, extractPathPoints as gO, eyedropperAvailable as gP, fillColorOf as gQ, findInSlides as gR, findOwningSlideIndex as gS, findSlideIndexByElementId as gT, firstVisibleIndex as gU, fitPolynomial as gV, fitZoom as gW, focusTargetChips as gX, fontMimeForFormat as gY, fontSizeOf as gZ, forgetSessionDeck 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, isInjectableUrl as h$, formatBytes as h0, formatCursorLabel as h1, formatElapsed as h2, formatFileSize as h3, formatPropertyDate as h4, formatTime as h5, fpsToFrameIntervalMs as h6, generateBroadcastRoomId as h7, generateCommentId as h8, generateCustomShowId as h9, getTextWarp as hA, getTouchDistance as hB, getWarpCategory as hC, getWarpPath as hD, gradientStateFromStyle as hE, gradientStateOf as hF, gradientStatePatch as hG, gridColumns as hH, groupIssuesBySeverity as hI, hasAnimation as hJ, hasCopyableFormat as hK, hasExistingLink as hL, hasExitedFullscreen as hM, hasGradientFill as hN, hasPressureVariation as hO, hasVisibleSlideAfter as hP, headerLabel as hQ, imageDimensions as hR, inkViewBox as hS, insertTableElementColumn as hT, insertTableElementRow as hU, interpolateWidth as hV, isAudienceTab as hW, isBold as hX, isBrowserOpenableMime as hY, isChildNode as hZ, isElementInteractive as h_, generatePressureCircles as ha, generateTicks as hb, getClrChangeParams as hc, getContainerStyle as hd, getDuotoneFilterDef as he, getImageSrc as hf, getLocalStorageUsageSummary as hg, getOleAriaLabel as hh, getOleBadgeLabel as hi, getOleDisplayName as hj, getOleDownloadFileName as hk, getOleTypeColor as hl, getOleTypeLabel as hm, getPasswordStrength as hn, getPatternSvg as ho, getPlaceholderStyle as hp, getVersions as hq, getResolvedShapeClipPath as hr, getResolvedShapeClipPathFor as hs, getSessionTabId as ht, getShapeFillStrokeStyle as hu, getSlideBackgroundStyle as hv, getSlideTransitionAnimations as hw, getSmartArtNodeBounds as hx, getSpeechRecognitionCtor as hy, getTextBlockStyle as hz, ActionSettingsPanelComponent as i, parseAudienceNonce as i$, isItalic as i0, isLegacyBinaryPresentation as i1, isPpactionUrl as i2, isPresenterMessage as i3, isSigned as i4, isSupportedPresentationFile as i5, isTextElement as i6, isTwoTableFocus as i7, isUnderline as i8, isUrlSafe as i9, narrowToCircle as iA, narrowToPolygon as iB, narrowToRect as iC, newChartElement as iD, newEquationElement as iE, newPresetShapeElement as iF, newShapeElement as iG, newSmartArtElement as iH, newTableElement as iI, newTextElement as iJ, nextVisibleIndex as iK, nodeBold as iL, nodeEditBox as iM, nodeFillColor as iN, nodeFontColor as iO, nodeIdFromKey as iP, nodeItalic as iQ, nodeStyle as iR, normalizeFontFormat as iS, normalizeSlidesPerPage as iT, normalizeValue as iU, numFromEvent as iV, ommlToMathml as iW, ooxmlDashToCssBorderStyle as iX, openNativeEyeDropper as iY, overallStatus as iZ, paletteColor as i_, isValidRoomId as ia, isViewportBackgroundPressTarget as ib, isZoomActivationKey as ic, issueTrackKey as id, issueTypeLabel as ie, keyToLabel as ig, lastVisibleIndex as ih, latexToMathml as ii, layoutConnectorPaints as ij, layoutNodeLabels as ik, linePointsToSvgString as il, lineSpacingPatch as im, loadAudienceContent as io, loadSessionDeck as ip, mediaFallbackFor as iq, mediaSurfaceFor as ir, mergeCaptionResults as is, mergeDown as it, mergeRight as iu, mergeSelection as iv, moveElementBy as iw, moveNodeDown as ix, moveNodeUp as iy, msToFrameDelayCs as iz, AdvancedChartEditorComponent as j, restoreSessionDeck as j$, parseNodeTextarea as j0, partitionSlides as j1, patchChartData as j2, patchChartStyle as j3, patchTableData as j4, patchTextStyle as j5, patternPresetOptions as j6, pendingElementStyles as j7, pickColorByClickFallback as j8, pickFile as j9, removeElementAnimation as jA, removeGradientStopPatch as jB, removeNode as jC, removeTableElementRow as jD, removeSeries as jE, renderToCanvas as jF, reorderAnimationDown as jG, reorderAnimationUp as jH, replaceInSlides as jI, replaceMatch as jJ, requestPresentationFullscreen as jK, resizeElement as jL, resolveCaptionTracks as jM, resolveChartKind as jN, resolveFontVariant as jO, resolveHyperlinkHref as jP, resolveInteractiveElementId as jQ, resolveMediaSrc as jR, resolveOleType as jS, resolveParagraphBullet as jT, resolvePresenterNotes as jU, resolveProfileInitial as jV, resolveRegionCode as jW, resolveSlideAutoAdvanceMs as jX, resolvePalette as jY, resolveThemeCatalogEntry as jZ, resolveTransitionDuration as j_, pickSupportedMimeType as ja, planGifFrames as jb, planVideoSegments as jc, pointsToSvgPathD as jd, presenceToCursors as je, presentationBaseName as jf, presentationStageStyle as jg, presenterTimerProgress as jh, presetByLayout as ji, presetsForCategory as jj, pressuresToWidths as jk, prevVisibleIndex as jl, projectDrawingShapes as jm, promoteNode as jn, provideViewerTheme as jo, radarAngle as jp, radarRingPoints as jq, readAsDataUrl as jr, recordWebm as js, redistributeColumnWidth as jt, registerCrossSlideAudio as ju, rememberSessionDeck as jv, removeAnimation as jw, removeCategory as jx, removeTableElementColumn as jy, removeCommentFromList as jz, AiChangeOverlayComponent as k, shapeStylePatch as k$, revealedElementStyles as k0, routeOrthogonalConnector as k1, rowStyle as k2, rulerDragToGuidePosition as k3, rulerHighlight as k4, rulerStripTicks as k5, sampleColorFromSlide as k6, sanitizeColor as k7, sanitizeSlideIndex as k8, sanitizeUserName as k9, setDataPointFill as kA, setDataPointLabel as kB, setDataPointMarker as kC, setDelay as kD, setDirection as kE, setDuration as kF, setElementPosition as kG, setGridlineStyle as kH, setLayout as kI, setLegend as kJ, setNodeStyle as kK, setNodeText as kL, setRepeatCount as kM, setRepeatMode as kN, setSequence as kO, setSeriesChartType as kP, setSeriesColor as kQ, setSeriesErrorBars as kR, setSeriesMarker as kS, setSeriesName as kT, setSeriesTrendline as kU, setSeriesValue as kV, setStyle as kW, setTimingCurve as kX, setTitle as kY, setTrigger as kZ, setTriggerShapeId as k_, saveViewerProfile as ka, savedPresentationFileName as kb, scanAvailableFonts as kc, searchSlides as kd, seedBroadcastFields as ke, seedHyperlinkDraft as kf, seedPropertiesDraft as kg, seedShareFields as kh, segmentFrameCount as ki, selectValue$2 as kj, sendBackward as kk, sendToBack as kl, sequentialColorScale as km, serializeWriteBack as kn, seriesColor as ko, setAnimationEmphasis as kp, setAnimationEntrance as kq, setAnimationExit as kr, setAxis as ks, setAxisLogScale as kt, setAxisTitleStyle as ku, setCategoryLabel as kv, setCellText as kw, setColorScheme as kx, setDataLabels as ky, setDataPointExplosion as kz, AiChatPanelComponent as l, sheetAfterNavigate as l0, shouldBlockClickAdvance as l1, shouldUseSvgWarp as l2, showDirectionPicker as l3, showsTemplateAffordance as l4, signatureCountLabel as l5, signatureKey as l6, signatureTimestamp as l7, signerName as l8, statusLabel as l9, toggleCommentResolvedInList as lA, toggleNodeBold as lB, toggleNodeItalic as lC, toggleSheet as lD, topLevelNodeCount as lE, transformSelectedTextCase as lF, translationsEn as lG, updateElementById as lH, updateGlowPatch as lI, updateGradientStopPatch as lJ, updateInnerShadowPatch as lK, updateOuterShadowPatch as lL, updateReflectionPatch as lM, vAlignPatch as lN, validatePassword as lO, validatePrintSettings as lP, validateRoomId as lQ, valueToY as lR, vermilionDarkColors as lS, vermilionDarkTheme as lT, vermilionLightColors as lU, vermilionLightTheme as lV, vermilionRadius as lW, waypointsToPathD as lX, worstStatus as lY, zoomTargetSlideIndex as lZ, slideNumberOf as la, slidesWithReappliedLayout as lb, smartArtNodes as lc, paletteColour as ld, snapToGridStep as le, splitCursorCell as lf, splitMergedCell as lg, statusKind as lh, statusLabel$1 as li, storeAudienceContent as lj, stringFromEvent$5 as lk, strokeColorOf as ll, strokeToInkElement as lm, strokeWidthOf as ln, styleShadowFilter as lo, textAdvancedPatch as lp, textAdvancedStateFromStyle as lq, textAdvancedStateOf as lr, textColorOf as ls, textDirectionPatch as lt, textStyleOf as lu, textStylePatch as lv, themeStyle as lw, themeToCssVars as lx, thumbnailHeight as ly, thumbnailZoom 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 };
|
|
136837
|
-
//# sourceMappingURL=pptx-angular-viewer-pptx-angular-viewer-
|
|
137043
|
+
//# sourceMappingURL=pptx-angular-viewer-pptx-angular-viewer-h8WcCkyN.mjs.map
|