pptx-react-viewer 2.20.3 → 2.20.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/{AiChatPanel-ZSVNVRM5.js → AiChatPanel-3H5WGSM5.js} +23 -23
- package/dist/AiChatPanel-3H5WGSM5.js.br +0 -0
- package/dist/AiChatPanel-3H5WGSM5.js.gz +0 -0
- package/dist/{AiChatPanel-NRWACXJ7.mjs → AiChatPanel-AYS6SCSC.mjs} +3 -3
- package/dist/AiChatPanel-AYS6SCSC.mjs.br +0 -0
- package/dist/AiChatPanel-AYS6SCSC.mjs.gz +0 -0
- package/dist/{Model3DScene-3HGARMTA.js → Model3DScene-6OVVKUSF.js} +2 -2
- package/dist/Model3DScene-6OVVKUSF.js.br +0 -0
- package/dist/Model3DScene-6OVVKUSF.js.gz +0 -0
- package/dist/{Model3DScene-IFYFOD6F.mjs → Model3DScene-QQQEABW7.mjs} +1 -1
- package/dist/Model3DScene-QQQEABW7.mjs.br +0 -0
- package/dist/Model3DScene-QQQEABW7.mjs.gz +0 -0
- package/dist/{chunk-QJJX2E6I.js → chunk-2LOKAZHT.js} +3 -3
- package/dist/chunk-2LOKAZHT.js.br +0 -0
- package/dist/chunk-2LOKAZHT.js.gz +0 -0
- package/dist/{chunk-463BMH5Q.js → chunk-62EM4JYP.js} +383 -383
- package/dist/chunk-62EM4JYP.js.br +0 -0
- package/dist/chunk-62EM4JYP.js.gz +0 -0
- package/dist/{chunk-4Z4HEIP5.js → chunk-BQJU7ZG6.js} +459 -385
- package/dist/chunk-BQJU7ZG6.js.br +0 -0
- package/dist/chunk-BQJU7ZG6.js.gz +0 -0
- package/dist/{chunk-AD4LAXDJ.mjs → chunk-BSOTRNVG.mjs} +7 -7
- package/dist/chunk-BSOTRNVG.mjs.br +0 -0
- package/dist/chunk-BSOTRNVG.mjs.gz +0 -0
- package/dist/{chunk-RJ26DQIM.mjs → chunk-DIJWZ6ZS.mjs} +1 -1
- package/dist/chunk-DIJWZ6ZS.mjs.br +0 -0
- package/dist/chunk-DIJWZ6ZS.mjs.gz +0 -0
- package/dist/{chunk-LLZ25OVR.js → chunk-ETJBX4YT.js} +154 -148
- package/dist/chunk-ETJBX4YT.js.br +0 -0
- package/dist/chunk-ETJBX4YT.js.gz +0 -0
- package/dist/{chunk-4JENQPJ3.js → chunk-JYVQ2MTO.js} +1043 -1043
- package/dist/chunk-JYVQ2MTO.js.br +0 -0
- package/dist/chunk-JYVQ2MTO.js.gz +0 -0
- package/dist/{chunk-O5BR276S.mjs → chunk-PBFNE5X5.mjs} +8 -2
- package/dist/chunk-PBFNE5X5.mjs.br +0 -0
- package/dist/chunk-PBFNE5X5.mjs.gz +0 -0
- package/dist/{chunk-2MENHAYJ.mjs → chunk-ULBSTLY3.mjs} +459 -385
- package/dist/chunk-ULBSTLY3.mjs.br +0 -0
- package/dist/chunk-ULBSTLY3.mjs.gz +0 -0
- package/dist/{chunk-YAKDNRU7.mjs → chunk-ZVFTYICH.mjs} +2 -2
- package/dist/chunk-ZVFTYICH.mjs.br +0 -0
- package/dist/chunk-ZVFTYICH.mjs.gz +0 -0
- package/dist/index.js +45 -45
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.js +78 -78
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +3 -3
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/viewer/index.js +26 -26
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +5 -5
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-NRWACXJ7.mjs.br +0 -0
- package/dist/AiChatPanel-NRWACXJ7.mjs.gz +0 -0
- package/dist/AiChatPanel-ZSVNVRM5.js.br +0 -0
- package/dist/AiChatPanel-ZSVNVRM5.js.gz +0 -0
- package/dist/Model3DScene-3HGARMTA.js.br +0 -0
- package/dist/Model3DScene-3HGARMTA.js.gz +0 -0
- package/dist/Model3DScene-IFYFOD6F.mjs.br +0 -0
- package/dist/Model3DScene-IFYFOD6F.mjs.gz +0 -0
- package/dist/chunk-2MENHAYJ.mjs.br +0 -0
- package/dist/chunk-2MENHAYJ.mjs.gz +0 -0
- package/dist/chunk-463BMH5Q.js.br +0 -0
- package/dist/chunk-463BMH5Q.js.gz +0 -0
- package/dist/chunk-4JENQPJ3.js.br +0 -0
- package/dist/chunk-4JENQPJ3.js.gz +0 -0
- package/dist/chunk-4Z4HEIP5.js.br +0 -0
- package/dist/chunk-4Z4HEIP5.js.gz +0 -0
- package/dist/chunk-AD4LAXDJ.mjs.br +0 -0
- package/dist/chunk-AD4LAXDJ.mjs.gz +0 -0
- package/dist/chunk-LLZ25OVR.js.br +0 -0
- package/dist/chunk-LLZ25OVR.js.gz +0 -0
- package/dist/chunk-O5BR276S.mjs.br +0 -0
- package/dist/chunk-O5BR276S.mjs.gz +0 -0
- package/dist/chunk-QJJX2E6I.js.br +0 -0
- package/dist/chunk-QJJX2E6I.js.gz +0 -0
- package/dist/chunk-RJ26DQIM.mjs.br +0 -0
- package/dist/chunk-RJ26DQIM.mjs.gz +0 -0
- package/dist/chunk-YAKDNRU7.mjs.br +0 -0
- package/dist/chunk-YAKDNRU7.mjs.gz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunk6CPUGAK7_js = require('./chunk-6CPUGAK7.js');
|
|
4
|
-
var
|
|
4
|
+
var chunkBQJU7ZG6_js = require('./chunk-BQJU7ZG6.js');
|
|
5
5
|
var clsx = require('clsx');
|
|
6
6
|
var tailwindMerge = require('tailwind-merge');
|
|
7
7
|
var React6 = require('react');
|
|
@@ -15,7 +15,7 @@ var React6__default = /*#__PURE__*/_interopDefault(React6);
|
|
|
15
15
|
|
|
16
16
|
// src/viewer/utils/animation-effects.ts
|
|
17
17
|
function getAnimationInitialStyle2(preset, nativeAnimation) {
|
|
18
|
-
return
|
|
18
|
+
return chunkBQJU7ZG6_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 chunkBQJU7ZG6_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 = chunkBQJU7ZG6_js.VIEWER_SHORTCUT_REFERENCE;
|
|
65
65
|
|
|
66
66
|
// src/viewer/constants/theme.ts
|
|
67
67
|
var THEME_COLOR_SWATCHES = [
|
|
@@ -105,7 +105,7 @@ var GLYPH_COMPONENTS = {
|
|
|
105
105
|
plus: lu.LuPlus,
|
|
106
106
|
triangle: lu.LuTriangle
|
|
107
107
|
};
|
|
108
|
-
var SHAPE_PRESETS =
|
|
108
|
+
var SHAPE_PRESETS = chunkBQJU7ZG6_js.SHAPE_PRESET_DEFS.map(
|
|
109
109
|
(def) => ({
|
|
110
110
|
type: def.type,
|
|
111
111
|
label: def.label,
|
|
@@ -264,7 +264,7 @@ function isConnectorOrLineElement(element) {
|
|
|
264
264
|
if (element.type === "connector") {
|
|
265
265
|
return true;
|
|
266
266
|
}
|
|
267
|
-
if (!
|
|
267
|
+
if (!chunkBQJU7ZG6_js.hasShapeProperties(element)) {
|
|
268
268
|
return false;
|
|
269
269
|
}
|
|
270
270
|
const st = getShapeType(element.shapeType);
|
|
@@ -273,7 +273,7 @@ function isConnectorOrLineElement(element) {
|
|
|
273
273
|
|
|
274
274
|
// src/viewer/utils/image-style.ts
|
|
275
275
|
function getImageMaskStyle(element) {
|
|
276
|
-
if (!
|
|
276
|
+
if (!chunkBQJU7ZG6_js.hasShapeProperties(element)) {
|
|
277
277
|
return void 0;
|
|
278
278
|
}
|
|
279
279
|
const shapeType = element.shapeType;
|
|
@@ -282,7 +282,7 @@ function getImageMaskStyle(element) {
|
|
|
282
282
|
}
|
|
283
283
|
const normalized = shapeType.toLowerCase();
|
|
284
284
|
if (normalized === "roundrect" || normalized === "round1rect" || normalized === "round2samerect" || normalized === "round2diagrect" || normalized === "sniproundrect" || normalized === "snip1rect" || normalized === "snip2diagrect") {
|
|
285
|
-
const radiusPx =
|
|
285
|
+
const radiusPx = chunkBQJU7ZG6_js.getRoundRectRadiusPx2(element);
|
|
286
286
|
if (radiusPx <= 0.01) {
|
|
287
287
|
return void 0;
|
|
288
288
|
}
|
|
@@ -294,7 +294,7 @@ function getImageMaskStyle(element) {
|
|
|
294
294
|
if (normalized === "can" || normalized === "cylinder") {
|
|
295
295
|
return { borderRadius: "48% / 12%" };
|
|
296
296
|
}
|
|
297
|
-
const clipPath =
|
|
297
|
+
const clipPath = chunkBQJU7ZG6_js.getResolvedShapeClipPath(element);
|
|
298
298
|
if (!clipPath) {
|
|
299
299
|
return void 0;
|
|
300
300
|
}
|
|
@@ -303,7 +303,7 @@ function getImageMaskStyle(element) {
|
|
|
303
303
|
function getImageRenderStyle(element) {
|
|
304
304
|
return {
|
|
305
305
|
...getImageMaskStyle(element) || {},
|
|
306
|
-
...
|
|
306
|
+
...chunkBQJU7ZG6_js.getImageFitStyle(element)
|
|
307
307
|
};
|
|
308
308
|
}
|
|
309
309
|
var CROP_SHAPE_CLIP_PATHS = {
|
|
@@ -316,7 +316,7 @@ var CROP_SHAPE_CLIP_PATHS = {
|
|
|
316
316
|
star: "polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)"
|
|
317
317
|
};
|
|
318
318
|
function getCropShapeClipPath(element) {
|
|
319
|
-
if (!
|
|
319
|
+
if (!chunkBQJU7ZG6_js.isImageLikeElement(element)) {
|
|
320
320
|
return void 0;
|
|
321
321
|
}
|
|
322
322
|
const shape = element.cropShape;
|
|
@@ -326,7 +326,7 @@ function getCropShapeClipPath(element) {
|
|
|
326
326
|
return CROP_SHAPE_CLIP_PATHS[shape];
|
|
327
327
|
}
|
|
328
328
|
function getImageTilingStyle2(element) {
|
|
329
|
-
return
|
|
329
|
+
return chunkBQJU7ZG6_js.getImageTilingStyle(element);
|
|
330
330
|
}
|
|
331
331
|
|
|
332
332
|
// src/viewer/utils/geometry-image.ts
|
|
@@ -526,9 +526,9 @@ function registerMediaElement(elementId, el) {
|
|
|
526
526
|
};
|
|
527
527
|
}
|
|
528
528
|
function executeMediaCommand(command, frameRoot) {
|
|
529
|
-
return
|
|
529
|
+
return chunkBQJU7ZG6_js.runMediaCommand(
|
|
530
530
|
command,
|
|
531
|
-
(targetId) => registry.get(targetId) ??
|
|
531
|
+
(targetId) => registry.get(targetId) ?? chunkBQJU7ZG6_js.findMediaElementByElementId(targetId, frameRoot?.())
|
|
532
532
|
);
|
|
533
533
|
}
|
|
534
534
|
function PresentationMediaController({
|
|
@@ -572,7 +572,7 @@ function PresentationMediaController({
|
|
|
572
572
|
loop: shouldLoop,
|
|
573
573
|
volume: playbackVolume,
|
|
574
574
|
playbackRate
|
|
575
|
-
} =
|
|
575
|
+
} = chunkBQJU7ZG6_js.mediaPlaybackAttributes({
|
|
576
576
|
loop: element.loop,
|
|
577
577
|
volume: element.volume,
|
|
578
578
|
playbackSpeed: element.playbackSpeed
|
|
@@ -708,7 +708,7 @@ function PresentationMediaController({
|
|
|
708
708
|
if (element.playAcrossSlides && element.mediaType === "audio") {
|
|
709
709
|
const dataUrl = element.mediaData ?? resolvedDataUrl;
|
|
710
710
|
if (dataUrl) {
|
|
711
|
-
|
|
711
|
+
chunkBQJU7ZG6_js.registerPersistentAudio(
|
|
712
712
|
element.id,
|
|
713
713
|
dataUrl,
|
|
714
714
|
element.mediaMimeType,
|
|
@@ -806,17 +806,17 @@ function Badge({
|
|
|
806
806
|
"div",
|
|
807
807
|
{
|
|
808
808
|
className: `absolute inset-0 flex flex-col items-center justify-center ${isMissing ? "gap-1" : ""}`,
|
|
809
|
-
...{ [
|
|
809
|
+
...{ [chunkBQJU7ZG6_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
|
|
810
810
|
children: [
|
|
811
811
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
812
812
|
FallbackIcon,
|
|
813
813
|
{
|
|
814
|
-
paths:
|
|
814
|
+
paths: chunkBQJU7ZG6_js.mediaFallbackIcon(visual, element.mediaType),
|
|
815
815
|
size: isMissing ? 32 : 48,
|
|
816
816
|
className: isMissing ? "text-white/60" : "text-white/80 drop-shadow-md"
|
|
817
817
|
}
|
|
818
818
|
),
|
|
819
|
-
isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(
|
|
819
|
+
isMissing && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-white/60", children: label(chunkBQJU7ZG6_js.mediaFallbackLabelKey(visual, element.mediaType)) })
|
|
820
820
|
]
|
|
821
821
|
}
|
|
822
822
|
);
|
|
@@ -833,17 +833,17 @@ function Placeholder({
|
|
|
833
833
|
"div",
|
|
834
834
|
{
|
|
835
835
|
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"}`,
|
|
836
|
-
...{ [
|
|
836
|
+
...{ [chunkBQJU7ZG6_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
|
|
837
837
|
children: [
|
|
838
838
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
839
839
|
FallbackIcon,
|
|
840
840
|
{
|
|
841
|
-
paths:
|
|
841
|
+
paths: chunkBQJU7ZG6_js.mediaFallbackIcon(visual, element.mediaType),
|
|
842
842
|
size: isMissing ? 36 : element.mediaType === "audio" ? 24 : 32,
|
|
843
843
|
className: isMissing ? "text-white/50" : "text-white/70"
|
|
844
844
|
}
|
|
845
845
|
),
|
|
846
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(
|
|
846
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(chunkBQJU7ZG6_js.mediaFallbackLabelKey(visual, element.mediaType)) })
|
|
847
847
|
]
|
|
848
848
|
}
|
|
849
849
|
);
|
|
@@ -853,7 +853,7 @@ function renderMediaFallback({
|
|
|
853
853
|
posterUrl,
|
|
854
854
|
surface
|
|
855
855
|
}) {
|
|
856
|
-
const visual =
|
|
856
|
+
const visual = chunkBQJU7ZG6_js.mediaFallbackVisual(surface, {
|
|
857
857
|
hasPoster: Boolean(posterUrl),
|
|
858
858
|
missing: element.mediaMissing === true
|
|
859
859
|
});
|
|
@@ -882,7 +882,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
882
882
|
const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
|
|
883
883
|
const trimFragment = buildTrimFragment(element);
|
|
884
884
|
const posterUrl = element.posterFrameData ?? void 0;
|
|
885
|
-
const shouldLoop =
|
|
885
|
+
const shouldLoop = chunkBQJU7ZG6_js.mediaPlaybackAttributes(element).loop;
|
|
886
886
|
const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
|
|
887
887
|
const isFullScreen = options?.fullScreen === true;
|
|
888
888
|
const isPresentationMode = options?.isPresentationMode === true;
|
|
@@ -965,19 +965,19 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
965
965
|
|
|
966
966
|
// src/viewer/utils/text-utils.tsx
|
|
967
967
|
function getTextStyleForElement(element, fallbackColor) {
|
|
968
|
-
return
|
|
968
|
+
return chunkBQJU7ZG6_js.buildTextBlockStyle(element, { fallbackColor });
|
|
969
969
|
}
|
|
970
970
|
|
|
971
971
|
// src/viewer/utils/text-layout.tsx
|
|
972
972
|
function getTextLayoutStyle(element) {
|
|
973
|
-
if (!
|
|
973
|
+
if (!chunkBQJU7ZG6_js.hasTextProperties(element)) {
|
|
974
974
|
return {};
|
|
975
975
|
}
|
|
976
|
-
const writingMode =
|
|
977
|
-
const textOrientation =
|
|
978
|
-
const verticalDirection =
|
|
976
|
+
const writingMode = chunkBQJU7ZG6_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
977
|
+
const textOrientation = chunkBQJU7ZG6_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
978
|
+
const verticalDirection = chunkBQJU7ZG6_js.toCssVerticalDirection(element.textStyle?.textDirection);
|
|
979
979
|
const textWrapNone = element.textStyle?.textWrap === "none";
|
|
980
|
-
const hasParagraphIndents =
|
|
980
|
+
const hasParagraphIndents = chunkBQJU7ZG6_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
|
|
981
981
|
const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
|
|
982
982
|
const paragraphIndent = element.textStyle?.paragraphIndent;
|
|
983
983
|
const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
|
|
@@ -986,7 +986,7 @@ function getTextLayoutStyle(element) {
|
|
|
986
986
|
const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
|
|
987
987
|
return {
|
|
988
988
|
// Columns / flex anchoring / anchorCtr / tab-size / kinsoku, from shared.
|
|
989
|
-
...
|
|
989
|
+
...chunkBQJU7ZG6_js.buildTextBodyLayoutStyle(element),
|
|
990
990
|
// Body inset only. Paragraph spacing (spcBef/spcAft) is applied
|
|
991
991
|
// per-paragraph by the paragraph renderer, not collapsed here.
|
|
992
992
|
paddingTop: bodyTop,
|
|
@@ -1005,7 +1005,7 @@ function getTextLayoutStyle(element) {
|
|
|
1005
1005
|
|
|
1006
1006
|
// src/viewer/utils/text-effects.tsx
|
|
1007
1007
|
function buildTextBody3DSceneStyle2(textStyle) {
|
|
1008
|
-
return
|
|
1008
|
+
return chunkBQJU7ZG6_js.buildTextBody3DSceneStyle(textStyle);
|
|
1009
1009
|
}
|
|
1010
1010
|
|
|
1011
1011
|
// src/viewer/utils/text-warp-css.tsx
|
|
@@ -1190,13 +1190,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1190
1190
|
if (!subElementAnimStates || subElementAnimStates.size === 0) {
|
|
1191
1191
|
return renderedSegments;
|
|
1192
1192
|
}
|
|
1193
|
-
const paraKey = `${elementId}${
|
|
1193
|
+
const paraKey = `${elementId}${chunkBQJU7ZG6_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
|
|
1194
1194
|
const paraState = subElementAnimStates.get(paraKey);
|
|
1195
1195
|
if (paraState) {
|
|
1196
1196
|
const style = buildAnimStyle(paraState);
|
|
1197
1197
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
|
|
1198
1198
|
}
|
|
1199
|
-
const spec =
|
|
1199
|
+
const spec = chunkBQJU7ZG6_js.buildTextBuildSpec(
|
|
1200
1200
|
elementId,
|
|
1201
1201
|
paraIndex,
|
|
1202
1202
|
paraRuns.map((run) => ({ text: run.text, style: run })),
|
|
@@ -1214,7 +1214,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1214
1214
|
"span",
|
|
1215
1215
|
{
|
|
1216
1216
|
"data-anim-id": span.animId,
|
|
1217
|
-
style:
|
|
1217
|
+
style: chunkBQJU7ZG6_js.textBuildSpanStyle(span),
|
|
1218
1218
|
children: content
|
|
1219
1219
|
},
|
|
1220
1220
|
span.animId
|
|
@@ -1358,10 +1358,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1358
1358
|
if (!needsScriptFonts || !text) {
|
|
1359
1359
|
return text;
|
|
1360
1360
|
}
|
|
1361
|
-
const runs =
|
|
1361
|
+
const runs = chunkBQJU7ZG6_js.segmentByScript(text);
|
|
1362
1362
|
if (runs.length <= 1) {
|
|
1363
1363
|
if (runs.length === 1) {
|
|
1364
|
-
const font =
|
|
1364
|
+
const font = chunkBQJU7ZG6_js.resolveFontForScript(runs[0].script, scriptFonts);
|
|
1365
1365
|
if (font && font !== baseFontFamily) {
|
|
1366
1366
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { ...nestedStyle, fontFamily: font }, children: text });
|
|
1367
1367
|
}
|
|
@@ -1369,7 +1369,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1369
1369
|
return text;
|
|
1370
1370
|
}
|
|
1371
1371
|
return runs.map((run, i) => {
|
|
1372
|
-
const font =
|
|
1372
|
+
const font = chunkBQJU7ZG6_js.resolveFontForScript(run.script, scriptFonts);
|
|
1373
1373
|
if (!font || font === baseFontFamily) {
|
|
1374
1374
|
return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
|
|
1375
1375
|
}
|
|
@@ -1380,7 +1380,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
|
|
|
1380
1380
|
if (!metric || !text) {
|
|
1381
1381
|
return inner(text, keyPrefix);
|
|
1382
1382
|
}
|
|
1383
|
-
const pieces =
|
|
1383
|
+
const pieces = chunkBQJU7ZG6_js.splitRunForMetrics(text, metric.font);
|
|
1384
1384
|
if (pieces.length <= 1) {
|
|
1385
1385
|
return inner(text, keyPrefix);
|
|
1386
1386
|
}
|
|
@@ -1389,7 +1389,7 @@ function renderMetricPieces(text, metric, keyPrefix, inner) {
|
|
|
1389
1389
|
{
|
|
1390
1390
|
style: {
|
|
1391
1391
|
...metric.nestedStyle,
|
|
1392
|
-
letterSpacing:
|
|
1392
|
+
letterSpacing: chunkBQJU7ZG6_js.pieceLetterSpacing(metric.authoredPx, piece.tracking)
|
|
1393
1393
|
},
|
|
1394
1394
|
children: inner(piece.text, `${keyPrefix}-w${i}`)
|
|
1395
1395
|
},
|
|
@@ -1476,8 +1476,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
|
|
|
1476
1476
|
});
|
|
1477
1477
|
}
|
|
1478
1478
|
function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
|
|
1479
|
-
const mathml =
|
|
1480
|
-
const safeMathml = mathml ?
|
|
1479
|
+
const mathml = chunkBQJU7ZG6_js.convertOmmlToMathMl(equationXml);
|
|
1480
|
+
const safeMathml = mathml ? chunkBQJU7ZG6_js.sanitizeMathMl(mathml) : "";
|
|
1481
1481
|
const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1482
1482
|
"span",
|
|
1483
1483
|
{
|
|
@@ -1537,7 +1537,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1537
1537
|
const segmentStyle = segment?.style ?? {};
|
|
1538
1538
|
const textValue = run.text;
|
|
1539
1539
|
const lines = textValue.split("\n");
|
|
1540
|
-
const resolvedSegmentColor =
|
|
1540
|
+
const resolvedSegmentColor = chunkBQJU7ZG6_js.normalizeHexColor(
|
|
1541
1541
|
segmentStyle.color || element.textStyle?.color,
|
|
1542
1542
|
run.hyperlink ? HYPERLINK_COLOR : fallbackColor
|
|
1543
1543
|
);
|
|
@@ -1545,16 +1545,16 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1545
1545
|
const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
|
|
1546
1546
|
const baselineFontScale = baselineFraction !== 0 ? BASELINE_FONT_SCALE : 1;
|
|
1547
1547
|
const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
|
|
1548
|
-
const baseFontSize = rawFontSize *
|
|
1548
|
+
const baseFontSize = rawFontSize * chunkBQJU7ZG6_js.resolveAutoFitFontScale(element.textStyle);
|
|
1549
1549
|
const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
|
|
1550
1550
|
const baseFontSizePt = baseFontSize * (72 / 96);
|
|
1551
1551
|
const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
|
|
1552
1552
|
const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
|
|
1553
|
-
const baseFontFamily = rawFontFamily ?
|
|
1553
|
+
const baseFontFamily = rawFontFamily ? chunkBQJU7ZG6_js.getSubstituteFontFamily(
|
|
1554
1554
|
rawFontFamily,
|
|
1555
|
-
|
|
1555
|
+
chunkBQJU7ZG6_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
|
|
1556
1556
|
) : DEFAULT_FONT_FAMILY2;
|
|
1557
|
-
const scriptFont = (name, panose) => name ?
|
|
1557
|
+
const scriptFont = (name, panose) => name ? chunkBQJU7ZG6_js.getSubstituteFontFamily(name, chunkBQJU7ZG6_js.parsePanoseString(panose)) : baseFontFamily;
|
|
1558
1558
|
const scriptFonts = {
|
|
1559
1559
|
latin: baseFontFamily,
|
|
1560
1560
|
eastAsia: scriptFont(
|
|
@@ -1570,7 +1570,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1570
1570
|
segmentStyle.symbolFontPanose ?? element.textStyle?.symbolFontPanose
|
|
1571
1571
|
)
|
|
1572
1572
|
};
|
|
1573
|
-
const needsScriptFonts =
|
|
1573
|
+
const needsScriptFonts = chunkBQJU7ZG6_js.hasDistinctScriptFonts(scriptFonts);
|
|
1574
1574
|
const authoredLetterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? segmentStyle.characterSpacing / 100 * (96 / 72) : 0;
|
|
1575
1575
|
const metricFont = {
|
|
1576
1576
|
fontFamily: baseFontFamily,
|
|
@@ -1578,7 +1578,7 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1578
1578
|
bold: Boolean(segmentStyle.bold),
|
|
1579
1579
|
italic: Boolean(segmentStyle.italic)
|
|
1580
1580
|
};
|
|
1581
|
-
const nestedStyle =
|
|
1581
|
+
const nestedStyle = chunkBQJU7ZG6_js.nestedTextDecorationStyle(run.style);
|
|
1582
1582
|
const metricContext = { font: metricFont, authoredPx: authoredLetterSpacing, nestedStyle };
|
|
1583
1583
|
const spanStyle = { ...run.style };
|
|
1584
1584
|
spanStyle.color = resolvedSegmentColor;
|
|
@@ -1586,11 +1586,11 @@ function renderParagraphRun(run, segment, ctx, keySuffix = "") {
|
|
|
1586
1586
|
spanStyle.fontFamily = baseFontFamily;
|
|
1587
1587
|
spanStyle.verticalAlign = baselineShift;
|
|
1588
1588
|
spanStyle.fontKerning = fontKerning;
|
|
1589
|
-
spanStyle.letterSpacing =
|
|
1589
|
+
spanStyle.letterSpacing = chunkBQJU7ZG6_js.pieceLetterSpacing(
|
|
1590
1590
|
authoredLetterSpacing,
|
|
1591
|
-
|
|
1591
|
+
chunkBQJU7ZG6_js.resolveMetricTrackingPx(textValue, metricFont)
|
|
1592
1592
|
);
|
|
1593
|
-
const hollow =
|
|
1593
|
+
const hollow = chunkBQJU7ZG6_js.hollowTextFillStyle(segmentStyle, {
|
|
1594
1594
|
color: resolvedSegmentColor,
|
|
1595
1595
|
textStroke: typeof spanStyle.WebkitTextStroke === "string" ? spanStyle.WebkitTextStroke : void 0
|
|
1596
1596
|
});
|
|
@@ -1687,7 +1687,7 @@ function renderHyperlink(run, spanNode, key, ctx) {
|
|
|
1687
1687
|
);
|
|
1688
1688
|
}
|
|
1689
1689
|
function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
|
|
1690
|
-
if (!
|
|
1690
|
+
if (!chunkBQJU7ZG6_js.hasTextProperties(element)) {
|
|
1691
1691
|
return emptyFallback || null;
|
|
1692
1692
|
}
|
|
1693
1693
|
const segments = segmentOverrides ?? element.textSegments;
|
|
@@ -1697,7 +1697,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
1697
1697
|
}
|
|
1698
1698
|
return element.text || emptyFallback || "";
|
|
1699
1699
|
}
|
|
1700
|
-
const paragraphs =
|
|
1700
|
+
const paragraphs = chunkBQJU7ZG6_js.buildParagraphs(element, fieldContext, segmentOverrides);
|
|
1701
1701
|
const ctx = {
|
|
1702
1702
|
element,
|
|
1703
1703
|
fallbackColor,
|
|
@@ -1830,13 +1830,13 @@ function hexToRgbUnit(hex) {
|
|
|
1830
1830
|
};
|
|
1831
1831
|
}
|
|
1832
1832
|
function getDuotoneColors(element) {
|
|
1833
|
-
if (!
|
|
1833
|
+
if (!chunkBQJU7ZG6_js.isImageLikeElement(element)) {
|
|
1834
1834
|
return void 0;
|
|
1835
1835
|
}
|
|
1836
1836
|
return element.imageEffects?.duotone;
|
|
1837
1837
|
}
|
|
1838
1838
|
function buildLineShadowCss(element) {
|
|
1839
|
-
if (!
|
|
1839
|
+
if (!chunkBQJU7ZG6_js.hasShapeProperties(element)) {
|
|
1840
1840
|
return void 0;
|
|
1841
1841
|
}
|
|
1842
1842
|
const ss = element.shapeStyle;
|
|
@@ -1847,13 +1847,13 @@ function buildLineShadowCss(element) {
|
|
|
1847
1847
|
const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
|
|
1848
1848
|
const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
|
|
1849
1849
|
const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
|
|
1850
|
-
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${
|
|
1851
|
-
|
|
1850
|
+
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkBQJU7ZG6_js.colorWithOpacity(
|
|
1851
|
+
chunkBQJU7ZG6_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
|
|
1852
1852
|
opacity
|
|
1853
1853
|
)}`;
|
|
1854
1854
|
}
|
|
1855
1855
|
function buildLineGlowFilter(element) {
|
|
1856
|
-
if (!
|
|
1856
|
+
if (!chunkBQJU7ZG6_js.hasShapeProperties(element)) {
|
|
1857
1857
|
return void 0;
|
|
1858
1858
|
}
|
|
1859
1859
|
const ss = element.shapeStyle;
|
|
@@ -1862,14 +1862,14 @@ function buildLineGlowFilter(element) {
|
|
|
1862
1862
|
}
|
|
1863
1863
|
const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
|
|
1864
1864
|
const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
|
|
1865
|
-
const glowCol =
|
|
1865
|
+
const glowCol = chunkBQJU7ZG6_js.colorWithOpacity(chunkBQJU7ZG6_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
|
|
1866
1866
|
return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
|
|
1867
1867
|
}
|
|
1868
1868
|
function getDagDuotoneFilterId(elementId) {
|
|
1869
1869
|
return `dag-duotone-${elementId}`;
|
|
1870
1870
|
}
|
|
1871
1871
|
function hasDagDuotoneEffect(element) {
|
|
1872
|
-
if (!
|
|
1872
|
+
if (!chunkBQJU7ZG6_js.hasShapeProperties(element)) {
|
|
1873
1873
|
return false;
|
|
1874
1874
|
}
|
|
1875
1875
|
return Boolean(element.shapeStyle?.dagDuotone);
|
|
@@ -1921,7 +1921,7 @@ function renderDagDuotoneSvgFilter(elementId, color1, color2) {
|
|
|
1921
1921
|
|
|
1922
1922
|
// src/viewer/utils/shape-visual-3d.ts
|
|
1923
1923
|
function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
|
|
1924
|
-
return
|
|
1924
|
+
return chunkBQJU7ZG6_js.build3DExtrusionData(
|
|
1925
1925
|
shape3d,
|
|
1926
1926
|
scene3d,
|
|
1927
1927
|
fillColor,
|
|
@@ -1930,7 +1930,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
|
|
|
1930
1930
|
);
|
|
1931
1931
|
}
|
|
1932
1932
|
function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
|
|
1933
|
-
|
|
1933
|
+
chunkBQJU7ZG6_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
|
|
1934
1934
|
}
|
|
1935
1935
|
|
|
1936
1936
|
// src/viewer/utils/shape-visual-style.ts
|
|
@@ -1938,13 +1938,13 @@ function rendersCustomVectorPath(element) {
|
|
|
1938
1938
|
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;
|
|
1939
1939
|
}
|
|
1940
1940
|
function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _strokeColor, animatesFill, animatesStroke, parentGroupFill) {
|
|
1941
|
-
if (!
|
|
1941
|
+
if (!chunkBQJU7ZG6_js.hasShapeProperties(element)) {
|
|
1942
1942
|
return {};
|
|
1943
1943
|
}
|
|
1944
1944
|
const ss = element.shapeStyle;
|
|
1945
|
-
const fill = animatesFill ? void 0 :
|
|
1946
|
-
const fx =
|
|
1947
|
-
const stroke =
|
|
1945
|
+
const fill = animatesFill ? void 0 : chunkBQJU7ZG6_js.getComputedFillStyle(element, parentGroupFill);
|
|
1946
|
+
const fx = chunkBQJU7ZG6_js.getComputedEffectStyle(element);
|
|
1947
|
+
const stroke = chunkBQJU7ZG6_js.getComputedStrokeStyle(element);
|
|
1948
1948
|
const base = {
|
|
1949
1949
|
// A gradient fill REPLACES the solid fill, it does not sit on top of it;
|
|
1950
1950
|
// the whole precedence lives in shared's `getComputedFillStyle`.
|
|
@@ -1979,7 +1979,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1979
1979
|
strokeLinecap: stroke.strokeLinecap
|
|
1980
1980
|
};
|
|
1981
1981
|
apply3dEffects2(base, ss?.scene3d, ss?.shape3d, ss?.fillColor ?? fillColor);
|
|
1982
|
-
if (rendersCustomVectorPath(element) ||
|
|
1982
|
+
if (rendersCustomVectorPath(element) || chunkBQJU7ZG6_js.isStrokeOnlyPresetElement(element)) {
|
|
1983
1983
|
base.backgroundColor = "transparent";
|
|
1984
1984
|
base.backgroundImage = void 0;
|
|
1985
1985
|
base.borderWidth = void 0;
|
|
@@ -1990,7 +1990,7 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
1990
1990
|
base.backgroundColor = void 0;
|
|
1991
1991
|
base.backgroundImage = void 0;
|
|
1992
1992
|
}
|
|
1993
|
-
const geometry =
|
|
1993
|
+
const geometry = chunkBQJU7ZG6_js.resolveShapeGeometry(element);
|
|
1994
1994
|
switch (geometry.kind) {
|
|
1995
1995
|
case "bare":
|
|
1996
1996
|
return { backgroundColor: "transparent", borderWidth: 0, borderStyle: "none" };
|
|
@@ -2016,13 +2016,13 @@ function getShapeVisualStyle(element, _hasFill, fillColor, _strokeWidth, _stroke
|
|
|
2016
2016
|
function getConnectorAdjustment(element, key, fallback) {
|
|
2017
2017
|
const direct = element.shapeAdjustments?.[key];
|
|
2018
2018
|
if (typeof direct === "number" && Number.isFinite(direct)) {
|
|
2019
|
-
return
|
|
2019
|
+
return chunkBQJU7ZG6_js.clampUnitInterval(direct / 1e5);
|
|
2020
2020
|
}
|
|
2021
2021
|
const fallbackKey = element.shapeAdjustments?.adj;
|
|
2022
2022
|
if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
|
|
2023
|
-
return
|
|
2023
|
+
return chunkBQJU7ZG6_js.clampUnitInterval(fallbackKey / 1e5);
|
|
2024
2024
|
}
|
|
2025
|
-
return
|
|
2025
|
+
return chunkBQJU7ZG6_js.clampUnitInterval(fallback);
|
|
2026
2026
|
}
|
|
2027
2027
|
function getConnectorPathGeometry(element) {
|
|
2028
2028
|
const width = Math.max(element.width, 0);
|
|
@@ -2155,7 +2155,7 @@ function toHexByte(value) {
|
|
|
2155
2155
|
return clamped.toString(16).padStart(2, "0");
|
|
2156
2156
|
}
|
|
2157
2157
|
function shiftHex(hex, factor, towardsWhite) {
|
|
2158
|
-
const channels =
|
|
2158
|
+
const channels = chunkBQJU7ZG6_js.hexToRgbChannels(hex);
|
|
2159
2159
|
if (!channels) {
|
|
2160
2160
|
return hex;
|
|
2161
2161
|
}
|
|
@@ -2181,7 +2181,7 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
|
|
|
2181
2181
|
const fillOff = subpath.fillMode === "none" || !hasFill;
|
|
2182
2182
|
return {
|
|
2183
2183
|
d: subpath.d,
|
|
2184
|
-
fill: fillOff ? "none" :
|
|
2184
|
+
fill: fillOff ? "none" : chunkBQJU7ZG6_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
|
|
2185
2185
|
stroked: subpath.stroke !== false
|
|
2186
2186
|
};
|
|
2187
2187
|
});
|
|
@@ -2197,11 +2197,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
|
|
|
2197
2197
|
strokePaint,
|
|
2198
2198
|
strokeWidth,
|
|
2199
2199
|
dashArray,
|
|
2200
|
-
lineCap:
|
|
2200
|
+
lineCap: chunkBQJU7ZG6_js.svgLineCap(shapeStyle?.lineCap),
|
|
2201
2201
|
lineJoin,
|
|
2202
2202
|
miterLimit,
|
|
2203
|
-
offsets:
|
|
2204
|
-
widths:
|
|
2203
|
+
offsets: chunkBQJU7ZG6_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
|
|
2204
|
+
widths: chunkBQJU7ZG6_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
|
|
2205
2205
|
};
|
|
2206
2206
|
}
|
|
2207
2207
|
function strokeStrands(d, keyBase, ctx) {
|
|
@@ -2249,9 +2249,9 @@ function gradientDefs(gradient) {
|
|
|
2249
2249
|
}
|
|
2250
2250
|
function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
|
|
2251
2251
|
const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
|
|
2252
|
-
const subpaths = structuredPaths && structuredPaths.length > 0 ?
|
|
2252
|
+
const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkBQJU7ZG6_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
|
|
2253
2253
|
const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
|
|
2254
|
-
const gradientPaint = gradient ?
|
|
2254
|
+
const gradientPaint = gradient ? chunkBQJU7ZG6_js.svgGradientFillRef(gradient) : void 0;
|
|
2255
2255
|
const nodes = [];
|
|
2256
2256
|
if (subpaths && needsPerSubpath) {
|
|
2257
2257
|
const paints = buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
|
|
@@ -2283,7 +2283,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2283
2283
|
"path",
|
|
2284
2284
|
{
|
|
2285
2285
|
d: pathData,
|
|
2286
|
-
fill: animatesFill ? "inherit" : gradientPaint ??
|
|
2286
|
+
fill: animatesFill ? "inherit" : gradientPaint ?? chunkBQJU7ZG6_js.colorWithOpacity(fillColor, fillOpacity),
|
|
2287
2287
|
stroke: "none",
|
|
2288
2288
|
vectorEffect: "non-scaling-stroke"
|
|
2289
2289
|
},
|
|
@@ -2309,14 +2309,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2309
2309
|
);
|
|
2310
2310
|
}
|
|
2311
2311
|
function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2312
|
-
if (!
|
|
2312
|
+
if (!chunkBQJU7ZG6_js.hasShapeProperties(element)) {
|
|
2313
2313
|
return null;
|
|
2314
2314
|
}
|
|
2315
2315
|
const normalizedType = (element.shapeType || "").toLowerCase();
|
|
2316
|
-
const fillPaint = animatesFill ? "inherit" :
|
|
2317
|
-
const strokePaint = animatesStroke ? "inherit" :
|
|
2318
|
-
const dashType =
|
|
2319
|
-
const dashArray =
|
|
2316
|
+
const fillPaint = animatesFill ? "inherit" : chunkBQJU7ZG6_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
|
|
2317
|
+
const strokePaint = animatesStroke ? "inherit" : chunkBQJU7ZG6_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
|
|
2318
|
+
const dashType = chunkBQJU7ZG6_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2319
|
+
const dashArray = chunkBQJU7ZG6_js.getSvgStrokeDasharray(
|
|
2320
2320
|
dashType,
|
|
2321
2321
|
Math.max(strokeWidth, 1),
|
|
2322
2322
|
element.shapeStyle?.customDashSegments
|
|
@@ -2397,21 +2397,21 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2397
2397
|
// container's `background-image` is suppressed for custom geometry, so
|
|
2398
2398
|
// without this the shape fell back to the parser's representative solid
|
|
2399
2399
|
// and lost every fade (issue #132).
|
|
2400
|
-
|
|
2400
|
+
chunkBQJU7ZG6_js.buildSvgGradientDef(element.shapeStyle, element.id)
|
|
2401
2401
|
);
|
|
2402
2402
|
}
|
|
2403
|
-
if (
|
|
2403
|
+
if (chunkBQJU7ZG6_js.isCalloutShape(normalizedType)) {
|
|
2404
2404
|
const width = Math.max(element.width, 1);
|
|
2405
2405
|
const height = Math.max(element.height, 1);
|
|
2406
|
-
const geometry =
|
|
2406
|
+
const geometry = chunkBQJU7ZG6_js.getCalloutLeaderLineGeometry(
|
|
2407
2407
|
normalizedType,
|
|
2408
2408
|
width,
|
|
2409
2409
|
height,
|
|
2410
2410
|
element.shapeAdjustments
|
|
2411
2411
|
);
|
|
2412
2412
|
if (geometry && geometry.points.length >= 2) {
|
|
2413
|
-
const leaderPath =
|
|
2414
|
-
const bounds =
|
|
2413
|
+
const leaderPath = chunkBQJU7ZG6_js.buildCalloutLeaderLineSvgPath(geometry);
|
|
2414
|
+
const bounds = chunkBQJU7ZG6_js.getCalloutViewBoxBounds(width, height, geometry);
|
|
2415
2415
|
const lineStroke = Math.max(strokeWidth, 1);
|
|
2416
2416
|
const offsetLeft = bounds.minX;
|
|
2417
2417
|
const offsetTop = bounds.minY;
|
|
@@ -2474,10 +2474,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2474
2474
|
const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
|
|
2475
2475
|
const endArrowL = element.shapeStyle?.connectorEndArrowLength;
|
|
2476
2476
|
const compoundLine = element.shapeStyle?.compoundLine;
|
|
2477
|
-
const connectorLineCap =
|
|
2477
|
+
const connectorLineCap = chunkBQJU7ZG6_js.svgLineCap(element.shapeStyle?.lineCap);
|
|
2478
2478
|
const hitTargetWidth = Math.max(strokeWidth * 3, 12);
|
|
2479
|
-
const offsets =
|
|
2480
|
-
const widths =
|
|
2479
|
+
const offsets = chunkBQJU7ZG6_js.getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
2480
|
+
const widths = chunkBQJU7ZG6_js.getCompoundLineWidths(compoundLine, strokeWidth);
|
|
2481
2481
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2482
2482
|
"svg",
|
|
2483
2483
|
{
|
|
@@ -2544,15 +2544,15 @@ function parseGradientFillCss(gradFill) {
|
|
|
2544
2544
|
}
|
|
2545
2545
|
const parsed = stops.map((gs) => {
|
|
2546
2546
|
const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
|
|
2547
|
-
const color =
|
|
2548
|
-
const opacity =
|
|
2549
|
-
return { pos, color:
|
|
2547
|
+
const color = chunkBQJU7ZG6_js.parseDrawingColor(gs) ?? "#888888";
|
|
2548
|
+
const opacity = chunkBQJU7ZG6_js.parseDrawingColorOpacity(gs);
|
|
2549
|
+
return { pos, color: chunkBQJU7ZG6_js.colorWithOpacity(color, opacity) };
|
|
2550
2550
|
}).sort((a, b) => a.pos - b.pos);
|
|
2551
2551
|
const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
|
|
2552
2552
|
const lin = gradFill["a:lin"];
|
|
2553
2553
|
if (lin) {
|
|
2554
2554
|
const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
|
|
2555
|
-
const angleDeg = Math.round(
|
|
2555
|
+
const angleDeg = Math.round(chunkBQJU7ZG6_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
|
|
2556
2556
|
return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
|
|
2557
2557
|
}
|
|
2558
2558
|
const path = gradFill["a:path"];
|
|
@@ -2587,8 +2587,8 @@ function parsePatternFillCss(pattFill) {
|
|
|
2587
2587
|
if (!pattFill) {
|
|
2588
2588
|
return void 0;
|
|
2589
2589
|
}
|
|
2590
|
-
const fgColor =
|
|
2591
|
-
const bgColor =
|
|
2590
|
+
const fgColor = chunkBQJU7ZG6_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
|
|
2591
|
+
const bgColor = chunkBQJU7ZG6_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
|
|
2592
2592
|
const preset = String(pattFill["@_prst"] || "ltDnDiag");
|
|
2593
2593
|
switch (preset) {
|
|
2594
2594
|
case "ltHorz":
|
|
@@ -2699,11 +2699,11 @@ function parseCellBorders(cellProperties) {
|
|
|
2699
2699
|
const prstDash = ln["a:prstDash"];
|
|
2700
2700
|
const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
|
|
2701
2701
|
const cssBorderStyle = ooxmlDashToCss(dashVal);
|
|
2702
|
-
const color =
|
|
2702
|
+
const color = chunkBQJU7ZG6_js.parseDrawingColor(ln["a:solidFill"]);
|
|
2703
2703
|
if (color) {
|
|
2704
|
-
const opacity =
|
|
2704
|
+
const opacity = chunkBQJU7ZG6_js.parseDrawingColorOpacity(ln["a:solidFill"]);
|
|
2705
2705
|
const key = `${edge.prefix}`;
|
|
2706
|
-
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${
|
|
2706
|
+
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkBQJU7ZG6_js.colorWithOpacity(color, opacity)}`;
|
|
2707
2707
|
}
|
|
2708
2708
|
}
|
|
2709
2709
|
return borderStyle;
|
|
@@ -2716,7 +2716,7 @@ function parseCellTextEffects(runProps) {
|
|
|
2716
2716
|
const textShadowParts = [];
|
|
2717
2717
|
const outerShdw = effectLst["a:outerShdw"];
|
|
2718
2718
|
if (outerShdw) {
|
|
2719
|
-
const shdwColor =
|
|
2719
|
+
const shdwColor = chunkBQJU7ZG6_js.parseDrawingColor(outerShdw);
|
|
2720
2720
|
if (shdwColor) {
|
|
2721
2721
|
const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
|
|
2722
2722
|
const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
|
|
@@ -2734,7 +2734,7 @@ function parseCellTextEffects(runProps) {
|
|
|
2734
2734
|
}
|
|
2735
2735
|
const glow = effectLst["a:glow"];
|
|
2736
2736
|
if (glow) {
|
|
2737
|
-
const glowColor =
|
|
2737
|
+
const glowColor = chunkBQJU7ZG6_js.parseDrawingColor(glow);
|
|
2738
2738
|
if (glowColor) {
|
|
2739
2739
|
const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
|
|
2740
2740
|
const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
|
|
@@ -2790,7 +2790,8 @@ function parseParagraphAlignment(value) {
|
|
|
2790
2790
|
return "left";
|
|
2791
2791
|
}
|
|
2792
2792
|
function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
2793
|
-
const
|
|
2793
|
+
const { color: _fallbackColor, ...fallbackWithoutColor } = fallbackStyle;
|
|
2794
|
+
const cellStyle = { ...fallbackWithoutColor };
|
|
2794
2795
|
const txBody = cellXml["a:txBody"];
|
|
2795
2796
|
const paragraphs = ensureArrayValue(txBody?.["a:p"]);
|
|
2796
2797
|
const firstParagraph = paragraphs[0];
|
|
@@ -2813,10 +2814,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2813
2814
|
if (runProps?.["@_u"] !== void 0) {
|
|
2814
2815
|
cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
|
|
2815
2816
|
}
|
|
2816
|
-
const runColor =
|
|
2817
|
+
const runColor = chunkBQJU7ZG6_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkBQJU7ZG6_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
|
|
2817
2818
|
if (runColor) {
|
|
2818
|
-
const opacity =
|
|
2819
|
-
cellStyle.color =
|
|
2819
|
+
const opacity = chunkBQJU7ZG6_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
|
|
2820
|
+
cellStyle.color = chunkBQJU7ZG6_js.colorWithOpacity(runColor, opacity);
|
|
2820
2821
|
}
|
|
2821
2822
|
const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
|
|
2822
2823
|
if (fontFamily) {
|
|
@@ -2826,15 +2827,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2826
2827
|
cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
|
|
2827
2828
|
}
|
|
2828
2829
|
const cellProperties = cellXml["a:tcPr"];
|
|
2829
|
-
const cellFill =
|
|
2830
|
+
const cellFill = chunkBQJU7ZG6_js.parseDrawingColor(
|
|
2830
2831
|
cellProperties?.["a:solidFill"],
|
|
2831
2832
|
schemeColorOverrides
|
|
2832
2833
|
);
|
|
2833
2834
|
if (cellFill) {
|
|
2834
|
-
const opacity =
|
|
2835
|
+
const opacity = chunkBQJU7ZG6_js.parseDrawingColorOpacity(
|
|
2835
2836
|
cellProperties?.["a:solidFill"]
|
|
2836
2837
|
);
|
|
2837
|
-
cellStyle.backgroundColor =
|
|
2838
|
+
cellStyle.backgroundColor = chunkBQJU7ZG6_js.colorWithOpacity(cellFill, opacity);
|
|
2838
2839
|
} else {
|
|
2839
2840
|
const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
|
|
2840
2841
|
if (gradCss) {
|
|
@@ -2849,16 +2850,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2849
2850
|
const edgeBorders = parseCellBorders(cellProperties);
|
|
2850
2851
|
Object.assign(cellStyle, edgeBorders);
|
|
2851
2852
|
if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
|
|
2852
|
-
const borderColor =
|
|
2853
|
+
const borderColor = chunkBQJU7ZG6_js.parseDrawingColor(
|
|
2853
2854
|
cellProperties?.["a:lnL"]?.["a:solidFill"],
|
|
2854
2855
|
schemeColorOverrides
|
|
2855
|
-
) ||
|
|
2856
|
+
) || chunkBQJU7ZG6_js.parseDrawingColor(
|
|
2856
2857
|
cellProperties?.["a:lnR"]?.["a:solidFill"],
|
|
2857
2858
|
schemeColorOverrides
|
|
2858
|
-
) ||
|
|
2859
|
+
) || chunkBQJU7ZG6_js.parseDrawingColor(
|
|
2859
2860
|
cellProperties?.["a:lnT"]?.["a:solidFill"],
|
|
2860
2861
|
schemeColorOverrides
|
|
2861
|
-
) ||
|
|
2862
|
+
) || chunkBQJU7ZG6_js.parseDrawingColor(
|
|
2862
2863
|
cellProperties?.["a:lnB"]?.["a:solidFill"],
|
|
2863
2864
|
schemeColorOverrides
|
|
2864
2865
|
);
|
|
@@ -2930,7 +2931,7 @@ function getTableCellBandStyle2(element, rowIndex, cellIndex, rowCount, columnCo
|
|
|
2930
2931
|
if (element.type !== "table") {
|
|
2931
2932
|
return void 0;
|
|
2932
2933
|
}
|
|
2933
|
-
return
|
|
2934
|
+
return chunkBQJU7ZG6_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
|
|
2934
2935
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
2935
2936
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
2936
2937
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -3006,7 +3007,7 @@ function renderTableCellContent(cell, fallbackText) {
|
|
|
3006
3007
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3007
3008
|
"span",
|
|
3008
3009
|
{
|
|
3009
|
-
style: { position: "relative", ...
|
|
3010
|
+
style: { position: "relative", ...chunkBQJU7ZG6_js.cellRunStyle(run) },
|
|
3010
3011
|
children: run.text
|
|
3011
3012
|
},
|
|
3012
3013
|
`r-${index}`
|
|
@@ -3014,7 +3015,7 @@ function renderTableCellContent(cell, fallbackText) {
|
|
|
3014
3015
|
});
|
|
3015
3016
|
}
|
|
3016
3017
|
function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
|
|
3017
|
-
return
|
|
3018
|
+
return chunkBQJU7ZG6_js.getCellDiagonalBorders(style, tableData, pos, {
|
|
3018
3019
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
3019
3020
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
3020
3021
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -3147,7 +3148,7 @@ function TableResizeOverlay({
|
|
|
3147
3148
|
const containerRef = React6.useRef(null);
|
|
3148
3149
|
const [rowBounds, setRowBounds] = React6.useState([]);
|
|
3149
3150
|
const dragRef = React6.useRef(null);
|
|
3150
|
-
const colBoundaries = React6.useMemo(() =>
|
|
3151
|
+
const colBoundaries = React6.useMemo(() => chunkBQJU7ZG6_js.computeColumnBoundaries(columnWidths), [columnWidths]);
|
|
3151
3152
|
const measureRows = React6.useCallback(() => {
|
|
3152
3153
|
const container = containerRef.current;
|
|
3153
3154
|
if (!container) {
|
|
@@ -3194,11 +3195,11 @@ function TableResizeOverlay({
|
|
|
3194
3195
|
const rect = containerRef.current.getBoundingClientRect();
|
|
3195
3196
|
if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
|
|
3196
3197
|
const deltaProp = (e.clientX - drag.startPos) / rect.width;
|
|
3197
|
-
onResizeColumns(
|
|
3198
|
+
onResizeColumns(chunkBQJU7ZG6_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
|
|
3198
3199
|
} else if (drag.type === "row" && onResizeRow) {
|
|
3199
3200
|
const deltaY = e.clientY - drag.startPos;
|
|
3200
|
-
const newHeight =
|
|
3201
|
-
drag.initialRowHeight ??
|
|
3201
|
+
const newHeight = chunkBQJU7ZG6_js.computeResizedRowHeight(
|
|
3202
|
+
drag.initialRowHeight ?? chunkBQJU7ZG6_js.DEFAULT_ROW_HEIGHT,
|
|
3202
3203
|
deltaY
|
|
3203
3204
|
);
|
|
3204
3205
|
onResizeRow(drag.index, newHeight);
|
|
@@ -3236,7 +3237,7 @@ function TableResizeOverlay({
|
|
|
3236
3237
|
e.stopPropagation();
|
|
3237
3238
|
const table = containerRef.current?.querySelector("table");
|
|
3238
3239
|
const tr = table?.querySelectorAll("tbody > tr")[index];
|
|
3239
|
-
const actualHeight = tr?.offsetHeight ??
|
|
3240
|
+
const actualHeight = tr?.offsetHeight ?? chunkBQJU7ZG6_js.DEFAULT_ROW_HEIGHT;
|
|
3240
3241
|
document.body.style.cursor = "row-resize";
|
|
3241
3242
|
document.body.style.userSelect = "none";
|
|
3242
3243
|
dragRef.current = {
|
|
@@ -3283,7 +3284,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3283
3284
|
colorScheme: options?.styleCtx?.theme?.colorScheme,
|
|
3284
3285
|
fontScheme: options?.styleCtx?.theme?.fontScheme
|
|
3285
3286
|
};
|
|
3286
|
-
const cellCss = (cell, rowIndex, cellIndex) =>
|
|
3287
|
+
const cellCss = (cell, rowIndex, cellIndex) => chunkBQJU7ZG6_js.tableCellCss(
|
|
3287
3288
|
tableData,
|
|
3288
3289
|
cell,
|
|
3289
3290
|
{ rowIndex, cellIndex, rowCount, columnCount },
|
|
@@ -3296,7 +3297,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3296
3297
|
}
|
|
3297
3298
|
const first = selectedCell.selectedCells[0];
|
|
3298
3299
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
3299
|
-
return
|
|
3300
|
+
return chunkBQJU7ZG6_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
|
|
3300
3301
|
})();
|
|
3301
3302
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3302
3303
|
TableResizeOverlay,
|
|
@@ -3317,9 +3318,9 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3317
3318
|
{
|
|
3318
3319
|
className: "w-full h-full border-collapse table-fixed",
|
|
3319
3320
|
style: {
|
|
3320
|
-
fontFamily:
|
|
3321
|
+
fontFamily: chunkBQJU7ZG6_js.DEFAULT_FONT_FAMILY,
|
|
3321
3322
|
// `a:tblPr@rtl` mirrors the column order for RTL decks.
|
|
3322
|
-
...
|
|
3323
|
+
...chunkBQJU7ZG6_js.tableContainerCss(tableData)
|
|
3323
3324
|
},
|
|
3324
3325
|
children: [
|
|
3325
3326
|
tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3338,7 +3339,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3338
3339
|
return null;
|
|
3339
3340
|
}
|
|
3340
3341
|
const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
|
|
3341
|
-
const isInMultiSelection =
|
|
3342
|
+
const isInMultiSelection = chunkBQJU7ZG6_js.isCellInRect(rowIndex, cellIndex, selectionRect);
|
|
3342
3343
|
const isCellEditing = isCellSelected && selectedCell?.isEditing;
|
|
3343
3344
|
const diag = getCellDiagonalBorders2(
|
|
3344
3345
|
cell.style,
|
|
@@ -3367,7 +3368,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3367
3368
|
}
|
|
3368
3369
|
event.stopPropagation();
|
|
3369
3370
|
if (event.shiftKey && selectedCell) {
|
|
3370
|
-
const rect =
|
|
3371
|
+
const rect = chunkBQJU7ZG6_js.computeSelectionRect(
|
|
3371
3372
|
selectedCell.rowIndex,
|
|
3372
3373
|
selectedCell.columnIndex,
|
|
3373
3374
|
rowIndex,
|
|
@@ -3377,7 +3378,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3377
3378
|
options?.onSelectCell?.({
|
|
3378
3379
|
rowIndex: selectedCell.rowIndex,
|
|
3379
3380
|
columnIndex: selectedCell.columnIndex,
|
|
3380
|
-
selectedCells:
|
|
3381
|
+
selectedCells: chunkBQJU7ZG6_js.rectToCells(rect)
|
|
3381
3382
|
});
|
|
3382
3383
|
} else {
|
|
3383
3384
|
options?.onSelectCell?.({
|
|
@@ -3453,7 +3454,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3453
3454
|
}
|
|
3454
3455
|
const first = selectedCell.selectedCells[0];
|
|
3455
3456
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
3456
|
-
return
|
|
3457
|
+
return chunkBQJU7ZG6_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
|
|
3457
3458
|
})();
|
|
3458
3459
|
const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
|
|
3459
3460
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3475,9 +3476,9 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3475
3476
|
{
|
|
3476
3477
|
className: "w-full h-full border-collapse table-fixed",
|
|
3477
3478
|
style: {
|
|
3478
|
-
fontFamily:
|
|
3479
|
+
fontFamily: chunkBQJU7ZG6_js.DEFAULT_FONT_FAMILY,
|
|
3479
3480
|
// `a:tblPr@rtl` mirrors the column order for RTL decks.
|
|
3480
|
-
...
|
|
3481
|
+
...chunkBQJU7ZG6_js.tableContainerCss(tableEl.tableData)
|
|
3481
3482
|
},
|
|
3482
3483
|
children: [
|
|
3483
3484
|
parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3527,9 +3528,14 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3527
3528
|
options?.styleCtx
|
|
3528
3529
|
);
|
|
3529
3530
|
const mergedStyle = {
|
|
3531
|
+
// Lowest-priority fallback: `xmlCellStyle` never carries a
|
|
3532
|
+
// `color` of its own (see `extractTableCellStyle`), so this
|
|
3533
|
+
// is the only source when neither the table style band nor
|
|
3534
|
+
// an explicit run/cell colour applies.
|
|
3535
|
+
color: textStyle.color,
|
|
3530
3536
|
...bandStyle,
|
|
3531
3537
|
...xmlCellStyle,
|
|
3532
|
-
...tdCellOverride ?
|
|
3538
|
+
...tdCellOverride ? chunkBQJU7ZG6_js.cellStyleToCss(tdCellOverride) : void 0,
|
|
3533
3539
|
...diag ? { position: "relative" } : void 0
|
|
3534
3540
|
};
|
|
3535
3541
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3539,7 +3545,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3539
3545
|
"border px-1 py-0.5 align-top",
|
|
3540
3546
|
isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
|
|
3541
3547
|
selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
|
|
3542
|
-
|
|
3548
|
+
chunkBQJU7ZG6_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
|
|
3543
3549
|
),
|
|
3544
3550
|
colSpan,
|
|
3545
3551
|
rowSpan: rSpan,
|
|
@@ -3550,7 +3556,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3550
3556
|
}
|
|
3551
3557
|
event.stopPropagation();
|
|
3552
3558
|
if (event.shiftKey && selectedCell && tableEl.tableData) {
|
|
3553
|
-
const rect =
|
|
3559
|
+
const rect = chunkBQJU7ZG6_js.computeSelectionRect(
|
|
3554
3560
|
selectedCell.rowIndex,
|
|
3555
3561
|
selectedCell.columnIndex,
|
|
3556
3562
|
rowIndex,
|
|
@@ -3560,7 +3566,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3560
3566
|
options?.onSelectCell?.({
|
|
3561
3567
|
rowIndex: selectedCell.rowIndex,
|
|
3562
3568
|
columnIndex: selectedCell.columnIndex,
|
|
3563
|
-
selectedCells:
|
|
3569
|
+
selectedCells: chunkBQJU7ZG6_js.rectToCells(rect)
|
|
3564
3570
|
});
|
|
3565
3571
|
} else {
|
|
3566
3572
|
options?.onSelectCell?.({
|
|
@@ -3619,23 +3625,23 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3619
3625
|
);
|
|
3620
3626
|
}
|
|
3621
3627
|
function partAttrs(part) {
|
|
3622
|
-
return part ?
|
|
3628
|
+
return part ? chunkBQJU7ZG6_js.chartPartToAttrs(part) : void 0;
|
|
3623
3629
|
}
|
|
3624
3630
|
function resolveReactPalette(chartData) {
|
|
3625
3631
|
if (chartData.colorPalette && chartData.colorPalette.length > 0) {
|
|
3626
3632
|
return chartData.colorPalette;
|
|
3627
3633
|
}
|
|
3628
|
-
return [...
|
|
3634
|
+
return [...chunkBQJU7ZG6_js.getChartStylePalette(chartData.style?.styleId)];
|
|
3629
3635
|
}
|
|
3630
3636
|
function buildReactChartViewModel(element) {
|
|
3631
3637
|
if (element.type !== "chart" || !element.chartData) {
|
|
3632
|
-
return
|
|
3638
|
+
return chunkBQJU7ZG6_js.buildChartViewModel(element);
|
|
3633
3639
|
}
|
|
3634
3640
|
const palette = resolveReactPalette(element.chartData), themedElement = {
|
|
3635
3641
|
...element,
|
|
3636
3642
|
chartData: { ...element.chartData, colorPalette: palette }
|
|
3637
3643
|
};
|
|
3638
|
-
return
|
|
3644
|
+
return chunkBQJU7ZG6_js.buildChartViewModel(themedElement);
|
|
3639
3645
|
}
|
|
3640
3646
|
function renderPrimitive(prim, key) {
|
|
3641
3647
|
switch (prim.kind) {
|
|
@@ -3782,7 +3788,7 @@ function renderText(t, key) {
|
|
|
3782
3788
|
);
|
|
3783
3789
|
}
|
|
3784
3790
|
function renderChartViewModel(elementId, vm, preserveAspectRatio = "none") {
|
|
3785
|
-
const legendItems =
|
|
3791
|
+
const legendItems = chunkBQJU7ZG6_js.computeChartLegendLayout(vm);
|
|
3786
3792
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3787
3793
|
"svg",
|
|
3788
3794
|
{
|
|
@@ -3869,11 +3875,11 @@ function renderChartElement(element) {
|
|
|
3869
3875
|
if (!chartData || chartData.series.length === 0) {
|
|
3870
3876
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk6CPUGAK7_js.translationsEn["pptx.chart.heading"] });
|
|
3871
3877
|
}
|
|
3872
|
-
const kind =
|
|
3878
|
+
const kind = chunkBQJU7ZG6_js.resolveChartKind(chartData.chartType ?? "bar");
|
|
3873
3879
|
return renderChartViewModel(
|
|
3874
3880
|
element.id,
|
|
3875
3881
|
buildReactChartViewModel(element),
|
|
3876
|
-
|
|
3882
|
+
chunkBQJU7ZG6_js.chartPreserveAspectRatio(kind)
|
|
3877
3883
|
);
|
|
3878
3884
|
}
|
|
3879
3885
|
|
|
@@ -3893,14 +3899,14 @@ function buildNotesPdf(pages) {
|
|
|
3893
3899
|
notes: page.notes,
|
|
3894
3900
|
slideNumber: page.slideNumber
|
|
3895
3901
|
}));
|
|
3896
|
-
const bytes =
|
|
3902
|
+
const bytes = chunkBQJU7ZG6_js.buildNotesPdfBytes(images, meta);
|
|
3897
3903
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
3898
3904
|
return URL.createObjectURL(blob);
|
|
3899
3905
|
}
|
|
3900
3906
|
|
|
3901
3907
|
// src/viewer/utils/pdf-builder-slides.ts
|
|
3902
3908
|
function buildPdfFromImageData(images) {
|
|
3903
|
-
const bytes =
|
|
3909
|
+
const bytes = chunkBQJU7ZG6_js.buildSlidesPdfBytes(images);
|
|
3904
3910
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
3905
3911
|
return URL.createObjectURL(blob);
|
|
3906
3912
|
}
|
|
@@ -3909,7 +3915,7 @@ function buildPdfFromImageData(images) {
|
|
|
3909
3915
|
var activePreview = null;
|
|
3910
3916
|
function startPreviewAnimation(elementId, preset, options) {
|
|
3911
3917
|
stopPreviewAnimation();
|
|
3912
|
-
const descriptor =
|
|
3918
|
+
const descriptor = chunkBQJU7ZG6_js.buildPreviewAnimation(preset, options);
|
|
3913
3919
|
if (!descriptor) {
|
|
3914
3920
|
return;
|
|
3915
3921
|
}
|
|
@@ -3922,7 +3928,7 @@ function startMotionPathPreview(elementId, path, options) {
|
|
|
3922
3928
|
return;
|
|
3923
3929
|
}
|
|
3924
3930
|
const stage = domEl.offsetParent;
|
|
3925
|
-
const descriptor =
|
|
3931
|
+
const descriptor = chunkBQJU7ZG6_js.buildMotionPathPreview({
|
|
3926
3932
|
path,
|
|
3927
3933
|
slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
|
|
3928
3934
|
slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,
|