pptx-angular-viewer 2.14.0 → 2.15.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 +4 -0
- package/fesm2022/{pptx-angular-viewer-chat-history-idb-DtwktqMt.mjs → pptx-angular-viewer-chat-history-idb-B9FM2kAV.mjs} +2 -2
- package/fesm2022/{pptx-angular-viewer-chat-history-idb-DtwktqMt.mjs.map → pptx-angular-viewer-chat-history-idb-B9FM2kAV.mjs.map} +1 -1
- package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-darteyou.mjs → pptx-angular-viewer-pptx-angular-viewer-D_iIqccu.mjs} +536 -274
- package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-darteyou.mjs.map → pptx-angular-viewer-pptx-angular-viewer-D_iIqccu.mjs.map} +1 -1
- package/fesm2022/pptx-angular-viewer.mjs +1 -1
- package/package.json +3 -3
- package/types/pptx-angular-viewer.d.ts +60 -3
|
@@ -46706,6 +46706,514 @@ function isExportAbortError(err) {
|
|
|
46706
46706
|
return err instanceof DOMException && err.name === 'AbortError';
|
|
46707
46707
|
}
|
|
46708
46708
|
|
|
46709
|
+
/**
|
|
46710
|
+
* IndexedDB-backed autosave recovery store, shared by every binding.
|
|
46711
|
+
*
|
|
46712
|
+
* Extracted from the React `useAutosave` hook so Vue/Angular reuse the same
|
|
46713
|
+
* database (`pptx-viewer-autosave` / `recoveryVersions`) instead of each
|
|
46714
|
+
* binding growing its own copy. Records are keyed by the host-supplied file
|
|
46715
|
+
* path; on quota exhaustion the oldest record is evicted and the write is
|
|
46716
|
+
* retried once.
|
|
46717
|
+
*/
|
|
46718
|
+
const AUTOSAVE_DB_NAME = 'pptx-viewer-autosave';
|
|
46719
|
+
const AUTOSAVE_DB_VERSION = 1;
|
|
46720
|
+
const AUTOSAVE_STORE_NAME = 'recoveryVersions';
|
|
46721
|
+
/** Default autosave interval in seconds. */
|
|
46722
|
+
const AUTOSAVE_DEFAULT_INTERVAL_SECONDS = 120;
|
|
46723
|
+
/** Minimum allowed autosave interval in seconds. */
|
|
46724
|
+
const AUTOSAVE_MIN_INTERVAL_SECONDS = 10;
|
|
46725
|
+
/** Clamp a user-supplied interval (seconds) and convert to milliseconds. */
|
|
46726
|
+
function autosaveIntervalMs(intervalSeconds) {
|
|
46727
|
+
return Math.max(intervalSeconds, AUTOSAVE_MIN_INTERVAL_SECONDS) * 1000;
|
|
46728
|
+
}
|
|
46729
|
+
function openAutosaveDb$1() {
|
|
46730
|
+
return new Promise((resolve, reject) => {
|
|
46731
|
+
const req = indexedDB.open(AUTOSAVE_DB_NAME, AUTOSAVE_DB_VERSION);
|
|
46732
|
+
req.onupgradeneeded = () => {
|
|
46733
|
+
const db = req.result;
|
|
46734
|
+
if (!db.objectStoreNames.contains(AUTOSAVE_STORE_NAME)) {
|
|
46735
|
+
db.createObjectStore(AUTOSAVE_STORE_NAME, { keyPath: 'key' });
|
|
46736
|
+
}
|
|
46737
|
+
};
|
|
46738
|
+
req.onsuccess = () => resolve(req.result);
|
|
46739
|
+
req.onerror = () => reject(req.error);
|
|
46740
|
+
});
|
|
46741
|
+
}
|
|
46742
|
+
/** Delete the oldest entry in the autosave store. Returns true if one was removed. */
|
|
46743
|
+
async function deleteOldestAutosaveEntry() {
|
|
46744
|
+
const db = await openAutosaveDb$1();
|
|
46745
|
+
return new Promise((resolve) => {
|
|
46746
|
+
try {
|
|
46747
|
+
const tx = db.transaction(AUTOSAVE_STORE_NAME, 'readwrite');
|
|
46748
|
+
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
46749
|
+
let oldestKey = null;
|
|
46750
|
+
let oldestTimestamp = Infinity;
|
|
46751
|
+
const cursorReq = store.openCursor();
|
|
46752
|
+
cursorReq.onsuccess = () => {
|
|
46753
|
+
const cursor = cursorReq.result;
|
|
46754
|
+
if (cursor) {
|
|
46755
|
+
const value = cursor.value;
|
|
46756
|
+
if (typeof value.timestamp === 'number' && value.timestamp < oldestTimestamp) {
|
|
46757
|
+
oldestTimestamp = value.timestamp;
|
|
46758
|
+
oldestKey = cursor.primaryKey;
|
|
46759
|
+
}
|
|
46760
|
+
cursor.continue();
|
|
46761
|
+
}
|
|
46762
|
+
else if (oldestKey !== null) {
|
|
46763
|
+
store.delete(oldestKey);
|
|
46764
|
+
}
|
|
46765
|
+
};
|
|
46766
|
+
tx.oncomplete = () => {
|
|
46767
|
+
db.close();
|
|
46768
|
+
resolve(oldestKey !== null);
|
|
46769
|
+
};
|
|
46770
|
+
tx.onerror = () => {
|
|
46771
|
+
db.close();
|
|
46772
|
+
resolve(false);
|
|
46773
|
+
};
|
|
46774
|
+
}
|
|
46775
|
+
catch {
|
|
46776
|
+
try {
|
|
46777
|
+
db.close();
|
|
46778
|
+
}
|
|
46779
|
+
catch {
|
|
46780
|
+
// Ignore
|
|
46781
|
+
}
|
|
46782
|
+
resolve(false);
|
|
46783
|
+
}
|
|
46784
|
+
});
|
|
46785
|
+
}
|
|
46786
|
+
function putAutosaveRecord(filePath, data) {
|
|
46787
|
+
return openAutosaveDb$1().then((db) => new Promise((resolve, reject) => {
|
|
46788
|
+
const tx = db.transaction(AUTOSAVE_STORE_NAME, 'readwrite');
|
|
46789
|
+
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
46790
|
+
store.put({
|
|
46791
|
+
key: filePath,
|
|
46792
|
+
data,
|
|
46793
|
+
timestamp: Date.now(),
|
|
46794
|
+
size: data.byteLength,
|
|
46795
|
+
});
|
|
46796
|
+
tx.oncomplete = () => {
|
|
46797
|
+
db.close();
|
|
46798
|
+
resolve(true);
|
|
46799
|
+
};
|
|
46800
|
+
tx.onerror = () => {
|
|
46801
|
+
db.close();
|
|
46802
|
+
reject(tx.error);
|
|
46803
|
+
};
|
|
46804
|
+
}));
|
|
46805
|
+
}
|
|
46806
|
+
/**
|
|
46807
|
+
* Retrieve a single autosave snapshot by file path.
|
|
46808
|
+
* Returns undefined when no snapshot exists.
|
|
46809
|
+
*/
|
|
46810
|
+
async function getAutosaveSnapshot(filePath) {
|
|
46811
|
+
const db = await openAutosaveDb$1();
|
|
46812
|
+
return new Promise((resolve) => {
|
|
46813
|
+
const tx = db.transaction(AUTOSAVE_STORE_NAME, 'readonly');
|
|
46814
|
+
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
46815
|
+
const req = store.get(filePath);
|
|
46816
|
+
req.onsuccess = () => {
|
|
46817
|
+
db.close();
|
|
46818
|
+
resolve(req.result);
|
|
46819
|
+
};
|
|
46820
|
+
req.onerror = () => {
|
|
46821
|
+
db.close();
|
|
46822
|
+
resolve(undefined);
|
|
46823
|
+
};
|
|
46824
|
+
});
|
|
46825
|
+
}
|
|
46826
|
+
/**
|
|
46827
|
+
* List all autosave snapshots (without the heavy `data` blob).
|
|
46828
|
+
* Useful for showing a recovery picker on app start.
|
|
46829
|
+
*/
|
|
46830
|
+
async function listAutosaveSnapshots() {
|
|
46831
|
+
const db = await openAutosaveDb$1();
|
|
46832
|
+
return new Promise((resolve) => {
|
|
46833
|
+
const results = [];
|
|
46834
|
+
try {
|
|
46835
|
+
const tx = db.transaction(AUTOSAVE_STORE_NAME, 'readonly');
|
|
46836
|
+
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
46837
|
+
const cursorReq = store.openCursor();
|
|
46838
|
+
cursorReq.onsuccess = () => {
|
|
46839
|
+
const cursor = cursorReq.result;
|
|
46840
|
+
if (cursor) {
|
|
46841
|
+
const val = cursor.value;
|
|
46842
|
+
results.push({ key: val.key, timestamp: val.timestamp, size: val.size });
|
|
46843
|
+
cursor.continue();
|
|
46844
|
+
}
|
|
46845
|
+
};
|
|
46846
|
+
tx.oncomplete = () => {
|
|
46847
|
+
db.close();
|
|
46848
|
+
resolve(results);
|
|
46849
|
+
};
|
|
46850
|
+
tx.onerror = () => {
|
|
46851
|
+
db.close();
|
|
46852
|
+
resolve([]);
|
|
46853
|
+
};
|
|
46854
|
+
}
|
|
46855
|
+
catch {
|
|
46856
|
+
try {
|
|
46857
|
+
db.close();
|
|
46858
|
+
}
|
|
46859
|
+
catch {
|
|
46860
|
+
// Ignore
|
|
46861
|
+
}
|
|
46862
|
+
resolve([]);
|
|
46863
|
+
}
|
|
46864
|
+
});
|
|
46865
|
+
}
|
|
46866
|
+
/**
|
|
46867
|
+
* Delete an autosave snapshot by file path.
|
|
46868
|
+
*/
|
|
46869
|
+
async function deleteAutosaveSnapshot(filePath) {
|
|
46870
|
+
const db = await openAutosaveDb$1();
|
|
46871
|
+
return new Promise((resolve) => {
|
|
46872
|
+
try {
|
|
46873
|
+
const tx = db.transaction(AUTOSAVE_STORE_NAME, 'readwrite');
|
|
46874
|
+
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
46875
|
+
store.delete(filePath);
|
|
46876
|
+
tx.oncomplete = () => {
|
|
46877
|
+
db.close();
|
|
46878
|
+
resolve(true);
|
|
46879
|
+
};
|
|
46880
|
+
tx.onerror = () => {
|
|
46881
|
+
db.close();
|
|
46882
|
+
resolve(false);
|
|
46883
|
+
};
|
|
46884
|
+
}
|
|
46885
|
+
catch {
|
|
46886
|
+
try {
|
|
46887
|
+
db.close();
|
|
46888
|
+
}
|
|
46889
|
+
catch {
|
|
46890
|
+
// Ignore
|
|
46891
|
+
}
|
|
46892
|
+
resolve(false);
|
|
46893
|
+
}
|
|
46894
|
+
});
|
|
46895
|
+
}
|
|
46896
|
+
// ---------------------------------------------------------------------------
|
|
46897
|
+
// Write helpers
|
|
46898
|
+
// ---------------------------------------------------------------------------
|
|
46899
|
+
/**
|
|
46900
|
+
* Persist a recovery snapshot. On QuotaExceededError the oldest record is
|
|
46901
|
+
* dropped and the write retried once.
|
|
46902
|
+
*/
|
|
46903
|
+
async function saveAutosaveSnapshot(filePath, data) {
|
|
46904
|
+
try {
|
|
46905
|
+
return await putAutosaveRecord(filePath, data);
|
|
46906
|
+
}
|
|
46907
|
+
catch (err) {
|
|
46908
|
+
const errName = err instanceof Error || err instanceof DOMException ? err.name : '';
|
|
46909
|
+
if (errName !== 'QuotaExceededError') {
|
|
46910
|
+
throw err;
|
|
46911
|
+
}
|
|
46912
|
+
const deleted = await deleteOldestAutosaveEntry();
|
|
46913
|
+
if (!deleted) {
|
|
46914
|
+
throw err;
|
|
46915
|
+
}
|
|
46916
|
+
return putAutosaveRecord(filePath, data);
|
|
46917
|
+
}
|
|
46918
|
+
}
|
|
46919
|
+
|
|
46920
|
+
/**
|
|
46921
|
+
* secure-random.ts: cryptographically strong random-id helpers shared by
|
|
46922
|
+
* every binding.
|
|
46923
|
+
*
|
|
46924
|
+
* `crypto.randomUUID()` is used whenever it is available (all modern
|
|
46925
|
+
* browsers, Node, and Bun in a secure context). The fallback path never
|
|
46926
|
+
* touches `Math.random()`, a predictable PRNG unsuitable for session
|
|
46927
|
+
* nonces, room codes, or field GUIDs; it sources its randomness from
|
|
46928
|
+
* `crypto.getRandomValues`, which has near-universal support (older than
|
|
46929
|
+
* `randomUUID` itself), so it is a safe baseline even on older runtimes.
|
|
46930
|
+
*/
|
|
46931
|
+
/** Fill `length` bytes from the Web Crypto CSPRNG. */
|
|
46932
|
+
function secureRandomBytes(length) {
|
|
46933
|
+
const bytes = new Uint8Array(length);
|
|
46934
|
+
if (typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function') {
|
|
46935
|
+
crypto.getRandomValues(bytes);
|
|
46936
|
+
return bytes;
|
|
46937
|
+
}
|
|
46938
|
+
// crypto.getRandomValues is available in every browser and server runtime
|
|
46939
|
+
// this project targets; if it is truly missing there is no cryptographically
|
|
46940
|
+
// strong randomness source on this platform, so fail loudly rather than
|
|
46941
|
+
// silently downgrading to a predictable generator.
|
|
46942
|
+
throw new Error('secure-random: no cryptographic RNG available (crypto.getRandomValues missing)');
|
|
46943
|
+
}
|
|
46944
|
+
/**
|
|
46945
|
+
* Generate a v4 UUID (`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`). Prefers
|
|
46946
|
+
* `crypto.randomUUID()`; falls back to a `crypto.getRandomValues`-backed v4
|
|
46947
|
+
* UUID when it is unavailable.
|
|
46948
|
+
*/
|
|
46949
|
+
function secureRandomUuid() {
|
|
46950
|
+
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
|
|
46951
|
+
return crypto.randomUUID();
|
|
46952
|
+
}
|
|
46953
|
+
const bytes = secureRandomBytes(16);
|
|
46954
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40; // version 4
|
|
46955
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80; // variant 10
|
|
46956
|
+
const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');
|
|
46957
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
46958
|
+
}
|
|
46959
|
+
/**
|
|
46960
|
+
* Generate a cryptographically strong base-36 token of `length` characters,
|
|
46961
|
+
* a drop-in replacement for the common (insecure) `Math.random().toString(36).
|
|
46962
|
+
* slice(2, 2 + length)` idiom used for short ids / room codes.
|
|
46963
|
+
*/
|
|
46964
|
+
function secureRandomToken(length = 8) {
|
|
46965
|
+
const bytes = secureRandomBytes(length);
|
|
46966
|
+
let out = '';
|
|
46967
|
+
for (const b of bytes) {
|
|
46968
|
+
out += (b % 36).toString(36);
|
|
46969
|
+
}
|
|
46970
|
+
return out;
|
|
46971
|
+
}
|
|
46972
|
+
|
|
46973
|
+
/**
|
|
46974
|
+
* session-restore: keep the deck a host app has open across a page refresh.
|
|
46975
|
+
*
|
|
46976
|
+
* A host (the demo apps, or any embedder) owns the bytes it hands to the
|
|
46977
|
+
* viewer, so a plain reload drops them and the user lands back on the file
|
|
46978
|
+
* dropzone with their presentation gone. This store remembers the open deck in
|
|
46979
|
+
* IndexedDB and hands it back on the next load.
|
|
46980
|
+
*
|
|
46981
|
+
* Scope is deliberately per-tab: the record is keyed by an id kept in
|
|
46982
|
+
* `sessionStorage`, which survives a reload but NOT a new tab. Refreshing
|
|
46983
|
+
* restores the deck this tab had open, while a second tab opened on the same
|
|
46984
|
+
* origin still starts on the landing page, and two tabs holding different decks
|
|
46985
|
+
* never steal each other's content.
|
|
46986
|
+
*
|
|
46987
|
+
* `restoreSessionDeck` additionally prefers a NEWER autosave snapshot for the
|
|
46988
|
+
* same file (see `./autosave-store`), so a refresh mid-edit comes back with the
|
|
46989
|
+
* edited deck rather than the pristine bytes that were first opened.
|
|
46990
|
+
*
|
|
46991
|
+
* Every operation is best-effort: a blocked IndexedDB, a partitioned
|
|
46992
|
+
* `sessionStorage`, or an exhausted quota degrades to "no restore", never to a
|
|
46993
|
+
* thrown error in the host.
|
|
46994
|
+
*/
|
|
46995
|
+
/** IndexedDB database name. Kept identical across bindings. */
|
|
46996
|
+
const DB_NAME$3 = 'pptx-viewer-session';
|
|
46997
|
+
const DB_VERSION$3 = 1;
|
|
46998
|
+
const STORE_NAME$3 = 'openDeck';
|
|
46999
|
+
/** `sessionStorage` key holding this tab's id (survives reload, not a new tab). */
|
|
47000
|
+
const TAB_ID_KEY = 'pptx-viewer-session-tab';
|
|
47001
|
+
/** Records older than this are abandoned (the tab that wrote them is gone). */
|
|
47002
|
+
const MAX_AGE_MS = 24 * 60 * 60 * 1000;
|
|
47003
|
+
// ---------------------------------------------------------------------------
|
|
47004
|
+
// Internal helpers
|
|
47005
|
+
// ---------------------------------------------------------------------------
|
|
47006
|
+
function hasIndexedDb() {
|
|
47007
|
+
return typeof indexedDB !== 'undefined';
|
|
47008
|
+
}
|
|
47009
|
+
/**
|
|
47010
|
+
* This tab's session id, or `null` when `sessionStorage` is unavailable (a
|
|
47011
|
+
* sandboxed iframe, or a browser with storage disabled).
|
|
47012
|
+
*
|
|
47013
|
+
* @param create Mint and persist an id when the tab does not have one yet.
|
|
47014
|
+
* Reads pass `false` so a fresh tab never claims another tab's record.
|
|
47015
|
+
*/
|
|
47016
|
+
function getSessionTabId(create = false) {
|
|
47017
|
+
try {
|
|
47018
|
+
if (typeof sessionStorage === 'undefined') {
|
|
47019
|
+
return null;
|
|
47020
|
+
}
|
|
47021
|
+
const existing = sessionStorage.getItem(TAB_ID_KEY);
|
|
47022
|
+
if (existing) {
|
|
47023
|
+
return existing;
|
|
47024
|
+
}
|
|
47025
|
+
if (!create) {
|
|
47026
|
+
return null;
|
|
47027
|
+
}
|
|
47028
|
+
const id = secureRandomToken(12);
|
|
47029
|
+
sessionStorage.setItem(TAB_ID_KEY, id);
|
|
47030
|
+
return id;
|
|
47031
|
+
}
|
|
47032
|
+
catch {
|
|
47033
|
+
return null;
|
|
47034
|
+
}
|
|
47035
|
+
}
|
|
47036
|
+
function openDb$1() {
|
|
47037
|
+
return new Promise((resolve, reject) => {
|
|
47038
|
+
const request = indexedDB.open(DB_NAME$3, DB_VERSION$3);
|
|
47039
|
+
request.onupgradeneeded = () => {
|
|
47040
|
+
const db = request.result;
|
|
47041
|
+
if (!db.objectStoreNames.contains(STORE_NAME$3)) {
|
|
47042
|
+
db.createObjectStore(STORE_NAME$3, { keyPath: 'key' });
|
|
47043
|
+
}
|
|
47044
|
+
};
|
|
47045
|
+
request.onsuccess = () => resolve(request.result);
|
|
47046
|
+
request.onerror = () => reject(request.error);
|
|
47047
|
+
});
|
|
47048
|
+
}
|
|
47049
|
+
/** Normalise a stored `data` field back to bytes, or `null` if unusable. */
|
|
47050
|
+
function toBytes(value) {
|
|
47051
|
+
if (value instanceof Uint8Array) {
|
|
47052
|
+
return value;
|
|
47053
|
+
}
|
|
47054
|
+
if (value instanceof ArrayBuffer) {
|
|
47055
|
+
return new Uint8Array(value);
|
|
47056
|
+
}
|
|
47057
|
+
return null;
|
|
47058
|
+
}
|
|
47059
|
+
/**
|
|
47060
|
+
* Write `record`, evicting other tabs' entries along the way: stale ones
|
|
47061
|
+
* always, every one of them when `dropOthers` is set (the quota-recovery pass).
|
|
47062
|
+
*/
|
|
47063
|
+
function writeRecord(record, dropOthers) {
|
|
47064
|
+
return openDb$1().then((db) => new Promise((resolve, reject) => {
|
|
47065
|
+
const tx = db.transaction(STORE_NAME$3, 'readwrite');
|
|
47066
|
+
const store = tx.objectStore(STORE_NAME$3);
|
|
47067
|
+
const cutoff = Date.now() - MAX_AGE_MS;
|
|
47068
|
+
const cursorReq = store.openCursor();
|
|
47069
|
+
cursorReq.onsuccess = () => {
|
|
47070
|
+
const cursor = cursorReq.result;
|
|
47071
|
+
if (!cursor) {
|
|
47072
|
+
return;
|
|
47073
|
+
}
|
|
47074
|
+
const value = cursor.value;
|
|
47075
|
+
const stale = typeof value.timestamp !== 'number' || value.timestamp < cutoff;
|
|
47076
|
+
if (value.key !== record.key && (dropOthers || stale)) {
|
|
47077
|
+
cursor.delete();
|
|
47078
|
+
}
|
|
47079
|
+
cursor.continue();
|
|
47080
|
+
};
|
|
47081
|
+
store.put(record);
|
|
47082
|
+
tx.oncomplete = () => {
|
|
47083
|
+
db.close();
|
|
47084
|
+
resolve(true);
|
|
47085
|
+
};
|
|
47086
|
+
tx.onerror = () => {
|
|
47087
|
+
db.close();
|
|
47088
|
+
reject(tx.error);
|
|
47089
|
+
};
|
|
47090
|
+
}));
|
|
47091
|
+
}
|
|
47092
|
+
// ---------------------------------------------------------------------------
|
|
47093
|
+
// Public API
|
|
47094
|
+
// ---------------------------------------------------------------------------
|
|
47095
|
+
/**
|
|
47096
|
+
* Remember `data` as the deck this tab has open, so the next load can restore
|
|
47097
|
+
* it. Resolves `false` when the browser refused to store it; callers treat that
|
|
47098
|
+
* as "no restore available later", never as an error.
|
|
47099
|
+
*/
|
|
47100
|
+
async function rememberSessionDeck(fileName, data) {
|
|
47101
|
+
const key = getSessionTabId(true);
|
|
47102
|
+
if (!key || !hasIndexedDb() || data.byteLength === 0) {
|
|
47103
|
+
return false;
|
|
47104
|
+
}
|
|
47105
|
+
// Copy: the caller's view may be a slice of a larger buffer, and structured
|
|
47106
|
+
// clone would then persist the whole backing store.
|
|
47107
|
+
const record = {
|
|
47108
|
+
key,
|
|
47109
|
+
fileName,
|
|
47110
|
+
data: new Uint8Array(data),
|
|
47111
|
+
timestamp: Date.now(),
|
|
47112
|
+
};
|
|
47113
|
+
try {
|
|
47114
|
+
return await writeRecord(record, false);
|
|
47115
|
+
}
|
|
47116
|
+
catch (err) {
|
|
47117
|
+
const name = err instanceof Error || err instanceof DOMException ? err.name : '';
|
|
47118
|
+
if (name !== 'QuotaExceededError') {
|
|
47119
|
+
return false;
|
|
47120
|
+
}
|
|
47121
|
+
try {
|
|
47122
|
+
// Second pass drops every other tab's deck, then retries once.
|
|
47123
|
+
return await writeRecord(record, true);
|
|
47124
|
+
}
|
|
47125
|
+
catch {
|
|
47126
|
+
return false;
|
|
47127
|
+
}
|
|
47128
|
+
}
|
|
47129
|
+
}
|
|
47130
|
+
/** The deck remembered for this tab, or `null` when there is nothing to restore. */
|
|
47131
|
+
async function loadSessionDeck() {
|
|
47132
|
+
const key = getSessionTabId(false);
|
|
47133
|
+
if (!key || !hasIndexedDb()) {
|
|
47134
|
+
return null;
|
|
47135
|
+
}
|
|
47136
|
+
try {
|
|
47137
|
+
const db = await openDb$1();
|
|
47138
|
+
const record = await new Promise((resolve) => {
|
|
47139
|
+
const tx = db.transaction(STORE_NAME$3, 'readonly');
|
|
47140
|
+
const request = tx.objectStore(STORE_NAME$3).get(key);
|
|
47141
|
+
request.onsuccess = () => {
|
|
47142
|
+
db.close();
|
|
47143
|
+
resolve(request.result);
|
|
47144
|
+
};
|
|
47145
|
+
request.onerror = () => {
|
|
47146
|
+
db.close();
|
|
47147
|
+
resolve(undefined);
|
|
47148
|
+
};
|
|
47149
|
+
});
|
|
47150
|
+
if (!record) {
|
|
47151
|
+
return null;
|
|
47152
|
+
}
|
|
47153
|
+
const data = toBytes(record.data);
|
|
47154
|
+
const timestamp = typeof record.timestamp === 'number' ? record.timestamp : 0;
|
|
47155
|
+
if (!data || data.byteLength === 0 || Date.now() - timestamp > MAX_AGE_MS) {
|
|
47156
|
+
return null;
|
|
47157
|
+
}
|
|
47158
|
+
return {
|
|
47159
|
+
fileName: typeof record.fileName === 'string' ? record.fileName : '',
|
|
47160
|
+
data,
|
|
47161
|
+
timestamp,
|
|
47162
|
+
};
|
|
47163
|
+
}
|
|
47164
|
+
catch {
|
|
47165
|
+
return null;
|
|
47166
|
+
}
|
|
47167
|
+
}
|
|
47168
|
+
/** Forget this tab's deck (the host closed it, or handed the tab to another flow). */
|
|
47169
|
+
async function forgetSessionDeck() {
|
|
47170
|
+
const key = getSessionTabId(false);
|
|
47171
|
+
if (!key || !hasIndexedDb()) {
|
|
47172
|
+
return;
|
|
47173
|
+
}
|
|
47174
|
+
try {
|
|
47175
|
+
const db = await openDb$1();
|
|
47176
|
+
await new Promise((resolve) => {
|
|
47177
|
+
const tx = db.transaction(STORE_NAME$3, 'readwrite');
|
|
47178
|
+
tx.objectStore(STORE_NAME$3).delete(key);
|
|
47179
|
+
tx.oncomplete = () => {
|
|
47180
|
+
db.close();
|
|
47181
|
+
resolve();
|
|
47182
|
+
};
|
|
47183
|
+
tx.onerror = () => {
|
|
47184
|
+
db.close();
|
|
47185
|
+
resolve();
|
|
47186
|
+
};
|
|
47187
|
+
});
|
|
47188
|
+
}
|
|
47189
|
+
catch {
|
|
47190
|
+
// Best-effort cleanup.
|
|
47191
|
+
}
|
|
47192
|
+
}
|
|
47193
|
+
/**
|
|
47194
|
+
* The deck to reopen on load: this tab's remembered bytes, upgraded to a newer
|
|
47195
|
+
* autosave snapshot of the same file when the viewer wrote one after they were
|
|
47196
|
+
* remembered. Without that upgrade a refresh mid-edit would silently roll the
|
|
47197
|
+
* presentation back to the state it was opened in.
|
|
47198
|
+
*/
|
|
47199
|
+
async function restoreSessionDeck() {
|
|
47200
|
+
const deck = await loadSessionDeck();
|
|
47201
|
+
if (!deck?.fileName) {
|
|
47202
|
+
return deck;
|
|
47203
|
+
}
|
|
47204
|
+
try {
|
|
47205
|
+
const snapshot = await getAutosaveSnapshot(deck.fileName);
|
|
47206
|
+
const bytes = snapshot ? toBytes(snapshot.data) : null;
|
|
47207
|
+
if (snapshot && bytes && bytes.byteLength > 0 && snapshot.timestamp > deck.timestamp) {
|
|
47208
|
+
return { fileName: deck.fileName, data: bytes, timestamp: snapshot.timestamp };
|
|
47209
|
+
}
|
|
47210
|
+
}
|
|
47211
|
+
catch {
|
|
47212
|
+
// Autosave store unavailable: the remembered bytes still stand.
|
|
47213
|
+
}
|
|
47214
|
+
return deck;
|
|
47215
|
+
}
|
|
47216
|
+
|
|
46709
47217
|
/**
|
|
46710
47218
|
* open-file-picker — framework-agnostic helper that opens the native file
|
|
46711
47219
|
* picker and resolves the chosen file. Every binding's File ▸ Open action wires
|
|
@@ -46762,13 +47270,20 @@ function openFilePicker(options = {}) {
|
|
|
46762
47270
|
/**
|
|
46763
47271
|
* Opens the picker and reads the chosen file into an `ArrayBuffer` ready to hand
|
|
46764
47272
|
* to the loader. Resolves `null` when the user cancels.
|
|
47273
|
+
*
|
|
47274
|
+
* The picked deck is also remembered for this browser tab (see
|
|
47275
|
+
* `./session-restore`). Every binding's File > Open swaps the deck INSIDE the
|
|
47276
|
+
* viewer without telling the host, so without this a host that restores on load
|
|
47277
|
+
* would reopen the deck it handed in rather than the one the user picked.
|
|
46765
47278
|
*/
|
|
46766
47279
|
async function openPptxFile(options = {}) {
|
|
46767
47280
|
const file = await openFilePicker(options);
|
|
46768
47281
|
if (!file) {
|
|
46769
47282
|
return null;
|
|
46770
47283
|
}
|
|
46771
|
-
|
|
47284
|
+
const buffer = await file.arrayBuffer();
|
|
47285
|
+
void rememberSessionDeck(file.name, new Uint8Array(buffer));
|
|
47286
|
+
return { file, buffer };
|
|
46772
47287
|
}
|
|
46773
47288
|
|
|
46774
47289
|
/**
|
|
@@ -47031,59 +47546,6 @@ function formatRelativeTime(ts) {
|
|
|
47031
47546
|
return `${days}d ago`;
|
|
47032
47547
|
}
|
|
47033
47548
|
|
|
47034
|
-
/**
|
|
47035
|
-
* secure-random.ts: cryptographically strong random-id helpers shared by
|
|
47036
|
-
* every binding.
|
|
47037
|
-
*
|
|
47038
|
-
* `crypto.randomUUID()` is used whenever it is available (all modern
|
|
47039
|
-
* browsers, Node, and Bun in a secure context). The fallback path never
|
|
47040
|
-
* touches `Math.random()`, a predictable PRNG unsuitable for session
|
|
47041
|
-
* nonces, room codes, or field GUIDs; it sources its randomness from
|
|
47042
|
-
* `crypto.getRandomValues`, which has near-universal support (older than
|
|
47043
|
-
* `randomUUID` itself), so it is a safe baseline even on older runtimes.
|
|
47044
|
-
*/
|
|
47045
|
-
/** Fill `length` bytes from the Web Crypto CSPRNG. */
|
|
47046
|
-
function secureRandomBytes(length) {
|
|
47047
|
-
const bytes = new Uint8Array(length);
|
|
47048
|
-
if (typeof crypto !== 'undefined' && typeof crypto.getRandomValues === 'function') {
|
|
47049
|
-
crypto.getRandomValues(bytes);
|
|
47050
|
-
return bytes;
|
|
47051
|
-
}
|
|
47052
|
-
// crypto.getRandomValues is available in every browser and server runtime
|
|
47053
|
-
// this project targets; if it is truly missing there is no cryptographically
|
|
47054
|
-
// strong randomness source on this platform, so fail loudly rather than
|
|
47055
|
-
// silently downgrading to a predictable generator.
|
|
47056
|
-
throw new Error('secure-random: no cryptographic RNG available (crypto.getRandomValues missing)');
|
|
47057
|
-
}
|
|
47058
|
-
/**
|
|
47059
|
-
* Generate a v4 UUID (`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`). Prefers
|
|
47060
|
-
* `crypto.randomUUID()`; falls back to a `crypto.getRandomValues`-backed v4
|
|
47061
|
-
* UUID when it is unavailable.
|
|
47062
|
-
*/
|
|
47063
|
-
function secureRandomUuid() {
|
|
47064
|
-
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
|
|
47065
|
-
return crypto.randomUUID();
|
|
47066
|
-
}
|
|
47067
|
-
const bytes = secureRandomBytes(16);
|
|
47068
|
-
bytes[6] = (bytes[6] & 0x0f) | 0x40; // version 4
|
|
47069
|
-
bytes[8] = (bytes[8] & 0x3f) | 0x80; // variant 10
|
|
47070
|
-
const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');
|
|
47071
|
-
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
47072
|
-
}
|
|
47073
|
-
/**
|
|
47074
|
-
* Generate a cryptographically strong base-36 token of `length` characters,
|
|
47075
|
-
* a drop-in replacement for the common (insecure) `Math.random().toString(36).
|
|
47076
|
-
* slice(2, 2 + length)` idiom used for short ids / room codes.
|
|
47077
|
-
*/
|
|
47078
|
-
function secureRandomToken(length = 8) {
|
|
47079
|
-
const bytes = secureRandomBytes(length);
|
|
47080
|
-
let out = '';
|
|
47081
|
-
for (const b of bytes) {
|
|
47082
|
-
out += (b % 36).toString(36);
|
|
47083
|
-
}
|
|
47084
|
-
return out;
|
|
47085
|
-
}
|
|
47086
|
-
|
|
47087
47549
|
/**
|
|
47088
47550
|
* broadcast-helpers.ts: framework-agnostic helpers for the Broadcast dialog,
|
|
47089
47551
|
* shared by the React, Vue and Angular bindings.
|
|
@@ -56446,217 +56908,6 @@ function filterCommands(query, resolveLabel) {
|
|
|
56446
56908
|
return COMMAND_SEARCH_ENTRIES.filter((entry) => resolveLabel(entry.labelKey).toLowerCase().includes(lowerQuery));
|
|
56447
56909
|
}
|
|
56448
56910
|
|
|
56449
|
-
/**
|
|
56450
|
-
* IndexedDB-backed autosave recovery store, shared by every binding.
|
|
56451
|
-
*
|
|
56452
|
-
* Extracted from the React `useAutosave` hook so Vue/Angular reuse the same
|
|
56453
|
-
* database (`pptx-viewer-autosave` / `recoveryVersions`) instead of each
|
|
56454
|
-
* binding growing its own copy. Records are keyed by the host-supplied file
|
|
56455
|
-
* path; on quota exhaustion the oldest record is evicted and the write is
|
|
56456
|
-
* retried once.
|
|
56457
|
-
*/
|
|
56458
|
-
const AUTOSAVE_DB_NAME = 'pptx-viewer-autosave';
|
|
56459
|
-
const AUTOSAVE_DB_VERSION = 1;
|
|
56460
|
-
const AUTOSAVE_STORE_NAME = 'recoveryVersions';
|
|
56461
|
-
/** Default autosave interval in seconds. */
|
|
56462
|
-
const AUTOSAVE_DEFAULT_INTERVAL_SECONDS = 120;
|
|
56463
|
-
/** Minimum allowed autosave interval in seconds. */
|
|
56464
|
-
const AUTOSAVE_MIN_INTERVAL_SECONDS = 10;
|
|
56465
|
-
/** Clamp a user-supplied interval (seconds) and convert to milliseconds. */
|
|
56466
|
-
function autosaveIntervalMs(intervalSeconds) {
|
|
56467
|
-
return Math.max(intervalSeconds, AUTOSAVE_MIN_INTERVAL_SECONDS) * 1000;
|
|
56468
|
-
}
|
|
56469
|
-
function openAutosaveDb$1() {
|
|
56470
|
-
return new Promise((resolve, reject) => {
|
|
56471
|
-
const req = indexedDB.open(AUTOSAVE_DB_NAME, AUTOSAVE_DB_VERSION);
|
|
56472
|
-
req.onupgradeneeded = () => {
|
|
56473
|
-
const db = req.result;
|
|
56474
|
-
if (!db.objectStoreNames.contains(AUTOSAVE_STORE_NAME)) {
|
|
56475
|
-
db.createObjectStore(AUTOSAVE_STORE_NAME, { keyPath: 'key' });
|
|
56476
|
-
}
|
|
56477
|
-
};
|
|
56478
|
-
req.onsuccess = () => resolve(req.result);
|
|
56479
|
-
req.onerror = () => reject(req.error);
|
|
56480
|
-
});
|
|
56481
|
-
}
|
|
56482
|
-
/** Delete the oldest entry in the autosave store. Returns true if one was removed. */
|
|
56483
|
-
async function deleteOldestAutosaveEntry() {
|
|
56484
|
-
const db = await openAutosaveDb$1();
|
|
56485
|
-
return new Promise((resolve) => {
|
|
56486
|
-
try {
|
|
56487
|
-
const tx = db.transaction(AUTOSAVE_STORE_NAME, 'readwrite');
|
|
56488
|
-
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
56489
|
-
let oldestKey = null;
|
|
56490
|
-
let oldestTimestamp = Infinity;
|
|
56491
|
-
const cursorReq = store.openCursor();
|
|
56492
|
-
cursorReq.onsuccess = () => {
|
|
56493
|
-
const cursor = cursorReq.result;
|
|
56494
|
-
if (cursor) {
|
|
56495
|
-
const value = cursor.value;
|
|
56496
|
-
if (typeof value.timestamp === 'number' && value.timestamp < oldestTimestamp) {
|
|
56497
|
-
oldestTimestamp = value.timestamp;
|
|
56498
|
-
oldestKey = cursor.primaryKey;
|
|
56499
|
-
}
|
|
56500
|
-
cursor.continue();
|
|
56501
|
-
}
|
|
56502
|
-
else if (oldestKey !== null) {
|
|
56503
|
-
store.delete(oldestKey);
|
|
56504
|
-
}
|
|
56505
|
-
};
|
|
56506
|
-
tx.oncomplete = () => {
|
|
56507
|
-
db.close();
|
|
56508
|
-
resolve(oldestKey !== null);
|
|
56509
|
-
};
|
|
56510
|
-
tx.onerror = () => {
|
|
56511
|
-
db.close();
|
|
56512
|
-
resolve(false);
|
|
56513
|
-
};
|
|
56514
|
-
}
|
|
56515
|
-
catch {
|
|
56516
|
-
try {
|
|
56517
|
-
db.close();
|
|
56518
|
-
}
|
|
56519
|
-
catch {
|
|
56520
|
-
// Ignore
|
|
56521
|
-
}
|
|
56522
|
-
resolve(false);
|
|
56523
|
-
}
|
|
56524
|
-
});
|
|
56525
|
-
}
|
|
56526
|
-
function putAutosaveRecord(filePath, data) {
|
|
56527
|
-
return openAutosaveDb$1().then((db) => new Promise((resolve, reject) => {
|
|
56528
|
-
const tx = db.transaction(AUTOSAVE_STORE_NAME, 'readwrite');
|
|
56529
|
-
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
56530
|
-
store.put({
|
|
56531
|
-
key: filePath,
|
|
56532
|
-
data,
|
|
56533
|
-
timestamp: Date.now(),
|
|
56534
|
-
size: data.byteLength,
|
|
56535
|
-
});
|
|
56536
|
-
tx.oncomplete = () => {
|
|
56537
|
-
db.close();
|
|
56538
|
-
resolve(true);
|
|
56539
|
-
};
|
|
56540
|
-
tx.onerror = () => {
|
|
56541
|
-
db.close();
|
|
56542
|
-
reject(tx.error);
|
|
56543
|
-
};
|
|
56544
|
-
}));
|
|
56545
|
-
}
|
|
56546
|
-
/**
|
|
56547
|
-
* Retrieve a single autosave snapshot by file path.
|
|
56548
|
-
* Returns undefined when no snapshot exists.
|
|
56549
|
-
*/
|
|
56550
|
-
async function getAutosaveSnapshot(filePath) {
|
|
56551
|
-
const db = await openAutosaveDb$1();
|
|
56552
|
-
return new Promise((resolve) => {
|
|
56553
|
-
const tx = db.transaction(AUTOSAVE_STORE_NAME, 'readonly');
|
|
56554
|
-
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
56555
|
-
const req = store.get(filePath);
|
|
56556
|
-
req.onsuccess = () => {
|
|
56557
|
-
db.close();
|
|
56558
|
-
resolve(req.result);
|
|
56559
|
-
};
|
|
56560
|
-
req.onerror = () => {
|
|
56561
|
-
db.close();
|
|
56562
|
-
resolve(undefined);
|
|
56563
|
-
};
|
|
56564
|
-
});
|
|
56565
|
-
}
|
|
56566
|
-
/**
|
|
56567
|
-
* List all autosave snapshots (without the heavy `data` blob).
|
|
56568
|
-
* Useful for showing a recovery picker on app start.
|
|
56569
|
-
*/
|
|
56570
|
-
async function listAutosaveSnapshots() {
|
|
56571
|
-
const db = await openAutosaveDb$1();
|
|
56572
|
-
return new Promise((resolve) => {
|
|
56573
|
-
const results = [];
|
|
56574
|
-
try {
|
|
56575
|
-
const tx = db.transaction(AUTOSAVE_STORE_NAME, 'readonly');
|
|
56576
|
-
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
56577
|
-
const cursorReq = store.openCursor();
|
|
56578
|
-
cursorReq.onsuccess = () => {
|
|
56579
|
-
const cursor = cursorReq.result;
|
|
56580
|
-
if (cursor) {
|
|
56581
|
-
const val = cursor.value;
|
|
56582
|
-
results.push({ key: val.key, timestamp: val.timestamp, size: val.size });
|
|
56583
|
-
cursor.continue();
|
|
56584
|
-
}
|
|
56585
|
-
};
|
|
56586
|
-
tx.oncomplete = () => {
|
|
56587
|
-
db.close();
|
|
56588
|
-
resolve(results);
|
|
56589
|
-
};
|
|
56590
|
-
tx.onerror = () => {
|
|
56591
|
-
db.close();
|
|
56592
|
-
resolve([]);
|
|
56593
|
-
};
|
|
56594
|
-
}
|
|
56595
|
-
catch {
|
|
56596
|
-
try {
|
|
56597
|
-
db.close();
|
|
56598
|
-
}
|
|
56599
|
-
catch {
|
|
56600
|
-
// Ignore
|
|
56601
|
-
}
|
|
56602
|
-
resolve([]);
|
|
56603
|
-
}
|
|
56604
|
-
});
|
|
56605
|
-
}
|
|
56606
|
-
/**
|
|
56607
|
-
* Delete an autosave snapshot by file path.
|
|
56608
|
-
*/
|
|
56609
|
-
async function deleteAutosaveSnapshot(filePath) {
|
|
56610
|
-
const db = await openAutosaveDb$1();
|
|
56611
|
-
return new Promise((resolve) => {
|
|
56612
|
-
try {
|
|
56613
|
-
const tx = db.transaction(AUTOSAVE_STORE_NAME, 'readwrite');
|
|
56614
|
-
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
56615
|
-
store.delete(filePath);
|
|
56616
|
-
tx.oncomplete = () => {
|
|
56617
|
-
db.close();
|
|
56618
|
-
resolve(true);
|
|
56619
|
-
};
|
|
56620
|
-
tx.onerror = () => {
|
|
56621
|
-
db.close();
|
|
56622
|
-
resolve(false);
|
|
56623
|
-
};
|
|
56624
|
-
}
|
|
56625
|
-
catch {
|
|
56626
|
-
try {
|
|
56627
|
-
db.close();
|
|
56628
|
-
}
|
|
56629
|
-
catch {
|
|
56630
|
-
// Ignore
|
|
56631
|
-
}
|
|
56632
|
-
resolve(false);
|
|
56633
|
-
}
|
|
56634
|
-
});
|
|
56635
|
-
}
|
|
56636
|
-
// ---------------------------------------------------------------------------
|
|
56637
|
-
// Write helpers
|
|
56638
|
-
// ---------------------------------------------------------------------------
|
|
56639
|
-
/**
|
|
56640
|
-
* Persist a recovery snapshot. On QuotaExceededError the oldest record is
|
|
56641
|
-
* dropped and the write retried once.
|
|
56642
|
-
*/
|
|
56643
|
-
async function saveAutosaveSnapshot(filePath, data) {
|
|
56644
|
-
try {
|
|
56645
|
-
return await putAutosaveRecord(filePath, data);
|
|
56646
|
-
}
|
|
56647
|
-
catch (err) {
|
|
56648
|
-
const errName = err instanceof Error || err instanceof DOMException ? err.name : '';
|
|
56649
|
-
if (errName !== 'QuotaExceededError') {
|
|
56650
|
-
throw err;
|
|
56651
|
-
}
|
|
56652
|
-
const deleted = await deleteOldestAutosaveEntry();
|
|
56653
|
-
if (!deleted) {
|
|
56654
|
-
throw err;
|
|
56655
|
-
}
|
|
56656
|
-
return putAutosaveRecord(filePath, data);
|
|
56657
|
-
}
|
|
56658
|
-
}
|
|
56659
|
-
|
|
56660
56911
|
/**
|
|
56661
56912
|
* `label` stays the English fallback so a host that renders the nav without a
|
|
56662
56913
|
* dictionary still gets readable text; `labelKey` is what the bindings feed to
|
|
@@ -56783,11 +57034,22 @@ async function listBackstageRecentFiles(translate) {
|
|
|
56783
57034
|
return [];
|
|
56784
57035
|
}
|
|
56785
57036
|
}
|
|
57037
|
+
/**
|
|
57038
|
+
* Load a recent file's bytes for File > Open > Recent.
|
|
57039
|
+
*
|
|
57040
|
+
* Like the picker (see `openPptxFile`), the reopened deck is remembered for
|
|
57041
|
+
* this browser tab: the viewer swaps it in without telling the host, so a host
|
|
57042
|
+
* that restores on load would otherwise reopen the deck it handed in.
|
|
57043
|
+
*/
|
|
56786
57044
|
async function readBackstageRecentFile(key) {
|
|
56787
57045
|
if (typeof indexedDB === 'undefined') {
|
|
56788
57046
|
return undefined;
|
|
56789
57047
|
}
|
|
56790
|
-
|
|
57048
|
+
const data = (await getAutosaveSnapshot(key))?.data;
|
|
57049
|
+
if (data) {
|
|
57050
|
+
void rememberSessionDeck(key, data);
|
|
57051
|
+
}
|
|
57052
|
+
return data;
|
|
56791
57053
|
}
|
|
56792
57054
|
/**
|
|
56793
57055
|
* Relative "date modified" for a recent-files row. `translate` is optional so
|
|
@@ -63383,7 +63645,7 @@ function createLocalStorageBackend(namespace) {
|
|
|
63383
63645
|
/** Try IndexedDB first; fall back to localStorage on any failure. */
|
|
63384
63646
|
async function resolveBackend(dbName, namespace) {
|
|
63385
63647
|
try {
|
|
63386
|
-
const { openChatDb, createIdbBackend } = await import('./pptx-angular-viewer-chat-history-idb-
|
|
63648
|
+
const { openChatDb, createIdbBackend } = await import('./pptx-angular-viewer-chat-history-idb-B9FM2kAV.mjs');
|
|
63387
63649
|
const db = await openChatDb(dbName);
|
|
63388
63650
|
return createIdbBackend(db);
|
|
63389
63651
|
}
|
|
@@ -94879,7 +95141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
94879
95141
|
}], propDecorators: { canEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEdit", required: false }] }], slideIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "slideIndex", required: false }] }] } });
|
|
94880
95142
|
|
|
94881
95143
|
// Generated by scripts/inline-shared.mjs from package.json. Do not edit.
|
|
94882
|
-
const PPTX_ANGULAR_VIEWER_VERSION = "2.
|
|
95144
|
+
const PPTX_ANGULAR_VIEWER_VERSION = "2.15.0";
|
|
94883
95145
|
|
|
94884
95146
|
/**
|
|
94885
95147
|
* account-page.component.ts: File > Account content.
|
|
@@ -118779,7 +119041,7 @@ class SetUpSlideShowDialogComponent {
|
|
|
118779
119041
|
name="advanceMode"
|
|
118780
119042
|
class="pptx-ng-sss-radio"
|
|
118781
119043
|
value="manual"
|
|
118782
|
-
[checked]="
|
|
119044
|
+
[checked]="draft().advanceMode === 'manual'"
|
|
118783
119045
|
(change)="update({ advanceMode: 'manual' })"
|
|
118784
119046
|
/>
|
|
118785
119047
|
<span>{{ 'pptx.slideShow.manually' | translate }}</span>
|
|
@@ -118790,7 +119052,7 @@ class SetUpSlideShowDialogComponent {
|
|
|
118790
119052
|
name="advanceMode"
|
|
118791
119053
|
class="pptx-ng-sss-radio"
|
|
118792
119054
|
value="useTimings"
|
|
118793
|
-
[checked]="draft().advanceMode === 'useTimings'"
|
|
119055
|
+
[checked]="(draft().advanceMode ?? 'useTimings') === 'useTimings'"
|
|
118794
119056
|
(change)="update({ advanceMode: 'useTimings' })"
|
|
118795
119057
|
/>
|
|
118796
119058
|
<span>{{ 'pptx.slideShow.useTimings' | translate }}</span>
|
|
@@ -118884,7 +119146,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
118884
119146
|
name="advanceMode"
|
|
118885
119147
|
class="pptx-ng-sss-radio"
|
|
118886
119148
|
value="manual"
|
|
118887
|
-
[checked]="
|
|
119149
|
+
[checked]="draft().advanceMode === 'manual'"
|
|
118888
119150
|
(change)="update({ advanceMode: 'manual' })"
|
|
118889
119151
|
/>
|
|
118890
119152
|
<span>{{ 'pptx.slideShow.manually' | translate }}</span>
|
|
@@ -118895,7 +119157,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
118895
119157
|
name="advanceMode"
|
|
118896
119158
|
class="pptx-ng-sss-radio"
|
|
118897
119159
|
value="useTimings"
|
|
118898
|
-
[checked]="draft().advanceMode === 'useTimings'"
|
|
119160
|
+
[checked]="(draft().advanceMode ?? 'useTimings') === 'useTimings'"
|
|
118899
119161
|
(change)="update({ advanceMode: 'useTimings' })"
|
|
118900
119162
|
/>
|
|
118901
119163
|
<span>{{ 'pptx.slideShow.useTimings' | translate }}</span>
|
|
@@ -126816,5 +127078,5 @@ function cn(...values) {
|
|
|
126816
127078
|
* Generated bundle index. Do not edit.
|
|
126817
127079
|
*/
|
|
126818
127080
|
|
|
126819
|
-
export { CommentsService as $, ALIGN_OPTIONS as A, AnimationPlaybackService as B, AutosaveService as C, BroadcastDialogComponent as D, CHART_EDITOR_STYLES as E, CURSOR_PALETTE as F, CanvasFitService as G, ChartAxisOptionsComponent as H, ChartAxisStyleOptionsComponent as I, ChartComboTypeOptionsComponent as J, ChartDataEditorComponent as K, ChartDataLabelOptionsComponent as L, ChartDatapointMarkerOptionsComponent as M, ChartDatapointOptionsComponent as N, ChartDisplayOptionsComponent as O, ChartElementViewComponent as P, ChartErrorBarOptionsComponent as Q, ChartMarkerOptionsComponent as R, ChartPartSelectionService as S, ChartPrimitivesComponent as T, ChartRendererComponent as U, ChartTrendlineOptionsComponent as V, CollaborationCursorsComponent as W, CollaborationService as X, ColorChangedImageComponent as Y, CommentMarkersOverlayComponent as Z, CommentsPanelComponent as _, ANIMATION_PRESET_CATEGORIES as a, IsMobileService as a$, ComparePanelComponent as a0, ConnectorRendererComponent as a1, ConnectorTextOverlayComponent as a2, CustomShowsComponent as a3, DATA_TABLE_HEADER_H as a4, DATA_TABLE_KEY_W as a5, DATA_TABLE_PADDING as a6, DATA_TABLE_ROW_H as a7, DEFAULT_BOUNDS as a8, DEFAULT_BROADCAST_SERVER_URL as a9, EffectsPanelComponent as aA, ElementRendererComponent as aB, EmbeddedFontsService as aC, EncryptedFileDialogComponent as aD, EquationEditorDialogComponent as aE, EquationRendererComponent as aF, EquationTemplateGalleryComponent as aG, ExportProgressModalComponent as aH, ExportService as aI, FieldContextService as aJ, FindBarComponent as aK, FindReplaceBarComponent as aL, FollowModeBarComponent as aM, FontEmbeddingListComponent as aN, FontEmbeddingPanelComponent as aO, GALLERY_THEME_PRESETS as aP, GRIDLINE_COLOR as aQ, GradientPickerComponent as aR, HANDOUT_OPTIONS as aS, HeaderFooterDialogComponent as aT, HyperlinkDialogComponent as aU, ImagePropertiesPanelComponent as aV, InkDrawingService as aW, InkRendererComponent as aX, InsertSmartArtDialogComponent as aY, InspectorPaneHeaderComponent as aZ, InspectorPanelComponent as a_, DEFAULT_CANVAS_HEIGHT as aa, DEFAULT_CANVAS_WIDTH as ab, DEFAULT_COLOR_SCHEME as ac, DEFAULT_FILL_COLOR as ad, DEFAULT_LAYOUT as ae, DEFAULT_PALETTE$1 as af, DEFAULT_PATTERN_FILL_PRESET as ag, DEFAULT_PRINT_SETTINGS as ah, DEFAULT_SLIDE_BACKGROUND as ai, DEFAULT_STROKE_COLOR as aj, DEFAULT_STYLE as ak, DEFAULT_TABLE_ROW_HEIGHT as al, DEFAULT_TEXT_COLOR$1 as am, DEFAULT_VIEWER_PROFILE as an, DIRECTIONAL_PRESETS as ao, DIRECTION_OPTIONS as ap, DocumentPropertiesCardComponent as aq, EMBEDDED_FONTS_STYLE_ID as ar, EMPHASIS_PRESETS as as, ENTRANCE_PRESETS as at, TEMPLATES as au, EXIT_PRESETS as av, EditorContextMenuComponent as aw, EditorHistory as ax, EditorStateService as ay, EditorToolbarComponent as az, AUDIENCE_HASH as b, RibbonDrawingGroupComponent as b$, KeepAnnotationsDialogComponent as b0, LOCALE_CATALOG as b1, LONG_PRESS_DURATION_MS as b2, LONG_PRESS_MOVE_TOLERANCE_PX as b3, LoadContentService as b4, LocalPresencePublisher as b5, MAX_ZOOM_SCALE as b6, MIN_ZOOM_SCALE as b7, MOTION_PATH_COLUMNS as b8, MediaPreviewComponent as b9, PresentationAnnotationOverlayComponent as bA, PresentationAnnotationsService as bB, PresentationOverlayComponent as bC, PresentationPropertiesPanelComponent as bD, PresentationSettingsCardComponent as bE, PresentationSubtitleBarComponent as bF, PresentationToolbarComponent as bG, PresentationTransitionOverlayComponent as bH, PresenterViewComponent as bI, PresenterWindowService as bJ, PrintDialogComponent as bK, PrintService as bL, PrintSettingsPanelComponent as bM, PropertiesDialogComponent as bN, REPEAT_MODE_OPTIONS as bO, RESIZE_HANDLES as bP, RULER_FONT_SIZE as bQ, RULER_THICKNESS as bR, ReadingViewOverlayComponent as bS, RemoteSelectionOverlayComponent as bT, RibbonAnimationGalleryComponent as bU, RibbonAnimationsSectionComponent as bV, RibbonArrangeSectionComponent as bW, RibbonColorPopoverComponent as bX, RibbonComponent as bY, RibbonDesignSectionComponent as bZ, RibbonDrawSectionComponent as b_, MediaPropertiesPanelComponent as ba, MediaRendererComponent as bb, MediaTrimTimelineComponent as bc, MobileBottomBarComponent as bd, MobileMenuSheetComponent as be, MobilePresenterViewComponent as bf, MobileSheetComponent as bg, MobileSlidesSheetComponent as bh, MobileToolbarComponent as bi, ModalDialogComponent as bj, Model3DRendererComponent as bk, NotesHandoutCardComponent as bl, NotesPanelComponent as bm, NotesToolbarComponent as bn, OleRendererComponent as bo, OutlineViewOverlayComponent as bp, POWER_POINT_VIEWER_PROVIDERS as bq, PRESENTER_CHANNEL_NAME as br, PRESENTER_MSG_ORIGIN as bs, PRESENTER_TIMER_SEGMENT_MS as bt, PX_PER_CM as bu, PX_PER_INCH as bv, PasswordProtectionDialogComponent as bw, PasswordStrengthMeterComponent as bx, PowerPointViewerComponent as by, PresentToolbarAutoHide as bz, AUDIENCE_NONCE_KEY as c, TIMING_CURVE_OPTIONS as c$, RibbonEditingSectionComponent as c0, RibbonFileSectionComponent as c1, RibbonFontControlsComponent as c2, RibbonHomeSectionComponent as c3, RibbonHyperlinkButtonComponent as c4, RibbonInsertFieldsComponent as c5, RibbonInsertSectionComponent as c6, RibbonMotionPathGalleryComponent as c7, RibbonParagraphControlsComponent as c8, RibbonPrimaryRowComponent as c9, ShowOptionsFieldsetComponent as cA, ShowSlidesFieldsetComponent as cB, SignatureStrippedDialogComponent as cC, SignaturesPanelComponent as cD, SignaturesService as cE, SlideBackgroundCardComponent as cF, SlideCanvasComponent as cG, SlideDefaultInspectorComponent as cH, SlideDiffChangesComponent as cI, SlideDiffRowComponent as cJ, SlideDiffThumbnailsComponent as cK, SlideSizeCardComponent as cL, SlideSorterOverlayComponent as cM, SlideThemeOverridePanelComponent as cN, SlideTransitionCardComponent as cO, SlidesPanelComponent as cP, SmartArt3DRendererComponent as cQ, SmartArt3DService as cR, SmartArtPreviewComponent as cS, SmartArtPropertiesComponent as cT, SmartArtRendererComponent as cU, StatusBarComponent as cV, TABLE_STRUCTURE_TOGGLES as cW, TEXT_3D_BOTTOM_BEVEL_KEYS as cX, TEXT_3D_TOP_BEVEL_KEYS as cY, TEXT_DIRECTION_OPTIONS$1 as cZ, THEME_CATALOG as c_, RibbonReviewSectionComponent as ca, RibbonShapeExtrasComponent as cb, RibbonSlideshowSectionComponent as cc, RibbonTransitionsSectionComponent as cd, RibbonViewSectionComponent as ce, RulerGuidesService as cf, SEQUENCE_OPTIONS as cg, SEVERITY_GROUPS as ch, SEVERITY_LABELS as ci, SHORTCUT_REFERENCE_ITEMS as cj, SLIDE_TRANSITION_KEYFRAMES as ck, DEFAULT_PALETTE as cl, PALETTES$1 as cm, SMART_ART_COLOR_SCHEMES as cn, SMART_ART_STYLE_OPTIONS as co, SUB_ITEM_LABEL as cp, SVG_WARP_PRESETS as cq, SWIPE_MAX_VERTICAL_PX as cr, SWIPE_THRESHOLD_PX as cs, SelectionPaneComponent as ct, SetUpSlideShowDialogComponent as cu, SettingsAppearanceTabComponent as cv, SettingsDialogComponent as cw, SettingsLanguageTabComponent as cx, ShareDialogComponent as cy, ShortcutPanelComponent as cz, AVATAR_COLOR_SWATCHES as d, applyAnimationPreset as d$, TRIGGER_OPTIONS as d0, TYPE_LABELS as d1, TableCellAdvancedFillComponent as d2, TableCellFormattingComponent as d3, TableDataEditorComponent as d4, TablePropertiesComponent as d5, TableRendererComponent as d6, TableResizeOverlayComponent as d7, TableSelectionService as d8, TagsCardComponent as d9, ViewerInspectorPanelService as dA, ViewerKeyboardService as dB, ViewerMobileSheetService as dC, ViewerPresentationModeService as dD, ViewerThemeGalleryService as dE, ViewerTouchGesturesService as dF, ViewerZoomService as dG, WEBM_MIME_CANDIDATES as dH, WriteBackScheduler as dI, ZERO_LINE_COLOR as dJ, ZoomNavigationService as dK, ZoomRendererComponent as dL, ZoomTargetService as dM, addCategory as dN, addCommentToList as dO, addGradientStopPatch as dP, addItem as dQ, addSeries as dR, addSubItem as dS, advanceStep as dT, affordanceElements as dU, aiToggleVisible as dV, alignPatch as dW, animationFor as dX, animationPresetLabelKey as dY, annotationMapToInkInserts as dZ, applyAcceptedDiff as d_, Text3DBevelSectionComponent as da, Text3DPanelComponent as db, TextAdvancedPanelComponent as dc, ThemeEditorFieldsComponent as dd, ThemeGalleryComponent as de, ThemeSelectorCardComponent as df, TitleBarComponent as dg, TitleBarSearchComponent as dh, TransitionDirectionPickerComponent as di, TransitionPreviewComponent as dj, VALIGN_OPTIONS as dk, VIEWER_THEME as dl, VersionHistoryPanelComponent as dm, ViewerCanvasEditingService as dn, ViewerCollabCursorService as dp, ViewerCollaborationSessionService as dq, ViewerCompareService as dr, ViewerCustomShowsService as ds, ViewerDialogsService as dt, ViewerDocumentPropertiesService as du, ViewerExportService as dv, ViewerExtraDialogsComponent as dw, ViewerFileIOService as dx, ViewerFindReplaceService as dy, ViewerFormatPainterService as dz, AXIS_LABEL_COLOR as e, buildZoomViewModel as e$, applyFindReplacements as e0, applyFormatToElement as e1, applyMove as e2, applyResize as e3, applyTableStylePreset as e4, asMediaElement as e5, assignUserColor as e6, attachShowVisibilityPause as e7, attachTouchGestures as e8, axisTickValues as e9, buildFontFaceRule as eA, buildGradientFillCss as eB, buildGridlinesAndLabels as eC, buildHyperlinkPatch as eD, buildInkContainerStyle as eE, buildInkStrokes as eF, buildLegend as eG, buildModel3DContainerStyle as eH, buildModel3DViewModel as eI, buildOleActionModel as eJ, buildOleInfoRows as eK, buildPatternFillCss as eL, buildPrintHtmlDocument as eM, buildPropertiesPatch as eN, buildRegionMapViewModel as eO, buildSaveSlides as eP, buildShareUrl as eQ, buildSmartArtInsertElement as eR, buildSmartArtNodes as eS, buildStockViewModel as eT, buildSurfaceViewModel as eU, buildTableViewModel as eV, buildTreemapViewModel as eW, buildTrimFragment as eX, buildWaterfallViewModel as eY, buildZeroLine as eZ, buildZoomContainerStyle as e_, beginNodeEdit as ea, bevelSizePatch as eb, boolFromEvent as ec, bringForward as ed, bringToFront as ee, buildBarActions as ef, buildBroadcastConfig as eg, buildBroadcastViewerUrl as eh, buildCategoryLabels as ei, buildCellParagraphs as ej, buildChartViewModel as ek, buildChatLogExport as el, buildChatLogMarkdown as em, buildChromeStyle as en, buildClearHyperlinkPatch as eo, buildClickGroups as ep, buildColStyles as eq, buildCollaborationConfig as er, buildComboViewModel as es, buildCssGradientFromShapeStyle as et, buildDuotoneFilter as eu, buildDuotoneFilterId as ev, buildEmbeddedFontStyles as ew, buildEquationElement as ex, buildEquationSegment as ey, buildFallbackViewModel as ez, AccessibilityPanelComponent as f, computeTextLines as f$, bulletIndentPx as f0, canAddTopLevelNode as f1, canGroupSelection as f2, canRemoveTopLevelNode as f3, canSetStrokeWidth as f4, canStartBroadcast as f5, canStartShare as f6, canUngroupSelection as f7, canUseClipboard as f8, captionDisplayText as f9, computeBubbleRadius as fA, computeCornerHandle as fB, computeDataTablePrimitives as fC, computeDistribute as fD, computeDrawingViewBox as fE, computeErrorBarPrimitives as fF, computeFocusTargets as fG, computeHandleBoxes as fH, computeHandoutLayout as fI, computeIsMobile as fJ, computeIsTablet as fK, computeLinePoints as fL, computeLinearRegression as fM, computePageCount as fN, computePieLayout as fO, computePieSlicePath as fP, computePieSlices as fQ, computePlotLayout as fR, computeRSquared as fS, computeRadarPoints as fT, computeScatterDots as fU, computeSelectionBoxes as fV, computeSingleSelected as fW, computeSlideIndices as fX, computeSnap as fY, computeStackedBarRects as fZ, computeStackedValueRange as f_, cellRunStyle as fa, cellStyleToStyleMap as fb, cellTdStyle as fc, changeCountLabel as fd, changeIcon as fe, characterSpacingPatch as ff, checkFontAvailable as fg, clampCursorPosition as fh, clampGifDimensions as fi, clampIndex as fj, clampNotesFontSize as fk, clampScale as fl, clampStep as fm, clearAllLocalViewerData as fn, clearAudienceContent as fo, cn as fp, collectAccessibilityIssues as fq, collectElementText as fr, collectSlideText as fs, collectStoredChats as ft, collectUsedFontFamilies as fu, columnWidthStyle as fv, commitNodeText as fw, computeAlign as fx, computeAxisTitlePrimitives as fy, computeBarRects as fz, AccessibilityService as g, formatTime as g$, computeTrendlinePrimitives as g0, computeValueRange as g1, convertOmmlToMathMl as g2, copyFormatFromElement as g3, countAccessibilityIssues as g4, countAnnotationStrokes as g5, createAngularAiBridge as g6, createCustomShow as g7, createSwipeDismissDrag as g8, createWebrtcBundle as g9, enableSoftEdgePatch as gA, encodeGif as gB, endShowMediaCleanup as gC, estimatePageCount as gD, evenColumnWidths as gE, evenRowHeights as gF, exitPresentationFullscreen as gG, exportAiChatLogs as gH, extractPathPoints as gI, eyedropperAvailable as gJ, fillColorOf as gK, findInSlides as gL, findOwningSlideIndex as gM, findSlideIndexByElementId as gN, firstVisibleIndex as gO, fitPolynomial as gP, fitZoom as gQ, focusTargetChips as gR, fontMimeForFormat as gS, fontSizeOf as gT, formatAutoNumber as gU, formatAxisValue as gV, formatBytes as gW, formatCursorLabel as gX, formatElapsed as gY, formatFileSize as gZ, formatPropertyDate as g_, createWebsocketBundle as ga, cssObjectToStyleMap as gb, currentColorScheme as gc, currentLayout as gd, currentStyle as ge, defaultCssVars as gf, defaultRadius as gg, defaultThemeColors as gh, deleteElementsByIds as gi, deleteVersion as gj, demoteNode as gk, deriveModel3DBlobUrl as gl, derivePresenceList as gm, describeSmartArtBounds as gn, disableGlowPatch as go, disableInnerShadowPatch as gp, disableOuterShadowPatch as gq, disableReflectionPatch as gr, disableSoftEdgePatch as gs, duplicateElementById as gt, durationOf as gu, effectsStateOf as gv, enableGlowPatch as gw, enableInnerShadowPatch as gx, enableOuterShadowPatch as gy, enableReflectionPatch as gz, AccountPageComponent as h, isTwoTableFocus as h$, fpsToFrameIntervalMs as h0, generateBroadcastRoomId as h1, generateCommentId as h2, generateCustomShowId as h3, generatePressureCircles as h4, generateTicks as h5, getClrChangeParams as h6, getContainerStyle as h7, getDuotoneFilterDef as h8, getImageSrc as h9, gridColumns as hA, groupElements as hB, groupIssuesBySeverity as hC, hasAnimation as hD, hasCopyableFormat as hE, hasExistingLink as hF, hasExitedFullscreen as hG, hasGradientFill as hH, hasPressureVariation as hI, hasVisibleSlideAfter as hJ, headerLabel as hK, imageDimensions as hL, inkViewBox as hM, insertTableElementColumn as hN, insertTableElementRow as hO, interpolateWidth as hP, isAudienceTab as hQ, isBold as hR, isBrowserOpenableMime as hS, isChildNode as hT, isElementInteractive as hU, isInjectableUrl as hV, isItalic as hW, isPpactionUrl as hX, isPresenterMessage as hY, isSigned as hZ, isTextElement as h_, getLocalStorageUsageSummary as ha, getOleAriaLabel as hb, getOleBadgeLabel as hc, getOleDisplayName as hd, getOleDownloadFileName as he, getOleTypeColor as hf, getOleTypeLabel as hg, getPasswordStrength as hh, getPatternSvg as hi, getPlaceholderStyle as hj, getVersions as hk, getResolvedShapeClipPath as hl, getResolvedShapeClipPathFor as hm, getShapeFillStrokeStyle as hn, getSlideBackgroundStyle as ho, getSlideTransitionAnimations as hp, getSmartArtNodeBounds as hq, getSpeechRecognitionCtor as hr, getTextBlockStyle as hs, getTextWarp as ht, getTouchDistance as hu, getWarpCategory as hv, getWarpPath as hw, gradientStateFromStyle as hx, gradientStateOf as hy, gradientStatePatch as hz, ActionSettingsPanelComponent as i, planVideoSegments as i$, isUnderline as i0, isUrlSafe as i1, isValidRoomId as i2, isViewportBackgroundPressTarget as i3, isZoomActivationKey as i4, issueTrackKey as i5, issueTypeLabel as i6, keyToLabel as i7, lastVisibleIndex as i8, latexToMathml as i9, nodeFillColor as iA, nodeFontColor as iB, nodeIdFromKey as iC, nodeItalic as iD, nodeStyle as iE, normalizeFontFormat as iF, normalizeSlidesPerPage as iG, normalizeValue as iH, numFromEvent as iI, ommlToMathml as iJ, ooxmlDashToCssBorderStyle as iK, openNativeEyeDropper as iL, overallStatus as iM, paletteColor as iN, parseAudienceNonce as iO, parseNodeTextarea as iP, partitionSlides as iQ, patchChartData as iR, patchChartStyle as iS, patchTableData as iT, patchTextStyle as iU, patternPresetOptions as iV, pendingElementStyles as iW, pickColorByClickFallback as iX, pickFile as iY, pickSupportedMimeType as iZ, planGifFrames as i_, linePointsToSvgString as ia, lineSpacingPatch as ib, loadAudienceContent as ic, mergeCaptionResults as id, mergeDown as ie, mergeRight as ig, mergeSelection as ih, moveElementBy as ii, moveNodeDown as ij, moveNodeUp as ik, msToFrameDelayCs as il, narrowToCircle as im, narrowToPolygon as io, narrowToRect as ip, newChartElement as iq, newEquationElement as ir, newPresetShapeElement as is, newShapeElement as it, newSmartArtElement as iu, newTableElement as iv, newTextElement as iw, nextVisibleIndex as ix, nodeBold as iy, nodeEditBox as iz, AdvancedChartEditorComponent as j, seedPropertiesDraft as j$, pointsToSvgPathD as j0, presenceToCursors as j1, presentationStageStyle as j2, presenterTimerProgress as j3, presetByLayout as j4, presetsForCategory as j5, pressuresToWidths as j6, prevVisibleIndex as j7, projectDrawingShapes as j8, promoteNode as j9, resolveHyperlinkHref as jA, resolveInteractiveElementId as jB, resolveMediaSrc as jC, resolveOleType as jD, resolveParagraphBullet as jE, resolvePresenterNotes as jF, resolveProfileInitial as jG, resolveRegionCode as jH, resolveSlideAutoAdvanceMs as jI, resolvePalette as jJ, resolveThemeCatalogEntry as jK, resolveTransitionDuration as jL, revealedElementStyles as jM, routeOrthogonalConnector as jN, rowStyle as jO, rulerDragToGuidePosition as jP, rulerHighlight as jQ, rulerStripTicks as jR, sampleColorFromSlide as jS, sanitizeColor as jT, sanitizeSlideIndex as jU, sanitizeUserName as jV, saveViewerProfile as jW, scanAvailableFonts as jX, searchSlides as jY, seedBroadcastFields as jZ, seedHyperlinkDraft as j_, provideViewerTheme as ja, radarAngle as jb, radarRingPoints as jc, readAsDataUrl as jd, recordWebm as je, redistributeColumnWidth as jf, registerCrossSlideAudio as jg, removeAnimation as jh, removeCategory as ji, removeTableElementColumn as jj, removeCommentFromList as jk, removeElementAnimation as jl, removeGradientStopPatch as jm, removeNode as jn, removeTableElementRow as jo, removeSeries as jp, renderToCanvas as jq, reorderAnimationDown as jr, reorderAnimationUp as js, replaceInSlides as jt, replaceMatch as ju, requestPresentationFullscreen as jv, resizeElement as jw, resolveCaptionTracks as jx, resolveChartKind as jy, resolveFontVariant as jz, AiChangeOverlayComponent as k, statusKind as k$, seedShareFields as k0, segmentFrameCount as k1, selectValue$2 as k2, sendBackward as k3, sendToBack as k4, sequentialColorScale as k5, serializeWriteBack as k6, seriesColor as k7, setAnimationEmphasis as k8, setAnimationEntrance as k9, setSeriesErrorBars as kA, setSeriesMarker as kB, setSeriesName as kC, setSeriesTrendline as kD, setSeriesValue as kE, setStyle as kF, setTimingCurve as kG, setTitle as kH, setTrigger as kI, setTriggerShapeId as kJ, shapeStylePatch as kK, sheetAfterNavigate as kL, shouldBlockClickAdvance as kM, shouldUseSvgWarp as kN, showDirectionPicker as kO, showsTemplateAffordance as kP, signatureCountLabel as kQ, signatureKey as kR, signatureTimestamp as kS, signerName as kT, statusLabel as kU, slideNumberOf as kV, smartArtNodes as kW, paletteColour as kX, snapToGridStep as kY, splitCursorCell as kZ, splitMergedCell as k_, setAnimationExit as ka, setAxis as kb, setAxisLogScale as kc, setAxisTitleStyle as kd, setCategoryLabel as ke, setCellText as kf, setColorScheme as kg, setDataLabels as kh, setDataPointExplosion as ki, setDataPointFill as kj, setDataPointLabel as kk, setDataPointMarker as kl, setDelay as km, setDirection as kn, setDuration as ko, setElementPosition as kp, setGridlineStyle as kq, setLayout as kr, setLegend as ks, setNodeStyle as kt, setNodeText as ku, setRepeatCount as kv, setRepeatMode as kw, setSequence as kx, setSeriesChartType as ky, setSeriesColor as kz, AiChatPanelComponent as l, statusLabel$1 as l0, storeAudienceContent as l1, stringFromEvent$5 as l2, strokeColorOf as l3, strokeToInkElement as l4, strokeWidthOf as l5, styleShadowFilter as l6, textAdvancedPatch as l7, textAdvancedStateFromStyle as l8, textAdvancedStateOf as l9, valueToY as lA, vermilionDarkColors as lB, vermilionDarkTheme as lC, vermilionLightColors as lD, vermilionLightTheme as lE, vermilionRadius as lF, waypointsToPathD as lG, worstStatus as lH, zoomTargetSlideIndex as lI, textColorOf as la, textDirectionPatch as lb, textStyleOf as lc, textStylePatch as ld, themeStyle as le, themeToCssVars as lf, thumbnailHeight as lg, thumbnailZoom as lh, toggleCommentResolvedInList as li, toggleNodeBold as lj, toggleNodeItalic as lk, toggleSheet as ll, topLevelNodeCount as lm, transformSelectedTextCase as ln, translationsEn as lo, ungroupElements as lp, updateElementById as lq, updateGlowPatch as lr, updateGradientStopPatch as ls, updateInnerShadowPatch as lt, updateOuterShadowPatch as lu, updateReflectionPatch as lv, vAlignPatch as lw, validatePassword as lx, validatePrintSettings as ly, validateRoomId 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 };
|
|
126820
|
-
//# sourceMappingURL=pptx-angular-viewer-pptx-angular-viewer-
|
|
127081
|
+
export { CommentsService as $, ALIGN_OPTIONS as A, AnimationPlaybackService as B, AutosaveService as C, BroadcastDialogComponent as D, CHART_EDITOR_STYLES as E, CURSOR_PALETTE as F, CanvasFitService as G, ChartAxisOptionsComponent as H, ChartAxisStyleOptionsComponent as I, ChartComboTypeOptionsComponent as J, ChartDataEditorComponent as K, ChartDataLabelOptionsComponent as L, ChartDatapointMarkerOptionsComponent as M, ChartDatapointOptionsComponent as N, ChartDisplayOptionsComponent as O, ChartElementViewComponent as P, ChartErrorBarOptionsComponent as Q, ChartMarkerOptionsComponent as R, ChartPartSelectionService as S, ChartPrimitivesComponent as T, ChartRendererComponent as U, ChartTrendlineOptionsComponent as V, CollaborationCursorsComponent as W, CollaborationService as X, ColorChangedImageComponent as Y, CommentMarkersOverlayComponent as Z, CommentsPanelComponent as _, ANIMATION_PRESET_CATEGORIES as a, IsMobileService as a$, ComparePanelComponent as a0, ConnectorRendererComponent as a1, ConnectorTextOverlayComponent as a2, CustomShowsComponent as a3, DATA_TABLE_HEADER_H as a4, DATA_TABLE_KEY_W as a5, DATA_TABLE_PADDING as a6, DATA_TABLE_ROW_H as a7, DEFAULT_BOUNDS as a8, DEFAULT_BROADCAST_SERVER_URL as a9, EffectsPanelComponent as aA, ElementRendererComponent as aB, EmbeddedFontsService as aC, EncryptedFileDialogComponent as aD, EquationEditorDialogComponent as aE, EquationRendererComponent as aF, EquationTemplateGalleryComponent as aG, ExportProgressModalComponent as aH, ExportService as aI, FieldContextService as aJ, FindBarComponent as aK, FindReplaceBarComponent as aL, FollowModeBarComponent as aM, FontEmbeddingListComponent as aN, FontEmbeddingPanelComponent as aO, GALLERY_THEME_PRESETS as aP, GRIDLINE_COLOR as aQ, GradientPickerComponent as aR, HANDOUT_OPTIONS as aS, HeaderFooterDialogComponent as aT, HyperlinkDialogComponent as aU, ImagePropertiesPanelComponent as aV, InkDrawingService as aW, InkRendererComponent as aX, InsertSmartArtDialogComponent as aY, InspectorPaneHeaderComponent as aZ, InspectorPanelComponent as a_, DEFAULT_CANVAS_HEIGHT as aa, DEFAULT_CANVAS_WIDTH as ab, DEFAULT_COLOR_SCHEME as ac, DEFAULT_FILL_COLOR as ad, DEFAULT_LAYOUT as ae, DEFAULT_PALETTE$1 as af, DEFAULT_PATTERN_FILL_PRESET as ag, DEFAULT_PRINT_SETTINGS as ah, DEFAULT_SLIDE_BACKGROUND as ai, DEFAULT_STROKE_COLOR as aj, DEFAULT_STYLE as ak, DEFAULT_TABLE_ROW_HEIGHT as al, DEFAULT_TEXT_COLOR$1 as am, DEFAULT_VIEWER_PROFILE as an, DIRECTIONAL_PRESETS as ao, DIRECTION_OPTIONS as ap, DocumentPropertiesCardComponent as aq, EMBEDDED_FONTS_STYLE_ID as ar, EMPHASIS_PRESETS as as, ENTRANCE_PRESETS as at, TEMPLATES as au, EXIT_PRESETS as av, EditorContextMenuComponent as aw, EditorHistory as ax, EditorStateService as ay, EditorToolbarComponent as az, AUDIENCE_HASH as b, RibbonDrawingGroupComponent as b$, KeepAnnotationsDialogComponent as b0, LOCALE_CATALOG as b1, LONG_PRESS_DURATION_MS as b2, LONG_PRESS_MOVE_TOLERANCE_PX as b3, LoadContentService as b4, LocalPresencePublisher as b5, MAX_ZOOM_SCALE as b6, MIN_ZOOM_SCALE as b7, MOTION_PATH_COLUMNS as b8, MediaPreviewComponent as b9, PresentationAnnotationOverlayComponent as bA, PresentationAnnotationsService as bB, PresentationOverlayComponent as bC, PresentationPropertiesPanelComponent as bD, PresentationSettingsCardComponent as bE, PresentationSubtitleBarComponent as bF, PresentationToolbarComponent as bG, PresentationTransitionOverlayComponent as bH, PresenterViewComponent as bI, PresenterWindowService as bJ, PrintDialogComponent as bK, PrintService as bL, PrintSettingsPanelComponent as bM, PropertiesDialogComponent as bN, REPEAT_MODE_OPTIONS as bO, RESIZE_HANDLES as bP, RULER_FONT_SIZE as bQ, RULER_THICKNESS as bR, ReadingViewOverlayComponent as bS, RemoteSelectionOverlayComponent as bT, RibbonAnimationGalleryComponent as bU, RibbonAnimationsSectionComponent as bV, RibbonArrangeSectionComponent as bW, RibbonColorPopoverComponent as bX, RibbonComponent as bY, RibbonDesignSectionComponent as bZ, RibbonDrawSectionComponent as b_, MediaPropertiesPanelComponent as ba, MediaRendererComponent as bb, MediaTrimTimelineComponent as bc, MobileBottomBarComponent as bd, MobileMenuSheetComponent as be, MobilePresenterViewComponent as bf, MobileSheetComponent as bg, MobileSlidesSheetComponent as bh, MobileToolbarComponent as bi, ModalDialogComponent as bj, Model3DRendererComponent as bk, NotesHandoutCardComponent as bl, NotesPanelComponent as bm, NotesToolbarComponent as bn, OleRendererComponent as bo, OutlineViewOverlayComponent as bp, POWER_POINT_VIEWER_PROVIDERS as bq, PRESENTER_CHANNEL_NAME as br, PRESENTER_MSG_ORIGIN as bs, PRESENTER_TIMER_SEGMENT_MS as bt, PX_PER_CM as bu, PX_PER_INCH as bv, PasswordProtectionDialogComponent as bw, PasswordStrengthMeterComponent as bx, PowerPointViewerComponent as by, PresentToolbarAutoHide as bz, AUDIENCE_NONCE_KEY as c, TIMING_CURVE_OPTIONS as c$, RibbonEditingSectionComponent as c0, RibbonFileSectionComponent as c1, RibbonFontControlsComponent as c2, RibbonHomeSectionComponent as c3, RibbonHyperlinkButtonComponent as c4, RibbonInsertFieldsComponent as c5, RibbonInsertSectionComponent as c6, RibbonMotionPathGalleryComponent as c7, RibbonParagraphControlsComponent as c8, RibbonPrimaryRowComponent as c9, ShowOptionsFieldsetComponent as cA, ShowSlidesFieldsetComponent as cB, SignatureStrippedDialogComponent as cC, SignaturesPanelComponent as cD, SignaturesService as cE, SlideBackgroundCardComponent as cF, SlideCanvasComponent as cG, SlideDefaultInspectorComponent as cH, SlideDiffChangesComponent as cI, SlideDiffRowComponent as cJ, SlideDiffThumbnailsComponent as cK, SlideSizeCardComponent as cL, SlideSorterOverlayComponent as cM, SlideThemeOverridePanelComponent as cN, SlideTransitionCardComponent as cO, SlidesPanelComponent as cP, SmartArt3DRendererComponent as cQ, SmartArt3DService as cR, SmartArtPreviewComponent as cS, SmartArtPropertiesComponent as cT, SmartArtRendererComponent as cU, StatusBarComponent as cV, TABLE_STRUCTURE_TOGGLES as cW, TEXT_3D_BOTTOM_BEVEL_KEYS as cX, TEXT_3D_TOP_BEVEL_KEYS as cY, TEXT_DIRECTION_OPTIONS$1 as cZ, THEME_CATALOG as c_, RibbonReviewSectionComponent as ca, RibbonShapeExtrasComponent as cb, RibbonSlideshowSectionComponent as cc, RibbonTransitionsSectionComponent as cd, RibbonViewSectionComponent as ce, RulerGuidesService as cf, SEQUENCE_OPTIONS as cg, SEVERITY_GROUPS as ch, SEVERITY_LABELS as ci, SHORTCUT_REFERENCE_ITEMS as cj, SLIDE_TRANSITION_KEYFRAMES as ck, DEFAULT_PALETTE as cl, PALETTES$1 as cm, SMART_ART_COLOR_SCHEMES as cn, SMART_ART_STYLE_OPTIONS as co, SUB_ITEM_LABEL as cp, SVG_WARP_PRESETS as cq, SWIPE_MAX_VERTICAL_PX as cr, SWIPE_THRESHOLD_PX as cs, SelectionPaneComponent as ct, SetUpSlideShowDialogComponent as cu, SettingsAppearanceTabComponent as cv, SettingsDialogComponent as cw, SettingsLanguageTabComponent as cx, ShareDialogComponent as cy, ShortcutPanelComponent as cz, AVATAR_COLOR_SWATCHES as d, applyAnimationPreset as d$, TRIGGER_OPTIONS as d0, TYPE_LABELS as d1, TableCellAdvancedFillComponent as d2, TableCellFormattingComponent as d3, TableDataEditorComponent as d4, TablePropertiesComponent as d5, TableRendererComponent as d6, TableResizeOverlayComponent as d7, TableSelectionService as d8, TagsCardComponent as d9, ViewerInspectorPanelService as dA, ViewerKeyboardService as dB, ViewerMobileSheetService as dC, ViewerPresentationModeService as dD, ViewerThemeGalleryService as dE, ViewerTouchGesturesService as dF, ViewerZoomService as dG, WEBM_MIME_CANDIDATES as dH, WriteBackScheduler as dI, ZERO_LINE_COLOR as dJ, ZoomNavigationService as dK, ZoomRendererComponent as dL, ZoomTargetService as dM, addCategory as dN, addCommentToList as dO, addGradientStopPatch as dP, addItem as dQ, addSeries as dR, addSubItem as dS, advanceStep as dT, affordanceElements as dU, aiToggleVisible as dV, alignPatch as dW, animationFor as dX, animationPresetLabelKey as dY, annotationMapToInkInserts as dZ, applyAcceptedDiff as d_, Text3DBevelSectionComponent as da, Text3DPanelComponent as db, TextAdvancedPanelComponent as dc, ThemeEditorFieldsComponent as dd, ThemeGalleryComponent as de, ThemeSelectorCardComponent as df, TitleBarComponent as dg, TitleBarSearchComponent as dh, TransitionDirectionPickerComponent as di, TransitionPreviewComponent as dj, VALIGN_OPTIONS as dk, VIEWER_THEME as dl, VersionHistoryPanelComponent as dm, ViewerCanvasEditingService as dn, ViewerCollabCursorService as dp, ViewerCollaborationSessionService as dq, ViewerCompareService as dr, ViewerCustomShowsService as ds, ViewerDialogsService as dt, ViewerDocumentPropertiesService as du, ViewerExportService as dv, ViewerExtraDialogsComponent as dw, ViewerFileIOService as dx, ViewerFindReplaceService as dy, ViewerFormatPainterService as dz, AXIS_LABEL_COLOR as e, buildZoomViewModel as e$, applyFindReplacements as e0, applyFormatToElement as e1, applyMove as e2, applyResize as e3, applyTableStylePreset as e4, asMediaElement as e5, assignUserColor as e6, attachShowVisibilityPause as e7, attachTouchGestures as e8, axisTickValues as e9, buildFontFaceRule as eA, buildGradientFillCss as eB, buildGridlinesAndLabels as eC, buildHyperlinkPatch as eD, buildInkContainerStyle as eE, buildInkStrokes as eF, buildLegend as eG, buildModel3DContainerStyle as eH, buildModel3DViewModel as eI, buildOleActionModel as eJ, buildOleInfoRows as eK, buildPatternFillCss as eL, buildPrintHtmlDocument as eM, buildPropertiesPatch as eN, buildRegionMapViewModel as eO, buildSaveSlides as eP, buildShareUrl as eQ, buildSmartArtInsertElement as eR, buildSmartArtNodes as eS, buildStockViewModel as eT, buildSurfaceViewModel as eU, buildTableViewModel as eV, buildTreemapViewModel as eW, buildTrimFragment as eX, buildWaterfallViewModel as eY, buildZeroLine as eZ, buildZoomContainerStyle as e_, beginNodeEdit as ea, bevelSizePatch as eb, boolFromEvent as ec, bringForward as ed, bringToFront as ee, buildBarActions as ef, buildBroadcastConfig as eg, buildBroadcastViewerUrl as eh, buildCategoryLabels as ei, buildCellParagraphs as ej, buildChartViewModel as ek, buildChatLogExport as el, buildChatLogMarkdown as em, buildChromeStyle as en, buildClearHyperlinkPatch as eo, buildClickGroups as ep, buildColStyles as eq, buildCollaborationConfig as er, buildComboViewModel as es, buildCssGradientFromShapeStyle as et, buildDuotoneFilter as eu, buildDuotoneFilterId as ev, buildEmbeddedFontStyles as ew, buildEquationElement as ex, buildEquationSegment as ey, buildFallbackViewModel as ez, AccessibilityPanelComponent as f, computeTextLines as f$, bulletIndentPx as f0, canAddTopLevelNode as f1, canGroupSelection as f2, canRemoveTopLevelNode as f3, canSetStrokeWidth as f4, canStartBroadcast as f5, canStartShare as f6, canUngroupSelection as f7, canUseClipboard as f8, captionDisplayText as f9, computeBubbleRadius as fA, computeCornerHandle as fB, computeDataTablePrimitives as fC, computeDistribute as fD, computeDrawingViewBox as fE, computeErrorBarPrimitives as fF, computeFocusTargets as fG, computeHandleBoxes as fH, computeHandoutLayout as fI, computeIsMobile as fJ, computeIsTablet as fK, computeLinePoints as fL, computeLinearRegression as fM, computePageCount as fN, computePieLayout as fO, computePieSlicePath as fP, computePieSlices as fQ, computePlotLayout as fR, computeRSquared as fS, computeRadarPoints as fT, computeScatterDots as fU, computeSelectionBoxes as fV, computeSingleSelected as fW, computeSlideIndices as fX, computeSnap as fY, computeStackedBarRects as fZ, computeStackedValueRange as f_, cellRunStyle as fa, cellStyleToStyleMap as fb, cellTdStyle as fc, changeCountLabel as fd, changeIcon as fe, characterSpacingPatch as ff, checkFontAvailable as fg, clampCursorPosition as fh, clampGifDimensions as fi, clampIndex as fj, clampNotesFontSize as fk, clampScale as fl, clampStep as fm, clearAllLocalViewerData as fn, clearAudienceContent as fo, cn as fp, collectAccessibilityIssues as fq, collectElementText as fr, collectSlideText as fs, collectStoredChats as ft, collectUsedFontFamilies as fu, columnWidthStyle as fv, commitNodeText as fw, computeAlign as fx, computeAxisTitlePrimitives as fy, computeBarRects as fz, AccessibilityService as g, formatPropertyDate as g$, computeTrendlinePrimitives as g0, computeValueRange as g1, convertOmmlToMathMl as g2, copyFormatFromElement as g3, countAccessibilityIssues as g4, countAnnotationStrokes as g5, createAngularAiBridge as g6, createCustomShow as g7, createSwipeDismissDrag as g8, createWebrtcBundle as g9, enableSoftEdgePatch as gA, encodeGif as gB, endShowMediaCleanup as gC, estimatePageCount as gD, evenColumnWidths as gE, evenRowHeights as gF, exitPresentationFullscreen as gG, exportAiChatLogs as gH, extractPathPoints as gI, eyedropperAvailable as gJ, fillColorOf as gK, findInSlides as gL, findOwningSlideIndex as gM, findSlideIndexByElementId as gN, firstVisibleIndex as gO, fitPolynomial as gP, fitZoom as gQ, focusTargetChips as gR, fontMimeForFormat as gS, fontSizeOf as gT, forgetSessionDeck as gU, formatAutoNumber as gV, formatAxisValue as gW, formatBytes as gX, formatCursorLabel as gY, formatElapsed as gZ, formatFileSize as g_, createWebsocketBundle as ga, cssObjectToStyleMap as gb, currentColorScheme as gc, currentLayout as gd, currentStyle as ge, defaultCssVars as gf, defaultRadius as gg, defaultThemeColors as gh, deleteElementsByIds as gi, deleteVersion as gj, demoteNode as gk, deriveModel3DBlobUrl as gl, derivePresenceList as gm, describeSmartArtBounds as gn, disableGlowPatch as go, disableInnerShadowPatch as gp, disableOuterShadowPatch as gq, disableReflectionPatch as gr, disableSoftEdgePatch as gs, duplicateElementById as gt, durationOf as gu, effectsStateOf as gv, enableGlowPatch as gw, enableInnerShadowPatch as gx, enableOuterShadowPatch as gy, enableReflectionPatch as gz, AccountPageComponent as h, isSigned as h$, formatTime as h0, fpsToFrameIntervalMs as h1, generateBroadcastRoomId as h2, generateCommentId as h3, generateCustomShowId as h4, generatePressureCircles as h5, generateTicks as h6, getClrChangeParams as h7, getContainerStyle as h8, getDuotoneFilterDef as h9, gradientStateOf as hA, gradientStatePatch as hB, gridColumns as hC, groupElements as hD, groupIssuesBySeverity as hE, hasAnimation as hF, hasCopyableFormat as hG, hasExistingLink as hH, hasExitedFullscreen as hI, hasGradientFill as hJ, hasPressureVariation as hK, hasVisibleSlideAfter as hL, headerLabel as hM, imageDimensions as hN, inkViewBox as hO, insertTableElementColumn as hP, insertTableElementRow as hQ, interpolateWidth as hR, isAudienceTab as hS, isBold as hT, isBrowserOpenableMime as hU, isChildNode as hV, isElementInteractive as hW, isInjectableUrl as hX, isItalic as hY, isPpactionUrl as hZ, isPresenterMessage as h_, getImageSrc as ha, getLocalStorageUsageSummary as hb, getOleAriaLabel as hc, getOleBadgeLabel as hd, getOleDisplayName as he, getOleDownloadFileName as hf, getOleTypeColor as hg, getOleTypeLabel as hh, getPasswordStrength as hi, getPatternSvg as hj, getPlaceholderStyle as hk, getVersions as hl, getResolvedShapeClipPath as hm, getResolvedShapeClipPathFor as hn, getSessionTabId as ho, getShapeFillStrokeStyle as hp, getSlideBackgroundStyle as hq, getSlideTransitionAnimations as hr, getSmartArtNodeBounds as hs, getSpeechRecognitionCtor as ht, getTextBlockStyle as hu, getTextWarp as hv, getTouchDistance as hw, getWarpCategory as hx, getWarpPath as hy, gradientStateFromStyle as hz, ActionSettingsPanelComponent as i, pickFile as i$, isTextElement as i0, isTwoTableFocus as i1, isUnderline as i2, isUrlSafe as i3, isValidRoomId as i4, isViewportBackgroundPressTarget as i5, isZoomActivationKey as i6, issueTrackKey as i7, issueTypeLabel as i8, keyToLabel as i9, nextVisibleIndex as iA, nodeBold as iB, nodeEditBox as iC, nodeFillColor as iD, nodeFontColor as iE, nodeIdFromKey as iF, nodeItalic as iG, nodeStyle as iH, normalizeFontFormat as iI, normalizeSlidesPerPage as iJ, normalizeValue as iK, numFromEvent as iL, ommlToMathml as iM, ooxmlDashToCssBorderStyle as iN, openNativeEyeDropper as iO, overallStatus as iP, paletteColor as iQ, parseAudienceNonce as iR, parseNodeTextarea as iS, partitionSlides as iT, patchChartData as iU, patchChartStyle as iV, patchTableData as iW, patchTextStyle as iX, patternPresetOptions as iY, pendingElementStyles as iZ, pickColorByClickFallback as i_, lastVisibleIndex as ia, latexToMathml as ib, linePointsToSvgString as ic, lineSpacingPatch as id, loadAudienceContent as ie, loadSessionDeck as ig, mergeCaptionResults as ih, mergeDown as ii, mergeRight as ij, mergeSelection as ik, moveElementBy as il, moveNodeDown as im, moveNodeUp as io, msToFrameDelayCs as ip, narrowToCircle as iq, narrowToPolygon as ir, narrowToRect as is, newChartElement as it, newEquationElement as iu, newPresetShapeElement as iv, newShapeElement as iw, newSmartArtElement as ix, newTableElement as iy, newTextElement as iz, AdvancedChartEditorComponent as j, saveViewerProfile as j$, pickSupportedMimeType as j0, planGifFrames as j1, planVideoSegments as j2, pointsToSvgPathD as j3, presenceToCursors as j4, presentationStageStyle as j5, presenterTimerProgress as j6, presetByLayout as j7, presetsForCategory as j8, pressuresToWidths as j9, resizeElement as jA, resolveCaptionTracks as jB, resolveChartKind as jC, resolveFontVariant as jD, resolveHyperlinkHref as jE, resolveInteractiveElementId as jF, resolveMediaSrc as jG, resolveOleType as jH, resolveParagraphBullet as jI, resolvePresenterNotes as jJ, resolveProfileInitial as jK, resolveRegionCode as jL, resolveSlideAutoAdvanceMs as jM, resolvePalette as jN, resolveThemeCatalogEntry as jO, resolveTransitionDuration as jP, restoreSessionDeck as jQ, revealedElementStyles as jR, routeOrthogonalConnector as jS, rowStyle as jT, rulerDragToGuidePosition as jU, rulerHighlight as jV, rulerStripTicks as jW, sampleColorFromSlide as jX, sanitizeColor as jY, sanitizeSlideIndex as jZ, sanitizeUserName as j_, prevVisibleIndex as ja, projectDrawingShapes as jb, promoteNode as jc, provideViewerTheme as jd, radarAngle as je, radarRingPoints as jf, readAsDataUrl as jg, recordWebm as jh, redistributeColumnWidth as ji, registerCrossSlideAudio as jj, rememberSessionDeck as jk, removeAnimation as jl, removeCategory as jm, removeTableElementColumn as jn, removeCommentFromList as jo, removeElementAnimation as jp, removeGradientStopPatch as jq, removeNode as jr, removeTableElementRow as js, removeSeries as jt, renderToCanvas as ju, reorderAnimationDown as jv, reorderAnimationUp as jw, replaceInSlides as jx, replaceMatch as jy, requestPresentationFullscreen as jz, AiChangeOverlayComponent as k, smartArtNodes as k$, scanAvailableFonts as k0, searchSlides as k1, seedBroadcastFields as k2, seedHyperlinkDraft as k3, seedPropertiesDraft as k4, seedShareFields as k5, segmentFrameCount as k6, selectValue$2 as k7, sendBackward as k8, sendToBack as k9, setRepeatCount as kA, setRepeatMode as kB, setSequence as kC, setSeriesChartType as kD, setSeriesColor as kE, setSeriesErrorBars as kF, setSeriesMarker as kG, setSeriesName as kH, setSeriesTrendline as kI, setSeriesValue as kJ, setStyle as kK, setTimingCurve as kL, setTitle as kM, setTrigger as kN, setTriggerShapeId as kO, shapeStylePatch as kP, sheetAfterNavigate as kQ, shouldBlockClickAdvance as kR, shouldUseSvgWarp as kS, showDirectionPicker as kT, showsTemplateAffordance as kU, signatureCountLabel as kV, signatureKey as kW, signatureTimestamp as kX, signerName as kY, statusLabel as kZ, slideNumberOf as k_, sequentialColorScale as ka, serializeWriteBack as kb, seriesColor as kc, setAnimationEmphasis as kd, setAnimationEntrance as ke, setAnimationExit as kf, setAxis as kg, setAxisLogScale as kh, setAxisTitleStyle as ki, setCategoryLabel as kj, setCellText as kk, setColorScheme as kl, setDataLabels as km, setDataPointExplosion as kn, setDataPointFill as ko, setDataPointLabel as kp, setDataPointMarker as kq, setDelay as kr, setDirection as ks, setDuration as kt, setElementPosition as ku, setGridlineStyle as kv, setLayout as kw, setLegend as kx, setNodeStyle as ky, setNodeText as kz, AiChatPanelComponent as l, paletteColour as l0, snapToGridStep as l1, splitCursorCell as l2, splitMergedCell as l3, statusKind as l4, statusLabel$1 as l5, storeAudienceContent as l6, stringFromEvent$5 as l7, strokeColorOf as l8, strokeToInkElement as l9, updateReflectionPatch as lA, vAlignPatch as lB, validatePassword as lC, validatePrintSettings as lD, validateRoomId as lE, valueToY as lF, vermilionDarkColors as lG, vermilionDarkTheme as lH, vermilionLightColors as lI, vermilionLightTheme as lJ, vermilionRadius as lK, waypointsToPathD as lL, worstStatus as lM, zoomTargetSlideIndex as lN, strokeWidthOf as la, styleShadowFilter as lb, textAdvancedPatch as lc, textAdvancedStateFromStyle as ld, textAdvancedStateOf as le, textColorOf as lf, textDirectionPatch as lg, textStyleOf as lh, textStylePatch as li, themeStyle as lj, themeToCssVars as lk, thumbnailHeight as ll, thumbnailZoom as lm, toggleCommentResolvedInList as ln, toggleNodeBold as lo, toggleNodeItalic as lp, toggleSheet as lq, topLevelNodeCount as lr, transformSelectedTextCase as ls, translationsEn as lt, ungroupElements as lu, updateElementById as lv, updateGlowPatch as lw, updateGradientStopPatch as lx, updateInnerShadowPatch as ly, updateOuterShadowPatch 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 };
|
|
127082
|
+
//# sourceMappingURL=pptx-angular-viewer-pptx-angular-viewer-D_iIqccu.mjs.map
|