pptx-react-viewer 2.12.0 → 2.13.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 +4 -0
- package/dist/{AiChatPanel-CS4CONUO.mjs → AiChatPanel-4YS6DEIT.mjs} +4 -4
- package/dist/AiChatPanel-4YS6DEIT.mjs.br +0 -0
- package/dist/AiChatPanel-4YS6DEIT.mjs.gz +0 -0
- package/dist/{AiChatPanel-JIXSOZXN.js → AiChatPanel-DEI3EQFM.js} +23 -23
- package/dist/AiChatPanel-DEI3EQFM.js.br +0 -0
- package/dist/AiChatPanel-DEI3EQFM.js.gz +0 -0
- package/dist/{Model3DScene-RWFPSN6B.mjs → Model3DScene-JSNQCKCJ.mjs} +1 -1
- package/dist/Model3DScene-JSNQCKCJ.mjs.br +0 -0
- package/dist/Model3DScene-JSNQCKCJ.mjs.gz +0 -0
- package/dist/{Model3DScene-5KMJ4JL6.js → Model3DScene-X4W7GZVY.js} +2 -2
- package/dist/Model3DScene-X4W7GZVY.js.br +0 -0
- package/dist/Model3DScene-X4W7GZVY.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-2GZQM3LN.mjs → SurfaceChart3DScene-3MSU74YH.mjs} +1 -1
- package/dist/{SurfaceChart3DScene-2GZQM3LN.mjs.br → SurfaceChart3DScene-3MSU74YH.mjs.br} +0 -0
- package/dist/SurfaceChart3DScene-3MSU74YH.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-BIOKIETC.js → SurfaceChart3DScene-IZLUWT27.js} +2 -2
- package/dist/SurfaceChart3DScene-IZLUWT27.js.br +0 -0
- package/dist/SurfaceChart3DScene-IZLUWT27.js.gz +0 -0
- package/dist/{chunk-QGHC65C4.mjs → chunk-4TD7EINA.mjs} +1071 -375
- package/dist/chunk-4TD7EINA.mjs.br +0 -0
- package/dist/chunk-4TD7EINA.mjs.gz +0 -0
- package/dist/{chunk-AOED5MFM.mjs → chunk-6KRNQ2KF.mjs} +13 -12
- package/dist/chunk-6KRNQ2KF.mjs.br +0 -0
- package/dist/chunk-6KRNQ2KF.mjs.gz +0 -0
- package/dist/{chunk-3GNSGGY2.js → chunk-BXAK3JFM.js} +13 -0
- package/dist/chunk-BXAK3JFM.js.br +0 -0
- package/dist/chunk-BXAK3JFM.js.gz +0 -0
- package/dist/{chunk-PJUQQF3I.js → chunk-EFSQW6S5.js} +1091 -376
- package/dist/chunk-EFSQW6S5.js.br +0 -0
- package/dist/chunk-EFSQW6S5.js.gz +0 -0
- package/dist/{chunk-ZIXSSQAZ.js → chunk-G2LZT5SV.js} +3 -3
- package/dist/chunk-G2LZT5SV.js.br +0 -0
- package/dist/chunk-G2LZT5SV.js.gz +0 -0
- package/dist/{chunk-CEUHGUZ4.mjs → chunk-HRLF4REI.mjs} +54 -28
- package/dist/chunk-HRLF4REI.mjs.br +0 -0
- package/dist/chunk-HRLF4REI.mjs.gz +0 -0
- package/dist/{chunk-2VUHJNWM.js → chunk-IDW5UPXW.js} +292 -266
- package/dist/chunk-IDW5UPXW.js.br +0 -0
- package/dist/chunk-IDW5UPXW.js.gz +0 -0
- package/dist/{chunk-PTGTFXPU.js → chunk-RWIQHVZQ.js} +341 -340
- package/dist/chunk-RWIQHVZQ.js.br +0 -0
- package/dist/chunk-RWIQHVZQ.js.gz +0 -0
- package/dist/{chunk-SP7U34QM.js → chunk-SHZ3GWOD.js} +2004 -1943
- package/dist/chunk-SHZ3GWOD.js.br +0 -0
- package/dist/chunk-SHZ3GWOD.js.gz +0 -0
- package/dist/{chunk-ECDKYPQ2.mjs → chunk-TEXIGSA6.mjs} +13 -0
- package/dist/chunk-TEXIGSA6.mjs.br +0 -0
- package/dist/chunk-TEXIGSA6.mjs.gz +0 -0
- package/dist/{chunk-EJRHYYKE.mjs → chunk-WEU5EMKK.mjs} +1 -1
- package/dist/chunk-WEU5EMKK.mjs.br +0 -0
- package/dist/chunk-WEU5EMKK.mjs.gz +0 -0
- package/dist/{chunk-BJQSHVYH.mjs → chunk-YA7VFYTW.mjs} +271 -210
- package/dist/chunk-YA7VFYTW.mjs.br +0 -0
- package/dist/chunk-YA7VFYTW.mjs.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 +18 -0
- package/dist/index.js +36 -36
- 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 +18 -0
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +79 -79
- 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 +18 -0
- package/dist/viewer/index.js +22 -22
- 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-CS4CONUO.mjs.br +0 -0
- package/dist/AiChatPanel-CS4CONUO.mjs.gz +0 -0
- package/dist/AiChatPanel-JIXSOZXN.js.br +0 -0
- package/dist/AiChatPanel-JIXSOZXN.js.gz +0 -0
- package/dist/Model3DScene-5KMJ4JL6.js.br +0 -0
- package/dist/Model3DScene-5KMJ4JL6.js.gz +0 -0
- package/dist/Model3DScene-RWFPSN6B.mjs.br +0 -0
- package/dist/Model3DScene-RWFPSN6B.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-2GZQM3LN.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-BIOKIETC.js.br +0 -0
- package/dist/SurfaceChart3DScene-BIOKIETC.js.gz +0 -0
- package/dist/chunk-2VUHJNWM.js.br +0 -0
- package/dist/chunk-2VUHJNWM.js.gz +0 -0
- package/dist/chunk-3GNSGGY2.js.br +0 -0
- package/dist/chunk-3GNSGGY2.js.gz +0 -0
- package/dist/chunk-AOED5MFM.mjs.br +0 -0
- package/dist/chunk-AOED5MFM.mjs.gz +0 -0
- package/dist/chunk-BJQSHVYH.mjs.br +0 -0
- package/dist/chunk-BJQSHVYH.mjs.gz +0 -0
- package/dist/chunk-CEUHGUZ4.mjs.br +0 -0
- package/dist/chunk-CEUHGUZ4.mjs.gz +0 -0
- package/dist/chunk-ECDKYPQ2.mjs.br +0 -0
- package/dist/chunk-ECDKYPQ2.mjs.gz +0 -0
- package/dist/chunk-EJRHYYKE.mjs.br +0 -0
- package/dist/chunk-EJRHYYKE.mjs.gz +0 -0
- package/dist/chunk-PJUQQF3I.js.br +0 -0
- package/dist/chunk-PJUQQF3I.js.gz +0 -0
- package/dist/chunk-PTGTFXPU.js.br +0 -0
- package/dist/chunk-PTGTFXPU.js.gz +0 -0
- package/dist/chunk-QGHC65C4.mjs.br +0 -0
- package/dist/chunk-QGHC65C4.mjs.gz +0 -0
- package/dist/chunk-SP7U34QM.js.br +0 -0
- package/dist/chunk-SP7U34QM.js.gz +0 -0
- package/dist/chunk-ZIXSSQAZ.js.br +0 -0
- package/dist/chunk-ZIXSSQAZ.js.gz +0 -0
|
@@ -2152,9 +2152,9 @@ function getStockObject(index) {
|
|
|
2152
2152
|
}
|
|
2153
2153
|
}
|
|
2154
2154
|
async function blobToDataUrl(blob) {
|
|
2155
|
-
return new Promise((
|
|
2155
|
+
return new Promise((resolve2, reject) => {
|
|
2156
2156
|
const reader = new FileReader();
|
|
2157
|
-
reader.onload = () =>
|
|
2157
|
+
reader.onload = () => resolve2(reader.result);
|
|
2158
2158
|
reader.onerror = () => reject(reader.error);
|
|
2159
2159
|
reader.readAsDataURL(blob);
|
|
2160
2160
|
});
|
|
@@ -9757,12 +9757,12 @@ function updateSection(section) {
|
|
|
9757
9757
|
}
|
|
9758
9758
|
return node;
|
|
9759
9759
|
}
|
|
9760
|
-
function applySections(presentation,
|
|
9761
|
-
if (
|
|
9760
|
+
function applySections(presentation, sections2, lookup, remap) {
|
|
9761
|
+
if (sections2 === void 0) {
|
|
9762
9762
|
return;
|
|
9763
9763
|
}
|
|
9764
9764
|
let location = findSectionList(presentation, lookup);
|
|
9765
|
-
if (
|
|
9765
|
+
if (sections2.length === 0) {
|
|
9766
9766
|
if (location) {
|
|
9767
9767
|
delete location.parent[location.key];
|
|
9768
9768
|
}
|
|
@@ -9779,14 +9779,14 @@ function applySections(presentation, sections, lookup, remap) {
|
|
|
9779
9779
|
location = { parent: ext, key: "p14:sectionLst", list: ext["p14:sectionLst"] };
|
|
9780
9780
|
}
|
|
9781
9781
|
const list = cloneXmlObject(location.list) ?? {};
|
|
9782
|
-
const effectiveSections = remap && remap.changed ?
|
|
9782
|
+
const effectiveSections = remap && remap.changed ? sections2.map((section) => ({
|
|
9783
9783
|
...section,
|
|
9784
9784
|
slideIds: remapReferenceList(
|
|
9785
9785
|
section.slideIds,
|
|
9786
9786
|
remap.sldIdByOldSldId,
|
|
9787
9787
|
remap.removedSldIds
|
|
9788
9788
|
)
|
|
9789
|
-
})) :
|
|
9789
|
+
})) : sections2;
|
|
9790
9790
|
replaceChildren(list, "section", effectiveSections.map(updateSection), "p14:section");
|
|
9791
9791
|
location.parent[location.key] = list;
|
|
9792
9792
|
}
|
|
@@ -13830,10 +13830,11 @@ var PptxShapeStyleExtractor = class {
|
|
|
13830
13830
|
this.context.resolveThemeFillRef(styleNode["a:fillRef"], style);
|
|
13831
13831
|
}
|
|
13832
13832
|
const lineNode = shapeProps["a:ln"];
|
|
13833
|
+
if (styleNode?.["a:lnRef"]) {
|
|
13834
|
+
this.context.resolveThemeLineRef(styleNode["a:lnRef"], style);
|
|
13835
|
+
}
|
|
13833
13836
|
if (lineNode) {
|
|
13834
13837
|
applyLineProperties(lineNode, style, this.context);
|
|
13835
|
-
} else if (styleNode?.["a:lnRef"]) {
|
|
13836
|
-
this.context.resolveThemeLineRef(styleNode["a:lnRef"], style);
|
|
13837
13838
|
}
|
|
13838
13839
|
Object.assign(style, this.context.extractShadowStyle(shapeProps));
|
|
13839
13840
|
Object.assign(style, this.context.extractInnerShadowStyle(shapeProps));
|
|
@@ -15159,7 +15160,10 @@ var PptxConnectorParser = class {
|
|
|
15159
15160
|
const skewY = transform["@_skewY"] ? parseInt(String(transform["@_skewY"]), 10) / 6e4 : void 0;
|
|
15160
15161
|
const { flipHorizontal, flipVertical } = this.context.readFlipState(transform);
|
|
15161
15162
|
const cNvConnectionShapeProperties = connector2?.["p:nvCxnSpPr"]?.["p:cNvCxnSpPr"];
|
|
15162
|
-
const shapeStyle = this.context.extractShapeStyle(
|
|
15163
|
+
const shapeStyle = this.context.extractShapeStyle(
|
|
15164
|
+
shapeProperties,
|
|
15165
|
+
connector2["p:style"]
|
|
15166
|
+
);
|
|
15163
15167
|
const startConnectionNode = cNvConnectionShapeProperties?.["a:stCxn"];
|
|
15164
15168
|
if (startConnectionNode) {
|
|
15165
15169
|
const startConnection = {};
|
|
@@ -15309,8 +15313,8 @@ var PptxLoadDataBuilder = class {
|
|
|
15309
15313
|
this.customShows = customShows;
|
|
15310
15314
|
return this;
|
|
15311
15315
|
}
|
|
15312
|
-
withSections(
|
|
15313
|
-
this.sections =
|
|
15316
|
+
withSections(sections2) {
|
|
15317
|
+
this.sections = sections2;
|
|
15314
15318
|
return this;
|
|
15315
15319
|
}
|
|
15316
15320
|
withWarnings(warnings) {
|
|
@@ -18972,7 +18976,7 @@ function remapEditorAnimationsToShapeIds(elements2, animations, reservedMaxId =
|
|
|
18972
18976
|
byId.set(el.id, el);
|
|
18973
18977
|
}
|
|
18974
18978
|
let nextId2 = Math.max(maxShapeId(flat), reservedMaxId) + 1;
|
|
18975
|
-
const
|
|
18979
|
+
const resolve2 = (elementId) => {
|
|
18976
18980
|
const el = byId.get(elementId);
|
|
18977
18981
|
if (!el) {
|
|
18978
18982
|
return void 0;
|
|
@@ -18984,8 +18988,8 @@ function remapEditorAnimationsToShapeIds(elements2, animations, reservedMaxId =
|
|
|
18984
18988
|
return el.shapeId;
|
|
18985
18989
|
};
|
|
18986
18990
|
return animations.map((anim) => {
|
|
18987
|
-
const resolvedElement =
|
|
18988
|
-
const resolvedTrigger = anim.triggerShapeId !== void 0 ?
|
|
18991
|
+
const resolvedElement = resolve2(anim.elementId);
|
|
18992
|
+
const resolvedTrigger = anim.triggerShapeId !== void 0 ? resolve2(anim.triggerShapeId) : void 0;
|
|
18989
18993
|
if (resolvedElement === void 0 && resolvedTrigger === void 0) {
|
|
18990
18994
|
return anim;
|
|
18991
18995
|
}
|
|
@@ -19987,7 +19991,7 @@ var PptxNativeAnimationService = class {
|
|
|
19987
19991
|
* parent node. See `animation-group-context` for why the flat list
|
|
19988
19992
|
* needs it.
|
|
19989
19993
|
*/
|
|
19990
|
-
walkTimingTree(node, animations, currentTrigger,
|
|
19994
|
+
walkTimingTree(node, animations, currentTrigger, group2 = createGroupContext()) {
|
|
19991
19995
|
if (!node) {
|
|
19992
19996
|
return;
|
|
19993
19997
|
}
|
|
@@ -20086,8 +20090,8 @@ var PptxNativeAnimationService = class {
|
|
|
20086
20090
|
textTarget: textTarget ?? void 0,
|
|
20087
20091
|
cTnAttributes: roundTripAttrs,
|
|
20088
20092
|
afterEffect: afterEffectFlag,
|
|
20089
|
-
groupAutoStart:
|
|
20090
|
-
parGroupIndex:
|
|
20093
|
+
groupAutoStart: group2.groupAutoStart,
|
|
20094
|
+
parGroupIndex: group2.parGroupIndex
|
|
20091
20095
|
});
|
|
20092
20096
|
}
|
|
20093
20097
|
const childTnList = cTn["p:childTnLst"];
|
|
@@ -20101,7 +20105,7 @@ var PptxNativeAnimationService = class {
|
|
|
20101
20105
|
parallel,
|
|
20102
20106
|
animations,
|
|
20103
20107
|
trigger,
|
|
20104
|
-
childGroupContext(
|
|
20108
|
+
childGroupContext(group2, parallel["p:cTn"], {
|
|
20105
20109
|
isClickLevelGroup: isClickLevel
|
|
20106
20110
|
})
|
|
20107
20111
|
);
|
|
@@ -20110,11 +20114,11 @@ var PptxNativeAnimationService = class {
|
|
|
20110
20114
|
if (isInteractiveSequence(sequence)) {
|
|
20111
20115
|
continue;
|
|
20112
20116
|
}
|
|
20113
|
-
this.walkTimingTree(sequence, animations, trigger,
|
|
20117
|
+
this.walkTimingTree(sequence, animations, trigger, group2);
|
|
20114
20118
|
}
|
|
20115
20119
|
for (const excl of exclusives) {
|
|
20116
20120
|
const exclAnims = [];
|
|
20117
|
-
this.walkTimingTree(excl, exclAnims, trigger,
|
|
20121
|
+
this.walkTimingTree(excl, exclAnims, trigger, group2);
|
|
20118
20122
|
for (const a of exclAnims) {
|
|
20119
20123
|
a.exclusive = true;
|
|
20120
20124
|
animations.push(a);
|
|
@@ -20129,7 +20133,7 @@ var PptxNativeAnimationService = class {
|
|
|
20129
20133
|
parallel,
|
|
20130
20134
|
animations,
|
|
20131
20135
|
currentTrigger,
|
|
20132
|
-
childGroupContext(
|
|
20136
|
+
childGroupContext(group2, parallel["p:cTn"], {
|
|
20133
20137
|
isClickLevelGroup: false
|
|
20134
20138
|
})
|
|
20135
20139
|
);
|
|
@@ -20138,7 +20142,7 @@ var PptxNativeAnimationService = class {
|
|
|
20138
20142
|
if (isInteractiveSequence(sequence)) {
|
|
20139
20143
|
continue;
|
|
20140
20144
|
}
|
|
20141
|
-
this.walkTimingTree(sequence, animations, currentTrigger,
|
|
20145
|
+
this.walkTimingTree(sequence, animations, currentTrigger, group2);
|
|
20142
20146
|
}
|
|
20143
20147
|
}
|
|
20144
20148
|
/**
|
|
@@ -22041,7 +22045,7 @@ var PptxAnimationWriteService = class {
|
|
|
22041
22045
|
if (currentGroup.length > 0) {
|
|
22042
22046
|
clickGroups.push(currentGroup);
|
|
22043
22047
|
}
|
|
22044
|
-
const nodes = clickGroups.map((
|
|
22048
|
+
const nodes = clickGroups.map((group2) => {
|
|
22045
22049
|
const groupId = this.allocateId();
|
|
22046
22050
|
return {
|
|
22047
22051
|
"p:cTn": {
|
|
@@ -22053,7 +22057,7 @@ var PptxAnimationWriteService = class {
|
|
|
22053
22057
|
}
|
|
22054
22058
|
},
|
|
22055
22059
|
"p:childTnLst": {
|
|
22056
|
-
"p:par":
|
|
22060
|
+
"p:par": group2.length === 1 ? group2[0] : group2
|
|
22057
22061
|
}
|
|
22058
22062
|
}
|
|
22059
22063
|
};
|
|
@@ -23844,17 +23848,20 @@ var stripedRightArrow = {
|
|
|
23844
23848
|
name: "stripedRightArrow",
|
|
23845
23849
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
23846
23850
|
gdLst: [
|
|
23851
|
+
// Head length runs off `ss`, the short side, not `w`. See the note on
|
|
23852
|
+
// `rightArrow` in `preset-shape-definitions-table.ts`.
|
|
23853
|
+
gd3("maxAdj2", "*/ 84375 w ss"),
|
|
23847
23854
|
gd3("a1", "pin 0 adj1 100000"),
|
|
23848
|
-
gd3("a2", "pin 0 adj2
|
|
23855
|
+
gd3("a2", "pin 0 adj2 maxAdj2"),
|
|
23849
23856
|
gd3("y1", "*/ hd2 a1 100000"),
|
|
23850
23857
|
gd3("y2", "+- vc 0 y1"),
|
|
23851
23858
|
gd3("y3", "+- vc y1 0"),
|
|
23852
23859
|
gd3("x2", "*/ ss 1 32"),
|
|
23853
23860
|
gd3("x3", "*/ ss 2 32"),
|
|
23854
23861
|
gd3("x4", "*/ ss 5 32"),
|
|
23855
|
-
gd3("x5", "*/
|
|
23862
|
+
gd3("x5", "*/ ss a2 100000"),
|
|
23856
23863
|
gd3("x6", "+- r 0 x5"),
|
|
23857
|
-
gd3("dx", "*/
|
|
23864
|
+
gd3("dx", "*/ y1 x5 hd2"),
|
|
23858
23865
|
gd3("x7", "+- x6 dx 0")
|
|
23859
23866
|
],
|
|
23860
23867
|
rect: { l: "x4", t: "y2", r: "x7", b: "y3" },
|
|
@@ -23889,14 +23896,17 @@ var notchedRightArrow = {
|
|
|
23889
23896
|
name: "notchedRightArrow",
|
|
23890
23897
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
23891
23898
|
gdLst: [
|
|
23899
|
+
// Head length runs off `ss`, the short side, not `w`. See the note on
|
|
23900
|
+
// `rightArrow` in `preset-shape-definitions-table.ts`.
|
|
23901
|
+
gd3("maxAdj2", "*/ 100000 w ss"),
|
|
23892
23902
|
gd3("a1", "pin 0 adj1 100000"),
|
|
23893
|
-
gd3("a2", "pin 0 adj2
|
|
23903
|
+
gd3("a2", "pin 0 adj2 maxAdj2"),
|
|
23894
23904
|
gd3("y1", "*/ hd2 a1 100000"),
|
|
23895
23905
|
gd3("y2", "+- vc 0 y1"),
|
|
23896
23906
|
gd3("y3", "+- vc y1 0"),
|
|
23897
|
-
gd3("x2", "*/
|
|
23907
|
+
gd3("x2", "*/ ss a2 100000"),
|
|
23898
23908
|
gd3("x1", "+- r 0 x2"),
|
|
23899
|
-
gd3("dx2", "*/
|
|
23909
|
+
gd3("dx2", "*/ y1 x2 hd2"),
|
|
23900
23910
|
gd3("x3", "+- x1 dx2 0"),
|
|
23901
23911
|
gd3("nx", "*/ y1 1 1")
|
|
23902
23912
|
],
|
|
@@ -23920,7 +23930,12 @@ var notchedRightArrow = {
|
|
|
23920
23930
|
var homePlate = {
|
|
23921
23931
|
name: "homePlate",
|
|
23922
23932
|
avLst: { adj: 5e4 },
|
|
23923
|
-
gdLst: [
|
|
23933
|
+
gdLst: [
|
|
23934
|
+
gd3("maxAdj", "*/ 100000 w ss"),
|
|
23935
|
+
gd3("a", "pin 0 adj maxAdj"),
|
|
23936
|
+
gd3("dx1", "*/ ss a 100000"),
|
|
23937
|
+
gd3("x1", "+- r 0 dx1")
|
|
23938
|
+
],
|
|
23924
23939
|
rect: { l: "l", t: "t", r: "x1", b: "b" },
|
|
23925
23940
|
pathLst: [
|
|
23926
23941
|
{
|
|
@@ -23938,8 +23953,13 @@ var homePlate = {
|
|
|
23938
23953
|
var chevron = {
|
|
23939
23954
|
name: "chevron",
|
|
23940
23955
|
avLst: { adj: 5e4 },
|
|
23941
|
-
gdLst: [
|
|
23942
|
-
|
|
23956
|
+
gdLst: [
|
|
23957
|
+
gd3("maxAdj", "*/ 100000 w ss"),
|
|
23958
|
+
gd3("a", "pin 0 adj maxAdj"),
|
|
23959
|
+
gd3("x1", "*/ ss a 100000"),
|
|
23960
|
+
gd3("x2", "+- r 0 x1")
|
|
23961
|
+
],
|
|
23962
|
+
rect: { l: "x1", t: "t", r: "x2", b: "b" },
|
|
23943
23963
|
pathLst: [
|
|
23944
23964
|
{
|
|
23945
23965
|
commands: [
|
|
@@ -29025,27 +29045,28 @@ var rightArrow = {
|
|
|
29025
29045
|
name: "rightArrow",
|
|
29026
29046
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
29027
29047
|
gdLst: [
|
|
29048
|
+
gd13("maxAdj2", "*/ 100000 w ss"),
|
|
29028
29049
|
gd13("a1", "pin 0 adj1 100000"),
|
|
29029
|
-
gd13("a2", "pin 0 adj2
|
|
29030
|
-
gd13("
|
|
29031
|
-
gd13("
|
|
29032
|
-
gd13("
|
|
29033
|
-
gd13("
|
|
29034
|
-
gd13("
|
|
29035
|
-
gd13("dx2", "*/
|
|
29036
|
-
gd13("
|
|
29050
|
+
gd13("a2", "pin 0 adj2 maxAdj2"),
|
|
29051
|
+
gd13("dx1", "*/ ss a2 100000"),
|
|
29052
|
+
gd13("x1", "+- r 0 dx1"),
|
|
29053
|
+
gd13("dy1", "*/ h a1 200000"),
|
|
29054
|
+
gd13("y1", "+- vc 0 dy1"),
|
|
29055
|
+
gd13("y2", "+- vc dy1 0"),
|
|
29056
|
+
gd13("dx2", "*/ y1 dx1 hd2"),
|
|
29057
|
+
gd13("x2", "+- x1 dx2 0")
|
|
29037
29058
|
],
|
|
29038
|
-
rect: { l: "l", t: "
|
|
29059
|
+
rect: { l: "l", t: "y1", r: "x2", b: "y2" },
|
|
29039
29060
|
pathLst: [
|
|
29040
29061
|
{
|
|
29041
29062
|
commands: [
|
|
29042
|
-
{ kind: "moveTo", x: "l", y: "
|
|
29043
|
-
{ kind: "lnTo", x: "x1", y: "
|
|
29063
|
+
{ kind: "moveTo", x: "l", y: "y1" },
|
|
29064
|
+
{ kind: "lnTo", x: "x1", y: "y1" },
|
|
29044
29065
|
{ kind: "lnTo", x: "x1", y: "t" },
|
|
29045
29066
|
{ kind: "lnTo", x: "r", y: "vc" },
|
|
29046
29067
|
{ kind: "lnTo", x: "x1", y: "b" },
|
|
29047
|
-
{ kind: "lnTo", x: "x1", y: "
|
|
29048
|
-
{ kind: "lnTo", x: "l", y: "
|
|
29068
|
+
{ kind: "lnTo", x: "x1", y: "y2" },
|
|
29069
|
+
{ kind: "lnTo", x: "l", y: "y2" },
|
|
29049
29070
|
{ kind: "close" }
|
|
29050
29071
|
]
|
|
29051
29072
|
}
|
|
@@ -29055,26 +29076,28 @@ var leftArrow = {
|
|
|
29055
29076
|
name: "leftArrow",
|
|
29056
29077
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
29057
29078
|
gdLst: [
|
|
29079
|
+
gd13("maxAdj2", "*/ 100000 w ss"),
|
|
29058
29080
|
gd13("a1", "pin 0 adj1 100000"),
|
|
29059
|
-
gd13("a2", "pin 0 adj2
|
|
29060
|
-
gd13("
|
|
29061
|
-
gd13("
|
|
29062
|
-
gd13("
|
|
29063
|
-
gd13("
|
|
29064
|
-
gd13("
|
|
29065
|
-
gd13("
|
|
29081
|
+
gd13("a2", "pin 0 adj2 maxAdj2"),
|
|
29082
|
+
gd13("dx2", "*/ ss a2 100000"),
|
|
29083
|
+
gd13("x2", "+- l dx2 0"),
|
|
29084
|
+
gd13("dy1", "*/ h a1 200000"),
|
|
29085
|
+
gd13("y1", "+- vc 0 dy1"),
|
|
29086
|
+
gd13("y2", "+- vc dy1 0"),
|
|
29087
|
+
gd13("dx1", "*/ y1 dx2 hd2"),
|
|
29088
|
+
gd13("x1", "+- dx2 0 dx1")
|
|
29066
29089
|
],
|
|
29067
|
-
rect: { l: "
|
|
29090
|
+
rect: { l: "x1", t: "y1", r: "r", b: "y2" },
|
|
29068
29091
|
pathLst: [
|
|
29069
29092
|
{
|
|
29070
29093
|
commands: [
|
|
29071
29094
|
{ kind: "moveTo", x: "l", y: "vc" },
|
|
29072
|
-
{ kind: "lnTo", x: "
|
|
29073
|
-
{ kind: "lnTo", x: "
|
|
29095
|
+
{ kind: "lnTo", x: "x2", y: "t" },
|
|
29096
|
+
{ kind: "lnTo", x: "x2", y: "y1" },
|
|
29097
|
+
{ kind: "lnTo", x: "r", y: "y1" },
|
|
29074
29098
|
{ kind: "lnTo", x: "r", y: "y2" },
|
|
29075
|
-
{ kind: "lnTo", x: "
|
|
29076
|
-
{ kind: "lnTo", x: "
|
|
29077
|
-
{ kind: "lnTo", x: "x1", y: "b" },
|
|
29099
|
+
{ kind: "lnTo", x: "x2", y: "y2" },
|
|
29100
|
+
{ kind: "lnTo", x: "x2", y: "b" },
|
|
29078
29101
|
{ kind: "close" }
|
|
29079
29102
|
]
|
|
29080
29103
|
}
|
|
@@ -29084,26 +29107,28 @@ var upArrow = {
|
|
|
29084
29107
|
name: "upArrow",
|
|
29085
29108
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
29086
29109
|
gdLst: [
|
|
29110
|
+
gd13("maxAdj2", "*/ 100000 h ss"),
|
|
29087
29111
|
gd13("a1", "pin 0 adj1 100000"),
|
|
29088
|
-
gd13("a2", "pin 0 adj2
|
|
29089
|
-
gd13("
|
|
29090
|
-
gd13("
|
|
29091
|
-
gd13("
|
|
29092
|
-
gd13("
|
|
29093
|
-
gd13("
|
|
29094
|
-
gd13("
|
|
29112
|
+
gd13("a2", "pin 0 adj2 maxAdj2"),
|
|
29113
|
+
gd13("dy2", "*/ ss a2 100000"),
|
|
29114
|
+
gd13("y2", "+- t dy2 0"),
|
|
29115
|
+
gd13("dx1", "*/ w a1 200000"),
|
|
29116
|
+
gd13("x1", "+- hc 0 dx1"),
|
|
29117
|
+
gd13("x2", "+- hc dx1 0"),
|
|
29118
|
+
gd13("dy1", "*/ x1 dy2 wd2"),
|
|
29119
|
+
gd13("y1", "+- y2 0 dy1")
|
|
29095
29120
|
],
|
|
29096
|
-
rect: { l: "
|
|
29121
|
+
rect: { l: "x1", t: "y1", r: "x2", b: "b" },
|
|
29097
29122
|
pathLst: [
|
|
29098
29123
|
{
|
|
29099
29124
|
commands: [
|
|
29100
|
-
{ kind: "moveTo", x: "
|
|
29125
|
+
{ kind: "moveTo", x: "l", y: "y2" },
|
|
29126
|
+
{ kind: "lnTo", x: "hc", y: "t" },
|
|
29101
29127
|
{ kind: "lnTo", x: "r", y: "y2" },
|
|
29102
|
-
{ kind: "lnTo", x: "x3", y: "y2" },
|
|
29103
|
-
{ kind: "lnTo", x: "x3", y: "b" },
|
|
29104
|
-
{ kind: "lnTo", x: "x2", y: "b" },
|
|
29105
29128
|
{ kind: "lnTo", x: "x2", y: "y2" },
|
|
29106
|
-
{ kind: "lnTo", x: "
|
|
29129
|
+
{ kind: "lnTo", x: "x2", y: "b" },
|
|
29130
|
+
{ kind: "lnTo", x: "x1", y: "b" },
|
|
29131
|
+
{ kind: "lnTo", x: "x1", y: "y2" },
|
|
29107
29132
|
{ kind: "close" }
|
|
29108
29133
|
]
|
|
29109
29134
|
}
|
|
@@ -29113,26 +29138,27 @@ var downArrow = {
|
|
|
29113
29138
|
name: "downArrow",
|
|
29114
29139
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
29115
29140
|
gdLst: [
|
|
29141
|
+
gd13("maxAdj2", "*/ 100000 h ss"),
|
|
29116
29142
|
gd13("a1", "pin 0 adj1 100000"),
|
|
29117
|
-
gd13("a2", "pin 0 adj2
|
|
29118
|
-
gd13("
|
|
29119
|
-
gd13("
|
|
29120
|
-
gd13("
|
|
29121
|
-
gd13("
|
|
29122
|
-
gd13("
|
|
29123
|
-
gd13("dy2", "*/
|
|
29124
|
-
gd13("
|
|
29143
|
+
gd13("a2", "pin 0 adj2 maxAdj2"),
|
|
29144
|
+
gd13("dy1", "*/ ss a2 100000"),
|
|
29145
|
+
gd13("y1", "+- b 0 dy1"),
|
|
29146
|
+
gd13("dx1", "*/ w a1 200000"),
|
|
29147
|
+
gd13("x1", "+- hc 0 dx1"),
|
|
29148
|
+
gd13("x2", "+- hc dx1 0"),
|
|
29149
|
+
gd13("dy2", "*/ x1 dy1 wd2"),
|
|
29150
|
+
gd13("y2", "+- b 0 dy2")
|
|
29125
29151
|
],
|
|
29126
|
-
rect: { l: "
|
|
29152
|
+
rect: { l: "x1", t: "t", r: "x2", b: "y2" },
|
|
29127
29153
|
pathLst: [
|
|
29128
29154
|
{
|
|
29129
29155
|
commands: [
|
|
29130
|
-
{ kind: "moveTo", x: "l", y: "
|
|
29131
|
-
{ kind: "lnTo", x: "
|
|
29156
|
+
{ kind: "moveTo", x: "l", y: "y1" },
|
|
29157
|
+
{ kind: "lnTo", x: "x1", y: "y1" },
|
|
29158
|
+
{ kind: "lnTo", x: "x1", y: "t" },
|
|
29132
29159
|
{ kind: "lnTo", x: "x2", y: "t" },
|
|
29133
|
-
{ kind: "lnTo", x: "
|
|
29134
|
-
{ kind: "lnTo", x: "
|
|
29135
|
-
{ kind: "lnTo", x: "r", y: "y2" },
|
|
29160
|
+
{ kind: "lnTo", x: "x2", y: "y1" },
|
|
29161
|
+
{ kind: "lnTo", x: "r", y: "y1" },
|
|
29136
29162
|
{ kind: "lnTo", x: "hc", y: "b" },
|
|
29137
29163
|
{ kind: "close" }
|
|
29138
29164
|
]
|
|
@@ -32312,8 +32338,8 @@ function extractSectionMap(presentationData, lookup) {
|
|
|
32312
32338
|
const orderedSections = [];
|
|
32313
32339
|
const presentation = presentationData ? lookup.getChildByLocalName(presentationData, "presentation") : void 0;
|
|
32314
32340
|
const sectionList = findSectionList2(presentation, lookup);
|
|
32315
|
-
const
|
|
32316
|
-
|
|
32341
|
+
const sections2 = lookup.getChildrenArrayByLocalName(sectionList, "section");
|
|
32342
|
+
sections2.forEach((section, index) => {
|
|
32317
32343
|
const sectionId = String(section["@_id"] || `section-${index + 1}`);
|
|
32318
32344
|
const rawName = String(section["@_name"] || "").trim();
|
|
32319
32345
|
const sectionName = rawName || `Section ${index + 1}`;
|
|
@@ -32788,8 +32814,8 @@ function scalar(parent, name, xmlLookup) {
|
|
|
32788
32814
|
return node?.["#text"] === void 0 ? void 0 : String(node["#text"]);
|
|
32789
32815
|
}
|
|
32790
32816
|
function parseSeriesDataLabels(seriesNode, xmlLookup) {
|
|
32791
|
-
const
|
|
32792
|
-
const nodes =
|
|
32817
|
+
const group2 = xmlLookup.getChildByLocalName(seriesNode, "dLbls");
|
|
32818
|
+
const nodes = group2 ? xmlLookup.getChildrenArrayByLocalName(group2, "dLbl") : xmlLookup.getChildrenArrayByLocalName(seriesNode, "dLbl");
|
|
32793
32819
|
return nodes.flatMap((node) => {
|
|
32794
32820
|
const idx = uint32(xmlLookup.getChildByLocalName(node, "idx")?.["@_val"]);
|
|
32795
32821
|
if (idx === void 0) {
|
|
@@ -32834,7 +32860,7 @@ function parseSeriesDataLabels(seriesNode, xmlLookup) {
|
|
|
32834
32860
|
return [result];
|
|
32835
32861
|
});
|
|
32836
32862
|
}
|
|
32837
|
-
function parseChartDataLabelOptions(
|
|
32863
|
+
function parseChartDataLabelOptions(group2, xmlLookup) {
|
|
32838
32864
|
const result = {};
|
|
32839
32865
|
const fields = [
|
|
32840
32866
|
["showVal", "showValue"],
|
|
@@ -32846,16 +32872,16 @@ function parseChartDataLabelOptions(group, xmlLookup) {
|
|
|
32846
32872
|
["showLeaderLines", "showLeaderLines"]
|
|
32847
32873
|
];
|
|
32848
32874
|
for (const [xmlName, property] of fields) {
|
|
32849
|
-
const value = bool(xmlLookup.getChildByLocalName(
|
|
32875
|
+
const value = bool(xmlLookup.getChildByLocalName(group2, xmlName));
|
|
32850
32876
|
if (value !== void 0) {
|
|
32851
32877
|
result[property] = value;
|
|
32852
32878
|
}
|
|
32853
32879
|
}
|
|
32854
|
-
const pos2 = position(xmlLookup.getChildByLocalName(
|
|
32880
|
+
const pos2 = position(xmlLookup.getChildByLocalName(group2, "dLblPos"));
|
|
32855
32881
|
if (pos2) {
|
|
32856
32882
|
result.position = pos2;
|
|
32857
32883
|
}
|
|
32858
|
-
const separator = scalar(
|
|
32884
|
+
const separator = scalar(group2, "separator", xmlLookup);
|
|
32859
32885
|
if (separator !== void 0) {
|
|
32860
32886
|
result.separator = separator;
|
|
32861
32887
|
}
|
|
@@ -38175,12 +38201,12 @@ function layoutGroupedList(nodes, bounds, themeColorMap) {
|
|
|
38175
38201
|
const usableW = bounds.width - padding * 2;
|
|
38176
38202
|
const groupW = (usableW - gap * (groups.length - 1)) / groups.length;
|
|
38177
38203
|
const usableH = bounds.height - padding * 2;
|
|
38178
|
-
groups.forEach((
|
|
38204
|
+
groups.forEach((group2, gi) => {
|
|
38179
38205
|
const fill = accentColor(gi, themeColorMap);
|
|
38180
38206
|
const gx = bounds.x + padding + gi * (groupW + gap);
|
|
38181
38207
|
const headerH = usableH * 0.2;
|
|
38182
38208
|
const subItemGap = 3;
|
|
38183
|
-
const subItemH = (usableH - headerH - 4 - subItemGap * (
|
|
38209
|
+
const subItemH = (usableH - headerH - 4 - subItemGap * (group2.length - 1)) / group2.length;
|
|
38184
38210
|
elements2.push(
|
|
38185
38211
|
makeShapeElement(
|
|
38186
38212
|
nextId("sa-grp-header"),
|
|
@@ -38198,7 +38224,7 @@ function layoutGroupedList(nodes, bounds, themeColorMap) {
|
|
|
38198
38224
|
}
|
|
38199
38225
|
)
|
|
38200
38226
|
);
|
|
38201
|
-
|
|
38227
|
+
group2.forEach((node, si) => {
|
|
38202
38228
|
const sy = bounds.y + padding + headerH + 4 + si * (subItemH + subItemGap);
|
|
38203
38229
|
elements2.push(
|
|
38204
38230
|
makeShapeElement(
|
|
@@ -41479,6 +41505,23 @@ var GENERIC_FAMILY_CONCRETE_FONTS = {
|
|
|
41479
41505
|
cursive: ["Comic Sans MS", "cursive"],
|
|
41480
41506
|
fantasy: ["Impact", "fantasy"]
|
|
41481
41507
|
};
|
|
41508
|
+
function parsePanoseString(panoseStr) {
|
|
41509
|
+
if (!panoseStr) {
|
|
41510
|
+
return void 0;
|
|
41511
|
+
}
|
|
41512
|
+
const cleaned = panoseStr.trim();
|
|
41513
|
+
if (cleaned.length !== 20) {
|
|
41514
|
+
return void 0;
|
|
41515
|
+
}
|
|
41516
|
+
if (!/^[0-9a-fA-F]{20}$/.test(cleaned)) {
|
|
41517
|
+
return void 0;
|
|
41518
|
+
}
|
|
41519
|
+
const bytes = [];
|
|
41520
|
+
for (let i = 0; i < 20; i += 2) {
|
|
41521
|
+
bytes.push(parseInt(cleaned.substring(i, i + 2), 16));
|
|
41522
|
+
}
|
|
41523
|
+
return bytes;
|
|
41524
|
+
}
|
|
41482
41525
|
function classifyPanose(panose) {
|
|
41483
41526
|
if (!panose || panose.length < 4) {
|
|
41484
41527
|
return "sans-serif";
|
|
@@ -49646,6 +49689,29 @@ var PptxHandlerRuntime10 = class extends PptxHandlerRuntime9 {
|
|
|
49646
49689
|
return void 0;
|
|
49647
49690
|
}
|
|
49648
49691
|
}
|
|
49692
|
+
/**
|
|
49693
|
+
* Resolve the `c:spPr` fill of a chart container (`c:chartSpace` or
|
|
49694
|
+
* `c:plotArea`) to a colour string, or the literal `'none'` for
|
|
49695
|
+
* `<a:noFill/>`. Returns `undefined` when the container declares no fill at
|
|
49696
|
+
* all, which leaves the choice to the renderer.
|
|
49697
|
+
*
|
|
49698
|
+
* `<a:noFill/>` parses to the empty STRING, so presence - not truthiness -
|
|
49699
|
+
* has to decide.
|
|
49700
|
+
*/
|
|
49701
|
+
parseChartContainerFill(container) {
|
|
49702
|
+
const shapeProperties = this.xmlLookupService.getChildByLocalName(container, "spPr");
|
|
49703
|
+
if (!shapeProperties) {
|
|
49704
|
+
return void 0;
|
|
49705
|
+
}
|
|
49706
|
+
const hasNoFill = Object.keys(shapeProperties).some(
|
|
49707
|
+
(key) => this.compatibilityService.getXmlLocalName(key) === "noFill"
|
|
49708
|
+
);
|
|
49709
|
+
if (hasNoFill) {
|
|
49710
|
+
return "none";
|
|
49711
|
+
}
|
|
49712
|
+
const solidFill2 = this.xmlLookupService.getChildByLocalName(shapeProperties, "solidFill");
|
|
49713
|
+
return solidFill2 ? this.parseColor(solidFill2) : void 0;
|
|
49714
|
+
}
|
|
49649
49715
|
/**
|
|
49650
49716
|
* Extract chart style metadata from chart XML.
|
|
49651
49717
|
*/
|
|
@@ -49660,6 +49726,11 @@ var PptxHandlerRuntime10 = class extends PptxHandlerRuntime9 {
|
|
|
49660
49726
|
style.styleId = parseInt(String(styleNode["@_val"]));
|
|
49661
49727
|
hasStyle = true;
|
|
49662
49728
|
}
|
|
49729
|
+
const chartAreaFill2 = this.parseChartContainerFill(chartSpace);
|
|
49730
|
+
if (chartAreaFill2) {
|
|
49731
|
+
style.chartAreaFill = chartAreaFill2;
|
|
49732
|
+
hasStyle = true;
|
|
49733
|
+
}
|
|
49663
49734
|
if (chartRoot) {
|
|
49664
49735
|
const legend = this.xmlLookupService.getChildByLocalName(chartRoot, "legend");
|
|
49665
49736
|
if (legend) {
|
|
@@ -49685,6 +49756,11 @@ var PptxHandlerRuntime10 = class extends PptxHandlerRuntime9 {
|
|
|
49685
49756
|
}
|
|
49686
49757
|
const plotArea = this.xmlLookupService.getChildByLocalName(chartRoot, "plotArea");
|
|
49687
49758
|
if (plotArea) {
|
|
49759
|
+
const plotAreaFill2 = this.parseChartContainerFill(plotArea);
|
|
49760
|
+
if (plotAreaFill2) {
|
|
49761
|
+
style.plotAreaFill = plotAreaFill2;
|
|
49762
|
+
hasStyle = true;
|
|
49763
|
+
}
|
|
49688
49764
|
const valAx = this.xmlLookupService.getChildByLocalName(plotArea, "valAx");
|
|
49689
49765
|
if (valAx) {
|
|
49690
49766
|
const majorGridlines = this.xmlLookupService.getChildByLocalName(valAx, "majorGridlines");
|
|
@@ -51018,32 +51094,32 @@ var PptxHandlerRuntime15 = class _PptxHandlerRuntime3 extends PptxHandlerRuntime
|
|
|
51018
51094
|
* Build a p:grpSp XML object from a GroupPptxElement.
|
|
51019
51095
|
* Children are stored with coordinates relative to the group origin.
|
|
51020
51096
|
*/
|
|
51021
|
-
buildGroupShapeXml(
|
|
51022
|
-
if (
|
|
51023
|
-
return
|
|
51097
|
+
buildGroupShapeXml(group2) {
|
|
51098
|
+
if (group2.rawXml && group2.children.length === 0) {
|
|
51099
|
+
return group2.rawXml;
|
|
51024
51100
|
}
|
|
51025
51101
|
const EMU = _PptxHandlerRuntime3.EMU_PER_PX;
|
|
51026
|
-
const offX = Math.round(
|
|
51027
|
-
const offY = Math.round(
|
|
51028
|
-
const extCx = Math.round(
|
|
51029
|
-
const extCy = Math.round(
|
|
51102
|
+
const offX = Math.round(group2.x * EMU);
|
|
51103
|
+
const offY = Math.round(group2.y * EMU);
|
|
51104
|
+
const extCx = Math.round(group2.width * EMU);
|
|
51105
|
+
const extCy = Math.round(group2.height * EMU);
|
|
51030
51106
|
const chOffX = 0;
|
|
51031
51107
|
const chOffY = 0;
|
|
51032
51108
|
const chExtCx = extCx;
|
|
51033
51109
|
const chExtCy = extCy;
|
|
51034
51110
|
const xfrmAttrs = {};
|
|
51035
|
-
if (typeof
|
|
51036
|
-
xfrmAttrs["@_rot"] = String(Math.round(
|
|
51111
|
+
if (typeof group2.rotation === "number" && group2.rotation !== 0) {
|
|
51112
|
+
xfrmAttrs["@_rot"] = String(Math.round(group2.rotation * 6e4));
|
|
51037
51113
|
}
|
|
51038
|
-
if (
|
|
51114
|
+
if (group2.flipHorizontal) {
|
|
51039
51115
|
xfrmAttrs["@_flipH"] = "1";
|
|
51040
51116
|
}
|
|
51041
|
-
if (
|
|
51117
|
+
if (group2.flipVertical) {
|
|
51042
51118
|
xfrmAttrs["@_flipV"] = "1";
|
|
51043
51119
|
}
|
|
51044
51120
|
const grpXml = {
|
|
51045
51121
|
"p:nvGrpSpPr": {
|
|
51046
|
-
"p:cNvPr": { "@_id": "0", "@_name":
|
|
51122
|
+
"p:cNvPr": { "@_id": "0", "@_name": group2.id },
|
|
51047
51123
|
"p:cNvGrpSpPr": {},
|
|
51048
51124
|
"p:nvPr": {}
|
|
51049
51125
|
},
|
|
@@ -51072,7 +51148,7 @@ var PptxHandlerRuntime15 = class _PptxHandlerRuntime3 extends PptxHandlerRuntime
|
|
|
51072
51148
|
const childShapes = [];
|
|
51073
51149
|
const childPics = [];
|
|
51074
51150
|
const childConnectors = [];
|
|
51075
|
-
for (const child202 of
|
|
51151
|
+
for (const child202 of group2.children) {
|
|
51076
51152
|
let xml = child202.rawXml;
|
|
51077
51153
|
if (!xml && (child202.type === "text" || child202.type === "shape")) {
|
|
51078
51154
|
xml = this.createElementXml(child202);
|
|
@@ -58594,12 +58670,12 @@ var PptxHandlerRuntime37 = class _PptxHandlerRuntime13 extends PptxHandlerRuntim
|
|
|
58594
58670
|
updateSummaryFallback(shape, el, targets, relationships) {
|
|
58595
58671
|
const block = this.alternateContentBlockByRawXml.get(shape);
|
|
58596
58672
|
const fallback = block?.rawAc["mc:Fallback"];
|
|
58597
|
-
const
|
|
58598
|
-
if (!
|
|
58673
|
+
const group2 = fallback?.["p:grpSp"];
|
|
58674
|
+
if (!group2) {
|
|
58599
58675
|
return;
|
|
58600
58676
|
}
|
|
58601
|
-
const existing = this.ensureArray(
|
|
58602
|
-
|
|
58677
|
+
const existing = this.ensureArray(group2["p:pic"]);
|
|
58678
|
+
group2["p:pic"] = targets.map((target, index) => {
|
|
58603
58679
|
const tile = this.summaryTileElement(el, target, index);
|
|
58604
58680
|
const picture = existing[index] ?? this.buildZoomFallbackPicture(tile, relationships[index]);
|
|
58605
58681
|
this.applyZoomTransform(picture["p:spPr"] ??= {}, tile);
|
|
@@ -59985,7 +60061,7 @@ var PptxHandlerRuntime42 = class extends PptxHandlerRuntime41 {
|
|
|
59985
60061
|
*/
|
|
59986
60062
|
buildFontSchemeObject(schemeName, fontMap, majorScripts, minorScripts) {
|
|
59987
60063
|
const buildFontGroup = (latinKey, eaKey, csKey, scripts) => {
|
|
59988
|
-
const
|
|
60064
|
+
const group2 = {
|
|
59989
60065
|
"a:latin": { "@_typeface": fontMap[latinKey] || "Calibri" },
|
|
59990
60066
|
"a:ea": { "@_typeface": fontMap[eaKey] || "" },
|
|
59991
60067
|
"a:cs": { "@_typeface": fontMap[csKey] || "" }
|
|
@@ -59996,9 +60072,9 @@ var PptxHandlerRuntime42 = class extends PptxHandlerRuntime41 {
|
|
|
59996
60072
|
"@_script": script,
|
|
59997
60073
|
"@_typeface": scripts[script]
|
|
59998
60074
|
}));
|
|
59999
|
-
|
|
60075
|
+
group2["a:font"] = fontEntries.length === 1 ? fontEntries[0] : fontEntries;
|
|
60000
60076
|
}
|
|
60001
|
-
return
|
|
60077
|
+
return group2;
|
|
60002
60078
|
};
|
|
60003
60079
|
return {
|
|
60004
60080
|
"@_name": schemeName,
|
|
@@ -64631,7 +64707,7 @@ function parseEmuInt2(value) {
|
|
|
64631
64707
|
return parsed;
|
|
64632
64708
|
}
|
|
64633
64709
|
var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntime66 {
|
|
64634
|
-
async parseGroupShape(
|
|
64710
|
+
async parseGroupShape(group2, baseId, slidePath, rawXmlStr, depth = 0) {
|
|
64635
64711
|
if (depth > MAX_GROUP_DEPTH) {
|
|
64636
64712
|
this.compatibilityService.reportWarning({
|
|
64637
64713
|
code: "group-depth-exceeded",
|
|
@@ -64643,7 +64719,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64643
64719
|
});
|
|
64644
64720
|
return [];
|
|
64645
64721
|
}
|
|
64646
|
-
const grpSpPr =
|
|
64722
|
+
const grpSpPr = group2["p:grpSpPr"];
|
|
64647
64723
|
const xfrm = grpSpPr?.["a:xfrm"];
|
|
64648
64724
|
const EMU_PX = _PptxHandlerRuntime30.EMU_PER_PX;
|
|
64649
64725
|
let parentX = 0, parentY = 0, parentW = 0, parentH = 0;
|
|
@@ -64708,16 +64784,16 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64708
64784
|
}
|
|
64709
64785
|
return el;
|
|
64710
64786
|
};
|
|
64711
|
-
this.unwrapAlternateContent(
|
|
64787
|
+
this.unwrapAlternateContent(group2);
|
|
64712
64788
|
const childOrder3 = this.extractSpTreeChildOrder(
|
|
64713
64789
|
void 0,
|
|
64714
|
-
|
|
64790
|
+
group2,
|
|
64715
64791
|
"p:grpSp"
|
|
64716
64792
|
);
|
|
64717
64793
|
const elements2 = [];
|
|
64718
64794
|
for (const entry2 of childOrder3) {
|
|
64719
64795
|
if (entry2.tag === "p:grpSp") {
|
|
64720
|
-
const subArr = this.ensureArray(
|
|
64796
|
+
const subArr = this.ensureArray(group2["p:grpSp"]);
|
|
64721
64797
|
const subGroup = subArr[entry2.indexInType];
|
|
64722
64798
|
if (!subGroup) {
|
|
64723
64799
|
continue;
|
|
@@ -64735,12 +64811,12 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64735
64811
|
const element = await this.parseSpTreeChild(
|
|
64736
64812
|
entry2.tag,
|
|
64737
64813
|
entry2.indexInType,
|
|
64738
|
-
|
|
64814
|
+
group2,
|
|
64739
64815
|
slidePath,
|
|
64740
64816
|
`${baseId}-`
|
|
64741
64817
|
);
|
|
64742
64818
|
if (element) {
|
|
64743
|
-
const childNode2 = this.ensureArray(
|
|
64819
|
+
const childNode2 = this.ensureArray(group2[entry2.tag])[entry2.indexInType];
|
|
64744
64820
|
applyRawChildGeometry(element, childNode2);
|
|
64745
64821
|
transformElement(element);
|
|
64746
64822
|
elements2.push(element);
|
|
@@ -64753,8 +64829,8 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64753
64829
|
* Parse a p:grpSp element into a GroupPptxElement with children.
|
|
64754
64830
|
* Children have coordinates relative to the group's position.
|
|
64755
64831
|
*/
|
|
64756
|
-
async parseGroupShapeAsGroup(
|
|
64757
|
-
const grpSpPr =
|
|
64832
|
+
async parseGroupShapeAsGroup(group2, baseId, slidePath, rawXmlStr) {
|
|
64833
|
+
const grpSpPr = group2["p:grpSpPr"];
|
|
64758
64834
|
const xfrm = grpSpPr?.["a:xfrm"];
|
|
64759
64835
|
let parentX = 0, parentY = 0, parentW = 0, parentH = 0;
|
|
64760
64836
|
let groupRotation;
|
|
@@ -64780,7 +64856,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64780
64856
|
}
|
|
64781
64857
|
const grpFillStyle = grpSpPr ? this.extractShapeStyle(grpSpPr) : void 0;
|
|
64782
64858
|
const hasGroupFill = grpFillStyle && grpFillStyle.fillMode && grpFillStyle.fillMode !== "none";
|
|
64783
|
-
const children10 = await this.parseGroupShape(
|
|
64859
|
+
const children10 = await this.parseGroupShape(group2, baseId, slidePath, rawXmlStr);
|
|
64784
64860
|
if (children10.length === 0) {
|
|
64785
64861
|
return null;
|
|
64786
64862
|
}
|
|
@@ -64806,7 +64882,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64806
64882
|
child202.x -= parentX;
|
|
64807
64883
|
child202.y -= parentY;
|
|
64808
64884
|
}
|
|
64809
|
-
const grpCNvPr =
|
|
64885
|
+
const grpCNvPr = group2?.["p:nvGrpSpPr"]?.["p:cNvPr"];
|
|
64810
64886
|
const grpSlideRels = this.slideRelsMap.get(slidePath);
|
|
64811
64887
|
const { actionClick: grpActionClick, actionHover: grpActionHover } = this.parseElementActions(
|
|
64812
64888
|
grpCNvPr,
|
|
@@ -64826,7 +64902,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64826
64902
|
flipHorizontal: flipHorizontal || void 0,
|
|
64827
64903
|
flipVertical: flipVertical || void 0,
|
|
64828
64904
|
children: children10,
|
|
64829
|
-
rawXml:
|
|
64905
|
+
rawXml: group2,
|
|
64830
64906
|
actionClick: grpActionClick,
|
|
64831
64907
|
actionHover: grpActionHover,
|
|
64832
64908
|
groupFill: hasGroupFill ? grpFillStyle : void 0
|
|
@@ -66293,12 +66369,12 @@ var PptxHandlerRuntime74 = class extends PptxHandlerRuntime73 {
|
|
|
66293
66369
|
}
|
|
66294
66370
|
} else if (entry2.tag === "p:grpSp") {
|
|
66295
66371
|
const groups = this.ensureArray(spTree["p:grpSp"]);
|
|
66296
|
-
const
|
|
66297
|
-
if (!
|
|
66372
|
+
const group2 = groups[entry2.indexInType];
|
|
66373
|
+
if (!group2) {
|
|
66298
66374
|
continue;
|
|
66299
66375
|
}
|
|
66300
66376
|
const element = await this.parseGroupShapeAsGroup(
|
|
66301
|
-
|
|
66377
|
+
group2,
|
|
66302
66378
|
`master-group-${masterToken}-${entry2.indexInType}`,
|
|
66303
66379
|
masterPath
|
|
66304
66380
|
);
|
|
@@ -66515,12 +66591,12 @@ var PptxHandlerRuntime76 = class extends PptxHandlerRuntime75 {
|
|
|
66515
66591
|
}
|
|
66516
66592
|
} else if (entry2.tag === "p:grpSp") {
|
|
66517
66593
|
const groups = this.ensureArray(spTree["p:grpSp"]);
|
|
66518
|
-
const
|
|
66519
|
-
if (!
|
|
66594
|
+
const group2 = groups[entry2.indexInType];
|
|
66595
|
+
if (!group2) {
|
|
66520
66596
|
continue;
|
|
66521
66597
|
}
|
|
66522
66598
|
const element = await this.parseGroupShapeAsGroup(
|
|
66523
|
-
|
|
66599
|
+
group2,
|
|
66524
66600
|
`layout-group-${layoutToken}-${entry2.indexInType}`,
|
|
66525
66601
|
layoutPath
|
|
66526
66602
|
);
|
|
@@ -68397,16 +68473,16 @@ function extractDrawingShapeTextStyle(txBody, deps) {
|
|
|
68397
68473
|
}
|
|
68398
68474
|
return { fontSize, fontColor };
|
|
68399
68475
|
}
|
|
68400
|
-
function resolveSmartArtTextStyles(paragraphs,
|
|
68476
|
+
function resolveSmartArtTextStyles(paragraphs, resolve2) {
|
|
68401
68477
|
for (const paragraph of paragraphs ?? []) {
|
|
68402
68478
|
if (paragraph.endParaRPr) {
|
|
68403
|
-
paragraph.endParaStyle =
|
|
68479
|
+
paragraph.endParaStyle = resolve2(paragraph.endParaRPr);
|
|
68404
68480
|
}
|
|
68405
68481
|
for (const item of paragraph.items) {
|
|
68406
68482
|
if (item.kind === "run" && item.run.rPr) {
|
|
68407
|
-
item.run.style =
|
|
68483
|
+
item.run.style = resolve2(item.run.rPr);
|
|
68408
68484
|
} else if ((item.kind === "field" || item.kind === "break") && item.rPr) {
|
|
68409
|
-
item.style =
|
|
68485
|
+
item.style = resolve2(item.rPr);
|
|
68410
68486
|
}
|
|
68411
68487
|
}
|
|
68412
68488
|
}
|
|
@@ -69915,6 +69991,20 @@ var PptxHandlerRuntime90 = class extends PptxHandlerRuntime89 {
|
|
|
69915
69991
|
const hasBlanks = expanded.some((value) => value === null);
|
|
69916
69992
|
const values = hasBlanks ? expanded.map((value) => value ?? 0) : this.extractChartPointValues(valNode, true).map((value) => Number.parseFloat(value)).filter((value) => Number.isFinite(value));
|
|
69917
69993
|
const blanks = hasBlanks ? expanded.map((value) => value === null) : void 0;
|
|
69994
|
+
const seriesNumberFormat = String(
|
|
69995
|
+
this.xmlLookupService.getChildByLocalName(
|
|
69996
|
+
this.xmlLookupService.getChildByLocalName(seriesNode, "dLbls"),
|
|
69997
|
+
"numFmt"
|
|
69998
|
+
)?.["@_formatCode"] ?? ""
|
|
69999
|
+
).trim() || String(
|
|
70000
|
+
this.xmlLookupService.getScalarChildByLocalName(
|
|
70001
|
+
this.xmlLookupService.getChildByLocalName(
|
|
70002
|
+
this.xmlLookupService.getChildByLocalName(valNode, "numRef") ?? valNode,
|
|
70003
|
+
"numCache"
|
|
70004
|
+
),
|
|
70005
|
+
"formatCode"
|
|
70006
|
+
) ?? ""
|
|
70007
|
+
).trim();
|
|
69918
70008
|
const seriesShapeProperties = this.xmlLookupService.getChildByLocalName(seriesNode, "spPr");
|
|
69919
70009
|
const seriesColor23 = this.parseColor(
|
|
69920
70010
|
this.xmlLookupService.getChildByLocalName(seriesShapeProperties, "solidFill")
|
|
@@ -69946,6 +70036,7 @@ var PptxHandlerRuntime90 = class extends PptxHandlerRuntime89 {
|
|
|
69946
70036
|
name: seriesName.trim().length > 0 ? seriesName : `Series ${seriesIndex + 1}`,
|
|
69947
70037
|
values: fallbackValues,
|
|
69948
70038
|
...blanks ? { blanks } : {},
|
|
70039
|
+
...seriesNumberFormat ? { numberFormat: seriesNumberFormat } : {},
|
|
69949
70040
|
color: seriesColor23,
|
|
69950
70041
|
...trendlines.length > 0 ? { trendlines } : {},
|
|
69951
70042
|
...errBars.length > 0 ? { errBars } : {},
|
|
@@ -79972,9 +80063,9 @@ var SlideMetadataRenderer = class {
|
|
|
79972
80063
|
const clickGroups = this.groupByClickSequence(items);
|
|
79973
80064
|
const lines = ["### Animations"];
|
|
79974
80065
|
for (let gi = 0; gi < clickGroups.length; gi += 1) {
|
|
79975
|
-
const
|
|
80066
|
+
const group2 = clickGroups[gi];
|
|
79976
80067
|
lines.push(`- **Click ${gi + 1}:**`);
|
|
79977
|
-
for (const anim of
|
|
80068
|
+
for (const anim of group2) {
|
|
79978
80069
|
lines.push(` - ${this.summariseAnimation(anim)}`);
|
|
79979
80070
|
}
|
|
79980
80071
|
}
|
|
@@ -80870,7 +80961,7 @@ var TextSegmentRenderer = class {
|
|
|
80870
80961
|
return "";
|
|
80871
80962
|
}
|
|
80872
80963
|
const paragraphs = this.groupParagraphs(segments);
|
|
80873
|
-
const renderedParagraphs = paragraphs.map((
|
|
80964
|
+
const renderedParagraphs = paragraphs.map((group2) => this.renderParagraph(group2, options)).filter((paragraph) => paragraph.text.length > 0);
|
|
80874
80965
|
if (renderedParagraphs.length === 0) {
|
|
80875
80966
|
return "";
|
|
80876
80967
|
}
|
|
@@ -80902,7 +80993,7 @@ var TextSegmentRenderer = class {
|
|
|
80902
80993
|
plainText(segments, options = {}) {
|
|
80903
80994
|
const paragraphs = this.groupParagraphs(segments);
|
|
80904
80995
|
const rendered = paragraphs.map(
|
|
80905
|
-
(
|
|
80996
|
+
(group2) => group2.segments.map((segment) => {
|
|
80906
80997
|
const base = this.resolvePlainSegmentText(segment, options);
|
|
80907
80998
|
if (segment.rubyText) {
|
|
80908
80999
|
return `${base}(${segment.rubyText})`;
|
|
@@ -80932,8 +81023,8 @@ var TextSegmentRenderer = class {
|
|
|
80932
81023
|
}
|
|
80933
81024
|
return groups;
|
|
80934
81025
|
}
|
|
80935
|
-
renderParagraph(
|
|
80936
|
-
let rawText =
|
|
81026
|
+
renderParagraph(group2, options) {
|
|
81027
|
+
let rawText = group2.segments.map((segment) => this.renderSegment(segment, options)).join("");
|
|
80937
81028
|
if (options.htmlFormatting) {
|
|
80938
81029
|
rawText = rawText.replace(/<\/strong><strong>/g, "").replace(/<\/em><em>/g, "").replace(/<\/s><s>/g, "");
|
|
80939
81030
|
} else {
|
|
@@ -80947,10 +81038,10 @@ var TextSegmentRenderer = class {
|
|
|
80947
81038
|
return { text: "", isListItem: false };
|
|
80948
81039
|
}
|
|
80949
81040
|
if (!options.disableLists && !options.inlineMode) {
|
|
80950
|
-
const bullet =
|
|
81041
|
+
const bullet = group2.segments.find((segment) => Boolean(segment.bulletInfo))?.bulletInfo;
|
|
80951
81042
|
if (bullet && !bullet.none) {
|
|
80952
|
-
const level = resolveListLevel(bullet,
|
|
80953
|
-
const marker = resolveListMarker(bullet,
|
|
81043
|
+
const level = resolveListLevel(bullet, group2.index, options.paragraphIndents);
|
|
81044
|
+
const marker = resolveListMarker(bullet, group2.index);
|
|
80954
81045
|
const alreadyNumbered = bullet.autoNumType && /^\d+[.)]\s/.test(rawText);
|
|
80955
81046
|
const prefix = alreadyNumbered ? "" : `${marker} `;
|
|
80956
81047
|
if (options.htmlFormatting) {
|
|
@@ -80966,7 +81057,7 @@ var TextSegmentRenderer = class {
|
|
|
80966
81057
|
};
|
|
80967
81058
|
}
|
|
80968
81059
|
}
|
|
80969
|
-
const align =
|
|
81060
|
+
const align = group2.segments[0]?.style.align;
|
|
80970
81061
|
if (!options.disableAlignment && !options.inlineMode && align && align !== "left") {
|
|
80971
81062
|
return {
|
|
80972
81063
|
text: `<p align="${align}">${rawText}</p>`,
|
|
@@ -83815,8 +83906,8 @@ function buildStrokeOutline(element) {
|
|
|
83815
83906
|
function suppressesCssBorder(element) {
|
|
83816
83907
|
return buildStrokeOutline(element) !== void 0;
|
|
83817
83908
|
}
|
|
83818
|
-
function getGroupChildParentFill(
|
|
83819
|
-
return
|
|
83909
|
+
function getGroupChildParentFill(group2) {
|
|
83910
|
+
return group2.type === "group" ? group2.groupFill : void 0;
|
|
83820
83911
|
}
|
|
83821
83912
|
function resolveGroupChildFill(child22, parentGroupFill) {
|
|
83822
83913
|
if (!parentGroupFill || !hasShapeProperties(child22) || child22.shapeStyle?.fillMode !== "group") {
|
|
@@ -86288,11 +86379,11 @@ var LatexParser = class {
|
|
|
86288
86379
|
return tryParseScripts(this, base);
|
|
86289
86380
|
}
|
|
86290
86381
|
if (tok.type === "group_start") {
|
|
86291
|
-
const
|
|
86292
|
-
if (
|
|
86382
|
+
const group2 = this.parseGroup();
|
|
86383
|
+
if (group2.length === 0) {
|
|
86293
86384
|
return null;
|
|
86294
86385
|
}
|
|
86295
|
-
const base =
|
|
86386
|
+
const base = group2.length === 1 ? group2[0] : this.wrapE(group2);
|
|
86296
86387
|
return tryParseScripts(this, base);
|
|
86297
86388
|
}
|
|
86298
86389
|
if (tok.type === "command") {
|
|
@@ -86700,6 +86791,273 @@ function latexToMathMl(source) {
|
|
|
86700
86791
|
function compileEquationTemplateMathMl() {
|
|
86701
86792
|
return EQUATION_TEMPLATES.map((tmpl) => latexToMathMl(tmpl.latex));
|
|
86702
86793
|
}
|
|
86794
|
+
var NICE_STEPS = [1, 2, 2.5, 5, 10];
|
|
86795
|
+
var HEADROOM = 0.05;
|
|
86796
|
+
var ZERO_ANCHOR_RATIO = 5 / 6;
|
|
86797
|
+
function niceAxisStep(value) {
|
|
86798
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
86799
|
+
return 1;
|
|
86800
|
+
}
|
|
86801
|
+
const exponent = Math.floor(Math.log10(value));
|
|
86802
|
+
const power = 10 ** exponent;
|
|
86803
|
+
const mantissa = value / power;
|
|
86804
|
+
const step = NICE_STEPS.find((candidate) => mantissa <= candidate + 1e-12) ?? 10;
|
|
86805
|
+
return step * power;
|
|
86806
|
+
}
|
|
86807
|
+
function snap(value, unit, direction) {
|
|
86808
|
+
const scaled = value / unit;
|
|
86809
|
+
const rounded = direction === "up" ? Math.ceil(scaled - 1e-9) : Math.floor(scaled + 1e-9);
|
|
86810
|
+
return rounded * unit;
|
|
86811
|
+
}
|
|
86812
|
+
function niceValueAxisBounds(dataMin, dataMax, targetIntervals = 4) {
|
|
86813
|
+
if (!Number.isFinite(dataMin) || !Number.isFinite(dataMax)) {
|
|
86814
|
+
return { min: 0, max: 1, majorUnit: 0.5 };
|
|
86815
|
+
}
|
|
86816
|
+
const low = Math.min(dataMin, dataMax);
|
|
86817
|
+
const high = Math.max(dataMin, dataMax);
|
|
86818
|
+
const intervals = Math.max(1, Math.round(targetIntervals));
|
|
86819
|
+
if (low === high) {
|
|
86820
|
+
if (low === 0) {
|
|
86821
|
+
return { min: 0, max: 1, majorUnit: 1 / intervals };
|
|
86822
|
+
}
|
|
86823
|
+
const unit2 = niceAxisStep(Math.abs(low) / intervals);
|
|
86824
|
+
return low > 0 ? { min: 0, max: snap(low, unit2, "up") || unit2, majorUnit: unit2 } : { min: snap(low, unit2, "down"), max: 0, majorUnit: unit2 };
|
|
86825
|
+
}
|
|
86826
|
+
const dataSpan = high - low;
|
|
86827
|
+
const padding = dataSpan * HEADROOM;
|
|
86828
|
+
let paddedMin;
|
|
86829
|
+
let paddedMax;
|
|
86830
|
+
if (low >= 0) {
|
|
86831
|
+
paddedMin = low < high * ZERO_ANCHOR_RATIO ? 0 : low - padding;
|
|
86832
|
+
paddedMax = high + padding;
|
|
86833
|
+
} else if (high <= 0) {
|
|
86834
|
+
paddedMax = high > low * ZERO_ANCHOR_RATIO ? 0 : high + padding;
|
|
86835
|
+
paddedMin = low - padding;
|
|
86836
|
+
} else {
|
|
86837
|
+
paddedMin = low - padding;
|
|
86838
|
+
paddedMax = high + padding;
|
|
86839
|
+
}
|
|
86840
|
+
const unit = niceAxisStep((paddedMax - paddedMin) / intervals);
|
|
86841
|
+
const min = paddedMin === 0 ? 0 : snap(paddedMin, unit, "down");
|
|
86842
|
+
let max = paddedMax === 0 ? 0 : snap(paddedMax, unit, "up");
|
|
86843
|
+
if (max <= min) {
|
|
86844
|
+
max = min + unit;
|
|
86845
|
+
}
|
|
86846
|
+
return { min, max, majorUnit: unit };
|
|
86847
|
+
}
|
|
86848
|
+
var GENERAL = /* @__PURE__ */ new Set(["", "general", "@"]);
|
|
86849
|
+
function sections(code) {
|
|
86850
|
+
const out = [];
|
|
86851
|
+
let current = "";
|
|
86852
|
+
let inQuotes = false;
|
|
86853
|
+
for (let i = 0; i < code.length; i += 1) {
|
|
86854
|
+
const ch = code[i];
|
|
86855
|
+
if (ch === '"') {
|
|
86856
|
+
inQuotes = !inQuotes;
|
|
86857
|
+
current += ch;
|
|
86858
|
+
continue;
|
|
86859
|
+
}
|
|
86860
|
+
if (ch === "\\") {
|
|
86861
|
+
current += ch + (code[i + 1] ?? "");
|
|
86862
|
+
i += 1;
|
|
86863
|
+
continue;
|
|
86864
|
+
}
|
|
86865
|
+
if (ch === ";" && !inQuotes) {
|
|
86866
|
+
out.push(current);
|
|
86867
|
+
current = "";
|
|
86868
|
+
continue;
|
|
86869
|
+
}
|
|
86870
|
+
current += ch;
|
|
86871
|
+
}
|
|
86872
|
+
out.push(current);
|
|
86873
|
+
return out;
|
|
86874
|
+
}
|
|
86875
|
+
function sectionFor(value, parts) {
|
|
86876
|
+
if (parts.length === 1) {
|
|
86877
|
+
return { code: parts[0], forcePositive: false };
|
|
86878
|
+
}
|
|
86879
|
+
if (value < 0 && parts[1] !== void 0) {
|
|
86880
|
+
return { code: parts[1], forcePositive: true };
|
|
86881
|
+
}
|
|
86882
|
+
if (value === 0 && parts[2] !== void 0) {
|
|
86883
|
+
return { code: parts[2], forcePositive: false };
|
|
86884
|
+
}
|
|
86885
|
+
return { code: parts[0], forcePositive: false };
|
|
86886
|
+
}
|
|
86887
|
+
var PLACEHOLDER = /[0#?]/u;
|
|
86888
|
+
function parsePattern(code) {
|
|
86889
|
+
let scale = 1;
|
|
86890
|
+
let scientific = false;
|
|
86891
|
+
const chars = [];
|
|
86892
|
+
let inQuotes = false;
|
|
86893
|
+
for (let i = 0; i < code.length; i += 1) {
|
|
86894
|
+
const ch = code[i];
|
|
86895
|
+
if (ch === '"') {
|
|
86896
|
+
inQuotes = !inQuotes;
|
|
86897
|
+
continue;
|
|
86898
|
+
}
|
|
86899
|
+
if (inQuotes) {
|
|
86900
|
+
chars.push({ ch, literal: true });
|
|
86901
|
+
continue;
|
|
86902
|
+
}
|
|
86903
|
+
if (ch === "\\" || ch === "*" || ch === "_") {
|
|
86904
|
+
const next = code[i + 1];
|
|
86905
|
+
i += 1;
|
|
86906
|
+
if (ch === "\\" && next !== void 0) {
|
|
86907
|
+
chars.push({ ch: next, literal: true });
|
|
86908
|
+
}
|
|
86909
|
+
continue;
|
|
86910
|
+
}
|
|
86911
|
+
if (ch === "%") {
|
|
86912
|
+
scale *= 100;
|
|
86913
|
+
chars.push({ ch, literal: true });
|
|
86914
|
+
continue;
|
|
86915
|
+
}
|
|
86916
|
+
if (ch === "E" && (code[i + 1] === "+" || code[i + 1] === "-")) {
|
|
86917
|
+
scientific = true;
|
|
86918
|
+
chars.push({ ch: "E", literal: false });
|
|
86919
|
+
i += 1;
|
|
86920
|
+
continue;
|
|
86921
|
+
}
|
|
86922
|
+
if (ch === "[") {
|
|
86923
|
+
const close = code.indexOf("]", i);
|
|
86924
|
+
i = close === -1 ? code.length : close;
|
|
86925
|
+
continue;
|
|
86926
|
+
}
|
|
86927
|
+
chars.push({ ch, literal: false });
|
|
86928
|
+
}
|
|
86929
|
+
const firstDigit = chars.findIndex((c) => !c.literal && PLACEHOLDER.test(c.ch));
|
|
86930
|
+
if (firstDigit === -1) {
|
|
86931
|
+
return void 0;
|
|
86932
|
+
}
|
|
86933
|
+
let lastDigit = firstDigit;
|
|
86934
|
+
for (let i = chars.length - 1; i >= firstDigit; i -= 1) {
|
|
86935
|
+
const c = chars[i];
|
|
86936
|
+
if (!c.literal && (PLACEHOLDER.test(c.ch) || c.ch === "." || c.ch === "," || c.ch === "E")) {
|
|
86937
|
+
lastDigit = i;
|
|
86938
|
+
break;
|
|
86939
|
+
}
|
|
86940
|
+
}
|
|
86941
|
+
const numeric = chars.slice(firstDigit, lastDigit + 1);
|
|
86942
|
+
const prefix = chars.slice(0, firstDigit).map((c) => c.ch).join("");
|
|
86943
|
+
const suffix = chars.slice(lastDigit + 1).map((c) => c.ch).join("");
|
|
86944
|
+
let grouped = false;
|
|
86945
|
+
let intDigits = 0;
|
|
86946
|
+
let required = 0;
|
|
86947
|
+
let optional = 0;
|
|
86948
|
+
let afterPoint = false;
|
|
86949
|
+
let inExponent = false;
|
|
86950
|
+
for (let i = 0; i < numeric.length; i += 1) {
|
|
86951
|
+
const { ch, literal } = numeric[i];
|
|
86952
|
+
if (literal) {
|
|
86953
|
+
continue;
|
|
86954
|
+
}
|
|
86955
|
+
if (ch === "E") {
|
|
86956
|
+
inExponent = true;
|
|
86957
|
+
continue;
|
|
86958
|
+
}
|
|
86959
|
+
if (inExponent) {
|
|
86960
|
+
continue;
|
|
86961
|
+
}
|
|
86962
|
+
if (ch === ".") {
|
|
86963
|
+
afterPoint = true;
|
|
86964
|
+
continue;
|
|
86965
|
+
}
|
|
86966
|
+
if (ch === ",") {
|
|
86967
|
+
const next = numeric.slice(i + 1).find((c) => !c.literal);
|
|
86968
|
+
if (!next || next.ch === "." || !PLACEHOLDER.test(next.ch)) {
|
|
86969
|
+
scale /= 1e3;
|
|
86970
|
+
} else {
|
|
86971
|
+
grouped = true;
|
|
86972
|
+
}
|
|
86973
|
+
continue;
|
|
86974
|
+
}
|
|
86975
|
+
if (!PLACEHOLDER.test(ch)) {
|
|
86976
|
+
continue;
|
|
86977
|
+
}
|
|
86978
|
+
if (afterPoint) {
|
|
86979
|
+
if (ch === "0") {
|
|
86980
|
+
required += 1;
|
|
86981
|
+
} else {
|
|
86982
|
+
optional += 1;
|
|
86983
|
+
}
|
|
86984
|
+
} else if (ch === "0") {
|
|
86985
|
+
intDigits += 1;
|
|
86986
|
+
}
|
|
86987
|
+
}
|
|
86988
|
+
return {
|
|
86989
|
+
prefix,
|
|
86990
|
+
suffix,
|
|
86991
|
+
intDigits,
|
|
86992
|
+
decimals: { required, optional },
|
|
86993
|
+
grouped,
|
|
86994
|
+
scale,
|
|
86995
|
+
scientific
|
|
86996
|
+
};
|
|
86997
|
+
}
|
|
86998
|
+
function group(intPart) {
|
|
86999
|
+
return intPart.replace(/\B(?=(\d{3})+(?!\d))/gu, ",");
|
|
87000
|
+
}
|
|
87001
|
+
function applyPattern(value, pattern, forcePositive) {
|
|
87002
|
+
const scaled = value * pattern.scale;
|
|
87003
|
+
const magnitude = forcePositive ? Math.abs(scaled) : scaled;
|
|
87004
|
+
if (pattern.scientific) {
|
|
87005
|
+
const digits = pattern.decimals.required + pattern.decimals.optional;
|
|
87006
|
+
const exponential = magnitude.toExponential(digits);
|
|
87007
|
+
const [mantissa, exponent] = exponential.split("e");
|
|
87008
|
+
const sign = exponent.startsWith("-") ? "-" : "+";
|
|
87009
|
+
const power = Math.abs(Number(exponent)).toString().padStart(2, "0");
|
|
87010
|
+
return `${pattern.prefix}${mantissa}E${sign}${power}${pattern.suffix}`;
|
|
87011
|
+
}
|
|
87012
|
+
const maxDecimals = pattern.decimals.required + pattern.decimals.optional;
|
|
87013
|
+
let body = magnitude.toFixed(maxDecimals);
|
|
87014
|
+
if (pattern.decimals.optional > 0) {
|
|
87015
|
+
body = body.replace(/(\.\d*?)0+$/u, "$1").replace(/\.$/u, "");
|
|
87016
|
+
const [, frac = ""] = body.split(".");
|
|
87017
|
+
if (frac.length < pattern.decimals.required) {
|
|
87018
|
+
body = Number(body).toFixed(pattern.decimals.required);
|
|
87019
|
+
}
|
|
87020
|
+
}
|
|
87021
|
+
const [rawIntPart, fracPart] = body.split(".");
|
|
87022
|
+
let intPart = rawIntPart;
|
|
87023
|
+
const negative = intPart.startsWith("-");
|
|
87024
|
+
if (negative) {
|
|
87025
|
+
intPart = intPart.slice(1);
|
|
87026
|
+
}
|
|
87027
|
+
if (intPart.length < pattern.intDigits) {
|
|
87028
|
+
intPart = intPart.padStart(pattern.intDigits, "0");
|
|
87029
|
+
}
|
|
87030
|
+
if (pattern.intDigits === 0 && intPart === "0" && fracPart !== void 0) {
|
|
87031
|
+
intPart = "";
|
|
87032
|
+
}
|
|
87033
|
+
if (pattern.grouped) {
|
|
87034
|
+
intPart = group(intPart);
|
|
87035
|
+
}
|
|
87036
|
+
const number = fracPart === void 0 ? intPart : `${intPart}.${fracPart}`;
|
|
87037
|
+
return `${negative ? "-" : ""}${pattern.prefix}${number}${pattern.suffix}`;
|
|
87038
|
+
}
|
|
87039
|
+
function formatChartNumber(value, formatCode) {
|
|
87040
|
+
if (!Number.isFinite(value)) {
|
|
87041
|
+
return void 0;
|
|
87042
|
+
}
|
|
87043
|
+
const code = (formatCode ?? "").trim();
|
|
87044
|
+
if (GENERAL.has(code.toLowerCase())) {
|
|
87045
|
+
return void 0;
|
|
87046
|
+
}
|
|
87047
|
+
if (/(?:^|[^\\"])(?:yy|mm?m|dd?|hh|ss)/iu.test(code) && !/[0#?]/u.test(code)) {
|
|
87048
|
+
return void 0;
|
|
87049
|
+
}
|
|
87050
|
+
const { code: section, forcePositive } = sectionFor(value, sections(code));
|
|
87051
|
+
const pattern = parsePattern(section);
|
|
87052
|
+
if (!pattern) {
|
|
87053
|
+
return void 0;
|
|
87054
|
+
}
|
|
87055
|
+
try {
|
|
87056
|
+
return applyPattern(value, pattern, forcePositive);
|
|
87057
|
+
} catch {
|
|
87058
|
+
return void 0;
|
|
87059
|
+
}
|
|
87060
|
+
}
|
|
86703
87061
|
var ACCENT1 = "#4472C4";
|
|
86704
87062
|
var ACCENT2 = "#ED7D31";
|
|
86705
87063
|
var ACCENT3 = "#A5A5A5";
|
|
@@ -86830,12 +87188,11 @@ function computeValueRange(series) {
|
|
|
86830
87188
|
if (allValues.length === 0) {
|
|
86831
87189
|
return { min: 0, max: 1, span: 1 };
|
|
86832
87190
|
}
|
|
86833
|
-
const
|
|
86834
|
-
|
|
86835
|
-
|
|
86836
|
-
|
|
86837
|
-
|
|
86838
|
-
return { min, max, span };
|
|
87191
|
+
const { min, max, majorUnit } = niceValueAxisBounds(
|
|
87192
|
+
Math.min(...allValues),
|
|
87193
|
+
Math.max(...allValues)
|
|
87194
|
+
);
|
|
87195
|
+
return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
|
|
86839
87196
|
}
|
|
86840
87197
|
function valueToY(val2, range, topY, bottomY) {
|
|
86841
87198
|
const usable = bottomY - topY;
|
|
@@ -86851,7 +87208,11 @@ function valueToY(val2, range, topY, bottomY) {
|
|
|
86851
87208
|
}
|
|
86852
87209
|
return range.reverseOrder ? topY + ratio * usable : bottomY - ratio * usable;
|
|
86853
87210
|
}
|
|
86854
|
-
function formatAxisValue(val2) {
|
|
87211
|
+
function formatAxisValue(val2, formatCode) {
|
|
87212
|
+
const formatted = formatChartNumber(val2, formatCode);
|
|
87213
|
+
if (formatted !== void 0) {
|
|
87214
|
+
return formatted;
|
|
87215
|
+
}
|
|
86855
87216
|
if (Math.abs(val2) >= 1e6) {
|
|
86856
87217
|
return `${(val2 / 1e6).toFixed(1)}M`;
|
|
86857
87218
|
}
|
|
@@ -86907,6 +87268,19 @@ function computeLayout(elementWidth, elementHeight, style, hasAxes, legendPos, o
|
|
|
86907
87268
|
svgHeight
|
|
86908
87269
|
};
|
|
86909
87270
|
}
|
|
87271
|
+
var DEFAULT_CHART_AREA_FILL = "#0f172a11";
|
|
87272
|
+
function resolve(fill, fallback) {
|
|
87273
|
+
if (fill === "none") {
|
|
87274
|
+
return void 0;
|
|
87275
|
+
}
|
|
87276
|
+
return fill ?? fallback;
|
|
87277
|
+
}
|
|
87278
|
+
function chartAreaFill(chartData) {
|
|
87279
|
+
return resolve(chartData?.style?.chartAreaFill, DEFAULT_CHART_AREA_FILL);
|
|
87280
|
+
}
|
|
87281
|
+
function plotAreaFill(chartData) {
|
|
87282
|
+
return resolve(chartData?.style?.plotAreaFill, void 0);
|
|
87283
|
+
}
|
|
86910
87284
|
var LOG_EXPONENT_TOLERANCE = 1e-12;
|
|
86911
87285
|
function computeLogValueRange(series, logBase) {
|
|
86912
87286
|
const allValues = series.flatMap((item) => item.values).filter((value) => value > 0);
|
|
@@ -86935,6 +87309,7 @@ function computeValueRangeForAxis(series, axis) {
|
|
|
86935
87309
|
const validMax = typeof axis?.max === "number" && Number.isFinite(axis.max) && (!logBase || axis.max > 0) ? axis.max : void 0;
|
|
86936
87310
|
const min = validMin ?? automatic.min;
|
|
86937
87311
|
let max = validMax ?? automatic.max;
|
|
87312
|
+
const majorUnit = validMin === void 0 && validMax === void 0 ? automatic.majorUnit : void 0;
|
|
86938
87313
|
if (max <= min) {
|
|
86939
87314
|
max = logBase ? min * logBase : min + 1;
|
|
86940
87315
|
}
|
|
@@ -86943,6 +87318,7 @@ function computeValueRangeForAxis(series, axis) {
|
|
|
86943
87318
|
min,
|
|
86944
87319
|
max,
|
|
86945
87320
|
span: Math.max(span, Number.EPSILON),
|
|
87321
|
+
...majorUnit !== void 0 ? { majorUnit } : {},
|
|
86946
87322
|
...logBase ? { logScale: true, logBase } : {},
|
|
86947
87323
|
...axis?.orientation === "maxMin" ? { reverseOrder: true } : {}
|
|
86948
87324
|
};
|
|
@@ -86982,6 +87358,10 @@ function generateAxisTicks(range, axis, defaultIntervals) {
|
|
|
86982
87358
|
if (explicit.length > 0) {
|
|
86983
87359
|
return explicit;
|
|
86984
87360
|
}
|
|
87361
|
+
const automatic = generateIntervalTicks(range, range.majorUnit ?? 0);
|
|
87362
|
+
if (automatic.length > 0) {
|
|
87363
|
+
return automatic;
|
|
87364
|
+
}
|
|
86985
87365
|
return Array.from(
|
|
86986
87366
|
{ length: defaultIntervals + 1 },
|
|
86987
87367
|
(_, index) => range.min + range.span / defaultIntervals * index
|
|
@@ -87550,7 +87930,7 @@ function formatTick(val2, axis) {
|
|
|
87550
87930
|
if (axis?.displayUnits) {
|
|
87551
87931
|
return formatAxisValueWithUnits(val2, axis);
|
|
87552
87932
|
}
|
|
87553
|
-
return formatAxisValue2(val2);
|
|
87933
|
+
return formatAxisValue2(val2, axis?.numFmt?.formatCode);
|
|
87554
87934
|
}
|
|
87555
87935
|
function buildPrimaryAxis(range, layout, axis, axisX = layout.plotLeft) {
|
|
87556
87936
|
const gridlines = [];
|
|
@@ -87747,7 +88127,11 @@ function hasRicherAxisFeatures(chartData) {
|
|
|
87747
88127
|
return Boolean(
|
|
87748
88128
|
chartData.dataTable || chartData.axes?.some(
|
|
87749
88129
|
(axis) => axis.crosses !== void 0 || axis.crossesAt !== void 0 || axis.crossBetween !== void 0 || axis.axisType === "valAx" && Boolean(
|
|
87750
|
-
axis.logScale || axis.displayUnits ||
|
|
88130
|
+
axis.logScale || axis.displayUnits || // A `c:numFmt` is only honoured on the `buildPrimaryAxis`
|
|
88131
|
+
// path; the fast path has no axis to read it from. The two
|
|
88132
|
+
// agree tick-for-tick when no log scale or display unit is
|
|
88133
|
+
// in play, so routing a formatted axis here costs nothing.
|
|
88134
|
+
axis.numFmt?.formatCode || axis.axPos === "r" || axis.orientation === "maxMin" || axis.majorUnit !== void 0 || axis.minorUnit !== void 0 || axis.minorGridlines || axis.majorTickMark !== void 0 || axis.minorTickMark !== void 0 || axis.tickLblPos !== void 0
|
|
87751
88135
|
)
|
|
87752
88136
|
)
|
|
87753
88137
|
);
|
|
@@ -87857,7 +88241,7 @@ function buildBars(chartData, catCount, layout, primaryRange, secondaryRange, se
|
|
|
87857
88241
|
kind: "text",
|
|
87858
88242
|
x: x + singleBarWidth / 2,
|
|
87859
88243
|
y: val2 >= 0 ? y - 4 : y + h + 10,
|
|
87860
|
-
text: formatAxisValue2(val2),
|
|
88244
|
+
text: formatAxisValue2(val2, series[si].numberFormat),
|
|
87861
88245
|
fontSize: 7,
|
|
87862
88246
|
fill: "#334155",
|
|
87863
88247
|
textAnchor: "middle"
|
|
@@ -87962,7 +88346,7 @@ function pushClusteredStackedLabels(series, sourceIndices2, catCount, layout, ra
|
|
|
87962
88346
|
kind: "text",
|
|
87963
88347
|
x,
|
|
87964
88348
|
y: labelY,
|
|
87965
|
-
text: formatAxisValue2(val2),
|
|
88349
|
+
text: formatAxisValue2(val2, series[si].numberFormat),
|
|
87966
88350
|
fontSize: 7,
|
|
87967
88351
|
fill: "#334155",
|
|
87968
88352
|
textAnchor: "middle"
|
|
@@ -88248,7 +88632,7 @@ function buildLines(chartData, catCount, layout, primaryRange, secondaryRange, s
|
|
|
88248
88632
|
kind: "text",
|
|
88249
88633
|
x: pt.x,
|
|
88250
88634
|
y: pt.y - 7,
|
|
88251
|
-
text: formatAxisValue2(val2),
|
|
88635
|
+
text: formatAxisValue2(val2, series.numberFormat),
|
|
88252
88636
|
fontSize: 7,
|
|
88253
88637
|
fill: "#334155",
|
|
88254
88638
|
textAnchor: "middle"
|
|
@@ -88320,7 +88704,7 @@ function buildAreas(chartData, catCount, layout, range, sourceIndices2, xPositio
|
|
|
88320
88704
|
kind: "text",
|
|
88321
88705
|
x: pt.x,
|
|
88322
88706
|
y: pt.y - 6,
|
|
88323
|
-
text: formatAxisValue2(val2),
|
|
88707
|
+
text: formatAxisValue2(val2, series.numberFormat),
|
|
88324
88708
|
fontSize: 7,
|
|
88325
88709
|
fill: "#334155",
|
|
88326
88710
|
textAnchor: "middle"
|
|
@@ -88365,7 +88749,7 @@ function buildScatter(chartData, layout, range) {
|
|
|
88365
88749
|
kind: "text",
|
|
88366
88750
|
x: dot.cx,
|
|
88367
88751
|
y: dot.cy - 6,
|
|
88368
|
-
text: formatAxisValue2(val2),
|
|
88752
|
+
text: formatAxisValue2(val2, series.numberFormat),
|
|
88369
88753
|
fontSize: 7,
|
|
88370
88754
|
fill: "#334155",
|
|
88371
88755
|
textAnchor: "middle"
|
|
@@ -88412,7 +88796,7 @@ function buildBubbles(chartData, layout, range) {
|
|
|
88412
88796
|
kind: "text",
|
|
88413
88797
|
x: dot.cx,
|
|
88414
88798
|
y: dot.cy - 10,
|
|
88415
|
-
text: formatAxisValue2(val2),
|
|
88799
|
+
text: formatAxisValue2(val2, series.numberFormat),
|
|
88416
88800
|
fontSize: 7,
|
|
88417
88801
|
fill: "#334155",
|
|
88418
88802
|
textAnchor: "middle"
|
|
@@ -88566,18 +88950,18 @@ function buildMultiLevelCategoryLabels(categoryLabels, categoryLevels, sourceInd
|
|
|
88566
88950
|
const bandHeight = Math.max(axis?.fontSize ?? 8, 8) + 4;
|
|
88567
88951
|
return levels.flatMap((level, levelIndex) => {
|
|
88568
88952
|
const values = sourceIndices2.map((sourceIndex) => level[sourceIndex] ?? "");
|
|
88569
|
-
return groupedLabels(values).flatMap((
|
|
88570
|
-
if (!
|
|
88953
|
+
return groupedLabels(values).flatMap((group2) => {
|
|
88954
|
+
if (!group2.text || group2.start % skip !== 0) {
|
|
88571
88955
|
return [];
|
|
88572
88956
|
}
|
|
88573
|
-
const startX = categoryX2(
|
|
88574
|
-
const endX = categoryX2(
|
|
88957
|
+
const startX = categoryX2(group2.start, sourceIndices2.length, layout, spacing);
|
|
88958
|
+
const endX = categoryX2(group2.end, sourceIndices2.length, layout, spacing);
|
|
88575
88959
|
return [
|
|
88576
88960
|
{
|
|
88577
88961
|
kind: "text",
|
|
88578
88962
|
x: (startX + endX) / 2,
|
|
88579
88963
|
y: labelY + direction * (offset + levelIndex * bandHeight),
|
|
88580
|
-
text:
|
|
88964
|
+
text: group2.text,
|
|
88581
88965
|
textAnchor,
|
|
88582
88966
|
...chartAxisTextStyle(axis)
|
|
88583
88967
|
}
|
|
@@ -89822,7 +90206,7 @@ function buildComboViewModel(element, chartData, categoryLabels) {
|
|
|
89822
90206
|
kind: "text",
|
|
89823
90207
|
x: point.x,
|
|
89824
90208
|
y: point.y - 7,
|
|
89825
|
-
text: formatAxisValue2(point.value),
|
|
90209
|
+
text: formatAxisValue2(point.value, series.numberFormat),
|
|
89826
90210
|
fontSize: 7,
|
|
89827
90211
|
fill: "#334155",
|
|
89828
90212
|
textAnchor: "middle"
|
|
@@ -89877,7 +90261,7 @@ function appendBarLabels(series, chartData, layout, catCount, range, sourceIndic
|
|
|
89877
90261
|
kind: "text",
|
|
89878
90262
|
x: xPositions?.[displayIndex] ?? layout.plotLeft + groupWidth * displayIndex + offset + barWidth / 2,
|
|
89879
90263
|
y: value >= 0 ? Math.min(zeroY, valueY) - 4 : Math.max(zeroY, valueY) + 10,
|
|
89880
|
-
text: formatAxisValue2(value),
|
|
90264
|
+
text: formatAxisValue2(value, series.numberFormat),
|
|
89881
90265
|
fontSize: 7,
|
|
89882
90266
|
fill: "#334155",
|
|
89883
90267
|
textAnchor: "middle"
|
|
@@ -90914,7 +91298,7 @@ function isOutsidePosition(position2) {
|
|
|
90914
91298
|
return position2 === "outEnd" || position2 === "bestFit";
|
|
90915
91299
|
}
|
|
90916
91300
|
function buildPieDataLabels(params) {
|
|
90917
|
-
const { slices, values, cx, cy, outerR, position: position2, showLeaderLines } = params;
|
|
91301
|
+
const { slices, values, cx, cy, outerR, position: position2, showLeaderLines, numberFormat } = params;
|
|
90918
91302
|
const outside = isOutsidePosition(position2);
|
|
90919
91303
|
const labels = [];
|
|
90920
91304
|
const leaderLines = [];
|
|
@@ -90928,7 +91312,7 @@ function buildPieDataLabels(params) {
|
|
|
90928
91312
|
kind: "text",
|
|
90929
91313
|
x: slice.labelX,
|
|
90930
91314
|
y: slice.labelY,
|
|
90931
|
-
text: formatAxisValue2(val2),
|
|
91315
|
+
text: formatAxisValue2(val2, numberFormat),
|
|
90932
91316
|
fontSize: 8,
|
|
90933
91317
|
fill: "#ffffff",
|
|
90934
91318
|
textAnchor: "middle",
|
|
@@ -90948,7 +91332,7 @@ function buildPieDataLabels(params) {
|
|
|
90948
91332
|
kind: "text",
|
|
90949
91333
|
x: labelX + (cos >= 0 ? 2 : -2),
|
|
90950
91334
|
y: labelY,
|
|
90951
|
-
text: formatAxisValue2(val2),
|
|
91335
|
+
text: formatAxisValue2(val2, numberFormat),
|
|
90952
91336
|
fontSize: 8,
|
|
90953
91337
|
fill: "#334155",
|
|
90954
91338
|
textAnchor: anchor,
|
|
@@ -92217,10 +92601,8 @@ function computeValueRange2(series) {
|
|
|
92217
92601
|
if (dataMin === Number.POSITIVE_INFINITY) {
|
|
92218
92602
|
return { min: 0, max: 1, span: 1 };
|
|
92219
92603
|
}
|
|
92220
|
-
const min =
|
|
92221
|
-
|
|
92222
|
-
const span = Math.max(max - min, 1);
|
|
92223
|
-
return { min, max, span };
|
|
92604
|
+
const { min, max, majorUnit } = niceValueAxisBounds(dataMin, dataMax);
|
|
92605
|
+
return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
|
|
92224
92606
|
}
|
|
92225
92607
|
function computeStackedValueRange(series, catCount) {
|
|
92226
92608
|
let maxSum = 0;
|
|
@@ -92239,10 +92621,8 @@ function computeStackedValueRange(series, catCount) {
|
|
|
92239
92621
|
maxSum = Math.max(maxSum, pos2);
|
|
92240
92622
|
minSum = Math.min(minSum, neg);
|
|
92241
92623
|
}
|
|
92242
|
-
const min = Math.min(minSum, 0);
|
|
92243
|
-
|
|
92244
|
-
const span = Math.max(max - min, 1);
|
|
92245
|
-
return { min, max, span };
|
|
92624
|
+
const { min, max, majorUnit } = niceValueAxisBounds(Math.min(minSum, 0), Math.max(maxSum, 0));
|
|
92625
|
+
return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
|
|
92246
92626
|
}
|
|
92247
92627
|
function valueToY2(val2, range, topY, bottomY) {
|
|
92248
92628
|
const usable = bottomY - topY;
|
|
@@ -92258,7 +92638,11 @@ function valueToY2(val2, range, topY, bottomY) {
|
|
|
92258
92638
|
}
|
|
92259
92639
|
return range.reverseOrder ? topY + ratio * usable : bottomY - ratio * usable;
|
|
92260
92640
|
}
|
|
92261
|
-
function formatAxisValue2(val2) {
|
|
92641
|
+
function formatAxisValue2(val2, formatCode) {
|
|
92642
|
+
const formatted = formatChartNumber(val2, formatCode);
|
|
92643
|
+
if (formatted !== void 0) {
|
|
92644
|
+
return formatted;
|
|
92645
|
+
}
|
|
92262
92646
|
if (Math.abs(val2) >= 1e6) {
|
|
92263
92647
|
return `${(val2 / 1e6).toFixed(1)}M`;
|
|
92264
92648
|
}
|
|
@@ -92320,11 +92704,23 @@ var GRIDLINE_COLOR2 = "#e2e8f0";
|
|
|
92320
92704
|
var AXIS_LABEL_COLOR = "#64748b";
|
|
92321
92705
|
var ZERO_LINE_COLOR = "#94a3b8";
|
|
92322
92706
|
var TICK_COUNT2 = 5;
|
|
92707
|
+
function axisTickValues(range) {
|
|
92708
|
+
const unit = range.majorUnit;
|
|
92709
|
+
if (unit !== void 0 && Number.isFinite(unit) && unit > 0 && !range.logScale) {
|
|
92710
|
+
const steps = Math.round((range.max - range.min) / unit);
|
|
92711
|
+
if (steps >= 1 && steps <= 100) {
|
|
92712
|
+
return Array.from({ length: steps + 1 }, (_unused, index) => range.min + unit * index);
|
|
92713
|
+
}
|
|
92714
|
+
}
|
|
92715
|
+
return Array.from(
|
|
92716
|
+
{ length: TICK_COUNT2 + 1 },
|
|
92717
|
+
(_unused, index) => range.min + range.span / TICK_COUNT2 * index
|
|
92718
|
+
);
|
|
92719
|
+
}
|
|
92323
92720
|
function buildGridlinesAndLabels(range, layout) {
|
|
92324
92721
|
const gridlines = [];
|
|
92325
92722
|
const axisLabels = [];
|
|
92326
|
-
for (
|
|
92327
|
-
const val2 = range.min + range.span / TICK_COUNT2 * i;
|
|
92723
|
+
for (const val2 of axisTickValues(range)) {
|
|
92328
92724
|
const y = valueToY2(val2, range, layout.plotTop, layout.plotBottom);
|
|
92329
92725
|
gridlines.push({
|
|
92330
92726
|
kind: "line",
|
|
@@ -92642,13 +93038,26 @@ function buildChartViewModel(element) {
|
|
|
92642
93038
|
const longestLen = chartData.series.reduce((m, s) => Math.max(m, s.values.length), 0);
|
|
92643
93039
|
const categoryLabels = chartData.categories.length > 0 ? chartData.categories : Array.from({ length: longestLen }, (_, i) => String(i + 1));
|
|
92644
93040
|
if (chartType === "ofPie") {
|
|
92645
|
-
return
|
|
93041
|
+
return withChartAreaFill(
|
|
93042
|
+
withUserShapeOverlay(buildOfPieViewModel(element, chartData, categoryLabels), chartData),
|
|
93043
|
+
chartData
|
|
93044
|
+
);
|
|
92646
93045
|
}
|
|
92647
93046
|
const flat = buildFlatViewModel(element, chartData, categoryLabels, kind);
|
|
92648
93047
|
if (is3DChartType(chartType)) {
|
|
92649
|
-
return
|
|
93048
|
+
return withChartAreaFill(
|
|
93049
|
+
withUserShapeOverlay(applyChart3DDepth(flat, chartType, chartData.view3D), chartData),
|
|
93050
|
+
chartData
|
|
93051
|
+
);
|
|
92650
93052
|
}
|
|
92651
|
-
return withUserShapeOverlay(flat, chartData);
|
|
93053
|
+
return withChartAreaFill(withUserShapeOverlay(flat, chartData), chartData);
|
|
93054
|
+
}
|
|
93055
|
+
function withChartAreaFill(vm, chartData) {
|
|
93056
|
+
return {
|
|
93057
|
+
...vm,
|
|
93058
|
+
areaFill: chartAreaFill(chartData),
|
|
93059
|
+
plotFill: plotAreaFill(chartData)
|
|
93060
|
+
};
|
|
92652
93061
|
}
|
|
92653
93062
|
function withUserShapeOverlay(vm, chartData) {
|
|
92654
93063
|
const overlay = buildChartUserShapeOverlay(chartData.userShapes, vm.svgWidth, vm.svgHeight);
|
|
@@ -92709,6 +93118,8 @@ function buildFallbackViewModel(width, height, label) {
|
|
|
92709
93118
|
return {
|
|
92710
93119
|
svgWidth,
|
|
92711
93120
|
svgHeight,
|
|
93121
|
+
// No chart data to read a fill from, so the historical wash stands.
|
|
93122
|
+
areaFill: DEFAULT_CHART_AREA_FILL,
|
|
92712
93123
|
title: void 0,
|
|
92713
93124
|
titleX: svgWidth / 2,
|
|
92714
93125
|
titleY: 14,
|
|
@@ -92780,7 +93191,8 @@ function buildPieViewModel(element, chartData, categoryLabels, isDoughnut) {
|
|
|
92780
93191
|
cy,
|
|
92781
93192
|
outerR,
|
|
92782
93193
|
position: chartData.style.dataLabels?.position,
|
|
92783
|
-
showLeaderLines: chartData.style.dataLabels?.showLeaderLines
|
|
93194
|
+
showLeaderLines: chartData.style.dataLabels?.showLeaderLines,
|
|
93195
|
+
numberFormat: chartData.series[0]?.numberFormat
|
|
92784
93196
|
});
|
|
92785
93197
|
dataLabels.push(...labelResult.labels);
|
|
92786
93198
|
primitives.push(...labelResult.leaderLines);
|
|
@@ -92899,7 +93311,7 @@ function buildRadarViewModel(element, chartData, categoryLabels) {
|
|
|
92899
93311
|
kind: "text",
|
|
92900
93312
|
x: p.x,
|
|
92901
93313
|
y: p.y - 8,
|
|
92902
|
-
text: formatAxisValue2(val2),
|
|
93314
|
+
text: formatAxisValue2(val2, series.numberFormat),
|
|
92903
93315
|
fontSize: 7,
|
|
92904
93316
|
fill: "#334155",
|
|
92905
93317
|
textAnchor: "middle"
|
|
@@ -93949,8 +94361,8 @@ function finalizeClickGroup(steps, options) {
|
|
|
93949
94361
|
maxEnd = end;
|
|
93950
94362
|
}
|
|
93951
94363
|
}
|
|
93952
|
-
const
|
|
93953
|
-
return
|
|
94364
|
+
const group2 = { steps, totalDurationMs: maxEnd };
|
|
94365
|
+
return group2;
|
|
93954
94366
|
}
|
|
93955
94367
|
var CLICK_EVENTS = /* @__PURE__ */ new Set(["onClick", "onNext"]);
|
|
93956
94368
|
var HOVER_EVENTS = /* @__PURE__ */ new Set(["onMouseOver"]);
|
|
@@ -93969,6 +94381,9 @@ function normalizeDelay(delay) {
|
|
|
93969
94381
|
}
|
|
93970
94382
|
return { ms: delay, indefinite: false };
|
|
93971
94383
|
}
|
|
94384
|
+
function isInteractiveTrigger(trigger) {
|
|
94385
|
+
return trigger === "onClick" || trigger === "onShapeClick" || trigger === "onHover";
|
|
94386
|
+
}
|
|
93972
94387
|
function classifyCondition(cond) {
|
|
93973
94388
|
const evt = cond.event;
|
|
93974
94389
|
if (evt && CLICK_EVENTS.has(evt)) {
|
|
@@ -93988,7 +94403,8 @@ function resolveEffectiveStartCondition(conditions, fallbackTrigger) {
|
|
|
93988
94403
|
delayMs: 0,
|
|
93989
94404
|
hasClickAlternative: false,
|
|
93990
94405
|
hasHoverAlternative: false,
|
|
93991
|
-
indefinite: false
|
|
94406
|
+
indefinite: false,
|
|
94407
|
+
requiresInteraction: isInteractiveTrigger(fallbackTrigger)
|
|
93992
94408
|
};
|
|
93993
94409
|
if (!conditions || conditions.length === 0) {
|
|
93994
94410
|
return base;
|
|
@@ -94033,6 +94449,7 @@ function resolveEffectiveStartCondition(conditions, fallbackTrigger) {
|
|
|
94033
94449
|
base.indefinite = indefinite;
|
|
94034
94450
|
base.dependsOnTimeNodeId = timenode.targetTimeNodeId;
|
|
94035
94451
|
base.dependsOnEvent = timenode.event;
|
|
94452
|
+
base.requiresInteraction = false;
|
|
94036
94453
|
return base;
|
|
94037
94454
|
}
|
|
94038
94455
|
if (delayCond && (delayCond.delay ?? 0) !== 0) {
|
|
@@ -94040,19 +94457,23 @@ function resolveEffectiveStartCondition(conditions, fallbackTrigger) {
|
|
|
94040
94457
|
base.trigger = clickCond ? "onClick" : "afterDelay";
|
|
94041
94458
|
base.delayMs = ms;
|
|
94042
94459
|
base.indefinite = indefinite;
|
|
94460
|
+
base.requiresInteraction = indefinite;
|
|
94043
94461
|
return base;
|
|
94044
94462
|
}
|
|
94045
94463
|
if (clickCond) {
|
|
94046
94464
|
base.trigger = clickCond.targetShapeId ? "onShapeClick" : "onClick";
|
|
94465
|
+
base.requiresInteraction = true;
|
|
94047
94466
|
return base;
|
|
94048
94467
|
}
|
|
94049
94468
|
if (hoverCond) {
|
|
94050
94469
|
base.trigger = "onHover";
|
|
94470
|
+
base.requiresInteraction = true;
|
|
94051
94471
|
return base;
|
|
94052
94472
|
}
|
|
94053
94473
|
if (delayCond) {
|
|
94054
94474
|
base.trigger = fallbackTrigger;
|
|
94055
94475
|
base.delayMs = 0;
|
|
94476
|
+
base.requiresInteraction = false;
|
|
94056
94477
|
}
|
|
94057
94478
|
return base;
|
|
94058
94479
|
}
|
|
@@ -94391,7 +94812,7 @@ function parseMediaCommand(commandString) {
|
|
|
94391
94812
|
if (lower === "stop" || lower === "stopmedia") {
|
|
94392
94813
|
return { verb: "stop" };
|
|
94393
94814
|
}
|
|
94394
|
-
if (lower === "toggleplay") {
|
|
94815
|
+
if (lower === "toggleplay" || lower === "togglepause") {
|
|
94395
94816
|
return { verb: "togglePlay" };
|
|
94396
94817
|
}
|
|
94397
94818
|
return void 0;
|
|
@@ -94515,15 +94936,15 @@ function buildTimeline(nativeAnimations) {
|
|
|
94515
94936
|
const isFirstAnimation = clickGroups.length === 0 && currentGroup.length === 0;
|
|
94516
94937
|
if (isOnClick || isFirstAnimation) {
|
|
94517
94938
|
if (currentGroup.length > 0) {
|
|
94518
|
-
const
|
|
94939
|
+
const group2 = finalizeClickGroup(currentGroup);
|
|
94519
94940
|
if (currentGroupAutoStart || !currentGroupIsClick && clickGroups.length > 0) {
|
|
94520
|
-
|
|
94941
|
+
group2.autoAdvance = true;
|
|
94521
94942
|
}
|
|
94522
|
-
clickGroups.push(
|
|
94943
|
+
clickGroups.push(group2);
|
|
94523
94944
|
}
|
|
94524
94945
|
currentGroup = [];
|
|
94525
94946
|
currentGroupIsClick = isOnClick || isFirstAnimation;
|
|
94526
|
-
currentGroupAutoStart =
|
|
94947
|
+
currentGroupAutoStart = singleAnim.groupAutoStart === true && !effective.requiresInteraction;
|
|
94527
94948
|
subGroupIndex = singleAnim.parGroupIndex;
|
|
94528
94949
|
subGroupStartMs = 0;
|
|
94529
94950
|
}
|
|
@@ -94563,15 +94984,15 @@ function buildTimeline(nativeAnimations) {
|
|
|
94563
94984
|
}
|
|
94564
94985
|
}
|
|
94565
94986
|
if (currentGroup.length > 0) {
|
|
94566
|
-
const
|
|
94987
|
+
const group2 = finalizeClickGroup(currentGroup);
|
|
94567
94988
|
if (currentGroupAutoStart || !currentGroupIsClick && clickGroups.length > 0) {
|
|
94568
|
-
|
|
94989
|
+
group2.autoAdvance = true;
|
|
94569
94990
|
}
|
|
94570
|
-
clickGroups.push(
|
|
94991
|
+
clickGroups.push(group2);
|
|
94571
94992
|
}
|
|
94572
|
-
for (const
|
|
94573
|
-
if (
|
|
94574
|
-
|
|
94993
|
+
for (const group2 of clickGroups) {
|
|
94994
|
+
if (group2.autoAdvance) {
|
|
94995
|
+
group2.autoAdvanceDelayMs = 0;
|
|
94575
94996
|
}
|
|
94576
94997
|
}
|
|
94577
94998
|
const interactiveSequences = buildSequenceGroups(
|
|
@@ -94628,25 +95049,26 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
94628
95049
|
for (const anim of anims) {
|
|
94629
95050
|
let effect = resolveEffect(anim);
|
|
94630
95051
|
const dynamic = effect ? void 0 : buildDynamicKeyframe(anim, dynamicUid++);
|
|
94631
|
-
|
|
95052
|
+
const isCommand = !effect && !dynamic && isMediaCommandAnimation(anim);
|
|
95053
|
+
if (!effect && !dynamic && !isCommand) {
|
|
94632
95054
|
effect = fallbackEffectForClass(anim.presetClass);
|
|
94633
95055
|
if (!effect) {
|
|
94634
95056
|
continue;
|
|
94635
95057
|
}
|
|
94636
95058
|
}
|
|
94637
|
-
const keyframe = effect ? cssKeyframeName(effect) : dynamic.keyframeName;
|
|
95059
|
+
const keyframe = isCommand ? "" : effect ? cssKeyframeName(effect) : dynamic.keyframeName;
|
|
94638
95060
|
if (effect) {
|
|
94639
95061
|
neededKeyframes.add(effect);
|
|
94640
95062
|
}
|
|
94641
95063
|
if (dynamic) {
|
|
94642
95064
|
dynamicBlocks.push(dynamic.css);
|
|
94643
95065
|
}
|
|
94644
|
-
const elementId = anim.targetId ?? "";
|
|
95066
|
+
const elementId = isCommand ? "" : anim.targetId ?? "";
|
|
94645
95067
|
const seqTrigger = anim.trigger ?? "onShapeClick";
|
|
94646
|
-
const duration = anim.durationMs ?? defaultDuration(anim.presetClass);
|
|
95068
|
+
const duration = isCommand ? 0 : anim.durationMs ?? defaultDuration(anim.presetClass);
|
|
94647
95069
|
const animDelay = Math.max(anim.delayMs ?? 0, anim.triggerDelayMs ?? 0);
|
|
94648
95070
|
const triggerDelay = 0;
|
|
94649
|
-
const presetClass = anim.presetClass ?? "entr";
|
|
95071
|
+
const presetClass = isCommand ? "emph" : anim.presetClass ?? "entr";
|
|
94650
95072
|
const fill = fillModeForClass(anim.presetClass);
|
|
94651
95073
|
const iterCount = anim.repeatCount ?? 1;
|
|
94652
95074
|
const direction = anim.autoReverse ? "alternate" : "normal";
|
|
@@ -94670,7 +95092,7 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
94670
95092
|
}
|
|
94671
95093
|
const iterStr = iterCount === Infinity ? "infinite" : String(iterCount);
|
|
94672
95094
|
const easing = cssEasingForAnimation(anim);
|
|
94673
|
-
const cssAnimation = `${keyframe} ${duration}ms ${easing} ${delayMs}ms ${iterStr} ${direction} ${fill}`;
|
|
95095
|
+
const cssAnimation = isCommand ? "" : `${keyframe} ${duration}ms ${easing} ${delayMs}ms ${iterStr} ${direction} ${fill}`;
|
|
94674
95096
|
seqGroup.push({
|
|
94675
95097
|
elementId,
|
|
94676
95098
|
cssAnimation,
|
|
@@ -94682,8 +95104,9 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
94682
95104
|
presetClass,
|
|
94683
95105
|
soundPath: anim.soundPath,
|
|
94684
95106
|
stopSound: anim.stopSound,
|
|
94685
|
-
|
|
94686
|
-
|
|
95107
|
+
command: isCommand ? buildStepCommand(anim) : void 0,
|
|
95108
|
+
build: isCommand ? void 0 : resolveStepBuildDescriptor(anim),
|
|
95109
|
+
colorTargets: isCommand ? void 0 : stepColorTargets(anim)
|
|
94687
95110
|
});
|
|
94688
95111
|
}
|
|
94689
95112
|
if (seqGroup.length > 0) {
|
|
@@ -94797,9 +95220,9 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
94797
95220
|
return null;
|
|
94798
95221
|
}
|
|
94799
95222
|
this.currentGroupIndex++;
|
|
94800
|
-
const
|
|
94801
|
-
this.applyGroupSteps(
|
|
94802
|
-
return
|
|
95223
|
+
const group2 = this.timeline.clickGroups[this.currentGroupIndex];
|
|
95224
|
+
this.applyGroupSteps(group2);
|
|
95225
|
+
return group2;
|
|
94803
95226
|
}
|
|
94804
95227
|
/**
|
|
94805
95228
|
* Peek at the next click-group without advancing.
|
|
@@ -94911,9 +95334,9 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
94911
95334
|
return null;
|
|
94912
95335
|
}
|
|
94913
95336
|
this.interactiveGroupIndexes.set(triggerShapeId, nextIdx);
|
|
94914
|
-
const
|
|
94915
|
-
this.applyGroupSteps(
|
|
94916
|
-
return
|
|
95337
|
+
const group2 = groups[nextIdx];
|
|
95338
|
+
this.applyGroupSteps(group2);
|
|
95339
|
+
return group2;
|
|
94917
95340
|
}
|
|
94918
95341
|
/**
|
|
94919
95342
|
* Advance the hover sequence for a given trigger shape.
|
|
@@ -94930,9 +95353,9 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
94930
95353
|
return null;
|
|
94931
95354
|
}
|
|
94932
95355
|
this.hoverGroupIndexes.set(triggerShapeId, nextIdx);
|
|
94933
|
-
const
|
|
94934
|
-
this.applyGroupSteps(
|
|
94935
|
-
return
|
|
95356
|
+
const group2 = groups[nextIdx];
|
|
95357
|
+
this.applyGroupSteps(group2);
|
|
95358
|
+
return group2;
|
|
94936
95359
|
}
|
|
94937
95360
|
/**
|
|
94938
95361
|
* Reset the hover sequence for a given trigger shape so it can replay
|
|
@@ -94954,8 +95377,8 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
94954
95377
|
*/
|
|
94955
95378
|
completeAll() {
|
|
94956
95379
|
this.reset();
|
|
94957
|
-
for (const
|
|
94958
|
-
for (const step of
|
|
95380
|
+
for (const group2 of this.timeline.clickGroups) {
|
|
95381
|
+
for (const step of group2.steps) {
|
|
94959
95382
|
if (step.build || step.colorTargets) {
|
|
94960
95383
|
this.activeSteps.set(step.elementId, step);
|
|
94961
95384
|
}
|
|
@@ -94984,8 +95407,8 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
94984
95407
|
/**
|
|
94985
95408
|
* Apply a group's steps to the internal tracking state.
|
|
94986
95409
|
*/
|
|
94987
|
-
applyGroupSteps(
|
|
94988
|
-
for (const step of
|
|
95410
|
+
applyGroupSteps(group2) {
|
|
95411
|
+
for (const step of group2.steps) {
|
|
94989
95412
|
this.activeAnimations.set(step.elementId, step.cssAnimation);
|
|
94990
95413
|
if (step.build || step.colorTargets) {
|
|
94991
95414
|
this.activeSteps.set(step.elementId, step);
|
|
@@ -95558,9 +95981,9 @@ var PresentationAnimationController = class _PresentationAnimationController {
|
|
|
95558
95981
|
* binding the group needs a requestAnimationFrame reveal loop; an empty result
|
|
95559
95982
|
* means ordinary discrete click-advance is enough.
|
|
95560
95983
|
*/
|
|
95561
|
-
static collectBuildStepIds(
|
|
95984
|
+
static collectBuildStepIds(group2) {
|
|
95562
95985
|
const ids = [];
|
|
95563
|
-
for (const step of
|
|
95986
|
+
for (const step of group2.steps) {
|
|
95564
95987
|
if (step.build) {
|
|
95565
95988
|
ids.push(step.elementId);
|
|
95566
95989
|
}
|
|
@@ -95627,8 +96050,8 @@ function findMediaElementByElementId(targetId, root) {
|
|
|
95627
96050
|
}
|
|
95628
96051
|
return void 0;
|
|
95629
96052
|
}
|
|
95630
|
-
function runMediaCommand(command,
|
|
95631
|
-
const el =
|
|
96053
|
+
function runMediaCommand(command, resolve2) {
|
|
96054
|
+
const el = resolve2(command.targetId);
|
|
95632
96055
|
if (!el) {
|
|
95633
96056
|
return false;
|
|
95634
96057
|
}
|
|
@@ -96431,10 +96854,10 @@ function collectSections(entry2, tableData, pos2) {
|
|
|
96431
96854
|
const isBottom = rowIndex === rowCount - 1;
|
|
96432
96855
|
const isLeft = cellIndex === 0;
|
|
96433
96856
|
const isRight = cellIndex === columnCount - 1;
|
|
96434
|
-
const
|
|
96857
|
+
const sections2 = [];
|
|
96435
96858
|
const push2 = (borders, regionTop, regionBottom, regionLeft, regionRight) => {
|
|
96436
96859
|
if (borders) {
|
|
96437
|
-
|
|
96860
|
+
sections2.push({ borders, regionTop, regionBottom, regionLeft, regionRight });
|
|
96438
96861
|
}
|
|
96439
96862
|
};
|
|
96440
96863
|
push2(entry2.wholeTblBorders, isTop, isBottom, isLeft, isRight);
|
|
@@ -96474,19 +96897,19 @@ function collectSections(entry2, tableData, pos2) {
|
|
|
96474
96897
|
if (tableData.lastCol && isRight) {
|
|
96475
96898
|
push2(entry2.lastColBorders, isTop, isBottom, true, true);
|
|
96476
96899
|
}
|
|
96477
|
-
return
|
|
96900
|
+
return sections2;
|
|
96478
96901
|
}
|
|
96479
|
-
function resolveStyleDiagonalBorders(entry2, tableData, pos2,
|
|
96902
|
+
function resolveStyleDiagonalBorders(entry2, tableData, pos2, resolve2) {
|
|
96480
96903
|
if (!entry2) {
|
|
96481
96904
|
return void 0;
|
|
96482
96905
|
}
|
|
96483
|
-
const
|
|
96484
|
-
if (
|
|
96906
|
+
const sections2 = collectSections(entry2, tableData, pos2);
|
|
96907
|
+
if (sections2.length === 0) {
|
|
96485
96908
|
return void 0;
|
|
96486
96909
|
}
|
|
96487
96910
|
let tl2br;
|
|
96488
96911
|
let bl2tr;
|
|
96489
|
-
for (const section of
|
|
96912
|
+
for (const section of sections2) {
|
|
96490
96913
|
if (section.borders.tl2br) {
|
|
96491
96914
|
tl2br = section.borders.tl2br;
|
|
96492
96915
|
}
|
|
@@ -96497,12 +96920,12 @@ function resolveStyleDiagonalBorders(entry2, tableData, pos2, resolve) {
|
|
|
96497
96920
|
const info = {};
|
|
96498
96921
|
let applied = false;
|
|
96499
96922
|
if (tl2br && !tl2br.noFill) {
|
|
96500
|
-
info.diagDownColor = tl2br.color ??
|
|
96923
|
+
info.diagDownColor = tl2br.color ?? resolve2(tl2br.fill) ?? "#000000";
|
|
96501
96924
|
info.diagDownWidth = tl2br.width ?? 1;
|
|
96502
96925
|
applied = true;
|
|
96503
96926
|
}
|
|
96504
96927
|
if (bl2tr && !bl2tr.noFill) {
|
|
96505
|
-
info.diagUpColor = bl2tr.color ??
|
|
96928
|
+
info.diagUpColor = bl2tr.color ?? resolve2(bl2tr.fill) ?? "#000000";
|
|
96506
96929
|
info.diagUpWidth = bl2tr.width ?? 1;
|
|
96507
96930
|
applied = true;
|
|
96508
96931
|
}
|
|
@@ -97909,7 +98332,7 @@ function groupElements(elements, ids, groupId) {
|
|
|
97909
98332
|
x: el.x - groupX,
|
|
97910
98333
|
y: el.y - groupY
|
|
97911
98334
|
}));
|
|
97912
|
-
const
|
|
98335
|
+
const group2 = {
|
|
97913
98336
|
type: "group",
|
|
97914
98337
|
id: groupId,
|
|
97915
98338
|
name: "Group",
|
|
@@ -97928,7 +98351,7 @@ function groupElements(elements, ids, groupId) {
|
|
|
97928
98351
|
}
|
|
97929
98352
|
const result = [
|
|
97930
98353
|
...remaining.slice(0, adjustedIndex),
|
|
97931
|
-
|
|
98354
|
+
group2,
|
|
97932
98355
|
...remaining.slice(adjustedIndex)
|
|
97933
98356
|
];
|
|
97934
98357
|
return { elements: result, groupId };
|
|
@@ -98160,38 +98583,38 @@ function resolveSlideId(slide, index) {
|
|
|
98160
98583
|
const cSld = rawXml?.["p:sld"];
|
|
98161
98584
|
return String(cSld?.["@_id"] || slide?.slideNumber || index + 1);
|
|
98162
98585
|
}
|
|
98163
|
-
function groupSlidesBySection(
|
|
98586
|
+
function groupSlidesBySection(sections2, slides) {
|
|
98164
98587
|
if (slides.length === 0) {
|
|
98165
98588
|
return [];
|
|
98166
98589
|
}
|
|
98167
|
-
if (
|
|
98590
|
+
if (sections2.length === 0) {
|
|
98168
98591
|
return [
|
|
98169
98592
|
{ section: void 0, slides: [...slides], slideIndexes: slides.map((_slide, i) => i) }
|
|
98170
98593
|
];
|
|
98171
98594
|
}
|
|
98172
|
-
const sectionById = new Map(
|
|
98595
|
+
const sectionById = new Map(sections2.map((section) => [section.id, section]));
|
|
98173
98596
|
const grouped = /* @__PURE__ */ new Map();
|
|
98174
98597
|
const ungrouped = {
|
|
98175
98598
|
section: void 0,
|
|
98176
98599
|
slides: [],
|
|
98177
98600
|
slideIndexes: []
|
|
98178
98601
|
};
|
|
98179
|
-
for (const section of
|
|
98602
|
+
for (const section of sections2) {
|
|
98180
98603
|
grouped.set(section.id, { section, slides: [], slideIndexes: [] });
|
|
98181
98604
|
}
|
|
98182
98605
|
slides.forEach((slide, index) => {
|
|
98183
|
-
const
|
|
98184
|
-
const target =
|
|
98606
|
+
const group2 = slide.sectionId ? grouped.get(slide.sectionId) : void 0;
|
|
98607
|
+
const target = group2 && sectionById.has(slide.sectionId ?? "") ? group2 : ungrouped;
|
|
98185
98608
|
target.slides.push(slide);
|
|
98186
98609
|
target.slideIndexes.push(index);
|
|
98187
98610
|
});
|
|
98188
|
-
const result =
|
|
98611
|
+
const result = sections2.map((section) => grouped.get(section.id)).filter((group2) => group2.slides.length > 0);
|
|
98189
98612
|
if (ungrouped.slides.length > 0) {
|
|
98190
98613
|
result.push(ungrouped);
|
|
98191
98614
|
}
|
|
98192
98615
|
return result;
|
|
98193
98616
|
}
|
|
98194
|
-
function addSection(
|
|
98617
|
+
function addSection(sections2, slides, name, afterSlideIndex, idGenerator = generateSectionId) {
|
|
98195
98618
|
const newId = idGenerator();
|
|
98196
98619
|
const slideAtIndex = slides[afterSlideIndex];
|
|
98197
98620
|
const currentSectionId = slideAtIndex?.sectionId;
|
|
@@ -98206,9 +98629,9 @@ function addSection(sections, slides, name, afterSlideIndex, idGenerator = gener
|
|
|
98206
98629
|
const nextSlides = slides.map(
|
|
98207
98630
|
(s, i) => claimedSlideIndexes.includes(i) ? { ...s, sectionId: newId, sectionName: name } : s
|
|
98208
98631
|
);
|
|
98209
|
-
const insertIndex = currentSectionId !== void 0 ?
|
|
98632
|
+
const insertIndex = currentSectionId !== void 0 ? sections2.findIndex((sec) => sec.id === currentSectionId) + 1 : sections2.length;
|
|
98210
98633
|
const newSectionSlideIds = claimedSlideIndexes.map((i) => resolveSlideId(slides[i], i));
|
|
98211
|
-
const updated =
|
|
98634
|
+
const updated = sections2.map(
|
|
98212
98635
|
(sec) => sec.id === currentSectionId ? { ...sec, slideIds: sec.slideIds.filter((sid) => !newSectionSlideIds.includes(sid)) } : sec
|
|
98213
98636
|
);
|
|
98214
98637
|
const newSection = { id: newId, name, slideIds: newSectionSlideIds };
|
|
@@ -98216,20 +98639,20 @@ function addSection(sections, slides, name, afterSlideIndex, idGenerator = gener
|
|
|
98216
98639
|
nextSections.splice(insertIndex, 0, newSection);
|
|
98217
98640
|
return { sections: nextSections, slides: nextSlides };
|
|
98218
98641
|
}
|
|
98219
|
-
function renameSection(
|
|
98642
|
+
function renameSection(sections2, slides, sectionId, newName) {
|
|
98220
98643
|
return {
|
|
98221
|
-
sections:
|
|
98644
|
+
sections: sections2.map((sec) => sec.id === sectionId ? { ...sec, name: newName } : sec),
|
|
98222
98645
|
slides: slides.map((s) => s.sectionId === sectionId ? { ...s, sectionName: newName } : s)
|
|
98223
98646
|
};
|
|
98224
98647
|
}
|
|
98225
|
-
function deleteSection(
|
|
98226
|
-
const idx =
|
|
98648
|
+
function deleteSection(sections2, slides, sectionId) {
|
|
98649
|
+
const idx = sections2.findIndex((sec) => sec.id === sectionId);
|
|
98227
98650
|
if (idx === -1) {
|
|
98228
|
-
return { sections, slides };
|
|
98651
|
+
return { sections: sections2, slides };
|
|
98229
98652
|
}
|
|
98230
|
-
const deletedSection =
|
|
98231
|
-
const prevSection = idx > 0 ?
|
|
98232
|
-
const filtered =
|
|
98653
|
+
const deletedSection = sections2[idx];
|
|
98654
|
+
const prevSection = idx > 0 ? sections2[idx - 1] : void 0;
|
|
98655
|
+
const filtered = sections2.filter((sec) => sec.id !== sectionId);
|
|
98233
98656
|
const nextSections = prevSection !== void 0 ? filtered.map(
|
|
98234
98657
|
(sec) => sec.id === prevSection.id ? { ...sec, slideIds: [...sec.slideIds, ...deletedSection.slideIds] } : sec
|
|
98235
98658
|
) : filtered;
|
|
@@ -98244,34 +98667,34 @@ function deleteSection(sections, slides, sectionId) {
|
|
|
98244
98667
|
});
|
|
98245
98668
|
return { sections: nextSections, slides: nextSlides };
|
|
98246
98669
|
}
|
|
98247
|
-
function moveSectionUp(
|
|
98248
|
-
const idx =
|
|
98670
|
+
function moveSectionUp(sections2, sectionId) {
|
|
98671
|
+
const idx = sections2.findIndex((sec) => sec.id === sectionId);
|
|
98249
98672
|
if (idx <= 0) {
|
|
98250
|
-
return
|
|
98673
|
+
return sections2;
|
|
98251
98674
|
}
|
|
98252
|
-
const next = [...
|
|
98675
|
+
const next = [...sections2];
|
|
98253
98676
|
[next[idx - 1], next[idx]] = [next[idx], next[idx - 1]];
|
|
98254
98677
|
return next;
|
|
98255
98678
|
}
|
|
98256
|
-
function moveSectionDown(
|
|
98257
|
-
const idx =
|
|
98258
|
-
if (idx === -1 || idx >=
|
|
98259
|
-
return
|
|
98679
|
+
function moveSectionDown(sections2, sectionId) {
|
|
98680
|
+
const idx = sections2.findIndex((sec) => sec.id === sectionId);
|
|
98681
|
+
if (idx === -1 || idx >= sections2.length - 1) {
|
|
98682
|
+
return sections2;
|
|
98260
98683
|
}
|
|
98261
|
-
const next = [...
|
|
98684
|
+
const next = [...sections2];
|
|
98262
98685
|
[next[idx], next[idx + 1]] = [next[idx + 1], next[idx]];
|
|
98263
98686
|
return next;
|
|
98264
98687
|
}
|
|
98265
|
-
function moveSlidesToSection(
|
|
98266
|
-
const targetSection =
|
|
98688
|
+
function moveSlidesToSection(sections2, slides, slideIndexes, targetSectionId) {
|
|
98689
|
+
const targetSection = sections2.find((sec) => sec.id === targetSectionId);
|
|
98267
98690
|
if (!targetSection) {
|
|
98268
|
-
return { sections, slides };
|
|
98691
|
+
return { sections: sections2, slides };
|
|
98269
98692
|
}
|
|
98270
98693
|
const nextSlides = slides.map(
|
|
98271
98694
|
(s, i) => slideIndexes.includes(i) ? { ...s, sectionId: targetSectionId, sectionName: targetSection.name } : s
|
|
98272
98695
|
);
|
|
98273
98696
|
const movedSlideIds = slideIndexes.map((i) => resolveSlideId(slides[i], i));
|
|
98274
|
-
const nextSections =
|
|
98697
|
+
const nextSections = sections2.map((sec) => {
|
|
98275
98698
|
if (sec.id === targetSectionId) {
|
|
98276
98699
|
return {
|
|
98277
98700
|
...sec,
|
|
@@ -98846,7 +99269,7 @@ function buildTextBlockStyle(element, options = {}) {
|
|
|
98846
99269
|
style.unicodeBidi = "plaintext";
|
|
98847
99270
|
}
|
|
98848
99271
|
style.fontSize = ts?.fontSize || DEFAULT_TEXT_FONT_SIZE;
|
|
98849
|
-
style.fontFamily = ts?.fontFamily
|
|
99272
|
+
style.fontFamily = ts?.fontFamily ? getSubstituteFontFamily(ts.fontFamily, parsePanoseString(ts.latinFontPanose)) : DEFAULT_FONT_FAMILY;
|
|
98850
99273
|
style.fontWeight = ts?.bold ? 700 : 400;
|
|
98851
99274
|
style.fontStyle = ts?.italic ? "italic" : "normal";
|
|
98852
99275
|
style.textDecorationLine = decorations.length > 0 ? decorations.join(" ") : "none";
|
|
@@ -99900,8 +100323,8 @@ function toAbsolute(child22, offsetX, offsetY) {
|
|
|
99900
100323
|
function sameBox(a, b) {
|
|
99901
100324
|
return Math.abs(a.x - b.x) <= 0.5 && Math.abs(a.y - b.y) <= 0.5 && Math.abs(a.width - b.width) <= 0.5 && Math.abs(a.height - b.height) <= 0.5;
|
|
99902
100325
|
}
|
|
99903
|
-
function correspondingGroup(
|
|
99904
|
-
const morphName = getElementMorphName(
|
|
100326
|
+
function correspondingGroup(group2, candidates) {
|
|
100327
|
+
const morphName = getElementMorphName(group2);
|
|
99905
100328
|
return candidates.find((candidate) => {
|
|
99906
100329
|
if (candidate.type !== "group") {
|
|
99907
100330
|
return false;
|
|
@@ -99909,10 +100332,10 @@ function correspondingGroup(group, candidates) {
|
|
|
99909
100332
|
if (morphName !== void 0 && getElementMorphName(candidate) === morphName) {
|
|
99910
100333
|
return true;
|
|
99911
100334
|
}
|
|
99912
|
-
if (
|
|
100335
|
+
if (group2.name && candidate.name === group2.name) {
|
|
99913
100336
|
return true;
|
|
99914
100337
|
}
|
|
99915
|
-
return sameBox(
|
|
100338
|
+
return sameBox(group2, candidate);
|
|
99916
100339
|
});
|
|
99917
100340
|
}
|
|
99918
100341
|
function flattenMorphElements(elements, counterpart, offsetX = 0, offsetY = 0) {
|
|
@@ -106304,8 +106727,8 @@ async function loadOrbitControlsCtor() {
|
|
|
106304
106727
|
}
|
|
106305
106728
|
}
|
|
106306
106729
|
function loadGltf(loader, url) {
|
|
106307
|
-
return new Promise((
|
|
106308
|
-
loader.load(url,
|
|
106730
|
+
return new Promise((resolve2, reject) => {
|
|
106731
|
+
loader.load(url, resolve2, void 0, reject);
|
|
106309
106732
|
});
|
|
106310
106733
|
}
|
|
106311
106734
|
function centerAndFit(three, root) {
|
|
@@ -106772,9 +107195,9 @@ function isExportAbortError(err) {
|
|
|
106772
107195
|
}
|
|
106773
107196
|
var PPTX_OPEN_ACCEPT = ".pptx,.ppsx,.pptm,.potx";
|
|
106774
107197
|
function openFilePicker(options = {}) {
|
|
106775
|
-
return new Promise((
|
|
107198
|
+
return new Promise((resolve2) => {
|
|
106776
107199
|
if (typeof document === "undefined") {
|
|
106777
|
-
|
|
107200
|
+
resolve2(null);
|
|
106778
107201
|
return;
|
|
106779
107202
|
}
|
|
106780
107203
|
const input = document.createElement("input");
|
|
@@ -106790,7 +107213,7 @@ function openFilePicker(options = {}) {
|
|
|
106790
107213
|
}
|
|
106791
107214
|
settled = true;
|
|
106792
107215
|
input.remove();
|
|
106793
|
-
|
|
107216
|
+
resolve2(file);
|
|
106794
107217
|
};
|
|
106795
107218
|
input.addEventListener("change", () => finish(input.files?.[0] ?? null));
|
|
106796
107219
|
input.addEventListener("cancel", () => finish(null));
|
|
@@ -106816,12 +107239,6 @@ function mobileSlideCounter(currentIndex, total) {
|
|
|
106816
107239
|
}
|
|
106817
107240
|
return `${currentIndex + 1} / ${total}`;
|
|
106818
107241
|
}
|
|
106819
|
-
function isFirstSlide(currentIndex) {
|
|
106820
|
-
return currentIndex <= 0;
|
|
106821
|
-
}
|
|
106822
|
-
function isLastSlide(currentIndex, total) {
|
|
106823
|
-
return currentIndex >= total - 1;
|
|
106824
|
-
}
|
|
106825
107242
|
function pad2(value) {
|
|
106826
107243
|
return String(value).padStart(2, "0");
|
|
106827
107244
|
}
|
|
@@ -107363,7 +107780,7 @@ async function swapPresentationWindows(presenter, audience) {
|
|
|
107363
107780
|
}
|
|
107364
107781
|
}
|
|
107365
107782
|
function openDeckDb() {
|
|
107366
|
-
return new Promise((
|
|
107783
|
+
return new Promise((resolve2, reject) => {
|
|
107367
107784
|
const request = indexedDB.open(DB_NAME, DB_VERSION);
|
|
107368
107785
|
request.onupgradeneeded = () => {
|
|
107369
107786
|
const db = request.result;
|
|
@@ -107371,13 +107788,13 @@ function openDeckDb() {
|
|
|
107371
107788
|
db.createObjectStore(STORE_NAME);
|
|
107372
107789
|
}
|
|
107373
107790
|
};
|
|
107374
|
-
request.onsuccess = () =>
|
|
107791
|
+
request.onsuccess = () => resolve2(request.result);
|
|
107375
107792
|
request.onerror = () => reject(request.error);
|
|
107376
107793
|
});
|
|
107377
107794
|
}
|
|
107378
107795
|
async function storePresentationDeck(sessionId, content) {
|
|
107379
107796
|
const db = await openDeckDb();
|
|
107380
|
-
return new Promise((
|
|
107797
|
+
return new Promise((resolve2, reject) => {
|
|
107381
107798
|
const tx = db.transaction(STORE_NAME, "readwrite");
|
|
107382
107799
|
const bytes = content instanceof Uint8Array ? content : new Uint8Array(content);
|
|
107383
107800
|
tx.objectStore(STORE_NAME).put(
|
|
@@ -107386,7 +107803,7 @@ async function storePresentationDeck(sessionId, content) {
|
|
|
107386
107803
|
);
|
|
107387
107804
|
tx.oncomplete = () => {
|
|
107388
107805
|
db.close();
|
|
107389
|
-
|
|
107806
|
+
resolve2();
|
|
107390
107807
|
};
|
|
107391
107808
|
tx.onerror = () => {
|
|
107392
107809
|
db.close();
|
|
@@ -107397,17 +107814,17 @@ async function storePresentationDeck(sessionId, content) {
|
|
|
107397
107814
|
async function loadPresentationDeck(sessionId) {
|
|
107398
107815
|
try {
|
|
107399
107816
|
const db = await openDeckDb();
|
|
107400
|
-
return await new Promise((
|
|
107817
|
+
return await new Promise((resolve2, reject) => {
|
|
107401
107818
|
const request = db.transaction(STORE_NAME, "readonly").objectStore(STORE_NAME).get(sessionId);
|
|
107402
107819
|
request.onsuccess = () => {
|
|
107403
107820
|
db.close();
|
|
107404
107821
|
const record = request.result;
|
|
107405
107822
|
if (!record || Date.now() - record.createdAt > MAX_DECK_AGE_MS) {
|
|
107406
|
-
|
|
107823
|
+
resolve2(null);
|
|
107407
107824
|
return;
|
|
107408
107825
|
}
|
|
107409
107826
|
const raw = record.bytes;
|
|
107410
|
-
|
|
107827
|
+
resolve2(
|
|
107411
107828
|
raw instanceof Uint8Array ? raw : raw instanceof ArrayBuffer ? new Uint8Array(raw) : null
|
|
107412
107829
|
);
|
|
107413
107830
|
};
|
|
@@ -107423,16 +107840,16 @@ async function loadPresentationDeck(sessionId) {
|
|
|
107423
107840
|
async function clearPresentationDeck(sessionId) {
|
|
107424
107841
|
try {
|
|
107425
107842
|
const db = await openDeckDb();
|
|
107426
|
-
await new Promise((
|
|
107843
|
+
await new Promise((resolve2) => {
|
|
107427
107844
|
const tx = db.transaction(STORE_NAME, "readwrite");
|
|
107428
107845
|
tx.objectStore(STORE_NAME).delete(sessionId);
|
|
107429
107846
|
tx.oncomplete = () => {
|
|
107430
107847
|
db.close();
|
|
107431
|
-
|
|
107848
|
+
resolve2();
|
|
107432
107849
|
};
|
|
107433
107850
|
tx.onerror = () => {
|
|
107434
107851
|
db.close();
|
|
107435
|
-
|
|
107852
|
+
resolve2();
|
|
107436
107853
|
};
|
|
107437
107854
|
});
|
|
107438
107855
|
} catch {
|
|
@@ -107444,7 +107861,7 @@ var STORE_NAME2 = "content";
|
|
|
107444
107861
|
var CONTENT_KEY = "pptx-bytes";
|
|
107445
107862
|
var MAX_CONTENT_AGE_MS = 5 * 60 * 1e3;
|
|
107446
107863
|
function openDb() {
|
|
107447
|
-
return new Promise((
|
|
107864
|
+
return new Promise((resolve2, reject) => {
|
|
107448
107865
|
const request = indexedDB.open(DB_NAME2, DB_VERSION2);
|
|
107449
107866
|
request.onupgradeneeded = () => {
|
|
107450
107867
|
const db = request.result;
|
|
@@ -107452,7 +107869,7 @@ function openDb() {
|
|
|
107452
107869
|
db.createObjectStore(STORE_NAME2);
|
|
107453
107870
|
}
|
|
107454
107871
|
};
|
|
107455
|
-
request.onsuccess = () =>
|
|
107872
|
+
request.onsuccess = () => resolve2(request.result);
|
|
107456
107873
|
request.onerror = () => reject(request.error);
|
|
107457
107874
|
});
|
|
107458
107875
|
}
|
|
@@ -107461,7 +107878,7 @@ async function storeAudienceContent(content, sessionId) {
|
|
|
107461
107878
|
return storePresentationDeck(sessionId, content);
|
|
107462
107879
|
}
|
|
107463
107880
|
const db = await openDb();
|
|
107464
|
-
return new Promise((
|
|
107881
|
+
return new Promise((resolve2, reject) => {
|
|
107465
107882
|
const tx = db.transaction(STORE_NAME2, "readwrite");
|
|
107466
107883
|
const store = tx.objectStore(STORE_NAME2);
|
|
107467
107884
|
const bytes = content instanceof Uint8Array ? content : new Uint8Array(content);
|
|
@@ -107469,7 +107886,7 @@ async function storeAudienceContent(content, sessionId) {
|
|
|
107469
107886
|
store.put(record, CONTENT_KEY);
|
|
107470
107887
|
tx.oncomplete = () => {
|
|
107471
107888
|
db.close();
|
|
107472
|
-
|
|
107889
|
+
resolve2();
|
|
107473
107890
|
};
|
|
107474
107891
|
tx.onerror = () => {
|
|
107475
107892
|
db.close();
|
|
@@ -107483,7 +107900,7 @@ async function loadAudienceContent(sessionId) {
|
|
|
107483
107900
|
}
|
|
107484
107901
|
try {
|
|
107485
107902
|
const db = await openDb();
|
|
107486
|
-
return new Promise((
|
|
107903
|
+
return new Promise((resolve2, reject) => {
|
|
107487
107904
|
const tx = db.transaction(STORE_NAME2, "readonly");
|
|
107488
107905
|
const store = tx.objectStore(STORE_NAME2);
|
|
107489
107906
|
const request = store.get(CONTENT_KEY);
|
|
@@ -107494,20 +107911,20 @@ async function loadAudienceContent(sessionId) {
|
|
|
107494
107911
|
const record = result;
|
|
107495
107912
|
const age = Date.now() - record.createdAt;
|
|
107496
107913
|
if (age > MAX_CONTENT_AGE_MS) {
|
|
107497
|
-
|
|
107914
|
+
resolve2(null);
|
|
107498
107915
|
return;
|
|
107499
107916
|
}
|
|
107500
107917
|
const raw = record.bytes;
|
|
107501
107918
|
if (raw instanceof Uint8Array) {
|
|
107502
|
-
|
|
107919
|
+
resolve2(raw);
|
|
107503
107920
|
} else if (raw instanceof ArrayBuffer) {
|
|
107504
|
-
|
|
107921
|
+
resolve2(new Uint8Array(raw));
|
|
107505
107922
|
} else {
|
|
107506
|
-
|
|
107923
|
+
resolve2(null);
|
|
107507
107924
|
}
|
|
107508
107925
|
return;
|
|
107509
107926
|
}
|
|
107510
|
-
|
|
107927
|
+
resolve2(null);
|
|
107511
107928
|
};
|
|
107512
107929
|
request.onerror = () => {
|
|
107513
107930
|
db.close();
|
|
@@ -107524,17 +107941,17 @@ async function clearAudienceContent(sessionId) {
|
|
|
107524
107941
|
}
|
|
107525
107942
|
try {
|
|
107526
107943
|
const db = await openDb();
|
|
107527
|
-
return new Promise((
|
|
107944
|
+
return new Promise((resolve2) => {
|
|
107528
107945
|
const tx = db.transaction(STORE_NAME2, "readwrite");
|
|
107529
107946
|
const store = tx.objectStore(STORE_NAME2);
|
|
107530
107947
|
store.delete(CONTENT_KEY);
|
|
107531
107948
|
tx.oncomplete = () => {
|
|
107532
107949
|
db.close();
|
|
107533
|
-
|
|
107950
|
+
resolve2();
|
|
107534
107951
|
};
|
|
107535
107952
|
tx.onerror = () => {
|
|
107536
107953
|
db.close();
|
|
107537
|
-
|
|
107954
|
+
resolve2();
|
|
107538
107955
|
};
|
|
107539
107956
|
});
|
|
107540
107957
|
} catch {
|
|
@@ -107692,6 +108109,149 @@ var PRESENT_TOOLBAR_CLASSES = {
|
|
|
107692
108109
|
/** Underline showing a tool's current colour. */
|
|
107693
108110
|
swatchBar: "absolute bottom-0.5 left-1/2 -translate-x-1/2 w-3 h-0.5 rounded-full"
|
|
107694
108111
|
};
|
|
108112
|
+
var PRESENTER_CONSOLE_CONTROLS = [
|
|
108113
|
+
{
|
|
108114
|
+
id: "timer-toggle",
|
|
108115
|
+
kind: "button",
|
|
108116
|
+
labelKey: "pptx.presenter.toggleTimer",
|
|
108117
|
+
icon: "circle-pause",
|
|
108118
|
+
activeIcon: "circle-play"
|
|
108119
|
+
},
|
|
108120
|
+
{ id: "timer-reset", kind: "button", labelKey: "pptx.presenter.resetTimer", icon: "rotate-ccw" },
|
|
108121
|
+
{ id: "divider-timer", kind: "divider" },
|
|
108122
|
+
{
|
|
108123
|
+
id: "all-slides",
|
|
108124
|
+
kind: "button",
|
|
108125
|
+
labelKey: "pptx.presenter.seeAllSlides",
|
|
108126
|
+
icon: "grid-2x2"
|
|
108127
|
+
},
|
|
108128
|
+
{ id: "zoom-in", kind: "button", labelKey: "pptx.presenter.zoomIn", icon: "zoom-in" },
|
|
108129
|
+
{ id: "zoom-out", kind: "button", labelKey: "pptx.presenter.zoomOut", icon: "zoom-out" },
|
|
108130
|
+
{ id: "zoom-reset", kind: "button", labelKey: "pptx.presenter.resetZoom", icon: "scan" },
|
|
108131
|
+
{ id: "divider-zoom", kind: "divider" },
|
|
108132
|
+
{
|
|
108133
|
+
id: "laser",
|
|
108134
|
+
kind: "toggle",
|
|
108135
|
+
labelKey: "pptx.presentation.laserPointer",
|
|
108136
|
+
icon: "mouse-pointer-2"
|
|
108137
|
+
},
|
|
108138
|
+
{ id: "pen", kind: "toggle", labelKey: "pptx.presentation.pen", icon: "pen-tool" },
|
|
108139
|
+
{
|
|
108140
|
+
id: "highlighter",
|
|
108141
|
+
kind: "toggle",
|
|
108142
|
+
labelKey: "pptx.presentation.highlighter",
|
|
108143
|
+
icon: "highlighter"
|
|
108144
|
+
},
|
|
108145
|
+
{ id: "eraser", kind: "toggle", labelKey: "pptx.presentation.eraser", icon: "eraser" },
|
|
108146
|
+
{ id: "divider-tools", kind: "divider" },
|
|
108147
|
+
{ id: "blackout-black", kind: "toggle", labelKey: "pptx.presenter.blackScreen", glyph: "B" },
|
|
108148
|
+
{ id: "blackout-white", kind: "toggle", labelKey: "pptx.presenter.whiteScreen", glyph: "W" },
|
|
108149
|
+
{
|
|
108150
|
+
id: "captions",
|
|
108151
|
+
kind: "toggle",
|
|
108152
|
+
labelKey: "pptx.slideShow.subtitlesTooltip",
|
|
108153
|
+
icon: "captions"
|
|
108154
|
+
},
|
|
108155
|
+
{ id: "spacer", kind: "spacer" },
|
|
108156
|
+
{
|
|
108157
|
+
id: "audience",
|
|
108158
|
+
kind: "toggle",
|
|
108159
|
+
labelKey: "pptx.presenter.openAudienceWindow",
|
|
108160
|
+
activeLabelKey: "pptx.presenter.closeAudienceWindow",
|
|
108161
|
+
icon: "monitor",
|
|
108162
|
+
activeIcon: "monitor-off"
|
|
108163
|
+
},
|
|
108164
|
+
{
|
|
108165
|
+
id: "swap-displays",
|
|
108166
|
+
kind: "button",
|
|
108167
|
+
labelKey: "pptx.presenter.swapDisplays",
|
|
108168
|
+
icon: "arrow-left-right"
|
|
108169
|
+
},
|
|
108170
|
+
{ id: "end", kind: "button", labelKey: "pptx.presenter.endPresentation", icon: "x" }
|
|
108171
|
+
];
|
|
108172
|
+
PRESENTER_CONSOLE_CONTROLS.map(
|
|
108173
|
+
(control) => control.id
|
|
108174
|
+
);
|
|
108175
|
+
PRESENTER_CONSOLE_CONTROLS.flatMap(
|
|
108176
|
+
(control) => control.labelKey === void 0 ? [] : [control.labelKey]
|
|
108177
|
+
);
|
|
108178
|
+
var PRESENTER_NAVIGATOR_LABEL_KEYS = {
|
|
108179
|
+
title: "pptx.presenter.slideNavigator",
|
|
108180
|
+
subtitle: "pptx.presenter.seeAllSlides",
|
|
108181
|
+
close: "pptx.presenter.closeNavigator"
|
|
108182
|
+
};
|
|
108183
|
+
function presenterNextDisabled() {
|
|
108184
|
+
return false;
|
|
108185
|
+
}
|
|
108186
|
+
function presenterPrevDisabled(currentIndex) {
|
|
108187
|
+
return currentIndex <= 0;
|
|
108188
|
+
}
|
|
108189
|
+
var PRESENTER_TIMER_SEGMENT_MS = 5 * 60 * 1e3;
|
|
108190
|
+
function presenterTimerProgress(elapsedMs) {
|
|
108191
|
+
const elapsed = Math.max(0, elapsedMs);
|
|
108192
|
+
return {
|
|
108193
|
+
percent: Math.min(
|
|
108194
|
+
100,
|
|
108195
|
+
elapsed % PRESENTER_TIMER_SEGMENT_MS / PRESENTER_TIMER_SEGMENT_MS * 100
|
|
108196
|
+
),
|
|
108197
|
+
segment: Math.floor(elapsed / PRESENTER_TIMER_SEGMENT_MS)
|
|
108198
|
+
};
|
|
108199
|
+
}
|
|
108200
|
+
var PRESENTER_CONSOLE_CLASSES = {
|
|
108201
|
+
/** The console root, laid over the show stage. */
|
|
108202
|
+
root: "absolute inset-0 z-50 flex flex-col bg-card text-foreground",
|
|
108203
|
+
/** The control strip across the top. */
|
|
108204
|
+
strip: "flex flex-wrap items-center gap-1 border-b border-border bg-card px-3 py-2",
|
|
108205
|
+
/** A strip control, inactive. */
|
|
108206
|
+
control: "inline-flex h-9 min-w-9 items-center justify-center gap-2 rounded-md px-2 text-xs transition-colors bg-muted text-foreground hover:bg-accent",
|
|
108207
|
+
/** A strip control, active. */
|
|
108208
|
+
controlActive: "inline-flex h-9 min-w-9 items-center justify-center gap-2 rounded-md px-2 text-xs transition-colors bg-primary text-primary-foreground",
|
|
108209
|
+
/** Vertical hairline between strip groups. */
|
|
108210
|
+
divider: "mx-1 h-6 w-px bg-border",
|
|
108211
|
+
/** Flexible gap pushing the trailing group right. */
|
|
108212
|
+
spacer: "flex-1",
|
|
108213
|
+
/** The body row: current-slide pane plus rail. */
|
|
108214
|
+
body: "flex flex-1 min-h-0",
|
|
108215
|
+
/** The current-slide pane. */
|
|
108216
|
+
main: "relative flex-[7] flex flex-col items-center justify-center bg-black p-6 min-w-0 overflow-hidden",
|
|
108217
|
+
/** The right-hand rail. */
|
|
108218
|
+
rail: "flex flex-[3] min-w-[260px] max-w-[440px] flex-col border-l border-border bg-background",
|
|
108219
|
+
/** Rail section heading (Current Time / Next Slide / Speaker Notes). */
|
|
108220
|
+
railHeading: "text-[10px] uppercase tracking-wider text-muted-foreground",
|
|
108221
|
+
/** Timer progress bar track. */
|
|
108222
|
+
progressTrack: "h-1.5 w-full bg-muted/60 flex-shrink-0",
|
|
108223
|
+
/** Timer progress bar fill. */
|
|
108224
|
+
progressFill: "h-full bg-primary transition-[width] duration-1000 ease-linear",
|
|
108225
|
+
/** The "all slides" navigator overlay. */
|
|
108226
|
+
navigator: "absolute inset-0 z-[120] overflow-auto bg-card p-6",
|
|
108227
|
+
/** The navigator's tile grid. */
|
|
108228
|
+
navigatorGrid: "grid gap-5 [grid-template-columns:repeat(auto-fill,minmax(220px,1fr))]"
|
|
108229
|
+
};
|
|
108230
|
+
var AUDIENCE_FULLSCREEN_BOUNCE_MS = 1e3;
|
|
108231
|
+
function createPresenterShowGuard(options) {
|
|
108232
|
+
const graceMs = options?.graceMs ?? AUDIENCE_FULLSCREEN_BOUNCE_MS;
|
|
108233
|
+
let armedAt;
|
|
108234
|
+
const stillArmed = (now) => armedAt !== void 0 && now - armedAt >= 0 && now - armedAt <= graceMs;
|
|
108235
|
+
return {
|
|
108236
|
+
expectAudienceBounce(now = Date.now()) {
|
|
108237
|
+
armedAt = now;
|
|
108238
|
+
},
|
|
108239
|
+
classifyFullscreenExit(now = Date.now()) {
|
|
108240
|
+
if (!stillArmed(now)) {
|
|
108241
|
+
armedAt = void 0;
|
|
108242
|
+
return "end-show";
|
|
108243
|
+
}
|
|
108244
|
+
armedAt = void 0;
|
|
108245
|
+
return "restore-show";
|
|
108246
|
+
},
|
|
108247
|
+
isExpectingBounce(now = Date.now()) {
|
|
108248
|
+
return stillArmed(now);
|
|
108249
|
+
},
|
|
108250
|
+
disarm() {
|
|
108251
|
+
armedAt = void 0;
|
|
108252
|
+
}
|
|
108253
|
+
};
|
|
108254
|
+
}
|
|
107695
108255
|
function createPresentationKeyBuffer() {
|
|
107696
108256
|
return { digits: "" };
|
|
107697
108257
|
}
|
|
@@ -107946,19 +108506,19 @@ function groupElementParagraphs(element) {
|
|
|
107946
108506
|
}
|
|
107947
108507
|
return groups;
|
|
107948
108508
|
}
|
|
107949
|
-
function paragraphGroupText(
|
|
107950
|
-
return
|
|
108509
|
+
function paragraphGroupText(group2) {
|
|
108510
|
+
return group2.content.map((segment) => segment.isLineBreak ? " " : segment.text).join("");
|
|
107951
108511
|
}
|
|
107952
|
-
function paragraphGroupLevel(
|
|
107953
|
-
const first =
|
|
108512
|
+
function paragraphGroupLevel(group2) {
|
|
108513
|
+
const first = group2.marker ?? group2.content[0];
|
|
107954
108514
|
const level = first?.paragraphLevel;
|
|
107955
108515
|
return typeof level === "number" && level > 0 ? Math.min(level, MAX_PARAGRAPH_LEVEL) : 0;
|
|
107956
108516
|
}
|
|
107957
108517
|
function readElementParagraphs(element) {
|
|
107958
108518
|
const groups = groupElementParagraphs(element);
|
|
107959
|
-
const paragraphs = groups.map((
|
|
107960
|
-
text: paragraphGroupText(
|
|
107961
|
-
level: paragraphGroupLevel(
|
|
108519
|
+
const paragraphs = groups.map((group2) => ({
|
|
108520
|
+
text: paragraphGroupText(group2),
|
|
108521
|
+
level: paragraphGroupLevel(group2)
|
|
107962
108522
|
}));
|
|
107963
108523
|
let last = paragraphs.length - 1;
|
|
107964
108524
|
while (last >= 0 && paragraphs[last].text.length === 0) {
|
|
@@ -108073,11 +108633,11 @@ function withLevel(segments, level) {
|
|
|
108073
108633
|
return next;
|
|
108074
108634
|
});
|
|
108075
108635
|
}
|
|
108076
|
-
function rebuildParagraph(
|
|
108077
|
-
if (
|
|
108078
|
-
return [...
|
|
108636
|
+
function rebuildParagraph(group2, donor, text2, elementStyle) {
|
|
108637
|
+
if (group2 && paragraphGroupText(group2) === text2) {
|
|
108638
|
+
return [...group2.marker ? [group2.marker] : [], ...group2.content];
|
|
108079
108639
|
}
|
|
108080
|
-
const source =
|
|
108640
|
+
const source = group2 ?? donor;
|
|
108081
108641
|
const marker = source?.marker ? [source.marker] : [];
|
|
108082
108642
|
const content = remapTextToSegments(text2, source?.content, elementStyle);
|
|
108083
108643
|
return [...marker, ...content];
|
|
@@ -108860,7 +109420,7 @@ function replacePixels(data, fromColor, toColor, threshold, toTransparent) {
|
|
|
108860
109420
|
}
|
|
108861
109421
|
var DEFAULT_COLOR_CHANGE_TOLERANCE = 12;
|
|
108862
109422
|
function applyColorChange(imageDataUrl, fromHex, toHex22, tolerancePct = DEFAULT_COLOR_CHANGE_TOLERANCE, toTransparent = false) {
|
|
108863
|
-
return new Promise((
|
|
109423
|
+
return new Promise((resolve2, reject) => {
|
|
108864
109424
|
const fromColor = parseHexToRgb(fromHex);
|
|
108865
109425
|
const toColor = parseHexToRgb(toHex22);
|
|
108866
109426
|
if (!fromColor || !toColor) {
|
|
@@ -108888,7 +109448,7 @@ function applyColorChange(imageDataUrl, fromHex, toHex22, tolerancePct = DEFAULT
|
|
|
108888
109448
|
const threshold = toleranceToThreshold(tolerancePct);
|
|
108889
109449
|
replacePixels(imageData.data, fromColor, toColor, threshold, toTransparent);
|
|
108890
109450
|
ctx.putImageData(imageData, 0, 0);
|
|
108891
|
-
|
|
109451
|
+
resolve2({
|
|
108892
109452
|
dataUrl: canvas.toDataURL("image/png"),
|
|
108893
109453
|
width: w,
|
|
108894
109454
|
height: h
|
|
@@ -108939,7 +109499,7 @@ function mapDuotonePixels(data, shadow, highlight) {
|
|
|
108939
109499
|
}
|
|
108940
109500
|
}
|
|
108941
109501
|
function applyDuotone(imageDataUrl, shadowHex, highlightHex) {
|
|
108942
|
-
return new Promise((
|
|
109502
|
+
return new Promise((resolve2, reject) => {
|
|
108943
109503
|
const shadow = parseHexToRgb(shadowHex);
|
|
108944
109504
|
const highlight = parseHexToRgb(highlightHex);
|
|
108945
109505
|
if (!shadow || !highlight) {
|
|
@@ -108966,7 +109526,7 @@ function applyDuotone(imageDataUrl, shadowHex, highlightHex) {
|
|
|
108966
109526
|
const imageData = ctx.getImageData(0, 0, w, h);
|
|
108967
109527
|
mapDuotonePixels(imageData.data, shadow, highlight);
|
|
108968
109528
|
ctx.putImageData(imageData, 0, 0);
|
|
108969
|
-
|
|
109529
|
+
resolve2({
|
|
108970
109530
|
dataUrl: canvas.toDataURL("image/png"),
|
|
108971
109531
|
width: w,
|
|
108972
109532
|
height: h
|
|
@@ -109340,6 +109900,129 @@ function isElementActionable(element, options = {}) {
|
|
|
109340
109900
|
}
|
|
109341
109901
|
return element.type === "zoom" && hasZoomHandler;
|
|
109342
109902
|
}
|
|
109903
|
+
var LINK_TOOLTIP_HOST_CLASS = "pptx-link-host";
|
|
109904
|
+
var LINK_TOOLTIP_CLASS = "pptx-link-tooltip";
|
|
109905
|
+
var LINK_TOOLTIP_PANEL_CLASS = "pptx-link-tooltip-panel";
|
|
109906
|
+
var LINK_TOOLTIP_LABEL_CLASS = "pptx-link-tooltip-label";
|
|
109907
|
+
var LINK_TOOLTIP_HINT_CLASS = "pptx-link-tooltip-hint";
|
|
109908
|
+
var ACTION_INDICATOR_CLASS = "pptx-action-indicator";
|
|
109909
|
+
var ACTION_INDICATOR_ICON_PATH = "M13 2L3 14h9l-1 8 10-12h-9l1-8z";
|
|
109910
|
+
var ACTION_AFFORDANCE_CSS = `
|
|
109911
|
+
.${ACTION_INDICATOR_CLASS} {
|
|
109912
|
+
position: absolute;
|
|
109913
|
+
top: -4px;
|
|
109914
|
+
right: -4px;
|
|
109915
|
+
z-index: 20;
|
|
109916
|
+
display: flex;
|
|
109917
|
+
width: 16px;
|
|
109918
|
+
height: 16px;
|
|
109919
|
+
align-items: center;
|
|
109920
|
+
justify-content: center;
|
|
109921
|
+
border-radius: 9999px;
|
|
109922
|
+
background: #f59e0b;
|
|
109923
|
+
/* Left pointer-interactive on purpose: the badge's native title attribute is
|
|
109924
|
+
the only place the deck's screen tip is readable, and a title on a
|
|
109925
|
+
pointer-transparent node never fires. Clicks still reach the element
|
|
109926
|
+
underneath by bubbling, so nothing is swallowed. */
|
|
109927
|
+
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 10%), 0 1px 2px -1px rgb(0 0 0 / 10%);
|
|
109928
|
+
}
|
|
109929
|
+
.${ACTION_INDICATOR_CLASS} svg {
|
|
109930
|
+
width: 10px;
|
|
109931
|
+
height: 10px;
|
|
109932
|
+
color: #fff;
|
|
109933
|
+
}
|
|
109934
|
+
.${LINK_TOOLTIP_CLASS} {
|
|
109935
|
+
position: absolute;
|
|
109936
|
+
top: 100%;
|
|
109937
|
+
left: 4px;
|
|
109938
|
+
z-index: 9999;
|
|
109939
|
+
max-width: 16rem;
|
|
109940
|
+
margin-top: 4px;
|
|
109941
|
+
opacity: 0;
|
|
109942
|
+
transition: opacity 150ms;
|
|
109943
|
+
pointer-events: none;
|
|
109944
|
+
font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
109945
|
+
text-align: left;
|
|
109946
|
+
}
|
|
109947
|
+
.${LINK_TOOLTIP_HOST_CLASS}:hover > .${LINK_TOOLTIP_CLASS} {
|
|
109948
|
+
opacity: 1;
|
|
109949
|
+
}
|
|
109950
|
+
.${LINK_TOOLTIP_PANEL_CLASS} {
|
|
109951
|
+
border: 1px solid var(--pptx-border, #374151);
|
|
109952
|
+
border-radius: 0.25rem;
|
|
109953
|
+
background: var(--pptx-popover, #111827);
|
|
109954
|
+
padding: 6px 10px;
|
|
109955
|
+
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 10%), 0 4px 6px -4px rgb(0 0 0 / 10%);
|
|
109956
|
+
}
|
|
109957
|
+
.${LINK_TOOLTIP_LABEL_CLASS} {
|
|
109958
|
+
overflow: hidden;
|
|
109959
|
+
color: var(--pptx-foreground, #f3f4f6);
|
|
109960
|
+
font-size: 12px;
|
|
109961
|
+
font-weight: 400;
|
|
109962
|
+
font-style: normal;
|
|
109963
|
+
line-height: 16px;
|
|
109964
|
+
letter-spacing: normal;
|
|
109965
|
+
text-decoration: none;
|
|
109966
|
+
text-overflow: ellipsis;
|
|
109967
|
+
text-transform: none;
|
|
109968
|
+
white-space: nowrap;
|
|
109969
|
+
}
|
|
109970
|
+
.${LINK_TOOLTIP_HINT_CLASS} {
|
|
109971
|
+
margin-top: 2px;
|
|
109972
|
+
color: var(--pptx-muted-foreground, #9ca3af);
|
|
109973
|
+
font-size: 10px;
|
|
109974
|
+
font-weight: 400;
|
|
109975
|
+
font-style: normal;
|
|
109976
|
+
line-height: 12px;
|
|
109977
|
+
letter-spacing: normal;
|
|
109978
|
+
text-decoration: none;
|
|
109979
|
+
text-transform: none;
|
|
109980
|
+
}
|
|
109981
|
+
`;
|
|
109982
|
+
var AFFORDANCE_STYLE_ELEMENT_ID = "pptx-action-affordance-styles";
|
|
109983
|
+
function ensureActionAffordanceStyles(doc) {
|
|
109984
|
+
const target = doc ?? (typeof document === "undefined" ? void 0 : document);
|
|
109985
|
+
if (!target || target.getElementById(AFFORDANCE_STYLE_ELEMENT_ID)) {
|
|
109986
|
+
return;
|
|
109987
|
+
}
|
|
109988
|
+
const style = target.createElement("style");
|
|
109989
|
+
style.id = AFFORDANCE_STYLE_ELEMENT_ID;
|
|
109990
|
+
style.textContent = ACTION_AFFORDANCE_CSS;
|
|
109991
|
+
(target.head ?? target.documentElement).appendChild(style);
|
|
109992
|
+
}
|
|
109993
|
+
function actionAffordanceLabels(translate) {
|
|
109994
|
+
return {
|
|
109995
|
+
hasAction: translate("pptx.element.hasAction"),
|
|
109996
|
+
link: translate("pptx.element.linkFallback"),
|
|
109997
|
+
followLink: translate("pptx.linkTooltip.followLink"),
|
|
109998
|
+
presentationMode: translate("pptx.linkTooltip.presentationMode")
|
|
109999
|
+
};
|
|
110000
|
+
}
|
|
110001
|
+
var NO_AFFORDANCE = Object.freeze({
|
|
110002
|
+
showIndicator: false,
|
|
110003
|
+
indicatorTitle: "",
|
|
110004
|
+
showLinkTooltip: false,
|
|
110005
|
+
linkTooltipLabel: "",
|
|
110006
|
+
linkTooltipHint: ""
|
|
110007
|
+
});
|
|
110008
|
+
function resolveElementActionAffordance(element, context) {
|
|
110009
|
+
const { canInteract, presenting = false, labels } = context;
|
|
110010
|
+
const click = element.actionClick;
|
|
110011
|
+
const hover = element.actionHover;
|
|
110012
|
+
if (!canInteract || presenting || !click && !hover) {
|
|
110013
|
+
return NO_AFFORDANCE;
|
|
110014
|
+
}
|
|
110015
|
+
const hasUrl = Boolean(click?.url);
|
|
110016
|
+
return {
|
|
110017
|
+
showIndicator: true,
|
|
110018
|
+
indicatorTitle: click?.tooltip || hover?.tooltip || labels.hasAction,
|
|
110019
|
+
// The tooltip names a CLICK destination, so a hover-only action gets the
|
|
110020
|
+
// badge but no popover: there is nothing to follow and no key to press.
|
|
110021
|
+
showLinkTooltip: Boolean(click),
|
|
110022
|
+
linkTooltipLabel: click?.tooltip || click?.url || click?.action || labels.link,
|
|
110023
|
+
linkTooltipHint: hasUrl ? labels.followLink : labels.presentationMode
|
|
110024
|
+
};
|
|
110025
|
+
}
|
|
109343
110026
|
var ELEMENT_ACTION_TYPE_OPTIONS = [
|
|
109344
110027
|
{ value: "none", labelKey: "pptx.hyperlink.actionNone" },
|
|
109345
110028
|
{ value: "url", labelKey: "pptx.action.gotoUrl" },
|
|
@@ -109828,6 +110511,19 @@ function rebuildDrawingShapesIfCleared(smartArtData, layout, palette, style, ele
|
|
|
109828
110511
|
drawingShapes: reflowToDrawingShapes(layoutResult, smartArtData.nodes)
|
|
109829
110512
|
};
|
|
109830
110513
|
}
|
|
110514
|
+
function mediaPlaybackAttributes(source) {
|
|
110515
|
+
return {
|
|
110516
|
+
loop: source.loop === true,
|
|
110517
|
+
volume: Math.max(0, Math.min(1, source.volume ?? 1)),
|
|
110518
|
+
playbackRate: Math.max(0.25, Math.min(4, source.playbackSpeed ?? 1))
|
|
110519
|
+
};
|
|
110520
|
+
}
|
|
110521
|
+
function mediaTransportVisible(surface) {
|
|
110522
|
+
if (surface.presenting || surface.preview) {
|
|
110523
|
+
return false;
|
|
110524
|
+
}
|
|
110525
|
+
return surface.canvasTransport;
|
|
110526
|
+
}
|
|
109831
110527
|
function buildSummaryZoomView(element, lookup) {
|
|
109832
110528
|
if (element.zoomType !== "summary" || !element.summaryTargets?.length) {
|
|
109833
110529
|
return void 0;
|
|
@@ -110919,7 +111615,7 @@ var AUTOSAVE_DB_NAME = "pptx-viewer-autosave";
|
|
|
110919
111615
|
var AUTOSAVE_DB_VERSION = 1;
|
|
110920
111616
|
var AUTOSAVE_STORE_NAME = "recoveryVersions";
|
|
110921
111617
|
function openAutosaveDb() {
|
|
110922
|
-
return new Promise((
|
|
111618
|
+
return new Promise((resolve2, reject) => {
|
|
110923
111619
|
const req = indexedDB.open(AUTOSAVE_DB_NAME, AUTOSAVE_DB_VERSION);
|
|
110924
111620
|
req.onupgradeneeded = () => {
|
|
110925
111621
|
const db = req.result;
|
|
@@ -110927,13 +111623,13 @@ function openAutosaveDb() {
|
|
|
110927
111623
|
db.createObjectStore(AUTOSAVE_STORE_NAME, { keyPath: "key" });
|
|
110928
111624
|
}
|
|
110929
111625
|
};
|
|
110930
|
-
req.onsuccess = () =>
|
|
111626
|
+
req.onsuccess = () => resolve2(req.result);
|
|
110931
111627
|
req.onerror = () => reject(req.error);
|
|
110932
111628
|
});
|
|
110933
111629
|
}
|
|
110934
111630
|
async function deleteOldestAutosaveEntry() {
|
|
110935
111631
|
const db = await openAutosaveDb();
|
|
110936
|
-
return new Promise((
|
|
111632
|
+
return new Promise((resolve2) => {
|
|
110937
111633
|
try {
|
|
110938
111634
|
const tx = db.transaction(AUTOSAVE_STORE_NAME, "readwrite");
|
|
110939
111635
|
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
@@ -110955,24 +111651,24 @@ async function deleteOldestAutosaveEntry() {
|
|
|
110955
111651
|
};
|
|
110956
111652
|
tx.oncomplete = () => {
|
|
110957
111653
|
db.close();
|
|
110958
|
-
|
|
111654
|
+
resolve2(oldestKey !== null);
|
|
110959
111655
|
};
|
|
110960
111656
|
tx.onerror = () => {
|
|
110961
111657
|
db.close();
|
|
110962
|
-
|
|
111658
|
+
resolve2(false);
|
|
110963
111659
|
};
|
|
110964
111660
|
} catch {
|
|
110965
111661
|
try {
|
|
110966
111662
|
db.close();
|
|
110967
111663
|
} catch {
|
|
110968
111664
|
}
|
|
110969
|
-
|
|
111665
|
+
resolve2(false);
|
|
110970
111666
|
}
|
|
110971
111667
|
});
|
|
110972
111668
|
}
|
|
110973
111669
|
function putAutosaveRecord(filePath, data) {
|
|
110974
111670
|
return openAutosaveDb().then(
|
|
110975
|
-
(db) => new Promise((
|
|
111671
|
+
(db) => new Promise((resolve2, reject) => {
|
|
110976
111672
|
const tx = db.transaction(AUTOSAVE_STORE_NAME, "readwrite");
|
|
110977
111673
|
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
110978
111674
|
store.put({
|
|
@@ -110983,7 +111679,7 @@ function putAutosaveRecord(filePath, data) {
|
|
|
110983
111679
|
});
|
|
110984
111680
|
tx.oncomplete = () => {
|
|
110985
111681
|
db.close();
|
|
110986
|
-
|
|
111682
|
+
resolve2(true);
|
|
110987
111683
|
};
|
|
110988
111684
|
tx.onerror = () => {
|
|
110989
111685
|
db.close();
|
|
@@ -110994,23 +111690,23 @@ function putAutosaveRecord(filePath, data) {
|
|
|
110994
111690
|
}
|
|
110995
111691
|
async function getAutosaveSnapshot(filePath) {
|
|
110996
111692
|
const db = await openAutosaveDb();
|
|
110997
|
-
return new Promise((
|
|
111693
|
+
return new Promise((resolve2) => {
|
|
110998
111694
|
const tx = db.transaction(AUTOSAVE_STORE_NAME, "readonly");
|
|
110999
111695
|
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
111000
111696
|
const req = store.get(filePath);
|
|
111001
111697
|
req.onsuccess = () => {
|
|
111002
111698
|
db.close();
|
|
111003
|
-
|
|
111699
|
+
resolve2(req.result);
|
|
111004
111700
|
};
|
|
111005
111701
|
req.onerror = () => {
|
|
111006
111702
|
db.close();
|
|
111007
|
-
|
|
111703
|
+
resolve2(void 0);
|
|
111008
111704
|
};
|
|
111009
111705
|
});
|
|
111010
111706
|
}
|
|
111011
111707
|
async function listAutosaveSnapshots() {
|
|
111012
111708
|
const db = await openAutosaveDb();
|
|
111013
|
-
return new Promise((
|
|
111709
|
+
return new Promise((resolve2) => {
|
|
111014
111710
|
const results = [];
|
|
111015
111711
|
try {
|
|
111016
111712
|
const tx = db.transaction(AUTOSAVE_STORE_NAME, "readonly");
|
|
@@ -111026,42 +111722,42 @@ async function listAutosaveSnapshots() {
|
|
|
111026
111722
|
};
|
|
111027
111723
|
tx.oncomplete = () => {
|
|
111028
111724
|
db.close();
|
|
111029
|
-
|
|
111725
|
+
resolve2(results);
|
|
111030
111726
|
};
|
|
111031
111727
|
tx.onerror = () => {
|
|
111032
111728
|
db.close();
|
|
111033
|
-
|
|
111729
|
+
resolve2([]);
|
|
111034
111730
|
};
|
|
111035
111731
|
} catch {
|
|
111036
111732
|
try {
|
|
111037
111733
|
db.close();
|
|
111038
111734
|
} catch {
|
|
111039
111735
|
}
|
|
111040
|
-
|
|
111736
|
+
resolve2([]);
|
|
111041
111737
|
}
|
|
111042
111738
|
});
|
|
111043
111739
|
}
|
|
111044
111740
|
async function deleteAutosaveSnapshot(filePath) {
|
|
111045
111741
|
const db = await openAutosaveDb();
|
|
111046
|
-
return new Promise((
|
|
111742
|
+
return new Promise((resolve2) => {
|
|
111047
111743
|
try {
|
|
111048
111744
|
const tx = db.transaction(AUTOSAVE_STORE_NAME, "readwrite");
|
|
111049
111745
|
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
111050
111746
|
store.delete(filePath);
|
|
111051
111747
|
tx.oncomplete = () => {
|
|
111052
111748
|
db.close();
|
|
111053
|
-
|
|
111749
|
+
resolve2(true);
|
|
111054
111750
|
};
|
|
111055
111751
|
tx.onerror = () => {
|
|
111056
111752
|
db.close();
|
|
111057
|
-
|
|
111753
|
+
resolve2(false);
|
|
111058
111754
|
};
|
|
111059
111755
|
} catch {
|
|
111060
111756
|
try {
|
|
111061
111757
|
db.close();
|
|
111062
111758
|
} catch {
|
|
111063
111759
|
}
|
|
111064
|
-
|
|
111760
|
+
resolve2(false);
|
|
111065
111761
|
}
|
|
111066
111762
|
});
|
|
111067
111763
|
}
|
|
@@ -111894,17 +112590,17 @@ function shouldConfirmExternalHyperlink(options, href) {
|
|
|
111894
112590
|
}
|
|
111895
112591
|
return /^https?:/i.test(href);
|
|
111896
112592
|
}
|
|
111897
|
-
function toggle(
|
|
111898
|
-
return { kind: "toggle", group, key, labelKey, ...extra };
|
|
112593
|
+
function toggle(group2, key, labelKey, extra) {
|
|
112594
|
+
return { kind: "toggle", group: group2, key, labelKey, ...extra };
|
|
111899
112595
|
}
|
|
111900
|
-
function select(
|
|
111901
|
-
return { kind: "select", group, key, labelKey, choices: choiceList };
|
|
112596
|
+
function select(group2, key, labelKey, choiceList) {
|
|
112597
|
+
return { kind: "select", group: group2, key, labelKey, choices: choiceList };
|
|
111902
112598
|
}
|
|
111903
|
-
function numberControl(
|
|
111904
|
-
return { kind: "number", group, key, labelKey, min, max, unitKey };
|
|
112599
|
+
function numberControl(group2, key, labelKey, min, max, unitKey) {
|
|
112600
|
+
return { kind: "number", group: group2, key, labelKey, min, max, unitKey };
|
|
111905
112601
|
}
|
|
111906
|
-
function textControl(
|
|
111907
|
-
return { kind: "text", group, key, labelKey, maxLength: 64 };
|
|
112602
|
+
function textControl(group2, key, labelKey) {
|
|
112603
|
+
return { kind: "text", group: group2, key, labelKey, maxLength: 64 };
|
|
111908
112604
|
}
|
|
111909
112605
|
function choices(prefix, values) {
|
|
111910
112606
|
return values.map((value) => ({ value, labelKey: `${prefix}.${value}` }));
|
|
@@ -112386,17 +113082,17 @@ function createViewerOptionsStore(init) {
|
|
|
112386
113082
|
return {
|
|
112387
113083
|
getOptions: () => options,
|
|
112388
113084
|
setOptions: (next) => commit(cloneOptions(next)),
|
|
112389
|
-
setValue: (
|
|
112390
|
-
const defaults = DEFAULT_VIEWER_OPTIONS[
|
|
113085
|
+
setValue: (group2, key, value) => {
|
|
113086
|
+
const defaults = DEFAULT_VIEWER_OPTIONS[group2];
|
|
112391
113087
|
if (!(key in defaults) || typeof defaults[key] !== typeof value) {
|
|
112392
113088
|
return;
|
|
112393
113089
|
}
|
|
112394
113090
|
const next = cloneOptions(options);
|
|
112395
|
-
next[
|
|
113091
|
+
next[group2][key] = value;
|
|
112396
113092
|
commit(next);
|
|
112397
113093
|
},
|
|
112398
|
-
getValue: (
|
|
112399
|
-
const record = options[
|
|
113094
|
+
getValue: (group2, key) => {
|
|
113095
|
+
const record = options[group2];
|
|
112400
113096
|
const value = record[key];
|
|
112401
113097
|
return typeof value === "boolean" || typeof value === "number" || typeof value === "string" ? value : void 0;
|
|
112402
113098
|
},
|
|
@@ -112418,14 +113114,14 @@ function createViewerOptionsStore(init) {
|
|
|
112418
113114
|
next.quickAccess.commandIds = [...commandIds];
|
|
112419
113115
|
commit(next);
|
|
112420
113116
|
},
|
|
112421
|
-
reset: (
|
|
112422
|
-
if (!
|
|
113117
|
+
reset: (group2) => {
|
|
113118
|
+
if (!group2) {
|
|
112423
113119
|
commit(cloneOptions(DEFAULT_VIEWER_OPTIONS));
|
|
112424
113120
|
return;
|
|
112425
113121
|
}
|
|
112426
113122
|
const next = cloneOptions(options);
|
|
112427
113123
|
const defaults = cloneOptions(DEFAULT_VIEWER_OPTIONS);
|
|
112428
|
-
next[
|
|
113124
|
+
next[group2] = defaults[group2];
|
|
112429
113125
|
commit(next);
|
|
112430
113126
|
},
|
|
112431
113127
|
subscribe: (listener) => {
|
|
@@ -113375,7 +114071,7 @@ var VAR_DEPENDENT_PROPERTIES = [
|
|
|
113375
114071
|
function resolveCustomProperties(root) {
|
|
113376
114072
|
const elements = root.querySelectorAll("*");
|
|
113377
114073
|
const view = root.ownerDocument?.defaultView ?? window;
|
|
113378
|
-
const
|
|
114074
|
+
const resolve2 = (el) => {
|
|
113379
114075
|
const htmlEl = el;
|
|
113380
114076
|
if (!htmlEl.style) {
|
|
113381
114077
|
return;
|
|
@@ -113391,8 +114087,8 @@ function resolveCustomProperties(root) {
|
|
|
113391
114087
|
}
|
|
113392
114088
|
}
|
|
113393
114089
|
};
|
|
113394
|
-
|
|
113395
|
-
elements.forEach(
|
|
114090
|
+
resolve2(root);
|
|
114091
|
+
elements.forEach(resolve2);
|
|
113396
114092
|
}
|
|
113397
114093
|
function preprocessCssForCapture(root, options = {}) {
|
|
113398
114094
|
const {
|
|
@@ -113430,9 +114126,9 @@ async function blobUrlToDataUrl(blobUrl) {
|
|
|
113430
114126
|
try {
|
|
113431
114127
|
const response = await fetch(blobUrl);
|
|
113432
114128
|
const blob = await response.blob();
|
|
113433
|
-
return await new Promise((
|
|
114129
|
+
return await new Promise((resolve2, reject) => {
|
|
113434
114130
|
const reader = new FileReader();
|
|
113435
|
-
reader.onloadend = () =>
|
|
114131
|
+
reader.onloadend = () => resolve2(reader.result);
|
|
113436
114132
|
reader.onerror = reject;
|
|
113437
114133
|
reader.readAsDataURL(blob);
|
|
113438
114134
|
});
|
|
@@ -113551,7 +114247,7 @@ var COMPLEX_COLOR_PROPERTIES = [
|
|
|
113551
114247
|
];
|
|
113552
114248
|
function resolveUnsupportedColours(root) {
|
|
113553
114249
|
const elements = root.querySelectorAll("*");
|
|
113554
|
-
const
|
|
114250
|
+
const resolve2 = (el) => {
|
|
113555
114251
|
const htmlEl = el;
|
|
113556
114252
|
if (!htmlEl.style) {
|
|
113557
114253
|
return;
|
|
@@ -113581,8 +114277,8 @@ function resolveUnsupportedColours(root) {
|
|
|
113581
114277
|
}
|
|
113582
114278
|
}
|
|
113583
114279
|
};
|
|
113584
|
-
|
|
113585
|
-
elements.forEach(
|
|
114280
|
+
resolve2(root);
|
|
114281
|
+
elements.forEach(resolve2);
|
|
113586
114282
|
}
|
|
113587
114283
|
function resolveRootCustomProperties(doc) {
|
|
113588
114284
|
const targets = [doc.documentElement, doc.body];
|
|
@@ -114098,4 +114794,4 @@ function segmentFrameCount(durationMs, fps) {
|
|
|
114098
114794
|
* `<p:extLst>` (optional)
|
|
114099
114795
|
*/
|
|
114100
114796
|
|
|
114101
|
-
export { ACTION_BUTTON_PRESETS, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_NAV, BACKSTAGE_TEMPLATES, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CATEGORIES, COLOR_MAP_ALIAS_KEYS, COMMON_FONTS, CONNECTION_TIMEOUT_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_INSERT_CHART_TYPE, DEFAULT_MOTION_PATH_PRESET_ID, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DIRECTIONAL_PRESETS, DUOTONE_PRESETS, ELEMENT_ACTION_TYPE_OPTIONS, EMPHASIS_PRESET_VALUES, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, GRADIENT_TYPE_OPTIONS, HANDOUT_OPTIONS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, LBL, LOCAL_SYNC_ORIGIN, MATERIAL_PRESETS, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, PATTERN_OPTIONS, PEN_COLORS, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENT_TOOLBAR_CLASSES, PRESETS, PRESET_THEMES, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, STATUS_BAR_CLASSES, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_LABELS, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_SLOT_LABEL_KEYS, THEME_PRESETS, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_ORIENTATION_TYPES, TRANSITION_VALID_DIRECTIONS, ThemePresets, VIEWER_OPTIONS_TABS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, acceptsPresentationInput, activateModalFocus, addChartCategory, addChartSeries, addQuickAccessCommand, addSection, addSmartArtNode, addSmartArtNodeAsChild, addTagToCollections, alignElements, animationEffectLabel, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyCaseTransformToSegments, applyChartBuildReveal, applyColorChange, applyDuotone, applyFormatToElement, applyMotionPathPreset, applyOutlineEdit, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyStyleToSelectedSegments, applyThemeOverrideToSlide, applyThemeToData, availableQuickAccessCommands, backstageCardsFor, bringForward, bringToFront, build3DExtrusionData, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildChartViewModel, buildCollaborationShareUrl, buildContextMenuEntries, buildCreateCollaborationConfig, buildCssGradientFromShapeStyle, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildGlowBoxShadow, buildHandoutsHtml, buildInitialGuides, buildInnerShadowCssFromShapeStyle, buildJoinCollaborationConfig, buildMorphTransitionPlan, buildMotionPathPreview, buildMultiLayerShadowCss, buildNotesHtml, buildNotesPdfBytes, buildOutline, buildOutlineHtml, buildPatternFillCss, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildReflectionCss, buildShadowCssFromShapeStyle, buildSlidesHtml, buildSlidesPdfBytes, buildSmartArt3DModel, buildSmartArtA11y, buildSmartArtPresetData, buildStrokeOutline, buildSummaryZoomView, buildSvgGradientDef, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBuildSpec, buildTextFillCss, buildTextReflectionCss, buildTextRunFilterChain, buildTextShadowCss, buildThemeColorGrid, buildThemeColorMap, buildUserFontFaceStyles, canCommitActionType, canGoNext, canGoPrevious, canvasToJpegData, cell3DBevelCss, chartDataChangeType, chartPartToAttrs, clampCropValue, clampNotesFontSize, clampPercent, clampTransitionNumber, clampUnitInterval2 as clampUnitInterval, clampZoomScale, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearStoredViewerPrefs, cloneElementForPaste, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collectImagePaths, collectMediaElements, collectUsedFonts, colorWithOpacity, comparePresentation, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeColumnBoundaries, computeEntranceAnimationDelay, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeLayout, computeLayoutOptions, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSmartArtLayout2 as computeSmartArtLayout, computeSnapToShape, computeSplitCell, computeValueRange, computeValueRangeForChart, computeVirtualRange, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createDefaultChartElement, createDepartureChannel, createInitialPresentationSnapshot, createPresentationKeyBuffer, createPresentationSessionId, createPresenterTimer, createSyncGate, createTouchGestureRecognizer, createViewerOptionsStore, customGeometryPathsToSvgSubpaths, defaultCssVars, defaultRadius, defaultThemeColors, deleteAutosaveSnapshot, deleteSection, deleteTableColumn, deleteTableRow, deleteTagFromCollections, demoteSmartArtNode, derivePresenceList, deriveSlideFieldContext, detectOrientation, detectTouchDevice, distributeElements, downloadBlob, downloadDataUrl, dragAnchorViewY, dragValueForPart, elementActionToPptxAction, encodeGif, endAudienceDisplay, erasePresentationInkAt, evaluatePresetShape, extraQuickAccessCommands, extractPathPoints, filterCommands, filterRenderedElements, findChartPartTarget, findMediaElementByElementId, findSmartArtNodeText, firstShowSlideIndex, flattenTagCollections, formatAxisValue, formatAxisValueWithUnits, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, generateBroadcastRoomId, generateElementId, generateLogTicks, generateNoteLineCount, generatePackageReadme, generatePressureCircles, generateTicks, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getCommentMarkerPosition, getCompoundLineBorderWidth, getCompoundLineBoxShadow, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getConnectionSites, getContentPartReplayStyles, getCssBorderDashStyle, getDisplayUnitLabel, getDuotoneCachedResult, getEffectDagFilter, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getGradientTileFlipCss, getGradientTileRectCss, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFitStyle, getImageSvgFilters, getInkReplayStyles, getInlineEditorSelection, getKinsokuLineBreakStyles, getLocalStorageUsageSummary, getNotesPrintableArea, getOleBadgeLabel, getOleObjectTypeLabel, getOleTypeColor, getOleTypeLabel, getOverflowSegments, getPatternSvg, getPendingSelectionRestore, getPresetShapeClipPath, getPrintableArea, getResolvedShapeClipPath, getRoundRectRadiusPx, getSecondaryValueAxis, getShapeAdjustmentHandleDescriptor, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeFilterId, getSoftEdgeSvgFilter, getSubstituteFontFamily, getSvgStrokeDasharray, getTextAlphaOpacity, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasPressureVariation, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hexToRgbChannels2 as hexToRgbChannels, hiddenSlideCue, insertTableColumn, insertTableRow, isActionHidden, isBrowserOpenableMime, isCalloutShape, isCellInRect, isEditableMotionPath, isEditableTextElement, isEditorTextInputTarget, isElementActionable, isElementRendered, isExportAbortError, isFirstSlide, isImageLikeElement, isInkElement, isKeyboardOpen, isLastSlide, isLinkedTextBox, isMixedContentBlocked, isMobileViewport, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isTemplateElement, isTemplateElementId2 as isTemplateElementId, isUrlSafe, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, loadAudienceContent, makeCloneId, makeSlideId, mapEditorKey, mapOutlineKey, mapPresentationKey, mayLeaveSlideShow, mergeAdditiveSelection, mergeCells, mergePresentationSnapshot, mergeShapes, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountModel3D, mountSurfaceChart3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, newTableElement, nextPresentedSlide, nextShowSlideIndex, normalizeColorsForCapture, normalizeHexColor, normalizeStrokeDashType, normalizeValue, notesSegmentsToSpans, observeYDocSlides, ooxmlDashToCssBorderStyle, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPptxFile, openReadingView, openUrlInNewTab, paletteColor, parseDrawingColor, parseDrawingColorOpacity, parsePpactionUrl, pickSupportedMimeType, placeAudienceWindow, polygonsToSvgPath, pptxActionToElementAction, preprocessCssForCapture, presentationInkPath, presenterElapsed, presenterPaneAdvancesOnClick, pressuresToWidths, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, promoteSmartArtNode, publishLiveGeometry, publishLiveInlineText, quickStyleSwatchCss, reResolveSlideColors, readBackstageRecentFile, readSlidesFromYDoc, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, rebuildTableStructureInRawXml, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, registerCollaborationTeardown, remapTextToSegments, removeChartCategory, removeChartSeries, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorderSmartArtNode, rerouteConnectorsForMovedElements, resetPresenterTimer, resolveActionType, resolveAudienceScreenPlacement, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveCssTextAlign, resolveDrawingShapeNodeId, resolveFontForScript, resolveFontRefIdx, resolveGroupChildFill, resolveInkColor, resolveInkOpacity, resolveInkWidth, resolveOleType, resolveParagraphAlign, resolveParagraphRtl, resolveParagraphStrutFontSize, resolvePictureBullet, resolveProfileInitial, resolveRegionCode, resolveShowSlideIndexes, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransportForServerUrl, resolveUnderlineDecorationStyle, resolveViewerAddinRows, restoreSegmentSelection, revealedSmartArtNodeCount, rulerDragToGuidePosition, runMediaCommand, runPresentationAction, safeOpenUrl, sanitizeColor, sanitizeDownloadFilename, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveViewerProfile, scanAvailableFontFamilies, schemaLabel, segmentByScript, segmentFrameCount, sendBackward, sendToBack, sequentialColorScale, seriesColor2 as seriesColor, setCachedResult, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDuotoneCachedResult, setMotionPath, setMotionPathEnd, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, shadeColor2, shouldAutoFollowBroadcaster, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldLoopContinuously, shouldUseSvgWarp, slideProgressPercent, slideStatusLabel, snapBoxToGrid, splitCell, splitSeriesByAxis, stepPresenterZoom, storeAudienceContent, substituteFieldText, suppressesCssBorder, svgGradientFillRef, svgLineCap, svgPathToPolygons, swapPresentationWindows, switchSmartArtLayout, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, themeColorSchemesEqual, themeToCssVars, tintColor2, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toSlideIndex, togglePresenterTimer, toggleText3dExtrusion, transformTextCase, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateTagInCollections, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewerOptionsToPreferences, warpPreviewPath, withChartPointValue, withChartTitle, withFrameSlides, withSlidesPerPage, writeStoredViewerPrefs, zoomInScale, zoomOutScale };
|
|
114797
|
+
export { ACTION_BUTTON_PRESETS, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_NAV, BACKSTAGE_TEMPLATES, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CATEGORIES, COLOR_MAP_ALIAS_KEYS, COMMON_FONTS, CONNECTION_TIMEOUT_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_INSERT_CHART_TYPE, DEFAULT_MOTION_PATH_PRESET_ID, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DIRECTIONAL_PRESETS, DUOTONE_PRESETS, ELEMENT_ACTION_TYPE_OPTIONS, EMPHASIS_PRESET_VALUES, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, GRADIENT_TYPE_OPTIONS, HANDOUT_OPTIONS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, LBL, 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_ZOOM_SCALE, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, PATTERN_OPTIONS, PEN_COLORS, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENTER_CONSOLE_CLASSES, PRESENTER_CONSOLE_CONTROLS, PRESENTER_NAVIGATOR_LABEL_KEYS, PRESENT_TOOLBAR_CLASSES, PRESETS, PRESET_THEMES, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, STATUS_BAR_CLASSES, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_LABELS, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_SLOT_LABEL_KEYS, THEME_PRESETS, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_ORIENTATION_TYPES, TRANSITION_VALID_DIRECTIONS, ThemePresets, VIEWER_OPTIONS_TABS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, acceptsPresentationInput, actionAffordanceLabels, activateModalFocus, addChartCategory, addChartSeries, addQuickAccessCommand, addSection, addSmartArtNode, addSmartArtNodeAsChild, addTagToCollections, alignElements, animationEffectLabel, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyCaseTransformToSegments, applyChartBuildReveal, applyColorChange, applyDuotone, applyFormatToElement, applyMotionPathPreset, applyOutlineEdit, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyStyleToSelectedSegments, applyThemeOverrideToSlide, applyThemeToData, availableQuickAccessCommands, backstageCardsFor, bringForward, bringToFront, build3DExtrusionData, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildChartViewModel, buildCollaborationShareUrl, buildContextMenuEntries, buildCreateCollaborationConfig, buildCssGradientFromShapeStyle, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildGlowBoxShadow, buildHandoutsHtml, buildInitialGuides, buildInnerShadowCssFromShapeStyle, buildJoinCollaborationConfig, buildMorphTransitionPlan, buildMotionPathPreview, buildMultiLayerShadowCss, buildNotesHtml, buildNotesPdfBytes, buildOutline, buildOutlineHtml, buildPatternFillCss, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildReflectionCss, buildShadowCssFromShapeStyle, buildSlidesHtml, buildSlidesPdfBytes, buildSmartArt3DModel, buildSmartArtA11y, buildSmartArtPresetData, buildStrokeOutline, buildSummaryZoomView, buildSvgGradientDef, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBuildSpec, buildTextFillCss, buildTextReflectionCss, buildTextRunFilterChain, buildTextShadowCss, buildThemeColorGrid, buildThemeColorMap, buildUserFontFaceStyles, canCommitActionType, canGoNext, canGoPrevious, canvasToJpegData, cell3DBevelCss, chartAreaFill, chartDataChangeType, chartPartToAttrs, clampCropValue, clampNotesFontSize, clampPercent, clampTransitionNumber, clampUnitInterval2 as clampUnitInterval, clampZoomScale, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearStoredViewerPrefs, cloneElementForPaste, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collectImagePaths, collectMediaElements, collectUsedFonts, colorWithOpacity, comparePresentation, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeColumnBoundaries, computeEntranceAnimationDelay, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeLayout, computeLayoutOptions, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSmartArtLayout2 as computeSmartArtLayout, computeSnapToShape, computeSplitCell, computeValueRange, computeValueRangeForChart, computeVirtualRange, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createDefaultChartElement, createDepartureChannel, createInitialPresentationSnapshot, createPresentationKeyBuffer, createPresentationSessionId, createPresenterShowGuard, createPresenterTimer, createSyncGate, createTouchGestureRecognizer, createViewerOptionsStore, customGeometryPathsToSvgSubpaths, defaultCssVars, defaultRadius, defaultThemeColors, deleteAutosaveSnapshot, deleteSection, deleteTableColumn, deleteTableRow, deleteTagFromCollections, demoteSmartArtNode, derivePresenceList, deriveSlideFieldContext, detectOrientation, detectTouchDevice, distributeElements, downloadBlob, downloadDataUrl, dragAnchorViewY, dragValueForPart, elementActionToPptxAction, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, erasePresentationInkAt, evaluatePresetShape, extraQuickAccessCommands, extractPathPoints, filterCommands, filterRenderedElements, findChartPartTarget, findMediaElementByElementId, findSmartArtNodeText, firstShowSlideIndex, flattenTagCollections, formatAxisValue, formatAxisValueWithUnits, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, generateBroadcastRoomId, generateElementId, generateLogTicks, generateNoteLineCount, generatePackageReadme, generatePressureCircles, generateTicks, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getCommentMarkerPosition, getCompoundLineBorderWidth, getCompoundLineBoxShadow, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getConnectionSites, getContentPartReplayStyles, getCssBorderDashStyle, getDisplayUnitLabel, getDuotoneCachedResult, getEffectDagFilter, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getGradientTileFlipCss, getGradientTileRectCss, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFitStyle, getImageSvgFilters, getInkReplayStyles, getInlineEditorSelection, getKinsokuLineBreakStyles, getLocalStorageUsageSummary, getNotesPrintableArea, getOleBadgeLabel, getOleObjectTypeLabel, getOleTypeColor, getOleTypeLabel, getOverflowSegments, getPatternSvg, getPendingSelectionRestore, getPresetShapeClipPath, getPrintableArea, getResolvedShapeClipPath, getRoundRectRadiusPx, getSecondaryValueAxis, getShapeAdjustmentHandleDescriptor, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeFilterId, getSoftEdgeSvgFilter, getSubstituteFontFamily, getSvgStrokeDasharray, getTextAlphaOpacity, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasPressureVariation, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hexToRgbChannels2 as hexToRgbChannels, hiddenSlideCue, insertTableColumn, insertTableRow, isActionHidden, isBrowserOpenableMime, isCalloutShape, isCellInRect, isEditableMotionPath, isEditableTextElement, isEditorTextInputTarget, isElementActionable, isElementRendered, isExportAbortError, isImageLikeElement, isInkElement, isKeyboardOpen, isLinkedTextBox, isMixedContentBlocked, isMobileViewport, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isTemplateElement, isTemplateElementId2 as isTemplateElementId, isUrlSafe, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, loadAudienceContent, makeCloneId, makeSlideId, mapEditorKey, mapOutlineKey, mapPresentationKey, mayLeaveSlideShow, mediaPlaybackAttributes, mediaTransportVisible, mergeAdditiveSelection, mergeCells, mergePresentationSnapshot, mergeShapes, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountModel3D, mountSurfaceChart3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, newTableElement, nextPresentedSlide, nextShowSlideIndex, normalizeColorsForCapture, normalizeHexColor, normalizeStrokeDashType, normalizeValue, notesSegmentsToSpans, observeYDocSlides, ooxmlDashToCssBorderStyle, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPptxFile, openReadingView, openUrlInNewTab, paletteColor, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, pickSupportedMimeType, placeAudienceWindow, polygonsToSvgPath, pptxActionToElementAction, preprocessCssForCapture, presentationInkPath, presenterElapsed, presenterNextDisabled, presenterPaneAdvancesOnClick, presenterPrevDisabled, presenterTimerProgress, pressuresToWidths, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, promoteSmartArtNode, publishLiveGeometry, publishLiveInlineText, quickStyleSwatchCss, reResolveSlideColors, readBackstageRecentFile, readSlidesFromYDoc, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, rebuildTableStructureInRawXml, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, registerCollaborationTeardown, remapTextToSegments, removeChartCategory, removeChartSeries, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorderSmartArtNode, rerouteConnectorsForMovedElements, resetPresenterTimer, resolveActionType, resolveAudienceScreenPlacement, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveCssTextAlign, resolveDrawingShapeNodeId, resolveElementActionAffordance, resolveFontForScript, resolveFontRefIdx, resolveGroupChildFill, resolveInkColor, resolveInkOpacity, resolveInkWidth, resolveOleType, resolveParagraphAlign, resolveParagraphRtl, resolveParagraphStrutFontSize, resolvePictureBullet, resolveProfileInitial, resolveRegionCode, resolveShowSlideIndexes, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransportForServerUrl, resolveUnderlineDecorationStyle, resolveViewerAddinRows, restoreSegmentSelection, revealedSmartArtNodeCount, rulerDragToGuidePosition, runMediaCommand, runPresentationAction, safeOpenUrl, sanitizeColor, sanitizeDownloadFilename, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveViewerProfile, scanAvailableFontFamilies, schemaLabel, segmentByScript, segmentFrameCount, sendBackward, sendToBack, sequentialColorScale, seriesColor2 as seriesColor, setCachedResult, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDuotoneCachedResult, setMotionPath, setMotionPathEnd, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, shadeColor2, shouldAutoFollowBroadcaster, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldLoopContinuously, shouldUseSvgWarp, slideProgressPercent, slideStatusLabel, snapBoxToGrid, splitCell, splitSeriesByAxis, stepPresenterZoom, storeAudienceContent, substituteFieldText, suppressesCssBorder, svgGradientFillRef, svgLineCap, svgPathToPolygons, swapPresentationWindows, switchSmartArtLayout, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, themeColorSchemesEqual, themeToCssVars, tintColor2, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toSlideIndex, togglePresenterTimer, toggleText3dExtrusion, transformTextCase, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateTagInCollections, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewerOptionsToPreferences, warpPreviewPath, withChartPointValue, withChartTitle, withFrameSlides, withSlidesPerPage, writeStoredViewerPrefs, zoomInScale, zoomOutScale };
|