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
|
@@ -2159,9 +2159,9 @@ function getStockObject(index) {
|
|
|
2159
2159
|
}
|
|
2160
2160
|
}
|
|
2161
2161
|
async function blobToDataUrl(blob) {
|
|
2162
|
-
return new Promise((
|
|
2162
|
+
return new Promise((resolve2, reject) => {
|
|
2163
2163
|
const reader = new FileReader();
|
|
2164
|
-
reader.onload = () =>
|
|
2164
|
+
reader.onload = () => resolve2(reader.result);
|
|
2165
2165
|
reader.onerror = () => reject(reader.error);
|
|
2166
2166
|
reader.readAsDataURL(blob);
|
|
2167
2167
|
});
|
|
@@ -9764,12 +9764,12 @@ function updateSection(section) {
|
|
|
9764
9764
|
}
|
|
9765
9765
|
return node;
|
|
9766
9766
|
}
|
|
9767
|
-
function applySections(presentation,
|
|
9768
|
-
if (
|
|
9767
|
+
function applySections(presentation, sections2, lookup, remap) {
|
|
9768
|
+
if (sections2 === void 0) {
|
|
9769
9769
|
return;
|
|
9770
9770
|
}
|
|
9771
9771
|
let location = findSectionList(presentation, lookup);
|
|
9772
|
-
if (
|
|
9772
|
+
if (sections2.length === 0) {
|
|
9773
9773
|
if (location) {
|
|
9774
9774
|
delete location.parent[location.key];
|
|
9775
9775
|
}
|
|
@@ -9786,14 +9786,14 @@ function applySections(presentation, sections, lookup, remap) {
|
|
|
9786
9786
|
location = { parent: ext, key: "p14:sectionLst", list: ext["p14:sectionLst"] };
|
|
9787
9787
|
}
|
|
9788
9788
|
const list = cloneXmlObject(location.list) ?? {};
|
|
9789
|
-
const effectiveSections = remap && remap.changed ?
|
|
9789
|
+
const effectiveSections = remap && remap.changed ? sections2.map((section) => ({
|
|
9790
9790
|
...section,
|
|
9791
9791
|
slideIds: remapReferenceList(
|
|
9792
9792
|
section.slideIds,
|
|
9793
9793
|
remap.sldIdByOldSldId,
|
|
9794
9794
|
remap.removedSldIds
|
|
9795
9795
|
)
|
|
9796
|
-
})) :
|
|
9796
|
+
})) : sections2;
|
|
9797
9797
|
replaceChildren(list, "section", effectiveSections.map(updateSection), "p14:section");
|
|
9798
9798
|
location.parent[location.key] = list;
|
|
9799
9799
|
}
|
|
@@ -13837,10 +13837,11 @@ var PptxShapeStyleExtractor = class {
|
|
|
13837
13837
|
this.context.resolveThemeFillRef(styleNode["a:fillRef"], style);
|
|
13838
13838
|
}
|
|
13839
13839
|
const lineNode = shapeProps["a:ln"];
|
|
13840
|
+
if (styleNode?.["a:lnRef"]) {
|
|
13841
|
+
this.context.resolveThemeLineRef(styleNode["a:lnRef"], style);
|
|
13842
|
+
}
|
|
13840
13843
|
if (lineNode) {
|
|
13841
13844
|
applyLineProperties(lineNode, style, this.context);
|
|
13842
|
-
} else if (styleNode?.["a:lnRef"]) {
|
|
13843
|
-
this.context.resolveThemeLineRef(styleNode["a:lnRef"], style);
|
|
13844
13845
|
}
|
|
13845
13846
|
Object.assign(style, this.context.extractShadowStyle(shapeProps));
|
|
13846
13847
|
Object.assign(style, this.context.extractInnerShadowStyle(shapeProps));
|
|
@@ -15166,7 +15167,10 @@ var PptxConnectorParser = class {
|
|
|
15166
15167
|
const skewY = transform["@_skewY"] ? parseInt(String(transform["@_skewY"]), 10) / 6e4 : void 0;
|
|
15167
15168
|
const { flipHorizontal, flipVertical } = this.context.readFlipState(transform);
|
|
15168
15169
|
const cNvConnectionShapeProperties = connector2?.["p:nvCxnSpPr"]?.["p:cNvCxnSpPr"];
|
|
15169
|
-
const shapeStyle = this.context.extractShapeStyle(
|
|
15170
|
+
const shapeStyle = this.context.extractShapeStyle(
|
|
15171
|
+
shapeProperties,
|
|
15172
|
+
connector2["p:style"]
|
|
15173
|
+
);
|
|
15170
15174
|
const startConnectionNode = cNvConnectionShapeProperties?.["a:stCxn"];
|
|
15171
15175
|
if (startConnectionNode) {
|
|
15172
15176
|
const startConnection = {};
|
|
@@ -15316,8 +15320,8 @@ var PptxLoadDataBuilder = class {
|
|
|
15316
15320
|
this.customShows = customShows;
|
|
15317
15321
|
return this;
|
|
15318
15322
|
}
|
|
15319
|
-
withSections(
|
|
15320
|
-
this.sections =
|
|
15323
|
+
withSections(sections2) {
|
|
15324
|
+
this.sections = sections2;
|
|
15321
15325
|
return this;
|
|
15322
15326
|
}
|
|
15323
15327
|
withWarnings(warnings) {
|
|
@@ -18979,7 +18983,7 @@ function remapEditorAnimationsToShapeIds(elements2, animations, reservedMaxId =
|
|
|
18979
18983
|
byId.set(el.id, el);
|
|
18980
18984
|
}
|
|
18981
18985
|
let nextId2 = Math.max(maxShapeId(flat), reservedMaxId) + 1;
|
|
18982
|
-
const
|
|
18986
|
+
const resolve2 = (elementId) => {
|
|
18983
18987
|
const el = byId.get(elementId);
|
|
18984
18988
|
if (!el) {
|
|
18985
18989
|
return void 0;
|
|
@@ -18991,8 +18995,8 @@ function remapEditorAnimationsToShapeIds(elements2, animations, reservedMaxId =
|
|
|
18991
18995
|
return el.shapeId;
|
|
18992
18996
|
};
|
|
18993
18997
|
return animations.map((anim) => {
|
|
18994
|
-
const resolvedElement =
|
|
18995
|
-
const resolvedTrigger = anim.triggerShapeId !== void 0 ?
|
|
18998
|
+
const resolvedElement = resolve2(anim.elementId);
|
|
18999
|
+
const resolvedTrigger = anim.triggerShapeId !== void 0 ? resolve2(anim.triggerShapeId) : void 0;
|
|
18996
19000
|
if (resolvedElement === void 0 && resolvedTrigger === void 0) {
|
|
18997
19001
|
return anim;
|
|
18998
19002
|
}
|
|
@@ -19994,7 +19998,7 @@ var PptxNativeAnimationService = class {
|
|
|
19994
19998
|
* parent node. See `animation-group-context` for why the flat list
|
|
19995
19999
|
* needs it.
|
|
19996
20000
|
*/
|
|
19997
|
-
walkTimingTree(node, animations, currentTrigger,
|
|
20001
|
+
walkTimingTree(node, animations, currentTrigger, group2 = createGroupContext()) {
|
|
19998
20002
|
if (!node) {
|
|
19999
20003
|
return;
|
|
20000
20004
|
}
|
|
@@ -20093,8 +20097,8 @@ var PptxNativeAnimationService = class {
|
|
|
20093
20097
|
textTarget: textTarget ?? void 0,
|
|
20094
20098
|
cTnAttributes: roundTripAttrs,
|
|
20095
20099
|
afterEffect: afterEffectFlag,
|
|
20096
|
-
groupAutoStart:
|
|
20097
|
-
parGroupIndex:
|
|
20100
|
+
groupAutoStart: group2.groupAutoStart,
|
|
20101
|
+
parGroupIndex: group2.parGroupIndex
|
|
20098
20102
|
});
|
|
20099
20103
|
}
|
|
20100
20104
|
const childTnList = cTn["p:childTnLst"];
|
|
@@ -20108,7 +20112,7 @@ var PptxNativeAnimationService = class {
|
|
|
20108
20112
|
parallel,
|
|
20109
20113
|
animations,
|
|
20110
20114
|
trigger,
|
|
20111
|
-
childGroupContext(
|
|
20115
|
+
childGroupContext(group2, parallel["p:cTn"], {
|
|
20112
20116
|
isClickLevelGroup: isClickLevel
|
|
20113
20117
|
})
|
|
20114
20118
|
);
|
|
@@ -20117,11 +20121,11 @@ var PptxNativeAnimationService = class {
|
|
|
20117
20121
|
if (isInteractiveSequence(sequence)) {
|
|
20118
20122
|
continue;
|
|
20119
20123
|
}
|
|
20120
|
-
this.walkTimingTree(sequence, animations, trigger,
|
|
20124
|
+
this.walkTimingTree(sequence, animations, trigger, group2);
|
|
20121
20125
|
}
|
|
20122
20126
|
for (const excl of exclusives) {
|
|
20123
20127
|
const exclAnims = [];
|
|
20124
|
-
this.walkTimingTree(excl, exclAnims, trigger,
|
|
20128
|
+
this.walkTimingTree(excl, exclAnims, trigger, group2);
|
|
20125
20129
|
for (const a of exclAnims) {
|
|
20126
20130
|
a.exclusive = true;
|
|
20127
20131
|
animations.push(a);
|
|
@@ -20136,7 +20140,7 @@ var PptxNativeAnimationService = class {
|
|
|
20136
20140
|
parallel,
|
|
20137
20141
|
animations,
|
|
20138
20142
|
currentTrigger,
|
|
20139
|
-
childGroupContext(
|
|
20143
|
+
childGroupContext(group2, parallel["p:cTn"], {
|
|
20140
20144
|
isClickLevelGroup: false
|
|
20141
20145
|
})
|
|
20142
20146
|
);
|
|
@@ -20145,7 +20149,7 @@ var PptxNativeAnimationService = class {
|
|
|
20145
20149
|
if (isInteractiveSequence(sequence)) {
|
|
20146
20150
|
continue;
|
|
20147
20151
|
}
|
|
20148
|
-
this.walkTimingTree(sequence, animations, currentTrigger,
|
|
20152
|
+
this.walkTimingTree(sequence, animations, currentTrigger, group2);
|
|
20149
20153
|
}
|
|
20150
20154
|
}
|
|
20151
20155
|
/**
|
|
@@ -22048,7 +22052,7 @@ var PptxAnimationWriteService = class {
|
|
|
22048
22052
|
if (currentGroup.length > 0) {
|
|
22049
22053
|
clickGroups.push(currentGroup);
|
|
22050
22054
|
}
|
|
22051
|
-
const nodes = clickGroups.map((
|
|
22055
|
+
const nodes = clickGroups.map((group2) => {
|
|
22052
22056
|
const groupId = this.allocateId();
|
|
22053
22057
|
return {
|
|
22054
22058
|
"p:cTn": {
|
|
@@ -22060,7 +22064,7 @@ var PptxAnimationWriteService = class {
|
|
|
22060
22064
|
}
|
|
22061
22065
|
},
|
|
22062
22066
|
"p:childTnLst": {
|
|
22063
|
-
"p:par":
|
|
22067
|
+
"p:par": group2.length === 1 ? group2[0] : group2
|
|
22064
22068
|
}
|
|
22065
22069
|
}
|
|
22066
22070
|
};
|
|
@@ -23851,17 +23855,20 @@ var stripedRightArrow = {
|
|
|
23851
23855
|
name: "stripedRightArrow",
|
|
23852
23856
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
23853
23857
|
gdLst: [
|
|
23858
|
+
// Head length runs off `ss`, the short side, not `w`. See the note on
|
|
23859
|
+
// `rightArrow` in `preset-shape-definitions-table.ts`.
|
|
23860
|
+
gd3("maxAdj2", "*/ 84375 w ss"),
|
|
23854
23861
|
gd3("a1", "pin 0 adj1 100000"),
|
|
23855
|
-
gd3("a2", "pin 0 adj2
|
|
23862
|
+
gd3("a2", "pin 0 adj2 maxAdj2"),
|
|
23856
23863
|
gd3("y1", "*/ hd2 a1 100000"),
|
|
23857
23864
|
gd3("y2", "+- vc 0 y1"),
|
|
23858
23865
|
gd3("y3", "+- vc y1 0"),
|
|
23859
23866
|
gd3("x2", "*/ ss 1 32"),
|
|
23860
23867
|
gd3("x3", "*/ ss 2 32"),
|
|
23861
23868
|
gd3("x4", "*/ ss 5 32"),
|
|
23862
|
-
gd3("x5", "*/
|
|
23869
|
+
gd3("x5", "*/ ss a2 100000"),
|
|
23863
23870
|
gd3("x6", "+- r 0 x5"),
|
|
23864
|
-
gd3("dx", "*/
|
|
23871
|
+
gd3("dx", "*/ y1 x5 hd2"),
|
|
23865
23872
|
gd3("x7", "+- x6 dx 0")
|
|
23866
23873
|
],
|
|
23867
23874
|
rect: { l: "x4", t: "y2", r: "x7", b: "y3" },
|
|
@@ -23896,14 +23903,17 @@ var notchedRightArrow = {
|
|
|
23896
23903
|
name: "notchedRightArrow",
|
|
23897
23904
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
23898
23905
|
gdLst: [
|
|
23906
|
+
// Head length runs off `ss`, the short side, not `w`. See the note on
|
|
23907
|
+
// `rightArrow` in `preset-shape-definitions-table.ts`.
|
|
23908
|
+
gd3("maxAdj2", "*/ 100000 w ss"),
|
|
23899
23909
|
gd3("a1", "pin 0 adj1 100000"),
|
|
23900
|
-
gd3("a2", "pin 0 adj2
|
|
23910
|
+
gd3("a2", "pin 0 adj2 maxAdj2"),
|
|
23901
23911
|
gd3("y1", "*/ hd2 a1 100000"),
|
|
23902
23912
|
gd3("y2", "+- vc 0 y1"),
|
|
23903
23913
|
gd3("y3", "+- vc y1 0"),
|
|
23904
|
-
gd3("x2", "*/
|
|
23914
|
+
gd3("x2", "*/ ss a2 100000"),
|
|
23905
23915
|
gd3("x1", "+- r 0 x2"),
|
|
23906
|
-
gd3("dx2", "*/
|
|
23916
|
+
gd3("dx2", "*/ y1 x2 hd2"),
|
|
23907
23917
|
gd3("x3", "+- x1 dx2 0"),
|
|
23908
23918
|
gd3("nx", "*/ y1 1 1")
|
|
23909
23919
|
],
|
|
@@ -23927,7 +23937,12 @@ var notchedRightArrow = {
|
|
|
23927
23937
|
var homePlate = {
|
|
23928
23938
|
name: "homePlate",
|
|
23929
23939
|
avLst: { adj: 5e4 },
|
|
23930
|
-
gdLst: [
|
|
23940
|
+
gdLst: [
|
|
23941
|
+
gd3("maxAdj", "*/ 100000 w ss"),
|
|
23942
|
+
gd3("a", "pin 0 adj maxAdj"),
|
|
23943
|
+
gd3("dx1", "*/ ss a 100000"),
|
|
23944
|
+
gd3("x1", "+- r 0 dx1")
|
|
23945
|
+
],
|
|
23931
23946
|
rect: { l: "l", t: "t", r: "x1", b: "b" },
|
|
23932
23947
|
pathLst: [
|
|
23933
23948
|
{
|
|
@@ -23945,8 +23960,13 @@ var homePlate = {
|
|
|
23945
23960
|
var chevron = {
|
|
23946
23961
|
name: "chevron",
|
|
23947
23962
|
avLst: { adj: 5e4 },
|
|
23948
|
-
gdLst: [
|
|
23949
|
-
|
|
23963
|
+
gdLst: [
|
|
23964
|
+
gd3("maxAdj", "*/ 100000 w ss"),
|
|
23965
|
+
gd3("a", "pin 0 adj maxAdj"),
|
|
23966
|
+
gd3("x1", "*/ ss a 100000"),
|
|
23967
|
+
gd3("x2", "+- r 0 x1")
|
|
23968
|
+
],
|
|
23969
|
+
rect: { l: "x1", t: "t", r: "x2", b: "b" },
|
|
23950
23970
|
pathLst: [
|
|
23951
23971
|
{
|
|
23952
23972
|
commands: [
|
|
@@ -29032,27 +29052,28 @@ var rightArrow = {
|
|
|
29032
29052
|
name: "rightArrow",
|
|
29033
29053
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
29034
29054
|
gdLst: [
|
|
29055
|
+
gd13("maxAdj2", "*/ 100000 w ss"),
|
|
29035
29056
|
gd13("a1", "pin 0 adj1 100000"),
|
|
29036
|
-
gd13("a2", "pin 0 adj2
|
|
29037
|
-
gd13("
|
|
29038
|
-
gd13("
|
|
29039
|
-
gd13("
|
|
29040
|
-
gd13("
|
|
29041
|
-
gd13("
|
|
29042
|
-
gd13("dx2", "*/
|
|
29043
|
-
gd13("
|
|
29057
|
+
gd13("a2", "pin 0 adj2 maxAdj2"),
|
|
29058
|
+
gd13("dx1", "*/ ss a2 100000"),
|
|
29059
|
+
gd13("x1", "+- r 0 dx1"),
|
|
29060
|
+
gd13("dy1", "*/ h a1 200000"),
|
|
29061
|
+
gd13("y1", "+- vc 0 dy1"),
|
|
29062
|
+
gd13("y2", "+- vc dy1 0"),
|
|
29063
|
+
gd13("dx2", "*/ y1 dx1 hd2"),
|
|
29064
|
+
gd13("x2", "+- x1 dx2 0")
|
|
29044
29065
|
],
|
|
29045
|
-
rect: { l: "l", t: "
|
|
29066
|
+
rect: { l: "l", t: "y1", r: "x2", b: "y2" },
|
|
29046
29067
|
pathLst: [
|
|
29047
29068
|
{
|
|
29048
29069
|
commands: [
|
|
29049
|
-
{ kind: "moveTo", x: "l", y: "
|
|
29050
|
-
{ kind: "lnTo", x: "x1", y: "
|
|
29070
|
+
{ kind: "moveTo", x: "l", y: "y1" },
|
|
29071
|
+
{ kind: "lnTo", x: "x1", y: "y1" },
|
|
29051
29072
|
{ kind: "lnTo", x: "x1", y: "t" },
|
|
29052
29073
|
{ kind: "lnTo", x: "r", y: "vc" },
|
|
29053
29074
|
{ kind: "lnTo", x: "x1", y: "b" },
|
|
29054
|
-
{ kind: "lnTo", x: "x1", y: "
|
|
29055
|
-
{ kind: "lnTo", x: "l", y: "
|
|
29075
|
+
{ kind: "lnTo", x: "x1", y: "y2" },
|
|
29076
|
+
{ kind: "lnTo", x: "l", y: "y2" },
|
|
29056
29077
|
{ kind: "close" }
|
|
29057
29078
|
]
|
|
29058
29079
|
}
|
|
@@ -29062,26 +29083,28 @@ var leftArrow = {
|
|
|
29062
29083
|
name: "leftArrow",
|
|
29063
29084
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
29064
29085
|
gdLst: [
|
|
29086
|
+
gd13("maxAdj2", "*/ 100000 w ss"),
|
|
29065
29087
|
gd13("a1", "pin 0 adj1 100000"),
|
|
29066
|
-
gd13("a2", "pin 0 adj2
|
|
29067
|
-
gd13("
|
|
29068
|
-
gd13("
|
|
29069
|
-
gd13("
|
|
29070
|
-
gd13("
|
|
29071
|
-
gd13("
|
|
29072
|
-
gd13("
|
|
29088
|
+
gd13("a2", "pin 0 adj2 maxAdj2"),
|
|
29089
|
+
gd13("dx2", "*/ ss a2 100000"),
|
|
29090
|
+
gd13("x2", "+- l dx2 0"),
|
|
29091
|
+
gd13("dy1", "*/ h a1 200000"),
|
|
29092
|
+
gd13("y1", "+- vc 0 dy1"),
|
|
29093
|
+
gd13("y2", "+- vc dy1 0"),
|
|
29094
|
+
gd13("dx1", "*/ y1 dx2 hd2"),
|
|
29095
|
+
gd13("x1", "+- dx2 0 dx1")
|
|
29073
29096
|
],
|
|
29074
|
-
rect: { l: "
|
|
29097
|
+
rect: { l: "x1", t: "y1", r: "r", b: "y2" },
|
|
29075
29098
|
pathLst: [
|
|
29076
29099
|
{
|
|
29077
29100
|
commands: [
|
|
29078
29101
|
{ kind: "moveTo", x: "l", y: "vc" },
|
|
29079
|
-
{ kind: "lnTo", x: "
|
|
29080
|
-
{ kind: "lnTo", x: "
|
|
29102
|
+
{ kind: "lnTo", x: "x2", y: "t" },
|
|
29103
|
+
{ kind: "lnTo", x: "x2", y: "y1" },
|
|
29104
|
+
{ kind: "lnTo", x: "r", y: "y1" },
|
|
29081
29105
|
{ kind: "lnTo", x: "r", y: "y2" },
|
|
29082
|
-
{ kind: "lnTo", x: "
|
|
29083
|
-
{ kind: "lnTo", x: "
|
|
29084
|
-
{ kind: "lnTo", x: "x1", y: "b" },
|
|
29106
|
+
{ kind: "lnTo", x: "x2", y: "y2" },
|
|
29107
|
+
{ kind: "lnTo", x: "x2", y: "b" },
|
|
29085
29108
|
{ kind: "close" }
|
|
29086
29109
|
]
|
|
29087
29110
|
}
|
|
@@ -29091,26 +29114,28 @@ var upArrow = {
|
|
|
29091
29114
|
name: "upArrow",
|
|
29092
29115
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
29093
29116
|
gdLst: [
|
|
29117
|
+
gd13("maxAdj2", "*/ 100000 h ss"),
|
|
29094
29118
|
gd13("a1", "pin 0 adj1 100000"),
|
|
29095
|
-
gd13("a2", "pin 0 adj2
|
|
29096
|
-
gd13("
|
|
29097
|
-
gd13("
|
|
29098
|
-
gd13("
|
|
29099
|
-
gd13("
|
|
29100
|
-
gd13("
|
|
29101
|
-
gd13("
|
|
29119
|
+
gd13("a2", "pin 0 adj2 maxAdj2"),
|
|
29120
|
+
gd13("dy2", "*/ ss a2 100000"),
|
|
29121
|
+
gd13("y2", "+- t dy2 0"),
|
|
29122
|
+
gd13("dx1", "*/ w a1 200000"),
|
|
29123
|
+
gd13("x1", "+- hc 0 dx1"),
|
|
29124
|
+
gd13("x2", "+- hc dx1 0"),
|
|
29125
|
+
gd13("dy1", "*/ x1 dy2 wd2"),
|
|
29126
|
+
gd13("y1", "+- y2 0 dy1")
|
|
29102
29127
|
],
|
|
29103
|
-
rect: { l: "
|
|
29128
|
+
rect: { l: "x1", t: "y1", r: "x2", b: "b" },
|
|
29104
29129
|
pathLst: [
|
|
29105
29130
|
{
|
|
29106
29131
|
commands: [
|
|
29107
|
-
{ kind: "moveTo", x: "
|
|
29132
|
+
{ kind: "moveTo", x: "l", y: "y2" },
|
|
29133
|
+
{ kind: "lnTo", x: "hc", y: "t" },
|
|
29108
29134
|
{ kind: "lnTo", x: "r", y: "y2" },
|
|
29109
|
-
{ kind: "lnTo", x: "x3", y: "y2" },
|
|
29110
|
-
{ kind: "lnTo", x: "x3", y: "b" },
|
|
29111
|
-
{ kind: "lnTo", x: "x2", y: "b" },
|
|
29112
29135
|
{ kind: "lnTo", x: "x2", y: "y2" },
|
|
29113
|
-
{ kind: "lnTo", x: "
|
|
29136
|
+
{ kind: "lnTo", x: "x2", y: "b" },
|
|
29137
|
+
{ kind: "lnTo", x: "x1", y: "b" },
|
|
29138
|
+
{ kind: "lnTo", x: "x1", y: "y2" },
|
|
29114
29139
|
{ kind: "close" }
|
|
29115
29140
|
]
|
|
29116
29141
|
}
|
|
@@ -29120,26 +29145,27 @@ var downArrow = {
|
|
|
29120
29145
|
name: "downArrow",
|
|
29121
29146
|
avLst: { adj1: 5e4, adj2: 5e4 },
|
|
29122
29147
|
gdLst: [
|
|
29148
|
+
gd13("maxAdj2", "*/ 100000 h ss"),
|
|
29123
29149
|
gd13("a1", "pin 0 adj1 100000"),
|
|
29124
|
-
gd13("a2", "pin 0 adj2
|
|
29125
|
-
gd13("
|
|
29126
|
-
gd13("
|
|
29127
|
-
gd13("
|
|
29128
|
-
gd13("
|
|
29129
|
-
gd13("
|
|
29130
|
-
gd13("dy2", "*/
|
|
29131
|
-
gd13("
|
|
29150
|
+
gd13("a2", "pin 0 adj2 maxAdj2"),
|
|
29151
|
+
gd13("dy1", "*/ ss a2 100000"),
|
|
29152
|
+
gd13("y1", "+- b 0 dy1"),
|
|
29153
|
+
gd13("dx1", "*/ w a1 200000"),
|
|
29154
|
+
gd13("x1", "+- hc 0 dx1"),
|
|
29155
|
+
gd13("x2", "+- hc dx1 0"),
|
|
29156
|
+
gd13("dy2", "*/ x1 dy1 wd2"),
|
|
29157
|
+
gd13("y2", "+- b 0 dy2")
|
|
29132
29158
|
],
|
|
29133
|
-
rect: { l: "
|
|
29159
|
+
rect: { l: "x1", t: "t", r: "x2", b: "y2" },
|
|
29134
29160
|
pathLst: [
|
|
29135
29161
|
{
|
|
29136
29162
|
commands: [
|
|
29137
|
-
{ kind: "moveTo", x: "l", y: "
|
|
29138
|
-
{ kind: "lnTo", x: "
|
|
29163
|
+
{ kind: "moveTo", x: "l", y: "y1" },
|
|
29164
|
+
{ kind: "lnTo", x: "x1", y: "y1" },
|
|
29165
|
+
{ kind: "lnTo", x: "x1", y: "t" },
|
|
29139
29166
|
{ kind: "lnTo", x: "x2", y: "t" },
|
|
29140
|
-
{ kind: "lnTo", x: "
|
|
29141
|
-
{ kind: "lnTo", x: "
|
|
29142
|
-
{ kind: "lnTo", x: "r", y: "y2" },
|
|
29167
|
+
{ kind: "lnTo", x: "x2", y: "y1" },
|
|
29168
|
+
{ kind: "lnTo", x: "r", y: "y1" },
|
|
29143
29169
|
{ kind: "lnTo", x: "hc", y: "b" },
|
|
29144
29170
|
{ kind: "close" }
|
|
29145
29171
|
]
|
|
@@ -32319,8 +32345,8 @@ function extractSectionMap(presentationData, lookup) {
|
|
|
32319
32345
|
const orderedSections = [];
|
|
32320
32346
|
const presentation = presentationData ? lookup.getChildByLocalName(presentationData, "presentation") : void 0;
|
|
32321
32347
|
const sectionList = findSectionList2(presentation, lookup);
|
|
32322
|
-
const
|
|
32323
|
-
|
|
32348
|
+
const sections2 = lookup.getChildrenArrayByLocalName(sectionList, "section");
|
|
32349
|
+
sections2.forEach((section, index) => {
|
|
32324
32350
|
const sectionId = String(section["@_id"] || `section-${index + 1}`);
|
|
32325
32351
|
const rawName = String(section["@_name"] || "").trim();
|
|
32326
32352
|
const sectionName = rawName || `Section ${index + 1}`;
|
|
@@ -32795,8 +32821,8 @@ function scalar(parent, name, xmlLookup) {
|
|
|
32795
32821
|
return node?.["#text"] === void 0 ? void 0 : String(node["#text"]);
|
|
32796
32822
|
}
|
|
32797
32823
|
function parseSeriesDataLabels(seriesNode, xmlLookup) {
|
|
32798
|
-
const
|
|
32799
|
-
const nodes =
|
|
32824
|
+
const group2 = xmlLookup.getChildByLocalName(seriesNode, "dLbls");
|
|
32825
|
+
const nodes = group2 ? xmlLookup.getChildrenArrayByLocalName(group2, "dLbl") : xmlLookup.getChildrenArrayByLocalName(seriesNode, "dLbl");
|
|
32800
32826
|
return nodes.flatMap((node) => {
|
|
32801
32827
|
const idx = uint32(xmlLookup.getChildByLocalName(node, "idx")?.["@_val"]);
|
|
32802
32828
|
if (idx === void 0) {
|
|
@@ -32841,7 +32867,7 @@ function parseSeriesDataLabels(seriesNode, xmlLookup) {
|
|
|
32841
32867
|
return [result];
|
|
32842
32868
|
});
|
|
32843
32869
|
}
|
|
32844
|
-
function parseChartDataLabelOptions(
|
|
32870
|
+
function parseChartDataLabelOptions(group2, xmlLookup) {
|
|
32845
32871
|
const result = {};
|
|
32846
32872
|
const fields = [
|
|
32847
32873
|
["showVal", "showValue"],
|
|
@@ -32853,16 +32879,16 @@ function parseChartDataLabelOptions(group, xmlLookup) {
|
|
|
32853
32879
|
["showLeaderLines", "showLeaderLines"]
|
|
32854
32880
|
];
|
|
32855
32881
|
for (const [xmlName, property] of fields) {
|
|
32856
|
-
const value = bool(xmlLookup.getChildByLocalName(
|
|
32882
|
+
const value = bool(xmlLookup.getChildByLocalName(group2, xmlName));
|
|
32857
32883
|
if (value !== void 0) {
|
|
32858
32884
|
result[property] = value;
|
|
32859
32885
|
}
|
|
32860
32886
|
}
|
|
32861
|
-
const pos2 = position(xmlLookup.getChildByLocalName(
|
|
32887
|
+
const pos2 = position(xmlLookup.getChildByLocalName(group2, "dLblPos"));
|
|
32862
32888
|
if (pos2) {
|
|
32863
32889
|
result.position = pos2;
|
|
32864
32890
|
}
|
|
32865
|
-
const separator = scalar(
|
|
32891
|
+
const separator = scalar(group2, "separator", xmlLookup);
|
|
32866
32892
|
if (separator !== void 0) {
|
|
32867
32893
|
result.separator = separator;
|
|
32868
32894
|
}
|
|
@@ -38182,12 +38208,12 @@ function layoutGroupedList(nodes, bounds, themeColorMap) {
|
|
|
38182
38208
|
const usableW = bounds.width - padding * 2;
|
|
38183
38209
|
const groupW = (usableW - gap * (groups.length - 1)) / groups.length;
|
|
38184
38210
|
const usableH = bounds.height - padding * 2;
|
|
38185
|
-
groups.forEach((
|
|
38211
|
+
groups.forEach((group2, gi) => {
|
|
38186
38212
|
const fill = accentColor(gi, themeColorMap);
|
|
38187
38213
|
const gx = bounds.x + padding + gi * (groupW + gap);
|
|
38188
38214
|
const headerH = usableH * 0.2;
|
|
38189
38215
|
const subItemGap = 3;
|
|
38190
|
-
const subItemH = (usableH - headerH - 4 - subItemGap * (
|
|
38216
|
+
const subItemH = (usableH - headerH - 4 - subItemGap * (group2.length - 1)) / group2.length;
|
|
38191
38217
|
elements2.push(
|
|
38192
38218
|
makeShapeElement(
|
|
38193
38219
|
nextId("sa-grp-header"),
|
|
@@ -38205,7 +38231,7 @@ function layoutGroupedList(nodes, bounds, themeColorMap) {
|
|
|
38205
38231
|
}
|
|
38206
38232
|
)
|
|
38207
38233
|
);
|
|
38208
|
-
|
|
38234
|
+
group2.forEach((node, si) => {
|
|
38209
38235
|
const sy = bounds.y + padding + headerH + 4 + si * (subItemH + subItemGap);
|
|
38210
38236
|
elements2.push(
|
|
38211
38237
|
makeShapeElement(
|
|
@@ -41486,6 +41512,23 @@ var GENERIC_FAMILY_CONCRETE_FONTS = {
|
|
|
41486
41512
|
cursive: ["Comic Sans MS", "cursive"],
|
|
41487
41513
|
fantasy: ["Impact", "fantasy"]
|
|
41488
41514
|
};
|
|
41515
|
+
function parsePanoseString(panoseStr) {
|
|
41516
|
+
if (!panoseStr) {
|
|
41517
|
+
return void 0;
|
|
41518
|
+
}
|
|
41519
|
+
const cleaned = panoseStr.trim();
|
|
41520
|
+
if (cleaned.length !== 20) {
|
|
41521
|
+
return void 0;
|
|
41522
|
+
}
|
|
41523
|
+
if (!/^[0-9a-fA-F]{20}$/.test(cleaned)) {
|
|
41524
|
+
return void 0;
|
|
41525
|
+
}
|
|
41526
|
+
const bytes = [];
|
|
41527
|
+
for (let i = 0; i < 20; i += 2) {
|
|
41528
|
+
bytes.push(parseInt(cleaned.substring(i, i + 2), 16));
|
|
41529
|
+
}
|
|
41530
|
+
return bytes;
|
|
41531
|
+
}
|
|
41489
41532
|
function classifyPanose(panose) {
|
|
41490
41533
|
if (!panose || panose.length < 4) {
|
|
41491
41534
|
return "sans-serif";
|
|
@@ -49653,6 +49696,29 @@ var PptxHandlerRuntime10 = class extends PptxHandlerRuntime9 {
|
|
|
49653
49696
|
return void 0;
|
|
49654
49697
|
}
|
|
49655
49698
|
}
|
|
49699
|
+
/**
|
|
49700
|
+
* Resolve the `c:spPr` fill of a chart container (`c:chartSpace` or
|
|
49701
|
+
* `c:plotArea`) to a colour string, or the literal `'none'` for
|
|
49702
|
+
* `<a:noFill/>`. Returns `undefined` when the container declares no fill at
|
|
49703
|
+
* all, which leaves the choice to the renderer.
|
|
49704
|
+
*
|
|
49705
|
+
* `<a:noFill/>` parses to the empty STRING, so presence - not truthiness -
|
|
49706
|
+
* has to decide.
|
|
49707
|
+
*/
|
|
49708
|
+
parseChartContainerFill(container) {
|
|
49709
|
+
const shapeProperties = this.xmlLookupService.getChildByLocalName(container, "spPr");
|
|
49710
|
+
if (!shapeProperties) {
|
|
49711
|
+
return void 0;
|
|
49712
|
+
}
|
|
49713
|
+
const hasNoFill = Object.keys(shapeProperties).some(
|
|
49714
|
+
(key) => this.compatibilityService.getXmlLocalName(key) === "noFill"
|
|
49715
|
+
);
|
|
49716
|
+
if (hasNoFill) {
|
|
49717
|
+
return "none";
|
|
49718
|
+
}
|
|
49719
|
+
const solidFill2 = this.xmlLookupService.getChildByLocalName(shapeProperties, "solidFill");
|
|
49720
|
+
return solidFill2 ? this.parseColor(solidFill2) : void 0;
|
|
49721
|
+
}
|
|
49656
49722
|
/**
|
|
49657
49723
|
* Extract chart style metadata from chart XML.
|
|
49658
49724
|
*/
|
|
@@ -49667,6 +49733,11 @@ var PptxHandlerRuntime10 = class extends PptxHandlerRuntime9 {
|
|
|
49667
49733
|
style.styleId = parseInt(String(styleNode["@_val"]));
|
|
49668
49734
|
hasStyle = true;
|
|
49669
49735
|
}
|
|
49736
|
+
const chartAreaFill2 = this.parseChartContainerFill(chartSpace);
|
|
49737
|
+
if (chartAreaFill2) {
|
|
49738
|
+
style.chartAreaFill = chartAreaFill2;
|
|
49739
|
+
hasStyle = true;
|
|
49740
|
+
}
|
|
49670
49741
|
if (chartRoot) {
|
|
49671
49742
|
const legend = this.xmlLookupService.getChildByLocalName(chartRoot, "legend");
|
|
49672
49743
|
if (legend) {
|
|
@@ -49692,6 +49763,11 @@ var PptxHandlerRuntime10 = class extends PptxHandlerRuntime9 {
|
|
|
49692
49763
|
}
|
|
49693
49764
|
const plotArea = this.xmlLookupService.getChildByLocalName(chartRoot, "plotArea");
|
|
49694
49765
|
if (plotArea) {
|
|
49766
|
+
const plotAreaFill2 = this.parseChartContainerFill(plotArea);
|
|
49767
|
+
if (plotAreaFill2) {
|
|
49768
|
+
style.plotAreaFill = plotAreaFill2;
|
|
49769
|
+
hasStyle = true;
|
|
49770
|
+
}
|
|
49695
49771
|
const valAx = this.xmlLookupService.getChildByLocalName(plotArea, "valAx");
|
|
49696
49772
|
if (valAx) {
|
|
49697
49773
|
const majorGridlines = this.xmlLookupService.getChildByLocalName(valAx, "majorGridlines");
|
|
@@ -51025,32 +51101,32 @@ var PptxHandlerRuntime15 = class _PptxHandlerRuntime3 extends PptxHandlerRuntime
|
|
|
51025
51101
|
* Build a p:grpSp XML object from a GroupPptxElement.
|
|
51026
51102
|
* Children are stored with coordinates relative to the group origin.
|
|
51027
51103
|
*/
|
|
51028
|
-
buildGroupShapeXml(
|
|
51029
|
-
if (
|
|
51030
|
-
return
|
|
51104
|
+
buildGroupShapeXml(group2) {
|
|
51105
|
+
if (group2.rawXml && group2.children.length === 0) {
|
|
51106
|
+
return group2.rawXml;
|
|
51031
51107
|
}
|
|
51032
51108
|
const EMU = _PptxHandlerRuntime3.EMU_PER_PX;
|
|
51033
|
-
const offX = Math.round(
|
|
51034
|
-
const offY = Math.round(
|
|
51035
|
-
const extCx = Math.round(
|
|
51036
|
-
const extCy = Math.round(
|
|
51109
|
+
const offX = Math.round(group2.x * EMU);
|
|
51110
|
+
const offY = Math.round(group2.y * EMU);
|
|
51111
|
+
const extCx = Math.round(group2.width * EMU);
|
|
51112
|
+
const extCy = Math.round(group2.height * EMU);
|
|
51037
51113
|
const chOffX = 0;
|
|
51038
51114
|
const chOffY = 0;
|
|
51039
51115
|
const chExtCx = extCx;
|
|
51040
51116
|
const chExtCy = extCy;
|
|
51041
51117
|
const xfrmAttrs = {};
|
|
51042
|
-
if (typeof
|
|
51043
|
-
xfrmAttrs["@_rot"] = String(Math.round(
|
|
51118
|
+
if (typeof group2.rotation === "number" && group2.rotation !== 0) {
|
|
51119
|
+
xfrmAttrs["@_rot"] = String(Math.round(group2.rotation * 6e4));
|
|
51044
51120
|
}
|
|
51045
|
-
if (
|
|
51121
|
+
if (group2.flipHorizontal) {
|
|
51046
51122
|
xfrmAttrs["@_flipH"] = "1";
|
|
51047
51123
|
}
|
|
51048
|
-
if (
|
|
51124
|
+
if (group2.flipVertical) {
|
|
51049
51125
|
xfrmAttrs["@_flipV"] = "1";
|
|
51050
51126
|
}
|
|
51051
51127
|
const grpXml = {
|
|
51052
51128
|
"p:nvGrpSpPr": {
|
|
51053
|
-
"p:cNvPr": { "@_id": "0", "@_name":
|
|
51129
|
+
"p:cNvPr": { "@_id": "0", "@_name": group2.id },
|
|
51054
51130
|
"p:cNvGrpSpPr": {},
|
|
51055
51131
|
"p:nvPr": {}
|
|
51056
51132
|
},
|
|
@@ -51079,7 +51155,7 @@ var PptxHandlerRuntime15 = class _PptxHandlerRuntime3 extends PptxHandlerRuntime
|
|
|
51079
51155
|
const childShapes = [];
|
|
51080
51156
|
const childPics = [];
|
|
51081
51157
|
const childConnectors = [];
|
|
51082
|
-
for (const child202 of
|
|
51158
|
+
for (const child202 of group2.children) {
|
|
51083
51159
|
let xml = child202.rawXml;
|
|
51084
51160
|
if (!xml && (child202.type === "text" || child202.type === "shape")) {
|
|
51085
51161
|
xml = this.createElementXml(child202);
|
|
@@ -58601,12 +58677,12 @@ var PptxHandlerRuntime37 = class _PptxHandlerRuntime13 extends PptxHandlerRuntim
|
|
|
58601
58677
|
updateSummaryFallback(shape, el, targets, relationships) {
|
|
58602
58678
|
const block = this.alternateContentBlockByRawXml.get(shape);
|
|
58603
58679
|
const fallback = block?.rawAc["mc:Fallback"];
|
|
58604
|
-
const
|
|
58605
|
-
if (!
|
|
58680
|
+
const group2 = fallback?.["p:grpSp"];
|
|
58681
|
+
if (!group2) {
|
|
58606
58682
|
return;
|
|
58607
58683
|
}
|
|
58608
|
-
const existing = this.ensureArray(
|
|
58609
|
-
|
|
58684
|
+
const existing = this.ensureArray(group2["p:pic"]);
|
|
58685
|
+
group2["p:pic"] = targets.map((target, index) => {
|
|
58610
58686
|
const tile = this.summaryTileElement(el, target, index);
|
|
58611
58687
|
const picture = existing[index] ?? this.buildZoomFallbackPicture(tile, relationships[index]);
|
|
58612
58688
|
this.applyZoomTransform(picture["p:spPr"] ??= {}, tile);
|
|
@@ -59992,7 +60068,7 @@ var PptxHandlerRuntime42 = class extends PptxHandlerRuntime41 {
|
|
|
59992
60068
|
*/
|
|
59993
60069
|
buildFontSchemeObject(schemeName, fontMap, majorScripts, minorScripts) {
|
|
59994
60070
|
const buildFontGroup = (latinKey, eaKey, csKey, scripts) => {
|
|
59995
|
-
const
|
|
60071
|
+
const group2 = {
|
|
59996
60072
|
"a:latin": { "@_typeface": fontMap[latinKey] || "Calibri" },
|
|
59997
60073
|
"a:ea": { "@_typeface": fontMap[eaKey] || "" },
|
|
59998
60074
|
"a:cs": { "@_typeface": fontMap[csKey] || "" }
|
|
@@ -60003,9 +60079,9 @@ var PptxHandlerRuntime42 = class extends PptxHandlerRuntime41 {
|
|
|
60003
60079
|
"@_script": script,
|
|
60004
60080
|
"@_typeface": scripts[script]
|
|
60005
60081
|
}));
|
|
60006
|
-
|
|
60082
|
+
group2["a:font"] = fontEntries.length === 1 ? fontEntries[0] : fontEntries;
|
|
60007
60083
|
}
|
|
60008
|
-
return
|
|
60084
|
+
return group2;
|
|
60009
60085
|
};
|
|
60010
60086
|
return {
|
|
60011
60087
|
"@_name": schemeName,
|
|
@@ -64638,7 +64714,7 @@ function parseEmuInt2(value) {
|
|
|
64638
64714
|
return parsed;
|
|
64639
64715
|
}
|
|
64640
64716
|
var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntime66 {
|
|
64641
|
-
async parseGroupShape(
|
|
64717
|
+
async parseGroupShape(group2, baseId, slidePath, rawXmlStr, depth = 0) {
|
|
64642
64718
|
if (depth > MAX_GROUP_DEPTH) {
|
|
64643
64719
|
this.compatibilityService.reportWarning({
|
|
64644
64720
|
code: "group-depth-exceeded",
|
|
@@ -64650,7 +64726,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64650
64726
|
});
|
|
64651
64727
|
return [];
|
|
64652
64728
|
}
|
|
64653
|
-
const grpSpPr =
|
|
64729
|
+
const grpSpPr = group2["p:grpSpPr"];
|
|
64654
64730
|
const xfrm = grpSpPr?.["a:xfrm"];
|
|
64655
64731
|
const EMU_PX = _PptxHandlerRuntime30.EMU_PER_PX;
|
|
64656
64732
|
let parentX = 0, parentY = 0, parentW = 0, parentH = 0;
|
|
@@ -64715,16 +64791,16 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64715
64791
|
}
|
|
64716
64792
|
return el;
|
|
64717
64793
|
};
|
|
64718
|
-
this.unwrapAlternateContent(
|
|
64794
|
+
this.unwrapAlternateContent(group2);
|
|
64719
64795
|
const childOrder3 = this.extractSpTreeChildOrder(
|
|
64720
64796
|
void 0,
|
|
64721
|
-
|
|
64797
|
+
group2,
|
|
64722
64798
|
"p:grpSp"
|
|
64723
64799
|
);
|
|
64724
64800
|
const elements2 = [];
|
|
64725
64801
|
for (const entry2 of childOrder3) {
|
|
64726
64802
|
if (entry2.tag === "p:grpSp") {
|
|
64727
|
-
const subArr = this.ensureArray(
|
|
64803
|
+
const subArr = this.ensureArray(group2["p:grpSp"]);
|
|
64728
64804
|
const subGroup = subArr[entry2.indexInType];
|
|
64729
64805
|
if (!subGroup) {
|
|
64730
64806
|
continue;
|
|
@@ -64742,12 +64818,12 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64742
64818
|
const element = await this.parseSpTreeChild(
|
|
64743
64819
|
entry2.tag,
|
|
64744
64820
|
entry2.indexInType,
|
|
64745
|
-
|
|
64821
|
+
group2,
|
|
64746
64822
|
slidePath,
|
|
64747
64823
|
`${baseId}-`
|
|
64748
64824
|
);
|
|
64749
64825
|
if (element) {
|
|
64750
|
-
const childNode2 = this.ensureArray(
|
|
64826
|
+
const childNode2 = this.ensureArray(group2[entry2.tag])[entry2.indexInType];
|
|
64751
64827
|
applyRawChildGeometry(element, childNode2);
|
|
64752
64828
|
transformElement(element);
|
|
64753
64829
|
elements2.push(element);
|
|
@@ -64760,8 +64836,8 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64760
64836
|
* Parse a p:grpSp element into a GroupPptxElement with children.
|
|
64761
64837
|
* Children have coordinates relative to the group's position.
|
|
64762
64838
|
*/
|
|
64763
|
-
async parseGroupShapeAsGroup(
|
|
64764
|
-
const grpSpPr =
|
|
64839
|
+
async parseGroupShapeAsGroup(group2, baseId, slidePath, rawXmlStr) {
|
|
64840
|
+
const grpSpPr = group2["p:grpSpPr"];
|
|
64765
64841
|
const xfrm = grpSpPr?.["a:xfrm"];
|
|
64766
64842
|
let parentX = 0, parentY = 0, parentW = 0, parentH = 0;
|
|
64767
64843
|
let groupRotation;
|
|
@@ -64787,7 +64863,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64787
64863
|
}
|
|
64788
64864
|
const grpFillStyle = grpSpPr ? this.extractShapeStyle(grpSpPr) : void 0;
|
|
64789
64865
|
const hasGroupFill = grpFillStyle && grpFillStyle.fillMode && grpFillStyle.fillMode !== "none";
|
|
64790
|
-
const children10 = await this.parseGroupShape(
|
|
64866
|
+
const children10 = await this.parseGroupShape(group2, baseId, slidePath, rawXmlStr);
|
|
64791
64867
|
if (children10.length === 0) {
|
|
64792
64868
|
return null;
|
|
64793
64869
|
}
|
|
@@ -64813,7 +64889,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64813
64889
|
child202.x -= parentX;
|
|
64814
64890
|
child202.y -= parentY;
|
|
64815
64891
|
}
|
|
64816
|
-
const grpCNvPr =
|
|
64892
|
+
const grpCNvPr = group2?.["p:nvGrpSpPr"]?.["p:cNvPr"];
|
|
64817
64893
|
const grpSlideRels = this.slideRelsMap.get(slidePath);
|
|
64818
64894
|
const { actionClick: grpActionClick, actionHover: grpActionHover } = this.parseElementActions(
|
|
64819
64895
|
grpCNvPr,
|
|
@@ -64833,7 +64909,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
64833
64909
|
flipHorizontal: flipHorizontal || void 0,
|
|
64834
64910
|
flipVertical: flipVertical || void 0,
|
|
64835
64911
|
children: children10,
|
|
64836
|
-
rawXml:
|
|
64912
|
+
rawXml: group2,
|
|
64837
64913
|
actionClick: grpActionClick,
|
|
64838
64914
|
actionHover: grpActionHover,
|
|
64839
64915
|
groupFill: hasGroupFill ? grpFillStyle : void 0
|
|
@@ -66300,12 +66376,12 @@ var PptxHandlerRuntime74 = class extends PptxHandlerRuntime73 {
|
|
|
66300
66376
|
}
|
|
66301
66377
|
} else if (entry2.tag === "p:grpSp") {
|
|
66302
66378
|
const groups = this.ensureArray(spTree["p:grpSp"]);
|
|
66303
|
-
const
|
|
66304
|
-
if (!
|
|
66379
|
+
const group2 = groups[entry2.indexInType];
|
|
66380
|
+
if (!group2) {
|
|
66305
66381
|
continue;
|
|
66306
66382
|
}
|
|
66307
66383
|
const element = await this.parseGroupShapeAsGroup(
|
|
66308
|
-
|
|
66384
|
+
group2,
|
|
66309
66385
|
`master-group-${masterToken}-${entry2.indexInType}`,
|
|
66310
66386
|
masterPath
|
|
66311
66387
|
);
|
|
@@ -66522,12 +66598,12 @@ var PptxHandlerRuntime76 = class extends PptxHandlerRuntime75 {
|
|
|
66522
66598
|
}
|
|
66523
66599
|
} else if (entry2.tag === "p:grpSp") {
|
|
66524
66600
|
const groups = this.ensureArray(spTree["p:grpSp"]);
|
|
66525
|
-
const
|
|
66526
|
-
if (!
|
|
66601
|
+
const group2 = groups[entry2.indexInType];
|
|
66602
|
+
if (!group2) {
|
|
66527
66603
|
continue;
|
|
66528
66604
|
}
|
|
66529
66605
|
const element = await this.parseGroupShapeAsGroup(
|
|
66530
|
-
|
|
66606
|
+
group2,
|
|
66531
66607
|
`layout-group-${layoutToken}-${entry2.indexInType}`,
|
|
66532
66608
|
layoutPath
|
|
66533
66609
|
);
|
|
@@ -68404,16 +68480,16 @@ function extractDrawingShapeTextStyle(txBody, deps) {
|
|
|
68404
68480
|
}
|
|
68405
68481
|
return { fontSize, fontColor };
|
|
68406
68482
|
}
|
|
68407
|
-
function resolveSmartArtTextStyles(paragraphs,
|
|
68483
|
+
function resolveSmartArtTextStyles(paragraphs, resolve2) {
|
|
68408
68484
|
for (const paragraph of paragraphs ?? []) {
|
|
68409
68485
|
if (paragraph.endParaRPr) {
|
|
68410
|
-
paragraph.endParaStyle =
|
|
68486
|
+
paragraph.endParaStyle = resolve2(paragraph.endParaRPr);
|
|
68411
68487
|
}
|
|
68412
68488
|
for (const item of paragraph.items) {
|
|
68413
68489
|
if (item.kind === "run" && item.run.rPr) {
|
|
68414
|
-
item.run.style =
|
|
68490
|
+
item.run.style = resolve2(item.run.rPr);
|
|
68415
68491
|
} else if ((item.kind === "field" || item.kind === "break") && item.rPr) {
|
|
68416
|
-
item.style =
|
|
68492
|
+
item.style = resolve2(item.rPr);
|
|
68417
68493
|
}
|
|
68418
68494
|
}
|
|
68419
68495
|
}
|
|
@@ -69922,6 +69998,20 @@ var PptxHandlerRuntime90 = class extends PptxHandlerRuntime89 {
|
|
|
69922
69998
|
const hasBlanks = expanded.some((value) => value === null);
|
|
69923
69999
|
const values = hasBlanks ? expanded.map((value) => value ?? 0) : this.extractChartPointValues(valNode, true).map((value) => Number.parseFloat(value)).filter((value) => Number.isFinite(value));
|
|
69924
70000
|
const blanks = hasBlanks ? expanded.map((value) => value === null) : void 0;
|
|
70001
|
+
const seriesNumberFormat = String(
|
|
70002
|
+
this.xmlLookupService.getChildByLocalName(
|
|
70003
|
+
this.xmlLookupService.getChildByLocalName(seriesNode, "dLbls"),
|
|
70004
|
+
"numFmt"
|
|
70005
|
+
)?.["@_formatCode"] ?? ""
|
|
70006
|
+
).trim() || String(
|
|
70007
|
+
this.xmlLookupService.getScalarChildByLocalName(
|
|
70008
|
+
this.xmlLookupService.getChildByLocalName(
|
|
70009
|
+
this.xmlLookupService.getChildByLocalName(valNode, "numRef") ?? valNode,
|
|
70010
|
+
"numCache"
|
|
70011
|
+
),
|
|
70012
|
+
"formatCode"
|
|
70013
|
+
) ?? ""
|
|
70014
|
+
).trim();
|
|
69925
70015
|
const seriesShapeProperties = this.xmlLookupService.getChildByLocalName(seriesNode, "spPr");
|
|
69926
70016
|
const seriesColor23 = this.parseColor(
|
|
69927
70017
|
this.xmlLookupService.getChildByLocalName(seriesShapeProperties, "solidFill")
|
|
@@ -69953,6 +70043,7 @@ var PptxHandlerRuntime90 = class extends PptxHandlerRuntime89 {
|
|
|
69953
70043
|
name: seriesName.trim().length > 0 ? seriesName : `Series ${seriesIndex + 1}`,
|
|
69954
70044
|
values: fallbackValues,
|
|
69955
70045
|
...blanks ? { blanks } : {},
|
|
70046
|
+
...seriesNumberFormat ? { numberFormat: seriesNumberFormat } : {},
|
|
69956
70047
|
color: seriesColor23,
|
|
69957
70048
|
...trendlines.length > 0 ? { trendlines } : {},
|
|
69958
70049
|
...errBars.length > 0 ? { errBars } : {},
|
|
@@ -79979,9 +80070,9 @@ var SlideMetadataRenderer = class {
|
|
|
79979
80070
|
const clickGroups = this.groupByClickSequence(items);
|
|
79980
80071
|
const lines = ["### Animations"];
|
|
79981
80072
|
for (let gi = 0; gi < clickGroups.length; gi += 1) {
|
|
79982
|
-
const
|
|
80073
|
+
const group2 = clickGroups[gi];
|
|
79983
80074
|
lines.push(`- **Click ${gi + 1}:**`);
|
|
79984
|
-
for (const anim of
|
|
80075
|
+
for (const anim of group2) {
|
|
79985
80076
|
lines.push(` - ${this.summariseAnimation(anim)}`);
|
|
79986
80077
|
}
|
|
79987
80078
|
}
|
|
@@ -80877,7 +80968,7 @@ var TextSegmentRenderer = class {
|
|
|
80877
80968
|
return "";
|
|
80878
80969
|
}
|
|
80879
80970
|
const paragraphs = this.groupParagraphs(segments);
|
|
80880
|
-
const renderedParagraphs = paragraphs.map((
|
|
80971
|
+
const renderedParagraphs = paragraphs.map((group2) => this.renderParagraph(group2, options)).filter((paragraph) => paragraph.text.length > 0);
|
|
80881
80972
|
if (renderedParagraphs.length === 0) {
|
|
80882
80973
|
return "";
|
|
80883
80974
|
}
|
|
@@ -80909,7 +81000,7 @@ var TextSegmentRenderer = class {
|
|
|
80909
81000
|
plainText(segments, options = {}) {
|
|
80910
81001
|
const paragraphs = this.groupParagraphs(segments);
|
|
80911
81002
|
const rendered = paragraphs.map(
|
|
80912
|
-
(
|
|
81003
|
+
(group2) => group2.segments.map((segment) => {
|
|
80913
81004
|
const base = this.resolvePlainSegmentText(segment, options);
|
|
80914
81005
|
if (segment.rubyText) {
|
|
80915
81006
|
return `${base}(${segment.rubyText})`;
|
|
@@ -80939,8 +81030,8 @@ var TextSegmentRenderer = class {
|
|
|
80939
81030
|
}
|
|
80940
81031
|
return groups;
|
|
80941
81032
|
}
|
|
80942
|
-
renderParagraph(
|
|
80943
|
-
let rawText =
|
|
81033
|
+
renderParagraph(group2, options) {
|
|
81034
|
+
let rawText = group2.segments.map((segment) => this.renderSegment(segment, options)).join("");
|
|
80944
81035
|
if (options.htmlFormatting) {
|
|
80945
81036
|
rawText = rawText.replace(/<\/strong><strong>/g, "").replace(/<\/em><em>/g, "").replace(/<\/s><s>/g, "");
|
|
80946
81037
|
} else {
|
|
@@ -80954,10 +81045,10 @@ var TextSegmentRenderer = class {
|
|
|
80954
81045
|
return { text: "", isListItem: false };
|
|
80955
81046
|
}
|
|
80956
81047
|
if (!options.disableLists && !options.inlineMode) {
|
|
80957
|
-
const bullet =
|
|
81048
|
+
const bullet = group2.segments.find((segment) => Boolean(segment.bulletInfo))?.bulletInfo;
|
|
80958
81049
|
if (bullet && !bullet.none) {
|
|
80959
|
-
const level = resolveListLevel(bullet,
|
|
80960
|
-
const marker = resolveListMarker(bullet,
|
|
81050
|
+
const level = resolveListLevel(bullet, group2.index, options.paragraphIndents);
|
|
81051
|
+
const marker = resolveListMarker(bullet, group2.index);
|
|
80961
81052
|
const alreadyNumbered = bullet.autoNumType && /^\d+[.)]\s/.test(rawText);
|
|
80962
81053
|
const prefix = alreadyNumbered ? "" : `${marker} `;
|
|
80963
81054
|
if (options.htmlFormatting) {
|
|
@@ -80973,7 +81064,7 @@ var TextSegmentRenderer = class {
|
|
|
80973
81064
|
};
|
|
80974
81065
|
}
|
|
80975
81066
|
}
|
|
80976
|
-
const align =
|
|
81067
|
+
const align = group2.segments[0]?.style.align;
|
|
80977
81068
|
if (!options.disableAlignment && !options.inlineMode && align && align !== "left") {
|
|
80978
81069
|
return {
|
|
80979
81070
|
text: `<p align="${align}">${rawText}</p>`,
|
|
@@ -83822,8 +83913,8 @@ function buildStrokeOutline(element) {
|
|
|
83822
83913
|
function suppressesCssBorder(element) {
|
|
83823
83914
|
return buildStrokeOutline(element) !== void 0;
|
|
83824
83915
|
}
|
|
83825
|
-
function getGroupChildParentFill(
|
|
83826
|
-
return
|
|
83916
|
+
function getGroupChildParentFill(group2) {
|
|
83917
|
+
return group2.type === "group" ? group2.groupFill : void 0;
|
|
83827
83918
|
}
|
|
83828
83919
|
function resolveGroupChildFill(child22, parentGroupFill) {
|
|
83829
83920
|
if (!parentGroupFill || !hasShapeProperties(child22) || child22.shapeStyle?.fillMode !== "group") {
|
|
@@ -86295,11 +86386,11 @@ var LatexParser = class {
|
|
|
86295
86386
|
return tryParseScripts(this, base);
|
|
86296
86387
|
}
|
|
86297
86388
|
if (tok.type === "group_start") {
|
|
86298
|
-
const
|
|
86299
|
-
if (
|
|
86389
|
+
const group2 = this.parseGroup();
|
|
86390
|
+
if (group2.length === 0) {
|
|
86300
86391
|
return null;
|
|
86301
86392
|
}
|
|
86302
|
-
const base =
|
|
86393
|
+
const base = group2.length === 1 ? group2[0] : this.wrapE(group2);
|
|
86303
86394
|
return tryParseScripts(this, base);
|
|
86304
86395
|
}
|
|
86305
86396
|
if (tok.type === "command") {
|
|
@@ -86707,6 +86798,273 @@ function latexToMathMl(source) {
|
|
|
86707
86798
|
function compileEquationTemplateMathMl() {
|
|
86708
86799
|
return EQUATION_TEMPLATES.map((tmpl) => latexToMathMl(tmpl.latex));
|
|
86709
86800
|
}
|
|
86801
|
+
var NICE_STEPS = [1, 2, 2.5, 5, 10];
|
|
86802
|
+
var HEADROOM = 0.05;
|
|
86803
|
+
var ZERO_ANCHOR_RATIO = 5 / 6;
|
|
86804
|
+
function niceAxisStep(value) {
|
|
86805
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
86806
|
+
return 1;
|
|
86807
|
+
}
|
|
86808
|
+
const exponent = Math.floor(Math.log10(value));
|
|
86809
|
+
const power = 10 ** exponent;
|
|
86810
|
+
const mantissa = value / power;
|
|
86811
|
+
const step = NICE_STEPS.find((candidate) => mantissa <= candidate + 1e-12) ?? 10;
|
|
86812
|
+
return step * power;
|
|
86813
|
+
}
|
|
86814
|
+
function snap(value, unit, direction) {
|
|
86815
|
+
const scaled = value / unit;
|
|
86816
|
+
const rounded = direction === "up" ? Math.ceil(scaled - 1e-9) : Math.floor(scaled + 1e-9);
|
|
86817
|
+
return rounded * unit;
|
|
86818
|
+
}
|
|
86819
|
+
function niceValueAxisBounds(dataMin, dataMax, targetIntervals = 4) {
|
|
86820
|
+
if (!Number.isFinite(dataMin) || !Number.isFinite(dataMax)) {
|
|
86821
|
+
return { min: 0, max: 1, majorUnit: 0.5 };
|
|
86822
|
+
}
|
|
86823
|
+
const low = Math.min(dataMin, dataMax);
|
|
86824
|
+
const high = Math.max(dataMin, dataMax);
|
|
86825
|
+
const intervals = Math.max(1, Math.round(targetIntervals));
|
|
86826
|
+
if (low === high) {
|
|
86827
|
+
if (low === 0) {
|
|
86828
|
+
return { min: 0, max: 1, majorUnit: 1 / intervals };
|
|
86829
|
+
}
|
|
86830
|
+
const unit2 = niceAxisStep(Math.abs(low) / intervals);
|
|
86831
|
+
return low > 0 ? { min: 0, max: snap(low, unit2, "up") || unit2, majorUnit: unit2 } : { min: snap(low, unit2, "down"), max: 0, majorUnit: unit2 };
|
|
86832
|
+
}
|
|
86833
|
+
const dataSpan = high - low;
|
|
86834
|
+
const padding = dataSpan * HEADROOM;
|
|
86835
|
+
let paddedMin;
|
|
86836
|
+
let paddedMax;
|
|
86837
|
+
if (low >= 0) {
|
|
86838
|
+
paddedMin = low < high * ZERO_ANCHOR_RATIO ? 0 : low - padding;
|
|
86839
|
+
paddedMax = high + padding;
|
|
86840
|
+
} else if (high <= 0) {
|
|
86841
|
+
paddedMax = high > low * ZERO_ANCHOR_RATIO ? 0 : high + padding;
|
|
86842
|
+
paddedMin = low - padding;
|
|
86843
|
+
} else {
|
|
86844
|
+
paddedMin = low - padding;
|
|
86845
|
+
paddedMax = high + padding;
|
|
86846
|
+
}
|
|
86847
|
+
const unit = niceAxisStep((paddedMax - paddedMin) / intervals);
|
|
86848
|
+
const min = paddedMin === 0 ? 0 : snap(paddedMin, unit, "down");
|
|
86849
|
+
let max = paddedMax === 0 ? 0 : snap(paddedMax, unit, "up");
|
|
86850
|
+
if (max <= min) {
|
|
86851
|
+
max = min + unit;
|
|
86852
|
+
}
|
|
86853
|
+
return { min, max, majorUnit: unit };
|
|
86854
|
+
}
|
|
86855
|
+
var GENERAL = /* @__PURE__ */ new Set(["", "general", "@"]);
|
|
86856
|
+
function sections(code) {
|
|
86857
|
+
const out = [];
|
|
86858
|
+
let current = "";
|
|
86859
|
+
let inQuotes = false;
|
|
86860
|
+
for (let i = 0; i < code.length; i += 1) {
|
|
86861
|
+
const ch = code[i];
|
|
86862
|
+
if (ch === '"') {
|
|
86863
|
+
inQuotes = !inQuotes;
|
|
86864
|
+
current += ch;
|
|
86865
|
+
continue;
|
|
86866
|
+
}
|
|
86867
|
+
if (ch === "\\") {
|
|
86868
|
+
current += ch + (code[i + 1] ?? "");
|
|
86869
|
+
i += 1;
|
|
86870
|
+
continue;
|
|
86871
|
+
}
|
|
86872
|
+
if (ch === ";" && !inQuotes) {
|
|
86873
|
+
out.push(current);
|
|
86874
|
+
current = "";
|
|
86875
|
+
continue;
|
|
86876
|
+
}
|
|
86877
|
+
current += ch;
|
|
86878
|
+
}
|
|
86879
|
+
out.push(current);
|
|
86880
|
+
return out;
|
|
86881
|
+
}
|
|
86882
|
+
function sectionFor(value, parts) {
|
|
86883
|
+
if (parts.length === 1) {
|
|
86884
|
+
return { code: parts[0], forcePositive: false };
|
|
86885
|
+
}
|
|
86886
|
+
if (value < 0 && parts[1] !== void 0) {
|
|
86887
|
+
return { code: parts[1], forcePositive: true };
|
|
86888
|
+
}
|
|
86889
|
+
if (value === 0 && parts[2] !== void 0) {
|
|
86890
|
+
return { code: parts[2], forcePositive: false };
|
|
86891
|
+
}
|
|
86892
|
+
return { code: parts[0], forcePositive: false };
|
|
86893
|
+
}
|
|
86894
|
+
var PLACEHOLDER = /[0#?]/u;
|
|
86895
|
+
function parsePattern(code) {
|
|
86896
|
+
let scale = 1;
|
|
86897
|
+
let scientific = false;
|
|
86898
|
+
const chars = [];
|
|
86899
|
+
let inQuotes = false;
|
|
86900
|
+
for (let i = 0; i < code.length; i += 1) {
|
|
86901
|
+
const ch = code[i];
|
|
86902
|
+
if (ch === '"') {
|
|
86903
|
+
inQuotes = !inQuotes;
|
|
86904
|
+
continue;
|
|
86905
|
+
}
|
|
86906
|
+
if (inQuotes) {
|
|
86907
|
+
chars.push({ ch, literal: true });
|
|
86908
|
+
continue;
|
|
86909
|
+
}
|
|
86910
|
+
if (ch === "\\" || ch === "*" || ch === "_") {
|
|
86911
|
+
const next = code[i + 1];
|
|
86912
|
+
i += 1;
|
|
86913
|
+
if (ch === "\\" && next !== void 0) {
|
|
86914
|
+
chars.push({ ch: next, literal: true });
|
|
86915
|
+
}
|
|
86916
|
+
continue;
|
|
86917
|
+
}
|
|
86918
|
+
if (ch === "%") {
|
|
86919
|
+
scale *= 100;
|
|
86920
|
+
chars.push({ ch, literal: true });
|
|
86921
|
+
continue;
|
|
86922
|
+
}
|
|
86923
|
+
if (ch === "E" && (code[i + 1] === "+" || code[i + 1] === "-")) {
|
|
86924
|
+
scientific = true;
|
|
86925
|
+
chars.push({ ch: "E", literal: false });
|
|
86926
|
+
i += 1;
|
|
86927
|
+
continue;
|
|
86928
|
+
}
|
|
86929
|
+
if (ch === "[") {
|
|
86930
|
+
const close = code.indexOf("]", i);
|
|
86931
|
+
i = close === -1 ? code.length : close;
|
|
86932
|
+
continue;
|
|
86933
|
+
}
|
|
86934
|
+
chars.push({ ch, literal: false });
|
|
86935
|
+
}
|
|
86936
|
+
const firstDigit = chars.findIndex((c) => !c.literal && PLACEHOLDER.test(c.ch));
|
|
86937
|
+
if (firstDigit === -1) {
|
|
86938
|
+
return void 0;
|
|
86939
|
+
}
|
|
86940
|
+
let lastDigit = firstDigit;
|
|
86941
|
+
for (let i = chars.length - 1; i >= firstDigit; i -= 1) {
|
|
86942
|
+
const c = chars[i];
|
|
86943
|
+
if (!c.literal && (PLACEHOLDER.test(c.ch) || c.ch === "." || c.ch === "," || c.ch === "E")) {
|
|
86944
|
+
lastDigit = i;
|
|
86945
|
+
break;
|
|
86946
|
+
}
|
|
86947
|
+
}
|
|
86948
|
+
const numeric = chars.slice(firstDigit, lastDigit + 1);
|
|
86949
|
+
const prefix = chars.slice(0, firstDigit).map((c) => c.ch).join("");
|
|
86950
|
+
const suffix = chars.slice(lastDigit + 1).map((c) => c.ch).join("");
|
|
86951
|
+
let grouped = false;
|
|
86952
|
+
let intDigits = 0;
|
|
86953
|
+
let required = 0;
|
|
86954
|
+
let optional = 0;
|
|
86955
|
+
let afterPoint = false;
|
|
86956
|
+
let inExponent = false;
|
|
86957
|
+
for (let i = 0; i < numeric.length; i += 1) {
|
|
86958
|
+
const { ch, literal } = numeric[i];
|
|
86959
|
+
if (literal) {
|
|
86960
|
+
continue;
|
|
86961
|
+
}
|
|
86962
|
+
if (ch === "E") {
|
|
86963
|
+
inExponent = true;
|
|
86964
|
+
continue;
|
|
86965
|
+
}
|
|
86966
|
+
if (inExponent) {
|
|
86967
|
+
continue;
|
|
86968
|
+
}
|
|
86969
|
+
if (ch === ".") {
|
|
86970
|
+
afterPoint = true;
|
|
86971
|
+
continue;
|
|
86972
|
+
}
|
|
86973
|
+
if (ch === ",") {
|
|
86974
|
+
const next = numeric.slice(i + 1).find((c) => !c.literal);
|
|
86975
|
+
if (!next || next.ch === "." || !PLACEHOLDER.test(next.ch)) {
|
|
86976
|
+
scale /= 1e3;
|
|
86977
|
+
} else {
|
|
86978
|
+
grouped = true;
|
|
86979
|
+
}
|
|
86980
|
+
continue;
|
|
86981
|
+
}
|
|
86982
|
+
if (!PLACEHOLDER.test(ch)) {
|
|
86983
|
+
continue;
|
|
86984
|
+
}
|
|
86985
|
+
if (afterPoint) {
|
|
86986
|
+
if (ch === "0") {
|
|
86987
|
+
required += 1;
|
|
86988
|
+
} else {
|
|
86989
|
+
optional += 1;
|
|
86990
|
+
}
|
|
86991
|
+
} else if (ch === "0") {
|
|
86992
|
+
intDigits += 1;
|
|
86993
|
+
}
|
|
86994
|
+
}
|
|
86995
|
+
return {
|
|
86996
|
+
prefix,
|
|
86997
|
+
suffix,
|
|
86998
|
+
intDigits,
|
|
86999
|
+
decimals: { required, optional },
|
|
87000
|
+
grouped,
|
|
87001
|
+
scale,
|
|
87002
|
+
scientific
|
|
87003
|
+
};
|
|
87004
|
+
}
|
|
87005
|
+
function group(intPart) {
|
|
87006
|
+
return intPart.replace(/\B(?=(\d{3})+(?!\d))/gu, ",");
|
|
87007
|
+
}
|
|
87008
|
+
function applyPattern(value, pattern, forcePositive) {
|
|
87009
|
+
const scaled = value * pattern.scale;
|
|
87010
|
+
const magnitude = forcePositive ? Math.abs(scaled) : scaled;
|
|
87011
|
+
if (pattern.scientific) {
|
|
87012
|
+
const digits = pattern.decimals.required + pattern.decimals.optional;
|
|
87013
|
+
const exponential = magnitude.toExponential(digits);
|
|
87014
|
+
const [mantissa, exponent] = exponential.split("e");
|
|
87015
|
+
const sign = exponent.startsWith("-") ? "-" : "+";
|
|
87016
|
+
const power = Math.abs(Number(exponent)).toString().padStart(2, "0");
|
|
87017
|
+
return `${pattern.prefix}${mantissa}E${sign}${power}${pattern.suffix}`;
|
|
87018
|
+
}
|
|
87019
|
+
const maxDecimals = pattern.decimals.required + pattern.decimals.optional;
|
|
87020
|
+
let body = magnitude.toFixed(maxDecimals);
|
|
87021
|
+
if (pattern.decimals.optional > 0) {
|
|
87022
|
+
body = body.replace(/(\.\d*?)0+$/u, "$1").replace(/\.$/u, "");
|
|
87023
|
+
const [, frac = ""] = body.split(".");
|
|
87024
|
+
if (frac.length < pattern.decimals.required) {
|
|
87025
|
+
body = Number(body).toFixed(pattern.decimals.required);
|
|
87026
|
+
}
|
|
87027
|
+
}
|
|
87028
|
+
const [rawIntPart, fracPart] = body.split(".");
|
|
87029
|
+
let intPart = rawIntPart;
|
|
87030
|
+
const negative = intPart.startsWith("-");
|
|
87031
|
+
if (negative) {
|
|
87032
|
+
intPart = intPart.slice(1);
|
|
87033
|
+
}
|
|
87034
|
+
if (intPart.length < pattern.intDigits) {
|
|
87035
|
+
intPart = intPart.padStart(pattern.intDigits, "0");
|
|
87036
|
+
}
|
|
87037
|
+
if (pattern.intDigits === 0 && intPart === "0" && fracPart !== void 0) {
|
|
87038
|
+
intPart = "";
|
|
87039
|
+
}
|
|
87040
|
+
if (pattern.grouped) {
|
|
87041
|
+
intPart = group(intPart);
|
|
87042
|
+
}
|
|
87043
|
+
const number = fracPart === void 0 ? intPart : `${intPart}.${fracPart}`;
|
|
87044
|
+
return `${negative ? "-" : ""}${pattern.prefix}${number}${pattern.suffix}`;
|
|
87045
|
+
}
|
|
87046
|
+
function formatChartNumber(value, formatCode) {
|
|
87047
|
+
if (!Number.isFinite(value)) {
|
|
87048
|
+
return void 0;
|
|
87049
|
+
}
|
|
87050
|
+
const code = (formatCode ?? "").trim();
|
|
87051
|
+
if (GENERAL.has(code.toLowerCase())) {
|
|
87052
|
+
return void 0;
|
|
87053
|
+
}
|
|
87054
|
+
if (/(?:^|[^\\"])(?:yy|mm?m|dd?|hh|ss)/iu.test(code) && !/[0#?]/u.test(code)) {
|
|
87055
|
+
return void 0;
|
|
87056
|
+
}
|
|
87057
|
+
const { code: section, forcePositive } = sectionFor(value, sections(code));
|
|
87058
|
+
const pattern = parsePattern(section);
|
|
87059
|
+
if (!pattern) {
|
|
87060
|
+
return void 0;
|
|
87061
|
+
}
|
|
87062
|
+
try {
|
|
87063
|
+
return applyPattern(value, pattern, forcePositive);
|
|
87064
|
+
} catch {
|
|
87065
|
+
return void 0;
|
|
87066
|
+
}
|
|
87067
|
+
}
|
|
86710
87068
|
var ACCENT1 = "#4472C4";
|
|
86711
87069
|
var ACCENT2 = "#ED7D31";
|
|
86712
87070
|
var ACCENT3 = "#A5A5A5";
|
|
@@ -86837,12 +87195,11 @@ function computeValueRange(series) {
|
|
|
86837
87195
|
if (allValues.length === 0) {
|
|
86838
87196
|
return { min: 0, max: 1, span: 1 };
|
|
86839
87197
|
}
|
|
86840
|
-
const
|
|
86841
|
-
|
|
86842
|
-
|
|
86843
|
-
|
|
86844
|
-
|
|
86845
|
-
return { min, max, span };
|
|
87198
|
+
const { min, max, majorUnit } = niceValueAxisBounds(
|
|
87199
|
+
Math.min(...allValues),
|
|
87200
|
+
Math.max(...allValues)
|
|
87201
|
+
);
|
|
87202
|
+
return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
|
|
86846
87203
|
}
|
|
86847
87204
|
function valueToY(val2, range, topY, bottomY) {
|
|
86848
87205
|
const usable = bottomY - topY;
|
|
@@ -86858,7 +87215,11 @@ function valueToY(val2, range, topY, bottomY) {
|
|
|
86858
87215
|
}
|
|
86859
87216
|
return range.reverseOrder ? topY + ratio * usable : bottomY - ratio * usable;
|
|
86860
87217
|
}
|
|
86861
|
-
function formatAxisValue(val2) {
|
|
87218
|
+
function formatAxisValue(val2, formatCode) {
|
|
87219
|
+
const formatted = formatChartNumber(val2, formatCode);
|
|
87220
|
+
if (formatted !== void 0) {
|
|
87221
|
+
return formatted;
|
|
87222
|
+
}
|
|
86862
87223
|
if (Math.abs(val2) >= 1e6) {
|
|
86863
87224
|
return `${(val2 / 1e6).toFixed(1)}M`;
|
|
86864
87225
|
}
|
|
@@ -86914,6 +87275,19 @@ function computeLayout(elementWidth, elementHeight, style, hasAxes, legendPos, o
|
|
|
86914
87275
|
svgHeight
|
|
86915
87276
|
};
|
|
86916
87277
|
}
|
|
87278
|
+
var DEFAULT_CHART_AREA_FILL = "#0f172a11";
|
|
87279
|
+
function resolve(fill, fallback) {
|
|
87280
|
+
if (fill === "none") {
|
|
87281
|
+
return void 0;
|
|
87282
|
+
}
|
|
87283
|
+
return fill ?? fallback;
|
|
87284
|
+
}
|
|
87285
|
+
function chartAreaFill(chartData) {
|
|
87286
|
+
return resolve(chartData?.style?.chartAreaFill, DEFAULT_CHART_AREA_FILL);
|
|
87287
|
+
}
|
|
87288
|
+
function plotAreaFill(chartData) {
|
|
87289
|
+
return resolve(chartData?.style?.plotAreaFill, void 0);
|
|
87290
|
+
}
|
|
86917
87291
|
var LOG_EXPONENT_TOLERANCE = 1e-12;
|
|
86918
87292
|
function computeLogValueRange(series, logBase) {
|
|
86919
87293
|
const allValues = series.flatMap((item) => item.values).filter((value) => value > 0);
|
|
@@ -86942,6 +87316,7 @@ function computeValueRangeForAxis(series, axis) {
|
|
|
86942
87316
|
const validMax = typeof axis?.max === "number" && Number.isFinite(axis.max) && (!logBase || axis.max > 0) ? axis.max : void 0;
|
|
86943
87317
|
const min = validMin ?? automatic.min;
|
|
86944
87318
|
let max = validMax ?? automatic.max;
|
|
87319
|
+
const majorUnit = validMin === void 0 && validMax === void 0 ? automatic.majorUnit : void 0;
|
|
86945
87320
|
if (max <= min) {
|
|
86946
87321
|
max = logBase ? min * logBase : min + 1;
|
|
86947
87322
|
}
|
|
@@ -86950,6 +87325,7 @@ function computeValueRangeForAxis(series, axis) {
|
|
|
86950
87325
|
min,
|
|
86951
87326
|
max,
|
|
86952
87327
|
span: Math.max(span, Number.EPSILON),
|
|
87328
|
+
...majorUnit !== void 0 ? { majorUnit } : {},
|
|
86953
87329
|
...logBase ? { logScale: true, logBase } : {},
|
|
86954
87330
|
...axis?.orientation === "maxMin" ? { reverseOrder: true } : {}
|
|
86955
87331
|
};
|
|
@@ -86989,6 +87365,10 @@ function generateAxisTicks(range, axis, defaultIntervals) {
|
|
|
86989
87365
|
if (explicit.length > 0) {
|
|
86990
87366
|
return explicit;
|
|
86991
87367
|
}
|
|
87368
|
+
const automatic = generateIntervalTicks(range, range.majorUnit ?? 0);
|
|
87369
|
+
if (automatic.length > 0) {
|
|
87370
|
+
return automatic;
|
|
87371
|
+
}
|
|
86992
87372
|
return Array.from(
|
|
86993
87373
|
{ length: defaultIntervals + 1 },
|
|
86994
87374
|
(_, index) => range.min + range.span / defaultIntervals * index
|
|
@@ -87557,7 +87937,7 @@ function formatTick(val2, axis) {
|
|
|
87557
87937
|
if (axis?.displayUnits) {
|
|
87558
87938
|
return formatAxisValueWithUnits(val2, axis);
|
|
87559
87939
|
}
|
|
87560
|
-
return formatAxisValue2(val2);
|
|
87940
|
+
return formatAxisValue2(val2, axis?.numFmt?.formatCode);
|
|
87561
87941
|
}
|
|
87562
87942
|
function buildPrimaryAxis(range, layout, axis, axisX = layout.plotLeft) {
|
|
87563
87943
|
const gridlines = [];
|
|
@@ -87754,7 +88134,11 @@ function hasRicherAxisFeatures(chartData) {
|
|
|
87754
88134
|
return Boolean(
|
|
87755
88135
|
chartData.dataTable || chartData.axes?.some(
|
|
87756
88136
|
(axis) => axis.crosses !== void 0 || axis.crossesAt !== void 0 || axis.crossBetween !== void 0 || axis.axisType === "valAx" && Boolean(
|
|
87757
|
-
axis.logScale || axis.displayUnits ||
|
|
88137
|
+
axis.logScale || axis.displayUnits || // A `c:numFmt` is only honoured on the `buildPrimaryAxis`
|
|
88138
|
+
// path; the fast path has no axis to read it from. The two
|
|
88139
|
+
// agree tick-for-tick when no log scale or display unit is
|
|
88140
|
+
// in play, so routing a formatted axis here costs nothing.
|
|
88141
|
+
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
|
|
87758
88142
|
)
|
|
87759
88143
|
)
|
|
87760
88144
|
);
|
|
@@ -87864,7 +88248,7 @@ function buildBars(chartData, catCount, layout, primaryRange, secondaryRange, se
|
|
|
87864
88248
|
kind: "text",
|
|
87865
88249
|
x: x + singleBarWidth / 2,
|
|
87866
88250
|
y: val2 >= 0 ? y - 4 : y + h + 10,
|
|
87867
|
-
text: formatAxisValue2(val2),
|
|
88251
|
+
text: formatAxisValue2(val2, series[si].numberFormat),
|
|
87868
88252
|
fontSize: 7,
|
|
87869
88253
|
fill: "#334155",
|
|
87870
88254
|
textAnchor: "middle"
|
|
@@ -87969,7 +88353,7 @@ function pushClusteredStackedLabels(series, sourceIndices2, catCount, layout, ra
|
|
|
87969
88353
|
kind: "text",
|
|
87970
88354
|
x,
|
|
87971
88355
|
y: labelY,
|
|
87972
|
-
text: formatAxisValue2(val2),
|
|
88356
|
+
text: formatAxisValue2(val2, series[si].numberFormat),
|
|
87973
88357
|
fontSize: 7,
|
|
87974
88358
|
fill: "#334155",
|
|
87975
88359
|
textAnchor: "middle"
|
|
@@ -88255,7 +88639,7 @@ function buildLines(chartData, catCount, layout, primaryRange, secondaryRange, s
|
|
|
88255
88639
|
kind: "text",
|
|
88256
88640
|
x: pt.x,
|
|
88257
88641
|
y: pt.y - 7,
|
|
88258
|
-
text: formatAxisValue2(val2),
|
|
88642
|
+
text: formatAxisValue2(val2, series.numberFormat),
|
|
88259
88643
|
fontSize: 7,
|
|
88260
88644
|
fill: "#334155",
|
|
88261
88645
|
textAnchor: "middle"
|
|
@@ -88327,7 +88711,7 @@ function buildAreas(chartData, catCount, layout, range, sourceIndices2, xPositio
|
|
|
88327
88711
|
kind: "text",
|
|
88328
88712
|
x: pt.x,
|
|
88329
88713
|
y: pt.y - 6,
|
|
88330
|
-
text: formatAxisValue2(val2),
|
|
88714
|
+
text: formatAxisValue2(val2, series.numberFormat),
|
|
88331
88715
|
fontSize: 7,
|
|
88332
88716
|
fill: "#334155",
|
|
88333
88717
|
textAnchor: "middle"
|
|
@@ -88372,7 +88756,7 @@ function buildScatter(chartData, layout, range) {
|
|
|
88372
88756
|
kind: "text",
|
|
88373
88757
|
x: dot.cx,
|
|
88374
88758
|
y: dot.cy - 6,
|
|
88375
|
-
text: formatAxisValue2(val2),
|
|
88759
|
+
text: formatAxisValue2(val2, series.numberFormat),
|
|
88376
88760
|
fontSize: 7,
|
|
88377
88761
|
fill: "#334155",
|
|
88378
88762
|
textAnchor: "middle"
|
|
@@ -88419,7 +88803,7 @@ function buildBubbles(chartData, layout, range) {
|
|
|
88419
88803
|
kind: "text",
|
|
88420
88804
|
x: dot.cx,
|
|
88421
88805
|
y: dot.cy - 10,
|
|
88422
|
-
text: formatAxisValue2(val2),
|
|
88806
|
+
text: formatAxisValue2(val2, series.numberFormat),
|
|
88423
88807
|
fontSize: 7,
|
|
88424
88808
|
fill: "#334155",
|
|
88425
88809
|
textAnchor: "middle"
|
|
@@ -88573,18 +88957,18 @@ function buildMultiLevelCategoryLabels(categoryLabels, categoryLevels, sourceInd
|
|
|
88573
88957
|
const bandHeight = Math.max(axis?.fontSize ?? 8, 8) + 4;
|
|
88574
88958
|
return levels.flatMap((level, levelIndex) => {
|
|
88575
88959
|
const values = sourceIndices2.map((sourceIndex) => level[sourceIndex] ?? "");
|
|
88576
|
-
return groupedLabels(values).flatMap((
|
|
88577
|
-
if (!
|
|
88960
|
+
return groupedLabels(values).flatMap((group2) => {
|
|
88961
|
+
if (!group2.text || group2.start % skip !== 0) {
|
|
88578
88962
|
return [];
|
|
88579
88963
|
}
|
|
88580
|
-
const startX = categoryX2(
|
|
88581
|
-
const endX = categoryX2(
|
|
88964
|
+
const startX = categoryX2(group2.start, sourceIndices2.length, layout, spacing);
|
|
88965
|
+
const endX = categoryX2(group2.end, sourceIndices2.length, layout, spacing);
|
|
88582
88966
|
return [
|
|
88583
88967
|
{
|
|
88584
88968
|
kind: "text",
|
|
88585
88969
|
x: (startX + endX) / 2,
|
|
88586
88970
|
y: labelY + direction * (offset + levelIndex * bandHeight),
|
|
88587
|
-
text:
|
|
88971
|
+
text: group2.text,
|
|
88588
88972
|
textAnchor,
|
|
88589
88973
|
...chartAxisTextStyle(axis)
|
|
88590
88974
|
}
|
|
@@ -89829,7 +90213,7 @@ function buildComboViewModel(element, chartData, categoryLabels) {
|
|
|
89829
90213
|
kind: "text",
|
|
89830
90214
|
x: point.x,
|
|
89831
90215
|
y: point.y - 7,
|
|
89832
|
-
text: formatAxisValue2(point.value),
|
|
90216
|
+
text: formatAxisValue2(point.value, series.numberFormat),
|
|
89833
90217
|
fontSize: 7,
|
|
89834
90218
|
fill: "#334155",
|
|
89835
90219
|
textAnchor: "middle"
|
|
@@ -89884,7 +90268,7 @@ function appendBarLabels(series, chartData, layout, catCount, range, sourceIndic
|
|
|
89884
90268
|
kind: "text",
|
|
89885
90269
|
x: xPositions?.[displayIndex] ?? layout.plotLeft + groupWidth * displayIndex + offset + barWidth / 2,
|
|
89886
90270
|
y: value >= 0 ? Math.min(zeroY, valueY) - 4 : Math.max(zeroY, valueY) + 10,
|
|
89887
|
-
text: formatAxisValue2(value),
|
|
90271
|
+
text: formatAxisValue2(value, series.numberFormat),
|
|
89888
90272
|
fontSize: 7,
|
|
89889
90273
|
fill: "#334155",
|
|
89890
90274
|
textAnchor: "middle"
|
|
@@ -90921,7 +91305,7 @@ function isOutsidePosition(position2) {
|
|
|
90921
91305
|
return position2 === "outEnd" || position2 === "bestFit";
|
|
90922
91306
|
}
|
|
90923
91307
|
function buildPieDataLabels(params) {
|
|
90924
|
-
const { slices, values, cx, cy, outerR, position: position2, showLeaderLines } = params;
|
|
91308
|
+
const { slices, values, cx, cy, outerR, position: position2, showLeaderLines, numberFormat } = params;
|
|
90925
91309
|
const outside = isOutsidePosition(position2);
|
|
90926
91310
|
const labels = [];
|
|
90927
91311
|
const leaderLines = [];
|
|
@@ -90935,7 +91319,7 @@ function buildPieDataLabels(params) {
|
|
|
90935
91319
|
kind: "text",
|
|
90936
91320
|
x: slice.labelX,
|
|
90937
91321
|
y: slice.labelY,
|
|
90938
|
-
text: formatAxisValue2(val2),
|
|
91322
|
+
text: formatAxisValue2(val2, numberFormat),
|
|
90939
91323
|
fontSize: 8,
|
|
90940
91324
|
fill: "#ffffff",
|
|
90941
91325
|
textAnchor: "middle",
|
|
@@ -90955,7 +91339,7 @@ function buildPieDataLabels(params) {
|
|
|
90955
91339
|
kind: "text",
|
|
90956
91340
|
x: labelX + (cos >= 0 ? 2 : -2),
|
|
90957
91341
|
y: labelY,
|
|
90958
|
-
text: formatAxisValue2(val2),
|
|
91342
|
+
text: formatAxisValue2(val2, numberFormat),
|
|
90959
91343
|
fontSize: 8,
|
|
90960
91344
|
fill: "#334155",
|
|
90961
91345
|
textAnchor: anchor,
|
|
@@ -92224,10 +92608,8 @@ function computeValueRange2(series) {
|
|
|
92224
92608
|
if (dataMin === Number.POSITIVE_INFINITY) {
|
|
92225
92609
|
return { min: 0, max: 1, span: 1 };
|
|
92226
92610
|
}
|
|
92227
|
-
const min =
|
|
92228
|
-
|
|
92229
|
-
const span = Math.max(max - min, 1);
|
|
92230
|
-
return { min, max, span };
|
|
92611
|
+
const { min, max, majorUnit } = niceValueAxisBounds(dataMin, dataMax);
|
|
92612
|
+
return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
|
|
92231
92613
|
}
|
|
92232
92614
|
function computeStackedValueRange(series, catCount) {
|
|
92233
92615
|
let maxSum = 0;
|
|
@@ -92246,10 +92628,8 @@ function computeStackedValueRange(series, catCount) {
|
|
|
92246
92628
|
maxSum = Math.max(maxSum, pos2);
|
|
92247
92629
|
minSum = Math.min(minSum, neg);
|
|
92248
92630
|
}
|
|
92249
|
-
const min = Math.min(minSum, 0);
|
|
92250
|
-
|
|
92251
|
-
const span = Math.max(max - min, 1);
|
|
92252
|
-
return { min, max, span };
|
|
92631
|
+
const { min, max, majorUnit } = niceValueAxisBounds(Math.min(minSum, 0), Math.max(maxSum, 0));
|
|
92632
|
+
return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
|
|
92253
92633
|
}
|
|
92254
92634
|
function valueToY2(val2, range, topY, bottomY) {
|
|
92255
92635
|
const usable = bottomY - topY;
|
|
@@ -92265,7 +92645,11 @@ function valueToY2(val2, range, topY, bottomY) {
|
|
|
92265
92645
|
}
|
|
92266
92646
|
return range.reverseOrder ? topY + ratio * usable : bottomY - ratio * usable;
|
|
92267
92647
|
}
|
|
92268
|
-
function formatAxisValue2(val2) {
|
|
92648
|
+
function formatAxisValue2(val2, formatCode) {
|
|
92649
|
+
const formatted = formatChartNumber(val2, formatCode);
|
|
92650
|
+
if (formatted !== void 0) {
|
|
92651
|
+
return formatted;
|
|
92652
|
+
}
|
|
92269
92653
|
if (Math.abs(val2) >= 1e6) {
|
|
92270
92654
|
return `${(val2 / 1e6).toFixed(1)}M`;
|
|
92271
92655
|
}
|
|
@@ -92327,11 +92711,23 @@ var GRIDLINE_COLOR2 = "#e2e8f0";
|
|
|
92327
92711
|
var AXIS_LABEL_COLOR = "#64748b";
|
|
92328
92712
|
var ZERO_LINE_COLOR = "#94a3b8";
|
|
92329
92713
|
var TICK_COUNT2 = 5;
|
|
92714
|
+
function axisTickValues(range) {
|
|
92715
|
+
const unit = range.majorUnit;
|
|
92716
|
+
if (unit !== void 0 && Number.isFinite(unit) && unit > 0 && !range.logScale) {
|
|
92717
|
+
const steps = Math.round((range.max - range.min) / unit);
|
|
92718
|
+
if (steps >= 1 && steps <= 100) {
|
|
92719
|
+
return Array.from({ length: steps + 1 }, (_unused, index) => range.min + unit * index);
|
|
92720
|
+
}
|
|
92721
|
+
}
|
|
92722
|
+
return Array.from(
|
|
92723
|
+
{ length: TICK_COUNT2 + 1 },
|
|
92724
|
+
(_unused, index) => range.min + range.span / TICK_COUNT2 * index
|
|
92725
|
+
);
|
|
92726
|
+
}
|
|
92330
92727
|
function buildGridlinesAndLabels(range, layout) {
|
|
92331
92728
|
const gridlines = [];
|
|
92332
92729
|
const axisLabels = [];
|
|
92333
|
-
for (
|
|
92334
|
-
const val2 = range.min + range.span / TICK_COUNT2 * i;
|
|
92730
|
+
for (const val2 of axisTickValues(range)) {
|
|
92335
92731
|
const y = valueToY2(val2, range, layout.plotTop, layout.plotBottom);
|
|
92336
92732
|
gridlines.push({
|
|
92337
92733
|
kind: "line",
|
|
@@ -92649,13 +93045,26 @@ function buildChartViewModel(element) {
|
|
|
92649
93045
|
const longestLen = chartData.series.reduce((m, s) => Math.max(m, s.values.length), 0);
|
|
92650
93046
|
const categoryLabels = chartData.categories.length > 0 ? chartData.categories : Array.from({ length: longestLen }, (_, i) => String(i + 1));
|
|
92651
93047
|
if (chartType === "ofPie") {
|
|
92652
|
-
return
|
|
93048
|
+
return withChartAreaFill(
|
|
93049
|
+
withUserShapeOverlay(buildOfPieViewModel(element, chartData, categoryLabels), chartData),
|
|
93050
|
+
chartData
|
|
93051
|
+
);
|
|
92653
93052
|
}
|
|
92654
93053
|
const flat = buildFlatViewModel(element, chartData, categoryLabels, kind);
|
|
92655
93054
|
if (is3DChartType(chartType)) {
|
|
92656
|
-
return
|
|
93055
|
+
return withChartAreaFill(
|
|
93056
|
+
withUserShapeOverlay(applyChart3DDepth(flat, chartType, chartData.view3D), chartData),
|
|
93057
|
+
chartData
|
|
93058
|
+
);
|
|
92657
93059
|
}
|
|
92658
|
-
return withUserShapeOverlay(flat, chartData);
|
|
93060
|
+
return withChartAreaFill(withUserShapeOverlay(flat, chartData), chartData);
|
|
93061
|
+
}
|
|
93062
|
+
function withChartAreaFill(vm, chartData) {
|
|
93063
|
+
return {
|
|
93064
|
+
...vm,
|
|
93065
|
+
areaFill: chartAreaFill(chartData),
|
|
93066
|
+
plotFill: plotAreaFill(chartData)
|
|
93067
|
+
};
|
|
92659
93068
|
}
|
|
92660
93069
|
function withUserShapeOverlay(vm, chartData) {
|
|
92661
93070
|
const overlay = buildChartUserShapeOverlay(chartData.userShapes, vm.svgWidth, vm.svgHeight);
|
|
@@ -92716,6 +93125,8 @@ function buildFallbackViewModel(width, height, label) {
|
|
|
92716
93125
|
return {
|
|
92717
93126
|
svgWidth,
|
|
92718
93127
|
svgHeight,
|
|
93128
|
+
// No chart data to read a fill from, so the historical wash stands.
|
|
93129
|
+
areaFill: DEFAULT_CHART_AREA_FILL,
|
|
92719
93130
|
title: void 0,
|
|
92720
93131
|
titleX: svgWidth / 2,
|
|
92721
93132
|
titleY: 14,
|
|
@@ -92787,7 +93198,8 @@ function buildPieViewModel(element, chartData, categoryLabels, isDoughnut) {
|
|
|
92787
93198
|
cy,
|
|
92788
93199
|
outerR,
|
|
92789
93200
|
position: chartData.style.dataLabels?.position,
|
|
92790
|
-
showLeaderLines: chartData.style.dataLabels?.showLeaderLines
|
|
93201
|
+
showLeaderLines: chartData.style.dataLabels?.showLeaderLines,
|
|
93202
|
+
numberFormat: chartData.series[0]?.numberFormat
|
|
92791
93203
|
});
|
|
92792
93204
|
dataLabels.push(...labelResult.labels);
|
|
92793
93205
|
primitives.push(...labelResult.leaderLines);
|
|
@@ -92906,7 +93318,7 @@ function buildRadarViewModel(element, chartData, categoryLabels) {
|
|
|
92906
93318
|
kind: "text",
|
|
92907
93319
|
x: p.x,
|
|
92908
93320
|
y: p.y - 8,
|
|
92909
|
-
text: formatAxisValue2(val2),
|
|
93321
|
+
text: formatAxisValue2(val2, series.numberFormat),
|
|
92910
93322
|
fontSize: 7,
|
|
92911
93323
|
fill: "#334155",
|
|
92912
93324
|
textAnchor: "middle"
|
|
@@ -93956,8 +94368,8 @@ function finalizeClickGroup(steps, options) {
|
|
|
93956
94368
|
maxEnd = end;
|
|
93957
94369
|
}
|
|
93958
94370
|
}
|
|
93959
|
-
const
|
|
93960
|
-
return
|
|
94371
|
+
const group2 = { steps, totalDurationMs: maxEnd };
|
|
94372
|
+
return group2;
|
|
93961
94373
|
}
|
|
93962
94374
|
var CLICK_EVENTS = /* @__PURE__ */ new Set(["onClick", "onNext"]);
|
|
93963
94375
|
var HOVER_EVENTS = /* @__PURE__ */ new Set(["onMouseOver"]);
|
|
@@ -93976,6 +94388,9 @@ function normalizeDelay(delay) {
|
|
|
93976
94388
|
}
|
|
93977
94389
|
return { ms: delay, indefinite: false };
|
|
93978
94390
|
}
|
|
94391
|
+
function isInteractiveTrigger(trigger) {
|
|
94392
|
+
return trigger === "onClick" || trigger === "onShapeClick" || trigger === "onHover";
|
|
94393
|
+
}
|
|
93979
94394
|
function classifyCondition(cond) {
|
|
93980
94395
|
const evt = cond.event;
|
|
93981
94396
|
if (evt && CLICK_EVENTS.has(evt)) {
|
|
@@ -93995,7 +94410,8 @@ function resolveEffectiveStartCondition(conditions, fallbackTrigger) {
|
|
|
93995
94410
|
delayMs: 0,
|
|
93996
94411
|
hasClickAlternative: false,
|
|
93997
94412
|
hasHoverAlternative: false,
|
|
93998
|
-
indefinite: false
|
|
94413
|
+
indefinite: false,
|
|
94414
|
+
requiresInteraction: isInteractiveTrigger(fallbackTrigger)
|
|
93999
94415
|
};
|
|
94000
94416
|
if (!conditions || conditions.length === 0) {
|
|
94001
94417
|
return base;
|
|
@@ -94040,6 +94456,7 @@ function resolveEffectiveStartCondition(conditions, fallbackTrigger) {
|
|
|
94040
94456
|
base.indefinite = indefinite;
|
|
94041
94457
|
base.dependsOnTimeNodeId = timenode.targetTimeNodeId;
|
|
94042
94458
|
base.dependsOnEvent = timenode.event;
|
|
94459
|
+
base.requiresInteraction = false;
|
|
94043
94460
|
return base;
|
|
94044
94461
|
}
|
|
94045
94462
|
if (delayCond && (delayCond.delay ?? 0) !== 0) {
|
|
@@ -94047,19 +94464,23 @@ function resolveEffectiveStartCondition(conditions, fallbackTrigger) {
|
|
|
94047
94464
|
base.trigger = clickCond ? "onClick" : "afterDelay";
|
|
94048
94465
|
base.delayMs = ms;
|
|
94049
94466
|
base.indefinite = indefinite;
|
|
94467
|
+
base.requiresInteraction = indefinite;
|
|
94050
94468
|
return base;
|
|
94051
94469
|
}
|
|
94052
94470
|
if (clickCond) {
|
|
94053
94471
|
base.trigger = clickCond.targetShapeId ? "onShapeClick" : "onClick";
|
|
94472
|
+
base.requiresInteraction = true;
|
|
94054
94473
|
return base;
|
|
94055
94474
|
}
|
|
94056
94475
|
if (hoverCond) {
|
|
94057
94476
|
base.trigger = "onHover";
|
|
94477
|
+
base.requiresInteraction = true;
|
|
94058
94478
|
return base;
|
|
94059
94479
|
}
|
|
94060
94480
|
if (delayCond) {
|
|
94061
94481
|
base.trigger = fallbackTrigger;
|
|
94062
94482
|
base.delayMs = 0;
|
|
94483
|
+
base.requiresInteraction = false;
|
|
94063
94484
|
}
|
|
94064
94485
|
return base;
|
|
94065
94486
|
}
|
|
@@ -94398,7 +94819,7 @@ function parseMediaCommand(commandString) {
|
|
|
94398
94819
|
if (lower === "stop" || lower === "stopmedia") {
|
|
94399
94820
|
return { verb: "stop" };
|
|
94400
94821
|
}
|
|
94401
|
-
if (lower === "toggleplay") {
|
|
94822
|
+
if (lower === "toggleplay" || lower === "togglepause") {
|
|
94402
94823
|
return { verb: "togglePlay" };
|
|
94403
94824
|
}
|
|
94404
94825
|
return void 0;
|
|
@@ -94522,15 +94943,15 @@ function buildTimeline(nativeAnimations) {
|
|
|
94522
94943
|
const isFirstAnimation = clickGroups.length === 0 && currentGroup.length === 0;
|
|
94523
94944
|
if (isOnClick || isFirstAnimation) {
|
|
94524
94945
|
if (currentGroup.length > 0) {
|
|
94525
|
-
const
|
|
94946
|
+
const group2 = finalizeClickGroup(currentGroup);
|
|
94526
94947
|
if (currentGroupAutoStart || !currentGroupIsClick && clickGroups.length > 0) {
|
|
94527
|
-
|
|
94948
|
+
group2.autoAdvance = true;
|
|
94528
94949
|
}
|
|
94529
|
-
clickGroups.push(
|
|
94950
|
+
clickGroups.push(group2);
|
|
94530
94951
|
}
|
|
94531
94952
|
currentGroup = [];
|
|
94532
94953
|
currentGroupIsClick = isOnClick || isFirstAnimation;
|
|
94533
|
-
currentGroupAutoStart =
|
|
94954
|
+
currentGroupAutoStart = singleAnim.groupAutoStart === true && !effective.requiresInteraction;
|
|
94534
94955
|
subGroupIndex = singleAnim.parGroupIndex;
|
|
94535
94956
|
subGroupStartMs = 0;
|
|
94536
94957
|
}
|
|
@@ -94570,15 +94991,15 @@ function buildTimeline(nativeAnimations) {
|
|
|
94570
94991
|
}
|
|
94571
94992
|
}
|
|
94572
94993
|
if (currentGroup.length > 0) {
|
|
94573
|
-
const
|
|
94994
|
+
const group2 = finalizeClickGroup(currentGroup);
|
|
94574
94995
|
if (currentGroupAutoStart || !currentGroupIsClick && clickGroups.length > 0) {
|
|
94575
|
-
|
|
94996
|
+
group2.autoAdvance = true;
|
|
94576
94997
|
}
|
|
94577
|
-
clickGroups.push(
|
|
94998
|
+
clickGroups.push(group2);
|
|
94578
94999
|
}
|
|
94579
|
-
for (const
|
|
94580
|
-
if (
|
|
94581
|
-
|
|
95000
|
+
for (const group2 of clickGroups) {
|
|
95001
|
+
if (group2.autoAdvance) {
|
|
95002
|
+
group2.autoAdvanceDelayMs = 0;
|
|
94582
95003
|
}
|
|
94583
95004
|
}
|
|
94584
95005
|
const interactiveSequences = buildSequenceGroups(
|
|
@@ -94635,25 +95056,26 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
94635
95056
|
for (const anim of anims) {
|
|
94636
95057
|
let effect = resolveEffect(anim);
|
|
94637
95058
|
const dynamic = effect ? void 0 : buildDynamicKeyframe(anim, dynamicUid++);
|
|
94638
|
-
|
|
95059
|
+
const isCommand = !effect && !dynamic && isMediaCommandAnimation(anim);
|
|
95060
|
+
if (!effect && !dynamic && !isCommand) {
|
|
94639
95061
|
effect = fallbackEffectForClass(anim.presetClass);
|
|
94640
95062
|
if (!effect) {
|
|
94641
95063
|
continue;
|
|
94642
95064
|
}
|
|
94643
95065
|
}
|
|
94644
|
-
const keyframe = effect ? cssKeyframeName(effect) : dynamic.keyframeName;
|
|
95066
|
+
const keyframe = isCommand ? "" : effect ? cssKeyframeName(effect) : dynamic.keyframeName;
|
|
94645
95067
|
if (effect) {
|
|
94646
95068
|
neededKeyframes.add(effect);
|
|
94647
95069
|
}
|
|
94648
95070
|
if (dynamic) {
|
|
94649
95071
|
dynamicBlocks.push(dynamic.css);
|
|
94650
95072
|
}
|
|
94651
|
-
const elementId = anim.targetId ?? "";
|
|
95073
|
+
const elementId = isCommand ? "" : anim.targetId ?? "";
|
|
94652
95074
|
const seqTrigger = anim.trigger ?? "onShapeClick";
|
|
94653
|
-
const duration = anim.durationMs ?? defaultDuration(anim.presetClass);
|
|
95075
|
+
const duration = isCommand ? 0 : anim.durationMs ?? defaultDuration(anim.presetClass);
|
|
94654
95076
|
const animDelay = Math.max(anim.delayMs ?? 0, anim.triggerDelayMs ?? 0);
|
|
94655
95077
|
const triggerDelay = 0;
|
|
94656
|
-
const presetClass = anim.presetClass ?? "entr";
|
|
95078
|
+
const presetClass = isCommand ? "emph" : anim.presetClass ?? "entr";
|
|
94657
95079
|
const fill = fillModeForClass(anim.presetClass);
|
|
94658
95080
|
const iterCount = anim.repeatCount ?? 1;
|
|
94659
95081
|
const direction = anim.autoReverse ? "alternate" : "normal";
|
|
@@ -94677,7 +95099,7 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
94677
95099
|
}
|
|
94678
95100
|
const iterStr = iterCount === Infinity ? "infinite" : String(iterCount);
|
|
94679
95101
|
const easing = cssEasingForAnimation(anim);
|
|
94680
|
-
const cssAnimation = `${keyframe} ${duration}ms ${easing} ${delayMs}ms ${iterStr} ${direction} ${fill}`;
|
|
95102
|
+
const cssAnimation = isCommand ? "" : `${keyframe} ${duration}ms ${easing} ${delayMs}ms ${iterStr} ${direction} ${fill}`;
|
|
94681
95103
|
seqGroup.push({
|
|
94682
95104
|
elementId,
|
|
94683
95105
|
cssAnimation,
|
|
@@ -94689,8 +95111,9 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
94689
95111
|
presetClass,
|
|
94690
95112
|
soundPath: anim.soundPath,
|
|
94691
95113
|
stopSound: anim.stopSound,
|
|
94692
|
-
|
|
94693
|
-
|
|
95114
|
+
command: isCommand ? buildStepCommand(anim) : void 0,
|
|
95115
|
+
build: isCommand ? void 0 : resolveStepBuildDescriptor(anim),
|
|
95116
|
+
colorTargets: isCommand ? void 0 : stepColorTargets(anim)
|
|
94694
95117
|
});
|
|
94695
95118
|
}
|
|
94696
95119
|
if (seqGroup.length > 0) {
|
|
@@ -94804,9 +95227,9 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
94804
95227
|
return null;
|
|
94805
95228
|
}
|
|
94806
95229
|
this.currentGroupIndex++;
|
|
94807
|
-
const
|
|
94808
|
-
this.applyGroupSteps(
|
|
94809
|
-
return
|
|
95230
|
+
const group2 = this.timeline.clickGroups[this.currentGroupIndex];
|
|
95231
|
+
this.applyGroupSteps(group2);
|
|
95232
|
+
return group2;
|
|
94810
95233
|
}
|
|
94811
95234
|
/**
|
|
94812
95235
|
* Peek at the next click-group without advancing.
|
|
@@ -94918,9 +95341,9 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
94918
95341
|
return null;
|
|
94919
95342
|
}
|
|
94920
95343
|
this.interactiveGroupIndexes.set(triggerShapeId, nextIdx);
|
|
94921
|
-
const
|
|
94922
|
-
this.applyGroupSteps(
|
|
94923
|
-
return
|
|
95344
|
+
const group2 = groups[nextIdx];
|
|
95345
|
+
this.applyGroupSteps(group2);
|
|
95346
|
+
return group2;
|
|
94924
95347
|
}
|
|
94925
95348
|
/**
|
|
94926
95349
|
* Advance the hover sequence for a given trigger shape.
|
|
@@ -94937,9 +95360,9 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
94937
95360
|
return null;
|
|
94938
95361
|
}
|
|
94939
95362
|
this.hoverGroupIndexes.set(triggerShapeId, nextIdx);
|
|
94940
|
-
const
|
|
94941
|
-
this.applyGroupSteps(
|
|
94942
|
-
return
|
|
95363
|
+
const group2 = groups[nextIdx];
|
|
95364
|
+
this.applyGroupSteps(group2);
|
|
95365
|
+
return group2;
|
|
94943
95366
|
}
|
|
94944
95367
|
/**
|
|
94945
95368
|
* Reset the hover sequence for a given trigger shape so it can replay
|
|
@@ -94961,8 +95384,8 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
94961
95384
|
*/
|
|
94962
95385
|
completeAll() {
|
|
94963
95386
|
this.reset();
|
|
94964
|
-
for (const
|
|
94965
|
-
for (const step of
|
|
95387
|
+
for (const group2 of this.timeline.clickGroups) {
|
|
95388
|
+
for (const step of group2.steps) {
|
|
94966
95389
|
if (step.build || step.colorTargets) {
|
|
94967
95390
|
this.activeSteps.set(step.elementId, step);
|
|
94968
95391
|
}
|
|
@@ -94991,8 +95414,8 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
94991
95414
|
/**
|
|
94992
95415
|
* Apply a group's steps to the internal tracking state.
|
|
94993
95416
|
*/
|
|
94994
|
-
applyGroupSteps(
|
|
94995
|
-
for (const step of
|
|
95417
|
+
applyGroupSteps(group2) {
|
|
95418
|
+
for (const step of group2.steps) {
|
|
94996
95419
|
this.activeAnimations.set(step.elementId, step.cssAnimation);
|
|
94997
95420
|
if (step.build || step.colorTargets) {
|
|
94998
95421
|
this.activeSteps.set(step.elementId, step);
|
|
@@ -95565,9 +95988,9 @@ var PresentationAnimationController = class _PresentationAnimationController {
|
|
|
95565
95988
|
* binding the group needs a requestAnimationFrame reveal loop; an empty result
|
|
95566
95989
|
* means ordinary discrete click-advance is enough.
|
|
95567
95990
|
*/
|
|
95568
|
-
static collectBuildStepIds(
|
|
95991
|
+
static collectBuildStepIds(group2) {
|
|
95569
95992
|
const ids = [];
|
|
95570
|
-
for (const step of
|
|
95993
|
+
for (const step of group2.steps) {
|
|
95571
95994
|
if (step.build) {
|
|
95572
95995
|
ids.push(step.elementId);
|
|
95573
95996
|
}
|
|
@@ -95634,8 +96057,8 @@ function findMediaElementByElementId(targetId, root) {
|
|
|
95634
96057
|
}
|
|
95635
96058
|
return void 0;
|
|
95636
96059
|
}
|
|
95637
|
-
function runMediaCommand(command,
|
|
95638
|
-
const el =
|
|
96060
|
+
function runMediaCommand(command, resolve2) {
|
|
96061
|
+
const el = resolve2(command.targetId);
|
|
95639
96062
|
if (!el) {
|
|
95640
96063
|
return false;
|
|
95641
96064
|
}
|
|
@@ -96438,10 +96861,10 @@ function collectSections(entry2, tableData, pos2) {
|
|
|
96438
96861
|
const isBottom = rowIndex === rowCount - 1;
|
|
96439
96862
|
const isLeft = cellIndex === 0;
|
|
96440
96863
|
const isRight = cellIndex === columnCount - 1;
|
|
96441
|
-
const
|
|
96864
|
+
const sections2 = [];
|
|
96442
96865
|
const push2 = (borders, regionTop, regionBottom, regionLeft, regionRight) => {
|
|
96443
96866
|
if (borders) {
|
|
96444
|
-
|
|
96867
|
+
sections2.push({ borders, regionTop, regionBottom, regionLeft, regionRight });
|
|
96445
96868
|
}
|
|
96446
96869
|
};
|
|
96447
96870
|
push2(entry2.wholeTblBorders, isTop, isBottom, isLeft, isRight);
|
|
@@ -96481,19 +96904,19 @@ function collectSections(entry2, tableData, pos2) {
|
|
|
96481
96904
|
if (tableData.lastCol && isRight) {
|
|
96482
96905
|
push2(entry2.lastColBorders, isTop, isBottom, true, true);
|
|
96483
96906
|
}
|
|
96484
|
-
return
|
|
96907
|
+
return sections2;
|
|
96485
96908
|
}
|
|
96486
|
-
function resolveStyleDiagonalBorders(entry2, tableData, pos2,
|
|
96909
|
+
function resolveStyleDiagonalBorders(entry2, tableData, pos2, resolve2) {
|
|
96487
96910
|
if (!entry2) {
|
|
96488
96911
|
return void 0;
|
|
96489
96912
|
}
|
|
96490
|
-
const
|
|
96491
|
-
if (
|
|
96913
|
+
const sections2 = collectSections(entry2, tableData, pos2);
|
|
96914
|
+
if (sections2.length === 0) {
|
|
96492
96915
|
return void 0;
|
|
96493
96916
|
}
|
|
96494
96917
|
let tl2br;
|
|
96495
96918
|
let bl2tr;
|
|
96496
|
-
for (const section of
|
|
96919
|
+
for (const section of sections2) {
|
|
96497
96920
|
if (section.borders.tl2br) {
|
|
96498
96921
|
tl2br = section.borders.tl2br;
|
|
96499
96922
|
}
|
|
@@ -96504,12 +96927,12 @@ function resolveStyleDiagonalBorders(entry2, tableData, pos2, resolve) {
|
|
|
96504
96927
|
const info = {};
|
|
96505
96928
|
let applied = false;
|
|
96506
96929
|
if (tl2br && !tl2br.noFill) {
|
|
96507
|
-
info.diagDownColor = tl2br.color ??
|
|
96930
|
+
info.diagDownColor = tl2br.color ?? resolve2(tl2br.fill) ?? "#000000";
|
|
96508
96931
|
info.diagDownWidth = tl2br.width ?? 1;
|
|
96509
96932
|
applied = true;
|
|
96510
96933
|
}
|
|
96511
96934
|
if (bl2tr && !bl2tr.noFill) {
|
|
96512
|
-
info.diagUpColor = bl2tr.color ??
|
|
96935
|
+
info.diagUpColor = bl2tr.color ?? resolve2(bl2tr.fill) ?? "#000000";
|
|
96513
96936
|
info.diagUpWidth = bl2tr.width ?? 1;
|
|
96514
96937
|
applied = true;
|
|
96515
96938
|
}
|
|
@@ -97916,7 +98339,7 @@ function groupElements(elements, ids, groupId) {
|
|
|
97916
98339
|
x: el.x - groupX,
|
|
97917
98340
|
y: el.y - groupY
|
|
97918
98341
|
}));
|
|
97919
|
-
const
|
|
98342
|
+
const group2 = {
|
|
97920
98343
|
type: "group",
|
|
97921
98344
|
id: groupId,
|
|
97922
98345
|
name: "Group",
|
|
@@ -97935,7 +98358,7 @@ function groupElements(elements, ids, groupId) {
|
|
|
97935
98358
|
}
|
|
97936
98359
|
const result = [
|
|
97937
98360
|
...remaining.slice(0, adjustedIndex),
|
|
97938
|
-
|
|
98361
|
+
group2,
|
|
97939
98362
|
...remaining.slice(adjustedIndex)
|
|
97940
98363
|
];
|
|
97941
98364
|
return { elements: result, groupId };
|
|
@@ -98167,38 +98590,38 @@ function resolveSlideId(slide, index) {
|
|
|
98167
98590
|
const cSld = rawXml?.["p:sld"];
|
|
98168
98591
|
return String(cSld?.["@_id"] || slide?.slideNumber || index + 1);
|
|
98169
98592
|
}
|
|
98170
|
-
function groupSlidesBySection(
|
|
98593
|
+
function groupSlidesBySection(sections2, slides) {
|
|
98171
98594
|
if (slides.length === 0) {
|
|
98172
98595
|
return [];
|
|
98173
98596
|
}
|
|
98174
|
-
if (
|
|
98597
|
+
if (sections2.length === 0) {
|
|
98175
98598
|
return [
|
|
98176
98599
|
{ section: void 0, slides: [...slides], slideIndexes: slides.map((_slide, i) => i) }
|
|
98177
98600
|
];
|
|
98178
98601
|
}
|
|
98179
|
-
const sectionById = new Map(
|
|
98602
|
+
const sectionById = new Map(sections2.map((section) => [section.id, section]));
|
|
98180
98603
|
const grouped = /* @__PURE__ */ new Map();
|
|
98181
98604
|
const ungrouped = {
|
|
98182
98605
|
section: void 0,
|
|
98183
98606
|
slides: [],
|
|
98184
98607
|
slideIndexes: []
|
|
98185
98608
|
};
|
|
98186
|
-
for (const section of
|
|
98609
|
+
for (const section of sections2) {
|
|
98187
98610
|
grouped.set(section.id, { section, slides: [], slideIndexes: [] });
|
|
98188
98611
|
}
|
|
98189
98612
|
slides.forEach((slide, index) => {
|
|
98190
|
-
const
|
|
98191
|
-
const target =
|
|
98613
|
+
const group2 = slide.sectionId ? grouped.get(slide.sectionId) : void 0;
|
|
98614
|
+
const target = group2 && sectionById.has(slide.sectionId ?? "") ? group2 : ungrouped;
|
|
98192
98615
|
target.slides.push(slide);
|
|
98193
98616
|
target.slideIndexes.push(index);
|
|
98194
98617
|
});
|
|
98195
|
-
const result =
|
|
98618
|
+
const result = sections2.map((section) => grouped.get(section.id)).filter((group2) => group2.slides.length > 0);
|
|
98196
98619
|
if (ungrouped.slides.length > 0) {
|
|
98197
98620
|
result.push(ungrouped);
|
|
98198
98621
|
}
|
|
98199
98622
|
return result;
|
|
98200
98623
|
}
|
|
98201
|
-
function addSection(
|
|
98624
|
+
function addSection(sections2, slides, name, afterSlideIndex, idGenerator = generateSectionId) {
|
|
98202
98625
|
const newId = idGenerator();
|
|
98203
98626
|
const slideAtIndex = slides[afterSlideIndex];
|
|
98204
98627
|
const currentSectionId = slideAtIndex?.sectionId;
|
|
@@ -98213,9 +98636,9 @@ function addSection(sections, slides, name, afterSlideIndex, idGenerator = gener
|
|
|
98213
98636
|
const nextSlides = slides.map(
|
|
98214
98637
|
(s, i) => claimedSlideIndexes.includes(i) ? { ...s, sectionId: newId, sectionName: name } : s
|
|
98215
98638
|
);
|
|
98216
|
-
const insertIndex = currentSectionId !== void 0 ?
|
|
98639
|
+
const insertIndex = currentSectionId !== void 0 ? sections2.findIndex((sec) => sec.id === currentSectionId) + 1 : sections2.length;
|
|
98217
98640
|
const newSectionSlideIds = claimedSlideIndexes.map((i) => resolveSlideId(slides[i], i));
|
|
98218
|
-
const updated =
|
|
98641
|
+
const updated = sections2.map(
|
|
98219
98642
|
(sec) => sec.id === currentSectionId ? { ...sec, slideIds: sec.slideIds.filter((sid) => !newSectionSlideIds.includes(sid)) } : sec
|
|
98220
98643
|
);
|
|
98221
98644
|
const newSection = { id: newId, name, slideIds: newSectionSlideIds };
|
|
@@ -98223,20 +98646,20 @@ function addSection(sections, slides, name, afterSlideIndex, idGenerator = gener
|
|
|
98223
98646
|
nextSections.splice(insertIndex, 0, newSection);
|
|
98224
98647
|
return { sections: nextSections, slides: nextSlides };
|
|
98225
98648
|
}
|
|
98226
|
-
function renameSection(
|
|
98649
|
+
function renameSection(sections2, slides, sectionId, newName) {
|
|
98227
98650
|
return {
|
|
98228
|
-
sections:
|
|
98651
|
+
sections: sections2.map((sec) => sec.id === sectionId ? { ...sec, name: newName } : sec),
|
|
98229
98652
|
slides: slides.map((s) => s.sectionId === sectionId ? { ...s, sectionName: newName } : s)
|
|
98230
98653
|
};
|
|
98231
98654
|
}
|
|
98232
|
-
function deleteSection(
|
|
98233
|
-
const idx =
|
|
98655
|
+
function deleteSection(sections2, slides, sectionId) {
|
|
98656
|
+
const idx = sections2.findIndex((sec) => sec.id === sectionId);
|
|
98234
98657
|
if (idx === -1) {
|
|
98235
|
-
return { sections, slides };
|
|
98658
|
+
return { sections: sections2, slides };
|
|
98236
98659
|
}
|
|
98237
|
-
const deletedSection =
|
|
98238
|
-
const prevSection = idx > 0 ?
|
|
98239
|
-
const filtered =
|
|
98660
|
+
const deletedSection = sections2[idx];
|
|
98661
|
+
const prevSection = idx > 0 ? sections2[idx - 1] : void 0;
|
|
98662
|
+
const filtered = sections2.filter((sec) => sec.id !== sectionId);
|
|
98240
98663
|
const nextSections = prevSection !== void 0 ? filtered.map(
|
|
98241
98664
|
(sec) => sec.id === prevSection.id ? { ...sec, slideIds: [...sec.slideIds, ...deletedSection.slideIds] } : sec
|
|
98242
98665
|
) : filtered;
|
|
@@ -98251,34 +98674,34 @@ function deleteSection(sections, slides, sectionId) {
|
|
|
98251
98674
|
});
|
|
98252
98675
|
return { sections: nextSections, slides: nextSlides };
|
|
98253
98676
|
}
|
|
98254
|
-
function moveSectionUp(
|
|
98255
|
-
const idx =
|
|
98677
|
+
function moveSectionUp(sections2, sectionId) {
|
|
98678
|
+
const idx = sections2.findIndex((sec) => sec.id === sectionId);
|
|
98256
98679
|
if (idx <= 0) {
|
|
98257
|
-
return
|
|
98680
|
+
return sections2;
|
|
98258
98681
|
}
|
|
98259
|
-
const next = [...
|
|
98682
|
+
const next = [...sections2];
|
|
98260
98683
|
[next[idx - 1], next[idx]] = [next[idx], next[idx - 1]];
|
|
98261
98684
|
return next;
|
|
98262
98685
|
}
|
|
98263
|
-
function moveSectionDown(
|
|
98264
|
-
const idx =
|
|
98265
|
-
if (idx === -1 || idx >=
|
|
98266
|
-
return
|
|
98686
|
+
function moveSectionDown(sections2, sectionId) {
|
|
98687
|
+
const idx = sections2.findIndex((sec) => sec.id === sectionId);
|
|
98688
|
+
if (idx === -1 || idx >= sections2.length - 1) {
|
|
98689
|
+
return sections2;
|
|
98267
98690
|
}
|
|
98268
|
-
const next = [...
|
|
98691
|
+
const next = [...sections2];
|
|
98269
98692
|
[next[idx], next[idx + 1]] = [next[idx + 1], next[idx]];
|
|
98270
98693
|
return next;
|
|
98271
98694
|
}
|
|
98272
|
-
function moveSlidesToSection(
|
|
98273
|
-
const targetSection =
|
|
98695
|
+
function moveSlidesToSection(sections2, slides, slideIndexes, targetSectionId) {
|
|
98696
|
+
const targetSection = sections2.find((sec) => sec.id === targetSectionId);
|
|
98274
98697
|
if (!targetSection) {
|
|
98275
|
-
return { sections, slides };
|
|
98698
|
+
return { sections: sections2, slides };
|
|
98276
98699
|
}
|
|
98277
98700
|
const nextSlides = slides.map(
|
|
98278
98701
|
(s, i) => slideIndexes.includes(i) ? { ...s, sectionId: targetSectionId, sectionName: targetSection.name } : s
|
|
98279
98702
|
);
|
|
98280
98703
|
const movedSlideIds = slideIndexes.map((i) => resolveSlideId(slides[i], i));
|
|
98281
|
-
const nextSections =
|
|
98704
|
+
const nextSections = sections2.map((sec) => {
|
|
98282
98705
|
if (sec.id === targetSectionId) {
|
|
98283
98706
|
return {
|
|
98284
98707
|
...sec,
|
|
@@ -98853,7 +99276,7 @@ function buildTextBlockStyle(element, options = {}) {
|
|
|
98853
99276
|
style.unicodeBidi = "plaintext";
|
|
98854
99277
|
}
|
|
98855
99278
|
style.fontSize = ts?.fontSize || DEFAULT_TEXT_FONT_SIZE;
|
|
98856
|
-
style.fontFamily = ts?.fontFamily
|
|
99279
|
+
style.fontFamily = ts?.fontFamily ? getSubstituteFontFamily(ts.fontFamily, parsePanoseString(ts.latinFontPanose)) : DEFAULT_FONT_FAMILY;
|
|
98857
99280
|
style.fontWeight = ts?.bold ? 700 : 400;
|
|
98858
99281
|
style.fontStyle = ts?.italic ? "italic" : "normal";
|
|
98859
99282
|
style.textDecorationLine = decorations.length > 0 ? decorations.join(" ") : "none";
|
|
@@ -99907,8 +100330,8 @@ function toAbsolute(child22, offsetX, offsetY) {
|
|
|
99907
100330
|
function sameBox(a, b) {
|
|
99908
100331
|
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;
|
|
99909
100332
|
}
|
|
99910
|
-
function correspondingGroup(
|
|
99911
|
-
const morphName = getElementMorphName(
|
|
100333
|
+
function correspondingGroup(group2, candidates) {
|
|
100334
|
+
const morphName = getElementMorphName(group2);
|
|
99912
100335
|
return candidates.find((candidate) => {
|
|
99913
100336
|
if (candidate.type !== "group") {
|
|
99914
100337
|
return false;
|
|
@@ -99916,10 +100339,10 @@ function correspondingGroup(group, candidates) {
|
|
|
99916
100339
|
if (morphName !== void 0 && getElementMorphName(candidate) === morphName) {
|
|
99917
100340
|
return true;
|
|
99918
100341
|
}
|
|
99919
|
-
if (
|
|
100342
|
+
if (group2.name && candidate.name === group2.name) {
|
|
99920
100343
|
return true;
|
|
99921
100344
|
}
|
|
99922
|
-
return sameBox(
|
|
100345
|
+
return sameBox(group2, candidate);
|
|
99923
100346
|
});
|
|
99924
100347
|
}
|
|
99925
100348
|
function flattenMorphElements(elements, counterpart, offsetX = 0, offsetY = 0) {
|
|
@@ -106311,8 +106734,8 @@ async function loadOrbitControlsCtor() {
|
|
|
106311
106734
|
}
|
|
106312
106735
|
}
|
|
106313
106736
|
function loadGltf(loader, url) {
|
|
106314
|
-
return new Promise((
|
|
106315
|
-
loader.load(url,
|
|
106737
|
+
return new Promise((resolve2, reject) => {
|
|
106738
|
+
loader.load(url, resolve2, void 0, reject);
|
|
106316
106739
|
});
|
|
106317
106740
|
}
|
|
106318
106741
|
function centerAndFit(three, root) {
|
|
@@ -106779,9 +107202,9 @@ function isExportAbortError(err) {
|
|
|
106779
107202
|
}
|
|
106780
107203
|
var PPTX_OPEN_ACCEPT = ".pptx,.ppsx,.pptm,.potx";
|
|
106781
107204
|
function openFilePicker(options = {}) {
|
|
106782
|
-
return new Promise((
|
|
107205
|
+
return new Promise((resolve2) => {
|
|
106783
107206
|
if (typeof document === "undefined") {
|
|
106784
|
-
|
|
107207
|
+
resolve2(null);
|
|
106785
107208
|
return;
|
|
106786
107209
|
}
|
|
106787
107210
|
const input = document.createElement("input");
|
|
@@ -106797,7 +107220,7 @@ function openFilePicker(options = {}) {
|
|
|
106797
107220
|
}
|
|
106798
107221
|
settled = true;
|
|
106799
107222
|
input.remove();
|
|
106800
|
-
|
|
107223
|
+
resolve2(file);
|
|
106801
107224
|
};
|
|
106802
107225
|
input.addEventListener("change", () => finish(input.files?.[0] ?? null));
|
|
106803
107226
|
input.addEventListener("cancel", () => finish(null));
|
|
@@ -106823,12 +107246,6 @@ function mobileSlideCounter(currentIndex, total) {
|
|
|
106823
107246
|
}
|
|
106824
107247
|
return `${currentIndex + 1} / ${total}`;
|
|
106825
107248
|
}
|
|
106826
|
-
function isFirstSlide(currentIndex) {
|
|
106827
|
-
return currentIndex <= 0;
|
|
106828
|
-
}
|
|
106829
|
-
function isLastSlide(currentIndex, total) {
|
|
106830
|
-
return currentIndex >= total - 1;
|
|
106831
|
-
}
|
|
106832
107249
|
function pad2(value) {
|
|
106833
107250
|
return String(value).padStart(2, "0");
|
|
106834
107251
|
}
|
|
@@ -107370,7 +107787,7 @@ async function swapPresentationWindows(presenter, audience) {
|
|
|
107370
107787
|
}
|
|
107371
107788
|
}
|
|
107372
107789
|
function openDeckDb() {
|
|
107373
|
-
return new Promise((
|
|
107790
|
+
return new Promise((resolve2, reject) => {
|
|
107374
107791
|
const request = indexedDB.open(DB_NAME, DB_VERSION);
|
|
107375
107792
|
request.onupgradeneeded = () => {
|
|
107376
107793
|
const db = request.result;
|
|
@@ -107378,13 +107795,13 @@ function openDeckDb() {
|
|
|
107378
107795
|
db.createObjectStore(STORE_NAME);
|
|
107379
107796
|
}
|
|
107380
107797
|
};
|
|
107381
|
-
request.onsuccess = () =>
|
|
107798
|
+
request.onsuccess = () => resolve2(request.result);
|
|
107382
107799
|
request.onerror = () => reject(request.error);
|
|
107383
107800
|
});
|
|
107384
107801
|
}
|
|
107385
107802
|
async function storePresentationDeck(sessionId, content) {
|
|
107386
107803
|
const db = await openDeckDb();
|
|
107387
|
-
return new Promise((
|
|
107804
|
+
return new Promise((resolve2, reject) => {
|
|
107388
107805
|
const tx = db.transaction(STORE_NAME, "readwrite");
|
|
107389
107806
|
const bytes = content instanceof Uint8Array ? content : new Uint8Array(content);
|
|
107390
107807
|
tx.objectStore(STORE_NAME).put(
|
|
@@ -107393,7 +107810,7 @@ async function storePresentationDeck(sessionId, content) {
|
|
|
107393
107810
|
);
|
|
107394
107811
|
tx.oncomplete = () => {
|
|
107395
107812
|
db.close();
|
|
107396
|
-
|
|
107813
|
+
resolve2();
|
|
107397
107814
|
};
|
|
107398
107815
|
tx.onerror = () => {
|
|
107399
107816
|
db.close();
|
|
@@ -107404,17 +107821,17 @@ async function storePresentationDeck(sessionId, content) {
|
|
|
107404
107821
|
async function loadPresentationDeck(sessionId) {
|
|
107405
107822
|
try {
|
|
107406
107823
|
const db = await openDeckDb();
|
|
107407
|
-
return await new Promise((
|
|
107824
|
+
return await new Promise((resolve2, reject) => {
|
|
107408
107825
|
const request = db.transaction(STORE_NAME, "readonly").objectStore(STORE_NAME).get(sessionId);
|
|
107409
107826
|
request.onsuccess = () => {
|
|
107410
107827
|
db.close();
|
|
107411
107828
|
const record = request.result;
|
|
107412
107829
|
if (!record || Date.now() - record.createdAt > MAX_DECK_AGE_MS) {
|
|
107413
|
-
|
|
107830
|
+
resolve2(null);
|
|
107414
107831
|
return;
|
|
107415
107832
|
}
|
|
107416
107833
|
const raw = record.bytes;
|
|
107417
|
-
|
|
107834
|
+
resolve2(
|
|
107418
107835
|
raw instanceof Uint8Array ? raw : raw instanceof ArrayBuffer ? new Uint8Array(raw) : null
|
|
107419
107836
|
);
|
|
107420
107837
|
};
|
|
@@ -107430,16 +107847,16 @@ async function loadPresentationDeck(sessionId) {
|
|
|
107430
107847
|
async function clearPresentationDeck(sessionId) {
|
|
107431
107848
|
try {
|
|
107432
107849
|
const db = await openDeckDb();
|
|
107433
|
-
await new Promise((
|
|
107850
|
+
await new Promise((resolve2) => {
|
|
107434
107851
|
const tx = db.transaction(STORE_NAME, "readwrite");
|
|
107435
107852
|
tx.objectStore(STORE_NAME).delete(sessionId);
|
|
107436
107853
|
tx.oncomplete = () => {
|
|
107437
107854
|
db.close();
|
|
107438
|
-
|
|
107855
|
+
resolve2();
|
|
107439
107856
|
};
|
|
107440
107857
|
tx.onerror = () => {
|
|
107441
107858
|
db.close();
|
|
107442
|
-
|
|
107859
|
+
resolve2();
|
|
107443
107860
|
};
|
|
107444
107861
|
});
|
|
107445
107862
|
} catch {
|
|
@@ -107451,7 +107868,7 @@ var STORE_NAME2 = "content";
|
|
|
107451
107868
|
var CONTENT_KEY = "pptx-bytes";
|
|
107452
107869
|
var MAX_CONTENT_AGE_MS = 5 * 60 * 1e3;
|
|
107453
107870
|
function openDb() {
|
|
107454
|
-
return new Promise((
|
|
107871
|
+
return new Promise((resolve2, reject) => {
|
|
107455
107872
|
const request = indexedDB.open(DB_NAME2, DB_VERSION2);
|
|
107456
107873
|
request.onupgradeneeded = () => {
|
|
107457
107874
|
const db = request.result;
|
|
@@ -107459,7 +107876,7 @@ function openDb() {
|
|
|
107459
107876
|
db.createObjectStore(STORE_NAME2);
|
|
107460
107877
|
}
|
|
107461
107878
|
};
|
|
107462
|
-
request.onsuccess = () =>
|
|
107879
|
+
request.onsuccess = () => resolve2(request.result);
|
|
107463
107880
|
request.onerror = () => reject(request.error);
|
|
107464
107881
|
});
|
|
107465
107882
|
}
|
|
@@ -107468,7 +107885,7 @@ async function storeAudienceContent(content, sessionId) {
|
|
|
107468
107885
|
return storePresentationDeck(sessionId, content);
|
|
107469
107886
|
}
|
|
107470
107887
|
const db = await openDb();
|
|
107471
|
-
return new Promise((
|
|
107888
|
+
return new Promise((resolve2, reject) => {
|
|
107472
107889
|
const tx = db.transaction(STORE_NAME2, "readwrite");
|
|
107473
107890
|
const store = tx.objectStore(STORE_NAME2);
|
|
107474
107891
|
const bytes = content instanceof Uint8Array ? content : new Uint8Array(content);
|
|
@@ -107476,7 +107893,7 @@ async function storeAudienceContent(content, sessionId) {
|
|
|
107476
107893
|
store.put(record, CONTENT_KEY);
|
|
107477
107894
|
tx.oncomplete = () => {
|
|
107478
107895
|
db.close();
|
|
107479
|
-
|
|
107896
|
+
resolve2();
|
|
107480
107897
|
};
|
|
107481
107898
|
tx.onerror = () => {
|
|
107482
107899
|
db.close();
|
|
@@ -107490,7 +107907,7 @@ async function loadAudienceContent(sessionId) {
|
|
|
107490
107907
|
}
|
|
107491
107908
|
try {
|
|
107492
107909
|
const db = await openDb();
|
|
107493
|
-
return new Promise((
|
|
107910
|
+
return new Promise((resolve2, reject) => {
|
|
107494
107911
|
const tx = db.transaction(STORE_NAME2, "readonly");
|
|
107495
107912
|
const store = tx.objectStore(STORE_NAME2);
|
|
107496
107913
|
const request = store.get(CONTENT_KEY);
|
|
@@ -107501,20 +107918,20 @@ async function loadAudienceContent(sessionId) {
|
|
|
107501
107918
|
const record = result;
|
|
107502
107919
|
const age = Date.now() - record.createdAt;
|
|
107503
107920
|
if (age > MAX_CONTENT_AGE_MS) {
|
|
107504
|
-
|
|
107921
|
+
resolve2(null);
|
|
107505
107922
|
return;
|
|
107506
107923
|
}
|
|
107507
107924
|
const raw = record.bytes;
|
|
107508
107925
|
if (raw instanceof Uint8Array) {
|
|
107509
|
-
|
|
107926
|
+
resolve2(raw);
|
|
107510
107927
|
} else if (raw instanceof ArrayBuffer) {
|
|
107511
|
-
|
|
107928
|
+
resolve2(new Uint8Array(raw));
|
|
107512
107929
|
} else {
|
|
107513
|
-
|
|
107930
|
+
resolve2(null);
|
|
107514
107931
|
}
|
|
107515
107932
|
return;
|
|
107516
107933
|
}
|
|
107517
|
-
|
|
107934
|
+
resolve2(null);
|
|
107518
107935
|
};
|
|
107519
107936
|
request.onerror = () => {
|
|
107520
107937
|
db.close();
|
|
@@ -107531,17 +107948,17 @@ async function clearAudienceContent(sessionId) {
|
|
|
107531
107948
|
}
|
|
107532
107949
|
try {
|
|
107533
107950
|
const db = await openDb();
|
|
107534
|
-
return new Promise((
|
|
107951
|
+
return new Promise((resolve2) => {
|
|
107535
107952
|
const tx = db.transaction(STORE_NAME2, "readwrite");
|
|
107536
107953
|
const store = tx.objectStore(STORE_NAME2);
|
|
107537
107954
|
store.delete(CONTENT_KEY);
|
|
107538
107955
|
tx.oncomplete = () => {
|
|
107539
107956
|
db.close();
|
|
107540
|
-
|
|
107957
|
+
resolve2();
|
|
107541
107958
|
};
|
|
107542
107959
|
tx.onerror = () => {
|
|
107543
107960
|
db.close();
|
|
107544
|
-
|
|
107961
|
+
resolve2();
|
|
107545
107962
|
};
|
|
107546
107963
|
});
|
|
107547
107964
|
} catch {
|
|
@@ -107699,6 +108116,149 @@ var PRESENT_TOOLBAR_CLASSES = {
|
|
|
107699
108116
|
/** Underline showing a tool's current colour. */
|
|
107700
108117
|
swatchBar: "absolute bottom-0.5 left-1/2 -translate-x-1/2 w-3 h-0.5 rounded-full"
|
|
107701
108118
|
};
|
|
108119
|
+
var PRESENTER_CONSOLE_CONTROLS = [
|
|
108120
|
+
{
|
|
108121
|
+
id: "timer-toggle",
|
|
108122
|
+
kind: "button",
|
|
108123
|
+
labelKey: "pptx.presenter.toggleTimer",
|
|
108124
|
+
icon: "circle-pause",
|
|
108125
|
+
activeIcon: "circle-play"
|
|
108126
|
+
},
|
|
108127
|
+
{ id: "timer-reset", kind: "button", labelKey: "pptx.presenter.resetTimer", icon: "rotate-ccw" },
|
|
108128
|
+
{ id: "divider-timer", kind: "divider" },
|
|
108129
|
+
{
|
|
108130
|
+
id: "all-slides",
|
|
108131
|
+
kind: "button",
|
|
108132
|
+
labelKey: "pptx.presenter.seeAllSlides",
|
|
108133
|
+
icon: "grid-2x2"
|
|
108134
|
+
},
|
|
108135
|
+
{ id: "zoom-in", kind: "button", labelKey: "pptx.presenter.zoomIn", icon: "zoom-in" },
|
|
108136
|
+
{ id: "zoom-out", kind: "button", labelKey: "pptx.presenter.zoomOut", icon: "zoom-out" },
|
|
108137
|
+
{ id: "zoom-reset", kind: "button", labelKey: "pptx.presenter.resetZoom", icon: "scan" },
|
|
108138
|
+
{ id: "divider-zoom", kind: "divider" },
|
|
108139
|
+
{
|
|
108140
|
+
id: "laser",
|
|
108141
|
+
kind: "toggle",
|
|
108142
|
+
labelKey: "pptx.presentation.laserPointer",
|
|
108143
|
+
icon: "mouse-pointer-2"
|
|
108144
|
+
},
|
|
108145
|
+
{ id: "pen", kind: "toggle", labelKey: "pptx.presentation.pen", icon: "pen-tool" },
|
|
108146
|
+
{
|
|
108147
|
+
id: "highlighter",
|
|
108148
|
+
kind: "toggle",
|
|
108149
|
+
labelKey: "pptx.presentation.highlighter",
|
|
108150
|
+
icon: "highlighter"
|
|
108151
|
+
},
|
|
108152
|
+
{ id: "eraser", kind: "toggle", labelKey: "pptx.presentation.eraser", icon: "eraser" },
|
|
108153
|
+
{ id: "divider-tools", kind: "divider" },
|
|
108154
|
+
{ id: "blackout-black", kind: "toggle", labelKey: "pptx.presenter.blackScreen", glyph: "B" },
|
|
108155
|
+
{ id: "blackout-white", kind: "toggle", labelKey: "pptx.presenter.whiteScreen", glyph: "W" },
|
|
108156
|
+
{
|
|
108157
|
+
id: "captions",
|
|
108158
|
+
kind: "toggle",
|
|
108159
|
+
labelKey: "pptx.slideShow.subtitlesTooltip",
|
|
108160
|
+
icon: "captions"
|
|
108161
|
+
},
|
|
108162
|
+
{ id: "spacer", kind: "spacer" },
|
|
108163
|
+
{
|
|
108164
|
+
id: "audience",
|
|
108165
|
+
kind: "toggle",
|
|
108166
|
+
labelKey: "pptx.presenter.openAudienceWindow",
|
|
108167
|
+
activeLabelKey: "pptx.presenter.closeAudienceWindow",
|
|
108168
|
+
icon: "monitor",
|
|
108169
|
+
activeIcon: "monitor-off"
|
|
108170
|
+
},
|
|
108171
|
+
{
|
|
108172
|
+
id: "swap-displays",
|
|
108173
|
+
kind: "button",
|
|
108174
|
+
labelKey: "pptx.presenter.swapDisplays",
|
|
108175
|
+
icon: "arrow-left-right"
|
|
108176
|
+
},
|
|
108177
|
+
{ id: "end", kind: "button", labelKey: "pptx.presenter.endPresentation", icon: "x" }
|
|
108178
|
+
];
|
|
108179
|
+
PRESENTER_CONSOLE_CONTROLS.map(
|
|
108180
|
+
(control) => control.id
|
|
108181
|
+
);
|
|
108182
|
+
PRESENTER_CONSOLE_CONTROLS.flatMap(
|
|
108183
|
+
(control) => control.labelKey === void 0 ? [] : [control.labelKey]
|
|
108184
|
+
);
|
|
108185
|
+
var PRESENTER_NAVIGATOR_LABEL_KEYS = {
|
|
108186
|
+
title: "pptx.presenter.slideNavigator",
|
|
108187
|
+
subtitle: "pptx.presenter.seeAllSlides",
|
|
108188
|
+
close: "pptx.presenter.closeNavigator"
|
|
108189
|
+
};
|
|
108190
|
+
function presenterNextDisabled() {
|
|
108191
|
+
return false;
|
|
108192
|
+
}
|
|
108193
|
+
function presenterPrevDisabled(currentIndex) {
|
|
108194
|
+
return currentIndex <= 0;
|
|
108195
|
+
}
|
|
108196
|
+
var PRESENTER_TIMER_SEGMENT_MS = 5 * 60 * 1e3;
|
|
108197
|
+
function presenterTimerProgress(elapsedMs) {
|
|
108198
|
+
const elapsed = Math.max(0, elapsedMs);
|
|
108199
|
+
return {
|
|
108200
|
+
percent: Math.min(
|
|
108201
|
+
100,
|
|
108202
|
+
elapsed % PRESENTER_TIMER_SEGMENT_MS / PRESENTER_TIMER_SEGMENT_MS * 100
|
|
108203
|
+
),
|
|
108204
|
+
segment: Math.floor(elapsed / PRESENTER_TIMER_SEGMENT_MS)
|
|
108205
|
+
};
|
|
108206
|
+
}
|
|
108207
|
+
var PRESENTER_CONSOLE_CLASSES = {
|
|
108208
|
+
/** The console root, laid over the show stage. */
|
|
108209
|
+
root: "absolute inset-0 z-50 flex flex-col bg-card text-foreground",
|
|
108210
|
+
/** The control strip across the top. */
|
|
108211
|
+
strip: "flex flex-wrap items-center gap-1 border-b border-border bg-card px-3 py-2",
|
|
108212
|
+
/** A strip control, inactive. */
|
|
108213
|
+
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",
|
|
108214
|
+
/** A strip control, active. */
|
|
108215
|
+
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",
|
|
108216
|
+
/** Vertical hairline between strip groups. */
|
|
108217
|
+
divider: "mx-1 h-6 w-px bg-border",
|
|
108218
|
+
/** Flexible gap pushing the trailing group right. */
|
|
108219
|
+
spacer: "flex-1",
|
|
108220
|
+
/** The body row: current-slide pane plus rail. */
|
|
108221
|
+
body: "flex flex-1 min-h-0",
|
|
108222
|
+
/** The current-slide pane. */
|
|
108223
|
+
main: "relative flex-[7] flex flex-col items-center justify-center bg-black p-6 min-w-0 overflow-hidden",
|
|
108224
|
+
/** The right-hand rail. */
|
|
108225
|
+
rail: "flex flex-[3] min-w-[260px] max-w-[440px] flex-col border-l border-border bg-background",
|
|
108226
|
+
/** Rail section heading (Current Time / Next Slide / Speaker Notes). */
|
|
108227
|
+
railHeading: "text-[10px] uppercase tracking-wider text-muted-foreground",
|
|
108228
|
+
/** Timer progress bar track. */
|
|
108229
|
+
progressTrack: "h-1.5 w-full bg-muted/60 flex-shrink-0",
|
|
108230
|
+
/** Timer progress bar fill. */
|
|
108231
|
+
progressFill: "h-full bg-primary transition-[width] duration-1000 ease-linear",
|
|
108232
|
+
/** The "all slides" navigator overlay. */
|
|
108233
|
+
navigator: "absolute inset-0 z-[120] overflow-auto bg-card p-6",
|
|
108234
|
+
/** The navigator's tile grid. */
|
|
108235
|
+
navigatorGrid: "grid gap-5 [grid-template-columns:repeat(auto-fill,minmax(220px,1fr))]"
|
|
108236
|
+
};
|
|
108237
|
+
var AUDIENCE_FULLSCREEN_BOUNCE_MS = 1e3;
|
|
108238
|
+
function createPresenterShowGuard(options) {
|
|
108239
|
+
const graceMs = options?.graceMs ?? AUDIENCE_FULLSCREEN_BOUNCE_MS;
|
|
108240
|
+
let armedAt;
|
|
108241
|
+
const stillArmed = (now) => armedAt !== void 0 && now - armedAt >= 0 && now - armedAt <= graceMs;
|
|
108242
|
+
return {
|
|
108243
|
+
expectAudienceBounce(now = Date.now()) {
|
|
108244
|
+
armedAt = now;
|
|
108245
|
+
},
|
|
108246
|
+
classifyFullscreenExit(now = Date.now()) {
|
|
108247
|
+
if (!stillArmed(now)) {
|
|
108248
|
+
armedAt = void 0;
|
|
108249
|
+
return "end-show";
|
|
108250
|
+
}
|
|
108251
|
+
armedAt = void 0;
|
|
108252
|
+
return "restore-show";
|
|
108253
|
+
},
|
|
108254
|
+
isExpectingBounce(now = Date.now()) {
|
|
108255
|
+
return stillArmed(now);
|
|
108256
|
+
},
|
|
108257
|
+
disarm() {
|
|
108258
|
+
armedAt = void 0;
|
|
108259
|
+
}
|
|
108260
|
+
};
|
|
108261
|
+
}
|
|
107702
108262
|
function createPresentationKeyBuffer() {
|
|
107703
108263
|
return { digits: "" };
|
|
107704
108264
|
}
|
|
@@ -107953,19 +108513,19 @@ function groupElementParagraphs(element) {
|
|
|
107953
108513
|
}
|
|
107954
108514
|
return groups;
|
|
107955
108515
|
}
|
|
107956
|
-
function paragraphGroupText(
|
|
107957
|
-
return
|
|
108516
|
+
function paragraphGroupText(group2) {
|
|
108517
|
+
return group2.content.map((segment) => segment.isLineBreak ? " " : segment.text).join("");
|
|
107958
108518
|
}
|
|
107959
|
-
function paragraphGroupLevel(
|
|
107960
|
-
const first =
|
|
108519
|
+
function paragraphGroupLevel(group2) {
|
|
108520
|
+
const first = group2.marker ?? group2.content[0];
|
|
107961
108521
|
const level = first?.paragraphLevel;
|
|
107962
108522
|
return typeof level === "number" && level > 0 ? Math.min(level, MAX_PARAGRAPH_LEVEL) : 0;
|
|
107963
108523
|
}
|
|
107964
108524
|
function readElementParagraphs(element) {
|
|
107965
108525
|
const groups = groupElementParagraphs(element);
|
|
107966
|
-
const paragraphs = groups.map((
|
|
107967
|
-
text: paragraphGroupText(
|
|
107968
|
-
level: paragraphGroupLevel(
|
|
108526
|
+
const paragraphs = groups.map((group2) => ({
|
|
108527
|
+
text: paragraphGroupText(group2),
|
|
108528
|
+
level: paragraphGroupLevel(group2)
|
|
107969
108529
|
}));
|
|
107970
108530
|
let last = paragraphs.length - 1;
|
|
107971
108531
|
while (last >= 0 && paragraphs[last].text.length === 0) {
|
|
@@ -108080,11 +108640,11 @@ function withLevel(segments, level) {
|
|
|
108080
108640
|
return next;
|
|
108081
108641
|
});
|
|
108082
108642
|
}
|
|
108083
|
-
function rebuildParagraph(
|
|
108084
|
-
if (
|
|
108085
|
-
return [...
|
|
108643
|
+
function rebuildParagraph(group2, donor, text2, elementStyle) {
|
|
108644
|
+
if (group2 && paragraphGroupText(group2) === text2) {
|
|
108645
|
+
return [...group2.marker ? [group2.marker] : [], ...group2.content];
|
|
108086
108646
|
}
|
|
108087
|
-
const source =
|
|
108647
|
+
const source = group2 ?? donor;
|
|
108088
108648
|
const marker = source?.marker ? [source.marker] : [];
|
|
108089
108649
|
const content = remapTextToSegments(text2, source?.content, elementStyle);
|
|
108090
108650
|
return [...marker, ...content];
|
|
@@ -108867,7 +109427,7 @@ function replacePixels(data, fromColor, toColor, threshold, toTransparent) {
|
|
|
108867
109427
|
}
|
|
108868
109428
|
var DEFAULT_COLOR_CHANGE_TOLERANCE = 12;
|
|
108869
109429
|
function applyColorChange(imageDataUrl, fromHex, toHex22, tolerancePct = DEFAULT_COLOR_CHANGE_TOLERANCE, toTransparent = false) {
|
|
108870
|
-
return new Promise((
|
|
109430
|
+
return new Promise((resolve2, reject) => {
|
|
108871
109431
|
const fromColor = parseHexToRgb(fromHex);
|
|
108872
109432
|
const toColor = parseHexToRgb(toHex22);
|
|
108873
109433
|
if (!fromColor || !toColor) {
|
|
@@ -108895,7 +109455,7 @@ function applyColorChange(imageDataUrl, fromHex, toHex22, tolerancePct = DEFAULT
|
|
|
108895
109455
|
const threshold = toleranceToThreshold(tolerancePct);
|
|
108896
109456
|
replacePixels(imageData.data, fromColor, toColor, threshold, toTransparent);
|
|
108897
109457
|
ctx.putImageData(imageData, 0, 0);
|
|
108898
|
-
|
|
109458
|
+
resolve2({
|
|
108899
109459
|
dataUrl: canvas.toDataURL("image/png"),
|
|
108900
109460
|
width: w,
|
|
108901
109461
|
height: h
|
|
@@ -108946,7 +109506,7 @@ function mapDuotonePixels(data, shadow, highlight) {
|
|
|
108946
109506
|
}
|
|
108947
109507
|
}
|
|
108948
109508
|
function applyDuotone(imageDataUrl, shadowHex, highlightHex) {
|
|
108949
|
-
return new Promise((
|
|
109509
|
+
return new Promise((resolve2, reject) => {
|
|
108950
109510
|
const shadow = parseHexToRgb(shadowHex);
|
|
108951
109511
|
const highlight = parseHexToRgb(highlightHex);
|
|
108952
109512
|
if (!shadow || !highlight) {
|
|
@@ -108973,7 +109533,7 @@ function applyDuotone(imageDataUrl, shadowHex, highlightHex) {
|
|
|
108973
109533
|
const imageData = ctx.getImageData(0, 0, w, h);
|
|
108974
109534
|
mapDuotonePixels(imageData.data, shadow, highlight);
|
|
108975
109535
|
ctx.putImageData(imageData, 0, 0);
|
|
108976
|
-
|
|
109536
|
+
resolve2({
|
|
108977
109537
|
dataUrl: canvas.toDataURL("image/png"),
|
|
108978
109538
|
width: w,
|
|
108979
109539
|
height: h
|
|
@@ -109347,6 +109907,129 @@ function isElementActionable(element, options = {}) {
|
|
|
109347
109907
|
}
|
|
109348
109908
|
return element.type === "zoom" && hasZoomHandler;
|
|
109349
109909
|
}
|
|
109910
|
+
var LINK_TOOLTIP_HOST_CLASS = "pptx-link-host";
|
|
109911
|
+
var LINK_TOOLTIP_CLASS = "pptx-link-tooltip";
|
|
109912
|
+
var LINK_TOOLTIP_PANEL_CLASS = "pptx-link-tooltip-panel";
|
|
109913
|
+
var LINK_TOOLTIP_LABEL_CLASS = "pptx-link-tooltip-label";
|
|
109914
|
+
var LINK_TOOLTIP_HINT_CLASS = "pptx-link-tooltip-hint";
|
|
109915
|
+
var ACTION_INDICATOR_CLASS = "pptx-action-indicator";
|
|
109916
|
+
var ACTION_INDICATOR_ICON_PATH = "M13 2L3 14h9l-1 8 10-12h-9l1-8z";
|
|
109917
|
+
var ACTION_AFFORDANCE_CSS = `
|
|
109918
|
+
.${ACTION_INDICATOR_CLASS} {
|
|
109919
|
+
position: absolute;
|
|
109920
|
+
top: -4px;
|
|
109921
|
+
right: -4px;
|
|
109922
|
+
z-index: 20;
|
|
109923
|
+
display: flex;
|
|
109924
|
+
width: 16px;
|
|
109925
|
+
height: 16px;
|
|
109926
|
+
align-items: center;
|
|
109927
|
+
justify-content: center;
|
|
109928
|
+
border-radius: 9999px;
|
|
109929
|
+
background: #f59e0b;
|
|
109930
|
+
/* Left pointer-interactive on purpose: the badge's native title attribute is
|
|
109931
|
+
the only place the deck's screen tip is readable, and a title on a
|
|
109932
|
+
pointer-transparent node never fires. Clicks still reach the element
|
|
109933
|
+
underneath by bubbling, so nothing is swallowed. */
|
|
109934
|
+
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 10%), 0 1px 2px -1px rgb(0 0 0 / 10%);
|
|
109935
|
+
}
|
|
109936
|
+
.${ACTION_INDICATOR_CLASS} svg {
|
|
109937
|
+
width: 10px;
|
|
109938
|
+
height: 10px;
|
|
109939
|
+
color: #fff;
|
|
109940
|
+
}
|
|
109941
|
+
.${LINK_TOOLTIP_CLASS} {
|
|
109942
|
+
position: absolute;
|
|
109943
|
+
top: 100%;
|
|
109944
|
+
left: 4px;
|
|
109945
|
+
z-index: 9999;
|
|
109946
|
+
max-width: 16rem;
|
|
109947
|
+
margin-top: 4px;
|
|
109948
|
+
opacity: 0;
|
|
109949
|
+
transition: opacity 150ms;
|
|
109950
|
+
pointer-events: none;
|
|
109951
|
+
font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
109952
|
+
text-align: left;
|
|
109953
|
+
}
|
|
109954
|
+
.${LINK_TOOLTIP_HOST_CLASS}:hover > .${LINK_TOOLTIP_CLASS} {
|
|
109955
|
+
opacity: 1;
|
|
109956
|
+
}
|
|
109957
|
+
.${LINK_TOOLTIP_PANEL_CLASS} {
|
|
109958
|
+
border: 1px solid var(--pptx-border, #374151);
|
|
109959
|
+
border-radius: 0.25rem;
|
|
109960
|
+
background: var(--pptx-popover, #111827);
|
|
109961
|
+
padding: 6px 10px;
|
|
109962
|
+
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 10%), 0 4px 6px -4px rgb(0 0 0 / 10%);
|
|
109963
|
+
}
|
|
109964
|
+
.${LINK_TOOLTIP_LABEL_CLASS} {
|
|
109965
|
+
overflow: hidden;
|
|
109966
|
+
color: var(--pptx-foreground, #f3f4f6);
|
|
109967
|
+
font-size: 12px;
|
|
109968
|
+
font-weight: 400;
|
|
109969
|
+
font-style: normal;
|
|
109970
|
+
line-height: 16px;
|
|
109971
|
+
letter-spacing: normal;
|
|
109972
|
+
text-decoration: none;
|
|
109973
|
+
text-overflow: ellipsis;
|
|
109974
|
+
text-transform: none;
|
|
109975
|
+
white-space: nowrap;
|
|
109976
|
+
}
|
|
109977
|
+
.${LINK_TOOLTIP_HINT_CLASS} {
|
|
109978
|
+
margin-top: 2px;
|
|
109979
|
+
color: var(--pptx-muted-foreground, #9ca3af);
|
|
109980
|
+
font-size: 10px;
|
|
109981
|
+
font-weight: 400;
|
|
109982
|
+
font-style: normal;
|
|
109983
|
+
line-height: 12px;
|
|
109984
|
+
letter-spacing: normal;
|
|
109985
|
+
text-decoration: none;
|
|
109986
|
+
text-transform: none;
|
|
109987
|
+
}
|
|
109988
|
+
`;
|
|
109989
|
+
var AFFORDANCE_STYLE_ELEMENT_ID = "pptx-action-affordance-styles";
|
|
109990
|
+
function ensureActionAffordanceStyles(doc) {
|
|
109991
|
+
const target = doc ?? (typeof document === "undefined" ? void 0 : document);
|
|
109992
|
+
if (!target || target.getElementById(AFFORDANCE_STYLE_ELEMENT_ID)) {
|
|
109993
|
+
return;
|
|
109994
|
+
}
|
|
109995
|
+
const style = target.createElement("style");
|
|
109996
|
+
style.id = AFFORDANCE_STYLE_ELEMENT_ID;
|
|
109997
|
+
style.textContent = ACTION_AFFORDANCE_CSS;
|
|
109998
|
+
(target.head ?? target.documentElement).appendChild(style);
|
|
109999
|
+
}
|
|
110000
|
+
function actionAffordanceLabels(translate) {
|
|
110001
|
+
return {
|
|
110002
|
+
hasAction: translate("pptx.element.hasAction"),
|
|
110003
|
+
link: translate("pptx.element.linkFallback"),
|
|
110004
|
+
followLink: translate("pptx.linkTooltip.followLink"),
|
|
110005
|
+
presentationMode: translate("pptx.linkTooltip.presentationMode")
|
|
110006
|
+
};
|
|
110007
|
+
}
|
|
110008
|
+
var NO_AFFORDANCE = Object.freeze({
|
|
110009
|
+
showIndicator: false,
|
|
110010
|
+
indicatorTitle: "",
|
|
110011
|
+
showLinkTooltip: false,
|
|
110012
|
+
linkTooltipLabel: "",
|
|
110013
|
+
linkTooltipHint: ""
|
|
110014
|
+
});
|
|
110015
|
+
function resolveElementActionAffordance(element, context) {
|
|
110016
|
+
const { canInteract, presenting = false, labels } = context;
|
|
110017
|
+
const click = element.actionClick;
|
|
110018
|
+
const hover = element.actionHover;
|
|
110019
|
+
if (!canInteract || presenting || !click && !hover) {
|
|
110020
|
+
return NO_AFFORDANCE;
|
|
110021
|
+
}
|
|
110022
|
+
const hasUrl = Boolean(click?.url);
|
|
110023
|
+
return {
|
|
110024
|
+
showIndicator: true,
|
|
110025
|
+
indicatorTitle: click?.tooltip || hover?.tooltip || labels.hasAction,
|
|
110026
|
+
// The tooltip names a CLICK destination, so a hover-only action gets the
|
|
110027
|
+
// badge but no popover: there is nothing to follow and no key to press.
|
|
110028
|
+
showLinkTooltip: Boolean(click),
|
|
110029
|
+
linkTooltipLabel: click?.tooltip || click?.url || click?.action || labels.link,
|
|
110030
|
+
linkTooltipHint: hasUrl ? labels.followLink : labels.presentationMode
|
|
110031
|
+
};
|
|
110032
|
+
}
|
|
109350
110033
|
var ELEMENT_ACTION_TYPE_OPTIONS = [
|
|
109351
110034
|
{ value: "none", labelKey: "pptx.hyperlink.actionNone" },
|
|
109352
110035
|
{ value: "url", labelKey: "pptx.action.gotoUrl" },
|
|
@@ -109835,6 +110518,19 @@ function rebuildDrawingShapesIfCleared(smartArtData, layout, palette, style, ele
|
|
|
109835
110518
|
drawingShapes: reflowToDrawingShapes(layoutResult, smartArtData.nodes)
|
|
109836
110519
|
};
|
|
109837
110520
|
}
|
|
110521
|
+
function mediaPlaybackAttributes(source) {
|
|
110522
|
+
return {
|
|
110523
|
+
loop: source.loop === true,
|
|
110524
|
+
volume: Math.max(0, Math.min(1, source.volume ?? 1)),
|
|
110525
|
+
playbackRate: Math.max(0.25, Math.min(4, source.playbackSpeed ?? 1))
|
|
110526
|
+
};
|
|
110527
|
+
}
|
|
110528
|
+
function mediaTransportVisible(surface) {
|
|
110529
|
+
if (surface.presenting || surface.preview) {
|
|
110530
|
+
return false;
|
|
110531
|
+
}
|
|
110532
|
+
return surface.canvasTransport;
|
|
110533
|
+
}
|
|
109838
110534
|
function buildSummaryZoomView(element, lookup) {
|
|
109839
110535
|
if (element.zoomType !== "summary" || !element.summaryTargets?.length) {
|
|
109840
110536
|
return void 0;
|
|
@@ -110926,7 +111622,7 @@ var AUTOSAVE_DB_NAME = "pptx-viewer-autosave";
|
|
|
110926
111622
|
var AUTOSAVE_DB_VERSION = 1;
|
|
110927
111623
|
var AUTOSAVE_STORE_NAME = "recoveryVersions";
|
|
110928
111624
|
function openAutosaveDb() {
|
|
110929
|
-
return new Promise((
|
|
111625
|
+
return new Promise((resolve2, reject) => {
|
|
110930
111626
|
const req = indexedDB.open(AUTOSAVE_DB_NAME, AUTOSAVE_DB_VERSION);
|
|
110931
111627
|
req.onupgradeneeded = () => {
|
|
110932
111628
|
const db = req.result;
|
|
@@ -110934,13 +111630,13 @@ function openAutosaveDb() {
|
|
|
110934
111630
|
db.createObjectStore(AUTOSAVE_STORE_NAME, { keyPath: "key" });
|
|
110935
111631
|
}
|
|
110936
111632
|
};
|
|
110937
|
-
req.onsuccess = () =>
|
|
111633
|
+
req.onsuccess = () => resolve2(req.result);
|
|
110938
111634
|
req.onerror = () => reject(req.error);
|
|
110939
111635
|
});
|
|
110940
111636
|
}
|
|
110941
111637
|
async function deleteOldestAutosaveEntry() {
|
|
110942
111638
|
const db = await openAutosaveDb();
|
|
110943
|
-
return new Promise((
|
|
111639
|
+
return new Promise((resolve2) => {
|
|
110944
111640
|
try {
|
|
110945
111641
|
const tx = db.transaction(AUTOSAVE_STORE_NAME, "readwrite");
|
|
110946
111642
|
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
@@ -110962,24 +111658,24 @@ async function deleteOldestAutosaveEntry() {
|
|
|
110962
111658
|
};
|
|
110963
111659
|
tx.oncomplete = () => {
|
|
110964
111660
|
db.close();
|
|
110965
|
-
|
|
111661
|
+
resolve2(oldestKey !== null);
|
|
110966
111662
|
};
|
|
110967
111663
|
tx.onerror = () => {
|
|
110968
111664
|
db.close();
|
|
110969
|
-
|
|
111665
|
+
resolve2(false);
|
|
110970
111666
|
};
|
|
110971
111667
|
} catch {
|
|
110972
111668
|
try {
|
|
110973
111669
|
db.close();
|
|
110974
111670
|
} catch {
|
|
110975
111671
|
}
|
|
110976
|
-
|
|
111672
|
+
resolve2(false);
|
|
110977
111673
|
}
|
|
110978
111674
|
});
|
|
110979
111675
|
}
|
|
110980
111676
|
function putAutosaveRecord(filePath, data) {
|
|
110981
111677
|
return openAutosaveDb().then(
|
|
110982
|
-
(db) => new Promise((
|
|
111678
|
+
(db) => new Promise((resolve2, reject) => {
|
|
110983
111679
|
const tx = db.transaction(AUTOSAVE_STORE_NAME, "readwrite");
|
|
110984
111680
|
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
110985
111681
|
store.put({
|
|
@@ -110990,7 +111686,7 @@ function putAutosaveRecord(filePath, data) {
|
|
|
110990
111686
|
});
|
|
110991
111687
|
tx.oncomplete = () => {
|
|
110992
111688
|
db.close();
|
|
110993
|
-
|
|
111689
|
+
resolve2(true);
|
|
110994
111690
|
};
|
|
110995
111691
|
tx.onerror = () => {
|
|
110996
111692
|
db.close();
|
|
@@ -111001,23 +111697,23 @@ function putAutosaveRecord(filePath, data) {
|
|
|
111001
111697
|
}
|
|
111002
111698
|
async function getAutosaveSnapshot(filePath) {
|
|
111003
111699
|
const db = await openAutosaveDb();
|
|
111004
|
-
return new Promise((
|
|
111700
|
+
return new Promise((resolve2) => {
|
|
111005
111701
|
const tx = db.transaction(AUTOSAVE_STORE_NAME, "readonly");
|
|
111006
111702
|
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
111007
111703
|
const req = store.get(filePath);
|
|
111008
111704
|
req.onsuccess = () => {
|
|
111009
111705
|
db.close();
|
|
111010
|
-
|
|
111706
|
+
resolve2(req.result);
|
|
111011
111707
|
};
|
|
111012
111708
|
req.onerror = () => {
|
|
111013
111709
|
db.close();
|
|
111014
|
-
|
|
111710
|
+
resolve2(void 0);
|
|
111015
111711
|
};
|
|
111016
111712
|
});
|
|
111017
111713
|
}
|
|
111018
111714
|
async function listAutosaveSnapshots() {
|
|
111019
111715
|
const db = await openAutosaveDb();
|
|
111020
|
-
return new Promise((
|
|
111716
|
+
return new Promise((resolve2) => {
|
|
111021
111717
|
const results = [];
|
|
111022
111718
|
try {
|
|
111023
111719
|
const tx = db.transaction(AUTOSAVE_STORE_NAME, "readonly");
|
|
@@ -111033,42 +111729,42 @@ async function listAutosaveSnapshots() {
|
|
|
111033
111729
|
};
|
|
111034
111730
|
tx.oncomplete = () => {
|
|
111035
111731
|
db.close();
|
|
111036
|
-
|
|
111732
|
+
resolve2(results);
|
|
111037
111733
|
};
|
|
111038
111734
|
tx.onerror = () => {
|
|
111039
111735
|
db.close();
|
|
111040
|
-
|
|
111736
|
+
resolve2([]);
|
|
111041
111737
|
};
|
|
111042
111738
|
} catch {
|
|
111043
111739
|
try {
|
|
111044
111740
|
db.close();
|
|
111045
111741
|
} catch {
|
|
111046
111742
|
}
|
|
111047
|
-
|
|
111743
|
+
resolve2([]);
|
|
111048
111744
|
}
|
|
111049
111745
|
});
|
|
111050
111746
|
}
|
|
111051
111747
|
async function deleteAutosaveSnapshot(filePath) {
|
|
111052
111748
|
const db = await openAutosaveDb();
|
|
111053
|
-
return new Promise((
|
|
111749
|
+
return new Promise((resolve2) => {
|
|
111054
111750
|
try {
|
|
111055
111751
|
const tx = db.transaction(AUTOSAVE_STORE_NAME, "readwrite");
|
|
111056
111752
|
const store = tx.objectStore(AUTOSAVE_STORE_NAME);
|
|
111057
111753
|
store.delete(filePath);
|
|
111058
111754
|
tx.oncomplete = () => {
|
|
111059
111755
|
db.close();
|
|
111060
|
-
|
|
111756
|
+
resolve2(true);
|
|
111061
111757
|
};
|
|
111062
111758
|
tx.onerror = () => {
|
|
111063
111759
|
db.close();
|
|
111064
|
-
|
|
111760
|
+
resolve2(false);
|
|
111065
111761
|
};
|
|
111066
111762
|
} catch {
|
|
111067
111763
|
try {
|
|
111068
111764
|
db.close();
|
|
111069
111765
|
} catch {
|
|
111070
111766
|
}
|
|
111071
|
-
|
|
111767
|
+
resolve2(false);
|
|
111072
111768
|
}
|
|
111073
111769
|
});
|
|
111074
111770
|
}
|
|
@@ -111901,17 +112597,17 @@ function shouldConfirmExternalHyperlink(options, href) {
|
|
|
111901
112597
|
}
|
|
111902
112598
|
return /^https?:/i.test(href);
|
|
111903
112599
|
}
|
|
111904
|
-
function toggle(
|
|
111905
|
-
return { kind: "toggle", group, key, labelKey, ...extra };
|
|
112600
|
+
function toggle(group2, key, labelKey, extra) {
|
|
112601
|
+
return { kind: "toggle", group: group2, key, labelKey, ...extra };
|
|
111906
112602
|
}
|
|
111907
|
-
function select(
|
|
111908
|
-
return { kind: "select", group, key, labelKey, choices: choiceList };
|
|
112603
|
+
function select(group2, key, labelKey, choiceList) {
|
|
112604
|
+
return { kind: "select", group: group2, key, labelKey, choices: choiceList };
|
|
111909
112605
|
}
|
|
111910
|
-
function numberControl(
|
|
111911
|
-
return { kind: "number", group, key, labelKey, min, max, unitKey };
|
|
112606
|
+
function numberControl(group2, key, labelKey, min, max, unitKey) {
|
|
112607
|
+
return { kind: "number", group: group2, key, labelKey, min, max, unitKey };
|
|
111912
112608
|
}
|
|
111913
|
-
function textControl(
|
|
111914
|
-
return { kind: "text", group, key, labelKey, maxLength: 64 };
|
|
112609
|
+
function textControl(group2, key, labelKey) {
|
|
112610
|
+
return { kind: "text", group: group2, key, labelKey, maxLength: 64 };
|
|
111915
112611
|
}
|
|
111916
112612
|
function choices(prefix, values) {
|
|
111917
112613
|
return values.map((value) => ({ value, labelKey: `${prefix}.${value}` }));
|
|
@@ -112393,17 +113089,17 @@ function createViewerOptionsStore(init) {
|
|
|
112393
113089
|
return {
|
|
112394
113090
|
getOptions: () => options,
|
|
112395
113091
|
setOptions: (next) => commit(cloneOptions(next)),
|
|
112396
|
-
setValue: (
|
|
112397
|
-
const defaults = DEFAULT_VIEWER_OPTIONS[
|
|
113092
|
+
setValue: (group2, key, value) => {
|
|
113093
|
+
const defaults = DEFAULT_VIEWER_OPTIONS[group2];
|
|
112398
113094
|
if (!(key in defaults) || typeof defaults[key] !== typeof value) {
|
|
112399
113095
|
return;
|
|
112400
113096
|
}
|
|
112401
113097
|
const next = cloneOptions(options);
|
|
112402
|
-
next[
|
|
113098
|
+
next[group2][key] = value;
|
|
112403
113099
|
commit(next);
|
|
112404
113100
|
},
|
|
112405
|
-
getValue: (
|
|
112406
|
-
const record = options[
|
|
113101
|
+
getValue: (group2, key) => {
|
|
113102
|
+
const record = options[group2];
|
|
112407
113103
|
const value = record[key];
|
|
112408
113104
|
return typeof value === "boolean" || typeof value === "number" || typeof value === "string" ? value : void 0;
|
|
112409
113105
|
},
|
|
@@ -112425,14 +113121,14 @@ function createViewerOptionsStore(init) {
|
|
|
112425
113121
|
next.quickAccess.commandIds = [...commandIds];
|
|
112426
113122
|
commit(next);
|
|
112427
113123
|
},
|
|
112428
|
-
reset: (
|
|
112429
|
-
if (!
|
|
113124
|
+
reset: (group2) => {
|
|
113125
|
+
if (!group2) {
|
|
112430
113126
|
commit(cloneOptions(DEFAULT_VIEWER_OPTIONS));
|
|
112431
113127
|
return;
|
|
112432
113128
|
}
|
|
112433
113129
|
const next = cloneOptions(options);
|
|
112434
113130
|
const defaults = cloneOptions(DEFAULT_VIEWER_OPTIONS);
|
|
112435
|
-
next[
|
|
113131
|
+
next[group2] = defaults[group2];
|
|
112436
113132
|
commit(next);
|
|
112437
113133
|
},
|
|
112438
113134
|
subscribe: (listener) => {
|
|
@@ -113382,7 +114078,7 @@ var VAR_DEPENDENT_PROPERTIES = [
|
|
|
113382
114078
|
function resolveCustomProperties(root) {
|
|
113383
114079
|
const elements = root.querySelectorAll("*");
|
|
113384
114080
|
const view = root.ownerDocument?.defaultView ?? window;
|
|
113385
|
-
const
|
|
114081
|
+
const resolve2 = (el) => {
|
|
113386
114082
|
const htmlEl = el;
|
|
113387
114083
|
if (!htmlEl.style) {
|
|
113388
114084
|
return;
|
|
@@ -113398,8 +114094,8 @@ function resolveCustomProperties(root) {
|
|
|
113398
114094
|
}
|
|
113399
114095
|
}
|
|
113400
114096
|
};
|
|
113401
|
-
|
|
113402
|
-
elements.forEach(
|
|
114097
|
+
resolve2(root);
|
|
114098
|
+
elements.forEach(resolve2);
|
|
113403
114099
|
}
|
|
113404
114100
|
function preprocessCssForCapture(root, options = {}) {
|
|
113405
114101
|
const {
|
|
@@ -113437,9 +114133,9 @@ async function blobUrlToDataUrl(blobUrl) {
|
|
|
113437
114133
|
try {
|
|
113438
114134
|
const response = await fetch(blobUrl);
|
|
113439
114135
|
const blob = await response.blob();
|
|
113440
|
-
return await new Promise((
|
|
114136
|
+
return await new Promise((resolve2, reject) => {
|
|
113441
114137
|
const reader = new FileReader();
|
|
113442
|
-
reader.onloadend = () =>
|
|
114138
|
+
reader.onloadend = () => resolve2(reader.result);
|
|
113443
114139
|
reader.onerror = reject;
|
|
113444
114140
|
reader.readAsDataURL(blob);
|
|
113445
114141
|
});
|
|
@@ -113558,7 +114254,7 @@ var COMPLEX_COLOR_PROPERTIES = [
|
|
|
113558
114254
|
];
|
|
113559
114255
|
function resolveUnsupportedColours(root) {
|
|
113560
114256
|
const elements = root.querySelectorAll("*");
|
|
113561
|
-
const
|
|
114257
|
+
const resolve2 = (el) => {
|
|
113562
114258
|
const htmlEl = el;
|
|
113563
114259
|
if (!htmlEl.style) {
|
|
113564
114260
|
return;
|
|
@@ -113588,8 +114284,8 @@ function resolveUnsupportedColours(root) {
|
|
|
113588
114284
|
}
|
|
113589
114285
|
}
|
|
113590
114286
|
};
|
|
113591
|
-
|
|
113592
|
-
elements.forEach(
|
|
114287
|
+
resolve2(root);
|
|
114288
|
+
elements.forEach(resolve2);
|
|
113593
114289
|
}
|
|
113594
114290
|
function resolveRootCustomProperties(doc) {
|
|
113595
114291
|
const targets = [doc.documentElement, doc.body];
|
|
@@ -114106,6 +114802,8 @@ function segmentFrameCount(durationMs, fps) {
|
|
|
114106
114802
|
*/
|
|
114107
114803
|
|
|
114108
114804
|
exports.ACTION_BUTTON_PRESETS = ACTION_BUTTON_PRESETS;
|
|
114805
|
+
exports.ACTION_INDICATOR_CLASS = ACTION_INDICATOR_CLASS;
|
|
114806
|
+
exports.ACTION_INDICATOR_ICON_PATH = ACTION_INDICATOR_ICON_PATH;
|
|
114109
114807
|
exports.ARTISTIC_EFFECTS = ARTISTIC_EFFECTS;
|
|
114110
114808
|
exports.AVATAR_COLOR_SWATCHES = AVATAR_COLOR_SWATCHES;
|
|
114111
114809
|
exports.BACKSTAGE_NAV = BACKSTAGE_NAV;
|
|
@@ -114146,6 +114844,11 @@ exports.HIGHLIGHTER_COLORS = HIGHLIGHTER_COLORS;
|
|
|
114146
114844
|
exports.INK_REPLAY_KEYFRAMES = INK_REPLAY_KEYFRAMES;
|
|
114147
114845
|
exports.INSERT_CHART_TYPES = INSERT_CHART_TYPES;
|
|
114148
114846
|
exports.LBL = LBL;
|
|
114847
|
+
exports.LINK_TOOLTIP_CLASS = LINK_TOOLTIP_CLASS;
|
|
114848
|
+
exports.LINK_TOOLTIP_HINT_CLASS = LINK_TOOLTIP_HINT_CLASS;
|
|
114849
|
+
exports.LINK_TOOLTIP_HOST_CLASS = LINK_TOOLTIP_HOST_CLASS;
|
|
114850
|
+
exports.LINK_TOOLTIP_LABEL_CLASS = LINK_TOOLTIP_LABEL_CLASS;
|
|
114851
|
+
exports.LINK_TOOLTIP_PANEL_CLASS = LINK_TOOLTIP_PANEL_CLASS;
|
|
114149
114852
|
exports.LOCAL_SYNC_ORIGIN = LOCAL_SYNC_ORIGIN;
|
|
114150
114853
|
exports.MATERIAL_PRESETS = MATERIAL_PRESETS;
|
|
114151
114854
|
exports.MAX_ZOOM_SCALE = MAX_ZOOM_SCALE;
|
|
@@ -114167,6 +114870,9 @@ exports.PRESENTATION_CHANNEL_NAME = PRESENTATION_CHANNEL_NAME;
|
|
|
114167
114870
|
exports.PRESENTATION_HASH = PRESENTATION_HASH;
|
|
114168
114871
|
exports.PRESENTATION_MESSAGE_ORIGIN = PRESENTATION_MESSAGE_ORIGIN;
|
|
114169
114872
|
exports.PRESENTATION_NONCE_KEY = PRESENTATION_NONCE_KEY;
|
|
114873
|
+
exports.PRESENTER_CONSOLE_CLASSES = PRESENTER_CONSOLE_CLASSES;
|
|
114874
|
+
exports.PRESENTER_CONSOLE_CONTROLS = PRESENTER_CONSOLE_CONTROLS;
|
|
114875
|
+
exports.PRESENTER_NAVIGATOR_LABEL_KEYS = PRESENTER_NAVIGATOR_LABEL_KEYS;
|
|
114170
114876
|
exports.PRESENT_TOOLBAR_CLASSES = PRESENT_TOOLBAR_CLASSES;
|
|
114171
114877
|
exports.PRESETS = PRESETS;
|
|
114172
114878
|
exports.PRESET_THEMES = PRESET_THEMES;
|
|
@@ -114214,6 +114920,7 @@ exports.VIEWER_PREFS_STORAGE_KEY = VIEWER_PREFS_STORAGE_KEY;
|
|
|
114214
114920
|
exports.VIEWER_SHORTCUT_REFERENCE = VIEWER_SHORTCUT_REFERENCE;
|
|
114215
114921
|
exports.WEBM_MIME_CANDIDATES = WEBM_MIME_CANDIDATES;
|
|
114216
114922
|
exports.acceptsPresentationInput = acceptsPresentationInput;
|
|
114923
|
+
exports.actionAffordanceLabels = actionAffordanceLabels;
|
|
114217
114924
|
exports.activateModalFocus = activateModalFocus;
|
|
114218
114925
|
exports.addChartCategory = addChartCategory;
|
|
114219
114926
|
exports.addChartSeries = addChartSeries;
|
|
@@ -114306,6 +115013,7 @@ exports.canGoNext = canGoNext;
|
|
|
114306
115013
|
exports.canGoPrevious = canGoPrevious;
|
|
114307
115014
|
exports.canvasToJpegData = canvasToJpegData;
|
|
114308
115015
|
exports.cell3DBevelCss = cell3DBevelCss;
|
|
115016
|
+
exports.chartAreaFill = chartAreaFill;
|
|
114309
115017
|
exports.chartDataChangeType = chartDataChangeType;
|
|
114310
115018
|
exports.chartPartToAttrs = chartPartToAttrs;
|
|
114311
115019
|
exports.clampCropValue = clampCropValue;
|
|
@@ -114363,6 +115071,7 @@ exports.createDepartureChannel = createDepartureChannel;
|
|
|
114363
115071
|
exports.createInitialPresentationSnapshot = createInitialPresentationSnapshot;
|
|
114364
115072
|
exports.createPresentationKeyBuffer = createPresentationKeyBuffer;
|
|
114365
115073
|
exports.createPresentationSessionId = createPresentationSessionId;
|
|
115074
|
+
exports.createPresenterShowGuard = createPresenterShowGuard;
|
|
114366
115075
|
exports.createPresenterTimer = createPresenterTimer;
|
|
114367
115076
|
exports.createSyncGate = createSyncGate;
|
|
114368
115077
|
exports.createTouchGestureRecognizer = createTouchGestureRecognizer;
|
|
@@ -114389,6 +115098,7 @@ exports.dragValueForPart = dragValueForPart;
|
|
|
114389
115098
|
exports.elementActionToPptxAction = elementActionToPptxAction;
|
|
114390
115099
|
exports.encodeGif = encodeGif;
|
|
114391
115100
|
exports.endAudienceDisplay = endAudienceDisplay;
|
|
115101
|
+
exports.ensureActionAffordanceStyles = ensureActionAffordanceStyles;
|
|
114392
115102
|
exports.erasePresentationInkAt = erasePresentationInkAt;
|
|
114393
115103
|
exports.evaluatePresetShape = evaluatePresetShape;
|
|
114394
115104
|
exports.extraQuickAccessCommands = extraQuickAccessCommands;
|
|
@@ -114504,11 +115214,9 @@ exports.isEditorTextInputTarget = isEditorTextInputTarget;
|
|
|
114504
115214
|
exports.isElementActionable = isElementActionable;
|
|
114505
115215
|
exports.isElementRendered = isElementRendered;
|
|
114506
115216
|
exports.isExportAbortError = isExportAbortError;
|
|
114507
|
-
exports.isFirstSlide = isFirstSlide;
|
|
114508
115217
|
exports.isImageLikeElement = isImageLikeElement;
|
|
114509
115218
|
exports.isInkElement = isInkElement;
|
|
114510
115219
|
exports.isKeyboardOpen = isKeyboardOpen;
|
|
114511
|
-
exports.isLastSlide = isLastSlide;
|
|
114512
115220
|
exports.isLinkedTextBox = isLinkedTextBox;
|
|
114513
115221
|
exports.isMixedContentBlocked = isMixedContentBlocked;
|
|
114514
115222
|
exports.isMobileViewport = isMobileViewport;
|
|
@@ -114528,6 +115236,8 @@ exports.mapEditorKey = mapEditorKey;
|
|
|
114528
115236
|
exports.mapOutlineKey = mapOutlineKey;
|
|
114529
115237
|
exports.mapPresentationKey = mapPresentationKey;
|
|
114530
115238
|
exports.mayLeaveSlideShow = mayLeaveSlideShow;
|
|
115239
|
+
exports.mediaPlaybackAttributes = mediaPlaybackAttributes;
|
|
115240
|
+
exports.mediaTransportVisible = mediaTransportVisible;
|
|
114531
115241
|
exports.mergeAdditiveSelection = mergeAdditiveSelection;
|
|
114532
115242
|
exports.mergeCells = mergeCells;
|
|
114533
115243
|
exports.mergePresentationSnapshot = mergePresentationSnapshot;
|
|
@@ -114568,6 +115278,7 @@ exports.openUrlInNewTab = openUrlInNewTab;
|
|
|
114568
115278
|
exports.paletteColor = paletteColor;
|
|
114569
115279
|
exports.parseDrawingColor = parseDrawingColor;
|
|
114570
115280
|
exports.parseDrawingColorOpacity = parseDrawingColorOpacity;
|
|
115281
|
+
exports.parsePanoseString = parsePanoseString;
|
|
114571
115282
|
exports.parsePpactionUrl = parsePpactionUrl;
|
|
114572
115283
|
exports.pickSupportedMimeType = pickSupportedMimeType;
|
|
114573
115284
|
exports.placeAudienceWindow = placeAudienceWindow;
|
|
@@ -114576,7 +115287,10 @@ exports.pptxActionToElementAction = pptxActionToElementAction;
|
|
|
114576
115287
|
exports.preprocessCssForCapture = preprocessCssForCapture;
|
|
114577
115288
|
exports.presentationInkPath = presentationInkPath;
|
|
114578
115289
|
exports.presenterElapsed = presenterElapsed;
|
|
115290
|
+
exports.presenterNextDisabled = presenterNextDisabled;
|
|
114579
115291
|
exports.presenterPaneAdvancesOnClick = presenterPaneAdvancesOnClick;
|
|
115292
|
+
exports.presenterPrevDisabled = presenterPrevDisabled;
|
|
115293
|
+
exports.presenterTimerProgress = presenterTimerProgress;
|
|
114580
115294
|
exports.pressuresToWidths = pressuresToWidths;
|
|
114581
115295
|
exports.previousShowSlideIndex = previousShowSlideIndex;
|
|
114582
115296
|
exports.printPropertiesFrameSlides = printPropertiesFrameSlides;
|
|
@@ -114616,6 +115330,7 @@ exports.resolveAutoAdvanceDelayMs = resolveAutoAdvanceDelayMs;
|
|
|
114616
115330
|
exports.resolveAutoFitFontScale = resolveAutoFitFontScale;
|
|
114617
115331
|
exports.resolveCssTextAlign = resolveCssTextAlign;
|
|
114618
115332
|
exports.resolveDrawingShapeNodeId = resolveDrawingShapeNodeId;
|
|
115333
|
+
exports.resolveElementActionAffordance = resolveElementActionAffordance;
|
|
114619
115334
|
exports.resolveFontForScript = resolveFontForScript;
|
|
114620
115335
|
exports.resolveFontRefIdx = resolveFontRefIdx;
|
|
114621
115336
|
exports.resolveGroupChildFill = resolveGroupChildFill;
|