pptx-react-viewer 4.4.0 → 4.6.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 +81 -0
- package/README.md +34 -33
- package/dist/{AiChatPanel-UFMSTNCB.js → AiChatPanel-3C7GM6ZF.js} +28 -28
- package/dist/AiChatPanel-3C7GM6ZF.js.br +0 -0
- package/dist/AiChatPanel-3C7GM6ZF.js.gz +0 -0
- package/dist/{AiChatPanel-QJHUDIWT.mjs → AiChatPanel-L7DBCWE3.mjs} +4 -4
- package/dist/AiChatPanel-L7DBCWE3.mjs.br +0 -0
- package/dist/AiChatPanel-L7DBCWE3.mjs.gz +0 -0
- package/dist/{Model3DScene-3GOC5HUS.mjs → Model3DScene-IJ7YYTYU.mjs} +1 -1
- package/dist/Model3DScene-IJ7YYTYU.mjs.br +0 -0
- package/dist/Model3DScene-IJ7YYTYU.mjs.gz +0 -0
- package/dist/{Model3DScene-KXNJBAQD.js → Model3DScene-USKNPWWH.js} +2 -2
- package/dist/{Model3DScene-KXNJBAQD.js.br → Model3DScene-USKNPWWH.js.br} +0 -0
- package/dist/Model3DScene-USKNPWWH.js.gz +0 -0
- package/dist/{chunk-I4D6JQOI.js → chunk-3JUZOKFI.js} +13 -0
- package/dist/chunk-3JUZOKFI.js.br +0 -0
- package/dist/chunk-3JUZOKFI.js.gz +0 -0
- package/dist/{chunk-CSY422LU.js → chunk-5V5SMT5A.js} +5 -5
- package/dist/chunk-5V5SMT5A.js.br +0 -0
- package/dist/chunk-5V5SMT5A.js.gz +0 -0
- package/dist/{chunk-AI6K5EAE.js → chunk-DFSWCVRW.js} +1677 -1207
- package/dist/chunk-DFSWCVRW.js.br +0 -0
- package/dist/chunk-DFSWCVRW.js.gz +0 -0
- package/dist/{chunk-7WWINBGF.js → chunk-FZSYLXJT.js} +3293 -1568
- package/dist/chunk-FZSYLXJT.js.br +0 -0
- package/dist/chunk-FZSYLXJT.js.gz +0 -0
- package/dist/{chunk-YJKR7Z3X.js → chunk-IBHIXBC5.js} +885 -845
- package/dist/chunk-IBHIXBC5.js.br +0 -0
- package/dist/chunk-IBHIXBC5.js.gz +0 -0
- package/dist/{chunk-D3TZOCQP.mjs → chunk-ICEZL4TM.mjs} +3260 -1568
- package/dist/chunk-ICEZL4TM.mjs.br +0 -0
- package/dist/chunk-ICEZL4TM.mjs.gz +0 -0
- package/dist/{chunk-WCHKDZP6.mjs → chunk-INX3E37P.mjs} +73 -33
- package/dist/chunk-INX3E37P.mjs.br +0 -0
- package/dist/chunk-INX3E37P.mjs.gz +0 -0
- package/dist/{chunk-WNFHFFYE.mjs → chunk-K6QHGABT.mjs} +17 -7
- package/dist/chunk-K6QHGABT.mjs.br +0 -0
- package/dist/chunk-K6QHGABT.mjs.gz +0 -0
- package/dist/{chunk-JQXN6PO7.mjs → chunk-OOO4JL2N.mjs} +13 -0
- package/dist/chunk-OOO4JL2N.mjs.br +0 -0
- package/dist/chunk-OOO4JL2N.mjs.gz +0 -0
- package/dist/{chunk-XMKLY2SE.mjs → chunk-VCAQSSGD.mjs} +1 -1
- package/dist/chunk-VCAQSSGD.mjs.br +0 -0
- package/dist/chunk-VCAQSSGD.mjs.gz +0 -0
- package/dist/{chunk-OWTHF5N4.js → chunk-Y4QUVWZC.js} +201 -191
- package/dist/chunk-Y4QUVWZC.js.br +0 -0
- package/dist/chunk-Y4QUVWZC.js.gz +0 -0
- package/dist/{chunk-LUHUYBGW.mjs → chunk-ZAQFTO4P.mjs} +623 -153
- package/dist/chunk-ZAQFTO4P.mjs.br +0 -0
- package/dist/chunk-ZAQFTO4P.mjs.gz +0 -0
- package/dist/i18n/de.cjs +11 -0
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +11 -0
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +11 -0
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +11 -0
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +11 -0
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +11 -0
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +11 -0
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +11 -0
- 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 +311 -4
- package/dist/index.js +105 -49
- 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 +328 -3
- 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 +416 -2
- 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 +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-QJHUDIWT.mjs.br +0 -0
- package/dist/AiChatPanel-QJHUDIWT.mjs.gz +0 -0
- package/dist/AiChatPanel-UFMSTNCB.js.br +0 -0
- package/dist/AiChatPanel-UFMSTNCB.js.gz +0 -0
- package/dist/Model3DScene-3GOC5HUS.mjs.br +0 -0
- package/dist/Model3DScene-3GOC5HUS.mjs.gz +0 -0
- package/dist/Model3DScene-KXNJBAQD.js.gz +0 -0
- package/dist/chunk-7WWINBGF.js.br +0 -0
- package/dist/chunk-7WWINBGF.js.gz +0 -0
- package/dist/chunk-AI6K5EAE.js.br +0 -0
- package/dist/chunk-AI6K5EAE.js.gz +0 -0
- package/dist/chunk-CSY422LU.js.br +0 -0
- package/dist/chunk-CSY422LU.js.gz +0 -0
- package/dist/chunk-D3TZOCQP.mjs.br +0 -0
- package/dist/chunk-D3TZOCQP.mjs.gz +0 -0
- package/dist/chunk-I4D6JQOI.js.br +0 -0
- package/dist/chunk-I4D6JQOI.js.gz +0 -0
- package/dist/chunk-JQXN6PO7.mjs.br +0 -0
- package/dist/chunk-JQXN6PO7.mjs.gz +0 -0
- package/dist/chunk-LUHUYBGW.mjs.br +0 -0
- package/dist/chunk-LUHUYBGW.mjs.gz +0 -0
- package/dist/chunk-OWTHF5N4.js.br +0 -0
- package/dist/chunk-OWTHF5N4.js.gz +0 -0
- package/dist/chunk-WCHKDZP6.mjs.br +0 -0
- package/dist/chunk-WCHKDZP6.mjs.gz +0 -0
- package/dist/chunk-WNFHFFYE.mjs.br +0 -0
- package/dist/chunk-WNFHFFYE.mjs.gz +0 -0
- package/dist/chunk-XMKLY2SE.mjs.br +0 -0
- package/dist/chunk-XMKLY2SE.mjs.gz +0 -0
- package/dist/chunk-YJKR7Z3X.js.br +0 -0
- package/dist/chunk-YJKR7Z3X.js.gz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkFZSYLXJT_js = require('./chunk-FZSYLXJT.js');
|
|
4
|
+
var chunk3JUZOKFI_js = require('./chunk-3JUZOKFI.js');
|
|
5
5
|
var clsx = require('clsx');
|
|
6
6
|
var tailwindMerge = require('tailwind-merge');
|
|
7
7
|
var React7 = require('react');
|
|
@@ -15,7 +15,7 @@ var React7__default = /*#__PURE__*/_interopDefault(React7);
|
|
|
15
15
|
|
|
16
16
|
// src/viewer/utils/animation-effects.ts
|
|
17
17
|
function getAnimationInitialStyle2(preset, nativeAnimation) {
|
|
18
|
-
return
|
|
18
|
+
return chunkFZSYLXJT_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 chunkFZSYLXJT_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 = chunkFZSYLXJT_js.VIEWER_SHORTCUT_REFERENCE;
|
|
65
65
|
|
|
66
66
|
// src/viewer/constants/transitions-animations.ts
|
|
67
67
|
var ANIMATION_PRESET_OPTIONS = [
|
|
@@ -89,7 +89,7 @@ var GLYPH_COMPONENTS = {
|
|
|
89
89
|
plus: lu.LuPlus,
|
|
90
90
|
triangle: lu.LuTriangle
|
|
91
91
|
};
|
|
92
|
-
var SHAPE_PRESETS =
|
|
92
|
+
var SHAPE_PRESETS = chunkFZSYLXJT_js.SHAPE_PRESET_DEFS.map(
|
|
93
93
|
(def) => ({
|
|
94
94
|
type: def.type,
|
|
95
95
|
label: def.label,
|
|
@@ -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 = chunkFZSYLXJT_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 (!chunkFZSYLXJT_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 (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
|
|
236
236
|
return void 0;
|
|
237
237
|
}
|
|
238
|
-
const geometry =
|
|
238
|
+
const geometry = chunkFZSYLXJT_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 = chunkFZSYLXJT_js.getImageFitStyle(element);
|
|
246
|
+
const counterTransform = chunkFZSYLXJT_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 = chunkFZSYLXJT_js.hasShapeProperties(element) ? chunkFZSYLXJT_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 (!chunkFZSYLXJT_js.isImageLikeElement(element)) {
|
|
279
279
|
return void 0;
|
|
280
280
|
}
|
|
281
|
-
return
|
|
281
|
+
return chunkFZSYLXJT_js.getCropShapeClipPath(element.cropShape, element.width, element.height);
|
|
282
282
|
}
|
|
283
283
|
function getImageTilingStyle2(element, nativeSize) {
|
|
284
|
-
return
|
|
284
|
+
return chunkFZSYLXJT_js.getImageTilingStyle(element, nativeSize);
|
|
285
285
|
}
|
|
286
286
|
|
|
287
287
|
// src/viewer/utils/geometry-image.ts
|
|
@@ -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" } : chunkFZSYLXJT_js.getImageFitStyle(element),
|
|
417
417
|
controls: showTransport,
|
|
418
418
|
preload: "metadata",
|
|
419
419
|
playsInline: true,
|
|
@@ -470,7 +470,7 @@ function PresentationMediaController({
|
|
|
470
470
|
const [isMediaPlaying, setIsMediaPlaying] = React7.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 } = chunkFZSYLXJT_js.mediaPlaybackAttributes({
|
|
474
474
|
loop: element.loop,
|
|
475
475
|
volume: element.volume,
|
|
476
476
|
playbackSpeed: element.playbackSpeed
|
|
@@ -518,7 +518,7 @@ function PresentationMediaController({
|
|
|
518
518
|
if (!el || !isPresentationMode) {
|
|
519
519
|
return;
|
|
520
520
|
}
|
|
521
|
-
return
|
|
521
|
+
return chunkFZSYLXJT_js.scheduleMediaTrimAndFade(el, {
|
|
522
522
|
trimStartMs: element.trimStartMs,
|
|
523
523
|
trimEndMs: element.trimEndMs,
|
|
524
524
|
fadeInDuration: element.fadeInDuration,
|
|
@@ -539,7 +539,7 @@ function PresentationMediaController({
|
|
|
539
539
|
}
|
|
540
540
|
if (element.playAcrossSlides && element.mediaType === "audio") {
|
|
541
541
|
const dataUrl = element.mediaData ?? resolvedDataUrl;
|
|
542
|
-
if (
|
|
542
|
+
if (chunkFZSYLXJT_js.registerCrossSlideAudio(element, dataUrl)) {
|
|
543
543
|
return;
|
|
544
544
|
}
|
|
545
545
|
}
|
|
@@ -571,7 +571,7 @@ function PresentationMediaController({
|
|
|
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
|
+
chunkFZSYLXJT_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 : chunk3JUZOKFI_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
|
+
...{ [chunkFZSYLXJT_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
|
|
628
628
|
children: [
|
|
629
629
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
630
630
|
FallbackIcon,
|
|
631
631
|
{
|
|
632
|
-
paths:
|
|
632
|
+
paths: chunkFZSYLXJT_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(chunkFZSYLXJT_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
|
+
...{ [chunkFZSYLXJT_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
|
|
655
655
|
children: [
|
|
656
656
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
657
657
|
FallbackIcon,
|
|
658
658
|
{
|
|
659
|
-
paths:
|
|
659
|
+
paths: chunkFZSYLXJT_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(chunkFZSYLXJT_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 = chunkFZSYLXJT_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 ? chunk3JUZOKFI_js.translationsEn["pptx.media.posterAlt"] : chunk3JUZOKFI_js.translationsEn["pptx.media.videoPosterAlt"],
|
|
685
685
|
className: `w-full h-full${visual.dimPoster ? " opacity-50" : ""}`,
|
|
686
|
-
style:
|
|
686
|
+
style: chunkFZSYLXJT_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: chunk3JUZOKFI_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 = chunkFZSYLXJT_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 = chunkFZSYLXJT_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: chunk3JUZOKFI_js.translationsEn["pptx.media.onlineVideoTitle"],
|
|
724
724
|
className: "w-full h-full border-0 pointer-events-auto",
|
|
725
|
-
allow:
|
|
725
|
+
allow: chunkFZSYLXJT_js.ONLINE_VIDEO_IFRAME_ALLOW,
|
|
726
726
|
allowFullScreen: true,
|
|
727
|
-
sandbox:
|
|
727
|
+
sandbox: chunkFZSYLXJT_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: chunk3JUZOKFI_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 chunkFZSYLXJT_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 (!chunkFZSYLXJT_js.hasTextProperties(element)) {
|
|
807
807
|
return {};
|
|
808
808
|
}
|
|
809
|
-
const writingMode =
|
|
810
|
-
const textOrientation =
|
|
811
|
-
const verticalDirection =
|
|
809
|
+
const writingMode = chunkFZSYLXJT_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
810
|
+
const textOrientation = chunkFZSYLXJT_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
811
|
+
const verticalDirection = chunkFZSYLXJT_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 = chunkFZSYLXJT_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 = chunkFZSYLXJT_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 chunkFZSYLXJT_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}${chunkFZSYLXJT_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 = chunkFZSYLXJT_js.buildTextBuildSpec(
|
|
1043
1043
|
elementId,
|
|
1044
1044
|
paraIndex,
|
|
1045
1045
|
paraRuns.map((run) => ({ text: run.text, style: run })),
|
|
@@ -1057,7 +1057,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1057
1057
|
"span",
|
|
1058
1058
|
{
|
|
1059
1059
|
"data-anim-id": span.animId,
|
|
1060
|
-
style:
|
|
1060
|
+
style: chunkFZSYLXJT_js.textBuildSpanStyle(span),
|
|
1061
1061
|
children: content
|
|
1062
1062
|
},
|
|
1063
1063
|
span.animId
|
|
@@ -1068,13 +1068,13 @@ 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 = chunkFZSYLXJT_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 ? chunkFZSYLXJT_js.stripUnderlineDecoration(metric.nestedStyle) : void 0
|
|
1078
1078
|
} : void 0;
|
|
1079
1079
|
return pieces.map((piece, i) => {
|
|
1080
1080
|
const key = `${keyPrefix}-u${i}`;
|
|
@@ -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] = chunkFZSYLXJT_js.buildRunTabLines(
|
|
1111
1111
|
line,
|
|
1112
1112
|
ctx,
|
|
1113
1113
|
nestedStyle,
|
|
@@ -1126,7 +1126,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1126
1126
|
if (!needsScriptFonts || !text) {
|
|
1127
1127
|
return text;
|
|
1128
1128
|
}
|
|
1129
|
-
const pieces =
|
|
1129
|
+
const pieces = chunkFZSYLXJT_js.splitRunByScriptFont(
|
|
1130
1130
|
text,
|
|
1131
1131
|
scriptFonts,
|
|
1132
1132
|
baseFontFamily,
|
|
@@ -1143,7 +1143,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
|
|
|
1143
1143
|
if (!metric || !text) {
|
|
1144
1144
|
return inner(text, keyPrefix);
|
|
1145
1145
|
}
|
|
1146
|
-
const pieces =
|
|
1146
|
+
const pieces = chunkFZSYLXJT_js.splitRunForMetrics(text, metric.font);
|
|
1147
1147
|
if (pieces.length <= 1) {
|
|
1148
1148
|
return inner(text, keyPrefix);
|
|
1149
1149
|
}
|
|
@@ -1152,7 +1152,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
|
|
|
1152
1152
|
{
|
|
1153
1153
|
style: {
|
|
1154
1154
|
...metric.nestedStyle,
|
|
1155
|
-
letterSpacing:
|
|
1155
|
+
letterSpacing: chunkFZSYLXJT_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
|
|
1156
1156
|
},
|
|
1157
1157
|
children: inner(piece.text, `${keyPrefix}-w${i}`)
|
|
1158
1158
|
},
|
|
@@ -1227,9 +1227,9 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
|
|
|
1227
1227
|
) : /* @__PURE__ */ jsxRuntime.jsx(React7__default.default.Fragment, { children: renderLeaf(chunk.text, chunkKey) }, chunkKey);
|
|
1228
1228
|
});
|
|
1229
1229
|
}
|
|
1230
|
-
function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
|
|
1231
|
-
const mathml =
|
|
1232
|
-
const safeMathml = mathml ?
|
|
1230
|
+
function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber, fontSize) {
|
|
1231
|
+
const mathml = chunkFZSYLXJT_js.convertOmmlToMathMl(equationXml);
|
|
1232
|
+
const safeMathml = mathml ? chunkFZSYLXJT_js.sanitizeMathMl(mathml) : "";
|
|
1233
1233
|
const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1234
1234
|
"span",
|
|
1235
1235
|
{
|
|
@@ -1239,7 +1239,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
|
|
|
1239
1239
|
},
|
|
1240
1240
|
dangerouslySetInnerHTML: { __html: safeMathml }
|
|
1241
1241
|
}
|
|
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:
|
|
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: chunk3JUZOKFI_js.translationsEn["pptx.textSegment.equationFallback"] });
|
|
1243
1243
|
if (equationNumber) {
|
|
1244
1244
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1245
1245
|
"span",
|
|
@@ -1248,7 +1248,8 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
|
|
|
1248
1248
|
display: "flex",
|
|
1249
1249
|
justifyContent: "space-between",
|
|
1250
1250
|
alignItems: "center",
|
|
1251
|
-
width: "100%"
|
|
1251
|
+
width: "100%",
|
|
1252
|
+
fontSize
|
|
1252
1253
|
},
|
|
1253
1254
|
children: [
|
|
1254
1255
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { style: { visibility: "hidden", whiteSpace: "nowrap" }, children: [
|
|
@@ -1276,7 +1277,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
|
|
|
1276
1277
|
`${elementId}-seg-${segmentIndex}`
|
|
1277
1278
|
);
|
|
1278
1279
|
}
|
|
1279
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
|
|
1280
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { style: fontSize ? { fontSize } : void 0, children: equationContent }, `${elementId}-seg-${segmentIndex}`);
|
|
1280
1281
|
}
|
|
1281
1282
|
function renderHyperlink(run, spanNode, key, ctx) {
|
|
1282
1283
|
const url = run.hyperlink?.url;
|
|
@@ -1357,12 +1358,18 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1357
1358
|
const segmentIndex = run.segmentIndex ?? 0;
|
|
1358
1359
|
const key = `${element.id}-seg-${segmentIndex}${keySuffix}`;
|
|
1359
1360
|
if (run.equation) {
|
|
1360
|
-
return renderEquationSegment(
|
|
1361
|
+
return renderEquationSegment(
|
|
1362
|
+
element.id,
|
|
1363
|
+
segmentIndex,
|
|
1364
|
+
run.equation.xml,
|
|
1365
|
+
run.equation.number,
|
|
1366
|
+
typeof run.style.fontSize === "string" ? run.style.fontSize : void 0
|
|
1367
|
+
);
|
|
1361
1368
|
}
|
|
1362
1369
|
const segmentStyle = segment?.style ?? {};
|
|
1363
1370
|
const textValue = run.text;
|
|
1364
1371
|
const lines = textValue.split("\n");
|
|
1365
|
-
const resolvedSegmentColor =
|
|
1372
|
+
const resolvedSegmentColor = chunkFZSYLXJT_js.normalizeHexColor(
|
|
1366
1373
|
segmentStyle.color || element.textStyle?.color,
|
|
1367
1374
|
run.hyperlink ? HYPERLINK_COLOR : fallbackColor
|
|
1368
1375
|
);
|
|
@@ -1370,19 +1377,22 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1370
1377
|
const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
|
|
1371
1378
|
const baselineFontScale = baselineFraction !== 0 ? BASELINE_FONT_SCALE : 1;
|
|
1372
1379
|
const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
|
|
1373
|
-
const baseFontSize =
|
|
1380
|
+
const baseFontSize = chunkFZSYLXJT_js.scaleFontSizeForAutoFit(
|
|
1381
|
+
rawFontSize,
|
|
1382
|
+
chunkFZSYLXJT_js.resolveAutoFitFontScale(element.textStyle)
|
|
1383
|
+
);
|
|
1374
1384
|
const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
|
|
1375
|
-
const fontKerning =
|
|
1385
|
+
const fontKerning = chunkFZSYLXJT_js.resolveFontKerning(segmentStyle.kerning, baseFontSize);
|
|
1376
1386
|
const scriptFallbackWins = Boolean(
|
|
1377
1387
|
segmentStyle.scriptFallbackFont && segmentStyle.fontFamilyIsCascadeDefault
|
|
1378
1388
|
);
|
|
1379
1389
|
const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
|
|
1380
|
-
const baseFontFamily = scriptFallbackWins ?
|
|
1390
|
+
const baseFontFamily = scriptFallbackWins ? chunkFZSYLXJT_js.getSubstituteFontFamily(segmentStyle.scriptFallbackFont) : rawFontFamily ? chunkFZSYLXJT_js.getSubstituteFontFamily(
|
|
1381
1391
|
rawFontFamily,
|
|
1382
|
-
|
|
1392
|
+
chunkFZSYLXJT_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
|
|
1383
1393
|
) : DEFAULT_FONT_FAMILY2;
|
|
1384
|
-
const scriptFonts =
|
|
1385
|
-
const needsScriptFonts =
|
|
1394
|
+
const scriptFonts = chunkFZSYLXJT_js.resolveScriptFontSet(segmentStyle, element.textStyle, baseFontFamily);
|
|
1395
|
+
const needsScriptFonts = chunkFZSYLXJT_js.hasDistinctScriptFonts(scriptFonts);
|
|
1386
1396
|
const authoredLetterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? segmentStyle.characterSpacing / 100 * (96 / 72) : 0;
|
|
1387
1397
|
const metricFont = {
|
|
1388
1398
|
fontFamily: baseFontFamily,
|
|
@@ -1390,7 +1400,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1390
1400
|
bold: Boolean(segmentStyle.bold),
|
|
1391
1401
|
italic: Boolean(segmentStyle.italic)
|
|
1392
1402
|
};
|
|
1393
|
-
const nestedStyle =
|
|
1403
|
+
const nestedStyle = chunkFZSYLXJT_js.nestedTextDecorationStyle(run.style);
|
|
1394
1404
|
const metricContext = { font: metricFont, authoredPx: authoredLetterSpacing, nestedStyle };
|
|
1395
1405
|
const spanStyle = { ...run.style };
|
|
1396
1406
|
spanStyle.color = resolvedSegmentColor;
|
|
@@ -1398,11 +1408,11 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1398
1408
|
spanStyle.fontFamily = baseFontFamily;
|
|
1399
1409
|
spanStyle.verticalAlign = baselineShift;
|
|
1400
1410
|
spanStyle.fontKerning = fontKerning;
|
|
1401
|
-
spanStyle.letterSpacing =
|
|
1411
|
+
spanStyle.letterSpacing = chunkFZSYLXJT_js.pieceLetterSpacing(
|
|
1402
1412
|
authoredLetterSpacing,
|
|
1403
|
-
|
|
1413
|
+
chunkFZSYLXJT_js.resolveMetricTrackingPx(textValue, metricFont)
|
|
1404
1414
|
);
|
|
1405
|
-
const hollow =
|
|
1415
|
+
const hollow = chunkFZSYLXJT_js.hollowTextFillStyle(segmentStyle, {
|
|
1406
1416
|
color: resolvedSegmentColor,
|
|
1407
1417
|
textStroke: typeof spanStyle.WebkitTextStroke === "string" ? spanStyle.WebkitTextStroke : void 0
|
|
1408
1418
|
});
|
|
@@ -1417,7 +1427,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1417
1427
|
const isUnderlineWords = Boolean(segmentStyle.underline) && segmentStyle.underlineStyle === "words";
|
|
1418
1428
|
const wordDecoration = isUnderlineWords ? nestedStyle ?? run.underlineWordPieces?.find((piece) => piece.style)?.style : void 0;
|
|
1419
1429
|
if (isUnderlineWords) {
|
|
1420
|
-
const stripped =
|
|
1430
|
+
const stripped = chunkFZSYLXJT_js.stripUnderlineDecoration(spanStyle);
|
|
1421
1431
|
spanStyle.textDecoration = stripped.textDecoration;
|
|
1422
1432
|
delete spanStyle.textDecorationStyle;
|
|
1423
1433
|
delete spanStyle.textDecorationThickness;
|
|
@@ -1433,7 +1443,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1433
1443
|
scriptFonts,
|
|
1434
1444
|
baseFontFamily,
|
|
1435
1445
|
findHighlights,
|
|
1436
|
-
|
|
1446
|
+
chunkFZSYLXJT_js.buildTabContext(
|
|
1437
1447
|
element.textStyle?.tabStops,
|
|
1438
1448
|
element.textStyle?.defaultTabSize,
|
|
1439
1449
|
baseFontSize,
|
|
@@ -1465,14 +1475,14 @@ function renderSeededListRun(seed, runs, segments, context) {
|
|
|
1465
1475
|
const segment = sourceRun ? segments[seed.segmentIndex] : { text: seed.text, style: seed.style };
|
|
1466
1476
|
const resolvedSegment = {
|
|
1467
1477
|
...segment,
|
|
1468
|
-
style:
|
|
1478
|
+
style: chunkFZSYLXJT_js.withInlineListDecorationDefaults(segment.style, context.element.textStyle)
|
|
1469
1479
|
};
|
|
1470
|
-
const decorationCss =
|
|
1480
|
+
const decorationCss = chunkFZSYLXJT_js.segmentStyleToCss(
|
|
1471
1481
|
resolvedSegment,
|
|
1472
|
-
|
|
1482
|
+
chunkFZSYLXJT_js.resolveAutoFitFontScale(context.element.textStyle)
|
|
1473
1483
|
);
|
|
1474
|
-
|
|
1475
|
-
const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...
|
|
1484
|
+
chunkFZSYLXJT_js.applyUnderlineVariant(decorationCss, resolvedSegment);
|
|
1485
|
+
const run = sourceRun ? { ...sourceRun, style: { ...sourceRun.style, ...chunkFZSYLXJT_js.nestedTextDecorationStyle(decorationCss) } } : {
|
|
1476
1486
|
text: seed.text,
|
|
1477
1487
|
style: decorationCss,
|
|
1478
1488
|
segmentIndex: seed.segmentIndex
|
|
@@ -1487,7 +1497,7 @@ function renderSeededListRun(seed, runs, segments, context) {
|
|
|
1487
1497
|
});
|
|
1488
1498
|
}
|
|
1489
1499
|
function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick, placeholderPrompt, inlineListSeed) {
|
|
1490
|
-
if (!
|
|
1500
|
+
if (!chunkFZSYLXJT_js.hasTextProperties(element)) {
|
|
1491
1501
|
return emptyFallback || null;
|
|
1492
1502
|
}
|
|
1493
1503
|
const segments = segmentOverrides ?? element.textSegments;
|
|
@@ -1497,7 +1507,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
1497
1507
|
}
|
|
1498
1508
|
return element.text || emptyFallback || "";
|
|
1499
1509
|
}
|
|
1500
|
-
const paragraphs =
|
|
1510
|
+
const paragraphs = chunkFZSYLXJT_js.buildParagraphs(
|
|
1501
1511
|
element,
|
|
1502
1512
|
fieldContext,
|
|
1503
1513
|
segmentOverrides,
|
|
@@ -1643,13 +1653,13 @@ function renderBulletMarker(para, paraIndex, elementId) {
|
|
|
1643
1653
|
);
|
|
1644
1654
|
}
|
|
1645
1655
|
function getDuotoneColors(element) {
|
|
1646
|
-
if (!
|
|
1656
|
+
if (!chunkFZSYLXJT_js.isImageLikeElement(element)) {
|
|
1647
1657
|
return void 0;
|
|
1648
1658
|
}
|
|
1649
1659
|
return element.imageEffects?.duotone;
|
|
1650
1660
|
}
|
|
1651
1661
|
function buildLineShadowCss(element) {
|
|
1652
|
-
if (!
|
|
1662
|
+
if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
|
|
1653
1663
|
return void 0;
|
|
1654
1664
|
}
|
|
1655
1665
|
const ss = element.shapeStyle;
|
|
@@ -1660,13 +1670,13 @@ function buildLineShadowCss(element) {
|
|
|
1660
1670
|
const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
|
|
1661
1671
|
const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
|
|
1662
1672
|
const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
|
|
1663
|
-
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${
|
|
1664
|
-
|
|
1673
|
+
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkFZSYLXJT_js.colorWithOpacity(
|
|
1674
|
+
chunkFZSYLXJT_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
|
|
1665
1675
|
opacity
|
|
1666
1676
|
)}`;
|
|
1667
1677
|
}
|
|
1668
1678
|
function buildLineGlowFilter(element) {
|
|
1669
|
-
if (!
|
|
1679
|
+
if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
|
|
1670
1680
|
return void 0;
|
|
1671
1681
|
}
|
|
1672
1682
|
const ss = element.shapeStyle;
|
|
@@ -1675,22 +1685,22 @@ function buildLineGlowFilter(element) {
|
|
|
1675
1685
|
}
|
|
1676
1686
|
const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
|
|
1677
1687
|
const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
|
|
1678
|
-
const glowCol =
|
|
1688
|
+
const glowCol = chunkFZSYLXJT_js.colorWithOpacity(chunkFZSYLXJT_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
|
|
1679
1689
|
return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
|
|
1680
1690
|
}
|
|
1681
1691
|
function getDagDuotoneFilterId(elementId) {
|
|
1682
1692
|
return `dag-duotone-${elementId}`;
|
|
1683
1693
|
}
|
|
1684
1694
|
function hasDagDuotoneEffect(element) {
|
|
1685
|
-
if (!
|
|
1695
|
+
if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
|
|
1686
1696
|
return false;
|
|
1687
1697
|
}
|
|
1688
1698
|
return Boolean(element.shapeStyle?.dagDuotone);
|
|
1689
1699
|
}
|
|
1690
1700
|
function renderDagDuotoneSvgFilter(elementId, color1, color2) {
|
|
1691
1701
|
const filterId = getDagDuotoneFilterId(elementId);
|
|
1692
|
-
const c1 =
|
|
1693
|
-
const c2 =
|
|
1702
|
+
const c1 = chunkFZSYLXJT_js.hexToRgbUnit(color1);
|
|
1703
|
+
const c2 = chunkFZSYLXJT_js.hexToRgbUnit(color2);
|
|
1694
1704
|
const grayscaleMatrix = [
|
|
1695
1705
|
0.2126,
|
|
1696
1706
|
0.7152,
|
|
@@ -1734,7 +1744,7 @@ function renderDagDuotoneSvgFilter(elementId, color1, color2) {
|
|
|
1734
1744
|
|
|
1735
1745
|
// src/viewer/utils/shape-visual-3d.ts
|
|
1736
1746
|
function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
|
|
1737
|
-
return
|
|
1747
|
+
return chunkFZSYLXJT_js.build3DExtrusionData(
|
|
1738
1748
|
shape3d,
|
|
1739
1749
|
scene3d,
|
|
1740
1750
|
fillColor,
|
|
@@ -1743,7 +1753,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
|
|
|
1743
1753
|
);
|
|
1744
1754
|
}
|
|
1745
1755
|
function apply3dEffects2(base, scene3d, shape3d, fillColorFallback, elementSize, elementId) {
|
|
1746
|
-
|
|
1756
|
+
chunkFZSYLXJT_js.apply3dEffects(
|
|
1747
1757
|
base,
|
|
1748
1758
|
scene3d,
|
|
1749
1759
|
shape3d,
|
|
@@ -1758,11 +1768,11 @@ function rendersCustomVectorPath(element) {
|
|
|
1758
1768
|
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;
|
|
1759
1769
|
}
|
|
1760
1770
|
function rendersWedgeCalloutVector(element) {
|
|
1761
|
-
return element.type === "shape" &&
|
|
1771
|
+
return element.type === "shape" && chunkFZSYLXJT_js.isWedgeCalloutPresetShape(element.shapeType);
|
|
1762
1772
|
}
|
|
1763
1773
|
function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _strokeColor, animatesFill, animatesStroke, parentGroupFill) {
|
|
1764
1774
|
if (element.type === "group") {
|
|
1765
|
-
const fx2 =
|
|
1775
|
+
const fx2 = chunkFZSYLXJT_js.getComputedEffectStyle(element);
|
|
1766
1776
|
const groupStyle = {};
|
|
1767
1777
|
if (fx2.filter) {
|
|
1768
1778
|
groupStyle.filter = fx2.filter;
|
|
@@ -1772,13 +1782,13 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1772
1782
|
}
|
|
1773
1783
|
return groupStyle;
|
|
1774
1784
|
}
|
|
1775
|
-
if (!
|
|
1785
|
+
if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
|
|
1776
1786
|
return {};
|
|
1777
1787
|
}
|
|
1778
1788
|
const ss = element.shapeStyle;
|
|
1779
|
-
const fill = animatesFill ? void 0 :
|
|
1780
|
-
const fx =
|
|
1781
|
-
const stroke =
|
|
1789
|
+
const fill = animatesFill ? void 0 : chunkFZSYLXJT_js.getComputedFillStyle(element, parentGroupFill);
|
|
1790
|
+
const fx = chunkFZSYLXJT_js.getComputedEffectStyle(element);
|
|
1791
|
+
const stroke = chunkFZSYLXJT_js.getComputedStrokeStyle(element);
|
|
1782
1792
|
const base = {
|
|
1783
1793
|
// A gradient fill REPLACES the solid fill, it does not sit on top of it;
|
|
1784
1794
|
// the whole precedence lives in shared's `getComputedFillStyle`.
|
|
@@ -1817,7 +1827,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1817
1827
|
};
|
|
1818
1828
|
Object.assign(
|
|
1819
1829
|
base,
|
|
1820
|
-
|
|
1830
|
+
chunkFZSYLXJT_js.getAnimationColorBaseStyle(element, {
|
|
1821
1831
|
animatesFill,
|
|
1822
1832
|
animatesStroke,
|
|
1823
1833
|
parentGroupFill
|
|
@@ -1839,7 +1849,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1839
1849
|
},
|
|
1840
1850
|
element.id
|
|
1841
1851
|
);
|
|
1842
|
-
if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) ||
|
|
1852
|
+
if (rendersCustomVectorPath(element) || rendersWedgeCalloutVector(element) || chunkFZSYLXJT_js.isStrokeOnlyPresetElement(element)) {
|
|
1843
1853
|
base.backgroundColor = "transparent";
|
|
1844
1854
|
base.backgroundImage = void 0;
|
|
1845
1855
|
base.borderWidth = void 0;
|
|
@@ -1853,7 +1863,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1853
1863
|
if (rendersWedgeCalloutVector(element)) {
|
|
1854
1864
|
return base;
|
|
1855
1865
|
}
|
|
1856
|
-
const geometry =
|
|
1866
|
+
const geometry = chunkFZSYLXJT_js.resolveShapeGeometry(element);
|
|
1857
1867
|
switch (geometry.kind) {
|
|
1858
1868
|
case "bare":
|
|
1859
1869
|
return { backgroundColor: "transparent", borderWidth: 0, borderStyle: "none" };
|
|
@@ -1877,7 +1887,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1877
1887
|
}
|
|
1878
1888
|
}
|
|
1879
1889
|
function getConnectorPathGeometry2(element) {
|
|
1880
|
-
return
|
|
1890
|
+
return chunkFZSYLXJT_js.getConnectorPathGeometry(element);
|
|
1881
1891
|
}
|
|
1882
1892
|
var ARROW_SIZE_SCALE = {
|
|
1883
1893
|
sm: 0.6,
|
|
@@ -1946,11 +1956,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
|
|
|
1946
1956
|
strokePaint,
|
|
1947
1957
|
strokeWidth,
|
|
1948
1958
|
dashArray,
|
|
1949
|
-
lineCap:
|
|
1959
|
+
lineCap: chunkFZSYLXJT_js.svgLineCap(shapeStyle?.lineCap),
|
|
1950
1960
|
lineJoin,
|
|
1951
1961
|
miterLimit,
|
|
1952
|
-
offsets:
|
|
1953
|
-
widths:
|
|
1962
|
+
offsets: chunkFZSYLXJT_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
|
|
1963
|
+
widths: chunkFZSYLXJT_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
|
|
1954
1964
|
};
|
|
1955
1965
|
}
|
|
1956
1966
|
function strokeStrands(d, keyBase, ctx) {
|
|
@@ -1973,12 +1983,12 @@ function strokeStrands(d, keyBase, ctx) {
|
|
|
1973
1983
|
}
|
|
1974
1984
|
function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
|
|
1975
1985
|
const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
|
|
1976
|
-
const subpaths = structuredPaths && structuredPaths.length > 0 ?
|
|
1986
|
+
const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkFZSYLXJT_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
|
|
1977
1987
|
const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
|
|
1978
|
-
const gradientPaint = gradient ?
|
|
1988
|
+
const gradientPaint = gradient ? chunkFZSYLXJT_js.svgGradientFillRef(gradient) : void 0;
|
|
1979
1989
|
const nodes = [];
|
|
1980
1990
|
if (subpaths && needsPerSubpath) {
|
|
1981
|
-
const paints =
|
|
1991
|
+
const paints = chunkFZSYLXJT_js.buildSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
|
|
1982
1992
|
paints.forEach((paint, idx) => {
|
|
1983
1993
|
if (paint.fill !== "none") {
|
|
1984
1994
|
const mode = subpaths[idx]?.fillMode;
|
|
@@ -2007,7 +2017,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2007
2017
|
"path",
|
|
2008
2018
|
{
|
|
2009
2019
|
d: pathData,
|
|
2010
|
-
fill: animatesFill ? "inherit" : gradientPaint ??
|
|
2020
|
+
fill: animatesFill ? "inherit" : gradientPaint ?? chunkFZSYLXJT_js.colorWithOpacity(fillColor, fillOpacity),
|
|
2011
2021
|
stroke: "none",
|
|
2012
2022
|
vectorEffect: "non-scaling-stroke"
|
|
2013
2023
|
},
|
|
@@ -2033,14 +2043,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2033
2043
|
);
|
|
2034
2044
|
}
|
|
2035
2045
|
function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2036
|
-
if (!
|
|
2046
|
+
if (!chunkFZSYLXJT_js.hasShapeProperties(element)) {
|
|
2037
2047
|
return null;
|
|
2038
2048
|
}
|
|
2039
2049
|
const normalizedType = (element.shapeType || "").toLowerCase();
|
|
2040
|
-
const fillPaint = animatesFill ? "inherit" :
|
|
2041
|
-
const strokePaint = animatesStroke ? "inherit" :
|
|
2042
|
-
const dashType =
|
|
2043
|
-
const dashArray =
|
|
2050
|
+
const fillPaint = animatesFill ? "inherit" : chunkFZSYLXJT_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
|
|
2051
|
+
const strokePaint = animatesStroke ? "inherit" : chunkFZSYLXJT_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
|
|
2052
|
+
const dashType = chunkFZSYLXJT_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2053
|
+
const dashArray = chunkFZSYLXJT_js.getSvgStrokeDasharray(
|
|
2044
2054
|
dashType,
|
|
2045
2055
|
Math.max(strokeWidth, 1),
|
|
2046
2056
|
element.shapeStyle?.customDashSegments
|
|
@@ -2121,13 +2131,13 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2121
2131
|
// container's `background-image` is suppressed for custom geometry, so
|
|
2122
2132
|
// without this the shape fell back to the parser's representative solid
|
|
2123
2133
|
// and lost every fade (issue #132).
|
|
2124
|
-
|
|
2134
|
+
chunkFZSYLXJT_js.buildSvgGradientDef(element.shapeStyle, element.id)
|
|
2125
2135
|
);
|
|
2126
2136
|
}
|
|
2127
|
-
if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !
|
|
2137
|
+
if ((element.type === "image" || element.type === "picture") && strokeWidth > 0 && !chunkFZSYLXJT_js.buildStrokeOutline(element)) {
|
|
2128
2138
|
const width = Math.max(element.width, 1);
|
|
2129
2139
|
const height = Math.max(element.height, 1);
|
|
2130
|
-
const geometry =
|
|
2140
|
+
const geometry = chunkFZSYLXJT_js.getPresetShapeVectorGeometry(
|
|
2131
2141
|
element.shapeType || "rect",
|
|
2132
2142
|
width,
|
|
2133
2143
|
height,
|
|
@@ -2155,18 +2165,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2155
2165
|
);
|
|
2156
2166
|
}
|
|
2157
2167
|
}
|
|
2158
|
-
if (element.type === "shape" &&
|
|
2168
|
+
if (element.type === "shape" && chunkFZSYLXJT_js.isWedgeCalloutPresetShape(element.shapeType)) {
|
|
2159
2169
|
const width = Math.max(element.width, 1);
|
|
2160
2170
|
const height = Math.max(element.height, 1);
|
|
2161
|
-
const geometry =
|
|
2171
|
+
const geometry = chunkFZSYLXJT_js.getPresetShapeVectorGeometry(
|
|
2162
2172
|
element.shapeType,
|
|
2163
2173
|
width,
|
|
2164
2174
|
height,
|
|
2165
2175
|
element.shapeAdjustments
|
|
2166
2176
|
);
|
|
2167
2177
|
if (geometry) {
|
|
2168
|
-
const gradient =
|
|
2169
|
-
const gradientPaint = gradient ?
|
|
2178
|
+
const gradient = chunkFZSYLXJT_js.buildSvgGradientDef(element.shapeStyle, element.id);
|
|
2179
|
+
const gradientPaint = gradient ? chunkFZSYLXJT_js.svgGradientFillRef(gradient) : void 0;
|
|
2170
2180
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2171
2181
|
"svg",
|
|
2172
2182
|
{
|
|
@@ -2199,18 +2209,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2199
2209
|
);
|
|
2200
2210
|
}
|
|
2201
2211
|
}
|
|
2202
|
-
if (
|
|
2212
|
+
if (chunkFZSYLXJT_js.isCalloutShape(normalizedType)) {
|
|
2203
2213
|
const width = Math.max(element.width, 1);
|
|
2204
2214
|
const height = Math.max(element.height, 1);
|
|
2205
|
-
const geometry =
|
|
2215
|
+
const geometry = chunkFZSYLXJT_js.getCalloutLeaderLineGeometry(
|
|
2206
2216
|
normalizedType,
|
|
2207
2217
|
width,
|
|
2208
2218
|
height,
|
|
2209
2219
|
element.shapeAdjustments
|
|
2210
2220
|
);
|
|
2211
2221
|
if (geometry && geometry.points.length >= 2) {
|
|
2212
|
-
const leaderPath =
|
|
2213
|
-
const bounds =
|
|
2222
|
+
const leaderPath = chunkFZSYLXJT_js.buildCalloutLeaderLineSvgPath(geometry);
|
|
2223
|
+
const bounds = chunkFZSYLXJT_js.getCalloutViewBoxBounds(width, height, geometry);
|
|
2214
2224
|
const lineStroke = Math.max(strokeWidth, 1);
|
|
2215
2225
|
const offsetLeft = bounds.minX;
|
|
2216
2226
|
const offsetTop = bounds.minY;
|
|
@@ -2273,10 +2283,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2273
2283
|
const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
|
|
2274
2284
|
const endArrowL = element.shapeStyle?.connectorEndArrowLength;
|
|
2275
2285
|
const compoundLine = element.shapeStyle?.compoundLine;
|
|
2276
|
-
const connectorLineCap =
|
|
2286
|
+
const connectorLineCap = chunkFZSYLXJT_js.svgLineCap(element.shapeStyle?.lineCap);
|
|
2277
2287
|
const hitTargetWidth = Math.max(strokeWidth * 3, 12);
|
|
2278
|
-
const offsets =
|
|
2279
|
-
const widths =
|
|
2288
|
+
const offsets = chunkFZSYLXJT_js.getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
2289
|
+
const widths = chunkFZSYLXJT_js.getCompoundLineWidths(compoundLine, strokeWidth);
|
|
2280
2290
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2281
2291
|
"svg",
|
|
2282
2292
|
{
|
|
@@ -2343,15 +2353,15 @@ function parseGradientFillCss(gradFill) {
|
|
|
2343
2353
|
}
|
|
2344
2354
|
const rawStops = stops.map((gs) => {
|
|
2345
2355
|
const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
|
|
2346
|
-
const color =
|
|
2347
|
-
const opacity =
|
|
2356
|
+
const color = chunkFZSYLXJT_js.parseDrawingColor(gs) ?? "#888888";
|
|
2357
|
+
const opacity = chunkFZSYLXJT_js.parseDrawingColorOpacity(gs);
|
|
2348
2358
|
return { position: pos, color, opacity };
|
|
2349
2359
|
}).sort((a, b) => a.position - b.position);
|
|
2350
|
-
const stopStrings = rawStops.map((s) => `${
|
|
2360
|
+
const stopStrings = rawStops.map((s) => `${chunkFZSYLXJT_js.colorWithOpacity(s.color, s.opacity)} ${s.position.toFixed(1)}%`).join(", ");
|
|
2351
2361
|
const lin = gradFill["a:lin"];
|
|
2352
2362
|
if (lin) {
|
|
2353
2363
|
const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
|
|
2354
|
-
const angleDeg = Math.round(
|
|
2364
|
+
const angleDeg = Math.round(chunkFZSYLXJT_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
|
|
2355
2365
|
return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
|
|
2356
2366
|
}
|
|
2357
2367
|
const path = gradFill["a:path"];
|
|
@@ -2365,7 +2375,7 @@ function parseGradientFillCss(gradFill) {
|
|
|
2365
2375
|
b: Number.parseInt(String(fillToRectXml["@_b"] || "0"), 10) / 1e5
|
|
2366
2376
|
} : void 0;
|
|
2367
2377
|
if (pathType === "rect") {
|
|
2368
|
-
return
|
|
2378
|
+
return chunkFZSYLXJT_js.buildRectPathGradient(rawStops, void 0, fillToRect);
|
|
2369
2379
|
}
|
|
2370
2380
|
let cx = 50;
|
|
2371
2381
|
let cy = 50;
|
|
@@ -2387,8 +2397,8 @@ function parsePatternFillCss(pattFill) {
|
|
|
2387
2397
|
if (!pattFill) {
|
|
2388
2398
|
return void 0;
|
|
2389
2399
|
}
|
|
2390
|
-
const fgColor =
|
|
2391
|
-
const bgColor =
|
|
2400
|
+
const fgColor = chunkFZSYLXJT_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
|
|
2401
|
+
const bgColor = chunkFZSYLXJT_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
|
|
2392
2402
|
const preset = String(pattFill["@_prst"] || "ltDnDiag");
|
|
2393
2403
|
switch (preset) {
|
|
2394
2404
|
case "ltHorz":
|
|
@@ -2499,11 +2509,11 @@ function parseCellBorders(cellProperties) {
|
|
|
2499
2509
|
const prstDash = ln["a:prstDash"];
|
|
2500
2510
|
const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
|
|
2501
2511
|
const cssBorderStyle = ooxmlDashToCss(dashVal);
|
|
2502
|
-
const color =
|
|
2512
|
+
const color = chunkFZSYLXJT_js.parseDrawingColor(ln["a:solidFill"]);
|
|
2503
2513
|
if (color) {
|
|
2504
|
-
const opacity =
|
|
2514
|
+
const opacity = chunkFZSYLXJT_js.parseDrawingColorOpacity(ln["a:solidFill"]);
|
|
2505
2515
|
const key = `${edge.prefix}`;
|
|
2506
|
-
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${
|
|
2516
|
+
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkFZSYLXJT_js.colorWithOpacity(color, opacity)}`;
|
|
2507
2517
|
}
|
|
2508
2518
|
}
|
|
2509
2519
|
return borderStyle;
|
|
@@ -2516,7 +2526,7 @@ function parseCellTextEffects(runProps) {
|
|
|
2516
2526
|
const textShadowParts = [];
|
|
2517
2527
|
const outerShdw = effectLst["a:outerShdw"];
|
|
2518
2528
|
if (outerShdw) {
|
|
2519
|
-
const shdwColor =
|
|
2529
|
+
const shdwColor = chunkFZSYLXJT_js.parseDrawingColor(outerShdw);
|
|
2520
2530
|
if (shdwColor) {
|
|
2521
2531
|
const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
|
|
2522
2532
|
const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
|
|
@@ -2534,7 +2544,7 @@ function parseCellTextEffects(runProps) {
|
|
|
2534
2544
|
}
|
|
2535
2545
|
const glow = effectLst["a:glow"];
|
|
2536
2546
|
if (glow) {
|
|
2537
|
-
const glowColor =
|
|
2547
|
+
const glowColor = chunkFZSYLXJT_js.parseDrawingColor(glow);
|
|
2538
2548
|
if (glowColor) {
|
|
2539
2549
|
const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
|
|
2540
2550
|
const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
|
|
@@ -2556,11 +2566,11 @@ function extractCellText(cellXml) {
|
|
|
2556
2566
|
const textParts = [];
|
|
2557
2567
|
const runs = ensureArrayValue(paragraph["a:r"]);
|
|
2558
2568
|
runs.forEach((run) => {
|
|
2559
|
-
textParts.push(
|
|
2569
|
+
textParts.push(chunkFZSYLXJT_js.xmlText(run["a:t"]) ?? "");
|
|
2560
2570
|
});
|
|
2561
2571
|
const fields = ensureArrayValue(paragraph["a:fld"]);
|
|
2562
2572
|
fields.forEach((field) => {
|
|
2563
|
-
textParts.push(
|
|
2573
|
+
textParts.push(chunkFZSYLXJT_js.xmlText(field["a:t"]) ?? "");
|
|
2564
2574
|
});
|
|
2565
2575
|
paragraphTexts.push(textParts.join(""));
|
|
2566
2576
|
});
|
|
@@ -2604,10 +2614,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2604
2614
|
if (runProps?.["@_u"] !== void 0) {
|
|
2605
2615
|
cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
|
|
2606
2616
|
}
|
|
2607
|
-
const runColor =
|
|
2617
|
+
const runColor = chunkFZSYLXJT_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkFZSYLXJT_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
|
|
2608
2618
|
if (runColor) {
|
|
2609
|
-
const opacity =
|
|
2610
|
-
cellStyle.color =
|
|
2619
|
+
const opacity = chunkFZSYLXJT_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
|
|
2620
|
+
cellStyle.color = chunkFZSYLXJT_js.colorWithOpacity(runColor, opacity);
|
|
2611
2621
|
}
|
|
2612
2622
|
const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
|
|
2613
2623
|
if (fontFamily) {
|
|
@@ -2617,15 +2627,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2617
2627
|
cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
|
|
2618
2628
|
}
|
|
2619
2629
|
const cellProperties = cellXml["a:tcPr"];
|
|
2620
|
-
const cellFill =
|
|
2630
|
+
const cellFill = chunkFZSYLXJT_js.parseDrawingColor(
|
|
2621
2631
|
cellProperties?.["a:solidFill"],
|
|
2622
2632
|
schemeColorOverrides
|
|
2623
2633
|
);
|
|
2624
2634
|
if (cellFill) {
|
|
2625
|
-
const opacity =
|
|
2635
|
+
const opacity = chunkFZSYLXJT_js.parseDrawingColorOpacity(
|
|
2626
2636
|
cellProperties?.["a:solidFill"]
|
|
2627
2637
|
);
|
|
2628
|
-
cellStyle.backgroundColor =
|
|
2638
|
+
cellStyle.backgroundColor = chunkFZSYLXJT_js.colorWithOpacity(cellFill, opacity);
|
|
2629
2639
|
} else {
|
|
2630
2640
|
const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
|
|
2631
2641
|
if (gradCss) {
|
|
@@ -2640,16 +2650,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2640
2650
|
const edgeBorders = parseCellBorders(cellProperties);
|
|
2641
2651
|
Object.assign(cellStyle, edgeBorders);
|
|
2642
2652
|
if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
|
|
2643
|
-
const borderColor =
|
|
2653
|
+
const borderColor = chunkFZSYLXJT_js.parseDrawingColor(
|
|
2644
2654
|
cellProperties?.["a:lnL"]?.["a:solidFill"],
|
|
2645
2655
|
schemeColorOverrides
|
|
2646
|
-
) ||
|
|
2656
|
+
) || chunkFZSYLXJT_js.parseDrawingColor(
|
|
2647
2657
|
cellProperties?.["a:lnR"]?.["a:solidFill"],
|
|
2648
2658
|
schemeColorOverrides
|
|
2649
|
-
) ||
|
|
2659
|
+
) || chunkFZSYLXJT_js.parseDrawingColor(
|
|
2650
2660
|
cellProperties?.["a:lnT"]?.["a:solidFill"],
|
|
2651
2661
|
schemeColorOverrides
|
|
2652
|
-
) ||
|
|
2662
|
+
) || chunkFZSYLXJT_js.parseDrawingColor(
|
|
2653
2663
|
cellProperties?.["a:lnB"]?.["a:solidFill"],
|
|
2654
2664
|
schemeColorOverrides
|
|
2655
2665
|
);
|
|
@@ -2721,7 +2731,7 @@ function getTableCellBandStyle2(element, rowIndex, cellIndex, rowCount, columnCo
|
|
|
2721
2731
|
if (element.type !== "table") {
|
|
2722
2732
|
return void 0;
|
|
2723
2733
|
}
|
|
2724
|
-
return
|
|
2734
|
+
return chunkFZSYLXJT_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
|
|
2725
2735
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
2726
2736
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
2727
2737
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -2801,7 +2811,7 @@ function renderTableCellContent(cell, fallbackText) {
|
|
|
2801
2811
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2802
2812
|
"span",
|
|
2803
2813
|
{
|
|
2804
|
-
style: { position: "relative", ...
|
|
2814
|
+
style: { position: "relative", ...chunkFZSYLXJT_js.cellRunStyle(run) },
|
|
2805
2815
|
children: run.text
|
|
2806
2816
|
},
|
|
2807
2817
|
`r-${index}`
|
|
@@ -2809,7 +2819,7 @@ function renderTableCellContent(cell, fallbackText) {
|
|
|
2809
2819
|
});
|
|
2810
2820
|
}
|
|
2811
2821
|
function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
|
|
2812
|
-
return
|
|
2822
|
+
return chunkFZSYLXJT_js.getCellDiagonalBorders(style, tableData, pos, {
|
|
2813
2823
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
2814
2824
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
2815
2825
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -2942,7 +2952,7 @@ function TableResizeOverlay({
|
|
|
2942
2952
|
const containerRef = React7.useRef(null);
|
|
2943
2953
|
const [rowBounds, setRowBounds] = React7.useState([]);
|
|
2944
2954
|
const dragRef = React7.useRef(null);
|
|
2945
|
-
const colBoundaries = React7.useMemo(() =>
|
|
2955
|
+
const colBoundaries = React7.useMemo(() => chunkFZSYLXJT_js.computeColumnBoundaries(columnWidths), [columnWidths]);
|
|
2946
2956
|
const measureRows = React7.useCallback(() => {
|
|
2947
2957
|
const container = containerRef.current;
|
|
2948
2958
|
if (!container) {
|
|
@@ -2989,11 +2999,11 @@ function TableResizeOverlay({
|
|
|
2989
2999
|
const rect = containerRef.current.getBoundingClientRect();
|
|
2990
3000
|
if (e.clientX !== drag.startPos && drag.type === "col" && drag.initialWidths && onResizeColumns) {
|
|
2991
3001
|
const deltaProp = (e.clientX - drag.startPos) / rect.width;
|
|
2992
|
-
onResizeColumns(
|
|
3002
|
+
onResizeColumns(chunkFZSYLXJT_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
|
|
2993
3003
|
} else if (e.clientY !== drag.startPos && drag.type === "row" && onResizeRow) {
|
|
2994
3004
|
const deltaY = e.clientY - drag.startPos;
|
|
2995
|
-
const newHeight =
|
|
2996
|
-
drag.initialRowHeight ??
|
|
3005
|
+
const newHeight = chunkFZSYLXJT_js.computeResizedRowHeight(
|
|
3006
|
+
drag.initialRowHeight ?? chunkFZSYLXJT_js.DEFAULT_ROW_HEIGHT,
|
|
2997
3007
|
deltaY
|
|
2998
3008
|
);
|
|
2999
3009
|
onResizeRow(drag.index, newHeight);
|
|
@@ -3031,7 +3041,7 @@ function TableResizeOverlay({
|
|
|
3031
3041
|
e.stopPropagation();
|
|
3032
3042
|
const table = containerRef.current?.querySelector("table");
|
|
3033
3043
|
const tr = table?.querySelectorAll("tbody > tr")[index];
|
|
3034
|
-
const actualHeight = tr?.offsetHeight ??
|
|
3044
|
+
const actualHeight = tr?.offsetHeight ?? chunkFZSYLXJT_js.DEFAULT_ROW_HEIGHT;
|
|
3035
3045
|
document.body.style.cursor = "row-resize";
|
|
3036
3046
|
document.body.style.userSelect = "none";
|
|
3037
3047
|
dragRef.current = {
|
|
@@ -3071,14 +3081,14 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3071
3081
|
const rowCount = tableData.rows.length;
|
|
3072
3082
|
const columnCount = tableData.columnWidths.length;
|
|
3073
3083
|
const selectedCell = options?.selectedCell || null;
|
|
3074
|
-
const isEditable = Boolean(options?.editable) &&
|
|
3084
|
+
const isEditable = Boolean(options?.editable) && chunkFZSYLXJT_js.canDrillDown(element);
|
|
3075
3085
|
const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
|
|
3076
3086
|
const sharedCtx = {
|
|
3077
3087
|
tableStyleMap: options?.styleCtx?.tableStyleMap,
|
|
3078
3088
|
colorScheme: options?.styleCtx?.theme?.colorScheme,
|
|
3079
3089
|
fontScheme: options?.styleCtx?.theme?.fontScheme
|
|
3080
3090
|
};
|
|
3081
|
-
const cellCss = (cell, rowIndex, cellIndex) =>
|
|
3091
|
+
const cellCss = (cell, rowIndex, cellIndex) => chunkFZSYLXJT_js.tableCellCss(
|
|
3082
3092
|
tableData,
|
|
3083
3093
|
cell,
|
|
3084
3094
|
{ rowIndex, cellIndex, rowCount, columnCount },
|
|
@@ -3091,7 +3101,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3091
3101
|
}
|
|
3092
3102
|
const first = selectedCell.selectedCells[0];
|
|
3093
3103
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
3094
|
-
return
|
|
3104
|
+
return chunkFZSYLXJT_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
|
|
3095
3105
|
})();
|
|
3096
3106
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3097
3107
|
TableResizeOverlay,
|
|
@@ -3112,9 +3122,9 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3112
3122
|
{
|
|
3113
3123
|
className: "w-full h-full border-collapse table-fixed",
|
|
3114
3124
|
style: {
|
|
3115
|
-
fontFamily:
|
|
3125
|
+
fontFamily: chunkFZSYLXJT_js.DEFAULT_FONT_FAMILY,
|
|
3116
3126
|
// `a:tblPr@rtl` mirrors the column order for RTL decks.
|
|
3117
|
-
...
|
|
3127
|
+
...chunkFZSYLXJT_js.tableContainerCss(tableData)
|
|
3118
3128
|
},
|
|
3119
3129
|
children: [
|
|
3120
3130
|
tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3133,7 +3143,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3133
3143
|
return null;
|
|
3134
3144
|
}
|
|
3135
3145
|
const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
|
|
3136
|
-
const isInMultiSelection =
|
|
3146
|
+
const isInMultiSelection = chunkFZSYLXJT_js.isCellInRect(rowIndex, cellIndex, selectionRect);
|
|
3137
3147
|
const isCellEditing = isCellSelected && selectedCell?.isEditing;
|
|
3138
3148
|
const diag = getCellDiagonalBorders2(
|
|
3139
3149
|
cell.style,
|
|
@@ -3162,7 +3172,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3162
3172
|
}
|
|
3163
3173
|
event.stopPropagation();
|
|
3164
3174
|
if (event.shiftKey && selectedCell) {
|
|
3165
|
-
const rect =
|
|
3175
|
+
const rect = chunkFZSYLXJT_js.computeSelectionRect(
|
|
3166
3176
|
selectedCell.rowIndex,
|
|
3167
3177
|
selectedCell.columnIndex,
|
|
3168
3178
|
rowIndex,
|
|
@@ -3172,7 +3182,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3172
3182
|
options?.onSelectCell?.({
|
|
3173
3183
|
rowIndex: selectedCell.rowIndex,
|
|
3174
3184
|
columnIndex: selectedCell.columnIndex,
|
|
3175
|
-
selectedCells:
|
|
3185
|
+
selectedCells: chunkFZSYLXJT_js.rectToCells(rect)
|
|
3176
3186
|
});
|
|
3177
3187
|
} else {
|
|
3178
3188
|
options?.onSelectCell?.({
|
|
@@ -3233,10 +3243,10 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3233
3243
|
if (tableEl2.tableData && tableEl2.tableData.rows.length > 0) {
|
|
3234
3244
|
return renderTableFromTableData(tableEl2, textStyle, options);
|
|
3235
3245
|
}
|
|
3236
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
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: chunk3JUZOKFI_js.translationsEn["pptx.table.title"] });
|
|
3237
3247
|
}
|
|
3238
3248
|
const selectedCell = options?.selectedCell || null;
|
|
3239
|
-
const isEditable = Boolean(options?.editable) &&
|
|
3249
|
+
const isEditable = Boolean(options?.editable) && chunkFZSYLXJT_js.canDrillDown(element);
|
|
3240
3250
|
const hasCellSelectionHandler = typeof options?.onSelectCell === "function";
|
|
3241
3251
|
const tableEl = element;
|
|
3242
3252
|
const xmlSelectionRect = (() => {
|
|
@@ -3248,7 +3258,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3248
3258
|
}
|
|
3249
3259
|
const first = selectedCell.selectedCells[0];
|
|
3250
3260
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
3251
|
-
return
|
|
3261
|
+
return chunkFZSYLXJT_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
|
|
3252
3262
|
})();
|
|
3253
3263
|
const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
|
|
3254
3264
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3270,9 +3280,9 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3270
3280
|
{
|
|
3271
3281
|
className: "w-full h-full border-collapse table-fixed",
|
|
3272
3282
|
style: {
|
|
3273
|
-
fontFamily:
|
|
3283
|
+
fontFamily: chunkFZSYLXJT_js.DEFAULT_FONT_FAMILY,
|
|
3274
3284
|
// `a:tblPr@rtl` mirrors the column order for RTL decks.
|
|
3275
|
-
...
|
|
3285
|
+
...chunkFZSYLXJT_js.tableContainerCss(tableEl.tableData)
|
|
3276
3286
|
},
|
|
3277
3287
|
children: [
|
|
3278
3288
|
parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3329,7 +3339,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3329
3339
|
color: textStyle.color,
|
|
3330
3340
|
...bandStyle,
|
|
3331
3341
|
...xmlCellStyle,
|
|
3332
|
-
...tdCellOverride ?
|
|
3342
|
+
...tdCellOverride ? chunkFZSYLXJT_js.cellStyleToCss(tdCellOverride) : void 0,
|
|
3333
3343
|
...diag ? { position: "relative" } : void 0
|
|
3334
3344
|
};
|
|
3335
3345
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3339,7 +3349,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3339
3349
|
"border px-1 py-0.5 align-top",
|
|
3340
3350
|
isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
|
|
3341
3351
|
selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
|
|
3342
|
-
|
|
3352
|
+
chunkFZSYLXJT_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
|
|
3343
3353
|
),
|
|
3344
3354
|
colSpan,
|
|
3345
3355
|
rowSpan: rSpan,
|
|
@@ -3350,7 +3360,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3350
3360
|
}
|
|
3351
3361
|
event.stopPropagation();
|
|
3352
3362
|
if (event.shiftKey && selectedCell && tableEl.tableData) {
|
|
3353
|
-
const rect =
|
|
3363
|
+
const rect = chunkFZSYLXJT_js.computeSelectionRect(
|
|
3354
3364
|
selectedCell.rowIndex,
|
|
3355
3365
|
selectedCell.columnIndex,
|
|
3356
3366
|
rowIndex,
|
|
@@ -3360,7 +3370,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3360
3370
|
options?.onSelectCell?.({
|
|
3361
3371
|
rowIndex: selectedCell.rowIndex,
|
|
3362
3372
|
columnIndex: selectedCell.columnIndex,
|
|
3363
|
-
selectedCells:
|
|
3373
|
+
selectedCells: chunkFZSYLXJT_js.rectToCells(rect)
|
|
3364
3374
|
});
|
|
3365
3375
|
} else {
|
|
3366
3376
|
options?.onSelectCell?.({
|
|
@@ -3419,23 +3429,23 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3419
3429
|
);
|
|
3420
3430
|
}
|
|
3421
3431
|
function partAttrs(part) {
|
|
3422
|
-
return part ?
|
|
3432
|
+
return part ? chunkFZSYLXJT_js.chartPartToAttrs(part) : void 0;
|
|
3423
3433
|
}
|
|
3424
3434
|
function resolveReactPalette(chartData) {
|
|
3425
3435
|
if (chartData.colorPalette && chartData.colorPalette.length > 0) {
|
|
3426
3436
|
return chartData.colorPalette;
|
|
3427
3437
|
}
|
|
3428
|
-
return [...
|
|
3438
|
+
return [...chunkFZSYLXJT_js.getChartStylePalette(chartData.style?.styleId)];
|
|
3429
3439
|
}
|
|
3430
3440
|
function buildReactChartViewModel(element) {
|
|
3431
3441
|
if (element.type !== "chart" || !element.chartData) {
|
|
3432
|
-
return
|
|
3442
|
+
return chunkFZSYLXJT_js.buildChartViewModel(element);
|
|
3433
3443
|
}
|
|
3434
3444
|
const palette = resolveReactPalette(element.chartData), themedElement = {
|
|
3435
3445
|
...element,
|
|
3436
3446
|
chartData: { ...element.chartData, colorPalette: palette }
|
|
3437
3447
|
};
|
|
3438
|
-
return
|
|
3448
|
+
return chunkFZSYLXJT_js.buildChartViewModel(themedElement);
|
|
3439
3449
|
}
|
|
3440
3450
|
function renderPrimitive(prim, key) {
|
|
3441
3451
|
switch (prim.kind) {
|
|
@@ -3587,7 +3597,7 @@ function renderText(t, key) {
|
|
|
3587
3597
|
);
|
|
3588
3598
|
}
|
|
3589
3599
|
function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
|
|
3590
|
-
const legendItems =
|
|
3600
|
+
const legendItems = chunkFZSYLXJT_js.computeChartLegendLayout(vm);
|
|
3591
3601
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3592
3602
|
"svg",
|
|
3593
3603
|
{
|
|
@@ -3727,17 +3737,17 @@ function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
|
|
|
3727
3737
|
}
|
|
3728
3738
|
function renderChartElement(element) {
|
|
3729
3739
|
if (element.type !== "chart") {
|
|
3730
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
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: chunk3JUZOKFI_js.translationsEn["pptx.chart.heading"] });
|
|
3731
3741
|
}
|
|
3732
3742
|
const chartData = element.chartData;
|
|
3733
3743
|
if (!chartData || chartData.series.length === 0) {
|
|
3734
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
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: chunk3JUZOKFI_js.translationsEn["pptx.chart.heading"] });
|
|
3735
3745
|
}
|
|
3736
|
-
const kind =
|
|
3746
|
+
const kind = chunkFZSYLXJT_js.resolveChartKind(chartData.chartType ?? "bar");
|
|
3737
3747
|
return renderChartViewModel(
|
|
3738
3748
|
element.id,
|
|
3739
3749
|
buildReactChartViewModel(element),
|
|
3740
|
-
|
|
3750
|
+
chunkFZSYLXJT_js.chartPreserveAspectRatio(kind)
|
|
3741
3751
|
);
|
|
3742
3752
|
}
|
|
3743
3753
|
|
|
@@ -3757,14 +3767,14 @@ function buildNotesPdf(pages) {
|
|
|
3757
3767
|
notes: page.notes,
|
|
3758
3768
|
slideNumber: page.slideNumber
|
|
3759
3769
|
}));
|
|
3760
|
-
const bytes =
|
|
3770
|
+
const bytes = chunkFZSYLXJT_js.buildNotesPdfBytes(images, meta);
|
|
3761
3771
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
3762
3772
|
return URL.createObjectURL(blob);
|
|
3763
3773
|
}
|
|
3764
3774
|
|
|
3765
3775
|
// src/viewer/utils/pdf-builder-slides.ts
|
|
3766
3776
|
function buildPdfFromTiledImageData(pages) {
|
|
3767
|
-
const bytes =
|
|
3777
|
+
const bytes = chunkFZSYLXJT_js.buildTiledSlidesPdfBytes(pages);
|
|
3768
3778
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
3769
3779
|
return URL.createObjectURL(blob);
|
|
3770
3780
|
}
|
|
@@ -3773,7 +3783,7 @@ function buildPdfFromTiledImageData(pages) {
|
|
|
3773
3783
|
var activePreview = null;
|
|
3774
3784
|
function startPreviewAnimation(elementId, preset, options) {
|
|
3775
3785
|
stopPreviewAnimation();
|
|
3776
|
-
const descriptor =
|
|
3786
|
+
const descriptor = chunkFZSYLXJT_js.buildPreviewAnimation(preset, options);
|
|
3777
3787
|
if (!descriptor) {
|
|
3778
3788
|
return;
|
|
3779
3789
|
}
|
|
@@ -3786,7 +3796,7 @@ function startMotionPathPreview(elementId, path, options) {
|
|
|
3786
3796
|
return;
|
|
3787
3797
|
}
|
|
3788
3798
|
const stage = domEl.offsetParent;
|
|
3789
|
-
const descriptor =
|
|
3799
|
+
const descriptor = chunkFZSYLXJT_js.buildMotionPathPreview({
|
|
3790
3800
|
path,
|
|
3791
3801
|
slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
|
|
3792
3802
|
slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,
|