pptx-react-viewer 2.19.1 → 2.19.2
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 +6 -0
- package/dist/{AiChatPanel-JSTZ6W7R.js → AiChatPanel-AXR77RD4.js} +23 -23
- package/dist/AiChatPanel-AXR77RD4.js.br +0 -0
- package/dist/AiChatPanel-AXR77RD4.js.gz +0 -0
- package/dist/{AiChatPanel-GRAIPSG3.mjs → AiChatPanel-YSU5335E.mjs} +3 -3
- package/dist/AiChatPanel-YSU5335E.mjs.br +0 -0
- package/dist/AiChatPanel-YSU5335E.mjs.gz +0 -0
- package/dist/{Model3DScene-FXDA7OII.mjs → Model3DScene-6CTGUN5U.mjs} +1 -1
- package/dist/Model3DScene-6CTGUN5U.mjs.br +0 -0
- package/dist/Model3DScene-6CTGUN5U.mjs.gz +0 -0
- package/dist/{Model3DScene-WLRZXJHN.js → Model3DScene-NM45GVMN.js} +2 -2
- package/dist/Model3DScene-NM45GVMN.js.br +0 -0
- package/dist/Model3DScene-NM45GVMN.js.gz +0 -0
- package/dist/{chunk-PIJAFM4B.js → chunk-AYQYOPPU.js} +146 -146
- package/dist/chunk-AYQYOPPU.js.br +0 -0
- package/dist/chunk-AYQYOPPU.js.gz +0 -0
- package/dist/{chunk-T7BIRNE4.js → chunk-C7XKYQEW.js} +41 -2
- package/dist/chunk-C7XKYQEW.js.br +0 -0
- package/dist/{chunk-T7BIRNE4.js.gz → chunk-C7XKYQEW.js.gz} +0 -0
- package/dist/{chunk-KQGS6A5J.mjs → chunk-EQ3W73I7.mjs} +1 -1
- package/dist/chunk-EQ3W73I7.mjs.br +0 -0
- package/dist/chunk-EQ3W73I7.mjs.gz +0 -0
- package/dist/{chunk-WGXQXHCS.mjs → chunk-ERDUPMYL.mjs} +1 -1
- package/dist/chunk-ERDUPMYL.mjs.br +0 -0
- package/dist/chunk-ERDUPMYL.mjs.gz +0 -0
- package/dist/{chunk-SCGIXXN5.js → chunk-HWMWR7D6.js} +3 -3
- package/dist/chunk-HWMWR7D6.js.br +0 -0
- package/dist/chunk-HWMWR7D6.js.gz +0 -0
- package/dist/{chunk-B55E3KXL.mjs → chunk-IJSPE6Z6.mjs} +55 -7
- package/dist/chunk-IJSPE6Z6.mjs.br +0 -0
- package/dist/chunk-IJSPE6Z6.mjs.gz +0 -0
- package/dist/{chunk-PNR3J26S.mjs → chunk-J4KGFXAM.mjs} +40 -3
- package/dist/chunk-J4KGFXAM.mjs.br +0 -0
- package/dist/{chunk-PNR3J26S.mjs.gz → chunk-J4KGFXAM.mjs.gz} +0 -0
- package/dist/{chunk-LMTUC7U7.js → chunk-OE4DTBMB.js} +372 -372
- package/dist/chunk-OE4DTBMB.js.br +0 -0
- package/dist/chunk-OE4DTBMB.js.gz +0 -0
- package/dist/{chunk-TPC65IB2.js → chunk-PHEJ2UKP.js} +1066 -1018
- package/dist/chunk-PHEJ2UKP.js.br +0 -0
- package/dist/chunk-PHEJ2UKP.js.gz +0 -0
- package/dist/{chunk-5ZQ3ZQ3M.mjs → chunk-PU3OPA6D.mjs} +2 -2
- package/dist/chunk-PU3OPA6D.mjs.br +0 -0
- package/dist/chunk-PU3OPA6D.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.d.ts +30 -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/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.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-GRAIPSG3.mjs.br +0 -0
- package/dist/AiChatPanel-GRAIPSG3.mjs.gz +0 -0
- package/dist/AiChatPanel-JSTZ6W7R.js.br +0 -0
- package/dist/AiChatPanel-JSTZ6W7R.js.gz +0 -0
- package/dist/Model3DScene-FXDA7OII.mjs.br +0 -0
- package/dist/Model3DScene-FXDA7OII.mjs.gz +0 -0
- package/dist/Model3DScene-WLRZXJHN.js.br +0 -0
- package/dist/Model3DScene-WLRZXJHN.js.gz +0 -0
- package/dist/chunk-5ZQ3ZQ3M.mjs.br +0 -0
- package/dist/chunk-5ZQ3ZQ3M.mjs.gz +0 -0
- package/dist/chunk-B55E3KXL.mjs.br +0 -0
- package/dist/chunk-B55E3KXL.mjs.gz +0 -0
- package/dist/chunk-KQGS6A5J.mjs.br +0 -0
- package/dist/chunk-KQGS6A5J.mjs.gz +0 -0
- package/dist/chunk-LMTUC7U7.js.br +0 -0
- package/dist/chunk-LMTUC7U7.js.gz +0 -0
- package/dist/chunk-PIJAFM4B.js.br +0 -0
- package/dist/chunk-PIJAFM4B.js.gz +0 -0
- package/dist/chunk-PNR3J26S.mjs.br +0 -0
- package/dist/chunk-SCGIXXN5.js.br +0 -0
- package/dist/chunk-SCGIXXN5.js.gz +0 -0
- package/dist/chunk-T7BIRNE4.js.br +0 -0
- package/dist/chunk-TPC65IB2.js.br +0 -0
- package/dist/chunk-TPC65IB2.js.gz +0 -0
- package/dist/chunk-WGXQXHCS.mjs.br +0 -0
- package/dist/chunk-WGXQXHCS.mjs.gz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkMVKRI3CZ_js = require('./chunk-MVKRI3CZ.js');
|
|
4
|
-
var
|
|
4
|
+
var chunkC7XKYQEW_js = require('./chunk-C7XKYQEW.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 chunkC7XKYQEW_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 chunkC7XKYQEW_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 = chunkC7XKYQEW_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 = chunkC7XKYQEW_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 (!chunkC7XKYQEW_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 (!chunkC7XKYQEW_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 = chunkC7XKYQEW_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 = chunkC7XKYQEW_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
|
+
...chunkC7XKYQEW_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 (!chunkC7XKYQEW_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 chunkC7XKYQEW_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 chunkC7XKYQEW_js.runMediaCommand(
|
|
530
530
|
command,
|
|
531
|
-
(targetId) => registry.get(targetId) ??
|
|
531
|
+
(targetId) => registry.get(targetId) ?? chunkC7XKYQEW_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
|
+
} = chunkC7XKYQEW_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
|
+
chunkC7XKYQEW_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
|
+
...{ [chunkC7XKYQEW_js.MEDIA_CHROME_ATTRIBUTE]: visual.badge },
|
|
810
810
|
children: [
|
|
811
811
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
812
812
|
FallbackIcon,
|
|
813
813
|
{
|
|
814
|
-
paths:
|
|
814
|
+
paths: chunkC7XKYQEW_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(chunkC7XKYQEW_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
|
+
...{ [chunkC7XKYQEW_js.MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
|
|
837
837
|
children: [
|
|
838
838
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
839
839
|
FallbackIcon,
|
|
840
840
|
{
|
|
841
|
-
paths:
|
|
841
|
+
paths: chunkC7XKYQEW_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(chunkC7XKYQEW_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 = chunkC7XKYQEW_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 = chunkC7XKYQEW_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 chunkC7XKYQEW_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 (!chunkC7XKYQEW_js.hasTextProperties(element)) {
|
|
974
974
|
return {};
|
|
975
975
|
}
|
|
976
|
-
const writingMode =
|
|
977
|
-
const textOrientation =
|
|
978
|
-
const verticalDirection =
|
|
976
|
+
const writingMode = chunkC7XKYQEW_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
977
|
+
const textOrientation = chunkC7XKYQEW_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
978
|
+
const verticalDirection = chunkC7XKYQEW_js.toCssVerticalDirection(element.textStyle?.textDirection);
|
|
979
979
|
const textWrapNone = element.textStyle?.textWrap === "none";
|
|
980
|
-
const hasParagraphIndents =
|
|
980
|
+
const hasParagraphIndents = chunkC7XKYQEW_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
|
+
...chunkC7XKYQEW_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 chunkC7XKYQEW_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}${chunkC7XKYQEW_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 = chunkC7XKYQEW_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: chunkC7XKYQEW_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 = chunkC7XKYQEW_js.segmentByScript(text);
|
|
1362
1362
|
if (runs.length <= 1) {
|
|
1363
1363
|
if (runs.length === 1) {
|
|
1364
|
-
const font =
|
|
1364
|
+
const font = chunkC7XKYQEW_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 = chunkC7XKYQEW_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 = chunkC7XKYQEW_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: chunkC7XKYQEW_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 = chunkC7XKYQEW_js.convertOmmlToMathMl(equationXml);
|
|
1480
|
+
const safeMathml = mathml ? chunkC7XKYQEW_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 = chunkC7XKYQEW_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 * chunkC7XKYQEW_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 ? chunkC7XKYQEW_js.getSubstituteFontFamily(
|
|
1554
1554
|
rawFontFamily,
|
|
1555
|
-
|
|
1555
|
+
chunkC7XKYQEW_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
|
|
1556
1556
|
) : DEFAULT_FONT_FAMILY2;
|
|
1557
|
-
const scriptFont = (name, panose) => name ?
|
|
1557
|
+
const scriptFont = (name, panose) => name ? chunkC7XKYQEW_js.getSubstituteFontFamily(name, chunkC7XKYQEW_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 = chunkC7XKYQEW_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 = chunkC7XKYQEW_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 = chunkC7XKYQEW_js.pieceLetterSpacing(
|
|
1590
1590
|
authoredLetterSpacing,
|
|
1591
|
-
|
|
1591
|
+
chunkC7XKYQEW_js.resolveMetricTrackingPx(textValue, metricFont)
|
|
1592
1592
|
);
|
|
1593
|
-
const hollow =
|
|
1593
|
+
const hollow = chunkC7XKYQEW_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 (!chunkC7XKYQEW_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 = chunkC7XKYQEW_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 (!chunkC7XKYQEW_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 (!chunkC7XKYQEW_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 ${chunkC7XKYQEW_js.colorWithOpacity(
|
|
1851
|
+
chunkC7XKYQEW_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
|
|
1852
1852
|
opacity
|
|
1853
1853
|
)}`;
|
|
1854
1854
|
}
|
|
1855
1855
|
function buildLineGlowFilter(element) {
|
|
1856
|
-
if (!
|
|
1856
|
+
if (!chunkC7XKYQEW_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 = chunkC7XKYQEW_js.colorWithOpacity(chunkC7XKYQEW_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 (!chunkC7XKYQEW_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 chunkC7XKYQEW_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
|
+
chunkC7XKYQEW_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 (!chunkC7XKYQEW_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 : chunkC7XKYQEW_js.getComputedFillStyle(element, parentGroupFill);
|
|
1946
|
+
const fx = chunkC7XKYQEW_js.getComputedEffectStyle(element);
|
|
1947
|
+
const stroke = chunkC7XKYQEW_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) || chunkC7XKYQEW_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 = chunkC7XKYQEW_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 chunkC7XKYQEW_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 chunkC7XKYQEW_js.clampUnitInterval(fallbackKey / 1e5);
|
|
2024
2024
|
}
|
|
2025
|
-
return
|
|
2025
|
+
return chunkC7XKYQEW_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 = chunkC7XKYQEW_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" : chunkC7XKYQEW_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: chunkC7XKYQEW_js.svgLineCap(shapeStyle?.lineCap),
|
|
2201
2201
|
lineJoin,
|
|
2202
2202
|
miterLimit,
|
|
2203
|
-
offsets:
|
|
2204
|
-
widths:
|
|
2203
|
+
offsets: chunkC7XKYQEW_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
|
|
2204
|
+
widths: chunkC7XKYQEW_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 ? chunkC7XKYQEW_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 ? chunkC7XKYQEW_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 ?? chunkC7XKYQEW_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 (!chunkC7XKYQEW_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" : chunkC7XKYQEW_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
|
|
2317
|
+
const strokePaint = animatesStroke ? "inherit" : chunkC7XKYQEW_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
|
|
2318
|
+
const dashType = chunkC7XKYQEW_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2319
|
+
const dashArray = chunkC7XKYQEW_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
|
+
chunkC7XKYQEW_js.buildSvgGradientDef(element.shapeStyle, element.id)
|
|
2401
2401
|
);
|
|
2402
2402
|
}
|
|
2403
|
-
if (
|
|
2403
|
+
if (chunkC7XKYQEW_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 = chunkC7XKYQEW_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 = chunkC7XKYQEW_js.buildCalloutLeaderLineSvgPath(geometry);
|
|
2414
|
+
const bounds = chunkC7XKYQEW_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 = chunkC7XKYQEW_js.svgLineCap(element.shapeStyle?.lineCap);
|
|
2478
2478
|
const hitTargetWidth = Math.max(strokeWidth * 3, 12);
|
|
2479
|
-
const offsets =
|
|
2480
|
-
const widths =
|
|
2479
|
+
const offsets = chunkC7XKYQEW_js.getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
2480
|
+
const widths = chunkC7XKYQEW_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 = chunkC7XKYQEW_js.parseDrawingColor(gs) ?? "#888888";
|
|
2548
|
+
const opacity = chunkC7XKYQEW_js.parseDrawingColorOpacity(gs);
|
|
2549
|
+
return { pos, color: chunkC7XKYQEW_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(chunkC7XKYQEW_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 = chunkC7XKYQEW_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
|
|
2591
|
+
const bgColor = chunkC7XKYQEW_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 = chunkC7XKYQEW_js.parseDrawingColor(ln["a:solidFill"]);
|
|
2703
2703
|
if (color) {
|
|
2704
|
-
const opacity =
|
|
2704
|
+
const opacity = chunkC7XKYQEW_js.parseDrawingColorOpacity(ln["a:solidFill"]);
|
|
2705
2705
|
const key = `${edge.prefix}`;
|
|
2706
|
-
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${
|
|
2706
|
+
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkC7XKYQEW_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 = chunkC7XKYQEW_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 = chunkC7XKYQEW_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;
|
|
@@ -2813,10 +2813,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2813
2813
|
if (runProps?.["@_u"] !== void 0) {
|
|
2814
2814
|
cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
|
|
2815
2815
|
}
|
|
2816
|
-
const runColor =
|
|
2816
|
+
const runColor = chunkC7XKYQEW_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkC7XKYQEW_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
|
|
2817
2817
|
if (runColor) {
|
|
2818
|
-
const opacity =
|
|
2819
|
-
cellStyle.color =
|
|
2818
|
+
const opacity = chunkC7XKYQEW_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
|
|
2819
|
+
cellStyle.color = chunkC7XKYQEW_js.colorWithOpacity(runColor, opacity);
|
|
2820
2820
|
}
|
|
2821
2821
|
const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
|
|
2822
2822
|
if (fontFamily) {
|
|
@@ -2826,15 +2826,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2826
2826
|
cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
|
|
2827
2827
|
}
|
|
2828
2828
|
const cellProperties = cellXml["a:tcPr"];
|
|
2829
|
-
const cellFill =
|
|
2829
|
+
const cellFill = chunkC7XKYQEW_js.parseDrawingColor(
|
|
2830
2830
|
cellProperties?.["a:solidFill"],
|
|
2831
2831
|
schemeColorOverrides
|
|
2832
2832
|
);
|
|
2833
2833
|
if (cellFill) {
|
|
2834
|
-
const opacity =
|
|
2834
|
+
const opacity = chunkC7XKYQEW_js.parseDrawingColorOpacity(
|
|
2835
2835
|
cellProperties?.["a:solidFill"]
|
|
2836
2836
|
);
|
|
2837
|
-
cellStyle.backgroundColor =
|
|
2837
|
+
cellStyle.backgroundColor = chunkC7XKYQEW_js.colorWithOpacity(cellFill, opacity);
|
|
2838
2838
|
} else {
|
|
2839
2839
|
const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
|
|
2840
2840
|
if (gradCss) {
|
|
@@ -2849,16 +2849,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
2849
2849
|
const edgeBorders = parseCellBorders(cellProperties);
|
|
2850
2850
|
Object.assign(cellStyle, edgeBorders);
|
|
2851
2851
|
if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
|
|
2852
|
-
const borderColor =
|
|
2852
|
+
const borderColor = chunkC7XKYQEW_js.parseDrawingColor(
|
|
2853
2853
|
cellProperties?.["a:lnL"]?.["a:solidFill"],
|
|
2854
2854
|
schemeColorOverrides
|
|
2855
|
-
) ||
|
|
2855
|
+
) || chunkC7XKYQEW_js.parseDrawingColor(
|
|
2856
2856
|
cellProperties?.["a:lnR"]?.["a:solidFill"],
|
|
2857
2857
|
schemeColorOverrides
|
|
2858
|
-
) ||
|
|
2858
|
+
) || chunkC7XKYQEW_js.parseDrawingColor(
|
|
2859
2859
|
cellProperties?.["a:lnT"]?.["a:solidFill"],
|
|
2860
2860
|
schemeColorOverrides
|
|
2861
|
-
) ||
|
|
2861
|
+
) || chunkC7XKYQEW_js.parseDrawingColor(
|
|
2862
2862
|
cellProperties?.["a:lnB"]?.["a:solidFill"],
|
|
2863
2863
|
schemeColorOverrides
|
|
2864
2864
|
);
|
|
@@ -2930,7 +2930,7 @@ function getTableCellBandStyle2(element, rowIndex, cellIndex, rowCount, columnCo
|
|
|
2930
2930
|
if (element.type !== "table") {
|
|
2931
2931
|
return void 0;
|
|
2932
2932
|
}
|
|
2933
|
-
return
|
|
2933
|
+
return chunkC7XKYQEW_js.getTableCellBandStyle(element.tableData, rowIndex, cellIndex, rowCount, columnCount, {
|
|
2934
2934
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
2935
2935
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
2936
2936
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -3006,7 +3006,7 @@ function renderTableCellContent(cell, fallbackText) {
|
|
|
3006
3006
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3007
3007
|
"span",
|
|
3008
3008
|
{
|
|
3009
|
-
style: { position: "relative", ...
|
|
3009
|
+
style: { position: "relative", ...chunkC7XKYQEW_js.cellRunStyle(run) },
|
|
3010
3010
|
children: run.text
|
|
3011
3011
|
},
|
|
3012
3012
|
`r-${index}`
|
|
@@ -3014,7 +3014,7 @@ function renderTableCellContent(cell, fallbackText) {
|
|
|
3014
3014
|
});
|
|
3015
3015
|
}
|
|
3016
3016
|
function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
|
|
3017
|
-
return
|
|
3017
|
+
return chunkC7XKYQEW_js.getCellDiagonalBorders(style, tableData, pos, {
|
|
3018
3018
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
3019
3019
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
3020
3020
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -3147,7 +3147,7 @@ function TableResizeOverlay({
|
|
|
3147
3147
|
const containerRef = React6.useRef(null);
|
|
3148
3148
|
const [rowBounds, setRowBounds] = React6.useState([]);
|
|
3149
3149
|
const dragRef = React6.useRef(null);
|
|
3150
|
-
const colBoundaries = React6.useMemo(() =>
|
|
3150
|
+
const colBoundaries = React6.useMemo(() => chunkC7XKYQEW_js.computeColumnBoundaries(columnWidths), [columnWidths]);
|
|
3151
3151
|
const measureRows = React6.useCallback(() => {
|
|
3152
3152
|
const container = containerRef.current;
|
|
3153
3153
|
if (!container) {
|
|
@@ -3194,11 +3194,11 @@ function TableResizeOverlay({
|
|
|
3194
3194
|
const rect = containerRef.current.getBoundingClientRect();
|
|
3195
3195
|
if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
|
|
3196
3196
|
const deltaProp = (e.clientX - drag.startPos) / rect.width;
|
|
3197
|
-
onResizeColumns(
|
|
3197
|
+
onResizeColumns(chunkC7XKYQEW_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
|
|
3198
3198
|
} else if (drag.type === "row" && onResizeRow) {
|
|
3199
3199
|
const deltaY = e.clientY - drag.startPos;
|
|
3200
|
-
const newHeight =
|
|
3201
|
-
drag.initialRowHeight ??
|
|
3200
|
+
const newHeight = chunkC7XKYQEW_js.computeResizedRowHeight(
|
|
3201
|
+
drag.initialRowHeight ?? chunkC7XKYQEW_js.DEFAULT_ROW_HEIGHT,
|
|
3202
3202
|
deltaY
|
|
3203
3203
|
);
|
|
3204
3204
|
onResizeRow(drag.index, newHeight);
|
|
@@ -3236,7 +3236,7 @@ function TableResizeOverlay({
|
|
|
3236
3236
|
e.stopPropagation();
|
|
3237
3237
|
const table = containerRef.current?.querySelector("table");
|
|
3238
3238
|
const tr = table?.querySelectorAll("tbody > tr")[index];
|
|
3239
|
-
const actualHeight = tr?.offsetHeight ??
|
|
3239
|
+
const actualHeight = tr?.offsetHeight ?? chunkC7XKYQEW_js.DEFAULT_ROW_HEIGHT;
|
|
3240
3240
|
document.body.style.cursor = "row-resize";
|
|
3241
3241
|
document.body.style.userSelect = "none";
|
|
3242
3242
|
dragRef.current = {
|
|
@@ -3283,7 +3283,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3283
3283
|
colorScheme: options?.styleCtx?.theme?.colorScheme,
|
|
3284
3284
|
fontScheme: options?.styleCtx?.theme?.fontScheme
|
|
3285
3285
|
};
|
|
3286
|
-
const cellCss = (cell, rowIndex, cellIndex) =>
|
|
3286
|
+
const cellCss = (cell, rowIndex, cellIndex) => chunkC7XKYQEW_js.tableCellCss(
|
|
3287
3287
|
tableData,
|
|
3288
3288
|
cell,
|
|
3289
3289
|
{ rowIndex, cellIndex, rowCount, columnCount },
|
|
@@ -3296,7 +3296,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3296
3296
|
}
|
|
3297
3297
|
const first = selectedCell.selectedCells[0];
|
|
3298
3298
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
3299
|
-
return
|
|
3299
|
+
return chunkC7XKYQEW_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
|
|
3300
3300
|
})();
|
|
3301
3301
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3302
3302
|
TableResizeOverlay,
|
|
@@ -3317,9 +3317,9 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3317
3317
|
{
|
|
3318
3318
|
className: "w-full h-full border-collapse table-fixed",
|
|
3319
3319
|
style: {
|
|
3320
|
-
fontFamily:
|
|
3320
|
+
fontFamily: chunkC7XKYQEW_js.DEFAULT_FONT_FAMILY,
|
|
3321
3321
|
// `a:tblPr@rtl` mirrors the column order for RTL decks.
|
|
3322
|
-
...
|
|
3322
|
+
...chunkC7XKYQEW_js.tableContainerCss(tableData)
|
|
3323
3323
|
},
|
|
3324
3324
|
children: [
|
|
3325
3325
|
tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3338,7 +3338,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3338
3338
|
return null;
|
|
3339
3339
|
}
|
|
3340
3340
|
const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
|
|
3341
|
-
const isInMultiSelection =
|
|
3341
|
+
const isInMultiSelection = chunkC7XKYQEW_js.isCellInRect(rowIndex, cellIndex, selectionRect);
|
|
3342
3342
|
const isCellEditing = isCellSelected && selectedCell?.isEditing;
|
|
3343
3343
|
const diag = getCellDiagonalBorders2(
|
|
3344
3344
|
cell.style,
|
|
@@ -3367,7 +3367,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3367
3367
|
}
|
|
3368
3368
|
event.stopPropagation();
|
|
3369
3369
|
if (event.shiftKey && selectedCell) {
|
|
3370
|
-
const rect =
|
|
3370
|
+
const rect = chunkC7XKYQEW_js.computeSelectionRect(
|
|
3371
3371
|
selectedCell.rowIndex,
|
|
3372
3372
|
selectedCell.columnIndex,
|
|
3373
3373
|
rowIndex,
|
|
@@ -3377,7 +3377,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
3377
3377
|
options?.onSelectCell?.({
|
|
3378
3378
|
rowIndex: selectedCell.rowIndex,
|
|
3379
3379
|
columnIndex: selectedCell.columnIndex,
|
|
3380
|
-
selectedCells:
|
|
3380
|
+
selectedCells: chunkC7XKYQEW_js.rectToCells(rect)
|
|
3381
3381
|
});
|
|
3382
3382
|
} else {
|
|
3383
3383
|
options?.onSelectCell?.({
|
|
@@ -3453,7 +3453,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3453
3453
|
}
|
|
3454
3454
|
const first = selectedCell.selectedCells[0];
|
|
3455
3455
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
3456
|
-
return
|
|
3456
|
+
return chunkC7XKYQEW_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
|
|
3457
3457
|
})();
|
|
3458
3458
|
const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
|
|
3459
3459
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3475,9 +3475,9 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3475
3475
|
{
|
|
3476
3476
|
className: "w-full h-full border-collapse table-fixed",
|
|
3477
3477
|
style: {
|
|
3478
|
-
fontFamily:
|
|
3478
|
+
fontFamily: chunkC7XKYQEW_js.DEFAULT_FONT_FAMILY,
|
|
3479
3479
|
// `a:tblPr@rtl` mirrors the column order for RTL decks.
|
|
3480
|
-
...
|
|
3480
|
+
...chunkC7XKYQEW_js.tableContainerCss(tableEl.tableData)
|
|
3481
3481
|
},
|
|
3482
3482
|
children: [
|
|
3483
3483
|
parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3529,7 +3529,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3529
3529
|
const mergedStyle = {
|
|
3530
3530
|
...bandStyle,
|
|
3531
3531
|
...xmlCellStyle,
|
|
3532
|
-
...tdCellOverride ?
|
|
3532
|
+
...tdCellOverride ? chunkC7XKYQEW_js.cellStyleToCss(tdCellOverride) : void 0,
|
|
3533
3533
|
...diag ? { position: "relative" } : void 0
|
|
3534
3534
|
};
|
|
3535
3535
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3539,7 +3539,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3539
3539
|
"border px-1 py-0.5 align-top",
|
|
3540
3540
|
isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
|
|
3541
3541
|
selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
|
|
3542
|
-
|
|
3542
|
+
chunkC7XKYQEW_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
3543
|
),
|
|
3544
3544
|
colSpan,
|
|
3545
3545
|
rowSpan: rSpan,
|
|
@@ -3550,7 +3550,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3550
3550
|
}
|
|
3551
3551
|
event.stopPropagation();
|
|
3552
3552
|
if (event.shiftKey && selectedCell && tableEl.tableData) {
|
|
3553
|
-
const rect =
|
|
3553
|
+
const rect = chunkC7XKYQEW_js.computeSelectionRect(
|
|
3554
3554
|
selectedCell.rowIndex,
|
|
3555
3555
|
selectedCell.columnIndex,
|
|
3556
3556
|
rowIndex,
|
|
@@ -3560,7 +3560,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3560
3560
|
options?.onSelectCell?.({
|
|
3561
3561
|
rowIndex: selectedCell.rowIndex,
|
|
3562
3562
|
columnIndex: selectedCell.columnIndex,
|
|
3563
|
-
selectedCells:
|
|
3563
|
+
selectedCells: chunkC7XKYQEW_js.rectToCells(rect)
|
|
3564
3564
|
});
|
|
3565
3565
|
} else {
|
|
3566
3566
|
options?.onSelectCell?.({
|
|
@@ -3620,24 +3620,24 @@ function renderTableElement(element, textStyle, options) {
|
|
|
3620
3620
|
}
|
|
3621
3621
|
var LEGEND_ITEM_WIDTH = 80;
|
|
3622
3622
|
function partAttrs(part) {
|
|
3623
|
-
return part ?
|
|
3623
|
+
return part ? chunkC7XKYQEW_js.chartPartToAttrs(part) : void 0;
|
|
3624
3624
|
}
|
|
3625
3625
|
function resolveReactPalette(chartData) {
|
|
3626
3626
|
if (chartData.colorPalette && chartData.colorPalette.length > 0) {
|
|
3627
3627
|
return chartData.colorPalette;
|
|
3628
3628
|
}
|
|
3629
|
-
return [...
|
|
3629
|
+
return [...chunkC7XKYQEW_js.getChartStylePalette(chartData.style?.styleId)];
|
|
3630
3630
|
}
|
|
3631
3631
|
function buildReactChartViewModel(element) {
|
|
3632
3632
|
if (element.type !== "chart" || !element.chartData) {
|
|
3633
|
-
return
|
|
3633
|
+
return chunkC7XKYQEW_js.buildChartViewModel(element);
|
|
3634
3634
|
}
|
|
3635
3635
|
const palette = resolveReactPalette(element.chartData);
|
|
3636
3636
|
const themedElement = {
|
|
3637
3637
|
...element,
|
|
3638
3638
|
chartData: { ...element.chartData, colorPalette: palette }
|
|
3639
3639
|
};
|
|
3640
|
-
return
|
|
3640
|
+
return chunkC7XKYQEW_js.buildChartViewModel(themedElement);
|
|
3641
3641
|
}
|
|
3642
3642
|
function renderPrimitive(prim, key) {
|
|
3643
3643
|
switch (prim.kind) {
|
|
@@ -3863,11 +3863,11 @@ function renderChartElement(element) {
|
|
|
3863
3863
|
if (!chartData || chartData.series.length === 0) {
|
|
3864
3864
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkMVKRI3CZ_js.translationsEn["pptx.chart.heading"] });
|
|
3865
3865
|
}
|
|
3866
|
-
const kind =
|
|
3866
|
+
const kind = chunkC7XKYQEW_js.resolveChartKind(chartData.chartType ?? "bar");
|
|
3867
3867
|
return renderChartViewModel(
|
|
3868
3868
|
element.id,
|
|
3869
3869
|
buildReactChartViewModel(element),
|
|
3870
|
-
|
|
3870
|
+
chunkC7XKYQEW_js.chartPreserveAspectRatio(kind)
|
|
3871
3871
|
);
|
|
3872
3872
|
}
|
|
3873
3873
|
|
|
@@ -3887,14 +3887,14 @@ function buildNotesPdf(pages) {
|
|
|
3887
3887
|
notes: page.notes,
|
|
3888
3888
|
slideNumber: page.slideNumber
|
|
3889
3889
|
}));
|
|
3890
|
-
const bytes =
|
|
3890
|
+
const bytes = chunkC7XKYQEW_js.buildNotesPdfBytes(images, meta);
|
|
3891
3891
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
3892
3892
|
return URL.createObjectURL(blob);
|
|
3893
3893
|
}
|
|
3894
3894
|
|
|
3895
3895
|
// src/viewer/utils/pdf-builder-slides.ts
|
|
3896
3896
|
function buildPdfFromImageData(images) {
|
|
3897
|
-
const bytes =
|
|
3897
|
+
const bytes = chunkC7XKYQEW_js.buildSlidesPdfBytes(images);
|
|
3898
3898
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
3899
3899
|
return URL.createObjectURL(blob);
|
|
3900
3900
|
}
|
|
@@ -3903,7 +3903,7 @@ function buildPdfFromImageData(images) {
|
|
|
3903
3903
|
var activePreview = null;
|
|
3904
3904
|
function startPreviewAnimation(elementId, preset, options) {
|
|
3905
3905
|
stopPreviewAnimation();
|
|
3906
|
-
const descriptor =
|
|
3906
|
+
const descriptor = chunkC7XKYQEW_js.buildPreviewAnimation(preset, options);
|
|
3907
3907
|
if (!descriptor) {
|
|
3908
3908
|
return;
|
|
3909
3909
|
}
|
|
@@ -3916,7 +3916,7 @@ function startMotionPathPreview(elementId, path, options) {
|
|
|
3916
3916
|
return;
|
|
3917
3917
|
}
|
|
3918
3918
|
const stage = domEl.offsetParent;
|
|
3919
|
-
const descriptor =
|
|
3919
|
+
const descriptor = chunkC7XKYQEW_js.buildMotionPathPreview({
|
|
3920
3920
|
path,
|
|
3921
3921
|
slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
|
|
3922
3922
|
slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,
|