pptx-react-viewer 4.6.0 → 4.8.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 +86 -0
- package/dist/{AiChatPanel-3C7GM6ZF.js → AiChatPanel-4LMJIJUU.js} +28 -28
- package/dist/AiChatPanel-4LMJIJUU.js.br +0 -0
- package/dist/AiChatPanel-4LMJIJUU.js.gz +0 -0
- package/dist/{AiChatPanel-L7DBCWE3.mjs → AiChatPanel-XWYLYN26.mjs} +4 -4
- package/dist/AiChatPanel-XWYLYN26.mjs.br +0 -0
- package/dist/AiChatPanel-XWYLYN26.mjs.gz +0 -0
- package/dist/{Model3DScene-IJ7YYTYU.mjs → Model3DScene-N6IZ7Q57.mjs} +1 -1
- package/dist/Model3DScene-N6IZ7Q57.mjs.br +0 -0
- package/dist/Model3DScene-N6IZ7Q57.mjs.gz +0 -0
- package/dist/{Model3DScene-USKNPWWH.js → Model3DScene-YAPQ5BCI.js} +2 -2
- package/dist/{Model3DScene-USKNPWWH.js.br → Model3DScene-YAPQ5BCI.js.br} +0 -0
- package/dist/Model3DScene-YAPQ5BCI.js.gz +0 -0
- package/dist/{chunk-ZAQFTO4P.mjs → chunk-KHEJXP4I.mjs} +1175 -149
- package/dist/chunk-KHEJXP4I.mjs.br +0 -0
- package/dist/chunk-KHEJXP4I.mjs.gz +0 -0
- package/dist/{chunk-3JUZOKFI.js → chunk-LTBTG2QB.js} +108 -96
- package/dist/chunk-LTBTG2QB.js.br +0 -0
- package/dist/chunk-LTBTG2QB.js.gz +0 -0
- package/dist/{chunk-ICEZL4TM.mjs → chunk-NPZOVIHG.mjs} +40855 -16211
- package/dist/chunk-NPZOVIHG.mjs.br +0 -0
- package/dist/chunk-NPZOVIHG.mjs.gz +0 -0
- package/dist/{chunk-DFSWCVRW.js → chunk-NV2H57Q4.js} +3083 -2057
- package/dist/chunk-NV2H57Q4.js.br +0 -0
- package/dist/chunk-NV2H57Q4.js.gz +0 -0
- package/dist/{chunk-VCAQSSGD.mjs → chunk-Q4XJSJYI.mjs} +1 -1
- package/dist/chunk-Q4XJSJYI.mjs.br +0 -0
- package/dist/chunk-Q4XJSJYI.mjs.gz +0 -0
- package/dist/{chunk-IBHIXBC5.js → chunk-Q7NWWIPQ.js} +890 -1091
- package/dist/chunk-Q7NWWIPQ.js.br +0 -0
- package/dist/chunk-Q7NWWIPQ.js.gz +0 -0
- package/dist/{chunk-Y4QUVWZC.js → chunk-SAYZSUNQ.js} +315 -274
- package/dist/chunk-SAYZSUNQ.js.br +0 -0
- package/dist/chunk-SAYZSUNQ.js.gz +0 -0
- package/dist/{chunk-INX3E37P.mjs → chunk-SOMUGI3Y.mjs} +84 -286
- package/dist/chunk-SOMUGI3Y.mjs.br +0 -0
- package/dist/chunk-SOMUGI3Y.mjs.gz +0 -0
- package/dist/{chunk-K6QHGABT.mjs → chunk-SSXGPYBF.mjs} +109 -68
- package/dist/chunk-SSXGPYBF.mjs.br +0 -0
- package/dist/chunk-SSXGPYBF.mjs.gz +0 -0
- package/dist/{chunk-5V5SMT5A.js → chunk-UTP22QYH.js} +5 -5
- package/dist/chunk-UTP22QYH.js.br +0 -0
- package/dist/chunk-UTP22QYH.js.gz +0 -0
- package/dist/{chunk-FZSYLXJT.js → chunk-YF2BQIW3.js} +40903 -16217
- package/dist/chunk-YF2BQIW3.js.br +0 -0
- package/dist/chunk-YF2BQIW3.js.gz +0 -0
- package/dist/{chunk-OOO4JL2N.mjs → chunk-YPDPSXPK.mjs} +108 -96
- package/dist/chunk-YPDPSXPK.mjs.br +0 -0
- package/dist/chunk-YPDPSXPK.mjs.gz +0 -0
- package/dist/i18n/de.cjs +134 -117
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +134 -117
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +134 -117
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +134 -117
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +134 -117
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +134 -117
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +111 -99
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +111 -99
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.d.ts +276 -18
- package/dist/index.js +63 -63
- 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 +329 -18
- package/dist/internals.js +105 -105
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -4
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/viewer/index.d.ts +231 -16
- package/dist/viewer/index.js +27 -27
- 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 +2 -3
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-3C7GM6ZF.js.br +0 -0
- package/dist/AiChatPanel-3C7GM6ZF.js.gz +0 -0
- package/dist/AiChatPanel-L7DBCWE3.mjs.br +0 -0
- package/dist/AiChatPanel-L7DBCWE3.mjs.gz +0 -0
- package/dist/Model3DScene-IJ7YYTYU.mjs.br +0 -0
- package/dist/Model3DScene-IJ7YYTYU.mjs.gz +0 -0
- package/dist/Model3DScene-USKNPWWH.js.gz +0 -0
- package/dist/chunk-3JUZOKFI.js.br +0 -0
- package/dist/chunk-3JUZOKFI.js.gz +0 -0
- package/dist/chunk-5V5SMT5A.js.br +0 -0
- package/dist/chunk-5V5SMT5A.js.gz +0 -0
- package/dist/chunk-DFSWCVRW.js.br +0 -0
- package/dist/chunk-DFSWCVRW.js.gz +0 -0
- package/dist/chunk-FZSYLXJT.js.br +0 -0
- package/dist/chunk-FZSYLXJT.js.gz +0 -0
- package/dist/chunk-IBHIXBC5.js.br +0 -0
- package/dist/chunk-IBHIXBC5.js.gz +0 -0
- package/dist/chunk-ICEZL4TM.mjs.br +0 -0
- package/dist/chunk-ICEZL4TM.mjs.gz +0 -0
- package/dist/chunk-INX3E37P.mjs.br +0 -0
- package/dist/chunk-INX3E37P.mjs.gz +0 -0
- package/dist/chunk-K6QHGABT.mjs.br +0 -0
- package/dist/chunk-K6QHGABT.mjs.gz +0 -0
- package/dist/chunk-OOO4JL2N.mjs.br +0 -0
- package/dist/chunk-OOO4JL2N.mjs.gz +0 -0
- package/dist/chunk-VCAQSSGD.mjs.br +0 -0
- package/dist/chunk-VCAQSSGD.mjs.gz +0 -0
- package/dist/chunk-Y4QUVWZC.js.br +0 -0
- package/dist/chunk-Y4QUVWZC.js.gz +0 -0
- package/dist/chunk-ZAQFTO4P.mjs.br +0 -0
- package/dist/chunk-ZAQFTO4P.mjs.gz +0 -0
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkYF2BQIW3_js = require('./chunk-YF2BQIW3.js');
|
|
4
|
+
var chunkLTBTG2QB_js = require('./chunk-LTBTG2QB.js');
|
|
5
5
|
var clsx = require('clsx');
|
|
6
6
|
var tailwindMerge = require('tailwind-merge');
|
|
7
|
-
var
|
|
7
|
+
var React8 = require('react');
|
|
8
8
|
var lu = require('react-icons/lu');
|
|
9
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
10
|
var reactI18next = require('react-i18next');
|
|
11
11
|
|
|
12
12
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var React8__default = /*#__PURE__*/_interopDefault(React8);
|
|
15
15
|
|
|
16
16
|
// src/viewer/utils/animation-effects.ts
|
|
17
17
|
function getAnimationInitialStyle2(preset, nativeAnimation) {
|
|
18
|
-
return
|
|
18
|
+
return chunkYF2BQIW3_js.getAnimationInitialStyle(preset, nativeAnimation);
|
|
19
19
|
}
|
|
20
20
|
function cn(...inputs) {
|
|
21
21
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
@@ -23,7 +23,7 @@ function cn(...inputs) {
|
|
|
23
23
|
|
|
24
24
|
// src/viewer/utils/clone.ts
|
|
25
25
|
function cloneHistorySnapshot2(snapshot) {
|
|
26
|
-
return
|
|
26
|
+
return chunkYF2BQIW3_js.cloneHistorySnapshot(snapshot);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
// src/viewer/constants/scalar.ts
|
|
@@ -61,7 +61,7 @@ var TOOLBAR_SECTIONS = [
|
|
|
61
61
|
{ id: "view", labelKey: "pptx.ribbon.tab.view" },
|
|
62
62
|
{ id: "help", labelKey: "pptx.ribbon.tab.help" }
|
|
63
63
|
];
|
|
64
|
-
var SHORTCUT_REFERENCE_ITEMS =
|
|
64
|
+
var SHORTCUT_REFERENCE_ITEMS = chunkYF2BQIW3_js.VIEWER_SHORTCUT_REFERENCE;
|
|
65
65
|
|
|
66
66
|
// src/viewer/constants/transitions-animations.ts
|
|
67
67
|
var ANIMATION_PRESET_OPTIONS = [
|
|
@@ -89,12 +89,12 @@ var GLYPH_COMPONENTS = {
|
|
|
89
89
|
plus: lu.LuPlus,
|
|
90
90
|
triangle: lu.LuTriangle
|
|
91
91
|
};
|
|
92
|
-
var SHAPE_PRESETS =
|
|
92
|
+
var SHAPE_PRESETS = chunkYF2BQIW3_js.SHAPE_PRESET_DEFS.map(
|
|
93
93
|
(def) => ({
|
|
94
94
|
type: def.type,
|
|
95
95
|
label: def.label,
|
|
96
96
|
i18nKey: def.i18nKey,
|
|
97
|
-
icon:
|
|
97
|
+
icon: React8__default.default.createElement(GLYPH_COMPONENTS[def.glyph], {
|
|
98
98
|
className: def.glyphClass ? `w-3.5 h-3.5 ${def.glyphClass}` : "w-3.5 h-3.5"
|
|
99
99
|
})
|
|
100
100
|
})
|
|
@@ -114,7 +114,7 @@ var ARROW_SIZE_OPTIONS = [
|
|
|
114
114
|
{ value: "med", label: "Medium", i18nKey: "pptx.connectorOptions.sizeMedium" },
|
|
115
115
|
{ value: "lg", label: "Large", i18nKey: "pptx.connectorOptions.sizeLarge" }
|
|
116
116
|
];
|
|
117
|
-
var STROKE_DASH_OPTIONS2 =
|
|
117
|
+
var STROKE_DASH_OPTIONS2 = chunkYF2BQIW3_js.STROKE_DASH_OPTIONS;
|
|
118
118
|
|
|
119
119
|
// src/viewer/utils/shape-types.tsx
|
|
120
120
|
function getShapeType(shapeType) {
|
|
@@ -223,7 +223,7 @@ function isConnectorOrLineElement(element) {
|
|
|
223
223
|
if (element.type === "connector") {
|
|
224
224
|
return true;
|
|
225
225
|
}
|
|
226
|
-
if (!
|
|
226
|
+
if (!chunkYF2BQIW3_js.hasShapeProperties(element)) {
|
|
227
227
|
return false;
|
|
228
228
|
}
|
|
229
229
|
const st = getShapeType(element.shapeType);
|
|
@@ -232,18 +232,18 @@ function isConnectorOrLineElement(element) {
|
|
|
232
232
|
|
|
233
233
|
// src/viewer/utils/image-style.ts
|
|
234
234
|
function getImageMaskStyle(element) {
|
|
235
|
-
if (!
|
|
235
|
+
if (!chunkYF2BQIW3_js.hasShapeProperties(element)) {
|
|
236
236
|
return void 0;
|
|
237
237
|
}
|
|
238
|
-
const geometry =
|
|
238
|
+
const geometry = chunkYF2BQIW3_js.resolveShapeGeometry(element);
|
|
239
239
|
if (geometry.kind === "borderRadius") {
|
|
240
240
|
return { borderRadius: geometry.radius };
|
|
241
241
|
}
|
|
242
242
|
return geometry.kind === "clipPath" ? { clipPath: geometry.clipPath } : void 0;
|
|
243
243
|
}
|
|
244
244
|
function getImageRenderStyle(element) {
|
|
245
|
-
const fit =
|
|
246
|
-
const counterTransform =
|
|
245
|
+
const fit = chunkYF2BQIW3_js.getImageFitStyle(element);
|
|
246
|
+
const counterTransform = chunkYF2BQIW3_js.getImageFillCounterTransform(element, Boolean(fit.transform));
|
|
247
247
|
return {
|
|
248
248
|
// A translated/scaled crop, or a rotWithShape=false counter-transform,
|
|
249
249
|
// must be masked by the stationary wrapper, not by the moving/counter-
|
|
@@ -262,7 +262,7 @@ function getImageSurfaceMaskStyle(element) {
|
|
|
262
262
|
};
|
|
263
263
|
}
|
|
264
264
|
function getImageSurfaceStyle(element) {
|
|
265
|
-
const fill =
|
|
265
|
+
const fill = chunkYF2BQIW3_js.hasShapeProperties(element) ? chunkYF2BQIW3_js.getComputedFillStyle(element) : void 0;
|
|
266
266
|
return {
|
|
267
267
|
position: "absolute",
|
|
268
268
|
inset: 0,
|
|
@@ -275,13 +275,13 @@ function getImageSurfaceStyle(element) {
|
|
|
275
275
|
};
|
|
276
276
|
}
|
|
277
277
|
function getCropShapeClipPath2(element) {
|
|
278
|
-
if (!
|
|
278
|
+
if (!chunkYF2BQIW3_js.isImageLikeElement(element)) {
|
|
279
279
|
return void 0;
|
|
280
280
|
}
|
|
281
|
-
return
|
|
281
|
+
return chunkYF2BQIW3_js.getCropShapeClipPath(element.cropShape, element.width, element.height);
|
|
282
282
|
}
|
|
283
283
|
function getImageTilingStyle2(element, nativeSize) {
|
|
284
|
-
return
|
|
284
|
+
return chunkYF2BQIW3_js.getImageTilingStyle(element, nativeSize);
|
|
285
285
|
}
|
|
286
286
|
|
|
287
287
|
// src/viewer/utils/geometry-image.ts
|
|
@@ -329,8 +329,8 @@ function buildTrimFragment(element) {
|
|
|
329
329
|
return `#t=${(start / 1e3).toFixed(3)}`;
|
|
330
330
|
}
|
|
331
331
|
function useMediaMetadataExtraction(mediaRef, element) {
|
|
332
|
-
const [metadata, setMetadata] =
|
|
333
|
-
|
|
332
|
+
const [metadata, setMetadata] = React8.useState(element.metadata);
|
|
333
|
+
React8.useEffect(() => {
|
|
334
334
|
const el = mediaRef.current;
|
|
335
335
|
if (!el) {
|
|
336
336
|
return;
|
|
@@ -413,7 +413,7 @@ function VideoWithMetadata({
|
|
|
413
413
|
{
|
|
414
414
|
ref: mediaRef,
|
|
415
415
|
className: "w-full h-full pointer-events-auto",
|
|
416
|
-
style: isFullScreen ? { objectFit: "cover" } :
|
|
416
|
+
style: isFullScreen ? { objectFit: "cover" } : chunkYF2BQIW3_js.getImageFitStyle(element),
|
|
417
417
|
controls: showTransport,
|
|
418
418
|
preload: "metadata",
|
|
419
419
|
playsInline: true,
|
|
@@ -466,28 +466,28 @@ function PresentationMediaController({
|
|
|
466
466
|
children
|
|
467
467
|
}) {
|
|
468
468
|
const { t } = reactI18next.useTranslation();
|
|
469
|
-
const mediaRef =
|
|
470
|
-
const [isMediaPlaying, setIsMediaPlaying] =
|
|
469
|
+
const mediaRef = React8.useRef(null);
|
|
470
|
+
const [isMediaPlaying, setIsMediaPlaying] = React8.useState(false);
|
|
471
471
|
const trimStartSec = element.trimStartMs !== void 0 ? element.trimStartMs / 1e3 : 0;
|
|
472
472
|
const hideWhenNotPlaying = isPresentationMode && element.hideWhenNotPlaying === true;
|
|
473
|
-
const { volume: playbackVolume, playbackRate } =
|
|
473
|
+
const { volume: playbackVolume, playbackRate } = chunkYF2BQIW3_js.mediaPlaybackAttributes({
|
|
474
474
|
loop: element.loop,
|
|
475
475
|
volume: element.volume,
|
|
476
476
|
playbackSpeed: element.playbackSpeed
|
|
477
477
|
});
|
|
478
|
-
|
|
478
|
+
React8.useEffect(() => {
|
|
479
479
|
const el = mediaRef.current;
|
|
480
480
|
if (el) {
|
|
481
481
|
el.volume = playbackVolume;
|
|
482
482
|
}
|
|
483
483
|
}, [playbackVolume]);
|
|
484
|
-
|
|
484
|
+
React8.useEffect(() => {
|
|
485
485
|
const el = mediaRef.current;
|
|
486
486
|
if (el) {
|
|
487
487
|
el.playbackRate = playbackRate;
|
|
488
488
|
}
|
|
489
489
|
}, [playbackRate]);
|
|
490
|
-
|
|
490
|
+
React8.useEffect(() => {
|
|
491
491
|
const el = mediaRef.current;
|
|
492
492
|
if (!el) {
|
|
493
493
|
return;
|
|
@@ -513,12 +513,12 @@ function PresentationMediaController({
|
|
|
513
513
|
el.removeEventListener("ended", handleEnded);
|
|
514
514
|
};
|
|
515
515
|
}, [onPlayStateChange]);
|
|
516
|
-
|
|
516
|
+
React8.useEffect(() => {
|
|
517
517
|
const el = mediaRef.current;
|
|
518
518
|
if (!el || !isPresentationMode) {
|
|
519
519
|
return;
|
|
520
520
|
}
|
|
521
|
-
return
|
|
521
|
+
return chunkYF2BQIW3_js.scheduleMediaTrimAndFade(el, {
|
|
522
522
|
trimStartMs: element.trimStartMs,
|
|
523
523
|
trimEndMs: element.trimEndMs,
|
|
524
524
|
fadeInDuration: element.fadeInDuration,
|
|
@@ -533,13 +533,13 @@ function PresentationMediaController({
|
|
|
533
533
|
element.fadeOutDuration,
|
|
534
534
|
playbackVolume
|
|
535
535
|
]);
|
|
536
|
-
|
|
536
|
+
React8.useEffect(() => {
|
|
537
537
|
if (!isPresentationMode || !shouldAutoPlay) {
|
|
538
538
|
return;
|
|
539
539
|
}
|
|
540
540
|
if (element.playAcrossSlides && element.mediaType === "audio") {
|
|
541
541
|
const dataUrl = element.mediaData ?? resolvedDataUrl;
|
|
542
|
-
if (
|
|
542
|
+
if (chunkYF2BQIW3_js.registerCrossSlideAudio(element, dataUrl)) {
|
|
543
543
|
return;
|
|
544
544
|
}
|
|
545
545
|
}
|
|
@@ -561,17 +561,17 @@ function PresentationMediaController({
|
|
|
561
561
|
transition: "opacity 0.3s ease",
|
|
562
562
|
pointerEvents: isMediaPlaying ? "auto" : "none"
|
|
563
563
|
} : {};
|
|
564
|
-
const handleStopFullScreen =
|
|
564
|
+
const handleStopFullScreen = React8.useCallback(() => {
|
|
565
565
|
const el = mediaRef.current;
|
|
566
566
|
if (el && !el.paused) {
|
|
567
567
|
el.pause();
|
|
568
568
|
}
|
|
569
569
|
}, []);
|
|
570
|
-
const noopOnPlay =
|
|
570
|
+
const noopOnPlay = React8.useCallback(() => {
|
|
571
571
|
}, []);
|
|
572
572
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full h-full", style: wrapperStyle, children: [
|
|
573
573
|
children({ mediaRef, onPlay: noopOnPlay, isMediaPlaying }),
|
|
574
|
-
|
|
574
|
+
chunkYF2BQIW3_js.shouldShowMediaFullscreenStopButton({
|
|
575
575
|
fullScreen: isFullScreen,
|
|
576
576
|
presenting: isPresentationMode,
|
|
577
577
|
playing: isMediaPlaying
|
|
@@ -588,7 +588,7 @@ function PresentationMediaController({
|
|
|
588
588
|
] });
|
|
589
589
|
}
|
|
590
590
|
function label(key) {
|
|
591
|
-
return key === void 0 ? void 0 :
|
|
591
|
+
return key === void 0 ? void 0 : chunkLTBTG2QB_js.translationsEn[key];
|
|
592
592
|
}
|
|
593
593
|
function FallbackIcon({
|
|
594
594
|
paths,
|
|
@@ -624,17 +624,17 @@ function Badge({
|
|
|
624
624
|
"div",
|
|
625
625
|
{
|
|
626
626
|
className: `absolute inset-0 flex flex-col items-center justify-center ${isMissing ? "gap-1" : ""}`,
|
|
627
|
-
...{ [
|
|
627
|
+
...{ [chunkYF2BQIW3_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
|
|
628
628
|
children: [
|
|
629
629
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
630
630
|
FallbackIcon,
|
|
631
631
|
{
|
|
632
|
-
paths:
|
|
632
|
+
paths: chunkYF2BQIW3_js.mediaFallbackIcon(visual, element.mediaType),
|
|
633
633
|
size: isMissing ? 32 : 48,
|
|
634
634
|
className: isMissing ? "text-white/60" : "text-white/80 drop-shadow-md"
|
|
635
635
|
}
|
|
636
636
|
),
|
|
637
|
-
isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(
|
|
637
|
+
isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkYF2BQIW3_js.mediaFallbackLabelKey(visual, element.mediaType)) })
|
|
638
638
|
]
|
|
639
639
|
}
|
|
640
640
|
);
|
|
@@ -651,17 +651,17 @@ function Placeholder({
|
|
|
651
651
|
"div",
|
|
652
652
|
{
|
|
653
653
|
className: `w-full h-full flex flex-col items-center justify-center gap-1 pointer-events-none rounded ${isMissing ? "bg-black/30 border border-dashed border-white/20" : element.mediaType === "audio" ? "bg-black/10" : "bg-black/20"}`,
|
|
654
|
-
...{ [
|
|
654
|
+
...{ [chunkYF2BQIW3_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
|
|
655
655
|
children: [
|
|
656
656
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
657
657
|
FallbackIcon,
|
|
658
658
|
{
|
|
659
|
-
paths:
|
|
659
|
+
paths: chunkYF2BQIW3_js.mediaFallbackIcon(visual, element.mediaType),
|
|
660
660
|
size: isMissing ? 36 : element.mediaType === "audio" ? 24 : 32,
|
|
661
661
|
className: isMissing ? "text-white/50" : "text-white/70"
|
|
662
662
|
}
|
|
663
663
|
),
|
|
664
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(
|
|
664
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkYF2BQIW3_js.mediaFallbackLabelKey(visual, element.mediaType)) })
|
|
665
665
|
]
|
|
666
666
|
}
|
|
667
667
|
);
|
|
@@ -671,7 +671,7 @@ function renderMediaFallback({
|
|
|
671
671
|
posterUrl,
|
|
672
672
|
surface
|
|
673
673
|
}) {
|
|
674
|
-
const visual =
|
|
674
|
+
const visual = chunkYF2BQIW3_js.mediaFallbackVisual(surface, {
|
|
675
675
|
hasPoster: Boolean(posterUrl),
|
|
676
676
|
missing: element.mediaMissing === true
|
|
677
677
|
});
|
|
@@ -681,9 +681,9 @@ function renderMediaFallback({
|
|
|
681
681
|
"img",
|
|
682
682
|
{
|
|
683
683
|
src: posterUrl,
|
|
684
|
-
alt: visual.dimPoster ?
|
|
684
|
+
alt: visual.dimPoster ? chunkLTBTG2QB_js.translationsEn["pptx.media.posterAlt"] : chunkLTBTG2QB_js.translationsEn["pptx.media.videoPosterAlt"],
|
|
685
685
|
className: `w-full h-full${visual.dimPoster ? " opacity-50" : ""}`,
|
|
686
|
-
style:
|
|
686
|
+
style: chunkYF2BQIW3_js.getImageFitStyle(element)
|
|
687
687
|
}
|
|
688
688
|
),
|
|
689
689
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { visual, element })
|
|
@@ -693,7 +693,7 @@ function renderMediaFallback({
|
|
|
693
693
|
}
|
|
694
694
|
function renderMediaElement(element, mediaDataUrls, options) {
|
|
695
695
|
if (element.type !== "media") {
|
|
696
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
696
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkLTBTG2QB_js.translationsEn["pptx.media.title"] });
|
|
697
697
|
}
|
|
698
698
|
const mediaType = element.mediaType;
|
|
699
699
|
const mediaPath = element.mediaPath;
|
|
@@ -701,7 +701,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
701
701
|
const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
|
|
702
702
|
const trimFragment = buildTrimFragment(element);
|
|
703
703
|
const posterUrl = element.posterFrameData ?? void 0;
|
|
704
|
-
const shouldLoop =
|
|
704
|
+
const shouldLoop = chunkYF2BQIW3_js.mediaPlaybackAttributes(element).loop;
|
|
705
705
|
const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
|
|
706
706
|
const isFullScreen = options?.fullScreen === true;
|
|
707
707
|
const isPresentationMode = options?.isPresentationMode === true;
|
|
@@ -714,17 +714,17 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
714
714
|
return renderMediaFallback({ element, posterUrl, surface });
|
|
715
715
|
}
|
|
716
716
|
if (mediaType === "video") {
|
|
717
|
-
const onlineVideo =
|
|
717
|
+
const onlineVideo = chunkYF2BQIW3_js.getOnlineVideoEmbed(element);
|
|
718
718
|
if (onlineVideo) {
|
|
719
719
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
720
720
|
"iframe",
|
|
721
721
|
{
|
|
722
722
|
src: onlineVideo.embedUrl,
|
|
723
|
-
title:
|
|
723
|
+
title: chunkLTBTG2QB_js.translationsEn["pptx.media.onlineVideoTitle"],
|
|
724
724
|
className: "w-full h-full border-0 pointer-events-auto",
|
|
725
|
-
allow:
|
|
725
|
+
allow: chunkYF2BQIW3_js.ONLINE_VIDEO_IFRAME_ALLOW,
|
|
726
726
|
allowFullScreen: true,
|
|
727
|
-
sandbox:
|
|
727
|
+
sandbox: chunkYF2BQIW3_js.ONLINE_VIDEO_IFRAME_SANDBOX
|
|
728
728
|
}
|
|
729
729
|
);
|
|
730
730
|
}
|
|
@@ -793,32 +793,32 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
793
793
|
if (surface.presenting || surface.preview) {
|
|
794
794
|
return null;
|
|
795
795
|
}
|
|
796
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
796
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkLTBTG2QB_js.translationsEn["pptx.media.title"] });
|
|
797
797
|
}
|
|
798
798
|
|
|
799
799
|
// src/viewer/utils/text-utils.tsx
|
|
800
800
|
function getTextStyleForElement(element, fallbackColor) {
|
|
801
|
-
return
|
|
801
|
+
return chunkYF2BQIW3_js.buildTextBlockStyle(element, { fallbackColor });
|
|
802
802
|
}
|
|
803
803
|
|
|
804
804
|
// src/viewer/utils/text-layout.tsx
|
|
805
805
|
function getTextLayoutStyle(element) {
|
|
806
|
-
if (!
|
|
806
|
+
if (!chunkYF2BQIW3_js.hasTextProperties(element)) {
|
|
807
807
|
return {};
|
|
808
808
|
}
|
|
809
|
-
const writingMode =
|
|
810
|
-
const textOrientation =
|
|
811
|
-
const verticalDirection =
|
|
809
|
+
const writingMode = chunkYF2BQIW3_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
810
|
+
const textOrientation = chunkYF2BQIW3_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
811
|
+
const verticalDirection = chunkYF2BQIW3_js.toCssVerticalDirection(element.textStyle?.textDirection);
|
|
812
812
|
const textWrapNone = element.textStyle?.textWrap === "none";
|
|
813
813
|
const shapeAutoFitTextBox = element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
|
|
814
|
-
const hasParagraphIndents =
|
|
814
|
+
const hasParagraphIndents = chunkYF2BQIW3_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
|
|
815
815
|
const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
|
|
816
816
|
const paragraphIndent = element.textStyle?.paragraphIndent;
|
|
817
817
|
const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
|
|
818
818
|
const textIndent = !hasParagraphIndents && typeof paragraphIndent === "number" && paragraphIndent !== 0 ? paragraphIndent : void 0;
|
|
819
819
|
const bodyTop = element.textStyle?.bodyInsetTop ?? DEFAULT_BODY_INSET_TB_PX;
|
|
820
820
|
const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
|
|
821
|
-
const bodyLayoutStyle =
|
|
821
|
+
const bodyLayoutStyle = chunkYF2BQIW3_js.buildTextBodyLayoutStyle(element);
|
|
822
822
|
return {
|
|
823
823
|
...bodyLayoutStyle,
|
|
824
824
|
// Body inset only. Paragraph spacing (spcBef/spcAft) is applied
|
|
@@ -848,7 +848,7 @@ function getTextLayoutStyle(element) {
|
|
|
848
848
|
|
|
849
849
|
// src/viewer/utils/text-effects.tsx
|
|
850
850
|
function buildTextBody3DSceneStyle2(textStyle, elementSize) {
|
|
851
|
-
return
|
|
851
|
+
return chunkYF2BQIW3_js.buildTextBody3DSceneStyle(textStyle, elementSize);
|
|
852
852
|
}
|
|
853
853
|
|
|
854
854
|
// src/viewer/utils/text-warp-css.tsx
|
|
@@ -1033,13 +1033,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1033
1033
|
if (!subElementAnimStates || subElementAnimStates.size === 0) {
|
|
1034
1034
|
return renderedSegments;
|
|
1035
1035
|
}
|
|
1036
|
-
const paraKey = `${elementId}${
|
|
1036
|
+
const paraKey = `${elementId}${chunkYF2BQIW3_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
|
|
1037
1037
|
const paraState = subElementAnimStates.get(paraKey);
|
|
1038
1038
|
if (paraState) {
|
|
1039
1039
|
const style = buildAnimStyle(paraState);
|
|
1040
1040
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
|
|
1041
1041
|
}
|
|
1042
|
-
const spec =
|
|
1042
|
+
const spec = chunkYF2BQIW3_js.buildTextBuildSpec(
|
|
1043
1043
|
elementId,
|
|
1044
1044
|
paraIndex,
|
|
1045
1045
|
paraRuns.map((run) => ({ text: run.text, style: run })),
|
|
@@ -1051,13 +1051,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1051
1051
|
return spec.spans.map((span, index) => {
|
|
1052
1052
|
const content = span.style && renderPiece ? renderPiece(span.style, span.text, String(index)) : span.text;
|
|
1053
1053
|
if (!span.animId) {
|
|
1054
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1054
|
+
return /* @__PURE__ */ jsxRuntime.jsx(React8__default.default.Fragment, { children: content }, `ws-${index}`);
|
|
1055
1055
|
}
|
|
1056
1056
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1057
1057
|
"span",
|
|
1058
1058
|
{
|
|
1059
1059
|
"data-anim-id": span.animId,
|
|
1060
|
-
style:
|
|
1060
|
+
style: chunkYF2BQIW3_js.textBuildSpanStyle(span),
|
|
1061
1061
|
children: content
|
|
1062
1062
|
},
|
|
1063
1063
|
span.animId
|
|
@@ -1068,18 +1068,18 @@ function renderUnderlineWords(text, isUnderlineWords, wordDecoration, metric, ke
|
|
|
1068
1068
|
if (!isUnderlineWords || !text) {
|
|
1069
1069
|
return inner(text, keyPrefix, metric);
|
|
1070
1070
|
}
|
|
1071
|
-
const pieces =
|
|
1071
|
+
const pieces = chunkYF2BQIW3_js.splitWordsForUnderline(text);
|
|
1072
1072
|
if (pieces.length === 0) {
|
|
1073
1073
|
return inner(text, keyPrefix, metric);
|
|
1074
1074
|
}
|
|
1075
1075
|
const gapMetric = metric ? {
|
|
1076
1076
|
...metric,
|
|
1077
|
-
nestedStyle: metric.nestedStyle ?
|
|
1077
|
+
nestedStyle: metric.nestedStyle ? chunkYF2BQIW3_js.stripUnderlineDecoration(metric.nestedStyle) : void 0
|
|
1078
1078
|
} : void 0;
|
|
1079
1079
|
return pieces.map((piece, i) => {
|
|
1080
1080
|
const key = `${keyPrefix}-u${i}`;
|
|
1081
1081
|
if (!piece.underline) {
|
|
1082
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1082
|
+
return /* @__PURE__ */ jsxRuntime.jsx(React8__default.default.Fragment, { children: inner(piece.text, key, gapMetric) }, key);
|
|
1083
1083
|
}
|
|
1084
1084
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { style: wordDecoration, children: inner(piece.text, key, metric) }, key);
|
|
1085
1085
|
});
|
|
@@ -1107,7 +1107,7 @@ function makeSegmentPieceRenderer(needsScriptFonts, scriptFonts, baseFontFamily,
|
|
|
1107
1107
|
);
|
|
1108
1108
|
}
|
|
1109
1109
|
function renderTabbedLine(line, ctx, keyPrefix, renderPiece, nestedStyle, underlineWords = false) {
|
|
1110
|
-
const [lineLayout] =
|
|
1110
|
+
const [lineLayout] = chunkYF2BQIW3_js.buildRunTabLines(
|
|
1111
1111
|
line,
|
|
1112
1112
|
ctx,
|
|
1113
1113
|
nestedStyle,
|
|
@@ -1116,17 +1116,44 @@ function renderTabbedLine(line, ctx, keyPrefix, renderPiece, nestedStyle, underl
|
|
|
1116
1116
|
);
|
|
1117
1117
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", whiteSpace: "nowrap" }, children: lineLayout.pieces.map((piece, i) => {
|
|
1118
1118
|
const key = `${keyPrefix}-tab-${i}`;
|
|
1119
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1119
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React8__default.default.Fragment, { children: [
|
|
1120
1120
|
piece.leaderStyle ? /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", style: piece.leaderStyle, children: piece.leaderText }) : null,
|
|
1121
1121
|
piece.words ? piece.words.map((word, w) => /* @__PURE__ */ jsxRuntime.jsx("span", { style: word.style, children: renderPiece(word.text, `${key}-w${w}`) }, `${key}-w${w}`)) : /* @__PURE__ */ jsxRuntime.jsx("span", { style: piece.style, children: renderPiece(piece.text, key) })
|
|
1122
1122
|
] }, key);
|
|
1123
1123
|
}) });
|
|
1124
1124
|
}
|
|
1125
|
+
function renderEastAsianPieces(text, metric, keyPrefix, inner, baseStyle) {
|
|
1126
|
+
const parts = chunkYF2BQIW3_js.splitEastAsianBreaks(text, metric.eastAsian, metric.font);
|
|
1127
|
+
if (parts.length === 1 && !parts[0].style) {
|
|
1128
|
+
return inner(parts[0].text, keyPrefix);
|
|
1129
|
+
}
|
|
1130
|
+
return parts.map((part, i) => {
|
|
1131
|
+
const key = `${keyPrefix}-e${i}`;
|
|
1132
|
+
return part.style ? /* @__PURE__ */ jsxRuntime.jsx("span", { style: { ...baseStyle ?? metric.nestedStyle, ...part.style }, children: inner(part.text, key) }, key) : /* @__PURE__ */ jsxRuntime.jsx(React8__default.default.Fragment, { children: inner(part.text, key) }, key);
|
|
1133
|
+
});
|
|
1134
|
+
}
|
|
1135
|
+
function renderMetricPieces(text, metric, keyPrefix, inner) {
|
|
1136
|
+
if (!metric || !text) {
|
|
1137
|
+
return inner(text, keyPrefix);
|
|
1138
|
+
}
|
|
1139
|
+
const pieces = chunkYF2BQIW3_js.splitRunForMetrics(text, metric.font);
|
|
1140
|
+
if (pieces.length <= 1) {
|
|
1141
|
+
return renderEastAsianPieces(text, metric, keyPrefix, inner, void 0);
|
|
1142
|
+
}
|
|
1143
|
+
return pieces.map((piece, i) => {
|
|
1144
|
+
const key = `${keyPrefix}-w${i}`;
|
|
1145
|
+
const style = {
|
|
1146
|
+
...metric.nestedStyle,
|
|
1147
|
+
letterSpacing: chunkYF2BQIW3_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
|
|
1148
|
+
};
|
|
1149
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { style, children: renderEastAsianPieces(piece.text, metric, key, inner, style) }, key);
|
|
1150
|
+
});
|
|
1151
|
+
}
|
|
1125
1152
|
function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFamily, keyPrefix, nestedStyle) {
|
|
1126
1153
|
if (!needsScriptFonts || !text) {
|
|
1127
1154
|
return text;
|
|
1128
1155
|
}
|
|
1129
|
-
const pieces =
|
|
1156
|
+
const pieces = chunkYF2BQIW3_js.splitRunByScriptFont(
|
|
1130
1157
|
text,
|
|
1131
1158
|
scriptFonts,
|
|
1132
1159
|
baseFontFamily,
|
|
@@ -1136,29 +1163,9 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1136
1163
|
return text;
|
|
1137
1164
|
}
|
|
1138
1165
|
return pieces.map(
|
|
1139
|
-
(piece, i) => piece.style ? /* @__PURE__ */ jsxRuntime.jsx("span", { style: piece.style, children: piece.text }, `${keyPrefix}-r${i}`) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1166
|
+
(piece, i) => piece.style ? /* @__PURE__ */ jsxRuntime.jsx("span", { style: piece.style, children: piece.text }, `${keyPrefix}-r${i}`) : /* @__PURE__ */ jsxRuntime.jsx(React8__default.default.Fragment, { children: piece.text }, `${keyPrefix}-r${i}`)
|
|
1140
1167
|
);
|
|
1141
1168
|
}
|
|
1142
|
-
function renderMetricPieces(text, metric, keyPrefix, inner) {
|
|
1143
|
-
if (!metric || !text) {
|
|
1144
|
-
return inner(text, keyPrefix);
|
|
1145
|
-
}
|
|
1146
|
-
const pieces = chunkFZSYLXJT_js.splitRunForMetrics(text, metric.font);
|
|
1147
|
-
if (pieces.length <= 1) {
|
|
1148
|
-
return inner(text, keyPrefix);
|
|
1149
|
-
}
|
|
1150
|
-
return pieces.map((piece, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1151
|
-
"span",
|
|
1152
|
-
{
|
|
1153
|
-
style: {
|
|
1154
|
-
...metric.nestedStyle,
|
|
1155
|
-
letterSpacing: chunkFZSYLXJT_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
|
|
1156
|
-
},
|
|
1157
|
-
children: inner(piece.text, `${keyPrefix}-w${i}`)
|
|
1158
|
-
},
|
|
1159
|
-
`${keyPrefix}-w${i}`
|
|
1160
|
-
));
|
|
1161
|
-
}
|
|
1162
1169
|
function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsScriptFonts, scriptFonts, baseFontFamily, findHighlights, tabContext, metric, isUnderlineWords = false, wordDecoration) {
|
|
1163
1170
|
const segHl = findHighlights?.get(segmentIndex);
|
|
1164
1171
|
const renderLeaf = makeSegmentPieceRenderer(
|
|
@@ -1172,7 +1179,7 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
|
|
|
1172
1179
|
if (!segHl || segHl.length === 0) {
|
|
1173
1180
|
return lines.map((line, lineIndex) => {
|
|
1174
1181
|
const lineKey = `${elementId}-seg-${segmentIndex}-line-${lineIndex}`;
|
|
1175
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1182
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React8__default.default.Fragment, { children: [
|
|
1176
1183
|
tabContext && line.includes(" ") ? renderTabbedLine(
|
|
1177
1184
|
line,
|
|
1178
1185
|
tabContext,
|
|
@@ -1224,12 +1231,12 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
|
|
|
1224
1231
|
children: renderLeaf(chunk.text, chunkKey)
|
|
1225
1232
|
},
|
|
1226
1233
|
chunkKey
|
|
1227
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1234
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(React8__default.default.Fragment, { children: renderLeaf(chunk.text, chunkKey) }, chunkKey);
|
|
1228
1235
|
});
|
|
1229
1236
|
}
|
|
1230
1237
|
function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber, fontSize) {
|
|
1231
|
-
const mathml =
|
|
1232
|
-
const safeMathml = mathml ?
|
|
1238
|
+
const mathml = chunkYF2BQIW3_js.convertOmmlToMathMl(equationXml);
|
|
1239
|
+
const safeMathml = mathml ? chunkYF2BQIW3_js.sanitizeMathMl(mathml) : "";
|
|
1233
1240
|
const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1234
1241
|
"span",
|
|
1235
1242
|
{
|
|
@@ -1239,7 +1246,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
|
|
|
1239
1246
|
},
|
|
1240
1247
|
dangerouslySetInnerHTML: { __html: safeMathml }
|
|
1241
1248
|
}
|
|
1242
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children:
|
|
1249
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-block px-1 py-0.5 rounded text-xs bg-gray-200/20 text-gray-400 italic", children: chunkLTBTG2QB_js.translationsEn["pptx.textSegment.equationFallback"] });
|
|
1243
1250
|
if (equationNumber) {
|
|
1244
1251
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1245
1252
|
"span",
|
|
@@ -1369,7 +1376,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1369
1376
|
const segmentStyle = segment?.style ?? {};
|
|
1370
1377
|
const textValue = run.text;
|
|
1371
1378
|
const lines = textValue.split("\n");
|
|
1372
|
-
const resolvedSegmentColor =
|
|
1379
|
+
const resolvedSegmentColor = chunkYF2BQIW3_js.normalizeHexColor(
|
|
1373
1380
|
segmentStyle.color || element.textStyle?.color,
|
|
1374
1381
|
run.hyperlink ? HYPERLINK_COLOR : fallbackColor
|
|
1375
1382
|
);
|
|
@@ -1377,42 +1384,47 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1377
1384
|
const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
|
|
1378
1385
|
const baselineFontScale = baselineFraction !== 0 ? BASELINE_FONT_SCALE : 1;
|
|
1379
1386
|
const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
|
|
1380
|
-
const baseFontSize =
|
|
1387
|
+
const baseFontSize = chunkYF2BQIW3_js.scaleFontSizeForAutoFit(
|
|
1381
1388
|
rawFontSize,
|
|
1382
|
-
|
|
1389
|
+
chunkYF2BQIW3_js.resolveAutoFitFontScale(element.textStyle)
|
|
1383
1390
|
);
|
|
1384
1391
|
const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
|
|
1385
|
-
const fontKerning =
|
|
1392
|
+
const fontKerning = chunkYF2BQIW3_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
|
|
1386
1393
|
const scriptFallbackWins = Boolean(
|
|
1387
1394
|
segmentStyle.scriptFallbackFont && segmentStyle.fontFamilyIsCascadeDefault
|
|
1388
1395
|
);
|
|
1389
1396
|
const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
|
|
1390
|
-
const baseFontFamily = scriptFallbackWins ?
|
|
1397
|
+
const baseFontFamily = scriptFallbackWins ? chunkYF2BQIW3_js.getSubstituteFontFamily(segmentStyle.scriptFallbackFont) : rawFontFamily ? chunkYF2BQIW3_js.getSubstituteFontFamily(
|
|
1391
1398
|
rawFontFamily,
|
|
1392
|
-
|
|
1399
|
+
chunkYF2BQIW3_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
|
|
1393
1400
|
) : DEFAULT_FONT_FAMILY2;
|
|
1394
|
-
const scriptFonts =
|
|
1395
|
-
const needsScriptFonts =
|
|
1396
|
-
const authoredLetterSpacing =
|
|
1401
|
+
const scriptFonts = chunkYF2BQIW3_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
|
|
1402
|
+
const needsScriptFonts = chunkYF2BQIW3_js.hasDistinctScriptFonts(scriptFonts);
|
|
1403
|
+
const authoredLetterSpacing = chunkYF2BQIW3_js.authoredLetterSpacingPx(segmentStyle);
|
|
1397
1404
|
const metricFont = {
|
|
1398
1405
|
fontFamily: baseFontFamily,
|
|
1399
1406
|
fontSizePx: baseFontSize * baselineFontScale,
|
|
1400
1407
|
bold: Boolean(segmentStyle.bold),
|
|
1401
1408
|
italic: Boolean(segmentStyle.italic)
|
|
1402
1409
|
};
|
|
1403
|
-
const nestedStyle =
|
|
1404
|
-
const metricContext = {
|
|
1410
|
+
const nestedStyle = chunkYF2BQIW3_js.nestedTextDecorationStyle(run.style);
|
|
1411
|
+
const metricContext = {
|
|
1412
|
+
font: metricFont,
|
|
1413
|
+
authoredPx: authoredLetterSpacing,
|
|
1414
|
+
nestedStyle,
|
|
1415
|
+
eastAsian: ctx.eastAsianBreaks
|
|
1416
|
+
};
|
|
1405
1417
|
const spanStyle = { ...run.style };
|
|
1406
1418
|
spanStyle.color = resolvedSegmentColor;
|
|
1407
1419
|
spanStyle.fontSize = baseFontSize * baselineFontScale;
|
|
1408
1420
|
spanStyle.fontFamily = baseFontFamily;
|
|
1409
1421
|
spanStyle.verticalAlign = baselineShift;
|
|
1410
1422
|
spanStyle.fontKerning = fontKerning;
|
|
1411
|
-
spanStyle.letterSpacing =
|
|
1423
|
+
spanStyle.letterSpacing = chunkYF2BQIW3_js.pieceLetterSpacing(
|
|
1412
1424
|
authoredLetterSpacing,
|
|
1413
|
-
|
|
1425
|
+
chunkYF2BQIW3_js.resolveMetricTrackingPx(textValue, metricFont)
|
|
1414
1426
|
);
|
|
1415
|
-
const hollow =
|
|
1427
|
+
const hollow = chunkYF2BQIW3_js.hollowTextFillStyle(segmentStyle, {
|
|
1416
1428
|
color: resolvedSegmentColor,
|
|
1417
1429
|
textStroke: typeof spanStyle.WebkitTextStroke === "string" ? spanStyle.WebkitTextStroke : void 0
|
|
1418
1430
|
});
|
|
@@ -1424,10 +1436,10 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1424
1436
|
spanStyle.direction = runRtl ? "rtl" : "ltr";
|
|
1425
1437
|
spanStyle.unicodeBidi = runRtl !== ctx.paragraphRtl ? "bidi-override" : "embed";
|
|
1426
1438
|
}
|
|
1427
|
-
const isUnderlineWords =
|
|
1439
|
+
const isUnderlineWords = chunkYF2BQIW3_js.splitsUnderlineIntoWords(segmentStyle);
|
|
1428
1440
|
const wordDecoration = isUnderlineWords ? nestedStyle ?? run.underlineWordPieces?.find((piece) => piece.style)?.style : void 0;
|
|
1429
1441
|
if (isUnderlineWords) {
|
|
1430
|
-
const stripped =
|
|
1442
|
+
const stripped = chunkYF2BQIW3_js.stripUnderlineDecoration(spanStyle);
|
|
1431
1443
|
spanStyle.textDecoration = stripped.textDecoration;
|
|
1432
1444
|
delete spanStyle.textDecorationStyle;
|
|
1433
1445
|
delete spanStyle.textDecorationThickness;
|
|
@@ -1443,13 +1455,14 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1443
1455
|
scriptFonts,
|
|
1444
1456
|
baseFontFamily,
|
|
1445
1457
|
findHighlights,
|
|
1446
|
-
|
|
1458
|
+
chunkYF2BQIW3_js.buildTabContext(
|
|
1447
1459
|
element.textStyle?.tabStops,
|
|
1448
1460
|
element.textStyle?.defaultTabSize,
|
|
1449
1461
|
baseFontSize,
|
|
1450
1462
|
baseFontFamily,
|
|
1451
1463
|
Boolean(segmentStyle.bold),
|
|
1452
|
-
Boolean(segmentStyle.italic)
|
|
1464
|
+
Boolean(segmentStyle.italic),
|
|
1465
|
+
{ language: segmentStyle.language, rtl: ctx.paragraphRtl === true }
|
|
1453
1466
|
),
|
|
1454
1467
|
metricContext,
|
|
1455
1468
|
isUnderlineWords,
|
|
@@ -1475,29 +1488,29 @@ function renderSeededListRun(seed, runs, segments, context) {
|
|
|
1475
1488
|
const segment = sourceRun ? segments[seed.segmentIndex] : { text: seed.text, style: seed.style };
|
|
1476
1489
|
const resolvedSegment = {
|
|
1477
1490
|
...segment,
|
|
1478
|
-
style:
|
|
1491
|
+
style: chunkYF2BQIW3_js.withInlineListDecorationDefaults(segment.style, context.element.textStyle)
|
|
1479
1492
|
};
|
|
1480
|
-
const decorationCss =
|
|
1493
|
+
const decorationCss = chunkYF2BQIW3_js.segmentStyleToCss(
|
|
1481
1494
|
resolvedSegment,
|
|
1482
|
-
|
|
1495
|
+
chunkYF2BQIW3_js.resolveAutoFitFontScale(context.element.textStyle)
|
|
1483
1496
|
);
|
|
1484
|
-
|
|
1485
|
-
const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...
|
|
1497
|
+
chunkYF2BQIW3_js.applyUnderlineVariant(decorationCss, resolvedSegment);
|
|
1498
|
+
const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...chunkYF2BQIW3_js.nestedTextDecorationStyle(decorationCss) } } : {
|
|
1486
1499
|
text: seed.text,
|
|
1487
1500
|
style: decorationCss,
|
|
1488
1501
|
segmentIndex: seed.segmentIndex
|
|
1489
1502
|
};
|
|
1490
1503
|
const rendered = renderParagraphRun(run, resolvedSegment, context);
|
|
1491
|
-
if (!
|
|
1504
|
+
if (!React8__default.default.isValidElement(rendered)) {
|
|
1492
1505
|
return rendered;
|
|
1493
1506
|
}
|
|
1494
|
-
return
|
|
1507
|
+
return React8__default.default.cloneElement(rendered, {
|
|
1495
1508
|
"data-pptx-list-run": seed.token,
|
|
1496
1509
|
...seed.text === "" ? { children: /* @__PURE__ */ jsxRuntime.jsx("br", {}) } : {}
|
|
1497
1510
|
});
|
|
1498
1511
|
}
|
|
1499
1512
|
function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick, placeholderPrompt, inlineListSeed) {
|
|
1500
|
-
if (!
|
|
1513
|
+
if (!chunkYF2BQIW3_js.hasTextProperties(element)) {
|
|
1501
1514
|
return emptyFallback || null;
|
|
1502
1515
|
}
|
|
1503
1516
|
const segments = segmentOverrides ?? element.textSegments;
|
|
@@ -1507,12 +1520,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
1507
1520
|
}
|
|
1508
1521
|
return element.text || emptyFallback || "";
|
|
1509
1522
|
}
|
|
1510
|
-
const paragraphs =
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
inlineListSeed ? { preserveTrailingEmpty: true } : void 0
|
|
1515
|
-
);
|
|
1523
|
+
const paragraphs = chunkYF2BQIW3_js.buildParagraphs(element, fieldContext, segmentOverrides, {
|
|
1524
|
+
preserveTrailingEmpty: inlineListSeed ? true : void 0,
|
|
1525
|
+
eastAsianRunPieces: false
|
|
1526
|
+
});
|
|
1516
1527
|
const ctx = {
|
|
1517
1528
|
element,
|
|
1518
1529
|
fallbackColor,
|
|
@@ -1546,7 +1557,11 @@ function joinRunsBySegment(runs) {
|
|
|
1546
1557
|
}
|
|
1547
1558
|
function renderParagraph(para, paraIndex, paraCount, segments, ctx, subElementAnimStates, inlineListSeed) {
|
|
1548
1559
|
const element = ctx.element;
|
|
1549
|
-
const runCtx = {
|
|
1560
|
+
const runCtx = {
|
|
1561
|
+
...ctx,
|
|
1562
|
+
paragraphRtl: para.rtl,
|
|
1563
|
+
eastAsianBreaks: para.eastAsianBreaks
|
|
1564
|
+
};
|
|
1550
1565
|
const runs = joinRunsBySegment(para.runs);
|
|
1551
1566
|
const listParagraph = inlineListSeed?.paragraphs[paraIndex];
|
|
1552
1567
|
const renderedRuns = listParagraph ? listParagraph.runs.map((run) => renderSeededListRun(run, runs, segments, runCtx)) : runs.map((run) => renderParagraphRun(run, segments[run.segmentIndex ?? -1], runCtx));
|
|
@@ -1596,7 +1611,7 @@ function renderParagraph(para, paraIndex, paraCount, segments, ctx, subElementAn
|
|
|
1596
1611
|
);
|
|
1597
1612
|
const needsWrapper = Boolean(listParagraph) || Object.keys(paraStyle).length > 0 || marker !== null;
|
|
1598
1613
|
if (!needsWrapper) {
|
|
1599
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1614
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(React8__default.default.Fragment, { children: [
|
|
1600
1615
|
wrappedContent,
|
|
1601
1616
|
paraIndex < paraCount - 1 ? /* @__PURE__ */ jsxRuntime.jsx("br", {}) : null
|
|
1602
1617
|
] }, `${element.id}-para-${paraIndex}`);
|
|
@@ -1653,13 +1668,13 @@ function renderBulletMarker(para, paraIndex, elementId) {
|
|
|
1653
1668
|
);
|
|
1654
1669
|
}
|
|
1655
1670
|
function getDuotoneColors(element) {
|
|
1656
|
-
if (!
|
|
1671
|
+
if (!chunkYF2BQIW3_js.isImageLikeElement(element)) {
|
|
1657
1672
|
return void 0;
|
|
1658
1673
|
}
|
|
1659
1674
|
return element.imageEffects?.duotone;
|
|
1660
1675
|
}
|
|
1661
1676
|
function buildLineShadowCss(element) {
|
|
1662
|
-
if (!
|
|
1677
|
+
if (!chunkYF2BQIW3_js.hasShapeProperties(element)) {
|
|
1663
1678
|
return void 0;
|
|
1664
1679
|
}
|
|
1665
1680
|
const ss = element.shapeStyle;
|
|
@@ -1670,13 +1685,13 @@ function buildLineShadowCss(element) {
|
|
|
1670
1685
|
const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
|
|
1671
1686
|
const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
|
|
1672
1687
|
const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
|
|
1673
|
-
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${
|
|
1674
|
-
|
|
1688
|
+
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkYF2BQIW3_js.colorWithOpacity(
|
|
1689
|
+
chunkYF2BQIW3_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
|
|
1675
1690
|
opacity
|
|
1676
1691
|
)}`;
|
|
1677
1692
|
}
|
|
1678
1693
|
function buildLineGlowFilter(element) {
|
|
1679
|
-
if (!
|
|
1694
|
+
if (!chunkYF2BQIW3_js.hasShapeProperties(element)) {
|
|
1680
1695
|
return void 0;
|
|
1681
1696
|
}
|
|
1682
1697
|
const ss = element.shapeStyle;
|
|
@@ -1685,22 +1700,22 @@ function buildLineGlowFilter(element) {
|
|
|
1685
1700
|
}
|
|
1686
1701
|
const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
|
|
1687
1702
|
const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
|
|
1688
|
-
const glowCol =
|
|
1703
|
+
const glowCol = chunkYF2BQIW3_js.colorWithOpacity(chunkYF2BQIW3_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
|
|
1689
1704
|
return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
|
|
1690
1705
|
}
|
|
1691
1706
|
function getDagDuotoneFilterId(elementId) {
|
|
1692
1707
|
return `dag-duotone-${elementId}`;
|
|
1693
1708
|
}
|
|
1694
1709
|
function hasDagDuotoneEffect(element) {
|
|
1695
|
-
if (!
|
|
1710
|
+
if (!chunkYF2BQIW3_js.hasShapeProperties(element)) {
|
|
1696
1711
|
return false;
|
|
1697
1712
|
}
|
|
1698
1713
|
return Boolean(element.shapeStyle?.dagDuotone);
|
|
1699
1714
|
}
|
|
1700
1715
|
function renderDagDuotoneSvgFilter(elementId, color1, color2) {
|
|
1701
1716
|
const filterId = getDagDuotoneFilterId(elementId);
|
|
1702
|
-
const c1 =
|
|
1703
|
-
const c2 =
|
|
1717
|
+
const c1 = chunkYF2BQIW3_js.hexToRgbUnit(color1);
|
|
1718
|
+
const c2 = chunkYF2BQIW3_js.hexToRgbUnit(color2);
|
|
1704
1719
|
const grayscaleMatrix = [
|
|
1705
1720
|
0.2126,
|
|
1706
1721
|
0.7152,
|
|
@@ -1744,7 +1759,7 @@ function renderDagDuotoneSvgFilter(elementId, color1, color2) {
|
|
|
1744
1759
|
|
|
1745
1760
|
// src/viewer/utils/shape-visual-3d.ts
|
|
1746
1761
|
function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
|
|
1747
|
-
return
|
|
1762
|
+
return chunkYF2BQIW3_js.build3DExtrusionData(
|
|
1748
1763
|
shape3d,
|
|
1749
1764
|
scene3d,
|
|
1750
1765
|
fillColor,
|
|
@@ -1753,7 +1768,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
|
|
|
1753
1768
|
);
|
|
1754
1769
|
}
|
|
1755
1770
|
function apply3dEffects2(base, scene3d, shape3d, fillColorFallback, elementSize, elementId) {
|
|
1756
|
-
|
|
1771
|
+
chunkYF2BQIW3_js.apply3dEffects(
|
|
1757
1772
|
base,
|
|
1758
1773
|
scene3d,
|
|
1759
1774
|
shape3d,
|
|
@@ -1768,11 +1783,11 @@ function rendersCustomVectorPath(element) {
|
|
|
1768
1783
|
return (element.type === "shape" || element.type === "image" || element.type === "picture") && Boolean(element.pathData) && typeof element.pathWidth === "number" && element.pathWidth > 0 && typeof element.pathHeight === "number" && element.pathHeight > 0;
|
|
1769
1784
|
}
|
|
1770
1785
|
function rendersWedgeCalloutVector(element) {
|
|
1771
|
-
return element.type === "shape" &&
|
|
1786
|
+
return element.type === "shape" && chunkYF2BQIW3_js.isWedgeCalloutPresetShape(element.shapeType);
|
|
1772
1787
|
}
|
|
1773
1788
|
function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _strokeColor, animatesFill, animatesStroke, parentGroupFill) {
|
|
1774
1789
|
if (element.type === "group") {
|
|
1775
|
-
const fx2 =
|
|
1790
|
+
const fx2 = chunkYF2BQIW3_js.getComputedEffectStyle(element);
|
|
1776
1791
|
const groupStyle = {};
|
|
1777
1792
|
if (fx2.filter) {
|
|
1778
1793
|
groupStyle.filter = fx2.filter;
|
|
@@ -1782,13 +1797,13 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1782
1797
|
}
|
|
1783
1798
|
return groupStyle;
|
|
1784
1799
|
}
|
|
1785
|
-
if (!
|
|
1800
|
+
if (!chunkYF2BQIW3_js.hasShapeProperties(element)) {
|
|
1786
1801
|
return {};
|
|
1787
1802
|
}
|
|
1788
1803
|
const ss = element.shapeStyle;
|
|
1789
|
-
const fill = animatesFill ? void 0 :
|
|
1790
|
-
const fx =
|
|
1791
|
-
const stroke =
|
|
1804
|
+
const fill = animatesFill ? void 0 : chunkYF2BQIW3_js.getComputedFillStyle(element, parentGroupFill);
|
|
1805
|
+
const fx = chunkYF2BQIW3_js.getComputedEffectStyle(element);
|
|
1806
|
+
const stroke = chunkYF2BQIW3_js.getComputedStrokeStyle(element);
|
|
1792
1807
|
const base = {
|
|
1793
1808
|
// A gradient fill REPLACES the solid fill, it does not sit on top of it;
|
|
1794
1809
|
// the whole precedence lives in shared's `getComputedFillStyle`.
|
|
@@ -1827,7 +1842,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1827
1842
|
};
|
|
1828
1843
|
Object.assign(
|
|
1829
1844
|
base,
|
|
1830
|
-
|
|
1845
|
+
chunkYF2BQIW3_js.getAnimationColorBaseStyle(element, {
|
|
1831
1846
|
animatesFill,
|
|
1832
1847
|
animatesStroke,
|
|
1833
1848
|
parentGroupFill
|
|
@@ -1849,7 +1864,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1849
1864
|
},
|
|
1850
1865
|
element.id
|
|
1851
1866
|
);
|
|
1852
|
-
if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) ||
|
|
1867
|
+
if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunkYF2BQIW3_js.isStrokeOnlyPresetElement(element)) {
|
|
1853
1868
|
base.backgroundColor = "transparent";
|
|
1854
1869
|
base.backgroundImage = void 0;
|
|
1855
1870
|
base.borderWidth = void 0;
|
|
@@ -1863,7 +1878,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1863
1878
|
if (rendersWedgeCalloutVector(element)) {
|
|
1864
1879
|
return base;
|
|
1865
1880
|
}
|
|
1866
|
-
const geometry =
|
|
1881
|
+
const geometry = chunkYF2BQIW3_js.resolveShapeGeometry(element);
|
|
1867
1882
|
switch (geometry.kind) {
|
|
1868
1883
|
case "bare":
|
|
1869
1884
|
return { backgroundColor: "transparent", borderWidth: 0, borderStyle: "none" };
|
|
@@ -1887,7 +1902,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1887
1902
|
}
|
|
1888
1903
|
}
|
|
1889
1904
|
function getConnectorPathGeometry2(element) {
|
|
1890
|
-
return
|
|
1905
|
+
return chunkYF2BQIW3_js.getConnectorPathGeometry(element);
|
|
1891
1906
|
}
|
|
1892
1907
|
var ARROW_SIZE_SCALE = {
|
|
1893
1908
|
sm: 0.6,
|
|
@@ -1956,11 +1971,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
|
|
|
1956
1971
|
strokePaint,
|
|
1957
1972
|
strokeWidth,
|
|
1958
1973
|
dashArray,
|
|
1959
|
-
lineCap:
|
|
1974
|
+
lineCap: chunkYF2BQIW3_js.svgLineCap(shapeStyle?.lineCap),
|
|
1960
1975
|
lineJoin,
|
|
1961
1976
|
miterLimit,
|
|
1962
|
-
offsets:
|
|
1963
|
-
widths:
|
|
1977
|
+
offsets: chunkYF2BQIW3_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
|
|
1978
|
+
widths: chunkYF2BQIW3_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
|
|
1964
1979
|
};
|
|
1965
1980
|
}
|
|
1966
1981
|
function strokeStrands(d, keyBase, ctx) {
|
|
@@ -1983,12 +1998,12 @@ function strokeStrands(d, keyBase, ctx) {
|
|
|
1983
1998
|
}
|
|
1984
1999
|
function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
|
|
1985
2000
|
const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
|
|
1986
|
-
const subpaths = structuredPaths && structuredPaths.length > 0 ?
|
|
2001
|
+
const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkYF2BQIW3_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
|
|
1987
2002
|
const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
|
|
1988
|
-
const gradientPaint = gradient ?
|
|
2003
|
+
const gradientPaint = gradient ? chunkYF2BQIW3_js.svgGradientFillRef(gradient) : void 0;
|
|
1989
2004
|
const nodes = [];
|
|
1990
2005
|
if (subpaths && needsPerSubpath) {
|
|
1991
|
-
const paints =
|
|
2006
|
+
const paints = chunkYF2BQIW3_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
|
|
1992
2007
|
paints.forEach((paint, idx) => {
|
|
1993
2008
|
if (paint.fill !== "none") {
|
|
1994
2009
|
const mode = subpaths[idx]?.fillMode;
|
|
@@ -2017,7 +2032,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2017
2032
|
"path",
|
|
2018
2033
|
{
|
|
2019
2034
|
d: pathData,
|
|
2020
|
-
fill: animatesFill ? "inherit" : gradientPaint ??
|
|
2035
|
+
fill: animatesFill ? "inherit" : gradientPaint ?? chunkYF2BQIW3_js.colorWithOpacity(fillColor, fillOpacity),
|
|
2021
2036
|
stroke: "none",
|
|
2022
2037
|
vectorEffect: "non-scaling-stroke"
|
|
2023
2038
|
},
|
|
@@ -2033,7 +2048,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2033
2048
|
"svg",
|
|
2034
2049
|
{
|
|
2035
2050
|
viewBox: `0 0 ${pathWidth} ${pathHeight}`,
|
|
2036
|
-
className: "w-full h-full pointer-events-none",
|
|
2051
|
+
className: "absolute inset-0 w-full h-full pointer-events-none",
|
|
2037
2052
|
preserveAspectRatio: "none",
|
|
2038
2053
|
children: [
|
|
2039
2054
|
animatesFill ? null : renderSvgGradientDefs(gradient),
|
|
@@ -2043,14 +2058,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2043
2058
|
);
|
|
2044
2059
|
}
|
|
2045
2060
|
function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2046
|
-
if (!
|
|
2061
|
+
if (!chunkYF2BQIW3_js.hasShapeProperties(element)) {
|
|
2047
2062
|
return null;
|
|
2048
2063
|
}
|
|
2049
2064
|
const normalizedType = (element.shapeType || "").toLowerCase();
|
|
2050
|
-
const fillPaint = animatesFill ? "inherit" :
|
|
2051
|
-
const strokePaint = animatesStroke ? "inherit" :
|
|
2052
|
-
const dashType =
|
|
2053
|
-
const dashArray =
|
|
2065
|
+
const fillPaint = animatesFill ? "inherit" : chunkYF2BQIW3_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
|
|
2066
|
+
const strokePaint = animatesStroke ? "inherit" : chunkYF2BQIW3_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
|
|
2067
|
+
const dashType = chunkYF2BQIW3_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2068
|
+
const dashArray = chunkYF2BQIW3_js.getSvgStrokeDasharray(
|
|
2054
2069
|
dashType,
|
|
2055
2070
|
Math.max(strokeWidth, 1),
|
|
2056
2071
|
element.shapeStyle?.customDashSegments
|
|
@@ -2131,13 +2146,13 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2131
2146
|
// container's `background-image` is suppressed for custom geometry, so
|
|
2132
2147
|
// without this the shape fell back to the parser's representative solid
|
|
2133
2148
|
// and lost every fade (issue #132).
|
|
2134
|
-
|
|
2149
|
+
chunkYF2BQIW3_js.buildSvgGradientDef(element.shapeStyle, element.id)
|
|
2135
2150
|
);
|
|
2136
2151
|
}
|
|
2137
|
-
if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !
|
|
2152
|
+
if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunkYF2BQIW3_js.buildStrokeOutline(element)) {
|
|
2138
2153
|
const width = Math.max(element.width, 1);
|
|
2139
2154
|
const height = Math.max(element.height, 1);
|
|
2140
|
-
const geometry =
|
|
2155
|
+
const geometry = chunkYF2BQIW3_js.getPresetShapeVectorGeometry(
|
|
2141
2156
|
element.shapeType || "rect",
|
|
2142
2157
|
width,
|
|
2143
2158
|
height,
|
|
@@ -2165,18 +2180,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2165
2180
|
);
|
|
2166
2181
|
}
|
|
2167
2182
|
}
|
|
2168
|
-
if (element.type === "shape" &&
|
|
2183
|
+
if (element.type === "shape" && chunkYF2BQIW3_js.isWedgeCalloutPresetShape(element.shapeType)) {
|
|
2169
2184
|
const width = Math.max(element.width, 1);
|
|
2170
2185
|
const height = Math.max(element.height, 1);
|
|
2171
|
-
const geometry =
|
|
2186
|
+
const geometry = chunkYF2BQIW3_js.getPresetShapeVectorGeometry(
|
|
2172
2187
|
element.shapeType,
|
|
2173
2188
|
width,
|
|
2174
2189
|
height,
|
|
2175
2190
|
element.shapeAdjustments
|
|
2176
2191
|
);
|
|
2177
2192
|
if (geometry) {
|
|
2178
|
-
const gradient =
|
|
2179
|
-
const gradientPaint = gradient ?
|
|
2193
|
+
const gradient = chunkYF2BQIW3_js.buildSvgGradientDef(element.shapeStyle, element.id);
|
|
2194
|
+
const gradientPaint = gradient ? chunkYF2BQIW3_js.svgGradientFillRef(gradient) : void 0;
|
|
2180
2195
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2181
2196
|
"svg",
|
|
2182
2197
|
{
|
|
@@ -2209,18 +2224,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2209
2224
|
);
|
|
2210
2225
|
}
|
|
2211
2226
|
}
|
|
2212
|
-
if (
|
|
2227
|
+
if (chunkYF2BQIW3_js.isCalloutShape(normalizedType)) {
|
|
2213
2228
|
const width = Math.max(element.width, 1);
|
|
2214
2229
|
const height = Math.max(element.height, 1);
|
|
2215
|
-
const geometry =
|
|
2230
|
+
const geometry = chunkYF2BQIW3_js.getCalloutLeaderLineGeometry(
|
|
2216
2231
|
normalizedType,
|
|
2217
2232
|
width,
|
|
2218
2233
|
height,
|
|
2219
2234
|
element.shapeAdjustments
|
|
2220
2235
|
);
|
|
2221
2236
|
if (geometry && geometry.points.length >= 2) {
|
|
2222
|
-
const leaderPath =
|
|
2223
|
-
const bounds =
|
|
2237
|
+
const leaderPath = chunkYF2BQIW3_js.buildCalloutLeaderLineSvgPath(geometry);
|
|
2238
|
+
const bounds = chunkYF2BQIW3_js.getCalloutViewBoxBounds(width, height, geometry);
|
|
2224
2239
|
const lineStroke = Math.max(strokeWidth, 1);
|
|
2225
2240
|
const offsetLeft = bounds.minX;
|
|
2226
2241
|
const offsetTop = bounds.minY;
|
|
@@ -2283,10 +2298,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2283
2298
|
const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
|
|
2284
2299
|
const endArrowL = element.shapeStyle?.connectorEndArrowLength;
|
|
2285
2300
|
const compoundLine = element.shapeStyle?.compoundLine;
|
|
2286
|
-
const connectorLineCap =
|
|
2301
|
+
const connectorLineCap = chunkYF2BQIW3_js.svgLineCap(element.shapeStyle?.lineCap);
|
|
2287
2302
|
const hitTargetWidth = Math.max(strokeWidth * 3, 12);
|
|
2288
|
-
const offsets =
|
|
2289
|
-
const widths =
|
|
2303
|
+
const offsets = chunkYF2BQIW3_js.getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
2304
|
+
const widths = chunkYF2BQIW3_js.getCompoundLineWidths(compoundLine, strokeWidth);
|
|
2290
2305
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2291
2306
|
"svg",
|
|
2292
2307
|
{
|
|
@@ -2353,15 +2368,15 @@ function parseGradientFillCss(gradFill) {
|
|
|
2353
2368
|
}
|
|
2354
2369
|
const rawStops = stops.map((gs) => {
|
|
2355
2370
|
const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
|
|
2356
|
-
const color =
|
|
2357
|
-
const opacity =
|
|
2371
|
+
const color = chunkYF2BQIW3_js.parseDrawingColor(gs) ?? "#888888";
|
|
2372
|
+
const opacity = chunkYF2BQIW3_js.parseDrawingColorOpacity(gs);
|
|
2358
2373
|
return { position: pos, color, opacity };
|
|
2359
2374
|
}).sort((a, b) => a.position - b.position);
|
|
2360
|
-
const stopStrings = rawStops.map((s) => `${
|
|
2375
|
+
const stopStrings = rawStops.map((s) => `${chunkYF2BQIW3_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
|
|
2361
2376
|
const lin = gradFill["a:lin"];
|
|
2362
2377
|
if (lin) {
|
|
2363
2378
|
const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
|
|
2364
|
-
const angleDeg = Math.round(
|
|
2379
|
+
const angleDeg = Math.round(chunkYF2BQIW3_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
|
|
2365
2380
|
return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
|
|
2366
2381
|
}
|
|
2367
2382
|
const path = gradFill["a:path"];
|
|
@@ -2375,7 +2390,7 @@ function parseGradientFillCss(gradFill) {
|
|
|
2375
2390
|
b: Number.parseInt(String(fillToRectXml["@_b"] || "0"), 10) / 1e5
|
|
2376
2391
|
} : void 0;
|
|
2377
2392
|
if (pathType === "rect") {
|
|
2378
|
-
return
|
|
2393
|
+
return chunkYF2BQIW3_js.buildRectPathGradient(rawStops, void 0, fillToRect);
|
|
2379
2394
|
}
|
|
2380
2395
|
let cx = 50;
|
|
2381
2396
|
let cy = 50;
|
|
@@ -2397,8 +2412,8 @@ function parsePatternFillCss(pattFill) {
|
|
|
2397
2412
|
if (!pattFill) {
|
|
2398
2413
|
return void 0;
|
|
2399
2414
|
}
|
|
2400
|
-
const fgColor =
|
|
2401
|
-
const bgColor =
|
|
2415
|
+
const fgColor = chunkYF2BQIW3_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
|
|
2416
|
+
const bgColor = chunkYF2BQIW3_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
|
|
2402
2417
|
const preset = String(pattFill["@_prst"] || "ltDnDiag");
|
|
2403
2418
|
switch (preset) {
|
|
2404
2419
|
case "ltHorz":
|
|
@@ -2509,11 +2524,11 @@ function parseCellBorders(cellProperties) {
|
|
|
2509
2524
|
const prstDash = ln["a:prstDash"];
|
|
2510
2525
|
const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
|
|
2511
2526
|
const cssBorderStyle = ooxmlDashToCss(dashVal);
|
|
2512
|
-
const color =
|
|
2527
|
+
const color = chunkYF2BQIW3_js.parseDrawingColor(ln["a:solidFill"]);
|
|
2513
2528
|
if (color) {
|
|
2514
|
-
const opacity =
|
|
2529
|
+
const opacity = chunkYF2BQIW3_js.parseDrawingColorOpacity(ln["a:solidFill"]);
|
|
2515
2530
|
const key = `${edge.prefix}`;
|
|
2516
|
-
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${
|
|
2531
|
+
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkYF2BQIW3_js.colorWithOpacity(color, opacity)}`;
|
|
2517
2532
|
}
|
|
2518
2533
|
}
|
|
2519
2534
|
return borderStyle;
|
|
@@ -2526,7 +2541,7 @@ function parseCellTextEffects(runProps) {
|
|
|
2526
2541
|
const textShadowParts = [];
|
|
2527
2542
|
const outerShdw = effectLst["a:outerShdw"];
|
|
2528
2543
|
if (outerShdw) {
|
|
2529
|
-
const shdwColor =
|
|
2544
|
+
const shdwColor = chunkYF2BQIW3_js.parseDrawingColor(outerShdw);
|
|
2530
2545
|
if (shdwColor) {
|
|
2531
2546
|
const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
|
|
2532
2547
|
const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
|
|
@@ -2544,7 +2559,7 @@ function parseCellTextEffects(runProps) {
|
|
|
2544
2559
|
}
|
|
2545
2560
|
const glow = effectLst["a:glow"];
|
|
2546
2561
|
if (glow) {
|
|
2547
|
-
const glowColor =
|
|
2562
|
+
const glowColor = chunkYF2BQIW3_js.parseDrawingColor(glow);
|
|
2548
2563
|
if (glowColor) {
|
|
2549
2564
|
const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
|
|
2550
2565
|
const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
|
|
@@ -2566,11 +2581,11 @@ function extractCellText(cellXml) {
|
|
|
2566
2581
|
const textParts = [];
|
|
2567
2582
|
const runs = ensureArrayValue(paragraph["a:r"]);
|
|
2568
2583
|
runs.forEach((run) => {
|
|
2569
|
-
textParts.push(
|
|
2584
|
+
textParts.push(chunkYF2BQIW3_js.xmlText(run["a:t"]) ?? "");
|
|
2570
2585
|
});
|
|
2571
2586
|
const fields = ensureArrayValue(paragraph["a:fld"]);
|
|
2572
2587
|
fields.forEach((field) => {
|
|
2573
|
-
textParts.push(
|
|
2588
|
+
textParts.push(chunkYF2BQIW3_js.xmlText(field["a:t"]) ?? "");
|
|
2574
2589
|
});
|
|
2575
2590
|
paragraphTexts.push(textParts.join(""));
|
|
2576
2591
|
});
|
|
@@ -2614,10 +2629,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2614
2629
|
if (runProps?.["@_u"] !== void 0) {
|
|
2615
2630
|
cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
|
|
2616
2631
|
}
|
|
2617
|
-
const runColor =
|
|
2632
|
+
const runColor = chunkYF2BQIW3_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkYF2BQIW3_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
|
|
2618
2633
|
if (runColor) {
|
|
2619
|
-
const opacity =
|
|
2620
|
-
cellStyle.color =
|
|
2634
|
+
const opacity = chunkYF2BQIW3_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
|
|
2635
|
+
cellStyle.color = chunkYF2BQIW3_js.colorWithOpacity(runColor, opacity);
|
|
2621
2636
|
}
|
|
2622
2637
|
const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
|
|
2623
2638
|
if (fontFamily) {
|
|
@@ -2627,15 +2642,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2627
2642
|
cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
|
|
2628
2643
|
}
|
|
2629
2644
|
const cellProperties = cellXml["a:tcPr"];
|
|
2630
|
-
const cellFill =
|
|
2645
|
+
const cellFill = chunkYF2BQIW3_js.parseDrawingColor(
|
|
2631
2646
|
cellProperties?.["a:solidFill"],
|
|
2632
2647
|
schemeColorOverrides
|
|
2633
2648
|
);
|
|
2634
2649
|
if (cellFill) {
|
|
2635
|
-
const opacity =
|
|
2650
|
+
const opacity = chunkYF2BQIW3_js.parseDrawingColorOpacity(
|
|
2636
2651
|
cellProperties?.["a:solidFill"]
|
|
2637
2652
|
);
|
|
2638
|
-
cellStyle.backgroundColor =
|
|
2653
|
+
cellStyle.backgroundColor = chunkYF2BQIW3_js.colorWithOpacity(cellFill, opacity);
|
|
2639
2654
|
} else {
|
|
2640
2655
|
const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
|
|
2641
2656
|
if (gradCss) {
|
|
@@ -2650,16 +2665,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2650
2665
|
const edgeBorders = parseCellBorders(cellProperties);
|
|
2651
2666
|
Object.assign(cellStyle, edgeBorders);
|
|
2652
2667
|
if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
|
|
2653
|
-
const borderColor =
|
|
2668
|
+
const borderColor = chunkYF2BQIW3_js.parseDrawingColor(
|
|
2654
2669
|
cellProperties?.["a:lnL"]?.["a:solidFill"],
|
|
2655
2670
|
schemeColorOverrides
|
|
2656
|
-
) ||
|
|
2671
|
+
) || chunkYF2BQIW3_js.parseDrawingColor(
|
|
2657
2672
|
cellProperties?.["a:lnR"]?.["a:solidFill"],
|
|
2658
2673
|
schemeColorOverrides
|
|
2659
|
-
) ||
|
|
2674
|
+
) || chunkYF2BQIW3_js.parseDrawingColor(
|
|
2660
2675
|
cellProperties?.["a:lnT"]?.["a:solidFill"],
|
|
2661
2676
|
schemeColorOverrides
|
|
2662
|
-
) ||
|
|
2677
|
+
) || chunkYF2BQIW3_js.parseDrawingColor(
|
|
2663
2678
|
cellProperties?.["a:lnB"]?.["a:solidFill"],
|
|
2664
2679
|
schemeColorOverrides
|
|
2665
2680
|
);
|
|
@@ -2731,7 +2746,7 @@ function getTableCellBandStyle2(element, rowIndex, cellIndex, rowCount, columnCo
|
|
|
2731
2746
|
if (element.type !== "table") {
|
|
2732
2747
|
return void 0;
|
|
2733
2748
|
}
|
|
2734
|
-
return
|
|
2749
|
+
return chunkYF2BQIW3_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
|
|
2735
2750
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
2736
2751
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
2737
2752
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -2811,7 +2826,7 @@ function renderTableCellContent(cell, fallbackText) {
|
|
|
2811
2826
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2812
2827
|
"span",
|
|
2813
2828
|
{
|
|
2814
|
-
style: { position: "relative", ...
|
|
2829
|
+
style: { position: "relative", ...chunkYF2BQIW3_js.cellRunStyle(run) },
|
|
2815
2830
|
children: run.text
|
|
2816
2831
|
},
|
|
2817
2832
|
`r-${index}`
|
|
@@ -2819,7 +2834,7 @@ function renderTableCellContent(cell, fallbackText) {
|
|
|
2819
2834
|
});
|
|
2820
2835
|
}
|
|
2821
2836
|
function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
|
|
2822
|
-
return
|
|
2837
|
+
return chunkYF2BQIW3_js.getCellDiagonalBorders(style, tableData, pos, {
|
|
2823
2838
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
2824
2839
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
2825
2840
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -2878,18 +2893,18 @@ function TableCellInput({
|
|
|
2878
2893
|
onCommit,
|
|
2879
2894
|
onCancel
|
|
2880
2895
|
}) {
|
|
2881
|
-
const inputRef =
|
|
2882
|
-
const committedRef =
|
|
2883
|
-
const onCommitRef =
|
|
2896
|
+
const inputRef = React8.useRef(null);
|
|
2897
|
+
const committedRef = React8.useRef(false);
|
|
2898
|
+
const onCommitRef = React8.useRef(onCommit);
|
|
2884
2899
|
onCommitRef.current = onCommit;
|
|
2885
|
-
|
|
2900
|
+
React8.useEffect(() => {
|
|
2886
2901
|
const el = inputRef.current;
|
|
2887
2902
|
if (el) {
|
|
2888
2903
|
el.focus();
|
|
2889
2904
|
el.select();
|
|
2890
2905
|
}
|
|
2891
2906
|
}, []);
|
|
2892
|
-
|
|
2907
|
+
React8.useEffect(() => {
|
|
2893
2908
|
const input = inputRef.current;
|
|
2894
2909
|
return () => {
|
|
2895
2910
|
if (!committedRef.current && input) {
|
|
@@ -2949,11 +2964,11 @@ function TableResizeOverlay({
|
|
|
2949
2964
|
onResizeColumns,
|
|
2950
2965
|
onResizeRow
|
|
2951
2966
|
}) {
|
|
2952
|
-
const containerRef =
|
|
2953
|
-
const [rowBounds, setRowBounds] =
|
|
2954
|
-
const dragRef =
|
|
2955
|
-
const colBoundaries =
|
|
2956
|
-
const measureRows =
|
|
2967
|
+
const containerRef = React8.useRef(null);
|
|
2968
|
+
const [rowBounds, setRowBounds] = React8.useState([]);
|
|
2969
|
+
const dragRef = React8.useRef(null);
|
|
2970
|
+
const colBoundaries = React8.useMemo(() => chunkYF2BQIW3_js.computeColumnBoundaries(columnWidths), [columnWidths]);
|
|
2971
|
+
const measureRows = React8.useCallback(() => {
|
|
2957
2972
|
const container = containerRef.current;
|
|
2958
2973
|
if (!container) {
|
|
2959
2974
|
return;
|
|
@@ -2978,10 +2993,10 @@ function TableResizeOverlay({
|
|
|
2978
2993
|
return bounds;
|
|
2979
2994
|
});
|
|
2980
2995
|
}, []);
|
|
2981
|
-
|
|
2996
|
+
React8.useLayoutEffect(() => {
|
|
2982
2997
|
measureRows();
|
|
2983
2998
|
});
|
|
2984
|
-
|
|
2999
|
+
React8.useEffect(() => {
|
|
2985
3000
|
const handleMouseMove = (e) => {
|
|
2986
3001
|
const drag = dragRef.current;
|
|
2987
3002
|
if (!drag) {
|
|
@@ -2999,11 +3014,11 @@ function TableResizeOverlay({
|
|
|
2999
3014
|
const rect = containerRef.current.getBoundingClientRect();
|
|
3000
3015
|
if (e.clientX !== drag.startPos && drag.type === "col" && drag.initialWidths && onResizeColumns) {
|
|
3001
3016
|
const deltaProp = (e.clientX - drag.startPos) / rect.width;
|
|
3002
|
-
onResizeColumns(
|
|
3017
|
+
onResizeColumns(chunkYF2BQIW3_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
|
|
3003
3018
|
} else if (e.clientY !== drag.startPos && drag.type === "row" && onResizeRow) {
|
|
3004
3019
|
const deltaY = e.clientY - drag.startPos;
|
|
3005
|
-
const newHeight =
|
|
3006
|
-
drag.initialRowHeight ??
|
|
3020
|
+
const newHeight = chunkYF2BQIW3_js.computeResizedRowHeight(
|
|
3021
|
+
drag.initialRowHeight ?? chunkYF2BQIW3_js.DEFAULT_ROW_HEIGHT,
|
|
3007
3022
|
deltaY
|
|
3008
3023
|
);
|
|
3009
3024
|
onResizeRow(drag.index, newHeight);
|
|
@@ -3041,7 +3056,7 @@ function TableResizeOverlay({
|
|
|
3041
3056
|
e.stopPropagation();
|
|
3042
3057
|
const table = containerRef.current?.querySelector("table");
|
|
3043
3058
|
const tr = table?.querySelectorAll("tbody > tr")[index];
|
|
3044
|
-
const actualHeight = tr?.offsetHeight ??
|
|
3059
|
+
const actualHeight = tr?.offsetHeight ?? chunkYF2BQIW3_js.DEFAULT_ROW_HEIGHT;
|
|
3045
3060
|
document.body.style.cursor = "row-resize";
|
|
3046
3061
|
document.body.style.userSelect = "none";
|
|
3047
3062
|
dragRef.current = {
|
|
@@ -3081,14 +3096,14 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3081
3096
|
const rowCount = tableData.rows.length;
|
|
3082
3097
|
const columnCount = tableData.columnWidths.length;
|
|
3083
3098
|
const selectedCell = options?.selectedCell || null;
|
|
3084
|
-
const isEditable = Boolean(options?.editable) &&
|
|
3099
|
+
const isEditable = Boolean(options?.editable) && chunkYF2BQIW3_js.canDrillDown(element);
|
|
3085
3100
|
const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
|
|
3086
3101
|
const sharedCtx = {
|
|
3087
3102
|
tableStyleMap: options?.styleCtx?.tableStyleMap,
|
|
3088
3103
|
colorScheme: options?.styleCtx?.theme?.colorScheme,
|
|
3089
3104
|
fontScheme: options?.styleCtx?.theme?.fontScheme
|
|
3090
3105
|
};
|
|
3091
|
-
const cellCss = (cell, rowIndex, cellIndex) =>
|
|
3106
|
+
const cellCss = (cell, rowIndex, cellIndex) => chunkYF2BQIW3_js.tableCellCss(
|
|
3092
3107
|
tableData,
|
|
3093
3108
|
cell,
|
|
3094
3109
|
{ rowIndex, cellIndex, rowCount, columnCount },
|
|
@@ -3101,7 +3116,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3101
3116
|
}
|
|
3102
3117
|
const first = selectedCell.selectedCells[0];
|
|
3103
3118
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
3104
|
-
return
|
|
3119
|
+
return chunkYF2BQIW3_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
|
|
3105
3120
|
})();
|
|
3106
3121
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3107
3122
|
TableResizeOverlay,
|
|
@@ -3122,9 +3137,9 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3122
3137
|
{
|
|
3123
3138
|
className: "w-full h-full border-collapse table-fixed",
|
|
3124
3139
|
style: {
|
|
3125
|
-
fontFamily:
|
|
3140
|
+
fontFamily: chunkYF2BQIW3_js.DEFAULT_FONT_FAMILY,
|
|
3126
3141
|
// `a:tblPr@rtl` mirrors the column order for RTL decks.
|
|
3127
|
-
...
|
|
3142
|
+
...chunkYF2BQIW3_js.tableContainerCss(tableData)
|
|
3128
3143
|
},
|
|
3129
3144
|
children: [
|
|
3130
3145
|
tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3143,7 +3158,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3143
3158
|
return null;
|
|
3144
3159
|
}
|
|
3145
3160
|
const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
|
|
3146
|
-
const isInMultiSelection =
|
|
3161
|
+
const isInMultiSelection = chunkYF2BQIW3_js.isCellInRect(rowIndex, cellIndex, selectionRect);
|
|
3147
3162
|
const isCellEditing = isCellSelected && selectedCell?.isEditing;
|
|
3148
3163
|
const diag = getCellDiagonalBorders2(
|
|
3149
3164
|
cell.style,
|
|
@@ -3172,7 +3187,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3172
3187
|
}
|
|
3173
3188
|
event.stopPropagation();
|
|
3174
3189
|
if (event.shiftKey && selectedCell) {
|
|
3175
|
-
const rect =
|
|
3190
|
+
const rect = chunkYF2BQIW3_js.computeSelectionRect(
|
|
3176
3191
|
selectedCell.rowIndex,
|
|
3177
3192
|
selectedCell.columnIndex,
|
|
3178
3193
|
rowIndex,
|
|
@@ -3182,7 +3197,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3182
3197
|
options?.onSelectCell?.({
|
|
3183
3198
|
rowIndex: selectedCell.rowIndex,
|
|
3184
3199
|
columnIndex: selectedCell.columnIndex,
|
|
3185
|
-
selectedCells:
|
|
3200
|
+
selectedCells: chunkYF2BQIW3_js.rectToCells(rect)
|
|
3186
3201
|
});
|
|
3187
3202
|
} else {
|
|
3188
3203
|
options?.onSelectCell?.({
|
|
@@ -3243,10 +3258,10 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3243
3258
|
if (tableEl2.tableData && tableEl2.tableData.rows.length > 0) {
|
|
3244
3259
|
return renderTableFromTableData(tableEl2, textStyle, options);
|
|
3245
3260
|
}
|
|
3246
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
3261
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkLTBTG2QB_js.translationsEn["pptx.table.title"] });
|
|
3247
3262
|
}
|
|
3248
3263
|
const selectedCell = options?.selectedCell || null;
|
|
3249
|
-
const isEditable = Boolean(options?.editable) &&
|
|
3264
|
+
const isEditable = Boolean(options?.editable) && chunkYF2BQIW3_js.canDrillDown(element);
|
|
3250
3265
|
const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
|
|
3251
3266
|
const tableEl = element;
|
|
3252
3267
|
const xmlSelectionRect = (() => {
|
|
@@ -3258,7 +3273,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3258
3273
|
}
|
|
3259
3274
|
const first = selectedCell.selectedCells[0];
|
|
3260
3275
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
3261
|
-
return
|
|
3276
|
+
return chunkYF2BQIW3_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
|
|
3262
3277
|
})();
|
|
3263
3278
|
const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
|
|
3264
3279
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3280,9 +3295,9 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3280
3295
|
{
|
|
3281
3296
|
className: "w-full h-full border-collapse table-fixed",
|
|
3282
3297
|
style: {
|
|
3283
|
-
fontFamily:
|
|
3298
|
+
fontFamily: chunkYF2BQIW3_js.DEFAULT_FONT_FAMILY,
|
|
3284
3299
|
// `a:tblPr@rtl` mirrors the column order for RTL decks.
|
|
3285
|
-
...
|
|
3300
|
+
...chunkYF2BQIW3_js.tableContainerCss(tableEl.tableData)
|
|
3286
3301
|
},
|
|
3287
3302
|
children: [
|
|
3288
3303
|
parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3339,7 +3354,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3339
3354
|
color: textStyle.color,
|
|
3340
3355
|
...bandStyle,
|
|
3341
3356
|
...xmlCellStyle,
|
|
3342
|
-
...tdCellOverride ?
|
|
3357
|
+
...tdCellOverride ? chunkYF2BQIW3_js.cellStyleToCss(tdCellOverride) : void 0,
|
|
3343
3358
|
...diag ? { position: "relative" } : void 0
|
|
3344
3359
|
};
|
|
3345
3360
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3349,7 +3364,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3349
3364
|
"border px-1 py-0.5 align-top",
|
|
3350
3365
|
isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
|
|
3351
3366
|
selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
|
|
3352
|
-
|
|
3367
|
+
chunkYF2BQIW3_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
|
|
3353
3368
|
),
|
|
3354
3369
|
colSpan,
|
|
3355
3370
|
rowSpan: rSpan,
|
|
@@ -3360,7 +3375,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3360
3375
|
}
|
|
3361
3376
|
event.stopPropagation();
|
|
3362
3377
|
if (event.shiftKey && selectedCell && tableEl.tableData) {
|
|
3363
|
-
const rect =
|
|
3378
|
+
const rect = chunkYF2BQIW3_js.computeSelectionRect(
|
|
3364
3379
|
selectedCell.rowIndex,
|
|
3365
3380
|
selectedCell.columnIndex,
|
|
3366
3381
|
rowIndex,
|
|
@@ -3370,7 +3385,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3370
3385
|
options?.onSelectCell?.({
|
|
3371
3386
|
rowIndex: selectedCell.rowIndex,
|
|
3372
3387
|
columnIndex: selectedCell.columnIndex,
|
|
3373
|
-
selectedCells:
|
|
3388
|
+
selectedCells: chunkYF2BQIW3_js.rectToCells(rect)
|
|
3374
3389
|
});
|
|
3375
3390
|
} else {
|
|
3376
3391
|
options?.onSelectCell?.({
|
|
@@ -3428,24 +3443,27 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3428
3443
|
}
|
|
3429
3444
|
);
|
|
3430
3445
|
}
|
|
3446
|
+
function renderGradientStops(stops) {
|
|
3447
|
+
return stops.map((stop, i) => /* @__PURE__ */ jsxRuntime.jsx("stop", { offset: stop.offset, stopColor: stop.color, stopOpacity: stop.opacity }, i));
|
|
3448
|
+
}
|
|
3431
3449
|
function partAttrs(part) {
|
|
3432
|
-
return part ?
|
|
3450
|
+
return part ? chunkYF2BQIW3_js.chartPartToAttrs(part) : void 0;
|
|
3433
3451
|
}
|
|
3434
3452
|
function resolveReactPalette(chartData) {
|
|
3435
3453
|
if (chartData.colorPalette && chartData.colorPalette.length > 0) {
|
|
3436
3454
|
return chartData.colorPalette;
|
|
3437
3455
|
}
|
|
3438
|
-
return [...
|
|
3456
|
+
return [...chunkYF2BQIW3_js.getChartStylePalette(chartData.style?.styleId)];
|
|
3439
3457
|
}
|
|
3440
3458
|
function buildReactChartViewModel(element) {
|
|
3441
3459
|
if (element.type !== "chart" || !element.chartData) {
|
|
3442
|
-
return
|
|
3460
|
+
return chunkYF2BQIW3_js.buildChartViewModel(element);
|
|
3443
3461
|
}
|
|
3444
3462
|
const palette = resolveReactPalette(element.chartData), themedElement = {
|
|
3445
3463
|
...element,
|
|
3446
3464
|
chartData: { ...element.chartData, colorPalette: palette }
|
|
3447
3465
|
};
|
|
3448
|
-
return
|
|
3466
|
+
return chunkYF2BQIW3_js.buildChartViewModel(themedElement);
|
|
3449
3467
|
}
|
|
3450
3468
|
function renderPrimitive(prim, key) {
|
|
3451
3469
|
switch (prim.kind) {
|
|
@@ -3597,7 +3615,7 @@ function renderText(t, key) {
|
|
|
3597
3615
|
);
|
|
3598
3616
|
}
|
|
3599
3617
|
function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
|
|
3600
|
-
const legendItems =
|
|
3618
|
+
const legendItems = chunkYF2BQIW3_js.computeChartLegendLayout(vm);
|
|
3601
3619
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3602
3620
|
"svg",
|
|
3603
3621
|
{
|
|
@@ -3605,29 +3623,52 @@ function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
|
|
|
3605
3623
|
viewBox: `0 0 ${vm.svgWidth} ${vm.svgHeight}`,
|
|
3606
3624
|
preserveAspectRatio,
|
|
3607
3625
|
children: [
|
|
3608
|
-
vm.defs && vm.defs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("defs", { children: vm.defs.map(
|
|
3609
|
-
"
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
|
|
3630
|
-
|
|
3626
|
+
vm.defs && vm.defs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("defs", { children: vm.defs.map(
|
|
3627
|
+
(def, i) => def.kind === "linearGradient" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3628
|
+
"linearGradient",
|
|
3629
|
+
{
|
|
3630
|
+
id: def.id,
|
|
3631
|
+
x1: def.x1,
|
|
3632
|
+
y1: def.y1,
|
|
3633
|
+
x2: def.x2,
|
|
3634
|
+
y2: def.y2,
|
|
3635
|
+
children: renderGradientStops(def.stops)
|
|
3636
|
+
},
|
|
3637
|
+
`${elementId}-def-${i}`
|
|
3638
|
+
) : def.kind === "radialGradient" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3639
|
+
"radialGradient",
|
|
3640
|
+
{
|
|
3641
|
+
id: def.id,
|
|
3642
|
+
cx: def.cx,
|
|
3643
|
+
cy: def.cy,
|
|
3644
|
+
r: def.r,
|
|
3645
|
+
children: renderGradientStops(def.stops)
|
|
3646
|
+
},
|
|
3647
|
+
`${elementId}-def-${i}`
|
|
3648
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
3649
|
+
"pattern",
|
|
3650
|
+
{
|
|
3651
|
+
id: def.id,
|
|
3652
|
+
patternUnits: def.patternUnits,
|
|
3653
|
+
x: def.x,
|
|
3654
|
+
y: def.y,
|
|
3655
|
+
width: def.width,
|
|
3656
|
+
height: def.height,
|
|
3657
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3658
|
+
"image",
|
|
3659
|
+
{
|
|
3660
|
+
href: def.href,
|
|
3661
|
+
x: 0,
|
|
3662
|
+
y: 0,
|
|
3663
|
+
width: def.width,
|
|
3664
|
+
height: def.height,
|
|
3665
|
+
preserveAspectRatio: def.preserveAspectRatio
|
|
3666
|
+
}
|
|
3667
|
+
)
|
|
3668
|
+
},
|
|
3669
|
+
`${elementId}-def-${i}`
|
|
3670
|
+
)
|
|
3671
|
+
) }),
|
|
3631
3672
|
vm.areaFill && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3632
3673
|
"rect",
|
|
3633
3674
|
{
|
|
@@ -3737,17 +3778,17 @@ function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
|
|
|
3737
3778
|
}
|
|
3738
3779
|
function renderChartElement(element) {
|
|
3739
3780
|
if (element.type !== "chart") {
|
|
3740
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
3781
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkLTBTG2QB_js.translationsEn["pptx.chart.heading"] });
|
|
3741
3782
|
}
|
|
3742
3783
|
const chartData = element.chartData;
|
|
3743
3784
|
if (!chartData || chartData.series.length === 0) {
|
|
3744
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
3785
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkLTBTG2QB_js.translationsEn["pptx.chart.heading"] });
|
|
3745
3786
|
}
|
|
3746
|
-
const kind =
|
|
3787
|
+
const kind = chunkYF2BQIW3_js.resolveChartKind(chartData.chartType ?? "bar");
|
|
3747
3788
|
return renderChartViewModel(
|
|
3748
3789
|
element.id,
|
|
3749
3790
|
buildReactChartViewModel(element),
|
|
3750
|
-
|
|
3791
|
+
chunkYF2BQIW3_js.chartPreserveAspectRatio(kind)
|
|
3751
3792
|
);
|
|
3752
3793
|
}
|
|
3753
3794
|
|
|
@@ -3767,14 +3808,14 @@ function buildNotesPdf(pages) {
|
|
|
3767
3808
|
notes: page.notes,
|
|
3768
3809
|
slideNumber: page.slideNumber
|
|
3769
3810
|
}));
|
|
3770
|
-
const bytes =
|
|
3811
|
+
const bytes = chunkYF2BQIW3_js.buildNotesPdfBytes(images, meta);
|
|
3771
3812
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
3772
3813
|
return URL.createObjectURL(blob);
|
|
3773
3814
|
}
|
|
3774
3815
|
|
|
3775
3816
|
// src/viewer/utils/pdf-builder-slides.ts
|
|
3776
3817
|
function buildPdfFromTiledImageData(pages) {
|
|
3777
|
-
const bytes =
|
|
3818
|
+
const bytes = chunkYF2BQIW3_js.buildTiledSlidesPdfBytes(pages);
|
|
3778
3819
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
3779
3820
|
return URL.createObjectURL(blob);
|
|
3780
3821
|
}
|
|
@@ -3783,7 +3824,7 @@ function buildPdfFromTiledImageData(pages) {
|
|
|
3783
3824
|
var activePreview = null;
|
|
3784
3825
|
function startPreviewAnimation(elementId, preset, options) {
|
|
3785
3826
|
stopPreviewAnimation();
|
|
3786
|
-
const descriptor =
|
|
3827
|
+
const descriptor = chunkYF2BQIW3_js.buildPreviewAnimation(preset, options);
|
|
3787
3828
|
if (!descriptor) {
|
|
3788
3829
|
return;
|
|
3789
3830
|
}
|
|
@@ -3796,7 +3837,7 @@ function startMotionPathPreview(elementId, path, options) {
|
|
|
3796
3837
|
return;
|
|
3797
3838
|
}
|
|
3798
3839
|
const stage = domEl.offsetParent;
|
|
3799
|
-
const descriptor =
|
|
3840
|
+
const descriptor = chunkYF2BQIW3_js.buildMotionPathPreview({
|
|
3800
3841
|
path,
|
|
3801
3842
|
slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
|
|
3802
3843
|
slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,
|