pptx-react-viewer 2.6.0 → 2.6.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-L5IOO72H.mjs → AiChatPanel-5IAXQYGH.mjs} +3 -3
- package/dist/AiChatPanel-5IAXQYGH.mjs.br +0 -0
- package/dist/AiChatPanel-5IAXQYGH.mjs.gz +0 -0
- package/dist/{AiChatPanel-53W2JG6G.js → AiChatPanel-IC2Q3H3N.js} +22 -22
- package/dist/AiChatPanel-IC2Q3H3N.js.br +0 -0
- package/dist/AiChatPanel-IC2Q3H3N.js.gz +0 -0
- package/dist/{Model3DScene-E7JGXNJN.js → Model3DScene-GOFY2PQS.js} +2 -2
- package/dist/Model3DScene-GOFY2PQS.js.br +0 -0
- package/dist/Model3DScene-GOFY2PQS.js.gz +0 -0
- package/dist/{Model3DScene-EW7OWRJK.mjs → Model3DScene-UEU7L4QY.mjs} +1 -1
- package/dist/Model3DScene-UEU7L4QY.mjs.br +0 -0
- package/dist/Model3DScene-UEU7L4QY.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-3QB6NVKD.js → SurfaceChart3DScene-5TILKZMY.js} +2 -2
- package/dist/SurfaceChart3DScene-5TILKZMY.js.br +0 -0
- package/dist/SurfaceChart3DScene-5TILKZMY.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-64HI3U7Y.mjs → SurfaceChart3DScene-KCJUDJUK.mjs} +1 -1
- package/dist/{SurfaceChart3DScene-64HI3U7Y.mjs.br → SurfaceChart3DScene-KCJUDJUK.mjs.br} +0 -0
- package/dist/SurfaceChart3DScene-KCJUDJUK.mjs.gz +0 -0
- package/dist/{chunk-UVA55CRK.js → chunk-G7PJSVUS.js} +76 -19
- package/dist/chunk-G7PJSVUS.js.br +0 -0
- package/dist/{chunk-UVA55CRK.js.gz → chunk-G7PJSVUS.js.gz} +0 -0
- package/dist/{chunk-VBWWICDF.js → chunk-IGYK3NK5.js} +3 -3
- package/dist/chunk-IGYK3NK5.js.br +0 -0
- package/dist/chunk-IGYK3NK5.js.gz +0 -0
- package/dist/{chunk-UO55N46T.mjs → chunk-LJPRMPNA.mjs} +11 -9
- package/dist/chunk-LJPRMPNA.mjs.br +0 -0
- package/dist/chunk-LJPRMPNA.mjs.gz +0 -0
- package/dist/{chunk-WCO3NEH5.mjs → chunk-MQYNBEOY.mjs} +2 -2
- package/dist/chunk-MQYNBEOY.mjs.br +0 -0
- package/dist/{chunk-WCO3NEH5.mjs.gz → chunk-MQYNBEOY.mjs.gz} +0 -0
- package/dist/{chunk-V5XVTKFS.js → chunk-TMU7Z3CU.js} +847 -845
- package/dist/chunk-TMU7Z3CU.js.br +0 -0
- package/dist/chunk-TMU7Z3CU.js.gz +0 -0
- package/dist/{chunk-DWQJW3UM.mjs → chunk-UV5R7IQY.mjs} +11 -6
- package/dist/chunk-UV5R7IQY.mjs.br +0 -0
- package/dist/chunk-UV5R7IQY.mjs.gz +0 -0
- package/dist/{chunk-EJ24IFPL.js → chunk-W27U3GQS.js} +315 -315
- package/dist/chunk-W27U3GQS.js.br +0 -0
- package/dist/chunk-W27U3GQS.js.gz +0 -0
- package/dist/{chunk-NXSAYLYI.js → chunk-XROVGBFQ.js} +245 -240
- package/dist/chunk-XROVGBFQ.js.br +0 -0
- package/dist/chunk-XROVGBFQ.js.gz +0 -0
- package/dist/{chunk-PENV7S7Z.mjs → chunk-Y4TIW2MM.mjs} +1 -1
- package/dist/chunk-Y4TIW2MM.mjs.br +0 -0
- package/dist/chunk-Y4TIW2MM.mjs.gz +0 -0
- package/dist/{chunk-34ZW32XK.mjs → chunk-Y6H2RSLB.mjs} +76 -19
- package/dist/chunk-Y6H2RSLB.mjs.br +0 -0
- package/dist/{chunk-34ZW32XK.mjs.gz → chunk-Y6H2RSLB.mjs.gz} +0 -0
- package/dist/index.js +34 -34
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +5 -3
- 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 +21 -21
- 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-53W2JG6G.js.br +0 -0
- package/dist/AiChatPanel-53W2JG6G.js.gz +0 -0
- package/dist/AiChatPanel-L5IOO72H.mjs.br +0 -0
- package/dist/AiChatPanel-L5IOO72H.mjs.gz +0 -0
- package/dist/Model3DScene-E7JGXNJN.js.br +0 -0
- package/dist/Model3DScene-E7JGXNJN.js.gz +0 -0
- package/dist/Model3DScene-EW7OWRJK.mjs.br +0 -0
- package/dist/Model3DScene-EW7OWRJK.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-3QB6NVKD.js.br +0 -0
- package/dist/SurfaceChart3DScene-3QB6NVKD.js.gz +0 -0
- package/dist/SurfaceChart3DScene-64HI3U7Y.mjs.gz +0 -0
- package/dist/chunk-34ZW32XK.mjs.br +0 -0
- package/dist/chunk-DWQJW3UM.mjs.br +0 -0
- package/dist/chunk-DWQJW3UM.mjs.gz +0 -0
- package/dist/chunk-EJ24IFPL.js.br +0 -0
- package/dist/chunk-EJ24IFPL.js.gz +0 -0
- package/dist/chunk-NXSAYLYI.js.br +0 -0
- package/dist/chunk-NXSAYLYI.js.gz +0 -0
- package/dist/chunk-PENV7S7Z.mjs.br +0 -0
- package/dist/chunk-PENV7S7Z.mjs.gz +0 -0
- package/dist/chunk-UO55N46T.mjs.br +0 -0
- package/dist/chunk-UO55N46T.mjs.gz +0 -0
- package/dist/chunk-UVA55CRK.js.br +0 -0
- package/dist/chunk-V5XVTKFS.js.br +0 -0
- package/dist/chunk-V5XVTKFS.js.gz +0 -0
- package/dist/chunk-VBWWICDF.js.br +0 -0
- package/dist/chunk-VBWWICDF.js.gz +0 -0
- package/dist/chunk-WCO3NEH5.mjs.br +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunk25VSL2BB_js = require('./chunk-25VSL2BB.js');
|
|
4
|
-
var
|
|
4
|
+
var chunkG7PJSVUS_js = require('./chunk-G7PJSVUS.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 chunkG7PJSVUS_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 chunkG7PJSVUS_js.cloneHistorySnapshot(snapshot);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
// src/viewer/constants/scalar.ts
|
|
@@ -133,7 +133,7 @@ var GLYPH_COMPONENTS = {
|
|
|
133
133
|
plus: lu.LuPlus,
|
|
134
134
|
triangle: lu.LuTriangle
|
|
135
135
|
};
|
|
136
|
-
var SHAPE_PRESETS =
|
|
136
|
+
var SHAPE_PRESETS = chunkG7PJSVUS_js.SHAPE_PRESET_DEFS.map(
|
|
137
137
|
(def) => ({
|
|
138
138
|
type: def.type,
|
|
139
139
|
label: def.label,
|
|
@@ -251,7 +251,7 @@ function isConnectorOrLineElement(element) {
|
|
|
251
251
|
if (element.type === "connector") {
|
|
252
252
|
return true;
|
|
253
253
|
}
|
|
254
|
-
if (!
|
|
254
|
+
if (!chunkG7PJSVUS_js.hasShapeProperties(element)) {
|
|
255
255
|
return false;
|
|
256
256
|
}
|
|
257
257
|
const st = getShapeType(element.shapeType);
|
|
@@ -262,12 +262,12 @@ function isConnectorOrLineElement(element) {
|
|
|
262
262
|
function partitionTemplateElements(slides) {
|
|
263
263
|
const templateElementsBySlideId = {};
|
|
264
264
|
const nextSlides = slides.map((slide) => {
|
|
265
|
-
const template = slide.elements.filter((el) =>
|
|
265
|
+
const template = slide.elements.filter((el) => chunkG7PJSVUS_js.isTemplateElement(el));
|
|
266
266
|
if (template.length === 0) {
|
|
267
267
|
return slide;
|
|
268
268
|
}
|
|
269
269
|
templateElementsBySlideId[slide.id] = template;
|
|
270
|
-
return { ...slide, elements: slide.elements.filter((el) => !
|
|
270
|
+
return { ...slide, elements: slide.elements.filter((el) => !chunkG7PJSVUS_js.isTemplateElement(el)) };
|
|
271
271
|
});
|
|
272
272
|
return { slides: nextSlides, templateElementsBySlideId };
|
|
273
273
|
}
|
|
@@ -283,7 +283,7 @@ function buildSaveSlides(slides, templateElementsBySlideId) {
|
|
|
283
283
|
|
|
284
284
|
// src/viewer/utils/image-style.ts
|
|
285
285
|
function getImageMaskStyle(element) {
|
|
286
|
-
if (!
|
|
286
|
+
if (!chunkG7PJSVUS_js.hasShapeProperties(element)) {
|
|
287
287
|
return void 0;
|
|
288
288
|
}
|
|
289
289
|
const shapeType = element.shapeType;
|
|
@@ -292,7 +292,7 @@ function getImageMaskStyle(element) {
|
|
|
292
292
|
}
|
|
293
293
|
const normalized = shapeType.toLowerCase();
|
|
294
294
|
if (normalized === "roundrect" || normalized === "round1rect" || normalized === "round2samerect" || normalized === "round2diagrect" || normalized === "sniproundrect" || normalized === "snip1rect" || normalized === "snip2diagrect") {
|
|
295
|
-
const radiusPx =
|
|
295
|
+
const radiusPx = chunkG7PJSVUS_js.getRoundRectRadiusPx(element);
|
|
296
296
|
if (radiusPx <= 0.01) {
|
|
297
297
|
return void 0;
|
|
298
298
|
}
|
|
@@ -304,7 +304,7 @@ function getImageMaskStyle(element) {
|
|
|
304
304
|
if (normalized === "can" || normalized === "cylinder") {
|
|
305
305
|
return { borderRadius: "48% / 12%" };
|
|
306
306
|
}
|
|
307
|
-
const clipPath =
|
|
307
|
+
const clipPath = chunkG7PJSVUS_js.getResolvedShapeClipPath(element);
|
|
308
308
|
if (!clipPath) {
|
|
309
309
|
return void 0;
|
|
310
310
|
}
|
|
@@ -312,7 +312,7 @@ function getImageMaskStyle(element) {
|
|
|
312
312
|
}
|
|
313
313
|
function getImageRenderStyle(element) {
|
|
314
314
|
const maskStyle = getImageMaskStyle(element) || {};
|
|
315
|
-
if (!
|
|
315
|
+
if (!chunkG7PJSVUS_js.isImageLikeElement(element)) {
|
|
316
316
|
return {
|
|
317
317
|
...maskStyle,
|
|
318
318
|
width: "100%",
|
|
@@ -320,10 +320,10 @@ function getImageRenderStyle(element) {
|
|
|
320
320
|
objectFit: "cover"
|
|
321
321
|
};
|
|
322
322
|
}
|
|
323
|
-
const cropLeft =
|
|
324
|
-
const cropTop =
|
|
325
|
-
const cropRight =
|
|
326
|
-
const cropBottom =
|
|
323
|
+
const cropLeft = chunkG7PJSVUS_js.clampCropValue(element.cropLeft);
|
|
324
|
+
const cropTop = chunkG7PJSVUS_js.clampCropValue(element.cropTop);
|
|
325
|
+
const cropRight = chunkG7PJSVUS_js.clampCropValue(element.cropRight);
|
|
326
|
+
const cropBottom = chunkG7PJSVUS_js.clampCropValue(element.cropBottom);
|
|
327
327
|
const hasCrop = cropLeft + cropRight > 1e-4 || cropTop + cropBottom > 1e-4;
|
|
328
328
|
if (!hasCrop) {
|
|
329
329
|
return {
|
|
@@ -335,10 +335,10 @@ function getImageRenderStyle(element) {
|
|
|
335
335
|
}
|
|
336
336
|
const safeHorizontalScale = cropLeft + cropRight >= 0.99 ? 0.99 / (cropLeft + cropRight) : 1;
|
|
337
337
|
const safeVerticalScale = cropTop + cropBottom >= 0.99 ? 0.99 / (cropTop + cropBottom) : 1;
|
|
338
|
-
const normalizedLeft =
|
|
339
|
-
const normalizedRight =
|
|
340
|
-
const normalizedTop =
|
|
341
|
-
const normalizedBottom =
|
|
338
|
+
const normalizedLeft = chunkG7PJSVUS_js.clampCropValue(cropLeft * safeHorizontalScale);
|
|
339
|
+
const normalizedRight = chunkG7PJSVUS_js.clampCropValue(cropRight * safeHorizontalScale);
|
|
340
|
+
const normalizedTop = chunkG7PJSVUS_js.clampCropValue(cropTop * safeVerticalScale);
|
|
341
|
+
const normalizedBottom = chunkG7PJSVUS_js.clampCropValue(cropBottom * safeVerticalScale);
|
|
342
342
|
const remainingWidth = Math.max(0.01, 1 - normalizedLeft - normalizedRight);
|
|
343
343
|
const remainingHeight = Math.max(0.01, 1 - normalizedTop - normalizedBottom);
|
|
344
344
|
const tx = Math.round(-normalizedLeft / remainingWidth * 1e4) / 100;
|
|
@@ -367,7 +367,7 @@ var CROP_SHAPE_CLIP_PATHS = {
|
|
|
367
367
|
star: "polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)"
|
|
368
368
|
};
|
|
369
369
|
function getCropShapeClipPath(element) {
|
|
370
|
-
if (!
|
|
370
|
+
if (!chunkG7PJSVUS_js.isImageLikeElement(element)) {
|
|
371
371
|
return void 0;
|
|
372
372
|
}
|
|
373
373
|
const shape = element.cropShape;
|
|
@@ -377,7 +377,7 @@ function getCropShapeClipPath(element) {
|
|
|
377
377
|
return CROP_SHAPE_CLIP_PATHS[shape];
|
|
378
378
|
}
|
|
379
379
|
function isImageTiled(element) {
|
|
380
|
-
if (!
|
|
380
|
+
if (!chunkG7PJSVUS_js.isImageLikeElement(element)) {
|
|
381
381
|
return false;
|
|
382
382
|
}
|
|
383
383
|
return typeof element.tileScaleX === "number" || typeof element.tileScaleY === "number";
|
|
@@ -435,7 +435,7 @@ function buildMirrorTiledBackground(src, flip, scaleX, scaleY) {
|
|
|
435
435
|
};
|
|
436
436
|
}
|
|
437
437
|
function getImageTilingStyle(element) {
|
|
438
|
-
if (!
|
|
438
|
+
if (!chunkG7PJSVUS_js.isImageLikeElement(element) || !isImageTiled(element)) {
|
|
439
439
|
return void 0;
|
|
440
440
|
}
|
|
441
441
|
const scaleX = typeof element.tileScaleX === "number" ? element.tileScaleX * 100 : 100;
|
|
@@ -719,7 +719,7 @@ function executeMediaCommand(command) {
|
|
|
719
719
|
if (!el) {
|
|
720
720
|
return false;
|
|
721
721
|
}
|
|
722
|
-
const parsed =
|
|
722
|
+
const parsed = chunkG7PJSVUS_js.parseMediaCommand(command.command);
|
|
723
723
|
if (!parsed) {
|
|
724
724
|
return false;
|
|
725
725
|
}
|
|
@@ -1171,7 +1171,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
1171
1171
|
|
|
1172
1172
|
// src/viewer/utils/text-utils.tsx
|
|
1173
1173
|
function getTextStyleForElement(element, fallbackColor) {
|
|
1174
|
-
if (!
|
|
1174
|
+
if (!chunkG7PJSVUS_js.hasTextProperties(element)) {
|
|
1175
1175
|
return { color: fallbackColor };
|
|
1176
1176
|
}
|
|
1177
1177
|
const textDecorationTokens = [];
|
|
@@ -1185,20 +1185,24 @@ function getTextStyleForElement(element, fallbackColor) {
|
|
|
1185
1185
|
const textDecorationStyle = isDoubleStrike ? "double" : void 0;
|
|
1186
1186
|
const hasItalicRuns = element.textStyle?.italic || Boolean(element.textSegments?.some((segment) => segment.style?.italic));
|
|
1187
1187
|
const isRtl = element.textStyle?.rtl === true;
|
|
1188
|
-
const resolvedTextColor = element.textStyle?.hyperlink ?
|
|
1188
|
+
const resolvedTextColor = element.textStyle?.hyperlink ? chunkG7PJSVUS_js.normalizeHexColor(element.textStyle?.color, HYPERLINK_COLOR) : chunkG7PJSVUS_js.normalizeHexColor(element.textStyle?.color, fallbackColor);
|
|
1189
1189
|
const bodyTop = element.textStyle?.bodyInsetTop ?? DEFAULT_BODY_INSET_TB_PX;
|
|
1190
1190
|
const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
|
|
1191
1191
|
const bodyLeft = element.textStyle?.bodyInsetLeft ?? DEFAULT_BODY_INSET_LR_PX;
|
|
1192
1192
|
const bodyRight = element.textStyle?.bodyInsetRight ?? DEFAULT_BODY_INSET_LR_PX;
|
|
1193
|
-
const
|
|
1194
|
-
const
|
|
1195
|
-
const
|
|
1193
|
+
const hasParagraphIndents = (element.paragraphIndents?.length ?? 0) > 0;
|
|
1194
|
+
const bodyIndent = hasParagraphIndents ? 0 : element.textStyle?.paragraphIndent || 0;
|
|
1195
|
+
const bodyMarginLeft = hasParagraphIndents ? 0 : element.textStyle?.paragraphMarginLeft || 0;
|
|
1196
|
+
const bodyMarginRight = hasParagraphIndents ? 0 : element.textStyle?.paragraphMarginRight || 0;
|
|
1197
|
+
const writingMode = chunkG7PJSVUS_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
1198
|
+
const textOrientation = chunkG7PJSVUS_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
1199
|
+
const verticalDirection = chunkG7PJSVUS_js.toCssVerticalDirection(element.textStyle?.textDirection);
|
|
1196
1200
|
const resolvedDirection = verticalDirection || (isRtl ? "rtl" : "ltr");
|
|
1197
1201
|
const resolvedUnicodeBidi = isRtl ? "plaintext" : void 0;
|
|
1198
1202
|
const hasSegments = (element.textSegments?.length ?? 0) > 0;
|
|
1199
1203
|
return {
|
|
1200
1204
|
color: resolvedTextColor,
|
|
1201
|
-
backgroundColor: !hasSegments && element.textStyle?.highlightColor ?
|
|
1205
|
+
backgroundColor: !hasSegments && element.textStyle?.highlightColor ? chunkG7PJSVUS_js.normalizeHexColor(element.textStyle.highlightColor, void 0) : void 0,
|
|
1202
1206
|
textAlign: (() => {
|
|
1203
1207
|
const a = element.textStyle?.align;
|
|
1204
1208
|
if (a === "justLow" || a === "dist" || a === "thaiDist") {
|
|
@@ -1214,12 +1218,12 @@ function getTextStyleForElement(element, fallbackColor) {
|
|
|
1214
1218
|
textDecorationLine: textDecorationTokens.length > 0 ? textDecorationTokens.join(" ") : "none",
|
|
1215
1219
|
textDecorationStyle,
|
|
1216
1220
|
fontFamily: element.textStyle?.fontFamily || DEFAULT_FONT_FAMILY,
|
|
1217
|
-
lineHeight:
|
|
1221
|
+
lineHeight: chunkG7PJSVUS_js.resolveLineHeight(element.textStyle, hasItalicRuns),
|
|
1218
1222
|
paddingTop: bodyTop + (hasItalicRuns ? 1 : 0),
|
|
1219
1223
|
paddingBottom: bodyBottom + (hasItalicRuns ? 1 : 0),
|
|
1220
|
-
paddingLeft: bodyLeft +
|
|
1221
|
-
paddingRight: bodyRight +
|
|
1222
|
-
textIndent:
|
|
1224
|
+
paddingLeft: bodyLeft + bodyMarginLeft,
|
|
1225
|
+
paddingRight: bodyRight + bodyMarginRight,
|
|
1226
|
+
textIndent: bodyIndent,
|
|
1223
1227
|
overflow: "visible",
|
|
1224
1228
|
writingMode,
|
|
1225
1229
|
textOrientation,
|
|
@@ -1227,7 +1231,7 @@ function getTextStyleForElement(element, fallbackColor) {
|
|
|
1227
1231
|
// Auto-fit: use OOXML-provided fontScale/lnSpcReduction when available,
|
|
1228
1232
|
// otherwise fall back to heuristic estimation. The pure font-scale maths
|
|
1229
1233
|
// now lives in pptx-viewer-shared (computeAutoFitTextStyle).
|
|
1230
|
-
...
|
|
1234
|
+
...chunkG7PJSVUS_js.computeAutoFitTextStyle({
|
|
1231
1235
|
textStyle: element.textStyle,
|
|
1232
1236
|
text: element.text ?? "",
|
|
1233
1237
|
width: element.width,
|
|
@@ -1261,13 +1265,13 @@ function computeTabSize(tabStops, defaultTabSize) {
|
|
|
1261
1265
|
return avgGap > 0 ? `${Math.round(avgGap)}px` : fromDefault;
|
|
1262
1266
|
}
|
|
1263
1267
|
function getTextLayoutStyle(element) {
|
|
1264
|
-
if (!
|
|
1268
|
+
if (!chunkG7PJSVUS_js.hasTextProperties(element)) {
|
|
1265
1269
|
return {};
|
|
1266
1270
|
}
|
|
1267
1271
|
const verticalAlign = element.textStyle?.vAlign || "top";
|
|
1268
|
-
const writingMode =
|
|
1269
|
-
const textOrientation =
|
|
1270
|
-
const verticalDirection =
|
|
1272
|
+
const writingMode = chunkG7PJSVUS_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
1273
|
+
const textOrientation = chunkG7PJSVUS_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
1274
|
+
const verticalDirection = chunkG7PJSVUS_js.toCssVerticalDirection(element.textStyle?.textDirection);
|
|
1271
1275
|
const parsedColumnCount = Number(element.textStyle?.columnCount);
|
|
1272
1276
|
const columnCount = Number.isFinite(parsedColumnCount) ? Math.max(1, Math.min(16, Math.round(parsedColumnCount))) : 1;
|
|
1273
1277
|
const hasColumns = columnCount > 1;
|
|
@@ -1275,7 +1279,7 @@ function getTextLayoutStyle(element) {
|
|
|
1275
1279
|
const tabStops = element.textStyle?.tabStops;
|
|
1276
1280
|
const tabSize = computeTabSize(tabStops, element.textStyle?.defaultTabSize);
|
|
1277
1281
|
const textWrapNone = element.textStyle?.textWrap === "none";
|
|
1278
|
-
const hasParagraphIndents =
|
|
1282
|
+
const hasParagraphIndents = chunkG7PJSVUS_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
|
|
1279
1283
|
const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
|
|
1280
1284
|
const paragraphIndent = element.textStyle?.paragraphIndent;
|
|
1281
1285
|
const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
|
|
@@ -1284,7 +1288,7 @@ function getTextLayoutStyle(element) {
|
|
|
1284
1288
|
const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
|
|
1285
1289
|
const parsedColumnSpacing = Number(element.textStyle?.columnSpacing);
|
|
1286
1290
|
const columnGap = Number.isFinite(parsedColumnSpacing) && parsedColumnSpacing > 0 ? `${parsedColumnSpacing}px` : "0.75em";
|
|
1287
|
-
const kinsokuStyles =
|
|
1291
|
+
const kinsokuStyles = chunkG7PJSVUS_js.getKinsokuLineBreakStyles(element.textStyle);
|
|
1288
1292
|
if (hasColumns) {
|
|
1289
1293
|
return {
|
|
1290
1294
|
display: "block",
|
|
@@ -1331,10 +1335,10 @@ function getTextLayoutStyle(element) {
|
|
|
1331
1335
|
|
|
1332
1336
|
// src/viewer/utils/text-effects.tsx
|
|
1333
1337
|
function buildTextFillCss2(style) {
|
|
1334
|
-
return
|
|
1338
|
+
return chunkG7PJSVUS_js.buildTextFillCss(style);
|
|
1335
1339
|
}
|
|
1336
1340
|
function buildTextBody3DSceneStyle2(textStyle) {
|
|
1337
|
-
return
|
|
1341
|
+
return chunkG7PJSVUS_js.buildTextBody3DSceneStyle(textStyle);
|
|
1338
1342
|
}
|
|
1339
1343
|
|
|
1340
1344
|
// src/viewer/utils/text-warp-css.tsx
|
|
@@ -1519,13 +1523,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1519
1523
|
if (!subElementAnimStates || subElementAnimStates.size === 0) {
|
|
1520
1524
|
return renderedSegments;
|
|
1521
1525
|
}
|
|
1522
|
-
const paraKey = `${elementId}${
|
|
1526
|
+
const paraKey = `${elementId}${chunkG7PJSVUS_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
|
|
1523
1527
|
const paraState = subElementAnimStates.get(paraKey);
|
|
1524
1528
|
if (paraState) {
|
|
1525
1529
|
const style = buildAnimStyle(paraState);
|
|
1526
1530
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
|
|
1527
1531
|
}
|
|
1528
|
-
const spec =
|
|
1532
|
+
const spec = chunkG7PJSVUS_js.buildTextBuildSpec(
|
|
1529
1533
|
elementId,
|
|
1530
1534
|
paraIndex,
|
|
1531
1535
|
paraSegments.map((entry) => ({ text: entry.segment.text, style: entry })),
|
|
@@ -1543,7 +1547,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1543
1547
|
"span",
|
|
1544
1548
|
{
|
|
1545
1549
|
"data-anim-id": span.animId,
|
|
1546
|
-
style:
|
|
1550
|
+
style: chunkG7PJSVUS_js.textBuildSpanStyle(span),
|
|
1547
1551
|
children: content
|
|
1548
1552
|
},
|
|
1549
1553
|
span.animId
|
|
@@ -1687,10 +1691,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1687
1691
|
if (!needsScriptFonts || !text) {
|
|
1688
1692
|
return text;
|
|
1689
1693
|
}
|
|
1690
|
-
const runs =
|
|
1694
|
+
const runs = chunkG7PJSVUS_js.segmentByScript(text);
|
|
1691
1695
|
if (runs.length <= 1) {
|
|
1692
1696
|
if (runs.length === 1) {
|
|
1693
|
-
const font =
|
|
1697
|
+
const font = chunkG7PJSVUS_js.resolveFontForScript(runs[0].script, scriptFonts);
|
|
1694
1698
|
if (font && font !== baseFontFamily) {
|
|
1695
1699
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontFamily: font }, children: text });
|
|
1696
1700
|
}
|
|
@@ -1698,7 +1702,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1698
1702
|
return text;
|
|
1699
1703
|
}
|
|
1700
1704
|
return runs.map((run, i) => {
|
|
1701
|
-
const font =
|
|
1705
|
+
const font = chunkG7PJSVUS_js.resolveFontForScript(run.script, scriptFonts);
|
|
1702
1706
|
if (!font || font === baseFontFamily) {
|
|
1703
1707
|
return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
|
|
1704
1708
|
}
|
|
@@ -1770,8 +1774,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
|
|
|
1770
1774
|
);
|
|
1771
1775
|
}
|
|
1772
1776
|
function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
|
|
1773
|
-
const mathml =
|
|
1774
|
-
const safeMathml = mathml ?
|
|
1777
|
+
const mathml = chunkG7PJSVUS_js.convertOmmlToMathMl(equationXml);
|
|
1778
|
+
const safeMathml = mathml ? chunkG7PJSVUS_js.sanitizeMathMl(mathml) : "";
|
|
1775
1779
|
const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1776
1780
|
"span",
|
|
1777
1781
|
{
|
|
@@ -1821,7 +1825,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
|
|
|
1821
1825
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
|
|
1822
1826
|
}
|
|
1823
1827
|
function renderPictureBullet(elementId, segmentIndex, bulletInfo, baseFontSize) {
|
|
1824
|
-
const picture =
|
|
1828
|
+
const picture = chunkG7PJSVUS_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
|
|
1825
1829
|
sizePx: baseFontSize,
|
|
1826
1830
|
fallbackMarker: "\u2022",
|
|
1827
1831
|
accessibleLabel: "Bullet"
|
|
@@ -1871,7 +1875,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1871
1875
|
);
|
|
1872
1876
|
}
|
|
1873
1877
|
const segmentStyle = segment.style || {};
|
|
1874
|
-
const textValue =
|
|
1878
|
+
const textValue = chunkG7PJSVUS_js.substituteFieldText(segment.text || "", segment.fieldType, fieldContext);
|
|
1875
1879
|
const lines = textValue.split("\n");
|
|
1876
1880
|
const textDecorationTokens = [];
|
|
1877
1881
|
if (segmentStyle.underline || segmentStyle.hyperlink) {
|
|
@@ -1881,8 +1885,8 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1881
1885
|
textDecorationTokens.push("line-through");
|
|
1882
1886
|
}
|
|
1883
1887
|
const isDoubleStrike = segmentStyle.strikethrough && segmentStyle.strikeType === "dblStrike";
|
|
1884
|
-
const resolvedSegmentColor = segmentStyle.hyperlink ?
|
|
1885
|
-
const underlineDecoration =
|
|
1888
|
+
const resolvedSegmentColor = segmentStyle.hyperlink ? chunkG7PJSVUS_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkG7PJSVUS_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
|
|
1889
|
+
const underlineDecoration = chunkG7PJSVUS_js.resolveUnderlineDecorationStyle(
|
|
1886
1890
|
Boolean(isDoubleStrike),
|
|
1887
1891
|
segmentStyle.underlineStyle
|
|
1888
1892
|
);
|
|
@@ -1898,14 +1902,14 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1898
1902
|
const baseFontSizePt = baseFontSize * (72 / 96);
|
|
1899
1903
|
const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
|
|
1900
1904
|
const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
|
|
1901
|
-
const baseFontFamily = rawFontFamily ?
|
|
1905
|
+
const baseFontFamily = rawFontFamily ? chunkG7PJSVUS_js.getSubstituteFontFamily(rawFontFamily) : DEFAULT_FONT_FAMILY;
|
|
1902
1906
|
const scriptFonts = {
|
|
1903
1907
|
latin: baseFontFamily,
|
|
1904
1908
|
eastAsia: segmentStyle.eastAsiaFont || element.textStyle?.eastAsiaFont || baseFontFamily,
|
|
1905
1909
|
complexScript: segmentStyle.complexScriptFont || element.textStyle?.complexScriptFont || baseFontFamily,
|
|
1906
1910
|
symbol: segmentStyle.symbolFont || element.textStyle?.symbolFont || baseFontFamily
|
|
1907
1911
|
};
|
|
1908
|
-
const needsScriptFonts =
|
|
1912
|
+
const needsScriptFonts = chunkG7PJSVUS_js.hasDistinctScriptFonts(scriptFonts);
|
|
1909
1913
|
const spanStyle = {
|
|
1910
1914
|
color: resolvedSegmentColor,
|
|
1911
1915
|
fontSize: baseFontSize * baselineFontScale,
|
|
@@ -1923,15 +1927,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1923
1927
|
fontVariantCaps: segmentStyle.textCaps === "small" ? "small-caps" : void 0,
|
|
1924
1928
|
letterSpacing,
|
|
1925
1929
|
fontKerning,
|
|
1926
|
-
backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ?
|
|
1930
|
+
backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkG7PJSVUS_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
|
|
1927
1931
|
...textFillStyles,
|
|
1928
|
-
textDecorationColor: segmentStyle.underlineColor ?
|
|
1929
|
-
WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${
|
|
1932
|
+
textDecorationColor: segmentStyle.underlineColor ? chunkG7PJSVUS_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
|
|
1933
|
+
WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkG7PJSVUS_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
|
|
1930
1934
|
paintOrder: segmentStyle.textOutlineWidth ? "stroke fill" : void 0,
|
|
1931
|
-
textShadow:
|
|
1932
|
-
filter:
|
|
1933
|
-
opacity:
|
|
1934
|
-
WebkitBoxReflect:
|
|
1935
|
+
textShadow: chunkG7PJSVUS_js.buildTextShadowCss(segmentStyle),
|
|
1936
|
+
filter: chunkG7PJSVUS_js.buildTextRunFilterChain(segmentStyle),
|
|
1937
|
+
opacity: chunkG7PJSVUS_js.getTextAlphaOpacity(segmentStyle),
|
|
1938
|
+
WebkitBoxReflect: chunkG7PJSVUS_js.buildTextReflectionCss(segmentStyle)
|
|
1935
1939
|
};
|
|
1936
1940
|
const runRtl = segmentStyle.rtl;
|
|
1937
1941
|
if (runRtl !== void 0 && runRtl !== paragraphRtl) {
|
|
@@ -1951,7 +1955,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1951
1955
|
spanStyle.fontSize = baseFontSize * (bulletInfo.sizePercent / 100) * baselineFontScale;
|
|
1952
1956
|
}
|
|
1953
1957
|
if (bulletInfo.color) {
|
|
1954
|
-
spanStyle.color =
|
|
1958
|
+
spanStyle.color = chunkG7PJSVUS_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
|
|
1955
1959
|
}
|
|
1956
1960
|
}
|
|
1957
1961
|
if (bulletInfo?.imageDataUrl || bulletInfo?.imageRelId) {
|
|
@@ -1991,7 +1995,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1991
1995
|
textAlign: segment.rubyAlignment === "l" ? "left" : segment.rubyAlignment === "r" ? "right" : segment.rubyAlignment === "dist" || segment.rubyAlignment === "distCat" || segment.rubyAlignment === "distLetter" ? "justify" : "center"
|
|
1992
1996
|
};
|
|
1993
1997
|
if (segment.rubyStyle?.color) {
|
|
1994
|
-
rubyStyle.color =
|
|
1998
|
+
rubyStyle.color = chunkG7PJSVUS_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
|
|
1995
1999
|
}
|
|
1996
2000
|
innerContent = /* @__PURE__ */ jsxRuntime.jsxs("ruby", { children: [
|
|
1997
2001
|
baseContent,
|
|
@@ -2086,7 +2090,7 @@ function groupSegmentsIntoParagraphs(segments) {
|
|
|
2086
2090
|
return paragraphs;
|
|
2087
2091
|
}
|
|
2088
2092
|
function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
|
|
2089
|
-
if (!
|
|
2093
|
+
if (!chunkG7PJSVUS_js.hasTextProperties(element)) {
|
|
2090
2094
|
return emptyFallback || null;
|
|
2091
2095
|
}
|
|
2092
2096
|
const effectiveSegments = segmentOverrides ?? element.textSegments;
|
|
@@ -2107,10 +2111,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
2107
2111
|
return element.text || emptyFallback || "";
|
|
2108
2112
|
}
|
|
2109
2113
|
const paragraphs = groupSegmentsIntoParagraphs(effectiveSegments);
|
|
2110
|
-
const paragraphIndents =
|
|
2111
|
-
const elementRtl =
|
|
2112
|
-
const elementAlign =
|
|
2113
|
-
const bodyStyle =
|
|
2114
|
+
const paragraphIndents = chunkG7PJSVUS_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
|
|
2115
|
+
const elementRtl = chunkG7PJSVUS_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
|
|
2116
|
+
const elementAlign = chunkG7PJSVUS_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
|
|
2117
|
+
const bodyStyle = chunkG7PJSVUS_js.hasTextProperties(element) ? element.textStyle : void 0;
|
|
2114
2118
|
const spaceFirstLast = bodyStyle?.spaceFirstLastParagraph !== false;
|
|
2115
2119
|
return paragraphs.map((paraSegments, paraIndex) => {
|
|
2116
2120
|
const paraIndent = paragraphIndents?.[paraIndex];
|
|
@@ -2125,14 +2129,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
2125
2129
|
return Boolean(segment.text) && segment.text.trim().length > 0;
|
|
2126
2130
|
});
|
|
2127
2131
|
const hasBullet = bulletInfo && !bulletInfo.none && hasVisibleTextContent;
|
|
2128
|
-
const paraRtl =
|
|
2132
|
+
const paraRtl = chunkG7PJSVUS_js.resolveParagraphRtl(paraSegments, elementRtl);
|
|
2129
2133
|
const isRtlParagraph = paraRtl === true;
|
|
2130
|
-
const paraAlign =
|
|
2131
|
-
const cssTextAlign =
|
|
2134
|
+
const paraAlign = chunkG7PJSVUS_js.resolveParagraphAlign(paraSegments, elementAlign);
|
|
2135
|
+
const cssTextAlign = chunkG7PJSVUS_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
|
|
2132
2136
|
const paraMarginLeft = isRtlParagraph ? void 0 : rawMarginLeft;
|
|
2133
2137
|
const paraMarginRight = isRtlParagraph ? rawMarginLeft : void 0;
|
|
2134
2138
|
const paraTextIndent = rawTextIndent;
|
|
2135
|
-
const paraKinsokuStyle =
|
|
2139
|
+
const paraKinsokuStyle = chunkG7PJSVUS_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
|
|
2136
2140
|
const hasParaKinsoku = Object.keys(paraKinsokuStyle).length > 0;
|
|
2137
2141
|
const paraProps = effectiveSegments[firstSeg?.globalIndex ?? -1]?.paragraphProperties;
|
|
2138
2142
|
const spacing = resolveParagraphSpacing({
|
|
@@ -2142,7 +2146,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
2142
2146
|
isLast: paraIndex === paragraphs.length - 1,
|
|
2143
2147
|
spaceFirstLast
|
|
2144
2148
|
});
|
|
2145
|
-
const strutFontSize =
|
|
2149
|
+
const strutFontSize = chunkG7PJSVUS_js.resolveParagraphStrutFontSize(
|
|
2146
2150
|
paraSegments.map(({ segment }) => segment),
|
|
2147
2151
|
bodyStyle?.fontSize
|
|
2148
2152
|
);
|
|
@@ -2220,13 +2224,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
2220
2224
|
requireCtrlClick
|
|
2221
2225
|
)
|
|
2222
2226
|
);
|
|
2227
|
+
const isBlankParagraph = renderedSegments.length === 0;
|
|
2223
2228
|
if (!needsWrapper) {
|
|
2224
2229
|
return /* @__PURE__ */ jsxRuntime.jsxs(React6__default.default.Fragment, { children: [
|
|
2225
2230
|
wrappedContent,
|
|
2226
2231
|
paraIndex < paragraphs.length - 1 ? /* @__PURE__ */ jsxRuntime.jsx("br", {}) : null
|
|
2227
2232
|
] }, `${element.id}-para-${paraIndex}`);
|
|
2228
2233
|
}
|
|
2229
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { style: paraStyle, children: wrappedContent }, `${element.id}-para-${paraIndex}`);
|
|
2234
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { style: paraStyle, children: isBlankParagraph ? /* @__PURE__ */ jsxRuntime.jsx("br", {}) : wrappedContent }, `${element.id}-para-${paraIndex}`);
|
|
2230
2235
|
});
|
|
2231
2236
|
}
|
|
2232
2237
|
function hexToRgbUnit(hex) {
|
|
@@ -2241,13 +2246,13 @@ function hexToRgbUnit(hex) {
|
|
|
2241
2246
|
};
|
|
2242
2247
|
}
|
|
2243
2248
|
function getDuotoneColors(element) {
|
|
2244
|
-
if (!
|
|
2249
|
+
if (!chunkG7PJSVUS_js.isImageLikeElement(element)) {
|
|
2245
2250
|
return void 0;
|
|
2246
2251
|
}
|
|
2247
2252
|
return element.imageEffects?.duotone;
|
|
2248
2253
|
}
|
|
2249
2254
|
function buildLineShadowCss(element) {
|
|
2250
|
-
if (!
|
|
2255
|
+
if (!chunkG7PJSVUS_js.hasShapeProperties(element)) {
|
|
2251
2256
|
return void 0;
|
|
2252
2257
|
}
|
|
2253
2258
|
const ss = element.shapeStyle;
|
|
@@ -2258,13 +2263,13 @@ function buildLineShadowCss(element) {
|
|
|
2258
2263
|
const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
|
|
2259
2264
|
const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
|
|
2260
2265
|
const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
|
|
2261
|
-
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${
|
|
2262
|
-
|
|
2266
|
+
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkG7PJSVUS_js.colorWithOpacity(
|
|
2267
|
+
chunkG7PJSVUS_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
|
|
2263
2268
|
opacity
|
|
2264
2269
|
)}`;
|
|
2265
2270
|
}
|
|
2266
2271
|
function buildLineGlowFilter(element) {
|
|
2267
|
-
if (!
|
|
2272
|
+
if (!chunkG7PJSVUS_js.hasShapeProperties(element)) {
|
|
2268
2273
|
return void 0;
|
|
2269
2274
|
}
|
|
2270
2275
|
const ss = element.shapeStyle;
|
|
@@ -2273,7 +2278,7 @@ function buildLineGlowFilter(element) {
|
|
|
2273
2278
|
}
|
|
2274
2279
|
const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
|
|
2275
2280
|
const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
|
|
2276
|
-
const glowCol =
|
|
2281
|
+
const glowCol = chunkG7PJSVUS_js.colorWithOpacity(chunkG7PJSVUS_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
|
|
2277
2282
|
return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
|
|
2278
2283
|
}
|
|
2279
2284
|
function mapDagBlendModeToCss(blend) {
|
|
@@ -2297,7 +2302,7 @@ function getDagDuotoneFilterId(elementId) {
|
|
|
2297
2302
|
return `dag-duotone-${elementId}`;
|
|
2298
2303
|
}
|
|
2299
2304
|
function hasDagDuotoneEffect(element) {
|
|
2300
|
-
if (!
|
|
2305
|
+
if (!chunkG7PJSVUS_js.hasShapeProperties(element)) {
|
|
2301
2306
|
return false;
|
|
2302
2307
|
}
|
|
2303
2308
|
return Boolean(element.shapeStyle?.dagDuotone);
|
|
@@ -2360,7 +2365,7 @@ function getRoundRectRadiusPx2(element) {
|
|
|
2360
2365
|
|
|
2361
2366
|
// src/viewer/utils/shape-visual-3d.ts
|
|
2362
2367
|
function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
|
|
2363
|
-
return
|
|
2368
|
+
return chunkG7PJSVUS_js.build3DExtrusionData(
|
|
2364
2369
|
shape3d,
|
|
2365
2370
|
scene3d,
|
|
2366
2371
|
fillColor,
|
|
@@ -2369,7 +2374,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
|
|
|
2369
2374
|
);
|
|
2370
2375
|
}
|
|
2371
2376
|
function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
|
|
2372
|
-
|
|
2377
|
+
chunkG7PJSVUS_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
|
|
2373
2378
|
}
|
|
2374
2379
|
|
|
2375
2380
|
// src/viewer/utils/vector-subpath-paint.ts
|
|
@@ -2378,7 +2383,7 @@ function toHexByte(value) {
|
|
|
2378
2383
|
return clamped.toString(16).padStart(2, "0");
|
|
2379
2384
|
}
|
|
2380
2385
|
function shiftHex(hex, factor, towardsWhite) {
|
|
2381
|
-
const channels =
|
|
2386
|
+
const channels = chunkG7PJSVUS_js.hexToRgbChannels(hex);
|
|
2382
2387
|
if (!channels) {
|
|
2383
2388
|
return hex;
|
|
2384
2389
|
}
|
|
@@ -2404,13 +2409,13 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
|
|
|
2404
2409
|
const fillOff = subpath.fillMode === "none" || !hasFill;
|
|
2405
2410
|
return {
|
|
2406
2411
|
d: subpath.d,
|
|
2407
|
-
fill: fillOff ? "none" :
|
|
2412
|
+
fill: fillOff ? "none" : chunkG7PJSVUS_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
|
|
2408
2413
|
stroked: subpath.stroke !== false
|
|
2409
2414
|
};
|
|
2410
2415
|
});
|
|
2411
2416
|
}
|
|
2412
2417
|
function getStrokeOnlyPresetPaths(element) {
|
|
2413
|
-
if (element.type !== "shape" || !
|
|
2418
|
+
if (element.type !== "shape" || !chunkG7PJSVUS_js.hasShapeProperties(element)) {
|
|
2414
2419
|
return void 0;
|
|
2415
2420
|
}
|
|
2416
2421
|
const shapeType = element.shapeType;
|
|
@@ -2420,7 +2425,7 @@ function getStrokeOnlyPresetPaths(element) {
|
|
|
2420
2425
|
if (element.pathData) {
|
|
2421
2426
|
return void 0;
|
|
2422
2427
|
}
|
|
2423
|
-
const result =
|
|
2428
|
+
const result = chunkG7PJSVUS_js.evaluatePresetShape(
|
|
2424
2429
|
shapeType,
|
|
2425
2430
|
Math.max(element.width, 1),
|
|
2426
2431
|
Math.max(element.height, 1),
|
|
@@ -2435,27 +2440,27 @@ function getStrokeOnlyPresetPaths(element) {
|
|
|
2435
2440
|
|
|
2436
2441
|
// src/viewer/utils/shape-visual-style.ts
|
|
2437
2442
|
function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2438
|
-
if (!
|
|
2443
|
+
if (!chunkG7PJSVUS_js.hasShapeProperties(element)) {
|
|
2439
2444
|
return {};
|
|
2440
2445
|
}
|
|
2441
2446
|
const normalizedShapeType = getShapeType(element.shapeType);
|
|
2442
|
-
const clipPath =
|
|
2447
|
+
const clipPath = chunkG7PJSVUS_js.getResolvedShapeClipPath(element);
|
|
2443
2448
|
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;
|
|
2444
2449
|
const rendersStrokeOnlyPreset = Boolean(getStrokeOnlyPresetPaths(element));
|
|
2445
2450
|
const fillOpacity = element.shapeStyle?.fillOpacity;
|
|
2446
2451
|
const strokeOpacity = element.shapeStyle?.strokeOpacity;
|
|
2447
|
-
const strokeDash =
|
|
2448
|
-
const fillGradient =
|
|
2449
|
-
const shadowCss =
|
|
2450
|
-
const innerShadowCss =
|
|
2451
|
-
const resolvedFillColor =
|
|
2452
|
-
const resolvedStrokeColor =
|
|
2452
|
+
const strokeDash = chunkG7PJSVUS_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2453
|
+
const fillGradient = chunkG7PJSVUS_js.buildCssGradientFromShapeStyle(element.shapeStyle) || element.shapeStyle?.fillGradient;
|
|
2454
|
+
const shadowCss = chunkG7PJSVUS_js.buildShadowCssFromShapeStyle(element.shapeStyle);
|
|
2455
|
+
const innerShadowCss = chunkG7PJSVUS_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
|
|
2456
|
+
const resolvedFillColor = chunkG7PJSVUS_js.colorWithOpacity(fillColor, fillOpacity);
|
|
2457
|
+
const resolvedStrokeColor = chunkG7PJSVUS_js.colorWithOpacity(strokeColor, strokeOpacity);
|
|
2453
2458
|
const ss = element.shapeStyle;
|
|
2454
2459
|
const hasFillOverlayColor = Boolean(
|
|
2455
2460
|
ss?.dagFillOverlayColor && ss.dagFillOverlayColor !== "transparent"
|
|
2456
2461
|
);
|
|
2457
2462
|
const combinedShadowParts = [];
|
|
2458
|
-
const multiLayerShadow =
|
|
2463
|
+
const multiLayerShadow = chunkG7PJSVUS_js.buildMultiLayerShadowCss(element.shapeStyle);
|
|
2459
2464
|
if (multiLayerShadow) {
|
|
2460
2465
|
combinedShadowParts.push(multiLayerShadow);
|
|
2461
2466
|
} else if (shadowCss) {
|
|
@@ -2464,7 +2469,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2464
2469
|
if (innerShadowCss) {
|
|
2465
2470
|
combinedShadowParts.push(innerShadowCss);
|
|
2466
2471
|
}
|
|
2467
|
-
const glowBoxShadow =
|
|
2472
|
+
const glowBoxShadow = chunkG7PJSVUS_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
|
|
2468
2473
|
if (glowBoxShadow) {
|
|
2469
2474
|
combinedShadowParts.push(glowBoxShadow);
|
|
2470
2475
|
}
|
|
@@ -2472,7 +2477,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2472
2477
|
if (lineShadow) {
|
|
2473
2478
|
combinedShadowParts.push(lineShadow);
|
|
2474
2479
|
}
|
|
2475
|
-
const compoundLineShadow =
|
|
2480
|
+
const compoundLineShadow = chunkG7PJSVUS_js.getCompoundLineBoxShadow(
|
|
2476
2481
|
element.shapeStyle?.compoundLine,
|
|
2477
2482
|
strokeWidth,
|
|
2478
2483
|
resolvedStrokeColor
|
|
@@ -2485,11 +2490,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2485
2490
|
if (ss?.glowColor && ss.glowColor !== "transparent" && ss.glowRadius) {
|
|
2486
2491
|
const glowOpacity = typeof ss.glowOpacity === "number" ? ss.glowOpacity : 0.75;
|
|
2487
2492
|
const glowRad = Math.round(Math.max(0, ss.glowRadius));
|
|
2488
|
-
const glowCol =
|
|
2493
|
+
const glowCol = chunkG7PJSVUS_js.colorWithOpacity(chunkG7PJSVUS_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
|
|
2489
2494
|
filterParts.push(`drop-shadow(0 0 ${glowRad}px ${glowCol})`);
|
|
2490
2495
|
}
|
|
2491
2496
|
if (typeof ss?.softEdgeRadius === "number" && ss.softEdgeRadius > 0) {
|
|
2492
|
-
filterParts.push(`url(#${
|
|
2497
|
+
filterParts.push(`url(#${chunkG7PJSVUS_js.getSoftEdgeFilterId(element.id)})`);
|
|
2493
2498
|
}
|
|
2494
2499
|
if (typeof ss?.blurRadius === "number" && ss.blurRadius > 0) {
|
|
2495
2500
|
filterParts.push(`blur(${Math.round(ss.blurRadius)}px)`);
|
|
@@ -2498,13 +2503,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2498
2503
|
if (lineGlowCss) {
|
|
2499
2504
|
filterParts.push(lineGlowCss);
|
|
2500
2505
|
}
|
|
2501
|
-
const dagFilter =
|
|
2506
|
+
const dagFilter = chunkG7PJSVUS_js.getEffectDagFilter(ss, element.id);
|
|
2502
2507
|
if (dagFilter) {
|
|
2503
2508
|
filterParts.push(dagFilter);
|
|
2504
2509
|
}
|
|
2505
2510
|
const lineJoinCss = ss?.lineJoin === "round" ? "round" : ss?.lineJoin === "bevel" ? "bevel" : ss?.lineJoin === "miter" ? "miter" : void 0;
|
|
2506
2511
|
const miterLimitCss = ss?.lineJoin === "miter" && typeof ss?.miterLimit === "number" ? Math.max(ss.miterLimit / 1e5, 1) : void 0;
|
|
2507
|
-
const patternFill =
|
|
2512
|
+
const patternFill = chunkG7PJSVUS_js.buildPatternFillCss(element.shapeStyle);
|
|
2508
2513
|
const imageFillUrl = ss?.fillMode === "image" && ss.fillImageUrl ? ss.fillImageUrl : void 0;
|
|
2509
2514
|
const imageFillMode = ss?.fillImageMode || "stretch";
|
|
2510
2515
|
let reflectCss;
|
|
@@ -2516,7 +2521,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2516
2521
|
const endOpacity = typeof ss.reflectionEndOpacity === "number" ? ss.reflectionEndOpacity : 0;
|
|
2517
2522
|
const fadeLength = typeof ss.reflectionEndPosition === "number" ? Math.round(ss.reflectionEndPosition * Math.max(element.height, 1)) : 100;
|
|
2518
2523
|
const blurRadius = typeof ss.reflectionBlurRadius === "number" ? ss.reflectionBlurRadius : 0;
|
|
2519
|
-
reflectCss =
|
|
2524
|
+
reflectCss = chunkG7PJSVUS_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
|
|
2520
2525
|
}
|
|
2521
2526
|
}
|
|
2522
2527
|
const base = {
|
|
@@ -2558,9 +2563,9 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2558
2563
|
// two adjacent 40px buttons rendered with a 2px gap PowerPoint does not
|
|
2559
2564
|
// draw. The affordance is an `outline` instead (see `ElementRenderer`),
|
|
2560
2565
|
// which paints in the same place without taking part in layout.
|
|
2561
|
-
borderWidth: strokeWidth > 0 ?
|
|
2566
|
+
borderWidth: strokeWidth > 0 ? chunkG7PJSVUS_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
|
|
2562
2567
|
borderColor: strokeWidth > 0 ? resolvedStrokeColor : void 0,
|
|
2563
|
-
borderStyle: strokeWidth > 0 ?
|
|
2568
|
+
borderStyle: strokeWidth > 0 ? chunkG7PJSVUS_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
|
|
2564
2569
|
strokeLinejoin: lineJoinCss,
|
|
2565
2570
|
strokeMiterlimit: miterLimitCss,
|
|
2566
2571
|
strokeLinecap: ss?.lineCap === "rnd" ? "round" : ss?.lineCap === "sq" ? "square" : ss?.lineCap === "flat" ? "butt" : void 0
|
|
@@ -2616,7 +2621,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2616
2621
|
borderWidth: 0,
|
|
2617
2622
|
borderTopWidth: Math.max(strokeWidth, 2),
|
|
2618
2623
|
borderTopColor: resolvedStrokeColor,
|
|
2619
|
-
borderTopStyle:
|
|
2624
|
+
borderTopStyle: chunkG7PJSVUS_js.getCssBorderDashStyle(strokeDash)
|
|
2620
2625
|
};
|
|
2621
2626
|
}
|
|
2622
2627
|
if (normalizedShapeType === "cylinder") {
|
|
@@ -2630,13 +2635,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2630
2635
|
function getConnectorAdjustment(element, key, fallback) {
|
|
2631
2636
|
const direct = element.shapeAdjustments?.[key];
|
|
2632
2637
|
if (typeof direct === "number" && Number.isFinite(direct)) {
|
|
2633
|
-
return
|
|
2638
|
+
return chunkG7PJSVUS_js.clampUnitInterval(direct / 1e5);
|
|
2634
2639
|
}
|
|
2635
2640
|
const fallbackKey = element.shapeAdjustments?.adj;
|
|
2636
2641
|
if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
|
|
2637
|
-
return
|
|
2642
|
+
return chunkG7PJSVUS_js.clampUnitInterval(fallbackKey / 1e5);
|
|
2638
2643
|
}
|
|
2639
|
-
return
|
|
2644
|
+
return chunkG7PJSVUS_js.clampUnitInterval(fallback);
|
|
2640
2645
|
}
|
|
2641
2646
|
function getConnectorPathGeometry(element) {
|
|
2642
2647
|
const width = Math.max(element.width, 1);
|
|
@@ -2773,11 +2778,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
|
|
|
2773
2778
|
strokePaint,
|
|
2774
2779
|
strokeWidth,
|
|
2775
2780
|
dashArray,
|
|
2776
|
-
lineCap:
|
|
2781
|
+
lineCap: chunkG7PJSVUS_js.svgLineCap(shapeStyle?.lineCap),
|
|
2777
2782
|
lineJoin,
|
|
2778
2783
|
miterLimit,
|
|
2779
|
-
offsets:
|
|
2780
|
-
widths:
|
|
2784
|
+
offsets: chunkG7PJSVUS_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
|
|
2785
|
+
widths: chunkG7PJSVUS_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
|
|
2781
2786
|
};
|
|
2782
2787
|
}
|
|
2783
2788
|
function strokeStrands(d, keyBase, ctx) {
|
|
@@ -2800,7 +2805,7 @@ function strokeStrands(d, keyBase, ctx) {
|
|
|
2800
2805
|
}
|
|
2801
2806
|
function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false) {
|
|
2802
2807
|
const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
|
|
2803
|
-
const subpaths = structuredPaths && structuredPaths.length > 0 ?
|
|
2808
|
+
const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkG7PJSVUS_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
|
|
2804
2809
|
const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
|
|
2805
2810
|
const nodes = [];
|
|
2806
2811
|
if (subpaths && needsPerSubpath) {
|
|
@@ -2831,7 +2836,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2831
2836
|
"path",
|
|
2832
2837
|
{
|
|
2833
2838
|
d: pathData,
|
|
2834
|
-
fill: animatesFill ? "inherit" :
|
|
2839
|
+
fill: animatesFill ? "inherit" : chunkG7PJSVUS_js.colorWithOpacity(fillColor, fillOpacity),
|
|
2835
2840
|
stroke: "none",
|
|
2836
2841
|
vectorEffect: "non-scaling-stroke"
|
|
2837
2842
|
},
|
|
@@ -2873,14 +2878,14 @@ function renderStrokeOnlyPreset(presetPaths, width, height, shapeStyle, strokePa
|
|
|
2873
2878
|
);
|
|
2874
2879
|
}
|
|
2875
2880
|
function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2876
|
-
if (!
|
|
2881
|
+
if (!chunkG7PJSVUS_js.hasShapeProperties(element)) {
|
|
2877
2882
|
return null;
|
|
2878
2883
|
}
|
|
2879
2884
|
const normalizedType = (element.shapeType || "").toLowerCase();
|
|
2880
|
-
const fillPaint = animatesFill ? "inherit" :
|
|
2881
|
-
const strokePaint = animatesStroke ? "inherit" :
|
|
2882
|
-
const dashType =
|
|
2883
|
-
const dashArray =
|
|
2885
|
+
const fillPaint = animatesFill ? "inherit" : chunkG7PJSVUS_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
|
|
2886
|
+
const strokePaint = animatesStroke ? "inherit" : chunkG7PJSVUS_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
|
|
2887
|
+
const dashType = chunkG7PJSVUS_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2888
|
+
const dashArray = chunkG7PJSVUS_js.getSvgStrokeDasharray(
|
|
2884
2889
|
dashType,
|
|
2885
2890
|
Math.max(strokeWidth, 1),
|
|
2886
2891
|
element.shapeStyle?.customDashSegments
|
|
@@ -2959,18 +2964,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2959
2964
|
Boolean(animatesFill)
|
|
2960
2965
|
);
|
|
2961
2966
|
}
|
|
2962
|
-
if (
|
|
2967
|
+
if (chunkG7PJSVUS_js.isCalloutShape(normalizedType)) {
|
|
2963
2968
|
const width = Math.max(element.width, 1);
|
|
2964
2969
|
const height = Math.max(element.height, 1);
|
|
2965
|
-
const geometry =
|
|
2970
|
+
const geometry = chunkG7PJSVUS_js.getCalloutLeaderLineGeometry(
|
|
2966
2971
|
normalizedType,
|
|
2967
2972
|
width,
|
|
2968
2973
|
height,
|
|
2969
2974
|
element.shapeAdjustments
|
|
2970
2975
|
);
|
|
2971
2976
|
if (geometry && geometry.points.length >= 2) {
|
|
2972
|
-
const leaderPath =
|
|
2973
|
-
const bounds =
|
|
2977
|
+
const leaderPath = chunkG7PJSVUS_js.buildCalloutLeaderLineSvgPath(geometry);
|
|
2978
|
+
const bounds = chunkG7PJSVUS_js.getCalloutViewBoxBounds(width, height, geometry);
|
|
2974
2979
|
const lineStroke = Math.max(strokeWidth, 1);
|
|
2975
2980
|
const offsetLeft = bounds.minX;
|
|
2976
2981
|
const offsetTop = bounds.minY;
|
|
@@ -3033,10 +3038,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
3033
3038
|
const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
|
|
3034
3039
|
const endArrowL = element.shapeStyle?.connectorEndArrowLength;
|
|
3035
3040
|
const compoundLine = element.shapeStyle?.compoundLine;
|
|
3036
|
-
const connectorLineCap =
|
|
3041
|
+
const connectorLineCap = chunkG7PJSVUS_js.svgLineCap(element.shapeStyle?.lineCap);
|
|
3037
3042
|
const hitTargetWidth = Math.max(strokeWidth * 3, 12);
|
|
3038
|
-
const offsets =
|
|
3039
|
-
const widths =
|
|
3043
|
+
const offsets = chunkG7PJSVUS_js.getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
3044
|
+
const widths = chunkG7PJSVUS_js.getCompoundLineWidths(compoundLine, strokeWidth);
|
|
3040
3045
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3041
3046
|
"svg",
|
|
3042
3047
|
{
|
|
@@ -3115,15 +3120,15 @@ function parseGradientFillCss(gradFill) {
|
|
|
3115
3120
|
}
|
|
3116
3121
|
const parsed = stops.map((gs) => {
|
|
3117
3122
|
const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
|
|
3118
|
-
const color =
|
|
3119
|
-
const opacity =
|
|
3120
|
-
return { pos, color:
|
|
3123
|
+
const color = chunkG7PJSVUS_js.parseDrawingColor(gs) ?? "#888888";
|
|
3124
|
+
const opacity = chunkG7PJSVUS_js.parseDrawingColorOpacity(gs);
|
|
3125
|
+
return { pos, color: chunkG7PJSVUS_js.colorWithOpacity(color, opacity) };
|
|
3121
3126
|
}).sort((a, b) => a.pos - b.pos);
|
|
3122
3127
|
const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
|
|
3123
3128
|
const lin = gradFill["a:lin"];
|
|
3124
3129
|
if (lin) {
|
|
3125
3130
|
const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
|
|
3126
|
-
const angleDeg = Math.round(
|
|
3131
|
+
const angleDeg = Math.round(chunkG7PJSVUS_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
|
|
3127
3132
|
return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
|
|
3128
3133
|
}
|
|
3129
3134
|
const path = gradFill["a:path"];
|
|
@@ -3158,8 +3163,8 @@ function parsePatternFillCss(pattFill) {
|
|
|
3158
3163
|
if (!pattFill) {
|
|
3159
3164
|
return void 0;
|
|
3160
3165
|
}
|
|
3161
|
-
const fgColor =
|
|
3162
|
-
const bgColor =
|
|
3166
|
+
const fgColor = chunkG7PJSVUS_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
|
|
3167
|
+
const bgColor = chunkG7PJSVUS_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
|
|
3163
3168
|
const preset = String(pattFill["@_prst"] || "ltDnDiag");
|
|
3164
3169
|
switch (preset) {
|
|
3165
3170
|
case "ltHorz":
|
|
@@ -3270,11 +3275,11 @@ function parseCellBorders(cellProperties) {
|
|
|
3270
3275
|
const prstDash = ln["a:prstDash"];
|
|
3271
3276
|
const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
|
|
3272
3277
|
const cssBorderStyle = ooxmlDashToCss(dashVal);
|
|
3273
|
-
const color =
|
|
3278
|
+
const color = chunkG7PJSVUS_js.parseDrawingColor(ln["a:solidFill"]);
|
|
3274
3279
|
if (color) {
|
|
3275
|
-
const opacity =
|
|
3280
|
+
const opacity = chunkG7PJSVUS_js.parseDrawingColorOpacity(ln["a:solidFill"]);
|
|
3276
3281
|
const key = `${edge.prefix}`;
|
|
3277
|
-
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${
|
|
3282
|
+
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkG7PJSVUS_js.colorWithOpacity(color, opacity)}`;
|
|
3278
3283
|
}
|
|
3279
3284
|
}
|
|
3280
3285
|
return borderStyle;
|
|
@@ -3287,7 +3292,7 @@ function parseCellTextEffects(runProps) {
|
|
|
3287
3292
|
const textShadowParts = [];
|
|
3288
3293
|
const outerShdw = effectLst["a:outerShdw"];
|
|
3289
3294
|
if (outerShdw) {
|
|
3290
|
-
const shdwColor =
|
|
3295
|
+
const shdwColor = chunkG7PJSVUS_js.parseDrawingColor(outerShdw);
|
|
3291
3296
|
if (shdwColor) {
|
|
3292
3297
|
const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
|
|
3293
3298
|
const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
|
|
@@ -3305,7 +3310,7 @@ function parseCellTextEffects(runProps) {
|
|
|
3305
3310
|
}
|
|
3306
3311
|
const glow = effectLst["a:glow"];
|
|
3307
3312
|
if (glow) {
|
|
3308
|
-
const glowColor =
|
|
3313
|
+
const glowColor = chunkG7PJSVUS_js.parseDrawingColor(glow);
|
|
3309
3314
|
if (glowColor) {
|
|
3310
3315
|
const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
|
|
3311
3316
|
const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
|
|
@@ -3384,10 +3389,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3384
3389
|
if (runProps?.["@_u"] !== void 0) {
|
|
3385
3390
|
cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
|
|
3386
3391
|
}
|
|
3387
|
-
const runColor =
|
|
3392
|
+
const runColor = chunkG7PJSVUS_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkG7PJSVUS_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
|
|
3388
3393
|
if (runColor) {
|
|
3389
|
-
const opacity =
|
|
3390
|
-
cellStyle.color =
|
|
3394
|
+
const opacity = chunkG7PJSVUS_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
|
|
3395
|
+
cellStyle.color = chunkG7PJSVUS_js.colorWithOpacity(runColor, opacity);
|
|
3391
3396
|
}
|
|
3392
3397
|
const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
|
|
3393
3398
|
if (fontFamily) {
|
|
@@ -3397,15 +3402,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3397
3402
|
cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
|
|
3398
3403
|
}
|
|
3399
3404
|
const cellProperties = cellXml["a:tcPr"];
|
|
3400
|
-
const cellFill =
|
|
3405
|
+
const cellFill = chunkG7PJSVUS_js.parseDrawingColor(
|
|
3401
3406
|
cellProperties?.["a:solidFill"],
|
|
3402
3407
|
schemeColorOverrides
|
|
3403
3408
|
);
|
|
3404
3409
|
if (cellFill) {
|
|
3405
|
-
const opacity =
|
|
3410
|
+
const opacity = chunkG7PJSVUS_js.parseDrawingColorOpacity(
|
|
3406
3411
|
cellProperties?.["a:solidFill"]
|
|
3407
3412
|
);
|
|
3408
|
-
cellStyle.backgroundColor =
|
|
3413
|
+
cellStyle.backgroundColor = chunkG7PJSVUS_js.colorWithOpacity(cellFill, opacity);
|
|
3409
3414
|
} else {
|
|
3410
3415
|
const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
|
|
3411
3416
|
if (gradCss) {
|
|
@@ -3420,16 +3425,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3420
3425
|
const edgeBorders = parseCellBorders(cellProperties);
|
|
3421
3426
|
Object.assign(cellStyle, edgeBorders);
|
|
3422
3427
|
if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
|
|
3423
|
-
const borderColor =
|
|
3428
|
+
const borderColor = chunkG7PJSVUS_js.parseDrawingColor(
|
|
3424
3429
|
cellProperties?.["a:lnL"]?.["a:solidFill"],
|
|
3425
3430
|
schemeColorOverrides
|
|
3426
|
-
) ||
|
|
3431
|
+
) || chunkG7PJSVUS_js.parseDrawingColor(
|
|
3427
3432
|
cellProperties?.["a:lnR"]?.["a:solidFill"],
|
|
3428
3433
|
schemeColorOverrides
|
|
3429
|
-
) ||
|
|
3434
|
+
) || chunkG7PJSVUS_js.parseDrawingColor(
|
|
3430
3435
|
cellProperties?.["a:lnT"]?.["a:solidFill"],
|
|
3431
3436
|
schemeColorOverrides
|
|
3432
|
-
) ||
|
|
3437
|
+
) || chunkG7PJSVUS_js.parseDrawingColor(
|
|
3433
3438
|
cellProperties?.["a:lnB"]?.["a:solidFill"],
|
|
3434
3439
|
schemeColorOverrides
|
|
3435
3440
|
);
|
|
@@ -3508,10 +3513,10 @@ function resolveTableStyleFillColor(fill, colorScheme) {
|
|
|
3508
3513
|
}
|
|
3509
3514
|
let color = base;
|
|
3510
3515
|
if (fill.tint !== void 0 && fill.tint > 0) {
|
|
3511
|
-
color =
|
|
3516
|
+
color = chunkG7PJSVUS_js.tintColor2(color, fill.tint / 1e5);
|
|
3512
3517
|
}
|
|
3513
3518
|
if (fill.shade !== void 0 && fill.shade > 0) {
|
|
3514
|
-
color =
|
|
3519
|
+
color = chunkG7PJSVUS_js.shadeColor2(color, 1 - fill.shade / 1e5);
|
|
3515
3520
|
}
|
|
3516
3521
|
return color;
|
|
3517
3522
|
}
|
|
@@ -3536,7 +3541,7 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
|
|
|
3536
3541
|
style.fontFamily = text.fontFace;
|
|
3537
3542
|
applied = true;
|
|
3538
3543
|
} else {
|
|
3539
|
-
const refFont =
|
|
3544
|
+
const refFont = chunkG7PJSVUS_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
|
|
3540
3545
|
if (refFont) {
|
|
3541
3546
|
style.fontFamily = refFont;
|
|
3542
3547
|
applied = true;
|
|
@@ -3547,10 +3552,10 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
|
|
|
3547
3552
|
if (base) {
|
|
3548
3553
|
let color = base;
|
|
3549
3554
|
if (text.fontTint !== void 0 && text.fontTint > 0) {
|
|
3550
|
-
color =
|
|
3555
|
+
color = chunkG7PJSVUS_js.tintColor2(color, text.fontTint / 1e5);
|
|
3551
3556
|
}
|
|
3552
3557
|
if (text.fontShade !== void 0 && text.fontShade > 0) {
|
|
3553
|
-
color =
|
|
3558
|
+
color = chunkG7PJSVUS_js.shadeColor2(color, 1 - text.fontShade / 1e5);
|
|
3554
3559
|
}
|
|
3555
3560
|
style.color = color;
|
|
3556
3561
|
applied = true;
|
|
@@ -3739,7 +3744,7 @@ function parseTableElementData(element, fallbackTextStyle) {
|
|
|
3739
3744
|
};
|
|
3740
3745
|
}
|
|
3741
3746
|
function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
|
|
3742
|
-
return
|
|
3747
|
+
return chunkG7PJSVUS_js.getCellDiagonalBorders(style, tableData, pos, {
|
|
3743
3748
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
3744
3749
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
3745
3750
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -3887,9 +3892,9 @@ function cellStyleToCss(style) {
|
|
|
3887
3892
|
if (style.gradientFillCss) {
|
|
3888
3893
|
css.background = style.gradientFillCss;
|
|
3889
3894
|
} else if (style.fillMode === "pattern" && style.patternFillPreset) {
|
|
3890
|
-
const fg =
|
|
3891
|
-
const bg =
|
|
3892
|
-
const svgPattern =
|
|
3895
|
+
const fg = chunkG7PJSVUS_js.normalizeHexColor(style.patternFillForeground, "#000000");
|
|
3896
|
+
const bg = chunkG7PJSVUS_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
|
|
3897
|
+
const svgPattern = chunkG7PJSVUS_js.getPatternSvg(style.patternFillPreset, fg, bg);
|
|
3893
3898
|
if (svgPattern) {
|
|
3894
3899
|
const encoded = encodeURIComponent(svgPattern);
|
|
3895
3900
|
css.backgroundImage = `url("data:image/svg+xml,${encoded}")`;
|
|
@@ -3965,7 +3970,7 @@ function cellStyleToCss(style) {
|
|
|
3965
3970
|
if (edge.width || edge.color) {
|
|
3966
3971
|
const w = edge.width ?? 1;
|
|
3967
3972
|
const c = edge.color ?? style.borderColor ?? "#000000";
|
|
3968
|
-
const s =
|
|
3973
|
+
const s = chunkG7PJSVUS_js.ooxmlDashToCssBorderStyle(edge.dash);
|
|
3969
3974
|
css[edge.prefix] = `${w}px ${s} ${c}`;
|
|
3970
3975
|
}
|
|
3971
3976
|
}
|
|
@@ -3996,7 +4001,7 @@ function cellStyleToCss(style) {
|
|
|
3996
4001
|
css.textShadow = textShadowParts.join(", ");
|
|
3997
4002
|
}
|
|
3998
4003
|
if (style.cell3D) {
|
|
3999
|
-
Object.assign(css,
|
|
4004
|
+
Object.assign(css, chunkG7PJSVUS_js.cell3DBevelCss(style.cell3D));
|
|
4000
4005
|
}
|
|
4001
4006
|
return css;
|
|
4002
4007
|
}
|
|
@@ -4010,7 +4015,7 @@ function TableResizeOverlay({
|
|
|
4010
4015
|
const containerRef = React6.useRef(null);
|
|
4011
4016
|
const [rowBounds, setRowBounds] = React6.useState([]);
|
|
4012
4017
|
const dragRef = React6.useRef(null);
|
|
4013
|
-
const colBoundaries = React6.useMemo(() =>
|
|
4018
|
+
const colBoundaries = React6.useMemo(() => chunkG7PJSVUS_js.computeColumnBoundaries(columnWidths), [columnWidths]);
|
|
4014
4019
|
const measureRows = React6.useCallback(() => {
|
|
4015
4020
|
const container = containerRef.current;
|
|
4016
4021
|
if (!container) {
|
|
@@ -4057,11 +4062,11 @@ function TableResizeOverlay({
|
|
|
4057
4062
|
const rect = containerRef.current.getBoundingClientRect();
|
|
4058
4063
|
if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
|
|
4059
4064
|
const deltaProp = (e.clientX - drag.startPos) / rect.width;
|
|
4060
|
-
onResizeColumns(
|
|
4065
|
+
onResizeColumns(chunkG7PJSVUS_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
|
|
4061
4066
|
} else if (drag.type === "row" && onResizeRow) {
|
|
4062
4067
|
const deltaY = e.clientY - drag.startPos;
|
|
4063
|
-
const newHeight =
|
|
4064
|
-
drag.initialRowHeight ??
|
|
4068
|
+
const newHeight = chunkG7PJSVUS_js.computeResizedRowHeight(
|
|
4069
|
+
drag.initialRowHeight ?? chunkG7PJSVUS_js.DEFAULT_ROW_HEIGHT,
|
|
4065
4070
|
deltaY
|
|
4066
4071
|
);
|
|
4067
4072
|
onResizeRow(drag.index, newHeight);
|
|
@@ -4099,7 +4104,7 @@ function TableResizeOverlay({
|
|
|
4099
4104
|
e.stopPropagation();
|
|
4100
4105
|
const table = containerRef.current?.querySelector("table");
|
|
4101
4106
|
const tr = table?.querySelectorAll("tbody > tr")[index];
|
|
4102
|
-
const actualHeight = tr?.offsetHeight ??
|
|
4107
|
+
const actualHeight = tr?.offsetHeight ?? chunkG7PJSVUS_js.DEFAULT_ROW_HEIGHT;
|
|
4103
4108
|
document.body.style.cursor = "row-resize";
|
|
4104
4109
|
document.body.style.userSelect = "none";
|
|
4105
4110
|
dragRef.current = {
|
|
@@ -4147,7 +4152,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4147
4152
|
}
|
|
4148
4153
|
const first = selectedCell.selectedCells[0];
|
|
4149
4154
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
4150
|
-
return
|
|
4155
|
+
return chunkG7PJSVUS_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
|
|
4151
4156
|
})();
|
|
4152
4157
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4153
4158
|
TableResizeOverlay,
|
|
@@ -4180,7 +4185,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4180
4185
|
return null;
|
|
4181
4186
|
}
|
|
4182
4187
|
const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
|
|
4183
|
-
const isInMultiSelection =
|
|
4188
|
+
const isInMultiSelection = chunkG7PJSVUS_js.isCellInRect(rowIndex, cellIndex, selectionRect);
|
|
4184
4189
|
const isCellEditing = isCellSelected && selectedCell?.isEditing;
|
|
4185
4190
|
const diag = getCellDiagonalBorders2(
|
|
4186
4191
|
cell.style,
|
|
@@ -4210,7 +4215,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4210
4215
|
}
|
|
4211
4216
|
event.stopPropagation();
|
|
4212
4217
|
if (event.shiftKey && selectedCell) {
|
|
4213
|
-
const rect =
|
|
4218
|
+
const rect = chunkG7PJSVUS_js.computeSelectionRect(
|
|
4214
4219
|
selectedCell.rowIndex,
|
|
4215
4220
|
selectedCell.columnIndex,
|
|
4216
4221
|
rowIndex,
|
|
@@ -4220,7 +4225,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4220
4225
|
options?.onSelectCell?.({
|
|
4221
4226
|
rowIndex: selectedCell.rowIndex,
|
|
4222
4227
|
columnIndex: selectedCell.columnIndex,
|
|
4223
|
-
selectedCells:
|
|
4228
|
+
selectedCells: chunkG7PJSVUS_js.rectToCells(rect)
|
|
4224
4229
|
});
|
|
4225
4230
|
} else {
|
|
4226
4231
|
options?.onSelectCell?.({
|
|
@@ -4297,7 +4302,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4297
4302
|
}
|
|
4298
4303
|
const first = selectedCell.selectedCells[0];
|
|
4299
4304
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
4300
|
-
return
|
|
4305
|
+
return chunkG7PJSVUS_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
|
|
4301
4306
|
})();
|
|
4302
4307
|
const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
|
|
4303
4308
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4374,7 +4379,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4374
4379
|
"border px-1 py-0.5 align-top",
|
|
4375
4380
|
isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
|
|
4376
4381
|
selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
|
|
4377
|
-
|
|
4382
|
+
chunkG7PJSVUS_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
|
|
4378
4383
|
),
|
|
4379
4384
|
colSpan,
|
|
4380
4385
|
rowSpan: rSpan,
|
|
@@ -4385,7 +4390,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4385
4390
|
}
|
|
4386
4391
|
event.stopPropagation();
|
|
4387
4392
|
if (event.shiftKey && selectedCell && tableEl.tableData) {
|
|
4388
|
-
const rect =
|
|
4393
|
+
const rect = chunkG7PJSVUS_js.computeSelectionRect(
|
|
4389
4394
|
selectedCell.rowIndex,
|
|
4390
4395
|
selectedCell.columnIndex,
|
|
4391
4396
|
rowIndex,
|
|
@@ -4395,7 +4400,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4395
4400
|
options?.onSelectCell?.({
|
|
4396
4401
|
rowIndex: selectedCell.rowIndex,
|
|
4397
4402
|
columnIndex: selectedCell.columnIndex,
|
|
4398
|
-
selectedCells:
|
|
4403
|
+
selectedCells: chunkG7PJSVUS_js.rectToCells(rect)
|
|
4399
4404
|
});
|
|
4400
4405
|
} else {
|
|
4401
4406
|
options?.onSelectCell?.({
|
|
@@ -4450,24 +4455,24 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4450
4455
|
}
|
|
4451
4456
|
var LEGEND_ITEM_WIDTH = 80;
|
|
4452
4457
|
function partAttrs(part) {
|
|
4453
|
-
return part ?
|
|
4458
|
+
return part ? chunkG7PJSVUS_js.chartPartToAttrs(part) : void 0;
|
|
4454
4459
|
}
|
|
4455
4460
|
function resolveReactPalette(chartData) {
|
|
4456
4461
|
if (chartData.colorPalette && chartData.colorPalette.length > 0) {
|
|
4457
4462
|
return chartData.colorPalette;
|
|
4458
4463
|
}
|
|
4459
|
-
return [...
|
|
4464
|
+
return [...chunkG7PJSVUS_js.getChartStylePalette(chartData.style?.styleId)];
|
|
4460
4465
|
}
|
|
4461
4466
|
function buildReactChartViewModel(element) {
|
|
4462
4467
|
if (element.type !== "chart" || !element.chartData) {
|
|
4463
|
-
return
|
|
4468
|
+
return chunkG7PJSVUS_js.buildChartViewModel(element);
|
|
4464
4469
|
}
|
|
4465
4470
|
const palette = resolveReactPalette(element.chartData);
|
|
4466
4471
|
const themedElement = {
|
|
4467
4472
|
...element,
|
|
4468
4473
|
chartData: { ...element.chartData, colorPalette: palette }
|
|
4469
4474
|
};
|
|
4470
|
-
return
|
|
4475
|
+
return chunkG7PJSVUS_js.buildChartViewModel(themedElement);
|
|
4471
4476
|
}
|
|
4472
4477
|
function renderPrimitive(prim, key) {
|
|
4473
4478
|
switch (prim.kind) {
|
|
@@ -4856,7 +4861,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4856
4861
|
const unmatchedRows = [];
|
|
4857
4862
|
categories.forEach((cat, i) => {
|
|
4858
4863
|
const value = values[i] ?? 0;
|
|
4859
|
-
const code =
|
|
4864
|
+
const code = chunkG7PJSVUS_js.resolveRegionCode(cat);
|
|
4860
4865
|
if (code) {
|
|
4861
4866
|
regionValueMap.set(code, { value, label: cat });
|
|
4862
4867
|
} else {
|
|
@@ -4894,8 +4899,8 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4894
4899
|
let fill = "#e2e8f0";
|
|
4895
4900
|
let dataLabel = null;
|
|
4896
4901
|
if (entry) {
|
|
4897
|
-
const t =
|
|
4898
|
-
fill =
|
|
4902
|
+
const t = chunkG7PJSVUS_js.normalizeValue(entry.value, minVal, maxVal);
|
|
4903
|
+
fill = chunkG7PJSVUS_js.sequentialColorScale(t);
|
|
4899
4904
|
dataLabel = /* @__PURE__ */ jsxRuntime.jsx(
|
|
4900
4905
|
"text",
|
|
4901
4906
|
{
|
|
@@ -4906,7 +4911,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4906
4911
|
fontWeight: 600,
|
|
4907
4912
|
fill: "#1e293b",
|
|
4908
4913
|
style: { pointerEvents: "none" },
|
|
4909
|
-
children:
|
|
4914
|
+
children: chunkG7PJSVUS_js.formatAxisValue(entry.value)
|
|
4910
4915
|
},
|
|
4911
4916
|
`${element.id}-map-dl-${region.code}`
|
|
4912
4917
|
);
|
|
@@ -4924,7 +4929,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4924
4929
|
opacity: 0.9,
|
|
4925
4930
|
children: /* @__PURE__ */ jsxRuntime.jsxs("title", { children: [
|
|
4926
4931
|
region.name,
|
|
4927
|
-
entry ? `: ${
|
|
4932
|
+
entry ? `: ${chunkG7PJSVUS_js.formatAxisValue(entry.value)}` : ""
|
|
4928
4933
|
] })
|
|
4929
4934
|
}
|
|
4930
4935
|
),
|
|
@@ -4962,7 +4967,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4962
4967
|
fontSize: 7,
|
|
4963
4968
|
fill: "#64748b",
|
|
4964
4969
|
textAnchor: "middle",
|
|
4965
|
-
children:
|
|
4970
|
+
children: chunkG7PJSVUS_js.formatAxisValue(minVal)
|
|
4966
4971
|
},
|
|
4967
4972
|
`${element.id}-map-legend-min`
|
|
4968
4973
|
),
|
|
@@ -4974,7 +4979,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4974
4979
|
fontSize: 7,
|
|
4975
4980
|
fill: "#64748b",
|
|
4976
4981
|
textAnchor: "middle",
|
|
4977
|
-
children:
|
|
4982
|
+
children: chunkG7PJSVUS_js.formatAxisValue(maxVal)
|
|
4978
4983
|
},
|
|
4979
4984
|
`${element.id}-map-legend-max`
|
|
4980
4985
|
)
|
|
@@ -5040,7 +5045,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
5040
5045
|
y,
|
|
5041
5046
|
fontSize,
|
|
5042
5047
|
fill: "#475569",
|
|
5043
|
-
children:
|
|
5048
|
+
children: chunkG7PJSVUS_js.formatAxisValue(row.value)
|
|
5044
5049
|
},
|
|
5045
5050
|
`${element.id}-map-ft-val-${i}`
|
|
5046
5051
|
)
|
|
@@ -5111,7 +5116,7 @@ function renderStackedBarChart(element, _chartData, _categoryLabels) {
|
|
|
5111
5116
|
|
|
5112
5117
|
// src/viewer/utils/chart-overlay-utils.ts
|
|
5113
5118
|
function sColor(series, idx) {
|
|
5114
|
-
return
|
|
5119
|
+
return chunkG7PJSVUS_js.seriesColor(series, idx);
|
|
5115
5120
|
}
|
|
5116
5121
|
function valToY(val, range, topY, bottomY) {
|
|
5117
5122
|
const usable = bottomY - topY;
|
|
@@ -5650,7 +5655,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
|
|
|
5650
5655
|
width: 10,
|
|
5651
5656
|
height: 10,
|
|
5652
5657
|
rx: 2,
|
|
5653
|
-
fill:
|
|
5658
|
+
fill: chunkG7PJSVUS_js.seriesColor(s, i, style?.styleId, colorPalette)
|
|
5654
5659
|
},
|
|
5655
5660
|
`${id}-leg-r-${i}`
|
|
5656
5661
|
)
|
|
@@ -5674,7 +5679,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
|
|
|
5674
5679
|
width: 10,
|
|
5675
5680
|
height: 10,
|
|
5676
5681
|
rx: 2,
|
|
5677
|
-
fill:
|
|
5682
|
+
fill: chunkG7PJSVUS_js.seriesColor(s, i, style?.styleId, colorPalette)
|
|
5678
5683
|
}
|
|
5679
5684
|
),
|
|
5680
5685
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: cy + 8, fontSize: 9, fill: "#475569", children: s.name || `Series ${i + 1}` })
|
|
@@ -5687,9 +5692,9 @@ function renderGridlines(id, style, range, layout) {
|
|
|
5687
5692
|
}
|
|
5688
5693
|
const lines = [];
|
|
5689
5694
|
if (range.logScale && range.logBase) {
|
|
5690
|
-
const ticks =
|
|
5695
|
+
const ticks = chunkG7PJSVUS_js.generateLogTicks(range);
|
|
5691
5696
|
ticks.forEach((tickVal, i) => {
|
|
5692
|
-
const y =
|
|
5697
|
+
const y = chunkG7PJSVUS_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
|
|
5693
5698
|
lines.push(
|
|
5694
5699
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5695
5700
|
"line",
|
|
@@ -5710,7 +5715,7 @@ function renderGridlines(id, style, range, layout) {
|
|
|
5710
5715
|
const steps = 4;
|
|
5711
5716
|
for (let i = 0; i <= steps; i++) {
|
|
5712
5717
|
const val = range.min + range.span * i / steps;
|
|
5713
|
-
const y =
|
|
5718
|
+
const y = chunkG7PJSVUS_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5714
5719
|
lines.push(
|
|
5715
5720
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5716
5721
|
"line",
|
|
@@ -5734,9 +5739,9 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5734
5739
|
const labels = [];
|
|
5735
5740
|
const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
|
|
5736
5741
|
if (range.logScale && range.logBase) {
|
|
5737
|
-
const ticks =
|
|
5742
|
+
const ticks = chunkG7PJSVUS_js.generateLogTicks(range);
|
|
5738
5743
|
ticks.forEach((tickVal, i) => {
|
|
5739
|
-
const y =
|
|
5744
|
+
const y = chunkG7PJSVUS_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
|
|
5740
5745
|
labels.push(
|
|
5741
5746
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5742
5747
|
"text",
|
|
@@ -5746,7 +5751,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5746
5751
|
textAnchor: "end",
|
|
5747
5752
|
fontSize: 8,
|
|
5748
5753
|
fill: "#64748b",
|
|
5749
|
-
children: hasDisplayUnits ?
|
|
5754
|
+
children: hasDisplayUnits ? chunkG7PJSVUS_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkG7PJSVUS_js.formatAxisValue(tickVal)
|
|
5750
5755
|
},
|
|
5751
5756
|
`${id}-vaxis-log-${i}`
|
|
5752
5757
|
)
|
|
@@ -5756,7 +5761,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5756
5761
|
const steps = 4;
|
|
5757
5762
|
for (let i = 0; i <= steps; i++) {
|
|
5758
5763
|
const val = range.min + range.span * i / steps;
|
|
5759
|
-
const y =
|
|
5764
|
+
const y = chunkG7PJSVUS_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5760
5765
|
labels.push(
|
|
5761
5766
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5762
5767
|
"text",
|
|
@@ -5766,7 +5771,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5766
5771
|
textAnchor: "end",
|
|
5767
5772
|
fontSize: 8,
|
|
5768
5773
|
fill: "#64748b",
|
|
5769
|
-
children: hasDisplayUnits ?
|
|
5774
|
+
children: hasDisplayUnits ? chunkG7PJSVUS_js.formatAxisValueWithUnits(val, axisFormatting) : chunkG7PJSVUS_js.formatAxisValue(val)
|
|
5770
5775
|
},
|
|
5771
5776
|
`${id}-vaxis-${i}`
|
|
5772
5777
|
)
|
|
@@ -5774,7 +5779,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5774
5779
|
}
|
|
5775
5780
|
}
|
|
5776
5781
|
if (hasDisplayUnits) {
|
|
5777
|
-
const unitLabel =
|
|
5782
|
+
const unitLabel = chunkG7PJSVUS_js.getDisplayUnitLabel(
|
|
5778
5783
|
axisFormatting.displayUnits,
|
|
5779
5784
|
axisFormatting.displayUnitsLabel
|
|
5780
5785
|
);
|
|
@@ -5849,7 +5854,7 @@ function renderZeroLine(id, range, layout) {
|
|
|
5849
5854
|
if (range.min >= 0) {
|
|
5850
5855
|
return null;
|
|
5851
5856
|
}
|
|
5852
|
-
const y =
|
|
5857
|
+
const y = chunkG7PJSVUS_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
|
|
5853
5858
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5854
5859
|
"line",
|
|
5855
5860
|
{
|
|
@@ -5873,7 +5878,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5873
5878
|
const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
|
|
5874
5879
|
for (let i = 0; i <= steps; i++) {
|
|
5875
5880
|
const val = range.min + range.span * i / steps;
|
|
5876
|
-
const y =
|
|
5881
|
+
const y = chunkG7PJSVUS_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5877
5882
|
labels.push(
|
|
5878
5883
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5879
5884
|
"text",
|
|
@@ -5885,7 +5890,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5885
5890
|
fontFamily,
|
|
5886
5891
|
fontWeight,
|
|
5887
5892
|
fill: fontColor,
|
|
5888
|
-
children: hasDisplayUnits ?
|
|
5893
|
+
children: hasDisplayUnits ? chunkG7PJSVUS_js.formatAxisValueWithUnits(val, axisFormatting) : chunkG7PJSVUS_js.formatAxisValue(val)
|
|
5889
5894
|
},
|
|
5890
5895
|
`${id}-sec-vaxis-${i}`
|
|
5891
5896
|
)
|
|
@@ -5909,7 +5914,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5909
5914
|
);
|
|
5910
5915
|
}
|
|
5911
5916
|
if (hasDisplayUnits) {
|
|
5912
|
-
const unitLabel =
|
|
5917
|
+
const unitLabel = chunkG7PJSVUS_js.getDisplayUnitLabel(
|
|
5913
5918
|
axisFormatting.displayUnits,
|
|
5914
5919
|
axisFormatting.displayUnitsLabel
|
|
5915
5920
|
);
|
|
@@ -5940,7 +5945,7 @@ function renderSecondaryAxisTicks(id, range, layout) {
|
|
|
5940
5945
|
const ticks = [];
|
|
5941
5946
|
for (let i = 0; i <= steps; i++) {
|
|
5942
5947
|
const val = range.min + range.span * i / steps;
|
|
5943
|
-
const y =
|
|
5948
|
+
const y = chunkG7PJSVUS_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5944
5949
|
ticks.push(
|
|
5945
5950
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5946
5951
|
"line",
|
|
@@ -5967,7 +5972,7 @@ function renderSecondaryGridlines(id, range, layout, axisFormatting) {
|
|
|
5967
5972
|
const gridColor = axisFormatting.majorGridlinesSpPr?.strokeColor ?? "#e2e8f0";
|
|
5968
5973
|
for (let i = 0; i <= steps; i++) {
|
|
5969
5974
|
const val = range.min + range.span * i / steps;
|
|
5970
|
-
const y =
|
|
5975
|
+
const y = chunkG7PJSVUS_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5971
5976
|
lines.push(
|
|
5972
5977
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5973
5978
|
"line",
|
|
@@ -6129,7 +6134,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
|
|
|
6129
6134
|
width: 8,
|
|
6130
6135
|
height: 8,
|
|
6131
6136
|
borderRadius: 2,
|
|
6132
|
-
backgroundColor:
|
|
6137
|
+
backgroundColor: chunkG7PJSVUS_js.seriesColor(
|
|
6133
6138
|
s,
|
|
6134
6139
|
si,
|
|
6135
6140
|
chartData.style?.styleId,
|
|
@@ -6168,8 +6173,8 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
|
|
|
6168
6173
|
function renderStockChart(element, chartData, categoryLabels) {
|
|
6169
6174
|
const style = chartData.style;
|
|
6170
6175
|
const legendPos = style?.legendPosition || "b";
|
|
6171
|
-
const range =
|
|
6172
|
-
const layout =
|
|
6176
|
+
const range = chunkG7PJSVUS_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6177
|
+
const layout = chunkG7PJSVUS_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6173
6178
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6174
6179
|
const barGroupWidth = layout.plotWidth / catCount;
|
|
6175
6180
|
const candleWidth = barGroupWidth * 0.5;
|
|
@@ -6190,10 +6195,10 @@ function renderStockChart(element, chartData, categoryLabels) {
|
|
|
6190
6195
|
const close = closeSeries.values[ci] ?? high;
|
|
6191
6196
|
const isUp = close >= open;
|
|
6192
6197
|
const cx = layout.plotLeft + barGroupWidth * ci + barGroupWidth / 2;
|
|
6193
|
-
const highY =
|
|
6194
|
-
const lowY =
|
|
6195
|
-
const openY =
|
|
6196
|
-
const closeY =
|
|
6198
|
+
const highY = chunkG7PJSVUS_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
|
|
6199
|
+
const lowY = chunkG7PJSVUS_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
|
|
6200
|
+
const openY = chunkG7PJSVUS_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
|
|
6201
|
+
const closeY = chunkG7PJSVUS_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
|
|
6197
6202
|
elements.push(
|
|
6198
6203
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6199
6204
|
"line",
|
|
@@ -6236,7 +6241,7 @@ function renderStockChart(element, chartData, categoryLabels) {
|
|
|
6236
6241
|
textAnchor: "middle",
|
|
6237
6242
|
fontSize: 7,
|
|
6238
6243
|
fill: "#334155",
|
|
6239
|
-
children:
|
|
6244
|
+
children: chunkG7PJSVUS_js.formatAxisValue(close)
|
|
6240
6245
|
},
|
|
6241
6246
|
`${element.id}-stock-dl-${ci}`
|
|
6242
6247
|
)
|
|
@@ -6278,7 +6283,7 @@ function FailedToLoad() {
|
|
|
6278
6283
|
var LazySurfaceChart3DScene = React6__default.default.lazy(
|
|
6279
6284
|
async () => {
|
|
6280
6285
|
try {
|
|
6281
|
-
return await import('./SurfaceChart3DScene-
|
|
6286
|
+
return await import('./SurfaceChart3DScene-5TILKZMY.js');
|
|
6282
6287
|
} catch {
|
|
6283
6288
|
return { default: FailedToLoad };
|
|
6284
6289
|
}
|
|
@@ -6302,7 +6307,7 @@ var SurfaceChart3DErrorBoundary = class extends React6__default.default.Componen
|
|
|
6302
6307
|
function buildSurfaceData(chartData, categoryLabels) {
|
|
6303
6308
|
const rows = chartData.series.length;
|
|
6304
6309
|
const cols = Math.max(categoryLabels.length, 1);
|
|
6305
|
-
const range =
|
|
6310
|
+
const range = chunkG7PJSVUS_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6306
6311
|
const heightMap = new Float32Array(rows * cols);
|
|
6307
6312
|
const colorMap = new Float32Array(rows * cols * 3);
|
|
6308
6313
|
for (let r = 0; r < rows; r++) {
|
|
@@ -6422,8 +6427,8 @@ function darkenRgb(r, g, b, factor) {
|
|
|
6422
6427
|
function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
|
|
6423
6428
|
const style = chartData.style;
|
|
6424
6429
|
const legendPos = style?.legendPosition || "b";
|
|
6425
|
-
const layout =
|
|
6426
|
-
const range =
|
|
6430
|
+
const layout = chunkG7PJSVUS_js.computeLayout(element.width, element.height, style, false, legendPos);
|
|
6431
|
+
const range = chunkG7PJSVUS_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6427
6432
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6428
6433
|
const seriesCount = chartData.series.length;
|
|
6429
6434
|
const cols = catCount - 1;
|
|
@@ -6513,8 +6518,8 @@ function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
|
|
|
6513
6518
|
function renderFlatSurfaceChart(element, chartData, categoryLabels) {
|
|
6514
6519
|
const style = chartData.style;
|
|
6515
6520
|
const legendPos = style?.legendPosition || "b";
|
|
6516
|
-
const layout =
|
|
6517
|
-
const range =
|
|
6521
|
+
const layout = chunkG7PJSVUS_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6522
|
+
const range = chunkG7PJSVUS_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6518
6523
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6519
6524
|
const seriesCount = chartData.series.length;
|
|
6520
6525
|
const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
|
|
@@ -6577,7 +6582,7 @@ function renderSurfaceChart(element, chartData, categoryLabels) {
|
|
|
6577
6582
|
function renderTreemapChart(element, chartData, categoryLabels) {
|
|
6578
6583
|
const style = chartData.style;
|
|
6579
6584
|
const legendPos = style?.legendPosition || "b";
|
|
6580
|
-
const layout =
|
|
6585
|
+
const layout = chunkG7PJSVUS_js.computeLayout(element.width, element.height, style, false, legendPos);
|
|
6581
6586
|
const allValues = chartData.series.flatMap((s) => s.values);
|
|
6582
6587
|
const totalAbs = allValues.reduce((sum, v) => sum + Math.abs(v), 0) || 1;
|
|
6583
6588
|
const rects = [];
|
|
@@ -6600,7 +6605,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
|
|
|
6600
6605
|
y: curY,
|
|
6601
6606
|
width: Math.max(w - 1, 1),
|
|
6602
6607
|
height: Math.max(h - 1, 1),
|
|
6603
|
-
fill:
|
|
6608
|
+
fill: chunkG7PJSVUS_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
|
|
6604
6609
|
rx: 2,
|
|
6605
6610
|
opacity: 0.85
|
|
6606
6611
|
},
|
|
@@ -6653,8 +6658,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6653
6658
|
const style = chartData.style;
|
|
6654
6659
|
const legendPos = style?.legendPosition || "b";
|
|
6655
6660
|
const values = chartData.series[0]?.values ?? [];
|
|
6656
|
-
const range =
|
|
6657
|
-
const layout =
|
|
6661
|
+
const range = chunkG7PJSVUS_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6662
|
+
const layout = chunkG7PJSVUS_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6658
6663
|
const catCount = Math.max(categoryLabels.length, values.length, 1);
|
|
6659
6664
|
const barWidth = layout.plotWidth / catCount * 0.6;
|
|
6660
6665
|
const gap = layout.plotWidth / catCount * 0.2;
|
|
@@ -6665,8 +6670,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6665
6670
|
const isLast = i === values.length - 1;
|
|
6666
6671
|
const startVal = isLast ? 0 : runningTotal;
|
|
6667
6672
|
const endVal = isLast ? runningTotal + val : runningTotal + val;
|
|
6668
|
-
const barStartY =
|
|
6669
|
-
const barEndY =
|
|
6673
|
+
const barStartY = chunkG7PJSVUS_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
|
|
6674
|
+
const barEndY = chunkG7PJSVUS_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
|
|
6670
6675
|
const x = layout.plotLeft + layout.plotWidth / catCount * i + gap;
|
|
6671
6676
|
const y = Math.min(barStartY, barEndY);
|
|
6672
6677
|
const h = Math.max(Math.abs(barEndY - barStartY), 1);
|
|
@@ -6695,7 +6700,7 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6695
6700
|
textAnchor: "middle",
|
|
6696
6701
|
fontSize: 7,
|
|
6697
6702
|
fill: "#334155",
|
|
6698
|
-
children:
|
|
6703
|
+
children: chunkG7PJSVUS_js.formatAxisValue(isLast ? endVal : val)
|
|
6699
6704
|
},
|
|
6700
6705
|
`${element.id}-wf-dl-${i}`
|
|
6701
6706
|
)
|
|
@@ -6743,18 +6748,18 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6743
6748
|
function renderComboChart(element, chartData, categoryLabels) {
|
|
6744
6749
|
const style = chartData.style;
|
|
6745
6750
|
const legendPos = style?.legendPosition || "b";
|
|
6746
|
-
const layoutOpts =
|
|
6751
|
+
const layoutOpts = chunkG7PJSVUS_js.computeLayoutOptions(
|
|
6747
6752
|
chartData.axes,
|
|
6748
6753
|
chartData.dataTable,
|
|
6749
6754
|
chartData.series.length
|
|
6750
6755
|
);
|
|
6751
|
-
const layout =
|
|
6752
|
-
const { primary, secondary } =
|
|
6756
|
+
const layout = chunkG7PJSVUS_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
|
|
6757
|
+
const { primary, secondary } = chunkG7PJSVUS_js.splitSeriesByAxis(chartData.series, chartData.axes);
|
|
6753
6758
|
const primarySeries = primary.length > 0 ? primary.map((e) => e.series) : chartData.series;
|
|
6754
6759
|
const secondarySeries = secondary.map((e) => e.series);
|
|
6755
|
-
const range =
|
|
6756
|
-
const secondaryRange = secondarySeries.length > 0 ?
|
|
6757
|
-
const secondaryAxisFmt =
|
|
6760
|
+
const range = chunkG7PJSVUS_js.computeValueRangeForChart(primarySeries, chartData.axes);
|
|
6761
|
+
const secondaryRange = secondarySeries.length > 0 ? chunkG7PJSVUS_js.computeValueRange(secondarySeries) : void 0;
|
|
6762
|
+
const secondaryAxisFmt = chunkG7PJSVUS_js.getSecondaryValueAxis(chartData.axes);
|
|
6758
6763
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6759
6764
|
const barSeriesCount = 1;
|
|
6760
6765
|
const barGroupWidth = layout.plotWidth / catCount;
|
|
@@ -6770,8 +6775,8 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6770
6775
|
const barRange = isBarSecondary && secondaryRange ? secondaryRange : range;
|
|
6771
6776
|
barSeries.values.forEach((val, vi) => {
|
|
6772
6777
|
const x = layout.plotLeft + barGroupWidth * vi + barOffset;
|
|
6773
|
-
const zeroY =
|
|
6774
|
-
const valY =
|
|
6778
|
+
const zeroY = chunkG7PJSVUS_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
|
|
6779
|
+
const valY = chunkG7PJSVUS_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
|
|
6775
6780
|
const y = Math.min(zeroY, valY);
|
|
6776
6781
|
const h = Math.max(Math.abs(zeroY - valY), 1);
|
|
6777
6782
|
barElements.push(
|
|
@@ -6782,7 +6787,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6782
6787
|
y,
|
|
6783
6788
|
width: barWidth,
|
|
6784
6789
|
height: h,
|
|
6785
|
-
fill:
|
|
6790
|
+
fill: chunkG7PJSVUS_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
|
|
6786
6791
|
rx: 1
|
|
6787
6792
|
},
|
|
6788
6793
|
`${element.id}-combo-bar-${vi}`
|
|
@@ -6798,7 +6803,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6798
6803
|
textAnchor: "middle",
|
|
6799
6804
|
fontSize: 7,
|
|
6800
6805
|
fill: "#334155",
|
|
6801
|
-
children:
|
|
6806
|
+
children: chunkG7PJSVUS_js.formatAxisValue(val)
|
|
6802
6807
|
},
|
|
6803
6808
|
`${element.id}-combo-bar-dl-${vi}`
|
|
6804
6809
|
)
|
|
@@ -6815,10 +6820,10 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6815
6820
|
const activeRange = isSecondary && secondaryRange ? secondaryRange : range;
|
|
6816
6821
|
const points = series.values.map((val, vi) => {
|
|
6817
6822
|
const x = layout.plotLeft + barGroupWidth * vi + barGroupWidth / 2;
|
|
6818
|
-
const y =
|
|
6823
|
+
const y = chunkG7PJSVUS_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
|
|
6819
6824
|
return { x, y, val };
|
|
6820
6825
|
});
|
|
6821
|
-
const c =
|
|
6826
|
+
const c = chunkG7PJSVUS_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
|
|
6822
6827
|
lineElements.push(
|
|
6823
6828
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6824
6829
|
"polyline",
|
|
@@ -6845,7 +6850,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6845
6850
|
textAnchor: "middle",
|
|
6846
6851
|
fontSize: 7,
|
|
6847
6852
|
fill: "#334155",
|
|
6848
|
-
children:
|
|
6853
|
+
children: chunkG7PJSVUS_js.formatAxisValue(p.val)
|
|
6849
6854
|
},
|
|
6850
6855
|
`${element.id}-combo-line-dl-${si}-${vi}`
|
|
6851
6856
|
)
|
|
@@ -7991,14 +7996,14 @@ function buildNotesPdf(pages) {
|
|
|
7991
7996
|
notes: page.notes,
|
|
7992
7997
|
slideNumber: page.slideNumber
|
|
7993
7998
|
}));
|
|
7994
|
-
const bytes =
|
|
7999
|
+
const bytes = chunkG7PJSVUS_js.buildNotesPdfBytes(images, meta);
|
|
7995
8000
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
7996
8001
|
return URL.createObjectURL(blob);
|
|
7997
8002
|
}
|
|
7998
8003
|
|
|
7999
8004
|
// src/viewer/utils/pdf-builder-slides.ts
|
|
8000
8005
|
function buildPdfFromImageData(images) {
|
|
8001
|
-
const bytes =
|
|
8006
|
+
const bytes = chunkG7PJSVUS_js.buildSlidesPdfBytes(images);
|
|
8002
8007
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
8003
8008
|
return URL.createObjectURL(blob);
|
|
8004
8009
|
}
|
|
@@ -8007,7 +8012,7 @@ function buildPdfFromImageData(images) {
|
|
|
8007
8012
|
var activePreview = null;
|
|
8008
8013
|
function startPreviewAnimation(elementId, preset, options) {
|
|
8009
8014
|
stopPreviewAnimation();
|
|
8010
|
-
const descriptor =
|
|
8015
|
+
const descriptor = chunkG7PJSVUS_js.buildPreviewAnimation(preset, options);
|
|
8011
8016
|
if (!descriptor) {
|
|
8012
8017
|
return;
|
|
8013
8018
|
}
|