pptx-react-viewer 2.10.0 → 2.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/{AiChatPanel-KTMWRUD5.js → AiChatPanel-E6W3EACA.js} +23 -23
- package/dist/AiChatPanel-E6W3EACA.js.br +0 -0
- package/dist/AiChatPanel-E6W3EACA.js.gz +0 -0
- package/dist/{AiChatPanel-35CHYS5N.mjs → AiChatPanel-RMQIJDUJ.mjs} +4 -4
- package/dist/AiChatPanel-RMQIJDUJ.mjs.br +0 -0
- package/dist/AiChatPanel-RMQIJDUJ.mjs.gz +0 -0
- package/dist/{Model3DScene-TMNUKCL6.js → Model3DScene-U4B4NZJT.js} +2 -2
- package/dist/Model3DScene-U4B4NZJT.js.br +0 -0
- package/dist/Model3DScene-U4B4NZJT.js.gz +0 -0
- package/dist/{Model3DScene-2VMN3B65.mjs → Model3DScene-WHSHBMR5.mjs} +1 -1
- package/dist/Model3DScene-WHSHBMR5.mjs.br +0 -0
- package/dist/Model3DScene-WHSHBMR5.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-KPNP3QD5.js → SurfaceChart3DScene-5S43UBRD.js} +2 -2
- package/dist/SurfaceChart3DScene-5S43UBRD.js.br +0 -0
- package/dist/SurfaceChart3DScene-5S43UBRD.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-GKRDDN2U.mjs → SurfaceChart3DScene-77JP5XH5.mjs} +1 -1
- package/dist/{SurfaceChart3DScene-GKRDDN2U.mjs.br → SurfaceChart3DScene-77JP5XH5.mjs.br} +0 -0
- package/dist/SurfaceChart3DScene-77JP5XH5.mjs.gz +0 -0
- package/dist/{chunk-FY2AFXKP.mjs → chunk-DD54KUDG.mjs} +29 -4
- package/dist/chunk-DD54KUDG.mjs.br +0 -0
- package/dist/chunk-DD54KUDG.mjs.gz +0 -0
- package/dist/{chunk-IJVDNQLG.js → chunk-FAP6OPLL.js} +275 -249
- package/dist/chunk-FAP6OPLL.js.br +0 -0
- package/dist/chunk-FAP6OPLL.js.gz +0 -0
- package/dist/{chunk-TJ55KUWH.mjs → chunk-FV7HEYCX.mjs} +1069 -114
- package/dist/chunk-FV7HEYCX.mjs.br +0 -0
- package/dist/chunk-FV7HEYCX.mjs.gz +0 -0
- package/dist/{chunk-LXTKPSIG.mjs → chunk-HF6L2CTF.mjs} +1 -1
- package/dist/chunk-HF6L2CTF.mjs.br +0 -0
- package/dist/chunk-HF6L2CTF.mjs.gz +0 -0
- package/dist/{chunk-MMK4K3QI.js → chunk-IOVOQ6ZJ.js} +136 -1
- package/dist/chunk-IOVOQ6ZJ.js.br +0 -0
- package/dist/chunk-IOVOQ6ZJ.js.gz +0 -0
- package/dist/{chunk-JWMXOYSX.js → chunk-IXBM3HWH.js} +2289 -1824
- package/dist/chunk-IXBM3HWH.js.br +0 -0
- package/dist/chunk-IXBM3HWH.js.gz +0 -0
- package/dist/{chunk-H74UXL4Q.js → chunk-KDJBWJJH.js} +1102 -113
- package/dist/chunk-KDJBWJJH.js.br +0 -0
- package/dist/chunk-KDJBWJJH.js.gz +0 -0
- package/dist/{chunk-OHPF2HTP.mjs → chunk-NJ4PTG4F.mjs} +40 -28
- package/dist/chunk-NJ4PTG4F.mjs.br +0 -0
- package/dist/chunk-NJ4PTG4F.mjs.gz +0 -0
- package/dist/{chunk-LCG7WBAG.mjs → chunk-PXYZFWDA.mjs} +625 -160
- package/dist/chunk-PXYZFWDA.mjs.br +0 -0
- package/dist/chunk-PXYZFWDA.mjs.gz +0 -0
- package/dist/{chunk-A7HLINZU.js → chunk-QT6BPOZM.js} +361 -349
- package/dist/chunk-QT6BPOZM.js.br +0 -0
- package/dist/chunk-QT6BPOZM.js.gz +0 -0
- package/dist/{chunk-SL3XPERE.mjs → chunk-RHR7GTDX.mjs} +136 -1
- package/dist/chunk-RHR7GTDX.mjs.br +0 -0
- package/dist/chunk-RHR7GTDX.mjs.gz +0 -0
- package/dist/{chunk-SPJR6MPI.js → chunk-X3SFCKAF.js} +3 -3
- package/dist/chunk-X3SFCKAF.js.br +0 -0
- package/dist/chunk-X3SFCKAF.js.gz +0 -0
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.d.ts +28 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -36
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +38 -3
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +79 -79
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -4
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/{useViewerBuildingBlocks-CpUwhBD5.d.ts → useViewerBuildingBlocks-YvCYsxa3.d.ts} +21 -5
- package/dist/useViewerBuildingBlocks-YvCYsxa3.d.ts.map +1 -0
- package/dist/viewer/index.js +22 -22
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -6
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-35CHYS5N.mjs.br +0 -0
- package/dist/AiChatPanel-35CHYS5N.mjs.gz +0 -0
- package/dist/AiChatPanel-KTMWRUD5.js.br +0 -0
- package/dist/AiChatPanel-KTMWRUD5.js.gz +0 -0
- package/dist/Model3DScene-2VMN3B65.mjs.br +0 -0
- package/dist/Model3DScene-2VMN3B65.mjs.gz +0 -0
- package/dist/Model3DScene-TMNUKCL6.js.br +0 -0
- package/dist/Model3DScene-TMNUKCL6.js.gz +0 -0
- package/dist/SurfaceChart3DScene-GKRDDN2U.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-KPNP3QD5.js.br +0 -0
- package/dist/SurfaceChart3DScene-KPNP3QD5.js.gz +0 -0
- package/dist/chunk-A7HLINZU.js.br +0 -0
- package/dist/chunk-A7HLINZU.js.gz +0 -0
- package/dist/chunk-FY2AFXKP.mjs.br +0 -0
- package/dist/chunk-FY2AFXKP.mjs.gz +0 -0
- package/dist/chunk-H74UXL4Q.js.br +0 -0
- package/dist/chunk-H74UXL4Q.js.gz +0 -0
- package/dist/chunk-IJVDNQLG.js.br +0 -0
- package/dist/chunk-IJVDNQLG.js.gz +0 -0
- package/dist/chunk-JWMXOYSX.js.br +0 -0
- package/dist/chunk-JWMXOYSX.js.gz +0 -0
- package/dist/chunk-LCG7WBAG.mjs.br +0 -0
- package/dist/chunk-LCG7WBAG.mjs.gz +0 -0
- package/dist/chunk-LXTKPSIG.mjs.br +0 -0
- package/dist/chunk-LXTKPSIG.mjs.gz +0 -0
- package/dist/chunk-MMK4K3QI.js.br +0 -0
- package/dist/chunk-MMK4K3QI.js.gz +0 -0
- package/dist/chunk-OHPF2HTP.mjs.br +0 -0
- package/dist/chunk-OHPF2HTP.mjs.gz +0 -0
- package/dist/chunk-SL3XPERE.mjs.br +0 -0
- package/dist/chunk-SL3XPERE.mjs.gz +0 -0
- package/dist/chunk-SPJR6MPI.js.br +0 -0
- package/dist/chunk-SPJR6MPI.js.gz +0 -0
- package/dist/chunk-TJ55KUWH.mjs.br +0 -0
- package/dist/chunk-TJ55KUWH.mjs.gz +0 -0
- package/dist/useViewerBuildingBlocks-CpUwhBD5.d.ts.map +0 -1
|
@@ -46608,8 +46608,8 @@ function applyImageColorEffects(blip, effects, parseColor, extractOpacity) {
|
|
|
46608
46608
|
const rawFrom = child19(change.rawXml, "clrFrom");
|
|
46609
46609
|
const rawTo = child19(change.rawXml, "clrTo");
|
|
46610
46610
|
const rawTransparent = rawTo ? (opacity(rawTo, extractOpacity) ?? 1) <= 0 : void 0;
|
|
46611
|
-
const
|
|
46612
|
-
if (
|
|
46611
|
+
const unchanged2 = sameRawColor(rawFrom, change.clrFrom, parseColor) && sameRawColor(rawTo, change.clrTo, parseColor) && (rawTransparent === void 0 || change.clrToTransparent === rawTransparent);
|
|
46612
|
+
if (unchanged2 && change.rawXml) {
|
|
46613
46613
|
setChild6(blip, "clrChange", change.rawXml);
|
|
46614
46614
|
} else {
|
|
46615
46615
|
const fromChoice = sameRawColor(rawFrom, change.clrFrom, parseColor) ? extractColorChoiceXml(rawFrom) : buildSrgbColorChoice(change.clrFrom);
|
|
@@ -50614,8 +50614,8 @@ var PptxHandlerRuntime14 = class extends PptxHandlerRuntime13 {
|
|
|
50614
50614
|
}
|
|
50615
50615
|
const notesBodyShape = shapes.find((shape) => {
|
|
50616
50616
|
const placeholder = shape?.["p:nvSpPr"]?.["p:nvPr"]?.["p:ph"];
|
|
50617
|
-
const
|
|
50618
|
-
return
|
|
50617
|
+
const placeholderType2 = String(placeholder?.["@_type"] || "").trim().toLowerCase();
|
|
50618
|
+
return placeholderType2 === "body";
|
|
50619
50619
|
}) || shapes.find((shape) => Boolean(shape?.["p:txBody"])) || shapes[0];
|
|
50620
50620
|
if (!notesBodyShape) {
|
|
50621
50621
|
return false;
|
|
@@ -51453,10 +51453,16 @@ var PptxHandlerRuntime17 = class extends PptxHandlerRuntime16 {
|
|
|
51453
51453
|
* survive a save: collapsing them to the plain-text path silently downgrades
|
|
51454
51454
|
* a field to static text (e.g. a slide-number field becomes a frozen number)
|
|
51455
51455
|
* or drops the equation, ruby, or bullet.
|
|
51456
|
+
*
|
|
51457
|
+
* `paragraphLevel` (`a:pPr/@lvl`) belongs on this list for the same reason
|
|
51458
|
+
* and used to be missing from it: a nested bullet whose runs all share one
|
|
51459
|
+
* style looked "uniform", so the save path discarded its segments and rebuilt
|
|
51460
|
+
* the paragraph from the flat string, which carries no indent level. Every
|
|
51461
|
+
* such paragraph came back from a round-trip flattened to the top level.
|
|
51456
51462
|
*/
|
|
51457
51463
|
isStructuralTextSegment(segment) {
|
|
51458
51464
|
return Boolean(
|
|
51459
|
-
segment.fieldType || segment.equationXml || segment.rubyText || segment.bulletInfo
|
|
51465
|
+
segment.fieldType || segment.equationXml || segment.rubyText || segment.bulletInfo || segment.paragraphLevel
|
|
51460
51466
|
);
|
|
51461
51467
|
}
|
|
51462
51468
|
areTextSegmentsUniform(textSegments) {
|
|
@@ -87147,6 +87153,105 @@ function resolveDataPointExplosion(series, pointIndex) {
|
|
|
87147
87153
|
const point = findDataPoint(series, pointIndex);
|
|
87148
87154
|
return point?.explosion ?? series.explosion ?? 0;
|
|
87149
87155
|
}
|
|
87156
|
+
function resolveDataPointMarker(series, pointIndex) {
|
|
87157
|
+
const point = findDataPoint(series, pointIndex)?.marker;
|
|
87158
|
+
return {
|
|
87159
|
+
symbol: point?.symbol ?? series.marker?.symbol,
|
|
87160
|
+
size: point?.size ?? series.marker?.size,
|
|
87161
|
+
fill: point?.spPr?.fillColor ?? series.marker?.spPr?.fillColor
|
|
87162
|
+
};
|
|
87163
|
+
}
|
|
87164
|
+
function schemaLabel(keys, token2, translate) {
|
|
87165
|
+
if (token2 === void 0) {
|
|
87166
|
+
return "";
|
|
87167
|
+
}
|
|
87168
|
+
const key = keys[token2];
|
|
87169
|
+
return key === void 0 ? token2 : translate(key);
|
|
87170
|
+
}
|
|
87171
|
+
var THEME_COLOR_SLOT_LABEL_KEYS = {
|
|
87172
|
+
dk1: "pptx.themeColor.dark1",
|
|
87173
|
+
lt1: "pptx.themeColor.light1",
|
|
87174
|
+
dk2: "pptx.themeColor.dark2",
|
|
87175
|
+
lt2: "pptx.themeColor.light2",
|
|
87176
|
+
accent1: "pptx.themeColor.accent1",
|
|
87177
|
+
accent2: "pptx.themeColor.accent2",
|
|
87178
|
+
accent3: "pptx.themeColor.accent3",
|
|
87179
|
+
accent4: "pptx.themeColor.accent4",
|
|
87180
|
+
accent5: "pptx.themeColor.accent5",
|
|
87181
|
+
accent6: "pptx.themeColor.accent6",
|
|
87182
|
+
hlink: "pptx.themeColor.hyperlink",
|
|
87183
|
+
folHlink: "pptx.themeColor.followedHyperlink"
|
|
87184
|
+
};
|
|
87185
|
+
var SMARTART_COLOR_SCHEME_LABEL_KEYS = {
|
|
87186
|
+
colorful1: "pptx.smartart.schemeColorful1",
|
|
87187
|
+
colorful2: "pptx.smartart.schemeColorful2",
|
|
87188
|
+
colorful3: "pptx.smartart.schemeColorful3",
|
|
87189
|
+
monochromatic1: "pptx.smartart.schemeMonochromatic1",
|
|
87190
|
+
monochromatic2: "pptx.smartart.schemeMonochromatic2"
|
|
87191
|
+
};
|
|
87192
|
+
var SMARTART_STYLE_LABEL_KEYS = {
|
|
87193
|
+
flat: "pptx.smartart.styleFlat",
|
|
87194
|
+
moderate: "pptx.smartart.styleModerate",
|
|
87195
|
+
intense: "pptx.smartart.styleIntense"
|
|
87196
|
+
};
|
|
87197
|
+
var FILL_PATTERN_LABEL_KEYS = {
|
|
87198
|
+
pct5: "pptx.fillPatterns.pct5",
|
|
87199
|
+
pct10: "pptx.fillPatterns.pct10",
|
|
87200
|
+
pct20: "pptx.fillPatterns.pct20",
|
|
87201
|
+
pct25: "pptx.fillPatterns.pct25",
|
|
87202
|
+
pct30: "pptx.fillPatterns.pct30",
|
|
87203
|
+
pct40: "pptx.fillPatterns.pct40",
|
|
87204
|
+
pct50: "pptx.fillPatterns.pct50",
|
|
87205
|
+
pct60: "pptx.fillPatterns.pct60",
|
|
87206
|
+
pct70: "pptx.fillPatterns.pct70",
|
|
87207
|
+
pct75: "pptx.fillPatterns.pct75",
|
|
87208
|
+
pct80: "pptx.fillPatterns.pct80",
|
|
87209
|
+
pct90: "pptx.fillPatterns.pct90",
|
|
87210
|
+
horz: "pptx.fillPatterns.horizontal",
|
|
87211
|
+
vert: "pptx.fillPatterns.vertical",
|
|
87212
|
+
ltHorz: "pptx.fillPatterns.lightHorizontal",
|
|
87213
|
+
ltVert: "pptx.fillPatterns.lightVertical",
|
|
87214
|
+
dkHorz: "pptx.fillPatterns.darkHorizontal",
|
|
87215
|
+
dkVert: "pptx.fillPatterns.darkVertical",
|
|
87216
|
+
narHorz: "pptx.fillPatterns.narrowHorizontal",
|
|
87217
|
+
narVert: "pptx.fillPatterns.narrowVertical",
|
|
87218
|
+
wdHorz: "pptx.fillPatterns.wideHorizontal",
|
|
87219
|
+
wdVert: "pptx.fillPatterns.wideVertical",
|
|
87220
|
+
dashHorz: "pptx.fillPatterns.dashedHorizontal",
|
|
87221
|
+
dashVert: "pptx.fillPatterns.dashedVertical",
|
|
87222
|
+
cross: "pptx.fillPatterns.cross",
|
|
87223
|
+
dnDiag: "pptx.fillPatterns.downDiagonal",
|
|
87224
|
+
upDiag: "pptx.fillPatterns.upDiagonal",
|
|
87225
|
+
ltDnDiag: "pptx.fillPatterns.lightDownDiagonal",
|
|
87226
|
+
ltUpDiag: "pptx.fillPatterns.lightUpDiagonal",
|
|
87227
|
+
dkDnDiag: "pptx.fillPatterns.darkDownDiagonal",
|
|
87228
|
+
dkUpDiag: "pptx.fillPatterns.darkUpDiagonal",
|
|
87229
|
+
wdDnDiag: "pptx.fillPatterns.wideDownDiagonal",
|
|
87230
|
+
wdUpDiag: "pptx.fillPatterns.wideUpDiagonal",
|
|
87231
|
+
dashDnDiag: "pptx.fillPatterns.dashedDownDiagonal",
|
|
87232
|
+
dashUpDiag: "pptx.fillPatterns.dashedUpDiagonal",
|
|
87233
|
+
diagCross: "pptx.fillPatterns.diagonalCross",
|
|
87234
|
+
smCheck: "pptx.fillPatterns.smallCheck",
|
|
87235
|
+
lgCheck: "pptx.fillPatterns.largeCheck",
|
|
87236
|
+
smGrid: "pptx.fillPatterns.smallGrid",
|
|
87237
|
+
lgGrid: "pptx.fillPatterns.largeGrid",
|
|
87238
|
+
dotGrid: "pptx.fillPatterns.dotGrid",
|
|
87239
|
+
smConfetti: "pptx.fillPatterns.smallConfetti",
|
|
87240
|
+
lgConfetti: "pptx.fillPatterns.largeConfetti",
|
|
87241
|
+
horzBrick: "pptx.fillPatterns.horizontalBrick",
|
|
87242
|
+
diagBrick: "pptx.fillPatterns.diagonalBrick",
|
|
87243
|
+
solidDmnd: "pptx.fillPatterns.solidDiamond",
|
|
87244
|
+
openDmnd: "pptx.fillPatterns.openDiamond",
|
|
87245
|
+
dotDmnd: "pptx.fillPatterns.dottedDiamond",
|
|
87246
|
+
plaid: "pptx.fillPatterns.plaid",
|
|
87247
|
+
sphere: "pptx.fillPatterns.sphere",
|
|
87248
|
+
weave: "pptx.fillPatterns.weave",
|
|
87249
|
+
divot: "pptx.fillPatterns.divot",
|
|
87250
|
+
shingle: "pptx.fillPatterns.shingle",
|
|
87251
|
+
wave: "pptx.fillPatterns.wave",
|
|
87252
|
+
trellis: "pptx.fillPatterns.trellis",
|
|
87253
|
+
zigZag: "pptx.fillPatterns.zigZag"
|
|
87254
|
+
};
|
|
87150
87255
|
function addChartSeries(data) {
|
|
87151
87256
|
return chartDataAddSeries(data, {
|
|
87152
87257
|
name: `Series ${data.series.length + 1}`,
|
|
@@ -88034,13 +88139,16 @@ function buildMarkerPrimitive(input) {
|
|
|
88034
88139
|
return { kind: "circle", cx, cy, r, fill, part };
|
|
88035
88140
|
}
|
|
88036
88141
|
}
|
|
88037
|
-
function pushMarker(out, series, cx, cy, fill, defaultRadius2, part, opacity2) {
|
|
88142
|
+
function pushMarker(out, series, pointIndex, cx, cy, fill, defaultRadius2, part, opacity2) {
|
|
88143
|
+
const marker = resolveDataPointMarker(series, pointIndex);
|
|
88038
88144
|
const m = buildMarkerPrimitive({
|
|
88039
|
-
symbol:
|
|
88040
|
-
size:
|
|
88145
|
+
symbol: marker.symbol,
|
|
88146
|
+
size: marker.size,
|
|
88041
88147
|
cx,
|
|
88042
88148
|
cy,
|
|
88043
|
-
fill,
|
|
88149
|
+
// A marker fill (series or per-point) wins over the plot fill, which is
|
|
88150
|
+
// what the line/area body is drawn with.
|
|
88151
|
+
fill: marker.fill ?? fill,
|
|
88044
88152
|
defaultRadius: defaultRadius2,
|
|
88045
88153
|
part
|
|
88046
88154
|
});
|
|
@@ -88120,6 +88228,7 @@ function buildLines(chartData, catCount, layout, primaryRange, secondaryRange, s
|
|
|
88120
88228
|
pushMarker(
|
|
88121
88229
|
primitives,
|
|
88122
88230
|
series,
|
|
88231
|
+
idx,
|
|
88123
88232
|
pt.x,
|
|
88124
88233
|
pt.y,
|
|
88125
88234
|
resolveDataPointFill(series, idx, c) ?? c,
|
|
@@ -88191,6 +88300,7 @@ function buildAreas(chartData, catCount, layout, range, sourceIndices2, xPositio
|
|
|
88191
88300
|
pushMarker(
|
|
88192
88301
|
primitives,
|
|
88193
88302
|
series,
|
|
88303
|
+
idx,
|
|
88194
88304
|
pt.x,
|
|
88195
88305
|
pt.y,
|
|
88196
88306
|
resolveDataPointFill(series, idx, c) ?? c,
|
|
@@ -88234,6 +88344,7 @@ function buildScatter(chartData, layout, range) {
|
|
|
88234
88344
|
pushMarker(
|
|
88235
88345
|
primitives,
|
|
88236
88346
|
series,
|
|
88347
|
+
vi,
|
|
88237
88348
|
dot.cx,
|
|
88238
88349
|
dot.cy,
|
|
88239
88350
|
resolveDataPointFill(series, vi, c) ?? c,
|
|
@@ -93703,6 +93814,10 @@ function applyFlyDirection(effect, subtype) {
|
|
|
93703
93814
|
const suffix = `${edge.charAt(0).toUpperCase()}${edge.slice(1)}`;
|
|
93704
93815
|
return `${prefix}${suffix}`;
|
|
93705
93816
|
}
|
|
93817
|
+
function slideOffset(percent2, axis) {
|
|
93818
|
+
const fallback = axis === "w" ? "1280px" : "720px";
|
|
93819
|
+
return `calc(var(--pptx-slide-${axis}, ${fallback}) * ${(percent2 / 100).toFixed(4)})`;
|
|
93820
|
+
}
|
|
93706
93821
|
function buildDynamicKeyframe(anim, uid) {
|
|
93707
93822
|
if (anim.motionPath) {
|
|
93708
93823
|
const name = `pptx-tl-motion-${uid}`;
|
|
@@ -93713,8 +93828,8 @@ function buildDynamicKeyframe(anim, uid) {
|
|
|
93713
93828
|
const lines = [];
|
|
93714
93829
|
for (let i = 0; i < points3.length; i++) {
|
|
93715
93830
|
const pct = Math.round(i / (points3.length - 1) * 100);
|
|
93716
|
-
const tx = points3[i].x
|
|
93717
|
-
const ty = points3[i].y
|
|
93831
|
+
const tx = slideOffset(points3[i].x, "w");
|
|
93832
|
+
const ty = slideOffset(points3[i].y, "h");
|
|
93718
93833
|
if (anim.motionPathRotateAuto) {
|
|
93719
93834
|
const next = i < points3.length - 1 ? points3[i + 1] : points3[i];
|
|
93720
93835
|
const prev = i > 0 ? points3[i - 1] : points3[i];
|
|
@@ -93722,10 +93837,10 @@ function buildDynamicKeyframe(anim, uid) {
|
|
|
93722
93837
|
const dy = i < points3.length - 1 ? next.y - points3[i].y : points3[i].y - prev.y;
|
|
93723
93838
|
const angleDeg = Math.atan2(dy, dx) * (180 / Math.PI);
|
|
93724
93839
|
lines.push(
|
|
93725
|
-
` ${pct}% { transform: translate(${tx}
|
|
93840
|
+
` ${pct}% { transform: translate(${tx}, ${ty}) rotate(${angleDeg.toFixed(2)}deg); }`
|
|
93726
93841
|
);
|
|
93727
93842
|
} else {
|
|
93728
|
-
lines.push(` ${pct}% { transform: translate(${tx}
|
|
93843
|
+
lines.push(` ${pct}% { transform: translate(${tx}, ${ty}); }`);
|
|
93729
93844
|
}
|
|
93730
93845
|
}
|
|
93731
93846
|
return {
|
|
@@ -94860,6 +94975,422 @@ var TimelineEngine = class _TimelineEngine {
|
|
|
94860
94975
|
}
|
|
94861
94976
|
}
|
|
94862
94977
|
};
|
|
94978
|
+
var PRESET_TO_EFFECT = {
|
|
94979
|
+
fadeIn: "fadeIn",
|
|
94980
|
+
flyIn: "flyInBottom",
|
|
94981
|
+
zoomIn: "zoomIn",
|
|
94982
|
+
fadeOut: "fadeOut",
|
|
94983
|
+
flyOut: "flyOutBottom",
|
|
94984
|
+
zoomOut: "zoomOut",
|
|
94985
|
+
spin: "spin",
|
|
94986
|
+
pulse: "pulse",
|
|
94987
|
+
colorWave: "colorWave",
|
|
94988
|
+
bounce: "bounce",
|
|
94989
|
+
flash: "flash"
|
|
94990
|
+
};
|
|
94991
|
+
var DIRECTION_FLY_MAP = {
|
|
94992
|
+
fromLeft: { flyIn: "flyInLeft", flyOut: "flyOutLeft" },
|
|
94993
|
+
fromRight: { flyIn: "flyInRight", flyOut: "flyOutRight" },
|
|
94994
|
+
fromTop: { flyIn: "flyInTop", flyOut: "flyOutTop" },
|
|
94995
|
+
fromBottom: { flyIn: "flyInBottom", flyOut: "flyOutBottom" },
|
|
94996
|
+
fromTopLeft: { flyIn: "flyInTop", flyOut: "flyOutTop" },
|
|
94997
|
+
fromTopRight: { flyIn: "flyInTop", flyOut: "flyOutTop" },
|
|
94998
|
+
fromBottomLeft: { flyIn: "flyInBottom", flyOut: "flyOutBottom" },
|
|
94999
|
+
fromBottomRight: { flyIn: "flyInBottom", flyOut: "flyOutBottom" }
|
|
95000
|
+
};
|
|
95001
|
+
function resolvePreviewEffect(preset, direction) {
|
|
95002
|
+
if ((preset === "flyIn" || preset === "flyOut") && direction) {
|
|
95003
|
+
const dirMap = DIRECTION_FLY_MAP[direction];
|
|
95004
|
+
if (dirMap) {
|
|
95005
|
+
return preset === "flyIn" ? dirMap.flyIn : dirMap.flyOut;
|
|
95006
|
+
}
|
|
95007
|
+
}
|
|
95008
|
+
return PRESET_TO_EFFECT[preset];
|
|
95009
|
+
}
|
|
95010
|
+
function timingCurveToCss(curve, cubicBezierValues) {
|
|
95011
|
+
if (cubicBezierValues) {
|
|
95012
|
+
const parts = cubicBezierValues.split(",").map((s) => s.trim());
|
|
95013
|
+
if (parts.length === 4 && parts.every((p) => !Number.isNaN(Number(p)))) {
|
|
95014
|
+
return `cubic-bezier(${parts.join(", ")})`;
|
|
95015
|
+
}
|
|
95016
|
+
}
|
|
95017
|
+
switch (curve) {
|
|
95018
|
+
case "ease":
|
|
95019
|
+
return "ease";
|
|
95020
|
+
case "ease-in":
|
|
95021
|
+
return "ease-in";
|
|
95022
|
+
case "ease-out":
|
|
95023
|
+
return "ease-out";
|
|
95024
|
+
case "linear":
|
|
95025
|
+
return "linear";
|
|
95026
|
+
default:
|
|
95027
|
+
return "ease";
|
|
95028
|
+
}
|
|
95029
|
+
}
|
|
95030
|
+
function buildPreviewAnimation(preset, options) {
|
|
95031
|
+
if (preset === "none") {
|
|
95032
|
+
return void 0;
|
|
95033
|
+
}
|
|
95034
|
+
const effectName = resolvePreviewEffect(preset, options?.direction);
|
|
95035
|
+
if (!effectName) {
|
|
95036
|
+
return void 0;
|
|
95037
|
+
}
|
|
95038
|
+
const keyframeName = `pptx-${effectName}`;
|
|
95039
|
+
const keyframesCss = getEffectKeyframes(effectName);
|
|
95040
|
+
if (!keyframesCss) {
|
|
95041
|
+
return void 0;
|
|
95042
|
+
}
|
|
95043
|
+
const duration = options?.durationMs ?? 600;
|
|
95044
|
+
const easing = timingCurveToCss(options?.timingCurve, options?.cubicBezier);
|
|
95045
|
+
return {
|
|
95046
|
+
keyframeName,
|
|
95047
|
+
keyframesCss,
|
|
95048
|
+
cssAnimation: `${keyframeName} ${duration}ms ${easing} 0ms 1 normal both`,
|
|
95049
|
+
durationMs: duration
|
|
95050
|
+
};
|
|
95051
|
+
}
|
|
95052
|
+
var EDITABLE = /* @__PURE__ */ new Set(["M", "L", "C", "Z", "m", "l", "c", "z"]);
|
|
95053
|
+
var ARITY = { m: 2, l: 2, c: 6, z: 0 };
|
|
95054
|
+
function scanPath(path) {
|
|
95055
|
+
const tokens = path.match(/[A-Za-z]|-?\d*\.?\d+(?:[eE][-+]?\d+)?/gu);
|
|
95056
|
+
if (!tokens) {
|
|
95057
|
+
return void 0;
|
|
95058
|
+
}
|
|
95059
|
+
const segments = [];
|
|
95060
|
+
let i = 0;
|
|
95061
|
+
let cmd = "";
|
|
95062
|
+
while (i < tokens.length) {
|
|
95063
|
+
if (/^[A-Za-z]$/u.test(tokens[i])) {
|
|
95064
|
+
cmd = tokens[i];
|
|
95065
|
+
i++;
|
|
95066
|
+
if (!EDITABLE.has(cmd)) {
|
|
95067
|
+
return void 0;
|
|
95068
|
+
}
|
|
95069
|
+
if (cmd === "Z" || cmd === "z") {
|
|
95070
|
+
segments.push({ cmd, coords: [] });
|
|
95071
|
+
}
|
|
95072
|
+
continue;
|
|
95073
|
+
}
|
|
95074
|
+
const arity = ARITY[cmd.toLowerCase()];
|
|
95075
|
+
if (!arity) {
|
|
95076
|
+
return void 0;
|
|
95077
|
+
}
|
|
95078
|
+
const coords = [];
|
|
95079
|
+
for (let n = 0; n < arity; n++) {
|
|
95080
|
+
const value = Number(tokens[i++]);
|
|
95081
|
+
if (!Number.isFinite(value)) {
|
|
95082
|
+
return void 0;
|
|
95083
|
+
}
|
|
95084
|
+
coords.push(value);
|
|
95085
|
+
}
|
|
95086
|
+
segments.push({ cmd, coords });
|
|
95087
|
+
if (cmd === "M") {
|
|
95088
|
+
cmd = "L";
|
|
95089
|
+
} else if (cmd === "m") {
|
|
95090
|
+
cmd = "l";
|
|
95091
|
+
}
|
|
95092
|
+
}
|
|
95093
|
+
return segments.length > 0 ? segments : void 0;
|
|
95094
|
+
}
|
|
95095
|
+
function formatPath(segments) {
|
|
95096
|
+
return segments.map(
|
|
95097
|
+
(segment) => segment.coords.length === 0 ? segment.cmd : `${segment.cmd} ${segment.coords.map((n) => trimNumber(n)).join(" ")}`
|
|
95098
|
+
).join(" ");
|
|
95099
|
+
}
|
|
95100
|
+
function trimNumber(value) {
|
|
95101
|
+
return String(Number(value.toFixed(4)));
|
|
95102
|
+
}
|
|
95103
|
+
function motionPathFractionPoints(path) {
|
|
95104
|
+
return parseMotionPathPoints(path).map((point) => ({ x: point.x / 100, y: point.y / 100 }));
|
|
95105
|
+
}
|
|
95106
|
+
function toPixels(point, frame2) {
|
|
95107
|
+
return {
|
|
95108
|
+
x: frame2.originX + point.x * frame2.slideWidth,
|
|
95109
|
+
y: frame2.originY + point.y * frame2.slideHeight
|
|
95110
|
+
};
|
|
95111
|
+
}
|
|
95112
|
+
function motionPathToSvgD(path, frame2) {
|
|
95113
|
+
const points3 = motionPathFractionPoints(path).map((point) => toPixels(point, frame2));
|
|
95114
|
+
if (points3.length === 0) {
|
|
95115
|
+
return "";
|
|
95116
|
+
}
|
|
95117
|
+
const head = `M ${trimNumber(frame2.originX)} ${trimNumber(frame2.originY)}`;
|
|
95118
|
+
const rest = points3.map((point) => `L ${trimNumber(point.x)} ${trimNumber(point.y)}`);
|
|
95119
|
+
return [head, ...rest].join(" ");
|
|
95120
|
+
}
|
|
95121
|
+
function motionPathEndPixel(path, frame2) {
|
|
95122
|
+
const points3 = motionPathFractionPoints(path);
|
|
95123
|
+
const last = points3.length > 0 ? points3[points3.length - 1] : void 0;
|
|
95124
|
+
return last ? toPixels(last, frame2) : { x: frame2.originX, y: frame2.originY };
|
|
95125
|
+
}
|
|
95126
|
+
function setMotionPathEnd(path, x, y) {
|
|
95127
|
+
const segments = scanPath(path);
|
|
95128
|
+
if (!segments) {
|
|
95129
|
+
return path;
|
|
95130
|
+
}
|
|
95131
|
+
let lastIndex = -1;
|
|
95132
|
+
for (let i = segments.length - 1; i >= 0; i--) {
|
|
95133
|
+
if (segments[i].coords.length > 0) {
|
|
95134
|
+
lastIndex = i;
|
|
95135
|
+
break;
|
|
95136
|
+
}
|
|
95137
|
+
}
|
|
95138
|
+
if (lastIndex < 0 || segments.some((segment) => segment.cmd === "Z" || segment.cmd === "z")) {
|
|
95139
|
+
return path;
|
|
95140
|
+
}
|
|
95141
|
+
const last = segments[lastIndex];
|
|
95142
|
+
if (last.cmd === last.cmd.toLowerCase()) {
|
|
95143
|
+
return path;
|
|
95144
|
+
}
|
|
95145
|
+
const coords = [...last.coords];
|
|
95146
|
+
const endX = coords[coords.length - 2];
|
|
95147
|
+
const endY = coords[coords.length - 1];
|
|
95148
|
+
const dx = x - endX;
|
|
95149
|
+
const dy = y - endY;
|
|
95150
|
+
coords[coords.length - 2] = x;
|
|
95151
|
+
coords[coords.length - 1] = y;
|
|
95152
|
+
if (last.cmd === "C") {
|
|
95153
|
+
coords[2] += dx;
|
|
95154
|
+
coords[3] += dy;
|
|
95155
|
+
}
|
|
95156
|
+
const next = segments.map(
|
|
95157
|
+
(segment, index) => index === lastIndex ? { ...last, coords } : segment
|
|
95158
|
+
);
|
|
95159
|
+
return formatPath(next);
|
|
95160
|
+
}
|
|
95161
|
+
function isEditableMotionPath(path) {
|
|
95162
|
+
const segments = scanPath(path);
|
|
95163
|
+
if (!segments) {
|
|
95164
|
+
return false;
|
|
95165
|
+
}
|
|
95166
|
+
return !segments.some((segment) => segment.cmd === "Z" || segment.cmd === "z");
|
|
95167
|
+
}
|
|
95168
|
+
function buildMotionPathKeyframes(args) {
|
|
95169
|
+
const points3 = motionPathFractionPoints(args.path);
|
|
95170
|
+
if (points3.length < 2) {
|
|
95171
|
+
return void 0;
|
|
95172
|
+
}
|
|
95173
|
+
const frames = points3.map((point, index) => {
|
|
95174
|
+
const percent2 = Math.round(index / (points3.length - 1) * 100);
|
|
95175
|
+
const x = trimNumber(point.x * args.slideWidth);
|
|
95176
|
+
const y = trimNumber(point.y * args.slideHeight);
|
|
95177
|
+
return ` ${percent2}% { transform: translate(${x}px, ${y}px); }`;
|
|
95178
|
+
});
|
|
95179
|
+
return {
|
|
95180
|
+
keyframeName: args.keyframeName,
|
|
95181
|
+
css: `@keyframes ${args.keyframeName} {
|
|
95182
|
+
${frames.join("\n")}
|
|
95183
|
+
}`
|
|
95184
|
+
};
|
|
95185
|
+
}
|
|
95186
|
+
var K = 0.5523;
|
|
95187
|
+
var RX = 0.125;
|
|
95188
|
+
var RY = 0.2222;
|
|
95189
|
+
var CIRCLE = [
|
|
95190
|
+
"M 0 0",
|
|
95191
|
+
`C ${-K * RX} 0 ${-RX} ${-RY + K * RY} ${-RX} ${-RY}`,
|
|
95192
|
+
`C ${-RX} ${-RY - K * RY} ${-K * RX} ${ -2 * RY} 0 ${ -2 * RY}`,
|
|
95193
|
+
`C ${K * RX} ${ -2 * RY} ${RX} ${-RY - K * RY} ${RX} ${-RY}`,
|
|
95194
|
+
`C ${RX} ${-RY + K * RY} ${K * RX} 0 0 0`
|
|
95195
|
+
].join(" ").replace(/(\d\.\d{4})\d+/gu, "$1");
|
|
95196
|
+
var MOTION_PATH_PRESETS2 = [
|
|
95197
|
+
// -- Lines ---------------------------------------------------------------
|
|
95198
|
+
{ id: "lineRight", family: "lines", path: "M 0 0 L 0.25 0" },
|
|
95199
|
+
{ id: "lineLeft", family: "lines", path: "M 0 0 L -0.25 0" },
|
|
95200
|
+
{ id: "lineDown", family: "lines", path: "M 0 0 L 0 0.25" },
|
|
95201
|
+
{ id: "lineUp", family: "lines", path: "M 0 0 L 0 -0.25" },
|
|
95202
|
+
{ id: "lineDiagonalUpRight", family: "lines", path: "M 0 0 L 0.25 -0.25" },
|
|
95203
|
+
{ id: "lineDiagonalDownRight", family: "lines", path: "M 0 0 L 0.25 0.25" },
|
|
95204
|
+
{ id: "lineDiagonalUpLeft", family: "lines", path: "M 0 0 L -0.25 -0.25" },
|
|
95205
|
+
{ id: "lineDiagonalDownLeft", family: "lines", path: "M 0 0 L -0.25 0.25" },
|
|
95206
|
+
// -- Arcs ----------------------------------------------------------------
|
|
95207
|
+
{
|
|
95208
|
+
id: "arcUp",
|
|
95209
|
+
family: "arcs",
|
|
95210
|
+
path: "M 0 0 C 0 -0.1227 0.0559 -0.2222 0.125 -0.2222 C 0.1941 -0.2222 0.25 -0.1227 0.25 0"
|
|
95211
|
+
},
|
|
95212
|
+
{
|
|
95213
|
+
id: "arcDown",
|
|
95214
|
+
family: "arcs",
|
|
95215
|
+
path: "M 0 0 C 0 0.1227 0.0559 0.2222 0.125 0.2222 C 0.1941 0.2222 0.25 0.1227 0.25 0"
|
|
95216
|
+
},
|
|
95217
|
+
{
|
|
95218
|
+
id: "arcRight",
|
|
95219
|
+
family: "arcs",
|
|
95220
|
+
path: "M 0 0 C 0.069 0 0.125 0.0995 0.125 0.2222 C 0.125 0.3449 0.069 0.4444 0 0.4444"
|
|
95221
|
+
},
|
|
95222
|
+
{
|
|
95223
|
+
id: "arcLeft",
|
|
95224
|
+
family: "arcs",
|
|
95225
|
+
path: "M 0 0 C -0.069 0 -0.125 0.0995 -0.125 0.2222 C -0.125 0.3449 -0.069 0.4444 0 0.4444"
|
|
95226
|
+
},
|
|
95227
|
+
// -- Turns ---------------------------------------------------------------
|
|
95228
|
+
{ id: "turnUp", family: "turns", path: "M 0 0 L 0.25 0 L 0.25 -0.25" },
|
|
95229
|
+
{ id: "turnDown", family: "turns", path: "M 0 0 L 0.25 0 L 0.25 0.25" },
|
|
95230
|
+
{ id: "turnRight", family: "turns", path: "M 0 0 L 0 0.25 L 0.25 0.25" },
|
|
95231
|
+
{ id: "turnLeft", family: "turns", path: "M 0 0 L 0 0.25 L -0.25 0.25" },
|
|
95232
|
+
{
|
|
95233
|
+
id: "sCurve",
|
|
95234
|
+
family: "turns",
|
|
95235
|
+
path: "M 0 0 C 0.0833 -0.1111 0.1667 0.1111 0.25 0"
|
|
95236
|
+
},
|
|
95237
|
+
{
|
|
95238
|
+
id: "zigzag",
|
|
95239
|
+
family: "turns",
|
|
95240
|
+
path: "M 0 0 L 0.0625 -0.1111 L 0.125 0 L 0.1875 -0.1111 L 0.25 0"
|
|
95241
|
+
},
|
|
95242
|
+
// -- Shapes --------------------------------------------------------------
|
|
95243
|
+
{ id: "circle", family: "shapes", path: CIRCLE },
|
|
95244
|
+
{ id: "square", family: "shapes", path: "M 0 0 L 0.125 0 L 0.125 -0.2222 L 0 -0.2222 Z" },
|
|
95245
|
+
{ id: "triangle", family: "shapes", path: "M 0 0 L 0.0625 -0.2222 L 0.125 0 Z" },
|
|
95246
|
+
{
|
|
95247
|
+
id: "diamond",
|
|
95248
|
+
family: "shapes",
|
|
95249
|
+
path: "M 0 0 L 0.0625 -0.1111 L 0.125 0 L 0.0625 0.1111 Z"
|
|
95250
|
+
},
|
|
95251
|
+
{
|
|
95252
|
+
id: "hexagon",
|
|
95253
|
+
family: "shapes",
|
|
95254
|
+
path: "M 0 0 L 0.0417 -0.1111 L 0.125 -0.1111 L 0.1667 0 L 0.125 0.1111 L 0.0417 0.1111 Z"
|
|
95255
|
+
},
|
|
95256
|
+
// -- Loops ---------------------------------------------------------------
|
|
95257
|
+
{
|
|
95258
|
+
id: "loopDeLoop",
|
|
95259
|
+
family: "loops",
|
|
95260
|
+
path: "M 0 0 C 0.0625 0 0.0972 -0.2222 0.1667 -0.2222 C 0.2361 -0.2222 0.2708 0 0.1667 0 L 0.3333 0"
|
|
95261
|
+
},
|
|
95262
|
+
{
|
|
95263
|
+
id: "figureEight",
|
|
95264
|
+
family: "loops",
|
|
95265
|
+
path: "M 0 0 C -0.0833 0 -0.0833 -0.2222 0 -0.2222 C 0.0833 -0.2222 0.0833 0 0.1667 0 C 0.25 0 0.25 -0.2222 0.1667 -0.2222 C 0.0833 -0.2222 0.0833 0 0 0"
|
|
95266
|
+
},
|
|
95267
|
+
{
|
|
95268
|
+
id: "spiral",
|
|
95269
|
+
family: "loops",
|
|
95270
|
+
path: "M 0 0 C 0.0417 0 0.0417 -0.0741 0 -0.0741 C -0.0625 -0.0741 -0.0625 -0.1852 0 -0.1852 C 0.0833 -0.1852 0.0833 -0.3333 0 -0.3333"
|
|
95271
|
+
}
|
|
95272
|
+
];
|
|
95273
|
+
var MOTION_PATH_FAMILIES = [
|
|
95274
|
+
"lines",
|
|
95275
|
+
"arcs",
|
|
95276
|
+
"turns",
|
|
95277
|
+
"shapes",
|
|
95278
|
+
"loops"
|
|
95279
|
+
];
|
|
95280
|
+
function motionPathFamilyLabelKey(family) {
|
|
95281
|
+
return `pptx.animation.motionPath.family.${family}`;
|
|
95282
|
+
}
|
|
95283
|
+
function motionPathPresetLabelKey(presetId) {
|
|
95284
|
+
return `pptx.animation.motionPath.preset.${presetId}`;
|
|
95285
|
+
}
|
|
95286
|
+
function motionPathPresetById(presetId) {
|
|
95287
|
+
return MOTION_PATH_PRESETS2.find((preset) => preset.id === presetId);
|
|
95288
|
+
}
|
|
95289
|
+
function motionPathPresetsByFamily(family) {
|
|
95290
|
+
return MOTION_PATH_PRESETS2.filter((preset) => preset.family === family);
|
|
95291
|
+
}
|
|
95292
|
+
function motionPathPresetIdForPath(path) {
|
|
95293
|
+
if (!path) {
|
|
95294
|
+
return void 0;
|
|
95295
|
+
}
|
|
95296
|
+
const normalized = path.trim().replace(/\s+/gu, " ");
|
|
95297
|
+
return MOTION_PATH_PRESETS2.find(
|
|
95298
|
+
(preset) => preset.path.trim().replace(/\s+/gu, " ") === normalized
|
|
95299
|
+
)?.id;
|
|
95300
|
+
}
|
|
95301
|
+
var DEFAULT_MOTION_PATH_PRESET_ID = "lineRight";
|
|
95302
|
+
var DEFAULT_MOTION_PATH_DURATION_MS = 2e3;
|
|
95303
|
+
var DEFAULT_TRIGGER2 = "onClick";
|
|
95304
|
+
function motionPathFor(animations, elementId) {
|
|
95305
|
+
return animations.find((animation) => animation.elementId === elementId)?.motionPath;
|
|
95306
|
+
}
|
|
95307
|
+
function setMotionPath(animations, elementId, path) {
|
|
95308
|
+
const index = animations.findIndex((animation) => animation.elementId === elementId);
|
|
95309
|
+
if (index >= 0) {
|
|
95310
|
+
return animations.map(
|
|
95311
|
+
(animation, i) => i === index ? {
|
|
95312
|
+
...animation,
|
|
95313
|
+
motionPath: path,
|
|
95314
|
+
motionPathEditMode: animation.motionPathEditMode ?? "relative",
|
|
95315
|
+
durationMs: animation.durationMs ?? DEFAULT_MOTION_PATH_DURATION_MS
|
|
95316
|
+
} : animation
|
|
95317
|
+
);
|
|
95318
|
+
}
|
|
95319
|
+
return [
|
|
95320
|
+
...animations,
|
|
95321
|
+
{
|
|
95322
|
+
elementId,
|
|
95323
|
+
motionPath: path,
|
|
95324
|
+
motionPathEditMode: "relative",
|
|
95325
|
+
durationMs: DEFAULT_MOTION_PATH_DURATION_MS,
|
|
95326
|
+
order: animations.length,
|
|
95327
|
+
trigger: DEFAULT_TRIGGER2
|
|
95328
|
+
}
|
|
95329
|
+
];
|
|
95330
|
+
}
|
|
95331
|
+
function applyMotionPathPreset(animations, elementId, presetId) {
|
|
95332
|
+
const preset = motionPathPresetById(presetId);
|
|
95333
|
+
if (!preset) {
|
|
95334
|
+
return [...animations];
|
|
95335
|
+
}
|
|
95336
|
+
return setMotionPath(animations, elementId, preset.path);
|
|
95337
|
+
}
|
|
95338
|
+
function clearMotionPath(animations, elementId) {
|
|
95339
|
+
const index = animations.findIndex((animation) => animation.elementId === elementId);
|
|
95340
|
+
if (index < 0) {
|
|
95341
|
+
return [...animations];
|
|
95342
|
+
}
|
|
95343
|
+
const current = animations[index];
|
|
95344
|
+
const stillHasEffect = Boolean(current.entrance || current.emphasis || current.exit);
|
|
95345
|
+
if (!stillHasEffect) {
|
|
95346
|
+
return animations.filter((animation) => animation.elementId !== elementId).map((animation, i) => ({ ...animation, order: i }));
|
|
95347
|
+
}
|
|
95348
|
+
return animations.map(
|
|
95349
|
+
(animation, i) => i === index ? {
|
|
95350
|
+
...animation,
|
|
95351
|
+
motionPath: void 0,
|
|
95352
|
+
motionPathEditMode: void 0,
|
|
95353
|
+
motionPtsTypes: void 0
|
|
95354
|
+
} : animation
|
|
95355
|
+
);
|
|
95356
|
+
}
|
|
95357
|
+
function motionPathNativeAnimations(slide) {
|
|
95358
|
+
const native = slide.nativeAnimations ?? [];
|
|
95359
|
+
const alreadyNative = new Set(
|
|
95360
|
+
native.filter((animation) => animation.motionPath).map((animation) => animation.targetId)
|
|
95361
|
+
);
|
|
95362
|
+
return (slide.animations ?? []).filter((animation) => Boolean(animation.motionPath) && !alreadyNative.has(animation.elementId)).map((animation) => ({
|
|
95363
|
+
targetId: animation.elementId,
|
|
95364
|
+
trigger: animation.trigger ?? DEFAULT_TRIGGER2,
|
|
95365
|
+
triggerShapeId: animation.triggerShapeId,
|
|
95366
|
+
presetClass: "path",
|
|
95367
|
+
durationMs: animation.durationMs ?? DEFAULT_MOTION_PATH_DURATION_MS,
|
|
95368
|
+
delayMs: animation.delayMs ?? 0,
|
|
95369
|
+
motionPath: animation.motionPath,
|
|
95370
|
+
motionPathEditMode: animation.motionPathEditMode ?? "relative"
|
|
95371
|
+
}));
|
|
95372
|
+
}
|
|
95373
|
+
function buildMotionPathPreview(args) {
|
|
95374
|
+
const keyframeName = `pptx-motion-preview-${args.uid ?? 0}`;
|
|
95375
|
+
const keyframes = buildMotionPathKeyframes({
|
|
95376
|
+
path: args.path,
|
|
95377
|
+
slideWidth: args.slideWidth,
|
|
95378
|
+
slideHeight: args.slideHeight,
|
|
95379
|
+
keyframeName
|
|
95380
|
+
});
|
|
95381
|
+
if (!keyframes) {
|
|
95382
|
+
return void 0;
|
|
95383
|
+
}
|
|
95384
|
+
const durationMs = args.durationMs ?? DEFAULT_MOTION_PATH_DURATION_MS;
|
|
95385
|
+
const delayMs = args.delayMs ?? 0;
|
|
95386
|
+
const easing = timingCurveToCss(args.timingCurve);
|
|
95387
|
+
return {
|
|
95388
|
+
keyframeName,
|
|
95389
|
+
keyframesCss: keyframes.css,
|
|
95390
|
+
cssAnimation: `${keyframeName} ${durationMs}ms ${easing} ${delayMs}ms 1 normal both`,
|
|
95391
|
+
durationMs
|
|
95392
|
+
};
|
|
95393
|
+
}
|
|
94863
95394
|
function buildSegmentCounts(slide, nativeAnims) {
|
|
94864
95395
|
const segmentCounts = /* @__PURE__ */ new Map();
|
|
94865
95396
|
for (const anim of nativeAnims) {
|
|
@@ -94892,7 +95423,7 @@ var PresentationAnimationController = class _PresentationAnimationController {
|
|
|
94892
95423
|
* id list (base element ids + text-build sub-element ids) to track.
|
|
94893
95424
|
*/
|
|
94894
95425
|
static fromSlide(slide) {
|
|
94895
|
-
const nativeAnims = slide.nativeAnimations ?? [];
|
|
95426
|
+
const nativeAnims = [...slide.nativeAnimations ?? [], ...motionPathNativeAnimations(slide)];
|
|
94896
95427
|
const segmentCounts = buildSegmentCounts(slide, nativeAnims);
|
|
94897
95428
|
const expandedAnims = segmentCounts.size > 0 ? expandTextBuildAnimations(nativeAnims, segmentCounts) : nativeAnims;
|
|
94898
95429
|
const engine = TimelineEngine.fromAnimations(expandedAnims);
|
|
@@ -95083,80 +95614,6 @@ function runMediaCommand(command, resolve) {
|
|
|
95083
95614
|
}
|
|
95084
95615
|
return applyMediaCommandVerb(el, parsed);
|
|
95085
95616
|
}
|
|
95086
|
-
var PRESET_TO_EFFECT = {
|
|
95087
|
-
fadeIn: "fadeIn",
|
|
95088
|
-
flyIn: "flyInBottom",
|
|
95089
|
-
zoomIn: "zoomIn",
|
|
95090
|
-
fadeOut: "fadeOut",
|
|
95091
|
-
flyOut: "flyOutBottom",
|
|
95092
|
-
zoomOut: "zoomOut",
|
|
95093
|
-
spin: "spin",
|
|
95094
|
-
pulse: "pulse",
|
|
95095
|
-
colorWave: "colorWave",
|
|
95096
|
-
bounce: "bounce",
|
|
95097
|
-
flash: "flash"
|
|
95098
|
-
};
|
|
95099
|
-
var DIRECTION_FLY_MAP = {
|
|
95100
|
-
fromLeft: { flyIn: "flyInLeft", flyOut: "flyOutLeft" },
|
|
95101
|
-
fromRight: { flyIn: "flyInRight", flyOut: "flyOutRight" },
|
|
95102
|
-
fromTop: { flyIn: "flyInTop", flyOut: "flyOutTop" },
|
|
95103
|
-
fromBottom: { flyIn: "flyInBottom", flyOut: "flyOutBottom" },
|
|
95104
|
-
fromTopLeft: { flyIn: "flyInTop", flyOut: "flyOutTop" },
|
|
95105
|
-
fromTopRight: { flyIn: "flyInTop", flyOut: "flyOutTop" },
|
|
95106
|
-
fromBottomLeft: { flyIn: "flyInBottom", flyOut: "flyOutBottom" },
|
|
95107
|
-
fromBottomRight: { flyIn: "flyInBottom", flyOut: "flyOutBottom" }
|
|
95108
|
-
};
|
|
95109
|
-
function resolvePreviewEffect(preset, direction) {
|
|
95110
|
-
if ((preset === "flyIn" || preset === "flyOut") && direction) {
|
|
95111
|
-
const dirMap = DIRECTION_FLY_MAP[direction];
|
|
95112
|
-
if (dirMap) {
|
|
95113
|
-
return preset === "flyIn" ? dirMap.flyIn : dirMap.flyOut;
|
|
95114
|
-
}
|
|
95115
|
-
}
|
|
95116
|
-
return PRESET_TO_EFFECT[preset];
|
|
95117
|
-
}
|
|
95118
|
-
function timingCurveToCss(curve, cubicBezierValues) {
|
|
95119
|
-
if (cubicBezierValues) {
|
|
95120
|
-
const parts = cubicBezierValues.split(",").map((s) => s.trim());
|
|
95121
|
-
if (parts.length === 4 && parts.every((p) => !Number.isNaN(Number(p)))) {
|
|
95122
|
-
return `cubic-bezier(${parts.join(", ")})`;
|
|
95123
|
-
}
|
|
95124
|
-
}
|
|
95125
|
-
switch (curve) {
|
|
95126
|
-
case "ease":
|
|
95127
|
-
return "ease";
|
|
95128
|
-
case "ease-in":
|
|
95129
|
-
return "ease-in";
|
|
95130
|
-
case "ease-out":
|
|
95131
|
-
return "ease-out";
|
|
95132
|
-
case "linear":
|
|
95133
|
-
return "linear";
|
|
95134
|
-
default:
|
|
95135
|
-
return "ease";
|
|
95136
|
-
}
|
|
95137
|
-
}
|
|
95138
|
-
function buildPreviewAnimation(preset, options) {
|
|
95139
|
-
if (preset === "none") {
|
|
95140
|
-
return void 0;
|
|
95141
|
-
}
|
|
95142
|
-
const effectName = resolvePreviewEffect(preset, options?.direction);
|
|
95143
|
-
if (!effectName) {
|
|
95144
|
-
return void 0;
|
|
95145
|
-
}
|
|
95146
|
-
const keyframeName = `pptx-${effectName}`;
|
|
95147
|
-
const keyframesCss = getEffectKeyframes(effectName);
|
|
95148
|
-
if (!keyframesCss) {
|
|
95149
|
-
return void 0;
|
|
95150
|
-
}
|
|
95151
|
-
const duration = options?.durationMs ?? 600;
|
|
95152
|
-
const easing = timingCurveToCss(options?.timingCurve, options?.cubicBezier);
|
|
95153
|
-
return {
|
|
95154
|
-
keyframeName,
|
|
95155
|
-
keyframesCss,
|
|
95156
|
-
cssAnimation: `${keyframeName} ${duration}ms ${easing} 0ms 1 normal both`,
|
|
95157
|
-
durationMs: duration
|
|
95158
|
-
};
|
|
95159
|
-
}
|
|
95160
95617
|
var CAMERA_PRESET_MAP = {
|
|
95161
95618
|
orthographicFront: { rotateX: 0, rotateY: 0, rotateZ: 0 },
|
|
95162
95619
|
perspectiveFront: { perspective: "1000px", rotateX: 0, rotateY: 0, rotateZ: 0 },
|
|
@@ -99413,6 +99870,12 @@ function flattenMorphElements(elements, counterpart, offsetX = 0, offsetY = 0) {
|
|
|
99413
99870
|
}
|
|
99414
99871
|
return out;
|
|
99415
99872
|
}
|
|
99873
|
+
function differentText(a, b) {
|
|
99874
|
+
const textOf2 = (element) => (element.text ?? "").replace(/\s+/gu, " ").trim();
|
|
99875
|
+
const fromText = textOf2(a);
|
|
99876
|
+
const toText = textOf2(b);
|
|
99877
|
+
return fromText !== "" && toText !== "" && fromText !== toText;
|
|
99878
|
+
}
|
|
99416
99879
|
var NV_PR_KEYS = [
|
|
99417
99880
|
"p:nvSpPr",
|
|
99418
99881
|
"p:nvPicPr",
|
|
@@ -99527,6 +99990,9 @@ function matchMorphElementsFull(fromSlide, toSlide) {
|
|
|
99527
99990
|
if (fromEl.type !== toEl.type) {
|
|
99528
99991
|
continue;
|
|
99529
99992
|
}
|
|
99993
|
+
if (differentText(fromEl, toEl)) {
|
|
99994
|
+
continue;
|
|
99995
|
+
}
|
|
99530
99996
|
const widthRatio = Math.max(fromEl.width, toEl.width, 1) / Math.max(Math.min(fromEl.width, toEl.width), 1);
|
|
99531
99997
|
const heightRatio = Math.max(fromEl.height, toEl.height, 1) / Math.max(Math.min(fromEl.height, toEl.height), 1);
|
|
99532
99998
|
if (widthRatio > PROXIMITY_SIZE_RATIO_LIMIT || heightRatio > PROXIMITY_SIZE_RATIO_LIMIT) {
|
|
@@ -99783,6 +100249,27 @@ function appearanceSignature(element, depth = 0) {
|
|
|
99783
100249
|
function morphPairNeedsCrossfade(fromElement, toElement) {
|
|
99784
100250
|
return appearanceSignature(fromElement) !== appearanceSignature(toElement);
|
|
99785
100251
|
}
|
|
100252
|
+
var GEOMETRY_EPSILON = 0.5;
|
|
100253
|
+
function isInertMorphPair(fromElement, toElement) {
|
|
100254
|
+
return Math.abs(fromElement.x - toElement.x) <= GEOMETRY_EPSILON && Math.abs(fromElement.y - toElement.y) <= GEOMETRY_EPSILON && Math.abs(fromElement.width - toElement.width) <= GEOMETRY_EPSILON && Math.abs(fromElement.height - toElement.height) <= GEOMETRY_EPSILON && (fromElement.rotation ?? 0) === (toElement.rotation ?? 0) && Boolean(fromElement.flipHorizontal) === Boolean(toElement.flipHorizontal) && Boolean(fromElement.flipVertical) === Boolean(toElement.flipVertical) && (fromElement.opacity ?? 1) === (toElement.opacity ?? 1) && !morphPairNeedsCrossfade(fromElement, toElement);
|
|
100255
|
+
}
|
|
100256
|
+
function crossfadeIncomingMayFadeIn(element) {
|
|
100257
|
+
const image = element;
|
|
100258
|
+
if (image.imagePath || image.svgPath) {
|
|
100259
|
+
return false;
|
|
100260
|
+
}
|
|
100261
|
+
if (!hasShapeProperties(element)) {
|
|
100262
|
+
return true;
|
|
100263
|
+
}
|
|
100264
|
+
const style = element.shapeStyle;
|
|
100265
|
+
if (!style) {
|
|
100266
|
+
return true;
|
|
100267
|
+
}
|
|
100268
|
+
if (style.fillMode === "none" || (style.fillOpacity ?? 1) === 0) {
|
|
100269
|
+
return true;
|
|
100270
|
+
}
|
|
100271
|
+
return !(style.fillColor || style.fillGradient || style.fillGradientStops?.length || style.fillPatternPreset || style.fillImageUrl);
|
|
100272
|
+
}
|
|
99786
100273
|
function generateMorphAnimations(pairs2, durationMs, _mode = "object") {
|
|
99787
100274
|
const animations = [];
|
|
99788
100275
|
for (let index = 0; index < pairs2.length; index++) {
|
|
@@ -99797,13 +100284,15 @@ function generateMorphAnimations(pairs2, durationMs, _mode = "object") {
|
|
|
99797
100284
|
const toRot = toElement.rotation ?? 0;
|
|
99798
100285
|
const fromRot = shortestRotationTarget(toRot, fromElement.rotation ?? 0);
|
|
99799
100286
|
const flips = `${toElement.flipHorizontal ? " scaleX(-1)" : ""}${toElement.flipVertical ? " scaleY(-1)" : ""}`;
|
|
100287
|
+
const inert = isInertMorphPair(fromElement, toElement);
|
|
100288
|
+
const crossfadesIn = !inert && morphPairNeedsCrossfade(fromElement, toElement) && crossfadeIncomingMayFadeIn(toElement);
|
|
99800
100289
|
const fromProps = [
|
|
99801
100290
|
` transform: translate(${dx}px, ${dy}px) scale(${sx}, ${sy}) rotate(${fromRot}deg)${flips};`,
|
|
99802
|
-
` opacity: ${fromOpacity};`
|
|
100291
|
+
` opacity: ${inert ? 0 : crossfadesIn ? 0 : fromOpacity};`
|
|
99803
100292
|
];
|
|
99804
100293
|
const toProps = [
|
|
99805
100294
|
` transform: translate(0, 0) scale(1, 1) rotate(${toRot}deg)${flips};`,
|
|
99806
|
-
` opacity: ${toOpacity};`
|
|
100295
|
+
` opacity: ${inert ? 0 : toOpacity};`
|
|
99807
100296
|
];
|
|
99808
100297
|
const colorInterp = buildColorInterpolationProps(fromElement, toElement);
|
|
99809
100298
|
if (colorInterp) {
|
|
@@ -107203,6 +107692,410 @@ function clampIndex(index, slideCount) {
|
|
|
107203
107692
|
}
|
|
107204
107693
|
return Math.min(Math.max(Math.trunc(index), 0), slideCount - 1);
|
|
107205
107694
|
}
|
|
107695
|
+
var OUTLINE_VIEW_ATTR = "data-pptx-outline-view";
|
|
107696
|
+
var OUTLINE_ROW_ATTR = "data-pptx-outline-row";
|
|
107697
|
+
var OUTLINE_SLIDE_ATTR = "data-pptx-outline-slide";
|
|
107698
|
+
var OUTLINE_LEVEL_ATTR = "data-pptx-outline-level";
|
|
107699
|
+
var MAX_PARAGRAPH_LEVEL = 8;
|
|
107700
|
+
var TITLE_PH_TYPES = /* @__PURE__ */ new Set(["title", "ctrtitle"]);
|
|
107701
|
+
var CHROME_PH_TYPES = /* @__PURE__ */ new Set(["ftr", "hdr", "dt", "sldnum"]);
|
|
107702
|
+
var OUTLINE_TITLE_ELEMENT_NAME = "Title";
|
|
107703
|
+
function placeholderType(element) {
|
|
107704
|
+
const ph = element.rawXml?.["p:nvSpPr"]?.["p:nvPr"]?.["p:ph"];
|
|
107705
|
+
if (!ph) {
|
|
107706
|
+
return void 0;
|
|
107707
|
+
}
|
|
107708
|
+
const type = typeof ph["@_type"] === "string" ? ph["@_type"].trim().toLowerCase() : "";
|
|
107709
|
+
return type.length > 0 ? type : "body";
|
|
107710
|
+
}
|
|
107711
|
+
function isTextBearing(element) {
|
|
107712
|
+
return hasTextProperties(element);
|
|
107713
|
+
}
|
|
107714
|
+
function elementHasText(element) {
|
|
107715
|
+
if (!hasTextProperties(element)) {
|
|
107716
|
+
return false;
|
|
107717
|
+
}
|
|
107718
|
+
if (typeof element.text === "string" && element.text.trim().length > 0) {
|
|
107719
|
+
return true;
|
|
107720
|
+
}
|
|
107721
|
+
return (element.textSegments ?? []).some((segment) => segment.text.trim().length > 0);
|
|
107722
|
+
}
|
|
107723
|
+
function resolveSlideOutlineElements(slide) {
|
|
107724
|
+
const elements = (slide.elements ?? []).filter(isTextBearing);
|
|
107725
|
+
const placeholderTitle = elements.find((element) => {
|
|
107726
|
+
const type = placeholderType(element);
|
|
107727
|
+
return type !== void 0 && TITLE_PH_TYPES.has(type);
|
|
107728
|
+
});
|
|
107729
|
+
const placeholderBody = elements.filter((element) => {
|
|
107730
|
+
const type = placeholderType(element);
|
|
107731
|
+
return type !== void 0 && !TITLE_PH_TYPES.has(type) && !CHROME_PH_TYPES.has(type);
|
|
107732
|
+
});
|
|
107733
|
+
if (placeholderTitle || placeholderBody.length > 0) {
|
|
107734
|
+
return { title: placeholderTitle ?? null, body: placeholderBody };
|
|
107735
|
+
}
|
|
107736
|
+
const named = elements.find(
|
|
107737
|
+
(element) => (element.name ?? "").trim().toLowerCase() === OUTLINE_TITLE_ELEMENT_NAME.toLowerCase()
|
|
107738
|
+
);
|
|
107739
|
+
const withText = elements.filter(elementHasText);
|
|
107740
|
+
const title = named ?? withText[0] ?? null;
|
|
107741
|
+
return { title, body: withText.filter((element) => element !== title) };
|
|
107742
|
+
}
|
|
107743
|
+
function isBulletMarker(segment) {
|
|
107744
|
+
const bullet = segment.bulletInfo;
|
|
107745
|
+
if (!bullet) {
|
|
107746
|
+
return false;
|
|
107747
|
+
}
|
|
107748
|
+
const marker = bullet.char ? `${bullet.char} ` : bullet.imageRelId || bullet.imageDataUrl ? "\u{1F4CE} " : bullet.autoNumType ? void 0 : "\u2022 ";
|
|
107749
|
+
return marker ? segment.text === marker : bullet.paragraphIndex !== void 0;
|
|
107750
|
+
}
|
|
107751
|
+
function isParagraphSeparator(segment) {
|
|
107752
|
+
return Boolean(segment.isParagraphBreak) || segment.text === "\n" && !segment.isLineBreak;
|
|
107753
|
+
}
|
|
107754
|
+
function groupElementParagraphs(element) {
|
|
107755
|
+
const withText = hasTextProperties(element) ? element : void 0;
|
|
107756
|
+
const segments = withText?.textSegments;
|
|
107757
|
+
if (!segments || segments.length === 0) {
|
|
107758
|
+
const style = { ...withText?.textStyle ?? {} };
|
|
107759
|
+
return (withText?.text ?? "").split("\n").map((text2) => ({
|
|
107760
|
+
content: [{ text: text2, style: { ...style } }]
|
|
107761
|
+
}));
|
|
107762
|
+
}
|
|
107763
|
+
const groups = [{ content: [] }];
|
|
107764
|
+
for (const segment of segments) {
|
|
107765
|
+
if (isParagraphSeparator(segment)) {
|
|
107766
|
+
groups.push({ content: [] });
|
|
107767
|
+
continue;
|
|
107768
|
+
}
|
|
107769
|
+
const current = groups[groups.length - 1];
|
|
107770
|
+
if (current.content.length === 0 && current.marker === void 0 && isBulletMarker(segment)) {
|
|
107771
|
+
current.marker = segment;
|
|
107772
|
+
continue;
|
|
107773
|
+
}
|
|
107774
|
+
current.content.push(segment);
|
|
107775
|
+
}
|
|
107776
|
+
return groups;
|
|
107777
|
+
}
|
|
107778
|
+
function paragraphGroupText(group) {
|
|
107779
|
+
return group.content.map((segment) => segment.isLineBreak ? " " : segment.text).join("");
|
|
107780
|
+
}
|
|
107781
|
+
function paragraphGroupLevel(group) {
|
|
107782
|
+
const first = group.marker ?? group.content[0];
|
|
107783
|
+
const level = first?.paragraphLevel;
|
|
107784
|
+
return typeof level === "number" && level > 0 ? Math.min(level, MAX_PARAGRAPH_LEVEL) : 0;
|
|
107785
|
+
}
|
|
107786
|
+
function readElementParagraphs(element) {
|
|
107787
|
+
const groups = groupElementParagraphs(element);
|
|
107788
|
+
const paragraphs = groups.map((group) => ({
|
|
107789
|
+
text: paragraphGroupText(group),
|
|
107790
|
+
level: paragraphGroupLevel(group)
|
|
107791
|
+
}));
|
|
107792
|
+
let last = paragraphs.length - 1;
|
|
107793
|
+
while (last >= 0 && paragraphs[last].text.length === 0) {
|
|
107794
|
+
last -= 1;
|
|
107795
|
+
}
|
|
107796
|
+
return paragraphs.slice(0, last + 1);
|
|
107797
|
+
}
|
|
107798
|
+
function outlineRowKey(slideId, elementId, paragraphIndex) {
|
|
107799
|
+
return `${slideId}|${elementId ?? "\0new-title"}|${paragraphIndex}`;
|
|
107800
|
+
}
|
|
107801
|
+
function pushElementRows(rows, element, kind, slide, slideIndex) {
|
|
107802
|
+
for (const [paragraphIndex, paragraph] of readElementParagraphs(element).entries()) {
|
|
107803
|
+
rows.push({
|
|
107804
|
+
key: outlineRowKey(slide.id, element.id, paragraphIndex),
|
|
107805
|
+
slideIndex,
|
|
107806
|
+
slideId: slide.id,
|
|
107807
|
+
kind,
|
|
107808
|
+
elementId: element.id,
|
|
107809
|
+
paragraphIndex,
|
|
107810
|
+
// A title always sits in the leftmost column; body text is pushed one
|
|
107811
|
+
// column right of it, so authored level 0 reads as outline level 1.
|
|
107812
|
+
level: kind === "title" ? 0 : paragraph.level + 1,
|
|
107813
|
+
text: paragraph.text
|
|
107814
|
+
});
|
|
107815
|
+
}
|
|
107816
|
+
}
|
|
107817
|
+
function buildOutline(slides) {
|
|
107818
|
+
const rows = [];
|
|
107819
|
+
for (const [slideIndex, slide] of slides.entries()) {
|
|
107820
|
+
const { title, body } = resolveSlideOutlineElements(slide);
|
|
107821
|
+
const before = rows.length;
|
|
107822
|
+
if (title) {
|
|
107823
|
+
pushElementRows(rows, title, "title", slide, slideIndex);
|
|
107824
|
+
}
|
|
107825
|
+
if (rows.length === before) {
|
|
107826
|
+
rows.push({
|
|
107827
|
+
key: outlineRowKey(slide.id, title?.id ?? null, 0),
|
|
107828
|
+
slideIndex,
|
|
107829
|
+
slideId: slide.id,
|
|
107830
|
+
kind: "title",
|
|
107831
|
+
elementId: title?.id ?? null,
|
|
107832
|
+
paragraphIndex: 0,
|
|
107833
|
+
level: 0,
|
|
107834
|
+
text: ""
|
|
107835
|
+
});
|
|
107836
|
+
}
|
|
107837
|
+
for (const element of body) {
|
|
107838
|
+
pushElementRows(rows, element, "body", slide, slideIndex);
|
|
107839
|
+
}
|
|
107840
|
+
}
|
|
107841
|
+
return rows;
|
|
107842
|
+
}
|
|
107843
|
+
function findOutlineRow(rows, key) {
|
|
107844
|
+
return rows.find((row) => row.key === key);
|
|
107845
|
+
}
|
|
107846
|
+
var PASTE_OFFSET_PX = 20;
|
|
107847
|
+
function generateElementId() {
|
|
107848
|
+
return `el-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
107849
|
+
}
|
|
107850
|
+
function makeCloneId(intoTemplate, sourceId) {
|
|
107851
|
+
if (!intoTemplate) {
|
|
107852
|
+
return generateElementId();
|
|
107853
|
+
}
|
|
107854
|
+
if (sourceId.startsWith("master-")) {
|
|
107855
|
+
return `master-${generateElementId()}`;
|
|
107856
|
+
}
|
|
107857
|
+
return `layout-${generateElementId()}`;
|
|
107858
|
+
}
|
|
107859
|
+
function buildElementClipboardPayload(element, isTemplate) {
|
|
107860
|
+
return { element: structuredClone(element), isTemplate };
|
|
107861
|
+
}
|
|
107862
|
+
function cloneElementForPaste(element, options = {}) {
|
|
107863
|
+
const clone3 = structuredClone(element);
|
|
107864
|
+
clone3.id = makeCloneId(options.intoTemplate ?? false, element.id);
|
|
107865
|
+
clone3.x += options.offsetX ?? PASTE_OFFSET_PX;
|
|
107866
|
+
clone3.y += options.offsetY ?? PASTE_OFFSET_PX;
|
|
107867
|
+
return clone3;
|
|
107868
|
+
}
|
|
107869
|
+
function mapOutlineKey(input, rowKey) {
|
|
107870
|
+
const none = { edit: null, preventDefault: false };
|
|
107871
|
+
if (input.ctrlKey || input.metaKey) {
|
|
107872
|
+
return none;
|
|
107873
|
+
}
|
|
107874
|
+
if (input.key === "Tab" && !input.altKey) {
|
|
107875
|
+
return {
|
|
107876
|
+
edit: { type: "indent", key: rowKey, delta: input.shiftKey ? -1 : 1 },
|
|
107877
|
+
preventDefault: true
|
|
107878
|
+
};
|
|
107879
|
+
}
|
|
107880
|
+
if (input.altKey && input.shiftKey && (input.key === "ArrowRight" || input.key === "ArrowLeft")) {
|
|
107881
|
+
return {
|
|
107882
|
+
edit: { type: "indent", key: rowKey, delta: input.key === "ArrowRight" ? 1 : -1 },
|
|
107883
|
+
preventDefault: true
|
|
107884
|
+
};
|
|
107885
|
+
}
|
|
107886
|
+
if (input.key === "Enter" && !input.shiftKey && !input.altKey) {
|
|
107887
|
+
return { edit: { type: "insertAfter", key: rowKey }, preventDefault: true };
|
|
107888
|
+
}
|
|
107889
|
+
return none;
|
|
107890
|
+
}
|
|
107891
|
+
function withLevel(segments, level) {
|
|
107892
|
+
return segments.map((segment, index) => {
|
|
107893
|
+
if (index > 0) {
|
|
107894
|
+
return segment;
|
|
107895
|
+
}
|
|
107896
|
+
const next = { ...segment };
|
|
107897
|
+
if (level > 0) {
|
|
107898
|
+
next.paragraphLevel = Math.min(level, MAX_PARAGRAPH_LEVEL);
|
|
107899
|
+
} else {
|
|
107900
|
+
delete next.paragraphLevel;
|
|
107901
|
+
}
|
|
107902
|
+
return next;
|
|
107903
|
+
});
|
|
107904
|
+
}
|
|
107905
|
+
function rebuildParagraph(group, donor, text2, elementStyle) {
|
|
107906
|
+
if (group && paragraphGroupText(group) === text2) {
|
|
107907
|
+
return [...group.marker ? [group.marker] : [], ...group.content];
|
|
107908
|
+
}
|
|
107909
|
+
const source = group ?? donor;
|
|
107910
|
+
const marker = source?.marker ? [source.marker] : [];
|
|
107911
|
+
const content = remapTextToSegments(text2, source?.content, elementStyle);
|
|
107912
|
+
return [...marker, ...content];
|
|
107913
|
+
}
|
|
107914
|
+
function writeElementParagraphs(element, paragraphs) {
|
|
107915
|
+
const groups = groupElementParagraphs(element);
|
|
107916
|
+
const donor = groups[groups.length - 1];
|
|
107917
|
+
const style = hasTextProperties(element) ? element.textStyle : void 0;
|
|
107918
|
+
const segments = [];
|
|
107919
|
+
for (const [index, paragraph] of paragraphs.entries()) {
|
|
107920
|
+
if (index > 0) {
|
|
107921
|
+
const previous = segments[segments.length - 1];
|
|
107922
|
+
segments.push({
|
|
107923
|
+
text: "\n",
|
|
107924
|
+
style: { ...previous?.style ?? style ?? {} },
|
|
107925
|
+
isParagraphBreak: true
|
|
107926
|
+
});
|
|
107927
|
+
}
|
|
107928
|
+
segments.push(
|
|
107929
|
+
...withLevel(rebuildParagraph(groups[index], donor, paragraph.text, style), paragraph.level)
|
|
107930
|
+
);
|
|
107931
|
+
}
|
|
107932
|
+
return {
|
|
107933
|
+
...element,
|
|
107934
|
+
text: paragraphs.map((paragraph) => paragraph.text).join("\n"),
|
|
107935
|
+
textSegments: segments
|
|
107936
|
+
};
|
|
107937
|
+
}
|
|
107938
|
+
var DEFAULT_CANVAS = { width: 960, height: 540 };
|
|
107939
|
+
function createTitleElement(text2, options) {
|
|
107940
|
+
const canvas = options.canvas ?? DEFAULT_CANVAS;
|
|
107941
|
+
return {
|
|
107942
|
+
type: "text",
|
|
107943
|
+
id: options.idGenerator ? options.idGenerator() : generateElementId(),
|
|
107944
|
+
name: OUTLINE_TITLE_ELEMENT_NAME,
|
|
107945
|
+
x: Math.round(canvas.width * 0.06),
|
|
107946
|
+
y: Math.round(canvas.height * 0.08),
|
|
107947
|
+
width: Math.round(canvas.width * 0.88),
|
|
107948
|
+
height: Math.round(canvas.height * 0.17),
|
|
107949
|
+
text: text2,
|
|
107950
|
+
textStyle: { fontSize: 36, bold: true },
|
|
107951
|
+
textSegments: [{ text: text2, style: { fontSize: 36, bold: true } }]
|
|
107952
|
+
};
|
|
107953
|
+
}
|
|
107954
|
+
function renumber(slides) {
|
|
107955
|
+
return slides.map((slide, index) => ({ ...slide, slideNumber: index + 1 }));
|
|
107956
|
+
}
|
|
107957
|
+
function unchanged(slides, row) {
|
|
107958
|
+
return {
|
|
107959
|
+
slides,
|
|
107960
|
+
changed: false,
|
|
107961
|
+
focusKey: row?.key ?? null,
|
|
107962
|
+
activeSlideIndex: row?.slideIndex ?? 0
|
|
107963
|
+
};
|
|
107964
|
+
}
|
|
107965
|
+
function replaceElement(slides, slideIndex, elementId, next) {
|
|
107966
|
+
return slides.map(
|
|
107967
|
+
(slide, index) => index === slideIndex ? {
|
|
107968
|
+
...slide,
|
|
107969
|
+
elements: (slide.elements ?? []).map(
|
|
107970
|
+
(element) => element.id === elementId ? next : element
|
|
107971
|
+
)
|
|
107972
|
+
} : slide
|
|
107973
|
+
);
|
|
107974
|
+
}
|
|
107975
|
+
function editParagraphs(slides, row, mutate) {
|
|
107976
|
+
const slide = slides[row.slideIndex];
|
|
107977
|
+
const element = (slide?.elements ?? []).find((candidate) => candidate.id === row.elementId);
|
|
107978
|
+
if (!element) {
|
|
107979
|
+
return null;
|
|
107980
|
+
}
|
|
107981
|
+
const paragraphs = readElementParagraphs(element);
|
|
107982
|
+
while (paragraphs.length <= row.paragraphIndex) {
|
|
107983
|
+
paragraphs.push({ text: "", level: 0 });
|
|
107984
|
+
}
|
|
107985
|
+
const next = mutate(paragraphs);
|
|
107986
|
+
if (!next) {
|
|
107987
|
+
return null;
|
|
107988
|
+
}
|
|
107989
|
+
return {
|
|
107990
|
+
slides: replaceElement(
|
|
107991
|
+
slides,
|
|
107992
|
+
row.slideIndex,
|
|
107993
|
+
element.id,
|
|
107994
|
+
writeElementParagraphs(element, next)
|
|
107995
|
+
),
|
|
107996
|
+
changed: true,
|
|
107997
|
+
focusKey: row.key,
|
|
107998
|
+
activeSlideIndex: row.slideIndex
|
|
107999
|
+
};
|
|
108000
|
+
}
|
|
108001
|
+
function oneLine(text2) {
|
|
108002
|
+
return text2.replace(/[\r\n]+/g, " ");
|
|
108003
|
+
}
|
|
108004
|
+
function applySetText(slides, row, raw, options) {
|
|
108005
|
+
const text2 = oneLine(raw);
|
|
108006
|
+
if (row.elementId === null) {
|
|
108007
|
+
if (text2.length === 0) {
|
|
108008
|
+
return unchanged([...slides], row);
|
|
108009
|
+
}
|
|
108010
|
+
const element = createTitleElement(text2, options);
|
|
108011
|
+
const next = slides.map(
|
|
108012
|
+
(slide, index) => index === row.slideIndex ? { ...slide, elements: [element, ...slide.elements ?? []] } : slide
|
|
108013
|
+
);
|
|
108014
|
+
return {
|
|
108015
|
+
slides: next,
|
|
108016
|
+
changed: true,
|
|
108017
|
+
focusKey: outlineRowKey(row.slideId, element.id, 0),
|
|
108018
|
+
activeSlideIndex: row.slideIndex
|
|
108019
|
+
};
|
|
108020
|
+
}
|
|
108021
|
+
const result = editParagraphs(slides, row, (paragraphs) => {
|
|
108022
|
+
if (paragraphs[row.paragraphIndex].text === text2) {
|
|
108023
|
+
return null;
|
|
108024
|
+
}
|
|
108025
|
+
const next = [...paragraphs];
|
|
108026
|
+
next[row.paragraphIndex] = { ...next[row.paragraphIndex], text: text2 };
|
|
108027
|
+
return next;
|
|
108028
|
+
});
|
|
108029
|
+
return result ?? unchanged([...slides], row);
|
|
108030
|
+
}
|
|
108031
|
+
function applyIndent(slides, row, delta) {
|
|
108032
|
+
if (row.kind !== "body" || row.elementId === null || delta === 0) {
|
|
108033
|
+
return unchanged([...slides], row);
|
|
108034
|
+
}
|
|
108035
|
+
const result = editParagraphs(slides, row, (paragraphs) => {
|
|
108036
|
+
const current = paragraphs[row.paragraphIndex];
|
|
108037
|
+
const level = Math.min(Math.max(current.level + (delta > 0 ? 1 : -1), 0), MAX_PARAGRAPH_LEVEL);
|
|
108038
|
+
if (level === current.level) {
|
|
108039
|
+
return null;
|
|
108040
|
+
}
|
|
108041
|
+
const next = [...paragraphs];
|
|
108042
|
+
next[row.paragraphIndex] = { ...current, level };
|
|
108043
|
+
return next;
|
|
108044
|
+
});
|
|
108045
|
+
return result ?? unchanged([...slides], row);
|
|
108046
|
+
}
|
|
108047
|
+
function applyInsertAfter(slides, row, options) {
|
|
108048
|
+
if (row.kind === "title") {
|
|
108049
|
+
const slide = {
|
|
108050
|
+
id: makeSlideId(options.idGenerator),
|
|
108051
|
+
rId: "",
|
|
108052
|
+
slideNumber: row.slideIndex + 2,
|
|
108053
|
+
elements: []
|
|
108054
|
+
};
|
|
108055
|
+
const next = renumber([
|
|
108056
|
+
...slides.slice(0, row.slideIndex + 1),
|
|
108057
|
+
slide,
|
|
108058
|
+
...slides.slice(row.slideIndex + 1)
|
|
108059
|
+
]);
|
|
108060
|
+
return {
|
|
108061
|
+
slides: next,
|
|
108062
|
+
changed: true,
|
|
108063
|
+
focusKey: outlineRowKey(slide.id, null, 0),
|
|
108064
|
+
activeSlideIndex: row.slideIndex + 1
|
|
108065
|
+
};
|
|
108066
|
+
}
|
|
108067
|
+
const result = editParagraphs(slides, row, (paragraphs) => {
|
|
108068
|
+
const next = [...paragraphs];
|
|
108069
|
+
next.splice(row.paragraphIndex + 1, 0, {
|
|
108070
|
+
text: "",
|
|
108071
|
+
level: paragraphs[row.paragraphIndex].level
|
|
108072
|
+
});
|
|
108073
|
+
return next;
|
|
108074
|
+
});
|
|
108075
|
+
if (!result) {
|
|
108076
|
+
return unchanged([...slides], row);
|
|
108077
|
+
}
|
|
108078
|
+
return {
|
|
108079
|
+
...result,
|
|
108080
|
+
focusKey: outlineRowKey(row.slideId, row.elementId, row.paragraphIndex + 1)
|
|
108081
|
+
};
|
|
108082
|
+
}
|
|
108083
|
+
function applyOutlineEdit(slides, edit, options = {}) {
|
|
108084
|
+
const row = findOutlineRow(buildOutline(slides), edit.key);
|
|
108085
|
+
if (!row) {
|
|
108086
|
+
return unchanged([...slides]);
|
|
108087
|
+
}
|
|
108088
|
+
switch (edit.type) {
|
|
108089
|
+
case "setText":
|
|
108090
|
+
return applySetText(slides, row, edit.text, options);
|
|
108091
|
+
case "indent":
|
|
108092
|
+
return applyIndent(slides, row, edit.delta);
|
|
108093
|
+
case "insertAfter":
|
|
108094
|
+
return applyInsertAfter(slides, row, options);
|
|
108095
|
+
default:
|
|
108096
|
+
return unchanged([...slides], row);
|
|
108097
|
+
}
|
|
108098
|
+
}
|
|
107206
108099
|
var NUDGE_SMALL = 1;
|
|
107207
108100
|
var NUDGE_LARGE = 10;
|
|
107208
108101
|
var GUARD_DEFAULTS = {
|
|
@@ -109227,29 +110120,6 @@ var COMMON_FONTS = [
|
|
|
109227
110120
|
"Tw Cen MT",
|
|
109228
110121
|
"Verdana"
|
|
109229
110122
|
];
|
|
109230
|
-
var PASTE_OFFSET_PX = 20;
|
|
109231
|
-
function generateElementId() {
|
|
109232
|
-
return `el-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
109233
|
-
}
|
|
109234
|
-
function makeCloneId(intoTemplate, sourceId) {
|
|
109235
|
-
if (!intoTemplate) {
|
|
109236
|
-
return generateElementId();
|
|
109237
|
-
}
|
|
109238
|
-
if (sourceId.startsWith("master-")) {
|
|
109239
|
-
return `master-${generateElementId()}`;
|
|
109240
|
-
}
|
|
109241
|
-
return `layout-${generateElementId()}`;
|
|
109242
|
-
}
|
|
109243
|
-
function buildElementClipboardPayload(element, isTemplate) {
|
|
109244
|
-
return { element: structuredClone(element), isTemplate };
|
|
109245
|
-
}
|
|
109246
|
-
function cloneElementForPaste(element, options = {}) {
|
|
109247
|
-
const clone3 = structuredClone(element);
|
|
109248
|
-
clone3.id = makeCloneId(options.intoTemplate ?? false, element.id);
|
|
109249
|
-
clone3.x += options.offsetX ?? PASTE_OFFSET_PX;
|
|
109250
|
-
clone3.y += options.offsetY ?? PASTE_OFFSET_PX;
|
|
109251
|
-
return clone3;
|
|
109252
|
-
}
|
|
109253
110123
|
var DEFAULT_PREVIEW_ELEMENT_CAP = 500;
|
|
109254
110124
|
function buildPreviewElements(slide, templateElements = [], options) {
|
|
109255
110125
|
const cap = options?.cap ?? DEFAULT_PREVIEW_ELEMENT_CAP;
|
|
@@ -110278,6 +111148,91 @@ function applyRehearsalTimings(slides, timings) {
|
|
|
110278
111148
|
function computeEntranceAnimationDelay(delayMs, animationIndex) {
|
|
110279
111149
|
return Math.max(0, delayMs || 0) + animationIndex * 60;
|
|
110280
111150
|
}
|
|
111151
|
+
function resolveCustomShowIndexes(slides, customShow) {
|
|
111152
|
+
const keys = customShow.slideRIds ?? customShow.slideIds;
|
|
111153
|
+
if (!keys || keys.length === 0) {
|
|
111154
|
+
return [];
|
|
111155
|
+
}
|
|
111156
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
111157
|
+
slides.forEach((slide, index) => {
|
|
111158
|
+
if (slide.id !== void 0 && !byKey.has(slide.id)) {
|
|
111159
|
+
byKey.set(slide.id, index);
|
|
111160
|
+
}
|
|
111161
|
+
});
|
|
111162
|
+
slides.forEach((slide, index) => {
|
|
111163
|
+
if (slide.rId !== void 0) {
|
|
111164
|
+
byKey.set(slide.rId, index);
|
|
111165
|
+
}
|
|
111166
|
+
});
|
|
111167
|
+
const resolved = [];
|
|
111168
|
+
for (const key of keys) {
|
|
111169
|
+
const index = byKey.get(key);
|
|
111170
|
+
if (index !== void 0) {
|
|
111171
|
+
resolved.push(index);
|
|
111172
|
+
}
|
|
111173
|
+
}
|
|
111174
|
+
return resolved;
|
|
111175
|
+
}
|
|
111176
|
+
function resolveShowSlideIndexes(slides, activeCustomShow) {
|
|
111177
|
+
const all = [];
|
|
111178
|
+
for (let index = 0; index < slides.length; index++) {
|
|
111179
|
+
all.push(index);
|
|
111180
|
+
}
|
|
111181
|
+
const base = activeCustomShow ? resolveCustomShowIndexes(slides, activeCustomShow) : all;
|
|
111182
|
+
const effectiveBase = base.length > 0 ? base : all;
|
|
111183
|
+
const visible = effectiveBase.filter((index) => !slides[index]?.hidden);
|
|
111184
|
+
return visible.length > 0 ? visible : effectiveBase;
|
|
111185
|
+
}
|
|
111186
|
+
function showPosition(deckIndex, showIndexes) {
|
|
111187
|
+
return showIndexes.indexOf(deckIndex);
|
|
111188
|
+
}
|
|
111189
|
+
function nextShowSlideIndex(deckIndex, showIndexes, options) {
|
|
111190
|
+
if (showIndexes.length === 0) {
|
|
111191
|
+
return void 0;
|
|
111192
|
+
}
|
|
111193
|
+
const position2 = showPosition(deckIndex, showIndexes);
|
|
111194
|
+
if (position2 >= 0) {
|
|
111195
|
+
if (position2 + 1 < showIndexes.length) {
|
|
111196
|
+
return showIndexes[position2 + 1];
|
|
111197
|
+
}
|
|
111198
|
+
return options?.loop ? showIndexes[0] : void 0;
|
|
111199
|
+
}
|
|
111200
|
+
for (const candidate of showIndexes) {
|
|
111201
|
+
if (candidate > deckIndex) {
|
|
111202
|
+
return candidate;
|
|
111203
|
+
}
|
|
111204
|
+
}
|
|
111205
|
+
return options?.loop ? showIndexes[0] : void 0;
|
|
111206
|
+
}
|
|
111207
|
+
function previousShowSlideIndex(deckIndex, showIndexes) {
|
|
111208
|
+
if (showIndexes.length === 0) {
|
|
111209
|
+
return void 0;
|
|
111210
|
+
}
|
|
111211
|
+
const position2 = showPosition(deckIndex, showIndexes);
|
|
111212
|
+
if (position2 >= 0) {
|
|
111213
|
+
return position2 > 0 ? showIndexes[position2 - 1] : void 0;
|
|
111214
|
+
}
|
|
111215
|
+
let previous;
|
|
111216
|
+
for (const candidate of showIndexes) {
|
|
111217
|
+
if (candidate < deckIndex) {
|
|
111218
|
+
previous = candidate;
|
|
111219
|
+
}
|
|
111220
|
+
}
|
|
111221
|
+
return previous;
|
|
111222
|
+
}
|
|
111223
|
+
function hasShowSlideAfter(deckIndex, showIndexes) {
|
|
111224
|
+
return nextShowSlideIndex(deckIndex, showIndexes) !== void 0;
|
|
111225
|
+
}
|
|
111226
|
+
function nextPresentedSlide(slides, deckIndex) {
|
|
111227
|
+
const next = nextShowSlideIndex(deckIndex, resolveShowSlideIndexes(slides));
|
|
111228
|
+
return next === void 0 ? void 0 : slides[next];
|
|
111229
|
+
}
|
|
111230
|
+
function firstShowSlideIndex(showIndexes) {
|
|
111231
|
+
return showIndexes.length > 0 ? showIndexes[0] : void 0;
|
|
111232
|
+
}
|
|
111233
|
+
function lastShowSlideIndex(showIndexes) {
|
|
111234
|
+
return showIndexes.length > 0 ? showIndexes[showIndexes.length - 1] : void 0;
|
|
111235
|
+
}
|
|
110281
111236
|
var VIEWER_PREFS_STORAGE_KEY = "pptx-viewer-prefs";
|
|
110282
111237
|
function hasLocalStorage() {
|
|
110283
111238
|
return typeof localStorage !== "undefined";
|
|
@@ -112898,6 +113853,7 @@ exports.DEFAULT_BROADCAST_SERVER_URL = DEFAULT_BROADCAST_SERVER_URL;
|
|
|
112898
113853
|
exports.DEFAULT_COLOR_CHANGE_TOLERANCE = DEFAULT_COLOR_CHANGE_TOLERANCE;
|
|
112899
113854
|
exports.DEFAULT_COLOR_MAP = DEFAULT_COLOR_MAP;
|
|
112900
113855
|
exports.DEFAULT_INSERT_CHART_TYPE = DEFAULT_INSERT_CHART_TYPE;
|
|
113856
|
+
exports.DEFAULT_MOTION_PATH_PRESET_ID = DEFAULT_MOTION_PATH_PRESET_ID;
|
|
112901
113857
|
exports.DEFAULT_QUICK_ACCESS_COMMAND_IDS = DEFAULT_QUICK_ACCESS_COMMAND_IDS;
|
|
112902
113858
|
exports.DEFAULT_ROW_HEIGHT = DEFAULT_ROW_HEIGHT;
|
|
112903
113859
|
exports.DEFAULT_VIEWER_OPTIONS = DEFAULT_VIEWER_OPTIONS;
|
|
@@ -112914,6 +113870,7 @@ exports.EXPORT_ASSEMBLING_PERCENT = EXPORT_ASSEMBLING_PERCENT;
|
|
|
112914
113870
|
exports.EXPORT_DONE_PERCENT = EXPORT_DONE_PERCENT;
|
|
112915
113871
|
exports.EncryptedFileError = EncryptedFileError;
|
|
112916
113872
|
exports.FILL_MODE_OPTIONS = FILL_MODE_OPTIONS;
|
|
113873
|
+
exports.FILL_PATTERN_LABEL_KEYS = FILL_PATTERN_LABEL_KEYS;
|
|
112917
113874
|
exports.GRADIENT_TYPE_OPTIONS = GRADIENT_TYPE_OPTIONS;
|
|
112918
113875
|
exports.HANDOUT_OPTIONS = HANDOUT_OPTIONS;
|
|
112919
113876
|
exports.INK_REPLAY_KEYFRAMES = INK_REPLAY_KEYFRAMES;
|
|
@@ -112924,11 +113881,16 @@ exports.MATERIAL_PRESETS = MATERIAL_PRESETS;
|
|
|
112924
113881
|
exports.MAX_ZOOM_SCALE = MAX_ZOOM_SCALE;
|
|
112925
113882
|
exports.MIN_ZOOM_SCALE = MIN_ZOOM_SCALE;
|
|
112926
113883
|
exports.MOBILE_BREAKPOINT = MOBILE_BREAKPOINT;
|
|
113884
|
+
exports.MOTION_PATH_FAMILIES = MOTION_PATH_FAMILIES;
|
|
112927
113885
|
exports.NOTES_FONT_SIZE_DEFAULT = NOTES_FONT_SIZE_DEFAULT;
|
|
112928
113886
|
exports.NOTES_FONT_SIZE_MAX = NOTES_FONT_SIZE_MAX;
|
|
112929
113887
|
exports.NOTES_FONT_SIZE_MIN = NOTES_FONT_SIZE_MIN;
|
|
112930
113888
|
exports.NOTES_FONT_SIZE_STEP = NOTES_FONT_SIZE_STEP;
|
|
112931
113889
|
exports.NUM = NUM;
|
|
113890
|
+
exports.OUTLINE_LEVEL_ATTR = OUTLINE_LEVEL_ATTR;
|
|
113891
|
+
exports.OUTLINE_ROW_ATTR = OUTLINE_ROW_ATTR;
|
|
113892
|
+
exports.OUTLINE_SLIDE_ATTR = OUTLINE_SLIDE_ATTR;
|
|
113893
|
+
exports.OUTLINE_VIEW_ATTR = OUTLINE_VIEW_ATTR;
|
|
112932
113894
|
exports.PATTERN_OPTIONS = PATTERN_OPTIONS;
|
|
112933
113895
|
exports.PRESENTATION_CHANNEL_NAME = PRESENTATION_CHANNEL_NAME;
|
|
112934
113896
|
exports.PRESENTATION_HASH = PRESENTATION_HASH;
|
|
@@ -112953,6 +113915,8 @@ exports.SHORTCUT_REFERENCE_ITEMS = SHORTCUT_REFERENCE_ITEMS;
|
|
|
112953
113915
|
exports.SLIDE_TRANSITION_KEYFRAMES = SLIDE_TRANSITION_KEYFRAMES;
|
|
112954
113916
|
exports.SLIDE_TRANSITION_OPTIONS = SLIDE_TRANSITION_OPTIONS;
|
|
112955
113917
|
exports.SLIDE_VIRTUALIZATION_THRESHOLD = SLIDE_VIRTUALIZATION_THRESHOLD;
|
|
113918
|
+
exports.SMARTART_COLOR_SCHEME_LABEL_KEYS = SMARTART_COLOR_SCHEME_LABEL_KEYS;
|
|
113919
|
+
exports.SMARTART_STYLE_LABEL_KEYS = SMARTART_STYLE_LABEL_KEYS;
|
|
112956
113920
|
exports.STATUS_BAR_CLASSES = STATUS_BAR_CLASSES;
|
|
112957
113921
|
exports.SWITCHABLE_LAYOUT_TYPES = SWITCHABLE_LAYOUT_TYPES;
|
|
112958
113922
|
exports.SvgExporter = SvgExporter;
|
|
@@ -112964,6 +113928,7 @@ exports.TEXT_WARP_PRESETS = TEXT_WARP_PRESETS;
|
|
|
112964
113928
|
exports.THEME_CATALOG = THEME_CATALOG;
|
|
112965
113929
|
exports.THEME_COLOR_LABELS = THEME_COLOR_LABELS;
|
|
112966
113930
|
exports.THEME_COLOR_SCHEME_KEYS = THEME_COLOR_SCHEME_KEYS;
|
|
113931
|
+
exports.THEME_COLOR_SLOT_LABEL_KEYS = THEME_COLOR_SLOT_LABEL_KEYS;
|
|
112967
113932
|
exports.THEME_PRESETS = THEME_PRESETS;
|
|
112968
113933
|
exports.TITLE_BAR_CLASSES = TITLE_BAR_CLASSES;
|
|
112969
113934
|
exports.TITLE_BAR_DEFAULT_FILE_KEY = TITLE_BAR_DEFAULT_FILE_KEY;
|
|
@@ -112997,6 +113962,8 @@ exports.applyChartBuildReveal = applyChartBuildReveal;
|
|
|
112997
113962
|
exports.applyColorChange = applyColorChange;
|
|
112998
113963
|
exports.applyDuotone = applyDuotone;
|
|
112999
113964
|
exports.applyFormatToElement = applyFormatToElement;
|
|
113965
|
+
exports.applyMotionPathPreset = applyMotionPathPreset;
|
|
113966
|
+
exports.applyOutlineEdit = applyOutlineEdit;
|
|
113000
113967
|
exports.applyPreferenceToOptions = applyPreferenceToOptions;
|
|
113001
113968
|
exports.applyReadingViewCommand = applyReadingViewCommand;
|
|
113002
113969
|
exports.applyRehearsalTimings = applyRehearsalTimings;
|
|
@@ -113028,9 +113995,11 @@ exports.buildInitialGuides = buildInitialGuides;
|
|
|
113028
113995
|
exports.buildInnerShadowCssFromShapeStyle = buildInnerShadowCssFromShapeStyle;
|
|
113029
113996
|
exports.buildJoinCollaborationConfig = buildJoinCollaborationConfig;
|
|
113030
113997
|
exports.buildMorphTransitionPlan = buildMorphTransitionPlan;
|
|
113998
|
+
exports.buildMotionPathPreview = buildMotionPathPreview;
|
|
113031
113999
|
exports.buildMultiLayerShadowCss = buildMultiLayerShadowCss;
|
|
113032
114000
|
exports.buildNotesHtml = buildNotesHtml;
|
|
113033
114001
|
exports.buildNotesPdfBytes = buildNotesPdfBytes;
|
|
114002
|
+
exports.buildOutline = buildOutline;
|
|
113034
114003
|
exports.buildOutlineHtml = buildOutlineHtml;
|
|
113035
114004
|
exports.buildPatternFillCss = buildPatternFillCss;
|
|
113036
114005
|
exports.buildPresentationAudienceUrl = buildPresentationAudienceUrl;
|
|
@@ -113075,6 +114044,7 @@ exports.clampZoomScale = clampZoomScale;
|
|
|
113075
114044
|
exports.clearAllLocalViewerData = clearAllLocalViewerData;
|
|
113076
114045
|
exports.clearAudienceContent = clearAudienceContent;
|
|
113077
114046
|
exports.clearLocalAwareness = clearLocalAwareness;
|
|
114047
|
+
exports.clearMotionPath = clearMotionPath;
|
|
113078
114048
|
exports.clearStoredViewerPrefs = clearStoredViewerPrefs;
|
|
113079
114049
|
exports.cloneElementForPaste = cloneElementForPaste;
|
|
113080
114050
|
exports.cloneHistorySnapshot = cloneHistorySnapshot;
|
|
@@ -113155,6 +114125,7 @@ exports.filterRenderedElements = filterRenderedElements;
|
|
|
113155
114125
|
exports.findChartPartTarget = findChartPartTarget;
|
|
113156
114126
|
exports.findMediaElementByElementId = findMediaElementByElementId;
|
|
113157
114127
|
exports.findSmartArtNodeText = findSmartArtNodeText;
|
|
114128
|
+
exports.firstShowSlideIndex = firstShowSlideIndex;
|
|
113158
114129
|
exports.flattenTagCollections = flattenTagCollections;
|
|
113159
114130
|
exports.formatAxisValue = formatAxisValue;
|
|
113160
114131
|
exports.formatAxisValueWithUnits = formatAxisValueWithUnits;
|
|
@@ -113243,6 +114214,7 @@ exports.hasCopyableFormat = hasCopyableFormat;
|
|
|
113243
114214
|
exports.hasDistinctScriptFonts = hasDistinctScriptFonts;
|
|
113244
114215
|
exports.hasPressureVariation = hasPressureVariation;
|
|
113245
114216
|
exports.hasShapeProperties = hasShapeProperties;
|
|
114217
|
+
exports.hasShowSlideAfter = hasShowSlideAfter;
|
|
113246
114218
|
exports.hasTextProperties = hasTextProperties;
|
|
113247
114219
|
exports.hexToRgbChannels = hexToRgbChannels2;
|
|
113248
114220
|
exports.insertTableColumn = insertTableColumn;
|
|
@@ -113251,6 +114223,7 @@ exports.isActionHidden = isActionHidden;
|
|
|
113251
114223
|
exports.isBrowserOpenableMime = isBrowserOpenableMime;
|
|
113252
114224
|
exports.isCalloutShape = isCalloutShape;
|
|
113253
114225
|
exports.isCellInRect = isCellInRect;
|
|
114226
|
+
exports.isEditableMotionPath = isEditableMotionPath;
|
|
113254
114227
|
exports.isEditableTextElement = isEditableTextElement;
|
|
113255
114228
|
exports.isEditorTextInputTarget = isEditorTextInputTarget;
|
|
113256
114229
|
exports.isElementActionable = isElementActionable;
|
|
@@ -113270,12 +114243,14 @@ exports.isPresentationSessionMessage = isPresentationSessionMessage;
|
|
|
113270
114243
|
exports.isTemplateElement = isTemplateElement;
|
|
113271
114244
|
exports.isTemplateElementId = isTemplateElementId2;
|
|
113272
114245
|
exports.isUrlSafe = isUrlSafe;
|
|
114246
|
+
exports.lastShowSlideIndex = lastShowSlideIndex;
|
|
113273
114247
|
exports.listAutosaveSnapshots = listAutosaveSnapshots;
|
|
113274
114248
|
exports.listBackstageRecentFiles = listBackstageRecentFiles;
|
|
113275
114249
|
exports.loadAudienceContent = loadAudienceContent;
|
|
113276
114250
|
exports.makeCloneId = makeCloneId;
|
|
113277
114251
|
exports.makeSlideId = makeSlideId;
|
|
113278
114252
|
exports.mapEditorKey = mapEditorKey;
|
|
114253
|
+
exports.mapOutlineKey = mapOutlineKey;
|
|
113279
114254
|
exports.mapPresentationKey = mapPresentationKey;
|
|
113280
114255
|
exports.mayLeaveSlideShow = mayLeaveSlideShow;
|
|
113281
114256
|
exports.mergeAdditiveSelection = mergeAdditiveSelection;
|
|
@@ -113286,6 +114261,13 @@ exports.mergeSlideTransition = mergeSlideTransition;
|
|
|
113286
114261
|
exports.mobileElapsedSince = mobileElapsedSince;
|
|
113287
114262
|
exports.mobileSlideCounter = mobileSlideCounter;
|
|
113288
114263
|
exports.morphOptionToMode = morphOptionToMode;
|
|
114264
|
+
exports.motionPathEndPixel = motionPathEndPixel;
|
|
114265
|
+
exports.motionPathFamilyLabelKey = motionPathFamilyLabelKey;
|
|
114266
|
+
exports.motionPathFor = motionPathFor;
|
|
114267
|
+
exports.motionPathPresetIdForPath = motionPathPresetIdForPath;
|
|
114268
|
+
exports.motionPathPresetLabelKey = motionPathPresetLabelKey;
|
|
114269
|
+
exports.motionPathPresetsByFamily = motionPathPresetsByFamily;
|
|
114270
|
+
exports.motionPathToSvgD = motionPathToSvgD;
|
|
113289
114271
|
exports.mountModel3D = mountModel3D;
|
|
113290
114272
|
exports.mountSurfaceChart3D = mountSurfaceChart3D;
|
|
113291
114273
|
exports.movePresenterPointer = movePresenterPointer;
|
|
@@ -113294,6 +114276,8 @@ exports.moveSectionDown = moveSectionDown;
|
|
|
113294
114276
|
exports.moveSectionUp = moveSectionUp;
|
|
113295
114277
|
exports.moveSlidesToSection = moveSlidesToSection;
|
|
113296
114278
|
exports.newTableElement = newTableElement;
|
|
114279
|
+
exports.nextPresentedSlide = nextPresentedSlide;
|
|
114280
|
+
exports.nextShowSlideIndex = nextShowSlideIndex;
|
|
113297
114281
|
exports.normalizeColorsForCapture = normalizeColorsForCapture;
|
|
113298
114282
|
exports.normalizeHexColor = normalizeHexColor;
|
|
113299
114283
|
exports.normalizeStrokeDashType = normalizeStrokeDashType;
|
|
@@ -113319,6 +114303,7 @@ exports.presentationInkPath = presentationInkPath;
|
|
|
113319
114303
|
exports.presenterElapsed = presenterElapsed;
|
|
113320
114304
|
exports.presenterPaneAdvancesOnClick = presenterPaneAdvancesOnClick;
|
|
113321
114305
|
exports.pressuresToWidths = pressuresToWidths;
|
|
114306
|
+
exports.previousShowSlideIndex = previousShowSlideIndex;
|
|
113322
114307
|
exports.printPropertiesFrameSlides = printPropertiesFrameSlides;
|
|
113323
114308
|
exports.printPropertiesSlidesPerPage = printPropertiesSlidesPerPage;
|
|
113324
114309
|
exports.promoteSmartArtNode = promoteSmartArtNode;
|
|
@@ -113369,6 +114354,7 @@ exports.resolveParagraphStrutFontSize = resolveParagraphStrutFontSize;
|
|
|
113369
114354
|
exports.resolvePictureBullet = resolvePictureBullet;
|
|
113370
114355
|
exports.resolveProfileInitial = resolveProfileInitial;
|
|
113371
114356
|
exports.resolveRegionCode = resolveRegionCode;
|
|
114357
|
+
exports.resolveShowSlideIndexes = resolveShowSlideIndexes;
|
|
113372
114358
|
exports.resolveThemeCatalogEntry = resolveThemeCatalogEntry;
|
|
113373
114359
|
exports.resolveTitleBarStatusKey = resolveTitleBarStatusKey;
|
|
113374
114360
|
exports.resolveTransitionDurationMs = resolveTransitionDurationMs;
|
|
@@ -113387,6 +114373,7 @@ exports.sanitizeMathMl = sanitizeMathMl;
|
|
|
113387
114373
|
exports.saveAutosaveSnapshot = saveAutosaveSnapshot;
|
|
113388
114374
|
exports.saveViewerProfile = saveViewerProfile;
|
|
113389
114375
|
exports.scanAvailableFontFamilies = scanAvailableFontFamilies;
|
|
114376
|
+
exports.schemaLabel = schemaLabel;
|
|
113390
114377
|
exports.segmentByScript = segmentByScript;
|
|
113391
114378
|
exports.segmentFrameCount = segmentFrameCount;
|
|
113392
114379
|
exports.sendBackward = sendBackward;
|
|
@@ -113406,6 +114393,8 @@ exports.setChartDataPointMarker = setChartDataPointMarker;
|
|
|
113406
114393
|
exports.setChartSeriesChartType = setChartSeriesChartType;
|
|
113407
114394
|
exports.setChartSeriesMarker = setChartSeriesMarker;
|
|
113408
114395
|
exports.setDuotoneCachedResult = setDuotoneCachedResult;
|
|
114396
|
+
exports.setMotionPath = setMotionPath;
|
|
114397
|
+
exports.setMotionPathEnd = setMotionPathEnd;
|
|
113409
114398
|
exports.setPendingSelectionRestore = setPendingSelectionRestore;
|
|
113410
114399
|
exports.setSmartArtNodeStyle = setSmartArtNodeStyle;
|
|
113411
114400
|
exports.setTableElementCellText = setTableElementCellText;
|