pptx-react-viewer 4.14.0 → 4.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/{AiChatPanel-WQUOEVQB.mjs → AiChatPanel-7OVUGUKW.mjs} +4 -4
- package/dist/AiChatPanel-7OVUGUKW.mjs.br +0 -0
- package/dist/AiChatPanel-7OVUGUKW.mjs.gz +0 -0
- package/dist/{AiChatPanel-PULXQTFJ.js → AiChatPanel-CDQWJTWL.js} +28 -28
- package/dist/AiChatPanel-CDQWJTWL.js.br +0 -0
- package/dist/AiChatPanel-CDQWJTWL.js.gz +0 -0
- package/dist/{Model3DScene-HZG33BWN.mjs → Model3DScene-A3CPMFAO.mjs} +1 -1
- package/dist/Model3DScene-A3CPMFAO.mjs.br +0 -0
- package/dist/Model3DScene-A3CPMFAO.mjs.gz +0 -0
- package/dist/{Model3DScene-6MYHPE5N.js → Model3DScene-OLGB7Z7Q.js} +2 -2
- package/dist/Model3DScene-OLGB7Z7Q.js.br +0 -0
- package/dist/Model3DScene-OLGB7Z7Q.js.gz +0 -0
- package/dist/{chunk-6ZR27XTL.js → chunk-2CSRCH4H.js} +2321 -1211
- package/dist/chunk-2CSRCH4H.js.br +0 -0
- package/dist/chunk-2CSRCH4H.js.gz +0 -0
- package/dist/{chunk-RK5UV5HL.js → chunk-6ZPXMS64.js} +1517 -1526
- package/dist/chunk-6ZPXMS64.js.br +0 -0
- package/dist/chunk-6ZPXMS64.js.gz +0 -0
- package/dist/{chunk-ECKXYCP3.mjs → chunk-AHJ4ND7Q.mjs} +1 -1
- package/dist/chunk-AHJ4ND7Q.mjs.br +0 -0
- package/dist/chunk-AHJ4ND7Q.mjs.gz +0 -0
- package/dist/{chunk-UWVRB4Z5.mjs → chunk-AIWEM7VE.mjs} +2312 -1210
- package/dist/chunk-AIWEM7VE.mjs.br +0 -0
- package/dist/chunk-AIWEM7VE.mjs.gz +0 -0
- package/dist/{chunk-55OLQ7HS.mjs → chunk-CJSIEITL.mjs} +3 -0
- package/dist/chunk-CJSIEITL.mjs.br +0 -0
- package/dist/chunk-CJSIEITL.mjs.gz +0 -0
- package/dist/{chunk-DI4YTG3J.js → chunk-CNXVOFUW.js} +197 -197
- package/dist/chunk-CNXVOFUW.js.br +0 -0
- package/dist/{chunk-DI4YTG3J.js.gz → chunk-CNXVOFUW.js.gz} +0 -0
- package/dist/{chunk-EPMT65EN.mjs → chunk-DNWIW75I.mjs} +6 -5
- package/dist/chunk-DNWIW75I.mjs.br +0 -0
- package/dist/chunk-DNWIW75I.mjs.gz +0 -0
- package/dist/{chunk-E6VYR3GM.js → chunk-HGO243GV.js} +818 -816
- package/dist/chunk-HGO243GV.js.br +0 -0
- package/dist/chunk-HGO243GV.js.gz +0 -0
- package/dist/{chunk-AJTFPTSN.mjs → chunk-Q5VQ53R3.mjs} +2 -2
- package/dist/chunk-Q5VQ53R3.mjs.br +0 -0
- package/dist/chunk-Q5VQ53R3.mjs.gz +0 -0
- package/dist/{chunk-WSYKEPW6.mjs → chunk-RQCAXUVQ.mjs} +342 -351
- package/dist/chunk-RQCAXUVQ.mjs.br +0 -0
- package/dist/chunk-RQCAXUVQ.mjs.gz +0 -0
- package/dist/{chunk-XWO367ZG.js → chunk-UP6PJEHM.js} +5 -5
- package/dist/chunk-UP6PJEHM.js.br +0 -0
- package/dist/chunk-UP6PJEHM.js.gz +0 -0
- package/dist/{chunk-HIYK7HPX.js → chunk-XEYB25ZT.js} +3 -0
- package/dist/chunk-XEYB25ZT.js.br +0 -0
- package/dist/chunk-XEYB25ZT.js.gz +0 -0
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.d.ts +293 -268
- package/dist/index.js +63 -63
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +600 -575
- package/dist/internals.js +105 -105
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -4
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/viewer/index.d.ts +161 -136
- package/dist/viewer/index.js +27 -27
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -6
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-PULXQTFJ.js.br +0 -0
- package/dist/AiChatPanel-PULXQTFJ.js.gz +0 -0
- package/dist/AiChatPanel-WQUOEVQB.mjs.br +0 -0
- package/dist/AiChatPanel-WQUOEVQB.mjs.gz +0 -0
- package/dist/Model3DScene-6MYHPE5N.js.br +0 -0
- package/dist/Model3DScene-6MYHPE5N.js.gz +0 -0
- package/dist/Model3DScene-HZG33BWN.mjs.br +0 -0
- package/dist/Model3DScene-HZG33BWN.mjs.gz +0 -0
- package/dist/chunk-55OLQ7HS.mjs.br +0 -0
- package/dist/chunk-55OLQ7HS.mjs.gz +0 -0
- package/dist/chunk-6ZR27XTL.js.br +0 -0
- package/dist/chunk-6ZR27XTL.js.gz +0 -0
- package/dist/chunk-AJTFPTSN.mjs.br +0 -0
- package/dist/chunk-AJTFPTSN.mjs.gz +0 -0
- package/dist/chunk-DI4YTG3J.js.br +0 -0
- package/dist/chunk-E6VYR3GM.js.br +0 -0
- package/dist/chunk-E6VYR3GM.js.gz +0 -0
- package/dist/chunk-ECKXYCP3.mjs.br +0 -0
- package/dist/chunk-ECKXYCP3.mjs.gz +0 -0
- package/dist/chunk-EPMT65EN.mjs.br +0 -0
- package/dist/chunk-EPMT65EN.mjs.gz +0 -0
- package/dist/chunk-HIYK7HPX.js.br +0 -0
- package/dist/chunk-HIYK7HPX.js.gz +0 -0
- package/dist/chunk-RK5UV5HL.js.br +0 -0
- package/dist/chunk-RK5UV5HL.js.gz +0 -0
- package/dist/chunk-UWVRB4Z5.mjs.br +0 -0
- package/dist/chunk-UWVRB4Z5.mjs.gz +0 -0
- package/dist/chunk-WSYKEPW6.mjs.br +0 -0
- package/dist/chunk-WSYKEPW6.mjs.gz +0 -0
- package/dist/chunk-XWO367ZG.js.br +0 -0
- package/dist/chunk-XWO367ZG.js.gz +0 -0
|
@@ -59217,9 +59217,9 @@ function ensureArray4(val2) {
|
|
|
59217
59217
|
}
|
|
59218
59218
|
return Array.isArray(val2) ? val2 : [val2];
|
|
59219
59219
|
}
|
|
59220
|
-
function collectControlNodes(
|
|
59221
|
-
const nodes = [...ensureArray4(
|
|
59222
|
-
const altContents = ensureArray4(
|
|
59220
|
+
function collectControlNodes(controls2) {
|
|
59221
|
+
const nodes = [...ensureArray4(controls2["p:control"])];
|
|
59222
|
+
const altContents = ensureArray4(controls2["mc:AlternateContent"]);
|
|
59223
59223
|
for (const alt of altContents) {
|
|
59224
59224
|
const fallback = alt["mc:Fallback"];
|
|
59225
59225
|
const fallbackControls = fallback ? ensureArray4(fallback["p:control"]) : [];
|
|
@@ -59276,11 +59276,11 @@ function parseActiveXControlsFromSlide(slideXml3) {
|
|
|
59276
59276
|
if (!cSld) {
|
|
59277
59277
|
return [];
|
|
59278
59278
|
}
|
|
59279
|
-
const
|
|
59280
|
-
if (!
|
|
59279
|
+
const controls2 = cSld["p:controls"];
|
|
59280
|
+
if (!controls2) {
|
|
59281
59281
|
return [];
|
|
59282
59282
|
}
|
|
59283
|
-
const controlEntries = collectControlNodes(
|
|
59283
|
+
const controlEntries = collectControlNodes(controls2);
|
|
59284
59284
|
if (controlEntries.length === 0) {
|
|
59285
59285
|
return [];
|
|
59286
59286
|
}
|
|
@@ -59371,17 +59371,17 @@ function buildActiveXControlNode(control) {
|
|
|
59371
59371
|
}
|
|
59372
59372
|
return node;
|
|
59373
59373
|
}
|
|
59374
|
-
function applyActiveXControlsToSlide(slideXml3,
|
|
59374
|
+
function applyActiveXControlsToSlide(slideXml3, controls2) {
|
|
59375
59375
|
const sld = slideXml3["p:sld"];
|
|
59376
59376
|
const cSld = sld?.["p:cSld"];
|
|
59377
59377
|
if (!cSld) {
|
|
59378
59378
|
return;
|
|
59379
59379
|
}
|
|
59380
|
-
if (!
|
|
59380
|
+
if (!controls2 || controls2.length === 0) {
|
|
59381
59381
|
delete cSld["p:controls"];
|
|
59382
59382
|
return;
|
|
59383
59383
|
}
|
|
59384
|
-
const nodes =
|
|
59384
|
+
const nodes = controls2.map(buildActiveXControlNode);
|
|
59385
59385
|
const container = cSld["p:controls"] ?? {};
|
|
59386
59386
|
const isNewContainer = cSld["p:controls"] === void 0;
|
|
59387
59387
|
container["p:control"] = nodes.length === 1 ? nodes[0] : nodes;
|
|
@@ -135053,6 +135053,28 @@ var init_slide_fingerprint = __esm({
|
|
|
135053
135053
|
UNHASHABLE_COUNTER = 0;
|
|
135054
135054
|
}
|
|
135055
135055
|
});
|
|
135056
|
+
function updateSlideLayoutRelationship(relationships2, layoutPath, relationshipType) {
|
|
135057
|
+
if (!layoutPath) {
|
|
135058
|
+
return;
|
|
135059
|
+
}
|
|
135060
|
+
const target = `../${layoutPath.replace(/^\/?ppt\//, "")}`;
|
|
135061
|
+
const existing = relationships2.find((rel) => String(rel["@_Type"]).endsWith("/slideLayout"));
|
|
135062
|
+
if (existing) {
|
|
135063
|
+
existing["@_Target"] = target;
|
|
135064
|
+
delete existing["@_TargetMode"];
|
|
135065
|
+
return;
|
|
135066
|
+
}
|
|
135067
|
+
const ids = new Set(relationships2.map((rel) => String(rel["@_Id"])));
|
|
135068
|
+
let id = 1;
|
|
135069
|
+
while (ids.has(`rId${id}`)) {
|
|
135070
|
+
id++;
|
|
135071
|
+
}
|
|
135072
|
+
relationships2.push({ "@_Id": `rId${id}`, "@_Type": relationshipType, "@_Target": target });
|
|
135073
|
+
}
|
|
135074
|
+
var init_slide_layout_relationship = __esm({
|
|
135075
|
+
"src/core/core/runtime/slide-layout-relationship.ts"() {
|
|
135076
|
+
}
|
|
135077
|
+
});
|
|
135056
135078
|
function isXmlObject7(value) {
|
|
135057
135079
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
135058
135080
|
}
|
|
@@ -135705,6 +135727,7 @@ var init_PptxHandlerRuntimeSaveSlideWriter = __esm({
|
|
|
135705
135727
|
init_PptxHandlerRuntimeSaveElementWriter();
|
|
135706
135728
|
init_save_structural_id_gate();
|
|
135707
135729
|
init_slide_fingerprint();
|
|
135730
|
+
init_slide_layout_relationship();
|
|
135708
135731
|
init_slide_save_xml_order();
|
|
135709
135732
|
init_slide_timing_reconcile();
|
|
135710
135733
|
init_slide_transition_reconcile();
|
|
@@ -135872,9 +135895,15 @@ var init_PptxHandlerRuntimeSaveSlideWriter = __esm({
|
|
|
135872
135895
|
slideRelsRoot["@_xmlns"] = constants.relationshipsNamespace;
|
|
135873
135896
|
}
|
|
135874
135897
|
const slideRelationships = this.ensureArray(slideRelsRoot["Relationship"]);
|
|
135898
|
+
updateSlideLayoutRelationship(
|
|
135899
|
+
slideRelationships,
|
|
135900
|
+
slide.layoutPath,
|
|
135901
|
+
constants.slideLayoutRelationshipType
|
|
135902
|
+
);
|
|
135875
135903
|
const slideRelationshipRegistry = new PptxSlideRelationshipRegistry({
|
|
135876
135904
|
relationships: slideRelationships
|
|
135877
135905
|
});
|
|
135906
|
+
this.slideRelsMap.set(slide.id, slideRelationshipRegistry.toRelationshipMap());
|
|
135878
135907
|
const existingCommentRelationship = slideRelationshipRegistry.removeCommentRelationships(
|
|
135879
135908
|
constants.slideCommentRelationshipType
|
|
135880
135909
|
);
|
|
@@ -136893,12 +136922,12 @@ function orderedTemplatePartXml(options) {
|
|
|
136893
136922
|
const rebuilt = positionsByRuntime.get(runtime)?.get(partPath);
|
|
136894
136923
|
const ordered4 = rebuilt ? orderShapeTreeChildren(rewrapped, (node) => rebuilt.get(node), getLocalName2) : orderContainer(rewrapped, sourceXml ? scanSpTreeDocumentOrder(sourceXml) : [], getLocalName2);
|
|
136895
136924
|
if (ordered4 === spTree) {
|
|
136896
|
-
return withOrderedTableParagraphs(xmlObj);
|
|
136925
|
+
return withOrderedTableParagraphs(xmlObj, true);
|
|
136897
136926
|
}
|
|
136898
136927
|
const nextRoot = { ...root, "p:cSld": { ...commonSlideData, "p:spTree": ordered4 } };
|
|
136899
136928
|
const nextPart = { ...xmlObj };
|
|
136900
136929
|
setOwnXmlProperty(nextPart, rootTag2, nextRoot);
|
|
136901
|
-
return withOrderedTableParagraphs(nextPart);
|
|
136930
|
+
return withOrderedTableParagraphs(nextPart, true);
|
|
136902
136931
|
}
|
|
136903
136932
|
var ALTERNATE_CONTENT_TAG3;
|
|
136904
136933
|
var positionsByRuntime;
|
|
@@ -185569,6 +185598,250 @@ pptx-ui-checkbox[checked] { border-color: var(--pptx-primary, #6366f1); }
|
|
|
185569
185598
|
}
|
|
185570
185599
|
}
|
|
185571
185600
|
`;
|
|
185601
|
+
var CONTRACT_REVISION = 1;
|
|
185602
|
+
var CONTRACT_KEY = /* @__PURE__ */ Symbol.for("pptx-viewer.web-control-contract");
|
|
185603
|
+
function assertWebControlContract(registry, names) {
|
|
185604
|
+
for (const name of names) {
|
|
185605
|
+
const ctor = registry.get(name);
|
|
185606
|
+
const revision = ctor?.[CONTRACT_KEY];
|
|
185607
|
+
if (revision !== void 0 && revision !== CONTRACT_REVISION) {
|
|
185608
|
+
throw new Error(
|
|
185609
|
+
`Incompatible ${name} contract (${revision}; expected ${CONTRACT_REVISION}). Use matching viewer bindings in this window.`
|
|
185610
|
+
);
|
|
185611
|
+
}
|
|
185612
|
+
}
|
|
185613
|
+
}
|
|
185614
|
+
function markWebControlContract(ctor) {
|
|
185615
|
+
Object.defineProperty(ctor, CONTRACT_KEY, { value: CONTRACT_REVISION });
|
|
185616
|
+
}
|
|
185617
|
+
var RIBBON_COMMAND_STYLES = `
|
|
185618
|
+
:host { display: inline-flex; flex: none; }
|
|
185619
|
+
button {
|
|
185620
|
+
box-sizing: border-box; display: inline-flex; flex-direction: column; align-items: center;
|
|
185621
|
+
justify-content: flex-start; gap: 2px; min-width: 54px; max-width: 78px; height: 58px;
|
|
185622
|
+
padding: 4px; border: 0; border-radius: 4px; background: transparent;
|
|
185623
|
+
color: var(--pptx-foreground, #f9fafb); cursor: pointer; font: inherit;
|
|
185624
|
+
font-size: 9px; line-height: 11px; text-align: center;
|
|
185625
|
+
}
|
|
185626
|
+
svg { width: 24px; height: 24px; flex: none; color: var(--pptx-primary, #6366f1);
|
|
185627
|
+
fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
|
|
185628
|
+
:host([compact]) button { flex-direction: row; align-items: center; justify-content: flex-start;
|
|
185629
|
+
gap: 6px; min-width: 88px; max-width: none; height: 26px; padding: 0 4px; font-size: 10px; text-align: left; }
|
|
185630
|
+
:host([compact]) svg { width: 16px; height: 16px; }
|
|
185631
|
+
button:hover:not(:disabled) { background: var(--pptx-accent, #33334d); }
|
|
185632
|
+
:host([active]) button { background: color-mix(in srgb, var(--pptx-primary, #6366f1) 15%, transparent); color: var(--pptx-primary, #6366f1); }
|
|
185633
|
+
button:disabled { opacity: .35; cursor: not-allowed; }
|
|
185634
|
+
button:focus-visible { outline: 2px solid var(--pptx-ring, #6366f1); outline-offset: 2px; }
|
|
185635
|
+
@media (pointer: coarse), (max-width: 767px) { :host([compact]) button { min-height: 44px; } }
|
|
185636
|
+
@media (forced-colors: active) {
|
|
185637
|
+
button { color: ButtonText; } svg { color: ButtonText; }
|
|
185638
|
+
button:disabled { color: GrayText; opacity: 1; }
|
|
185639
|
+
button:focus-visible { outline-color: Highlight; }
|
|
185640
|
+
:host([active]) button { border: 1px solid Highlight; }
|
|
185641
|
+
}
|
|
185642
|
+
`;
|
|
185643
|
+
var RIBBON_ICON_PATHS = {
|
|
185644
|
+
camera: "M2 6h4l2-3h4l2 3h4v11H2ZM7 11a3 3 0 1 0 6 0 3 3 0 1 0-6 0",
|
|
185645
|
+
eraser: "M3 12l8-8 6 6-7 7H7ZM3 17h14M7 8l6 6",
|
|
185646
|
+
reset: "M4 10a6 6 0 1 1 1.8 4.2M4 6v4h4",
|
|
185647
|
+
help: "M3 10a7 7 0 1 0 14 0 7 7 0 1 0-14 0M8 7a2 2 0 1 1 3 1.8c-.7.3-1 .8-1 1.7M10 14v.1",
|
|
185648
|
+
"play-start": "M4 3 15 10 4 17ZM17 3v14",
|
|
185649
|
+
play: "M5 3 16 10 5 17Z",
|
|
185650
|
+
presentation: "M2 3h16v11H2ZM7 18h6M10 14v4",
|
|
185651
|
+
list: "M4 4h12v12H4ZM7 8h6M7 11h6",
|
|
185652
|
+
broadcast: "M7 7a4.2 4.2 0 0 0 0 6M13 7a4.2 4.2 0 0 1 0 6M4.5 4.5a7.8 7.8 0 0 0 0 11M15.5 4.5a7.8 7.8 0 0 1 0 11M8.5 10a1.5 1.5 0 1 0 3 0 1.5 1.5 0 1 0-3 0",
|
|
185653
|
+
video: "M2 5h11v10H2ZM13 10l5-3v6Z",
|
|
185654
|
+
settings: "M3 5h14M6 10h8M8 15h4M6 3v4M12 8v4M10 13v4",
|
|
185655
|
+
"eye-off": "M2.5 10S5.5 5 10 5s7.5 5 7.5 5-3 5-7.5 5-7.5-5-7.5-5ZM4 4l12 12",
|
|
185656
|
+
clock: "M3 10a7 7 0 1 0 14 0 7 7 0 1 0-14 0M10 6v4l3 2",
|
|
185657
|
+
record: "M5 10a5 5 0 1 0 10 0 5 5 0 1 0-10 0",
|
|
185658
|
+
captions: "M2 4h16v12H2ZM5 9h4M11 9h4M5 12h3M10 12h5",
|
|
185659
|
+
keyboard: "M2 5h16v10H2ZM5 8h1M9 8h1M13 8h1M5 11h1M9 11h5",
|
|
185660
|
+
accessibility: "M8 3a2 2 0 1 0 4 0 2 2 0 1 0-4 0M3 7l7 2 7-2M10 9v4M10 13l-4 5M10 13l4 5"
|
|
185661
|
+
};
|
|
185662
|
+
function definePptxRibbonCommand(registry) {
|
|
185663
|
+
if (registry.get("pptx-ui-ribbon-command")) {
|
|
185664
|
+
return;
|
|
185665
|
+
}
|
|
185666
|
+
class RibbonCommand extends HTMLElement {
|
|
185667
|
+
static observedAttributes = [
|
|
185668
|
+
"label",
|
|
185669
|
+
"icon",
|
|
185670
|
+
"disabled",
|
|
185671
|
+
"active",
|
|
185672
|
+
"compact",
|
|
185673
|
+
"pressed",
|
|
185674
|
+
"expanded",
|
|
185675
|
+
"title",
|
|
185676
|
+
"data-ribbon-control"
|
|
185677
|
+
];
|
|
185678
|
+
button;
|
|
185679
|
+
text;
|
|
185680
|
+
path;
|
|
185681
|
+
constructor() {
|
|
185682
|
+
super();
|
|
185683
|
+
const root = this.attachShadow({ mode: "open" });
|
|
185684
|
+
attachControlStyles(root, RIBBON_COMMAND_STYLES);
|
|
185685
|
+
this.button = document.createElement("button");
|
|
185686
|
+
this.button.type = "button";
|
|
185687
|
+
this.button.setAttribute("part", "button");
|
|
185688
|
+
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
185689
|
+
svg.setAttribute("viewBox", "0 0 20 20");
|
|
185690
|
+
svg.setAttribute("aria-hidden", "true");
|
|
185691
|
+
this.path = document.createElementNS("http://www.w3.org/2000/svg", "path");
|
|
185692
|
+
svg.append(this.path);
|
|
185693
|
+
this.text = document.createElement("span");
|
|
185694
|
+
this.button.append(svg, this.text);
|
|
185695
|
+
root.append(this.button);
|
|
185696
|
+
this.button.addEventListener("keydown", (event) => {
|
|
185697
|
+
if ((event.key === " " || event.key === "Enter") && !event.ctrlKey && !event.metaKey && !event.altKey) {
|
|
185698
|
+
event.stopPropagation();
|
|
185699
|
+
}
|
|
185700
|
+
});
|
|
185701
|
+
this.button.addEventListener("click", () => {
|
|
185702
|
+
const id = this.getAttribute("data-ribbon-control");
|
|
185703
|
+
if (!this.button.disabled && id) {
|
|
185704
|
+
this.dispatchEvent(
|
|
185705
|
+
new CustomEvent("command-request", { detail: { id }, bubbles: true, composed: true })
|
|
185706
|
+
);
|
|
185707
|
+
}
|
|
185708
|
+
});
|
|
185709
|
+
}
|
|
185710
|
+
connectedCallback() {
|
|
185711
|
+
this.sync();
|
|
185712
|
+
}
|
|
185713
|
+
attributeChangedCallback() {
|
|
185714
|
+
this.sync();
|
|
185715
|
+
}
|
|
185716
|
+
sync() {
|
|
185717
|
+
this.text.textContent = this.getAttribute("label") ?? "";
|
|
185718
|
+
this.button.title = this.getAttribute("title") ?? this.text.textContent;
|
|
185719
|
+
this.button.disabled = this.hasAttribute("disabled");
|
|
185720
|
+
this.path.setAttribute("d", RIBBON_ICON_PATHS[this.getAttribute("icon") ?? ""] ?? "");
|
|
185721
|
+
for (const attr22 of ["pressed", "expanded"]) {
|
|
185722
|
+
const value = this.getAttribute(attr22);
|
|
185723
|
+
if (value === null) {
|
|
185724
|
+
this.button.removeAttribute(`aria-${attr22}`);
|
|
185725
|
+
} else {
|
|
185726
|
+
this.button.setAttribute(`aria-${attr22}`, value);
|
|
185727
|
+
}
|
|
185728
|
+
}
|
|
185729
|
+
}
|
|
185730
|
+
}
|
|
185731
|
+
registry.define("pptx-ui-ribbon-command", RibbonCommand);
|
|
185732
|
+
}
|
|
185733
|
+
var STYLES = `
|
|
185734
|
+
:host { display: inline-flex; flex: none; align-self: stretch; }
|
|
185735
|
+
.group { box-sizing: border-box; display: flex; flex-direction: column; justify-content: space-between;
|
|
185736
|
+
min-height: 78px; padding: 4px 8px 2px; border-right: 1px solid color-mix(in srgb, var(--pptx-border, #33334d) 60%, transparent); }
|
|
185737
|
+
:host(:last-child) .group { border-right: 0; }
|
|
185738
|
+
.row { display: flex; align-items: flex-start; gap: 4px; }
|
|
185739
|
+
::slotted(*) { flex-shrink: 0; }
|
|
185740
|
+
.caption { padding-top: 2px; color: var(--pptx-muted-foreground, #94a3b8); font: inherit;
|
|
185741
|
+
font-size: 9px; line-height: 12px; text-align: center; white-space: nowrap; }
|
|
185742
|
+
`;
|
|
185743
|
+
function definePptxRibbonGroup(registry) {
|
|
185744
|
+
if (registry.get("pptx-ui-ribbon-group")) {
|
|
185745
|
+
return;
|
|
185746
|
+
}
|
|
185747
|
+
class RibbonGroup extends HTMLElement {
|
|
185748
|
+
static observedAttributes = ["label"];
|
|
185749
|
+
caption;
|
|
185750
|
+
constructor() {
|
|
185751
|
+
super();
|
|
185752
|
+
const root = this.attachShadow({ mode: "open" });
|
|
185753
|
+
attachControlStyles(root, STYLES);
|
|
185754
|
+
const group2 = document.createElement("div");
|
|
185755
|
+
group2.className = "group";
|
|
185756
|
+
const row = document.createElement("div");
|
|
185757
|
+
row.className = "row";
|
|
185758
|
+
row.append(document.createElement("slot"));
|
|
185759
|
+
this.caption = document.createElement("span");
|
|
185760
|
+
this.caption.className = "caption";
|
|
185761
|
+
group2.append(row, this.caption);
|
|
185762
|
+
root.append(group2);
|
|
185763
|
+
}
|
|
185764
|
+
connectedCallback() {
|
|
185765
|
+
this.setAttribute("role", "group");
|
|
185766
|
+
this.sync();
|
|
185767
|
+
}
|
|
185768
|
+
attributeChangedCallback() {
|
|
185769
|
+
this.sync();
|
|
185770
|
+
}
|
|
185771
|
+
sync() {
|
|
185772
|
+
const label = this.getAttribute("label") ?? "";
|
|
185773
|
+
this.caption.textContent = label;
|
|
185774
|
+
this.setAttribute("aria-label", label);
|
|
185775
|
+
}
|
|
185776
|
+
}
|
|
185777
|
+
registry.define("pptx-ui-ribbon-group", RibbonGroup);
|
|
185778
|
+
}
|
|
185779
|
+
function definePptxRibbonToggle(registry) {
|
|
185780
|
+
if (registry.get("pptx-ui-ribbon-toggle")) {
|
|
185781
|
+
return;
|
|
185782
|
+
}
|
|
185783
|
+
class RibbonToggle extends HTMLElement {
|
|
185784
|
+
static observedAttributes = ["label", "checked", "disabled", "title"];
|
|
185785
|
+
checkbox;
|
|
185786
|
+
text;
|
|
185787
|
+
constructor() {
|
|
185788
|
+
super();
|
|
185789
|
+
const root = this.attachShadow({ mode: "open" });
|
|
185790
|
+
attachControlStyles(
|
|
185791
|
+
root,
|
|
185792
|
+
`
|
|
185793
|
+
:host { display: block; }
|
|
185794
|
+
label { display: flex; align-items: center; gap: 4px; min-height: 22px; padding: 0 4px;
|
|
185795
|
+
color: var(--pptx-foreground, #f9fafb); font: inherit; font-size: 10px; white-space: nowrap; cursor: pointer; }
|
|
185796
|
+
:host([disabled]) label { color: var(--pptx-muted-foreground, #9ca3af); cursor: not-allowed; }
|
|
185797
|
+
@media (pointer: coarse), (max-width: 767px) { label { min-height: 44px; font-size: 12px; } }
|
|
185798
|
+
`
|
|
185799
|
+
);
|
|
185800
|
+
const label = document.createElement("label");
|
|
185801
|
+
this.checkbox = document.createElement("pptx-ui-checkbox");
|
|
185802
|
+
this.text = document.createTextNode("");
|
|
185803
|
+
label.append(this.checkbox, this.text);
|
|
185804
|
+
label.addEventListener("click", (event) => {
|
|
185805
|
+
event.preventDefault();
|
|
185806
|
+
if (event.target !== this.checkbox) {
|
|
185807
|
+
this.checkbox.click();
|
|
185808
|
+
}
|
|
185809
|
+
});
|
|
185810
|
+
this.checkbox.addEventListener("input", (event) => event.stopPropagation());
|
|
185811
|
+
this.checkbox.addEventListener("change", (event) => {
|
|
185812
|
+
event.stopPropagation();
|
|
185813
|
+
const checked = this.checkbox.checked;
|
|
185814
|
+
this.sync();
|
|
185815
|
+
const id = this.getAttribute("data-ribbon-control");
|
|
185816
|
+
if (!this.hasAttribute("disabled") && id) {
|
|
185817
|
+
this.dispatchEvent(
|
|
185818
|
+
new CustomEvent("toggle-request", {
|
|
185819
|
+
detail: { id, checked },
|
|
185820
|
+
bubbles: true,
|
|
185821
|
+
composed: true
|
|
185822
|
+
})
|
|
185823
|
+
);
|
|
185824
|
+
}
|
|
185825
|
+
});
|
|
185826
|
+
root.append(label);
|
|
185827
|
+
}
|
|
185828
|
+
connectedCallback() {
|
|
185829
|
+
this.sync();
|
|
185830
|
+
}
|
|
185831
|
+
attributeChangedCallback() {
|
|
185832
|
+
this.sync();
|
|
185833
|
+
}
|
|
185834
|
+
sync() {
|
|
185835
|
+
const label = this.getAttribute("label") ?? "";
|
|
185836
|
+
this.text.textContent = label;
|
|
185837
|
+
this.checkbox.setAttribute("aria-label", label);
|
|
185838
|
+
this.checkbox.title = this.getAttribute("title") ?? label;
|
|
185839
|
+
this.checkbox.checked = this.hasAttribute("checked");
|
|
185840
|
+
this.checkbox.disabled = this.hasAttribute("disabled");
|
|
185841
|
+
}
|
|
185842
|
+
}
|
|
185843
|
+
registry.define("pptx-ui-ribbon-toggle", RibbonToggle);
|
|
185844
|
+
}
|
|
185572
185845
|
var SEARCH_STYLES = `
|
|
185573
185846
|
:host {
|
|
185574
185847
|
display: flex;
|
|
@@ -186008,6 +186281,9 @@ function definePptxSelect(registry) {
|
|
|
186008
186281
|
}
|
|
186009
186282
|
disconnectedCallback() {
|
|
186010
186283
|
this.close();
|
|
186284
|
+
window.clearTimeout(this.searchTimer);
|
|
186285
|
+
this.searchTimer = 0;
|
|
186286
|
+
this.search = "";
|
|
186011
186287
|
this.observer.disconnect();
|
|
186012
186288
|
cancelAnimationFrame(this.refreshFrame);
|
|
186013
186289
|
this.refreshFrame = 0;
|
|
@@ -186179,796 +186455,6 @@ function definePptxSelect(registry) {
|
|
|
186179
186455
|
}
|
|
186180
186456
|
registry.define("pptx-ui-select", PptxSelect);
|
|
186181
186457
|
}
|
|
186182
|
-
function registerPptxWebControls() {
|
|
186183
|
-
if (typeof window === "undefined" || !window.customElements) {
|
|
186184
|
-
return;
|
|
186185
|
-
}
|
|
186186
|
-
if (!document.getElementById("pptx-ui-control-hosts")) {
|
|
186187
|
-
const style = document.createElement("style");
|
|
186188
|
-
style.id = "pptx-ui-control-hosts";
|
|
186189
|
-
style.textContent = HOST_STYLES;
|
|
186190
|
-
document.head.append(style);
|
|
186191
|
-
}
|
|
186192
|
-
definePptxSearchField(window.customElements);
|
|
186193
|
-
definePptxCheckbox(window.customElements);
|
|
186194
|
-
definePptxSelect(window.customElements);
|
|
186195
|
-
}
|
|
186196
|
-
var defaultThemeColors = {
|
|
186197
|
-
background: "#030712",
|
|
186198
|
-
// gray-950
|
|
186199
|
-
foreground: "#f3f4f6",
|
|
186200
|
-
// gray-100
|
|
186201
|
-
card: "#111827",
|
|
186202
|
-
// gray-900
|
|
186203
|
-
cardForeground: "#f3f4f6",
|
|
186204
|
-
// gray-100
|
|
186205
|
-
popover: "#111827",
|
|
186206
|
-
// gray-900
|
|
186207
|
-
popoverForeground: "#f3f4f6",
|
|
186208
|
-
// gray-100
|
|
186209
|
-
primary: "#6366f1",
|
|
186210
|
-
// indigo-500
|
|
186211
|
-
primaryForeground: "#ffffff",
|
|
186212
|
-
// white
|
|
186213
|
-
secondary: "#1f2937",
|
|
186214
|
-
// gray-800
|
|
186215
|
-
secondaryForeground: "#f3f4f6",
|
|
186216
|
-
// gray-100
|
|
186217
|
-
muted: "#1f2937",
|
|
186218
|
-
// gray-800
|
|
186219
|
-
mutedForeground: "#9ca3af",
|
|
186220
|
-
// gray-400
|
|
186221
|
-
accent: "#1f2937",
|
|
186222
|
-
// gray-800
|
|
186223
|
-
accentForeground: "#f3f4f6",
|
|
186224
|
-
// gray-100
|
|
186225
|
-
destructive: "#ef4444",
|
|
186226
|
-
// red-500
|
|
186227
|
-
destructiveForeground: "#ffffff",
|
|
186228
|
-
// white
|
|
186229
|
-
border: "#374151",
|
|
186230
|
-
// gray-700
|
|
186231
|
-
input: "#374151",
|
|
186232
|
-
// gray-700
|
|
186233
|
-
ring: "#6366f1"
|
|
186234
|
-
// indigo-500
|
|
186235
|
-
};
|
|
186236
|
-
var defaultRadius = "0.5rem";
|
|
186237
|
-
var lightThemeColors = {
|
|
186238
|
-
background: "#f8fafc",
|
|
186239
|
-
// slate-50
|
|
186240
|
-
foreground: "#0f172a",
|
|
186241
|
-
// slate-900
|
|
186242
|
-
card: "#ffffff",
|
|
186243
|
-
cardForeground: "#0f172a",
|
|
186244
|
-
// slate-900
|
|
186245
|
-
popover: "#ffffff",
|
|
186246
|
-
popoverForeground: "#0f172a",
|
|
186247
|
-
// slate-900
|
|
186248
|
-
primary: "#4f46e5",
|
|
186249
|
-
// indigo-600
|
|
186250
|
-
primaryForeground: "#ffffff",
|
|
186251
|
-
secondary: "#f1f5f9",
|
|
186252
|
-
// slate-100
|
|
186253
|
-
secondaryForeground: "#0f172a",
|
|
186254
|
-
// slate-900
|
|
186255
|
-
muted: "#f1f5f9",
|
|
186256
|
-
// slate-100
|
|
186257
|
-
mutedForeground: "#64748b",
|
|
186258
|
-
// slate-500
|
|
186259
|
-
accent: "#f1f5f9",
|
|
186260
|
-
// slate-100
|
|
186261
|
-
accentForeground: "#0f172a",
|
|
186262
|
-
// slate-900
|
|
186263
|
-
destructive: "#dc2626",
|
|
186264
|
-
// red-600
|
|
186265
|
-
destructiveForeground: "#ffffff",
|
|
186266
|
-
border: "#e2e8f0",
|
|
186267
|
-
// slate-200
|
|
186268
|
-
input: "#e2e8f0",
|
|
186269
|
-
// slate-200
|
|
186270
|
-
ring: "#4f46e5"
|
|
186271
|
-
// indigo-600
|
|
186272
|
-
};
|
|
186273
|
-
var lightTheme = {
|
|
186274
|
-
colors: lightThemeColors
|
|
186275
|
-
};
|
|
186276
|
-
var COLOR_KEY_TO_CSS = {
|
|
186277
|
-
background: "background",
|
|
186278
|
-
foreground: "foreground",
|
|
186279
|
-
card: "card",
|
|
186280
|
-
cardForeground: "card-foreground",
|
|
186281
|
-
popover: "popover",
|
|
186282
|
-
popoverForeground: "popover-foreground",
|
|
186283
|
-
primary: "primary",
|
|
186284
|
-
primaryForeground: "primary-foreground",
|
|
186285
|
-
secondary: "secondary",
|
|
186286
|
-
secondaryForeground: "secondary-foreground",
|
|
186287
|
-
muted: "muted",
|
|
186288
|
-
mutedForeground: "muted-foreground",
|
|
186289
|
-
accent: "accent",
|
|
186290
|
-
accentForeground: "accent-foreground",
|
|
186291
|
-
destructive: "destructive",
|
|
186292
|
-
destructiveForeground: "destructive-foreground",
|
|
186293
|
-
border: "border",
|
|
186294
|
-
input: "input",
|
|
186295
|
-
ring: "ring"
|
|
186296
|
-
};
|
|
186297
|
-
var DERIVED_COLOR_TOKENS = [
|
|
186298
|
-
{ source: "primary", cssSuffix: "inspector-active" },
|
|
186299
|
-
{ source: "border", cssSuffix: "inspector-border" }
|
|
186300
|
-
];
|
|
186301
|
-
function themeToCssVars(theme, omitDefaults = false) {
|
|
186302
|
-
const vars = {};
|
|
186303
|
-
if (!theme) {
|
|
186304
|
-
return vars;
|
|
186305
|
-
}
|
|
186306
|
-
const colors = theme.colors;
|
|
186307
|
-
if (colors) {
|
|
186308
|
-
for (const [key2, cssSuffix] of Object.entries(COLOR_KEY_TO_CSS)) {
|
|
186309
|
-
const value = colors[key2];
|
|
186310
|
-
if (value === void 0) {
|
|
186311
|
-
continue;
|
|
186312
|
-
}
|
|
186313
|
-
if (omitDefaults && value === defaultThemeColors[key2]) {
|
|
186314
|
-
continue;
|
|
186315
|
-
}
|
|
186316
|
-
vars[`--pptx-${cssSuffix}`] = value;
|
|
186317
|
-
vars[`--color-${cssSuffix}`] = value;
|
|
186318
|
-
}
|
|
186319
|
-
for (const { source, cssSuffix } of DERIVED_COLOR_TOKENS) {
|
|
186320
|
-
const value = colors[source];
|
|
186321
|
-
if (value === void 0) {
|
|
186322
|
-
continue;
|
|
186323
|
-
}
|
|
186324
|
-
if (omitDefaults && value === defaultThemeColors[source]) {
|
|
186325
|
-
continue;
|
|
186326
|
-
}
|
|
186327
|
-
vars[`--pptx-${cssSuffix}`] = value;
|
|
186328
|
-
}
|
|
186329
|
-
}
|
|
186330
|
-
if (theme.radius !== void 0) {
|
|
186331
|
-
if (!omitDefaults || theme.radius !== defaultRadius) {
|
|
186332
|
-
vars["--pptx-radius"] = theme.radius;
|
|
186333
|
-
const r = theme.radius;
|
|
186334
|
-
vars["--radius-sm"] = `calc(${r} - 4px)`;
|
|
186335
|
-
vars["--radius-md"] = `calc(${r} - 2px)`;
|
|
186336
|
-
vars["--radius-lg"] = r;
|
|
186337
|
-
vars["--radius-xl"] = `calc(${r} + 4px)`;
|
|
186338
|
-
}
|
|
186339
|
-
}
|
|
186340
|
-
if (theme.cssVars) {
|
|
186341
|
-
for (const [key2, value] of Object.entries(theme.cssVars)) {
|
|
186342
|
-
vars[key2] = value;
|
|
186343
|
-
}
|
|
186344
|
-
}
|
|
186345
|
-
return vars;
|
|
186346
|
-
}
|
|
186347
|
-
function defaultCssVars() {
|
|
186348
|
-
const vars = {};
|
|
186349
|
-
for (const [key2, cssSuffix] of Object.entries(COLOR_KEY_TO_CSS)) {
|
|
186350
|
-
vars[`--pptx-${cssSuffix}`] = defaultThemeColors[key2];
|
|
186351
|
-
}
|
|
186352
|
-
for (const { source, cssSuffix } of DERIVED_COLOR_TOKENS) {
|
|
186353
|
-
vars[`--pptx-${cssSuffix}`] = defaultThemeColors[source];
|
|
186354
|
-
}
|
|
186355
|
-
vars["--pptx-radius"] = defaultRadius;
|
|
186356
|
-
return vars;
|
|
186357
|
-
}
|
|
186358
|
-
var vermilionLightColors = {
|
|
186359
|
-
background: "#fbfaf7",
|
|
186360
|
-
foreground: "#1a1d21",
|
|
186361
|
-
card: "#ffffff",
|
|
186362
|
-
cardForeground: "#1a1d21",
|
|
186363
|
-
popover: "#ffffff",
|
|
186364
|
-
popoverForeground: "#1a1d21",
|
|
186365
|
-
primary: "#c2431f",
|
|
186366
|
-
primaryForeground: "#ffffff",
|
|
186367
|
-
secondary: "#f2efe8",
|
|
186368
|
-
secondaryForeground: "#1a1d21",
|
|
186369
|
-
muted: "#f2efe8",
|
|
186370
|
-
mutedForeground: "#5a626e",
|
|
186371
|
-
accent: "rgba(194, 67, 31, 0.08)",
|
|
186372
|
-
accentForeground: "#1a1d21",
|
|
186373
|
-
destructive: "#dc2626",
|
|
186374
|
-
destructiveForeground: "#ffffff",
|
|
186375
|
-
border: "#e6e2d9",
|
|
186376
|
-
input: "#e6e2d9",
|
|
186377
|
-
ring: "#c2431f"
|
|
186378
|
-
};
|
|
186379
|
-
var vermilionDarkColors = {
|
|
186380
|
-
background: "#0f1113",
|
|
186381
|
-
foreground: "#f0efec",
|
|
186382
|
-
card: "#171a1e",
|
|
186383
|
-
cardForeground: "#f0efec",
|
|
186384
|
-
popover: "#171a1e",
|
|
186385
|
-
popoverForeground: "#f0efec",
|
|
186386
|
-
primary: "#e86a40",
|
|
186387
|
-
primaryForeground: "#ffffff",
|
|
186388
|
-
secondary: "#1f242b",
|
|
186389
|
-
secondaryForeground: "#f0efec",
|
|
186390
|
-
muted: "#1f242b",
|
|
186391
|
-
mutedForeground: "#9aa1ab",
|
|
186392
|
-
accent: "rgba(232, 106, 64, 0.1)",
|
|
186393
|
-
accentForeground: "#f0efec",
|
|
186394
|
-
destructive: "#ef4444",
|
|
186395
|
-
destructiveForeground: "#ffffff",
|
|
186396
|
-
border: "#272c33",
|
|
186397
|
-
input: "#272c33",
|
|
186398
|
-
ring: "#e86a40"
|
|
186399
|
-
};
|
|
186400
|
-
var vermilionRadius = "0.375rem";
|
|
186401
|
-
var vermilionLightTheme = {
|
|
186402
|
-
colors: vermilionLightColors,
|
|
186403
|
-
radius: vermilionRadius
|
|
186404
|
-
};
|
|
186405
|
-
var vermilionDarkTheme = {
|
|
186406
|
-
colors: vermilionDarkColors,
|
|
186407
|
-
radius: vermilionRadius
|
|
186408
|
-
};
|
|
186409
|
-
var THEME_CATALOG = [
|
|
186410
|
-
{ key: "default", labelKey: "pptx.settings.theme.default", theme: void 0 },
|
|
186411
|
-
{ key: "light", labelKey: "pptx.settings.theme.light", theme: lightTheme },
|
|
186412
|
-
{
|
|
186413
|
-
key: "vermilionLight",
|
|
186414
|
-
labelKey: "pptx.settings.theme.vermilionLight",
|
|
186415
|
-
theme: vermilionLightTheme
|
|
186416
|
-
},
|
|
186417
|
-
{
|
|
186418
|
-
key: "vermilionDark",
|
|
186419
|
-
labelKey: "pptx.settings.theme.vermilionDark",
|
|
186420
|
-
theme: vermilionDarkTheme
|
|
186421
|
-
}
|
|
186422
|
-
];
|
|
186423
|
-
function resolveThemeCatalogEntry(key2, catalog = THEME_CATALOG) {
|
|
186424
|
-
return catalog.find((entry5) => entry5.key === key2)?.theme;
|
|
186425
|
-
}
|
|
186426
|
-
function corePreset(id) {
|
|
186427
|
-
const preset22 = THEME_PRESETS.find((p) => p.id === id);
|
|
186428
|
-
if (!preset22) {
|
|
186429
|
-
throw new Error(`theme-gallery-presets: core THEME_PRESETS is missing "${id}"`);
|
|
186430
|
-
}
|
|
186431
|
-
return preset22;
|
|
186432
|
-
}
|
|
186433
|
-
var WISP_PRESET = {
|
|
186434
|
-
id: "wisp",
|
|
186435
|
-
name: "Wisp",
|
|
186436
|
-
colorScheme: {
|
|
186437
|
-
dk1: "#000000",
|
|
186438
|
-
lt1: "#FFFFFF",
|
|
186439
|
-
dk2: "#46393B",
|
|
186440
|
-
lt2: "#E8DCD8",
|
|
186441
|
-
accent1: "#A53010",
|
|
186442
|
-
accent2: "#DE7E18",
|
|
186443
|
-
accent3: "#9F8351",
|
|
186444
|
-
accent4: "#728653",
|
|
186445
|
-
accent5: "#92AA4C",
|
|
186446
|
-
accent6: "#6AAC91",
|
|
186447
|
-
hlink: "#FB4F14",
|
|
186448
|
-
folHlink: "#E25839"
|
|
186449
|
-
},
|
|
186450
|
-
fontScheme: {
|
|
186451
|
-
majorFont: { latin: "Century Gothic" },
|
|
186452
|
-
minorFont: { latin: "Century Gothic" }
|
|
186453
|
-
}
|
|
186454
|
-
};
|
|
186455
|
-
var BERLIN_PRESET = {
|
|
186456
|
-
id: "berlin",
|
|
186457
|
-
name: "Berlin",
|
|
186458
|
-
colorScheme: {
|
|
186459
|
-
dk1: "#000000",
|
|
186460
|
-
lt1: "#FFFFFF",
|
|
186461
|
-
dk2: "#3E5C61",
|
|
186462
|
-
lt2: "#D5E0D0",
|
|
186463
|
-
accent1: "#F09415",
|
|
186464
|
-
accent2: "#C1B56B",
|
|
186465
|
-
accent3: "#89C2A3",
|
|
186466
|
-
accent4: "#729BBE",
|
|
186467
|
-
accent5: "#9A90C2",
|
|
186468
|
-
accent6: "#BE8DBE",
|
|
186469
|
-
hlink: "#25A0DA",
|
|
186470
|
-
folHlink: "#FF7F00"
|
|
186471
|
-
},
|
|
186472
|
-
fontScheme: {
|
|
186473
|
-
majorFont: { latin: "Trebuchet MS" },
|
|
186474
|
-
minorFont: { latin: "Trebuchet MS" }
|
|
186475
|
-
}
|
|
186476
|
-
};
|
|
186477
|
-
var SLICE_PRESET = {
|
|
186478
|
-
id: "slice",
|
|
186479
|
-
name: "Slice",
|
|
186480
|
-
colorScheme: {
|
|
186481
|
-
dk1: "#000000",
|
|
186482
|
-
lt1: "#FFFFFF",
|
|
186483
|
-
dk2: "#2E3B4C",
|
|
186484
|
-
lt2: "#C7CDD3",
|
|
186485
|
-
accent1: "#E2751D",
|
|
186486
|
-
accent2: "#C53B23",
|
|
186487
|
-
accent3: "#A13D69",
|
|
186488
|
-
accent4: "#58599E",
|
|
186489
|
-
accent5: "#36749D",
|
|
186490
|
-
accent6: "#4EA39A",
|
|
186491
|
-
hlink: "#FD6B32",
|
|
186492
|
-
folHlink: "#D14D0F"
|
|
186493
|
-
},
|
|
186494
|
-
fontScheme: {
|
|
186495
|
-
majorFont: { latin: "Century Gothic" },
|
|
186496
|
-
minorFont: { latin: "Century Gothic" }
|
|
186497
|
-
}
|
|
186498
|
-
};
|
|
186499
|
-
var DIVIDEND_PRESET = {
|
|
186500
|
-
id: "dividend",
|
|
186501
|
-
name: "Dividend",
|
|
186502
|
-
colorScheme: {
|
|
186503
|
-
dk1: "#000000",
|
|
186504
|
-
lt1: "#FFFFFF",
|
|
186505
|
-
dk2: "#3D3D3D",
|
|
186506
|
-
lt2: "#E1E1E1",
|
|
186507
|
-
accent1: "#4D1434",
|
|
186508
|
-
accent2: "#903163",
|
|
186509
|
-
accent3: "#B2324B",
|
|
186510
|
-
accent4: "#D34817",
|
|
186511
|
-
accent5: "#E8971C",
|
|
186512
|
-
accent6: "#FDCB00",
|
|
186513
|
-
hlink: "#A03068",
|
|
186514
|
-
folHlink: "#C34882"
|
|
186515
|
-
},
|
|
186516
|
-
fontScheme: {
|
|
186517
|
-
majorFont: { latin: "Gill Sans MT" },
|
|
186518
|
-
minorFont: { latin: "Gill Sans MT" }
|
|
186519
|
-
}
|
|
186520
|
-
};
|
|
186521
|
-
[
|
|
186522
|
-
corePreset("office"),
|
|
186523
|
-
corePreset("facet"),
|
|
186524
|
-
corePreset("integral"),
|
|
186525
|
-
corePreset("ion"),
|
|
186526
|
-
corePreset("retrospect"),
|
|
186527
|
-
corePreset("organic"),
|
|
186528
|
-
WISP_PRESET,
|
|
186529
|
-
BERLIN_PRESET,
|
|
186530
|
-
SLICE_PRESET,
|
|
186531
|
-
DIVIDEND_PRESET
|
|
186532
|
-
];
|
|
186533
|
-
function createPresentationLoadResources(handler) {
|
|
186534
|
-
const blobUrls = [];
|
|
186535
|
-
let committed = false;
|
|
186536
|
-
let released = false;
|
|
186537
|
-
return {
|
|
186538
|
-
blobUrls,
|
|
186539
|
-
/** The live viewer now owns the handler and media URLs. */
|
|
186540
|
-
commit() {
|
|
186541
|
-
committed = true;
|
|
186542
|
-
},
|
|
186543
|
-
/** Call in finally, after pending asset reads have settled. */
|
|
186544
|
-
releaseIfUncommitted() {
|
|
186545
|
-
if (committed || released) {
|
|
186546
|
-
return;
|
|
186547
|
-
}
|
|
186548
|
-
released = true;
|
|
186549
|
-
handler.dispose();
|
|
186550
|
-
for (const url of blobUrls) {
|
|
186551
|
-
if (url.startsWith("blob:")) {
|
|
186552
|
-
URL.revokeObjectURL(url);
|
|
186553
|
-
}
|
|
186554
|
-
}
|
|
186555
|
-
}
|
|
186556
|
-
};
|
|
186557
|
-
}
|
|
186558
|
-
function walkAndPatchElements(elements, patch) {
|
|
186559
|
-
let mutated = false;
|
|
186560
|
-
const next = elements.map((el) => {
|
|
186561
|
-
let updated = patch(el);
|
|
186562
|
-
if (updated.type === "group" && updated.children?.length) {
|
|
186563
|
-
const newChildren = walkAndPatchElements(updated.children, patch);
|
|
186564
|
-
if (newChildren !== updated.children) {
|
|
186565
|
-
updated = { ...updated, children: newChildren };
|
|
186566
|
-
}
|
|
186567
|
-
}
|
|
186568
|
-
if (updated !== el) {
|
|
186569
|
-
mutated = true;
|
|
186570
|
-
}
|
|
186571
|
-
return updated;
|
|
186572
|
-
});
|
|
186573
|
-
return mutated ? next : elements;
|
|
186574
|
-
}
|
|
186575
|
-
function applyImagePathPatches(elements, resolvedMap, refs) {
|
|
186576
|
-
const elementPatches = /* @__PURE__ */ new Map();
|
|
186577
|
-
for (const ref of refs) {
|
|
186578
|
-
const url = resolvedMap.get(ref.path);
|
|
186579
|
-
if (!url) {
|
|
186580
|
-
continue;
|
|
186581
|
-
}
|
|
186582
|
-
const existing = elementPatches.get(ref.element.id) ?? {};
|
|
186583
|
-
existing[ref.field] = url;
|
|
186584
|
-
elementPatches.set(ref.element.id, existing);
|
|
186585
|
-
}
|
|
186586
|
-
if (elementPatches.size === 0) {
|
|
186587
|
-
return elements;
|
|
186588
|
-
}
|
|
186589
|
-
return walkAndPatchElements(elements, (el) => {
|
|
186590
|
-
const patch = elementPatches.get(el.id);
|
|
186591
|
-
return patch ? { ...el, ...patch } : el;
|
|
186592
|
-
});
|
|
186593
|
-
}
|
|
186594
|
-
function isExternalUrl(path) {
|
|
186595
|
-
return path.startsWith("http://") || path.startsWith("https://") || path.startsWith("data:") || path.startsWith("blob:");
|
|
186596
|
-
}
|
|
186597
|
-
function collectMediaElements(elements, collector) {
|
|
186598
|
-
for (const element of elements) {
|
|
186599
|
-
if (element.type === "media") {
|
|
186600
|
-
collector.push(element);
|
|
186601
|
-
continue;
|
|
186602
|
-
}
|
|
186603
|
-
if (element.type === "group" && element.children?.length) {
|
|
186604
|
-
collectMediaElements(element.children, collector);
|
|
186605
|
-
}
|
|
186606
|
-
}
|
|
186607
|
-
}
|
|
186608
|
-
function collectImagePaths(slides) {
|
|
186609
|
-
const paths = /* @__PURE__ */ new Set();
|
|
186610
|
-
const refs = [];
|
|
186611
|
-
const walkElements = (elements) => {
|
|
186612
|
-
for (const el of elements) {
|
|
186613
|
-
if (el.type === "picture" || el.type === "image") {
|
|
186614
|
-
const pic = el;
|
|
186615
|
-
if (pic.imagePath && !pic.imageData && !isExternalUrl(pic.imagePath)) {
|
|
186616
|
-
paths.add(pic.imagePath);
|
|
186617
|
-
refs.push({ element: el, field: "imageData", path: pic.imagePath });
|
|
186618
|
-
}
|
|
186619
|
-
if (pic.svgPath && !pic.svgData && !isExternalUrl(pic.svgPath)) {
|
|
186620
|
-
paths.add(pic.svgPath);
|
|
186621
|
-
refs.push({ element: el, field: "svgData", path: pic.svgPath });
|
|
186622
|
-
}
|
|
186623
|
-
}
|
|
186624
|
-
if (el.type === "media") {
|
|
186625
|
-
const media = el;
|
|
186626
|
-
if (media.posterFramePath && !media.posterFrameData && !isExternalUrl(media.posterFramePath)) {
|
|
186627
|
-
paths.add(media.posterFramePath);
|
|
186628
|
-
refs.push({
|
|
186629
|
-
element: el,
|
|
186630
|
-
field: "posterFrameData",
|
|
186631
|
-
path: media.posterFramePath
|
|
186632
|
-
});
|
|
186633
|
-
}
|
|
186634
|
-
}
|
|
186635
|
-
if (el.type === "model3d") {
|
|
186636
|
-
const model = el;
|
|
186637
|
-
if (model.modelPath && !model.modelData && !isExternalUrl(model.modelPath)) {
|
|
186638
|
-
paths.add(model.modelPath);
|
|
186639
|
-
refs.push({ element: el, field: "modelData", path: model.modelPath });
|
|
186640
|
-
}
|
|
186641
|
-
const posterNeedsResolution = model.posterImage ? !isExternalUrl(model.posterImage) : !model.imageData;
|
|
186642
|
-
if (model.imagePath && posterNeedsResolution && !isExternalUrl(model.imagePath)) {
|
|
186643
|
-
paths.add(model.imagePath);
|
|
186644
|
-
refs.push({ element: el, field: "posterImage", path: model.imagePath });
|
|
186645
|
-
}
|
|
186646
|
-
}
|
|
186647
|
-
if (el.type === "group" && el.children?.length) {
|
|
186648
|
-
walkElements(el.children);
|
|
186649
|
-
}
|
|
186650
|
-
}
|
|
186651
|
-
};
|
|
186652
|
-
for (const slide of slides) {
|
|
186653
|
-
walkElements(slide.elements);
|
|
186654
|
-
}
|
|
186655
|
-
return { paths, refs };
|
|
186656
|
-
}
|
|
186657
|
-
function collectTableCellImagePaths(slides) {
|
|
186658
|
-
const paths = /* @__PURE__ */ new Set();
|
|
186659
|
-
const refs = [];
|
|
186660
|
-
const walkElements = (elements) => {
|
|
186661
|
-
for (const el of elements) {
|
|
186662
|
-
if (el.type === "table") {
|
|
186663
|
-
const rows = el.tableData?.rows ?? [];
|
|
186664
|
-
rows.forEach((row, rowIndex) => {
|
|
186665
|
-
row.cells.forEach((cell, cellIndex) => {
|
|
186666
|
-
const path = cell.style?.backgroundImageFillPath;
|
|
186667
|
-
if (path && !cell.style?.backgroundImageFillData && !isExternalUrl(path)) {
|
|
186668
|
-
paths.add(path);
|
|
186669
|
-
refs.push({ element: el, rowIndex, cellIndex, path });
|
|
186670
|
-
}
|
|
186671
|
-
});
|
|
186672
|
-
});
|
|
186673
|
-
}
|
|
186674
|
-
if (el.type === "group" && el.children?.length) {
|
|
186675
|
-
walkElements(el.children);
|
|
186676
|
-
}
|
|
186677
|
-
}
|
|
186678
|
-
};
|
|
186679
|
-
for (const slide of slides) {
|
|
186680
|
-
walkElements(slide.elements);
|
|
186681
|
-
}
|
|
186682
|
-
return { paths, refs };
|
|
186683
|
-
}
|
|
186684
|
-
function applyTableCellImagePatches(elements, resolvedMap, refs) {
|
|
186685
|
-
const patchesByElementId = /* @__PURE__ */ new Map();
|
|
186686
|
-
for (const ref of refs) {
|
|
186687
|
-
const url = resolvedMap.get(ref.path);
|
|
186688
|
-
if (!url) {
|
|
186689
|
-
continue;
|
|
186690
|
-
}
|
|
186691
|
-
const list2 = patchesByElementId.get(ref.element.id) ?? [];
|
|
186692
|
-
list2.push({ rowIndex: ref.rowIndex, cellIndex: ref.cellIndex, url });
|
|
186693
|
-
patchesByElementId.set(ref.element.id, list2);
|
|
186694
|
-
}
|
|
186695
|
-
if (patchesByElementId.size === 0) {
|
|
186696
|
-
return elements;
|
|
186697
|
-
}
|
|
186698
|
-
return walkAndPatchElements(elements, (el) => {
|
|
186699
|
-
const cellPatches = patchesByElementId.get(el.id);
|
|
186700
|
-
if (!cellPatches || el.type !== "table") {
|
|
186701
|
-
return el;
|
|
186702
|
-
}
|
|
186703
|
-
const table2 = el;
|
|
186704
|
-
const tableData = table2.tableData;
|
|
186705
|
-
if (!tableData) {
|
|
186706
|
-
return el;
|
|
186707
|
-
}
|
|
186708
|
-
const newRows = tableData.rows.map((row, rowIndex) => {
|
|
186709
|
-
const rowPatches = cellPatches.filter((p) => p.rowIndex === rowIndex);
|
|
186710
|
-
if (rowPatches.length === 0) {
|
|
186711
|
-
return row;
|
|
186712
|
-
}
|
|
186713
|
-
const newCells = row.cells.map((cell, cellIndex) => {
|
|
186714
|
-
const patch = rowPatches.find((p) => p.cellIndex === cellIndex);
|
|
186715
|
-
if (!patch || !cell.style) {
|
|
186716
|
-
return cell;
|
|
186717
|
-
}
|
|
186718
|
-
return {
|
|
186719
|
-
...cell,
|
|
186720
|
-
style: { ...cell.style, backgroundImageFillData: patch.url }
|
|
186721
|
-
};
|
|
186722
|
-
});
|
|
186723
|
-
return { ...row, cells: newCells };
|
|
186724
|
-
});
|
|
186725
|
-
return { ...table2, tableData: { ...tableData, rows: newRows } };
|
|
186726
|
-
});
|
|
186727
|
-
}
|
|
186728
|
-
function buildInitialGuides(presentationGuides, firstSlideGuides) {
|
|
186729
|
-
const guides = [];
|
|
186730
|
-
if (presentationGuides) {
|
|
186731
|
-
for (const g2 of presentationGuides) {
|
|
186732
|
-
guides.push({
|
|
186733
|
-
id: g2.id,
|
|
186734
|
-
axis: g2.orientation === "horz" ? "h" : "v",
|
|
186735
|
-
position: guideEmuToPx(g2.positionEmu)
|
|
186736
|
-
});
|
|
186737
|
-
}
|
|
186738
|
-
}
|
|
186739
|
-
if (firstSlideGuides) {
|
|
186740
|
-
for (const g2 of firstSlideGuides) {
|
|
186741
|
-
guides.push({
|
|
186742
|
-
id: g2.id,
|
|
186743
|
-
axis: g2.orientation === "horz" ? "h" : "v",
|
|
186744
|
-
position: guideEmuToPx(g2.positionEmu)
|
|
186745
|
-
});
|
|
186746
|
-
}
|
|
186747
|
-
}
|
|
186748
|
-
return guides;
|
|
186749
|
-
}
|
|
186750
|
-
async function resolveMediaElementSource(mediaElement, handler) {
|
|
186751
|
-
const mediaPath = mediaElement.mediaPath;
|
|
186752
|
-
if (!mediaPath) {
|
|
186753
|
-
return { mediaPath: void 0, url: void 0, isBlobUrl: false, missing: true };
|
|
186754
|
-
}
|
|
186755
|
-
if (isExternalUrl(mediaPath)) {
|
|
186756
|
-
return { mediaPath, url: mediaPath, isBlobUrl: false, missing: false };
|
|
186757
|
-
}
|
|
186758
|
-
try {
|
|
186759
|
-
const isAudioVideo = mediaElement.mediaType === "audio" || mediaElement.mediaType === "video";
|
|
186760
|
-
if (isAudioVideo) {
|
|
186761
|
-
const arrayBuffer = await handler.getMediaArrayBuffer(mediaPath);
|
|
186762
|
-
if (!arrayBuffer) {
|
|
186763
|
-
return { mediaPath, url: void 0, isBlobUrl: false, missing: true };
|
|
186764
|
-
}
|
|
186765
|
-
const mimeType = mediaElement.mediaMimeType || "application/octet-stream";
|
|
186766
|
-
const blobUrl = URL.createObjectURL(new Blob([arrayBuffer], { type: mimeType }));
|
|
186767
|
-
return { mediaPath, url: blobUrl, isBlobUrl: true, missing: false };
|
|
186768
|
-
}
|
|
186769
|
-
const dataUrl = await handler.getImageData(mediaPath);
|
|
186770
|
-
if (!dataUrl) {
|
|
186771
|
-
return { mediaPath, url: void 0, isBlobUrl: false, missing: true };
|
|
186772
|
-
}
|
|
186773
|
-
return { mediaPath, url: dataUrl, isBlobUrl: false, missing: false };
|
|
186774
|
-
} catch {
|
|
186775
|
-
return { mediaPath, url: void 0, isBlobUrl: false, missing: true };
|
|
186776
|
-
}
|
|
186777
|
-
}
|
|
186778
|
-
var TABLE_STYLE_FILL_KEYS = [
|
|
186779
|
-
"wholeTblFill",
|
|
186780
|
-
"band1HFill",
|
|
186781
|
-
"band2HFill",
|
|
186782
|
-
"band1VFill",
|
|
186783
|
-
"band2VFill",
|
|
186784
|
-
"lastColFill",
|
|
186785
|
-
"firstColFill",
|
|
186786
|
-
"lastRowFill",
|
|
186787
|
-
"seCellFill",
|
|
186788
|
-
"swCellFill",
|
|
186789
|
-
"firstRowFill",
|
|
186790
|
-
"neCellFill",
|
|
186791
|
-
"nwCellFill"
|
|
186792
|
-
];
|
|
186793
|
-
function isExternalUrl2(path) {
|
|
186794
|
-
return path.startsWith("http://") || path.startsWith("https://") || path.startsWith("data:") || path.startsWith("blob:");
|
|
186795
|
-
}
|
|
186796
|
-
function collectTableStyleImagePaths(tableStyleMap) {
|
|
186797
|
-
const paths = /* @__PURE__ */ new Set();
|
|
186798
|
-
const refs = [];
|
|
186799
|
-
if (!tableStyleMap) {
|
|
186800
|
-
return { paths, refs };
|
|
186801
|
-
}
|
|
186802
|
-
for (const [styleId, entry5] of Object.entries(tableStyleMap)) {
|
|
186803
|
-
for (const fillKey of TABLE_STYLE_FILL_KEYS) {
|
|
186804
|
-
const fill = entry5[fillKey];
|
|
186805
|
-
const path = fill?.image?.path;
|
|
186806
|
-
if (path && !fill?.image?.data && !isExternalUrl2(path)) {
|
|
186807
|
-
paths.add(path);
|
|
186808
|
-
refs.push({ styleId, fillKey, path });
|
|
186809
|
-
}
|
|
186810
|
-
}
|
|
186811
|
-
}
|
|
186812
|
-
return { paths, refs };
|
|
186813
|
-
}
|
|
186814
|
-
function applyTableStyleImagePatches(tableStyleMap, resolvedMap, refs) {
|
|
186815
|
-
const patchesByStyleId = /* @__PURE__ */ new Map();
|
|
186816
|
-
for (const ref of refs) {
|
|
186817
|
-
const url = resolvedMap.get(ref.path);
|
|
186818
|
-
if (!url) {
|
|
186819
|
-
continue;
|
|
186820
|
-
}
|
|
186821
|
-
const list2 = patchesByStyleId.get(ref.styleId) ?? [];
|
|
186822
|
-
list2.push({ fillKey: ref.fillKey, url });
|
|
186823
|
-
patchesByStyleId.set(ref.styleId, list2);
|
|
186824
|
-
}
|
|
186825
|
-
if (patchesByStyleId.size === 0) {
|
|
186826
|
-
return tableStyleMap;
|
|
186827
|
-
}
|
|
186828
|
-
const next = { ...tableStyleMap };
|
|
186829
|
-
for (const [styleId, patches] of patchesByStyleId) {
|
|
186830
|
-
const entry5 = next[styleId];
|
|
186831
|
-
if (!entry5) {
|
|
186832
|
-
continue;
|
|
186833
|
-
}
|
|
186834
|
-
const patchedEntry = { ...entry5 };
|
|
186835
|
-
for (const { fillKey, url } of patches) {
|
|
186836
|
-
const fill = patchedEntry[fillKey];
|
|
186837
|
-
if (!fill?.image) {
|
|
186838
|
-
continue;
|
|
186839
|
-
}
|
|
186840
|
-
patchedEntry[fillKey] = { ...fill, image: { ...fill.image, data: url } };
|
|
186841
|
-
}
|
|
186842
|
-
next[styleId] = patchedEntry;
|
|
186843
|
-
}
|
|
186844
|
-
return next;
|
|
186845
|
-
}
|
|
186846
|
-
function collectTextFillBlipPaths(slides) {
|
|
186847
|
-
const paths = /* @__PURE__ */ new Set();
|
|
186848
|
-
const refs = [];
|
|
186849
|
-
const walkElements = (elements) => {
|
|
186850
|
-
for (const el of elements) {
|
|
186851
|
-
if (hasTextProperties(el) && el.textSegments) {
|
|
186852
|
-
el.textSegments.forEach((segment, segmentIndex) => {
|
|
186853
|
-
const path = segment.style?.textFillBlipUrl;
|
|
186854
|
-
if (path && !isExternalUrl(path)) {
|
|
186855
|
-
paths.add(path);
|
|
186856
|
-
refs.push({ element: el, segmentIndex, path });
|
|
186857
|
-
}
|
|
186858
|
-
});
|
|
186859
|
-
}
|
|
186860
|
-
if (el.type === "group" && el.children?.length) {
|
|
186861
|
-
walkElements(el.children);
|
|
186862
|
-
}
|
|
186863
|
-
}
|
|
186864
|
-
};
|
|
186865
|
-
for (const slide of slides) {
|
|
186866
|
-
walkElements(slide.elements);
|
|
186867
|
-
}
|
|
186868
|
-
return { paths, refs };
|
|
186869
|
-
}
|
|
186870
|
-
function applyTextFillBlipPatches(elements, resolvedMap, refs) {
|
|
186871
|
-
const patchesByElementId = /* @__PURE__ */ new Map();
|
|
186872
|
-
for (const ref of refs) {
|
|
186873
|
-
const url = resolvedMap.get(ref.path);
|
|
186874
|
-
if (!url) {
|
|
186875
|
-
continue;
|
|
186876
|
-
}
|
|
186877
|
-
const list2 = patchesByElementId.get(ref.element.id) ?? [];
|
|
186878
|
-
list2.push({ segmentIndex: ref.segmentIndex, url });
|
|
186879
|
-
patchesByElementId.set(ref.element.id, list2);
|
|
186880
|
-
}
|
|
186881
|
-
if (patchesByElementId.size === 0) {
|
|
186882
|
-
return elements;
|
|
186883
|
-
}
|
|
186884
|
-
return walkAndPatchElements(elements, (el) => {
|
|
186885
|
-
const segmentPatches = patchesByElementId.get(el.id);
|
|
186886
|
-
if (!segmentPatches || !hasTextProperties(el) || !el.textSegments) {
|
|
186887
|
-
return el;
|
|
186888
|
-
}
|
|
186889
|
-
const newSegments = el.textSegments.map((segment, segmentIndex) => {
|
|
186890
|
-
const patch = segmentPatches.find((p) => p.segmentIndex === segmentIndex);
|
|
186891
|
-
if (!patch || !segment.style) {
|
|
186892
|
-
return segment;
|
|
186893
|
-
}
|
|
186894
|
-
return { ...segment, style: { ...segment.style, textFillBlipUrl: patch.url } };
|
|
186895
|
-
});
|
|
186896
|
-
return { ...el, textSegments: newSegments };
|
|
186897
|
-
});
|
|
186898
|
-
}
|
|
186899
|
-
async function resolveTableCellImageUrls(slides, getImageData) {
|
|
186900
|
-
const { paths, refs } = collectTableCellImagePaths(slides);
|
|
186901
|
-
if (paths.size === 0) {
|
|
186902
|
-
return slides;
|
|
186903
|
-
}
|
|
186904
|
-
const resolvedMap = /* @__PURE__ */ new Map();
|
|
186905
|
-
await Promise.all(
|
|
186906
|
-
Array.from(paths).map(async (path) => {
|
|
186907
|
-
try {
|
|
186908
|
-
const url = await getImageData(path);
|
|
186909
|
-
if (url) {
|
|
186910
|
-
resolvedMap.set(path, url);
|
|
186911
|
-
}
|
|
186912
|
-
} catch {
|
|
186913
|
-
}
|
|
186914
|
-
})
|
|
186915
|
-
);
|
|
186916
|
-
if (resolvedMap.size === 0) {
|
|
186917
|
-
return slides;
|
|
186918
|
-
}
|
|
186919
|
-
return slides.map((slide) => {
|
|
186920
|
-
const newElements = applyTableCellImagePatches(slide.elements, resolvedMap, refs);
|
|
186921
|
-
return newElements === slide.elements ? slide : { ...slide, elements: newElements };
|
|
186922
|
-
});
|
|
186923
|
-
}
|
|
186924
|
-
async function resolveTableStyleImageUrls(tableStyleMap, getImageData) {
|
|
186925
|
-
const { paths, refs } = collectTableStyleImagePaths(tableStyleMap);
|
|
186926
|
-
if (paths.size === 0 || !tableStyleMap) {
|
|
186927
|
-
return tableStyleMap;
|
|
186928
|
-
}
|
|
186929
|
-
const resolvedMap = /* @__PURE__ */ new Map();
|
|
186930
|
-
await Promise.all(
|
|
186931
|
-
Array.from(paths).map(async (path) => {
|
|
186932
|
-
try {
|
|
186933
|
-
const url = await getImageData(path);
|
|
186934
|
-
if (url) {
|
|
186935
|
-
resolvedMap.set(path, url);
|
|
186936
|
-
}
|
|
186937
|
-
} catch {
|
|
186938
|
-
}
|
|
186939
|
-
})
|
|
186940
|
-
);
|
|
186941
|
-
if (resolvedMap.size === 0) {
|
|
186942
|
-
return tableStyleMap;
|
|
186943
|
-
}
|
|
186944
|
-
return applyTableStyleImagePatches(tableStyleMap, resolvedMap, refs);
|
|
186945
|
-
}
|
|
186946
|
-
async function resolveTextFillBlipUrls(slides, getImageData) {
|
|
186947
|
-
const { paths, refs } = collectTextFillBlipPaths(slides);
|
|
186948
|
-
if (paths.size === 0) {
|
|
186949
|
-
return slides;
|
|
186950
|
-
}
|
|
186951
|
-
const resolvedMap = /* @__PURE__ */ new Map();
|
|
186952
|
-
await Promise.all(
|
|
186953
|
-
Array.from(paths).map(async (path) => {
|
|
186954
|
-
try {
|
|
186955
|
-
const url = await getImageData(path);
|
|
186956
|
-
if (url) {
|
|
186957
|
-
resolvedMap.set(path, url);
|
|
186958
|
-
}
|
|
186959
|
-
} catch {
|
|
186960
|
-
}
|
|
186961
|
-
})
|
|
186962
|
-
);
|
|
186963
|
-
if (resolvedMap.size === 0) {
|
|
186964
|
-
return slides;
|
|
186965
|
-
}
|
|
186966
|
-
return slides.map((slide) => {
|
|
186967
|
-
const newElements = applyTextFillBlipPatches(slide.elements, resolvedMap, refs);
|
|
186968
|
-
return newElements === slide.elements ? slide : { ...slide, elements: newElements };
|
|
186969
|
-
});
|
|
186970
|
-
}
|
|
186971
|
-
init_constants2();
|
|
186972
186458
|
function resolveLiveCustomGeometryPath(element) {
|
|
186973
186459
|
const el = element;
|
|
186974
186460
|
if (!el.pathData || !el.pathWidth || !el.pathHeight) {
|
|
@@ -196871,7 +196357,7 @@ function resolveAutoAdvanceDelayMs(slide, options) {
|
|
|
196871
196357
|
}
|
|
196872
196358
|
return advanceAfterMs;
|
|
196873
196359
|
}
|
|
196874
|
-
var PRESENTATION_INERT_CLICK_SELECTOR = 'a, button, input, select, textarea, video, audio, [data-pptx-action], [role="dialog"]';
|
|
196360
|
+
var PRESENTATION_INERT_CLICK_SELECTOR = 'a, button, input, select, textarea, video, audio, [data-pptx-action], [data-pptx-anim-trigger], [role="dialog"]';
|
|
196875
196361
|
function isInertMedia(node) {
|
|
196876
196362
|
return (node.tagName === "VIDEO" || node.tagName === "AUDIO") && !node.controls;
|
|
196877
196363
|
}
|
|
@@ -200035,6 +199521,269 @@ function collectDiagramBuildInfo(timeline) {
|
|
|
200035
199521
|
}
|
|
200036
199522
|
return info;
|
|
200037
199523
|
}
|
|
199524
|
+
var CLICK_EVENTS = /* @__PURE__ */ new Set(["onClick", "onNext"]);
|
|
199525
|
+
var TIMENODE_EVENTS = /* @__PURE__ */ new Set([
|
|
199526
|
+
"onBegin",
|
|
199527
|
+
"onEnd",
|
|
199528
|
+
"begin",
|
|
199529
|
+
"end",
|
|
199530
|
+
"onStopAudio"
|
|
199531
|
+
]);
|
|
199532
|
+
function normalizeDelay(delay) {
|
|
199533
|
+
if (delay === void 0) {
|
|
199534
|
+
return { ms: 0, indefinite: false };
|
|
199535
|
+
}
|
|
199536
|
+
if (delay < 0) {
|
|
199537
|
+
return { ms: 0, indefinite: true };
|
|
199538
|
+
}
|
|
199539
|
+
return { ms: delay, indefinite: false };
|
|
199540
|
+
}
|
|
199541
|
+
function resolveEffectiveEndCondition(conditions) {
|
|
199542
|
+
if (!conditions || conditions.length === 0) {
|
|
199543
|
+
return void 0;
|
|
199544
|
+
}
|
|
199545
|
+
const result = {
|
|
199546
|
+
endsOnMouseOut: false,
|
|
199547
|
+
endsOnClick: false,
|
|
199548
|
+
indefinite: false
|
|
199549
|
+
};
|
|
199550
|
+
for (const cond of conditions) {
|
|
199551
|
+
const evt = cond.event;
|
|
199552
|
+
if (evt === "onMouseOut") {
|
|
199553
|
+
result.endsOnMouseOut = true;
|
|
199554
|
+
} else if (evt && CLICK_EVENTS.has(evt)) {
|
|
199555
|
+
result.endsOnClick = true;
|
|
199556
|
+
if (cond.targetShapeId) {
|
|
199557
|
+
result.clickTargetShapeId = cond.targetShapeId;
|
|
199558
|
+
}
|
|
199559
|
+
} else if (evt && TIMENODE_EVENTS.has(evt) && cond.targetTimeNodeId !== void 0) {
|
|
199560
|
+
result.endsWithTimeNodeId = cond.targetTimeNodeId;
|
|
199561
|
+
}
|
|
199562
|
+
const { ms, indefinite } = normalizeDelay(cond.delay);
|
|
199563
|
+
if (indefinite) {
|
|
199564
|
+
result.indefinite = true;
|
|
199565
|
+
} else if (ms > 0 && result.delayMs === void 0) {
|
|
199566
|
+
result.delayMs = ms;
|
|
199567
|
+
}
|
|
199568
|
+
}
|
|
199569
|
+
return result;
|
|
199570
|
+
}
|
|
199571
|
+
function resolveAnimationEnd(anim) {
|
|
199572
|
+
return resolveEffectiveEndCondition(anim.endConditions);
|
|
199573
|
+
}
|
|
199574
|
+
var HOVER_EVENTS = /* @__PURE__ */ new Set(["onMouseOver"]);
|
|
199575
|
+
function isInteractiveTrigger(trigger) {
|
|
199576
|
+
return trigger === "onClick" || trigger === "onShapeClick" || trigger === "onHover";
|
|
199577
|
+
}
|
|
199578
|
+
function classifyCondition(cond) {
|
|
199579
|
+
const evt = cond.event;
|
|
199580
|
+
if (evt && CLICK_EVENTS.has(evt)) {
|
|
199581
|
+
return "click";
|
|
199582
|
+
}
|
|
199583
|
+
if (evt && HOVER_EVENTS.has(evt)) {
|
|
199584
|
+
return "hover";
|
|
199585
|
+
}
|
|
199586
|
+
if (evt === "onMediaBookmark" && cond.bookmarkTarget) {
|
|
199587
|
+
return "bookmark";
|
|
199588
|
+
}
|
|
199589
|
+
if (evt && TIMENODE_EVENTS.has(evt)) {
|
|
199590
|
+
if (cond.targetTimeNodeId !== void 0) {
|
|
199591
|
+
return "timenode";
|
|
199592
|
+
}
|
|
199593
|
+
if (evt === "onStopAudio" && cond.targetShapeId !== void 0) {
|
|
199594
|
+
return "timenode";
|
|
199595
|
+
}
|
|
199596
|
+
}
|
|
199597
|
+
return "delay";
|
|
199598
|
+
}
|
|
199599
|
+
function resolveEffectiveStartCondition(conditions, fallbackTrigger) {
|
|
199600
|
+
const base = {
|
|
199601
|
+
trigger: fallbackTrigger,
|
|
199602
|
+
delayMs: 0,
|
|
199603
|
+
hasClickAlternative: false,
|
|
199604
|
+
hasHoverAlternative: false,
|
|
199605
|
+
indefinite: false,
|
|
199606
|
+
requiresInteraction: isInteractiveTrigger(fallbackTrigger)
|
|
199607
|
+
};
|
|
199608
|
+
if (!conditions || conditions.length === 0) {
|
|
199609
|
+
return base;
|
|
199610
|
+
}
|
|
199611
|
+
let timenode;
|
|
199612
|
+
let bookmarkCond;
|
|
199613
|
+
let delayCond;
|
|
199614
|
+
let clickCond;
|
|
199615
|
+
let hoverCond;
|
|
199616
|
+
for (const cond of conditions) {
|
|
199617
|
+
switch (classifyCondition(cond)) {
|
|
199618
|
+
case "timenode":
|
|
199619
|
+
if (!timenode) {
|
|
199620
|
+
timenode = cond;
|
|
199621
|
+
} else if (cond.targetTimeNodeId !== void 0) {
|
|
199622
|
+
if (timenode.targetTimeNodeId === void 0 || cond.targetTimeNodeId < timenode.targetTimeNodeId) {
|
|
199623
|
+
timenode = cond;
|
|
199624
|
+
}
|
|
199625
|
+
}
|
|
199626
|
+
break;
|
|
199627
|
+
case "bookmark":
|
|
199628
|
+
if (!bookmarkCond) {
|
|
199629
|
+
bookmarkCond = cond;
|
|
199630
|
+
}
|
|
199631
|
+
break;
|
|
199632
|
+
case "delay":
|
|
199633
|
+
if (!delayCond || (cond.delay ?? 0) < (delayCond.delay ?? 0)) {
|
|
199634
|
+
delayCond = cond;
|
|
199635
|
+
}
|
|
199636
|
+
break;
|
|
199637
|
+
case "click":
|
|
199638
|
+
if (!clickCond) {
|
|
199639
|
+
clickCond = cond;
|
|
199640
|
+
}
|
|
199641
|
+
break;
|
|
199642
|
+
case "hover":
|
|
199643
|
+
if (!hoverCond) {
|
|
199644
|
+
hoverCond = cond;
|
|
199645
|
+
}
|
|
199646
|
+
break;
|
|
199647
|
+
}
|
|
199648
|
+
}
|
|
199649
|
+
base.hasClickAlternative = clickCond !== void 0;
|
|
199650
|
+
base.hasHoverAlternative = hoverCond !== void 0;
|
|
199651
|
+
if (clickCond?.targetShapeId) {
|
|
199652
|
+
base.clickTargetShapeId = clickCond.targetShapeId;
|
|
199653
|
+
}
|
|
199654
|
+
if (timenode) {
|
|
199655
|
+
const { ms, indefinite } = normalizeDelay(timenode.delay);
|
|
199656
|
+
base.trigger = timenode.event === "onBegin" || timenode.event === "begin" ? "withPrevious" : "afterPrevious";
|
|
199657
|
+
base.delayMs = ms;
|
|
199658
|
+
base.indefinite = indefinite;
|
|
199659
|
+
base.dependsOnTimeNodeId = timenode.targetTimeNodeId;
|
|
199660
|
+
base.dependsOnShapeId = timenode.targetTimeNodeId === void 0 ? timenode.targetShapeId : void 0;
|
|
199661
|
+
base.dependsOnEvent = timenode.event;
|
|
199662
|
+
base.requiresInteraction = false;
|
|
199663
|
+
return base;
|
|
199664
|
+
}
|
|
199665
|
+
if (bookmarkCond?.bookmarkTarget) {
|
|
199666
|
+
base.trigger = "afterPrevious";
|
|
199667
|
+
base.delayMs = 0;
|
|
199668
|
+
base.dependsOnShapeId = bookmarkCond.bookmarkTarget.shapeId;
|
|
199669
|
+
base.dependsOnEvent = "onMediaBookmark";
|
|
199670
|
+
base.dependsOnBookmarkName = bookmarkCond.bookmarkTarget.bookmarkName;
|
|
199671
|
+
base.requiresInteraction = false;
|
|
199672
|
+
return base;
|
|
199673
|
+
}
|
|
199674
|
+
if (delayCond && (delayCond.delay ?? 0) !== 0) {
|
|
199675
|
+
const { ms, indefinite } = normalizeDelay(delayCond.delay);
|
|
199676
|
+
base.trigger = clickCond ? "onClick" : "afterDelay";
|
|
199677
|
+
base.delayMs = ms;
|
|
199678
|
+
base.indefinite = indefinite;
|
|
199679
|
+
base.requiresInteraction = indefinite;
|
|
199680
|
+
return base;
|
|
199681
|
+
}
|
|
199682
|
+
if (clickCond) {
|
|
199683
|
+
base.trigger = clickCond.targetShapeId ? "onShapeClick" : "onClick";
|
|
199684
|
+
base.requiresInteraction = true;
|
|
199685
|
+
return base;
|
|
199686
|
+
}
|
|
199687
|
+
if (hoverCond) {
|
|
199688
|
+
base.trigger = "onHover";
|
|
199689
|
+
base.requiresInteraction = true;
|
|
199690
|
+
return base;
|
|
199691
|
+
}
|
|
199692
|
+
if (delayCond) {
|
|
199693
|
+
base.trigger = fallbackTrigger;
|
|
199694
|
+
base.delayMs = 0;
|
|
199695
|
+
base.requiresInteraction = false;
|
|
199696
|
+
}
|
|
199697
|
+
return base;
|
|
199698
|
+
}
|
|
199699
|
+
function resolveAnimationStart(anim) {
|
|
199700
|
+
return resolveEffectiveStartCondition(anim.startConditions, anim.trigger ?? "onClick");
|
|
199701
|
+
}
|
|
199702
|
+
var BEZIER_SAMPLES = 8;
|
|
199703
|
+
function cubicAt(p0, c1, c2, p3, t) {
|
|
199704
|
+
const mt = 1 - t;
|
|
199705
|
+
return mt * mt * mt * p0 + 3 * mt * mt * t * c1 + 3 * mt * t * t * c2 + t * t * t * p3;
|
|
199706
|
+
}
|
|
199707
|
+
function allFinite(values) {
|
|
199708
|
+
return values.every((v) => Number.isFinite(v));
|
|
199709
|
+
}
|
|
199710
|
+
function parseMotionPathPoints(motionPath) {
|
|
199711
|
+
const tokens = motionPath.match(/[MLCZmlcz]|-?\d*\.?\d+(?:[eE][-+]?\d+)?/gu);
|
|
199712
|
+
if (!tokens) {
|
|
199713
|
+
return [];
|
|
199714
|
+
}
|
|
199715
|
+
const points4 = [];
|
|
199716
|
+
let curX = 0;
|
|
199717
|
+
let curY = 0;
|
|
199718
|
+
let startX = 0;
|
|
199719
|
+
let startY = 0;
|
|
199720
|
+
let i2 = 0;
|
|
199721
|
+
let cmd = "";
|
|
199722
|
+
const nextNum = () => Number(tokens[i2++]);
|
|
199723
|
+
const push2 = (x, y) => {
|
|
199724
|
+
points4.push({ x: x * 100, y: y * 100 });
|
|
199725
|
+
};
|
|
199726
|
+
while (i2 < tokens.length) {
|
|
199727
|
+
const tok = tokens[i2];
|
|
199728
|
+
if (/^[MLCZmlcz]$/u.test(tok)) {
|
|
199729
|
+
cmd = tok;
|
|
199730
|
+
i2++;
|
|
199731
|
+
if (cmd === "Z" || cmd === "z") {
|
|
199732
|
+
curX = startX;
|
|
199733
|
+
curY = startY;
|
|
199734
|
+
}
|
|
199735
|
+
continue;
|
|
199736
|
+
}
|
|
199737
|
+
const rel = cmd === cmd.toLowerCase();
|
|
199738
|
+
const upper = cmd.toUpperCase();
|
|
199739
|
+
if (upper === "M" || upper === "L") {
|
|
199740
|
+
let x = nextNum();
|
|
199741
|
+
let y = nextNum();
|
|
199742
|
+
if (!allFinite([x, y])) {
|
|
199743
|
+
break;
|
|
199744
|
+
}
|
|
199745
|
+
if (rel) {
|
|
199746
|
+
x += curX;
|
|
199747
|
+
y += curY;
|
|
199748
|
+
}
|
|
199749
|
+
curX = x;
|
|
199750
|
+
curY = y;
|
|
199751
|
+
if (upper === "M") {
|
|
199752
|
+
startX = x;
|
|
199753
|
+
startY = y;
|
|
199754
|
+
cmd = rel ? "l" : "L";
|
|
199755
|
+
}
|
|
199756
|
+
push2(x, y);
|
|
199757
|
+
} else if (upper === "C") {
|
|
199758
|
+
let c1x = nextNum();
|
|
199759
|
+
let c1y = nextNum();
|
|
199760
|
+
let c2x = nextNum();
|
|
199761
|
+
let c2y = nextNum();
|
|
199762
|
+
let ex = nextNum();
|
|
199763
|
+
let ey = nextNum();
|
|
199764
|
+
if (!allFinite([c1x, c1y, c2x, c2y, ex, ey])) {
|
|
199765
|
+
break;
|
|
199766
|
+
}
|
|
199767
|
+
if (rel) {
|
|
199768
|
+
c1x += curX;
|
|
199769
|
+
c1y += curY;
|
|
199770
|
+
c2x += curX;
|
|
199771
|
+
c2y += curY;
|
|
199772
|
+
ex += curX;
|
|
199773
|
+
ey += curY;
|
|
199774
|
+
}
|
|
199775
|
+
for (let s = 1; s <= BEZIER_SAMPLES; s++) {
|
|
199776
|
+
const t = s / BEZIER_SAMPLES;
|
|
199777
|
+
push2(cubicAt(curX, c1x, c2x, ex, t), cubicAt(curY, c1y, c2y, ey, t));
|
|
199778
|
+
}
|
|
199779
|
+
curX = ex;
|
|
199780
|
+
curY = ey;
|
|
199781
|
+
} else {
|
|
199782
|
+
i2++;
|
|
199783
|
+
}
|
|
199784
|
+
}
|
|
199785
|
+
return points4;
|
|
199786
|
+
}
|
|
200038
199787
|
var BACKGROUND_ANIMATION_ID_SUFFIX = "::pptx-bg";
|
|
200039
199788
|
function resolveAnimationTargetId(animation) {
|
|
200040
199789
|
const targetId = (animation.target?.type === "shape" ? animation.target.subShapeId : void 0) ?? animation.targetId ?? "";
|
|
@@ -200043,6 +199792,42 @@ function resolveAnimationTargetId(animation) {
|
|
|
200043
199792
|
}
|
|
200044
199793
|
return targetId;
|
|
200045
199794
|
}
|
|
199795
|
+
var DEFAULT_SLIDE_ASPECT = 16 / 9;
|
|
199796
|
+
function pacedFractions(points4, aspect = DEFAULT_SLIDE_ASPECT) {
|
|
199797
|
+
const lengths = [0];
|
|
199798
|
+
let total = 0;
|
|
199799
|
+
for (let i2 = 1; i2 < points4.length; i2++) {
|
|
199800
|
+
const dx = (points4[i2].x - points4[i2 - 1].x) * aspect;
|
|
199801
|
+
const dy = points4[i2].y - points4[i2 - 1].y;
|
|
199802
|
+
total += Math.hypot(dx, dy);
|
|
199803
|
+
lengths.push(total);
|
|
199804
|
+
}
|
|
199805
|
+
if (total <= 0) {
|
|
199806
|
+
return points4.map((_, i2) => points4.length > 1 ? i2 / (points4.length - 1) : 0);
|
|
199807
|
+
}
|
|
199808
|
+
return lengths.map((length) => length / total);
|
|
199809
|
+
}
|
|
199810
|
+
function pacedPointAt(points4, fractions, progress) {
|
|
199811
|
+
if (points4.length === 0) {
|
|
199812
|
+
return { x: 0, y: 0 };
|
|
199813
|
+
}
|
|
199814
|
+
if (points4.length === 1 || progress <= 0) {
|
|
199815
|
+
return points4[0];
|
|
199816
|
+
}
|
|
199817
|
+
if (progress >= 1) {
|
|
199818
|
+
return points4[points4.length - 1];
|
|
199819
|
+
}
|
|
199820
|
+
let i2 = 1;
|
|
199821
|
+
while (i2 < points4.length - 1 && fractions[i2] < progress) {
|
|
199822
|
+
i2++;
|
|
199823
|
+
}
|
|
199824
|
+
const span = fractions[i2] - fractions[i2 - 1];
|
|
199825
|
+
const ratio2 = span > 0 ? (progress - fractions[i2 - 1]) / span : 1;
|
|
199826
|
+
return {
|
|
199827
|
+
x: points4[i2 - 1].x + (points4[i2].x - points4[i2 - 1].x) * ratio2,
|
|
199828
|
+
y: points4[i2 - 1].y + (points4[i2].y - points4[i2 - 1].y) * ratio2
|
|
199829
|
+
};
|
|
199830
|
+
}
|
|
200046
199831
|
var IDENT_RE = /^[#a-zA-Z_$][a-zA-Z0-9_]*/u;
|
|
200047
199832
|
var NUMBER_RE = /^\d+(\.\d+)?|^\.\d+/u;
|
|
200048
199833
|
function tokenize2(formula) {
|
|
@@ -200577,127 +200362,6 @@ function createAttributeTransformModel(anim, box) {
|
|
|
200577
200362
|
}
|
|
200578
200363
|
};
|
|
200579
200364
|
}
|
|
200580
|
-
var BEZIER_SAMPLES = 8;
|
|
200581
|
-
function cubicAt(p0, c1, c2, p3, t) {
|
|
200582
|
-
const mt = 1 - t;
|
|
200583
|
-
return mt * mt * mt * p0 + 3 * mt * mt * t * c1 + 3 * mt * t * t * c2 + t * t * t * p3;
|
|
200584
|
-
}
|
|
200585
|
-
function allFinite(values) {
|
|
200586
|
-
return values.every((v) => Number.isFinite(v));
|
|
200587
|
-
}
|
|
200588
|
-
function parseMotionPathPoints(motionPath) {
|
|
200589
|
-
const tokens = motionPath.match(/[MLCZmlcz]|-?\d*\.?\d+(?:[eE][-+]?\d+)?/gu);
|
|
200590
|
-
if (!tokens) {
|
|
200591
|
-
return [];
|
|
200592
|
-
}
|
|
200593
|
-
const points4 = [];
|
|
200594
|
-
let curX = 0;
|
|
200595
|
-
let curY = 0;
|
|
200596
|
-
let startX = 0;
|
|
200597
|
-
let startY = 0;
|
|
200598
|
-
let i2 = 0;
|
|
200599
|
-
let cmd = "";
|
|
200600
|
-
const nextNum = () => Number(tokens[i2++]);
|
|
200601
|
-
const push2 = (x, y) => {
|
|
200602
|
-
points4.push({ x: x * 100, y: y * 100 });
|
|
200603
|
-
};
|
|
200604
|
-
while (i2 < tokens.length) {
|
|
200605
|
-
const tok = tokens[i2];
|
|
200606
|
-
if (/^[MLCZmlcz]$/u.test(tok)) {
|
|
200607
|
-
cmd = tok;
|
|
200608
|
-
i2++;
|
|
200609
|
-
if (cmd === "Z" || cmd === "z") {
|
|
200610
|
-
curX = startX;
|
|
200611
|
-
curY = startY;
|
|
200612
|
-
}
|
|
200613
|
-
continue;
|
|
200614
|
-
}
|
|
200615
|
-
const rel = cmd === cmd.toLowerCase();
|
|
200616
|
-
const upper = cmd.toUpperCase();
|
|
200617
|
-
if (upper === "M" || upper === "L") {
|
|
200618
|
-
let x = nextNum();
|
|
200619
|
-
let y = nextNum();
|
|
200620
|
-
if (!allFinite([x, y])) {
|
|
200621
|
-
break;
|
|
200622
|
-
}
|
|
200623
|
-
if (rel) {
|
|
200624
|
-
x += curX;
|
|
200625
|
-
y += curY;
|
|
200626
|
-
}
|
|
200627
|
-
curX = x;
|
|
200628
|
-
curY = y;
|
|
200629
|
-
if (upper === "M") {
|
|
200630
|
-
startX = x;
|
|
200631
|
-
startY = y;
|
|
200632
|
-
cmd = rel ? "l" : "L";
|
|
200633
|
-
}
|
|
200634
|
-
push2(x, y);
|
|
200635
|
-
} else if (upper === "C") {
|
|
200636
|
-
let c1x = nextNum();
|
|
200637
|
-
let c1y = nextNum();
|
|
200638
|
-
let c2x = nextNum();
|
|
200639
|
-
let c2y = nextNum();
|
|
200640
|
-
let ex = nextNum();
|
|
200641
|
-
let ey = nextNum();
|
|
200642
|
-
if (!allFinite([c1x, c1y, c2x, c2y, ex, ey])) {
|
|
200643
|
-
break;
|
|
200644
|
-
}
|
|
200645
|
-
if (rel) {
|
|
200646
|
-
c1x += curX;
|
|
200647
|
-
c1y += curY;
|
|
200648
|
-
c2x += curX;
|
|
200649
|
-
c2y += curY;
|
|
200650
|
-
ex += curX;
|
|
200651
|
-
ey += curY;
|
|
200652
|
-
}
|
|
200653
|
-
for (let s = 1; s <= BEZIER_SAMPLES; s++) {
|
|
200654
|
-
const t = s / BEZIER_SAMPLES;
|
|
200655
|
-
push2(cubicAt(curX, c1x, c2x, ex, t), cubicAt(curY, c1y, c2y, ey, t));
|
|
200656
|
-
}
|
|
200657
|
-
curX = ex;
|
|
200658
|
-
curY = ey;
|
|
200659
|
-
} else {
|
|
200660
|
-
i2++;
|
|
200661
|
-
}
|
|
200662
|
-
}
|
|
200663
|
-
return points4;
|
|
200664
|
-
}
|
|
200665
|
-
var DEFAULT_SLIDE_ASPECT = 16 / 9;
|
|
200666
|
-
function pacedFractions(points4, aspect = DEFAULT_SLIDE_ASPECT) {
|
|
200667
|
-
const lengths = [0];
|
|
200668
|
-
let total = 0;
|
|
200669
|
-
for (let i2 = 1; i2 < points4.length; i2++) {
|
|
200670
|
-
const dx = (points4[i2].x - points4[i2 - 1].x) * aspect;
|
|
200671
|
-
const dy = points4[i2].y - points4[i2 - 1].y;
|
|
200672
|
-
total += Math.hypot(dx, dy);
|
|
200673
|
-
lengths.push(total);
|
|
200674
|
-
}
|
|
200675
|
-
if (total <= 0) {
|
|
200676
|
-
return points4.map((_, i2) => points4.length > 1 ? i2 / (points4.length - 1) : 0);
|
|
200677
|
-
}
|
|
200678
|
-
return lengths.map((length) => length / total);
|
|
200679
|
-
}
|
|
200680
|
-
function pacedPointAt(points4, fractions, progress) {
|
|
200681
|
-
if (points4.length === 0) {
|
|
200682
|
-
return { x: 0, y: 0 };
|
|
200683
|
-
}
|
|
200684
|
-
if (points4.length === 1 || progress <= 0) {
|
|
200685
|
-
return points4[0];
|
|
200686
|
-
}
|
|
200687
|
-
if (progress >= 1) {
|
|
200688
|
-
return points4[points4.length - 1];
|
|
200689
|
-
}
|
|
200690
|
-
let i2 = 1;
|
|
200691
|
-
while (i2 < points4.length - 1 && fractions[i2] < progress) {
|
|
200692
|
-
i2++;
|
|
200693
|
-
}
|
|
200694
|
-
const span = fractions[i2] - fractions[i2 - 1];
|
|
200695
|
-
const ratio2 = span > 0 ? (progress - fractions[i2 - 1]) / span : 1;
|
|
200696
|
-
return {
|
|
200697
|
-
x: points4[i2 - 1].x + (points4[i2].x - points4[i2 - 1].x) * ratio2,
|
|
200698
|
-
y: points4[i2 - 1].y + (points4[i2].y - points4[i2 - 1].y) * ratio2
|
|
200699
|
-
};
|
|
200700
|
-
}
|
|
200701
200365
|
function slideOffset(percent4, axis, origin) {
|
|
200702
200366
|
const fallback = axis === "w" ? "1280px" : "720px";
|
|
200703
200367
|
const varName = origin === "parent" ? `--pptx-parent-${axis}` : `--pptx-slide-${axis}`;
|
|
@@ -200844,6 +200508,217 @@ function buildTransformKeyframes(anim, uid, prefixes, box) {
|
|
|
200844
200508
|
${lines.join("\n")}
|
|
200845
200509
|
}` };
|
|
200846
200510
|
}
|
|
200511
|
+
function buildChainedMotionKeyframes(anim, uid, prefixes, box) {
|
|
200512
|
+
const chain2 = anim.motionChain;
|
|
200513
|
+
if (!chain2 || chain2.length < 2) {
|
|
200514
|
+
return void 0;
|
|
200515
|
+
}
|
|
200516
|
+
const totalMs = anim.durationMs ?? chain2.reduce((sum, segment) => sum + segment.durationMs, 0);
|
|
200517
|
+
if (totalMs <= 0) {
|
|
200518
|
+
return void 0;
|
|
200519
|
+
}
|
|
200520
|
+
const keyframes = [];
|
|
200521
|
+
for (const segment of chain2) {
|
|
200522
|
+
const fractions = pacedFractions(segment.points, box?.slideAspect);
|
|
200523
|
+
const segStartPct = segment.startMs / totalMs * 100;
|
|
200524
|
+
const segSpanPct = segment.durationMs / totalMs * 100;
|
|
200525
|
+
for (let j = 0; j < segment.points.length; j++) {
|
|
200526
|
+
const fraction = fractions[j];
|
|
200527
|
+
const point2 = pacedPointAt(segment.points, fractions, fraction);
|
|
200528
|
+
const progress = Number((segStartPct + fraction * segSpanPct).toFixed(4));
|
|
200529
|
+
const transform6 = `transform: translate(${slideOffset(point2.x, "w", anim.motionOrigin)}, ${slideOffset(point2.y, "h", anim.motionOrigin)})`;
|
|
200530
|
+
const easing = j === 0 ? segment.easing : void 0;
|
|
200531
|
+
const previous = keyframes[keyframes.length - 1];
|
|
200532
|
+
if (previous && previous.progress === progress) {
|
|
200533
|
+
previous.transform = transform6;
|
|
200534
|
+
previous.easing = easing ?? previous.easing;
|
|
200535
|
+
continue;
|
|
200536
|
+
}
|
|
200537
|
+
keyframes.push({ progress, transform: transform6, easing });
|
|
200538
|
+
}
|
|
200539
|
+
}
|
|
200540
|
+
const hideUntilStart = anim.motionChainHideUntilStart === true;
|
|
200541
|
+
if (hideUntilStart && keyframes.length > 0) {
|
|
200542
|
+
keyframes.splice(1, 0, { ...keyframes[0], progress: 0.01 });
|
|
200543
|
+
}
|
|
200544
|
+
const lines = keyframes.map((keyframe, index) => {
|
|
200545
|
+
const easing = keyframe.easing ? `animation-timing-function: ${keyframe.easing}; ` : "";
|
|
200546
|
+
const opacity2 = hideUntilStart && index === 0 ? "opacity: 0; " : hideUntilStart && index === 1 ? "opacity: 1; " : "";
|
|
200547
|
+
return ` ${formatNumber(keyframe.progress, 2)}% { ${easing}${opacity2}${keyframe.transform}; }`;
|
|
200548
|
+
});
|
|
200549
|
+
const name = `${prefixes.transform}-${uid}${hideUntilStart ? "-visibility" : ""}`;
|
|
200550
|
+
return {
|
|
200551
|
+
keyframeName: name,
|
|
200552
|
+
css: `@keyframes ${name} {
|
|
200553
|
+
${lines.join("\n")}
|
|
200554
|
+
}`
|
|
200555
|
+
};
|
|
200556
|
+
}
|
|
200557
|
+
function isChainedMotionAnimation(anim) {
|
|
200558
|
+
return anim.motionChain !== void 0;
|
|
200559
|
+
}
|
|
200560
|
+
function isChainedMotionSwallowed(anim) {
|
|
200561
|
+
return anim.motionChainSwallowed === true;
|
|
200562
|
+
}
|
|
200563
|
+
function hasChainBlockingExtras(anim) {
|
|
200564
|
+
return Boolean(
|
|
200565
|
+
anim.rotationBy !== void 0 || anim.rotationFrom !== void 0 || anim.rotationTo !== void 0 || anim.scaleByX !== void 0 || anim.scaleByY !== void 0 || anim.scaleFromX !== void 0 || anim.scaleFromY !== void 0 || anim.scaleToX !== void 0 || anim.scaleToY !== void 0 || anim.colorAnimation || anim.attributeAnimations?.length || anim.setAnimations?.length || anim.repeatCount !== void 0 || anim.repeatDurMs !== void 0 || anim.autoReverse || anim.graphicBuildProperties || anim.iterate || anim.speedPct !== void 0 || anim.afterAnimationAction || anim.startConditions?.some(
|
|
200566
|
+
(condition) => condition.targetTimeNodeId !== void 0 || condition.event !== void 0 && condition.event !== "onClick" && condition.event !== "onMouseOver"
|
|
200567
|
+
)
|
|
200568
|
+
);
|
|
200569
|
+
}
|
|
200570
|
+
function authoredStartMs(anim) {
|
|
200571
|
+
return (anim.parGroupDelayMs ?? 0) + Math.max(anim.delayMs ?? 0, anim.triggerDelayMs ?? 0);
|
|
200572
|
+
}
|
|
200573
|
+
function mergeChainedMotionPathAnims(anims) {
|
|
200574
|
+
const candidates = /* @__PURE__ */ new Map();
|
|
200575
|
+
let clickGroup = 0;
|
|
200576
|
+
const clickGroups = [];
|
|
200577
|
+
for (let index = 0; index < anims.length; index++) {
|
|
200578
|
+
const anim = anims[index];
|
|
200579
|
+
if (resolveAnimationStart(anim).trigger === "onClick") {
|
|
200580
|
+
clickGroup++;
|
|
200581
|
+
}
|
|
200582
|
+
clickGroups[index] = clickGroup;
|
|
200583
|
+
if (anim.presetClass !== "path" || !anim.motionPath || anim.parGroupIndex === void 0 || !Number.isFinite(anim.parGroupDelayMs) || !Number.isFinite(anim.durationMs) || (anim.durationMs ?? 0) <= 0) {
|
|
200584
|
+
continue;
|
|
200585
|
+
}
|
|
200586
|
+
if (hasChainBlockingExtras(anim)) {
|
|
200587
|
+
continue;
|
|
200588
|
+
}
|
|
200589
|
+
const targetId = resolveAnimationTargetId(anim);
|
|
200590
|
+
if (!targetId) {
|
|
200591
|
+
continue;
|
|
200592
|
+
}
|
|
200593
|
+
const startMs = authoredStartMs(anim);
|
|
200594
|
+
const candidateKey = JSON.stringify([
|
|
200595
|
+
clickGroup,
|
|
200596
|
+
anim.triggerShapeId,
|
|
200597
|
+
targetId,
|
|
200598
|
+
anim.motionOrigin
|
|
200599
|
+
]);
|
|
200600
|
+
const run = candidates.get(candidateKey) ?? [];
|
|
200601
|
+
run.push({ index, anim, startMs, endMs: startMs + (anim.durationMs ?? 0) });
|
|
200602
|
+
candidates.set(candidateKey, run);
|
|
200603
|
+
}
|
|
200604
|
+
const swallowedIndices = /* @__PURE__ */ new Set();
|
|
200605
|
+
const replacements = /* @__PURE__ */ new Map();
|
|
200606
|
+
for (const [, run] of candidates) {
|
|
200607
|
+
if (run.length < 2) {
|
|
200608
|
+
continue;
|
|
200609
|
+
}
|
|
200610
|
+
const ordered4 = [...run].sort((left, right) => left.startMs - right.startMs);
|
|
200611
|
+
if (ordered4.slice(1).some((member) => member.anim.trigger === "onClick")) {
|
|
200612
|
+
continue;
|
|
200613
|
+
}
|
|
200614
|
+
if (ordered4.some((member, i2) => i2 > 0 && member.startMs < ordered4[i2 - 1].endMs)) {
|
|
200615
|
+
continue;
|
|
200616
|
+
}
|
|
200617
|
+
const segments = [];
|
|
200618
|
+
const points4 = [];
|
|
200619
|
+
const windowStartMs = ordered4[0].startMs;
|
|
200620
|
+
let windowEndMs = ordered4[0].endMs;
|
|
200621
|
+
let viable = true;
|
|
200622
|
+
for (const member of ordered4) {
|
|
200623
|
+
const segmentPoints = parseMotionPathPoints(member.anim.motionPath ?? "");
|
|
200624
|
+
if (segmentPoints.length < 2) {
|
|
200625
|
+
viable = false;
|
|
200626
|
+
break;
|
|
200627
|
+
}
|
|
200628
|
+
points4.push(...segmentPoints);
|
|
200629
|
+
segments.push({
|
|
200630
|
+
points: segmentPoints,
|
|
200631
|
+
startMs: member.startMs - windowStartMs,
|
|
200632
|
+
durationMs: member.anim.durationMs ?? 0,
|
|
200633
|
+
easing: cssEasingForAccelDecel(member.anim.accel, member.anim.decel)
|
|
200634
|
+
});
|
|
200635
|
+
windowEndMs = Math.max(windowEndMs, member.endMs);
|
|
200636
|
+
}
|
|
200637
|
+
if (!viable) {
|
|
200638
|
+
continue;
|
|
200639
|
+
}
|
|
200640
|
+
const head = ordered4[0];
|
|
200641
|
+
const windowStartMsAbs = windowStartMs;
|
|
200642
|
+
const hasPreChainExit = anims.some(
|
|
200643
|
+
(other, index) => index < head.index && clickGroups[index] === clickGroups[head.index] && other !== head.anim && other.presetClass === "exit" && resolveAnimationTargetId(other) === resolveAnimationTargetId(head.anim) && authoredStartMs(other) + (other.durationMs ?? 0) <= windowStartMsAbs
|
|
200644
|
+
);
|
|
200645
|
+
const synthetic = {
|
|
200646
|
+
...head.anim,
|
|
200647
|
+
motionPath: pointsToPathString(points4),
|
|
200648
|
+
// The window includes any authored gaps between segments.
|
|
200649
|
+
durationMs: Math.max(1, windowEndMs - windowStartMs),
|
|
200650
|
+
motionChain: segments,
|
|
200651
|
+
motionChainHideUntilStart: hasPreChainExit
|
|
200652
|
+
};
|
|
200653
|
+
replacements.set(head.index, synthetic);
|
|
200654
|
+
for (const member of ordered4.slice(1)) {
|
|
200655
|
+
swallowedIndices.add(member.index);
|
|
200656
|
+
}
|
|
200657
|
+
}
|
|
200658
|
+
if (replacements.size === 0) {
|
|
200659
|
+
return [...anims];
|
|
200660
|
+
}
|
|
200661
|
+
return anims.map((anim, index) => {
|
|
200662
|
+
if (swallowedIndices.has(index)) {
|
|
200663
|
+
return { ...anim, motionChainSwallowed: true };
|
|
200664
|
+
}
|
|
200665
|
+
return replacements.get(index) ?? anim;
|
|
200666
|
+
});
|
|
200667
|
+
}
|
|
200668
|
+
function pointsToPathString(points4) {
|
|
200669
|
+
return points4.map((point2, index) => `${index === 0 ? "M" : "L"} ${point2.x / 100} ${point2.y / 100} `).join("");
|
|
200670
|
+
}
|
|
200671
|
+
function cssKeyframeName(effect) {
|
|
200672
|
+
return `pptx-${effect}`;
|
|
200673
|
+
}
|
|
200674
|
+
function defaultDuration(presetClass) {
|
|
200675
|
+
switch (presetClass) {
|
|
200676
|
+
case "entr":
|
|
200677
|
+
return 500;
|
|
200678
|
+
case "exit":
|
|
200679
|
+
return 500;
|
|
200680
|
+
case "emph":
|
|
200681
|
+
return 800;
|
|
200682
|
+
case "path":
|
|
200683
|
+
return 1e3;
|
|
200684
|
+
default:
|
|
200685
|
+
return 500;
|
|
200686
|
+
}
|
|
200687
|
+
}
|
|
200688
|
+
function fillModeForClass(presetClass) {
|
|
200689
|
+
switch (presetClass) {
|
|
200690
|
+
case "entr":
|
|
200691
|
+
return "both";
|
|
200692
|
+
case "exit":
|
|
200693
|
+
return "forwards";
|
|
200694
|
+
case "emph":
|
|
200695
|
+
return "both";
|
|
200696
|
+
default:
|
|
200697
|
+
return "both";
|
|
200698
|
+
}
|
|
200699
|
+
}
|
|
200700
|
+
function finalizeClickGroup(steps, options) {
|
|
200701
|
+
let maxEnd = 0;
|
|
200702
|
+
for (const step of steps) {
|
|
200703
|
+
const end = step.delayMs + step.durationMs;
|
|
200704
|
+
if (end > maxEnd) {
|
|
200705
|
+
maxEnd = end;
|
|
200706
|
+
}
|
|
200707
|
+
}
|
|
200708
|
+
const group2 = { steps, totalDurationMs: maxEnd };
|
|
200709
|
+
for (const step of steps) {
|
|
200710
|
+
if (group2.seqConcurrent === void 0 && step.seqConcurrent !== void 0) {
|
|
200711
|
+
group2.seqConcurrent = step.seqConcurrent;
|
|
200712
|
+
}
|
|
200713
|
+
if (group2.seqNextAction === void 0 && step.seqNextAction !== void 0) {
|
|
200714
|
+
group2.seqNextAction = step.seqNextAction;
|
|
200715
|
+
}
|
|
200716
|
+
if (group2.seqPrevAction === void 0 && step.seqPrevAction !== void 0) {
|
|
200717
|
+
group2.seqPrevAction = step.seqPrevAction;
|
|
200718
|
+
}
|
|
200719
|
+
}
|
|
200720
|
+
return group2;
|
|
200721
|
+
}
|
|
200847
200722
|
function resolveEffect(anim, pixelateMosaic) {
|
|
200848
200723
|
const cls = anim.presetClass;
|
|
200849
200724
|
const id = anim.presetId;
|
|
@@ -200913,6 +200788,15 @@ function boxForAnimation(anim, renderContext) {
|
|
|
200913
200788
|
return targetId ? renderContext.getElementBox(targetId) : void 0;
|
|
200914
200789
|
}
|
|
200915
200790
|
function buildDynamicKeyframe(anim, uid, renderContext) {
|
|
200791
|
+
const chained = isChainedMotionAnimation(anim) ? buildChainedMotionKeyframes(
|
|
200792
|
+
anim,
|
|
200793
|
+
uid,
|
|
200794
|
+
TIMELINE_TRANSFORM_PREFIXES,
|
|
200795
|
+
boxForAnimation(anim, renderContext)
|
|
200796
|
+
) : void 0;
|
|
200797
|
+
if (chained) {
|
|
200798
|
+
return chained;
|
|
200799
|
+
}
|
|
200916
200800
|
const transform6 = buildTransformKeyframes(
|
|
200917
200801
|
anim,
|
|
200918
200802
|
uid,
|
|
@@ -200943,57 +200827,6 @@ function buildDynamicKeyframe(anim, uid, renderContext) {
|
|
|
200943
200827
|
}
|
|
200944
200828
|
return void 0;
|
|
200945
200829
|
}
|
|
200946
|
-
function cssKeyframeName(effect) {
|
|
200947
|
-
return `pptx-${effect}`;
|
|
200948
|
-
}
|
|
200949
|
-
function defaultDuration(presetClass) {
|
|
200950
|
-
switch (presetClass) {
|
|
200951
|
-
case "entr":
|
|
200952
|
-
return 500;
|
|
200953
|
-
case "exit":
|
|
200954
|
-
return 500;
|
|
200955
|
-
case "emph":
|
|
200956
|
-
return 800;
|
|
200957
|
-
case "path":
|
|
200958
|
-
return 1e3;
|
|
200959
|
-
default:
|
|
200960
|
-
return 500;
|
|
200961
|
-
}
|
|
200962
|
-
}
|
|
200963
|
-
function fillModeForClass(presetClass) {
|
|
200964
|
-
switch (presetClass) {
|
|
200965
|
-
case "entr":
|
|
200966
|
-
return "both";
|
|
200967
|
-
case "exit":
|
|
200968
|
-
return "forwards";
|
|
200969
|
-
case "emph":
|
|
200970
|
-
return "both";
|
|
200971
|
-
default:
|
|
200972
|
-
return "both";
|
|
200973
|
-
}
|
|
200974
|
-
}
|
|
200975
|
-
function finalizeClickGroup(steps, options) {
|
|
200976
|
-
let maxEnd = 0;
|
|
200977
|
-
for (const step of steps) {
|
|
200978
|
-
const end = step.delayMs + step.durationMs;
|
|
200979
|
-
if (end > maxEnd) {
|
|
200980
|
-
maxEnd = end;
|
|
200981
|
-
}
|
|
200982
|
-
}
|
|
200983
|
-
const group2 = { steps, totalDurationMs: maxEnd };
|
|
200984
|
-
for (const step of steps) {
|
|
200985
|
-
if (group2.seqConcurrent === void 0 && step.seqConcurrent !== void 0) {
|
|
200986
|
-
group2.seqConcurrent = step.seqConcurrent;
|
|
200987
|
-
}
|
|
200988
|
-
if (group2.seqNextAction === void 0 && step.seqNextAction !== void 0) {
|
|
200989
|
-
group2.seqNextAction = step.seqNextAction;
|
|
200990
|
-
}
|
|
200991
|
-
if (group2.seqPrevAction === void 0 && step.seqPrevAction !== void 0) {
|
|
200992
|
-
group2.seqPrevAction = step.seqPrevAction;
|
|
200993
|
-
}
|
|
200994
|
-
}
|
|
200995
|
-
return group2;
|
|
200996
|
-
}
|
|
200997
200830
|
function clamp015(value) {
|
|
200998
200831
|
return Math.max(0, Math.min(1, value));
|
|
200999
200832
|
}
|
|
@@ -201130,184 +200963,6 @@ function resolveEffectTiming(anim, baseDurationMs) {
|
|
|
201130
200963
|
holdEndState: shouldHoldEndState(anim)
|
|
201131
200964
|
};
|
|
201132
200965
|
}
|
|
201133
|
-
var CLICK_EVENTS = /* @__PURE__ */ new Set(["onClick", "onNext"]);
|
|
201134
|
-
var TIMENODE_EVENTS = /* @__PURE__ */ new Set([
|
|
201135
|
-
"onBegin",
|
|
201136
|
-
"onEnd",
|
|
201137
|
-
"begin",
|
|
201138
|
-
"end",
|
|
201139
|
-
"onStopAudio"
|
|
201140
|
-
]);
|
|
201141
|
-
function normalizeDelay(delay) {
|
|
201142
|
-
if (delay === void 0) {
|
|
201143
|
-
return { ms: 0, indefinite: false };
|
|
201144
|
-
}
|
|
201145
|
-
if (delay < 0) {
|
|
201146
|
-
return { ms: 0, indefinite: true };
|
|
201147
|
-
}
|
|
201148
|
-
return { ms: delay, indefinite: false };
|
|
201149
|
-
}
|
|
201150
|
-
function resolveEffectiveEndCondition(conditions) {
|
|
201151
|
-
if (!conditions || conditions.length === 0) {
|
|
201152
|
-
return void 0;
|
|
201153
|
-
}
|
|
201154
|
-
const result = {
|
|
201155
|
-
endsOnMouseOut: false,
|
|
201156
|
-
endsOnClick: false,
|
|
201157
|
-
indefinite: false
|
|
201158
|
-
};
|
|
201159
|
-
for (const cond of conditions) {
|
|
201160
|
-
const evt = cond.event;
|
|
201161
|
-
if (evt === "onMouseOut") {
|
|
201162
|
-
result.endsOnMouseOut = true;
|
|
201163
|
-
} else if (evt && CLICK_EVENTS.has(evt)) {
|
|
201164
|
-
result.endsOnClick = true;
|
|
201165
|
-
if (cond.targetShapeId) {
|
|
201166
|
-
result.clickTargetShapeId = cond.targetShapeId;
|
|
201167
|
-
}
|
|
201168
|
-
} else if (evt && TIMENODE_EVENTS.has(evt) && cond.targetTimeNodeId !== void 0) {
|
|
201169
|
-
result.endsWithTimeNodeId = cond.targetTimeNodeId;
|
|
201170
|
-
}
|
|
201171
|
-
const { ms, indefinite } = normalizeDelay(cond.delay);
|
|
201172
|
-
if (indefinite) {
|
|
201173
|
-
result.indefinite = true;
|
|
201174
|
-
} else if (ms > 0 && result.delayMs === void 0) {
|
|
201175
|
-
result.delayMs = ms;
|
|
201176
|
-
}
|
|
201177
|
-
}
|
|
201178
|
-
return result;
|
|
201179
|
-
}
|
|
201180
|
-
function resolveAnimationEnd(anim) {
|
|
201181
|
-
return resolveEffectiveEndCondition(anim.endConditions);
|
|
201182
|
-
}
|
|
201183
|
-
var HOVER_EVENTS = /* @__PURE__ */ new Set(["onMouseOver"]);
|
|
201184
|
-
function isInteractiveTrigger(trigger) {
|
|
201185
|
-
return trigger === "onClick" || trigger === "onShapeClick" || trigger === "onHover";
|
|
201186
|
-
}
|
|
201187
|
-
function classifyCondition(cond) {
|
|
201188
|
-
const evt = cond.event;
|
|
201189
|
-
if (evt && CLICK_EVENTS.has(evt)) {
|
|
201190
|
-
return "click";
|
|
201191
|
-
}
|
|
201192
|
-
if (evt && HOVER_EVENTS.has(evt)) {
|
|
201193
|
-
return "hover";
|
|
201194
|
-
}
|
|
201195
|
-
if (evt === "onMediaBookmark" && cond.bookmarkTarget) {
|
|
201196
|
-
return "bookmark";
|
|
201197
|
-
}
|
|
201198
|
-
if (evt && TIMENODE_EVENTS.has(evt)) {
|
|
201199
|
-
if (cond.targetTimeNodeId !== void 0) {
|
|
201200
|
-
return "timenode";
|
|
201201
|
-
}
|
|
201202
|
-
if (evt === "onStopAudio" && cond.targetShapeId !== void 0) {
|
|
201203
|
-
return "timenode";
|
|
201204
|
-
}
|
|
201205
|
-
}
|
|
201206
|
-
return "delay";
|
|
201207
|
-
}
|
|
201208
|
-
function resolveEffectiveStartCondition(conditions, fallbackTrigger) {
|
|
201209
|
-
const base = {
|
|
201210
|
-
trigger: fallbackTrigger,
|
|
201211
|
-
delayMs: 0,
|
|
201212
|
-
hasClickAlternative: false,
|
|
201213
|
-
hasHoverAlternative: false,
|
|
201214
|
-
indefinite: false,
|
|
201215
|
-
requiresInteraction: isInteractiveTrigger(fallbackTrigger)
|
|
201216
|
-
};
|
|
201217
|
-
if (!conditions || conditions.length === 0) {
|
|
201218
|
-
return base;
|
|
201219
|
-
}
|
|
201220
|
-
let timenode;
|
|
201221
|
-
let bookmarkCond;
|
|
201222
|
-
let delayCond;
|
|
201223
|
-
let clickCond;
|
|
201224
|
-
let hoverCond;
|
|
201225
|
-
for (const cond of conditions) {
|
|
201226
|
-
switch (classifyCondition(cond)) {
|
|
201227
|
-
case "timenode":
|
|
201228
|
-
if (!timenode) {
|
|
201229
|
-
timenode = cond;
|
|
201230
|
-
} else if (cond.targetTimeNodeId !== void 0) {
|
|
201231
|
-
if (timenode.targetTimeNodeId === void 0 || cond.targetTimeNodeId < timenode.targetTimeNodeId) {
|
|
201232
|
-
timenode = cond;
|
|
201233
|
-
}
|
|
201234
|
-
}
|
|
201235
|
-
break;
|
|
201236
|
-
case "bookmark":
|
|
201237
|
-
if (!bookmarkCond) {
|
|
201238
|
-
bookmarkCond = cond;
|
|
201239
|
-
}
|
|
201240
|
-
break;
|
|
201241
|
-
case "delay":
|
|
201242
|
-
if (!delayCond || (cond.delay ?? 0) < (delayCond.delay ?? 0)) {
|
|
201243
|
-
delayCond = cond;
|
|
201244
|
-
}
|
|
201245
|
-
break;
|
|
201246
|
-
case "click":
|
|
201247
|
-
if (!clickCond) {
|
|
201248
|
-
clickCond = cond;
|
|
201249
|
-
}
|
|
201250
|
-
break;
|
|
201251
|
-
case "hover":
|
|
201252
|
-
if (!hoverCond) {
|
|
201253
|
-
hoverCond = cond;
|
|
201254
|
-
}
|
|
201255
|
-
break;
|
|
201256
|
-
}
|
|
201257
|
-
}
|
|
201258
|
-
base.hasClickAlternative = clickCond !== void 0;
|
|
201259
|
-
base.hasHoverAlternative = hoverCond !== void 0;
|
|
201260
|
-
if (clickCond?.targetShapeId) {
|
|
201261
|
-
base.clickTargetShapeId = clickCond.targetShapeId;
|
|
201262
|
-
}
|
|
201263
|
-
if (timenode) {
|
|
201264
|
-
const { ms, indefinite } = normalizeDelay(timenode.delay);
|
|
201265
|
-
base.trigger = timenode.event === "onBegin" || timenode.event === "begin" ? "withPrevious" : "afterPrevious";
|
|
201266
|
-
base.delayMs = ms;
|
|
201267
|
-
base.indefinite = indefinite;
|
|
201268
|
-
base.dependsOnTimeNodeId = timenode.targetTimeNodeId;
|
|
201269
|
-
base.dependsOnShapeId = timenode.targetTimeNodeId === void 0 ? timenode.targetShapeId : void 0;
|
|
201270
|
-
base.dependsOnEvent = timenode.event;
|
|
201271
|
-
base.requiresInteraction = false;
|
|
201272
|
-
return base;
|
|
201273
|
-
}
|
|
201274
|
-
if (bookmarkCond?.bookmarkTarget) {
|
|
201275
|
-
base.trigger = "afterPrevious";
|
|
201276
|
-
base.delayMs = 0;
|
|
201277
|
-
base.dependsOnShapeId = bookmarkCond.bookmarkTarget.shapeId;
|
|
201278
|
-
base.dependsOnEvent = "onMediaBookmark";
|
|
201279
|
-
base.dependsOnBookmarkName = bookmarkCond.bookmarkTarget.bookmarkName;
|
|
201280
|
-
base.requiresInteraction = false;
|
|
201281
|
-
return base;
|
|
201282
|
-
}
|
|
201283
|
-
if (delayCond && (delayCond.delay ?? 0) !== 0) {
|
|
201284
|
-
const { ms, indefinite } = normalizeDelay(delayCond.delay);
|
|
201285
|
-
base.trigger = clickCond ? "onClick" : "afterDelay";
|
|
201286
|
-
base.delayMs = ms;
|
|
201287
|
-
base.indefinite = indefinite;
|
|
201288
|
-
base.requiresInteraction = indefinite;
|
|
201289
|
-
return base;
|
|
201290
|
-
}
|
|
201291
|
-
if (clickCond) {
|
|
201292
|
-
base.trigger = clickCond.targetShapeId ? "onShapeClick" : "onClick";
|
|
201293
|
-
base.requiresInteraction = true;
|
|
201294
|
-
return base;
|
|
201295
|
-
}
|
|
201296
|
-
if (hoverCond) {
|
|
201297
|
-
base.trigger = "onHover";
|
|
201298
|
-
base.requiresInteraction = true;
|
|
201299
|
-
return base;
|
|
201300
|
-
}
|
|
201301
|
-
if (delayCond) {
|
|
201302
|
-
base.trigger = fallbackTrigger;
|
|
201303
|
-
base.delayMs = 0;
|
|
201304
|
-
base.requiresInteraction = false;
|
|
201305
|
-
}
|
|
201306
|
-
return base;
|
|
201307
|
-
}
|
|
201308
|
-
function resolveAnimationStart(anim) {
|
|
201309
|
-
return resolveEffectiveStartCondition(anim.startConditions, anim.trigger ?? "onClick");
|
|
201310
|
-
}
|
|
201311
200966
|
function isMediaCommandAnimation(anim) {
|
|
201312
200967
|
return typeof anim.commandString === "string" && anim.commandString.trim().length > 0;
|
|
201313
200968
|
}
|
|
@@ -202301,6 +201956,49 @@ function composeParallelSteps(left, right) {
|
|
|
202301
201956
|
colorTargets: colorTargets.length > 0 ? colorTargets : void 0
|
|
202302
201957
|
};
|
|
202303
201958
|
}
|
|
201959
|
+
var TRANSFORM_KEYFRAME_NAME = /^pptx-(?:tl-)?(?:motion|rotate(?:Abs)?|scale(?:Abs)?|transform)-/u;
|
|
201960
|
+
var COLOR_KEYFRAME_NAME = /^pptx-(?:tl-)?(?:color|tavclr)-/u;
|
|
201961
|
+
var FILTER_KEYFRAME_NAME = /^pptx-(?:tl-)?emph-/u;
|
|
201962
|
+
var animatedPropertyCache = /* @__PURE__ */ new Map();
|
|
201963
|
+
function keyframeAnimatedProperties(keyframeName2) {
|
|
201964
|
+
let props = animatedPropertyCache.get(keyframeName2);
|
|
201965
|
+
if (props) {
|
|
201966
|
+
return props;
|
|
201967
|
+
}
|
|
201968
|
+
props = /* @__PURE__ */ new Set();
|
|
201969
|
+
if (TRANSFORM_KEYFRAME_NAME.test(keyframeName2)) {
|
|
201970
|
+
props.add("transform");
|
|
201971
|
+
if (keyframeName2.endsWith("-visibility")) {
|
|
201972
|
+
props.add("opacity");
|
|
201973
|
+
}
|
|
201974
|
+
} else if (COLOR_KEYFRAME_NAME.test(keyframeName2)) {
|
|
201975
|
+
props.add("color");
|
|
201976
|
+
} else if (FILTER_KEYFRAME_NAME.test(keyframeName2)) {
|
|
201977
|
+
props.add("filter");
|
|
201978
|
+
} else {
|
|
201979
|
+
const css = getEffectKeyframes(keyframeName2.replace(/^pptx-/u, ""));
|
|
201980
|
+
if (css) {
|
|
201981
|
+
if (/(?:^|[^-])\btransform\s*:/u.test(css)) {
|
|
201982
|
+
props.add("transform");
|
|
201983
|
+
}
|
|
201984
|
+
if (/(?:^|[^-])\bopacity\s*:/u.test(css)) {
|
|
201985
|
+
props.add("opacity");
|
|
201986
|
+
}
|
|
201987
|
+
if (/(?:^|[^-])\bfilter\s*:/u.test(css)) {
|
|
201988
|
+
props.add("filter");
|
|
201989
|
+
}
|
|
201990
|
+
if (/(?:^|[^-])\b(?:color|fill|stroke)\s*:/u.test(css)) {
|
|
201991
|
+
props.add("color");
|
|
201992
|
+
}
|
|
201993
|
+
} else {
|
|
201994
|
+
props.add("unknown");
|
|
201995
|
+
}
|
|
201996
|
+
}
|
|
201997
|
+
if (!/^pptx-(?:tl-)?(?:motion|rotate|scale|transform|color|tavclr|emph)-/u.test(keyframeName2)) {
|
|
201998
|
+
animatedPropertyCache.set(keyframeName2, props);
|
|
201999
|
+
}
|
|
202000
|
+
return props;
|
|
202001
|
+
}
|
|
202304
202002
|
function parseTmFilter(raw) {
|
|
202305
202003
|
if (!raw) {
|
|
202306
202004
|
return void 0;
|
|
@@ -203002,6 +202700,23 @@ function expandIterateAnimation(anim) {
|
|
|
203002
202700
|
function processRegularAnimation(state, anim, renderContext, pixelateMosaic) {
|
|
203003
202701
|
const expandedSteps = expandIterateAnimation(anim);
|
|
203004
202702
|
for (const singleAnim of expandedSteps) {
|
|
202703
|
+
if (isChainedMotionSwallowed(singleAnim)) {
|
|
202704
|
+
if (singleAnim.soundPath || singleAnim.stopSound) {
|
|
202705
|
+
state.currentGroup.push({
|
|
202706
|
+
elementId: "",
|
|
202707
|
+
cssAnimation: "",
|
|
202708
|
+
keyframeName: "",
|
|
202709
|
+
trigger: singleAnim.trigger ?? "onClick",
|
|
202710
|
+
delayMs: (singleAnim.parGroupDelayMs ?? 0) + Math.max(singleAnim.delayMs ?? 0, singleAnim.triggerDelayMs ?? 0),
|
|
202711
|
+
durationMs: singleAnim.durationMs ?? 0,
|
|
202712
|
+
fillMode: "forwards",
|
|
202713
|
+
presetClass: "emph",
|
|
202714
|
+
soundPath: singleAnim.soundPath,
|
|
202715
|
+
stopSound: singleAnim.stopSound
|
|
202716
|
+
});
|
|
202717
|
+
}
|
|
202718
|
+
continue;
|
|
202719
|
+
}
|
|
203005
202720
|
const resolved = resolveStepEffect(
|
|
203006
202721
|
singleAnim,
|
|
203007
202722
|
renderContext,
|
|
@@ -203112,6 +202827,9 @@ function countDynamicUids(interactiveAnims) {
|
|
|
203112
202827
|
let count = 0;
|
|
203113
202828
|
for (const [, anims] of interactiveAnims) {
|
|
203114
202829
|
for (const anim of anims) {
|
|
202830
|
+
if (isChainedMotionSwallowed(anim)) {
|
|
202831
|
+
continue;
|
|
202832
|
+
}
|
|
203115
202833
|
const effect = resolveEffect(anim);
|
|
203116
202834
|
if (!effect) {
|
|
203117
202835
|
count++;
|
|
@@ -203130,6 +202848,23 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
203130
202848
|
let subGroupIndex;
|
|
203131
202849
|
let subGroupStartMs = 0;
|
|
203132
202850
|
for (const anim of anims) {
|
|
202851
|
+
if (isChainedMotionSwallowed(anim)) {
|
|
202852
|
+
if (anim.soundPath || anim.stopSound) {
|
|
202853
|
+
seqGroup.push({
|
|
202854
|
+
elementId: "",
|
|
202855
|
+
cssAnimation: "",
|
|
202856
|
+
keyframeName: "",
|
|
202857
|
+
trigger: anim.trigger ?? "onShapeClick",
|
|
202858
|
+
delayMs: (anim.parGroupDelayMs ?? 0) + Math.max(anim.delayMs ?? 0, anim.triggerDelayMs ?? 0),
|
|
202859
|
+
durationMs: anim.durationMs ?? 0,
|
|
202860
|
+
fillMode: "forwards",
|
|
202861
|
+
presetClass: "emph",
|
|
202862
|
+
soundPath: anim.soundPath,
|
|
202863
|
+
stopSound: anim.stopSound
|
|
202864
|
+
});
|
|
202865
|
+
}
|
|
202866
|
+
continue;
|
|
202867
|
+
}
|
|
203133
202868
|
const resolved = resolveStepEffect(anim, renderContext, dynamicUid, false, pixelateMosaic);
|
|
203134
202869
|
dynamicUid = resolved.nextDynamicUid;
|
|
203135
202870
|
if (resolved.skip) {
|
|
@@ -203320,7 +203055,12 @@ function buildTimeline(nativeAnimations, renderContext, pixelateMosaic) {
|
|
|
203320
203055
|
regularAnims.push(anim);
|
|
203321
203056
|
}
|
|
203322
203057
|
}
|
|
203323
|
-
const
|
|
203058
|
+
const mergedRegularAnims = mergeChainedMotionPathAnims(regularAnims);
|
|
203059
|
+
for (const [shapeId, anims] of interactiveAnims) {
|
|
203060
|
+
interactiveAnims.set(shapeId, mergeChainedMotionPathAnims(anims));
|
|
203061
|
+
}
|
|
203062
|
+
const mergedHoverAnims = mergeChainedMotionPathAnims(hoverAnims);
|
|
203063
|
+
const { clickGroups, entranceIds, neededKeyframes, dynamicBlocks, dynamicUid } = buildRegularClickGroups(mergedRegularAnims, renderContext, pixelateMosaic);
|
|
203324
203064
|
const interactiveSequences = buildSequenceGroups(
|
|
203325
203065
|
interactiveAnims,
|
|
203326
203066
|
entranceIds,
|
|
@@ -203331,7 +203071,7 @@ function buildTimeline(nativeAnimations, renderContext, pixelateMosaic) {
|
|
|
203331
203071
|
pixelateMosaic
|
|
203332
203072
|
);
|
|
203333
203073
|
const { hoverSequences } = buildHoverSequences(
|
|
203334
|
-
|
|
203074
|
+
mergedHoverAnims,
|
|
203335
203075
|
entranceIds,
|
|
203336
203076
|
neededKeyframes,
|
|
203337
203077
|
dynamicBlocks,
|
|
@@ -208751,17 +208491,17 @@ function attachRotateHandlePlacement(button, options = {}) {
|
|
|
208751
208491
|
for (const node of ancestors) {
|
|
208752
208492
|
mutations.observe(node, { attributes: true, attributeFilter: ["style", "class", "hidden"] });
|
|
208753
208493
|
}
|
|
208754
|
-
const
|
|
208755
|
-
if (
|
|
208756
|
-
mutations.observe(
|
|
208494
|
+
const controls2 = options.getObstacleRoot ? options.getObstacleRoot() : button.parentElement;
|
|
208495
|
+
if (controls2) {
|
|
208496
|
+
mutations.observe(controls2, {
|
|
208757
208497
|
attributes: true,
|
|
208758
208498
|
attributeFilter: ["style", "class", "hidden"],
|
|
208759
208499
|
childList: true
|
|
208760
208500
|
});
|
|
208761
|
-
observed.add(
|
|
208501
|
+
observed.add(controls2);
|
|
208762
208502
|
for (const control of [
|
|
208763
208503
|
button,
|
|
208764
|
-
...
|
|
208504
|
+
...controls2.querySelectorAll("[data-pptx-handle-kind]")
|
|
208765
208505
|
]) {
|
|
208766
208506
|
observeControl(control);
|
|
208767
208507
|
}
|
|
@@ -211466,6 +211206,9 @@ var translationsEn = {
|
|
|
211466
211206
|
// Live captions
|
|
211467
211207
|
"pptx.subtitles.listening": "Listening\u2026",
|
|
211468
211208
|
"pptx.subtitles.notSupported": "Subtitles are not supported in this browser.",
|
|
211209
|
+
"pptx.subtitles.spokenLanguage": "Spoken language",
|
|
211210
|
+
"pptx.subtitles.browserLanguage": "Browser language",
|
|
211211
|
+
"pptx.subtitles.settingsDescription": "Choose the language you will speak. Captions use browser speech recognition; translation is not available.",
|
|
211469
211212
|
// Table (additions)
|
|
211470
211213
|
"pptx.table.background": "Background",
|
|
211471
211214
|
"pptx.table.bandColCycle": "Column band size",
|
|
@@ -229183,6 +228926,89 @@ function slideShowOptionChange(id, checked) {
|
|
|
229183
228926
|
return null;
|
|
229184
228927
|
}
|
|
229185
228928
|
}
|
|
228929
|
+
var SLIDE_SHOW_COMMAND_GROUPS = [
|
|
228930
|
+
{
|
|
228931
|
+
id: "slideShow.startSlideShow",
|
|
228932
|
+
labelKey: "pptx.slideShow.start",
|
|
228933
|
+
commands: [
|
|
228934
|
+
{
|
|
228935
|
+
id: "slideShow.startSlideShow.fromBeginning",
|
|
228936
|
+
labelKey: "pptx.slideShow.fromBeginning",
|
|
228937
|
+
icon: "play-start",
|
|
228938
|
+
tooltipKey: "pptx.slideShow.fromBeginningTooltip"
|
|
228939
|
+
},
|
|
228940
|
+
{
|
|
228941
|
+
id: "slideShow.startSlideShow.fromCurrent",
|
|
228942
|
+
labelKey: "pptx.slideShow.fromCurrent",
|
|
228943
|
+
icon: "play",
|
|
228944
|
+
tooltipKey: "pptx.slideShow.fromCurrentTooltip"
|
|
228945
|
+
}
|
|
228946
|
+
]
|
|
228947
|
+
},
|
|
228948
|
+
{
|
|
228949
|
+
id: "slideShow.present",
|
|
228950
|
+
labelKey: "pptx.slideShow.present",
|
|
228951
|
+
commands: [
|
|
228952
|
+
{
|
|
228953
|
+
id: "slideShow.present.presenterView",
|
|
228954
|
+
labelKey: "pptx.slideShow.presenterView",
|
|
228955
|
+
icon: "presentation",
|
|
228956
|
+
tooltipKey: "pptx.slideShow.presenterViewTooltip"
|
|
228957
|
+
},
|
|
228958
|
+
{
|
|
228959
|
+
id: "slideShow.startSlideShow.customShow",
|
|
228960
|
+
labelKey: "pptx.slideShow.customShow",
|
|
228961
|
+
icon: "list",
|
|
228962
|
+
tooltipKey: "pptx.customShows.customShowTooltip"
|
|
228963
|
+
},
|
|
228964
|
+
{
|
|
228965
|
+
id: "slideShow.present.broadcast",
|
|
228966
|
+
labelKey: "pptx.slideShow.broadcast",
|
|
228967
|
+
icon: "broadcast",
|
|
228968
|
+
tooltipKey: "pptx.slideShow.broadcastTooltip"
|
|
228969
|
+
}
|
|
228970
|
+
]
|
|
228971
|
+
},
|
|
228972
|
+
{
|
|
228973
|
+
id: "slideShow.setUp",
|
|
228974
|
+
labelKey: "pptx.slideShow.setUpGroup",
|
|
228975
|
+
commands: [
|
|
228976
|
+
{
|
|
228977
|
+
id: "slideShow.setUp.rehearseWithCoach",
|
|
228978
|
+
labelKey: "pptx.slideShow.rehearseCoach",
|
|
228979
|
+
icon: "video",
|
|
228980
|
+
unsupported: true
|
|
228981
|
+
},
|
|
228982
|
+
{
|
|
228983
|
+
id: "slideShow.setUp.setUpSlideShow",
|
|
228984
|
+
labelKey: "pptx.slideShow.setUp",
|
|
228985
|
+
icon: "settings",
|
|
228986
|
+
tooltipKey: "pptx.slideShow.setUpTooltip"
|
|
228987
|
+
},
|
|
228988
|
+
{ id: "slideShow.setUp.hideSlide", labelKey: "pptx.slideShow.hideSlide", icon: "eye-off" },
|
|
228989
|
+
{
|
|
228990
|
+
id: "slideShow.setUp.rehearseTimings",
|
|
228991
|
+
labelKey: "pptx.slideShow.rehearseTimings",
|
|
228992
|
+
icon: "clock",
|
|
228993
|
+
tooltipKey: "pptx.slideShow.rehearseTimingsTooltip"
|
|
228994
|
+
},
|
|
228995
|
+
{ id: "slideShow.setUp.record", labelKey: "pptx.titleBar.record", icon: "record" }
|
|
228996
|
+
]
|
|
228997
|
+
}
|
|
228998
|
+
];
|
|
228999
|
+
var HELP_RIBBON_COMMANDS = [
|
|
229000
|
+
{ id: "help.help.options", labelKey: "pptx.settings.title", icon: "settings" },
|
|
229001
|
+
{
|
|
229002
|
+
id: "help.help.keyboardShortcuts",
|
|
229003
|
+
labelKey: "pptx.settings.keyboardShortcuts",
|
|
229004
|
+
icon: "keyboard"
|
|
229005
|
+
},
|
|
229006
|
+
{
|
|
229007
|
+
id: "help.help.accessibility",
|
|
229008
|
+
labelKey: "pptx.ribbon.accessibilityCheck",
|
|
229009
|
+
icon: "accessibility"
|
|
229010
|
+
}
|
|
229011
|
+
];
|
|
229186
229012
|
function resetSlideLayoutPath(slide) {
|
|
229187
229013
|
const path = slide?.layoutPath;
|
|
229188
229014
|
return typeof path === "string" && path !== "" ? path : void 0;
|
|
@@ -232414,20 +232240,20 @@ async function mountModel3D(container, modelUrl, options) {
|
|
|
232414
232240
|
scene.add(light);
|
|
232415
232241
|
}
|
|
232416
232242
|
scene.add(rig.placeModel(model));
|
|
232417
|
-
let
|
|
232243
|
+
let controls2 = null;
|
|
232418
232244
|
const OrbitCtrlCtor = await loadOrbitControlsCtor();
|
|
232419
232245
|
const enableControls = (on) => {
|
|
232420
|
-
if (on && !
|
|
232421
|
-
|
|
232422
|
-
|
|
232423
|
-
|
|
232424
|
-
|
|
232425
|
-
|
|
232426
|
-
|
|
232427
|
-
|
|
232428
|
-
} else if (!on &&
|
|
232429
|
-
|
|
232430
|
-
|
|
232246
|
+
if (on && !controls2 && OrbitCtrlCtor) {
|
|
232247
|
+
controls2 = new OrbitCtrlCtor(camera, canvas);
|
|
232248
|
+
controls2.enablePan = false;
|
|
232249
|
+
controls2.enableZoom = true;
|
|
232250
|
+
controls2.enableRotate = true;
|
|
232251
|
+
controls2.minDistance = descriptor.authored ? rig.distance * 0.2 : 2;
|
|
232252
|
+
controls2.maxDistance = descriptor.authored ? rig.distance * 4 : 20;
|
|
232253
|
+
controls2.update();
|
|
232254
|
+
} else if (!on && controls2) {
|
|
232255
|
+
controls2.dispose();
|
|
232256
|
+
controls2 = null;
|
|
232431
232257
|
}
|
|
232432
232258
|
};
|
|
232433
232259
|
enableControls(options.interactive ?? true);
|
|
@@ -232438,7 +232264,7 @@ async function mountModel3D(container, modelUrl, options) {
|
|
|
232438
232264
|
return;
|
|
232439
232265
|
}
|
|
232440
232266
|
frame2 = requestAnimationFrame(renderLoop);
|
|
232441
|
-
|
|
232267
|
+
controls2?.update();
|
|
232442
232268
|
renderer.render(scene, camera);
|
|
232443
232269
|
};
|
|
232444
232270
|
frame2 = requestAnimationFrame(renderLoop);
|
|
@@ -232475,7 +232301,7 @@ async function mountModel3D(container, modelUrl, options) {
|
|
|
232475
232301
|
}
|
|
232476
232302
|
disposed = true;
|
|
232477
232303
|
cancelAnimationFrame(frame2);
|
|
232478
|
-
|
|
232304
|
+
controls2?.dispose();
|
|
232479
232305
|
disposeModel();
|
|
232480
232306
|
scene.clear();
|
|
232481
232307
|
renderer.dispose();
|
|
@@ -237385,11 +237211,13 @@ function resolveElementAriaAttributes(element, options) {
|
|
|
237385
237211
|
};
|
|
237386
237212
|
}
|
|
237387
237213
|
var PRESENTATION_STAGE_ATTRIBUTE = "data-pptx-presenting";
|
|
237214
|
+
var PRESENTATION_ANIM_TRIGGER_ATTRIBUTE = "data-pptx-anim-trigger";
|
|
237388
237215
|
var PRESENTATION_HIT_TEST_CSS = `
|
|
237389
237216
|
[${PRESENTATION_STAGE_ATTRIBUTE}] [data-element-id] {
|
|
237390
237217
|
pointer-events: none;
|
|
237391
237218
|
}
|
|
237392
237219
|
[${PRESENTATION_STAGE_ATTRIBUTE}] [data-pptx-action],
|
|
237220
|
+
[${PRESENTATION_STAGE_ATTRIBUTE}] [${PRESENTATION_ANIM_TRIGGER_ATTRIBUTE}],
|
|
237393
237221
|
[${PRESENTATION_STAGE_ATTRIBUTE}] [data-element-id] a[href],
|
|
237394
237222
|
[${PRESENTATION_STAGE_ATTRIBUTE}] [data-element-id] video[controls],
|
|
237395
237223
|
[${PRESENTATION_STAGE_ATTRIBUTE}] [data-element-id] audio[controls] {
|
|
@@ -237474,7 +237302,11 @@ function focusableElements(panel2) {
|
|
|
237474
237302
|
}
|
|
237475
237303
|
function activateModalFocus(panel2, options = {}) {
|
|
237476
237304
|
const doc = panel2.ownerDocument;
|
|
237477
|
-
|
|
237305
|
+
let activeElement = doc.activeElement;
|
|
237306
|
+
while (activeElement?.shadowRoot?.activeElement) {
|
|
237307
|
+
activeElement = activeElement.shadowRoot.activeElement;
|
|
237308
|
+
}
|
|
237309
|
+
const opener = activeElement instanceof HTMLElement ? activeElement : null;
|
|
237478
237310
|
const restoreFocus = options.restoreFocus ?? true;
|
|
237479
237311
|
function focusInitial() {
|
|
237480
237312
|
const candidate = options.initialFocus ?? focusableElements(panel2)[0] ?? panel2;
|
|
@@ -241820,6 +241652,73 @@ function hiddenSlideCue(hidden, surface, slideIndex) {
|
|
|
241820
241652
|
}
|
|
241821
241653
|
return { hidden: true, labelId: hiddenSlideLabelId(surface, slideIndex), marker: "true" };
|
|
241822
241654
|
}
|
|
241655
|
+
function mergeCaptionResults(resultIndex, results) {
|
|
241656
|
+
let finalText = "";
|
|
241657
|
+
let interimText = "";
|
|
241658
|
+
for (let index = resultIndex; index < results.length; index++) {
|
|
241659
|
+
const result = results[index];
|
|
241660
|
+
const fragment = result?.[0]?.transcript ?? "";
|
|
241661
|
+
if (result?.isFinal) {
|
|
241662
|
+
finalText += fragment;
|
|
241663
|
+
} else {
|
|
241664
|
+
interimText += fragment;
|
|
241665
|
+
}
|
|
241666
|
+
}
|
|
241667
|
+
return `${finalText} ${interimText}`.trim();
|
|
241668
|
+
}
|
|
241669
|
+
function getSpeechRecognitionCtor() {
|
|
241670
|
+
const source = globalThis;
|
|
241671
|
+
return source["SpeechRecognition"] ?? source["webkitSpeechRecognition"] ?? null;
|
|
241672
|
+
}
|
|
241673
|
+
var SUBTITLE_LANGUAGES = [
|
|
241674
|
+
"auto",
|
|
241675
|
+
"en-US",
|
|
241676
|
+
"en-GB",
|
|
241677
|
+
"fr-FR",
|
|
241678
|
+
"de-DE",
|
|
241679
|
+
"es-ES",
|
|
241680
|
+
"pt-BR",
|
|
241681
|
+
"it-IT",
|
|
241682
|
+
"ja-JP",
|
|
241683
|
+
"ko-KR",
|
|
241684
|
+
"zh-CN"
|
|
241685
|
+
];
|
|
241686
|
+
function subtitleLanguageLabel(language) {
|
|
241687
|
+
try {
|
|
241688
|
+
return new Intl.DisplayNames(void 0, { type: "language" }).of(language) ?? language;
|
|
241689
|
+
} catch {
|
|
241690
|
+
return language;
|
|
241691
|
+
}
|
|
241692
|
+
}
|
|
241693
|
+
function normalizeSubtitleSettings(settings) {
|
|
241694
|
+
const spokenLanguage = settings?.spokenLanguage ?? "auto";
|
|
241695
|
+
return {
|
|
241696
|
+
spokenLanguage: SUBTITLE_LANGUAGES.includes(spokenLanguage) ? spokenLanguage : "auto"
|
|
241697
|
+
};
|
|
241698
|
+
}
|
|
241699
|
+
function subtitleSettingsFromOptions(options) {
|
|
241700
|
+
return normalizeSubtitleSettings({ spokenLanguage: options?.accessibility.subtitleLanguage });
|
|
241701
|
+
}
|
|
241702
|
+
function updateSubtitleSettings(store, settings) {
|
|
241703
|
+
store.setValue(
|
|
241704
|
+
"accessibility",
|
|
241705
|
+
"subtitleLanguage",
|
|
241706
|
+
normalizeSubtitleSettings(settings).spokenLanguage
|
|
241707
|
+
);
|
|
241708
|
+
}
|
|
241709
|
+
function subtitleRecognitionLanguage(settings, browserLanguage = "en-US") {
|
|
241710
|
+
return settings.spokenLanguage === "auto" ? browserLanguage || "en-US" : settings.spokenLanguage;
|
|
241711
|
+
}
|
|
241712
|
+
function subtitleSettingsLabels(t) {
|
|
241713
|
+
return {
|
|
241714
|
+
title: t("pptx.slideShow.subtitleSettings"),
|
|
241715
|
+
language: t("pptx.subtitles.spokenLanguage"),
|
|
241716
|
+
browserLanguage: t("pptx.subtitles.browserLanguage"),
|
|
241717
|
+
description: t("pptx.subtitles.settingsDescription"),
|
|
241718
|
+
apply: t("pptx.common.apply"),
|
|
241719
|
+
cancel: t("pptx.common.cancel")
|
|
241720
|
+
};
|
|
241721
|
+
}
|
|
241823
241722
|
var VIEWER_PREFS_STORAGE_KEY = "pptx-viewer-prefs";
|
|
241824
241723
|
function hasLocalStorage() {
|
|
241825
241724
|
return typeof localStorage !== "undefined";
|
|
@@ -242184,6 +242083,7 @@ var DEFAULT_VIEWER_OPTIONS = {
|
|
|
242184
242083
|
clearCacheOnClose: false
|
|
242185
242084
|
},
|
|
242186
242085
|
accessibility: {
|
|
242086
|
+
subtitleLanguage: "auto",
|
|
242187
242087
|
showAccessibilityStatus: true,
|
|
242188
242088
|
feedbackWithSound: false,
|
|
242189
242089
|
soundScheme: "modern",
|
|
@@ -243823,7 +243723,7 @@ function resolveRibbonCustomization(ribbon3) {
|
|
|
243823
243723
|
const actions = /* @__PURE__ */ new Set();
|
|
243824
243724
|
const contextualTabs = /* @__PURE__ */ new Set();
|
|
243825
243725
|
const groups = /* @__PURE__ */ new Set();
|
|
243826
|
-
const
|
|
243726
|
+
const controls2 = /* @__PURE__ */ new Set();
|
|
243827
243727
|
for (const tab of ribbon3?.hiddenTabs ?? []) {
|
|
243828
243728
|
if (CONTEXTUAL_TAB_IDS.has(tab)) {
|
|
243829
243729
|
contextualTabs.add(tab);
|
|
@@ -243838,19 +243738,19 @@ function resolveRibbonCustomization(ribbon3) {
|
|
|
243838
243738
|
}
|
|
243839
243739
|
for (const button of ribbon3?.hiddenButtons ?? []) {
|
|
243840
243740
|
if (isRibbonControlId(button)) {
|
|
243841
|
-
|
|
243741
|
+
controls2.add(button);
|
|
243842
243742
|
} else {
|
|
243843
243743
|
actions.add(button);
|
|
243844
243744
|
}
|
|
243845
243745
|
}
|
|
243846
243746
|
for (const [action, control] of BUTTON_CONTROL_ALIASES) {
|
|
243847
243747
|
if (actions.has(action)) {
|
|
243848
|
-
|
|
243849
|
-
} else if (
|
|
243748
|
+
controls2.add(control);
|
|
243749
|
+
} else if (controls2.has(control)) {
|
|
243850
243750
|
actions.add(action);
|
|
243851
243751
|
}
|
|
243852
243752
|
}
|
|
243853
|
-
return { actions, contextualTabs, groups, controls };
|
|
243753
|
+
return { actions, contextualTabs, groups, controls: controls2 };
|
|
243854
243754
|
}
|
|
243855
243755
|
var DIALOG_ENTRY_POINTS = {
|
|
243856
243756
|
options: { actions: [], pages: ["options"], cards: [] },
|
|
@@ -244053,13 +243953,13 @@ function customizeSection(tabId, section, resolved) {
|
|
|
244053
243953
|
if (resolved.hiddenOptionsSections.has(`${tabId}.${section.id}`)) {
|
|
244054
243954
|
return null;
|
|
244055
243955
|
}
|
|
244056
|
-
const
|
|
243956
|
+
const controls2 = section.controls.filter((control) => isSettingVisible(resolved, optionsSettingIdOf(control))).map(
|
|
244057
243957
|
(control) => isSettingLocked(resolved, optionsSettingIdOf(control)) ? { ...control, readOnly: true } : control
|
|
244058
243958
|
);
|
|
244059
|
-
if (
|
|
243959
|
+
if (controls2.length === 0 && section.controls.length > 0 && !section.special) {
|
|
244060
243960
|
return null;
|
|
244061
243961
|
}
|
|
244062
|
-
return { ...section, controls };
|
|
243962
|
+
return { ...section, controls: controls2 };
|
|
244063
243963
|
}
|
|
244064
243964
|
function customizeOptionsTabs(tabs, resolved) {
|
|
244065
243965
|
if (resolved.hiddenOptionsPages.size === 0 && resolved.hiddenOptionsSections.size === 0 && resolved.hiddenSettings.size === 0 && Object.keys(resolved.lockedSettings).length === 0) {
|
|
@@ -248964,28 +248864,19 @@ function cursorForTool(tool) {
|
|
|
248964
248864
|
return "default";
|
|
248965
248865
|
}
|
|
248966
248866
|
}
|
|
248967
|
-
|
|
248968
|
-
if (!state) {
|
|
248969
|
-
return {};
|
|
248970
|
-
}
|
|
248971
|
-
const carried = {};
|
|
248972
|
-
if (state.build) {
|
|
248973
|
-
carried.build = state.build;
|
|
248974
|
-
}
|
|
248975
|
-
if (state.chartReveal) {
|
|
248976
|
-
carried.chartReveal = state.chartReveal;
|
|
248977
|
-
}
|
|
248978
|
-
if (state.diagramReveal) {
|
|
248979
|
-
carried.diagramReveal = state.diagramReveal;
|
|
248980
|
-
}
|
|
248981
|
-
if (state.textStyle) {
|
|
248982
|
-
carried.textStyle = state.textStyle;
|
|
248983
|
-
}
|
|
248984
|
-
return carried;
|
|
248985
|
-
}
|
|
248867
|
+
var playbackOwners = /* @__PURE__ */ new WeakMap();
|
|
248986
248868
|
function applyAnimationGroupSteps(group2, ctx) {
|
|
248987
248869
|
wireMediaEndedSteps(group2, ctx);
|
|
248988
248870
|
wireMediaBookmarkSteps(group2, ctx);
|
|
248871
|
+
const ownedAnimations = /* @__PURE__ */ new Map();
|
|
248872
|
+
const owner = /* @__PURE__ */ Symbol("animation group");
|
|
248873
|
+
const owners = playbackOwners.get(ctx.setStates) ?? /* @__PURE__ */ new Map();
|
|
248874
|
+
playbackOwners.set(ctx.setStates, owners);
|
|
248875
|
+
for (const step of group2.steps) {
|
|
248876
|
+
if (step.elementId && !step.command) {
|
|
248877
|
+
owners.set(step.elementId, owner);
|
|
248878
|
+
}
|
|
248879
|
+
}
|
|
248989
248880
|
for (const step of group2.steps) {
|
|
248990
248881
|
if (step.command) {
|
|
248991
248882
|
const command = step.command;
|
|
@@ -248999,46 +248890,101 @@ function applyAnimationGroupSteps(group2, ctx) {
|
|
|
248999
248890
|
continue;
|
|
249000
248891
|
}
|
|
249001
248892
|
if (step.stopSound) {
|
|
249002
|
-
|
|
248893
|
+
if (step.delayMs > 0) {
|
|
248894
|
+
const stopTimer = window.setTimeout(() => {
|
|
248895
|
+
ctx.stopSound();
|
|
248896
|
+
}, step.delayMs);
|
|
248897
|
+
ctx.timers.push(stopTimer);
|
|
248898
|
+
} else {
|
|
248899
|
+
ctx.stopSound();
|
|
248900
|
+
}
|
|
249003
248901
|
} else if (step.soundPath) {
|
|
249004
|
-
|
|
248902
|
+
const soundPath = step.soundPath;
|
|
248903
|
+
if (step.delayMs > 0) {
|
|
248904
|
+
const soundTimer = window.setTimeout(() => {
|
|
248905
|
+
(ctx.onPlayActionSound ?? ctx.playSound)(soundPath);
|
|
248906
|
+
}, step.delayMs);
|
|
248907
|
+
ctx.timers.push(soundTimer);
|
|
248908
|
+
} else {
|
|
248909
|
+
(ctx.onPlayActionSound ?? ctx.playSound)(soundPath);
|
|
248910
|
+
}
|
|
249005
248911
|
}
|
|
249006
248912
|
}
|
|
249007
248913
|
ctx.setStates((previous) => {
|
|
249008
248914
|
const next = new Map(previous);
|
|
248915
|
+
const componentsByElement = /* @__PURE__ */ new Map();
|
|
249009
248916
|
for (const step of group2.steps) {
|
|
249010
|
-
if (step.command) {
|
|
248917
|
+
if (step.command || !step.elementId) {
|
|
249011
248918
|
continue;
|
|
249012
248919
|
}
|
|
249013
248920
|
const current = next.get(step.elementId);
|
|
249014
248921
|
const shouldBeVisible = step.presetClass === "exit" ? current?.visible ?? true : true;
|
|
249015
248922
|
const carried = carryBuildState(current);
|
|
248923
|
+
let components = componentsByElement.get(step.elementId);
|
|
248924
|
+
if (!components) {
|
|
248925
|
+
components = [];
|
|
248926
|
+
componentsByElement.set(step.elementId, components);
|
|
248927
|
+
}
|
|
248928
|
+
if (step.cssAnimation) {
|
|
248929
|
+
const names = [...step.cssAnimation.matchAll(/(?:^|,\s*)([\w-]+)\s+[\d.]+m?s\b/gu)].map(
|
|
248930
|
+
(match) => match[1]
|
|
248931
|
+
);
|
|
248932
|
+
const stepProperties = new Set(
|
|
248933
|
+
(names.length ? names : [step.keyframeName]).flatMap((name) => [
|
|
248934
|
+
...keyframeAnimatedProperties(name)
|
|
248935
|
+
])
|
|
248936
|
+
);
|
|
248937
|
+
const takesOverEverything = stepProperties.has("unknown");
|
|
248938
|
+
for (let index = components.length - 1; index >= 0; index--) {
|
|
248939
|
+
const component2 = components[index];
|
|
248940
|
+
const collides = takesOverEverything || component2.properties.has("unknown") || [...stepProperties].some((property) => component2.properties.has(property));
|
|
248941
|
+
if (collides) {
|
|
248942
|
+
components.splice(index, 1);
|
|
248943
|
+
}
|
|
248944
|
+
}
|
|
248945
|
+
components.push({
|
|
248946
|
+
animation: step.cssAnimation,
|
|
248947
|
+
properties: stepProperties,
|
|
248948
|
+
colorTargets: step.colorTargets
|
|
248949
|
+
});
|
|
248950
|
+
ownedAnimations.set(
|
|
248951
|
+
step.elementId,
|
|
248952
|
+
components.map((component2) => component2.animation)
|
|
248953
|
+
);
|
|
248954
|
+
}
|
|
249016
248955
|
next.set(step.elementId, {
|
|
249017
248956
|
...carried,
|
|
249018
248957
|
visible: shouldBeVisible,
|
|
249019
|
-
cssAnimation:
|
|
249020
|
-
animatesFill:
|
|
249021
|
-
animatesStroke:
|
|
248958
|
+
cssAnimation: components.map((component2) => component2.animation).join(", ") || void 0,
|
|
248959
|
+
animatesFill: components.some((component2) => component2.colorTargets?.includes("fill")) || void 0,
|
|
248960
|
+
animatesStroke: components.some((component2) => component2.colorTargets?.includes("stroke")) || void 0,
|
|
249022
248961
|
textStyle: mergeTextStyleOnStart(carried.textStyle, step.textStyle)
|
|
249023
248962
|
});
|
|
249024
248963
|
}
|
|
249025
248964
|
return next;
|
|
249026
248965
|
});
|
|
249027
248966
|
for (const step of group2.steps) {
|
|
249028
|
-
if (step.command) {
|
|
248967
|
+
if (step.command || !step.elementId) {
|
|
249029
248968
|
continue;
|
|
249030
248969
|
}
|
|
249031
248970
|
const timer = window.setTimeout(
|
|
249032
248971
|
() => {
|
|
248972
|
+
const components = ownedAnimations.get(step.elementId) ?? [];
|
|
248973
|
+
const remaining = step.holdEndState ? components : components.filter((animation) => animation !== step.cssAnimation);
|
|
249033
248974
|
ctx.setStates((previous) => {
|
|
249034
248975
|
const next = new Map(previous);
|
|
249035
248976
|
const current = next.get(step.elementId);
|
|
248977
|
+
if (owners.get(step.elementId) !== owner || current?.cssAnimation !== (components.join(", ") || void 0) || step.cssAnimation && !components.includes(step.cssAnimation)) {
|
|
248978
|
+
return next;
|
|
248979
|
+
}
|
|
249036
248980
|
const visibleAfter = step.presetClass === "exit" || step.hideAfterEffect ? false : current?.visible ?? true;
|
|
249037
248981
|
const carried = carryBuildState(current);
|
|
249038
248982
|
next.set(step.elementId, {
|
|
249039
248983
|
...carried,
|
|
249040
248984
|
visible: visibleAfter,
|
|
249041
|
-
cssAnimation:
|
|
248985
|
+
cssAnimation: remaining.join(", ") || void 0,
|
|
248986
|
+
animatesFill: step.colorTargets ? void 0 : current?.animatesFill,
|
|
248987
|
+
animatesStroke: step.colorTargets ? void 0 : current?.animatesStroke,
|
|
249042
248988
|
textStyle: resolveTextStyleOnCleanup(
|
|
249043
248989
|
carried.textStyle,
|
|
249044
248990
|
step.textStyle,
|
|
@@ -249047,12 +248993,32 @@ function applyAnimationGroupSteps(group2, ctx) {
|
|
|
249047
248993
|
});
|
|
249048
248994
|
return next;
|
|
249049
248995
|
});
|
|
248996
|
+
ownedAnimations.set(step.elementId, remaining);
|
|
249050
248997
|
},
|
|
249051
248998
|
Math.max(0, step.delayMs + step.durationMs + 8)
|
|
249052
248999
|
);
|
|
249053
249000
|
ctx.timers.push(timer);
|
|
249054
249001
|
}
|
|
249055
249002
|
}
|
|
249003
|
+
function carryBuildState(state) {
|
|
249004
|
+
if (!state) {
|
|
249005
|
+
return {};
|
|
249006
|
+
}
|
|
249007
|
+
const carried = {};
|
|
249008
|
+
if (state.build) {
|
|
249009
|
+
carried.build = state.build;
|
|
249010
|
+
}
|
|
249011
|
+
if (state.chartReveal) {
|
|
249012
|
+
carried.chartReveal = state.chartReveal;
|
|
249013
|
+
}
|
|
249014
|
+
if (state.diagramReveal) {
|
|
249015
|
+
carried.diagramReveal = state.diagramReveal;
|
|
249016
|
+
}
|
|
249017
|
+
if (state.textStyle) {
|
|
249018
|
+
carried.textStyle = state.textStyle;
|
|
249019
|
+
}
|
|
249020
|
+
return carried;
|
|
249021
|
+
}
|
|
249056
249022
|
function cancelBuildReveal(handle) {
|
|
249057
249023
|
if (handle.current !== null && typeof cancelAnimationFrame === "function") {
|
|
249058
249024
|
cancelAnimationFrame(handle.current);
|
|
@@ -253338,6 +253304,1142 @@ function prepareElementUpdateBatch(slides, updates) {
|
|
|
253338
253304
|
});
|
|
253339
253305
|
return changed ? next : null;
|
|
253340
253306
|
}
|
|
253307
|
+
var RECORD_COMMAND_GROUPS = [
|
|
253308
|
+
{
|
|
253309
|
+
id: "record.camera",
|
|
253310
|
+
labelKey: "pptx.record.camera",
|
|
253311
|
+
commands: [
|
|
253312
|
+
{
|
|
253313
|
+
id: "record.camera.cameo",
|
|
253314
|
+
labelKey: "pptx.record.cameo",
|
|
253315
|
+
icon: "camera",
|
|
253316
|
+
unsupported: true
|
|
253317
|
+
}
|
|
253318
|
+
]
|
|
253319
|
+
},
|
|
253320
|
+
{
|
|
253321
|
+
id: "record.record",
|
|
253322
|
+
labelKey: "pptx.ribbon.tab.record",
|
|
253323
|
+
commands: [
|
|
253324
|
+
{
|
|
253325
|
+
id: "record.record.fromBeginning",
|
|
253326
|
+
labelKey: "pptx.slideShow.fromBeginning",
|
|
253327
|
+
icon: "video"
|
|
253328
|
+
},
|
|
253329
|
+
{ id: "record.record.fromCurrent", labelKey: "pptx.slideShow.fromCurrent", icon: "play" }
|
|
253330
|
+
]
|
|
253331
|
+
},
|
|
253332
|
+
{
|
|
253333
|
+
id: "record.manage",
|
|
253334
|
+
labelKey: "pptx.record.manage",
|
|
253335
|
+
commands: [
|
|
253336
|
+
{
|
|
253337
|
+
id: "record.manage.clear",
|
|
253338
|
+
labelKey: "pptx.record.clear",
|
|
253339
|
+
icon: "eraser",
|
|
253340
|
+
unsupported: true
|
|
253341
|
+
},
|
|
253342
|
+
{
|
|
253343
|
+
id: "record.manage.reset",
|
|
253344
|
+
labelKey: "pptx.record.resetToCameo",
|
|
253345
|
+
icon: "reset",
|
|
253346
|
+
unsupported: true
|
|
253347
|
+
}
|
|
253348
|
+
]
|
|
253349
|
+
},
|
|
253350
|
+
{
|
|
253351
|
+
id: "record.help",
|
|
253352
|
+
labelKey: "pptx.ribbon.tab.help",
|
|
253353
|
+
commands: [
|
|
253354
|
+
{
|
|
253355
|
+
id: "record.help.learnMore",
|
|
253356
|
+
labelKey: "pptx.record.learnMore",
|
|
253357
|
+
icon: "help",
|
|
253358
|
+
unsupported: true
|
|
253359
|
+
}
|
|
253360
|
+
]
|
|
253361
|
+
}
|
|
253362
|
+
];
|
|
253363
|
+
var SLIDE_SHOW_OPTIONS_STYLES = `
|
|
253364
|
+
:host {
|
|
253365
|
+
display: inline-flex;
|
|
253366
|
+
flex: none;
|
|
253367
|
+
align-items: flex-start;
|
|
253368
|
+
gap: 8px;
|
|
253369
|
+
color: var(--pptx-foreground, #f9fafb);
|
|
253370
|
+
font: inherit;
|
|
253371
|
+
}
|
|
253372
|
+
.column { display: flex; flex-direction: column; gap: 2px; }
|
|
253373
|
+
label {
|
|
253374
|
+
display: flex;
|
|
253375
|
+
align-items: center;
|
|
253376
|
+
gap: 4px;
|
|
253377
|
+
min-height: 22px;
|
|
253378
|
+
padding: 0 4px;
|
|
253379
|
+
font-size: 10px;
|
|
253380
|
+
white-space: nowrap;
|
|
253381
|
+
cursor: pointer;
|
|
253382
|
+
}
|
|
253383
|
+
label:has([disabled]) { color: var(--pptx-muted-foreground, #9ca3af); cursor: not-allowed; }
|
|
253384
|
+
@media (pointer: coarse), (max-width: 767px) {
|
|
253385
|
+
label { min-height: 44px; font-size: 12px; }
|
|
253386
|
+
}
|
|
253387
|
+
`;
|
|
253388
|
+
function definePptxSlideShowOptions(registry) {
|
|
253389
|
+
if (registry.get("pptx-ui-slide-show-options")) {
|
|
253390
|
+
return;
|
|
253391
|
+
}
|
|
253392
|
+
class SlideShowOptions extends HTMLElement {
|
|
253393
|
+
static observedAttributes = ["disabled"];
|
|
253394
|
+
properties;
|
|
253395
|
+
optionLabels = {};
|
|
253396
|
+
rows = /* @__PURE__ */ new Map();
|
|
253397
|
+
constructor() {
|
|
253398
|
+
super();
|
|
253399
|
+
const root = this.attachShadow({ mode: "open" });
|
|
253400
|
+
attachControlStyles(root, SLIDE_SHOW_OPTIONS_STYLES);
|
|
253401
|
+
const columns = [document.createElement("div"), document.createElement("div")];
|
|
253402
|
+
for (const column of columns) {
|
|
253403
|
+
column.className = "column";
|
|
253404
|
+
}
|
|
253405
|
+
SLIDE_SHOW_OPTIONS.forEach((option, index) => {
|
|
253406
|
+
const label = document.createElement("label");
|
|
253407
|
+
const checkbox = document.createElement("pptx-ui-checkbox");
|
|
253408
|
+
const text22 = document.createTextNode("");
|
|
253409
|
+
label.append(checkbox, text22);
|
|
253410
|
+
label.addEventListener("click", (event) => {
|
|
253411
|
+
event.preventDefault();
|
|
253412
|
+
if (event.target !== checkbox) {
|
|
253413
|
+
checkbox.click();
|
|
253414
|
+
}
|
|
253415
|
+
});
|
|
253416
|
+
columns[index < 3 ? 0 : 1].append(label);
|
|
253417
|
+
this.rows.set(option.id, { checkbox, text: text22 });
|
|
253418
|
+
checkbox.addEventListener("change", (event) => {
|
|
253419
|
+
event.stopPropagation();
|
|
253420
|
+
const change = slideShowOptionChange(option.id, checkbox.checked);
|
|
253421
|
+
this.sync();
|
|
253422
|
+
if (!this.disabled && !option.unsupported && change) {
|
|
253423
|
+
this.dispatchEvent(
|
|
253424
|
+
new CustomEvent("show-options-change", {
|
|
253425
|
+
detail: change,
|
|
253426
|
+
bubbles: true,
|
|
253427
|
+
composed: true
|
|
253428
|
+
})
|
|
253429
|
+
);
|
|
253430
|
+
}
|
|
253431
|
+
});
|
|
253432
|
+
checkbox.addEventListener("input", (event) => event.stopPropagation());
|
|
253433
|
+
});
|
|
253434
|
+
columns[1].append(document.createElement("slot"));
|
|
253435
|
+
root.append(...columns);
|
|
253436
|
+
}
|
|
253437
|
+
connectedCallback() {
|
|
253438
|
+
this.sync();
|
|
253439
|
+
}
|
|
253440
|
+
attributeChangedCallback() {
|
|
253441
|
+
this.sync();
|
|
253442
|
+
}
|
|
253443
|
+
get presentationProperties() {
|
|
253444
|
+
return this.properties;
|
|
253445
|
+
}
|
|
253446
|
+
set presentationProperties(value) {
|
|
253447
|
+
this.properties = value;
|
|
253448
|
+
this.sync();
|
|
253449
|
+
}
|
|
253450
|
+
get labels() {
|
|
253451
|
+
return this.optionLabels;
|
|
253452
|
+
}
|
|
253453
|
+
set labels(value) {
|
|
253454
|
+
this.optionLabels = value ?? {};
|
|
253455
|
+
this.sync();
|
|
253456
|
+
}
|
|
253457
|
+
get disabled() {
|
|
253458
|
+
return this.hasAttribute("disabled");
|
|
253459
|
+
}
|
|
253460
|
+
set disabled(value) {
|
|
253461
|
+
this.toggleAttribute("disabled", Boolean(value));
|
|
253462
|
+
}
|
|
253463
|
+
sync() {
|
|
253464
|
+
for (const option of SLIDE_SHOW_OPTIONS) {
|
|
253465
|
+
const row = this.rows.get(option.id);
|
|
253466
|
+
const label = this.optionLabels[option.id] ?? option.labelKey;
|
|
253467
|
+
row.text.textContent = label;
|
|
253468
|
+
row.checkbox.setAttribute("aria-label", label);
|
|
253469
|
+
row.checkbox.checked = readSlideShowOption(this.properties, option.id);
|
|
253470
|
+
row.checkbox.disabled = this.disabled || option.unsupported;
|
|
253471
|
+
}
|
|
253472
|
+
}
|
|
253473
|
+
}
|
|
253474
|
+
registry.define("pptx-ui-slide-show-options", SlideShowOptions);
|
|
253475
|
+
}
|
|
253476
|
+
var SUBTITLE_SETTINGS_STYLES = `
|
|
253477
|
+
:host { display: inline-flex; }
|
|
253478
|
+
dialog { box-sizing: border-box; width: min(440px, calc(100vw - 32px)); max-height: calc(100vh - 32px);
|
|
253479
|
+
margin: auto; padding: 24px; border: 1px solid var(--pptx-border, #374151); border-radius: 10px;
|
|
253480
|
+
background: var(--pptx-background, #181b20); color: var(--pptx-foreground, #f9fafb); font: 14px/1.5 system-ui; }
|
|
253481
|
+
dialog::backdrop { background: #0008; }
|
|
253482
|
+
h2 { margin: 0 0 12px; font-size: 18px; } p { margin: 0 0 20px; }
|
|
253483
|
+
label { display: block; margin-bottom: 8px; }
|
|
253484
|
+
pptx-ui-select { display: block; width: 100%; }
|
|
253485
|
+
footer { display: flex; justify-content: flex-end; gap: 8px; margin-top: 24px; }
|
|
253486
|
+
footer button { padding: 8px 16px; min-height: 44px; border: 1px solid var(--pptx-border, #374151);
|
|
253487
|
+
border-radius: 6px; background: var(--pptx-secondary, #252830); color: inherit; font: inherit; cursor: pointer; }
|
|
253488
|
+
footer button:last-child { background: var(--pptx-primary, #6366f1); color: var(--pptx-primary-foreground, #fff); }
|
|
253489
|
+
footer button:focus-visible { outline: 2px solid var(--pptx-ring, #6366f1); outline-offset: 2px; }
|
|
253490
|
+
@media (forced-colors: active) { dialog { background: Canvas; color: CanvasText; } footer button { color: ButtonText; } }
|
|
253491
|
+
`;
|
|
253492
|
+
function definePptxSubtitleSettings(registry) {
|
|
253493
|
+
if (registry.get("pptx-ui-subtitle-settings")) {
|
|
253494
|
+
return;
|
|
253495
|
+
}
|
|
253496
|
+
class SubtitleSettingsElement extends HTMLElement {
|
|
253497
|
+
current = normalizeSubtitleSettings();
|
|
253498
|
+
text = {
|
|
253499
|
+
title: "Subtitle Settings",
|
|
253500
|
+
language: "Spoken language",
|
|
253501
|
+
browserLanguage: "Browser language",
|
|
253502
|
+
description: "",
|
|
253503
|
+
apply: "Apply",
|
|
253504
|
+
cancel: "Cancel"
|
|
253505
|
+
};
|
|
253506
|
+
command;
|
|
253507
|
+
dialog;
|
|
253508
|
+
heading;
|
|
253509
|
+
description;
|
|
253510
|
+
languageLabel;
|
|
253511
|
+
language;
|
|
253512
|
+
apply;
|
|
253513
|
+
cancel;
|
|
253514
|
+
constructor() {
|
|
253515
|
+
super();
|
|
253516
|
+
const root = this.attachShadow({ mode: "open" });
|
|
253517
|
+
attachControlStyles(root, SUBTITLE_SETTINGS_STYLES);
|
|
253518
|
+
this.command = document.createElement("pptx-ui-ribbon-command");
|
|
253519
|
+
this.command.setAttribute("data-ribbon-control", "slideShow.captions.subtitleSettings");
|
|
253520
|
+
this.command.setAttribute("icon", "captions");
|
|
253521
|
+
this.command.setAttribute("compact", "");
|
|
253522
|
+
this.dialog = document.createElement("dialog");
|
|
253523
|
+
this.heading = document.createElement("h2");
|
|
253524
|
+
this.description = document.createElement("p");
|
|
253525
|
+
this.languageLabel = document.createElement("label");
|
|
253526
|
+
this.language = document.createElement("pptx-ui-select");
|
|
253527
|
+
this.language.id = "spoken-language";
|
|
253528
|
+
this.languageLabel.htmlFor = this.language.id;
|
|
253529
|
+
const footer = document.createElement("footer");
|
|
253530
|
+
this.cancel = document.createElement("button");
|
|
253531
|
+
this.cancel.type = "button";
|
|
253532
|
+
this.apply = document.createElement("button");
|
|
253533
|
+
this.apply.type = "button";
|
|
253534
|
+
footer.append(this.cancel, this.apply);
|
|
253535
|
+
this.dialog.append(this.heading, this.description, this.languageLabel, this.language, footer);
|
|
253536
|
+
root.append(this.command, this.dialog);
|
|
253537
|
+
this.command.addEventListener("command-request", () => this.open());
|
|
253538
|
+
this.cancel.addEventListener("click", () => this.close());
|
|
253539
|
+
this.dialog.addEventListener("cancel", (event) => {
|
|
253540
|
+
event.preventDefault();
|
|
253541
|
+
this.close();
|
|
253542
|
+
});
|
|
253543
|
+
this.dialog.addEventListener("keydown", (event) => {
|
|
253544
|
+
event.stopPropagation();
|
|
253545
|
+
if (event.key === "Tab") {
|
|
253546
|
+
const picker = this.language.shadowRoot?.querySelector("button");
|
|
253547
|
+
const controls2 = [
|
|
253548
|
+
...picker && !picker.disabled ? [picker] : [],
|
|
253549
|
+
this.cancel,
|
|
253550
|
+
this.apply
|
|
253551
|
+
];
|
|
253552
|
+
const active2 = event.composedPath()[0];
|
|
253553
|
+
const index = controls2.findIndex((control) => control === active2);
|
|
253554
|
+
event.preventDefault();
|
|
253555
|
+
controls2[(index + (event.shiftKey ? controls2.length - 1 : 1)) % controls2.length].focus();
|
|
253556
|
+
}
|
|
253557
|
+
if (event.key === "Escape") {
|
|
253558
|
+
event.preventDefault();
|
|
253559
|
+
this.close();
|
|
253560
|
+
}
|
|
253561
|
+
});
|
|
253562
|
+
this.apply.addEventListener("click", () => {
|
|
253563
|
+
const settings = normalizeSubtitleSettings({ spokenLanguage: this.language.value });
|
|
253564
|
+
this.dispatchEvent(
|
|
253565
|
+
new CustomEvent("subtitle-settings-change", {
|
|
253566
|
+
detail: settings,
|
|
253567
|
+
bubbles: true,
|
|
253568
|
+
composed: true
|
|
253569
|
+
})
|
|
253570
|
+
);
|
|
253571
|
+
this.close();
|
|
253572
|
+
});
|
|
253573
|
+
}
|
|
253574
|
+
get settings() {
|
|
253575
|
+
return { ...this.current };
|
|
253576
|
+
}
|
|
253577
|
+
set settings(value) {
|
|
253578
|
+
this.current = normalizeSubtitleSettings(value);
|
|
253579
|
+
}
|
|
253580
|
+
get labels() {
|
|
253581
|
+
return this.text;
|
|
253582
|
+
}
|
|
253583
|
+
set labels(value) {
|
|
253584
|
+
this.text = { ...this.text, ...value };
|
|
253585
|
+
this.sync();
|
|
253586
|
+
}
|
|
253587
|
+
get languageDisabled() {
|
|
253588
|
+
return this.language.disabled;
|
|
253589
|
+
}
|
|
253590
|
+
set languageDisabled(value) {
|
|
253591
|
+
this.language.disabled = value;
|
|
253592
|
+
}
|
|
253593
|
+
connectedCallback() {
|
|
253594
|
+
this.sync();
|
|
253595
|
+
}
|
|
253596
|
+
disconnectedCallback() {
|
|
253597
|
+
if (this.dialog.open) {
|
|
253598
|
+
this.dialog.close();
|
|
253599
|
+
}
|
|
253600
|
+
}
|
|
253601
|
+
open() {
|
|
253602
|
+
if (this.dialog.open) {
|
|
253603
|
+
return;
|
|
253604
|
+
}
|
|
253605
|
+
this.sync();
|
|
253606
|
+
this.language.value = this.current.spokenLanguage;
|
|
253607
|
+
this.dialog.showModal();
|
|
253608
|
+
this.language.shadowRoot?.querySelector("button")?.focus();
|
|
253609
|
+
}
|
|
253610
|
+
close() {
|
|
253611
|
+
this.dialog.close();
|
|
253612
|
+
this.command.shadowRoot?.querySelector("button")?.focus();
|
|
253613
|
+
}
|
|
253614
|
+
sync() {
|
|
253615
|
+
this.command.setAttribute("label", this.text.title);
|
|
253616
|
+
this.dialog.setAttribute("aria-label", this.text.title);
|
|
253617
|
+
this.heading.textContent = this.text.title;
|
|
253618
|
+
this.description.textContent = this.text.description;
|
|
253619
|
+
this.languageLabel.textContent = this.text.language;
|
|
253620
|
+
this.language.setAttribute("aria-label", this.text.language);
|
|
253621
|
+
this.cancel.textContent = this.text.cancel;
|
|
253622
|
+
this.apply.textContent = this.text.apply;
|
|
253623
|
+
this.language.replaceChildren(
|
|
253624
|
+
...SUBTITLE_LANGUAGES.map((value) => {
|
|
253625
|
+
const option = document.createElement("option");
|
|
253626
|
+
option.value = value;
|
|
253627
|
+
option.textContent = value === "auto" ? this.text.browserLanguage : subtitleLanguageLabel(value);
|
|
253628
|
+
return option;
|
|
253629
|
+
})
|
|
253630
|
+
);
|
|
253631
|
+
}
|
|
253632
|
+
}
|
|
253633
|
+
registry.define("pptx-ui-subtitle-settings", SubtitleSettingsElement);
|
|
253634
|
+
}
|
|
253635
|
+
var controls = [
|
|
253636
|
+
["pptx-ui-search", definePptxSearchField],
|
|
253637
|
+
["pptx-ui-checkbox", definePptxCheckbox],
|
|
253638
|
+
["pptx-ui-select", definePptxSelect],
|
|
253639
|
+
["pptx-ui-slide-show-options", definePptxSlideShowOptions],
|
|
253640
|
+
["pptx-ui-ribbon-command", definePptxRibbonCommand],
|
|
253641
|
+
["pptx-ui-ribbon-group", definePptxRibbonGroup],
|
|
253642
|
+
["pptx-ui-ribbon-toggle", definePptxRibbonToggle],
|
|
253643
|
+
["pptx-ui-subtitle-settings", definePptxSubtitleSettings]
|
|
253644
|
+
];
|
|
253645
|
+
function registerPptxWebControls() {
|
|
253646
|
+
if (typeof window === "undefined" || !window.customElements) {
|
|
253647
|
+
return;
|
|
253648
|
+
}
|
|
253649
|
+
const registry = window.customElements;
|
|
253650
|
+
assertWebControlContract(
|
|
253651
|
+
registry,
|
|
253652
|
+
controls.map(([name]) => name)
|
|
253653
|
+
);
|
|
253654
|
+
if (!document.getElementById("pptx-ui-control-hosts")) {
|
|
253655
|
+
const style = document.createElement("style");
|
|
253656
|
+
style.id = "pptx-ui-control-hosts";
|
|
253657
|
+
style.textContent = HOST_STYLES;
|
|
253658
|
+
document.head.append(style);
|
|
253659
|
+
}
|
|
253660
|
+
for (const [name, define] of controls) {
|
|
253661
|
+
if (!registry.get(name)) {
|
|
253662
|
+
define(registry);
|
|
253663
|
+
markWebControlContract(registry.get(name));
|
|
253664
|
+
}
|
|
253665
|
+
}
|
|
253666
|
+
}
|
|
253667
|
+
var defaultThemeColors = {
|
|
253668
|
+
background: "#030712",
|
|
253669
|
+
// gray-950
|
|
253670
|
+
foreground: "#f3f4f6",
|
|
253671
|
+
// gray-100
|
|
253672
|
+
card: "#111827",
|
|
253673
|
+
// gray-900
|
|
253674
|
+
cardForeground: "#f3f4f6",
|
|
253675
|
+
// gray-100
|
|
253676
|
+
popover: "#111827",
|
|
253677
|
+
// gray-900
|
|
253678
|
+
popoverForeground: "#f3f4f6",
|
|
253679
|
+
// gray-100
|
|
253680
|
+
primary: "#6366f1",
|
|
253681
|
+
// indigo-500
|
|
253682
|
+
primaryForeground: "#ffffff",
|
|
253683
|
+
// white
|
|
253684
|
+
secondary: "#1f2937",
|
|
253685
|
+
// gray-800
|
|
253686
|
+
secondaryForeground: "#f3f4f6",
|
|
253687
|
+
// gray-100
|
|
253688
|
+
muted: "#1f2937",
|
|
253689
|
+
// gray-800
|
|
253690
|
+
mutedForeground: "#9ca3af",
|
|
253691
|
+
// gray-400
|
|
253692
|
+
accent: "#1f2937",
|
|
253693
|
+
// gray-800
|
|
253694
|
+
accentForeground: "#f3f4f6",
|
|
253695
|
+
// gray-100
|
|
253696
|
+
destructive: "#ef4444",
|
|
253697
|
+
// red-500
|
|
253698
|
+
destructiveForeground: "#ffffff",
|
|
253699
|
+
// white
|
|
253700
|
+
border: "#374151",
|
|
253701
|
+
// gray-700
|
|
253702
|
+
input: "#374151",
|
|
253703
|
+
// gray-700
|
|
253704
|
+
ring: "#6366f1"
|
|
253705
|
+
// indigo-500
|
|
253706
|
+
};
|
|
253707
|
+
var defaultRadius = "0.5rem";
|
|
253708
|
+
var lightThemeColors = {
|
|
253709
|
+
background: "#f8fafc",
|
|
253710
|
+
// slate-50
|
|
253711
|
+
foreground: "#0f172a",
|
|
253712
|
+
// slate-900
|
|
253713
|
+
card: "#ffffff",
|
|
253714
|
+
cardForeground: "#0f172a",
|
|
253715
|
+
// slate-900
|
|
253716
|
+
popover: "#ffffff",
|
|
253717
|
+
popoverForeground: "#0f172a",
|
|
253718
|
+
// slate-900
|
|
253719
|
+
primary: "#4f46e5",
|
|
253720
|
+
// indigo-600
|
|
253721
|
+
primaryForeground: "#ffffff",
|
|
253722
|
+
secondary: "#f1f5f9",
|
|
253723
|
+
// slate-100
|
|
253724
|
+
secondaryForeground: "#0f172a",
|
|
253725
|
+
// slate-900
|
|
253726
|
+
muted: "#f1f5f9",
|
|
253727
|
+
// slate-100
|
|
253728
|
+
mutedForeground: "#64748b",
|
|
253729
|
+
// slate-500
|
|
253730
|
+
accent: "#f1f5f9",
|
|
253731
|
+
// slate-100
|
|
253732
|
+
accentForeground: "#0f172a",
|
|
253733
|
+
// slate-900
|
|
253734
|
+
destructive: "#dc2626",
|
|
253735
|
+
// red-600
|
|
253736
|
+
destructiveForeground: "#ffffff",
|
|
253737
|
+
border: "#e2e8f0",
|
|
253738
|
+
// slate-200
|
|
253739
|
+
input: "#e2e8f0",
|
|
253740
|
+
// slate-200
|
|
253741
|
+
ring: "#4f46e5"
|
|
253742
|
+
// indigo-600
|
|
253743
|
+
};
|
|
253744
|
+
var lightTheme = {
|
|
253745
|
+
colors: lightThemeColors
|
|
253746
|
+
};
|
|
253747
|
+
var COLOR_KEY_TO_CSS = {
|
|
253748
|
+
background: "background",
|
|
253749
|
+
foreground: "foreground",
|
|
253750
|
+
card: "card",
|
|
253751
|
+
cardForeground: "card-foreground",
|
|
253752
|
+
popover: "popover",
|
|
253753
|
+
popoverForeground: "popover-foreground",
|
|
253754
|
+
primary: "primary",
|
|
253755
|
+
primaryForeground: "primary-foreground",
|
|
253756
|
+
secondary: "secondary",
|
|
253757
|
+
secondaryForeground: "secondary-foreground",
|
|
253758
|
+
muted: "muted",
|
|
253759
|
+
mutedForeground: "muted-foreground",
|
|
253760
|
+
accent: "accent",
|
|
253761
|
+
accentForeground: "accent-foreground",
|
|
253762
|
+
destructive: "destructive",
|
|
253763
|
+
destructiveForeground: "destructive-foreground",
|
|
253764
|
+
border: "border",
|
|
253765
|
+
input: "input",
|
|
253766
|
+
ring: "ring"
|
|
253767
|
+
};
|
|
253768
|
+
var DERIVED_COLOR_TOKENS = [
|
|
253769
|
+
{ source: "primary", cssSuffix: "inspector-active" },
|
|
253770
|
+
{ source: "border", cssSuffix: "inspector-border" }
|
|
253771
|
+
];
|
|
253772
|
+
function themeToCssVars(theme, omitDefaults = false) {
|
|
253773
|
+
const vars = {};
|
|
253774
|
+
if (!theme) {
|
|
253775
|
+
return vars;
|
|
253776
|
+
}
|
|
253777
|
+
const colors = theme.colors;
|
|
253778
|
+
if (colors) {
|
|
253779
|
+
for (const [key2, cssSuffix] of Object.entries(COLOR_KEY_TO_CSS)) {
|
|
253780
|
+
const value = colors[key2];
|
|
253781
|
+
if (value === void 0) {
|
|
253782
|
+
continue;
|
|
253783
|
+
}
|
|
253784
|
+
if (omitDefaults && value === defaultThemeColors[key2]) {
|
|
253785
|
+
continue;
|
|
253786
|
+
}
|
|
253787
|
+
vars[`--pptx-${cssSuffix}`] = value;
|
|
253788
|
+
vars[`--color-${cssSuffix}`] = value;
|
|
253789
|
+
}
|
|
253790
|
+
for (const { source, cssSuffix } of DERIVED_COLOR_TOKENS) {
|
|
253791
|
+
const value = colors[source];
|
|
253792
|
+
if (value === void 0) {
|
|
253793
|
+
continue;
|
|
253794
|
+
}
|
|
253795
|
+
if (omitDefaults && value === defaultThemeColors[source]) {
|
|
253796
|
+
continue;
|
|
253797
|
+
}
|
|
253798
|
+
vars[`--pptx-${cssSuffix}`] = value;
|
|
253799
|
+
}
|
|
253800
|
+
}
|
|
253801
|
+
if (theme.radius !== void 0) {
|
|
253802
|
+
if (!omitDefaults || theme.radius !== defaultRadius) {
|
|
253803
|
+
vars["--pptx-radius"] = theme.radius;
|
|
253804
|
+
const r = theme.radius;
|
|
253805
|
+
vars["--radius-sm"] = `calc(${r} - 4px)`;
|
|
253806
|
+
vars["--radius-md"] = `calc(${r} - 2px)`;
|
|
253807
|
+
vars["--radius-lg"] = r;
|
|
253808
|
+
vars["--radius-xl"] = `calc(${r} + 4px)`;
|
|
253809
|
+
}
|
|
253810
|
+
}
|
|
253811
|
+
if (theme.cssVars) {
|
|
253812
|
+
for (const [key2, value] of Object.entries(theme.cssVars)) {
|
|
253813
|
+
vars[key2] = value;
|
|
253814
|
+
}
|
|
253815
|
+
}
|
|
253816
|
+
return vars;
|
|
253817
|
+
}
|
|
253818
|
+
function defaultCssVars() {
|
|
253819
|
+
const vars = {};
|
|
253820
|
+
for (const [key2, cssSuffix] of Object.entries(COLOR_KEY_TO_CSS)) {
|
|
253821
|
+
vars[`--pptx-${cssSuffix}`] = defaultThemeColors[key2];
|
|
253822
|
+
}
|
|
253823
|
+
for (const { source, cssSuffix } of DERIVED_COLOR_TOKENS) {
|
|
253824
|
+
vars[`--pptx-${cssSuffix}`] = defaultThemeColors[source];
|
|
253825
|
+
}
|
|
253826
|
+
vars["--pptx-radius"] = defaultRadius;
|
|
253827
|
+
return vars;
|
|
253828
|
+
}
|
|
253829
|
+
var vermilionLightColors = {
|
|
253830
|
+
background: "#fbfaf7",
|
|
253831
|
+
foreground: "#1a1d21",
|
|
253832
|
+
card: "#ffffff",
|
|
253833
|
+
cardForeground: "#1a1d21",
|
|
253834
|
+
popover: "#ffffff",
|
|
253835
|
+
popoverForeground: "#1a1d21",
|
|
253836
|
+
primary: "#c2431f",
|
|
253837
|
+
primaryForeground: "#ffffff",
|
|
253838
|
+
secondary: "#f2efe8",
|
|
253839
|
+
secondaryForeground: "#1a1d21",
|
|
253840
|
+
muted: "#f2efe8",
|
|
253841
|
+
mutedForeground: "#5a626e",
|
|
253842
|
+
accent: "rgba(194, 67, 31, 0.08)",
|
|
253843
|
+
accentForeground: "#1a1d21",
|
|
253844
|
+
destructive: "#dc2626",
|
|
253845
|
+
destructiveForeground: "#ffffff",
|
|
253846
|
+
border: "#e6e2d9",
|
|
253847
|
+
input: "#e6e2d9",
|
|
253848
|
+
ring: "#c2431f"
|
|
253849
|
+
};
|
|
253850
|
+
var vermilionDarkColors = {
|
|
253851
|
+
background: "#0f1113",
|
|
253852
|
+
foreground: "#f0efec",
|
|
253853
|
+
card: "#171a1e",
|
|
253854
|
+
cardForeground: "#f0efec",
|
|
253855
|
+
popover: "#171a1e",
|
|
253856
|
+
popoverForeground: "#f0efec",
|
|
253857
|
+
primary: "#e86a40",
|
|
253858
|
+
primaryForeground: "#ffffff",
|
|
253859
|
+
secondary: "#1f242b",
|
|
253860
|
+
secondaryForeground: "#f0efec",
|
|
253861
|
+
muted: "#1f242b",
|
|
253862
|
+
mutedForeground: "#9aa1ab",
|
|
253863
|
+
accent: "rgba(232, 106, 64, 0.1)",
|
|
253864
|
+
accentForeground: "#f0efec",
|
|
253865
|
+
destructive: "#ef4444",
|
|
253866
|
+
destructiveForeground: "#ffffff",
|
|
253867
|
+
border: "#272c33",
|
|
253868
|
+
input: "#272c33",
|
|
253869
|
+
ring: "#e86a40"
|
|
253870
|
+
};
|
|
253871
|
+
var vermilionRadius = "0.375rem";
|
|
253872
|
+
var vermilionLightTheme = {
|
|
253873
|
+
colors: vermilionLightColors,
|
|
253874
|
+
radius: vermilionRadius
|
|
253875
|
+
};
|
|
253876
|
+
var vermilionDarkTheme = {
|
|
253877
|
+
colors: vermilionDarkColors,
|
|
253878
|
+
radius: vermilionRadius
|
|
253879
|
+
};
|
|
253880
|
+
var THEME_CATALOG = [
|
|
253881
|
+
{ key: "default", labelKey: "pptx.settings.theme.default", theme: void 0 },
|
|
253882
|
+
{ key: "light", labelKey: "pptx.settings.theme.light", theme: lightTheme },
|
|
253883
|
+
{
|
|
253884
|
+
key: "vermilionLight",
|
|
253885
|
+
labelKey: "pptx.settings.theme.vermilionLight",
|
|
253886
|
+
theme: vermilionLightTheme
|
|
253887
|
+
},
|
|
253888
|
+
{
|
|
253889
|
+
key: "vermilionDark",
|
|
253890
|
+
labelKey: "pptx.settings.theme.vermilionDark",
|
|
253891
|
+
theme: vermilionDarkTheme
|
|
253892
|
+
}
|
|
253893
|
+
];
|
|
253894
|
+
function resolveThemeCatalogEntry(key2, catalog = THEME_CATALOG) {
|
|
253895
|
+
return catalog.find((entry5) => entry5.key === key2)?.theme;
|
|
253896
|
+
}
|
|
253897
|
+
function corePreset(id) {
|
|
253898
|
+
const preset22 = THEME_PRESETS.find((p) => p.id === id);
|
|
253899
|
+
if (!preset22) {
|
|
253900
|
+
throw new Error(`theme-gallery-presets: core THEME_PRESETS is missing "${id}"`);
|
|
253901
|
+
}
|
|
253902
|
+
return preset22;
|
|
253903
|
+
}
|
|
253904
|
+
var WISP_PRESET = {
|
|
253905
|
+
id: "wisp",
|
|
253906
|
+
name: "Wisp",
|
|
253907
|
+
colorScheme: {
|
|
253908
|
+
dk1: "#000000",
|
|
253909
|
+
lt1: "#FFFFFF",
|
|
253910
|
+
dk2: "#46393B",
|
|
253911
|
+
lt2: "#E8DCD8",
|
|
253912
|
+
accent1: "#A53010",
|
|
253913
|
+
accent2: "#DE7E18",
|
|
253914
|
+
accent3: "#9F8351",
|
|
253915
|
+
accent4: "#728653",
|
|
253916
|
+
accent5: "#92AA4C",
|
|
253917
|
+
accent6: "#6AAC91",
|
|
253918
|
+
hlink: "#FB4F14",
|
|
253919
|
+
folHlink: "#E25839"
|
|
253920
|
+
},
|
|
253921
|
+
fontScheme: {
|
|
253922
|
+
majorFont: { latin: "Century Gothic" },
|
|
253923
|
+
minorFont: { latin: "Century Gothic" }
|
|
253924
|
+
}
|
|
253925
|
+
};
|
|
253926
|
+
var BERLIN_PRESET = {
|
|
253927
|
+
id: "berlin",
|
|
253928
|
+
name: "Berlin",
|
|
253929
|
+
colorScheme: {
|
|
253930
|
+
dk1: "#000000",
|
|
253931
|
+
lt1: "#FFFFFF",
|
|
253932
|
+
dk2: "#3E5C61",
|
|
253933
|
+
lt2: "#D5E0D0",
|
|
253934
|
+
accent1: "#F09415",
|
|
253935
|
+
accent2: "#C1B56B",
|
|
253936
|
+
accent3: "#89C2A3",
|
|
253937
|
+
accent4: "#729BBE",
|
|
253938
|
+
accent5: "#9A90C2",
|
|
253939
|
+
accent6: "#BE8DBE",
|
|
253940
|
+
hlink: "#25A0DA",
|
|
253941
|
+
folHlink: "#FF7F00"
|
|
253942
|
+
},
|
|
253943
|
+
fontScheme: {
|
|
253944
|
+
majorFont: { latin: "Trebuchet MS" },
|
|
253945
|
+
minorFont: { latin: "Trebuchet MS" }
|
|
253946
|
+
}
|
|
253947
|
+
};
|
|
253948
|
+
var SLICE_PRESET = {
|
|
253949
|
+
id: "slice",
|
|
253950
|
+
name: "Slice",
|
|
253951
|
+
colorScheme: {
|
|
253952
|
+
dk1: "#000000",
|
|
253953
|
+
lt1: "#FFFFFF",
|
|
253954
|
+
dk2: "#2E3B4C",
|
|
253955
|
+
lt2: "#C7CDD3",
|
|
253956
|
+
accent1: "#E2751D",
|
|
253957
|
+
accent2: "#C53B23",
|
|
253958
|
+
accent3: "#A13D69",
|
|
253959
|
+
accent4: "#58599E",
|
|
253960
|
+
accent5: "#36749D",
|
|
253961
|
+
accent6: "#4EA39A",
|
|
253962
|
+
hlink: "#FD6B32",
|
|
253963
|
+
folHlink: "#D14D0F"
|
|
253964
|
+
},
|
|
253965
|
+
fontScheme: {
|
|
253966
|
+
majorFont: { latin: "Century Gothic" },
|
|
253967
|
+
minorFont: { latin: "Century Gothic" }
|
|
253968
|
+
}
|
|
253969
|
+
};
|
|
253970
|
+
var DIVIDEND_PRESET = {
|
|
253971
|
+
id: "dividend",
|
|
253972
|
+
name: "Dividend",
|
|
253973
|
+
colorScheme: {
|
|
253974
|
+
dk1: "#000000",
|
|
253975
|
+
lt1: "#FFFFFF",
|
|
253976
|
+
dk2: "#3D3D3D",
|
|
253977
|
+
lt2: "#E1E1E1",
|
|
253978
|
+
accent1: "#4D1434",
|
|
253979
|
+
accent2: "#903163",
|
|
253980
|
+
accent3: "#B2324B",
|
|
253981
|
+
accent4: "#D34817",
|
|
253982
|
+
accent5: "#E8971C",
|
|
253983
|
+
accent6: "#FDCB00",
|
|
253984
|
+
hlink: "#A03068",
|
|
253985
|
+
folHlink: "#C34882"
|
|
253986
|
+
},
|
|
253987
|
+
fontScheme: {
|
|
253988
|
+
majorFont: { latin: "Gill Sans MT" },
|
|
253989
|
+
minorFont: { latin: "Gill Sans MT" }
|
|
253990
|
+
}
|
|
253991
|
+
};
|
|
253992
|
+
[
|
|
253993
|
+
corePreset("office"),
|
|
253994
|
+
corePreset("facet"),
|
|
253995
|
+
corePreset("integral"),
|
|
253996
|
+
corePreset("ion"),
|
|
253997
|
+
corePreset("retrospect"),
|
|
253998
|
+
corePreset("organic"),
|
|
253999
|
+
WISP_PRESET,
|
|
254000
|
+
BERLIN_PRESET,
|
|
254001
|
+
SLICE_PRESET,
|
|
254002
|
+
DIVIDEND_PRESET
|
|
254003
|
+
];
|
|
254004
|
+
function createPresentationLoadResources(handler) {
|
|
254005
|
+
const blobUrls = [];
|
|
254006
|
+
let committed = false;
|
|
254007
|
+
let released = false;
|
|
254008
|
+
return {
|
|
254009
|
+
blobUrls,
|
|
254010
|
+
/** The live viewer now owns the handler and media URLs. */
|
|
254011
|
+
commit() {
|
|
254012
|
+
committed = true;
|
|
254013
|
+
},
|
|
254014
|
+
/** Call in finally, after pending asset reads have settled. */
|
|
254015
|
+
releaseIfUncommitted() {
|
|
254016
|
+
if (committed || released) {
|
|
254017
|
+
return;
|
|
254018
|
+
}
|
|
254019
|
+
released = true;
|
|
254020
|
+
handler.dispose();
|
|
254021
|
+
for (const url of blobUrls) {
|
|
254022
|
+
if (url.startsWith("blob:")) {
|
|
254023
|
+
URL.revokeObjectURL(url);
|
|
254024
|
+
}
|
|
254025
|
+
}
|
|
254026
|
+
}
|
|
254027
|
+
};
|
|
254028
|
+
}
|
|
254029
|
+
function walkAndPatchElements(elements, patch) {
|
|
254030
|
+
let mutated = false;
|
|
254031
|
+
const next = elements.map((el) => {
|
|
254032
|
+
let updated = patch(el);
|
|
254033
|
+
if (updated.type === "group" && updated.children?.length) {
|
|
254034
|
+
const newChildren = walkAndPatchElements(updated.children, patch);
|
|
254035
|
+
if (newChildren !== updated.children) {
|
|
254036
|
+
updated = { ...updated, children: newChildren };
|
|
254037
|
+
}
|
|
254038
|
+
}
|
|
254039
|
+
if (updated !== el) {
|
|
254040
|
+
mutated = true;
|
|
254041
|
+
}
|
|
254042
|
+
return updated;
|
|
254043
|
+
});
|
|
254044
|
+
return mutated ? next : elements;
|
|
254045
|
+
}
|
|
254046
|
+
function applyImagePathPatches(elements, resolvedMap, refs) {
|
|
254047
|
+
const elementPatches = /* @__PURE__ */ new Map();
|
|
254048
|
+
for (const ref of refs) {
|
|
254049
|
+
const url = resolvedMap.get(ref.path);
|
|
254050
|
+
if (!url) {
|
|
254051
|
+
continue;
|
|
254052
|
+
}
|
|
254053
|
+
const existing = elementPatches.get(ref.element.id) ?? {};
|
|
254054
|
+
existing[ref.field] = url;
|
|
254055
|
+
elementPatches.set(ref.element.id, existing);
|
|
254056
|
+
}
|
|
254057
|
+
if (elementPatches.size === 0) {
|
|
254058
|
+
return elements;
|
|
254059
|
+
}
|
|
254060
|
+
return walkAndPatchElements(elements, (el) => {
|
|
254061
|
+
const patch = elementPatches.get(el.id);
|
|
254062
|
+
return patch ? { ...el, ...patch } : el;
|
|
254063
|
+
});
|
|
254064
|
+
}
|
|
254065
|
+
function isExternalUrl(path) {
|
|
254066
|
+
return path.startsWith("http://") || path.startsWith("https://") || path.startsWith("data:") || path.startsWith("blob:");
|
|
254067
|
+
}
|
|
254068
|
+
function collectMediaElements(elements, collector) {
|
|
254069
|
+
for (const element of elements) {
|
|
254070
|
+
if (element.type === "media") {
|
|
254071
|
+
collector.push(element);
|
|
254072
|
+
continue;
|
|
254073
|
+
}
|
|
254074
|
+
if (element.type === "group" && element.children?.length) {
|
|
254075
|
+
collectMediaElements(element.children, collector);
|
|
254076
|
+
}
|
|
254077
|
+
}
|
|
254078
|
+
}
|
|
254079
|
+
function collectImagePaths(slides) {
|
|
254080
|
+
const paths = /* @__PURE__ */ new Set();
|
|
254081
|
+
const refs = [];
|
|
254082
|
+
const walkElements = (elements) => {
|
|
254083
|
+
for (const el of elements) {
|
|
254084
|
+
if (el.type === "picture" || el.type === "image") {
|
|
254085
|
+
const pic = el;
|
|
254086
|
+
if (pic.imagePath && !pic.imageData && !isExternalUrl(pic.imagePath)) {
|
|
254087
|
+
paths.add(pic.imagePath);
|
|
254088
|
+
refs.push({ element: el, field: "imageData", path: pic.imagePath });
|
|
254089
|
+
}
|
|
254090
|
+
if (pic.svgPath && !pic.svgData && !isExternalUrl(pic.svgPath)) {
|
|
254091
|
+
paths.add(pic.svgPath);
|
|
254092
|
+
refs.push({ element: el, field: "svgData", path: pic.svgPath });
|
|
254093
|
+
}
|
|
254094
|
+
}
|
|
254095
|
+
if (el.type === "media") {
|
|
254096
|
+
const media = el;
|
|
254097
|
+
if (media.posterFramePath && !media.posterFrameData && !isExternalUrl(media.posterFramePath)) {
|
|
254098
|
+
paths.add(media.posterFramePath);
|
|
254099
|
+
refs.push({
|
|
254100
|
+
element: el,
|
|
254101
|
+
field: "posterFrameData",
|
|
254102
|
+
path: media.posterFramePath
|
|
254103
|
+
});
|
|
254104
|
+
}
|
|
254105
|
+
}
|
|
254106
|
+
if (el.type === "model3d") {
|
|
254107
|
+
const model = el;
|
|
254108
|
+
if (model.modelPath && !model.modelData && !isExternalUrl(model.modelPath)) {
|
|
254109
|
+
paths.add(model.modelPath);
|
|
254110
|
+
refs.push({ element: el, field: "modelData", path: model.modelPath });
|
|
254111
|
+
}
|
|
254112
|
+
const posterNeedsResolution = model.posterImage ? !isExternalUrl(model.posterImage) : !model.imageData;
|
|
254113
|
+
if (model.imagePath && posterNeedsResolution && !isExternalUrl(model.imagePath)) {
|
|
254114
|
+
paths.add(model.imagePath);
|
|
254115
|
+
refs.push({ element: el, field: "posterImage", path: model.imagePath });
|
|
254116
|
+
}
|
|
254117
|
+
}
|
|
254118
|
+
if (el.type === "group" && el.children?.length) {
|
|
254119
|
+
walkElements(el.children);
|
|
254120
|
+
}
|
|
254121
|
+
}
|
|
254122
|
+
};
|
|
254123
|
+
for (const slide of slides) {
|
|
254124
|
+
walkElements(slide.elements);
|
|
254125
|
+
}
|
|
254126
|
+
return { paths, refs };
|
|
254127
|
+
}
|
|
254128
|
+
function collectTableCellImagePaths(slides) {
|
|
254129
|
+
const paths = /* @__PURE__ */ new Set();
|
|
254130
|
+
const refs = [];
|
|
254131
|
+
const walkElements = (elements) => {
|
|
254132
|
+
for (const el of elements) {
|
|
254133
|
+
if (el.type === "table") {
|
|
254134
|
+
const rows = el.tableData?.rows ?? [];
|
|
254135
|
+
rows.forEach((row, rowIndex) => {
|
|
254136
|
+
row.cells.forEach((cell, cellIndex) => {
|
|
254137
|
+
const path = cell.style?.backgroundImageFillPath;
|
|
254138
|
+
if (path && !cell.style?.backgroundImageFillData && !isExternalUrl(path)) {
|
|
254139
|
+
paths.add(path);
|
|
254140
|
+
refs.push({ element: el, rowIndex, cellIndex, path });
|
|
254141
|
+
}
|
|
254142
|
+
});
|
|
254143
|
+
});
|
|
254144
|
+
}
|
|
254145
|
+
if (el.type === "group" && el.children?.length) {
|
|
254146
|
+
walkElements(el.children);
|
|
254147
|
+
}
|
|
254148
|
+
}
|
|
254149
|
+
};
|
|
254150
|
+
for (const slide of slides) {
|
|
254151
|
+
walkElements(slide.elements);
|
|
254152
|
+
}
|
|
254153
|
+
return { paths, refs };
|
|
254154
|
+
}
|
|
254155
|
+
function applyTableCellImagePatches(elements, resolvedMap, refs) {
|
|
254156
|
+
const patchesByElementId = /* @__PURE__ */ new Map();
|
|
254157
|
+
for (const ref of refs) {
|
|
254158
|
+
const url = resolvedMap.get(ref.path);
|
|
254159
|
+
if (!url) {
|
|
254160
|
+
continue;
|
|
254161
|
+
}
|
|
254162
|
+
const list2 = patchesByElementId.get(ref.element.id) ?? [];
|
|
254163
|
+
list2.push({ rowIndex: ref.rowIndex, cellIndex: ref.cellIndex, url });
|
|
254164
|
+
patchesByElementId.set(ref.element.id, list2);
|
|
254165
|
+
}
|
|
254166
|
+
if (patchesByElementId.size === 0) {
|
|
254167
|
+
return elements;
|
|
254168
|
+
}
|
|
254169
|
+
return walkAndPatchElements(elements, (el) => {
|
|
254170
|
+
const cellPatches = patchesByElementId.get(el.id);
|
|
254171
|
+
if (!cellPatches || el.type !== "table") {
|
|
254172
|
+
return el;
|
|
254173
|
+
}
|
|
254174
|
+
const table2 = el;
|
|
254175
|
+
const tableData = table2.tableData;
|
|
254176
|
+
if (!tableData) {
|
|
254177
|
+
return el;
|
|
254178
|
+
}
|
|
254179
|
+
const newRows = tableData.rows.map((row, rowIndex) => {
|
|
254180
|
+
const rowPatches = cellPatches.filter((p) => p.rowIndex === rowIndex);
|
|
254181
|
+
if (rowPatches.length === 0) {
|
|
254182
|
+
return row;
|
|
254183
|
+
}
|
|
254184
|
+
const newCells = row.cells.map((cell, cellIndex) => {
|
|
254185
|
+
const patch = rowPatches.find((p) => p.cellIndex === cellIndex);
|
|
254186
|
+
if (!patch || !cell.style) {
|
|
254187
|
+
return cell;
|
|
254188
|
+
}
|
|
254189
|
+
return {
|
|
254190
|
+
...cell,
|
|
254191
|
+
style: { ...cell.style, backgroundImageFillData: patch.url }
|
|
254192
|
+
};
|
|
254193
|
+
});
|
|
254194
|
+
return { ...row, cells: newCells };
|
|
254195
|
+
});
|
|
254196
|
+
return { ...table2, tableData: { ...tableData, rows: newRows } };
|
|
254197
|
+
});
|
|
254198
|
+
}
|
|
254199
|
+
function buildInitialGuides(presentationGuides, firstSlideGuides) {
|
|
254200
|
+
const guides = [];
|
|
254201
|
+
if (presentationGuides) {
|
|
254202
|
+
for (const g2 of presentationGuides) {
|
|
254203
|
+
guides.push({
|
|
254204
|
+
id: g2.id,
|
|
254205
|
+
axis: g2.orientation === "horz" ? "h" : "v",
|
|
254206
|
+
position: guideEmuToPx(g2.positionEmu)
|
|
254207
|
+
});
|
|
254208
|
+
}
|
|
254209
|
+
}
|
|
254210
|
+
if (firstSlideGuides) {
|
|
254211
|
+
for (const g2 of firstSlideGuides) {
|
|
254212
|
+
guides.push({
|
|
254213
|
+
id: g2.id,
|
|
254214
|
+
axis: g2.orientation === "horz" ? "h" : "v",
|
|
254215
|
+
position: guideEmuToPx(g2.positionEmu)
|
|
254216
|
+
});
|
|
254217
|
+
}
|
|
254218
|
+
}
|
|
254219
|
+
return guides;
|
|
254220
|
+
}
|
|
254221
|
+
async function resolveMediaElementSource(mediaElement, handler) {
|
|
254222
|
+
const mediaPath = mediaElement.mediaPath;
|
|
254223
|
+
if (!mediaPath) {
|
|
254224
|
+
return { mediaPath: void 0, url: void 0, isBlobUrl: false, missing: true };
|
|
254225
|
+
}
|
|
254226
|
+
if (isExternalUrl(mediaPath)) {
|
|
254227
|
+
return { mediaPath, url: mediaPath, isBlobUrl: false, missing: false };
|
|
254228
|
+
}
|
|
254229
|
+
try {
|
|
254230
|
+
const isAudioVideo = mediaElement.mediaType === "audio" || mediaElement.mediaType === "video";
|
|
254231
|
+
if (isAudioVideo) {
|
|
254232
|
+
const arrayBuffer = await handler.getMediaArrayBuffer(mediaPath);
|
|
254233
|
+
if (!arrayBuffer) {
|
|
254234
|
+
return { mediaPath, url: void 0, isBlobUrl: false, missing: true };
|
|
254235
|
+
}
|
|
254236
|
+
const mimeType = mediaElement.mediaMimeType || "application/octet-stream";
|
|
254237
|
+
const blobUrl = URL.createObjectURL(new Blob([arrayBuffer], { type: mimeType }));
|
|
254238
|
+
return { mediaPath, url: blobUrl, isBlobUrl: true, missing: false };
|
|
254239
|
+
}
|
|
254240
|
+
const dataUrl = await handler.getImageData(mediaPath);
|
|
254241
|
+
if (!dataUrl) {
|
|
254242
|
+
return { mediaPath, url: void 0, isBlobUrl: false, missing: true };
|
|
254243
|
+
}
|
|
254244
|
+
return { mediaPath, url: dataUrl, isBlobUrl: false, missing: false };
|
|
254245
|
+
} catch {
|
|
254246
|
+
return { mediaPath, url: void 0, isBlobUrl: false, missing: true };
|
|
254247
|
+
}
|
|
254248
|
+
}
|
|
254249
|
+
var TABLE_STYLE_FILL_KEYS = [
|
|
254250
|
+
"wholeTblFill",
|
|
254251
|
+
"band1HFill",
|
|
254252
|
+
"band2HFill",
|
|
254253
|
+
"band1VFill",
|
|
254254
|
+
"band2VFill",
|
|
254255
|
+
"lastColFill",
|
|
254256
|
+
"firstColFill",
|
|
254257
|
+
"lastRowFill",
|
|
254258
|
+
"seCellFill",
|
|
254259
|
+
"swCellFill",
|
|
254260
|
+
"firstRowFill",
|
|
254261
|
+
"neCellFill",
|
|
254262
|
+
"nwCellFill"
|
|
254263
|
+
];
|
|
254264
|
+
function isExternalUrl2(path) {
|
|
254265
|
+
return path.startsWith("http://") || path.startsWith("https://") || path.startsWith("data:") || path.startsWith("blob:");
|
|
254266
|
+
}
|
|
254267
|
+
function collectTableStyleImagePaths(tableStyleMap) {
|
|
254268
|
+
const paths = /* @__PURE__ */ new Set();
|
|
254269
|
+
const refs = [];
|
|
254270
|
+
if (!tableStyleMap) {
|
|
254271
|
+
return { paths, refs };
|
|
254272
|
+
}
|
|
254273
|
+
for (const [styleId, entry5] of Object.entries(tableStyleMap)) {
|
|
254274
|
+
for (const fillKey of TABLE_STYLE_FILL_KEYS) {
|
|
254275
|
+
const fill = entry5[fillKey];
|
|
254276
|
+
const path = fill?.image?.path;
|
|
254277
|
+
if (path && !fill?.image?.data && !isExternalUrl2(path)) {
|
|
254278
|
+
paths.add(path);
|
|
254279
|
+
refs.push({ styleId, fillKey, path });
|
|
254280
|
+
}
|
|
254281
|
+
}
|
|
254282
|
+
}
|
|
254283
|
+
return { paths, refs };
|
|
254284
|
+
}
|
|
254285
|
+
function applyTableStyleImagePatches(tableStyleMap, resolvedMap, refs) {
|
|
254286
|
+
const patchesByStyleId = /* @__PURE__ */ new Map();
|
|
254287
|
+
for (const ref of refs) {
|
|
254288
|
+
const url = resolvedMap.get(ref.path);
|
|
254289
|
+
if (!url) {
|
|
254290
|
+
continue;
|
|
254291
|
+
}
|
|
254292
|
+
const list2 = patchesByStyleId.get(ref.styleId) ?? [];
|
|
254293
|
+
list2.push({ fillKey: ref.fillKey, url });
|
|
254294
|
+
patchesByStyleId.set(ref.styleId, list2);
|
|
254295
|
+
}
|
|
254296
|
+
if (patchesByStyleId.size === 0) {
|
|
254297
|
+
return tableStyleMap;
|
|
254298
|
+
}
|
|
254299
|
+
const next = { ...tableStyleMap };
|
|
254300
|
+
for (const [styleId, patches] of patchesByStyleId) {
|
|
254301
|
+
const entry5 = next[styleId];
|
|
254302
|
+
if (!entry5) {
|
|
254303
|
+
continue;
|
|
254304
|
+
}
|
|
254305
|
+
const patchedEntry = { ...entry5 };
|
|
254306
|
+
for (const { fillKey, url } of patches) {
|
|
254307
|
+
const fill = patchedEntry[fillKey];
|
|
254308
|
+
if (!fill?.image) {
|
|
254309
|
+
continue;
|
|
254310
|
+
}
|
|
254311
|
+
patchedEntry[fillKey] = { ...fill, image: { ...fill.image, data: url } };
|
|
254312
|
+
}
|
|
254313
|
+
next[styleId] = patchedEntry;
|
|
254314
|
+
}
|
|
254315
|
+
return next;
|
|
254316
|
+
}
|
|
254317
|
+
function collectTextFillBlipPaths(slides) {
|
|
254318
|
+
const paths = /* @__PURE__ */ new Set();
|
|
254319
|
+
const refs = [];
|
|
254320
|
+
const walkElements = (elements) => {
|
|
254321
|
+
for (const el of elements) {
|
|
254322
|
+
if (hasTextProperties(el) && el.textSegments) {
|
|
254323
|
+
el.textSegments.forEach((segment, segmentIndex) => {
|
|
254324
|
+
const path = segment.style?.textFillBlipUrl;
|
|
254325
|
+
if (path && !isExternalUrl(path)) {
|
|
254326
|
+
paths.add(path);
|
|
254327
|
+
refs.push({ element: el, segmentIndex, path });
|
|
254328
|
+
}
|
|
254329
|
+
});
|
|
254330
|
+
}
|
|
254331
|
+
if (el.type === "group" && el.children?.length) {
|
|
254332
|
+
walkElements(el.children);
|
|
254333
|
+
}
|
|
254334
|
+
}
|
|
254335
|
+
};
|
|
254336
|
+
for (const slide of slides) {
|
|
254337
|
+
walkElements(slide.elements);
|
|
254338
|
+
}
|
|
254339
|
+
return { paths, refs };
|
|
254340
|
+
}
|
|
254341
|
+
function applyTextFillBlipPatches(elements, resolvedMap, refs) {
|
|
254342
|
+
const patchesByElementId = /* @__PURE__ */ new Map();
|
|
254343
|
+
for (const ref of refs) {
|
|
254344
|
+
const url = resolvedMap.get(ref.path);
|
|
254345
|
+
if (!url) {
|
|
254346
|
+
continue;
|
|
254347
|
+
}
|
|
254348
|
+
const list2 = patchesByElementId.get(ref.element.id) ?? [];
|
|
254349
|
+
list2.push({ segmentIndex: ref.segmentIndex, url });
|
|
254350
|
+
patchesByElementId.set(ref.element.id, list2);
|
|
254351
|
+
}
|
|
254352
|
+
if (patchesByElementId.size === 0) {
|
|
254353
|
+
return elements;
|
|
254354
|
+
}
|
|
254355
|
+
return walkAndPatchElements(elements, (el) => {
|
|
254356
|
+
const segmentPatches = patchesByElementId.get(el.id);
|
|
254357
|
+
if (!segmentPatches || !hasTextProperties(el) || !el.textSegments) {
|
|
254358
|
+
return el;
|
|
254359
|
+
}
|
|
254360
|
+
const newSegments = el.textSegments.map((segment, segmentIndex) => {
|
|
254361
|
+
const patch = segmentPatches.find((p) => p.segmentIndex === segmentIndex);
|
|
254362
|
+
if (!patch || !segment.style) {
|
|
254363
|
+
return segment;
|
|
254364
|
+
}
|
|
254365
|
+
return { ...segment, style: { ...segment.style, textFillBlipUrl: patch.url } };
|
|
254366
|
+
});
|
|
254367
|
+
return { ...el, textSegments: newSegments };
|
|
254368
|
+
});
|
|
254369
|
+
}
|
|
254370
|
+
async function resolveTableCellImageUrls(slides, getImageData) {
|
|
254371
|
+
const { paths, refs } = collectTableCellImagePaths(slides);
|
|
254372
|
+
if (paths.size === 0) {
|
|
254373
|
+
return slides;
|
|
254374
|
+
}
|
|
254375
|
+
const resolvedMap = /* @__PURE__ */ new Map();
|
|
254376
|
+
await Promise.all(
|
|
254377
|
+
Array.from(paths).map(async (path) => {
|
|
254378
|
+
try {
|
|
254379
|
+
const url = await getImageData(path);
|
|
254380
|
+
if (url) {
|
|
254381
|
+
resolvedMap.set(path, url);
|
|
254382
|
+
}
|
|
254383
|
+
} catch {
|
|
254384
|
+
}
|
|
254385
|
+
})
|
|
254386
|
+
);
|
|
254387
|
+
if (resolvedMap.size === 0) {
|
|
254388
|
+
return slides;
|
|
254389
|
+
}
|
|
254390
|
+
return slides.map((slide) => {
|
|
254391
|
+
const newElements = applyTableCellImagePatches(slide.elements, resolvedMap, refs);
|
|
254392
|
+
return newElements === slide.elements ? slide : { ...slide, elements: newElements };
|
|
254393
|
+
});
|
|
254394
|
+
}
|
|
254395
|
+
async function resolveTableStyleImageUrls(tableStyleMap, getImageData) {
|
|
254396
|
+
const { paths, refs } = collectTableStyleImagePaths(tableStyleMap);
|
|
254397
|
+
if (paths.size === 0 || !tableStyleMap) {
|
|
254398
|
+
return tableStyleMap;
|
|
254399
|
+
}
|
|
254400
|
+
const resolvedMap = /* @__PURE__ */ new Map();
|
|
254401
|
+
await Promise.all(
|
|
254402
|
+
Array.from(paths).map(async (path) => {
|
|
254403
|
+
try {
|
|
254404
|
+
const url = await getImageData(path);
|
|
254405
|
+
if (url) {
|
|
254406
|
+
resolvedMap.set(path, url);
|
|
254407
|
+
}
|
|
254408
|
+
} catch {
|
|
254409
|
+
}
|
|
254410
|
+
})
|
|
254411
|
+
);
|
|
254412
|
+
if (resolvedMap.size === 0) {
|
|
254413
|
+
return tableStyleMap;
|
|
254414
|
+
}
|
|
254415
|
+
return applyTableStyleImagePatches(tableStyleMap, resolvedMap, refs);
|
|
254416
|
+
}
|
|
254417
|
+
async function resolveTextFillBlipUrls(slides, getImageData) {
|
|
254418
|
+
const { paths, refs } = collectTextFillBlipPaths(slides);
|
|
254419
|
+
if (paths.size === 0) {
|
|
254420
|
+
return slides;
|
|
254421
|
+
}
|
|
254422
|
+
const resolvedMap = /* @__PURE__ */ new Map();
|
|
254423
|
+
await Promise.all(
|
|
254424
|
+
Array.from(paths).map(async (path) => {
|
|
254425
|
+
try {
|
|
254426
|
+
const url = await getImageData(path);
|
|
254427
|
+
if (url) {
|
|
254428
|
+
resolvedMap.set(path, url);
|
|
254429
|
+
}
|
|
254430
|
+
} catch {
|
|
254431
|
+
}
|
|
254432
|
+
})
|
|
254433
|
+
);
|
|
254434
|
+
if (resolvedMap.size === 0) {
|
|
254435
|
+
return slides;
|
|
254436
|
+
}
|
|
254437
|
+
return slides.map((slide) => {
|
|
254438
|
+
const newElements = applyTextFillBlipPatches(slide.elements, resolvedMap, refs);
|
|
254439
|
+
return newElements === slide.elements ? slide : { ...slide, elements: newElements };
|
|
254440
|
+
});
|
|
254441
|
+
}
|
|
254442
|
+
init_constants2();
|
|
253341
254443
|
function isChart3DViewEnabled(flags, chartType) {
|
|
253342
254444
|
if (!flags || !chartType) {
|
|
253343
254445
|
return false;
|
|
@@ -255866,4 +256968,4 @@ registerPptxWebControls();
|
|
|
255866
256968
|
* `<p:extLst>` (optional)
|
|
255867
256969
|
*/
|
|
255868
256970
|
|
|
255869
|
-
export { ACTION_BUTTON_PRESETS, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, ANIMATION_DIRECTION_LABEL_KEYS, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_BACK_CLASSES, BACKSTAGE_CARD_IDS, BACKSTAGE_NAV, BACKSTAGE_NAV_CLASSES, BACKSTAGE_PAGE_IDS, BACKSTAGE_TEMPLATES, BAR3D_SHAPE_OPTIONS, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CANVAS_CONTEXT_MENU_COMMAND_IDS, CATEGORIES, CHARACTER_SPACING_OPTIONS, CHART_QUICK_ACTION_BUTTON_SIZE, CHART_TYPE_OPTIONS, CINEMATIC_TRANSITION_KEYFRAMES, COLOR_MAP_ALIAS_KEYS, COMMENT_MARKER_SIZE, COMMENT_MENTION_ATTRIBUTE, COMMENT_MENTION_CLASS, COMMON_FONTS, COMMON_FONT_SIZES, COMPOUND_LINE_OPTIONS, CONNECTION_TIMEOUT_MS, CONNECTOR_SITE_SNAP_PX, CONTEXTUAL_TAB_GROUPS, CROP_ASPECT_GROUP_LABEL_KEYS, CROP_ASPECT_LABEL_KEY, CROP_ASPECT_PRESETS, CROP_FILL_LABEL_KEY, CROP_FIT_LABEL_KEY, CROP_HANDLE_ARIA_KEY, CROP_LABEL_KEY, CUSTOM_FONT_ACCEPT, DEBOUNCE_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_FONT_FAMILY2 as DEFAULT_FONT_FAMILY, DEFAULT_INSERT_CHART_KIND, DEFAULT_MORPH_DURATION_MS, DEFAULT_MOTION_PATH_PRESET_ID, DEFAULT_PALETTE2, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_TRANSITION_DURATION_MS, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PREFERENCES, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DUOTONE_PRESETS, EASE, EDITOR_SHORTCUT_ACTION_IDS, EDIT_POINTS_STYLE, EDIT_POINTS_TARGET_ATTR, EFFECT_SOUND_CATALOGUE, ELEMENT_ACTION_TYPE_OPTIONS, ELEMENT_CONTEXT_MENU_COMMAND_IDS, EMPHASIS_PRESET_VALUES, EMPTY_RESOLVED_CUSTOMIZATION, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPANDED_MAX_HEIGHT, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EditPointsSession, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, FIXED_TAB_GALLERIES, FREEFORM_TOOL_IDS, FREEFORM_TOOL_LABEL_KEYS, FreeformToolSession, GIF_POST_CAPTURE_MAX_SIDE, GRADIENT_TYPE_OPTIONS, GlyphOutlineFontCache, HANDOUT_OPTIONS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INDENT_PX, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, INSTANT, LBL, LINE_CAP_OPTIONS, LINE_JOIN_OPTIONS, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_HINT_CLASS, LINK_TOOLTIP_HOST_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_PANEL_CLASS, LOCAL_SYNC_ORIGIN, MATERIAL_PRESETS, MAX_INDENT_LEVEL, MAX_ZOOM_SCALE, MEDIA_CHROME_ATTRIBUTE, MEDIA_FULLSCREEN_OVERLAY_STYLE, MERGE_SHAPES_HINT_KEY, MERGE_SHAPES_LABEL_KEY, MERGE_SHAPES_MENU_ITEMS, MIN_TOUCH_TARGET_PX, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OFFICE_COLOR_SWATCHES, ONLINE_VIDEO_IFRAME_ALLOW, ONLINE_VIDEO_IFRAME_SANDBOX, OPTIONS_PAGE_IDS, OPTIONS_SECTION_IDS, OPTIONS_SETTING_IDS, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, P14_TRANSITION_KEYFRAMES, P14_TRANSITION_KEYFRAMES_2, P14_TRANSITION_KEYFRAMES_ALL, PASTE_SPECIAL_OPTIONS, PATTERN_OPTIONS, PATTERN_PRESET_OPTIONS, PDF_SLIDES_PAGE_HEIGHT_PT, PDF_SLIDES_PAGE_WIDTH_PT, PEN_COLORS, PPTX_OPEN_ACCEPT, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_HIT_TEST_CSS, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENTATION_OPEN_EXTENSIONS, PRESENTATION_STAGE_ATTRIBUTE, PRESENTER_CONSOLE_CLASSES, PRESENTER_CONSOLE_CONTROLS, PRESENTER_NAVIGATOR_LABEL_KEYS, PRESENT_TOOLBAR_CLASSES, PRESETS, PRESET_THEMES, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, RADAR_STYLE_OPTIONS, RANDOM_ELIGIBLE_TYPES, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RIBBON_CONTEXTUAL_TAB_ATTR, RIBBON_CONTROL_ATTR, RIBBON_GALLERY_ATTR, RIBBON_GALLERY_ITEM_ATTR, RIBBON_GALLERY_POPUP_ATTR, RIBBON_GROUP_ATTR, RIBBON_SCOPE_ATTR, RIBBON_SHAPE_SWATCHES, RIBBON_TAB_IDS, RIBBON_TRANSITION_PRESETS, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_SHOW_OPTIONS, SLIDE_SIZE_PRESETS, SLIDE_TEMPLATES, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_KEYFRAMES_CSS, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, SMARTART_STYLE_LABEL_KEYS, SORTER_MAX_ZOOM, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, STATUS_BAR_CLASSES, STROKE_DASH_OPTIONS2 as STROKE_DASH_OPTIONS, SURFACE_WIREFRAME_OPTIONS, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_BORDER_SIDES, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, TABLE_STYLE_EDITOR_PARTS, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_DECORATION_FLAGS, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_SLOT_LABEL_KEYS, THEME_PRESETS, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_BUTTON_IDS, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_MORPH_OPTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_PATTERN_OPTIONS, TRANSITION_SOUND_NONE_VALUE, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SPEED_DURATION_MS, TRANSITION_SPEED_OPTIONS, TRANSITION_THRUBLK_TYPES, TRANSITION_VALID_DIRECTIONS, TRIGGER_OPTIONS, ThemePresets, VIEWER_DIALOG_IDS, VIEWER_EXPORT_FORMAT_IDS, VIEWER_FEATURE_IDS, VIEWER_OPTIONS_TABS, VIEWER_PANEL_IDS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, WHEEL_SPOKE_COUNTS, acceptAutosaveRecovery, acceptsPresentationInput, acknowledgeAutosaveRecovery, actionAffordanceLabels, activateModalFocus, addChartCategory, addChartSeries, addCommentToList, addQuickAccessCommand, addSection, addSiblingAfter, addSmartArtNodeAsChild, addTableStyleToMap, addTagToCollections, advanceChartMarkDrag, advanceChartValueDrag, advanceMainSequence, alignElements, animationEffectLabel, annotationOverlayZIndex, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyActiveInlineListFormatting, applyAnimationTimelineOrder, applyAutoCorrect, applyCaseTransformToSegments, applyChart3DDrag, applyChart3DSelect, applyChartElementToggle, applyChartPartHighlight, applyChartStylePreset, applyColorChange, applyDuotone, applyFindReplacements, applyFormatToElement, applyHighlightClickStyle, applyImagePathPatches, applyListStyleUpdate, applyMasterViewCrudAction, applyMergeShapesPlan, applyMotionPathPreset, applyOleDocumentParagraphEdit, applyOleNestedDeckElementTextEdit, applyOleSheetCellEdit, applyOutlineEdit, applyPasteSpecialFormat, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyRibbonGalleryItem, applyTableStyleDelete, applyTableStyleFieldEdit, applyTableStyleMapChange, applyTableStylePreset, applyTextStyleUpdate, applyThemeOverrideToSlide, applyThemeToData, applyTransitionSoundFile, applyTransitionStockSound, applyUnderlineVariant, assertElementUpdateTarget, attachCollaborationInlineEditor, attachEditorImagePaste, attachInlineListController, attachOverlayKeyboard, attachPresentationVisibilityPause, attachRotateHandlePlacement, authorConnectorBetweenSites, authoredLetterSpacingPx, autosaveSnapshotMark, availableQuickAccessCommands, backstageCardsFor, bar3DShapePatch, beginChartMarkDrag, beginChartValueDrag, beginCropDrag, beginShapeAdjustment, beginZoomExcursion, bindInlineListParagraph, bindInlineListRun, borrowExternalCollaborationAwareness, bringForward, bringToFront, build3DExtrusionData, buildActiveSessionUsers, buildAnimationTimelineBars, buildAnimationTimelineRows, buildBarActions, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildCanvasContextMenuEntries, buildChartMarkDragGeometry, buildChartQuickActionsDescriptor, buildChartViewModel, buildChromeStyle, buildCollaborationShareUrl, buildCommentMarkers, buildContentPartStrokes, buildContextMenuEntries, buildCreateCollaborationConfig, buildCropOverlay, buildCssGradientFromShapeStyle, buildDeckSaveOptions, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildFontCatalog, buildFreeformShapeElement, buildGlyphEnvelopeBlock, buildHandoutsHtml, buildHollowHitOutline, buildInitialGuides, buildInkGroupStrokes, buildInlineListStylePatch, buildInlineTextCommitPatch, buildJoinCollaborationConfig, buildLayoutPreviewGeometry, buildLiveInkStrokeView, buildMorphAnimationRules, buildMorphTransitionPlan, buildMotionPathPreview, buildNotesHtml, buildNotesPdfBytes, buildNotesPrintHtml, buildOleContentUpdatePatch, buildOleEditDialogDescriptor, buildOleObjectNamePatch, buildOutline, buildOutlineHtml, buildParagraphs, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildRasterPictureElement, buildRectPathGradient, buildRibbonGallery, buildRunProgramNotice, buildRunTabLines, buildSaveSlides, buildSlidePaneContextMenuEntries, buildSlideTemplateContent, buildSlideTemplateSlide, buildSlidesHtml, buildSmartArtA11y, buildSmartArtPresetData, buildSmartArtPreviewElement, buildStrokeOutline, buildStrokePathD, buildSubpathFillOverlay, buildSubpathPaints, buildSummaryZoomView, buildSvgGradientDef, buildTabContext, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBodyLayoutStyle, buildTextBuildSpec, buildTextStyleOverrideCss, buildThemeColorGrid, buildThemeColorMap, buildThemeColorSwatchGrid, buildTiledSlidesPdfBytes, buildUserFontFaceStyles, buildZoomTransitionOverride, calculateViewportFit, canAddTopLevelNode, canCommitActionType, canCropElement, canDrillDown, canEditElementPoints, canGoNext, canGoPrevious, canGroupSelection, canInteractWithElement, canMergeShapes, canRemoveTopLevelNode, canSetStrokeWidth, canUngroupSelection, canUseClipboard, cancelBuildReveal, cancelCropUpdate, canvasToJpegData, cellRunStyle, cellStyleToCss, centeredSvgTextLines, chartDataLabelsTogglePatch, chartGridlinesPatch, chartGridlinesState, chartPartToAttrs, chartPreserveAspectRatio, checkModifyPassword, clampCropValue, clampFlyoutPosition, clampGifDimensions, clampNotesFontSize, clampOptionNumber, clampPercent2, clampSorterZoom, clampTransitionNumber, clampZoomScale, classifyExtraConnections, classifyMediaType, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearPlaybackTimers, clearStoredViewerPrefs, clearTransitionSound, clientToSlidePoint, cloneElementForPaste, cloneElementUpdates, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collapseChartTitleRunsForEdit, collectConnectorSiteCandidates, collectImagePaths, collectMediaElements, collectReferencedFontFamilies, collectUsedFonts, colorWithOpacity, commentMentionQuery, commentTextSegments, comparePresentation, compatToastStackStyle, compatibilityWarningToasts, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeAnchoredPopupPosition, computeChartLegendLayout, computeColorFilter, computeColumnBoundaries, computeDrawingViewBox, computeEntranceAnimationDelay, computeGridSpacingPx, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSlideIndices, computeSmartArtElementLayout, computeSnapToShape, computeSplitCell, computeVirtualRange, connectorWrapperTransform, contextMenuInspectorAnchor, contextualTabLabelKey, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createActiveAnimationGroup, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createCustomizationController, createDefaultChartElement, createDefaultChartUserShape, createDefaultChartUserShapeGroupChild, createDepartureChannel, createGlyphOutlineLookup, createImageElementFromFile, createInitialPresentationSnapshot, createInlineListModelObserver, createInlineListSeed, createPlainNotesSegments, createPresenceProjector, createPresentationKeyBuffer, createPresentationLoadResources, createPresentationSessionId, createPresenterShowGuard, createPresenterTimer, createRotationDrag, createSnapshotTextPositions, createSyncGate, createTableStyleEntry, createTouchGestureRecognizer, createViewerOptionsStore, createViewerZoomStore, createWheelStepBuffer, createWriteBackScheduler, cropFill, cropFit, cropModeKeyAction, cropSessionChanged, cropToAspectRatio, cursorForTool, customGeometryPathsToSvgSubpaths, customizeBackstageCards, customizeBackstageNav, customizeCanvasContextMenuEntries, customizeContextMenuEntries, customizeOptionsTabs, cycleSelectableElement, defaultCssVars, defaultRadius, defaultThemeColors, defineThreeViewElement, deleteAutosaveSnapshot, deleteSection, deleteTableStyleFromMap, deleteTagFromCollections, demote, deriveSlideFieldContext, deriveViewportBreakpoints, describeCollaborationShellState, describeFontEmbedding, describeSmartArtBounds, describeTableStyleEditor, detectOrientation, detectTouchDevice, directionValuesFor, discardAutosaveRecovery, distributeElements, downloadBlob, downloadDataUrl, dragCropHandle, editCommentInList, effectiveDirection, effectiveTimingCurve, elementActionToPptxAction, elementBulletKind, elementContainerHeightStyle, elementHitTargetStyle, elementIdSelector, elementLockTogglePatch, elementPictureFilename, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, ensureChartInteractionStyles, erasePresentationInkAt, evenColumnWidths, evenRowHeights, exportDeckJson, extraQuickAccessCommands, fetchGoogleWebfontOutlineBytes, filterCommands, filterHiddenSlideIndices, filterInteractableIds, filterRenderedElements, findChartPartTarget, findConnectorSiteNear, findEraserHitElementId, findInSlides, findSelectedThemeSwatch, findSmartArtNodeText, finishPrintWindow, firstShowSlideIndex, flattenNodes, flattenTagCollections, followingText, forgetSessionDeck, formatAxisValue, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, galleryHasItems, galleryItemLabel, generateBroadcastRoomId, generateElementId, generateNoteLineCount, generateTicks, getActiveXControlOverlayView, getAnimationColorBaseStyle, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getBarFacePicturePixelSampleVersion, getBevelLightingSvgFilter, getCachedNativeImageSize, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getChartUserShapeGroupTransform, getChartUserShapeRowChartBox, getCinematicTransitionAnimations, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getComputedFillStyle, getComputedStrokeStyle, getConnectorEndpointHandles, getConnectorPathGeometry, getContentPartReplayStyles, getCropShapeClipPath, getCurrentParagraphIndex, getDenseGridLayoutPlan, getDensePanelTouchTargetPx, getDraggedShapeAdjustments, getDuotoneCachedResult, getEffectSoundAsset, getEffectSoundState, getEffectStyleSource, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getFragmentedTransitionDescriptor, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFillCounterTransform, getImageFitStyle, getImageSvgFilters, getImageTilingStyle, getInkReplayStyles, getInlineEditorSelectionResult, getLocalStorageUsageSummary, getNonVisualDescriptionFields, getNotesPrintableArea, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDocumentParagraphs, getOleNestedDeckDetail, getOleObjectTypeLabel, getOleSheetGrid, getOleTypeColor, getOleTypeLabel, getOnlineVideoEmbed, getOverflowSegments, getP14TransitionAnimations, getPatternSvg, getPendingSelectionRestore, getPresetShapeVectorGeometry, getPrintableArea, getResizeHandleHitAreaStyle, getSelectionControlArtworkStyle, getSelectionOutlineColor, getSelectionTextStyleFlags, getSessionTabId, getShapeAdjustmentHandleDescriptors, getShapeConnectionSites, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeSvgFilter, getSubstituteFontFamily, getSvgStrokeDasharray, getTableCellBandStyle, getTextBodyRotationTransform, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasGlyphEnvelope, hasMultipleSelectedTableCells, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hasTiltData, hexToRgbUnit, hiddenSlideCue, hideChartSeries, hollowTextFillStyle, inlineElementPointerEvents, inlineGalleryItems, inlineListBodyText, insertCommentMention, insertTableElementColumn, insertTableElementRow, isActionHidden, isBlackboardActive, isBrowserOpenableMime, isBulletMarkerSegment, isCalloutShape, isCellInRect, isCurrentLayout, isDialogAvailable, isDrawingToolVisible, isEditPointsEnabled, isEditableMotionPath, isEditableTextElement, isEditorControlTarget, isEditorTextInputTarget, isElementActionable, isElementLocked, isElementRendered, isExportAbortError, isFeatureEnabled, isHeaderFooterDateTextVisible, isHeaderFooterFooterTextVisible, isHeaderFooterHeaderTextVisible, isHollowShapeElement, isImageLikeElement, isImageTiled, isInkElement, isKeyboardOpen, isLegacyBinaryPresentation, isLinkedTextBox, isMediaFullscreenActive, isMixedContentBlocked, isMobileViewport, isOptionsPageVisible, isPanelVisible, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isSeriesUsingSecondaryAxis, isStrokeOnlyPresetElement, isSupportedPresentationFile, isTemplateElementId3 as isTemplateElementId, isUrlSafe, isWedgeCalloutPresetShape, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, listChartUserShapeRows, listMediaBookmarkOptions, loadAudienceContent, loadSessionDeck, lockResizeAspect, makeCloneId, makeSlideId, mapCustomizedEditorKey, mapEditingWheel, mapInlineTextFormatKey, mapOutlineKey, mapPresentationKey, mapPresentationWheel, mapSlideShowStartKey, mapSlideSorterKey, masterViewBackgroundColor, masterViewCrudActions, masterViewCrudFailureKey, masterViewElements, masterViewPseudoSlide, matchCommentMentionAuthors, mayLeaveSlideShow, measurePreviewGeometry, measureSvgViewportRect, mediaFallbackIcon, mediaFallbackLabelKey, mediaFallbackVisual, mediaPlaybackAttributes, mediaTransportVisible, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, mediaTrimEndMsFromSeconds, mediaTrimEndSeconds, mergeAdditiveSelection, mergeCells, mergePresentationSnapshot, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, modelDataToBlobUrl, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountModel3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, mruColorsPatch, nestedTextDecorationStyle, newTableElement, nextPresentedSlide, nextShowSlideIndex, nextToggleValue, normalizeHexColor2 as normalizeHexColor, normalizeStrokeDashType, normalizeTableStyleGuid, notesSegmentsToSpans, observeElementHeight, observeExternalCollaborationReadiness, observeExternalCollaborationSession, observeYDocSlides, oleActionsVisible, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPendingPrintWindow, openPptxFile, openReadingView, openUrlInNewTab, overlayInlineTextSnapshot, overlayMasterViewInlineSnapshot, overlayPointerInput, paintedElementSize, paintedStrokeWidth, panCropImage, paragraphsToSegments, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, parseSegmentsFromRichEditor, partitionTemplateElements, patchChartData, pickSupportedMimeType, pieceLetterSpacing, placeAudienceWindow, placeCaretAtEnd, placeTileOnPage, placeholderPromptDescriptor, planMergeShapes, playAnimationRibbonPreview, playFeedbackSound, playGroup, playSlideTransitionPreview, pptxActionToElementAction, prepareElementForInsertion, prepareElementUpdateBatch, prepareHtml2CanvasClone, presentationBaseName, presentationEntrySlideIndex, presentationInkPath, presenterElapsed, presenterNextDisabled, presenterPaneAdvancesOnClick, presenterPrevDisabled, presenterTimerProgress, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, probeAutosaveRecovery, probeNativeImageSize, projectDrawingShapes, promote, publishLiveGeometry, publishLiveInlineText, pushRecentColor, quickStyleSwatchCss, radarStylePatch, rasterResultToPngBlob, rasterResultToPngDataUrl, rasterizeElement, rasterizeElementTiledToCanvas, rasterizeElementTiles, reResolveElementColors, reResolveSlideColors, readBackstageRecentFile, readEditableText, readListActivationSelection, readOnlyRecommendation, readRibbonTransitionDraft, readSlideShowOption, readSlidesFromYDoc, readSoundFileAsDataUrl, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, redistributeColumnWidth, registerCollaborationTeardown, registerCrossSlideAudio, registerCustomFont, remapTextToSegments, rememberSessionDeck, removeChartCategory, removeChartSeries, removeCommentFromList, removeEmptyNode, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorder2 as reorder, reorderAnimationTimelineRows, replaceMasterViewElements, replaceOleFile, replyToCommentInList, rerouteConnectorsForMovedElements, resetPresenterTimer, resetSlideLayoutPath, resolve3DRenderingFlags, resolveActionType, resolveActiveRibbonTab, resolveAudienceScreenPlacement, resolveAuthoredCustomShowId, resolveAuthoredSlideRange, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveAutosaveActivation, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, resolveChartKind, resolveChartThreeViewSpec, resolveCollaborationShellEditability, resolveCollaborationShellState, resolveConnectorEndpointUpdate, resolveDefaultFontFamily, resolveDefaultPrintSettings, resolveDirection, resolveDirection8, resolveDisplayedChartType, resolveEditPointsAvailability, resolveEffectiveHiddenActions, resolveElementActionAffordance, resolveElementAriaAttributes, resolveElementHighlightClick, resolveElementInteractivity, resolveExpiredAutosaveSnapshots, resolveExportCaptureDecision, resolveFontKerning, resolveForwardSlideWithZoomReturn, resolveGoogleWebfontHref, resolveGroupChildFill, resolveHistoryDepth, resolveImageResolutionScale, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, resolveMediaBookmarkTimesMs, resolveMediaElementSource, resolveMediaTimeNodeElementIds, resolveMetricTrackingPx, resolveNotesSchematicBodyFontSizePx, resolveNotesSegments, resolveOleType, resolveOleVerbTarget, resolveOptionRootClasses, resolveOrientation, resolvePalette, resolvePresentationAction, resolveProfileInitial, resolveRevealedChartData, resolveRevealedDrawingShapeNodeIds, resolveRevealedDrawingShapes, resolveRevealedSmartArtNodes, resolveScreenTip, resolveScriptFontSet, resolveSelectionPaneRename, resolveShapeGeometry, resolveShowSlideIndexes, resolveSlidePaneClick, resolveSlideSizeSelection, resolveSlideTransition, resolveSmartArtThreeViewSpec, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTemplateBackgroundRows, resolveTextFillBlipUrls, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransitionSoundAction, resolveTransportForServerUrl, resolveViewerAddinRows, resolveViewportFitOptions, resolveWheelSpokeCount, resolveZoomNavigationTarget, restoreFilteredSeries, restoreInlineListBodySelection, restoreSegmentSelection, restoreSessionDeck, ribbonCustomizationCss, ribbonTransitionUpdates, rulerDragToGuidePosition, runPresentationAction, runProgramNoticeStackStyle, safeOpenUrl, sanitizeColor, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveDeckWithPassword, saveViewerProfile, savedPresentationFileName, scaleFontSizeForAutoFit, scaleSlidesForSizeChange, scanAvailableFontFamilies, scheduleAutoAdvanceChain, scheduleMediaTrimAndFade, schemaLabel, scopeLayoutOptionsToSlide, scrollInspectorSectionIntoView, seedRecentColors, segmentFrameCount, segmentStyleToCss, segmentsToEditorHtml, segmentsToParagraphs, segmentsToPlainText, selectGoogleWebfontFamilies, selectedBookmarkOptionValue, selectedParagraphBulletKind, selectionBulletKind, sendBackward, sendToBack, seriesSecondaryAxisPatch, setAfterAnimation, setAfterAnimationColor, setCachedResult, setCellText, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDataLabelsRangeCache, setDuotoneCachedResult, setEffectSound, setEffectStockSound, setMasterViewBackgroundColor, setMotionPath, setMotionPathEnd, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, setTrigger, setTriggerBookmark, shapeFillChange, shapeOutlineChange, shouldAutoFollowBroadcaster, shouldClearAutosaveCacheOnClose, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldDiscardAutosaveOnSuccessfulSave, shouldLoopContinuously, shouldProbeAutosaveRecovery, shouldRenderHitTarget, shouldRoomSlidesReplaceLoad, shouldShowAccessibilitySection, shouldShowAutosaveRecoveryPrompt, shouldShowElementHandles, shouldShowMediaFullscreenStopButton, shouldStickyActionRow, shouldUseSvgWarp, shouldWriteAutosaveSnapshot, siblingCount, siblingIndex, slideProgressPercent, slideShowOptionChange, slideSizeFromPreset, slideSizeToCanvasPx, slideStatusLabel, snapBoxToGrid, splitCell, splitEastAsianBreaks, splitRunByScriptFont, splitRunForMetrics, splitWordsForUnderline, splitsUnderlineIntoWords, startCropSession, stepFontSizePt, stepPresenterZoom, stopAllPersistentAudio, stopCaptureStream, storeAudienceContent, stripUnderlineDecoration, strokeOutlineViewBox, strokeWidthOf, styleShadowFilter, subscribeBarFacePicturePixelSamples, substituteFieldText, surfaceWireframePatch, svgGradientFillRef, svgLineCap, swapPresentationWindows, switchSmartArtLayout, syncGoogleWebfontStylesheet, tableCellCss, tableContainerCss, tableStyleAssignmentUpdate, templateSchemeFromTheme, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, textFontSizePtToPx, textFontSizePxToPt, themeColorLabel, themeColorSchemesEqual, themeColorSwatchRows, themeSwatchCommit, themeToCssVars, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toElementAxes, toSlideIndex, toggleBlackboard, toggleCommentResolvedInList, togglePresenterTimer, toggleSelectionBullets, toggleSheet, toggleStageElementMedia, toggleText3dExtrusion, transformInlineListCase, transformTextCase, transitionSoundOptions, transitionSoundSelectedValue, transitionStockSoundId, trimmedMediaDurationMs, ungroupElements, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateElement, updateMasterViewElement, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateTagInCollections, validateMediaTrimRange, validateRoomId, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewPropertiesPatchFromPreferences, viewerOptionsToPreferences, viewerPreferencesFromViewProperties, visibleContextualTabs, visibleTemplateElements, warpPreviewPath, withChartTitle, withChartUserShapeAdded, withChartUserShapeGroupChildAdded, withChartUserShapeRowChartBoxUpdated, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRemoved, withChartUserShapeRowRotationUpdated, withChartUserShapeRowTextUpdated, withChartUserShapeRowUpdated, withConnectorEndpointUpdate, withFrameSlides, withInlineListDecorationDefaults, withSlideSizeOrientation, withSlidesPerPage, writeStoredViewerPrefs, xmlText };
|
|
256971
|
+
export { ACTION_BUTTON_PRESETS, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, ANIMATION_DIRECTION_LABEL_KEYS, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_BACK_CLASSES, BACKSTAGE_CARD_IDS, BACKSTAGE_NAV, BACKSTAGE_NAV_CLASSES, BACKSTAGE_PAGE_IDS, BACKSTAGE_TEMPLATES, BAR3D_SHAPE_OPTIONS, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CANVAS_CONTEXT_MENU_COMMAND_IDS, CATEGORIES, CHARACTER_SPACING_OPTIONS, CHART_QUICK_ACTION_BUTTON_SIZE, CHART_TYPE_OPTIONS, CINEMATIC_TRANSITION_KEYFRAMES, COLOR_MAP_ALIAS_KEYS, COMMENT_MARKER_SIZE, COMMENT_MENTION_ATTRIBUTE, COMMENT_MENTION_CLASS, COMMON_FONTS, COMMON_FONT_SIZES, COMPOUND_LINE_OPTIONS, CONNECTION_TIMEOUT_MS, CONNECTOR_SITE_SNAP_PX, CONTEXTUAL_TAB_GROUPS, CROP_ASPECT_GROUP_LABEL_KEYS, CROP_ASPECT_LABEL_KEY, CROP_ASPECT_PRESETS, CROP_FILL_LABEL_KEY, CROP_FIT_LABEL_KEY, CROP_HANDLE_ARIA_KEY, CROP_LABEL_KEY, CUSTOM_FONT_ACCEPT, DEBOUNCE_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_FONT_FAMILY2 as DEFAULT_FONT_FAMILY, DEFAULT_INSERT_CHART_KIND, DEFAULT_MORPH_DURATION_MS, DEFAULT_MOTION_PATH_PRESET_ID, DEFAULT_PALETTE2, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_TRANSITION_DURATION_MS, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PREFERENCES, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DUOTONE_PRESETS, EASE, EDITOR_SHORTCUT_ACTION_IDS, EDIT_POINTS_STYLE, EDIT_POINTS_TARGET_ATTR, EFFECT_SOUND_CATALOGUE, ELEMENT_ACTION_TYPE_OPTIONS, ELEMENT_CONTEXT_MENU_COMMAND_IDS, EMPHASIS_PRESET_VALUES, EMPTY_RESOLVED_CUSTOMIZATION, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPANDED_MAX_HEIGHT, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EditPointsSession, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, FIXED_TAB_GALLERIES, FREEFORM_TOOL_IDS, FREEFORM_TOOL_LABEL_KEYS, FreeformToolSession, GIF_POST_CAPTURE_MAX_SIDE, GRADIENT_TYPE_OPTIONS, GlyphOutlineFontCache, HANDOUT_OPTIONS, HELP_RIBBON_COMMANDS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INDENT_PX, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, INSTANT, LBL, LINE_CAP_OPTIONS, LINE_JOIN_OPTIONS, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_HINT_CLASS, LINK_TOOLTIP_HOST_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_PANEL_CLASS, LOCAL_SYNC_ORIGIN, MATERIAL_PRESETS, MAX_INDENT_LEVEL, MAX_ZOOM_SCALE, MEDIA_CHROME_ATTRIBUTE, MEDIA_FULLSCREEN_OVERLAY_STYLE, MERGE_SHAPES_HINT_KEY, MERGE_SHAPES_LABEL_KEY, MERGE_SHAPES_MENU_ITEMS, MIN_TOUCH_TARGET_PX, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OFFICE_COLOR_SWATCHES, ONLINE_VIDEO_IFRAME_ALLOW, ONLINE_VIDEO_IFRAME_SANDBOX, OPTIONS_PAGE_IDS, OPTIONS_SECTION_IDS, OPTIONS_SETTING_IDS, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, P14_TRANSITION_KEYFRAMES, P14_TRANSITION_KEYFRAMES_2, P14_TRANSITION_KEYFRAMES_ALL, PASTE_SPECIAL_OPTIONS, PATTERN_OPTIONS, PATTERN_PRESET_OPTIONS, PDF_SLIDES_PAGE_HEIGHT_PT, PDF_SLIDES_PAGE_WIDTH_PT, PEN_COLORS, PPTX_OPEN_ACCEPT, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_HIT_TEST_CSS, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENTATION_OPEN_EXTENSIONS, PRESENTATION_STAGE_ATTRIBUTE, PRESENTER_CONSOLE_CLASSES, PRESENTER_CONSOLE_CONTROLS, PRESENTER_NAVIGATOR_LABEL_KEYS, PRESENT_TOOLBAR_CLASSES, PRESETS, PRESET_THEMES, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, RADAR_STYLE_OPTIONS, RANDOM_ELIGIBLE_TYPES, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RECORD_COMMAND_GROUPS, RIBBON_CONTEXTUAL_TAB_ATTR, RIBBON_CONTROL_ATTR, RIBBON_GALLERY_ATTR, RIBBON_GALLERY_ITEM_ATTR, RIBBON_GALLERY_POPUP_ATTR, RIBBON_GROUP_ATTR, RIBBON_SCOPE_ATTR, RIBBON_SHAPE_SWATCHES, RIBBON_TAB_IDS, RIBBON_TRANSITION_PRESETS, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_SHOW_COMMAND_GROUPS, SLIDE_SHOW_OPTIONS, SLIDE_SIZE_PRESETS, SLIDE_TEMPLATES, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_KEYFRAMES_CSS, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, SMARTART_STYLE_LABEL_KEYS, SORTER_MAX_ZOOM, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, STATUS_BAR_CLASSES, STROKE_DASH_OPTIONS2 as STROKE_DASH_OPTIONS, SURFACE_WIREFRAME_OPTIONS, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_BORDER_SIDES, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, TABLE_STYLE_EDITOR_PARTS, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_DECORATION_FLAGS, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_SLOT_LABEL_KEYS, THEME_PRESETS, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_BUTTON_IDS, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_MORPH_OPTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_PATTERN_OPTIONS, TRANSITION_SOUND_NONE_VALUE, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SPEED_DURATION_MS, TRANSITION_SPEED_OPTIONS, TRANSITION_THRUBLK_TYPES, TRANSITION_VALID_DIRECTIONS, TRIGGER_OPTIONS, ThemePresets, VIEWER_DIALOG_IDS, VIEWER_EXPORT_FORMAT_IDS, VIEWER_FEATURE_IDS, VIEWER_OPTIONS_TABS, VIEWER_PANEL_IDS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, WHEEL_SPOKE_COUNTS, acceptAutosaveRecovery, acceptsPresentationInput, acknowledgeAutosaveRecovery, actionAffordanceLabels, activateModalFocus, addChartCategory, addChartSeries, addCommentToList, addQuickAccessCommand, addSection, addSiblingAfter, addSmartArtNodeAsChild, addTableStyleToMap, addTagToCollections, advanceChartMarkDrag, advanceChartValueDrag, advanceMainSequence, alignElements, animationEffectLabel, annotationOverlayZIndex, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyActiveInlineListFormatting, applyAnimationTimelineOrder, applyAutoCorrect, applyCaseTransformToSegments, applyChart3DDrag, applyChart3DSelect, applyChartElementToggle, applyChartPartHighlight, applyChartStylePreset, applyColorChange, applyDuotone, applyFindReplacements, applyFormatToElement, applyHighlightClickStyle, applyImagePathPatches, applyListStyleUpdate, applyMasterViewCrudAction, applyMergeShapesPlan, applyMotionPathPreset, applyOleDocumentParagraphEdit, applyOleNestedDeckElementTextEdit, applyOleSheetCellEdit, applyOutlineEdit, applyPasteSpecialFormat, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyRibbonGalleryItem, applyTableStyleDelete, applyTableStyleFieldEdit, applyTableStyleMapChange, applyTableStylePreset, applyTextStyleUpdate, applyThemeOverrideToSlide, applyThemeToData, applyTransitionSoundFile, applyTransitionStockSound, applyUnderlineVariant, assertElementUpdateTarget, attachCollaborationInlineEditor, attachEditorImagePaste, attachInlineListController, attachOverlayKeyboard, attachPresentationVisibilityPause, attachRotateHandlePlacement, authorConnectorBetweenSites, authoredLetterSpacingPx, autosaveSnapshotMark, availableQuickAccessCommands, backstageCardsFor, bar3DShapePatch, beginChartMarkDrag, beginChartValueDrag, beginCropDrag, beginShapeAdjustment, beginZoomExcursion, bindInlineListParagraph, bindInlineListRun, borrowExternalCollaborationAwareness, bringForward, bringToFront, build3DExtrusionData, buildActiveSessionUsers, buildAnimationTimelineBars, buildAnimationTimelineRows, buildBarActions, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildCanvasContextMenuEntries, buildChartMarkDragGeometry, buildChartQuickActionsDescriptor, buildChartViewModel, buildChromeStyle, buildCollaborationShareUrl, buildCommentMarkers, buildContentPartStrokes, buildContextMenuEntries, buildCreateCollaborationConfig, buildCropOverlay, buildCssGradientFromShapeStyle, buildDeckSaveOptions, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildFontCatalog, buildFreeformShapeElement, buildGlyphEnvelopeBlock, buildHandoutsHtml, buildHollowHitOutline, buildInitialGuides, buildInkGroupStrokes, buildInlineListStylePatch, buildInlineTextCommitPatch, buildJoinCollaborationConfig, buildLayoutPreviewGeometry, buildLiveInkStrokeView, buildMorphAnimationRules, buildMorphTransitionPlan, buildMotionPathPreview, buildNotesHtml, buildNotesPdfBytes, buildNotesPrintHtml, buildOleContentUpdatePatch, buildOleEditDialogDescriptor, buildOleObjectNamePatch, buildOutline, buildOutlineHtml, buildParagraphs, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildRasterPictureElement, buildRectPathGradient, buildRibbonGallery, buildRunProgramNotice, buildRunTabLines, buildSaveSlides, buildSlidePaneContextMenuEntries, buildSlideTemplateContent, buildSlideTemplateSlide, buildSlidesHtml, buildSmartArtA11y, buildSmartArtPresetData, buildSmartArtPreviewElement, buildStrokeOutline, buildStrokePathD, buildSubpathFillOverlay, buildSubpathPaints, buildSummaryZoomView, buildSvgGradientDef, buildTabContext, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBodyLayoutStyle, buildTextBuildSpec, buildTextStyleOverrideCss, buildThemeColorGrid, buildThemeColorMap, buildThemeColorSwatchGrid, buildTiledSlidesPdfBytes, buildUserFontFaceStyles, buildZoomTransitionOverride, calculateViewportFit, canAddTopLevelNode, canCommitActionType, canCropElement, canDrillDown, canEditElementPoints, canGoNext, canGoPrevious, canGroupSelection, canInteractWithElement, canMergeShapes, canRemoveTopLevelNode, canSetStrokeWidth, canUngroupSelection, canUseClipboard, cancelBuildReveal, cancelCropUpdate, canvasToJpegData, cellRunStyle, cellStyleToCss, centeredSvgTextLines, chartDataLabelsTogglePatch, chartGridlinesPatch, chartGridlinesState, chartPartToAttrs, chartPreserveAspectRatio, checkModifyPassword, clampCropValue, clampFlyoutPosition, clampGifDimensions, clampNotesFontSize, clampOptionNumber, clampPercent2, clampSorterZoom, clampTransitionNumber, clampZoomScale, classifyExtraConnections, classifyMediaType, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearPlaybackTimers, clearStoredViewerPrefs, clearTransitionSound, clientToSlidePoint, cloneElementForPaste, cloneElementUpdates, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collapseChartTitleRunsForEdit, collectConnectorSiteCandidates, collectImagePaths, collectMediaElements, collectReferencedFontFamilies, collectUsedFonts, colorWithOpacity, commentMentionQuery, commentTextSegments, comparePresentation, compatToastStackStyle, compatibilityWarningToasts, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeAnchoredPopupPosition, computeChartLegendLayout, computeColorFilter, computeColumnBoundaries, computeDrawingViewBox, computeEntranceAnimationDelay, computeGridSpacingPx, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSlideIndices, computeSmartArtElementLayout, computeSnapToShape, computeSplitCell, computeVirtualRange, connectorWrapperTransform, contextMenuInspectorAnchor, contextualTabLabelKey, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createActiveAnimationGroup, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createCustomizationController, createDefaultChartElement, createDefaultChartUserShape, createDefaultChartUserShapeGroupChild, createDepartureChannel, createGlyphOutlineLookup, createImageElementFromFile, createInitialPresentationSnapshot, createInlineListModelObserver, createInlineListSeed, createPlainNotesSegments, createPresenceProjector, createPresentationKeyBuffer, createPresentationLoadResources, createPresentationSessionId, createPresenterShowGuard, createPresenterTimer, createRotationDrag, createSnapshotTextPositions, createSyncGate, createTableStyleEntry, createTouchGestureRecognizer, createViewerOptionsStore, createViewerZoomStore, createWheelStepBuffer, createWriteBackScheduler, cropFill, cropFit, cropModeKeyAction, cropSessionChanged, cropToAspectRatio, cursorForTool, customGeometryPathsToSvgSubpaths, customizeBackstageCards, customizeBackstageNav, customizeCanvasContextMenuEntries, customizeContextMenuEntries, customizeOptionsTabs, cycleSelectableElement, defaultCssVars, defaultRadius, defaultThemeColors, defineThreeViewElement, deleteAutosaveSnapshot, deleteSection, deleteTableStyleFromMap, deleteTagFromCollections, demote, deriveSlideFieldContext, deriveViewportBreakpoints, describeCollaborationShellState, describeFontEmbedding, describeSmartArtBounds, describeTableStyleEditor, detectOrientation, detectTouchDevice, directionValuesFor, discardAutosaveRecovery, distributeElements, downloadBlob, downloadDataUrl, dragCropHandle, editCommentInList, effectiveDirection, effectiveTimingCurve, elementActionToPptxAction, elementBulletKind, elementContainerHeightStyle, elementHitTargetStyle, elementIdSelector, elementLockTogglePatch, elementPictureFilename, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, ensureChartInteractionStyles, erasePresentationInkAt, evenColumnWidths, evenRowHeights, exportDeckJson, extraQuickAccessCommands, fetchGoogleWebfontOutlineBytes, filterCommands, filterHiddenSlideIndices, filterInteractableIds, filterRenderedElements, findChartPartTarget, findConnectorSiteNear, findEraserHitElementId, findInSlides, findSelectedThemeSwatch, findSmartArtNodeText, finishPrintWindow, firstShowSlideIndex, flattenNodes, flattenTagCollections, followingText, forgetSessionDeck, formatAxisValue, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, galleryHasItems, galleryItemLabel, generateBroadcastRoomId, generateElementId, generateNoteLineCount, generateTicks, getActiveXControlOverlayView, getAnimationColorBaseStyle, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getBarFacePicturePixelSampleVersion, getBevelLightingSvgFilter, getCachedNativeImageSize, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getChartUserShapeGroupTransform, getChartUserShapeRowChartBox, getCinematicTransitionAnimations, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getComputedFillStyle, getComputedStrokeStyle, getConnectorEndpointHandles, getConnectorPathGeometry, getContentPartReplayStyles, getCropShapeClipPath, getCurrentParagraphIndex, getDenseGridLayoutPlan, getDensePanelTouchTargetPx, getDraggedShapeAdjustments, getDuotoneCachedResult, getEffectSoundAsset, getEffectSoundState, getEffectStyleSource, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getFragmentedTransitionDescriptor, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFillCounterTransform, getImageFitStyle, getImageSvgFilters, getImageTilingStyle, getInkReplayStyles, getInlineEditorSelectionResult, getLocalStorageUsageSummary, getNonVisualDescriptionFields, getNotesPrintableArea, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDocumentParagraphs, getOleNestedDeckDetail, getOleObjectTypeLabel, getOleSheetGrid, getOleTypeColor, getOleTypeLabel, getOnlineVideoEmbed, getOverflowSegments, getP14TransitionAnimations, getPatternSvg, getPendingSelectionRestore, getPresetShapeVectorGeometry, getPrintableArea, getResizeHandleHitAreaStyle, getSelectionControlArtworkStyle, getSelectionOutlineColor, getSelectionTextStyleFlags, getSessionTabId, getShapeAdjustmentHandleDescriptors, getShapeConnectionSites, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeSvgFilter, getSpeechRecognitionCtor, getSubstituteFontFamily, getSvgStrokeDasharray, getTableCellBandStyle, getTextBodyRotationTransform, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasGlyphEnvelope, hasMultipleSelectedTableCells, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hasTiltData, hexToRgbUnit, hiddenSlideCue, hideChartSeries, hollowTextFillStyle, inlineElementPointerEvents, inlineGalleryItems, inlineListBodyText, insertCommentMention, insertTableElementColumn, insertTableElementRow, isActionHidden, isBlackboardActive, isBrowserOpenableMime, isBulletMarkerSegment, isCalloutShape, isCellInRect, isCurrentLayout, isDialogAvailable, isDrawingToolVisible, isEditPointsEnabled, isEditableMotionPath, isEditableTextElement, isEditorControlTarget, isEditorTextInputTarget, isElementActionable, isElementLocked, isElementRendered, isExportAbortError, isFeatureEnabled, isHeaderFooterDateTextVisible, isHeaderFooterFooterTextVisible, isHeaderFooterHeaderTextVisible, isHollowShapeElement, isImageLikeElement, isImageTiled, isInkElement, isKeyboardOpen, isLegacyBinaryPresentation, isLinkedTextBox, isMediaFullscreenActive, isMixedContentBlocked, isMobileViewport, isOptionsPageVisible, isPanelVisible, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isSeriesUsingSecondaryAxis, isStrokeOnlyPresetElement, isSupportedPresentationFile, isTemplateElementId3 as isTemplateElementId, isUrlSafe, isWedgeCalloutPresetShape, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, listChartUserShapeRows, listMediaBookmarkOptions, loadAudienceContent, loadSessionDeck, lockResizeAspect, makeCloneId, makeSlideId, mapCustomizedEditorKey, mapEditingWheel, mapInlineTextFormatKey, mapOutlineKey, mapPresentationKey, mapPresentationWheel, mapSlideShowStartKey, mapSlideSorterKey, masterViewBackgroundColor, masterViewCrudActions, masterViewCrudFailureKey, masterViewElements, masterViewPseudoSlide, matchCommentMentionAuthors, mayLeaveSlideShow, measurePreviewGeometry, measureSvgViewportRect, mediaFallbackIcon, mediaFallbackLabelKey, mediaFallbackVisual, mediaPlaybackAttributes, mediaTransportVisible, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, mediaTrimEndMsFromSeconds, mediaTrimEndSeconds, mergeAdditiveSelection, mergeCaptionResults, mergeCells, mergePresentationSnapshot, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, modelDataToBlobUrl, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountModel3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, mruColorsPatch, nestedTextDecorationStyle, newTableElement, nextPresentedSlide, nextShowSlideIndex, nextToggleValue, normalizeHexColor2 as normalizeHexColor, normalizeStrokeDashType, normalizeTableStyleGuid, notesSegmentsToSpans, observeElementHeight, observeExternalCollaborationReadiness, observeExternalCollaborationSession, observeYDocSlides, oleActionsVisible, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPendingPrintWindow, openPptxFile, openReadingView, openUrlInNewTab, overlayInlineTextSnapshot, overlayMasterViewInlineSnapshot, overlayPointerInput, paintedElementSize, paintedStrokeWidth, panCropImage, paragraphsToSegments, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, parseSegmentsFromRichEditor, partitionTemplateElements, patchChartData, pickSupportedMimeType, pieceLetterSpacing, placeAudienceWindow, placeCaretAtEnd, placeTileOnPage, placeholderPromptDescriptor, planMergeShapes, playAnimationRibbonPreview, playFeedbackSound, playGroup, playSlideTransitionPreview, pptxActionToElementAction, prepareElementForInsertion, prepareElementUpdateBatch, prepareHtml2CanvasClone, presentationBaseName, presentationEntrySlideIndex, presentationInkPath, presenterElapsed, presenterNextDisabled, presenterPaneAdvancesOnClick, presenterPrevDisabled, presenterTimerProgress, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, probeAutosaveRecovery, probeNativeImageSize, projectDrawingShapes, promote, publishLiveGeometry, publishLiveInlineText, pushRecentColor, quickStyleSwatchCss, radarStylePatch, rasterResultToPngBlob, rasterResultToPngDataUrl, rasterizeElement, rasterizeElementTiledToCanvas, rasterizeElementTiles, reResolveElementColors, reResolveSlideColors, readBackstageRecentFile, readEditableText, readListActivationSelection, readOnlyRecommendation, readRibbonTransitionDraft, readSlidesFromYDoc, readSoundFileAsDataUrl, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, redistributeColumnWidth, registerCollaborationTeardown, registerCrossSlideAudio, registerCustomFont, remapTextToSegments, rememberSessionDeck, removeChartCategory, removeChartSeries, removeCommentFromList, removeEmptyNode, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorder2 as reorder, reorderAnimationTimelineRows, replaceMasterViewElements, replaceOleFile, replyToCommentInList, rerouteConnectorsForMovedElements, resetPresenterTimer, resetSlideLayoutPath, resolve3DRenderingFlags, resolveActionType, resolveActiveRibbonTab, resolveAudienceScreenPlacement, resolveAuthoredCustomShowId, resolveAuthoredSlideRange, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveAutosaveActivation, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, resolveChartKind, resolveChartThreeViewSpec, resolveCollaborationShellEditability, resolveCollaborationShellState, resolveConnectorEndpointUpdate, resolveDefaultFontFamily, resolveDefaultPrintSettings, resolveDirection, resolveDirection8, resolveDisplayedChartType, resolveEditPointsAvailability, resolveEffectiveHiddenActions, resolveElementActionAffordance, resolveElementAriaAttributes, resolveElementHighlightClick, resolveElementInteractivity, resolveExpiredAutosaveSnapshots, resolveExportCaptureDecision, resolveFontKerning, resolveForwardSlideWithZoomReturn, resolveGoogleWebfontHref, resolveGroupChildFill, resolveHistoryDepth, resolveImageResolutionScale, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, resolveMediaBookmarkTimesMs, resolveMediaElementSource, resolveMediaTimeNodeElementIds, resolveMetricTrackingPx, resolveNotesSchematicBodyFontSizePx, resolveNotesSegments, resolveOleType, resolveOleVerbTarget, resolveOptionRootClasses, resolveOrientation, resolvePalette, resolvePresentationAction, resolveProfileInitial, resolveRevealedChartData, resolveRevealedDrawingShapeNodeIds, resolveRevealedDrawingShapes, resolveRevealedSmartArtNodes, resolveScreenTip, resolveScriptFontSet, resolveSelectionPaneRename, resolveShapeGeometry, resolveShowSlideIndexes, resolveSlidePaneClick, resolveSlideSizeSelection, resolveSlideTransition, resolveSmartArtThreeViewSpec, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTemplateBackgroundRows, resolveTextFillBlipUrls, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransitionSoundAction, resolveTransportForServerUrl, resolveViewerAddinRows, resolveViewportFitOptions, resolveWheelSpokeCount, resolveZoomNavigationTarget, restoreFilteredSeries, restoreInlineListBodySelection, restoreSegmentSelection, restoreSessionDeck, ribbonCustomizationCss, ribbonTransitionUpdates, rulerDragToGuidePosition, runPresentationAction, runProgramNoticeStackStyle, safeOpenUrl, sanitizeColor, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveDeckWithPassword, saveViewerProfile, savedPresentationFileName, scaleFontSizeForAutoFit, scaleSlidesForSizeChange, scanAvailableFontFamilies, scheduleAutoAdvanceChain, scheduleMediaTrimAndFade, schemaLabel, scopeLayoutOptionsToSlide, scrollInspectorSectionIntoView, seedRecentColors, segmentFrameCount, segmentStyleToCss, segmentsToEditorHtml, segmentsToParagraphs, segmentsToPlainText, selectGoogleWebfontFamilies, selectedBookmarkOptionValue, selectedParagraphBulletKind, selectionBulletKind, sendBackward, sendToBack, seriesSecondaryAxisPatch, setAfterAnimation, setAfterAnimationColor, setCachedResult, setCellText, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDataLabelsRangeCache, setDuotoneCachedResult, setEffectSound, setEffectStockSound, setMasterViewBackgroundColor, setMotionPath, setMotionPathEnd, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, setTrigger, setTriggerBookmark, shapeFillChange, shapeOutlineChange, shouldAutoFollowBroadcaster, shouldClearAutosaveCacheOnClose, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldDiscardAutosaveOnSuccessfulSave, shouldLoopContinuously, shouldProbeAutosaveRecovery, shouldRenderHitTarget, shouldRoomSlidesReplaceLoad, shouldShowAccessibilitySection, shouldShowAutosaveRecoveryPrompt, shouldShowElementHandles, shouldShowMediaFullscreenStopButton, shouldStickyActionRow, shouldUseSvgWarp, shouldWriteAutosaveSnapshot, siblingCount, siblingIndex, slideProgressPercent, slideSizeFromPreset, slideSizeToCanvasPx, slideStatusLabel, snapBoxToGrid, splitCell, splitEastAsianBreaks, splitRunByScriptFont, splitRunForMetrics, splitWordsForUnderline, splitsUnderlineIntoWords, startCropSession, stepFontSizePt, stepPresenterZoom, stopAllPersistentAudio, stopCaptureStream, storeAudienceContent, stripUnderlineDecoration, strokeOutlineViewBox, strokeWidthOf, styleShadowFilter, subscribeBarFacePicturePixelSamples, substituteFieldText, subtitleRecognitionLanguage, subtitleSettingsFromOptions, subtitleSettingsLabels, surfaceWireframePatch, svgGradientFillRef, svgLineCap, swapPresentationWindows, switchSmartArtLayout, syncGoogleWebfontStylesheet, tableCellCss, tableContainerCss, tableStyleAssignmentUpdate, templateSchemeFromTheme, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, textFontSizePtToPx, textFontSizePxToPt, themeColorLabel, themeColorSchemesEqual, themeColorSwatchRows, themeSwatchCommit, themeToCssVars, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toElementAxes, toSlideIndex, toggleBlackboard, toggleCommentResolvedInList, togglePresenterTimer, toggleSelectionBullets, toggleSheet, toggleStageElementMedia, toggleText3dExtrusion, transformInlineListCase, transformTextCase, transitionSoundOptions, transitionSoundSelectedValue, transitionStockSoundId, trimmedMediaDurationMs, ungroupElements, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateElement, updateMasterViewElement, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateSubtitleSettings, updateTagInCollections, validateMediaTrimRange, validateRoomId, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewPropertiesPatchFromPreferences, viewerOptionsToPreferences, viewerPreferencesFromViewProperties, visibleContextualTabs, visibleTemplateElements, warpPreviewPath, withChartTitle, withChartUserShapeAdded, withChartUserShapeGroupChildAdded, withChartUserShapeRowChartBoxUpdated, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRemoved, withChartUserShapeRowRotationUpdated, withChartUserShapeRowTextUpdated, withChartUserShapeRowUpdated, withConnectorEndpointUpdate, withFrameSlides, withInlineListDecorationDefaults, withSlideSizeOrientation, withSlidesPerPage, writeStoredViewerPrefs, xmlText };
|