pptx-react-viewer 3.1.3 → 3.1.5
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 +17 -0
- package/dist/{AiChatPanel-5JAQBLTU.mjs → AiChatPanel-ITCVRVKP.mjs} +3 -3
- package/dist/AiChatPanel-ITCVRVKP.mjs.br +0 -0
- package/dist/AiChatPanel-ITCVRVKP.mjs.gz +0 -0
- package/dist/{AiChatPanel-C3E7UV7T.js → AiChatPanel-TO5PHBGW.js} +23 -23
- package/dist/AiChatPanel-TO5PHBGW.js.br +0 -0
- package/dist/AiChatPanel-TO5PHBGW.js.gz +0 -0
- package/dist/{Area3DChartScene-XY2PKRMA.js → Area3DChartScene-2UNQ3J3V.js} +2 -2
- package/dist/Area3DChartScene-2UNQ3J3V.js.br +0 -0
- package/dist/Area3DChartScene-2UNQ3J3V.js.gz +0 -0
- package/dist/{Area3DChartScene-KE434ERF.mjs → Area3DChartScene-7PHPDOTG.mjs} +1 -1
- package/dist/Area3DChartScene-7PHPDOTG.mjs.br +0 -0
- package/dist/Area3DChartScene-7PHPDOTG.mjs.gz +0 -0
- package/dist/{Bar3DChartScene-2KQABQZM.mjs → Bar3DChartScene-BLPUHYRZ.mjs} +1 -1
- package/dist/Bar3DChartScene-BLPUHYRZ.mjs.br +0 -0
- package/dist/Bar3DChartScene-BLPUHYRZ.mjs.gz +0 -0
- package/dist/{Bar3DChartScene-YMADUUZN.js → Bar3DChartScene-MC5S3AGT.js} +2 -2
- package/dist/Bar3DChartScene-MC5S3AGT.js.br +0 -0
- package/dist/Bar3DChartScene-MC5S3AGT.js.gz +0 -0
- package/dist/{Line3DChartScene-AB7N6ORX.js → Line3DChartScene-JVVZRIDD.js} +2 -2
- package/dist/Line3DChartScene-JVVZRIDD.js.br +0 -0
- package/dist/Line3DChartScene-JVVZRIDD.js.gz +0 -0
- package/dist/{Line3DChartScene-K3BSK6BB.mjs → Line3DChartScene-L5B4YFG3.mjs} +1 -1
- package/dist/Line3DChartScene-L5B4YFG3.mjs.br +0 -0
- package/dist/Line3DChartScene-L5B4YFG3.mjs.gz +0 -0
- package/dist/{Model3DScene-NT5RRIB5.mjs → Model3DScene-6TNWS5LV.mjs} +1 -1
- package/dist/Model3DScene-6TNWS5LV.mjs.br +0 -0
- package/dist/Model3DScene-6TNWS5LV.mjs.gz +0 -0
- package/dist/{Model3DScene-VSLGUWC7.js → Model3DScene-LRDNQNKJ.js} +2 -2
- package/dist/Model3DScene-LRDNQNKJ.js.br +0 -0
- package/dist/Model3DScene-LRDNQNKJ.js.gz +0 -0
- package/dist/{PieChart3DScene-6MUFRFYJ.js → PieChart3DScene-PZWZCXHX.js} +2 -2
- package/dist/PieChart3DScene-PZWZCXHX.js.br +0 -0
- package/dist/PieChart3DScene-PZWZCXHX.js.gz +0 -0
- package/dist/{PieChart3DScene-NFRBKII7.mjs → PieChart3DScene-XXAIVP4I.mjs} +1 -1
- package/dist/PieChart3DScene-XXAIVP4I.mjs.br +0 -0
- package/dist/PieChart3DScene-XXAIVP4I.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-UKIOTKJC.mjs → SurfaceChart3DScene-CRUGJSCY.mjs} +1 -1
- package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.br +1 -0
- package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-2UQOKVFB.js → SurfaceChart3DScene-UBQV3ZN2.js} +2 -2
- package/dist/SurfaceChart3DScene-UBQV3ZN2.js.br +0 -0
- package/dist/SurfaceChart3DScene-UBQV3ZN2.js.gz +0 -0
- package/dist/UTIF-LAD5QYGQ.mjs +6400 -0
- package/dist/UTIF-LAD5QYGQ.mjs.br +0 -0
- package/dist/UTIF-LAD5QYGQ.mjs.gz +0 -0
- package/dist/UTIF-POYWAAGO.js +6402 -0
- package/dist/UTIF-POYWAAGO.js.br +0 -0
- package/dist/UTIF-POYWAAGO.js.gz +0 -0
- package/dist/{chunk-BZ6OM3H5.mjs → chunk-A2UAUSJM.mjs} +113 -6
- package/dist/chunk-A2UAUSJM.mjs.br +0 -0
- package/dist/chunk-A2UAUSJM.mjs.gz +0 -0
- package/dist/{chunk-ACVLIDUS.mjs → chunk-BPWSJLLG.mjs} +158 -29
- package/dist/chunk-BPWSJLLG.mjs.br +0 -0
- package/dist/chunk-BPWSJLLG.mjs.gz +0 -0
- package/dist/{chunk-K4DUVYZ7.js → chunk-LGVNUG3G.js} +3 -3
- package/dist/chunk-LGVNUG3G.js.br +0 -0
- package/dist/chunk-LGVNUG3G.js.gz +0 -0
- package/dist/{chunk-XBR7W47W.js → chunk-LXYDXLKZ.js} +510 -403
- package/dist/chunk-LXYDXLKZ.js.br +0 -0
- package/dist/chunk-LXYDXLKZ.js.gz +0 -0
- package/dist/{chunk-5WH6UVWC.mjs → chunk-P3VXXUZM.mjs} +253 -77
- package/dist/chunk-P3VXXUZM.mjs.br +0 -0
- package/dist/chunk-P3VXXUZM.mjs.gz +0 -0
- package/dist/{chunk-Z3DEULRJ.mjs → chunk-QOLYY7E3.mjs} +1 -1
- package/dist/chunk-QOLYY7E3.mjs.br +0 -0
- package/dist/chunk-QOLYY7E3.mjs.gz +0 -0
- package/dist/{chunk-OABOL32L.js → chunk-T2QG2HD5.js} +302 -171
- package/dist/chunk-T2QG2HD5.js.br +0 -0
- package/dist/chunk-T2QG2HD5.js.gz +0 -0
- package/dist/{chunk-SRAXNEJX.mjs → chunk-XIHK52SB.mjs} +1525 -341
- package/dist/chunk-XIHK52SB.mjs.br +0 -0
- package/dist/chunk-XIHK52SB.mjs.gz +0 -0
- package/dist/{chunk-HMZA25W2.js → chunk-YDEEINER.js} +1528 -343
- package/dist/chunk-YDEEINER.js.br +0 -0
- package/dist/chunk-YDEEINER.js.gz +0 -0
- package/dist/{chunk-GCOGKBK3.js → chunk-ZPF4L6SD.js} +1342 -1166
- package/dist/chunk-ZPF4L6SD.js.br +0 -0
- package/dist/chunk-ZPF4L6SD.js.gz +0 -0
- package/dist/index.d.ts +139 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -49
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +139 -3
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +78 -78
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +3 -3
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/viewer/index.d.ts +139 -3
- package/dist/viewer/index.js +26 -26
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +5 -5
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +2 -2
- package/dist/AiChatPanel-5JAQBLTU.mjs.br +0 -0
- package/dist/AiChatPanel-5JAQBLTU.mjs.gz +0 -0
- package/dist/AiChatPanel-C3E7UV7T.js.br +0 -0
- package/dist/AiChatPanel-C3E7UV7T.js.gz +0 -0
- package/dist/Area3DChartScene-KE434ERF.mjs.br +0 -0
- package/dist/Area3DChartScene-KE434ERF.mjs.gz +0 -0
- package/dist/Area3DChartScene-XY2PKRMA.js.br +0 -0
- package/dist/Area3DChartScene-XY2PKRMA.js.gz +0 -0
- package/dist/Bar3DChartScene-2KQABQZM.mjs.br +0 -0
- package/dist/Bar3DChartScene-2KQABQZM.mjs.gz +0 -0
- package/dist/Bar3DChartScene-YMADUUZN.js.br +0 -0
- package/dist/Bar3DChartScene-YMADUUZN.js.gz +0 -0
- package/dist/Line3DChartScene-AB7N6ORX.js.br +0 -0
- package/dist/Line3DChartScene-AB7N6ORX.js.gz +0 -0
- package/dist/Line3DChartScene-K3BSK6BB.mjs.br +0 -0
- package/dist/Line3DChartScene-K3BSK6BB.mjs.gz +0 -0
- package/dist/Model3DScene-NT5RRIB5.mjs.br +0 -0
- package/dist/Model3DScene-NT5RRIB5.mjs.gz +0 -0
- package/dist/Model3DScene-VSLGUWC7.js.br +0 -0
- package/dist/Model3DScene-VSLGUWC7.js.gz +0 -0
- package/dist/PieChart3DScene-6MUFRFYJ.js.br +0 -0
- package/dist/PieChart3DScene-6MUFRFYJ.js.gz +0 -0
- package/dist/PieChart3DScene-NFRBKII7.mjs.br +0 -0
- package/dist/PieChart3DScene-NFRBKII7.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-2UQOKVFB.js.br +0 -0
- package/dist/SurfaceChart3DScene-2UQOKVFB.js.gz +0 -0
- package/dist/SurfaceChart3DScene-UKIOTKJC.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-UKIOTKJC.mjs.gz +0 -0
- package/dist/chunk-5WH6UVWC.mjs.br +0 -0
- package/dist/chunk-5WH6UVWC.mjs.gz +0 -0
- package/dist/chunk-ACVLIDUS.mjs.br +0 -0
- package/dist/chunk-ACVLIDUS.mjs.gz +0 -0
- package/dist/chunk-BZ6OM3H5.mjs.br +0 -0
- package/dist/chunk-BZ6OM3H5.mjs.gz +0 -0
- package/dist/chunk-GCOGKBK3.js.br +0 -0
- package/dist/chunk-GCOGKBK3.js.gz +0 -0
- package/dist/chunk-HMZA25W2.js.br +0 -0
- package/dist/chunk-HMZA25W2.js.gz +0 -0
- package/dist/chunk-K4DUVYZ7.js.br +0 -0
- package/dist/chunk-K4DUVYZ7.js.gz +0 -0
- package/dist/chunk-OABOL32L.js.br +0 -0
- package/dist/chunk-OABOL32L.js.gz +0 -0
- package/dist/chunk-SRAXNEJX.mjs.br +0 -0
- package/dist/chunk-SRAXNEJX.mjs.gz +0 -0
- package/dist/chunk-XBR7W47W.js.br +0 -0
- package/dist/chunk-XBR7W47W.js.gz +0 -0
- package/dist/chunk-Z3DEULRJ.mjs.br +0 -0
- package/dist/chunk-Z3DEULRJ.mjs.gz +0 -0
|
@@ -7021,6 +7021,7 @@ var SLIDE_FIELD_KIND = {
|
|
|
7021
7021
|
elements: "nested",
|
|
7022
7022
|
backgroundColor: "scalar",
|
|
7023
7023
|
backgroundImage: "scalar",
|
|
7024
|
+
backgroundImageProperties: "complex",
|
|
7024
7025
|
backgroundGradient: "scalar",
|
|
7025
7026
|
backgroundPattern: "complex",
|
|
7026
7027
|
backgroundShadeToTitle: "scalar",
|
|
@@ -17829,6 +17830,31 @@ function parseDrawingHueDegrees(value) {
|
|
|
17829
17830
|
}
|
|
17830
17831
|
return parsed / 6e4;
|
|
17831
17832
|
}
|
|
17833
|
+
var TEXT_ORIENTATION_IDENTITY = [1, 0, 0, 1];
|
|
17834
|
+
function isTextOrientationMatrix(value) {
|
|
17835
|
+
return Array.isArray(value) && value.length === 4 && value.every((entry2) => typeof entry2 === "number" && Number.isFinite(entry2));
|
|
17836
|
+
}
|
|
17837
|
+
function multiplyTextOrientationMatrices(left, right) {
|
|
17838
|
+
return [
|
|
17839
|
+
left[0] * right[0] + left[2] * right[1],
|
|
17840
|
+
left[1] * right[0] + left[3] * right[1],
|
|
17841
|
+
left[0] * right[2] + left[2] * right[3],
|
|
17842
|
+
left[1] * right[2] + left[3] * right[3]
|
|
17843
|
+
];
|
|
17844
|
+
}
|
|
17845
|
+
function getElementOrientationMatrix(element) {
|
|
17846
|
+
const radians = (Number(element.rotation) || 0) * Math.PI / 180;
|
|
17847
|
+
const cosine = Math.cos(radians);
|
|
17848
|
+
const sine = Math.sin(radians);
|
|
17849
|
+
const rotation = [cosine, sine, -sine, cosine];
|
|
17850
|
+
const flip = [
|
|
17851
|
+
element.flipHorizontal ? -1 : 1,
|
|
17852
|
+
0,
|
|
17853
|
+
0,
|
|
17854
|
+
element.flipVertical ? -1 : 1
|
|
17855
|
+
];
|
|
17856
|
+
return multiplyTextOrientationMatrices(rotation, flip);
|
|
17857
|
+
}
|
|
17832
17858
|
function parseBoolean(value) {
|
|
17833
17859
|
if (value === true || value === "1" || value === "true") {
|
|
17834
17860
|
return true;
|
|
@@ -19660,6 +19686,21 @@ function serializePlaceholderLevelStyle(style, existing) {
|
|
|
19660
19686
|
if (style.indent !== void 0) {
|
|
19661
19687
|
attrEdits.indent = String(Math.round(style.indent * EMU_PER_PX));
|
|
19662
19688
|
}
|
|
19689
|
+
if (style.defaultTabSize !== void 0) {
|
|
19690
|
+
attrEdits.defTabSz = String(Math.round(style.defaultTabSize * EMU_PER_PX));
|
|
19691
|
+
}
|
|
19692
|
+
if (style.eaLineBreak !== void 0) {
|
|
19693
|
+
attrEdits.eaLnBrk = style.eaLineBreak ? "1" : "0";
|
|
19694
|
+
}
|
|
19695
|
+
if (style.latinLineBreak !== void 0) {
|
|
19696
|
+
attrEdits.latinLnBrk = style.latinLineBreak ? "1" : "0";
|
|
19697
|
+
}
|
|
19698
|
+
if (style.fontAlignment !== void 0) {
|
|
19699
|
+
attrEdits.fontAlgn = style.fontAlignment;
|
|
19700
|
+
}
|
|
19701
|
+
if (style.hangingPunctuation !== void 0) {
|
|
19702
|
+
attrEdits.hangingPunct = style.hangingPunctuation ? "1" : "0";
|
|
19703
|
+
}
|
|
19663
19704
|
const childEdits = /* @__PURE__ */ new Map();
|
|
19664
19705
|
if (style.lineSpacing !== void 0) {
|
|
19665
19706
|
childEdits.set("a:lnSpc", {
|
|
@@ -26996,7 +27037,7 @@ function parseRunFontElements(rPr) {
|
|
|
26996
27037
|
const latin = rPr["a:latin"];
|
|
26997
27038
|
const eastAsian = rPr["a:ea"];
|
|
26998
27039
|
const complexScript = rPr["a:cs"];
|
|
26999
|
-
const chosenTypeface = latin?.["@_typeface"]
|
|
27040
|
+
const chosenTypeface = latin?.["@_typeface"];
|
|
27000
27041
|
if (typeof chosenTypeface === "string" && chosenTypeface.trim().length > 0) {
|
|
27001
27042
|
result.fontFamily = chosenTypeface.trim();
|
|
27002
27043
|
}
|
|
@@ -35374,6 +35415,13 @@ var FONT_SUBSTITUTION_MAP = {
|
|
|
35374
35415
|
NSimSun: ["Noto Serif CJK SC", "STSong", "serif"],
|
|
35375
35416
|
FangSong: ["Noto Serif CJK SC", "STFangsong", "serif"],
|
|
35376
35417
|
KaiTi: ["Noto Serif CJK SC", "STKaiti", "serif"],
|
|
35418
|
+
DengXian: ["Microsoft YaHei", "PingFang SC", "Noto Sans CJK SC", "sans-serif"],
|
|
35419
|
+
\u7B49\u7EBF: ["DengXian", "Microsoft YaHei", "PingFang SC", "Noto Sans CJK SC", "sans-serif"],
|
|
35420
|
+
\u5B8B\u4F53: ["SimSun", "Songti SC", "STSong", "Noto Serif CJK SC", "serif"],
|
|
35421
|
+
\u65B0\u5B8B\u4F53: ["NSimSun", "Songti SC", "STSong", "Noto Serif CJK SC", "serif"],
|
|
35422
|
+
\u9ED1\u4F53: ["SimHei", "Heiti SC", "STHeiti", "PingFang SC", "Noto Sans CJK SC", "sans-serif"],
|
|
35423
|
+
\u4EFF\u5B8B: ["FangSong", "STFangsong", "Songti SC", "Noto Serif CJK SC", "serif"],
|
|
35424
|
+
\u6977\u4F53: ["KaiTi", "Kaiti SC", "STKaiti", "Noto Serif CJK SC", "serif"],
|
|
35377
35425
|
Batang: ["Noto Serif CJK KR", "AppleMyungjo", "serif"],
|
|
35378
35426
|
Dotum: ["Noto Sans CJK KR", "AppleGothic", "sans-serif"],
|
|
35379
35427
|
Gulim: ["Noto Sans CJK KR", "AppleGothic", "sans-serif"],
|
|
@@ -43095,7 +43143,12 @@ function parseTimeTargetElement(tgtEl) {
|
|
|
43095
43143
|
const rawXml = tgtEl;
|
|
43096
43144
|
const shape = tgtEl["p:spTgt"];
|
|
43097
43145
|
if (shape?.["@_spid"] !== void 0) {
|
|
43098
|
-
return {
|
|
43146
|
+
return {
|
|
43147
|
+
type: "shape",
|
|
43148
|
+
shapeId: String(shape["@_spid"]),
|
|
43149
|
+
...shape["p:bg"] !== void 0 ? { backgroundOnly: true } : {},
|
|
43150
|
+
rawXml
|
|
43151
|
+
};
|
|
43099
43152
|
}
|
|
43100
43153
|
if (tgtEl["p:sldTgt"] !== void 0) {
|
|
43101
43154
|
return { type: "slide", rawXml };
|
|
@@ -43262,7 +43315,11 @@ function extractColorAnimation(childTnList) {
|
|
|
43262
43315
|
if (animClrNodes.length === 0) {
|
|
43263
43316
|
return void 0;
|
|
43264
43317
|
}
|
|
43265
|
-
const
|
|
43318
|
+
const components = animClrNodes.map(extractSingleColorAnimation);
|
|
43319
|
+
const primary = components[0];
|
|
43320
|
+
return components.length > 1 ? { ...primary, components } : primary;
|
|
43321
|
+
}
|
|
43322
|
+
function extractSingleColorAnimation(node) {
|
|
43266
43323
|
const clrSpc = String(node["@_clrSpc"] || "rgb").toLowerCase();
|
|
43267
43324
|
const colorSpace = clrSpc === "hsl" ? "hsl" : "rgb";
|
|
43268
43325
|
const dir = String(node["@_dir"] || "").toLowerCase();
|
|
@@ -43270,7 +43327,9 @@ function extractColorAnimation(childTnList) {
|
|
|
43270
43327
|
const path = node["@_path"] !== void 0 ? String(node["@_path"]) : void 0;
|
|
43271
43328
|
const fromColor = extractColorValue(node["p:from"]);
|
|
43272
43329
|
const toColor = extractColorValue(node["p:to"]);
|
|
43273
|
-
const
|
|
43330
|
+
const byContainer = node["p:by"];
|
|
43331
|
+
const byColor = extractHslDeltaOrColorValue(byContainer, colorSpace);
|
|
43332
|
+
const hslDelta = colorSpace === "hsl" ? extractHslDelta(byContainer) : void 0;
|
|
43274
43333
|
const targetAttribute = extractAttrNameFromCBhvr(node["p:cBhvr"]);
|
|
43275
43334
|
return {
|
|
43276
43335
|
colorSpace,
|
|
@@ -43279,9 +43338,21 @@ function extractColorAnimation(childTnList) {
|
|
|
43279
43338
|
fromColor,
|
|
43280
43339
|
toColor,
|
|
43281
43340
|
byColor,
|
|
43341
|
+
hslDelta,
|
|
43282
43342
|
targetAttribute
|
|
43283
43343
|
};
|
|
43284
43344
|
}
|
|
43345
|
+
function extractHslDelta(colorContainer) {
|
|
43346
|
+
const hsl = colorContainer?.["p:hsl"];
|
|
43347
|
+
if (!hsl) {
|
|
43348
|
+
return void 0;
|
|
43349
|
+
}
|
|
43350
|
+
return {
|
|
43351
|
+
hue: Number(hsl["@_h"] ?? 0) / 6e4,
|
|
43352
|
+
saturation: Number(hsl["@_s"] ?? 0) / 1e3,
|
|
43353
|
+
lightness: Number(hsl["@_l"] ?? 0) / 1e3
|
|
43354
|
+
};
|
|
43355
|
+
}
|
|
43285
43356
|
function extractHslDeltaOrColorValue(colorContainer, colorSpace) {
|
|
43286
43357
|
if (!colorContainer) {
|
|
43287
43358
|
return void 0;
|
|
@@ -43604,6 +43675,9 @@ function extractChildMotionValues(childTnList) {
|
|
|
43604
43675
|
const motionPathRotateAuto = void 0;
|
|
43605
43676
|
let motionPathEditMode;
|
|
43606
43677
|
let motionPtsTypes;
|
|
43678
|
+
let motionPathRotationAngle;
|
|
43679
|
+
let motionPathRotationCenterX;
|
|
43680
|
+
let motionPathRotationCenterY;
|
|
43607
43681
|
let rotationBy;
|
|
43608
43682
|
let rotationFrom;
|
|
43609
43683
|
let rotationTo;
|
|
@@ -43621,6 +43695,9 @@ function extractChildMotionValues(childTnList) {
|
|
|
43621
43695
|
motionPathRotateAuto,
|
|
43622
43696
|
motionPathEditMode,
|
|
43623
43697
|
motionPtsTypes,
|
|
43698
|
+
motionPathRotationAngle,
|
|
43699
|
+
motionPathRotationCenterX,
|
|
43700
|
+
motionPathRotationCenterY,
|
|
43624
43701
|
rotationBy,
|
|
43625
43702
|
rotationFrom,
|
|
43626
43703
|
rotationTo,
|
|
@@ -43644,6 +43721,25 @@ function extractChildMotionValues(childTnList) {
|
|
|
43644
43721
|
if (motionNode["@_ptsTypes"] !== void 0) {
|
|
43645
43722
|
motionPtsTypes = String(motionNode["@_ptsTypes"]);
|
|
43646
43723
|
}
|
|
43724
|
+
if (motionNode["@_rAng"] !== void 0) {
|
|
43725
|
+
const parsed = Number.parseInt(String(motionNode["@_rAng"]), 10);
|
|
43726
|
+
if (Number.isFinite(parsed)) {
|
|
43727
|
+
motionPathRotationAngle = parsed / 6e4;
|
|
43728
|
+
}
|
|
43729
|
+
}
|
|
43730
|
+
const rotationCenter = motionNode["p:rCtr"];
|
|
43731
|
+
if (rotationCenter?.["@_x"] !== void 0) {
|
|
43732
|
+
const parsed = Number.parseInt(String(rotationCenter["@_x"]), 10);
|
|
43733
|
+
if (Number.isFinite(parsed)) {
|
|
43734
|
+
motionPathRotationCenterX = parsed / 1e3;
|
|
43735
|
+
}
|
|
43736
|
+
}
|
|
43737
|
+
if (rotationCenter?.["@_y"] !== void 0) {
|
|
43738
|
+
const parsed = Number.parseInt(String(rotationCenter["@_y"]), 10);
|
|
43739
|
+
if (Number.isFinite(parsed)) {
|
|
43740
|
+
motionPathRotationCenterY = parsed / 1e3;
|
|
43741
|
+
}
|
|
43742
|
+
}
|
|
43647
43743
|
}
|
|
43648
43744
|
}
|
|
43649
43745
|
const rotationNodes = ensureArray8(childTnList["p:animRot"]);
|
|
@@ -43698,6 +43794,9 @@ function extractChildMotionValues(childTnList) {
|
|
|
43698
43794
|
motionPathRotateAuto,
|
|
43699
43795
|
motionPathEditMode,
|
|
43700
43796
|
motionPtsTypes,
|
|
43797
|
+
motionPathRotationAngle,
|
|
43798
|
+
motionPathRotationCenterX,
|
|
43799
|
+
motionPathRotationCenterY,
|
|
43701
43800
|
rotationBy,
|
|
43702
43801
|
rotationFrom,
|
|
43703
43802
|
rotationTo,
|
|
@@ -44488,6 +44587,7 @@ var PptxSlideLoaderService = class {
|
|
|
44488
44587
|
const ownBackgroundColor = params.extractBackgroundColor(slideXmlObj);
|
|
44489
44588
|
const ownBackgroundGradient = params.extractBackgroundGradient(slideXmlObj);
|
|
44490
44589
|
let ownBackgroundImage;
|
|
44590
|
+
let backgroundImageProperties;
|
|
44491
44591
|
const [
|
|
44492
44592
|
backgroundColor,
|
|
44493
44593
|
backgroundGradient,
|
|
@@ -44502,7 +44602,12 @@ var PptxSlideLoaderService = class {
|
|
|
44502
44602
|
(async () => {
|
|
44503
44603
|
const own = await params.extractBackgroundImage(slideXmlObj, path);
|
|
44504
44604
|
ownBackgroundImage = own;
|
|
44505
|
-
|
|
44605
|
+
if (own) {
|
|
44606
|
+
backgroundImageProperties = params.extractBackgroundImageProperties(slideXmlObj);
|
|
44607
|
+
return own;
|
|
44608
|
+
}
|
|
44609
|
+
backgroundImageProperties = await params.getLayoutBackgroundImageProperties(path);
|
|
44610
|
+
return params.getLayoutBackgroundImage(path);
|
|
44506
44611
|
})(),
|
|
44507
44612
|
params.extractSlideNotes(path),
|
|
44508
44613
|
params.extractSlideComments(path),
|
|
@@ -44570,6 +44675,7 @@ var PptxSlideLoaderService = class {
|
|
|
44570
44675
|
backgroundColor,
|
|
44571
44676
|
backgroundGradient: backgroundGradient || void 0,
|
|
44572
44677
|
backgroundImage,
|
|
44678
|
+
backgroundImageProperties,
|
|
44573
44679
|
transition,
|
|
44574
44680
|
animations,
|
|
44575
44681
|
animationTimelineAnchors,
|
|
@@ -45171,7 +45277,7 @@ var TIME_NODE_EVENTS = /* @__PURE__ */ new Set(["onBegin", "onEnd", "begin", "en
|
|
|
45171
45277
|
function createGroupContext() {
|
|
45172
45278
|
return { parCounter: { next: 0 } };
|
|
45173
45279
|
}
|
|
45174
|
-
function conditionsStartAutomatically(cTn) {
|
|
45280
|
+
function conditionsStartAutomatically(cTn, mainSequence) {
|
|
45175
45281
|
if (!cTn) {
|
|
45176
45282
|
return true;
|
|
45177
45283
|
}
|
|
@@ -45187,6 +45293,14 @@ function conditionsStartAutomatically(cTn) {
|
|
|
45187
45293
|
const event = condition["@_evt"] === void 0 ? void 0 : String(condition["@_evt"]);
|
|
45188
45294
|
const hasTimeNode = condition["p:tn"] !== void 0 || condition["@_tn"] !== void 0;
|
|
45189
45295
|
if (event !== void 0 && TIME_NODE_EVENTS.has(event) && hasTimeNode) {
|
|
45296
|
+
const timeNode = condition["p:tn"];
|
|
45297
|
+
const targetTimeNodeId = timeNode?.["@_val"] ?? condition["@_tn"];
|
|
45298
|
+
if (mainSequence !== void 0 && targetTimeNodeId !== void 0 && String(targetTimeNodeId) === mainSequence.id) {
|
|
45299
|
+
if (mainSequence.autoStart) {
|
|
45300
|
+
return true;
|
|
45301
|
+
}
|
|
45302
|
+
continue;
|
|
45303
|
+
}
|
|
45190
45304
|
return true;
|
|
45191
45305
|
}
|
|
45192
45306
|
if (event !== void 0) {
|
|
@@ -45205,11 +45319,33 @@ function isMainSequence(cTn) {
|
|
|
45205
45319
|
function isEffectNode(cTn) {
|
|
45206
45320
|
return cTn !== void 0 && cTn["@_presetClass"] !== void 0;
|
|
45207
45321
|
}
|
|
45322
|
+
function extractWrapperStartDelayMs(cTn) {
|
|
45323
|
+
if (!cTn) {
|
|
45324
|
+
return void 0;
|
|
45325
|
+
}
|
|
45326
|
+
const directDelay = readTimingAttr(cTn["@_delay"]);
|
|
45327
|
+
if (directDelay !== void 0 && directDelay >= 0) {
|
|
45328
|
+
return directDelay;
|
|
45329
|
+
}
|
|
45330
|
+
const stCondLst = cTn["p:stCondLst"];
|
|
45331
|
+
if (!stCondLst) {
|
|
45332
|
+
return void 0;
|
|
45333
|
+
}
|
|
45334
|
+
let smallest;
|
|
45335
|
+
for (const condition of ensureArray8(stCondLst["p:cond"])) {
|
|
45336
|
+
const delay = readTimingAttr(condition["@_delay"]);
|
|
45337
|
+
if (delay !== void 0 && delay >= 0 && (smallest === void 0 || delay < smallest)) {
|
|
45338
|
+
smallest = delay;
|
|
45339
|
+
}
|
|
45340
|
+
}
|
|
45341
|
+
return smallest;
|
|
45342
|
+
}
|
|
45208
45343
|
function childGroupContext(parent, cTn, options) {
|
|
45209
45344
|
if (options.isClickLevelGroup) {
|
|
45210
45345
|
return {
|
|
45211
|
-
groupAutoStart: conditionsStartAutomatically(cTn),
|
|
45346
|
+
groupAutoStart: conditionsStartAutomatically(cTn, options.mainSequence),
|
|
45212
45347
|
parGroupIndex: parent.parGroupIndex,
|
|
45348
|
+
parGroupDelayMs: parent.parGroupDelayMs,
|
|
45213
45349
|
parCounter: parent.parCounter,
|
|
45214
45350
|
// The innermost enclosing `p:seq`'s attrs are unrelated to click-level
|
|
45215
45351
|
// grouping; carry them through rather than dropping them here.
|
|
@@ -45221,15 +45357,74 @@ function childGroupContext(parent, cTn, options) {
|
|
|
45221
45357
|
if (isEffectNode(cTn)) {
|
|
45222
45358
|
return parent;
|
|
45223
45359
|
}
|
|
45360
|
+
const localDelayMs = extractWrapperStartDelayMs(cTn);
|
|
45224
45361
|
return {
|
|
45225
45362
|
groupAutoStart: parent.groupAutoStart,
|
|
45226
45363
|
parGroupIndex: parent.parCounter.next++,
|
|
45364
|
+
parGroupDelayMs: localDelayMs === void 0 ? parent.parGroupDelayMs : (parent.parGroupDelayMs ?? 0) + localDelayMs,
|
|
45227
45365
|
parCounter: parent.parCounter,
|
|
45228
45366
|
seqConcurrent: parent.seqConcurrent,
|
|
45229
45367
|
seqNextAction: parent.seqNextAction,
|
|
45230
45368
|
seqPrevAction: parent.seqPrevAction
|
|
45231
45369
|
};
|
|
45232
45370
|
}
|
|
45371
|
+
function extractAttributeAnimations(childTnList) {
|
|
45372
|
+
if (!childTnList) {
|
|
45373
|
+
return void 0;
|
|
45374
|
+
}
|
|
45375
|
+
const components = [];
|
|
45376
|
+
for (const node of ensureArray8(childTnList["p:anim"])) {
|
|
45377
|
+
const attrName = extractAttrNameFromCBhvr(node["p:cBhvr"]);
|
|
45378
|
+
const keyframes = extractKeyframes(node);
|
|
45379
|
+
if (!attrName || !keyframes || keyframes.length === 0) {
|
|
45380
|
+
continue;
|
|
45381
|
+
}
|
|
45382
|
+
const behavior = node["p:cBhvr"];
|
|
45383
|
+
const cTn = behavior?.["p:cTn"];
|
|
45384
|
+
components.push({
|
|
45385
|
+
attrName,
|
|
45386
|
+
keyframes,
|
|
45387
|
+
durationMs: readTimingAttr(cTn?.["@_dur"]),
|
|
45388
|
+
delayMs: cTn ? extractStartConditionDelayMs(cTn) : void 0
|
|
45389
|
+
});
|
|
45390
|
+
}
|
|
45391
|
+
return components.length > 0 ? components : void 0;
|
|
45392
|
+
}
|
|
45393
|
+
var PRIMARY_BEHAVIOUR_FAMILIES = [
|
|
45394
|
+
["p:animMotion", "p:animRot", "p:animScale"],
|
|
45395
|
+
["p:animClr"],
|
|
45396
|
+
["p:animEffect"],
|
|
45397
|
+
["p:anim"]
|
|
45398
|
+
];
|
|
45399
|
+
function isEnabled(value) {
|
|
45400
|
+
return value === true || value === 1 || value === "1" || value === "true";
|
|
45401
|
+
}
|
|
45402
|
+
function extractChildAutoReverseTiming(cTn, toArray5) {
|
|
45403
|
+
const childTnLst = cTn["p:childTnLst"];
|
|
45404
|
+
if (!childTnLst) {
|
|
45405
|
+
return void 0;
|
|
45406
|
+
}
|
|
45407
|
+
for (const family of PRIMARY_BEHAVIOUR_FAMILIES) {
|
|
45408
|
+
const behaviours = family.flatMap((tag) => toArray5(childTnLst[tag]));
|
|
45409
|
+
if (behaviours.length === 0) {
|
|
45410
|
+
continue;
|
|
45411
|
+
}
|
|
45412
|
+
const timings = behaviours.map((behaviour) => {
|
|
45413
|
+
const common = behaviour["p:cBhvr"];
|
|
45414
|
+
const inner = common?.["p:cTn"];
|
|
45415
|
+
return {
|
|
45416
|
+
autoReverse: isEnabled(inner?.["@_autoRev"]),
|
|
45417
|
+
durationMs: readTimingAttr(inner?.["@_dur"])
|
|
45418
|
+
};
|
|
45419
|
+
});
|
|
45420
|
+
const durationMs = timings[0]?.durationMs;
|
|
45421
|
+
if (durationMs !== void 0 && timings.every((timing) => timing.autoReverse && timing.durationMs === durationMs)) {
|
|
45422
|
+
return { autoReverse: true, durationMs };
|
|
45423
|
+
}
|
|
45424
|
+
return void 0;
|
|
45425
|
+
}
|
|
45426
|
+
return void 0;
|
|
45427
|
+
}
|
|
45233
45428
|
var defaultLookup = new PptxXmlLookupService();
|
|
45234
45429
|
function resolveSlideTimingNode(slideRoot) {
|
|
45235
45430
|
const direct = slideRoot?.["p:timing"];
|
|
@@ -45420,7 +45615,8 @@ var PptxNativeAnimationService = class {
|
|
|
45420
45615
|
const presetClass = cTn["@_presetClass"];
|
|
45421
45616
|
const presetId = cTn["@_presetID"] ? Number.parseInt(String(cTn["@_presetID"]), 10) : void 0;
|
|
45422
45617
|
const presetSubtype = cTn["@_presetSubtype"] !== void 0 ? Number.parseInt(String(cTn["@_presetSubtype"]), 10) : void 0;
|
|
45423
|
-
const
|
|
45618
|
+
const childAutoReverseTiming = extractChildAutoReverseTiming(cTn, ensureArray8);
|
|
45619
|
+
const durationMs = readTimingAttr(cTn["@_dur"]) ?? childAutoReverseTiming?.durationMs ?? extractChildBehaviourDurationMs(cTn, ensureArray8);
|
|
45424
45620
|
const delayMs = readTimingAttr(cTn["@_delay"]) ?? extractStartConditionDelayMs(cTn);
|
|
45425
45621
|
const accel = parseTimingPercentFraction(cTn["@_accel"]);
|
|
45426
45622
|
const decel = parseTimingPercentFraction(cTn["@_decel"]);
|
|
@@ -45468,6 +45664,7 @@ var PptxNativeAnimationService = class {
|
|
|
45468
45664
|
const textTarget = this.extractTextTargetFromCTn(cTn);
|
|
45469
45665
|
const keyframes = extractChildKeyframes(childTnList2);
|
|
45470
45666
|
const keyframeAttrName = extractChildKeyframeAttrName(childTnList2);
|
|
45667
|
+
const attributeAnimations = extractAttributeAnimations(childTnList2);
|
|
45471
45668
|
const roundTripAttrs = captureRoundTripCTnAttrs(cTn);
|
|
45472
45669
|
const afterEffectFlag = extractAfterEffect(cTn);
|
|
45473
45670
|
const timingAttrs = extractCTnTimingAttrs(cTn);
|
|
@@ -45495,6 +45692,9 @@ var PptxNativeAnimationService = class {
|
|
|
45495
45692
|
motionPathRotateAuto: childMotion.motionPathRotateAuto,
|
|
45496
45693
|
motionPathEditMode: childMotion.motionPathEditMode,
|
|
45497
45694
|
motionPtsTypes: childMotion.motionPtsTypes,
|
|
45695
|
+
motionPathRotationAngle: childMotion.motionPathRotationAngle,
|
|
45696
|
+
motionPathRotationCenterX: childMotion.motionPathRotationCenterX,
|
|
45697
|
+
motionPathRotationCenterY: childMotion.motionPathRotationCenterY,
|
|
45498
45698
|
rotationBy: childMotion.rotationBy,
|
|
45499
45699
|
rotationFrom: childMotion.rotationFrom,
|
|
45500
45700
|
rotationTo: childMotion.rotationTo,
|
|
@@ -45507,8 +45707,9 @@ var PptxNativeAnimationService = class {
|
|
|
45507
45707
|
scaleZoomContents: childMotion.scaleZoomContents,
|
|
45508
45708
|
keyframes: keyframes ?? void 0,
|
|
45509
45709
|
attrName: keyframeAttrName,
|
|
45710
|
+
attributeAnimations,
|
|
45510
45711
|
repeatCount: repeatInfo.repeatCount,
|
|
45511
|
-
autoReverse: repeatInfo.autoReverse,
|
|
45712
|
+
autoReverse: repeatInfo.autoReverse ?? childAutoReverseTiming?.autoReverse,
|
|
45512
45713
|
soundRId: soundInfo.soundRId,
|
|
45513
45714
|
stopSound: soundInfo.stopSound,
|
|
45514
45715
|
startConditions: startConditions ?? void 0,
|
|
@@ -45523,6 +45724,7 @@ var PptxNativeAnimationService = class {
|
|
|
45523
45724
|
afterEffect: afterEffectFlag,
|
|
45524
45725
|
groupAutoStart: group2.groupAutoStart,
|
|
45525
45726
|
parGroupIndex: group2.parGroupIndex,
|
|
45727
|
+
parGroupDelayMs: group2.parGroupDelayMs,
|
|
45526
45728
|
effectFilter
|
|
45527
45729
|
});
|
|
45528
45730
|
}
|
|
@@ -45533,12 +45735,17 @@ var PptxNativeAnimationService = class {
|
|
|
45533
45735
|
const sequences = ensureArray8(childTnList["p:seq"]);
|
|
45534
45736
|
const exclusives = ensureArray8(childTnList["p:excl"]);
|
|
45535
45737
|
for (const parallel of parallels) {
|
|
45738
|
+
const mainSequenceId = cTn["@_id"];
|
|
45536
45739
|
this.walkTimingTree(
|
|
45537
45740
|
parallel,
|
|
45538
45741
|
animations,
|
|
45539
45742
|
trigger,
|
|
45540
45743
|
childGroupContext(group2, parallel["p:cTn"], {
|
|
45541
|
-
isClickLevelGroup: isClickLevel
|
|
45744
|
+
isClickLevelGroup: isClickLevel,
|
|
45745
|
+
mainSequence: isClickLevel && mainSequenceId !== void 0 ? {
|
|
45746
|
+
autoStart: group2.seqConcurrent === true && group2.seqNextAction === "seek",
|
|
45747
|
+
id: String(mainSequenceId)
|
|
45748
|
+
} : void 0
|
|
45542
45749
|
})
|
|
45543
45750
|
);
|
|
45544
45751
|
}
|
|
@@ -45729,6 +45936,9 @@ var PptxNativeAnimationService = class {
|
|
|
45729
45936
|
if (!triggerShapeId) {
|
|
45730
45937
|
continue;
|
|
45731
45938
|
}
|
|
45939
|
+
const endSync = seqCTn?.["p:endSync"];
|
|
45940
|
+
const runtimeTrigger = endSync?.["p:rtn"];
|
|
45941
|
+
const restartable = String(runtimeTrigger?.["@_val"] ?? "") === "all";
|
|
45732
45942
|
const interactiveAnims = [];
|
|
45733
45943
|
const seqAttrs = extractSeqAttrs(seq);
|
|
45734
45944
|
this.walkTimingTree(seq, interactiveAnims, "onShapeClick", {
|
|
@@ -45737,7 +45947,11 @@ var PptxNativeAnimationService = class {
|
|
|
45737
45947
|
});
|
|
45738
45948
|
for (const anim of interactiveAnims) {
|
|
45739
45949
|
anim.triggerShapeId = triggerShapeId;
|
|
45740
|
-
anim.
|
|
45950
|
+
anim.interactiveSequence = true;
|
|
45951
|
+
anim.interactiveRestart = restartable;
|
|
45952
|
+
if (anim.trigger === "onClick") {
|
|
45953
|
+
anim.trigger = "onShapeClick";
|
|
45954
|
+
}
|
|
45741
45955
|
animations.push(anim);
|
|
45742
45956
|
}
|
|
45743
45957
|
}
|
|
@@ -47217,6 +47431,15 @@ function buildMotionPathNode(anim, allocateId) {
|
|
|
47217
47431
|
}
|
|
47218
47432
|
}
|
|
47219
47433
|
};
|
|
47434
|
+
if (anim.motionPathRotationAngle !== void 0) {
|
|
47435
|
+
motionNode["@_rAng"] = String(Math.round(anim.motionPathRotationAngle * 6e4));
|
|
47436
|
+
}
|
|
47437
|
+
if (anim.motionPathRotationCenterX !== void 0 || anim.motionPathRotationCenterY !== void 0) {
|
|
47438
|
+
motionNode["p:rCtr"] = {
|
|
47439
|
+
"@_x": String(Math.round((anim.motionPathRotationCenterX ?? 0) * 1e3)),
|
|
47440
|
+
"@_y": String(Math.round((anim.motionPathRotationCenterY ?? 0) * 1e3))
|
|
47441
|
+
};
|
|
47442
|
+
}
|
|
47220
47443
|
const effectCTn = {
|
|
47221
47444
|
"@_id": String(effectId),
|
|
47222
47445
|
"@_presetID": "0",
|
|
@@ -47388,6 +47611,8 @@ function wrapInInteractiveSequence(effectNodes, triggerShapeId, allocateId) {
|
|
|
47388
47611
|
}
|
|
47389
47612
|
function buildMainSequenceNode(mainSeqId, children11) {
|
|
47390
47613
|
const node = {
|
|
47614
|
+
"@_concurrent": "1",
|
|
47615
|
+
"@_nextAc": "seek",
|
|
47391
47616
|
"p:cTn": {
|
|
47392
47617
|
"@_id": String(mainSeqId),
|
|
47393
47618
|
"@_dur": "indefinite",
|
|
@@ -50999,10 +51224,6 @@ function scaleElementSubtree(el, scaleX, scaleY) {
|
|
|
50999
51224
|
el.y *= scaleY;
|
|
51000
51225
|
el.width *= scaleX;
|
|
51001
51226
|
el.height *= scaleY;
|
|
51002
|
-
const avgScale = (Math.abs(scaleX) + Math.abs(scaleY)) / 2;
|
|
51003
|
-
if (hasShapeProperties(el) && el.shapeStyle?.strokeWidth) {
|
|
51004
|
-
el.shapeStyle.strokeWidth *= avgScale;
|
|
51005
|
-
}
|
|
51006
51227
|
if (el.type === "group") {
|
|
51007
51228
|
for (const nested of el.children) {
|
|
51008
51229
|
scaleElementSubtree(nested, scaleX, scaleY);
|
|
@@ -51016,10 +51237,6 @@ function transformGroupChild(el, t) {
|
|
|
51016
51237
|
el.y = t.parentY + relativeY * t.scaleY;
|
|
51017
51238
|
el.width *= t.scaleX;
|
|
51018
51239
|
el.height *= t.scaleY;
|
|
51019
|
-
const avgScale = (Math.abs(t.scaleX) + Math.abs(t.scaleY)) / 2;
|
|
51020
|
-
if (hasShapeProperties(el) && el.shapeStyle?.strokeWidth) {
|
|
51021
|
-
el.shapeStyle.strokeWidth *= avgScale;
|
|
51022
|
-
}
|
|
51023
51240
|
if (el.type === "group") {
|
|
51024
51241
|
for (const nested of el.children) {
|
|
51025
51242
|
scaleElementSubtree(nested, t.scaleX, t.scaleY);
|
|
@@ -56426,6 +56643,32 @@ function parseMasterColorMap(node) {
|
|
|
56426
56643
|
}
|
|
56427
56644
|
return Object.keys(result).length > 0 ? result : void 0;
|
|
56428
56645
|
}
|
|
56646
|
+
var HEX_COLOR = /^#?[0-9a-f]{6}$/iu;
|
|
56647
|
+
function resolveToken2(value, resolveThemeColor) {
|
|
56648
|
+
if (!value || HEX_COLOR.test(value)) {
|
|
56649
|
+
return value;
|
|
56650
|
+
}
|
|
56651
|
+
return resolveThemeColor(value) ?? value;
|
|
56652
|
+
}
|
|
56653
|
+
function resolveColorAnimation(animation, resolveThemeColor) {
|
|
56654
|
+
return {
|
|
56655
|
+
...animation,
|
|
56656
|
+
fromColor: resolveToken2(animation.fromColor, resolveThemeColor),
|
|
56657
|
+
toColor: resolveToken2(animation.toColor, resolveThemeColor),
|
|
56658
|
+
byColor: resolveToken2(animation.byColor, resolveThemeColor),
|
|
56659
|
+
components: animation.components?.map(
|
|
56660
|
+
(component) => resolveColorAnimation(component, resolveThemeColor)
|
|
56661
|
+
)
|
|
56662
|
+
};
|
|
56663
|
+
}
|
|
56664
|
+
function resolveNativeAnimationThemeColors(animations, resolveThemeColor) {
|
|
56665
|
+
return animations.map(
|
|
56666
|
+
(animation) => animation.colorAnimation ? {
|
|
56667
|
+
...animation,
|
|
56668
|
+
colorAnimation: resolveColorAnimation(animation.colorAnimation, resolveThemeColor)
|
|
56669
|
+
} : animation
|
|
56670
|
+
);
|
|
56671
|
+
}
|
|
56429
56672
|
function getXmlShapeIdFromXml(rawXml) {
|
|
56430
56673
|
if (!rawXml) {
|
|
56431
56674
|
return void 0;
|
|
@@ -59415,7 +59658,42 @@ var PptxHandlerRuntime6 = class extends PptxHandlerRuntime5 {
|
|
|
59415
59658
|
}
|
|
59416
59659
|
};
|
|
59417
59660
|
var CAN_USE_BLOB_URLS = typeof globalThis.URL?.createObjectURL === "function" && typeof globalThis.Blob !== "undefined";
|
|
59661
|
+
async function decodeTiffToPngBlob(bytes) {
|
|
59662
|
+
if (typeof document === "undefined") {
|
|
59663
|
+
return void 0;
|
|
59664
|
+
}
|
|
59665
|
+
const imported = await import('./UTIF-LAD5QYGQ.mjs');
|
|
59666
|
+
const decoder = "default" in imported ? imported.default : imported;
|
|
59667
|
+
const page = decoder.decode(bytes)[0];
|
|
59668
|
+
if (!page) {
|
|
59669
|
+
return void 0;
|
|
59670
|
+
}
|
|
59671
|
+
decoder.decodeImage(bytes, page);
|
|
59672
|
+
const width = Number(page.width);
|
|
59673
|
+
const height = Number(page.height);
|
|
59674
|
+
if (!Number.isFinite(width) || width <= 0 || !Number.isFinite(height) || height <= 0) {
|
|
59675
|
+
return void 0;
|
|
59676
|
+
}
|
|
59677
|
+
const rgba = new Uint8ClampedArray(decoder.toRGBA8(page));
|
|
59678
|
+
const canvas = document.createElement("canvas");
|
|
59679
|
+
canvas.width = width;
|
|
59680
|
+
canvas.height = height;
|
|
59681
|
+
const context = canvas.getContext("2d");
|
|
59682
|
+
if (!context) {
|
|
59683
|
+
return void 0;
|
|
59684
|
+
}
|
|
59685
|
+
const imageData = context.createImageData(width, height);
|
|
59686
|
+
imageData.data.set(rgba);
|
|
59687
|
+
context.putImageData(imageData, 0, 0);
|
|
59688
|
+
return await new Promise((resolve2) => {
|
|
59689
|
+
canvas.toBlob((blob) => resolve2(blob ?? void 0), "image/png");
|
|
59690
|
+
});
|
|
59691
|
+
}
|
|
59418
59692
|
var PptxHandlerRuntime7 = class extends PptxHandlerRuntime6 {
|
|
59693
|
+
/** Forward declaration implemented later in the runtime inheritance chain. */
|
|
59694
|
+
resolveThemeColor(_schemeKey) {
|
|
59695
|
+
return void 0;
|
|
59696
|
+
}
|
|
59419
59697
|
/**
|
|
59420
59698
|
* Convert raw image bytes to a URL suitable for <img src>.
|
|
59421
59699
|
* Uses Blob URLs in browsers (avoids 33% base64 overhead),
|
|
@@ -59482,6 +59760,18 @@ var PptxHandlerRuntime7 = class extends PptxHandlerRuntime6 {
|
|
|
59482
59760
|
}
|
|
59483
59761
|
return void 0;
|
|
59484
59762
|
}
|
|
59763
|
+
if (ext === "tif" || ext === "tiff") {
|
|
59764
|
+
const binaryBuffer = await imageFile.async("arraybuffer");
|
|
59765
|
+
const pngBlob = await decodeTiffToPngBlob(binaryBuffer);
|
|
59766
|
+
if (pngBlob) {
|
|
59767
|
+
const converted = this.createImageUrl(await pngBlob.arrayBuffer(), "image/png");
|
|
59768
|
+
this.imageDataCache.set(imagePath, converted);
|
|
59769
|
+
return converted;
|
|
59770
|
+
}
|
|
59771
|
+
const imageData2 = this.createImageUrl(binaryBuffer, this.getImageMimeType(imagePath));
|
|
59772
|
+
this.imageDataCache.set(imagePath, imageData2);
|
|
59773
|
+
return imageData2;
|
|
59774
|
+
}
|
|
59485
59775
|
const imageBytes = await imageFile.async("arraybuffer");
|
|
59486
59776
|
const imageData = this.createImageUrl(imageBytes, this.getImageMimeType(imagePath));
|
|
59487
59777
|
this.imageDataCache.set(imagePath, imageData);
|
|
@@ -59580,10 +59870,14 @@ var PptxHandlerRuntime7 = class extends PptxHandlerRuntime6 {
|
|
|
59580
59870
|
* anything.
|
|
59581
59871
|
*/
|
|
59582
59872
|
parseNativeAnimations(slideXml3, slidePath) {
|
|
59583
|
-
const
|
|
59584
|
-
if (!
|
|
59873
|
+
const parsedAnimations = this.nativeAnimationService.parseNativeAnimations(slideXml3);
|
|
59874
|
+
if (!parsedAnimations) {
|
|
59585
59875
|
return void 0;
|
|
59586
59876
|
}
|
|
59877
|
+
const animations = resolveNativeAnimationThemeColors(
|
|
59878
|
+
parsedAnimations,
|
|
59879
|
+
(token2) => this.resolveThemeColor(token2)
|
|
59880
|
+
);
|
|
59587
59881
|
for (const anim of animations) {
|
|
59588
59882
|
if (anim.soundRId) {
|
|
59589
59883
|
anim.soundPath = this.resolveRelationshipTarget(slidePath, anim.soundRId);
|
|
@@ -63085,7 +63379,7 @@ var PptxHandlerRuntime19 = class _PptxHandlerRuntime5 extends PptxHandlerRuntime
|
|
|
63085
63379
|
const latinTypefaceToken = xmlAttr(latin, "typeface");
|
|
63086
63380
|
const eaTypefaceToken = xmlAttr(eastAsian, "typeface");
|
|
63087
63381
|
const csTypefaceToken = xmlAttr(complexScript, "typeface");
|
|
63088
|
-
const chosenTypeface = latinTypefaceToken
|
|
63382
|
+
const chosenTypeface = latinTypefaceToken;
|
|
63089
63383
|
const resolvedTypeface = this.resolveThemeTypeface(chosenTypeface);
|
|
63090
63384
|
if (resolvedTypeface) {
|
|
63091
63385
|
style.fontFamily = resolvedTypeface;
|
|
@@ -73982,6 +74276,7 @@ var PptxHandlerRuntime57 = class _PptxHandlerRuntime24 extends PptxHandlerRuntim
|
|
|
73982
74276
|
const rEmbed = xmlAttr(blip, "r:embed");
|
|
73983
74277
|
const rLink = xmlAttr(blip, "r:link");
|
|
73984
74278
|
const crop = this.readImageCropFromBlipFill(blipFill);
|
|
74279
|
+
const imageEffects = this.extractImageEffects(blip);
|
|
73985
74280
|
const tileNode = blipFill?.["a:tile"];
|
|
73986
74281
|
const tileProps = {};
|
|
73987
74282
|
if (tileNode) {
|
|
@@ -74041,6 +74336,7 @@ var PptxHandlerRuntime57 = class _PptxHandlerRuntime24 extends PptxHandlerRuntim
|
|
|
74041
74336
|
}
|
|
74042
74337
|
const styleNode = shape["p:style"] || inheritedPlaceholder?.shape?.["p:style"] || inheritedPlaceholder?.picture?.["p:style"];
|
|
74043
74338
|
const sifCNvPr = xmlPath(shape, "p:nvSpPr", "p:cNvPr");
|
|
74339
|
+
const sifElementName = xmlAttr(sifCNvPr, "name")?.trim() || void 0;
|
|
74044
74340
|
const sifSlideRels = this.slideRelsMap.get(slidePath);
|
|
74045
74341
|
const { actionClick: sifActionClick, actionHover: sifActionHover } = this.parseElementActions(
|
|
74046
74342
|
sifCNvPr,
|
|
@@ -74056,6 +74352,7 @@ var PptxHandlerRuntime57 = class _PptxHandlerRuntime24 extends PptxHandlerRuntim
|
|
|
74056
74352
|
height,
|
|
74057
74353
|
imageData,
|
|
74058
74354
|
imagePath,
|
|
74355
|
+
imageEffects: imageEffects || void 0,
|
|
74059
74356
|
...crop,
|
|
74060
74357
|
...tileProps,
|
|
74061
74358
|
shapeType,
|
|
@@ -74071,6 +74368,7 @@ var PptxHandlerRuntime57 = class _PptxHandlerRuntime24 extends PptxHandlerRuntim
|
|
|
74071
74368
|
flipHorizontal,
|
|
74072
74369
|
flipVertical,
|
|
74073
74370
|
rawXml: shape,
|
|
74371
|
+
name: sifElementName,
|
|
74074
74372
|
actionClick: sifActionClick,
|
|
74075
74373
|
actionHover: sifActionHover
|
|
74076
74374
|
};
|
|
@@ -74273,6 +74571,21 @@ var PptxHandlerRuntime58 = class extends PptxHandlerRuntime57 {
|
|
|
74273
74571
|
if (textStyle.align === void 0 && levelStyle.alignment !== void 0) {
|
|
74274
74572
|
textStyle.align = levelStyle.alignment;
|
|
74275
74573
|
}
|
|
74574
|
+
if (textStyle.defaultTabSize === void 0 && levelStyle.defaultTabSize !== void 0) {
|
|
74575
|
+
textStyle.defaultTabSize = levelStyle.defaultTabSize;
|
|
74576
|
+
}
|
|
74577
|
+
if (textStyle.eaLineBreak === void 0 && levelStyle.eaLineBreak !== void 0) {
|
|
74578
|
+
textStyle.eaLineBreak = levelStyle.eaLineBreak;
|
|
74579
|
+
}
|
|
74580
|
+
if (textStyle.latinLineBreak === void 0 && levelStyle.latinLineBreak !== void 0) {
|
|
74581
|
+
textStyle.latinLineBreak = levelStyle.latinLineBreak;
|
|
74582
|
+
}
|
|
74583
|
+
if (textStyle.fontAlignment === void 0 && levelStyle.fontAlignment !== void 0) {
|
|
74584
|
+
textStyle.fontAlignment = levelStyle.fontAlignment;
|
|
74585
|
+
}
|
|
74586
|
+
if (textStyle.hangingPunctuation === void 0 && levelStyle.hangingPunctuation !== void 0) {
|
|
74587
|
+
textStyle.hangingPunctuation = levelStyle.hangingPunctuation;
|
|
74588
|
+
}
|
|
74276
74589
|
}
|
|
74277
74590
|
};
|
|
74278
74591
|
var PptxHandlerRuntime59 = class extends PptxHandlerRuntime58 {
|
|
@@ -74923,17 +75236,10 @@ var PptxHandlerRuntime61 = class _PptxHandlerRuntime26 extends PptxHandlerRuntim
|
|
|
74923
75236
|
ctx.slideRelationshipMap,
|
|
74924
75237
|
false
|
|
74925
75238
|
);
|
|
74926
|
-
const endParagraphStyle = this.extractTextRunStyle(
|
|
74927
|
-
p?.["a:endParaRPr"],
|
|
74928
|
-
paraAlign,
|
|
74929
|
-
ctx.slideRelationshipMap,
|
|
74930
|
-
false
|
|
74931
|
-
);
|
|
74932
75239
|
const mergedDefaultRunStyle = {
|
|
74933
75240
|
...ctx.bodyDefaultRunStyle,
|
|
74934
75241
|
...inheritedLevelStyle,
|
|
74935
75242
|
...bodyLevelStyle,
|
|
74936
|
-
...endParagraphStyle,
|
|
74937
75243
|
...defaultRunStyle
|
|
74938
75244
|
};
|
|
74939
75245
|
if (mergedDefaultRunStyle.color === void 0 && ctx.styleFontRefColor !== void 0) {
|
|
@@ -75798,6 +76104,7 @@ var PptxHandlerRuntime64 = class _PptxHandlerRuntime28 extends PptxHandlerRuntim
|
|
|
75798
76104
|
isLinked: mediaReference.isLinked,
|
|
75799
76105
|
posterFramePath,
|
|
75800
76106
|
posterFrameData,
|
|
76107
|
+
...this.readImageCropFromBlipFill(posterBlipFill),
|
|
75801
76108
|
// Real PowerPoint media is `p:pic`-shaped even though the
|
|
75802
76109
|
// `media` type buckets as `p:graphicFrame`, so its locks live
|
|
75803
76110
|
// in `a:picLocks`. The writer resolves the same container from
|
|
@@ -76501,6 +76808,23 @@ var PptxHandlerRuntime66 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
76501
76808
|
el.height = parseEmuInt(ext["@_cy"]) / _PptxHandlerRuntime30.EMU_PER_PX;
|
|
76502
76809
|
}
|
|
76503
76810
|
}
|
|
76811
|
+
applyAncestorGroupTextTransform(children11, groupTransform) {
|
|
76812
|
+
for (const child252 of children11) {
|
|
76813
|
+
if (child252.type === "group") {
|
|
76814
|
+
this.applyAncestorGroupTextTransform(child252.children, groupTransform);
|
|
76815
|
+
continue;
|
|
76816
|
+
}
|
|
76817
|
+
if (!hasTextProperties(child252)) {
|
|
76818
|
+
continue;
|
|
76819
|
+
}
|
|
76820
|
+
const existing = child252.textStyle?.ancestorGroupTransform;
|
|
76821
|
+
const nestedTransform = isTextOrientationMatrix(existing) ? existing : TEXT_ORIENTATION_IDENTITY;
|
|
76822
|
+
child252.textStyle = {
|
|
76823
|
+
...child252.textStyle,
|
|
76824
|
+
ancestorGroupTransform: multiplyTextOrientationMatrices(groupTransform, nestedTransform)
|
|
76825
|
+
};
|
|
76826
|
+
}
|
|
76827
|
+
}
|
|
76504
76828
|
/**
|
|
76505
76829
|
* Push a group fill down to every descendant whose own fill is `a:grpFill`
|
|
76506
76830
|
* ("inherit from my group").
|
|
@@ -76629,6 +76953,16 @@ var PptxHandlerRuntime66 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
|
|
|
76629
76953
|
if (hasGroupFill && grpFillStyle.fillMode !== "group") {
|
|
76630
76954
|
this.applyGroupFillInheritance(children11, grpFillStyle);
|
|
76631
76955
|
}
|
|
76956
|
+
if (raw.rotation || raw.flipHorizontal || raw.flipVertical) {
|
|
76957
|
+
this.applyAncestorGroupTextTransform(
|
|
76958
|
+
children11,
|
|
76959
|
+
getElementOrientationMatrix({
|
|
76960
|
+
rotation: raw.rotation,
|
|
76961
|
+
flipHorizontal: raw.flipHorizontal,
|
|
76962
|
+
flipVertical: raw.flipVertical
|
|
76963
|
+
})
|
|
76964
|
+
);
|
|
76965
|
+
}
|
|
76632
76966
|
for (const child252 of children11) {
|
|
76633
76967
|
child252.x -= parentX;
|
|
76634
76968
|
child252.y -= parentY;
|
|
@@ -76924,6 +77258,52 @@ var PptxHandlerRuntime68 = class extends PptxHandlerRuntime67 {
|
|
|
76924
77258
|
}
|
|
76925
77259
|
};
|
|
76926
77260
|
var PptxHandlerRuntime69 = class extends PptxHandlerRuntime68 {
|
|
77261
|
+
/**
|
|
77262
|
+
* Preserve the visual properties authored on a background `a:blipFill`.
|
|
77263
|
+
*
|
|
77264
|
+
* The decoded image URL alone is not enough to reproduce PowerPoint: crop,
|
|
77265
|
+
* stretch/tile placement and blip effects such as `a:alphaModFix` live next
|
|
77266
|
+
* to the relationship id and otherwise disappear during slide assembly.
|
|
77267
|
+
*/
|
|
77268
|
+
extractBackgroundImageProperties(slideXml3, rootElement = "p:sld") {
|
|
77269
|
+
try {
|
|
77270
|
+
const blipFill = xmlPath(slideXml3, rootElement, "p:cSld", "p:bg", "p:bgPr", "a:blipFill");
|
|
77271
|
+
const blip = xmlChild(blipFill, "a:blip");
|
|
77272
|
+
if (!blipFill || !blip) {
|
|
77273
|
+
return void 0;
|
|
77274
|
+
}
|
|
77275
|
+
const properties = {
|
|
77276
|
+
...this.readImageCropFromBlipFill(blipFill)
|
|
77277
|
+
};
|
|
77278
|
+
const imageEffects = this.extractImageEffects(blip);
|
|
77279
|
+
if (imageEffects) {
|
|
77280
|
+
properties.imageEffects = imageEffects;
|
|
77281
|
+
}
|
|
77282
|
+
const tileNode = xmlChild(blipFill, "a:tile");
|
|
77283
|
+
if (tileNode) {
|
|
77284
|
+
const txRaw = Number.parseInt(String(tileNode["@_tx"] ?? ""), 10);
|
|
77285
|
+
const tyRaw = Number.parseInt(String(tileNode["@_ty"] ?? ""), 10);
|
|
77286
|
+
const sxRaw = Number.parseInt(String(tileNode["@_sx"] ?? ""), 10);
|
|
77287
|
+
const syRaw = Number.parseInt(String(tileNode["@_sy"] ?? ""), 10);
|
|
77288
|
+
properties.tileOffsetX = Number.isFinite(txRaw) ? txRaw / 9525 : 0;
|
|
77289
|
+
properties.tileOffsetY = Number.isFinite(tyRaw) ? tyRaw / 9525 : 0;
|
|
77290
|
+
properties.tileScaleX = Number.isFinite(sxRaw) ? sxRaw / 1e5 : 1;
|
|
77291
|
+
properties.tileScaleY = Number.isFinite(syRaw) ? syRaw / 1e5 : 1;
|
|
77292
|
+
const flip = String(tileNode["@_flip"] ?? "none").trim();
|
|
77293
|
+
if (flip === "x" || flip === "y" || flip === "xy" || flip === "none") {
|
|
77294
|
+
properties.tileFlip = flip;
|
|
77295
|
+
}
|
|
77296
|
+
const alignment = String(tileNode["@_algn"] ?? "tl").trim();
|
|
77297
|
+
if (alignment.length > 0) {
|
|
77298
|
+
properties.tileAlignment = alignment;
|
|
77299
|
+
}
|
|
77300
|
+
}
|
|
77301
|
+
return Object.keys(properties).length > 0 ? properties : void 0;
|
|
77302
|
+
} catch (error) {
|
|
77303
|
+
console.warn("Failed to extract background image properties:", error);
|
|
77304
|
+
return void 0;
|
|
77305
|
+
}
|
|
77306
|
+
}
|
|
76927
77307
|
async extractBackgroundImage(slideXml3, slidePath, rootElement = "p:sld") {
|
|
76928
77308
|
try {
|
|
76929
77309
|
const blip = xmlPath(
|
|
@@ -77192,6 +77572,26 @@ var PptxHandlerRuntime69 = class extends PptxHandlerRuntime68 {
|
|
|
77192
77572
|
}
|
|
77193
77573
|
return void 0;
|
|
77194
77574
|
}
|
|
77575
|
+
async getMasterBackgroundImageProperties(layoutPath) {
|
|
77576
|
+
const layoutRels = this.slideRelsMap.get(layoutPath);
|
|
77577
|
+
if (!layoutRels) {
|
|
77578
|
+
return void 0;
|
|
77579
|
+
}
|
|
77580
|
+
for (const [, target] of layoutRels.entries()) {
|
|
77581
|
+
if (!target.includes("slideMaster")) {
|
|
77582
|
+
continue;
|
|
77583
|
+
}
|
|
77584
|
+
const layoutDir = layoutPath.substring(0, layoutPath.lastIndexOf("/") + 1);
|
|
77585
|
+
const masterPath = target.startsWith("/") ? target.substring(1) : target.startsWith("..") ? this.resolvePath(layoutDir, target) : `ppt/${stripParentDirSegments(target)}`;
|
|
77586
|
+
try {
|
|
77587
|
+
const masterXmlObj = await this.resolveCachedMasterXml(masterPath);
|
|
77588
|
+
return masterXmlObj ? this.extractBackgroundImageProperties(masterXmlObj, "p:sldMaster") : void 0;
|
|
77589
|
+
} catch {
|
|
77590
|
+
return void 0;
|
|
77591
|
+
}
|
|
77592
|
+
}
|
|
77593
|
+
return void 0;
|
|
77594
|
+
}
|
|
77195
77595
|
async getLayoutBackgroundImage(slidePath) {
|
|
77196
77596
|
const slideRels = this.slideRelsMap.get(slidePath);
|
|
77197
77597
|
if (!slideRels) {
|
|
@@ -77206,7 +77606,7 @@ var PptxHandlerRuntime69 = class extends PptxHandlerRuntime68 {
|
|
|
77206
77606
|
if (layoutXmlObj) {
|
|
77207
77607
|
const layoutRelsPath = partRelsPath(layoutPath);
|
|
77208
77608
|
await this.loadSlideRelationships(layoutPath, layoutRelsPath);
|
|
77209
|
-
const bg = this.extractBackgroundImage(layoutXmlObj, layoutPath, "p:sldLayout");
|
|
77609
|
+
const bg = await this.extractBackgroundImage(layoutXmlObj, layoutPath, "p:sldLayout");
|
|
77210
77610
|
if (bg) {
|
|
77211
77611
|
return bg;
|
|
77212
77612
|
}
|
|
@@ -77219,6 +77619,36 @@ var PptxHandlerRuntime69 = class extends PptxHandlerRuntime68 {
|
|
|
77219
77619
|
}
|
|
77220
77620
|
return void 0;
|
|
77221
77621
|
}
|
|
77622
|
+
async getLayoutBackgroundImageProperties(slidePath) {
|
|
77623
|
+
const slideRels = this.slideRelsMap.get(slidePath);
|
|
77624
|
+
if (!slideRels) {
|
|
77625
|
+
return void 0;
|
|
77626
|
+
}
|
|
77627
|
+
for (const [, target] of slideRels.entries()) {
|
|
77628
|
+
if (!target.includes("slideLayout")) {
|
|
77629
|
+
continue;
|
|
77630
|
+
}
|
|
77631
|
+
const slideDir = slidePath.substring(0, slidePath.lastIndexOf("/") + 1);
|
|
77632
|
+
const layoutPath = target.startsWith("/") ? target.substring(1) : target.startsWith("..") ? this.resolvePath(slideDir, target) : `ppt/${stripParentDirSegments(target)}`;
|
|
77633
|
+
try {
|
|
77634
|
+
const layoutXmlObj = await this.resolveCachedLayoutXml(layoutPath);
|
|
77635
|
+
if (!layoutXmlObj) {
|
|
77636
|
+
return void 0;
|
|
77637
|
+
}
|
|
77638
|
+
const layoutRelsPath = partRelsPath(layoutPath);
|
|
77639
|
+
await this.loadSlideRelationships(layoutPath, layoutRelsPath);
|
|
77640
|
+
const layoutImage = await this.extractBackgroundImage(
|
|
77641
|
+
layoutXmlObj,
|
|
77642
|
+
layoutPath,
|
|
77643
|
+
"p:sldLayout"
|
|
77644
|
+
);
|
|
77645
|
+
return layoutImage ? this.extractBackgroundImageProperties(layoutXmlObj, "p:sldLayout") : this.getMasterBackgroundImageProperties(layoutPath);
|
|
77646
|
+
} catch {
|
|
77647
|
+
return void 0;
|
|
77648
|
+
}
|
|
77649
|
+
}
|
|
77650
|
+
return void 0;
|
|
77651
|
+
}
|
|
77222
77652
|
async getLayoutBackgroundColor(slidePath) {
|
|
77223
77653
|
const slideRels = this.slideRelsMap.get(slidePath);
|
|
77224
77654
|
if (!slideRels) {
|
|
@@ -77644,6 +78074,29 @@ var PptxHandlerRuntime71 = class _PptxHandlerRuntime31 extends PptxHandlerRuntim
|
|
|
77644
78074
|
style.indent = indent / _PptxHandlerRuntime31.EMU_PER_PX;
|
|
77645
78075
|
}
|
|
77646
78076
|
}
|
|
78077
|
+
const defaultTabSizeRaw = levelProps["@_defTabSz"];
|
|
78078
|
+
if (defaultTabSizeRaw !== void 0) {
|
|
78079
|
+
const defaultTabSize = Number.parseInt(String(defaultTabSizeRaw), 10);
|
|
78080
|
+
if (Number.isFinite(defaultTabSize)) {
|
|
78081
|
+
style.defaultTabSize = defaultTabSize / _PptxHandlerRuntime31.EMU_PER_PX;
|
|
78082
|
+
}
|
|
78083
|
+
}
|
|
78084
|
+
const eaLineBreak = this.parseOptionalBooleanAttr(levelProps["@_eaLnBrk"]);
|
|
78085
|
+
if (eaLineBreak !== void 0) {
|
|
78086
|
+
style.eaLineBreak = eaLineBreak;
|
|
78087
|
+
}
|
|
78088
|
+
const latinLineBreak = this.parseOptionalBooleanAttr(levelProps["@_latinLnBrk"]);
|
|
78089
|
+
if (latinLineBreak !== void 0) {
|
|
78090
|
+
style.latinLineBreak = latinLineBreak;
|
|
78091
|
+
}
|
|
78092
|
+
const fontAlignment = String(levelProps["@_fontAlgn"] ?? "").trim();
|
|
78093
|
+
if (fontAlignment.length > 0) {
|
|
78094
|
+
style.fontAlignment = fontAlignment;
|
|
78095
|
+
}
|
|
78096
|
+
const hangingPunctuation = this.parseOptionalBooleanAttr(levelProps["@_hangingPunct"]);
|
|
78097
|
+
if (hangingPunctuation !== void 0) {
|
|
78098
|
+
style.hangingPunctuation = hangingPunctuation;
|
|
78099
|
+
}
|
|
77647
78100
|
const lnSpc = levelProps["a:lnSpc"];
|
|
77648
78101
|
if (lnSpc) {
|
|
77649
78102
|
const multiplier = this.parseLineSpacingMultiplier(lnSpc);
|
|
@@ -78219,6 +78672,7 @@ var PptxHandlerRuntime74 = class extends PptxHandlerRuntime73 {
|
|
|
78219
78672
|
await this.loadSlideRelationships(partPath, `${partDirectory}/_rels/${fileName}.rels`);
|
|
78220
78673
|
}
|
|
78221
78674
|
part.backgroundImage = await this.extractBackgroundImage(data, partPath, rootTag2);
|
|
78675
|
+
part.backgroundImageProperties = this.extractBackgroundImageProperties(data, rootTag2);
|
|
78222
78676
|
this.unwrapAlternateContent(spTree);
|
|
78223
78677
|
const previousClrMapOverride = this.currentSlideClrMapOverride;
|
|
78224
78678
|
if (rootTag2 === "p:sldLayout") {
|
|
@@ -79243,6 +79697,7 @@ var PptxHandlerRuntime79 = class extends PptxHandlerRuntime78 {
|
|
|
79243
79697
|
* scheme fill style list.
|
|
79244
79698
|
*
|
|
79245
79699
|
* Per the OOXML spec:
|
|
79700
|
+
* - idx 0 or 1000 → no fill
|
|
79246
79701
|
* - idx 1-3 → fillStyleLst[idx-1]
|
|
79247
79702
|
* - idx 1001-1003 → bgFillStyleLst[idx-1001]
|
|
79248
79703
|
*
|
|
@@ -79259,6 +79714,12 @@ var PptxHandlerRuntime79 = class extends PptxHandlerRuntime78 {
|
|
|
79259
79714
|
if (overrideColorXml) {
|
|
79260
79715
|
style.fillRefColorXml = overrideColorXml;
|
|
79261
79716
|
}
|
|
79717
|
+
if (idx === 0 || idx === 1e3) {
|
|
79718
|
+
style.fillMode = "none";
|
|
79719
|
+
style.fillColor = "transparent";
|
|
79720
|
+
style.fillOpacity = 0;
|
|
79721
|
+
return;
|
|
79722
|
+
}
|
|
79262
79723
|
if (!Number.isFinite(idx) || idx <= 0 || !this.themeFormatScheme) {
|
|
79263
79724
|
style.fillMode = "theme";
|
|
79264
79725
|
style.fillColor = this.parseColor(refNode);
|
|
@@ -80400,33 +80861,109 @@ function extractDrawingShapeFill(spPr, deps) {
|
|
|
80400
80861
|
}
|
|
80401
80862
|
return result;
|
|
80402
80863
|
}
|
|
80403
|
-
function
|
|
80864
|
+
function drawingTextEmuAttribute(node, name, emuPerPx) {
|
|
80865
|
+
if (!node || node[`@_${name}`] === void 0) {
|
|
80866
|
+
return void 0;
|
|
80867
|
+
}
|
|
80868
|
+
const value = Number.parseInt(String(node[`@_${name}`]), 10);
|
|
80869
|
+
return Number.isFinite(value) ? value / emuPerPx : void 0;
|
|
80870
|
+
}
|
|
80871
|
+
function drawingTextBoolean(value) {
|
|
80872
|
+
return value === true || value === 1 || value === "1" || value === "true";
|
|
80873
|
+
}
|
|
80874
|
+
function extractDrawingShapeTextStyle(txBody, deps, emuPerPx) {
|
|
80404
80875
|
let fontSize;
|
|
80405
80876
|
let fontColor;
|
|
80877
|
+
let fontFamily;
|
|
80878
|
+
let fontWeight;
|
|
80879
|
+
let fontStyle;
|
|
80880
|
+
let lineHeight;
|
|
80881
|
+
let lineHeightRatio;
|
|
80882
|
+
let lineSpacingAfter;
|
|
80883
|
+
let lineSpacingAfterRatio;
|
|
80406
80884
|
if (!txBody) {
|
|
80407
80885
|
return { fontSize, fontColor };
|
|
80408
80886
|
}
|
|
80887
|
+
const bodyPr = deps.getChild(txBody, "bodyPr");
|
|
80409
80888
|
const paragraphs = deps.getChildren(txBody, "p");
|
|
80410
80889
|
for (const p of paragraphs) {
|
|
80890
|
+
const pPr = deps.getChild(p, "pPr");
|
|
80891
|
+
const lineSpacing = deps.getChild(pPr, "lnSpc");
|
|
80892
|
+
const lineSpacingPercent = deps.getChild(lineSpacing, "spcPct");
|
|
80893
|
+
const lineSpacingPoints = deps.getChild(lineSpacing, "spcPts");
|
|
80894
|
+
const spacingAfter = deps.getChild(pPr, "spcAft");
|
|
80895
|
+
const spacingAfterPercent = deps.getChild(spacingAfter, "spcPct");
|
|
80896
|
+
const spacingAfterPoints = deps.getChild(spacingAfter, "spcPts");
|
|
80897
|
+
if (lineHeightRatio === void 0 && lineSpacingPercent?.["@_val"] !== void 0) {
|
|
80898
|
+
const raw = Number.parseInt(String(lineSpacingPercent["@_val"]), 10);
|
|
80899
|
+
if (Number.isFinite(raw) && raw > 0) {
|
|
80900
|
+
lineHeightRatio = raw / 1e5;
|
|
80901
|
+
}
|
|
80902
|
+
}
|
|
80903
|
+
if (lineHeight === void 0 && lineSpacingPoints?.["@_val"] !== void 0) {
|
|
80904
|
+
const raw = Number.parseInt(String(lineSpacingPoints["@_val"]), 10);
|
|
80905
|
+
if (Number.isFinite(raw) && raw > 0) {
|
|
80906
|
+
lineHeight = raw / 100 * (96 / 72);
|
|
80907
|
+
}
|
|
80908
|
+
}
|
|
80909
|
+
if (lineSpacingAfterRatio === void 0 && spacingAfterPercent?.["@_val"] !== void 0) {
|
|
80910
|
+
const raw = Number.parseInt(String(spacingAfterPercent["@_val"]), 10);
|
|
80911
|
+
if (Number.isFinite(raw) && raw >= 0) {
|
|
80912
|
+
lineSpacingAfterRatio = raw / 1e5;
|
|
80913
|
+
}
|
|
80914
|
+
}
|
|
80915
|
+
if (lineSpacingAfter === void 0 && spacingAfterPoints?.["@_val"] !== void 0) {
|
|
80916
|
+
const raw = Number.parseInt(String(spacingAfterPoints["@_val"]), 10);
|
|
80917
|
+
if (Number.isFinite(raw) && raw >= 0) {
|
|
80918
|
+
lineSpacingAfter = raw / 100 * (96 / 72);
|
|
80919
|
+
}
|
|
80920
|
+
}
|
|
80411
80921
|
const runs = deps.getChildren(p, "r");
|
|
80412
80922
|
for (const r of runs) {
|
|
80413
80923
|
const rPr = deps.getChild(r, "rPr");
|
|
80414
|
-
if (rPr
|
|
80924
|
+
if (rPr) {
|
|
80415
80925
|
const szRaw = parseInt(String(rPr["@_sz"] || ""), 10);
|
|
80416
|
-
if (Number.isFinite(szRaw) && szRaw > 0) {
|
|
80417
|
-
fontSize = szRaw / 100;
|
|
80926
|
+
if (fontSize === void 0 && Number.isFinite(szRaw) && szRaw > 0) {
|
|
80927
|
+
fontSize = szRaw / 100 * (96 / 72);
|
|
80928
|
+
}
|
|
80929
|
+
fontColor ??= deps.parseColor(deps.getChild(rPr, "solidFill")) ?? void 0;
|
|
80930
|
+
const eastAsian = deps.getChild(rPr, "ea");
|
|
80931
|
+
const latin = deps.getChild(rPr, "latin");
|
|
80932
|
+
const complexScript = deps.getChild(rPr, "cs");
|
|
80933
|
+
fontFamily ??= String(
|
|
80934
|
+
eastAsian?.["@_typeface"] || latin?.["@_typeface"] || complexScript?.["@_typeface"] || ""
|
|
80935
|
+
).trim() || void 0;
|
|
80936
|
+
if (fontWeight === void 0 && rPr["@_b"] !== void 0) {
|
|
80937
|
+
fontWeight = drawingTextBoolean(rPr["@_b"]) ? 700 : 400;
|
|
80938
|
+
}
|
|
80939
|
+
if (fontStyle === void 0 && rPr["@_i"] !== void 0) {
|
|
80940
|
+
fontStyle = drawingTextBoolean(rPr["@_i"]) ? "italic" : "normal";
|
|
80418
80941
|
}
|
|
80419
|
-
fontColor = deps.parseColor(deps.getChild(rPr, "solidFill")) ?? void 0;
|
|
80420
80942
|
}
|
|
80421
|
-
if (fontSize) {
|
|
80943
|
+
if (fontSize !== void 0 && fontFamily !== void 0 && fontColor !== void 0) {
|
|
80422
80944
|
break;
|
|
80423
80945
|
}
|
|
80424
80946
|
}
|
|
80425
|
-
if (fontSize) {
|
|
80947
|
+
if (fontSize !== void 0 && fontFamily !== void 0 && fontColor !== void 0) {
|
|
80426
80948
|
break;
|
|
80427
80949
|
}
|
|
80428
80950
|
}
|
|
80429
|
-
return {
|
|
80951
|
+
return {
|
|
80952
|
+
fontSize,
|
|
80953
|
+
fontColor,
|
|
80954
|
+
fontFamily,
|
|
80955
|
+
fontWeight,
|
|
80956
|
+
fontStyle,
|
|
80957
|
+
lineHeight,
|
|
80958
|
+
lineHeightRatio,
|
|
80959
|
+
lineSpacingAfter,
|
|
80960
|
+
lineSpacingAfterRatio,
|
|
80961
|
+
textInsetLeft: drawingTextEmuAttribute(bodyPr, "lIns", emuPerPx),
|
|
80962
|
+
textInsetTop: drawingTextEmuAttribute(bodyPr, "tIns", emuPerPx),
|
|
80963
|
+
textInsetRight: drawingTextEmuAttribute(bodyPr, "rIns", emuPerPx),
|
|
80964
|
+
textInsetBottom: drawingTextEmuAttribute(bodyPr, "bIns", emuPerPx),
|
|
80965
|
+
textVerticalAnchor: String(bodyPr?.["@_anchor"] || "").trim() || void 0
|
|
80966
|
+
};
|
|
80430
80967
|
}
|
|
80431
80968
|
function resolveSmartArtTextStyles(paragraphs, resolve2) {
|
|
80432
80969
|
for (const paragraph of paragraphs ?? []) {
|
|
@@ -80566,10 +81103,13 @@ var PptxHandlerRuntime84 = class _PptxHandlerRuntime35 extends PptxHandlerRuntim
|
|
|
80566
81103
|
const width = Math.round(parseInt(String(ext["@_cx"] || "0"), 10) / emuPerPx);
|
|
80567
81104
|
const height = Math.round(parseInt(String(ext["@_cy"] || "0"), 10) / emuPerPx);
|
|
80568
81105
|
const rotation = xfrm?.["@_rot"] ? parseInt(String(xfrm["@_rot"]), 10) / 6e4 : void 0;
|
|
81106
|
+
const flipHorizontal = ["1", "true"].includes(String(xfrm?.["@_flipH"] ?? "").toLowerCase());
|
|
81107
|
+
const flipVertical = ["1", "true"].includes(String(xfrm?.["@_flipV"] ?? "").toLowerCase());
|
|
80569
81108
|
const skewX = xfrm?.["@_skewX"] ? parseInt(String(xfrm["@_skewX"]), 10) / 6e4 : void 0;
|
|
80570
81109
|
const skewY = xfrm?.["@_skewY"] ? parseInt(String(xfrm["@_skewY"]), 10) / 6e4 : void 0;
|
|
80571
81110
|
const prstGeom = this.xmlLookupService.getChildByLocalName(spPr, "prstGeom");
|
|
80572
81111
|
const custGeom = this.xmlLookupService.getChildByLocalName(spPr, "custGeom");
|
|
81112
|
+
const shapeAdjustments = prstGeom ? this.parseGeometryAdjustments(prstGeom) : void 0;
|
|
80573
81113
|
let shapeType = prstGeom ? String(prstGeom["@_prst"] || "rect") : "rect";
|
|
80574
81114
|
let customGeometry = {};
|
|
80575
81115
|
if (custGeom) {
|
|
@@ -80607,10 +81147,15 @@ var PptxHandlerRuntime84 = class _PptxHandlerRuntime35 extends PptxHandlerRuntim
|
|
|
80607
81147
|
this.collectLocalTextValues(txBody, "t", textValues2);
|
|
80608
81148
|
}
|
|
80609
81149
|
const text2 = textValues2.join("").trim() || void 0;
|
|
80610
|
-
const
|
|
80611
|
-
|
|
80612
|
-
|
|
80613
|
-
);
|
|
81150
|
+
const textStyle = extractDrawingShapeTextStyle(txBody, this.drawingShapeStyleDeps(), emuPerPx);
|
|
81151
|
+
const { fontSize, fontColor } = textStyle;
|
|
81152
|
+
const txXfrm = this.xmlLookupService.getChildByLocalName(sp, "txXfrm");
|
|
81153
|
+
const txOff = this.xmlLookupService.getChildByLocalName(txXfrm, "off");
|
|
81154
|
+
const txExt = this.xmlLookupService.getChildByLocalName(txXfrm, "ext");
|
|
81155
|
+
const textFrameX = drawingTextEmuAttribute(txOff, "x", emuPerPx);
|
|
81156
|
+
const textFrameY = drawingTextEmuAttribute(txOff, "y", emuPerPx);
|
|
81157
|
+
const textFrameWidth = drawingTextEmuAttribute(txExt, "cx", emuPerPx);
|
|
81158
|
+
const textFrameHeight = drawingTextEmuAttribute(txExt, "cy", emuPerPx);
|
|
80614
81159
|
const paragraphs = txBody ? resolveSmartArtTextStyles(
|
|
80615
81160
|
parseSmartArtTextParagraphs({ "dgm:t": txBody }),
|
|
80616
81161
|
(rPr) => this.extractTextRunStyle(rPr, void 0, void 0, false)
|
|
@@ -80634,16 +81179,22 @@ var PptxHandlerRuntime84 = class _PptxHandlerRuntime35 extends PptxHandlerRuntim
|
|
|
80634
81179
|
width,
|
|
80635
81180
|
height,
|
|
80636
81181
|
rotation,
|
|
81182
|
+
flipHorizontal,
|
|
81183
|
+
flipVertical,
|
|
80637
81184
|
skewX,
|
|
80638
81185
|
skewY,
|
|
81186
|
+
shapeAdjustments,
|
|
80639
81187
|
...fill,
|
|
80640
81188
|
fillColor: fill.fillColor ?? void 0,
|
|
80641
81189
|
strokeColor: strokeColor ?? void 0,
|
|
80642
81190
|
strokeWidth,
|
|
80643
81191
|
text: structuredText,
|
|
80644
81192
|
textSegments,
|
|
80645
|
-
|
|
80646
|
-
|
|
81193
|
+
...textStyle,
|
|
81194
|
+
textFrameX,
|
|
81195
|
+
textFrameY,
|
|
81196
|
+
textFrameWidth,
|
|
81197
|
+
textFrameHeight,
|
|
80647
81198
|
...customGeometry
|
|
80648
81199
|
};
|
|
80649
81200
|
}
|
|
@@ -82940,7 +83491,9 @@ var PptxHandlerRuntime93 = class _PptxHandlerRuntime37 extends PptxHandlerRuntim
|
|
|
82940
83491
|
extractBackgroundGradient: (slideXml3) => this.extractBackgroundGradient(slideXml3),
|
|
82941
83492
|
getLayoutBackgroundGradient: (slidePath) => this.getLayoutBackgroundGradient(slidePath),
|
|
82942
83493
|
extractBackgroundImage: (slideXml3, slidePath) => this.extractBackgroundImage(slideXml3, slidePath),
|
|
83494
|
+
extractBackgroundImageProperties: (slideXml3, rootElement) => this.extractBackgroundImageProperties(slideXml3, rootElement),
|
|
82943
83495
|
getLayoutBackgroundImage: (slidePath) => this.getLayoutBackgroundImage(slidePath),
|
|
83496
|
+
getLayoutBackgroundImageProperties: (slidePath) => this.getLayoutBackgroundImageProperties(slidePath),
|
|
82944
83497
|
rememberSlideBackgroundOrigin: (slidePath, origin) => rememberSlideBackgroundOrigin(this, slidePath, origin),
|
|
82945
83498
|
extractSlideNotes: (slidePath) => this.extractSlideNotes(slidePath),
|
|
82946
83499
|
extractSlideComments: (slidePath) => this.extractSlideComments(slidePath),
|
|
@@ -99580,8 +100133,8 @@ function buildCustomGeometryClipPath(pathData, pathWidth, pathHeight, elemWidth,
|
|
|
99580
100133
|
return `path('${out.join(" ")}')`;
|
|
99581
100134
|
}
|
|
99582
100135
|
function getResolvedShapeClipPath(element, width, height) {
|
|
99583
|
-
const w =
|
|
99584
|
-
const h =
|
|
100136
|
+
const w = element.width;
|
|
100137
|
+
const h = element.height;
|
|
99585
100138
|
const custom = element;
|
|
99586
100139
|
if (custom.pathData && custom.pathWidth && custom.pathHeight) {
|
|
99587
100140
|
const customClip = buildCustomGeometryClipPath(
|
|
@@ -100499,6 +101052,33 @@ function resolveComputedFill(ss, element) {
|
|
|
100499
101052
|
}
|
|
100500
101053
|
return {};
|
|
100501
101054
|
}
|
|
101055
|
+
function isTextOrientationMatrix2(value) {
|
|
101056
|
+
return Array.isArray(value) && value.length === 4 && value.every((entry2) => typeof entry2 === "number" && Number.isFinite(entry2));
|
|
101057
|
+
}
|
|
101058
|
+
function multiplyTextOrientationMatrices2(left, right) {
|
|
101059
|
+
return [
|
|
101060
|
+
left[0] * right[0] + left[2] * right[1],
|
|
101061
|
+
left[1] * right[0] + left[3] * right[1],
|
|
101062
|
+
left[0] * right[2] + left[2] * right[3],
|
|
101063
|
+
left[1] * right[2] + left[3] * right[3]
|
|
101064
|
+
];
|
|
101065
|
+
}
|
|
101066
|
+
function getElementOrientationMatrix2(element) {
|
|
101067
|
+
const radians = (Number(element.rotation) || 0) * Math.PI / 180;
|
|
101068
|
+
const cosine = Math.cos(radians);
|
|
101069
|
+
const sine = Math.sin(radians);
|
|
101070
|
+
const rotation = [cosine, sine, -sine, cosine];
|
|
101071
|
+
const flip = [
|
|
101072
|
+
element.flipHorizontal ? -1 : 1,
|
|
101073
|
+
0,
|
|
101074
|
+
0,
|
|
101075
|
+
element.flipVertical ? -1 : 1
|
|
101076
|
+
];
|
|
101077
|
+
return multiplyTextOrientationMatrices2(rotation, flip);
|
|
101078
|
+
}
|
|
101079
|
+
function textOrientationAngleScore(matrix) {
|
|
101080
|
+
return Math.abs(Math.atan2(matrix[1], matrix[0]));
|
|
101081
|
+
}
|
|
100502
101082
|
function normalizeStrokeDashType(value) {
|
|
100503
101083
|
const normalized = String(value || "").trim().toLowerCase();
|
|
100504
101084
|
if (!normalized) {
|
|
@@ -100600,12 +101180,37 @@ function getElementTransformWithoutRotation(element) {
|
|
|
100600
101180
|
}
|
|
100601
101181
|
function getTextCompensationTransform(element) {
|
|
100602
101182
|
const transforms = [];
|
|
100603
|
-
|
|
101183
|
+
const normalizedRotation = ((Number(element.rotation) || 0) % 360 + 360) % 360;
|
|
101184
|
+
const swapFlipAxis = normalizedRotation > 90 && normalizedRotation < 270 && element.flipHorizontal !== element.flipVertical;
|
|
101185
|
+
const compensateHorizontal = swapFlipAxis ? element.flipVertical : element.flipHorizontal;
|
|
101186
|
+
const compensateVertical = swapFlipAxis ? element.flipHorizontal : element.flipVertical;
|
|
101187
|
+
if (compensateHorizontal) {
|
|
100604
101188
|
transforms.push("scaleX(-1)");
|
|
100605
101189
|
}
|
|
100606
|
-
if (
|
|
101190
|
+
if (compensateVertical) {
|
|
100607
101191
|
transforms.push("scaleY(-1)");
|
|
100608
101192
|
}
|
|
101193
|
+
const ancestorGroupTransform = "textStyle" in element ? element.textStyle?.ancestorGroupTransform : void 0;
|
|
101194
|
+
if (isTextOrientationMatrix2(ancestorGroupTransform)) {
|
|
101195
|
+
const localCompensation = [
|
|
101196
|
+
compensateHorizontal ? -1 : 1,
|
|
101197
|
+
0,
|
|
101198
|
+
0,
|
|
101199
|
+
compensateVertical ? -1 : 1
|
|
101200
|
+
];
|
|
101201
|
+
const visibleTransform = multiplyTextOrientationMatrices2(
|
|
101202
|
+
multiplyTextOrientationMatrices2(ancestorGroupTransform, getElementOrientationMatrix2(element)),
|
|
101203
|
+
localCompensation
|
|
101204
|
+
);
|
|
101205
|
+
const determinant = visibleTransform[0] * visibleTransform[3] - visibleTransform[1] * visibleTransform[2];
|
|
101206
|
+
if (determinant < -1e-6) {
|
|
101207
|
+
const horizontalCandidate = multiplyTextOrientationMatrices2(visibleTransform, [-1, 0, 0, 1]);
|
|
101208
|
+
const verticalCandidate = multiplyTextOrientationMatrices2(visibleTransform, [1, 0, 0, -1]);
|
|
101209
|
+
transforms.push(
|
|
101210
|
+
textOrientationAngleScore(horizontalCandidate) <= textOrientationAngleScore(verticalCandidate) ? "scaleX(-1)" : "scaleY(-1)"
|
|
101211
|
+
);
|
|
101212
|
+
}
|
|
101213
|
+
}
|
|
100609
101214
|
return transforms.length > 0 ? transforms.join(" ") : void 0;
|
|
100610
101215
|
}
|
|
100611
101216
|
function parseDrawingPercent2(value) {
|
|
@@ -100799,6 +101404,7 @@ function getOuterShadowCss(style, context) {
|
|
|
100799
101404
|
if (!style?.shadowColor || style.shadowColor === "transparent") {
|
|
100800
101405
|
return void 0;
|
|
100801
101406
|
}
|
|
101407
|
+
const usesOoxmlDefaults = style.outerShadowXml !== void 0;
|
|
100802
101408
|
let offsetX;
|
|
100803
101409
|
let offsetY;
|
|
100804
101410
|
if (typeof style.shadowAngle === "number" && typeof style.shadowDistance === "number") {
|
|
@@ -100807,11 +101413,12 @@ function getOuterShadowCss(style, context) {
|
|
|
100807
101413
|
offsetX = Math.cos(angleRad) * style.shadowDistance;
|
|
100808
101414
|
offsetY = Math.sin(angleRad) * style.shadowDistance;
|
|
100809
101415
|
} else {
|
|
100810
|
-
offsetX = typeof style.shadowOffsetX === "number" && Number.isFinite(style.shadowOffsetX) ? style.shadowOffsetX : 4;
|
|
100811
|
-
offsetY = typeof style.shadowOffsetY === "number" && Number.isFinite(style.shadowOffsetY) ? style.shadowOffsetY : 4;
|
|
101416
|
+
offsetX = typeof style.shadowOffsetX === "number" && Number.isFinite(style.shadowOffsetX) ? style.shadowOffsetX : usesOoxmlDefaults ? 0 : 4;
|
|
101417
|
+
offsetY = typeof style.shadowOffsetY === "number" && Number.isFinite(style.shadowOffsetY) ? style.shadowOffsetY : usesOoxmlDefaults ? 0 : 4;
|
|
100812
101418
|
}
|
|
100813
|
-
const
|
|
100814
|
-
const
|
|
101419
|
+
const rawBlur = typeof style.shadowBlur === "number" && Number.isFinite(style.shadowBlur) ? Math.max(0, style.shadowBlur) : usesOoxmlDefaults ? 0 : 6;
|
|
101420
|
+
const blur = usesOoxmlDefaults ? rawBlur / 2 : rawBlur;
|
|
101421
|
+
const opacity2 = typeof style.shadowOpacity === "number" && Number.isFinite(style.shadowOpacity) ? clampUnitInterval22(style.shadowOpacity) : usesOoxmlDefaults ? 1 : 0.35;
|
|
100815
101422
|
const spread = getShadowScaleSpread(style.shadowScaleX, style.shadowScaleY, blur);
|
|
100816
101423
|
const color2 = colorWithOpacity2(
|
|
100817
101424
|
normalizeHexColor2(style.shadowColor, DEFAULT_SHADOW_COLOR),
|
|
@@ -100820,6 +101427,48 @@ function getOuterShadowCss(style, context) {
|
|
|
100820
101427
|
const geometry = `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px`;
|
|
100821
101428
|
return spread === 0 ? `${geometry} ${color2}` : `${geometry} ${spread}px ${color2}`;
|
|
100822
101429
|
}
|
|
101430
|
+
function getCompositeOuterShadowFilterCss(style, context) {
|
|
101431
|
+
if (!style) {
|
|
101432
|
+
return void 0;
|
|
101433
|
+
}
|
|
101434
|
+
const usesOoxmlDefaults = style.outerShadowXml !== void 0;
|
|
101435
|
+
const shadows = style.shadows && style.shadows.length > 0 ? style.shadows : style.shadowColor && style.shadowColor !== "transparent" ? [
|
|
101436
|
+
{
|
|
101437
|
+
angle: style.shadowAngle,
|
|
101438
|
+
distance: style.shadowDistance,
|
|
101439
|
+
offsetX: style.shadowOffsetX,
|
|
101440
|
+
offsetY: style.shadowOffsetY,
|
|
101441
|
+
blur: style.shadowBlur,
|
|
101442
|
+
color: style.shadowColor,
|
|
101443
|
+
opacity: style.shadowOpacity
|
|
101444
|
+
}
|
|
101445
|
+
] : [];
|
|
101446
|
+
const parts = [];
|
|
101447
|
+
for (const shadow of shadows) {
|
|
101448
|
+
if (!shadow.color || shadow.color === "transparent") {
|
|
101449
|
+
continue;
|
|
101450
|
+
}
|
|
101451
|
+
let offsetX;
|
|
101452
|
+
let offsetY;
|
|
101453
|
+
if (typeof shadow.angle === "number" && typeof shadow.distance === "number") {
|
|
101454
|
+
const angle = style.shadowRotateWithShape === false && typeof context?.rotation === "number" ? shadow.angle - context.rotation : shadow.angle;
|
|
101455
|
+
const angleRad = angle * Math.PI / 180;
|
|
101456
|
+
offsetX = Math.cos(angleRad) * shadow.distance;
|
|
101457
|
+
offsetY = Math.sin(angleRad) * shadow.distance;
|
|
101458
|
+
} else {
|
|
101459
|
+
offsetX = typeof shadow.offsetX === "number" && Number.isFinite(shadow.offsetX) ? shadow.offsetX : usesOoxmlDefaults ? 0 : 4;
|
|
101460
|
+
offsetY = typeof shadow.offsetY === "number" && Number.isFinite(shadow.offsetY) ? shadow.offsetY : usesOoxmlDefaults ? 0 : 4;
|
|
101461
|
+
}
|
|
101462
|
+
const rawBlur = typeof shadow.blur === "number" && Number.isFinite(shadow.blur) ? Math.max(0, shadow.blur) : usesOoxmlDefaults ? 0 : 6;
|
|
101463
|
+
const blur = usesOoxmlDefaults ? rawBlur / 2 : rawBlur;
|
|
101464
|
+
const opacity2 = typeof shadow.opacity === "number" && Number.isFinite(shadow.opacity) ? clampUnitInterval22(shadow.opacity) : usesOoxmlDefaults ? 1 : 0.35;
|
|
101465
|
+
const color2 = colorWithOpacity2(normalizeHexColor2(shadow.color, DEFAULT_SHADOW_COLOR), opacity2);
|
|
101466
|
+
parts.push(
|
|
101467
|
+
`drop-shadow(${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${color2})`
|
|
101468
|
+
);
|
|
101469
|
+
}
|
|
101470
|
+
return parts.length > 0 ? parts.join(" ") : void 0;
|
|
101471
|
+
}
|
|
100823
101472
|
function getShadowScaleSpread(scaleX, scaleY, blur) {
|
|
100824
101473
|
const sx = typeof scaleX === "number" && Number.isFinite(scaleX) ? scaleX / 1e5 : 1;
|
|
100825
101474
|
const sy = typeof scaleY === "number" && Number.isFinite(scaleY) ? scaleY / 1e5 : 1;
|
|
@@ -100988,7 +101637,7 @@ function getEffectFilterCss(style, elementId) {
|
|
|
100988
101637
|
const parts = [];
|
|
100989
101638
|
if (style.glowColor && style.glowColor !== "transparent" && style.glowRadius) {
|
|
100990
101639
|
const glowOpacity = typeof style.glowOpacity === "number" ? style.glowOpacity : 0.75;
|
|
100991
|
-
const glowRad = Math.
|
|
101640
|
+
const glowRad = Math.max(0, style.glowRadius / 2);
|
|
100992
101641
|
const glowCol = colorWithOpacity2(
|
|
100993
101642
|
normalizeHexColor2(style.glowColor, DEFAULT_GLOW_COLOR),
|
|
100994
101643
|
glowOpacity
|
|
@@ -101069,7 +101718,9 @@ function getComputedEffectStyle(element, options = {}) {
|
|
|
101069
101718
|
return result;
|
|
101070
101719
|
}
|
|
101071
101720
|
const paintsLineEffectsItself = element.type === "connector" || getShapeType("shapeType" in element ? element.shapeType : void 0) === "connector";
|
|
101072
|
-
const
|
|
101721
|
+
const shadowsCompositePixels = element.type === "group" || element.type === "text" || element.type === "image" || element.type === "picture";
|
|
101722
|
+
const compositeShadow = shadowsCompositePixels ? getCompositeOuterShadowFilterCss(style, { rotation: element.rotation }) : void 0;
|
|
101723
|
+
const boxShadow = shadowsCompositePixels ? void 0 : getBoxShadowCss(
|
|
101073
101724
|
style,
|
|
101074
101725
|
{ includeGlow: options.includeGlowBoxShadow },
|
|
101075
101726
|
{ rotation: element.rotation }
|
|
@@ -101083,7 +101734,7 @@ function getComputedEffectStyle(element, options = {}) {
|
|
|
101083
101734
|
}
|
|
101084
101735
|
const filter = getEffectFilterCss(style, element.id);
|
|
101085
101736
|
const lineGlow = paintsLineEffectsItself ? void 0 : getLineGlowFilterCss(style);
|
|
101086
|
-
const filterParts = [filter, lineGlow].filter(
|
|
101737
|
+
const filterParts = [compositeShadow, filter, lineGlow].filter(
|
|
101087
101738
|
(part) => part !== void 0 && part !== ""
|
|
101088
101739
|
);
|
|
101089
101740
|
if (filterParts.length > 0) {
|
|
@@ -101229,6 +101880,55 @@ function outlinePathData(clipPath, width, height) {
|
|
|
101229
101880
|
}
|
|
101230
101881
|
return rect2;
|
|
101231
101882
|
}
|
|
101883
|
+
var WEDGE_CALLOUT_PRESET_NAMES = /* @__PURE__ */ new Set([
|
|
101884
|
+
"wedgerectcallout",
|
|
101885
|
+
"wedgeroundrectcallout",
|
|
101886
|
+
"wedgeellipsecallout"
|
|
101887
|
+
]);
|
|
101888
|
+
function isWedgeCalloutPresetShape(shapeType) {
|
|
101889
|
+
return typeof shapeType === "string" && WEDGE_CALLOUT_PRESET_NAMES.has(shapeType.toLowerCase());
|
|
101890
|
+
}
|
|
101891
|
+
function clipPathPolygonPoints(clipPath, width, height) {
|
|
101892
|
+
const asPolygon = /^polygon\((.*)\)$/su.exec(clipPath.trim());
|
|
101893
|
+
if (!asPolygon) {
|
|
101894
|
+
return [];
|
|
101895
|
+
}
|
|
101896
|
+
const toPx2 = (token2, extent) => token2.endsWith("%") ? Number.parseFloat(token2) / 100 * extent : Number.parseFloat(token2);
|
|
101897
|
+
return asPolygon[1].split(",").map((pair) => pair.trim().split(/\s+/u)).filter((parts) => parts.length === 2).map(([rawX, rawY]) => [toPx2(rawX, width), toPx2(rawY, height)]).filter(([x, y]) => Number.isFinite(x) && Number.isFinite(y));
|
|
101898
|
+
}
|
|
101899
|
+
function getPresetShapeVectorGeometry(shapeType, width, height, adjustments) {
|
|
101900
|
+
const normalizedWidth = Math.max(Number.isFinite(width) ? width : 0, 1);
|
|
101901
|
+
const normalizedHeight = Math.max(Number.isFinite(height) ? height : 0, 1);
|
|
101902
|
+
const clipPath = getResolvedShapeClipPathFor(
|
|
101903
|
+
shapeType,
|
|
101904
|
+
normalizedWidth,
|
|
101905
|
+
normalizedHeight,
|
|
101906
|
+
adjustments
|
|
101907
|
+
);
|
|
101908
|
+
const d = outlinePathData(clipPath, normalizedWidth, normalizedHeight);
|
|
101909
|
+
if (!d) {
|
|
101910
|
+
return void 0;
|
|
101911
|
+
}
|
|
101912
|
+
let minX = 0;
|
|
101913
|
+
let minY = 0;
|
|
101914
|
+
let maxX = normalizedWidth;
|
|
101915
|
+
let maxY = normalizedHeight;
|
|
101916
|
+
for (const [x, y] of clipPath ? clipPathPolygonPoints(clipPath, normalizedWidth, normalizedHeight) : []) {
|
|
101917
|
+
minX = Math.min(minX, x);
|
|
101918
|
+
minY = Math.min(minY, y);
|
|
101919
|
+
maxX = Math.max(maxX, x);
|
|
101920
|
+
maxY = Math.max(maxY, y);
|
|
101921
|
+
}
|
|
101922
|
+
return {
|
|
101923
|
+
d,
|
|
101924
|
+
minX,
|
|
101925
|
+
minY,
|
|
101926
|
+
maxX,
|
|
101927
|
+
maxY,
|
|
101928
|
+
viewWidth: Math.max(maxX - minX, 1),
|
|
101929
|
+
viewHeight: Math.max(maxY - minY, 1)
|
|
101930
|
+
};
|
|
101931
|
+
}
|
|
101232
101932
|
function outlineStrands(compoundLine, strokeWidth) {
|
|
101233
101933
|
const offsets = getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
101234
101934
|
if (offsets.length <= 1) {
|
|
@@ -113224,6 +113924,7 @@ var KEYFRAME_DEFINITIONS = {
|
|
|
113224
113924
|
function getEffectKeyframes(effect) {
|
|
113225
113925
|
return KEYFRAME_DEFINITIONS[effect] ?? "";
|
|
113226
113926
|
}
|
|
113927
|
+
var HEX_COLOR2 = /^#?[0-9a-f]{6}$/iu;
|
|
113227
113928
|
function hexToRgb4(hex4) {
|
|
113228
113929
|
const cleaned = hex4.replace(/^#/u, "");
|
|
113229
113930
|
const val2 = parseInt(cleaned, 16);
|
|
@@ -113338,48 +114039,145 @@ function resolveCssProperties(attrName) {
|
|
|
113338
114039
|
}
|
|
113339
114040
|
return ATTR_NAME_TO_CSS_PROPERTIES[attrName] ?? ["color"];
|
|
113340
114041
|
}
|
|
113341
|
-
function resolveColorAnimationTargets(
|
|
113342
|
-
const
|
|
114042
|
+
function resolveColorAnimationTargets(animationOrAttribute) {
|
|
114043
|
+
const attributes = typeof animationOrAttribute === "string" || animationOrAttribute === void 0 ? [animationOrAttribute] : colorAnimationComponents(animationOrAttribute).map(
|
|
114044
|
+
(component) => component.targetAttribute
|
|
114045
|
+
);
|
|
113343
114046
|
const targets = [];
|
|
113344
|
-
|
|
113345
|
-
|
|
113346
|
-
|
|
113347
|
-
|
|
113348
|
-
|
|
114047
|
+
for (const attribute2 of attributes) {
|
|
114048
|
+
const cssProperties = resolveCssProperties(attribute2);
|
|
114049
|
+
if (cssProperties.includes("fill") && !targets.includes("fill")) {
|
|
114050
|
+
targets.push("fill");
|
|
114051
|
+
}
|
|
114052
|
+
if (cssProperties.includes("stroke") && !targets.includes("stroke")) {
|
|
114053
|
+
targets.push("stroke");
|
|
114054
|
+
}
|
|
113349
114055
|
}
|
|
113350
114056
|
return targets;
|
|
113351
114057
|
}
|
|
113352
|
-
|
|
113353
|
-
|
|
114058
|
+
var ANIMATION_COLOR_BASE_PROPERTIES = {
|
|
114059
|
+
color: "--pptx-animation-color-base",
|
|
114060
|
+
fill: "--pptx-animation-fill-base",
|
|
114061
|
+
stroke: "--pptx-animation-stroke-base"
|
|
114062
|
+
};
|
|
114063
|
+
function colorAnimationComponents(colorAnim) {
|
|
114064
|
+
return colorAnim.components && colorAnim.components.length > 0 ? colorAnim.components : [colorAnim];
|
|
114065
|
+
}
|
|
114066
|
+
function clampPercent(value) {
|
|
114067
|
+
return Math.max(0, Math.min(100, value));
|
|
114068
|
+
}
|
|
114069
|
+
function applyHslDelta(fromColor, delta, progress) {
|
|
114070
|
+
const fromRgb = hexToRgb4(fromColor);
|
|
114071
|
+
const fromHsl = rgbToHsl2(fromRgb.r, fromRgb.g, fromRgb.b);
|
|
114072
|
+
const hue = ((fromHsl.h + delta.hue * progress) % 360 + 360) % 360;
|
|
114073
|
+
const saturation = clampPercent(fromHsl.s + delta.saturation * progress);
|
|
114074
|
+
const lightness = clampPercent(fromHsl.l + delta.lightness * progress);
|
|
114075
|
+
const rgb = hslToRgb2(hue, saturation, lightness);
|
|
114076
|
+
return rgbToHex3(rgb.r, rgb.g, rgb.b);
|
|
114077
|
+
}
|
|
114078
|
+
function cssNumber(value) {
|
|
114079
|
+
const rounded = Math.round(value * 1e6) / 1e6;
|
|
114080
|
+
return String(Object.is(rounded, -0) ? 0 : rounded);
|
|
114081
|
+
}
|
|
114082
|
+
function baseColorForProperty(property) {
|
|
114083
|
+
if (property === "fill" || property === "background-color" || property === "backgroundColor") {
|
|
114084
|
+
return `var(${ANIMATION_COLOR_BASE_PROPERTIES.fill}, currentColor)`;
|
|
114085
|
+
}
|
|
114086
|
+
if (property === "stroke" || property === "border-color" || property === "borderColor") {
|
|
114087
|
+
return `var(${ANIMATION_COLOR_BASE_PROPERTIES.stroke}, currentColor)`;
|
|
114088
|
+
}
|
|
114089
|
+
return `var(${ANIMATION_COLOR_BASE_PROPERTIES.color}, currentColor)`;
|
|
114090
|
+
}
|
|
114091
|
+
function relativeHslColor(property, delta, progress) {
|
|
114092
|
+
const hue = cssNumber(delta.hue * progress);
|
|
114093
|
+
const saturation = cssNumber(delta.saturation * progress);
|
|
114094
|
+
const lightness = cssNumber(delta.lightness * progress);
|
|
114095
|
+
return `hsl(from ${baseColorForProperty(property)} calc(h + ${hue}) calc(s + ${saturation}) calc(l + ${lightness}) / alpha)`;
|
|
114096
|
+
}
|
|
114097
|
+
function absoluteComponentColor(component, progress) {
|
|
114098
|
+
const { colorSpace, direction, fromColor, toColor, byColor } = component;
|
|
113354
114099
|
let effectiveFrom;
|
|
113355
114100
|
let effectiveTo;
|
|
113356
114101
|
if (fromColor && toColor) {
|
|
114102
|
+
if (!HEX_COLOR2.test(fromColor) || !HEX_COLOR2.test(toColor)) {
|
|
114103
|
+
return void 0;
|
|
114104
|
+
}
|
|
113357
114105
|
effectiveFrom = fromColor;
|
|
113358
114106
|
effectiveTo = toColor;
|
|
113359
114107
|
} else if (fromColor && byColor) {
|
|
114108
|
+
if (!HEX_COLOR2.test(fromColor) || !HEX_COLOR2.test(byColor)) {
|
|
114109
|
+
return void 0;
|
|
114110
|
+
}
|
|
113360
114111
|
const fromRgb = hexToRgb4(fromColor);
|
|
113361
114112
|
const byRgb = hexToRgb4(byColor);
|
|
113362
114113
|
effectiveFrom = fromColor;
|
|
113363
114114
|
effectiveTo = rgbToHex3(fromRgb.r + byRgb.r, fromRgb.g + byRgb.g, fromRgb.b + byRgb.b);
|
|
113364
114115
|
} else if (toColor) {
|
|
114116
|
+
if (!HEX_COLOR2.test(toColor)) {
|
|
114117
|
+
return void 0;
|
|
114118
|
+
}
|
|
113365
114119
|
effectiveFrom = "#000000";
|
|
113366
114120
|
effectiveTo = toColor;
|
|
113367
114121
|
} else {
|
|
113368
114122
|
return void 0;
|
|
113369
114123
|
}
|
|
113370
|
-
|
|
114124
|
+
return interpolateColor(effectiveFrom, effectiveTo, progress, colorSpace, direction);
|
|
114125
|
+
}
|
|
114126
|
+
function buildColorAnimationKeyframes(colorAnim, keyframeName2, steps = 10) {
|
|
114127
|
+
const components = colorAnimationComponents(colorAnim);
|
|
114128
|
+
if (!components.some(
|
|
114129
|
+
(component) => component.hslDelta !== void 0 || component.toColor !== void 0 || component.fromColor !== void 0 && component.byColor !== void 0
|
|
114130
|
+
)) {
|
|
114131
|
+
return void 0;
|
|
114132
|
+
}
|
|
113371
114133
|
const lines = [];
|
|
114134
|
+
let hasDeclarations = false;
|
|
113372
114135
|
const actualSteps = Math.max(2, steps);
|
|
113373
114136
|
for (let i = 0; i <= actualSteps; i++) {
|
|
113374
114137
|
const t = i / actualSteps;
|
|
113375
114138
|
const pct = Math.round(t * 100);
|
|
113376
|
-
const
|
|
113377
|
-
const
|
|
114139
|
+
const declarations = [];
|
|
114140
|
+
for (const component of components) {
|
|
114141
|
+
const cssProperties = resolveCssProperties(component.targetAttribute);
|
|
114142
|
+
if (component.hslDelta) {
|
|
114143
|
+
if (component.fromColor && !HEX_COLOR2.test(component.fromColor)) {
|
|
114144
|
+
continue;
|
|
114145
|
+
}
|
|
114146
|
+
for (const property of cssProperties) {
|
|
114147
|
+
const color22 = component.fromColor ? applyHslDelta(component.fromColor, component.hslDelta, t) : relativeHslColor(property, component.hslDelta, t);
|
|
114148
|
+
declarations.push(`${property}: ${color22};`);
|
|
114149
|
+
hasDeclarations = true;
|
|
114150
|
+
}
|
|
114151
|
+
continue;
|
|
114152
|
+
}
|
|
114153
|
+
const color2 = absoluteComponentColor(component, t);
|
|
114154
|
+
if (color2) {
|
|
114155
|
+
declarations.push(...cssProperties.map((property) => `${property}: ${color2};`));
|
|
114156
|
+
hasDeclarations = true;
|
|
114157
|
+
}
|
|
114158
|
+
}
|
|
114159
|
+
const decls = declarations.join(" ");
|
|
113378
114160
|
lines.push(` ${pct}% { ${decls} }`);
|
|
113379
114161
|
}
|
|
113380
|
-
return `@keyframes ${
|
|
114162
|
+
return hasDeclarations ? `@keyframes ${keyframeName2} {
|
|
113381
114163
|
${lines.join("\n")}
|
|
113382
|
-
}
|
|
114164
|
+
}` : void 0;
|
|
114165
|
+
}
|
|
114166
|
+
function getAnimationColorBaseStyle(element, options = {}) {
|
|
114167
|
+
if (!hasShapeProperties(element) || !options.animatesFill && !options.animatesStroke) {
|
|
114168
|
+
return {};
|
|
114169
|
+
}
|
|
114170
|
+
const style = {};
|
|
114171
|
+
if (options.animatesFill) {
|
|
114172
|
+
const fill = getComputedFillStyle(element, options.parentGroupFill);
|
|
114173
|
+
style[ANIMATION_COLOR_BASE_PROPERTIES.fill] = fill?.backgroundColor ?? element.shapeStyle?.fillColor ?? "currentColor";
|
|
114174
|
+
}
|
|
114175
|
+
if (options.animatesStroke) {
|
|
114176
|
+
const stroke = getComputedStrokeStyle(element);
|
|
114177
|
+
style[ANIMATION_COLOR_BASE_PROPERTIES.stroke] = stroke.borderColor ?? element.shapeStyle?.strokeColor ?? "currentColor";
|
|
114178
|
+
}
|
|
114179
|
+
style[ANIMATION_COLOR_BASE_PROPERTIES.color] = (hasTextProperties(element) ? element.textStyle?.color : void 0) ?? "currentColor";
|
|
114180
|
+
return style;
|
|
113383
114181
|
}
|
|
113384
114182
|
function resolveChartBuildMode(token2) {
|
|
113385
114183
|
switch (token2) {
|
|
@@ -113546,6 +114344,141 @@ function revealedSmartArtNodeCount(nodes, build) {
|
|
|
113546
114344
|
}
|
|
113547
114345
|
return revealedStageCount(build.progress, nodes.length);
|
|
113548
114346
|
}
|
|
114347
|
+
var ATTRIBUTE_KINDS = {
|
|
114348
|
+
opacity: "opacity",
|
|
114349
|
+
ppt_h: "scaleY",
|
|
114350
|
+
ppt_w: "scaleX",
|
|
114351
|
+
ppt_x: "translateX",
|
|
114352
|
+
ppt_y: "translateY",
|
|
114353
|
+
"style.opacity": "opacity",
|
|
114354
|
+
"style.rotation": "rotation"
|
|
114355
|
+
};
|
|
114356
|
+
var SELF_REFERENCE_RE = /^#?ppt_([whxy])(?:([+-])(\d*\.?\d+))?$/iu;
|
|
114357
|
+
function clamp0122(value) {
|
|
114358
|
+
return Math.max(0, Math.min(1, value));
|
|
114359
|
+
}
|
|
114360
|
+
function numericValue(keyframe) {
|
|
114361
|
+
const parsed = Number(keyframe.value);
|
|
114362
|
+
return Number.isFinite(parsed) ? parsed : void 0;
|
|
114363
|
+
}
|
|
114364
|
+
function parseSelfReference(keyframe, expectedAxis) {
|
|
114365
|
+
const token2 = String(keyframe.value).replaceAll(" ", "").toLowerCase();
|
|
114366
|
+
const match = SELF_REFERENCE_RE.exec(token2);
|
|
114367
|
+
if (!match || match[1] !== expectedAxis) {
|
|
114368
|
+
return void 0;
|
|
114369
|
+
}
|
|
114370
|
+
const magnitude = match[3] === void 0 ? 0 : Number(match[3]);
|
|
114371
|
+
if (!Number.isFinite(magnitude)) {
|
|
114372
|
+
return void 0;
|
|
114373
|
+
}
|
|
114374
|
+
return { offset: match[2] === "-" ? -magnitude : magnitude };
|
|
114375
|
+
}
|
|
114376
|
+
function parseValue(kind, keyframe) {
|
|
114377
|
+
if (kind === "rotation") {
|
|
114378
|
+
return numericValue(keyframe);
|
|
114379
|
+
}
|
|
114380
|
+
if (kind === "opacity") {
|
|
114381
|
+
const value = numericValue(keyframe);
|
|
114382
|
+
return value === void 0 ? void 0 : clamp0122(value);
|
|
114383
|
+
}
|
|
114384
|
+
if (kind === "scaleX" || kind === "scaleY") {
|
|
114385
|
+
const numeric = numericValue(keyframe);
|
|
114386
|
+
if (numeric === 0) {
|
|
114387
|
+
return 0;
|
|
114388
|
+
}
|
|
114389
|
+
const axis2 = kind === "scaleX" ? "w" : "h";
|
|
114390
|
+
const reference2 = parseSelfReference(keyframe, axis2);
|
|
114391
|
+
return reference2?.offset === 0 ? 1 : void 0;
|
|
114392
|
+
}
|
|
114393
|
+
const axis = kind === "translateX" ? "x" : "y";
|
|
114394
|
+
const reference = parseSelfReference(keyframe, axis);
|
|
114395
|
+
return reference === void 0 ? void 0 : reference.offset * 100;
|
|
114396
|
+
}
|
|
114397
|
+
function parseComponent(component, effectDurationMs) {
|
|
114398
|
+
const kind = ATTRIBUTE_KINDS[component.attrName];
|
|
114399
|
+
if (!kind) {
|
|
114400
|
+
return void 0;
|
|
114401
|
+
}
|
|
114402
|
+
const stops = [];
|
|
114403
|
+
for (const keyframe of component.keyframes) {
|
|
114404
|
+
if (typeof keyframe.tm !== "number" || !Number.isFinite(keyframe.tm)) {
|
|
114405
|
+
return void 0;
|
|
114406
|
+
}
|
|
114407
|
+
const value = parseValue(kind, keyframe);
|
|
114408
|
+
if (value === void 0) {
|
|
114409
|
+
return void 0;
|
|
114410
|
+
}
|
|
114411
|
+
stops.push({ progress: clamp0122(keyframe.tm / 1e5), value });
|
|
114412
|
+
}
|
|
114413
|
+
if (stops.length < 2) {
|
|
114414
|
+
return void 0;
|
|
114415
|
+
}
|
|
114416
|
+
stops.sort((left, right) => left.progress - right.progress);
|
|
114417
|
+
return {
|
|
114418
|
+
delayMs: component.delayMs ?? 0,
|
|
114419
|
+
durationMs: component.durationMs ?? effectDurationMs,
|
|
114420
|
+
kind,
|
|
114421
|
+
stops
|
|
114422
|
+
};
|
|
114423
|
+
}
|
|
114424
|
+
function valueAt(component, progress, effectDurationMs) {
|
|
114425
|
+
const elapsedMs = progress * effectDurationMs - component.delayMs;
|
|
114426
|
+
const localProgress = clamp0122(elapsedMs / Math.max(1, component.durationMs));
|
|
114427
|
+
const first = component.stops[0];
|
|
114428
|
+
const last = component.stops[component.stops.length - 1];
|
|
114429
|
+
if (localProgress <= first.progress) {
|
|
114430
|
+
return first.value;
|
|
114431
|
+
}
|
|
114432
|
+
if (localProgress >= last.progress) {
|
|
114433
|
+
return last.value;
|
|
114434
|
+
}
|
|
114435
|
+
for (let index = 1; index < component.stops.length; index += 1) {
|
|
114436
|
+
const right = component.stops[index];
|
|
114437
|
+
const left = component.stops[index - 1];
|
|
114438
|
+
if (localProgress <= right.progress) {
|
|
114439
|
+
const span = Math.max(Number.EPSILON, right.progress - left.progress);
|
|
114440
|
+
const ratio = (localProgress - left.progress) / span;
|
|
114441
|
+
return left.value + (right.value - left.value) * ratio;
|
|
114442
|
+
}
|
|
114443
|
+
}
|
|
114444
|
+
return last.value;
|
|
114445
|
+
}
|
|
114446
|
+
function createAttributeTransformModel(anim) {
|
|
114447
|
+
const effectDurationMs = Math.max(1, anim.durationMs ?? 1e3);
|
|
114448
|
+
const supportedComponents = (anim.attributeAnimations ?? []).filter(
|
|
114449
|
+
(component) => ATTRIBUTE_KINDS[component.attrName] !== void 0
|
|
114450
|
+
);
|
|
114451
|
+
const components = supportedComponents.map(
|
|
114452
|
+
(component) => parseComponent(component, effectDurationMs)
|
|
114453
|
+
);
|
|
114454
|
+
const parsedComponents = components.filter(
|
|
114455
|
+
(component) => component !== void 0
|
|
114456
|
+
);
|
|
114457
|
+
if (parsedComponents.length !== supportedComponents.length) {
|
|
114458
|
+
return void 0;
|
|
114459
|
+
}
|
|
114460
|
+
if (parsedComponents.length === 0) {
|
|
114461
|
+
return void 0;
|
|
114462
|
+
}
|
|
114463
|
+
const progressSet = /* @__PURE__ */ new Set([0, 1]);
|
|
114464
|
+
for (const component of parsedComponents) {
|
|
114465
|
+
for (const stop of component.stops) {
|
|
114466
|
+
progressSet.add(
|
|
114467
|
+
clamp0122((component.delayMs + stop.progress * component.durationMs) / effectDurationMs)
|
|
114468
|
+
);
|
|
114469
|
+
}
|
|
114470
|
+
}
|
|
114471
|
+
return {
|
|
114472
|
+
progresses: [...progressSet].sort((left, right) => left - right),
|
|
114473
|
+
stateAt(progress) {
|
|
114474
|
+
const state = {};
|
|
114475
|
+
for (const component of parsedComponents) {
|
|
114476
|
+
state[component.kind] = valueAt(component, progress, effectDurationMs);
|
|
114477
|
+
}
|
|
114478
|
+
return state;
|
|
114479
|
+
}
|
|
114480
|
+
};
|
|
114481
|
+
}
|
|
113549
114482
|
var BEZIER_SAMPLES = 8;
|
|
113550
114483
|
function cubicAt(p0, c1, c2, p3, t) {
|
|
113551
114484
|
const mt = 1 - t;
|
|
@@ -113631,119 +114564,150 @@ function parseMotionPathPoints(motionPath) {
|
|
|
113631
114564
|
}
|
|
113632
114565
|
return points3;
|
|
113633
114566
|
}
|
|
113634
|
-
function
|
|
113635
|
-
|
|
113636
|
-
|
|
114567
|
+
function slideOffset(percent3, axis) {
|
|
114568
|
+
const fallback = axis === "w" ? "1280px" : "720px";
|
|
114569
|
+
return `calc(var(--pptx-slide-${axis}, ${fallback}) * ${(percent3 / 100).toFixed(4)})`;
|
|
114570
|
+
}
|
|
114571
|
+
function hasRotation(anim) {
|
|
114572
|
+
return anim.rotationBy !== void 0 || anim.rotationFrom !== void 0 || anim.rotationTo !== void 0;
|
|
114573
|
+
}
|
|
114574
|
+
function hasScale(anim) {
|
|
114575
|
+
return anim.scaleByX !== void 0 || anim.scaleByY !== void 0 || anim.scaleFromX !== void 0 || anim.scaleFromY !== void 0 || anim.scaleToX !== void 0 || anim.scaleToY !== void 0;
|
|
114576
|
+
}
|
|
114577
|
+
function hasAuthoredTransform(anim) {
|
|
114578
|
+
return Boolean(anim.motionPath) || hasRotation(anim) || hasScale(anim) || createAttributeTransformModel(anim) !== void 0;
|
|
114579
|
+
}
|
|
114580
|
+
function rotationAt(anim, progress) {
|
|
114581
|
+
const from = anim.rotationFrom ?? 0;
|
|
114582
|
+
const to = anim.rotationTo ?? (anim.rotationBy !== void 0 ? from + anim.rotationBy : from);
|
|
114583
|
+
return from + (to - from) * progress;
|
|
114584
|
+
}
|
|
114585
|
+
function scaleAt(anim, axis, progress) {
|
|
114586
|
+
const from = axis === "x" ? anim.scaleFromX ?? 1 : anim.scaleFromY ?? 1;
|
|
114587
|
+
const authoredTo = axis === "x" ? anim.scaleToX : anim.scaleToY;
|
|
114588
|
+
const by = axis === "x" ? anim.scaleByX : anim.scaleByY;
|
|
114589
|
+
const to = authoredTo ?? (by !== void 0 ? from * by : from);
|
|
114590
|
+
return from + (to - from) * progress;
|
|
114591
|
+
}
|
|
114592
|
+
function opacityAt(anim, progress) {
|
|
114593
|
+
if (anim.presetClass === "entr") {
|
|
114594
|
+
return progress;
|
|
113637
114595
|
}
|
|
113638
|
-
if (anim.
|
|
113639
|
-
return
|
|
114596
|
+
if (anim.presetClass === "exit") {
|
|
114597
|
+
return 1 - progress;
|
|
113640
114598
|
}
|
|
113641
|
-
|
|
113642
|
-
|
|
113643
|
-
|
|
114599
|
+
return void 0;
|
|
114600
|
+
}
|
|
114601
|
+
function formatNumber(value, fractionDigits = 4) {
|
|
114602
|
+
return String(Number(value.toFixed(fractionDigits)));
|
|
114603
|
+
}
|
|
114604
|
+
function tangentAngle(points3, index) {
|
|
114605
|
+
const point = points3[index];
|
|
114606
|
+
const next = index < points3.length - 1 ? points3[index + 1] : point;
|
|
114607
|
+
const previous = index > 0 ? points3[index - 1] : point;
|
|
114608
|
+
const dx = index < points3.length - 1 ? next.x - point.x : point.x - previous.x;
|
|
114609
|
+
const dy = index < points3.length - 1 ? next.y - point.y : point.y - previous.y;
|
|
114610
|
+
return Math.atan2(dy, dx) * (180 / Math.PI);
|
|
114611
|
+
}
|
|
114612
|
+
function rotateMotionPathPoints(points3, anim) {
|
|
114613
|
+
const angle = anim.motionPathRotationAngle ?? 0;
|
|
114614
|
+
if (!Number.isFinite(angle) || angle === 0) {
|
|
114615
|
+
return [...points3];
|
|
114616
|
+
}
|
|
114617
|
+
const radians = angle * Math.PI / 180;
|
|
114618
|
+
const cosine = Math.cos(radians);
|
|
114619
|
+
const sine = Math.sin(radians);
|
|
114620
|
+
const centerX = anim.motionPathRotationCenterX ?? 0;
|
|
114621
|
+
const centerY = anim.motionPathRotationCenterY ?? 0;
|
|
114622
|
+
return points3.map((point) => {
|
|
114623
|
+
const x = point.x - centerX;
|
|
114624
|
+
const y = point.y - centerY;
|
|
114625
|
+
return {
|
|
114626
|
+
x: centerX + x * cosine - y * sine,
|
|
114627
|
+
y: centerY + x * sine + y * cosine
|
|
114628
|
+
};
|
|
114629
|
+
});
|
|
114630
|
+
}
|
|
114631
|
+
function pointAt(points3, progress) {
|
|
114632
|
+
if (points3.length < 2) {
|
|
114633
|
+
return { x: 0, y: 0 };
|
|
114634
|
+
}
|
|
114635
|
+
const position2 = progress * (points3.length - 1);
|
|
114636
|
+
const leftIndex = Math.floor(position2);
|
|
114637
|
+
const rightIndex = Math.min(points3.length - 1, leftIndex + 1);
|
|
114638
|
+
const ratio = position2 - leftIndex;
|
|
114639
|
+
const left = points3[leftIndex];
|
|
114640
|
+
const right = points3[rightIndex];
|
|
113644
114641
|
return {
|
|
113645
|
-
|
|
113646
|
-
|
|
113647
|
-
from { transform: rotate(${from}deg); }
|
|
113648
|
-
to { transform: rotate(${to}deg); }
|
|
113649
|
-
}`
|
|
114642
|
+
x: left.x + (right.x - left.x) * ratio,
|
|
114643
|
+
y: left.y + (right.y - left.y) * ratio
|
|
113650
114644
|
};
|
|
113651
114645
|
}
|
|
113652
|
-
function
|
|
113653
|
-
|
|
113654
|
-
|
|
114646
|
+
function keyframeName(anim, prefixes, uid, hasAttributeAnimation) {
|
|
114647
|
+
const motion = Boolean(anim.motionPath);
|
|
114648
|
+
const rotation = hasRotation(anim);
|
|
114649
|
+
const scale = hasScale(anim);
|
|
114650
|
+
if (hasAttributeAnimation || Number(motion) + Number(rotation) + Number(scale) > 1) {
|
|
114651
|
+
return `${prefixes.transform}-${uid}`;
|
|
113655
114652
|
}
|
|
113656
|
-
if (
|
|
113657
|
-
return
|
|
114653
|
+
if (motion) {
|
|
114654
|
+
return `${prefixes.motion}-${uid}`;
|
|
113658
114655
|
}
|
|
113659
|
-
|
|
113660
|
-
|
|
113661
|
-
|
|
113662
|
-
|
|
113663
|
-
const name = `${namePrefix}-${uid}`;
|
|
113664
|
-
return {
|
|
113665
|
-
keyframeName: name,
|
|
113666
|
-
css: `@keyframes ${name} {
|
|
113667
|
-
from { transform: scale(${fromX}, ${fromY}); }
|
|
113668
|
-
to { transform: scale(${toX}, ${toY}); }
|
|
113669
|
-
}`
|
|
113670
|
-
};
|
|
113671
|
-
}
|
|
113672
|
-
function clamp0122(value) {
|
|
113673
|
-
return Math.max(0, Math.min(1, value));
|
|
114656
|
+
if (rotation) {
|
|
114657
|
+
return `${anim.rotationBy === void 0 ? prefixes.rotationAbsolute : prefixes.rotationRelative}-${uid}`;
|
|
114658
|
+
}
|
|
114659
|
+
return `${anim.scaleByX === void 0 && anim.scaleByY === void 0 ? prefixes.scaleAbsolute : prefixes.scaleRelative}-${uid}`;
|
|
113674
114660
|
}
|
|
113675
|
-
|
|
113676
|
-
|
|
113677
|
-
|
|
114661
|
+
function buildTransformKeyframes(anim, uid, prefixes) {
|
|
114662
|
+
const rotation = hasRotation(anim);
|
|
114663
|
+
const scale = hasScale(anim);
|
|
114664
|
+
const attributeModel = createAttributeTransformModel(anim);
|
|
114665
|
+
const parsedPoints = anim.motionPath ? rotateMotionPathPoints(parseMotionPathPoints(anim.motionPath), anim) : [];
|
|
114666
|
+
const points3 = parsedPoints.length >= 2 ? parsedPoints : [];
|
|
114667
|
+
if (points3.length === 0 && !rotation && !scale && !attributeModel) {
|
|
113678
114668
|
return void 0;
|
|
113679
114669
|
}
|
|
113680
|
-
|
|
113681
|
-
|
|
114670
|
+
const progressSet = new Set(attributeModel?.progresses ?? [0, 1]);
|
|
114671
|
+
for (let index = 0; index < points3.length; index += 1) {
|
|
114672
|
+
progressSet.add(index / (points3.length - 1));
|
|
113682
114673
|
}
|
|
113683
|
-
const
|
|
113684
|
-
|
|
113685
|
-
|
|
113686
|
-
|
|
113687
|
-
|
|
113688
|
-
|
|
113689
|
-
if (
|
|
113690
|
-
|
|
114674
|
+
const progresses = [...progressSet].sort((left, right) => left - right);
|
|
114675
|
+
const lines = progresses.map((progress) => {
|
|
114676
|
+
const point = pointAt(points3, progress);
|
|
114677
|
+
const attributeState = attributeModel?.stateAt(progress);
|
|
114678
|
+
const declarations = [];
|
|
114679
|
+
const opacity2 = attributeState?.opacity ?? opacityAt(anim, progress);
|
|
114680
|
+
if (opacity2 !== void 0) {
|
|
114681
|
+
declarations.push(`opacity: ${formatNumber(opacity2)};`);
|
|
113691
114682
|
}
|
|
113692
|
-
|
|
113693
|
-
|
|
114683
|
+
const transforms = [];
|
|
114684
|
+
if (points3.length > 0) {
|
|
114685
|
+
transforms.push(`translate(${slideOffset(point.x, "w")}, ${slideOffset(point.y, "h")})`);
|
|
113694
114686
|
}
|
|
113695
|
-
|
|
113696
|
-
|
|
113697
|
-
|
|
114687
|
+
if (attributeState?.translateX !== void 0 || attributeState?.translateY !== void 0) {
|
|
114688
|
+
transforms.push(
|
|
114689
|
+
`translate(${slideOffset(attributeState.translateX ?? 0, "w")}, ${slideOffset(attributeState.translateY ?? 0, "h")})`
|
|
114690
|
+
);
|
|
113698
114691
|
}
|
|
113699
|
-
|
|
113700
|
-
|
|
113701
|
-
|
|
113702
|
-
|
|
113703
|
-
|
|
113704
|
-
|
|
113705
|
-
|
|
113706
|
-
}` };
|
|
113707
|
-
}
|
|
113708
|
-
var KNOWN_COLOR_ATTR_NAMES = /* @__PURE__ */ new Set([
|
|
113709
|
-
"fillcolor",
|
|
113710
|
-
"fill.color",
|
|
113711
|
-
"style.color",
|
|
113712
|
-
"stroke.color"
|
|
113713
|
-
]);
|
|
113714
|
-
var HEX_COLOR_RE = /^#[0-9a-f]{6}$/iu;
|
|
113715
|
-
function buildColorTavKeyframe(anim, namePrefix, uid) {
|
|
113716
|
-
if (anim.colorAnimation) {
|
|
113717
|
-
return void 0;
|
|
113718
|
-
}
|
|
113719
|
-
if (!anim.attrName || !KNOWN_COLOR_ATTR_NAMES.has(anim.attrName)) {
|
|
113720
|
-
return void 0;
|
|
113721
|
-
}
|
|
113722
|
-
const frames = anim.keyframes;
|
|
113723
|
-
if (!frames || frames.length < 2) {
|
|
113724
|
-
return void 0;
|
|
113725
|
-
}
|
|
113726
|
-
const stops = [];
|
|
113727
|
-
for (const kf of frames) {
|
|
113728
|
-
if (typeof kf.tm !== "number" || !Number.isFinite(kf.tm)) {
|
|
113729
|
-
return void 0;
|
|
114692
|
+
if (rotation || points3.length > 0 && anim.motionPathRotateAuto || attributeState?.rotation !== void 0) {
|
|
114693
|
+
const pointIndex = Math.round(progress * Math.max(0, points3.length - 1));
|
|
114694
|
+
const pathRotation = anim.motionPathRotateAuto ? tangentAngle(points3, pointIndex) : 0;
|
|
114695
|
+
const angle = pathRotation + (attributeState?.rotation ?? rotationAt(anim, progress));
|
|
114696
|
+
transforms.push(
|
|
114697
|
+
`rotate(${anim.motionPathRotateAuto ? angle.toFixed(2) : formatNumber(angle, 2)}deg)`
|
|
114698
|
+
);
|
|
113730
114699
|
}
|
|
113731
|
-
if (
|
|
113732
|
-
|
|
114700
|
+
if (scale || attributeState?.scaleX !== void 0 || attributeState?.scaleY !== void 0) {
|
|
114701
|
+
transforms.push(
|
|
114702
|
+
`scale(${formatNumber(attributeState?.scaleX ?? scaleAt(anim, "x", progress))}, ${formatNumber(attributeState?.scaleY ?? scaleAt(anim, "y", progress))})`
|
|
114703
|
+
);
|
|
113733
114704
|
}
|
|
113734
|
-
|
|
113735
|
-
|
|
113736
|
-
return void 0;
|
|
114705
|
+
if (transforms.length > 0) {
|
|
114706
|
+
declarations.push(`transform: ${transforms.join(" ")};`);
|
|
113737
114707
|
}
|
|
113738
|
-
|
|
113739
|
-
}
|
|
113740
|
-
stops.sort((a, b) => a.pct - b.pct);
|
|
113741
|
-
const cssProperties = resolveCssProperties(anim.attrName);
|
|
113742
|
-
const name = `${namePrefix}-${uid}`;
|
|
113743
|
-
const lines = stops.map((s) => {
|
|
113744
|
-
const decls = cssProperties.map((prop) => `${prop}: ${s.color};`).join(" ");
|
|
113745
|
-
return ` ${Number(s.pct.toFixed(2))}% { ${decls} }`;
|
|
114708
|
+
return ` ${formatNumber(progress * 100, 2)}% { ${declarations.join(" ")} }`;
|
|
113746
114709
|
});
|
|
114710
|
+
const name = keyframeName(anim, prefixes, uid, attributeModel !== void 0);
|
|
113747
114711
|
return { keyframeName: name, css: `@keyframes ${name} {
|
|
113748
114712
|
${lines.join("\n")}
|
|
113749
114713
|
}` };
|
|
@@ -113788,71 +114752,18 @@ function applyFlyDirection(effect, subtype) {
|
|
|
113788
114752
|
const suffix = `${edge.charAt(0).toUpperCase()}${edge.slice(1)}`;
|
|
113789
114753
|
return `${prefix}${suffix}`;
|
|
113790
114754
|
}
|
|
113791
|
-
|
|
113792
|
-
|
|
113793
|
-
|
|
113794
|
-
|
|
114755
|
+
var TIMELINE_TRANSFORM_PREFIXES = {
|
|
114756
|
+
motion: "pptx-tl-motion",
|
|
114757
|
+
rotationAbsolute: "pptx-tl-rotateAbs",
|
|
114758
|
+
rotationRelative: "pptx-tl-rotate",
|
|
114759
|
+
scaleAbsolute: "pptx-tl-scaleAbs",
|
|
114760
|
+
scaleRelative: "pptx-tl-scale",
|
|
114761
|
+
transform: "pptx-tl-transform"
|
|
114762
|
+
};
|
|
113795
114763
|
function buildDynamicKeyframe(anim, uid) {
|
|
113796
|
-
|
|
113797
|
-
|
|
113798
|
-
|
|
113799
|
-
if (points3.length < 2) {
|
|
113800
|
-
return void 0;
|
|
113801
|
-
}
|
|
113802
|
-
const lines = [];
|
|
113803
|
-
for (let i = 0; i < points3.length; i++) {
|
|
113804
|
-
const pct = Math.round(i / (points3.length - 1) * 100);
|
|
113805
|
-
const tx = slideOffset(points3[i].x, "w");
|
|
113806
|
-
const ty = slideOffset(points3[i].y, "h");
|
|
113807
|
-
if (anim.motionPathRotateAuto) {
|
|
113808
|
-
const next = i < points3.length - 1 ? points3[i + 1] : points3[i];
|
|
113809
|
-
const prev = i > 0 ? points3[i - 1] : points3[i];
|
|
113810
|
-
const dx = i < points3.length - 1 ? next.x - points3[i].x : points3[i].x - prev.x;
|
|
113811
|
-
const dy = i < points3.length - 1 ? next.y - points3[i].y : points3[i].y - prev.y;
|
|
113812
|
-
const angleDeg = Math.atan2(dy, dx) * (180 / Math.PI);
|
|
113813
|
-
lines.push(
|
|
113814
|
-
` ${pct}% { transform: translate(${tx}, ${ty}) rotate(${angleDeg.toFixed(2)}deg); }`
|
|
113815
|
-
);
|
|
113816
|
-
} else {
|
|
113817
|
-
lines.push(` ${pct}% { transform: translate(${tx}, ${ty}); }`);
|
|
113818
|
-
}
|
|
113819
|
-
}
|
|
113820
|
-
return {
|
|
113821
|
-
keyframeName: name,
|
|
113822
|
-
css: `@keyframes ${name} {
|
|
113823
|
-
${lines.join("\n")}
|
|
113824
|
-
}`
|
|
113825
|
-
};
|
|
113826
|
-
}
|
|
113827
|
-
if (anim.rotationBy !== void 0) {
|
|
113828
|
-
const name = `pptx-tl-rotate-${uid}`;
|
|
113829
|
-
return {
|
|
113830
|
-
keyframeName: name,
|
|
113831
|
-
css: `@keyframes ${name} {
|
|
113832
|
-
from { transform: rotate(0deg); }
|
|
113833
|
-
to { transform: rotate(${anim.rotationBy}deg); }
|
|
113834
|
-
}`
|
|
113835
|
-
};
|
|
113836
|
-
}
|
|
113837
|
-
const absoluteRotate = buildAbsoluteRotationKeyframe(anim, "pptx-tl-rotateAbs", uid);
|
|
113838
|
-
if (absoluteRotate) {
|
|
113839
|
-
return absoluteRotate;
|
|
113840
|
-
}
|
|
113841
|
-
if (anim.scaleByX !== void 0 || anim.scaleByY !== void 0) {
|
|
113842
|
-
const name = `pptx-tl-scale-${uid}`;
|
|
113843
|
-
const sx = anim.scaleByX ?? 1;
|
|
113844
|
-
const sy = anim.scaleByY ?? 1;
|
|
113845
|
-
return {
|
|
113846
|
-
keyframeName: name,
|
|
113847
|
-
css: `@keyframes ${name} {
|
|
113848
|
-
from { transform: scale(1); }
|
|
113849
|
-
to { transform: scale(${sx}, ${sy}); }
|
|
113850
|
-
}`
|
|
113851
|
-
};
|
|
113852
|
-
}
|
|
113853
|
-
const absoluteScale = buildAbsoluteScaleKeyframe(anim, "pptx-tl-scaleAbs", uid);
|
|
113854
|
-
if (absoluteScale) {
|
|
113855
|
-
return absoluteScale;
|
|
114764
|
+
const transform = buildTransformKeyframes(anim, uid, TIMELINE_TRANSFORM_PREFIXES);
|
|
114765
|
+
if (transform) {
|
|
114766
|
+
return transform;
|
|
113856
114767
|
}
|
|
113857
114768
|
if (anim.colorAnimation) {
|
|
113858
114769
|
const name = `pptx-tl-color-${uid}`;
|
|
@@ -113921,6 +114832,85 @@ function finalizeClickGroup(steps, options) {
|
|
|
113921
114832
|
}
|
|
113922
114833
|
return group2;
|
|
113923
114834
|
}
|
|
114835
|
+
function clamp013(value) {
|
|
114836
|
+
return Math.max(0, Math.min(1, value));
|
|
114837
|
+
}
|
|
114838
|
+
var KNOWN_OPACITY_ATTR_NAMES = /* @__PURE__ */ new Set(["style.opacity", "opacity"]);
|
|
114839
|
+
function buildOpacityTavKeyframe(anim, namePrefix, uid) {
|
|
114840
|
+
if (anim.presetClass !== "emph") {
|
|
114841
|
+
return void 0;
|
|
114842
|
+
}
|
|
114843
|
+
if (anim.attrName !== void 0 && !KNOWN_OPACITY_ATTR_NAMES.has(anim.attrName)) {
|
|
114844
|
+
return void 0;
|
|
114845
|
+
}
|
|
114846
|
+
const frames = anim.keyframes;
|
|
114847
|
+
if (!frames || frames.length < 2) {
|
|
114848
|
+
return void 0;
|
|
114849
|
+
}
|
|
114850
|
+
const stops = [];
|
|
114851
|
+
for (const kf of frames) {
|
|
114852
|
+
if (typeof kf.tm !== "number" || !Number.isFinite(kf.tm)) {
|
|
114853
|
+
return void 0;
|
|
114854
|
+
}
|
|
114855
|
+
if (kf.valueType !== "flt" && kf.valueType !== "int") {
|
|
114856
|
+
return void 0;
|
|
114857
|
+
}
|
|
114858
|
+
const opacity2 = Number(kf.value);
|
|
114859
|
+
if (!Number.isFinite(opacity2) || opacity2 < 0 || opacity2 > 1) {
|
|
114860
|
+
return void 0;
|
|
114861
|
+
}
|
|
114862
|
+
stops.push({ pct: clamp013(kf.tm / 1e5) * 100, opacity: opacity2 });
|
|
114863
|
+
}
|
|
114864
|
+
stops.sort((a, b) => a.pct - b.pct);
|
|
114865
|
+
const name = `${namePrefix}-${uid}`;
|
|
114866
|
+
const lines = stops.map((s) => ` ${Number(s.pct.toFixed(2))}% { opacity: ${s.opacity}; }`);
|
|
114867
|
+
return { keyframeName: name, css: `@keyframes ${name} {
|
|
114868
|
+
${lines.join("\n")}
|
|
114869
|
+
}` };
|
|
114870
|
+
}
|
|
114871
|
+
var KNOWN_COLOR_ATTR_NAMES = /* @__PURE__ */ new Set([
|
|
114872
|
+
"fillcolor",
|
|
114873
|
+
"fill.color",
|
|
114874
|
+
"style.color",
|
|
114875
|
+
"stroke.color"
|
|
114876
|
+
]);
|
|
114877
|
+
var HEX_COLOR_RE = /^#[0-9a-f]{6}$/iu;
|
|
114878
|
+
function buildColorTavKeyframe(anim, namePrefix, uid) {
|
|
114879
|
+
if (anim.colorAnimation) {
|
|
114880
|
+
return void 0;
|
|
114881
|
+
}
|
|
114882
|
+
if (!anim.attrName || !KNOWN_COLOR_ATTR_NAMES.has(anim.attrName)) {
|
|
114883
|
+
return void 0;
|
|
114884
|
+
}
|
|
114885
|
+
const frames = anim.keyframes;
|
|
114886
|
+
if (!frames || frames.length < 2) {
|
|
114887
|
+
return void 0;
|
|
114888
|
+
}
|
|
114889
|
+
const stops = [];
|
|
114890
|
+
for (const kf of frames) {
|
|
114891
|
+
if (typeof kf.tm !== "number" || !Number.isFinite(kf.tm)) {
|
|
114892
|
+
return void 0;
|
|
114893
|
+
}
|
|
114894
|
+
if (kf.valueType !== "clr") {
|
|
114895
|
+
return void 0;
|
|
114896
|
+
}
|
|
114897
|
+
const color2 = String(kf.value);
|
|
114898
|
+
if (!HEX_COLOR_RE.test(color2)) {
|
|
114899
|
+
return void 0;
|
|
114900
|
+
}
|
|
114901
|
+
stops.push({ pct: clamp013(kf.tm / 1e5) * 100, color: color2.toLowerCase() });
|
|
114902
|
+
}
|
|
114903
|
+
stops.sort((a, b) => a.pct - b.pct);
|
|
114904
|
+
const cssProperties = resolveCssProperties(anim.attrName);
|
|
114905
|
+
const name = `${namePrefix}-${uid}`;
|
|
114906
|
+
const lines = stops.map((s) => {
|
|
114907
|
+
const decls = cssProperties.map((prop) => `${prop}: ${s.color};`).join(" ");
|
|
114908
|
+
return ` ${Number(s.pct.toFixed(2))}% { ${decls} }`;
|
|
114909
|
+
});
|
|
114910
|
+
return { keyframeName: name, css: `@keyframes ${name} {
|
|
114911
|
+
${lines.join("\n")}
|
|
114912
|
+
}` };
|
|
114913
|
+
}
|
|
113924
114914
|
function applySpeedToDuration(speedPct, baseDurationMs) {
|
|
113925
114915
|
if (speedPct === void 0 || !Number.isFinite(speedPct) || speedPct <= 0) {
|
|
113926
114916
|
return baseDurationMs;
|
|
@@ -113950,10 +114940,13 @@ function shouldHoldEndState(anim) {
|
|
|
113950
114940
|
}
|
|
113951
114941
|
function resolveEffectTiming(anim, baseDurationMs) {
|
|
113952
114942
|
const durationMs = applySpeedToDuration(anim.speedPct, baseDurationMs);
|
|
113953
|
-
const
|
|
114943
|
+
const authoredIterations = resolveIterationCount(anim.repeatCount, anim.repeatDurMs, durationMs);
|
|
114944
|
+
const iterationCount = anim.autoReverse && anim.repeatDurMs === void 0 ? authoredIterations * 2 : authoredIterations;
|
|
114945
|
+
const activeDurationMs = Number.isFinite(iterationCount) ? durationMs * iterationCount : durationMs;
|
|
113954
114946
|
return {
|
|
113955
114947
|
durationMs,
|
|
113956
114948
|
iterationCount,
|
|
114949
|
+
activeDurationMs,
|
|
113957
114950
|
holdEndState: shouldHoldEndState(anim)
|
|
113958
114951
|
};
|
|
113959
114952
|
}
|
|
@@ -114204,7 +115197,8 @@ function emitStaggeredPieces(anim, kind, counts, output, newClickStepPerParagrap
|
|
|
114204
115197
|
...isFirstStep ? {} : {
|
|
114205
115198
|
triggerDelayMs: void 0,
|
|
114206
115199
|
startConditions: void 0,
|
|
114207
|
-
parGroupIndex: void 0
|
|
115200
|
+
parGroupIndex: void 0,
|
|
115201
|
+
parGroupDelayMs: void 0
|
|
114208
115202
|
},
|
|
114209
115203
|
buildType: void 0,
|
|
114210
115204
|
iterate: void 0
|
|
@@ -114252,6 +115246,7 @@ function expandSingleBuildAnimation(anim, buildType, counts, output) {
|
|
|
114252
115246
|
triggerDelayMs: void 0,
|
|
114253
115247
|
startConditions: void 0,
|
|
114254
115248
|
parGroupIndex: void 0,
|
|
115249
|
+
parGroupDelayMs: void 0,
|
|
114255
115250
|
buildType: void 0,
|
|
114256
115251
|
buildReverse: void 0,
|
|
114257
115252
|
buildAdvAutoMs: void 0,
|
|
@@ -114273,7 +115268,8 @@ function joinPreviousFields() {
|
|
|
114273
115268
|
trigger: "withPrevious",
|
|
114274
115269
|
triggerDelayMs: void 0,
|
|
114275
115270
|
startConditions: void 0,
|
|
114276
|
-
parGroupIndex: void 0
|
|
115271
|
+
parGroupIndex: void 0,
|
|
115272
|
+
parGroupDelayMs: void 0
|
|
114277
115273
|
};
|
|
114278
115274
|
}
|
|
114279
115275
|
function expandParagraphRange(anim, targetId, start, end, output) {
|
|
@@ -114474,13 +115470,13 @@ function applyAfterAnimationFromEditorList(nativeAnimations, editorAnimations) {
|
|
|
114474
115470
|
};
|
|
114475
115471
|
});
|
|
114476
115472
|
}
|
|
114477
|
-
function buildAfterAnimationDimKeyframes(color2,
|
|
114478
|
-
return `@keyframes ${
|
|
115473
|
+
function buildAfterAnimationDimKeyframes(color2, keyframeName2) {
|
|
115474
|
+
return `@keyframes ${keyframeName2} {
|
|
114479
115475
|
100% { color: ${color2}; }
|
|
114480
115476
|
}`;
|
|
114481
115477
|
}
|
|
114482
|
-
function appendDimAnimation(cssAnimation,
|
|
114483
|
-
return `${cssAnimation}, ${
|
|
115478
|
+
function appendDimAnimation(cssAnimation, keyframeName2, startDelayMs) {
|
|
115479
|
+
return `${cssAnimation}, ${keyframeName2} 1ms linear ${Math.max(0, startDelayMs)}ms 1 forwards`;
|
|
114484
115480
|
}
|
|
114485
115481
|
function resolveAfterAnimationStepFields(anim, cssAnimation, baseHoldEndState, dimStartDelayMs, dimKeyframeName) {
|
|
114486
115482
|
if (anim.afterAnimationAction === "dimToColor" && anim.afterAnimationColor) {
|
|
@@ -114629,12 +115625,39 @@ function parseMediaCommand(commandString) {
|
|
|
114629
115625
|
}
|
|
114630
115626
|
return void 0;
|
|
114631
115627
|
}
|
|
114632
|
-
|
|
115628
|
+
var COLOR_KEYFRAME = /^pptx-tl-(?:color|tavclr)-/u;
|
|
115629
|
+
var TRANSFORM_KEYFRAME = /^pptx-tl-(?:motion|rotate(?:Abs)?|scale(?:Abs)?|transform)-/u;
|
|
115630
|
+
function sameOptionalValue(left, right) {
|
|
115631
|
+
return left === right;
|
|
115632
|
+
}
|
|
115633
|
+
function hasIndependentColourAndTransform(left, right) {
|
|
115634
|
+
return COLOR_KEYFRAME.test(left.keyframeName) && TRANSFORM_KEYFRAME.test(right.keyframeName) || TRANSFORM_KEYFRAME.test(left.keyframeName) && COLOR_KEYFRAME.test(right.keyframeName);
|
|
115635
|
+
}
|
|
115636
|
+
function canComposeParallelSteps(left, right) {
|
|
115637
|
+
return hasIndependentColourAndTransform(left, right) && left.elementId !== "" && left.elementId === right.elementId && left.cssAnimation !== "" && right.cssAnimation !== "" && left.delayMs === right.delayMs && left.durationMs === right.durationMs && left.presetClass === right.presetClass && left.fillMode === right.fillMode && sameOptionalValue(left.holdEndState, right.holdEndState) && sameOptionalValue(left.hideAfterEffect, right.hideAfterEffect) && sameOptionalValue(left.pendingHideOnNextClick, right.pendingHideOnNextClick) && sameOptionalValue(left.seqConcurrent, right.seqConcurrent) && sameOptionalValue(left.seqNextAction, right.seqNextAction) && sameOptionalValue(left.seqPrevAction, right.seqPrevAction) && !left.command && !right.command && !left.build && !right.build && !left.soundPath && !right.soundPath && !left.stopSound && !right.stopSound && !left.restart && !right.restart && left.exclGroupId === void 0 && right.exclGroupId === void 0;
|
|
115638
|
+
}
|
|
115639
|
+
function composeParallelSteps(left, right) {
|
|
115640
|
+
const colorTargets = [.../* @__PURE__ */ new Set([...left.colorTargets ?? [], ...right.colorTargets ?? []])];
|
|
115641
|
+
return {
|
|
115642
|
+
...left,
|
|
115643
|
+
cssAnimation: `${left.cssAnimation}, ${right.cssAnimation}`,
|
|
115644
|
+
colorTargets: colorTargets.length > 0 ? colorTargets : void 0
|
|
115645
|
+
};
|
|
115646
|
+
}
|
|
115647
|
+
var BACKGROUND_ANIMATION_ID_SUFFIX = "::pptx-bg";
|
|
115648
|
+
function resolveAnimationTargetId(animation) {
|
|
115649
|
+
const targetId = animation.targetId ?? "";
|
|
115650
|
+
if (targetId && animation.target?.type === "shape" && animation.target.backgroundOnly === true) {
|
|
115651
|
+
return `${targetId}${BACKGROUND_ANIMATION_ID_SUFFIX}`;
|
|
115652
|
+
}
|
|
115653
|
+
return targetId;
|
|
115654
|
+
}
|
|
115655
|
+
function clamp014(value) {
|
|
114633
115656
|
return Math.max(0, Math.min(1, value));
|
|
114634
115657
|
}
|
|
114635
115658
|
function cssEasingForAnimation(anim) {
|
|
114636
|
-
const accel = anim.accel !== void 0 && anim.accel > 0 ?
|
|
114637
|
-
const decel = anim.decel !== void 0 && anim.decel > 0 ?
|
|
115659
|
+
const accel = anim.accel !== void 0 && anim.accel > 0 ? clamp014(anim.accel) : 0;
|
|
115660
|
+
const decel = anim.decel !== void 0 && anim.decel > 0 ? clamp014(anim.decel) : 0;
|
|
114638
115661
|
if (accel === 0 && decel === 0) {
|
|
114639
115662
|
return "ease";
|
|
114640
115663
|
}
|
|
@@ -114643,11 +115666,11 @@ function cssEasingForAnimation(anim) {
|
|
|
114643
115666
|
return `cubic-bezier(${x1}, 0, ${x2}, 1)`;
|
|
114644
115667
|
}
|
|
114645
115668
|
function stepColorTargets(anim, tavColorApplied) {
|
|
114646
|
-
const
|
|
114647
|
-
if (!
|
|
115669
|
+
const colorSource = anim.colorAnimation ?? (tavColorApplied ? anim.attrName : void 0);
|
|
115670
|
+
if (!colorSource) {
|
|
114648
115671
|
return void 0;
|
|
114649
115672
|
}
|
|
114650
|
-
const targets = resolveColorAnimationTargets(
|
|
115673
|
+
const targets = resolveColorAnimationTargets(colorSource);
|
|
114651
115674
|
return targets.length > 0 ? targets : void 0;
|
|
114652
115675
|
}
|
|
114653
115676
|
function fallbackEffectForClass(presetClass) {
|
|
@@ -114669,17 +115692,22 @@ function buildTimeline(nativeAnimations) {
|
|
|
114669
115692
|
entranceElementIds: /* @__PURE__ */ new Set(),
|
|
114670
115693
|
keyframesCss: "",
|
|
114671
115694
|
interactiveSequences: /* @__PURE__ */ new Map(),
|
|
115695
|
+
restartableInteractiveSequences: /* @__PURE__ */ new Set(),
|
|
114672
115696
|
hoverSequences: /* @__PURE__ */ new Map()
|
|
114673
115697
|
};
|
|
114674
115698
|
}
|
|
114675
115699
|
const regularAnims = [];
|
|
114676
115700
|
const interactiveAnims = /* @__PURE__ */ new Map();
|
|
115701
|
+
const restartableInteractiveSequences = /* @__PURE__ */ new Set();
|
|
114677
115702
|
const hoverAnims = [];
|
|
114678
115703
|
for (const anim of nativeAnimations) {
|
|
114679
|
-
if (anim.trigger === "onShapeClick" && anim.triggerShapeId) {
|
|
115704
|
+
if ((anim.interactiveSequence === true || anim.trigger === "onShapeClick") && anim.triggerShapeId) {
|
|
114680
115705
|
const existing = interactiveAnims.get(anim.triggerShapeId) ?? [];
|
|
114681
115706
|
existing.push(anim);
|
|
114682
115707
|
interactiveAnims.set(anim.triggerShapeId, existing);
|
|
115708
|
+
if (anim.interactiveRestart === true) {
|
|
115709
|
+
restartableInteractiveSequences.add(anim.triggerShapeId);
|
|
115710
|
+
}
|
|
114683
115711
|
} else if (anim.trigger === "onHover" && anim.targetId) {
|
|
114684
115712
|
hoverAnims.push(anim);
|
|
114685
115713
|
} else {
|
|
@@ -114692,6 +115720,7 @@ function buildTimeline(nativeAnimations) {
|
|
|
114692
115720
|
const dynamicBlocks = [];
|
|
114693
115721
|
let dynamicUid = 0;
|
|
114694
115722
|
let currentGroup = [];
|
|
115723
|
+
let currentGroupLastParallelIndex;
|
|
114695
115724
|
let currentGroupIsClick = false;
|
|
114696
115725
|
let currentGroupAutoStart = false;
|
|
114697
115726
|
let subGroupIndex;
|
|
@@ -114699,8 +115728,11 @@ function buildTimeline(nativeAnimations) {
|
|
|
114699
115728
|
for (const anim of regularAnims) {
|
|
114700
115729
|
const expandedSteps = expandIterateAnimation(anim);
|
|
114701
115730
|
for (const singleAnim of expandedSteps) {
|
|
114702
|
-
let
|
|
114703
|
-
let
|
|
115731
|
+
let dynamic = hasAuthoredTransform(singleAnim) ? buildDynamicKeyframe(singleAnim, dynamicUid++) : void 0;
|
|
115732
|
+
let effect = dynamic ? void 0 : resolveEffect(singleAnim);
|
|
115733
|
+
if (!effect && !dynamic) {
|
|
115734
|
+
dynamic = buildDynamicKeyframe(singleAnim, dynamicUid++);
|
|
115735
|
+
}
|
|
114704
115736
|
if (effect === "transparency" || !effect) {
|
|
114705
115737
|
const tavOpacity = buildOpacityTavKeyframe(singleAnim, "pptx-tl-tav", dynamicUid);
|
|
114706
115738
|
if (tavOpacity) {
|
|
@@ -114747,7 +115779,7 @@ function buildTimeline(nativeAnimations) {
|
|
|
114747
115779
|
if (dynamic) {
|
|
114748
115780
|
dynamicBlocks.push(dynamic.css);
|
|
114749
115781
|
}
|
|
114750
|
-
const elementId = isCommand ? "" : singleAnim
|
|
115782
|
+
const elementId = isCommand ? "" : resolveAnimationTargetId(singleAnim);
|
|
114751
115783
|
const effective = resolveAnimationStart(singleAnim);
|
|
114752
115784
|
const trigger = effective.trigger;
|
|
114753
115785
|
const baseDuration = isCommand ? 0 : singleAnim.durationMs ?? defaultDuration(singleAnim.presetClass);
|
|
@@ -114761,7 +115793,7 @@ function buildTimeline(nativeAnimations) {
|
|
|
114761
115793
|
const triggerDelay = 0;
|
|
114762
115794
|
const presetClass = isCommand ? "emph" : singleAnim.presetClass ?? "entr";
|
|
114763
115795
|
const fill = fillModeForClass(singleAnim.presetClass);
|
|
114764
|
-
const timing = isCommand ? { durationMs: 0, iterationCount: 1, holdEndState: false } : resolveEffectTiming(singleAnim, baseDuration);
|
|
115796
|
+
const timing = isCommand ? { durationMs: 0, iterationCount: 1, activeDurationMs: 0, holdEndState: false } : resolveEffectTiming(singleAnim, baseDuration);
|
|
114765
115797
|
const duration = timing.durationMs;
|
|
114766
115798
|
const iterCount = timing.iterationCount;
|
|
114767
115799
|
const direction = singleAnim.autoReverse ? "alternate" : "normal";
|
|
@@ -114779,17 +115811,18 @@ function buildTimeline(nativeAnimations) {
|
|
|
114779
115811
|
clickGroups.push(group2);
|
|
114780
115812
|
}
|
|
114781
115813
|
currentGroup = [];
|
|
115814
|
+
currentGroupLastParallelIndex = void 0;
|
|
114782
115815
|
currentGroupIsClick = isOnClick || isFirstAnimation;
|
|
114783
115816
|
currentGroupAutoStart = singleAnim.groupAutoStart === true && !effective.requiresInteraction;
|
|
114784
115817
|
subGroupIndex = singleAnim.parGroupIndex;
|
|
114785
|
-
subGroupStartMs = 0;
|
|
115818
|
+
subGroupStartMs = singleAnim.parGroupDelayMs ?? 0;
|
|
114786
115819
|
}
|
|
114787
115820
|
const prevStep = currentGroup.length > 0 ? currentGroup[currentGroup.length - 1] : void 0;
|
|
114788
115821
|
let delayMs;
|
|
114789
|
-
if (singleAnim.parGroupIndex !== void 0
|
|
115822
|
+
if (singleAnim.parGroupIndex !== void 0) {
|
|
114790
115823
|
if (singleAnim.parGroupIndex !== subGroupIndex) {
|
|
114791
115824
|
subGroupIndex = singleAnim.parGroupIndex;
|
|
114792
|
-
subGroupStartMs = trigger === "withPrevious" ? prevStep.delayMs : prevStep.delayMs + prevStep.durationMs;
|
|
115825
|
+
subGroupStartMs = singleAnim.parGroupDelayMs ?? (prevStep ? trigger === "withPrevious" ? prevStep.delayMs : prevStep.delayMs + prevStep.durationMs : 0);
|
|
114793
115826
|
}
|
|
114794
115827
|
delayMs = subGroupStartMs + animDelay + triggerDelay;
|
|
114795
115828
|
} else if (trigger === "withPrevious" && prevStep) {
|
|
@@ -114806,19 +115839,19 @@ function buildTimeline(nativeAnimations) {
|
|
|
114806
115839
|
singleAnim,
|
|
114807
115840
|
baseCssAnimation,
|
|
114808
115841
|
timing.holdEndState,
|
|
114809
|
-
delayMs +
|
|
115842
|
+
delayMs + timing.activeDurationMs,
|
|
114810
115843
|
`pptx-tl-dim-${dynamicUid++}`
|
|
114811
115844
|
);
|
|
114812
115845
|
if (afterFields.dimKeyframeBlock) {
|
|
114813
115846
|
dynamicBlocks.push(afterFields.dimKeyframeBlock);
|
|
114814
115847
|
}
|
|
114815
|
-
|
|
115848
|
+
const step = {
|
|
114816
115849
|
elementId,
|
|
114817
115850
|
cssAnimation: afterFields.cssAnimation,
|
|
114818
115851
|
keyframeName: keyframe,
|
|
114819
115852
|
trigger,
|
|
114820
115853
|
delayMs,
|
|
114821
|
-
durationMs:
|
|
115854
|
+
durationMs: timing.activeDurationMs,
|
|
114822
115855
|
fillMode: fill,
|
|
114823
115856
|
presetClass,
|
|
114824
115857
|
soundPath: singleAnim.soundPath,
|
|
@@ -114834,7 +115867,14 @@ function buildTimeline(nativeAnimations) {
|
|
|
114834
115867
|
seqNextAction: singleAnim.seqNextAction,
|
|
114835
115868
|
seqPrevAction: singleAnim.seqPrevAction,
|
|
114836
115869
|
exclGroupId: singleAnim.exclGroupId
|
|
114837
|
-
}
|
|
115870
|
+
};
|
|
115871
|
+
const previousParallelStep = currentGroup[currentGroup.length - 1];
|
|
115872
|
+
if (singleAnim.parGroupIndex !== void 0 && singleAnim.parGroupIndex === currentGroupLastParallelIndex && previousParallelStep && canComposeParallelSteps(previousParallelStep, step)) {
|
|
115873
|
+
currentGroup[currentGroup.length - 1] = composeParallelSteps(previousParallelStep, step);
|
|
115874
|
+
} else {
|
|
115875
|
+
currentGroup.push(step);
|
|
115876
|
+
}
|
|
115877
|
+
currentGroupLastParallelIndex = singleAnim.parGroupIndex;
|
|
114838
115878
|
}
|
|
114839
115879
|
}
|
|
114840
115880
|
if (currentGroup.length > 0) {
|
|
@@ -114877,6 +115917,7 @@ function buildTimeline(nativeAnimations) {
|
|
|
114877
115917
|
entranceElementIds: entranceIds,
|
|
114878
115918
|
keyframesCss: keyframeBlocks.join("\n\n"),
|
|
114879
115919
|
interactiveSequences,
|
|
115920
|
+
restartableInteractiveSequences,
|
|
114880
115921
|
hoverSequences
|
|
114881
115922
|
};
|
|
114882
115923
|
}
|
|
@@ -114901,9 +115942,15 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
114901
115942
|
for (const [shapeId, anims] of animsByKey) {
|
|
114902
115943
|
const seqGroups = [];
|
|
114903
115944
|
let seqGroup = [];
|
|
115945
|
+
let seqGroupLastParallelIndex;
|
|
115946
|
+
let subGroupIndex;
|
|
115947
|
+
let subGroupStartMs = 0;
|
|
114904
115948
|
for (const anim of anims) {
|
|
114905
|
-
let
|
|
114906
|
-
let
|
|
115949
|
+
let dynamic = hasAuthoredTransform(anim) ? buildDynamicKeyframe(anim, dynamicUid++) : void 0;
|
|
115950
|
+
let effect = dynamic ? void 0 : resolveEffect(anim);
|
|
115951
|
+
if (!effect && !dynamic) {
|
|
115952
|
+
dynamic = buildDynamicKeyframe(anim, dynamicUid++);
|
|
115953
|
+
}
|
|
114907
115954
|
if (effect === "transparency" || !effect) {
|
|
114908
115955
|
const tavOpacity = buildOpacityTavKeyframe(anim, "pptx-tl-tav", dynamicUid);
|
|
114909
115956
|
if (tavOpacity) {
|
|
@@ -114935,14 +115982,14 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
114935
115982
|
if (dynamic) {
|
|
114936
115983
|
dynamicBlocks.push(dynamic.css);
|
|
114937
115984
|
}
|
|
114938
|
-
const elementId = isCommand ? "" : anim
|
|
115985
|
+
const elementId = isCommand ? "" : resolveAnimationTargetId(anim);
|
|
114939
115986
|
const seqTrigger = anim.trigger ?? "onShapeClick";
|
|
114940
115987
|
const baseDuration = isCommand ? 0 : anim.durationMs ?? defaultDuration(anim.presetClass);
|
|
114941
115988
|
const animDelay = Math.max(anim.delayMs ?? 0, anim.triggerDelayMs ?? 0);
|
|
114942
115989
|
const triggerDelay = 0;
|
|
114943
115990
|
const presetClass = isCommand ? "emph" : anim.presetClass ?? "entr";
|
|
114944
115991
|
const fill = fillModeForClass(anim.presetClass);
|
|
114945
|
-
const timing = isCommand ? { durationMs: 0, iterationCount: 1, holdEndState: false } : resolveEffectTiming(anim, baseDuration);
|
|
115992
|
+
const timing = isCommand ? { durationMs: 0, iterationCount: 1, activeDurationMs: 0, holdEndState: false } : resolveEffectTiming(anim, baseDuration);
|
|
114946
115993
|
const duration = timing.durationMs;
|
|
114947
115994
|
const iterCount = timing.iterationCount;
|
|
114948
115995
|
const direction = anim.autoReverse ? "alternate" : "normal";
|
|
@@ -114954,13 +116001,18 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
114954
116001
|
seqGroups.push(finalizeClickGroup(seqGroup));
|
|
114955
116002
|
seqGroup = [];
|
|
114956
116003
|
}
|
|
116004
|
+
const prevStep = seqGroup.length > 0 ? seqGroup[seqGroup.length - 1] : void 0;
|
|
114957
116005
|
let delayMs;
|
|
114958
|
-
if (
|
|
114959
|
-
|
|
114960
|
-
|
|
114961
|
-
|
|
114962
|
-
|
|
114963
|
-
delayMs =
|
|
116006
|
+
if (anim.parGroupIndex !== void 0) {
|
|
116007
|
+
if (anim.parGroupIndex !== subGroupIndex) {
|
|
116008
|
+
subGroupIndex = anim.parGroupIndex;
|
|
116009
|
+
subGroupStartMs = anim.parGroupDelayMs ?? (prevStep ? seqTrigger === "withPrevious" ? prevStep.delayMs : prevStep.delayMs + prevStep.durationMs : 0);
|
|
116010
|
+
}
|
|
116011
|
+
delayMs = subGroupStartMs + animDelay + triggerDelay;
|
|
116012
|
+
} else if (seqTrigger === "withPrevious" && prevStep) {
|
|
116013
|
+
delayMs = prevStep.delayMs + animDelay + triggerDelay;
|
|
116014
|
+
} else if ((seqTrigger === "afterPrevious" || seqTrigger === "afterDelay") && prevStep) {
|
|
116015
|
+
delayMs = prevStep.delayMs + prevStep.durationMs + animDelay + triggerDelay;
|
|
114964
116016
|
} else {
|
|
114965
116017
|
delayMs = animDelay + triggerDelay;
|
|
114966
116018
|
}
|
|
@@ -114971,19 +116023,19 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
114971
116023
|
anim,
|
|
114972
116024
|
baseCssAnimation,
|
|
114973
116025
|
timing.holdEndState,
|
|
114974
|
-
delayMs +
|
|
116026
|
+
delayMs + timing.activeDurationMs,
|
|
114975
116027
|
`pptx-tl-dim-${dynamicUid++}`
|
|
114976
116028
|
);
|
|
114977
116029
|
if (afterFields.dimKeyframeBlock) {
|
|
114978
116030
|
dynamicBlocks.push(afterFields.dimKeyframeBlock);
|
|
114979
116031
|
}
|
|
114980
|
-
|
|
116032
|
+
const step = {
|
|
114981
116033
|
elementId,
|
|
114982
116034
|
cssAnimation: afterFields.cssAnimation,
|
|
114983
116035
|
keyframeName: keyframe,
|
|
114984
116036
|
trigger: seqTrigger,
|
|
114985
116037
|
delayMs,
|
|
114986
|
-
durationMs:
|
|
116038
|
+
durationMs: timing.activeDurationMs,
|
|
114987
116039
|
fillMode: fill,
|
|
114988
116040
|
presetClass,
|
|
114989
116041
|
soundPath: anim.soundPath,
|
|
@@ -114999,7 +116051,14 @@ function buildSequenceGroups(animsByKey, entranceIds, neededKeyframes, dynamicBl
|
|
|
114999
116051
|
seqNextAction: anim.seqNextAction,
|
|
115000
116052
|
seqPrevAction: anim.seqPrevAction,
|
|
115001
116053
|
exclGroupId: anim.exclGroupId
|
|
115002
|
-
}
|
|
116054
|
+
};
|
|
116055
|
+
const previousParallelStep = seqGroup[seqGroup.length - 1];
|
|
116056
|
+
if (anim.parGroupIndex !== void 0 && anim.parGroupIndex === seqGroupLastParallelIndex && previousParallelStep && canComposeParallelSteps(previousParallelStep, step)) {
|
|
116057
|
+
seqGroup[seqGroup.length - 1] = composeParallelSteps(previousParallelStep, step);
|
|
116058
|
+
} else {
|
|
116059
|
+
seqGroup.push(step);
|
|
116060
|
+
}
|
|
116061
|
+
seqGroupLastParallelIndex = anim.parGroupIndex;
|
|
115003
116062
|
}
|
|
115004
116063
|
if (seqGroup.length > 0) {
|
|
115005
116064
|
seqGroups.push(finalizeClickGroup(seqGroup));
|
|
@@ -115351,14 +116410,20 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
115351
116410
|
advanceInteractive(triggerShapeId, nowMs = Date.now()) {
|
|
115352
116411
|
const groups = this.timeline.interactiveSequences.get(triggerShapeId);
|
|
115353
116412
|
const currentIdx = this.interactiveGroupIndexes.get(triggerShapeId) ?? -1;
|
|
115354
|
-
|
|
116413
|
+
let result = this.advanceSequenceGroup(
|
|
115355
116414
|
groups,
|
|
115356
116415
|
currentIdx,
|
|
115357
116416
|
this.interactiveGroupStartedAtMs.get(triggerShapeId),
|
|
115358
116417
|
nowMs
|
|
115359
116418
|
);
|
|
115360
116419
|
if (result === "exhausted") {
|
|
115361
|
-
|
|
116420
|
+
if (!this.timeline.restartableInteractiveSequences?.has(triggerShapeId)) {
|
|
116421
|
+
return null;
|
|
116422
|
+
}
|
|
116423
|
+
result = this.advanceSequenceGroup(groups, -1, void 0, nowMs);
|
|
116424
|
+
if (result === "exhausted") {
|
|
116425
|
+
return null;
|
|
116426
|
+
}
|
|
115362
116427
|
}
|
|
115363
116428
|
if (result === "blocked") {
|
|
115364
116429
|
return EMPTY_CLICK_GROUP;
|
|
@@ -115556,7 +116621,7 @@ function buildPreviewAnimation(preset, options) {
|
|
|
115556
116621
|
if (!effectName) {
|
|
115557
116622
|
return void 0;
|
|
115558
116623
|
}
|
|
115559
|
-
const
|
|
116624
|
+
const keyframeName2 = `pptx-${effectName}`;
|
|
115560
116625
|
const keyframesCss = getEffectKeyframes(effectName);
|
|
115561
116626
|
if (!keyframesCss) {
|
|
115562
116627
|
return void 0;
|
|
@@ -115564,9 +116629,9 @@ function buildPreviewAnimation(preset, options) {
|
|
|
115564
116629
|
const duration = options?.durationMs ?? 600;
|
|
115565
116630
|
const easing = timingCurveToCss(options?.timingCurve, options?.cubicBezier);
|
|
115566
116631
|
return {
|
|
115567
|
-
keyframeName,
|
|
116632
|
+
keyframeName: keyframeName2,
|
|
115568
116633
|
keyframesCss,
|
|
115569
|
-
cssAnimation: `${
|
|
116634
|
+
cssAnimation: `${keyframeName2} ${duration}ms ${easing} 0ms 1 normal both`,
|
|
115570
116635
|
durationMs: duration
|
|
115571
116636
|
};
|
|
115572
116637
|
}
|
|
@@ -115888,16 +116953,19 @@ function motionPathNativeAnimations(slide) {
|
|
|
115888
116953
|
durationMs: animation.durationMs ?? DEFAULT_MOTION_PATH_DURATION_MS,
|
|
115889
116954
|
delayMs: animation.delayMs ?? 0,
|
|
115890
116955
|
motionPath: animation.motionPath,
|
|
115891
|
-
motionPathEditMode: animation.motionPathEditMode ?? "relative"
|
|
116956
|
+
motionPathEditMode: animation.motionPathEditMode ?? "relative",
|
|
116957
|
+
motionPathRotationAngle: animation.motionPathRotationAngle,
|
|
116958
|
+
motionPathRotationCenterX: animation.motionPathRotationCenterX,
|
|
116959
|
+
motionPathRotationCenterY: animation.motionPathRotationCenterY
|
|
115892
116960
|
}));
|
|
115893
116961
|
}
|
|
115894
116962
|
function buildMotionPathPreview(args) {
|
|
115895
|
-
const
|
|
116963
|
+
const keyframeName2 = `pptx-motion-preview-${args.uid ?? 0}`;
|
|
115896
116964
|
const keyframes = buildMotionPathKeyframes({
|
|
115897
116965
|
path: args.path,
|
|
115898
116966
|
slideWidth: args.slideWidth,
|
|
115899
116967
|
slideHeight: args.slideHeight,
|
|
115900
|
-
keyframeName
|
|
116968
|
+
keyframeName: keyframeName2
|
|
115901
116969
|
});
|
|
115902
116970
|
if (!keyframes) {
|
|
115903
116971
|
return void 0;
|
|
@@ -115906,9 +116974,9 @@ function buildMotionPathPreview(args) {
|
|
|
115906
116974
|
const delayMs = args.delayMs ?? 0;
|
|
115907
116975
|
const easing = timingCurveToCss(args.timingCurve);
|
|
115908
116976
|
return {
|
|
115909
|
-
keyframeName,
|
|
116977
|
+
keyframeName: keyframeName2,
|
|
115910
116978
|
keyframesCss: keyframes.css,
|
|
115911
|
-
cssAnimation: `${
|
|
116979
|
+
cssAnimation: `${keyframeName2} ${durationMs}ms ${easing} ${delayMs}ms 1 normal both`,
|
|
115912
116980
|
durationMs
|
|
115913
116981
|
};
|
|
115914
116982
|
}
|
|
@@ -115955,8 +117023,9 @@ var PresentationAnimationController = class _PresentationAnimationController {
|
|
|
115955
117023
|
const engine = TimelineEngine.fromAnimations(expandedAnims);
|
|
115956
117024
|
const elementIds = slide.elements.map((element) => element.id);
|
|
115957
117025
|
for (const anim of expandedAnims) {
|
|
115958
|
-
|
|
115959
|
-
|
|
117026
|
+
const targetId = resolveAnimationTargetId(anim);
|
|
117027
|
+
if (targetId.includes(TEXT_BUILD_ID_SEP)) {
|
|
117028
|
+
elementIds.push(targetId);
|
|
115960
117029
|
}
|
|
115961
117030
|
}
|
|
115962
117031
|
return new _PresentationAnimationController(engine, elementIds);
|
|
@@ -116885,8 +117954,8 @@ function apply3dEffects(base, scene3d, shape3d, fillColorFallback) {
|
|
|
116885
117954
|
if (perspective) {
|
|
116886
117955
|
base.perspective = perspective;
|
|
116887
117956
|
}
|
|
116888
|
-
const
|
|
116889
|
-
if (
|
|
117957
|
+
const hasRotation2 = rotateX !== 0 || rotateY !== 0 || rotateZ !== 0;
|
|
117958
|
+
if (hasRotation2) {
|
|
116890
117959
|
const transforms = [];
|
|
116891
117960
|
if (rotateX !== 0) {
|
|
116892
117961
|
transforms.push(`rotateX(${rotateX}deg)`);
|
|
@@ -116911,7 +117980,7 @@ function apply3dEffects(base, scene3d, shape3d, fillColorFallback) {
|
|
|
116911
117980
|
const zTranslate = `translateZ(${halfDepth}px)`;
|
|
116912
117981
|
base.transform = base.transform ? `${base.transform} ${zTranslate}` : zTranslate;
|
|
116913
117982
|
}
|
|
116914
|
-
if (
|
|
117983
|
+
if (hasRotation2 || perspective || shape3d) {
|
|
116915
117984
|
base.willChange = "transform";
|
|
116916
117985
|
base.transformStyle = "preserve-3d";
|
|
116917
117986
|
}
|
|
@@ -118963,7 +120032,7 @@ function getImageFitStyle(el) {
|
|
|
118963
120032
|
height: "100%",
|
|
118964
120033
|
objectFit: "fill"
|
|
118965
120034
|
};
|
|
118966
|
-
if (!isImageLikeElement(el)) {
|
|
120035
|
+
if (!isImageLikeElement(el) && el.type !== "media") {
|
|
118967
120036
|
return uncropped;
|
|
118968
120037
|
}
|
|
118969
120038
|
const { placement, crop } = imageFitTransformParts(el);
|
|
@@ -118984,7 +120053,7 @@ function getImageFitStyle(el) {
|
|
|
118984
120053
|
}
|
|
118985
120054
|
var IDENTITY_TRANSFORM_PAIR = "translate(0%, 0%) scale(1, 1)";
|
|
118986
120055
|
function imageFitTransformParts(el) {
|
|
118987
|
-
if (!isImageLikeElement(el)) {
|
|
120056
|
+
if (!isImageLikeElement(el) && el.type !== "media") {
|
|
118988
120057
|
return { placement: "", crop: "" };
|
|
118989
120058
|
}
|
|
118990
120059
|
const frLeft = el.fillRectLeft ?? 0;
|
|
@@ -125581,8 +126650,8 @@ function buildTextBody3DSceneStyle(textStyle) {
|
|
|
125581
126650
|
if (!perspective && (rotateX !== 0 || rotateY !== 0 || rotateZ !== 0)) {
|
|
125582
126651
|
perspective = "800px";
|
|
125583
126652
|
}
|
|
125584
|
-
const
|
|
125585
|
-
const hasScene =
|
|
126653
|
+
const hasRotation2 = rotateX !== 0 || rotateY !== 0 || rotateZ !== 0;
|
|
126654
|
+
const hasScene = hasRotation2 || Boolean(perspective);
|
|
125586
126655
|
if (!hasScene) {
|
|
125587
126656
|
return void 0;
|
|
125588
126657
|
}
|
|
@@ -125590,7 +126659,7 @@ function buildTextBody3DSceneStyle(textStyle) {
|
|
|
125590
126659
|
if (perspective) {
|
|
125591
126660
|
style.perspective = perspective;
|
|
125592
126661
|
}
|
|
125593
|
-
if (
|
|
126662
|
+
if (hasRotation2) {
|
|
125594
126663
|
const transforms = [];
|
|
125595
126664
|
if (rotateX !== 0) {
|
|
125596
126665
|
transforms.push(`rotateX(${rotateX}deg)`);
|
|
@@ -126430,7 +127499,8 @@ function buildParagraphs(element, fieldContext, segmentOverrides) {
|
|
|
126430
127499
|
paragraphIndents?.[paraIndex],
|
|
126431
127500
|
firstSeg?.paragraphLevel
|
|
126432
127501
|
);
|
|
126433
|
-
const
|
|
127502
|
+
const textIndentPx = indent.textIndentPx !== void 0 && (indent.textIndentPx >= 0 || indent.marginLeftPx !== void 0 || bullet !== void 0) ? indent.textIndentPx : void 0;
|
|
127503
|
+
const bulletStyle = buildBulletMarkerStyle(bullet, firstSeg, fontScale, textIndentPx);
|
|
126434
127504
|
const spacing = resolveParagraphSpacing({
|
|
126435
127505
|
paraProps: propsCarrier?.paragraphProperties,
|
|
126436
127506
|
bodyStyle,
|
|
@@ -126471,7 +127541,7 @@ function buildParagraphs(element, fieldContext, segmentOverrides) {
|
|
|
126471
127541
|
bulletPicture: bullet?.picture,
|
|
126472
127542
|
bulletStyle,
|
|
126473
127543
|
marginLeftPx: indent.marginLeftPx,
|
|
126474
|
-
textIndentPx
|
|
127544
|
+
textIndentPx,
|
|
126475
127545
|
lineHeight: spacing.lineHeight,
|
|
126476
127546
|
spaceBeforePx: spacing.spaceBeforePx,
|
|
126477
127547
|
spaceAfterPx: spacing.spaceAfterPx,
|
|
@@ -129384,21 +130454,9 @@ function solveShapeAdjustments(solvers, localX, localY) {
|
|
|
129384
130454
|
}
|
|
129385
130455
|
var SHAPE_ADJUSTMENT_MIN = 0;
|
|
129386
130456
|
var SHAPE_ADJUSTMENT_MAX = 5e4;
|
|
129387
|
-
var DEFAULT_ROUND_RECT_ADJUSTMENT = 16667;
|
|
129388
130457
|
function clampShapeAdjustmentValue(value) {
|
|
129389
130458
|
return Math.max(SHAPE_ADJUSTMENT_MIN, Math.min(SHAPE_ADJUSTMENT_MAX, Math.round(value)));
|
|
129390
130459
|
}
|
|
129391
|
-
function getRoundRectAdjustmentValue(element) {
|
|
129392
|
-
const adjustment = element.shapeAdjustments?.adj;
|
|
129393
|
-
if (typeof adjustment === "number" && Number.isFinite(adjustment)) {
|
|
129394
|
-
return clampShapeAdjustmentValue(adjustment);
|
|
129395
|
-
}
|
|
129396
|
-
return DEFAULT_ROUND_RECT_ADJUSTMENT;
|
|
129397
|
-
}
|
|
129398
|
-
function getRoundRectRadiusPx2(element) {
|
|
129399
|
-
const normalizedAdjustment = getRoundRectAdjustmentValue(element) / SHAPE_ADJUSTMENT_MAX;
|
|
129400
|
-
return Math.min(Math.max(element.width, 1), Math.max(element.height, 1)) * 0.5 * normalizedAdjustment;
|
|
129401
|
-
}
|
|
129402
130460
|
function getShapeAdjustmentHandleDescriptors(element) {
|
|
129403
130461
|
if (!hasShapeProperties(element) || element.type === "connector") {
|
|
129404
130462
|
return [];
|
|
@@ -130170,6 +131228,7 @@ var COMPLEX_SLIDE_FIELDS = {
|
|
|
130170
131228
|
activeXControls: "_ax",
|
|
130171
131229
|
legacyVmlElements: "_lvml",
|
|
130172
131230
|
backgroundPattern: "_bp",
|
|
131231
|
+
backgroundImageProperties: "_bip",
|
|
130173
131232
|
modernCommentPart: "_mc",
|
|
130174
131233
|
headerFooterFlags: "_hff",
|
|
130175
131234
|
slideSynchronization: "_sync"
|
|
@@ -136153,13 +137212,59 @@ function buildPieChart3DDataForElement(element, options) {
|
|
|
136153
137212
|
const categoryLabels = chartData.categories.length > 0 ? chartData.categories : Array.from({ length: pieSeries.values.length }, (_, i) => String(i + 1));
|
|
136154
137213
|
return buildPieChart3DData(chartData, categoryLabels, options);
|
|
136155
137214
|
}
|
|
136156
|
-
|
|
137215
|
+
function estimatedGlyphAdvanceRatio(glyph) {
|
|
137216
|
+
if (/\p{Mark}/u.test(glyph)) {
|
|
137217
|
+
return 0;
|
|
137218
|
+
}
|
|
137219
|
+
if (/\s/u.test(glyph)) {
|
|
137220
|
+
return 0.33;
|
|
137221
|
+
}
|
|
137222
|
+
if (/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Extended_Pictographic}]/u.test(
|
|
137223
|
+
glyph
|
|
137224
|
+
)) {
|
|
137225
|
+
return 1;
|
|
137226
|
+
}
|
|
137227
|
+
if (/[A-Z]/u.test(glyph)) {
|
|
137228
|
+
return 0.65;
|
|
137229
|
+
}
|
|
137230
|
+
if (/[a-z0-9]/u.test(glyph)) {
|
|
137231
|
+
return 0.55;
|
|
137232
|
+
}
|
|
137233
|
+
if (/[,.;:!?()\u005b\u005d{}'"`\-_/\\]/u.test(glyph)) {
|
|
137234
|
+
return 0.35;
|
|
137235
|
+
}
|
|
137236
|
+
return 0.6;
|
|
137237
|
+
}
|
|
137238
|
+
function estimatedTextWidth(glyphs, fontSize) {
|
|
137239
|
+
return glyphs.reduce((sum, glyph) => sum + estimatedGlyphAdvanceRatio(glyph) * fontSize, 0);
|
|
137240
|
+
}
|
|
137241
|
+
var HANGING_PUNCTUATION_RE = /^[\u3001\u3002\uff0c\uff0e\uff01\uff1f\uff1b\uff1a\u3009\u300b\u300d\u300f\u3011\u3015\u3017\u3019\u301b\uff09\uff3d\uff5d\u2019\u201d\u00bb\u203a]$/u;
|
|
137242
|
+
var BREAKABLE_GLYPH_RE = /^[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Extended_Pictographic}]$/u;
|
|
137243
|
+
function estimatedWrapUnits(text2) {
|
|
137244
|
+
const units = [];
|
|
137245
|
+
let unbreakableRun = "";
|
|
137246
|
+
const flushRun = () => {
|
|
137247
|
+
if (unbreakableRun.length > 0) {
|
|
137248
|
+
units.push(unbreakableRun);
|
|
137249
|
+
unbreakableRun = "";
|
|
137250
|
+
}
|
|
137251
|
+
};
|
|
137252
|
+
for (const glyph of Array.from(text2)) {
|
|
137253
|
+
if (/\s/u.test(glyph) || BREAKABLE_GLYPH_RE.test(glyph)) {
|
|
137254
|
+
flushRun();
|
|
137255
|
+
units.push(glyph);
|
|
137256
|
+
} else {
|
|
137257
|
+
unbreakableRun += glyph;
|
|
137258
|
+
}
|
|
137259
|
+
}
|
|
137260
|
+
flushRun();
|
|
137261
|
+
return units;
|
|
137262
|
+
}
|
|
136157
137263
|
function wrapTextByEstimatedWidth(text2, maxWidth, fontSize, options = {}) {
|
|
136158
137264
|
if (!text2 || text2.trim().length === 0) {
|
|
136159
137265
|
return [];
|
|
136160
137266
|
}
|
|
136161
|
-
|
|
136162
|
-
if (charactersPerLine <= 0) {
|
|
137267
|
+
if (!(maxWidth > 0) || !(fontSize > 0)) {
|
|
136163
137268
|
return [];
|
|
136164
137269
|
}
|
|
136165
137270
|
const lines = [];
|
|
@@ -136171,18 +137276,31 @@ function wrapTextByEstimatedWidth(text2, maxWidth, fontSize, options = {}) {
|
|
|
136171
137276
|
continue;
|
|
136172
137277
|
}
|
|
136173
137278
|
let current = "";
|
|
136174
|
-
|
|
136175
|
-
|
|
136176
|
-
|
|
136177
|
-
|
|
136178
|
-
|
|
136179
|
-
}
|
|
136180
|
-
|
|
136181
|
-
|
|
137279
|
+
let pendingWhitespace = false;
|
|
137280
|
+
for (const unit of estimatedWrapUnits(paragraph)) {
|
|
137281
|
+
if (/^\s+$/u.test(unit)) {
|
|
137282
|
+
pendingWhitespace = current.length > 0;
|
|
137283
|
+
continue;
|
|
137284
|
+
}
|
|
137285
|
+
const separator = pendingWhitespace && current.length > 0 ? " " : "";
|
|
137286
|
+
const candidate = `${current}${separator}${unit}`;
|
|
137287
|
+
if (current.length === 0 || estimatedTextWidth(Array.from(candidate), fontSize) <= maxWidth) {
|
|
137288
|
+
current = candidate;
|
|
137289
|
+
pendingWhitespace = false;
|
|
137290
|
+
continue;
|
|
137291
|
+
}
|
|
137292
|
+
if (HANGING_PUNCTUATION_RE.test(unit)) {
|
|
137293
|
+
current += unit;
|
|
137294
|
+
pendingWhitespace = false;
|
|
137295
|
+
continue;
|
|
136182
137296
|
}
|
|
136183
|
-
}
|
|
136184
|
-
if (current.length > 0) {
|
|
136185
137297
|
lines.push(current);
|
|
137298
|
+
current = unit;
|
|
137299
|
+
pendingWhitespace = false;
|
|
137300
|
+
}
|
|
137301
|
+
const completed = current.trimEnd();
|
|
137302
|
+
if (completed.length > 0) {
|
|
137303
|
+
lines.push(completed);
|
|
136186
137304
|
}
|
|
136187
137305
|
}
|
|
136188
137306
|
return lines;
|
|
@@ -136194,7 +137312,7 @@ function centeredSvgTextLines(text2, fontSize, options = {}) {
|
|
|
136194
137312
|
if (lines.length === 0) {
|
|
136195
137313
|
return [{ text: "", y: centerY }];
|
|
136196
137314
|
}
|
|
136197
|
-
const lineHeight = fontSize * LINE_HEIGHT_RATIO;
|
|
137315
|
+
const lineHeight = options.lineHeight ?? fontSize * (options.lineHeightRatio ?? LINE_HEIGHT_RATIO);
|
|
136198
137316
|
const blockTop = centerY - lines.length * lineHeight / 2;
|
|
136199
137317
|
return lines.map((line22, index) => ({
|
|
136200
137318
|
text: line22,
|
|
@@ -136241,6 +137359,12 @@ function buildChromeStyle(chrome) {
|
|
|
136241
137359
|
return s;
|
|
136242
137360
|
}
|
|
136243
137361
|
var TEXT_WIDTH_FRACTION = 0.82;
|
|
137362
|
+
var CJK_SMARTART_TEXT_RE = /[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u;
|
|
137363
|
+
var CJK_SMARTART_LINE_HEIGHT_RATIO = 1.33;
|
|
137364
|
+
var DEFAULT_SMARTART_LINE_HEIGHT_RATIO = 1.2;
|
|
137365
|
+
function drawingTextBaseLineHeightRatio(text2) {
|
|
137366
|
+
return CJK_SMARTART_TEXT_RE.test(text2 ?? "") ? CJK_SMARTART_LINE_HEIGHT_RATIO : DEFAULT_SMARTART_LINE_HEIGHT_RATIO;
|
|
137367
|
+
}
|
|
136244
137368
|
function underlyingFill(shape, shapes, index) {
|
|
136245
137369
|
const centerX = shape.x + shape.width / 2;
|
|
136246
137370
|
const centerY = shape.y + shape.height / 2;
|
|
@@ -136265,17 +137389,27 @@ function computeDrawingViewBox(shapes) {
|
|
|
136265
137389
|
let maxX = -Infinity;
|
|
136266
137390
|
let maxY = -Infinity;
|
|
136267
137391
|
for (const s of shapes) {
|
|
136268
|
-
|
|
136269
|
-
|
|
137392
|
+
const shapeMinX = Math.min(s.x, s.textFrameX ?? s.x);
|
|
137393
|
+
const shapeMinY = Math.min(s.y, s.textFrameY ?? s.y);
|
|
137394
|
+
const shapeMaxX = Math.max(
|
|
137395
|
+
s.x + s.width,
|
|
137396
|
+
(s.textFrameX ?? s.x) + (s.textFrameWidth ?? s.width)
|
|
137397
|
+
);
|
|
137398
|
+
const shapeMaxY = Math.max(
|
|
137399
|
+
s.y + s.height,
|
|
137400
|
+
(s.textFrameY ?? s.y) + (s.textFrameHeight ?? s.height)
|
|
137401
|
+
);
|
|
137402
|
+
if (shapeMinX < minX) {
|
|
137403
|
+
minX = shapeMinX;
|
|
136270
137404
|
}
|
|
136271
|
-
if (
|
|
136272
|
-
minY =
|
|
137405
|
+
if (shapeMinY < minY) {
|
|
137406
|
+
minY = shapeMinY;
|
|
136273
137407
|
}
|
|
136274
|
-
if (
|
|
136275
|
-
maxX =
|
|
137408
|
+
if (shapeMaxX > maxX) {
|
|
137409
|
+
maxX = shapeMaxX;
|
|
136276
137410
|
}
|
|
136277
|
-
if (
|
|
136278
|
-
maxY =
|
|
137411
|
+
if (shapeMaxY > maxY) {
|
|
137412
|
+
maxY = shapeMaxY;
|
|
136279
137413
|
}
|
|
136280
137414
|
}
|
|
136281
137415
|
if (!Number.isFinite(minX)) {
|
|
@@ -136319,10 +137453,23 @@ function resolveShapeKind(shape, hasImage) {
|
|
|
136319
137453
|
return "image";
|
|
136320
137454
|
}
|
|
136321
137455
|
const normalized = (shape.shapeType ?? "").trim().toLowerCase();
|
|
136322
|
-
if (normalized === "
|
|
136323
|
-
return "
|
|
137456
|
+
if (normalized === "ellipse" || normalized === "oval") {
|
|
137457
|
+
return "ellipse";
|
|
137458
|
+
}
|
|
137459
|
+
const identityPresets = /* @__PURE__ */ new Set(["rect", "flowchartprocess", "roundrect"]);
|
|
137460
|
+
return identityPresets.has(normalized) || normalized.length === 0 ? "rect" : "path";
|
|
137461
|
+
}
|
|
137462
|
+
function drawingShapeTransform(shape, cx, cy) {
|
|
137463
|
+
const transforms = [];
|
|
137464
|
+
if (shape.rotation) {
|
|
137465
|
+
transforms.push(`rotate(${shape.rotation} ${cx} ${cy})`);
|
|
137466
|
+
}
|
|
137467
|
+
if (shape.flipHorizontal || shape.flipVertical) {
|
|
137468
|
+
transforms.push(
|
|
137469
|
+
`translate(${cx} ${cy}) scale(${shape.flipHorizontal ? -1 : 1} ${shape.flipVertical ? -1 : 1}) translate(${-cx} ${-cy})`
|
|
137470
|
+
);
|
|
136324
137471
|
}
|
|
136325
|
-
return
|
|
137472
|
+
return transforms.length > 0 ? transforms.join(" ") : void 0;
|
|
136326
137473
|
}
|
|
136327
137474
|
function projectDrawingShapes(elementId, shapes, viewBox, palette, style) {
|
|
136328
137475
|
const { minX, minY } = viewBox;
|
|
@@ -136337,12 +137484,38 @@ function projectDrawingShapes(elementId, shapes, viewBox, palette, style) {
|
|
|
136337
137484
|
const cx = relX + shape.width / 2;
|
|
136338
137485
|
const cy = relY + shape.height / 2;
|
|
136339
137486
|
const stroke = shape.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none");
|
|
136340
|
-
const transform =
|
|
137487
|
+
const transform = drawingShapeTransform(shape, cx, cy);
|
|
137488
|
+
const presetGeometry = kind === "path" ? getPresetShapeVectorGeometry(
|
|
137489
|
+
shape.shapeType,
|
|
137490
|
+
shape.width,
|
|
137491
|
+
shape.height,
|
|
137492
|
+
shape.shapeAdjustments
|
|
137493
|
+
) : void 0;
|
|
136341
137494
|
const fontSize = shape.fontSize ?? Math.max(8, Math.min(14, shape.height * 0.2));
|
|
137495
|
+
const hasTextFrame = Number.isFinite(shape.textFrameX) && Number.isFinite(shape.textFrameY) && Number.isFinite(shape.textFrameWidth) && Number.isFinite(shape.textFrameHeight) && (shape.textFrameWidth ?? 0) > 0 && (shape.textFrameHeight ?? 0) > 0;
|
|
137496
|
+
const textFrameX = (hasTextFrame ? shape.textFrameX : shape.x) - minX;
|
|
137497
|
+
const textFrameY = (hasTextFrame ? shape.textFrameY : shape.y) - minY;
|
|
137498
|
+
const textFrameWidth = hasTextFrame ? shape.textFrameWidth : shape.width;
|
|
137499
|
+
const textFrameHeight = hasTextFrame ? shape.textFrameHeight : shape.height;
|
|
137500
|
+
const textInsetLeft = shape.textInsetLeft ?? 0;
|
|
137501
|
+
const textInsetRight = shape.textInsetRight ?? 0;
|
|
137502
|
+
const textInsetTop = shape.textInsetTop ?? 0;
|
|
137503
|
+
const textInsetBottom = shape.textInsetBottom ?? 0;
|
|
137504
|
+
const textContentWidth = Math.max(1, textFrameWidth - textInsetLeft - textInsetRight);
|
|
137505
|
+
const textContentHeight = Math.max(1, textFrameHeight - textInsetTop - textInsetBottom);
|
|
137506
|
+
const textCenterX = textFrameX + textInsetLeft + textContentWidth / 2;
|
|
137507
|
+
const textCenterY = textFrameY + textInsetTop + textContentHeight / 2;
|
|
137508
|
+
const textWrapWidth = hasTextFrame ? textContentWidth : shape.width * TEXT_WIDTH_FRACTION;
|
|
137509
|
+
const authoredLineHeightRatio = shape.lineHeightRatio ?? 1;
|
|
137510
|
+
const lineHeightRatio = drawingTextBaseLineHeightRatio(shape.text) * authoredLineHeightRatio + (shape.lineSpacingAfterRatio ?? 0);
|
|
137511
|
+
const lineHeight = shape.lineHeight !== void 0 || shape.lineSpacingAfter !== void 0 ? (shape.lineHeight ?? fontSize * drawingTextBaseLineHeightRatio(shape.text) * authoredLineHeightRatio) + (shape.lineSpacingAfter ?? 0) : void 0;
|
|
136342
137512
|
return {
|
|
136343
137513
|
key: `${elementId}-dsp-${shape.id}-${i}`,
|
|
136344
137514
|
kind,
|
|
136345
|
-
...
|
|
137515
|
+
...presetGeometry ? {
|
|
137516
|
+
pathData: presetGeometry.d,
|
|
137517
|
+
pathTransform: [transform, `translate(${relX} ${relY})`].filter(Boolean).join(" ")
|
|
137518
|
+
} : {},
|
|
136346
137519
|
...gradient ? { gradient } : {},
|
|
136347
137520
|
x: relX,
|
|
136348
137521
|
y: relY,
|
|
@@ -136357,13 +137530,20 @@ function projectDrawingShapes(elementId, shapes, viewBox, palette, style) {
|
|
|
136357
137530
|
transform,
|
|
136358
137531
|
imageUrl: shape.fillImageUrl,
|
|
136359
137532
|
textLines: shape.text ? centeredSvgTextLines(shape.text, fontSize, {
|
|
136360
|
-
maxWidth:
|
|
136361
|
-
centerY:
|
|
137533
|
+
maxWidth: textWrapWidth,
|
|
137534
|
+
centerY: textCenterY,
|
|
137535
|
+
lineHeight,
|
|
137536
|
+
lineHeightRatio
|
|
136362
137537
|
}) : [],
|
|
136363
|
-
textX:
|
|
136364
|
-
textY:
|
|
137538
|
+
textX: textCenterX,
|
|
137539
|
+
textY: textCenterY,
|
|
137540
|
+
textWidth: textContentWidth,
|
|
137541
|
+
textHeight: textContentHeight,
|
|
136365
137542
|
fontColor: shape.fontColor ?? drawingShapeLabelColor(shape, shapes, i, fill),
|
|
136366
|
-
fontSize
|
|
137543
|
+
fontSize,
|
|
137544
|
+
fontFamily: shape.fontFamily ? getSubstituteFontFamily(shape.fontFamily) : void 0,
|
|
137545
|
+
fontWeight: shape.fontWeight,
|
|
137546
|
+
fontStyle: shape.fontStyle
|
|
136367
137547
|
};
|
|
136368
137548
|
});
|
|
136369
137549
|
}
|
|
@@ -136513,7 +137693,7 @@ function resolveSlideSizeSelection(input) {
|
|
|
136513
137693
|
}
|
|
136514
137694
|
var EXPORT_ASSEMBLING_PERCENT = 95;
|
|
136515
137695
|
var EXPORT_DONE_PERCENT = 100;
|
|
136516
|
-
function
|
|
137696
|
+
function clampPercent2(value) {
|
|
136517
137697
|
if (Number.isNaN(value)) {
|
|
136518
137698
|
return 0;
|
|
136519
137699
|
}
|
|
@@ -136523,13 +137703,13 @@ function slideProgressPercent(current, total, span = 90) {
|
|
|
136523
137703
|
if (total <= 0) {
|
|
136524
137704
|
return 0;
|
|
136525
137705
|
}
|
|
136526
|
-
return
|
|
137706
|
+
return clampPercent2(current / total * span);
|
|
136527
137707
|
}
|
|
136528
137708
|
function recordProgressPercent(current, total) {
|
|
136529
137709
|
if (total <= 0) {
|
|
136530
137710
|
return 45;
|
|
136531
137711
|
}
|
|
136532
|
-
return
|
|
137712
|
+
return clampPercent2(45 + current / total * 45);
|
|
136533
137713
|
}
|
|
136534
137714
|
function slideStatusLabel(verb, current, total) {
|
|
136535
137715
|
return `${verb} slide ${current + 1} of ${total}...`;
|
|
@@ -142737,7 +143917,8 @@ function masterViewParts(document2, target) {
|
|
|
142737
143917
|
masterIndex: target.masterIndex,
|
|
142738
143918
|
elements: master.elements ?? [],
|
|
142739
143919
|
backgroundColor: master.backgroundColor,
|
|
142740
|
-
backgroundImage: master.backgroundImage
|
|
143920
|
+
backgroundImage: master.backgroundImage,
|
|
143921
|
+
backgroundImageProperties: master.backgroundImageProperties
|
|
142741
143922
|
};
|
|
142742
143923
|
const layout = target.layoutIndex === null ? void 0 : master.layouts?.[target.layoutIndex];
|
|
142743
143924
|
if (!layout || target.layoutIndex === null) {
|
|
@@ -142752,7 +143933,8 @@ function masterViewParts(document2, target) {
|
|
|
142752
143933
|
layoutIndex: target.layoutIndex,
|
|
142753
143934
|
elements: layout.elements ?? [],
|
|
142754
143935
|
backgroundColor: layout.backgroundColor ?? master.backgroundColor,
|
|
142755
|
-
backgroundImage: layout.backgroundImage ?? master.backgroundImage
|
|
143936
|
+
backgroundImage: layout.backgroundImage ?? master.backgroundImage,
|
|
143937
|
+
backgroundImageProperties: layout.backgroundImage ? layout.backgroundImageProperties : master.backgroundImageProperties
|
|
142756
143938
|
}
|
|
142757
143939
|
];
|
|
142758
143940
|
}
|
|
@@ -142763,7 +143945,8 @@ function auxiliaryParts(kind, part) {
|
|
|
142763
143945
|
path: part.path,
|
|
142764
143946
|
elements: part.elements ?? [],
|
|
142765
143947
|
backgroundColor: part.backgroundColor,
|
|
142766
|
-
backgroundImage: part.backgroundImage
|
|
143948
|
+
backgroundImage: part.backgroundImage,
|
|
143949
|
+
backgroundImageProperties: part.backgroundImageProperties
|
|
142767
143950
|
}
|
|
142768
143951
|
] : [];
|
|
142769
143952
|
}
|
|
@@ -142782,7 +143965,8 @@ function masterViewPseudoSlide(document2, target) {
|
|
|
142782
143965
|
slideNumber: 0,
|
|
142783
143966
|
elements: parts.flatMap((part) => [...part.elements]),
|
|
142784
143967
|
backgroundColor: primary.backgroundColor,
|
|
142785
|
-
backgroundImage: primary.backgroundImage
|
|
143968
|
+
backgroundImage: primary.backgroundImage,
|
|
143969
|
+
backgroundImageProperties: primary.backgroundImageProperties
|
|
142786
143970
|
};
|
|
142787
143971
|
}
|
|
142788
143972
|
function masterViewElements(document2, target) {
|
|
@@ -146004,4 +147188,4 @@ function segmentFrameCount(durationMs, fps) {
|
|
|
146004
147188
|
* `<p:extLst>` (optional)
|
|
146005
147189
|
*/
|
|
146006
147190
|
|
|
146007
|
-
export { ACTION_BUTTON_PRESETS, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_NAV, BACKSTAGE_TEMPLATES, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CATEGORIES, CHARACTER_SPACING_OPTIONS, CHART_TYPE_OPTIONS, COLOR_MAP_ALIAS_KEYS, COMMENT_MARKER_SIZE, COMMENT_MENTION_ATTRIBUTE, COMMENT_MENTION_CLASS, COMMON_FONTS, CONNECTION_TIMEOUT_MS, CONNECTOR_SITE_SNAP_PX, CUSTOM_FONT_ACCEPT, DEBOUNCE_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_FONT_FAMILY, DEFAULT_INSERT_CHART_KIND, DEFAULT_MOTION_PATH_PRESET_ID, DEFAULT_PALETTE2, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DIRECTIONAL_PRESETS, DUOTONE_PRESETS, ELEMENT_ACTION_TYPE_OPTIONS, EMPHASIS_PRESET_VALUES, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPANDED_MAX_HEIGHT, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, GRADIENT_TYPE_OPTIONS, HANDOUT_OPTIONS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INDENT_PX, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, LBL, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_HINT_CLASS, LINK_TOOLTIP_HOST_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_PANEL_CLASS, LOCAL_SYNC_ORIGIN, MATERIAL_PRESETS, MAX_INDENT_LEVEL, MAX_ZOOM_SCALE, MEDIA_CHROME_ATTRIBUTE, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, PATTERN_OPTIONS, PEN_COLORS, PPTX_OPEN_ACCEPT, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_HIT_TEST_CSS, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENTATION_OPEN_EXTENSIONS, PRESENTATION_STAGE_ATTRIBUTE, PRESENTER_CONSOLE_CLASSES, PRESENTER_CONSOLE_CONTROLS, PRESENTER_NAVIGATOR_LABEL_KEYS, PRESENT_TOOLBAR_CLASSES, PRESETS, PRESET_THEMES, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RIBBON_SHAPE_SWATCHES, RIBBON_TRANSITION_PRESETS, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_SHOW_OPTIONS, SLIDE_SIZE_PRESETS, SLIDE_TEMPLATES, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, SORTER_MAX_ZOOM, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, STATUS_BAR_CLASSES, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_SLOT_LABEL_KEYS, THEME_PRESETS, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_MORPH_OPTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_SOUND_NONE_VALUE, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SPEED_OPTIONS, TRANSITION_VALID_DIRECTIONS, ThemePresets, VIEWER_OPTIONS_TABS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, acceptAutosaveRecovery, acceptsPresentationInput, actionAffordanceLabels, activateModalFocus, addChartCategory, addChartSeries, addCommentToList, addQuickAccessCommand, addSection, addSiblingAfter, addSmartArtNodeAsChild, addTagToCollections, advanceChartValueDrag, alignElements, animationEffectLabel, annotationOverlayZIndex, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyAnimationTimelineOrder, applyAutoCorrect, applyCaseTransformToSegments, applyChartBuildReveal, applyChartPartHighlight, applyColorChange, applyDuotone, applyFindReplacements, applyFormatToElement, applyMotionPathPreset, applyOutlineEdit, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyStyleToSelectedSegments, applyTableCellImagePatches, applyTableStyleImagePatches, applyTableStylePreset, applyThemeOverrideToSlide, applyThemeToData, applyTransitionSoundFile, attachPresentationVisibilityPause, authorConnectorBetweenSites, autosaveSnapshotMark, availableQuickAccessCommands, backstageCardsFor, beginChartValueDrag, beginShapeAdjustment, bringForward, bringToFront, build3DExtrusionData, buildActiveSessionUsers, buildAnimationTimelineBars, buildAnimationTimelineRows, buildAreaChart3DDataForElement, buildBarActions, buildBarChart3DDataForElement, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildChartViewModel, buildChromeStyle, buildCollaborationShareUrl, buildCommentMarkers, buildContextMenuEntries, buildCreateCollaborationConfig, buildCssGradientFromShapeStyle, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildFontCatalog, buildHandoutsHtml, buildHollowHitOutline, buildInitialGuides, buildJoinCollaborationConfig, buildLayoutPreviewGeometry, buildLineChart3DDataForElement, buildMorphAnimationRules, buildMorphTransitionPlan, buildMotionPathPreview, buildNotesHtml, buildNotesPdfBytes, buildNotesPrintHtml, buildOleObjectNamePatch, buildOutline, buildOutlineHtml, buildParagraphs, buildPieChart3DDataForElement, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildRectPathGradient, buildRunTabLines, buildSaveSlides, buildSlideTemplateContent, buildSlideTemplateSlide, buildSlidesHtml, buildSlidesPdfBytes, buildSmartArt3DModel, buildSmartArtA11y, buildSmartArtPresetData, buildStrokeOutline, buildSubpathFillOverlay, buildSubpathPaints, buildSummaryZoomView, buildSurfaceChart3DDataForElement, buildSvgGradientDef, buildTabContext, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBodyLayoutStyle, buildTextBuildSpec, buildThemeColorGrid, buildThemeColorMap, buildUserFontFaceStyles, canAddTopLevelNode, canCommitActionType, canGoNext, canGoPrevious, canInteractWithElement, canRemoveTopLevelNode, canvasToJpegData, cellRunStyle, cellStyleToCss, centeredSvgTextLines, chartPartToAttrs, chartPreserveAspectRatio, clampCropValue, clampNotesFontSize, clampOptionNumber, clampPercent, clampSorterZoom, clampTransitionNumber, clampUnitInterval2 as clampUnitInterval, clampZoomScale, classifyExtraConnections, classifyMediaType, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearStoredViewerPrefs, clearTransitionSound, cloneElementForPaste, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collectConnectorSiteCandidates, collectImagePaths, collectMediaElements, collectTableCellImagePaths, collectTableStyleImagePaths, collectUsedFonts, colorWithOpacity, commentTextSegments, comparePresentation, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeAnchoredPopupPosition, computeChartLegendLayout, computeColorFilter, computeColumnBoundaries, computeDrawingViewBox, computeEntranceAnimationDelay, computeGridSpacingPx, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSlideIndices, computeSmartArtElementLayout, computeSnapToShape, computeSplitCell, computeVirtualRange, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createDefaultChartElement, createDepartureChannel, createInitialPresentationSnapshot, createPlainNotesSegments, createPresenceProjector, createPresentationKeyBuffer, createPresentationSessionId, createPresenterShowGuard, createPresenterTimer, createSyncGate, createTouchGestureRecognizer, createViewerOptionsStore, createViewerZoomStore, createWheelStepBuffer, customGeometryPathsToSvgSubpaths, defaultCssVars, defaultRadius, defaultThemeColors, deleteAutosaveSnapshot, deleteSection, deleteTableColumn, deleteTableRow, deleteTagFromCollections, demote, deriveSlideFieldContext, deriveViewportBreakpoints, describeFontEmbedding, describeSmartArtBounds, detectOrientation, detectTouchDevice, discardAutosaveRecovery, distributeElements, downloadBlob, downloadDataUrl, editCommentInList, elementActionToPptxAction, elementLockTogglePatch, embeddedFontSaveOptions, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, ensureChartInteractionStyles, erasePresentationInkAt, evenColumnWidths, evenRowHeights, exportDeckJson, extraQuickAccessCommands, extractPathPoints, filterCommands, filterHiddenSlideIndices, filterInteractableIds, filterRenderedElements, findChartPartTarget, findConnectorSiteNear, findEraserHitElementId, findInSlides, findMediaElementByElementId, findSmartArtNodeText, finishPrintWindow, firstShowSlideIndex, flattenNodes, flattenTagCollections, forgetSessionDeck, formatAxisValue, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, generateBroadcastRoomId, generateElementId, generateNibMarks, generateNoteLineCount, generatePressureCircles, generateTicks, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getComputedFillStyle, getComputedStrokeStyle, getConnectorEndpointHandles, getContentPartReplayStyles, getCurrentParagraphIndex, getDraggedShapeAdjustments, getDuotoneCachedResult, getEffectSoundState, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFitStyle, getImageSvgFilters, getImageTilingStyle, getInkReplayStyles, getInlineEditorSelection, getLocalStorageUsageSummary, getNotesPrintableArea, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleObjectTypeLabel, getOleTypeColor, getOleTypeLabel, getOverflowSegments, getPatternSvg, getPendingSelectionRestore, getPresetShapeClipPath, getPrintableArea, getResolvedShapeClipPath, getRoundRectRadiusPx2, getSessionTabId, getShapeAdjustmentHandleDescriptors, getShapeConnectionSites, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeSvgFilter, getSubstituteFontFamily, getSvgStrokeDasharray, getTableCellBandStyle, getTextBodyRotationTransform, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasPressureVariation, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hiddenSlideCue, hollowTextFillStyle, inlineElementPointerEvents, insertTableColumn, insertTableRow, isActionHidden, isBlackboardActive, isBrowserOpenableMime, isCalloutShape, isCellInRect, isCurrentLayout, isEditableMotionPath, isEditableTextElement, isEditorTextInputTarget, isElementActionable, isElementLocked, isElementRendered, isExportAbortError, isHollowShapeElement, isImageLikeElement, isImageTiled, isInkElement, isKeyboardOpen, isLegacyBinaryPresentation, isLinkedTextBox, isMixedContentBlocked, isMobileViewport, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isStrokeOnlyPresetElement, isSupportedPresentationFile, isTemplateElementId3 as isTemplateElementId, isUrlSafe, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, loadAudienceContent, loadSessionDeck, makeCloneId, makeSlideId, mapEditingWheel, mapEditorKey, mapOutlineKey, mapPresentationKey, mapPresentationWheel, mapSlideSorterKey, masterViewBackgroundColor, masterViewElements, masterViewPseudoSlide, mayLeaveSlideShow, mediaFallbackIcon, mediaFallbackLabelKey, mediaFallbackVisual, mediaPlaybackAttributes, mediaTransportVisible, mergeAdditiveSelection, mergeCells, mergePresentationSnapshot, mergeShapes, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountAreaChart3D, mountBarChart3D, mountLineChart3D, mountModel3D, mountPieChart3D, mountSurfaceChart3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, nestedTextDecorationStyle, newTableElement, nextPresentedSlide, nextShowSlideIndex, normalizeColorsForCapture, normalizeHexColor, normalizeStrokeDashType, notesSegmentsToSpans, observeYDocSlides, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPendingPrintWindow, openPptxFile, openReadingView, openUrlInNewTab, paintedStrokeWidth, paragraphsToSegments, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, parseSegmentsFromRichEditor, partitionTemplateElements, patchChartData, pickSupportedMimeType, pieceLetterSpacing, placeAudienceWindow, placeCaretAtEnd, playFeedbackSound, playSlideTransitionPreview, polygonsToSvgPath, pptxActionToElementAction, preprocessCssForCapture, presentationBaseName, presentationInkPath, presenterElapsed, presenterNextDisabled, presenterPaneAdvancesOnClick, presenterPrevDisabled, presenterTimerProgress, pressuresToWidths, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, probeAutosaveRecovery, projectDrawingShapes, promote, publishLiveGeometry, publishLiveInlineText, quickStyleSwatchCss, reResolveSlideColors, readBackstageRecentFile, readRibbonTransitionDraft, readSlideShowOption, readSlidesFromYDoc, readSoundFileAsDataUrl, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, rebuildTableStructureInRawXml, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, redistributeColumnWidth, registerCollaborationTeardown, registerCustomFont, registerPersistentAudio, remapTextToSegments, rememberSessionDeck, removeChartCategory, removeChartSeries, removeCommentFromList, removeEmptyNode, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorder2 as reorder, reorderAnimationTimelineRows, replaceMasterViewElements, replyToCommentInList, rerouteConnectorsForMovedElements, resetPresenterTimer, resetSlideLayoutPath, resolve3DRenderingFlags, resolveActionType, resolveAudienceScreenPlacement, resolveAuthoredCustomShowId, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveAutosaveActivation, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, resolveChartKind, resolveConnectorEndpointUpdate, resolveDefaultFontFamily, resolveDefaultPrintSettings, resolveDrawingShapeNodeId, resolveElementActionAffordance, resolveElementInteractivity, resolveExpiredAutosaveSnapshots, resolveFontKerning, resolveGroupChildFill, resolveHistoryDepth, resolveImageResolutionScale, resolveInkColor, resolveInkOpacity, resolveInkWidth, resolveInlineEditAutoFitHeight, resolveMetricTrackingPx, resolveNotesSchematicBodyFontSizePx, resolveNotesSegments, resolveOleType, resolveOptionRootClasses, resolvePalette, resolvePresentationAction, resolveProfileInitial, resolveScreenTip, resolveScriptFontSet, resolveSelectionPaneRename, resolveShapeGeometry, resolveShowSlideIndexes, resolveSlideSizeSelection, resolveTemplateBackgroundRows, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransportForServerUrl, resolveViewerAddinRows, restoreSegmentSelection, restoreSessionDeck, revealedSmartArtNodeCount, ribbonTransitionUpdates, rulerDragToGuidePosition, runMediaCommand, runPresentationAction, safeOpenUrl, sanitizeColor, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveDeckWithPassword, saveViewerProfile, savedPresentationFileName, scanAvailableFontFamilies, schemaLabel, scopeLayoutOptionsToSlide, segmentFrameCount, segmentsToEditorHtml, segmentsToParagraphs, segmentsToPlainText, sendBackward, sendToBack, setAfterAnimation, setAfterAnimationColor, setCachedResult, setCellText, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDuotoneCachedResult, setEffectSound, setMasterViewBackgroundColor, setMotionPath, setMotionPathEnd, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, shapeFillChange, shapeOutlineChange, shouldAutoFollowBroadcaster, shouldClearAutosaveCacheOnClose, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldDiscardAutosaveOnSuccessfulSave, shouldLoopContinuously, shouldProbeAutosaveRecovery, shouldRoomSlidesReplaceLoad, shouldShowAutosaveRecoveryPrompt, shouldUseSvgWarp, shouldWriteAutosaveSnapshot, siblingCount, siblingIndex, slideProgressPercent, slideShowOptionChange, slideSizeFromPreset, slideSizeToCanvasPx, slideStatusLabel, snapBoxToGrid, splitCell, splitRunByScriptFont, splitRunForMetrics, stepPresenterZoom, stopAllPersistentAudio, storeAudienceContent, strokeOutlineViewBox, styleShadowFilter, substituteFieldText, svgGradientFillRef, svgLineCap, svgPathToPolygons, swapPresentationWindows, switchSmartArtLayout, tableCellCss, tableContainerCss, templateSchemeFromTheme, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, themeColorLabel, themeColorSchemesEqual, themeToCssVars, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toSlideIndex, toggleBlackboard, toggleCommentResolvedInList, togglePresenterTimer, toggleSheet, toggleText3dExtrusion, transformTextCase, transitionSoundOptions, transitionSoundSelectedValue, ungroupElements, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateMasterViewElement, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateTagInCollections, validateRoomId, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewerOptionsToPreferences, warpPreviewPath, withChartTitle, withConnectorEndpointUpdate, withFrameSlides, withSlideSizeOrientation, withSlidesPerPage, writeStoredViewerPrefs };
|
|
147191
|
+
export { ACTION_BUTTON_PRESETS, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_NAV, BACKSTAGE_TEMPLATES, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CATEGORIES, CHARACTER_SPACING_OPTIONS, CHART_TYPE_OPTIONS, COLOR_MAP_ALIAS_KEYS, COMMENT_MARKER_SIZE, COMMENT_MENTION_ATTRIBUTE, COMMENT_MENTION_CLASS, COMMON_FONTS, CONNECTION_TIMEOUT_MS, CONNECTOR_SITE_SNAP_PX, CUSTOM_FONT_ACCEPT, DEBOUNCE_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_FONT_FAMILY, DEFAULT_INSERT_CHART_KIND, DEFAULT_MOTION_PATH_PRESET_ID, DEFAULT_PALETTE2, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DIRECTIONAL_PRESETS, DUOTONE_PRESETS, ELEMENT_ACTION_TYPE_OPTIONS, EMPHASIS_PRESET_VALUES, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPANDED_MAX_HEIGHT, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, GRADIENT_TYPE_OPTIONS, HANDOUT_OPTIONS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INDENT_PX, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, LBL, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_HINT_CLASS, LINK_TOOLTIP_HOST_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_PANEL_CLASS, LOCAL_SYNC_ORIGIN, MATERIAL_PRESETS, MAX_INDENT_LEVEL, MAX_ZOOM_SCALE, MEDIA_CHROME_ATTRIBUTE, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, PATTERN_OPTIONS, PEN_COLORS, PPTX_OPEN_ACCEPT, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_HIT_TEST_CSS, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENTATION_OPEN_EXTENSIONS, PRESENTATION_STAGE_ATTRIBUTE, PRESENTER_CONSOLE_CLASSES, PRESENTER_CONSOLE_CONTROLS, PRESENTER_NAVIGATOR_LABEL_KEYS, PRESENT_TOOLBAR_CLASSES, PRESETS, PRESET_THEMES, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RIBBON_SHAPE_SWATCHES, RIBBON_TRANSITION_PRESETS, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_SHOW_OPTIONS, SLIDE_SIZE_PRESETS, SLIDE_TEMPLATES, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, SORTER_MAX_ZOOM, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, STATUS_BAR_CLASSES, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_SLOT_LABEL_KEYS, THEME_PRESETS, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_MORPH_OPTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_SOUND_NONE_VALUE, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SPEED_OPTIONS, TRANSITION_VALID_DIRECTIONS, ThemePresets, VIEWER_OPTIONS_TABS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, acceptAutosaveRecovery, acceptsPresentationInput, actionAffordanceLabels, activateModalFocus, addChartCategory, addChartSeries, addCommentToList, addQuickAccessCommand, addSection, addSiblingAfter, addSmartArtNodeAsChild, addTagToCollections, advanceChartValueDrag, alignElements, animationEffectLabel, annotationOverlayZIndex, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyAnimationTimelineOrder, applyAutoCorrect, applyCaseTransformToSegments, applyChartBuildReveal, applyChartPartHighlight, applyColorChange, applyDuotone, applyFindReplacements, applyFormatToElement, applyMotionPathPreset, applyOutlineEdit, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyStyleToSelectedSegments, applyTableCellImagePatches, applyTableStyleImagePatches, applyTableStylePreset, applyThemeOverrideToSlide, applyThemeToData, applyTransitionSoundFile, attachPresentationVisibilityPause, authorConnectorBetweenSites, autosaveSnapshotMark, availableQuickAccessCommands, backstageCardsFor, beginChartValueDrag, beginShapeAdjustment, bringForward, bringToFront, build3DExtrusionData, buildActiveSessionUsers, buildAnimationTimelineBars, buildAnimationTimelineRows, buildAreaChart3DDataForElement, buildBarActions, buildBarChart3DDataForElement, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildChartViewModel, buildChromeStyle, buildCollaborationShareUrl, buildCommentMarkers, buildContextMenuEntries, buildCreateCollaborationConfig, buildCssGradientFromShapeStyle, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildFontCatalog, buildHandoutsHtml, buildHollowHitOutline, buildInitialGuides, buildJoinCollaborationConfig, buildLayoutPreviewGeometry, buildLineChart3DDataForElement, buildMorphAnimationRules, buildMorphTransitionPlan, buildMotionPathPreview, buildNotesHtml, buildNotesPdfBytes, buildNotesPrintHtml, buildOleObjectNamePatch, buildOutline, buildOutlineHtml, buildParagraphs, buildPieChart3DDataForElement, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildRectPathGradient, buildRunTabLines, buildSaveSlides, buildSlideTemplateContent, buildSlideTemplateSlide, buildSlidesHtml, buildSlidesPdfBytes, buildSmartArt3DModel, buildSmartArtA11y, buildSmartArtPresetData, buildStrokeOutline, buildSubpathFillOverlay, buildSubpathPaints, buildSummaryZoomView, buildSurfaceChart3DDataForElement, buildSvgGradientDef, buildTabContext, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBodyLayoutStyle, buildTextBuildSpec, buildThemeColorGrid, buildThemeColorMap, buildUserFontFaceStyles, canAddTopLevelNode, canCommitActionType, canGoNext, canGoPrevious, canInteractWithElement, canRemoveTopLevelNode, canvasToJpegData, cellRunStyle, cellStyleToCss, centeredSvgTextLines, chartPartToAttrs, chartPreserveAspectRatio, clampCropValue, clampNotesFontSize, clampOptionNumber, clampPercent2, clampSorterZoom, clampTransitionNumber, clampUnitInterval2 as clampUnitInterval, clampZoomScale, classifyExtraConnections, classifyMediaType, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearStoredViewerPrefs, clearTransitionSound, cloneElementForPaste, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collectConnectorSiteCandidates, collectImagePaths, collectMediaElements, collectTableCellImagePaths, collectTableStyleImagePaths, collectUsedFonts, colorWithOpacity, commentTextSegments, comparePresentation, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeAnchoredPopupPosition, computeChartLegendLayout, computeColorFilter, computeColumnBoundaries, computeDrawingViewBox, computeEntranceAnimationDelay, computeGridSpacingPx, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSlideIndices, computeSmartArtElementLayout, computeSnapToShape, computeSplitCell, computeVirtualRange, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createDefaultChartElement, createDepartureChannel, createInitialPresentationSnapshot, createPlainNotesSegments, createPresenceProjector, createPresentationKeyBuffer, createPresentationSessionId, createPresenterShowGuard, createPresenterTimer, createSyncGate, createTouchGestureRecognizer, createViewerOptionsStore, createViewerZoomStore, createWheelStepBuffer, customGeometryPathsToSvgSubpaths, defaultCssVars, defaultRadius, defaultThemeColors, deleteAutosaveSnapshot, deleteSection, deleteTableColumn, deleteTableRow, deleteTagFromCollections, demote, deriveSlideFieldContext, deriveViewportBreakpoints, describeFontEmbedding, describeSmartArtBounds, detectOrientation, detectTouchDevice, discardAutosaveRecovery, distributeElements, downloadBlob, downloadDataUrl, editCommentInList, elementActionToPptxAction, elementLockTogglePatch, embeddedFontSaveOptions, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, ensureChartInteractionStyles, erasePresentationInkAt, evenColumnWidths, evenRowHeights, exportDeckJson, extraQuickAccessCommands, extractPathPoints, filterCommands, filterHiddenSlideIndices, filterInteractableIds, filterRenderedElements, findChartPartTarget, findConnectorSiteNear, findEraserHitElementId, findInSlides, findMediaElementByElementId, findSmartArtNodeText, finishPrintWindow, firstShowSlideIndex, flattenNodes, flattenTagCollections, forgetSessionDeck, formatAxisValue, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, generateBroadcastRoomId, generateElementId, generateNibMarks, generateNoteLineCount, generatePressureCircles, generateTicks, getAnimationColorBaseStyle, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getComputedFillStyle, getComputedStrokeStyle, getConnectorEndpointHandles, getContentPartReplayStyles, getCurrentParagraphIndex, getDraggedShapeAdjustments, getDuotoneCachedResult, getEffectSoundState, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFitStyle, getImageSvgFilters, getImageTilingStyle, getInkReplayStyles, getInlineEditorSelection, getLocalStorageUsageSummary, getNotesPrintableArea, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleObjectTypeLabel, getOleTypeColor, getOleTypeLabel, getOverflowSegments, getPatternSvg, getPendingSelectionRestore, getPresetShapeClipPath, getPresetShapeVectorGeometry, getPrintableArea, getSessionTabId, getShapeAdjustmentHandleDescriptors, getShapeConnectionSites, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeSvgFilter, getSubstituteFontFamily, getSvgStrokeDasharray, getTableCellBandStyle, getTextBodyRotationTransform, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasPressureVariation, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hiddenSlideCue, hollowTextFillStyle, inlineElementPointerEvents, insertTableColumn, insertTableRow, isActionHidden, isBlackboardActive, isBrowserOpenableMime, isCalloutShape, isCellInRect, isCurrentLayout, isEditableMotionPath, isEditableTextElement, isEditorTextInputTarget, isElementActionable, isElementLocked, isElementRendered, isExportAbortError, isHollowShapeElement, isImageLikeElement, isImageTiled, isInkElement, isKeyboardOpen, isLegacyBinaryPresentation, isLinkedTextBox, isMixedContentBlocked, isMobileViewport, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isStrokeOnlyPresetElement, isSupportedPresentationFile, isTemplateElementId3 as isTemplateElementId, isUrlSafe, isWedgeCalloutPresetShape, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, loadAudienceContent, loadSessionDeck, makeCloneId, makeSlideId, mapEditingWheel, mapEditorKey, mapOutlineKey, mapPresentationKey, mapPresentationWheel, mapSlideSorterKey, masterViewBackgroundColor, masterViewElements, masterViewPseudoSlide, mayLeaveSlideShow, mediaFallbackIcon, mediaFallbackLabelKey, mediaFallbackVisual, mediaPlaybackAttributes, mediaTransportVisible, mergeAdditiveSelection, mergeCells, mergePresentationSnapshot, mergeShapes, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountAreaChart3D, mountBarChart3D, mountLineChart3D, mountModel3D, mountPieChart3D, mountSurfaceChart3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, nestedTextDecorationStyle, newTableElement, nextPresentedSlide, nextShowSlideIndex, normalizeColorsForCapture, normalizeHexColor, normalizeStrokeDashType, notesSegmentsToSpans, observeYDocSlides, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPendingPrintWindow, openPptxFile, openReadingView, openUrlInNewTab, paintedStrokeWidth, paragraphsToSegments, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, parseSegmentsFromRichEditor, partitionTemplateElements, patchChartData, pickSupportedMimeType, pieceLetterSpacing, placeAudienceWindow, placeCaretAtEnd, playFeedbackSound, playSlideTransitionPreview, polygonsToSvgPath, pptxActionToElementAction, preprocessCssForCapture, presentationBaseName, presentationInkPath, presenterElapsed, presenterNextDisabled, presenterPaneAdvancesOnClick, presenterPrevDisabled, presenterTimerProgress, pressuresToWidths, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, probeAutosaveRecovery, projectDrawingShapes, promote, publishLiveGeometry, publishLiveInlineText, quickStyleSwatchCss, reResolveSlideColors, readBackstageRecentFile, readRibbonTransitionDraft, readSlideShowOption, readSlidesFromYDoc, readSoundFileAsDataUrl, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, rebuildTableStructureInRawXml, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, redistributeColumnWidth, registerCollaborationTeardown, registerCustomFont, registerPersistentAudio, remapTextToSegments, rememberSessionDeck, removeChartCategory, removeChartSeries, removeCommentFromList, removeEmptyNode, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorder2 as reorder, reorderAnimationTimelineRows, replaceMasterViewElements, replyToCommentInList, rerouteConnectorsForMovedElements, resetPresenterTimer, resetSlideLayoutPath, resolve3DRenderingFlags, resolveActionType, resolveAudienceScreenPlacement, resolveAuthoredCustomShowId, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveAutosaveActivation, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, resolveChartKind, resolveConnectorEndpointUpdate, resolveDefaultFontFamily, resolveDefaultPrintSettings, resolveDrawingShapeNodeId, resolveElementActionAffordance, resolveElementInteractivity, resolveExpiredAutosaveSnapshots, resolveFontKerning, resolveGroupChildFill, resolveHistoryDepth, resolveImageResolutionScale, resolveInkColor, resolveInkOpacity, resolveInkWidth, resolveInlineEditAutoFitHeight, resolveMetricTrackingPx, resolveNotesSchematicBodyFontSizePx, resolveNotesSegments, resolveOleType, resolveOptionRootClasses, resolvePalette, resolvePresentationAction, resolveProfileInitial, resolveScreenTip, resolveScriptFontSet, resolveSelectionPaneRename, resolveShapeGeometry, resolveShowSlideIndexes, resolveSlideSizeSelection, resolveTemplateBackgroundRows, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransportForServerUrl, resolveViewerAddinRows, restoreSegmentSelection, restoreSessionDeck, revealedSmartArtNodeCount, ribbonTransitionUpdates, rulerDragToGuidePosition, runMediaCommand, runPresentationAction, safeOpenUrl, sanitizeColor, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveDeckWithPassword, saveViewerProfile, savedPresentationFileName, scanAvailableFontFamilies, schemaLabel, scopeLayoutOptionsToSlide, segmentFrameCount, segmentsToEditorHtml, segmentsToParagraphs, segmentsToPlainText, sendBackward, sendToBack, setAfterAnimation, setAfterAnimationColor, setCachedResult, setCellText, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDuotoneCachedResult, setEffectSound, setMasterViewBackgroundColor, setMotionPath, setMotionPathEnd, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, shapeFillChange, shapeOutlineChange, shouldAutoFollowBroadcaster, shouldClearAutosaveCacheOnClose, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldDiscardAutosaveOnSuccessfulSave, shouldLoopContinuously, shouldProbeAutosaveRecovery, shouldRoomSlidesReplaceLoad, shouldShowAutosaveRecoveryPrompt, shouldUseSvgWarp, shouldWriteAutosaveSnapshot, siblingCount, siblingIndex, slideProgressPercent, slideShowOptionChange, slideSizeFromPreset, slideSizeToCanvasPx, slideStatusLabel, snapBoxToGrid, splitCell, splitRunByScriptFont, splitRunForMetrics, stepPresenterZoom, stopAllPersistentAudio, storeAudienceContent, strokeOutlineViewBox, styleShadowFilter, substituteFieldText, svgGradientFillRef, svgLineCap, svgPathToPolygons, swapPresentationWindows, switchSmartArtLayout, tableCellCss, tableContainerCss, templateSchemeFromTheme, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, themeColorLabel, themeColorSchemesEqual, themeToCssVars, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toSlideIndex, toggleBlackboard, toggleCommentResolvedInList, togglePresenterTimer, toggleSheet, toggleText3dExtrusion, transformTextCase, transitionSoundOptions, transitionSoundSelectedValue, ungroupElements, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateMasterViewElement, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateTagInCollections, validateRoomId, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewerOptionsToPreferences, warpPreviewPath, withChartTitle, withConnectorEndpointUpdate, withFrameSlides, withSlideSizeOrientation, withSlidesPerPage, writeStoredViewerPrefs };
|