pptx-react-viewer 2.15.0 → 2.15.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 +4 -0
- package/dist/{AiChatPanel-Q6D53GMZ.mjs → AiChatPanel-HSQLY6O7.mjs} +3 -3
- package/dist/AiChatPanel-HSQLY6O7.mjs.br +0 -0
- package/dist/AiChatPanel-HSQLY6O7.mjs.gz +0 -0
- package/dist/{AiChatPanel-4WPZXJMM.js → AiChatPanel-WGX7DUQE.js} +22 -22
- package/dist/AiChatPanel-WGX7DUQE.js.br +0 -0
- package/dist/AiChatPanel-WGX7DUQE.js.gz +0 -0
- package/dist/{Model3DScene-N6PGFO2X.mjs → Model3DScene-3DOCQYAE.mjs} +1 -1
- package/dist/Model3DScene-3DOCQYAE.mjs.br +0 -0
- package/dist/Model3DScene-3DOCQYAE.mjs.gz +0 -0
- package/dist/{Model3DScene-CV3IGH6V.js → Model3DScene-DYWYNVLU.js} +2 -2
- package/dist/Model3DScene-DYWYNVLU.js.br +0 -0
- package/dist/Model3DScene-DYWYNVLU.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-WXXMMXFZ.js → SurfaceChart3DScene-7UB5JE2W.js} +2 -2
- package/dist/SurfaceChart3DScene-7UB5JE2W.js.br +0 -0
- package/dist/SurfaceChart3DScene-7UB5JE2W.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-H5ID4CUU.mjs → SurfaceChart3DScene-GIKV3DXC.mjs} +1 -1
- package/dist/{SurfaceChart3DScene-H5ID4CUU.mjs.br → SurfaceChart3DScene-GIKV3DXC.mjs.br} +0 -0
- package/dist/SurfaceChart3DScene-GIKV3DXC.mjs.gz +0 -0
- package/dist/{chunk-CUFEHK42.js → chunk-DC4GIE7E.js} +3 -3
- package/dist/chunk-DC4GIE7E.js.br +0 -0
- package/dist/chunk-DC4GIE7E.js.gz +0 -0
- package/dist/{chunk-PDUTW6MW.mjs → chunk-GLC2RPKN.mjs} +16 -8
- package/dist/chunk-GLC2RPKN.mjs.br +0 -0
- package/dist/chunk-GLC2RPKN.mjs.gz +0 -0
- package/dist/{chunk-WMZAM3UH.mjs → chunk-IXCNYPFK.mjs} +1 -1
- package/dist/chunk-IXCNYPFK.mjs.br +0 -0
- package/dist/chunk-IXCNYPFK.mjs.gz +0 -0
- package/dist/{chunk-SHICB6DW.mjs → chunk-IXEHYABF.mjs} +8 -8
- package/dist/chunk-IXEHYABF.mjs.br +0 -0
- package/dist/chunk-IXEHYABF.mjs.gz +0 -0
- package/dist/{chunk-3JTRZVYW.mjs → chunk-LVGFV42Z.mjs} +28 -8
- package/dist/chunk-LVGFV42Z.mjs.br +0 -0
- package/dist/chunk-LVGFV42Z.mjs.gz +0 -0
- package/dist/{chunk-HZSUTVDQ.js → chunk-MQXKBH43.js} +251 -247
- package/dist/chunk-MQXKBH43.js.br +0 -0
- package/dist/chunk-MQXKBH43.js.gz +0 -0
- package/dist/{chunk-N6MSPBMO.js → chunk-RSNAGJTQ.js} +1051 -1051
- package/dist/chunk-RSNAGJTQ.js.br +0 -0
- package/dist/chunk-RSNAGJTQ.js.gz +0 -0
- package/dist/{chunk-KA35ZMIP.js → chunk-SBRSPTSA.js} +28 -7
- package/dist/chunk-SBRSPTSA.js.br +0 -0
- package/dist/chunk-SBRSPTSA.js.gz +0 -0
- package/dist/{chunk-TQMJGYGQ.js → chunk-U47SG5XL.js} +348 -340
- package/dist/chunk-U47SG5XL.js.br +0 -0
- package/dist/chunk-U47SG5XL.js.gz +0 -0
- package/dist/{chunk-56L4QYDT.mjs → chunk-ZAO36XAK.mjs} +9 -5
- package/dist/chunk-ZAO36XAK.mjs.br +0 -0
- package/dist/chunk-ZAO36XAK.mjs.gz +0 -0
- package/dist/index.js +39 -39
- 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-4WPZXJMM.js.br +0 -0
- package/dist/AiChatPanel-4WPZXJMM.js.gz +0 -0
- package/dist/AiChatPanel-Q6D53GMZ.mjs.br +0 -0
- package/dist/AiChatPanel-Q6D53GMZ.mjs.gz +0 -0
- package/dist/Model3DScene-CV3IGH6V.js.br +0 -0
- package/dist/Model3DScene-CV3IGH6V.js.gz +0 -0
- package/dist/Model3DScene-N6PGFO2X.mjs.br +0 -0
- package/dist/Model3DScene-N6PGFO2X.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-H5ID4CUU.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-WXXMMXFZ.js.br +0 -0
- package/dist/SurfaceChart3DScene-WXXMMXFZ.js.gz +0 -0
- package/dist/chunk-3JTRZVYW.mjs.br +0 -0
- package/dist/chunk-3JTRZVYW.mjs.gz +0 -0
- package/dist/chunk-56L4QYDT.mjs.br +0 -0
- package/dist/chunk-56L4QYDT.mjs.gz +0 -0
- package/dist/chunk-CUFEHK42.js.br +0 -0
- package/dist/chunk-CUFEHK42.js.gz +0 -0
- package/dist/chunk-HZSUTVDQ.js.br +0 -0
- package/dist/chunk-HZSUTVDQ.js.gz +0 -0
- package/dist/chunk-KA35ZMIP.js.br +0 -0
- package/dist/chunk-KA35ZMIP.js.gz +0 -0
- package/dist/chunk-N6MSPBMO.js.br +0 -0
- package/dist/chunk-N6MSPBMO.js.gz +0 -0
- package/dist/chunk-PDUTW6MW.mjs.br +0 -0
- package/dist/chunk-PDUTW6MW.mjs.gz +0 -0
- package/dist/chunk-SHICB6DW.mjs.br +0 -0
- package/dist/chunk-SHICB6DW.mjs.gz +0 -0
- package/dist/chunk-TQMJGYGQ.js.br +0 -0
- package/dist/chunk-TQMJGYGQ.js.gz +0 -0
- package/dist/chunk-WMZAM3UH.mjs.br +0 -0
- package/dist/chunk-WMZAM3UH.mjs.gz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunk3ISYPBSX_js = require('./chunk-3ISYPBSX.js');
|
|
4
|
-
var
|
|
4
|
+
var chunkSBRSPTSA_js = require('./chunk-SBRSPTSA.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 chunkSBRSPTSA_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 chunkSBRSPTSA_js.cloneHistorySnapshot(snapshot);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
// src/viewer/constants/scalar.ts
|
|
@@ -63,7 +63,7 @@ var TOOLBAR_SECTIONS = [
|
|
|
63
63
|
{ id: "view", labelKey: "pptx.ribbon.tab.view" },
|
|
64
64
|
{ id: "help", labelKey: "pptx.ribbon.tab.help" }
|
|
65
65
|
];
|
|
66
|
-
var SHORTCUT_REFERENCE_ITEMS =
|
|
66
|
+
var SHORTCUT_REFERENCE_ITEMS = chunkSBRSPTSA_js.VIEWER_SHORTCUT_REFERENCE;
|
|
67
67
|
|
|
68
68
|
// src/viewer/constants/theme.ts
|
|
69
69
|
var THEME_COLOR_SWATCHES = [
|
|
@@ -107,7 +107,7 @@ var GLYPH_COMPONENTS = {
|
|
|
107
107
|
plus: lu.LuPlus,
|
|
108
108
|
triangle: lu.LuTriangle
|
|
109
109
|
};
|
|
110
|
-
var SHAPE_PRESETS =
|
|
110
|
+
var SHAPE_PRESETS = chunkSBRSPTSA_js.SHAPE_PRESET_DEFS.map(
|
|
111
111
|
(def) => ({
|
|
112
112
|
type: def.type,
|
|
113
113
|
label: def.label,
|
|
@@ -266,7 +266,7 @@ function isConnectorOrLineElement(element) {
|
|
|
266
266
|
if (element.type === "connector") {
|
|
267
267
|
return true;
|
|
268
268
|
}
|
|
269
|
-
if (!
|
|
269
|
+
if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
|
|
270
270
|
return false;
|
|
271
271
|
}
|
|
272
272
|
const st = getShapeType(element.shapeType);
|
|
@@ -277,12 +277,12 @@ function isConnectorOrLineElement(element) {
|
|
|
277
277
|
function partitionTemplateElements(slides) {
|
|
278
278
|
const templateElementsBySlideId = {};
|
|
279
279
|
const nextSlides = slides.map((slide) => {
|
|
280
|
-
const template = slide.elements.filter((el) =>
|
|
280
|
+
const template = slide.elements.filter((el) => chunkSBRSPTSA_js.isTemplateElement(el));
|
|
281
281
|
if (template.length === 0) {
|
|
282
282
|
return slide;
|
|
283
283
|
}
|
|
284
284
|
templateElementsBySlideId[slide.id] = template;
|
|
285
|
-
return { ...slide, elements: slide.elements.filter((el) => !
|
|
285
|
+
return { ...slide, elements: slide.elements.filter((el) => !chunkSBRSPTSA_js.isTemplateElement(el)) };
|
|
286
286
|
});
|
|
287
287
|
return { slides: nextSlides, templateElementsBySlideId };
|
|
288
288
|
}
|
|
@@ -298,7 +298,7 @@ function buildSaveSlides(slides, templateElementsBySlideId) {
|
|
|
298
298
|
|
|
299
299
|
// src/viewer/utils/image-style.ts
|
|
300
300
|
function getImageMaskStyle(element) {
|
|
301
|
-
if (!
|
|
301
|
+
if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
|
|
302
302
|
return void 0;
|
|
303
303
|
}
|
|
304
304
|
const shapeType = element.shapeType;
|
|
@@ -307,19 +307,19 @@ function getImageMaskStyle(element) {
|
|
|
307
307
|
}
|
|
308
308
|
const normalized = shapeType.toLowerCase();
|
|
309
309
|
if (normalized === "roundrect" || normalized === "round1rect" || normalized === "round2samerect" || normalized === "round2diagrect" || normalized === "sniproundrect" || normalized === "snip1rect" || normalized === "snip2diagrect") {
|
|
310
|
-
const radiusPx =
|
|
310
|
+
const radiusPx = chunkSBRSPTSA_js.getRoundRectRadiusPx(element);
|
|
311
311
|
if (radiusPx <= 0.01) {
|
|
312
312
|
return void 0;
|
|
313
313
|
}
|
|
314
314
|
return { borderRadius: radiusPx };
|
|
315
315
|
}
|
|
316
316
|
if (normalized === "ellipse" || normalized === "oval") {
|
|
317
|
-
return { borderRadius: "
|
|
317
|
+
return { borderRadius: "50%" };
|
|
318
318
|
}
|
|
319
319
|
if (normalized === "can" || normalized === "cylinder") {
|
|
320
320
|
return { borderRadius: "48% / 12%" };
|
|
321
321
|
}
|
|
322
|
-
const clipPath =
|
|
322
|
+
const clipPath = chunkSBRSPTSA_js.getResolvedShapeClipPath(element);
|
|
323
323
|
if (!clipPath) {
|
|
324
324
|
return void 0;
|
|
325
325
|
}
|
|
@@ -328,7 +328,7 @@ function getImageMaskStyle(element) {
|
|
|
328
328
|
function getImageRenderStyle(element) {
|
|
329
329
|
return {
|
|
330
330
|
...getImageMaskStyle(element) || {},
|
|
331
|
-
...
|
|
331
|
+
...chunkSBRSPTSA_js.getImageFitStyle(element)
|
|
332
332
|
};
|
|
333
333
|
}
|
|
334
334
|
var CROP_SHAPE_CLIP_PATHS = {
|
|
@@ -341,7 +341,7 @@ var CROP_SHAPE_CLIP_PATHS = {
|
|
|
341
341
|
star: "polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)"
|
|
342
342
|
};
|
|
343
343
|
function getCropShapeClipPath(element) {
|
|
344
|
-
if (!
|
|
344
|
+
if (!chunkSBRSPTSA_js.isImageLikeElement(element)) {
|
|
345
345
|
return void 0;
|
|
346
346
|
}
|
|
347
347
|
const shape = element.cropShape;
|
|
@@ -351,7 +351,7 @@ function getCropShapeClipPath(element) {
|
|
|
351
351
|
return CROP_SHAPE_CLIP_PATHS[shape];
|
|
352
352
|
}
|
|
353
353
|
function isImageTiled(element) {
|
|
354
|
-
if (!
|
|
354
|
+
if (!chunkSBRSPTSA_js.isImageLikeElement(element)) {
|
|
355
355
|
return false;
|
|
356
356
|
}
|
|
357
357
|
return typeof element.tileScaleX === "number" || typeof element.tileScaleY === "number";
|
|
@@ -409,7 +409,7 @@ function buildMirrorTiledBackground(src, flip, scaleX, scaleY) {
|
|
|
409
409
|
};
|
|
410
410
|
}
|
|
411
411
|
function getImageTilingStyle(element) {
|
|
412
|
-
if (!
|
|
412
|
+
if (!chunkSBRSPTSA_js.isImageLikeElement(element) || !isImageTiled(element)) {
|
|
413
413
|
return void 0;
|
|
414
414
|
}
|
|
415
415
|
const scaleX = typeof element.tileScaleX === "number" ? element.tileScaleX * 100 : 100;
|
|
@@ -659,9 +659,9 @@ function registerMediaElement(elementId, el) {
|
|
|
659
659
|
};
|
|
660
660
|
}
|
|
661
661
|
function executeMediaCommand(command, frameRoot) {
|
|
662
|
-
return
|
|
662
|
+
return chunkSBRSPTSA_js.runMediaCommand(
|
|
663
663
|
command,
|
|
664
|
-
(targetId) => registry.get(targetId) ??
|
|
664
|
+
(targetId) => registry.get(targetId) ?? chunkSBRSPTSA_js.findMediaElementByElementId(targetId, frameRoot?.())
|
|
665
665
|
);
|
|
666
666
|
}
|
|
667
667
|
function PresentationMediaController({
|
|
@@ -705,7 +705,7 @@ function PresentationMediaController({
|
|
|
705
705
|
loop: shouldLoop,
|
|
706
706
|
volume: playbackVolume,
|
|
707
707
|
playbackRate
|
|
708
|
-
} =
|
|
708
|
+
} = chunkSBRSPTSA_js.mediaPlaybackAttributes({
|
|
709
709
|
loop: element.loop,
|
|
710
710
|
volume: element.volume,
|
|
711
711
|
playbackSpeed: element.playbackSpeed
|
|
@@ -841,7 +841,7 @@ function PresentationMediaController({
|
|
|
841
841
|
if (element.playAcrossSlides && element.mediaType === "audio") {
|
|
842
842
|
const dataUrl = element.mediaData ?? resolvedDataUrl;
|
|
843
843
|
if (dataUrl) {
|
|
844
|
-
|
|
844
|
+
chunkSBRSPTSA_js.registerPersistentAudio(
|
|
845
845
|
element.id,
|
|
846
846
|
dataUrl,
|
|
847
847
|
element.mediaMimeType,
|
|
@@ -912,7 +912,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
912
912
|
const dataUrl = element.mediaData ?? (mediaPath ? mediaDataUrls.get(mediaPath) : void 0);
|
|
913
913
|
const trimFragment = buildTrimFragment(element);
|
|
914
914
|
const posterUrl = element.posterFrameData ?? void 0;
|
|
915
|
-
const shouldLoop =
|
|
915
|
+
const shouldLoop = chunkSBRSPTSA_js.mediaPlaybackAttributes(element).loop;
|
|
916
916
|
const shouldAutoPlay = options?.autoPlay === true || element.autoPlay === true;
|
|
917
917
|
const isFullScreen = options?.fullScreen === true;
|
|
918
918
|
const isPresentationMode = options?.isPresentationMode === true;
|
|
@@ -1078,7 +1078,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
1078
1078
|
|
|
1079
1079
|
// src/viewer/utils/text-utils.tsx
|
|
1080
1080
|
function getTextStyleForElement(element, fallbackColor) {
|
|
1081
|
-
return
|
|
1081
|
+
return chunkSBRSPTSA_js.buildTextBlockStyle(element, { fallbackColor });
|
|
1082
1082
|
}
|
|
1083
1083
|
|
|
1084
1084
|
// src/viewer/utils/text-layout.tsx
|
|
@@ -1103,13 +1103,13 @@ function computeTabSize(tabStops, defaultTabSize) {
|
|
|
1103
1103
|
return avgGap > 0 ? `${Math.round(avgGap)}px` : fromDefault;
|
|
1104
1104
|
}
|
|
1105
1105
|
function getTextLayoutStyle(element) {
|
|
1106
|
-
if (!
|
|
1106
|
+
if (!chunkSBRSPTSA_js.hasTextProperties(element)) {
|
|
1107
1107
|
return {};
|
|
1108
1108
|
}
|
|
1109
1109
|
const verticalAlign = element.textStyle?.vAlign || "top";
|
|
1110
|
-
const writingMode =
|
|
1111
|
-
const textOrientation =
|
|
1112
|
-
const verticalDirection =
|
|
1110
|
+
const writingMode = chunkSBRSPTSA_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
1111
|
+
const textOrientation = chunkSBRSPTSA_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
1112
|
+
const verticalDirection = chunkSBRSPTSA_js.toCssVerticalDirection(element.textStyle?.textDirection);
|
|
1113
1113
|
const parsedColumnCount = Number(element.textStyle?.columnCount);
|
|
1114
1114
|
const columnCount = Number.isFinite(parsedColumnCount) ? Math.max(1, Math.min(16, Math.round(parsedColumnCount))) : 1;
|
|
1115
1115
|
const hasColumns = columnCount > 1;
|
|
@@ -1117,7 +1117,7 @@ function getTextLayoutStyle(element) {
|
|
|
1117
1117
|
const tabStops = element.textStyle?.tabStops;
|
|
1118
1118
|
const tabSize = computeTabSize(tabStops, element.textStyle?.defaultTabSize);
|
|
1119
1119
|
const textWrapNone = element.textStyle?.textWrap === "none";
|
|
1120
|
-
const hasParagraphIndents =
|
|
1120
|
+
const hasParagraphIndents = chunkSBRSPTSA_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
|
|
1121
1121
|
const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
|
|
1122
1122
|
const paragraphIndent = element.textStyle?.paragraphIndent;
|
|
1123
1123
|
const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
|
|
@@ -1126,7 +1126,7 @@ function getTextLayoutStyle(element) {
|
|
|
1126
1126
|
const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
|
|
1127
1127
|
const parsedColumnSpacing = Number(element.textStyle?.columnSpacing);
|
|
1128
1128
|
const columnGap = Number.isFinite(parsedColumnSpacing) && parsedColumnSpacing > 0 ? `${parsedColumnSpacing}px` : "0.75em";
|
|
1129
|
-
const kinsokuStyles =
|
|
1129
|
+
const kinsokuStyles = chunkSBRSPTSA_js.getKinsokuLineBreakStyles(element.textStyle);
|
|
1130
1130
|
if (hasColumns) {
|
|
1131
1131
|
return {
|
|
1132
1132
|
display: "block",
|
|
@@ -1173,10 +1173,10 @@ function getTextLayoutStyle(element) {
|
|
|
1173
1173
|
|
|
1174
1174
|
// src/viewer/utils/text-effects.tsx
|
|
1175
1175
|
function buildTextFillCss2(style) {
|
|
1176
|
-
return
|
|
1176
|
+
return chunkSBRSPTSA_js.buildTextFillCss(style);
|
|
1177
1177
|
}
|
|
1178
1178
|
function buildTextBody3DSceneStyle2(textStyle) {
|
|
1179
|
-
return
|
|
1179
|
+
return chunkSBRSPTSA_js.buildTextBody3DSceneStyle(textStyle);
|
|
1180
1180
|
}
|
|
1181
1181
|
|
|
1182
1182
|
// src/viewer/utils/text-warp-css.tsx
|
|
@@ -1361,13 +1361,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1361
1361
|
if (!subElementAnimStates || subElementAnimStates.size === 0) {
|
|
1362
1362
|
return renderedSegments;
|
|
1363
1363
|
}
|
|
1364
|
-
const paraKey = `${elementId}${
|
|
1364
|
+
const paraKey = `${elementId}${chunkSBRSPTSA_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
|
|
1365
1365
|
const paraState = subElementAnimStates.get(paraKey);
|
|
1366
1366
|
if (paraState) {
|
|
1367
1367
|
const style = buildAnimStyle(paraState);
|
|
1368
1368
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
|
|
1369
1369
|
}
|
|
1370
|
-
const spec =
|
|
1370
|
+
const spec = chunkSBRSPTSA_js.buildTextBuildSpec(
|
|
1371
1371
|
elementId,
|
|
1372
1372
|
paraIndex,
|
|
1373
1373
|
paraSegments.map((entry) => ({ text: entry.segment.text, style: entry })),
|
|
@@ -1385,7 +1385,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1385
1385
|
"span",
|
|
1386
1386
|
{
|
|
1387
1387
|
"data-anim-id": span.animId,
|
|
1388
|
-
style:
|
|
1388
|
+
style: chunkSBRSPTSA_js.textBuildSpanStyle(span),
|
|
1389
1389
|
children: content
|
|
1390
1390
|
},
|
|
1391
1391
|
span.animId
|
|
@@ -1529,10 +1529,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1529
1529
|
if (!needsScriptFonts || !text) {
|
|
1530
1530
|
return text;
|
|
1531
1531
|
}
|
|
1532
|
-
const runs =
|
|
1532
|
+
const runs = chunkSBRSPTSA_js.segmentByScript(text);
|
|
1533
1533
|
if (runs.length <= 1) {
|
|
1534
1534
|
if (runs.length === 1) {
|
|
1535
|
-
const font =
|
|
1535
|
+
const font = chunkSBRSPTSA_js.resolveFontForScript(runs[0].script, scriptFonts);
|
|
1536
1536
|
if (font && font !== baseFontFamily) {
|
|
1537
1537
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontFamily: font }, children: text });
|
|
1538
1538
|
}
|
|
@@ -1540,7 +1540,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1540
1540
|
return text;
|
|
1541
1541
|
}
|
|
1542
1542
|
return runs.map((run, i) => {
|
|
1543
|
-
const font =
|
|
1543
|
+
const font = chunkSBRSPTSA_js.resolveFontForScript(run.script, scriptFonts);
|
|
1544
1544
|
if (!font || font === baseFontFamily) {
|
|
1545
1545
|
return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
|
|
1546
1546
|
}
|
|
@@ -1612,8 +1612,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
|
|
|
1612
1612
|
);
|
|
1613
1613
|
}
|
|
1614
1614
|
function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
|
|
1615
|
-
const mathml =
|
|
1616
|
-
const safeMathml = mathml ?
|
|
1615
|
+
const mathml = chunkSBRSPTSA_js.convertOmmlToMathMl(equationXml);
|
|
1616
|
+
const safeMathml = mathml ? chunkSBRSPTSA_js.sanitizeMathMl(mathml) : "";
|
|
1617
1617
|
const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1618
1618
|
"span",
|
|
1619
1619
|
{
|
|
@@ -1663,7 +1663,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
|
|
|
1663
1663
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
|
|
1664
1664
|
}
|
|
1665
1665
|
function renderPictureBullet(elementId, segmentIndex, bulletInfo, baseFontSize) {
|
|
1666
|
-
const picture =
|
|
1666
|
+
const picture = chunkSBRSPTSA_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
|
|
1667
1667
|
sizePx: baseFontSize,
|
|
1668
1668
|
fallbackMarker: "\u2022",
|
|
1669
1669
|
accessibleLabel: "Bullet"
|
|
@@ -1714,7 +1714,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1714
1714
|
}
|
|
1715
1715
|
const segmentStyle = segment.style || {};
|
|
1716
1716
|
const rawText = bulletInfo && typeof bulletHangPx === "number" ? (segment.text || "").trimEnd() : segment.text || "";
|
|
1717
|
-
const textValue =
|
|
1717
|
+
const textValue = chunkSBRSPTSA_js.substituteFieldText(rawText, segment.fieldType, fieldContext);
|
|
1718
1718
|
const lines = textValue.split("\n");
|
|
1719
1719
|
const textDecorationTokens = [];
|
|
1720
1720
|
if (segmentStyle.underline || segmentStyle.hyperlink) {
|
|
@@ -1724,28 +1724,28 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1724
1724
|
textDecorationTokens.push("line-through");
|
|
1725
1725
|
}
|
|
1726
1726
|
const isDoubleStrike = segmentStyle.strikethrough && segmentStyle.strikeType === "dblStrike";
|
|
1727
|
-
const resolvedSegmentColor = segmentStyle.hyperlink ?
|
|
1728
|
-
const underlineDecoration =
|
|
1727
|
+
const resolvedSegmentColor = segmentStyle.hyperlink ? chunkSBRSPTSA_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkSBRSPTSA_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
|
|
1728
|
+
const underlineDecoration = chunkSBRSPTSA_js.resolveUnderlineDecorationStyle(
|
|
1729
1729
|
Boolean(isDoubleStrike),
|
|
1730
1730
|
segmentStyle.underlineStyle
|
|
1731
1731
|
);
|
|
1732
1732
|
const rawBaseline = typeof segmentStyle.baseline === "number" ? segmentStyle.baseline : 0;
|
|
1733
1733
|
const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
|
|
1734
1734
|
const baselineFontScale = baselineFraction !== 0 ? 0.65 : 1;
|
|
1735
|
-
const letterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? `calc(${segmentStyle.characterSpacing / 100 * (96 / 72)}px + ${
|
|
1735
|
+
const letterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? `calc(${segmentStyle.characterSpacing / 100 * (96 / 72)}px + ${chunkSBRSPTSA_js.POWERPOINT_METRIC_TRACKING})` : chunkSBRSPTSA_js.POWERPOINT_METRIC_TRACKING;
|
|
1736
1736
|
const textFillStyles = buildTextFillCss2(segmentStyle);
|
|
1737
1737
|
const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
|
|
1738
|
-
const autoFitScale =
|
|
1738
|
+
const autoFitScale = chunkSBRSPTSA_js.resolveAutoFitFontScale(element.textStyle);
|
|
1739
1739
|
const baseFontSize = rawFontSize * autoFitScale;
|
|
1740
1740
|
const baselineShift = baselineFraction !== 0 ? `${baselineFraction * baseFontSize}px` : void 0;
|
|
1741
1741
|
const baseFontSizePt = baseFontSize * (72 / 96);
|
|
1742
1742
|
const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
|
|
1743
1743
|
const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
|
|
1744
|
-
const baseFontFamily = rawFontFamily ?
|
|
1744
|
+
const baseFontFamily = rawFontFamily ? chunkSBRSPTSA_js.getSubstituteFontFamily(
|
|
1745
1745
|
rawFontFamily,
|
|
1746
|
-
|
|
1746
|
+
chunkSBRSPTSA_js.parsePanoseString(segmentStyle.latinFontPanose ?? element.textStyle?.latinFontPanose)
|
|
1747
1747
|
) : DEFAULT_FONT_FAMILY2;
|
|
1748
|
-
const scriptFont = (name, panose) => name ?
|
|
1748
|
+
const scriptFont = (name, panose) => name ? chunkSBRSPTSA_js.getSubstituteFontFamily(name, chunkSBRSPTSA_js.parsePanoseString(panose)) : baseFontFamily;
|
|
1749
1749
|
const scriptFonts = {
|
|
1750
1750
|
latin: baseFontFamily,
|
|
1751
1751
|
eastAsia: scriptFont(
|
|
@@ -1761,7 +1761,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1761
1761
|
segmentStyle.symbolFontPanose ?? element.textStyle?.symbolFontPanose
|
|
1762
1762
|
)
|
|
1763
1763
|
};
|
|
1764
|
-
const needsScriptFonts =
|
|
1764
|
+
const needsScriptFonts = chunkSBRSPTSA_js.hasDistinctScriptFonts(scriptFonts);
|
|
1765
1765
|
const spanStyle = {
|
|
1766
1766
|
color: resolvedSegmentColor,
|
|
1767
1767
|
fontSize: baseFontSize * baselineFontScale,
|
|
@@ -1779,15 +1779,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1779
1779
|
fontVariantCaps: segmentStyle.textCaps === "small" ? "small-caps" : void 0,
|
|
1780
1780
|
letterSpacing,
|
|
1781
1781
|
fontKerning,
|
|
1782
|
-
backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ?
|
|
1782
|
+
backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkSBRSPTSA_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
|
|
1783
1783
|
...textFillStyles,
|
|
1784
|
-
textDecorationColor: segmentStyle.underlineColor ?
|
|
1785
|
-
WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${
|
|
1784
|
+
textDecorationColor: segmentStyle.underlineColor ? chunkSBRSPTSA_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
|
|
1785
|
+
WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkSBRSPTSA_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
|
|
1786
1786
|
paintOrder: segmentStyle.textOutlineWidth ? "stroke fill" : void 0,
|
|
1787
|
-
textShadow:
|
|
1788
|
-
filter:
|
|
1789
|
-
opacity:
|
|
1790
|
-
WebkitBoxReflect:
|
|
1787
|
+
textShadow: chunkSBRSPTSA_js.buildTextShadowCss(segmentStyle),
|
|
1788
|
+
filter: chunkSBRSPTSA_js.buildTextRunFilterChain(segmentStyle),
|
|
1789
|
+
opacity: chunkSBRSPTSA_js.getTextAlphaOpacity(segmentStyle),
|
|
1790
|
+
WebkitBoxReflect: chunkSBRSPTSA_js.buildTextReflectionCss(segmentStyle)
|
|
1791
1791
|
};
|
|
1792
1792
|
const runRtl = segmentStyle.rtl;
|
|
1793
1793
|
if (runRtl !== void 0 && runRtl !== paragraphRtl) {
|
|
@@ -1807,7 +1807,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1807
1807
|
spanStyle.fontSize = baseFontSize * (bulletInfo.sizePercent / 100) * baselineFontScale;
|
|
1808
1808
|
}
|
|
1809
1809
|
if (bulletInfo.color) {
|
|
1810
|
-
spanStyle.color =
|
|
1810
|
+
spanStyle.color = chunkSBRSPTSA_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
|
|
1811
1811
|
}
|
|
1812
1812
|
if (typeof bulletHangPx === "number" && bulletHangPx > 0) {
|
|
1813
1813
|
spanStyle.display = "inline-block";
|
|
@@ -1852,7 +1852,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1852
1852
|
textAlign: segment.rubyAlignment === "l" ? "left" : segment.rubyAlignment === "r" ? "right" : segment.rubyAlignment === "dist" || segment.rubyAlignment === "distCat" || segment.rubyAlignment === "distLetter" ? "justify" : "center"
|
|
1853
1853
|
};
|
|
1854
1854
|
if (segment.rubyStyle?.color) {
|
|
1855
|
-
rubyStyle.color =
|
|
1855
|
+
rubyStyle.color = chunkSBRSPTSA_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
|
|
1856
1856
|
}
|
|
1857
1857
|
innerContent = /* @__PURE__ */ jsxRuntime.jsxs("ruby", { children: [
|
|
1858
1858
|
baseContent,
|
|
@@ -1925,7 +1925,7 @@ function resolveParagraphSpacing(input) {
|
|
|
1925
1925
|
if (typeof exactPt === "number" && exactPt > 0) {
|
|
1926
1926
|
result.lineHeight = `${exactPt * PT_TO_PX}px`;
|
|
1927
1927
|
} else if (typeof multiplier === "number" && multiplier > 0) {
|
|
1928
|
-
result.lineHeight =
|
|
1928
|
+
result.lineHeight = chunkSBRSPTSA_js.proportionalLineHeight(multiplier);
|
|
1929
1929
|
}
|
|
1930
1930
|
return result;
|
|
1931
1931
|
}
|
|
@@ -1947,7 +1947,7 @@ function groupSegmentsIntoParagraphs(segments) {
|
|
|
1947
1947
|
return paragraphs;
|
|
1948
1948
|
}
|
|
1949
1949
|
function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
|
|
1950
|
-
if (!
|
|
1950
|
+
if (!chunkSBRSPTSA_js.hasTextProperties(element)) {
|
|
1951
1951
|
return emptyFallback || null;
|
|
1952
1952
|
}
|
|
1953
1953
|
const effectiveSegments = segmentOverrides ?? element.textSegments;
|
|
@@ -1968,10 +1968,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
1968
1968
|
return element.text || emptyFallback || "";
|
|
1969
1969
|
}
|
|
1970
1970
|
const paragraphs = groupSegmentsIntoParagraphs(effectiveSegments);
|
|
1971
|
-
const paragraphIndents =
|
|
1972
|
-
const elementRtl =
|
|
1973
|
-
const elementAlign =
|
|
1974
|
-
const bodyStyle =
|
|
1971
|
+
const paragraphIndents = chunkSBRSPTSA_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
|
|
1972
|
+
const elementRtl = chunkSBRSPTSA_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
|
|
1973
|
+
const elementAlign = chunkSBRSPTSA_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
|
|
1974
|
+
const bodyStyle = chunkSBRSPTSA_js.hasTextProperties(element) ? element.textStyle : void 0;
|
|
1975
1975
|
const spaceFirstLast = bodyStyle?.spaceFirstLastParagraph !== false;
|
|
1976
1976
|
return paragraphs.map(({ entries: paraSegments, terminator }, paraIndex) => {
|
|
1977
1977
|
const paraIndent = paragraphIndents?.[paraIndex];
|
|
@@ -1986,14 +1986,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
1986
1986
|
return Boolean(segment.text) && segment.text.trim().length > 0;
|
|
1987
1987
|
});
|
|
1988
1988
|
const hasBullet = bulletInfo && !bulletInfo.none && hasVisibleTextContent;
|
|
1989
|
-
const paraRtl =
|
|
1989
|
+
const paraRtl = chunkSBRSPTSA_js.resolveParagraphRtl(paraSegments, elementRtl);
|
|
1990
1990
|
const isRtlParagraph = paraRtl === true;
|
|
1991
|
-
const paraAlign =
|
|
1992
|
-
const cssTextAlign =
|
|
1991
|
+
const paraAlign = chunkSBRSPTSA_js.resolveParagraphAlign(paraSegments, elementAlign);
|
|
1992
|
+
const cssTextAlign = chunkSBRSPTSA_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
|
|
1993
1993
|
const paraMarginLeft = isRtlParagraph ? void 0 : rawMarginLeft;
|
|
1994
1994
|
const paraMarginRight = isRtlParagraph ? rawMarginLeft : void 0;
|
|
1995
1995
|
const paraTextIndent = rawTextIndent;
|
|
1996
|
-
const paraKinsokuStyle =
|
|
1996
|
+
const paraKinsokuStyle = chunkSBRSPTSA_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
|
|
1997
1997
|
const hasParaKinsoku = Object.keys(paraKinsokuStyle).length > 0;
|
|
1998
1998
|
const paraProps = effectiveSegments[firstSeg?.globalIndex ?? -1]?.paragraphProperties ?? (paraSegments.length === 0 ? terminator?.paragraphProperties : void 0);
|
|
1999
1999
|
const spacing = resolveParagraphSpacing({
|
|
@@ -2003,7 +2003,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
2003
2003
|
isLast: paraIndex === paragraphs.length - 1,
|
|
2004
2004
|
spaceFirstLast
|
|
2005
2005
|
});
|
|
2006
|
-
const strutFontSize =
|
|
2006
|
+
const strutFontSize = chunkSBRSPTSA_js.resolveParagraphStrutFontSize(
|
|
2007
2007
|
paraSegments.length > 0 ? paraSegments.map(({ segment }) => segment) : terminator ? [terminator] : [],
|
|
2008
2008
|
bodyStyle?.fontSize
|
|
2009
2009
|
);
|
|
@@ -2107,13 +2107,13 @@ function hexToRgbUnit(hex) {
|
|
|
2107
2107
|
};
|
|
2108
2108
|
}
|
|
2109
2109
|
function getDuotoneColors(element) {
|
|
2110
|
-
if (!
|
|
2110
|
+
if (!chunkSBRSPTSA_js.isImageLikeElement(element)) {
|
|
2111
2111
|
return void 0;
|
|
2112
2112
|
}
|
|
2113
2113
|
return element.imageEffects?.duotone;
|
|
2114
2114
|
}
|
|
2115
2115
|
function buildLineShadowCss(element) {
|
|
2116
|
-
if (!
|
|
2116
|
+
if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
|
|
2117
2117
|
return void 0;
|
|
2118
2118
|
}
|
|
2119
2119
|
const ss = element.shapeStyle;
|
|
@@ -2124,13 +2124,13 @@ function buildLineShadowCss(element) {
|
|
|
2124
2124
|
const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
|
|
2125
2125
|
const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
|
|
2126
2126
|
const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
|
|
2127
|
-
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${
|
|
2128
|
-
|
|
2127
|
+
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkSBRSPTSA_js.colorWithOpacity(
|
|
2128
|
+
chunkSBRSPTSA_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
|
|
2129
2129
|
opacity
|
|
2130
2130
|
)}`;
|
|
2131
2131
|
}
|
|
2132
2132
|
function buildLineGlowFilter(element) {
|
|
2133
|
-
if (!
|
|
2133
|
+
if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
|
|
2134
2134
|
return void 0;
|
|
2135
2135
|
}
|
|
2136
2136
|
const ss = element.shapeStyle;
|
|
@@ -2139,7 +2139,7 @@ function buildLineGlowFilter(element) {
|
|
|
2139
2139
|
}
|
|
2140
2140
|
const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
|
|
2141
2141
|
const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
|
|
2142
|
-
const glowCol =
|
|
2142
|
+
const glowCol = chunkSBRSPTSA_js.colorWithOpacity(chunkSBRSPTSA_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
|
|
2143
2143
|
return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
|
|
2144
2144
|
}
|
|
2145
2145
|
function mapDagBlendModeToCss(blend) {
|
|
@@ -2163,7 +2163,7 @@ function getDagDuotoneFilterId(elementId) {
|
|
|
2163
2163
|
return `dag-duotone-${elementId}`;
|
|
2164
2164
|
}
|
|
2165
2165
|
function hasDagDuotoneEffect(element) {
|
|
2166
|
-
if (!
|
|
2166
|
+
if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
|
|
2167
2167
|
return false;
|
|
2168
2168
|
}
|
|
2169
2169
|
return Boolean(element.shapeStyle?.dagDuotone);
|
|
@@ -2226,7 +2226,7 @@ function getRoundRectRadiusPx2(element) {
|
|
|
2226
2226
|
|
|
2227
2227
|
// src/viewer/utils/shape-visual-3d.ts
|
|
2228
2228
|
function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
|
|
2229
|
-
return
|
|
2229
|
+
return chunkSBRSPTSA_js.build3DExtrusionData(
|
|
2230
2230
|
shape3d,
|
|
2231
2231
|
scene3d,
|
|
2232
2232
|
fillColor,
|
|
@@ -2235,7 +2235,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
|
|
|
2235
2235
|
);
|
|
2236
2236
|
}
|
|
2237
2237
|
function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
|
|
2238
|
-
|
|
2238
|
+
chunkSBRSPTSA_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
|
|
2239
2239
|
}
|
|
2240
2240
|
|
|
2241
2241
|
// src/viewer/utils/shape-visual-style.ts
|
|
@@ -2243,43 +2243,43 @@ function getGradientTilingCss(style) {
|
|
|
2243
2243
|
if (!style || style.fillMode !== "gradient") {
|
|
2244
2244
|
return void 0;
|
|
2245
2245
|
}
|
|
2246
|
-
const isStructuredLinear = (style.fillGradientType || "linear") === "linear" &&
|
|
2246
|
+
const isStructuredLinear = (style.fillGradientType || "linear") === "linear" && chunkSBRSPTSA_js.sanitizeGradientStops(style.fillGradientStops).length > 0;
|
|
2247
2247
|
if (isStructuredLinear) {
|
|
2248
|
-
const flip =
|
|
2248
|
+
const flip = chunkSBRSPTSA_js.getGradientTileFlipCss(style.fillGradientFlip);
|
|
2249
2249
|
if (flip) {
|
|
2250
2250
|
return flip;
|
|
2251
2251
|
}
|
|
2252
2252
|
}
|
|
2253
|
-
return
|
|
2253
|
+
return chunkSBRSPTSA_js.getGradientTileRectCss(style.fillGradientTileRect);
|
|
2254
2254
|
}
|
|
2255
2255
|
function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2256
|
-
if (!
|
|
2256
|
+
if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
|
|
2257
2257
|
return {};
|
|
2258
2258
|
}
|
|
2259
2259
|
const normalizedShapeType = getShapeType(element.shapeType);
|
|
2260
|
-
const clipPath =
|
|
2260
|
+
const clipPath = chunkSBRSPTSA_js.isIdentityRectClip(element) ? void 0 : chunkSBRSPTSA_js.getResolvedShapeClipPath(element);
|
|
2261
2261
|
const rendersCustomVectorPath = (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;
|
|
2262
|
-
const rendersStrokeOnlyPreset =
|
|
2262
|
+
const rendersStrokeOnlyPreset = chunkSBRSPTSA_js.isStrokeOnlyPresetElement(element);
|
|
2263
2263
|
const fillOpacity = element.shapeStyle?.fillOpacity;
|
|
2264
2264
|
const strokeOpacity = element.shapeStyle?.strokeOpacity;
|
|
2265
|
-
const strokeDash =
|
|
2266
|
-
const fillGradient =
|
|
2265
|
+
const strokeDash = chunkSBRSPTSA_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2266
|
+
const fillGradient = chunkSBRSPTSA_js.buildCssGradientFromShapeStyle(element.shapeStyle, {
|
|
2267
2267
|
rotation: element.rotation,
|
|
2268
2268
|
width: element.width,
|
|
2269
2269
|
height: element.height
|
|
2270
2270
|
}) || element.shapeStyle?.fillGradient;
|
|
2271
|
-
const shadowCss =
|
|
2272
|
-
const innerShadowCss =
|
|
2273
|
-
const resolvedFillColor =
|
|
2274
|
-
const resolvedStrokeColor =
|
|
2271
|
+
const shadowCss = chunkSBRSPTSA_js.buildShadowCssFromShapeStyle(element.shapeStyle);
|
|
2272
|
+
const innerShadowCss = chunkSBRSPTSA_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
|
|
2273
|
+
const resolvedFillColor = chunkSBRSPTSA_js.colorWithOpacity(fillColor, fillOpacity);
|
|
2274
|
+
const resolvedStrokeColor = chunkSBRSPTSA_js.colorWithOpacity(strokeColor, strokeOpacity);
|
|
2275
2275
|
const ss = element.shapeStyle;
|
|
2276
2276
|
const gradientTiling = getGradientTilingCss(ss);
|
|
2277
|
-
const paintsGradientOutline =
|
|
2277
|
+
const paintsGradientOutline = chunkSBRSPTSA_js.suppressesCssBorder(element);
|
|
2278
2278
|
const hasFillOverlayColor = Boolean(
|
|
2279
2279
|
ss?.dagFillOverlayColor && ss.dagFillOverlayColor !== "transparent"
|
|
2280
2280
|
);
|
|
2281
2281
|
const combinedShadowParts = [];
|
|
2282
|
-
const multiLayerShadow =
|
|
2282
|
+
const multiLayerShadow = chunkSBRSPTSA_js.buildMultiLayerShadowCss(element.shapeStyle);
|
|
2283
2283
|
if (multiLayerShadow) {
|
|
2284
2284
|
combinedShadowParts.push(multiLayerShadow);
|
|
2285
2285
|
} else if (shadowCss) {
|
|
@@ -2288,7 +2288,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2288
2288
|
if (innerShadowCss) {
|
|
2289
2289
|
combinedShadowParts.push(innerShadowCss);
|
|
2290
2290
|
}
|
|
2291
|
-
const glowBoxShadow =
|
|
2291
|
+
const glowBoxShadow = chunkSBRSPTSA_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
|
|
2292
2292
|
if (glowBoxShadow) {
|
|
2293
2293
|
combinedShadowParts.push(glowBoxShadow);
|
|
2294
2294
|
}
|
|
@@ -2296,7 +2296,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2296
2296
|
if (lineShadow) {
|
|
2297
2297
|
combinedShadowParts.push(lineShadow);
|
|
2298
2298
|
}
|
|
2299
|
-
const compoundLineShadow =
|
|
2299
|
+
const compoundLineShadow = chunkSBRSPTSA_js.getCompoundLineBoxShadow(
|
|
2300
2300
|
element.shapeStyle?.compoundLine,
|
|
2301
2301
|
strokeWidth,
|
|
2302
2302
|
resolvedStrokeColor
|
|
@@ -2309,11 +2309,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2309
2309
|
if (ss?.glowColor && ss.glowColor !== "transparent" && ss.glowRadius) {
|
|
2310
2310
|
const glowOpacity = typeof ss.glowOpacity === "number" ? ss.glowOpacity : 0.75;
|
|
2311
2311
|
const glowRad = Math.round(Math.max(0, ss.glowRadius));
|
|
2312
|
-
const glowCol =
|
|
2312
|
+
const glowCol = chunkSBRSPTSA_js.colorWithOpacity(chunkSBRSPTSA_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
|
|
2313
2313
|
filterParts.push(`drop-shadow(0 0 ${glowRad}px ${glowCol})`);
|
|
2314
2314
|
}
|
|
2315
2315
|
if (typeof ss?.softEdgeRadius === "number" && ss.softEdgeRadius > 0) {
|
|
2316
|
-
filterParts.push(`url(#${
|
|
2316
|
+
filterParts.push(`url(#${chunkSBRSPTSA_js.getSoftEdgeFilterId(element.id)})`);
|
|
2317
2317
|
}
|
|
2318
2318
|
if (typeof ss?.blurRadius === "number" && ss.blurRadius > 0) {
|
|
2319
2319
|
filterParts.push(`blur(${Math.round(ss.blurRadius)}px)`);
|
|
@@ -2322,13 +2322,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2322
2322
|
if (lineGlowCss) {
|
|
2323
2323
|
filterParts.push(lineGlowCss);
|
|
2324
2324
|
}
|
|
2325
|
-
const dagFilter =
|
|
2325
|
+
const dagFilter = chunkSBRSPTSA_js.getEffectDagFilter(ss, element.id);
|
|
2326
2326
|
if (dagFilter) {
|
|
2327
2327
|
filterParts.push(dagFilter);
|
|
2328
2328
|
}
|
|
2329
2329
|
const lineJoinCss = ss?.lineJoin === "round" ? "round" : ss?.lineJoin === "bevel" ? "bevel" : ss?.lineJoin === "miter" ? "miter" : void 0;
|
|
2330
2330
|
const miterLimitCss = ss?.lineJoin === "miter" && typeof ss?.miterLimit === "number" ? Math.max(ss.miterLimit / 1e5, 1) : void 0;
|
|
2331
|
-
const patternFill =
|
|
2331
|
+
const patternFill = chunkSBRSPTSA_js.buildPatternFillCss(element.shapeStyle);
|
|
2332
2332
|
const imageFillUrl = ss?.fillMode === "image" && ss.fillImageUrl ? ss.fillImageUrl : void 0;
|
|
2333
2333
|
const imageFillMode = ss?.fillImageMode || "stretch";
|
|
2334
2334
|
let reflectCss;
|
|
@@ -2340,7 +2340,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2340
2340
|
const endOpacity = typeof ss.reflectionEndOpacity === "number" ? ss.reflectionEndOpacity : 0;
|
|
2341
2341
|
const fadeLength = typeof ss.reflectionEndPosition === "number" ? Math.round(ss.reflectionEndPosition * Math.max(element.height, 1)) : 100;
|
|
2342
2342
|
const blurRadius = typeof ss.reflectionBlurRadius === "number" ? ss.reflectionBlurRadius : 0;
|
|
2343
|
-
reflectCss =
|
|
2343
|
+
reflectCss = chunkSBRSPTSA_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
|
|
2344
2344
|
}
|
|
2345
2345
|
}
|
|
2346
2346
|
const base = {
|
|
@@ -2386,9 +2386,9 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2386
2386
|
// path following the shape's geometry, because a CSS border can only take
|
|
2387
2387
|
// one colour. Keeping the border too would draw the parser's averaged
|
|
2388
2388
|
// solid underneath the gradient.
|
|
2389
|
-
borderWidth: strokeWidth > 0 && !paintsGradientOutline ?
|
|
2389
|
+
borderWidth: strokeWidth > 0 && !paintsGradientOutline ? chunkSBRSPTSA_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
|
|
2390
2390
|
borderColor: strokeWidth > 0 && !paintsGradientOutline ? resolvedStrokeColor : void 0,
|
|
2391
|
-
borderStyle: strokeWidth > 0 && !paintsGradientOutline ?
|
|
2391
|
+
borderStyle: strokeWidth > 0 && !paintsGradientOutline ? chunkSBRSPTSA_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
|
|
2392
2392
|
strokeLinejoin: lineJoinCss,
|
|
2393
2393
|
strokeMiterlimit: miterLimitCss,
|
|
2394
2394
|
strokeLinecap: ss?.lineCap === "rnd" ? "round" : ss?.lineCap === "sq" ? "square" : ss?.lineCap === "flat" ? "butt" : void 0
|
|
@@ -2428,7 +2428,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2428
2428
|
if (normalizedShapeType === "ellipse") {
|
|
2429
2429
|
return {
|
|
2430
2430
|
...base,
|
|
2431
|
-
|
|
2431
|
+
// `50%`, not a huge px value: CSS clamps over-large radii by scaling
|
|
2432
|
+
// them all down uniformly, so `9999px` on a non-square box collapses to
|
|
2433
|
+
// half the SHORT side on every corner - a pill with flat long edges,
|
|
2434
|
+
// not an ellipse. `50%` resolves per-axis and inscribes correctly.
|
|
2435
|
+
borderRadius: "50%"
|
|
2432
2436
|
};
|
|
2433
2437
|
}
|
|
2434
2438
|
if (clipPath && !rendersStrokeOnlyPreset) {
|
|
@@ -2444,7 +2448,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2444
2448
|
borderWidth: 0,
|
|
2445
2449
|
borderTopWidth: Math.max(strokeWidth, 2),
|
|
2446
2450
|
borderTopColor: resolvedStrokeColor,
|
|
2447
|
-
borderTopStyle:
|
|
2451
|
+
borderTopStyle: chunkSBRSPTSA_js.getCssBorderDashStyle(strokeDash)
|
|
2448
2452
|
};
|
|
2449
2453
|
}
|
|
2450
2454
|
if (normalizedShapeType === "cylinder") {
|
|
@@ -2458,13 +2462,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2458
2462
|
function getConnectorAdjustment(element, key, fallback) {
|
|
2459
2463
|
const direct = element.shapeAdjustments?.[key];
|
|
2460
2464
|
if (typeof direct === "number" && Number.isFinite(direct)) {
|
|
2461
|
-
return
|
|
2465
|
+
return chunkSBRSPTSA_js.clampUnitInterval(direct / 1e5);
|
|
2462
2466
|
}
|
|
2463
2467
|
const fallbackKey = element.shapeAdjustments?.adj;
|
|
2464
2468
|
if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
|
|
2465
|
-
return
|
|
2469
|
+
return chunkSBRSPTSA_js.clampUnitInterval(fallbackKey / 1e5);
|
|
2466
2470
|
}
|
|
2467
|
-
return
|
|
2471
|
+
return chunkSBRSPTSA_js.clampUnitInterval(fallback);
|
|
2468
2472
|
}
|
|
2469
2473
|
function getConnectorPathGeometry(element) {
|
|
2470
2474
|
const width = Math.max(element.width, 0);
|
|
@@ -2597,7 +2601,7 @@ function toHexByte(value) {
|
|
|
2597
2601
|
return clamped.toString(16).padStart(2, "0");
|
|
2598
2602
|
}
|
|
2599
2603
|
function shiftHex(hex, factor, towardsWhite) {
|
|
2600
|
-
const channels =
|
|
2604
|
+
const channels = chunkSBRSPTSA_js.hexToRgbChannels(hex);
|
|
2601
2605
|
if (!channels) {
|
|
2602
2606
|
return hex;
|
|
2603
2607
|
}
|
|
@@ -2623,7 +2627,7 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
|
|
|
2623
2627
|
const fillOff = subpath.fillMode === "none" || !hasFill;
|
|
2624
2628
|
return {
|
|
2625
2629
|
d: subpath.d,
|
|
2626
|
-
fill: fillOff ? "none" :
|
|
2630
|
+
fill: fillOff ? "none" : chunkSBRSPTSA_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
|
|
2627
2631
|
stroked: subpath.stroke !== false
|
|
2628
2632
|
};
|
|
2629
2633
|
});
|
|
@@ -2639,11 +2643,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
|
|
|
2639
2643
|
strokePaint,
|
|
2640
2644
|
strokeWidth,
|
|
2641
2645
|
dashArray,
|
|
2642
|
-
lineCap:
|
|
2646
|
+
lineCap: chunkSBRSPTSA_js.svgLineCap(shapeStyle?.lineCap),
|
|
2643
2647
|
lineJoin,
|
|
2644
2648
|
miterLimit,
|
|
2645
|
-
offsets:
|
|
2646
|
-
widths:
|
|
2649
|
+
offsets: chunkSBRSPTSA_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
|
|
2650
|
+
widths: chunkSBRSPTSA_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
|
|
2647
2651
|
};
|
|
2648
2652
|
}
|
|
2649
2653
|
function strokeStrands(d, keyBase, ctx) {
|
|
@@ -2691,9 +2695,9 @@ function gradientDefs(gradient) {
|
|
|
2691
2695
|
}
|
|
2692
2696
|
function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false, gradient) {
|
|
2693
2697
|
const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
|
|
2694
|
-
const subpaths = structuredPaths && structuredPaths.length > 0 ?
|
|
2698
|
+
const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkSBRSPTSA_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
|
|
2695
2699
|
const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
|
|
2696
|
-
const gradientPaint = gradient ?
|
|
2700
|
+
const gradientPaint = gradient ? chunkSBRSPTSA_js.svgGradientFillRef(gradient) : void 0;
|
|
2697
2701
|
const nodes = [];
|
|
2698
2702
|
if (subpaths && needsPerSubpath) {
|
|
2699
2703
|
const paints = buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity);
|
|
@@ -2725,7 +2729,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2725
2729
|
"path",
|
|
2726
2730
|
{
|
|
2727
2731
|
d: pathData,
|
|
2728
|
-
fill: animatesFill ? "inherit" : gradientPaint ??
|
|
2732
|
+
fill: animatesFill ? "inherit" : gradientPaint ?? chunkSBRSPTSA_js.colorWithOpacity(fillColor, fillOpacity),
|
|
2729
2733
|
stroke: "none",
|
|
2730
2734
|
vectorEffect: "non-scaling-stroke"
|
|
2731
2735
|
},
|
|
@@ -2751,14 +2755,14 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2751
2755
|
);
|
|
2752
2756
|
}
|
|
2753
2757
|
function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2754
|
-
if (!
|
|
2758
|
+
if (!chunkSBRSPTSA_js.hasShapeProperties(element)) {
|
|
2755
2759
|
return null;
|
|
2756
2760
|
}
|
|
2757
2761
|
const normalizedType = (element.shapeType || "").toLowerCase();
|
|
2758
|
-
const fillPaint = animatesFill ? "inherit" :
|
|
2759
|
-
const strokePaint = animatesStroke ? "inherit" :
|
|
2760
|
-
const dashType =
|
|
2761
|
-
const dashArray =
|
|
2762
|
+
const fillPaint = animatesFill ? "inherit" : chunkSBRSPTSA_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
|
|
2763
|
+
const strokePaint = animatesStroke ? "inherit" : chunkSBRSPTSA_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
|
|
2764
|
+
const dashType = chunkSBRSPTSA_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2765
|
+
const dashArray = chunkSBRSPTSA_js.getSvgStrokeDasharray(
|
|
2762
2766
|
dashType,
|
|
2763
2767
|
Math.max(strokeWidth, 1),
|
|
2764
2768
|
element.shapeStyle?.customDashSegments
|
|
@@ -2839,21 +2843,21 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2839
2843
|
// container's `background-image` is suppressed for custom geometry, so
|
|
2840
2844
|
// without this the shape fell back to the parser's representative solid
|
|
2841
2845
|
// and lost every fade (issue #132).
|
|
2842
|
-
|
|
2846
|
+
chunkSBRSPTSA_js.buildSvgGradientDef(element.shapeStyle, element.id)
|
|
2843
2847
|
);
|
|
2844
2848
|
}
|
|
2845
|
-
if (
|
|
2849
|
+
if (chunkSBRSPTSA_js.isCalloutShape(normalizedType)) {
|
|
2846
2850
|
const width = Math.max(element.width, 1);
|
|
2847
2851
|
const height = Math.max(element.height, 1);
|
|
2848
|
-
const geometry =
|
|
2852
|
+
const geometry = chunkSBRSPTSA_js.getCalloutLeaderLineGeometry(
|
|
2849
2853
|
normalizedType,
|
|
2850
2854
|
width,
|
|
2851
2855
|
height,
|
|
2852
2856
|
element.shapeAdjustments
|
|
2853
2857
|
);
|
|
2854
2858
|
if (geometry && geometry.points.length >= 2) {
|
|
2855
|
-
const leaderPath =
|
|
2856
|
-
const bounds =
|
|
2859
|
+
const leaderPath = chunkSBRSPTSA_js.buildCalloutLeaderLineSvgPath(geometry);
|
|
2860
|
+
const bounds = chunkSBRSPTSA_js.getCalloutViewBoxBounds(width, height, geometry);
|
|
2857
2861
|
const lineStroke = Math.max(strokeWidth, 1);
|
|
2858
2862
|
const offsetLeft = bounds.minX;
|
|
2859
2863
|
const offsetTop = bounds.minY;
|
|
@@ -2916,10 +2920,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2916
2920
|
const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
|
|
2917
2921
|
const endArrowL = element.shapeStyle?.connectorEndArrowLength;
|
|
2918
2922
|
const compoundLine = element.shapeStyle?.compoundLine;
|
|
2919
|
-
const connectorLineCap =
|
|
2923
|
+
const connectorLineCap = chunkSBRSPTSA_js.svgLineCap(element.shapeStyle?.lineCap);
|
|
2920
2924
|
const hitTargetWidth = Math.max(strokeWidth * 3, 12);
|
|
2921
|
-
const offsets =
|
|
2922
|
-
const widths =
|
|
2925
|
+
const offsets = chunkSBRSPTSA_js.getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
2926
|
+
const widths = chunkSBRSPTSA_js.getCompoundLineWidths(compoundLine, strokeWidth);
|
|
2923
2927
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2924
2928
|
"svg",
|
|
2925
2929
|
{
|
|
@@ -2986,15 +2990,15 @@ function parseGradientFillCss(gradFill) {
|
|
|
2986
2990
|
}
|
|
2987
2991
|
const parsed = stops.map((gs) => {
|
|
2988
2992
|
const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
|
|
2989
|
-
const color =
|
|
2990
|
-
const opacity =
|
|
2991
|
-
return { pos, color:
|
|
2993
|
+
const color = chunkSBRSPTSA_js.parseDrawingColor(gs) ?? "#888888";
|
|
2994
|
+
const opacity = chunkSBRSPTSA_js.parseDrawingColorOpacity(gs);
|
|
2995
|
+
return { pos, color: chunkSBRSPTSA_js.colorWithOpacity(color, opacity) };
|
|
2992
2996
|
}).sort((a, b) => a.pos - b.pos);
|
|
2993
2997
|
const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
|
|
2994
2998
|
const lin = gradFill["a:lin"];
|
|
2995
2999
|
if (lin) {
|
|
2996
3000
|
const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
|
|
2997
|
-
const angleDeg = Math.round(
|
|
3001
|
+
const angleDeg = Math.round(chunkSBRSPTSA_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
|
|
2998
3002
|
return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
|
|
2999
3003
|
}
|
|
3000
3004
|
const path = gradFill["a:path"];
|
|
@@ -3029,8 +3033,8 @@ function parsePatternFillCss(pattFill) {
|
|
|
3029
3033
|
if (!pattFill) {
|
|
3030
3034
|
return void 0;
|
|
3031
3035
|
}
|
|
3032
|
-
const fgColor =
|
|
3033
|
-
const bgColor =
|
|
3036
|
+
const fgColor = chunkSBRSPTSA_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
|
|
3037
|
+
const bgColor = chunkSBRSPTSA_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
|
|
3034
3038
|
const preset = String(pattFill["@_prst"] || "ltDnDiag");
|
|
3035
3039
|
switch (preset) {
|
|
3036
3040
|
case "ltHorz":
|
|
@@ -3141,11 +3145,11 @@ function parseCellBorders(cellProperties) {
|
|
|
3141
3145
|
const prstDash = ln["a:prstDash"];
|
|
3142
3146
|
const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
|
|
3143
3147
|
const cssBorderStyle = ooxmlDashToCss(dashVal);
|
|
3144
|
-
const color =
|
|
3148
|
+
const color = chunkSBRSPTSA_js.parseDrawingColor(ln["a:solidFill"]);
|
|
3145
3149
|
if (color) {
|
|
3146
|
-
const opacity =
|
|
3150
|
+
const opacity = chunkSBRSPTSA_js.parseDrawingColorOpacity(ln["a:solidFill"]);
|
|
3147
3151
|
const key = `${edge.prefix}`;
|
|
3148
|
-
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${
|
|
3152
|
+
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkSBRSPTSA_js.colorWithOpacity(color, opacity)}`;
|
|
3149
3153
|
}
|
|
3150
3154
|
}
|
|
3151
3155
|
return borderStyle;
|
|
@@ -3158,7 +3162,7 @@ function parseCellTextEffects(runProps) {
|
|
|
3158
3162
|
const textShadowParts = [];
|
|
3159
3163
|
const outerShdw = effectLst["a:outerShdw"];
|
|
3160
3164
|
if (outerShdw) {
|
|
3161
|
-
const shdwColor =
|
|
3165
|
+
const shdwColor = chunkSBRSPTSA_js.parseDrawingColor(outerShdw);
|
|
3162
3166
|
if (shdwColor) {
|
|
3163
3167
|
const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
|
|
3164
3168
|
const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
|
|
@@ -3176,7 +3180,7 @@ function parseCellTextEffects(runProps) {
|
|
|
3176
3180
|
}
|
|
3177
3181
|
const glow = effectLst["a:glow"];
|
|
3178
3182
|
if (glow) {
|
|
3179
|
-
const glowColor =
|
|
3183
|
+
const glowColor = chunkSBRSPTSA_js.parseDrawingColor(glow);
|
|
3180
3184
|
if (glowColor) {
|
|
3181
3185
|
const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
|
|
3182
3186
|
const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
|
|
@@ -3255,10 +3259,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3255
3259
|
if (runProps?.["@_u"] !== void 0) {
|
|
3256
3260
|
cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
|
|
3257
3261
|
}
|
|
3258
|
-
const runColor =
|
|
3262
|
+
const runColor = chunkSBRSPTSA_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkSBRSPTSA_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
|
|
3259
3263
|
if (runColor) {
|
|
3260
|
-
const opacity =
|
|
3261
|
-
cellStyle.color =
|
|
3264
|
+
const opacity = chunkSBRSPTSA_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
|
|
3265
|
+
cellStyle.color = chunkSBRSPTSA_js.colorWithOpacity(runColor, opacity);
|
|
3262
3266
|
}
|
|
3263
3267
|
const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
|
|
3264
3268
|
if (fontFamily) {
|
|
@@ -3268,15 +3272,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3268
3272
|
cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
|
|
3269
3273
|
}
|
|
3270
3274
|
const cellProperties = cellXml["a:tcPr"];
|
|
3271
|
-
const cellFill =
|
|
3275
|
+
const cellFill = chunkSBRSPTSA_js.parseDrawingColor(
|
|
3272
3276
|
cellProperties?.["a:solidFill"],
|
|
3273
3277
|
schemeColorOverrides
|
|
3274
3278
|
);
|
|
3275
3279
|
if (cellFill) {
|
|
3276
|
-
const opacity =
|
|
3280
|
+
const opacity = chunkSBRSPTSA_js.parseDrawingColorOpacity(
|
|
3277
3281
|
cellProperties?.["a:solidFill"]
|
|
3278
3282
|
);
|
|
3279
|
-
cellStyle.backgroundColor =
|
|
3283
|
+
cellStyle.backgroundColor = chunkSBRSPTSA_js.colorWithOpacity(cellFill, opacity);
|
|
3280
3284
|
} else {
|
|
3281
3285
|
const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
|
|
3282
3286
|
if (gradCss) {
|
|
@@ -3291,16 +3295,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3291
3295
|
const edgeBorders = parseCellBorders(cellProperties);
|
|
3292
3296
|
Object.assign(cellStyle, edgeBorders);
|
|
3293
3297
|
if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
|
|
3294
|
-
const borderColor =
|
|
3298
|
+
const borderColor = chunkSBRSPTSA_js.parseDrawingColor(
|
|
3295
3299
|
cellProperties?.["a:lnL"]?.["a:solidFill"],
|
|
3296
3300
|
schemeColorOverrides
|
|
3297
|
-
) ||
|
|
3301
|
+
) || chunkSBRSPTSA_js.parseDrawingColor(
|
|
3298
3302
|
cellProperties?.["a:lnR"]?.["a:solidFill"],
|
|
3299
3303
|
schemeColorOverrides
|
|
3300
|
-
) ||
|
|
3304
|
+
) || chunkSBRSPTSA_js.parseDrawingColor(
|
|
3301
3305
|
cellProperties?.["a:lnT"]?.["a:solidFill"],
|
|
3302
3306
|
schemeColorOverrides
|
|
3303
|
-
) ||
|
|
3307
|
+
) || chunkSBRSPTSA_js.parseDrawingColor(
|
|
3304
3308
|
cellProperties?.["a:lnB"]?.["a:solidFill"],
|
|
3305
3309
|
schemeColorOverrides
|
|
3306
3310
|
);
|
|
@@ -3379,10 +3383,10 @@ function resolveTableStyleFillColor(fill, colorScheme) {
|
|
|
3379
3383
|
}
|
|
3380
3384
|
let color = base;
|
|
3381
3385
|
if (fill.tint !== void 0 && fill.tint > 0) {
|
|
3382
|
-
color =
|
|
3386
|
+
color = chunkSBRSPTSA_js.tintColor2(color, fill.tint / 1e5);
|
|
3383
3387
|
}
|
|
3384
3388
|
if (fill.shade !== void 0 && fill.shade > 0) {
|
|
3385
|
-
color =
|
|
3389
|
+
color = chunkSBRSPTSA_js.shadeColor2(color, 1 - fill.shade / 1e5);
|
|
3386
3390
|
}
|
|
3387
3391
|
return color;
|
|
3388
3392
|
}
|
|
@@ -3407,7 +3411,7 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
|
|
|
3407
3411
|
style.fontFamily = text.fontFace;
|
|
3408
3412
|
applied = true;
|
|
3409
3413
|
} else {
|
|
3410
|
-
const refFont =
|
|
3414
|
+
const refFont = chunkSBRSPTSA_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
|
|
3411
3415
|
if (refFont) {
|
|
3412
3416
|
style.fontFamily = refFont;
|
|
3413
3417
|
applied = true;
|
|
@@ -3418,10 +3422,10 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
|
|
|
3418
3422
|
if (base) {
|
|
3419
3423
|
let color = base;
|
|
3420
3424
|
if (text.fontTint !== void 0 && text.fontTint > 0) {
|
|
3421
|
-
color =
|
|
3425
|
+
color = chunkSBRSPTSA_js.tintColor2(color, text.fontTint / 1e5);
|
|
3422
3426
|
}
|
|
3423
3427
|
if (text.fontShade !== void 0 && text.fontShade > 0) {
|
|
3424
|
-
color =
|
|
3428
|
+
color = chunkSBRSPTSA_js.shadeColor2(color, 1 - text.fontShade / 1e5);
|
|
3425
3429
|
}
|
|
3426
3430
|
style.color = color;
|
|
3427
3431
|
applied = true;
|
|
@@ -3610,7 +3614,7 @@ function parseTableElementData(element, fallbackTextStyle) {
|
|
|
3610
3614
|
};
|
|
3611
3615
|
}
|
|
3612
3616
|
function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
|
|
3613
|
-
return
|
|
3617
|
+
return chunkSBRSPTSA_js.getCellDiagonalBorders(style, tableData, pos, {
|
|
3614
3618
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
3615
3619
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
3616
3620
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -3758,9 +3762,9 @@ function cellStyleToCss(style) {
|
|
|
3758
3762
|
if (style.gradientFillCss) {
|
|
3759
3763
|
css.background = style.gradientFillCss;
|
|
3760
3764
|
} else if (style.fillMode === "pattern" && style.patternFillPreset) {
|
|
3761
|
-
const fg =
|
|
3762
|
-
const bg =
|
|
3763
|
-
const svgPattern =
|
|
3765
|
+
const fg = chunkSBRSPTSA_js.normalizeHexColor(style.patternFillForeground, "#000000");
|
|
3766
|
+
const bg = chunkSBRSPTSA_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
|
|
3767
|
+
const svgPattern = chunkSBRSPTSA_js.getPatternSvg(style.patternFillPreset, fg, bg);
|
|
3764
3768
|
if (svgPattern) {
|
|
3765
3769
|
const encoded = encodeURIComponent(svgPattern);
|
|
3766
3770
|
css.backgroundImage = `url("data:image/svg+xml,${encoded}")`;
|
|
@@ -3836,7 +3840,7 @@ function cellStyleToCss(style) {
|
|
|
3836
3840
|
if (edge.width || edge.color) {
|
|
3837
3841
|
const w = edge.width ?? 1;
|
|
3838
3842
|
const c = edge.color ?? style.borderColor ?? "#000000";
|
|
3839
|
-
const s =
|
|
3843
|
+
const s = chunkSBRSPTSA_js.ooxmlDashToCssBorderStyle(edge.dash);
|
|
3840
3844
|
css[edge.prefix] = `${w}px ${s} ${c}`;
|
|
3841
3845
|
}
|
|
3842
3846
|
}
|
|
@@ -3867,7 +3871,7 @@ function cellStyleToCss(style) {
|
|
|
3867
3871
|
css.textShadow = textShadowParts.join(", ");
|
|
3868
3872
|
}
|
|
3869
3873
|
if (style.cell3D) {
|
|
3870
|
-
Object.assign(css,
|
|
3874
|
+
Object.assign(css, chunkSBRSPTSA_js.cell3DBevelCss(style.cell3D));
|
|
3871
3875
|
}
|
|
3872
3876
|
return css;
|
|
3873
3877
|
}
|
|
@@ -3881,7 +3885,7 @@ function TableResizeOverlay({
|
|
|
3881
3885
|
const containerRef = React6.useRef(null);
|
|
3882
3886
|
const [rowBounds, setRowBounds] = React6.useState([]);
|
|
3883
3887
|
const dragRef = React6.useRef(null);
|
|
3884
|
-
const colBoundaries = React6.useMemo(() =>
|
|
3888
|
+
const colBoundaries = React6.useMemo(() => chunkSBRSPTSA_js.computeColumnBoundaries(columnWidths), [columnWidths]);
|
|
3885
3889
|
const measureRows = React6.useCallback(() => {
|
|
3886
3890
|
const container = containerRef.current;
|
|
3887
3891
|
if (!container) {
|
|
@@ -3928,11 +3932,11 @@ function TableResizeOverlay({
|
|
|
3928
3932
|
const rect = containerRef.current.getBoundingClientRect();
|
|
3929
3933
|
if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
|
|
3930
3934
|
const deltaProp = (e.clientX - drag.startPos) / rect.width;
|
|
3931
|
-
onResizeColumns(
|
|
3935
|
+
onResizeColumns(chunkSBRSPTSA_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
|
|
3932
3936
|
} else if (drag.type === "row" && onResizeRow) {
|
|
3933
3937
|
const deltaY = e.clientY - drag.startPos;
|
|
3934
|
-
const newHeight =
|
|
3935
|
-
drag.initialRowHeight ??
|
|
3938
|
+
const newHeight = chunkSBRSPTSA_js.computeResizedRowHeight(
|
|
3939
|
+
drag.initialRowHeight ?? chunkSBRSPTSA_js.DEFAULT_ROW_HEIGHT,
|
|
3936
3940
|
deltaY
|
|
3937
3941
|
);
|
|
3938
3942
|
onResizeRow(drag.index, newHeight);
|
|
@@ -3970,7 +3974,7 @@ function TableResizeOverlay({
|
|
|
3970
3974
|
e.stopPropagation();
|
|
3971
3975
|
const table = containerRef.current?.querySelector("table");
|
|
3972
3976
|
const tr = table?.querySelectorAll("tbody > tr")[index];
|
|
3973
|
-
const actualHeight = tr?.offsetHeight ??
|
|
3977
|
+
const actualHeight = tr?.offsetHeight ?? chunkSBRSPTSA_js.DEFAULT_ROW_HEIGHT;
|
|
3974
3978
|
document.body.style.cursor = "row-resize";
|
|
3975
3979
|
document.body.style.userSelect = "none";
|
|
3976
3980
|
dragRef.current = {
|
|
@@ -4018,7 +4022,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4018
4022
|
}
|
|
4019
4023
|
const first = selectedCell.selectedCells[0];
|
|
4020
4024
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
4021
|
-
return
|
|
4025
|
+
return chunkSBRSPTSA_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
|
|
4022
4026
|
})();
|
|
4023
4027
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4024
4028
|
TableResizeOverlay,
|
|
@@ -4038,7 +4042,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4038
4042
|
"table",
|
|
4039
4043
|
{
|
|
4040
4044
|
className: "w-full h-full border-collapse table-fixed",
|
|
4041
|
-
style: { fontFamily:
|
|
4045
|
+
style: { fontFamily: chunkSBRSPTSA_js.DEFAULT_FONT_FAMILY },
|
|
4042
4046
|
children: [
|
|
4043
4047
|
tableData.columnWidths.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: tableData.columnWidths.map((w, ci) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4044
4048
|
"col",
|
|
@@ -4056,7 +4060,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4056
4060
|
return null;
|
|
4057
4061
|
}
|
|
4058
4062
|
const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
|
|
4059
|
-
const isInMultiSelection =
|
|
4063
|
+
const isInMultiSelection = chunkSBRSPTSA_js.isCellInRect(rowIndex, cellIndex, selectionRect);
|
|
4060
4064
|
const isCellEditing = isCellSelected && selectedCell?.isEditing;
|
|
4061
4065
|
const diag = getCellDiagonalBorders2(
|
|
4062
4066
|
cell.style,
|
|
@@ -4086,7 +4090,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4086
4090
|
}
|
|
4087
4091
|
event.stopPropagation();
|
|
4088
4092
|
if (event.shiftKey && selectedCell) {
|
|
4089
|
-
const rect =
|
|
4093
|
+
const rect = chunkSBRSPTSA_js.computeSelectionRect(
|
|
4090
4094
|
selectedCell.rowIndex,
|
|
4091
4095
|
selectedCell.columnIndex,
|
|
4092
4096
|
rowIndex,
|
|
@@ -4096,7 +4100,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4096
4100
|
options?.onSelectCell?.({
|
|
4097
4101
|
rowIndex: selectedCell.rowIndex,
|
|
4098
4102
|
columnIndex: selectedCell.columnIndex,
|
|
4099
|
-
selectedCells:
|
|
4103
|
+
selectedCells: chunkSBRSPTSA_js.rectToCells(rect)
|
|
4100
4104
|
});
|
|
4101
4105
|
} else {
|
|
4102
4106
|
options?.onSelectCell?.({
|
|
@@ -4175,7 +4179,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4175
4179
|
}
|
|
4176
4180
|
const first = selectedCell.selectedCells[0];
|
|
4177
4181
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
4178
|
-
return
|
|
4182
|
+
return chunkSBRSPTSA_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
|
|
4179
4183
|
})();
|
|
4180
4184
|
const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
|
|
4181
4185
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4196,7 +4200,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4196
4200
|
"table",
|
|
4197
4201
|
{
|
|
4198
4202
|
className: "w-full h-full border-collapse table-fixed",
|
|
4199
|
-
style: { fontFamily:
|
|
4203
|
+
style: { fontFamily: chunkSBRSPTSA_js.DEFAULT_FONT_FAMILY },
|
|
4200
4204
|
children: [
|
|
4201
4205
|
parsedTable.columnPercentages.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((percentage, columnIndex) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4202
4206
|
"col",
|
|
@@ -4257,7 +4261,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4257
4261
|
"border px-1 py-0.5 align-top",
|
|
4258
4262
|
isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
|
|
4259
4263
|
selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
|
|
4260
|
-
|
|
4264
|
+
chunkSBRSPTSA_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
|
|
4261
4265
|
),
|
|
4262
4266
|
colSpan,
|
|
4263
4267
|
rowSpan: rSpan,
|
|
@@ -4268,7 +4272,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4268
4272
|
}
|
|
4269
4273
|
event.stopPropagation();
|
|
4270
4274
|
if (event.shiftKey && selectedCell && tableEl.tableData) {
|
|
4271
|
-
const rect =
|
|
4275
|
+
const rect = chunkSBRSPTSA_js.computeSelectionRect(
|
|
4272
4276
|
selectedCell.rowIndex,
|
|
4273
4277
|
selectedCell.columnIndex,
|
|
4274
4278
|
rowIndex,
|
|
@@ -4278,7 +4282,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4278
4282
|
options?.onSelectCell?.({
|
|
4279
4283
|
rowIndex: selectedCell.rowIndex,
|
|
4280
4284
|
columnIndex: selectedCell.columnIndex,
|
|
4281
|
-
selectedCells:
|
|
4285
|
+
selectedCells: chunkSBRSPTSA_js.rectToCells(rect)
|
|
4282
4286
|
});
|
|
4283
4287
|
} else {
|
|
4284
4288
|
options?.onSelectCell?.({
|
|
@@ -4335,24 +4339,24 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4335
4339
|
}
|
|
4336
4340
|
var LEGEND_ITEM_WIDTH = 80;
|
|
4337
4341
|
function partAttrs(part) {
|
|
4338
|
-
return part ?
|
|
4342
|
+
return part ? chunkSBRSPTSA_js.chartPartToAttrs(part) : void 0;
|
|
4339
4343
|
}
|
|
4340
4344
|
function resolveReactPalette(chartData) {
|
|
4341
4345
|
if (chartData.colorPalette && chartData.colorPalette.length > 0) {
|
|
4342
4346
|
return chartData.colorPalette;
|
|
4343
4347
|
}
|
|
4344
|
-
return [...
|
|
4348
|
+
return [...chunkSBRSPTSA_js.getChartStylePalette(chartData.style?.styleId)];
|
|
4345
4349
|
}
|
|
4346
4350
|
function buildReactChartViewModel(element) {
|
|
4347
4351
|
if (element.type !== "chart" || !element.chartData) {
|
|
4348
|
-
return
|
|
4352
|
+
return chunkSBRSPTSA_js.buildChartViewModel(element);
|
|
4349
4353
|
}
|
|
4350
4354
|
const palette = resolveReactPalette(element.chartData);
|
|
4351
4355
|
const themedElement = {
|
|
4352
4356
|
...element,
|
|
4353
4357
|
chartData: { ...element.chartData, colorPalette: palette }
|
|
4354
4358
|
};
|
|
4355
|
-
return
|
|
4359
|
+
return chunkSBRSPTSA_js.buildChartViewModel(themedElement);
|
|
4356
4360
|
}
|
|
4357
4361
|
function renderPrimitive(prim, key) {
|
|
4358
4362
|
switch (prim.kind) {
|
|
@@ -4741,7 +4745,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4741
4745
|
const unmatchedRows = [];
|
|
4742
4746
|
categories.forEach((cat, i) => {
|
|
4743
4747
|
const value = values[i] ?? 0;
|
|
4744
|
-
const code =
|
|
4748
|
+
const code = chunkSBRSPTSA_js.resolveRegionCode(cat);
|
|
4745
4749
|
if (code) {
|
|
4746
4750
|
regionValueMap.set(code, { value, label: cat });
|
|
4747
4751
|
} else {
|
|
@@ -4779,8 +4783,8 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4779
4783
|
let fill = "#e2e8f0";
|
|
4780
4784
|
let dataLabel = null;
|
|
4781
4785
|
if (entry) {
|
|
4782
|
-
const t =
|
|
4783
|
-
fill =
|
|
4786
|
+
const t = chunkSBRSPTSA_js.normalizeValue(entry.value, minVal, maxVal);
|
|
4787
|
+
fill = chunkSBRSPTSA_js.sequentialColorScale(t);
|
|
4784
4788
|
dataLabel = /* @__PURE__ */ jsxRuntime.jsx(
|
|
4785
4789
|
"text",
|
|
4786
4790
|
{
|
|
@@ -4791,7 +4795,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4791
4795
|
fontWeight: 600,
|
|
4792
4796
|
fill: "#1e293b",
|
|
4793
4797
|
style: { pointerEvents: "none" },
|
|
4794
|
-
children:
|
|
4798
|
+
children: chunkSBRSPTSA_js.formatAxisValue(entry.value)
|
|
4795
4799
|
},
|
|
4796
4800
|
`${element.id}-map-dl-${region.code}`
|
|
4797
4801
|
);
|
|
@@ -4809,7 +4813,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4809
4813
|
opacity: 0.9,
|
|
4810
4814
|
children: /* @__PURE__ */ jsxRuntime.jsxs("title", { children: [
|
|
4811
4815
|
region.name,
|
|
4812
|
-
entry ? `: ${
|
|
4816
|
+
entry ? `: ${chunkSBRSPTSA_js.formatAxisValue(entry.value)}` : ""
|
|
4813
4817
|
] })
|
|
4814
4818
|
}
|
|
4815
4819
|
),
|
|
@@ -4847,7 +4851,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4847
4851
|
fontSize: 7,
|
|
4848
4852
|
fill: "#64748b",
|
|
4849
4853
|
textAnchor: "middle",
|
|
4850
|
-
children:
|
|
4854
|
+
children: chunkSBRSPTSA_js.formatAxisValue(minVal)
|
|
4851
4855
|
},
|
|
4852
4856
|
`${element.id}-map-legend-min`
|
|
4853
4857
|
),
|
|
@@ -4859,7 +4863,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4859
4863
|
fontSize: 7,
|
|
4860
4864
|
fill: "#64748b",
|
|
4861
4865
|
textAnchor: "middle",
|
|
4862
|
-
children:
|
|
4866
|
+
children: chunkSBRSPTSA_js.formatAxisValue(maxVal)
|
|
4863
4867
|
},
|
|
4864
4868
|
`${element.id}-map-legend-max`
|
|
4865
4869
|
)
|
|
@@ -4925,7 +4929,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4925
4929
|
y,
|
|
4926
4930
|
fontSize,
|
|
4927
4931
|
fill: "#475569",
|
|
4928
|
-
children:
|
|
4932
|
+
children: chunkSBRSPTSA_js.formatAxisValue(row.value)
|
|
4929
4933
|
},
|
|
4930
4934
|
`${element.id}-map-ft-val-${i}`
|
|
4931
4935
|
)
|
|
@@ -4996,7 +5000,7 @@ function renderStackedBarChart(element, _chartData, _categoryLabels) {
|
|
|
4996
5000
|
|
|
4997
5001
|
// src/viewer/utils/chart-overlay-utils.ts
|
|
4998
5002
|
function sColor(series, idx) {
|
|
4999
|
-
return
|
|
5003
|
+
return chunkSBRSPTSA_js.seriesColor(series, idx);
|
|
5000
5004
|
}
|
|
5001
5005
|
function valToY(val, range, topY, bottomY) {
|
|
5002
5006
|
const usable = bottomY - topY;
|
|
@@ -5535,7 +5539,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
|
|
|
5535
5539
|
width: 10,
|
|
5536
5540
|
height: 10,
|
|
5537
5541
|
rx: 2,
|
|
5538
|
-
fill:
|
|
5542
|
+
fill: chunkSBRSPTSA_js.seriesColor(s, i, style?.styleId, colorPalette)
|
|
5539
5543
|
},
|
|
5540
5544
|
`${id}-leg-r-${i}`
|
|
5541
5545
|
)
|
|
@@ -5559,7 +5563,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
|
|
|
5559
5563
|
width: 10,
|
|
5560
5564
|
height: 10,
|
|
5561
5565
|
rx: 2,
|
|
5562
|
-
fill:
|
|
5566
|
+
fill: chunkSBRSPTSA_js.seriesColor(s, i, style?.styleId, colorPalette)
|
|
5563
5567
|
}
|
|
5564
5568
|
),
|
|
5565
5569
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: cy + 8, fontSize: 9, fill: "#475569", children: s.name || `Series ${i + 1}` })
|
|
@@ -5572,9 +5576,9 @@ function renderGridlines(id, style, range, layout) {
|
|
|
5572
5576
|
}
|
|
5573
5577
|
const lines = [];
|
|
5574
5578
|
if (range.logScale && range.logBase) {
|
|
5575
|
-
const ticks =
|
|
5579
|
+
const ticks = chunkSBRSPTSA_js.generateLogTicks(range);
|
|
5576
5580
|
ticks.forEach((tickVal, i) => {
|
|
5577
|
-
const y =
|
|
5581
|
+
const y = chunkSBRSPTSA_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
|
|
5578
5582
|
lines.push(
|
|
5579
5583
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5580
5584
|
"line",
|
|
@@ -5595,7 +5599,7 @@ function renderGridlines(id, style, range, layout) {
|
|
|
5595
5599
|
const steps = 4;
|
|
5596
5600
|
for (let i = 0; i <= steps; i++) {
|
|
5597
5601
|
const val = range.min + range.span * i / steps;
|
|
5598
|
-
const y =
|
|
5602
|
+
const y = chunkSBRSPTSA_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5599
5603
|
lines.push(
|
|
5600
5604
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5601
5605
|
"line",
|
|
@@ -5619,9 +5623,9 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5619
5623
|
const labels = [];
|
|
5620
5624
|
const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
|
|
5621
5625
|
if (range.logScale && range.logBase) {
|
|
5622
|
-
const ticks =
|
|
5626
|
+
const ticks = chunkSBRSPTSA_js.generateLogTicks(range);
|
|
5623
5627
|
ticks.forEach((tickVal, i) => {
|
|
5624
|
-
const y =
|
|
5628
|
+
const y = chunkSBRSPTSA_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
|
|
5625
5629
|
labels.push(
|
|
5626
5630
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5627
5631
|
"text",
|
|
@@ -5631,7 +5635,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5631
5635
|
textAnchor: "end",
|
|
5632
5636
|
fontSize: 8,
|
|
5633
5637
|
fill: "#64748b",
|
|
5634
|
-
children: hasDisplayUnits ?
|
|
5638
|
+
children: hasDisplayUnits ? chunkSBRSPTSA_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkSBRSPTSA_js.formatAxisValue(tickVal)
|
|
5635
5639
|
},
|
|
5636
5640
|
`${id}-vaxis-log-${i}`
|
|
5637
5641
|
)
|
|
@@ -5641,7 +5645,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5641
5645
|
const steps = 4;
|
|
5642
5646
|
for (let i = 0; i <= steps; i++) {
|
|
5643
5647
|
const val = range.min + range.span * i / steps;
|
|
5644
|
-
const y =
|
|
5648
|
+
const y = chunkSBRSPTSA_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5645
5649
|
labels.push(
|
|
5646
5650
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5647
5651
|
"text",
|
|
@@ -5651,7 +5655,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5651
5655
|
textAnchor: "end",
|
|
5652
5656
|
fontSize: 8,
|
|
5653
5657
|
fill: "#64748b",
|
|
5654
|
-
children: hasDisplayUnits ?
|
|
5658
|
+
children: hasDisplayUnits ? chunkSBRSPTSA_js.formatAxisValueWithUnits(val, axisFormatting) : chunkSBRSPTSA_js.formatAxisValue(val)
|
|
5655
5659
|
},
|
|
5656
5660
|
`${id}-vaxis-${i}`
|
|
5657
5661
|
)
|
|
@@ -5659,7 +5663,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5659
5663
|
}
|
|
5660
5664
|
}
|
|
5661
5665
|
if (hasDisplayUnits) {
|
|
5662
|
-
const unitLabel =
|
|
5666
|
+
const unitLabel = chunkSBRSPTSA_js.getDisplayUnitLabel(
|
|
5663
5667
|
axisFormatting.displayUnits,
|
|
5664
5668
|
axisFormatting.displayUnitsLabel
|
|
5665
5669
|
);
|
|
@@ -5734,7 +5738,7 @@ function renderZeroLine(id, range, layout) {
|
|
|
5734
5738
|
if (range.min >= 0) {
|
|
5735
5739
|
return null;
|
|
5736
5740
|
}
|
|
5737
|
-
const y =
|
|
5741
|
+
const y = chunkSBRSPTSA_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
|
|
5738
5742
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5739
5743
|
"line",
|
|
5740
5744
|
{
|
|
@@ -5758,7 +5762,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5758
5762
|
const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
|
|
5759
5763
|
for (let i = 0; i <= steps; i++) {
|
|
5760
5764
|
const val = range.min + range.span * i / steps;
|
|
5761
|
-
const y =
|
|
5765
|
+
const y = chunkSBRSPTSA_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5762
5766
|
labels.push(
|
|
5763
5767
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5764
5768
|
"text",
|
|
@@ -5770,7 +5774,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5770
5774
|
fontFamily,
|
|
5771
5775
|
fontWeight,
|
|
5772
5776
|
fill: fontColor,
|
|
5773
|
-
children: hasDisplayUnits ?
|
|
5777
|
+
children: hasDisplayUnits ? chunkSBRSPTSA_js.formatAxisValueWithUnits(val, axisFormatting) : chunkSBRSPTSA_js.formatAxisValue(val)
|
|
5774
5778
|
},
|
|
5775
5779
|
`${id}-sec-vaxis-${i}`
|
|
5776
5780
|
)
|
|
@@ -5794,7 +5798,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5794
5798
|
);
|
|
5795
5799
|
}
|
|
5796
5800
|
if (hasDisplayUnits) {
|
|
5797
|
-
const unitLabel =
|
|
5801
|
+
const unitLabel = chunkSBRSPTSA_js.getDisplayUnitLabel(
|
|
5798
5802
|
axisFormatting.displayUnits,
|
|
5799
5803
|
axisFormatting.displayUnitsLabel
|
|
5800
5804
|
);
|
|
@@ -5825,7 +5829,7 @@ function renderSecondaryAxisTicks(id, range, layout) {
|
|
|
5825
5829
|
const ticks = [];
|
|
5826
5830
|
for (let i = 0; i <= steps; i++) {
|
|
5827
5831
|
const val = range.min + range.span * i / steps;
|
|
5828
|
-
const y =
|
|
5832
|
+
const y = chunkSBRSPTSA_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5829
5833
|
ticks.push(
|
|
5830
5834
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5831
5835
|
"line",
|
|
@@ -5852,7 +5856,7 @@ function renderSecondaryGridlines(id, range, layout, axisFormatting) {
|
|
|
5852
5856
|
const gridColor = axisFormatting.majorGridlinesSpPr?.strokeColor ?? "#e2e8f0";
|
|
5853
5857
|
for (let i = 0; i <= steps; i++) {
|
|
5854
5858
|
const val = range.min + range.span * i / steps;
|
|
5855
|
-
const y =
|
|
5859
|
+
const y = chunkSBRSPTSA_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5856
5860
|
lines.push(
|
|
5857
5861
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5858
5862
|
"line",
|
|
@@ -6014,7 +6018,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
|
|
|
6014
6018
|
width: 8,
|
|
6015
6019
|
height: 8,
|
|
6016
6020
|
borderRadius: 2,
|
|
6017
|
-
backgroundColor:
|
|
6021
|
+
backgroundColor: chunkSBRSPTSA_js.seriesColor(
|
|
6018
6022
|
s,
|
|
6019
6023
|
si,
|
|
6020
6024
|
chartData.style?.styleId,
|
|
@@ -6052,10 +6056,10 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
|
|
|
6052
6056
|
}
|
|
6053
6057
|
function renderStockChart(element, chartData, categoryLabels) {
|
|
6054
6058
|
const style = chartData.style;
|
|
6055
|
-
const areaFill =
|
|
6059
|
+
const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
|
|
6056
6060
|
const legendPos = style?.legendPosition || "b";
|
|
6057
|
-
const range =
|
|
6058
|
-
const layout =
|
|
6061
|
+
const range = chunkSBRSPTSA_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6062
|
+
const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6059
6063
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6060
6064
|
const barGroupWidth = layout.plotWidth / catCount;
|
|
6061
6065
|
const candleWidth = barGroupWidth * 0.5;
|
|
@@ -6076,10 +6080,10 @@ function renderStockChart(element, chartData, categoryLabels) {
|
|
|
6076
6080
|
const close = closeSeries.values[ci] ?? high;
|
|
6077
6081
|
const isUp = close >= open;
|
|
6078
6082
|
const cx = layout.plotLeft + barGroupWidth * ci + barGroupWidth / 2;
|
|
6079
|
-
const highY =
|
|
6080
|
-
const lowY =
|
|
6081
|
-
const openY =
|
|
6082
|
-
const closeY =
|
|
6083
|
+
const highY = chunkSBRSPTSA_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
|
|
6084
|
+
const lowY = chunkSBRSPTSA_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
|
|
6085
|
+
const openY = chunkSBRSPTSA_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
|
|
6086
|
+
const closeY = chunkSBRSPTSA_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
|
|
6083
6087
|
elements.push(
|
|
6084
6088
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6085
6089
|
"line",
|
|
@@ -6122,7 +6126,7 @@ function renderStockChart(element, chartData, categoryLabels) {
|
|
|
6122
6126
|
textAnchor: "middle",
|
|
6123
6127
|
fontSize: 7,
|
|
6124
6128
|
fill: "#334155",
|
|
6125
|
-
children:
|
|
6129
|
+
children: chunkSBRSPTSA_js.formatAxisValue(close)
|
|
6126
6130
|
},
|
|
6127
6131
|
`${element.id}-stock-dl-${ci}`
|
|
6128
6132
|
)
|
|
@@ -6164,7 +6168,7 @@ function FailedToLoad() {
|
|
|
6164
6168
|
var LazySurfaceChart3DScene = React6__default.default.lazy(
|
|
6165
6169
|
async () => {
|
|
6166
6170
|
try {
|
|
6167
|
-
return await import('./SurfaceChart3DScene-
|
|
6171
|
+
return await import('./SurfaceChart3DScene-7UB5JE2W.js');
|
|
6168
6172
|
} catch {
|
|
6169
6173
|
return { default: FailedToLoad };
|
|
6170
6174
|
}
|
|
@@ -6188,7 +6192,7 @@ var SurfaceChart3DErrorBoundary = class extends React6__default.default.Componen
|
|
|
6188
6192
|
function buildSurfaceData(chartData, categoryLabels) {
|
|
6189
6193
|
const rows = chartData.series.length;
|
|
6190
6194
|
const cols = Math.max(categoryLabels.length, 1);
|
|
6191
|
-
const range =
|
|
6195
|
+
const range = chunkSBRSPTSA_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6192
6196
|
const heightMap = new Float32Array(rows * cols);
|
|
6193
6197
|
const colorMap = new Float32Array(rows * cols * 3);
|
|
6194
6198
|
for (let r = 0; r < rows; r++) {
|
|
@@ -6307,10 +6311,10 @@ function darkenRgb(r, g, b, factor) {
|
|
|
6307
6311
|
}
|
|
6308
6312
|
function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
|
|
6309
6313
|
const style = chartData.style;
|
|
6310
|
-
const areaFill =
|
|
6314
|
+
const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
|
|
6311
6315
|
const legendPos = style?.legendPosition || "b";
|
|
6312
|
-
const layout =
|
|
6313
|
-
const range =
|
|
6316
|
+
const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, false, legendPos);
|
|
6317
|
+
const range = chunkSBRSPTSA_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6314
6318
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6315
6319
|
const seriesCount = chartData.series.length;
|
|
6316
6320
|
const cols = catCount - 1;
|
|
@@ -6399,10 +6403,10 @@ function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
|
|
|
6399
6403
|
}
|
|
6400
6404
|
function renderFlatSurfaceChart(element, chartData, categoryLabels) {
|
|
6401
6405
|
const style = chartData.style;
|
|
6402
|
-
const areaFill =
|
|
6406
|
+
const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
|
|
6403
6407
|
const legendPos = style?.legendPosition || "b";
|
|
6404
|
-
const layout =
|
|
6405
|
-
const range =
|
|
6408
|
+
const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6409
|
+
const range = chunkSBRSPTSA_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6406
6410
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6407
6411
|
const seriesCount = chartData.series.length;
|
|
6408
6412
|
const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
|
|
@@ -6464,9 +6468,9 @@ function renderSurfaceChart(element, chartData, categoryLabels) {
|
|
|
6464
6468
|
}
|
|
6465
6469
|
function renderTreemapChart(element, chartData, categoryLabels) {
|
|
6466
6470
|
const style = chartData.style;
|
|
6467
|
-
const areaFill =
|
|
6471
|
+
const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
|
|
6468
6472
|
const legendPos = style?.legendPosition || "b";
|
|
6469
|
-
const layout =
|
|
6473
|
+
const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, false, legendPos);
|
|
6470
6474
|
const allValues = chartData.series.flatMap((s) => s.values);
|
|
6471
6475
|
const totalAbs = allValues.reduce((sum, v) => sum + Math.abs(v), 0) || 1;
|
|
6472
6476
|
const rects = [];
|
|
@@ -6489,7 +6493,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
|
|
|
6489
6493
|
y: curY,
|
|
6490
6494
|
width: Math.max(w - 1, 1),
|
|
6491
6495
|
height: Math.max(h - 1, 1),
|
|
6492
|
-
fill:
|
|
6496
|
+
fill: chunkSBRSPTSA_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
|
|
6493
6497
|
rx: 2,
|
|
6494
6498
|
opacity: 0.85
|
|
6495
6499
|
},
|
|
@@ -6540,11 +6544,11 @@ function renderTreemapChart(element, chartData, categoryLabels) {
|
|
|
6540
6544
|
}
|
|
6541
6545
|
function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
6542
6546
|
const style = chartData.style;
|
|
6543
|
-
const areaFill =
|
|
6547
|
+
const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
|
|
6544
6548
|
const legendPos = style?.legendPosition || "b";
|
|
6545
6549
|
const values = chartData.series[0]?.values ?? [];
|
|
6546
|
-
const range =
|
|
6547
|
-
const layout =
|
|
6550
|
+
const range = chunkSBRSPTSA_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6551
|
+
const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6548
6552
|
const catCount = Math.max(categoryLabels.length, values.length, 1);
|
|
6549
6553
|
const barWidth = layout.plotWidth / catCount * 0.6;
|
|
6550
6554
|
const gap = layout.plotWidth / catCount * 0.2;
|
|
@@ -6555,8 +6559,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6555
6559
|
const isLast = i === values.length - 1;
|
|
6556
6560
|
const startVal = isLast ? 0 : runningTotal;
|
|
6557
6561
|
const endVal = isLast ? runningTotal + val : runningTotal + val;
|
|
6558
|
-
const barStartY =
|
|
6559
|
-
const barEndY =
|
|
6562
|
+
const barStartY = chunkSBRSPTSA_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
|
|
6563
|
+
const barEndY = chunkSBRSPTSA_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
|
|
6560
6564
|
const x = layout.plotLeft + layout.plotWidth / catCount * i + gap;
|
|
6561
6565
|
const y = Math.min(barStartY, barEndY);
|
|
6562
6566
|
const h = Math.max(Math.abs(barEndY - barStartY), 1);
|
|
@@ -6585,7 +6589,7 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6585
6589
|
textAnchor: "middle",
|
|
6586
6590
|
fontSize: 7,
|
|
6587
6591
|
fill: "#334155",
|
|
6588
|
-
children:
|
|
6592
|
+
children: chunkSBRSPTSA_js.formatAxisValue(isLast ? endVal : val)
|
|
6589
6593
|
},
|
|
6590
6594
|
`${element.id}-wf-dl-${i}`
|
|
6591
6595
|
)
|
|
@@ -6632,20 +6636,20 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6632
6636
|
}
|
|
6633
6637
|
function renderComboChart(element, chartData, categoryLabels) {
|
|
6634
6638
|
const style = chartData.style;
|
|
6635
|
-
const areaFill =
|
|
6639
|
+
const areaFill = chunkSBRSPTSA_js.chartAreaFill(chartData);
|
|
6636
6640
|
const legendPos = style?.legendPosition || "b";
|
|
6637
|
-
const layoutOpts =
|
|
6641
|
+
const layoutOpts = chunkSBRSPTSA_js.computeLayoutOptions(
|
|
6638
6642
|
chartData.axes,
|
|
6639
6643
|
chartData.dataTable,
|
|
6640
6644
|
chartData.series.length
|
|
6641
6645
|
);
|
|
6642
|
-
const layout =
|
|
6643
|
-
const { primary, secondary } =
|
|
6646
|
+
const layout = chunkSBRSPTSA_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
|
|
6647
|
+
const { primary, secondary } = chunkSBRSPTSA_js.splitSeriesByAxis(chartData.series, chartData.axes);
|
|
6644
6648
|
const primarySeries = primary.length > 0 ? primary.map((e) => e.series) : chartData.series;
|
|
6645
6649
|
const secondarySeries = secondary.map((e) => e.series);
|
|
6646
|
-
const range =
|
|
6647
|
-
const secondaryRange = secondarySeries.length > 0 ?
|
|
6648
|
-
const secondaryAxisFmt =
|
|
6650
|
+
const range = chunkSBRSPTSA_js.computeValueRangeForChart(primarySeries, chartData.axes);
|
|
6651
|
+
const secondaryRange = secondarySeries.length > 0 ? chunkSBRSPTSA_js.computeValueRange(secondarySeries) : void 0;
|
|
6652
|
+
const secondaryAxisFmt = chunkSBRSPTSA_js.getSecondaryValueAxis(chartData.axes);
|
|
6649
6653
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6650
6654
|
const barSeriesCount = 1;
|
|
6651
6655
|
const barGroupWidth = layout.plotWidth / catCount;
|
|
@@ -6661,8 +6665,8 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6661
6665
|
const barRange = isBarSecondary && secondaryRange ? secondaryRange : range;
|
|
6662
6666
|
barSeries.values.forEach((val, vi) => {
|
|
6663
6667
|
const x = layout.plotLeft + barGroupWidth * vi + barOffset;
|
|
6664
|
-
const zeroY =
|
|
6665
|
-
const valY =
|
|
6668
|
+
const zeroY = chunkSBRSPTSA_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
|
|
6669
|
+
const valY = chunkSBRSPTSA_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
|
|
6666
6670
|
const y = Math.min(zeroY, valY);
|
|
6667
6671
|
const h = Math.max(Math.abs(zeroY - valY), 1);
|
|
6668
6672
|
barElements.push(
|
|
@@ -6673,7 +6677,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6673
6677
|
y,
|
|
6674
6678
|
width: barWidth,
|
|
6675
6679
|
height: h,
|
|
6676
|
-
fill:
|
|
6680
|
+
fill: chunkSBRSPTSA_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
|
|
6677
6681
|
rx: 1
|
|
6678
6682
|
},
|
|
6679
6683
|
`${element.id}-combo-bar-${vi}`
|
|
@@ -6689,7 +6693,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6689
6693
|
textAnchor: "middle",
|
|
6690
6694
|
fontSize: 7,
|
|
6691
6695
|
fill: "#334155",
|
|
6692
|
-
children:
|
|
6696
|
+
children: chunkSBRSPTSA_js.formatAxisValue(val)
|
|
6693
6697
|
},
|
|
6694
6698
|
`${element.id}-combo-bar-dl-${vi}`
|
|
6695
6699
|
)
|
|
@@ -6706,10 +6710,10 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6706
6710
|
const activeRange = isSecondary && secondaryRange ? secondaryRange : range;
|
|
6707
6711
|
const points = series.values.map((val, vi) => {
|
|
6708
6712
|
const x = layout.plotLeft + barGroupWidth * vi + barGroupWidth / 2;
|
|
6709
|
-
const y =
|
|
6713
|
+
const y = chunkSBRSPTSA_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
|
|
6710
6714
|
return { x, y, val };
|
|
6711
6715
|
});
|
|
6712
|
-
const c =
|
|
6716
|
+
const c = chunkSBRSPTSA_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
|
|
6713
6717
|
lineElements.push(
|
|
6714
6718
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6715
6719
|
"polyline",
|
|
@@ -6736,7 +6740,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6736
6740
|
textAnchor: "middle",
|
|
6737
6741
|
fontSize: 7,
|
|
6738
6742
|
fill: "#334155",
|
|
6739
|
-
children:
|
|
6743
|
+
children: chunkSBRSPTSA_js.formatAxisValue(p.val)
|
|
6740
6744
|
},
|
|
6741
6745
|
`${element.id}-combo-line-dl-${si}-${vi}`
|
|
6742
6746
|
)
|
|
@@ -7882,14 +7886,14 @@ function buildNotesPdf(pages) {
|
|
|
7882
7886
|
notes: page.notes,
|
|
7883
7887
|
slideNumber: page.slideNumber
|
|
7884
7888
|
}));
|
|
7885
|
-
const bytes =
|
|
7889
|
+
const bytes = chunkSBRSPTSA_js.buildNotesPdfBytes(images, meta);
|
|
7886
7890
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
7887
7891
|
return URL.createObjectURL(blob);
|
|
7888
7892
|
}
|
|
7889
7893
|
|
|
7890
7894
|
// src/viewer/utils/pdf-builder-slides.ts
|
|
7891
7895
|
function buildPdfFromImageData(images) {
|
|
7892
|
-
const bytes =
|
|
7896
|
+
const bytes = chunkSBRSPTSA_js.buildSlidesPdfBytes(images);
|
|
7893
7897
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
7894
7898
|
return URL.createObjectURL(blob);
|
|
7895
7899
|
}
|
|
@@ -7898,7 +7902,7 @@ function buildPdfFromImageData(images) {
|
|
|
7898
7902
|
var activePreview = null;
|
|
7899
7903
|
function startPreviewAnimation(elementId, preset, options) {
|
|
7900
7904
|
stopPreviewAnimation();
|
|
7901
|
-
const descriptor =
|
|
7905
|
+
const descriptor = chunkSBRSPTSA_js.buildPreviewAnimation(preset, options);
|
|
7902
7906
|
if (!descriptor) {
|
|
7903
7907
|
return;
|
|
7904
7908
|
}
|
|
@@ -7911,7 +7915,7 @@ function startMotionPathPreview(elementId, path, options) {
|
|
|
7911
7915
|
return;
|
|
7912
7916
|
}
|
|
7913
7917
|
const stage = domEl.offsetParent;
|
|
7914
|
-
const descriptor =
|
|
7918
|
+
const descriptor = chunkSBRSPTSA_js.buildMotionPathPreview({
|
|
7915
7919
|
path,
|
|
7916
7920
|
slideWidth: stage?.offsetWidth || DEFAULT_PREVIEW_SLIDE_WIDTH,
|
|
7917
7921
|
slideHeight: stage?.offsetHeight || DEFAULT_PREVIEW_SLIDE_HEIGHT,
|