pptx-react-viewer 1.17.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +1 -1
- package/dist/{Model3DScene-YA4F63DT.js → Model3DScene-GVWQ6SOM.js} +3 -3
- package/dist/Model3DScene-GVWQ6SOM.js.br +0 -0
- package/dist/Model3DScene-GVWQ6SOM.js.gz +0 -0
- package/dist/{Model3DScene-QHDYQXL2.mjs → Model3DScene-JGVLIDLD.mjs} +2 -2
- package/dist/Model3DScene-JGVLIDLD.mjs.br +0 -0
- package/dist/Model3DScene-JGVLIDLD.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-GUAS2NWQ.mjs → SurfaceChart3DScene-DBWSDSKI.mjs} +2 -2
- package/dist/SurfaceChart3DScene-DBWSDSKI.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-DBWSDSKI.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-TGNJHTJQ.js → SurfaceChart3DScene-ZOTOHOIE.js} +3 -3
- package/dist/SurfaceChart3DScene-ZOTOHOIE.js.br +0 -0
- package/dist/SurfaceChart3DScene-ZOTOHOIE.js.gz +0 -0
- package/dist/{chunk-XW5OMXW6.js → chunk-73ST7AC6.js} +2269 -1651
- package/dist/chunk-73ST7AC6.js.br +0 -0
- package/dist/chunk-73ST7AC6.js.gz +0 -0
- package/dist/{chunk-WGLJ32FW.js → chunk-AALZCSY4.js} +8 -1
- package/dist/chunk-AALZCSY4.js.br +0 -0
- package/dist/chunk-AALZCSY4.js.gz +0 -0
- package/dist/{chunk-MGLRKGCH.js → chunk-EXDUEXTO.js} +26101 -15360
- package/dist/chunk-EXDUEXTO.js.br +0 -0
- package/dist/chunk-EXDUEXTO.js.gz +0 -0
- package/dist/{chunk-JWS3RQKN.js → chunk-HBXPK572.js} +584 -144
- package/dist/chunk-HBXPK572.js.br +0 -0
- package/dist/chunk-HBXPK572.js.gz +0 -0
- package/dist/{chunk-G22EWPLH.mjs → chunk-HHTZQHKZ.mjs} +532 -119
- package/dist/chunk-HHTZQHKZ.mjs.br +0 -0
- package/dist/chunk-HHTZQHKZ.mjs.gz +0 -0
- package/dist/{chunk-3P6O7ZDM.js → chunk-JDRC3PSY.js} +655 -491
- package/dist/chunk-JDRC3PSY.js.br +0 -0
- package/dist/chunk-JDRC3PSY.js.gz +0 -0
- package/dist/{chunk-LNSHC2Z5.mjs → chunk-KMLIWCNL.mjs} +1460 -842
- package/dist/chunk-KMLIWCNL.mjs.br +0 -0
- package/dist/chunk-KMLIWCNL.mjs.gz +0 -0
- package/dist/{chunk-HJQZJ3VE.mjs → chunk-RIRK64DM.mjs} +8 -1
- package/dist/chunk-RIRK64DM.mjs.br +0 -0
- package/dist/chunk-RIRK64DM.mjs.gz +0 -0
- package/dist/{chunk-XRYREYXC.mjs → chunk-SBNTEQUA.mjs} +26062 -15360
- package/dist/chunk-SBNTEQUA.mjs.br +0 -0
- package/dist/chunk-SBNTEQUA.mjs.gz +0 -0
- package/dist/{chunk-LLHFNGAF.mjs → chunk-Z4MDCPAY.mjs} +223 -59
- package/dist/chunk-Z4MDCPAY.mjs.br +0 -0
- package/dist/chunk-Z4MDCPAY.mjs.gz +0 -0
- package/dist/{dist-2ZAH7U6U.js → dist-KRRXYUGI.js} +663 -507
- package/dist/dist-KRRXYUGI.js.br +0 -0
- package/dist/dist-KRRXYUGI.js.gz +0 -0
- package/dist/dist-N6PAPXK6.mjs +2 -0
- package/dist/dist-N6PAPXK6.mjs.br +0 -0
- package/dist/dist-N6PAPXK6.mjs.gz +0 -0
- package/dist/hooks-unstable.d.ts +484 -117
- package/dist/hooks-unstable.d.ts.map +1 -1
- package/dist/hooks-unstable.js +75 -75
- package/dist/hooks-unstable.js.br +0 -0
- package/dist/hooks-unstable.js.gz +0 -0
- package/dist/hooks-unstable.mjs +4 -4
- package/dist/hooks-unstable.mjs.br +0 -0
- package/dist/hooks-unstable.mjs.gz +0 -0
- package/dist/i18n.js +3 -3
- 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-XGt7MZpa.d.ts → index-DmHVR48M.d.ts} +25 -3
- package/dist/index-DmHVR48M.d.ts.map +1 -0
- package/dist/index.d.ts +412 -117
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -19
- package/dist/index.js.br +3 -1
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.br +3 -4
- package/dist/index.mjs.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/viewer/index.d.ts +438 -121
- package/dist/viewer/index.d.ts.map +1 -1
- package/dist/viewer/index.js +24 -20
- 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 +1 -1
- package/dist/Model3DScene-QHDYQXL2.mjs.br +0 -0
- package/dist/Model3DScene-QHDYQXL2.mjs.gz +0 -0
- package/dist/Model3DScene-YA4F63DT.js.br +0 -0
- package/dist/Model3DScene-YA4F63DT.js.gz +0 -0
- package/dist/SurfaceChart3DScene-GUAS2NWQ.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-GUAS2NWQ.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-TGNJHTJQ.js.br +0 -0
- package/dist/SurfaceChart3DScene-TGNJHTJQ.js.gz +0 -0
- package/dist/chunk-3P6O7ZDM.js.br +0 -0
- package/dist/chunk-3P6O7ZDM.js.gz +0 -0
- package/dist/chunk-G22EWPLH.mjs.br +0 -0
- package/dist/chunk-G22EWPLH.mjs.gz +0 -0
- package/dist/chunk-HJQZJ3VE.mjs.br +0 -0
- package/dist/chunk-HJQZJ3VE.mjs.gz +0 -0
- package/dist/chunk-JWS3RQKN.js.br +0 -0
- package/dist/chunk-JWS3RQKN.js.gz +0 -0
- package/dist/chunk-LLHFNGAF.mjs.br +0 -0
- package/dist/chunk-LLHFNGAF.mjs.gz +0 -0
- package/dist/chunk-LNSHC2Z5.mjs.br +0 -0
- package/dist/chunk-LNSHC2Z5.mjs.gz +0 -0
- package/dist/chunk-MGLRKGCH.js.br +0 -0
- package/dist/chunk-MGLRKGCH.js.gz +0 -0
- package/dist/chunk-WGLJ32FW.js.br +0 -0
- package/dist/chunk-WGLJ32FW.js.gz +0 -0
- package/dist/chunk-XRYREYXC.mjs.br +0 -0
- package/dist/chunk-XRYREYXC.mjs.gz +0 -0
- package/dist/chunk-XW5OMXW6.js.br +0 -0
- package/dist/chunk-XW5OMXW6.js.gz +0 -0
- package/dist/dist-2ZAH7U6U.js.br +0 -0
- package/dist/dist-2ZAH7U6U.js.gz +0 -0
- package/dist/dist-MXDC6YTS.mjs +0 -2
- package/dist/dist-MXDC6YTS.mjs.br +0 -0
- package/dist/dist-MXDC6YTS.mjs.gz +0 -0
- package/dist/index-XGt7MZpa.d.ts.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkEXDUEXTO_js = require('./chunk-EXDUEXTO.js');
|
|
4
4
|
var DOMPurify = require('dompurify');
|
|
5
5
|
|
|
6
6
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -222,7 +222,7 @@ function buildInitialGuides(presentationGuides, firstSlideGuides) {
|
|
|
222
222
|
guides.push({
|
|
223
223
|
id: g.id,
|
|
224
224
|
axis: g.orientation === "horz" ? "h" : "v",
|
|
225
|
-
position:
|
|
225
|
+
position: chunkEXDUEXTO_js.guideEmuToPx(g.positionEmu)
|
|
226
226
|
});
|
|
227
227
|
}
|
|
228
228
|
}
|
|
@@ -231,7 +231,7 @@ function buildInitialGuides(presentationGuides, firstSlideGuides) {
|
|
|
231
231
|
guides.push({
|
|
232
232
|
id: g.id,
|
|
233
233
|
axis: g.orientation === "horz" ? "h" : "v",
|
|
234
|
-
position:
|
|
234
|
+
position: chunkEXDUEXTO_js.guideEmuToPx(g.positionEmu)
|
|
235
235
|
});
|
|
236
236
|
}
|
|
237
237
|
}
|
|
@@ -244,23 +244,23 @@ function getResolvedShapeClipPathFor(shapeType, width, height, adjustments) {
|
|
|
244
244
|
return void 0;
|
|
245
245
|
}
|
|
246
246
|
if (!Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) {
|
|
247
|
-
return
|
|
247
|
+
return chunkEXDUEXTO_js.getShapeClipPath(shapeType);
|
|
248
248
|
}
|
|
249
249
|
if (adjustments && Object.keys(adjustments).length > 0) {
|
|
250
|
-
const adjusted =
|
|
250
|
+
const adjusted = chunkEXDUEXTO_js.getAdjustmentAwareShapeClipPath(shapeType, width, height, adjustments);
|
|
251
251
|
if (adjusted !== void 0) {
|
|
252
252
|
return adjusted;
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
-
const fromPreset =
|
|
255
|
+
const fromPreset = chunkEXDUEXTO_js.getShapeClipPathFromPreset(shapeType, width, height, adjustments);
|
|
256
256
|
if (fromPreset !== void 0) {
|
|
257
257
|
return fromPreset;
|
|
258
258
|
}
|
|
259
|
-
const cloud =
|
|
259
|
+
const cloud = chunkEXDUEXTO_js.getCloudPathForRendering(shapeType, width, height);
|
|
260
260
|
if (cloud !== void 0) {
|
|
261
261
|
return cloud;
|
|
262
262
|
}
|
|
263
|
-
return
|
|
263
|
+
return chunkEXDUEXTO_js.getShapeClipPath(shapeType);
|
|
264
264
|
}
|
|
265
265
|
function getResolvedShapeClipPath(element, width, height) {
|
|
266
266
|
const shapeType = element.shapeType;
|
|
@@ -975,7 +975,7 @@ var DEFAULT_SCHEME_COLOR_MAP = {
|
|
|
975
975
|
phclr: "#4472C4"
|
|
976
976
|
};
|
|
977
977
|
function applyDrawingColorTransforms2(baseColor, colorNode) {
|
|
978
|
-
return
|
|
978
|
+
return chunkEXDUEXTO_js.applyDrawingColorTransforms(baseColor, colorNode);
|
|
979
979
|
}
|
|
980
980
|
function parseDrawingColorChoice(colorNode, schemeColorOverrides) {
|
|
981
981
|
if (!colorNode) {
|
|
@@ -1027,7 +1027,7 @@ function parseDrawingColorChoice(colorNode, schemeColorOverrides) {
|
|
|
1027
1027
|
const h = hueRaw / 6e4;
|
|
1028
1028
|
const s = clampUnitInterval(satRaw / 1e5);
|
|
1029
1029
|
const l = clampUnitInterval(lumRaw / 1e5);
|
|
1030
|
-
const rgb =
|
|
1030
|
+
const rgb = chunkEXDUEXTO_js.hslToRgb(h, s, l);
|
|
1031
1031
|
const toHex = (value) => Math.min(255, Math.max(0, Math.round(value))).toString(16).padStart(2, "0").toUpperCase();
|
|
1032
1032
|
const base = `#${toHex(rgb.r)}${toHex(rgb.g)}${toHex(rgb.b)}`;
|
|
1033
1033
|
return applyDrawingColorTransforms2(base, hslNode);
|
|
@@ -1037,7 +1037,7 @@ function parseDrawingColorChoice(colorNode, schemeColorOverrides) {
|
|
|
1037
1037
|
const preset = String(
|
|
1038
1038
|
colorNode["a:prstClr"]?.["@_val"] || ""
|
|
1039
1039
|
).toLowerCase();
|
|
1040
|
-
const mapped =
|
|
1040
|
+
const mapped = chunkEXDUEXTO_js.PRESET_COLOR_MAP[preset];
|
|
1041
1041
|
if (!mapped) {
|
|
1042
1042
|
return void 0;
|
|
1043
1043
|
}
|
|
@@ -1370,7 +1370,7 @@ function normalizeRadius01(radius) {
|
|
|
1370
1370
|
return clamp(radius / 100, 0, 1);
|
|
1371
1371
|
}
|
|
1372
1372
|
function getEffects(element) {
|
|
1373
|
-
if (!
|
|
1373
|
+
if (!chunkEXDUEXTO_js.isImageLikeElement(element)) {
|
|
1374
1374
|
return void 0;
|
|
1375
1375
|
}
|
|
1376
1376
|
return element.imageEffects;
|
|
@@ -3543,9 +3543,15 @@ function getDisplayUnitDivisor(unit, customValue) {
|
|
|
3543
3543
|
return DISPLAY_UNIT_DIVISORS[unit] ?? 1;
|
|
3544
3544
|
}
|
|
3545
3545
|
function getDisplayUnitLabel(unit, customLabel) {
|
|
3546
|
-
if (customLabel) {
|
|
3546
|
+
if (typeof customLabel === "string") {
|
|
3547
3547
|
return customLabel;
|
|
3548
3548
|
}
|
|
3549
|
+
if (customLabel === null) {
|
|
3550
|
+
return "";
|
|
3551
|
+
}
|
|
3552
|
+
if (customLabel?.text) {
|
|
3553
|
+
return customLabel.text;
|
|
3554
|
+
}
|
|
3549
3555
|
if (!unit || unit === "custom") {
|
|
3550
3556
|
return "";
|
|
3551
3557
|
}
|
|
@@ -6237,12 +6243,21 @@ function seriesColor2(series, index, colorPalette) {
|
|
|
6237
6243
|
return series.color ?? paletteColor2(index, colorPalette);
|
|
6238
6244
|
}
|
|
6239
6245
|
function computeValueRange2(series) {
|
|
6240
|
-
|
|
6241
|
-
|
|
6246
|
+
let dataMin = Number.POSITIVE_INFINITY;
|
|
6247
|
+
let dataMax = Number.NEGATIVE_INFINITY;
|
|
6248
|
+
for (const item of series) {
|
|
6249
|
+
for (const value of item.values) {
|
|
6250
|
+
if (value < dataMin) {
|
|
6251
|
+
dataMin = value;
|
|
6252
|
+
}
|
|
6253
|
+
if (value > dataMax) {
|
|
6254
|
+
dataMax = value;
|
|
6255
|
+
}
|
|
6256
|
+
}
|
|
6257
|
+
}
|
|
6258
|
+
if (dataMin === Number.POSITIVE_INFINITY) {
|
|
6242
6259
|
return { min: 0, max: 1, span: 1 };
|
|
6243
6260
|
}
|
|
6244
|
-
const dataMin = Math.min(...all);
|
|
6245
|
-
const dataMax = Math.max(...all);
|
|
6246
6261
|
const min = Math.min(dataMin, 0);
|
|
6247
6262
|
const max = Math.max(dataMax, 0);
|
|
6248
6263
|
const span = Math.max(max - min, 1);
|
|
@@ -10191,7 +10206,7 @@ function rotateDelta(dx, dy, rotationDeg) {
|
|
|
10191
10206
|
}
|
|
10192
10207
|
function applyResize(box, handle, dxScreen, dyScreen, zoom, opts = {}) {
|
|
10193
10208
|
const scale = zoom || 1;
|
|
10194
|
-
const minSize = opts.minSize ??
|
|
10209
|
+
const minSize = opts.minSize ?? chunkEXDUEXTO_js.MIN_ELEMENT_SIZE;
|
|
10195
10210
|
const rotation = rotationOf(box);
|
|
10196
10211
|
const local = rotateDelta(dxScreen / scale, dyScreen / scale, rotation);
|
|
10197
10212
|
const dx = local.x;
|
|
@@ -10218,7 +10233,7 @@ function applyResize(box, handle, dxScreen, dyScreen, zoom, opts = {}) {
|
|
|
10218
10233
|
}
|
|
10219
10234
|
return { x: newX, y: newY, width: newW, height: newH, rotation };
|
|
10220
10235
|
}
|
|
10221
|
-
function snapBoxToGrid(box, handle, gridSpacingPx, minSize =
|
|
10236
|
+
function snapBoxToGrid(box, handle, gridSpacingPx, minSize = chunkEXDUEXTO_js.MIN_ELEMENT_SIZE) {
|
|
10222
10237
|
if (handle === null || gridSpacingPx <= 0) {
|
|
10223
10238
|
return box;
|
|
10224
10239
|
}
|
|
@@ -10248,7 +10263,7 @@ function snapBoxToGrid(box, handle, gridSpacingPx, minSize = chunkMGLRKGCH_js.MI
|
|
|
10248
10263
|
}
|
|
10249
10264
|
return { x, y, width, height };
|
|
10250
10265
|
}
|
|
10251
|
-
function computeMarqueeHitIds(marquee, elements, minSize =
|
|
10266
|
+
function computeMarqueeHitIds(marquee, elements, minSize = chunkEXDUEXTO_js.MIN_ELEMENT_SIZE) {
|
|
10252
10267
|
const minX = Math.min(marquee.startX, marquee.currentX);
|
|
10253
10268
|
const minY = Math.min(marquee.startY, marquee.currentY);
|
|
10254
10269
|
const maxX = Math.max(marquee.startX, marquee.currentX);
|
|
@@ -10354,6 +10369,111 @@ function getSlideBackgroundStyle(slide) {
|
|
|
10354
10369
|
}
|
|
10355
10370
|
return style;
|
|
10356
10371
|
}
|
|
10372
|
+
var DATETIME_TYPE_FORMATS = {
|
|
10373
|
+
datetime1: "M/d/yyyy",
|
|
10374
|
+
datetime2: "EEEE, MMMM d, yyyy",
|
|
10375
|
+
datetime3: "d MMMM yyyy",
|
|
10376
|
+
datetime4: "MMMM d, yyyy",
|
|
10377
|
+
datetime5: "dd-MMM-yy",
|
|
10378
|
+
datetime6: "MMMM yy",
|
|
10379
|
+
datetime7: "MMM-yy",
|
|
10380
|
+
datetime8: "M/d/yyyy h:mm a",
|
|
10381
|
+
datetime9: "M/d/yyyy h:mm:ss a",
|
|
10382
|
+
datetime10: "H:mm",
|
|
10383
|
+
datetime11: "H:mm:ss",
|
|
10384
|
+
datetime12: "h:mm a",
|
|
10385
|
+
datetime13: "h:mm:ss a"
|
|
10386
|
+
};
|
|
10387
|
+
function formatDateWithPattern(date, pattern) {
|
|
10388
|
+
const months = [
|
|
10389
|
+
"January",
|
|
10390
|
+
"February",
|
|
10391
|
+
"March",
|
|
10392
|
+
"April",
|
|
10393
|
+
"May",
|
|
10394
|
+
"June",
|
|
10395
|
+
"July",
|
|
10396
|
+
"August",
|
|
10397
|
+
"September",
|
|
10398
|
+
"October",
|
|
10399
|
+
"November",
|
|
10400
|
+
"December"
|
|
10401
|
+
];
|
|
10402
|
+
const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
|
10403
|
+
const pad = (n) => String(n).padStart(2, "0");
|
|
10404
|
+
const h12 = (h) => h === 0 ? 12 : h > 12 ? h - 12 : h;
|
|
10405
|
+
const hours = date.getHours();
|
|
10406
|
+
let result = pattern;
|
|
10407
|
+
result = result.replace(/yyyy/gu, String(date.getFullYear()));
|
|
10408
|
+
result = result.replace(/EEEE/gu, days[date.getDay()]);
|
|
10409
|
+
result = result.replace(/MMMM/gu, months[date.getMonth()]);
|
|
10410
|
+
result = result.replace(/EEE/gu, days[date.getDay()].slice(0, 3));
|
|
10411
|
+
result = result.replace(/MMM/gu, months[date.getMonth()].slice(0, 3));
|
|
10412
|
+
result = result.replace(/yy/gu, String(date.getFullYear()).slice(2));
|
|
10413
|
+
result = result.replace(/MM/gu, pad(date.getMonth() + 1));
|
|
10414
|
+
result = result.replace(/dd/gu, pad(date.getDate()));
|
|
10415
|
+
result = result.replace(/HH/gu, pad(hours));
|
|
10416
|
+
result = result.replace(/hh/gu, pad(h12(hours)));
|
|
10417
|
+
result = result.replace(/mm/gu, pad(date.getMinutes()));
|
|
10418
|
+
result = result.replace(/ss/gu, pad(date.getSeconds()));
|
|
10419
|
+
result = result.replace(/(?<![A-Za-z])M(?![A-Za-z])/gu, String(date.getMonth() + 1));
|
|
10420
|
+
result = result.replace(/(?<![A-Za-z])d(?![A-Za-z])/gu, String(date.getDate()));
|
|
10421
|
+
result = result.replace(/(?<![A-Za-z])H(?![A-Za-z])/gu, String(hours));
|
|
10422
|
+
result = result.replace(/(?<![A-Za-z])h(?![A-Za-z])/gu, String(h12(hours)));
|
|
10423
|
+
result = result.replace(/\ba\b/gu, hours >= 12 ? "PM" : "AM");
|
|
10424
|
+
return result;
|
|
10425
|
+
}
|
|
10426
|
+
function resolveFieldDateText(fieldType, dateFormat) {
|
|
10427
|
+
const now = /* @__PURE__ */ new Date();
|
|
10428
|
+
if (dateFormat) {
|
|
10429
|
+
return formatDateWithPattern(now, dateFormat);
|
|
10430
|
+
}
|
|
10431
|
+
const knownFormat = DATETIME_TYPE_FORMATS[fieldType.toLowerCase()];
|
|
10432
|
+
if (knownFormat) {
|
|
10433
|
+
return formatDateWithPattern(now, knownFormat);
|
|
10434
|
+
}
|
|
10435
|
+
return now.toLocaleDateString();
|
|
10436
|
+
}
|
|
10437
|
+
function substituteFieldText(segmentText, fieldType, ctx) {
|
|
10438
|
+
if (!fieldType || !ctx) {
|
|
10439
|
+
return segmentText;
|
|
10440
|
+
}
|
|
10441
|
+
const fl = fieldType.toLowerCase();
|
|
10442
|
+
if (fl === "slidenum" && ctx.slideNumber !== void 0) {
|
|
10443
|
+
return String(ctx.slideNumber);
|
|
10444
|
+
}
|
|
10445
|
+
if (fl.startsWith("datetime")) {
|
|
10446
|
+
return resolveFieldDateText(fl, ctx.dateFormat);
|
|
10447
|
+
}
|
|
10448
|
+
if (fl === "footer" && ctx.footerText !== void 0) {
|
|
10449
|
+
return ctx.footerText;
|
|
10450
|
+
}
|
|
10451
|
+
if (fl === "header" && ctx.headerText !== void 0) {
|
|
10452
|
+
return ctx.headerText;
|
|
10453
|
+
}
|
|
10454
|
+
if (fl === "currentdate") {
|
|
10455
|
+
return (/* @__PURE__ */ new Date()).toLocaleDateString(ctx.locale);
|
|
10456
|
+
}
|
|
10457
|
+
if (fl === "currenttime") {
|
|
10458
|
+
return (/* @__PURE__ */ new Date()).toLocaleTimeString(ctx.locale);
|
|
10459
|
+
}
|
|
10460
|
+
if (fl === "slidetitle" && ctx.slideTitle !== void 0) {
|
|
10461
|
+
return ctx.slideTitle;
|
|
10462
|
+
}
|
|
10463
|
+
if (fl.startsWith("docproperty") && ctx.customProperties) {
|
|
10464
|
+
const dotIdx = fieldType.indexOf(".");
|
|
10465
|
+
const propName = dotIdx >= 0 ? fieldType.substring(dotIdx + 1).trim() : "";
|
|
10466
|
+
if (propName) {
|
|
10467
|
+
const prop = ctx.customProperties.find(
|
|
10468
|
+
(p) => p.name.toLowerCase() === propName.toLowerCase()
|
|
10469
|
+
);
|
|
10470
|
+
if (prop) {
|
|
10471
|
+
return prop.value;
|
|
10472
|
+
}
|
|
10473
|
+
}
|
|
10474
|
+
}
|
|
10475
|
+
return segmentText;
|
|
10476
|
+
}
|
|
10357
10477
|
var DEFAULT_X = 100;
|
|
10358
10478
|
var TABLE_WIDTH = 600;
|
|
10359
10479
|
var TABLE_HEIGHT = 250;
|
|
@@ -11055,111 +11175,6 @@ function resolveCssTextAlign(align, isRtl) {
|
|
|
11055
11175
|
}
|
|
11056
11176
|
return isRtl ? "right" : void 0;
|
|
11057
11177
|
}
|
|
11058
|
-
var DATETIME_TYPE_FORMATS = {
|
|
11059
|
-
datetime1: "M/d/yyyy",
|
|
11060
|
-
datetime2: "EEEE, MMMM d, yyyy",
|
|
11061
|
-
datetime3: "d MMMM yyyy",
|
|
11062
|
-
datetime4: "MMMM d, yyyy",
|
|
11063
|
-
datetime5: "dd-MMM-yy",
|
|
11064
|
-
datetime6: "MMMM yy",
|
|
11065
|
-
datetime7: "MMM-yy",
|
|
11066
|
-
datetime8: "M/d/yyyy h:mm a",
|
|
11067
|
-
datetime9: "M/d/yyyy h:mm:ss a",
|
|
11068
|
-
datetime10: "H:mm",
|
|
11069
|
-
datetime11: "H:mm:ss",
|
|
11070
|
-
datetime12: "h:mm a",
|
|
11071
|
-
datetime13: "h:mm:ss a"
|
|
11072
|
-
};
|
|
11073
|
-
function formatDateWithPattern(date, pattern) {
|
|
11074
|
-
const months = [
|
|
11075
|
-
"January",
|
|
11076
|
-
"February",
|
|
11077
|
-
"March",
|
|
11078
|
-
"April",
|
|
11079
|
-
"May",
|
|
11080
|
-
"June",
|
|
11081
|
-
"July",
|
|
11082
|
-
"August",
|
|
11083
|
-
"September",
|
|
11084
|
-
"October",
|
|
11085
|
-
"November",
|
|
11086
|
-
"December"
|
|
11087
|
-
];
|
|
11088
|
-
const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
|
11089
|
-
const pad = (n) => String(n).padStart(2, "0");
|
|
11090
|
-
const h12 = (h) => h === 0 ? 12 : h > 12 ? h - 12 : h;
|
|
11091
|
-
const hours = date.getHours();
|
|
11092
|
-
let result = pattern;
|
|
11093
|
-
result = result.replace(/yyyy/gu, String(date.getFullYear()));
|
|
11094
|
-
result = result.replace(/EEEE/gu, days[date.getDay()]);
|
|
11095
|
-
result = result.replace(/MMMM/gu, months[date.getMonth()]);
|
|
11096
|
-
result = result.replace(/EEE/gu, days[date.getDay()].slice(0, 3));
|
|
11097
|
-
result = result.replace(/MMM/gu, months[date.getMonth()].slice(0, 3));
|
|
11098
|
-
result = result.replace(/yy/gu, String(date.getFullYear()).slice(2));
|
|
11099
|
-
result = result.replace(/MM/gu, pad(date.getMonth() + 1));
|
|
11100
|
-
result = result.replace(/dd/gu, pad(date.getDate()));
|
|
11101
|
-
result = result.replace(/HH/gu, pad(hours));
|
|
11102
|
-
result = result.replace(/hh/gu, pad(h12(hours)));
|
|
11103
|
-
result = result.replace(/mm/gu, pad(date.getMinutes()));
|
|
11104
|
-
result = result.replace(/ss/gu, pad(date.getSeconds()));
|
|
11105
|
-
result = result.replace(/(?<![A-Za-z])M(?![A-Za-z])/gu, String(date.getMonth() + 1));
|
|
11106
|
-
result = result.replace(/(?<![A-Za-z])d(?![A-Za-z])/gu, String(date.getDate()));
|
|
11107
|
-
result = result.replace(/(?<![A-Za-z])H(?![A-Za-z])/gu, String(hours));
|
|
11108
|
-
result = result.replace(/(?<![A-Za-z])h(?![A-Za-z])/gu, String(h12(hours)));
|
|
11109
|
-
result = result.replace(/\ba\b/gu, hours >= 12 ? "PM" : "AM");
|
|
11110
|
-
return result;
|
|
11111
|
-
}
|
|
11112
|
-
function resolveFieldDateText(fieldType, dateFormat) {
|
|
11113
|
-
const now = /* @__PURE__ */ new Date();
|
|
11114
|
-
if (dateFormat) {
|
|
11115
|
-
return formatDateWithPattern(now, dateFormat);
|
|
11116
|
-
}
|
|
11117
|
-
const knownFormat = DATETIME_TYPE_FORMATS[fieldType.toLowerCase()];
|
|
11118
|
-
if (knownFormat) {
|
|
11119
|
-
return formatDateWithPattern(now, knownFormat);
|
|
11120
|
-
}
|
|
11121
|
-
return now.toLocaleDateString();
|
|
11122
|
-
}
|
|
11123
|
-
function substituteFieldText(segmentText, fieldType, ctx) {
|
|
11124
|
-
if (!fieldType || !ctx) {
|
|
11125
|
-
return segmentText;
|
|
11126
|
-
}
|
|
11127
|
-
const fl = fieldType.toLowerCase();
|
|
11128
|
-
if (fl === "slidenum" && ctx.slideNumber !== void 0) {
|
|
11129
|
-
return String(ctx.slideNumber);
|
|
11130
|
-
}
|
|
11131
|
-
if (fl.startsWith("datetime")) {
|
|
11132
|
-
return resolveFieldDateText(fl, ctx.dateFormat);
|
|
11133
|
-
}
|
|
11134
|
-
if (fl === "footer" && ctx.footerText !== void 0) {
|
|
11135
|
-
return ctx.footerText;
|
|
11136
|
-
}
|
|
11137
|
-
if (fl === "header" && ctx.headerText !== void 0) {
|
|
11138
|
-
return ctx.headerText;
|
|
11139
|
-
}
|
|
11140
|
-
if (fl === "currentdate") {
|
|
11141
|
-
return (/* @__PURE__ */ new Date()).toLocaleDateString(ctx.locale);
|
|
11142
|
-
}
|
|
11143
|
-
if (fl === "currenttime") {
|
|
11144
|
-
return (/* @__PURE__ */ new Date()).toLocaleTimeString(ctx.locale);
|
|
11145
|
-
}
|
|
11146
|
-
if (fl === "slidetitle" && ctx.slideTitle !== void 0) {
|
|
11147
|
-
return ctx.slideTitle;
|
|
11148
|
-
}
|
|
11149
|
-
if (fl.startsWith("docproperty") && ctx.customProperties) {
|
|
11150
|
-
const dotIdx = fieldType.indexOf(".");
|
|
11151
|
-
const propName = dotIdx >= 0 ? fieldType.substring(dotIdx + 1).trim() : "";
|
|
11152
|
-
if (propName) {
|
|
11153
|
-
const prop = ctx.customProperties.find(
|
|
11154
|
-
(p) => p.name.toLowerCase() === propName.toLowerCase()
|
|
11155
|
-
);
|
|
11156
|
-
if (prop) {
|
|
11157
|
-
return prop.value;
|
|
11158
|
-
}
|
|
11159
|
-
}
|
|
11160
|
-
}
|
|
11161
|
-
return segmentText;
|
|
11162
|
-
}
|
|
11163
11178
|
function buildTextFillCss(style) {
|
|
11164
11179
|
if (style.textFillGradient) {
|
|
11165
11180
|
return {
|
|
@@ -11753,7 +11768,7 @@ var THEME_COLOR_LABELS = {
|
|
|
11753
11768
|
};
|
|
11754
11769
|
function buildThemeColorGrid(colorScheme) {
|
|
11755
11770
|
return THEME_COLOR_TINT_ROWS.map(
|
|
11756
|
-
(row) =>
|
|
11771
|
+
(row) => chunkEXDUEXTO_js.THEME_COLOR_SCHEME_KEYS.map((key) => ({
|
|
11757
11772
|
hex: row.transform(colorScheme[key]),
|
|
11758
11773
|
schemeKey: key,
|
|
11759
11774
|
rowLabel: row.label,
|
|
@@ -12229,7 +12244,7 @@ function svgLineCap(lineCap) {
|
|
|
12229
12244
|
}
|
|
12230
12245
|
function copyFormatFromElement(element) {
|
|
12231
12246
|
const result = {};
|
|
12232
|
-
if (
|
|
12247
|
+
if (chunkEXDUEXTO_js.hasShapeProperties(element) && element.shapeStyle) {
|
|
12233
12248
|
const s = element.shapeStyle;
|
|
12234
12249
|
result.shapeStyle = {
|
|
12235
12250
|
fillColor: s.fillColor,
|
|
@@ -12258,7 +12273,7 @@ function copyFormatFromElement(element) {
|
|
|
12258
12273
|
softEdgeRadius: s.softEdgeRadius
|
|
12259
12274
|
};
|
|
12260
12275
|
}
|
|
12261
|
-
if (
|
|
12276
|
+
if (chunkEXDUEXTO_js.hasTextProperties(element) && element.textStyle) {
|
|
12262
12277
|
const t = element.textStyle;
|
|
12263
12278
|
result.textStyle = {
|
|
12264
12279
|
fontFamily: t.fontFamily,
|
|
@@ -12289,7 +12304,7 @@ function definedEntries(obj) {
|
|
|
12289
12304
|
}
|
|
12290
12305
|
function applyFormatToElement(element, format) {
|
|
12291
12306
|
let updated = { ...element };
|
|
12292
|
-
if (format.shapeStyle &&
|
|
12307
|
+
if (format.shapeStyle && chunkEXDUEXTO_js.hasShapeProperties(updated)) {
|
|
12293
12308
|
updated = {
|
|
12294
12309
|
...updated,
|
|
12295
12310
|
shapeStyle: {
|
|
@@ -12298,7 +12313,7 @@ function applyFormatToElement(element, format) {
|
|
|
12298
12313
|
}
|
|
12299
12314
|
};
|
|
12300
12315
|
}
|
|
12301
|
-
if (format.textStyle &&
|
|
12316
|
+
if (format.textStyle && chunkEXDUEXTO_js.hasTextProperties(updated)) {
|
|
12302
12317
|
updated = {
|
|
12303
12318
|
...updated,
|
|
12304
12319
|
textStyle: {
|
|
@@ -12313,7 +12328,7 @@ function hasCopyableFormat(element) {
|
|
|
12313
12328
|
if (!element) {
|
|
12314
12329
|
return false;
|
|
12315
12330
|
}
|
|
12316
|
-
return
|
|
12331
|
+
return chunkEXDUEXTO_js.hasShapeProperties(element) || chunkEXDUEXTO_js.hasTextProperties(element);
|
|
12317
12332
|
}
|
|
12318
12333
|
function copySegmentMetadata(from, to) {
|
|
12319
12334
|
if (from.equationXml !== void 0) {
|
|
@@ -12450,7 +12465,7 @@ function getRoundRectRadiusPx(element) {
|
|
|
12450
12465
|
return Math.min(Math.max(element.width, 1), Math.max(element.height, 1)) * 0.5 * normalizedAdjustment;
|
|
12451
12466
|
}
|
|
12452
12467
|
function getShapeAdjustmentHandleDescriptor(element) {
|
|
12453
|
-
if (!
|
|
12468
|
+
if (!chunkEXDUEXTO_js.hasShapeProperties(element)) {
|
|
12454
12469
|
return null;
|
|
12455
12470
|
}
|
|
12456
12471
|
const normalizedShapeType = String(element.shapeType || "").toLowerCase();
|
|
@@ -12901,6 +12916,8 @@ var SCALAR_ELEMENT_KEYS = /* @__PURE__ */ new Set([
|
|
|
12901
12916
|
"mediaType",
|
|
12902
12917
|
"mediaPath",
|
|
12903
12918
|
"mediaMimeType",
|
|
12919
|
+
"mediaReferenceKind",
|
|
12920
|
+
"mediaReferenceName",
|
|
12904
12921
|
"trimStartMs",
|
|
12905
12922
|
"trimEndMs",
|
|
12906
12923
|
"posterFramePath",
|
|
@@ -12964,6 +12981,9 @@ var COMPLEX_ELEMENT_FIELDS = {
|
|
|
12964
12981
|
cropShape: "_cr",
|
|
12965
12982
|
bookmarks: "_mb",
|
|
12966
12983
|
captionTracks: "_ct",
|
|
12984
|
+
audioCdStart: "_acd1",
|
|
12985
|
+
audioCdEnd: "_acd2",
|
|
12986
|
+
rawMediaReferenceXml: "_mrx",
|
|
12967
12987
|
metadata: "_md",
|
|
12968
12988
|
groupFill: "_gf",
|
|
12969
12989
|
inkPointPressures: "_ipp",
|
|
@@ -13016,7 +13036,9 @@ var COMPLEX_SLIDE_FIELDS = {
|
|
|
13016
13036
|
customerData: "_cu",
|
|
13017
13037
|
activeXControls: "_ax",
|
|
13018
13038
|
backgroundPattern: "_bp",
|
|
13019
|
-
|
|
13039
|
+
modernCommentPart: "_mc",
|
|
13040
|
+
headerFooterFlags: "_hff",
|
|
13041
|
+
slideSynchronization: "_sync"
|
|
13020
13042
|
};
|
|
13021
13043
|
var REV_COMPLEX_SLIDE = Object.fromEntries(
|
|
13022
13044
|
Object.entries(COMPLEX_SLIDE_FIELDS).map(([k, v]) => [v, k])
|
|
@@ -13429,7 +13451,7 @@ function createSyncGate(onOpen, graceMs = INITIAL_SYNC_GRACE_MS) {
|
|
|
13429
13451
|
var POSITION_THRESHOLD = 2;
|
|
13430
13452
|
var SIZE_THRESHOLD = 2;
|
|
13431
13453
|
function getElementText(element) {
|
|
13432
|
-
if (!
|
|
13454
|
+
if (!chunkEXDUEXTO_js.hasTextProperties(element)) {
|
|
13433
13455
|
return "";
|
|
13434
13456
|
}
|
|
13435
13457
|
if (element.textSegments && element.textSegments.length > 0) {
|
|
@@ -15979,6 +16001,72 @@ function buildBroadcastViewerUrl(roomId, serverUrl, location) {
|
|
|
15979
16001
|
const server = encodeURIComponent(trimmed);
|
|
15980
16002
|
return `${location.origin}${location.pathname}?broadcast=${room}&server=${server}`;
|
|
15981
16003
|
}
|
|
16004
|
+
function canCreateCollaborationSession(fields) {
|
|
16005
|
+
return isValidRoomId(fields.roomId.trim()) && fields.userName.trim().length > 0;
|
|
16006
|
+
}
|
|
16007
|
+
function buildCreateCollaborationConfig(fields) {
|
|
16008
|
+
if (!canCreateCollaborationSession(fields)) {
|
|
16009
|
+
return null;
|
|
16010
|
+
}
|
|
16011
|
+
const serverUrl = fields.serverUrl.trim();
|
|
16012
|
+
return {
|
|
16013
|
+
roomId: fields.roomId.trim(),
|
|
16014
|
+
userName: fields.userName.trim(),
|
|
16015
|
+
serverUrl,
|
|
16016
|
+
transport: resolveTransportForServerUrl(serverUrl),
|
|
16017
|
+
role: "collaborator",
|
|
16018
|
+
sessionIntent: "create"
|
|
16019
|
+
};
|
|
16020
|
+
}
|
|
16021
|
+
function parseInvitationUrl(value) {
|
|
16022
|
+
try {
|
|
16023
|
+
return new URL(value);
|
|
16024
|
+
} catch {
|
|
16025
|
+
return null;
|
|
16026
|
+
}
|
|
16027
|
+
}
|
|
16028
|
+
function buildJoinCollaborationConfig(fields) {
|
|
16029
|
+
const invitation = fields.invitation.trim();
|
|
16030
|
+
const userName = fields.userName.trim();
|
|
16031
|
+
if (!invitation || !userName) {
|
|
16032
|
+
return null;
|
|
16033
|
+
}
|
|
16034
|
+
const url = parseInvitationUrl(invitation);
|
|
16035
|
+
const roomId = (url?.searchParams.get("room") ?? (url ? "" : invitation)).trim();
|
|
16036
|
+
if (!isValidRoomId(roomId)) {
|
|
16037
|
+
return null;
|
|
16038
|
+
}
|
|
16039
|
+
const requestedTransport = url?.searchParams.get("transport");
|
|
16040
|
+
const serverUrl = (url?.searchParams.get("server") ?? fields.serverUrl).trim();
|
|
16041
|
+
const transport = requestedTransport === "webrtc" ? "webrtc" : resolveTransportForServerUrl(serverUrl);
|
|
16042
|
+
const signalingValue = url?.searchParams.get("signaling");
|
|
16043
|
+
const signaling = signalingValue?.split(",").map((entry) => entry.trim()).filter((entry) => entry.length > 0);
|
|
16044
|
+
return {
|
|
16045
|
+
roomId,
|
|
16046
|
+
userName,
|
|
16047
|
+
serverUrl: transport === "webrtc" ? "" : serverUrl,
|
|
16048
|
+
transport,
|
|
16049
|
+
...signaling?.length ? { signaling } : {},
|
|
16050
|
+
role: "collaborator",
|
|
16051
|
+
sessionIntent: "join"
|
|
16052
|
+
};
|
|
16053
|
+
}
|
|
16054
|
+
function buildCollaborationShareUrl(config, location) {
|
|
16055
|
+
if (!location) {
|
|
16056
|
+
return config.roomId;
|
|
16057
|
+
}
|
|
16058
|
+
const url = new URL(location.pathname, location.origin);
|
|
16059
|
+
url.searchParams.set("room", config.roomId);
|
|
16060
|
+
if (config.transport === "webrtc" || !config.serverUrl.trim()) {
|
|
16061
|
+
url.searchParams.set("transport", "webrtc");
|
|
16062
|
+
if (config.signaling?.length) {
|
|
16063
|
+
url.searchParams.set("signaling", config.signaling.join(","));
|
|
16064
|
+
}
|
|
16065
|
+
} else {
|
|
16066
|
+
url.searchParams.set("server", config.serverUrl.trim());
|
|
16067
|
+
}
|
|
16068
|
+
return url.toString();
|
|
16069
|
+
}
|
|
15982
16070
|
var NOTES_FONT_SIZE_MIN = 10;
|
|
15983
16071
|
var NOTES_FONT_SIZE_MAX = 32;
|
|
15984
16072
|
var NOTES_FONT_SIZE_STEP = 2;
|
|
@@ -16033,6 +16121,263 @@ function notesSegmentsToSpans(segments) {
|
|
|
16033
16121
|
return { kind: "text", key: `seg-${index}`, text: segment.text, style };
|
|
16034
16122
|
});
|
|
16035
16123
|
}
|
|
16124
|
+
var PRESENTER_ZOOM_MIN = 1;
|
|
16125
|
+
var PRESENTER_ZOOM_MAX = 4;
|
|
16126
|
+
var PRESENTER_ZOOM_STEP = 0.5;
|
|
16127
|
+
function createPresenterTimer(now = Date.now()) {
|
|
16128
|
+
return { elapsedMs: 0, paused: false, lastStartedAt: now };
|
|
16129
|
+
}
|
|
16130
|
+
function presenterElapsed(timer, now = Date.now()) {
|
|
16131
|
+
return timer.elapsedMs + (timer.paused ? 0 : Math.max(0, now - timer.lastStartedAt));
|
|
16132
|
+
}
|
|
16133
|
+
function togglePresenterTimer(timer, now = Date.now()) {
|
|
16134
|
+
if (timer.paused) {
|
|
16135
|
+
return { ...timer, paused: false, lastStartedAt: now };
|
|
16136
|
+
}
|
|
16137
|
+
return { elapsedMs: presenterElapsed(timer, now), paused: true, lastStartedAt: now };
|
|
16138
|
+
}
|
|
16139
|
+
function resetPresenterTimer(now = Date.now()) {
|
|
16140
|
+
return createPresenterTimer(now);
|
|
16141
|
+
}
|
|
16142
|
+
function clampPresenterZoom(zoom) {
|
|
16143
|
+
return {
|
|
16144
|
+
scale: Math.min(PRESENTER_ZOOM_MAX, Math.max(PRESENTER_ZOOM_MIN, zoom.scale ?? 1)),
|
|
16145
|
+
originX: Math.min(1, Math.max(0, zoom.originX ?? 0.5)),
|
|
16146
|
+
originY: Math.min(1, Math.max(0, zoom.originY ?? 0.5))
|
|
16147
|
+
};
|
|
16148
|
+
}
|
|
16149
|
+
function stepPresenterZoom(zoom, direction) {
|
|
16150
|
+
return clampPresenterZoom({ ...zoom, scale: zoom.scale + direction * PRESENTER_ZOOM_STEP });
|
|
16151
|
+
}
|
|
16152
|
+
function movePresenterPointer(pointer, x, y) {
|
|
16153
|
+
return { ...pointer, x: Math.min(1, Math.max(0, x)), y: Math.min(1, Math.max(0, y)) };
|
|
16154
|
+
}
|
|
16155
|
+
function appendPresentationInkPoint(stroke, point) {
|
|
16156
|
+
const clamped = {
|
|
16157
|
+
x: Math.min(1, Math.max(0, point.x)),
|
|
16158
|
+
y: Math.min(1, Math.max(0, point.y))
|
|
16159
|
+
};
|
|
16160
|
+
return { ...stroke, points: [...stroke.points, clamped] };
|
|
16161
|
+
}
|
|
16162
|
+
function erasePresentationInkAt(strokes, slideIndex, point, radius = 0.035) {
|
|
16163
|
+
const radiusSquared = radius * radius;
|
|
16164
|
+
return strokes.filter(
|
|
16165
|
+
(stroke) => stroke.slideIndex !== slideIndex || !stroke.points.some((candidate) => {
|
|
16166
|
+
const dx = candidate.x - point.x;
|
|
16167
|
+
const dy = candidate.y - point.y;
|
|
16168
|
+
return dx * dx + dy * dy <= radiusSquared;
|
|
16169
|
+
})
|
|
16170
|
+
);
|
|
16171
|
+
}
|
|
16172
|
+
function mergePresentationSnapshot(current, patch) {
|
|
16173
|
+
return {
|
|
16174
|
+
...current,
|
|
16175
|
+
...patch,
|
|
16176
|
+
sequence: Math.max(current.sequence + 1, patch.sequence ?? 0),
|
|
16177
|
+
zoom: patch.zoom ? clampPresenterZoom(patch.zoom) : current.zoom
|
|
16178
|
+
};
|
|
16179
|
+
}
|
|
16180
|
+
function presentationInkPath(points) {
|
|
16181
|
+
if (points.length === 0) {
|
|
16182
|
+
return "";
|
|
16183
|
+
}
|
|
16184
|
+
return points.reduce(
|
|
16185
|
+
(path, point, index) => `${path}${index === 0 ? "M" : " L"} ${point.x * 100} ${point.y * 100}`,
|
|
16186
|
+
""
|
|
16187
|
+
);
|
|
16188
|
+
}
|
|
16189
|
+
var PRESENTATION_CHANNEL_NAME = "pptx-viewer-presenter";
|
|
16190
|
+
var PRESENTATION_HASH = "#pptx-audience";
|
|
16191
|
+
var PRESENTATION_NONCE_KEY = "nonce";
|
|
16192
|
+
var PRESENTATION_MESSAGE_ORIGIN = "pptx-viewer-presenter";
|
|
16193
|
+
var DB_NAME = "pptx-viewer-presentation";
|
|
16194
|
+
var DB_VERSION = 1;
|
|
16195
|
+
var STORE_NAME = "decks";
|
|
16196
|
+
var MAX_DECK_AGE_MS = 5 * 60 * 1e3;
|
|
16197
|
+
function createPresentationSessionId() {
|
|
16198
|
+
return secureRandomUuid();
|
|
16199
|
+
}
|
|
16200
|
+
function createInitialPresentationSnapshot(slideIndex = 0) {
|
|
16201
|
+
return {
|
|
16202
|
+
slideIndex: Math.max(0, Math.trunc(slideIndex)),
|
|
16203
|
+
buildStep: 0,
|
|
16204
|
+
sequence: 0,
|
|
16205
|
+
blackout: "none",
|
|
16206
|
+
paused: false,
|
|
16207
|
+
elapsedMs: 0,
|
|
16208
|
+
zoom: { scale: 1, originX: 0.5, originY: 0.5 },
|
|
16209
|
+
pointer: { tool: "none", x: 0.5, y: 0.5, color: "#ef4444" },
|
|
16210
|
+
inkStrokes: [],
|
|
16211
|
+
caption: "",
|
|
16212
|
+
subtitlesVisible: false
|
|
16213
|
+
};
|
|
16214
|
+
}
|
|
16215
|
+
function buildPresentationAudienceUrl(source, sessionId) {
|
|
16216
|
+
const url = new URL(source);
|
|
16217
|
+
const params = new URLSearchParams();
|
|
16218
|
+
params.set(PRESENTATION_NONCE_KEY, sessionId);
|
|
16219
|
+
url.hash = `${PRESENTATION_HASH}&${params.toString()}`;
|
|
16220
|
+
return url.toString();
|
|
16221
|
+
}
|
|
16222
|
+
function isPresentationSessionMessage(value) {
|
|
16223
|
+
if (!value || typeof value !== "object") {
|
|
16224
|
+
return false;
|
|
16225
|
+
}
|
|
16226
|
+
const message = value;
|
|
16227
|
+
if (message.origin !== PRESENTATION_MESSAGE_ORIGIN || typeof message.sessionId !== "string") {
|
|
16228
|
+
return false;
|
|
16229
|
+
}
|
|
16230
|
+
if (message.type === "audience-ready" || message.type === "presenter-exit") {
|
|
16231
|
+
return true;
|
|
16232
|
+
}
|
|
16233
|
+
if (message.type === "presenter-slide-change") {
|
|
16234
|
+
return typeof message.slideIndex === "number";
|
|
16235
|
+
}
|
|
16236
|
+
if (message.type !== "presenter-state" || !message.snapshot || typeof message.snapshot !== "object") {
|
|
16237
|
+
return false;
|
|
16238
|
+
}
|
|
16239
|
+
const snapshot = message.snapshot;
|
|
16240
|
+
const zoom = snapshot.zoom;
|
|
16241
|
+
const pointer = snapshot.pointer;
|
|
16242
|
+
const inkStrokes = snapshot.inkStrokes;
|
|
16243
|
+
return typeof snapshot.slideIndex === "number" && typeof snapshot.buildStep === "number" && typeof snapshot.sequence === "number" && (snapshot.blackout === "none" || snapshot.blackout === "black" || snapshot.blackout === "white") && typeof snapshot.paused === "boolean" && typeof snapshot.elapsedMs === "number" && (!zoom || typeof zoom.scale === "number" && typeof zoom.originX === "number" && typeof zoom.originY === "number") && (!pointer || typeof pointer.tool === "string" && typeof pointer.x === "number" && typeof pointer.y === "number" && typeof pointer.color === "string") && (inkStrokes === void 0 || Array.isArray(inkStrokes)) && (snapshot.caption === void 0 || typeof snapshot.caption === "string") && (snapshot.subtitlesVisible === void 0 || typeof snapshot.subtitlesVisible === "boolean");
|
|
16244
|
+
}
|
|
16245
|
+
async function resolveAudienceScreenPlacement(sourceWindow = window) {
|
|
16246
|
+
const managedWindow = sourceWindow;
|
|
16247
|
+
if (typeof managedWindow.getScreenDetails !== "function") {
|
|
16248
|
+
return null;
|
|
16249
|
+
}
|
|
16250
|
+
try {
|
|
16251
|
+
const details = await managedWindow.getScreenDetails();
|
|
16252
|
+
const target = details.screens.find((screen2) => screen2 !== details.currentScreen && !screen2.isPrimary) ?? details.screens.find((screen2) => screen2 !== details.currentScreen);
|
|
16253
|
+
if (!target) {
|
|
16254
|
+
return null;
|
|
16255
|
+
}
|
|
16256
|
+
return {
|
|
16257
|
+
left: target.availLeft,
|
|
16258
|
+
top: target.availTop,
|
|
16259
|
+
width: target.availWidth,
|
|
16260
|
+
height: target.availHeight,
|
|
16261
|
+
label: target.label
|
|
16262
|
+
};
|
|
16263
|
+
} catch {
|
|
16264
|
+
return null;
|
|
16265
|
+
}
|
|
16266
|
+
}
|
|
16267
|
+
function placeAudienceWindow(target, placement) {
|
|
16268
|
+
try {
|
|
16269
|
+
target.moveTo(placement.left, placement.top);
|
|
16270
|
+
target.resizeTo(placement.width, placement.height);
|
|
16271
|
+
target.focus();
|
|
16272
|
+
} catch {
|
|
16273
|
+
}
|
|
16274
|
+
}
|
|
16275
|
+
async function swapPresentationWindows(presenter, audience) {
|
|
16276
|
+
const managedWindow = presenter;
|
|
16277
|
+
if (typeof managedWindow.getScreenDetails !== "function") {
|
|
16278
|
+
return false;
|
|
16279
|
+
}
|
|
16280
|
+
try {
|
|
16281
|
+
const details = await managedWindow.getScreenDetails();
|
|
16282
|
+
const contains = (screen2, target) => target.screenX >= screen2.availLeft && target.screenX < screen2.availLeft + screen2.availWidth && target.screenY >= screen2.availTop && target.screenY < screen2.availTop + screen2.availHeight;
|
|
16283
|
+
const presenterScreen = details.screens.find((screen2) => contains(screen2, presenter));
|
|
16284
|
+
const audienceScreen = details.screens.find((screen2) => contains(screen2, audience));
|
|
16285
|
+
if (!presenterScreen || !audienceScreen || presenterScreen === audienceScreen) {
|
|
16286
|
+
return false;
|
|
16287
|
+
}
|
|
16288
|
+
placeAudienceWindow(audience, {
|
|
16289
|
+
left: presenterScreen.availLeft,
|
|
16290
|
+
top: presenterScreen.availTop,
|
|
16291
|
+
width: presenterScreen.availWidth,
|
|
16292
|
+
height: presenterScreen.availHeight
|
|
16293
|
+
});
|
|
16294
|
+
placeAudienceWindow(presenter, {
|
|
16295
|
+
left: audienceScreen.availLeft,
|
|
16296
|
+
top: audienceScreen.availTop,
|
|
16297
|
+
width: audienceScreen.availWidth,
|
|
16298
|
+
height: audienceScreen.availHeight
|
|
16299
|
+
});
|
|
16300
|
+
return true;
|
|
16301
|
+
} catch {
|
|
16302
|
+
return false;
|
|
16303
|
+
}
|
|
16304
|
+
}
|
|
16305
|
+
function openDeckDb() {
|
|
16306
|
+
return new Promise((resolve, reject) => {
|
|
16307
|
+
const request = indexedDB.open(DB_NAME, DB_VERSION);
|
|
16308
|
+
request.onupgradeneeded = () => {
|
|
16309
|
+
const db = request.result;
|
|
16310
|
+
if (!db.objectStoreNames.contains(STORE_NAME)) {
|
|
16311
|
+
db.createObjectStore(STORE_NAME);
|
|
16312
|
+
}
|
|
16313
|
+
};
|
|
16314
|
+
request.onsuccess = () => resolve(request.result);
|
|
16315
|
+
request.onerror = () => reject(request.error);
|
|
16316
|
+
});
|
|
16317
|
+
}
|
|
16318
|
+
async function storePresentationDeck(sessionId, content) {
|
|
16319
|
+
const db = await openDeckDb();
|
|
16320
|
+
return new Promise((resolve, reject) => {
|
|
16321
|
+
const tx = db.transaction(STORE_NAME, "readwrite");
|
|
16322
|
+
const bytes = content instanceof Uint8Array ? content : new Uint8Array(content);
|
|
16323
|
+
tx.objectStore(STORE_NAME).put(
|
|
16324
|
+
{ bytes, createdAt: Date.now() },
|
|
16325
|
+
sessionId
|
|
16326
|
+
);
|
|
16327
|
+
tx.oncomplete = () => {
|
|
16328
|
+
db.close();
|
|
16329
|
+
resolve();
|
|
16330
|
+
};
|
|
16331
|
+
tx.onerror = () => {
|
|
16332
|
+
db.close();
|
|
16333
|
+
reject(tx.error);
|
|
16334
|
+
};
|
|
16335
|
+
});
|
|
16336
|
+
}
|
|
16337
|
+
async function loadPresentationDeck(sessionId) {
|
|
16338
|
+
try {
|
|
16339
|
+
const db = await openDeckDb();
|
|
16340
|
+
return await new Promise((resolve, reject) => {
|
|
16341
|
+
const request = db.transaction(STORE_NAME, "readonly").objectStore(STORE_NAME).get(sessionId);
|
|
16342
|
+
request.onsuccess = () => {
|
|
16343
|
+
db.close();
|
|
16344
|
+
const record = request.result;
|
|
16345
|
+
if (!record || Date.now() - record.createdAt > MAX_DECK_AGE_MS) {
|
|
16346
|
+
resolve(null);
|
|
16347
|
+
return;
|
|
16348
|
+
}
|
|
16349
|
+
const raw = record.bytes;
|
|
16350
|
+
resolve(
|
|
16351
|
+
raw instanceof Uint8Array ? raw : raw instanceof ArrayBuffer ? new Uint8Array(raw) : null
|
|
16352
|
+
);
|
|
16353
|
+
};
|
|
16354
|
+
request.onerror = () => {
|
|
16355
|
+
db.close();
|
|
16356
|
+
reject(request.error);
|
|
16357
|
+
};
|
|
16358
|
+
});
|
|
16359
|
+
} catch {
|
|
16360
|
+
return null;
|
|
16361
|
+
}
|
|
16362
|
+
}
|
|
16363
|
+
async function clearPresentationDeck(sessionId) {
|
|
16364
|
+
try {
|
|
16365
|
+
const db = await openDeckDb();
|
|
16366
|
+
await new Promise((resolve) => {
|
|
16367
|
+
const tx = db.transaction(STORE_NAME, "readwrite");
|
|
16368
|
+
tx.objectStore(STORE_NAME).delete(sessionId);
|
|
16369
|
+
tx.oncomplete = () => {
|
|
16370
|
+
db.close();
|
|
16371
|
+
resolve();
|
|
16372
|
+
};
|
|
16373
|
+
tx.onerror = () => {
|
|
16374
|
+
db.close();
|
|
16375
|
+
resolve();
|
|
16376
|
+
};
|
|
16377
|
+
});
|
|
16378
|
+
} catch {
|
|
16379
|
+
}
|
|
16380
|
+
}
|
|
16036
16381
|
function formatSlideCounter(currentSlide, totalSlides) {
|
|
16037
16382
|
return `${currentSlide + 1} / ${totalSlides}`;
|
|
16038
16383
|
}
|
|
@@ -16622,7 +16967,10 @@ function getAriaRole(element) {
|
|
|
16622
16967
|
case "picture":
|
|
16623
16968
|
return "img";
|
|
16624
16969
|
case "table":
|
|
16625
|
-
|
|
16970
|
+
case "media":
|
|
16971
|
+
case "text":
|
|
16972
|
+
case "ole":
|
|
16973
|
+
case "contentPart":
|
|
16626
16974
|
case "group":
|
|
16627
16975
|
return "group";
|
|
16628
16976
|
case "chart":
|
|
@@ -16631,17 +16979,13 @@ function getAriaRole(element) {
|
|
|
16631
16979
|
return "img";
|
|
16632
16980
|
case "connector":
|
|
16633
16981
|
return "img";
|
|
16634
|
-
case "media":
|
|
16635
|
-
return "application";
|
|
16636
16982
|
case "ink":
|
|
16637
16983
|
return "img";
|
|
16638
16984
|
case "model3d":
|
|
16639
16985
|
return "img";
|
|
16640
|
-
case "text":
|
|
16641
|
-
return void 0;
|
|
16642
16986
|
case "shape": {
|
|
16643
|
-
if (
|
|
16644
|
-
return
|
|
16987
|
+
if (chunkEXDUEXTO_js.hasTextProperties(element) && element.text) {
|
|
16988
|
+
return "group";
|
|
16645
16989
|
}
|
|
16646
16990
|
return "img";
|
|
16647
16991
|
}
|
|
@@ -16653,7 +16997,7 @@ function getAriaLabel(element) {
|
|
|
16653
16997
|
if ((element.type === "image" || element.type === "picture") && "altText" in element && typeof element.altText === "string" && element.altText.trim()) {
|
|
16654
16998
|
return element.altText.trim();
|
|
16655
16999
|
}
|
|
16656
|
-
if (
|
|
17000
|
+
if (chunkEXDUEXTO_js.hasTextProperties(element) && element.text) {
|
|
16657
17001
|
const text = element.text.trim();
|
|
16658
17002
|
if (text) {
|
|
16659
17003
|
return text.length > 120 ? `${text.slice(0, 117)}...` : text;
|
|
@@ -16760,6 +17104,75 @@ function getAriaRoleDescription(element) {
|
|
|
16760
17104
|
return void 0;
|
|
16761
17105
|
}
|
|
16762
17106
|
}
|
|
17107
|
+
var MODAL_FOCUSABLE_SELECTOR = [
|
|
17108
|
+
"a[href]",
|
|
17109
|
+
"button:not([disabled])",
|
|
17110
|
+
'input:not([disabled]):not([type="hidden"])',
|
|
17111
|
+
"select:not([disabled])",
|
|
17112
|
+
"textarea:not([disabled])",
|
|
17113
|
+
'[contenteditable="true"]',
|
|
17114
|
+
'[tabindex]:not([tabindex="-1"])'
|
|
17115
|
+
].join(",");
|
|
17116
|
+
function isAvailable(element) {
|
|
17117
|
+
if (element.hidden || element.getAttribute("aria-hidden") === "true") {
|
|
17118
|
+
return false;
|
|
17119
|
+
}
|
|
17120
|
+
const style = element.ownerDocument.defaultView?.getComputedStyle(element);
|
|
17121
|
+
return style?.display !== "none" && style?.visibility !== "hidden";
|
|
17122
|
+
}
|
|
17123
|
+
function focusableElements(panel) {
|
|
17124
|
+
return Array.from(panel.querySelectorAll(MODAL_FOCUSABLE_SELECTOR)).filter(
|
|
17125
|
+
isAvailable
|
|
17126
|
+
);
|
|
17127
|
+
}
|
|
17128
|
+
function activateModalFocus(panel, options = {}) {
|
|
17129
|
+
const doc = panel.ownerDocument;
|
|
17130
|
+
const opener = doc.activeElement instanceof HTMLElement ? doc.activeElement : null;
|
|
17131
|
+
const restoreFocus = options.restoreFocus ?? true;
|
|
17132
|
+
function focusInitial() {
|
|
17133
|
+
const candidate = options.initialFocus ?? focusableElements(panel)[0] ?? panel;
|
|
17134
|
+
candidate.focus();
|
|
17135
|
+
}
|
|
17136
|
+
function onKeydown(event) {
|
|
17137
|
+
if (!panel.isConnected) {
|
|
17138
|
+
doc.removeEventListener("keydown", onKeydown, true);
|
|
17139
|
+
return;
|
|
17140
|
+
}
|
|
17141
|
+
if (event.key === "Escape" && options.onEscape) {
|
|
17142
|
+
event.preventDefault();
|
|
17143
|
+
event.stopPropagation();
|
|
17144
|
+
options.onEscape();
|
|
17145
|
+
return;
|
|
17146
|
+
}
|
|
17147
|
+
if (event.key !== "Tab") {
|
|
17148
|
+
return;
|
|
17149
|
+
}
|
|
17150
|
+
const focusable = focusableElements(panel);
|
|
17151
|
+
if (focusable.length === 0) {
|
|
17152
|
+
event.preventDefault();
|
|
17153
|
+
panel.focus();
|
|
17154
|
+
return;
|
|
17155
|
+
}
|
|
17156
|
+
const first = focusable[0];
|
|
17157
|
+
const last = focusable[focusable.length - 1];
|
|
17158
|
+
const active = doc.activeElement;
|
|
17159
|
+
if (event.shiftKey && (active === first || !panel.contains(active))) {
|
|
17160
|
+
event.preventDefault();
|
|
17161
|
+
last.focus();
|
|
17162
|
+
} else if (!event.shiftKey && (active === last || !panel.contains(active))) {
|
|
17163
|
+
event.preventDefault();
|
|
17164
|
+
first.focus();
|
|
17165
|
+
}
|
|
17166
|
+
}
|
|
17167
|
+
doc.addEventListener("keydown", onKeydown, true);
|
|
17168
|
+
queueMicrotask(focusInitial);
|
|
17169
|
+
return () => {
|
|
17170
|
+
doc.removeEventListener("keydown", onKeydown, true);
|
|
17171
|
+
if (restoreFocus && opener?.isConnected) {
|
|
17172
|
+
opener.focus();
|
|
17173
|
+
}
|
|
17174
|
+
};
|
|
17175
|
+
}
|
|
16763
17176
|
function extractPathPoints(d) {
|
|
16764
17177
|
const points = [];
|
|
16765
17178
|
const numberRegex = /-?\d+(?:\.\d+)?(?:e[+-]?\d+)?/giu;
|
|
@@ -16991,7 +17404,7 @@ var DEFAULT_CHART_POSITION = { x: 120, y: 120, width: 480, height: 320 };
|
|
|
16991
17404
|
var DEFAULT_CATEGORIES = ["Category 1", "Category 2", "Category 3"];
|
|
16992
17405
|
var DEFAULT_SERIES_VALUES = [4, 3, 5];
|
|
16993
17406
|
function createDefaultChartElement(chartType = DEFAULT_INSERT_CHART_TYPE, position) {
|
|
16994
|
-
return
|
|
17407
|
+
return chunkEXDUEXTO_js.createChartElement(
|
|
16995
17408
|
chartType,
|
|
16996
17409
|
{
|
|
16997
17410
|
categories: [...DEFAULT_CATEGORIES],
|
|
@@ -19361,6 +19774,10 @@ exports.NOTES_FONT_SIZE_MIN = NOTES_FONT_SIZE_MIN;
|
|
|
19361
19774
|
exports.NOTES_FONT_SIZE_STEP = NOTES_FONT_SIZE_STEP;
|
|
19362
19775
|
exports.NUM = NUM;
|
|
19363
19776
|
exports.PATTERN_OPTIONS = PATTERN_OPTIONS;
|
|
19777
|
+
exports.PRESENTATION_CHANNEL_NAME = PRESENTATION_CHANNEL_NAME;
|
|
19778
|
+
exports.PRESENTATION_HASH = PRESENTATION_HASH;
|
|
19779
|
+
exports.PRESENTATION_MESSAGE_ORIGIN = PRESENTATION_MESSAGE_ORIGIN;
|
|
19780
|
+
exports.PRESENTATION_NONCE_KEY = PRESENTATION_NONCE_KEY;
|
|
19364
19781
|
exports.PRESETS = PRESETS;
|
|
19365
19782
|
exports.RULER_FONT_SIZE = RULER_FONT_SIZE;
|
|
19366
19783
|
exports.RULER_THICKNESS = RULER_THICKNESS;
|
|
@@ -19377,8 +19794,10 @@ exports.TITLE_BAR_CLASSES = TITLE_BAR_CLASSES;
|
|
|
19377
19794
|
exports.TITLE_BAR_DEFAULT_FILE_KEY = TITLE_BAR_DEFAULT_FILE_KEY;
|
|
19378
19795
|
exports.TimelineEngine = TimelineEngine;
|
|
19379
19796
|
exports.WEBM_MIME_CANDIDATES = WEBM_MIME_CANDIDATES;
|
|
19797
|
+
exports.activateModalFocus = activateModalFocus;
|
|
19380
19798
|
exports.addSection = addSection;
|
|
19381
19799
|
exports.alignElements = alignElements;
|
|
19800
|
+
exports.appendPresentationInkPoint = appendPresentationInkPoint;
|
|
19382
19801
|
exports.apply3dEffects = apply3dEffects;
|
|
19383
19802
|
exports.applyCaseTransformToSegments = applyCaseTransformToSegments;
|
|
19384
19803
|
exports.applyColorChange = applyColorChange;
|
|
@@ -19393,6 +19812,8 @@ exports.build3DExtrusionData = build3DExtrusionData;
|
|
|
19393
19812
|
exports.buildBroadcastViewerUrl = buildBroadcastViewerUrl;
|
|
19394
19813
|
exports.buildCacheKey = buildCacheKey;
|
|
19395
19814
|
exports.buildChartViewModel = buildChartViewModel;
|
|
19815
|
+
exports.buildCollaborationShareUrl = buildCollaborationShareUrl;
|
|
19816
|
+
exports.buildCreateCollaborationConfig = buildCreateCollaborationConfig;
|
|
19396
19817
|
exports.buildCssGradientFromShapeStyle = buildCssGradientFromShapeStyle;
|
|
19397
19818
|
exports.buildDuotoneCacheKey = buildDuotoneCacheKey;
|
|
19398
19819
|
exports.buildElementClipboardPayload = buildElementClipboardPayload;
|
|
@@ -19400,11 +19821,13 @@ exports.buildGlowBoxShadow = buildGlowBoxShadow;
|
|
|
19400
19821
|
exports.buildHandoutsHtml = buildHandoutsHtml;
|
|
19401
19822
|
exports.buildInitialGuides = buildInitialGuides;
|
|
19402
19823
|
exports.buildInnerShadowCssFromShapeStyle = buildInnerShadowCssFromShapeStyle;
|
|
19824
|
+
exports.buildJoinCollaborationConfig = buildJoinCollaborationConfig;
|
|
19403
19825
|
exports.buildMultiLayerShadowCss = buildMultiLayerShadowCss;
|
|
19404
19826
|
exports.buildNotesHtml = buildNotesHtml;
|
|
19405
19827
|
exports.buildNotesPdfBytes = buildNotesPdfBytes;
|
|
19406
19828
|
exports.buildOutlineHtml = buildOutlineHtml;
|
|
19407
19829
|
exports.buildPatternFillCss = buildPatternFillCss;
|
|
19830
|
+
exports.buildPresentationAudienceUrl = buildPresentationAudienceUrl;
|
|
19408
19831
|
exports.buildPreviewAnimation = buildPreviewAnimation;
|
|
19409
19832
|
exports.buildPrintDocument = buildPrintDocument;
|
|
19410
19833
|
exports.buildPrintHtmlDocument = buildPrintHtmlDocument;
|
|
@@ -19428,6 +19851,7 @@ exports.clampCropValue = clampCropValue;
|
|
|
19428
19851
|
exports.clampNotesFontSize = clampNotesFontSize;
|
|
19429
19852
|
exports.clampPercent = clampPercent;
|
|
19430
19853
|
exports.clampUnitInterval = clampUnitInterval;
|
|
19854
|
+
exports.clearPresentationDeck = clearPresentationDeck;
|
|
19431
19855
|
exports.cloneElementForPaste = cloneElementForPaste;
|
|
19432
19856
|
exports.cloneHistorySnapshot = cloneHistorySnapshot;
|
|
19433
19857
|
exports.cloneSlide = cloneSlide;
|
|
@@ -19463,6 +19887,9 @@ exports.copyFormatFromElement = copyFormatFromElement;
|
|
|
19463
19887
|
exports.countTextSegments = countTextSegments;
|
|
19464
19888
|
exports.createBlankSlide = createBlankSlide;
|
|
19465
19889
|
exports.createDefaultChartElement = createDefaultChartElement;
|
|
19890
|
+
exports.createInitialPresentationSnapshot = createInitialPresentationSnapshot;
|
|
19891
|
+
exports.createPresentationSessionId = createPresentationSessionId;
|
|
19892
|
+
exports.createPresenterTimer = createPresenterTimer;
|
|
19466
19893
|
exports.createSyncGate = createSyncGate;
|
|
19467
19894
|
exports.createTouchGestureRecognizer = createTouchGestureRecognizer;
|
|
19468
19895
|
exports.defaultCssVars = defaultCssVars;
|
|
@@ -19480,6 +19907,7 @@ exports.downloadDataUrl = downloadDataUrl;
|
|
|
19480
19907
|
exports.dragAnchorViewY = dragAnchorViewY;
|
|
19481
19908
|
exports.dragValueForPart = dragValueForPart;
|
|
19482
19909
|
exports.encodeGif = encodeGif;
|
|
19910
|
+
exports.erasePresentationInkAt = erasePresentationInkAt;
|
|
19483
19911
|
exports.expandTextBuildAnimations = expandTextBuildAnimations;
|
|
19484
19912
|
exports.extractPathPoints = extractPathPoints;
|
|
19485
19913
|
exports.filterCommands = filterCommands;
|
|
@@ -19561,17 +19989,21 @@ exports.isLastSlide = isLastSlide;
|
|
|
19561
19989
|
exports.isMixedContentBlocked = isMixedContentBlocked;
|
|
19562
19990
|
exports.isMobileViewport = isMobileViewport;
|
|
19563
19991
|
exports.isPpactionUrl = isPpactionUrl;
|
|
19992
|
+
exports.isPresentationSessionMessage = isPresentationSessionMessage;
|
|
19564
19993
|
exports.isTemplateElement = isTemplateElement;
|
|
19565
19994
|
exports.isTemplateElementId = isTemplateElementId;
|
|
19566
19995
|
exports.isUrlSafe = isUrlSafe;
|
|
19996
|
+
exports.loadPresentationDeck = loadPresentationDeck;
|
|
19567
19997
|
exports.makeCloneId = makeCloneId;
|
|
19568
19998
|
exports.makeSlideId = makeSlideId;
|
|
19569
19999
|
exports.mergeAdditiveSelection = mergeAdditiveSelection;
|
|
19570
20000
|
exports.mergeCells = mergeCells;
|
|
20001
|
+
exports.mergePresentationSnapshot = mergePresentationSnapshot;
|
|
19571
20002
|
exports.mobileElapsedSince = mobileElapsedSince;
|
|
19572
20003
|
exports.mobileSlideCounter = mobileSlideCounter;
|
|
19573
20004
|
exports.mountModel3D = mountModel3D;
|
|
19574
20005
|
exports.mountSurfaceChart3D = mountSurfaceChart3D;
|
|
20006
|
+
exports.movePresenterPointer = movePresenterPointer;
|
|
19575
20007
|
exports.moveSectionDown = moveSectionDown;
|
|
19576
20008
|
exports.moveSectionUp = moveSectionUp;
|
|
19577
20009
|
exports.moveSlidesToSection = moveSlidesToSection;
|
|
@@ -19590,7 +20022,10 @@ exports.parseDrawingColor = parseDrawingColor;
|
|
|
19590
20022
|
exports.parseDrawingColorOpacity = parseDrawingColorOpacity;
|
|
19591
20023
|
exports.parsePpactionUrl = parsePpactionUrl;
|
|
19592
20024
|
exports.pickSupportedMimeType = pickSupportedMimeType;
|
|
20025
|
+
exports.placeAudienceWindow = placeAudienceWindow;
|
|
19593
20026
|
exports.preprocessCssForCapture = preprocessCssForCapture;
|
|
20027
|
+
exports.presentationInkPath = presentationInkPath;
|
|
20028
|
+
exports.presenterElapsed = presenterElapsed;
|
|
19594
20029
|
exports.pressuresToWidths = pressuresToWidths;
|
|
19595
20030
|
exports.readSlidesFromYDoc = readSlidesFromYDoc;
|
|
19596
20031
|
exports.readViewportMetrics = readViewportMetrics;
|
|
@@ -19601,6 +20036,8 @@ exports.rectToCells = rectToCells;
|
|
|
19601
20036
|
exports.remapTextToSegments = remapTextToSegments;
|
|
19602
20037
|
exports.renameSection = renameSection;
|
|
19603
20038
|
exports.rerouteConnectorsForMovedElements = rerouteConnectorsForMovedElements;
|
|
20039
|
+
exports.resetPresenterTimer = resetPresenterTimer;
|
|
20040
|
+
exports.resolveAudienceScreenPlacement = resolveAudienceScreenPlacement;
|
|
19604
20041
|
exports.resolveCssTextAlign = resolveCssTextAlign;
|
|
19605
20042
|
exports.resolveDrawingShapeNodeId = resolveDrawingShapeNodeId;
|
|
19606
20043
|
exports.resolveFontForScript = resolveFontForScript;
|
|
@@ -19622,7 +20059,6 @@ exports.sanitizeColor = sanitizeColor;
|
|
|
19622
20059
|
exports.sanitizeDownloadFilename = sanitizeDownloadFilename;
|
|
19623
20060
|
exports.sanitizeMathMl = sanitizeMathMl;
|
|
19624
20061
|
exports.saveAutosaveSnapshot = saveAutosaveSnapshot;
|
|
19625
|
-
exports.secureRandomUuid = secureRandomUuid;
|
|
19626
20062
|
exports.segmentByScript = segmentByScript;
|
|
19627
20063
|
exports.segmentFrameCount = segmentFrameCount;
|
|
19628
20064
|
exports.sendBackward = sendBackward;
|
|
@@ -19640,13 +20076,17 @@ exports.slideStatusLabel = slideStatusLabel;
|
|
|
19640
20076
|
exports.snapBoxToGrid = snapBoxToGrid;
|
|
19641
20077
|
exports.splitCell = splitCell;
|
|
19642
20078
|
exports.splitSeriesByAxis = splitSeriesByAxis;
|
|
20079
|
+
exports.stepPresenterZoom = stepPresenterZoom;
|
|
20080
|
+
exports.storePresentationDeck = storePresentationDeck;
|
|
19643
20081
|
exports.substituteFieldText = substituteFieldText;
|
|
19644
20082
|
exports.svgLineCap = svgLineCap;
|
|
20083
|
+
exports.swapPresentationWindows = swapPresentationWindows;
|
|
19645
20084
|
exports.themeToCssVars = themeToCssVars;
|
|
19646
20085
|
exports.tintColor2 = tintColor2;
|
|
19647
20086
|
exports.toCssTextOrientation = toCssTextOrientation;
|
|
19648
20087
|
exports.toCssVerticalDirection = toCssVerticalDirection;
|
|
19649
20088
|
exports.toCssWritingMode = toCssWritingMode;
|
|
20089
|
+
exports.togglePresenterTimer = togglePresenterTimer;
|
|
19650
20090
|
exports.transformTextCase = transformTextCase;
|
|
19651
20091
|
exports.validateRoomId = validateRoomId;
|
|
19652
20092
|
exports.valueToY = valueToY;
|