pptx-react-viewer 2.6.2 → 2.6.4
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-5IAXQYGH.mjs → AiChatPanel-5JEL2M7L.mjs} +3 -3
- package/dist/AiChatPanel-5JEL2M7L.mjs.br +0 -0
- package/dist/AiChatPanel-5JEL2M7L.mjs.gz +0 -0
- package/dist/{AiChatPanel-IC2Q3H3N.js → AiChatPanel-GMP3TU7S.js} +22 -22
- package/dist/AiChatPanel-GMP3TU7S.js.br +0 -0
- package/dist/AiChatPanel-GMP3TU7S.js.gz +0 -0
- package/dist/{Model3DScene-GOFY2PQS.js → Model3DScene-E4WWASL7.js} +2 -2
- package/dist/Model3DScene-E4WWASL7.js.br +0 -0
- package/dist/Model3DScene-E4WWASL7.js.gz +0 -0
- package/dist/{Model3DScene-UEU7L4QY.mjs → Model3DScene-LPA4HGFY.mjs} +1 -1
- package/dist/Model3DScene-LPA4HGFY.mjs.br +0 -0
- package/dist/Model3DScene-LPA4HGFY.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-5TILKZMY.js → SurfaceChart3DScene-EOJ6FO7H.js} +2 -2
- package/dist/SurfaceChart3DScene-EOJ6FO7H.js.br +0 -0
- package/dist/SurfaceChart3DScene-EOJ6FO7H.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-KCJUDJUK.mjs → SurfaceChart3DScene-JT64KYVP.mjs} +1 -1
- package/dist/{SurfaceChart3DScene-KCJUDJUK.mjs.br → SurfaceChart3DScene-JT64KYVP.mjs.br} +0 -0
- package/dist/SurfaceChart3DScene-JT64KYVP.mjs.gz +0 -0
- package/dist/{chunk-UV5R7IQY.mjs → chunk-A3WQ6JDW.mjs} +2 -2
- package/dist/chunk-A3WQ6JDW.mjs.br +0 -0
- package/dist/chunk-A3WQ6JDW.mjs.gz +0 -0
- package/dist/{chunk-W27U3GQS.js → chunk-CZPAFVPN.js} +323 -317
- package/dist/chunk-CZPAFVPN.js.br +0 -0
- package/dist/chunk-CZPAFVPN.js.gz +0 -0
- package/dist/{chunk-IGYK3NK5.js → chunk-D754TQ4S.js} +3 -3
- package/dist/chunk-D754TQ4S.js.br +0 -0
- package/dist/{chunk-IGYK3NK5.js.gz → chunk-D754TQ4S.js.gz} +0 -0
- package/dist/{chunk-Y6H2RSLB.mjs → chunk-GMW7VRFD.mjs} +38 -19
- package/dist/chunk-GMW7VRFD.mjs.br +0 -0
- package/dist/{chunk-Y6H2RSLB.mjs.gz → chunk-GMW7VRFD.mjs.gz} +0 -0
- package/dist/{chunk-Y4TIW2MM.mjs → chunk-HHUBO5OD.mjs} +1 -1
- package/dist/chunk-HHUBO5OD.mjs.br +0 -0
- package/dist/chunk-HHUBO5OD.mjs.gz +0 -0
- package/dist/{chunk-TMU7Z3CU.js → chunk-K26WJWSH.js} +850 -851
- package/dist/chunk-K26WJWSH.js.br +0 -0
- package/dist/chunk-K26WJWSH.js.gz +0 -0
- package/dist/{chunk-MQYNBEOY.mjs → chunk-MVXW7BHH.mjs} +10 -4
- package/dist/chunk-MVXW7BHH.mjs.br +0 -0
- package/dist/chunk-MVXW7BHH.mjs.gz +0 -0
- package/dist/{chunk-XROVGBFQ.js → chunk-NZYSI3BL.js} +236 -236
- package/dist/chunk-NZYSI3BL.js.br +0 -0
- package/dist/chunk-NZYSI3BL.js.gz +0 -0
- package/dist/{chunk-LJPRMPNA.mjs → chunk-PQDHPMQG.mjs} +14 -15
- package/dist/chunk-PQDHPMQG.mjs.br +0 -0
- package/dist/chunk-PQDHPMQG.mjs.gz +0 -0
- package/dist/{chunk-G7PJSVUS.js → chunk-Z2ZC5QTJ.js} +38 -19
- package/dist/chunk-Z2ZC5QTJ.js.br +0 -0
- package/dist/{chunk-G7PJSVUS.js.gz → chunk-Z2ZC5QTJ.js.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.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-5IAXQYGH.mjs.br +0 -0
- package/dist/AiChatPanel-5IAXQYGH.mjs.gz +0 -0
- package/dist/AiChatPanel-IC2Q3H3N.js.br +0 -0
- package/dist/AiChatPanel-IC2Q3H3N.js.gz +0 -0
- package/dist/Model3DScene-GOFY2PQS.js.br +0 -0
- package/dist/Model3DScene-GOFY2PQS.js.gz +0 -0
- package/dist/Model3DScene-UEU7L4QY.mjs.br +0 -0
- package/dist/Model3DScene-UEU7L4QY.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-5TILKZMY.js.br +0 -0
- package/dist/SurfaceChart3DScene-5TILKZMY.js.gz +0 -0
- package/dist/SurfaceChart3DScene-KCJUDJUK.mjs.gz +0 -0
- package/dist/chunk-G7PJSVUS.js.br +0 -0
- package/dist/chunk-IGYK3NK5.js.br +0 -0
- package/dist/chunk-LJPRMPNA.mjs.br +0 -0
- package/dist/chunk-LJPRMPNA.mjs.gz +0 -0
- package/dist/chunk-MQYNBEOY.mjs.br +0 -0
- package/dist/chunk-MQYNBEOY.mjs.gz +0 -0
- package/dist/chunk-TMU7Z3CU.js.br +0 -0
- package/dist/chunk-TMU7Z3CU.js.gz +0 -0
- package/dist/chunk-UV5R7IQY.mjs.br +0 -0
- package/dist/chunk-UV5R7IQY.mjs.gz +0 -0
- package/dist/chunk-W27U3GQS.js.br +0 -0
- package/dist/chunk-W27U3GQS.js.gz +0 -0
- package/dist/chunk-XROVGBFQ.js.br +0 -0
- package/dist/chunk-XROVGBFQ.js.gz +0 -0
- package/dist/chunk-Y4TIW2MM.mjs.br +0 -0
- package/dist/chunk-Y4TIW2MM.mjs.gz +0 -0
- package/dist/chunk-Y6H2RSLB.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 chunkZ2ZC5QTJ_js = require('./chunk-Z2ZC5QTJ.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 chunkZ2ZC5QTJ_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 chunkZ2ZC5QTJ_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 = chunkZ2ZC5QTJ_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 (!chunkZ2ZC5QTJ_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) => chunkZ2ZC5QTJ_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) => !chunkZ2ZC5QTJ_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 (!chunkZ2ZC5QTJ_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 = chunkZ2ZC5QTJ_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 = chunkZ2ZC5QTJ_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 (!chunkZ2ZC5QTJ_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 = chunkZ2ZC5QTJ_js.clampCropValue(element.cropLeft);
|
|
324
|
+
const cropTop = chunkZ2ZC5QTJ_js.clampCropValue(element.cropTop);
|
|
325
|
+
const cropRight = chunkZ2ZC5QTJ_js.clampCropValue(element.cropRight);
|
|
326
|
+
const cropBottom = chunkZ2ZC5QTJ_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 = chunkZ2ZC5QTJ_js.clampCropValue(cropLeft * safeHorizontalScale);
|
|
339
|
+
const normalizedRight = chunkZ2ZC5QTJ_js.clampCropValue(cropRight * safeHorizontalScale);
|
|
340
|
+
const normalizedTop = chunkZ2ZC5QTJ_js.clampCropValue(cropTop * safeVerticalScale);
|
|
341
|
+
const normalizedBottom = chunkZ2ZC5QTJ_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 (!chunkZ2ZC5QTJ_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 (!chunkZ2ZC5QTJ_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 (!chunkZ2ZC5QTJ_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 = chunkZ2ZC5QTJ_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 (!chunkZ2ZC5QTJ_js.hasTextProperties(element)) {
|
|
1175
1175
|
return { color: fallbackColor };
|
|
1176
1176
|
}
|
|
1177
1177
|
const textDecorationTokens = [];
|
|
@@ -1185,7 +1185,7 @@ 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 ? chunkZ2ZC5QTJ_js.normalizeHexColor(element.textStyle?.color, HYPERLINK_COLOR) : chunkZ2ZC5QTJ_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;
|
|
@@ -1194,15 +1194,15 @@ function getTextStyleForElement(element, fallbackColor) {
|
|
|
1194
1194
|
const bodyIndent = hasParagraphIndents ? 0 : element.textStyle?.paragraphIndent || 0;
|
|
1195
1195
|
const bodyMarginLeft = hasParagraphIndents ? 0 : element.textStyle?.paragraphMarginLeft || 0;
|
|
1196
1196
|
const bodyMarginRight = hasParagraphIndents ? 0 : element.textStyle?.paragraphMarginRight || 0;
|
|
1197
|
-
const writingMode =
|
|
1198
|
-
const textOrientation =
|
|
1199
|
-
const verticalDirection =
|
|
1197
|
+
const writingMode = chunkZ2ZC5QTJ_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
1198
|
+
const textOrientation = chunkZ2ZC5QTJ_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
1199
|
+
const verticalDirection = chunkZ2ZC5QTJ_js.toCssVerticalDirection(element.textStyle?.textDirection);
|
|
1200
1200
|
const resolvedDirection = verticalDirection || (isRtl ? "rtl" : "ltr");
|
|
1201
1201
|
const resolvedUnicodeBidi = isRtl ? "plaintext" : void 0;
|
|
1202
1202
|
const hasSegments = (element.textSegments?.length ?? 0) > 0;
|
|
1203
1203
|
return {
|
|
1204
1204
|
color: resolvedTextColor,
|
|
1205
|
-
backgroundColor: !hasSegments && element.textStyle?.highlightColor ?
|
|
1205
|
+
backgroundColor: !hasSegments && element.textStyle?.highlightColor ? chunkZ2ZC5QTJ_js.normalizeHexColor(element.textStyle.highlightColor, void 0) : void 0,
|
|
1206
1206
|
textAlign: (() => {
|
|
1207
1207
|
const a = element.textStyle?.align;
|
|
1208
1208
|
if (a === "justLow" || a === "dist" || a === "thaiDist") {
|
|
@@ -1218,7 +1218,7 @@ function getTextStyleForElement(element, fallbackColor) {
|
|
|
1218
1218
|
textDecorationLine: textDecorationTokens.length > 0 ? textDecorationTokens.join(" ") : "none",
|
|
1219
1219
|
textDecorationStyle,
|
|
1220
1220
|
fontFamily: element.textStyle?.fontFamily || DEFAULT_FONT_FAMILY,
|
|
1221
|
-
lineHeight:
|
|
1221
|
+
lineHeight: chunkZ2ZC5QTJ_js.resolveLineHeight(element.textStyle, hasItalicRuns),
|
|
1222
1222
|
paddingTop: bodyTop + (hasItalicRuns ? 1 : 0),
|
|
1223
1223
|
paddingBottom: bodyBottom + (hasItalicRuns ? 1 : 0),
|
|
1224
1224
|
paddingLeft: bodyLeft + bodyMarginLeft,
|
|
@@ -1231,7 +1231,7 @@ function getTextStyleForElement(element, fallbackColor) {
|
|
|
1231
1231
|
// Auto-fit: use OOXML-provided fontScale/lnSpcReduction when available,
|
|
1232
1232
|
// otherwise fall back to heuristic estimation. The pure font-scale maths
|
|
1233
1233
|
// now lives in pptx-viewer-shared (computeAutoFitTextStyle).
|
|
1234
|
-
...
|
|
1234
|
+
...chunkZ2ZC5QTJ_js.computeAutoFitTextStyle({
|
|
1235
1235
|
textStyle: element.textStyle,
|
|
1236
1236
|
text: element.text ?? "",
|
|
1237
1237
|
width: element.width,
|
|
@@ -1265,13 +1265,13 @@ function computeTabSize(tabStops, defaultTabSize) {
|
|
|
1265
1265
|
return avgGap > 0 ? `${Math.round(avgGap)}px` : fromDefault;
|
|
1266
1266
|
}
|
|
1267
1267
|
function getTextLayoutStyle(element) {
|
|
1268
|
-
if (!
|
|
1268
|
+
if (!chunkZ2ZC5QTJ_js.hasTextProperties(element)) {
|
|
1269
1269
|
return {};
|
|
1270
1270
|
}
|
|
1271
1271
|
const verticalAlign = element.textStyle?.vAlign || "top";
|
|
1272
|
-
const writingMode =
|
|
1273
|
-
const textOrientation =
|
|
1274
|
-
const verticalDirection =
|
|
1272
|
+
const writingMode = chunkZ2ZC5QTJ_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
1273
|
+
const textOrientation = chunkZ2ZC5QTJ_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
1274
|
+
const verticalDirection = chunkZ2ZC5QTJ_js.toCssVerticalDirection(element.textStyle?.textDirection);
|
|
1275
1275
|
const parsedColumnCount = Number(element.textStyle?.columnCount);
|
|
1276
1276
|
const columnCount = Number.isFinite(parsedColumnCount) ? Math.max(1, Math.min(16, Math.round(parsedColumnCount))) : 1;
|
|
1277
1277
|
const hasColumns = columnCount > 1;
|
|
@@ -1279,7 +1279,7 @@ function getTextLayoutStyle(element) {
|
|
|
1279
1279
|
const tabStops = element.textStyle?.tabStops;
|
|
1280
1280
|
const tabSize = computeTabSize(tabStops, element.textStyle?.defaultTabSize);
|
|
1281
1281
|
const textWrapNone = element.textStyle?.textWrap === "none";
|
|
1282
|
-
const hasParagraphIndents =
|
|
1282
|
+
const hasParagraphIndents = chunkZ2ZC5QTJ_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
|
|
1283
1283
|
const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
|
|
1284
1284
|
const paragraphIndent = element.textStyle?.paragraphIndent;
|
|
1285
1285
|
const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
|
|
@@ -1288,7 +1288,7 @@ function getTextLayoutStyle(element) {
|
|
|
1288
1288
|
const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
|
|
1289
1289
|
const parsedColumnSpacing = Number(element.textStyle?.columnSpacing);
|
|
1290
1290
|
const columnGap = Number.isFinite(parsedColumnSpacing) && parsedColumnSpacing > 0 ? `${parsedColumnSpacing}px` : "0.75em";
|
|
1291
|
-
const kinsokuStyles =
|
|
1291
|
+
const kinsokuStyles = chunkZ2ZC5QTJ_js.getKinsokuLineBreakStyles(element.textStyle);
|
|
1292
1292
|
if (hasColumns) {
|
|
1293
1293
|
return {
|
|
1294
1294
|
display: "block",
|
|
@@ -1335,10 +1335,10 @@ function getTextLayoutStyle(element) {
|
|
|
1335
1335
|
|
|
1336
1336
|
// src/viewer/utils/text-effects.tsx
|
|
1337
1337
|
function buildTextFillCss2(style) {
|
|
1338
|
-
return
|
|
1338
|
+
return chunkZ2ZC5QTJ_js.buildTextFillCss(style);
|
|
1339
1339
|
}
|
|
1340
1340
|
function buildTextBody3DSceneStyle2(textStyle) {
|
|
1341
|
-
return
|
|
1341
|
+
return chunkZ2ZC5QTJ_js.buildTextBody3DSceneStyle(textStyle);
|
|
1342
1342
|
}
|
|
1343
1343
|
|
|
1344
1344
|
// src/viewer/utils/text-warp-css.tsx
|
|
@@ -1523,13 +1523,13 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1523
1523
|
if (!subElementAnimStates || subElementAnimStates.size === 0) {
|
|
1524
1524
|
return renderedSegments;
|
|
1525
1525
|
}
|
|
1526
|
-
const paraKey = `${elementId}${
|
|
1526
|
+
const paraKey = `${elementId}${chunkZ2ZC5QTJ_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
|
|
1527
1527
|
const paraState = subElementAnimStates.get(paraKey);
|
|
1528
1528
|
if (paraState) {
|
|
1529
1529
|
const style = buildAnimStyle(paraState);
|
|
1530
1530
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
|
|
1531
1531
|
}
|
|
1532
|
-
const spec =
|
|
1532
|
+
const spec = chunkZ2ZC5QTJ_js.buildTextBuildSpec(
|
|
1533
1533
|
elementId,
|
|
1534
1534
|
paraIndex,
|
|
1535
1535
|
paraSegments.map((entry) => ({ text: entry.segment.text, style: entry })),
|
|
@@ -1547,7 +1547,7 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1547
1547
|
"span",
|
|
1548
1548
|
{
|
|
1549
1549
|
"data-anim-id": span.animId,
|
|
1550
|
-
style:
|
|
1550
|
+
style: chunkZ2ZC5QTJ_js.textBuildSpanStyle(span),
|
|
1551
1551
|
children: content
|
|
1552
1552
|
},
|
|
1553
1553
|
span.animId
|
|
@@ -1691,10 +1691,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1691
1691
|
if (!needsScriptFonts || !text) {
|
|
1692
1692
|
return text;
|
|
1693
1693
|
}
|
|
1694
|
-
const runs =
|
|
1694
|
+
const runs = chunkZ2ZC5QTJ_js.segmentByScript(text);
|
|
1695
1695
|
if (runs.length <= 1) {
|
|
1696
1696
|
if (runs.length === 1) {
|
|
1697
|
-
const font =
|
|
1697
|
+
const font = chunkZ2ZC5QTJ_js.resolveFontForScript(runs[0].script, scriptFonts);
|
|
1698
1698
|
if (font && font !== baseFontFamily) {
|
|
1699
1699
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontFamily: font }, children: text });
|
|
1700
1700
|
}
|
|
@@ -1702,7 +1702,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1702
1702
|
return text;
|
|
1703
1703
|
}
|
|
1704
1704
|
return runs.map((run, i) => {
|
|
1705
|
-
const font =
|
|
1705
|
+
const font = chunkZ2ZC5QTJ_js.resolveFontForScript(run.script, scriptFonts);
|
|
1706
1706
|
if (!font || font === baseFontFamily) {
|
|
1707
1707
|
return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
|
|
1708
1708
|
}
|
|
@@ -1774,8 +1774,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
|
|
|
1774
1774
|
);
|
|
1775
1775
|
}
|
|
1776
1776
|
function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
|
|
1777
|
-
const mathml =
|
|
1778
|
-
const safeMathml = mathml ?
|
|
1777
|
+
const mathml = chunkZ2ZC5QTJ_js.convertOmmlToMathMl(equationXml);
|
|
1778
|
+
const safeMathml = mathml ? chunkZ2ZC5QTJ_js.sanitizeMathMl(mathml) : "";
|
|
1779
1779
|
const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1780
1780
|
"span",
|
|
1781
1781
|
{
|
|
@@ -1825,7 +1825,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
|
|
|
1825
1825
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
|
|
1826
1826
|
}
|
|
1827
1827
|
function renderPictureBullet(elementId, segmentIndex, bulletInfo, baseFontSize) {
|
|
1828
|
-
const picture =
|
|
1828
|
+
const picture = chunkZ2ZC5QTJ_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
|
|
1829
1829
|
sizePx: baseFontSize,
|
|
1830
1830
|
fallbackMarker: "\u2022",
|
|
1831
1831
|
accessibleLabel: "Bullet"
|
|
@@ -1875,7 +1875,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1875
1875
|
);
|
|
1876
1876
|
}
|
|
1877
1877
|
const segmentStyle = segment.style || {};
|
|
1878
|
-
const textValue =
|
|
1878
|
+
const textValue = chunkZ2ZC5QTJ_js.substituteFieldText(segment.text || "", segment.fieldType, fieldContext);
|
|
1879
1879
|
const lines = textValue.split("\n");
|
|
1880
1880
|
const textDecorationTokens = [];
|
|
1881
1881
|
if (segmentStyle.underline || segmentStyle.hyperlink) {
|
|
@@ -1885,8 +1885,8 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1885
1885
|
textDecorationTokens.push("line-through");
|
|
1886
1886
|
}
|
|
1887
1887
|
const isDoubleStrike = segmentStyle.strikethrough && segmentStyle.strikeType === "dblStrike";
|
|
1888
|
-
const resolvedSegmentColor = segmentStyle.hyperlink ?
|
|
1889
|
-
const underlineDecoration =
|
|
1888
|
+
const resolvedSegmentColor = segmentStyle.hyperlink ? chunkZ2ZC5QTJ_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkZ2ZC5QTJ_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
|
|
1889
|
+
const underlineDecoration = chunkZ2ZC5QTJ_js.resolveUnderlineDecorationStyle(
|
|
1890
1890
|
Boolean(isDoubleStrike),
|
|
1891
1891
|
segmentStyle.underlineStyle
|
|
1892
1892
|
);
|
|
@@ -1902,14 +1902,14 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1902
1902
|
const baseFontSizePt = baseFontSize * (72 / 96);
|
|
1903
1903
|
const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
|
|
1904
1904
|
const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
|
|
1905
|
-
const baseFontFamily = rawFontFamily ?
|
|
1905
|
+
const baseFontFamily = rawFontFamily ? chunkZ2ZC5QTJ_js.getSubstituteFontFamily(rawFontFamily) : DEFAULT_FONT_FAMILY;
|
|
1906
1906
|
const scriptFonts = {
|
|
1907
1907
|
latin: baseFontFamily,
|
|
1908
1908
|
eastAsia: segmentStyle.eastAsiaFont || element.textStyle?.eastAsiaFont || baseFontFamily,
|
|
1909
1909
|
complexScript: segmentStyle.complexScriptFont || element.textStyle?.complexScriptFont || baseFontFamily,
|
|
1910
1910
|
symbol: segmentStyle.symbolFont || element.textStyle?.symbolFont || baseFontFamily
|
|
1911
1911
|
};
|
|
1912
|
-
const needsScriptFonts =
|
|
1912
|
+
const needsScriptFonts = chunkZ2ZC5QTJ_js.hasDistinctScriptFonts(scriptFonts);
|
|
1913
1913
|
const spanStyle = {
|
|
1914
1914
|
color: resolvedSegmentColor,
|
|
1915
1915
|
fontSize: baseFontSize * baselineFontScale,
|
|
@@ -1927,15 +1927,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1927
1927
|
fontVariantCaps: segmentStyle.textCaps === "small" ? "small-caps" : void 0,
|
|
1928
1928
|
letterSpacing,
|
|
1929
1929
|
fontKerning,
|
|
1930
|
-
backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ?
|
|
1930
|
+
backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkZ2ZC5QTJ_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
|
|
1931
1931
|
...textFillStyles,
|
|
1932
|
-
textDecorationColor: segmentStyle.underlineColor ?
|
|
1933
|
-
WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${
|
|
1932
|
+
textDecorationColor: segmentStyle.underlineColor ? chunkZ2ZC5QTJ_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
|
|
1933
|
+
WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkZ2ZC5QTJ_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
|
|
1934
1934
|
paintOrder: segmentStyle.textOutlineWidth ? "stroke fill" : void 0,
|
|
1935
|
-
textShadow:
|
|
1936
|
-
filter:
|
|
1937
|
-
opacity:
|
|
1938
|
-
WebkitBoxReflect:
|
|
1935
|
+
textShadow: chunkZ2ZC5QTJ_js.buildTextShadowCss(segmentStyle),
|
|
1936
|
+
filter: chunkZ2ZC5QTJ_js.buildTextRunFilterChain(segmentStyle),
|
|
1937
|
+
opacity: chunkZ2ZC5QTJ_js.getTextAlphaOpacity(segmentStyle),
|
|
1938
|
+
WebkitBoxReflect: chunkZ2ZC5QTJ_js.buildTextReflectionCss(segmentStyle)
|
|
1939
1939
|
};
|
|
1940
1940
|
const runRtl = segmentStyle.rtl;
|
|
1941
1941
|
if (runRtl !== void 0 && runRtl !== paragraphRtl) {
|
|
@@ -1955,7 +1955,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1955
1955
|
spanStyle.fontSize = baseFontSize * (bulletInfo.sizePercent / 100) * baselineFontScale;
|
|
1956
1956
|
}
|
|
1957
1957
|
if (bulletInfo.color) {
|
|
1958
|
-
spanStyle.color =
|
|
1958
|
+
spanStyle.color = chunkZ2ZC5QTJ_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
|
|
1959
1959
|
}
|
|
1960
1960
|
}
|
|
1961
1961
|
if (bulletInfo?.imageDataUrl || bulletInfo?.imageRelId) {
|
|
@@ -1995,7 +1995,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1995
1995
|
textAlign: segment.rubyAlignment === "l" ? "left" : segment.rubyAlignment === "r" ? "right" : segment.rubyAlignment === "dist" || segment.rubyAlignment === "distCat" || segment.rubyAlignment === "distLetter" ? "justify" : "center"
|
|
1996
1996
|
};
|
|
1997
1997
|
if (segment.rubyStyle?.color) {
|
|
1998
|
-
rubyStyle.color =
|
|
1998
|
+
rubyStyle.color = chunkZ2ZC5QTJ_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
|
|
1999
1999
|
}
|
|
2000
2000
|
innerContent = /* @__PURE__ */ jsxRuntime.jsxs("ruby", { children: [
|
|
2001
2001
|
baseContent,
|
|
@@ -2090,7 +2090,7 @@ function groupSegmentsIntoParagraphs(segments) {
|
|
|
2090
2090
|
return paragraphs;
|
|
2091
2091
|
}
|
|
2092
2092
|
function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
|
|
2093
|
-
if (!
|
|
2093
|
+
if (!chunkZ2ZC5QTJ_js.hasTextProperties(element)) {
|
|
2094
2094
|
return emptyFallback || null;
|
|
2095
2095
|
}
|
|
2096
2096
|
const effectiveSegments = segmentOverrides ?? element.textSegments;
|
|
@@ -2111,10 +2111,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
2111
2111
|
return element.text || emptyFallback || "";
|
|
2112
2112
|
}
|
|
2113
2113
|
const paragraphs = groupSegmentsIntoParagraphs(effectiveSegments);
|
|
2114
|
-
const paragraphIndents =
|
|
2115
|
-
const elementRtl =
|
|
2116
|
-
const elementAlign =
|
|
2117
|
-
const bodyStyle =
|
|
2114
|
+
const paragraphIndents = chunkZ2ZC5QTJ_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
|
|
2115
|
+
const elementRtl = chunkZ2ZC5QTJ_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
|
|
2116
|
+
const elementAlign = chunkZ2ZC5QTJ_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
|
|
2117
|
+
const bodyStyle = chunkZ2ZC5QTJ_js.hasTextProperties(element) ? element.textStyle : void 0;
|
|
2118
2118
|
const spaceFirstLast = bodyStyle?.spaceFirstLastParagraph !== false;
|
|
2119
2119
|
return paragraphs.map((paraSegments, paraIndex) => {
|
|
2120
2120
|
const paraIndent = paragraphIndents?.[paraIndex];
|
|
@@ -2129,14 +2129,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
2129
2129
|
return Boolean(segment.text) && segment.text.trim().length > 0;
|
|
2130
2130
|
});
|
|
2131
2131
|
const hasBullet = bulletInfo && !bulletInfo.none && hasVisibleTextContent;
|
|
2132
|
-
const paraRtl =
|
|
2132
|
+
const paraRtl = chunkZ2ZC5QTJ_js.resolveParagraphRtl(paraSegments, elementRtl);
|
|
2133
2133
|
const isRtlParagraph = paraRtl === true;
|
|
2134
|
-
const paraAlign =
|
|
2135
|
-
const cssTextAlign =
|
|
2134
|
+
const paraAlign = chunkZ2ZC5QTJ_js.resolveParagraphAlign(paraSegments, elementAlign);
|
|
2135
|
+
const cssTextAlign = chunkZ2ZC5QTJ_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
|
|
2136
2136
|
const paraMarginLeft = isRtlParagraph ? void 0 : rawMarginLeft;
|
|
2137
2137
|
const paraMarginRight = isRtlParagraph ? rawMarginLeft : void 0;
|
|
2138
2138
|
const paraTextIndent = rawTextIndent;
|
|
2139
|
-
const paraKinsokuStyle =
|
|
2139
|
+
const paraKinsokuStyle = chunkZ2ZC5QTJ_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
|
|
2140
2140
|
const hasParaKinsoku = Object.keys(paraKinsokuStyle).length > 0;
|
|
2141
2141
|
const paraProps = effectiveSegments[firstSeg?.globalIndex ?? -1]?.paragraphProperties;
|
|
2142
2142
|
const spacing = resolveParagraphSpacing({
|
|
@@ -2146,7 +2146,7 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
2146
2146
|
isLast: paraIndex === paragraphs.length - 1,
|
|
2147
2147
|
spaceFirstLast
|
|
2148
2148
|
});
|
|
2149
|
-
const strutFontSize =
|
|
2149
|
+
const strutFontSize = chunkZ2ZC5QTJ_js.resolveParagraphStrutFontSize(
|
|
2150
2150
|
paraSegments.map(({ segment }) => segment),
|
|
2151
2151
|
bodyStyle?.fontSize
|
|
2152
2152
|
);
|
|
@@ -2246,13 +2246,13 @@ function hexToRgbUnit(hex) {
|
|
|
2246
2246
|
};
|
|
2247
2247
|
}
|
|
2248
2248
|
function getDuotoneColors(element) {
|
|
2249
|
-
if (!
|
|
2249
|
+
if (!chunkZ2ZC5QTJ_js.isImageLikeElement(element)) {
|
|
2250
2250
|
return void 0;
|
|
2251
2251
|
}
|
|
2252
2252
|
return element.imageEffects?.duotone;
|
|
2253
2253
|
}
|
|
2254
2254
|
function buildLineShadowCss(element) {
|
|
2255
|
-
if (!
|
|
2255
|
+
if (!chunkZ2ZC5QTJ_js.hasShapeProperties(element)) {
|
|
2256
2256
|
return void 0;
|
|
2257
2257
|
}
|
|
2258
2258
|
const ss = element.shapeStyle;
|
|
@@ -2263,13 +2263,13 @@ function buildLineShadowCss(element) {
|
|
|
2263
2263
|
const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
|
|
2264
2264
|
const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
|
|
2265
2265
|
const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
|
|
2266
|
-
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${
|
|
2267
|
-
|
|
2266
|
+
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkZ2ZC5QTJ_js.colorWithOpacity(
|
|
2267
|
+
chunkZ2ZC5QTJ_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
|
|
2268
2268
|
opacity
|
|
2269
2269
|
)}`;
|
|
2270
2270
|
}
|
|
2271
2271
|
function buildLineGlowFilter(element) {
|
|
2272
|
-
if (!
|
|
2272
|
+
if (!chunkZ2ZC5QTJ_js.hasShapeProperties(element)) {
|
|
2273
2273
|
return void 0;
|
|
2274
2274
|
}
|
|
2275
2275
|
const ss = element.shapeStyle;
|
|
@@ -2278,7 +2278,7 @@ function buildLineGlowFilter(element) {
|
|
|
2278
2278
|
}
|
|
2279
2279
|
const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
|
|
2280
2280
|
const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
|
|
2281
|
-
const glowCol =
|
|
2281
|
+
const glowCol = chunkZ2ZC5QTJ_js.colorWithOpacity(chunkZ2ZC5QTJ_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
|
|
2282
2282
|
return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
|
|
2283
2283
|
}
|
|
2284
2284
|
function mapDagBlendModeToCss(blend) {
|
|
@@ -2302,7 +2302,7 @@ function getDagDuotoneFilterId(elementId) {
|
|
|
2302
2302
|
return `dag-duotone-${elementId}`;
|
|
2303
2303
|
}
|
|
2304
2304
|
function hasDagDuotoneEffect(element) {
|
|
2305
|
-
if (!
|
|
2305
|
+
if (!chunkZ2ZC5QTJ_js.hasShapeProperties(element)) {
|
|
2306
2306
|
return false;
|
|
2307
2307
|
}
|
|
2308
2308
|
return Boolean(element.shapeStyle?.dagDuotone);
|
|
@@ -2365,7 +2365,7 @@ function getRoundRectRadiusPx2(element) {
|
|
|
2365
2365
|
|
|
2366
2366
|
// src/viewer/utils/shape-visual-3d.ts
|
|
2367
2367
|
function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
|
|
2368
|
-
return
|
|
2368
|
+
return chunkZ2ZC5QTJ_js.build3DExtrusionData(
|
|
2369
2369
|
shape3d,
|
|
2370
2370
|
scene3d,
|
|
2371
2371
|
fillColor,
|
|
@@ -2374,7 +2374,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
|
|
|
2374
2374
|
);
|
|
2375
2375
|
}
|
|
2376
2376
|
function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
|
|
2377
|
-
|
|
2377
|
+
chunkZ2ZC5QTJ_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
|
|
2378
2378
|
}
|
|
2379
2379
|
|
|
2380
2380
|
// src/viewer/utils/vector-subpath-paint.ts
|
|
@@ -2383,7 +2383,7 @@ function toHexByte(value) {
|
|
|
2383
2383
|
return clamped.toString(16).padStart(2, "0");
|
|
2384
2384
|
}
|
|
2385
2385
|
function shiftHex(hex, factor, towardsWhite) {
|
|
2386
|
-
const channels =
|
|
2386
|
+
const channels = chunkZ2ZC5QTJ_js.hexToRgbChannels(hex);
|
|
2387
2387
|
if (!channels) {
|
|
2388
2388
|
return hex;
|
|
2389
2389
|
}
|
|
@@ -2409,13 +2409,13 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
|
|
|
2409
2409
|
const fillOff = subpath.fillMode === "none" || !hasFill;
|
|
2410
2410
|
return {
|
|
2411
2411
|
d: subpath.d,
|
|
2412
|
-
fill: fillOff ? "none" :
|
|
2412
|
+
fill: fillOff ? "none" : chunkZ2ZC5QTJ_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
|
|
2413
2413
|
stroked: subpath.stroke !== false
|
|
2414
2414
|
};
|
|
2415
2415
|
});
|
|
2416
2416
|
}
|
|
2417
2417
|
function getStrokeOnlyPresetPaths(element) {
|
|
2418
|
-
if (element.type !== "shape" || !
|
|
2418
|
+
if (element.type !== "shape" || !chunkZ2ZC5QTJ_js.hasShapeProperties(element)) {
|
|
2419
2419
|
return void 0;
|
|
2420
2420
|
}
|
|
2421
2421
|
const shapeType = element.shapeType;
|
|
@@ -2425,7 +2425,7 @@ function getStrokeOnlyPresetPaths(element) {
|
|
|
2425
2425
|
if (element.pathData) {
|
|
2426
2426
|
return void 0;
|
|
2427
2427
|
}
|
|
2428
|
-
const result =
|
|
2428
|
+
const result = chunkZ2ZC5QTJ_js.evaluatePresetShape(
|
|
2429
2429
|
shapeType,
|
|
2430
2430
|
Math.max(element.width, 1),
|
|
2431
2431
|
Math.max(element.height, 1),
|
|
@@ -2440,27 +2440,27 @@ function getStrokeOnlyPresetPaths(element) {
|
|
|
2440
2440
|
|
|
2441
2441
|
// src/viewer/utils/shape-visual-style.ts
|
|
2442
2442
|
function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2443
|
-
if (!
|
|
2443
|
+
if (!chunkZ2ZC5QTJ_js.hasShapeProperties(element)) {
|
|
2444
2444
|
return {};
|
|
2445
2445
|
}
|
|
2446
2446
|
const normalizedShapeType = getShapeType(element.shapeType);
|
|
2447
|
-
const clipPath =
|
|
2447
|
+
const clipPath = chunkZ2ZC5QTJ_js.getResolvedShapeClipPath(element);
|
|
2448
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;
|
|
2449
2449
|
const rendersStrokeOnlyPreset = Boolean(getStrokeOnlyPresetPaths(element));
|
|
2450
2450
|
const fillOpacity = element.shapeStyle?.fillOpacity;
|
|
2451
2451
|
const strokeOpacity = element.shapeStyle?.strokeOpacity;
|
|
2452
|
-
const strokeDash =
|
|
2453
|
-
const fillGradient =
|
|
2454
|
-
const shadowCss =
|
|
2455
|
-
const innerShadowCss =
|
|
2456
|
-
const resolvedFillColor =
|
|
2457
|
-
const resolvedStrokeColor =
|
|
2452
|
+
const strokeDash = chunkZ2ZC5QTJ_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2453
|
+
const fillGradient = chunkZ2ZC5QTJ_js.buildCssGradientFromShapeStyle(element.shapeStyle) || element.shapeStyle?.fillGradient;
|
|
2454
|
+
const shadowCss = chunkZ2ZC5QTJ_js.buildShadowCssFromShapeStyle(element.shapeStyle);
|
|
2455
|
+
const innerShadowCss = chunkZ2ZC5QTJ_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
|
|
2456
|
+
const resolvedFillColor = chunkZ2ZC5QTJ_js.colorWithOpacity(fillColor, fillOpacity);
|
|
2457
|
+
const resolvedStrokeColor = chunkZ2ZC5QTJ_js.colorWithOpacity(strokeColor, strokeOpacity);
|
|
2458
2458
|
const ss = element.shapeStyle;
|
|
2459
2459
|
const hasFillOverlayColor = Boolean(
|
|
2460
2460
|
ss?.dagFillOverlayColor && ss.dagFillOverlayColor !== "transparent"
|
|
2461
2461
|
);
|
|
2462
2462
|
const combinedShadowParts = [];
|
|
2463
|
-
const multiLayerShadow =
|
|
2463
|
+
const multiLayerShadow = chunkZ2ZC5QTJ_js.buildMultiLayerShadowCss(element.shapeStyle);
|
|
2464
2464
|
if (multiLayerShadow) {
|
|
2465
2465
|
combinedShadowParts.push(multiLayerShadow);
|
|
2466
2466
|
} else if (shadowCss) {
|
|
@@ -2469,7 +2469,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2469
2469
|
if (innerShadowCss) {
|
|
2470
2470
|
combinedShadowParts.push(innerShadowCss);
|
|
2471
2471
|
}
|
|
2472
|
-
const glowBoxShadow =
|
|
2472
|
+
const glowBoxShadow = chunkZ2ZC5QTJ_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
|
|
2473
2473
|
if (glowBoxShadow) {
|
|
2474
2474
|
combinedShadowParts.push(glowBoxShadow);
|
|
2475
2475
|
}
|
|
@@ -2477,7 +2477,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2477
2477
|
if (lineShadow) {
|
|
2478
2478
|
combinedShadowParts.push(lineShadow);
|
|
2479
2479
|
}
|
|
2480
|
-
const compoundLineShadow =
|
|
2480
|
+
const compoundLineShadow = chunkZ2ZC5QTJ_js.getCompoundLineBoxShadow(
|
|
2481
2481
|
element.shapeStyle?.compoundLine,
|
|
2482
2482
|
strokeWidth,
|
|
2483
2483
|
resolvedStrokeColor
|
|
@@ -2490,11 +2490,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2490
2490
|
if (ss?.glowColor && ss.glowColor !== "transparent" && ss.glowRadius) {
|
|
2491
2491
|
const glowOpacity = typeof ss.glowOpacity === "number" ? ss.glowOpacity : 0.75;
|
|
2492
2492
|
const glowRad = Math.round(Math.max(0, ss.glowRadius));
|
|
2493
|
-
const glowCol =
|
|
2493
|
+
const glowCol = chunkZ2ZC5QTJ_js.colorWithOpacity(chunkZ2ZC5QTJ_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
|
|
2494
2494
|
filterParts.push(`drop-shadow(0 0 ${glowRad}px ${glowCol})`);
|
|
2495
2495
|
}
|
|
2496
2496
|
if (typeof ss?.softEdgeRadius === "number" && ss.softEdgeRadius > 0) {
|
|
2497
|
-
filterParts.push(`url(#${
|
|
2497
|
+
filterParts.push(`url(#${chunkZ2ZC5QTJ_js.getSoftEdgeFilterId(element.id)})`);
|
|
2498
2498
|
}
|
|
2499
2499
|
if (typeof ss?.blurRadius === "number" && ss.blurRadius > 0) {
|
|
2500
2500
|
filterParts.push(`blur(${Math.round(ss.blurRadius)}px)`);
|
|
@@ -2503,13 +2503,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2503
2503
|
if (lineGlowCss) {
|
|
2504
2504
|
filterParts.push(lineGlowCss);
|
|
2505
2505
|
}
|
|
2506
|
-
const dagFilter =
|
|
2506
|
+
const dagFilter = chunkZ2ZC5QTJ_js.getEffectDagFilter(ss, element.id);
|
|
2507
2507
|
if (dagFilter) {
|
|
2508
2508
|
filterParts.push(dagFilter);
|
|
2509
2509
|
}
|
|
2510
2510
|
const lineJoinCss = ss?.lineJoin === "round" ? "round" : ss?.lineJoin === "bevel" ? "bevel" : ss?.lineJoin === "miter" ? "miter" : void 0;
|
|
2511
2511
|
const miterLimitCss = ss?.lineJoin === "miter" && typeof ss?.miterLimit === "number" ? Math.max(ss.miterLimit / 1e5, 1) : void 0;
|
|
2512
|
-
const patternFill =
|
|
2512
|
+
const patternFill = chunkZ2ZC5QTJ_js.buildPatternFillCss(element.shapeStyle);
|
|
2513
2513
|
const imageFillUrl = ss?.fillMode === "image" && ss.fillImageUrl ? ss.fillImageUrl : void 0;
|
|
2514
2514
|
const imageFillMode = ss?.fillImageMode || "stretch";
|
|
2515
2515
|
let reflectCss;
|
|
@@ -2521,7 +2521,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2521
2521
|
const endOpacity = typeof ss.reflectionEndOpacity === "number" ? ss.reflectionEndOpacity : 0;
|
|
2522
2522
|
const fadeLength = typeof ss.reflectionEndPosition === "number" ? Math.round(ss.reflectionEndPosition * Math.max(element.height, 1)) : 100;
|
|
2523
2523
|
const blurRadius = typeof ss.reflectionBlurRadius === "number" ? ss.reflectionBlurRadius : 0;
|
|
2524
|
-
reflectCss =
|
|
2524
|
+
reflectCss = chunkZ2ZC5QTJ_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
|
|
2525
2525
|
}
|
|
2526
2526
|
}
|
|
2527
2527
|
const base = {
|
|
@@ -2563,9 +2563,9 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2563
2563
|
// two adjacent 40px buttons rendered with a 2px gap PowerPoint does not
|
|
2564
2564
|
// draw. The affordance is an `outline` instead (see `ElementRenderer`),
|
|
2565
2565
|
// which paints in the same place without taking part in layout.
|
|
2566
|
-
borderWidth: strokeWidth > 0 ?
|
|
2566
|
+
borderWidth: strokeWidth > 0 ? chunkZ2ZC5QTJ_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : 0,
|
|
2567
2567
|
borderColor: strokeWidth > 0 ? resolvedStrokeColor : void 0,
|
|
2568
|
-
borderStyle: strokeWidth > 0 ?
|
|
2568
|
+
borderStyle: strokeWidth > 0 ? chunkZ2ZC5QTJ_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
|
|
2569
2569
|
strokeLinejoin: lineJoinCss,
|
|
2570
2570
|
strokeMiterlimit: miterLimitCss,
|
|
2571
2571
|
strokeLinecap: ss?.lineCap === "rnd" ? "round" : ss?.lineCap === "sq" ? "square" : ss?.lineCap === "flat" ? "butt" : void 0
|
|
@@ -2621,7 +2621,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2621
2621
|
borderWidth: 0,
|
|
2622
2622
|
borderTopWidth: Math.max(strokeWidth, 2),
|
|
2623
2623
|
borderTopColor: resolvedStrokeColor,
|
|
2624
|
-
borderTopStyle:
|
|
2624
|
+
borderTopStyle: chunkZ2ZC5QTJ_js.getCssBorderDashStyle(strokeDash)
|
|
2625
2625
|
};
|
|
2626
2626
|
}
|
|
2627
2627
|
if (normalizedShapeType === "cylinder") {
|
|
@@ -2635,13 +2635,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2635
2635
|
function getConnectorAdjustment(element, key, fallback) {
|
|
2636
2636
|
const direct = element.shapeAdjustments?.[key];
|
|
2637
2637
|
if (typeof direct === "number" && Number.isFinite(direct)) {
|
|
2638
|
-
return
|
|
2638
|
+
return chunkZ2ZC5QTJ_js.clampUnitInterval(direct / 1e5);
|
|
2639
2639
|
}
|
|
2640
2640
|
const fallbackKey = element.shapeAdjustments?.adj;
|
|
2641
2641
|
if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
|
|
2642
|
-
return
|
|
2642
|
+
return chunkZ2ZC5QTJ_js.clampUnitInterval(fallbackKey / 1e5);
|
|
2643
2643
|
}
|
|
2644
|
-
return
|
|
2644
|
+
return chunkZ2ZC5QTJ_js.clampUnitInterval(fallback);
|
|
2645
2645
|
}
|
|
2646
2646
|
function getConnectorPathGeometry(element) {
|
|
2647
2647
|
const width = Math.max(element.width, 1);
|
|
@@ -2778,11 +2778,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
|
|
|
2778
2778
|
strokePaint,
|
|
2779
2779
|
strokeWidth,
|
|
2780
2780
|
dashArray,
|
|
2781
|
-
lineCap:
|
|
2781
|
+
lineCap: chunkZ2ZC5QTJ_js.svgLineCap(shapeStyle?.lineCap),
|
|
2782
2782
|
lineJoin,
|
|
2783
2783
|
miterLimit,
|
|
2784
|
-
offsets:
|
|
2785
|
-
widths:
|
|
2784
|
+
offsets: chunkZ2ZC5QTJ_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
|
|
2785
|
+
widths: chunkZ2ZC5QTJ_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
|
|
2786
2786
|
};
|
|
2787
2787
|
}
|
|
2788
2788
|
function strokeStrands(d, keyBase, ctx) {
|
|
@@ -2805,7 +2805,7 @@ function strokeStrands(d, keyBase, ctx) {
|
|
|
2805
2805
|
}
|
|
2806
2806
|
function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false) {
|
|
2807
2807
|
const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
|
|
2808
|
-
const subpaths = structuredPaths && structuredPaths.length > 0 ?
|
|
2808
|
+
const subpaths = structuredPaths && structuredPaths.length > 0 ? chunkZ2ZC5QTJ_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
|
|
2809
2809
|
const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
|
|
2810
2810
|
const nodes = [];
|
|
2811
2811
|
if (subpaths && needsPerSubpath) {
|
|
@@ -2836,7 +2836,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2836
2836
|
"path",
|
|
2837
2837
|
{
|
|
2838
2838
|
d: pathData,
|
|
2839
|
-
fill: animatesFill ? "inherit" :
|
|
2839
|
+
fill: animatesFill ? "inherit" : chunkZ2ZC5QTJ_js.colorWithOpacity(fillColor, fillOpacity),
|
|
2840
2840
|
stroke: "none",
|
|
2841
2841
|
vectorEffect: "non-scaling-stroke"
|
|
2842
2842
|
},
|
|
@@ -2878,14 +2878,14 @@ function renderStrokeOnlyPreset(presetPaths, width, height, shapeStyle, strokePa
|
|
|
2878
2878
|
);
|
|
2879
2879
|
}
|
|
2880
2880
|
function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2881
|
-
if (!
|
|
2881
|
+
if (!chunkZ2ZC5QTJ_js.hasShapeProperties(element)) {
|
|
2882
2882
|
return null;
|
|
2883
2883
|
}
|
|
2884
2884
|
const normalizedType = (element.shapeType || "").toLowerCase();
|
|
2885
|
-
const fillPaint = animatesFill ? "inherit" :
|
|
2886
|
-
const strokePaint = animatesStroke ? "inherit" :
|
|
2887
|
-
const dashType =
|
|
2888
|
-
const dashArray =
|
|
2885
|
+
const fillPaint = animatesFill ? "inherit" : chunkZ2ZC5QTJ_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
|
|
2886
|
+
const strokePaint = animatesStroke ? "inherit" : chunkZ2ZC5QTJ_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
|
|
2887
|
+
const dashType = chunkZ2ZC5QTJ_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2888
|
+
const dashArray = chunkZ2ZC5QTJ_js.getSvgStrokeDasharray(
|
|
2889
2889
|
dashType,
|
|
2890
2890
|
Math.max(strokeWidth, 1),
|
|
2891
2891
|
element.shapeStyle?.customDashSegments
|
|
@@ -2964,18 +2964,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2964
2964
|
Boolean(animatesFill)
|
|
2965
2965
|
);
|
|
2966
2966
|
}
|
|
2967
|
-
if (
|
|
2967
|
+
if (chunkZ2ZC5QTJ_js.isCalloutShape(normalizedType)) {
|
|
2968
2968
|
const width = Math.max(element.width, 1);
|
|
2969
2969
|
const height = Math.max(element.height, 1);
|
|
2970
|
-
const geometry =
|
|
2970
|
+
const geometry = chunkZ2ZC5QTJ_js.getCalloutLeaderLineGeometry(
|
|
2971
2971
|
normalizedType,
|
|
2972
2972
|
width,
|
|
2973
2973
|
height,
|
|
2974
2974
|
element.shapeAdjustments
|
|
2975
2975
|
);
|
|
2976
2976
|
if (geometry && geometry.points.length >= 2) {
|
|
2977
|
-
const leaderPath =
|
|
2978
|
-
const bounds =
|
|
2977
|
+
const leaderPath = chunkZ2ZC5QTJ_js.buildCalloutLeaderLineSvgPath(geometry);
|
|
2978
|
+
const bounds = chunkZ2ZC5QTJ_js.getCalloutViewBoxBounds(width, height, geometry);
|
|
2979
2979
|
const lineStroke = Math.max(strokeWidth, 1);
|
|
2980
2980
|
const offsetLeft = bounds.minX;
|
|
2981
2981
|
const offsetTop = bounds.minY;
|
|
@@ -3038,10 +3038,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
3038
3038
|
const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
|
|
3039
3039
|
const endArrowL = element.shapeStyle?.connectorEndArrowLength;
|
|
3040
3040
|
const compoundLine = element.shapeStyle?.compoundLine;
|
|
3041
|
-
const connectorLineCap =
|
|
3041
|
+
const connectorLineCap = chunkZ2ZC5QTJ_js.svgLineCap(element.shapeStyle?.lineCap);
|
|
3042
3042
|
const hitTargetWidth = Math.max(strokeWidth * 3, 12);
|
|
3043
|
-
const offsets =
|
|
3044
|
-
const widths =
|
|
3043
|
+
const offsets = chunkZ2ZC5QTJ_js.getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
3044
|
+
const widths = chunkZ2ZC5QTJ_js.getCompoundLineWidths(compoundLine, strokeWidth);
|
|
3045
3045
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3046
3046
|
"svg",
|
|
3047
3047
|
{
|
|
@@ -3120,15 +3120,15 @@ function parseGradientFillCss(gradFill) {
|
|
|
3120
3120
|
}
|
|
3121
3121
|
const parsed = stops.map((gs) => {
|
|
3122
3122
|
const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
|
|
3123
|
-
const color =
|
|
3124
|
-
const opacity =
|
|
3125
|
-
return { pos, color:
|
|
3123
|
+
const color = chunkZ2ZC5QTJ_js.parseDrawingColor(gs) ?? "#888888";
|
|
3124
|
+
const opacity = chunkZ2ZC5QTJ_js.parseDrawingColorOpacity(gs);
|
|
3125
|
+
return { pos, color: chunkZ2ZC5QTJ_js.colorWithOpacity(color, opacity) };
|
|
3126
3126
|
}).sort((a, b) => a.pos - b.pos);
|
|
3127
3127
|
const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
|
|
3128
3128
|
const lin = gradFill["a:lin"];
|
|
3129
3129
|
if (lin) {
|
|
3130
3130
|
const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
|
|
3131
|
-
const angleDeg = Math.round(
|
|
3131
|
+
const angleDeg = Math.round(chunkZ2ZC5QTJ_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
|
|
3132
3132
|
return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
|
|
3133
3133
|
}
|
|
3134
3134
|
const path = gradFill["a:path"];
|
|
@@ -3163,8 +3163,8 @@ function parsePatternFillCss(pattFill) {
|
|
|
3163
3163
|
if (!pattFill) {
|
|
3164
3164
|
return void 0;
|
|
3165
3165
|
}
|
|
3166
|
-
const fgColor =
|
|
3167
|
-
const bgColor =
|
|
3166
|
+
const fgColor = chunkZ2ZC5QTJ_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
|
|
3167
|
+
const bgColor = chunkZ2ZC5QTJ_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
|
|
3168
3168
|
const preset = String(pattFill["@_prst"] || "ltDnDiag");
|
|
3169
3169
|
switch (preset) {
|
|
3170
3170
|
case "ltHorz":
|
|
@@ -3275,11 +3275,11 @@ function parseCellBorders(cellProperties) {
|
|
|
3275
3275
|
const prstDash = ln["a:prstDash"];
|
|
3276
3276
|
const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
|
|
3277
3277
|
const cssBorderStyle = ooxmlDashToCss(dashVal);
|
|
3278
|
-
const color =
|
|
3278
|
+
const color = chunkZ2ZC5QTJ_js.parseDrawingColor(ln["a:solidFill"]);
|
|
3279
3279
|
if (color) {
|
|
3280
|
-
const opacity =
|
|
3280
|
+
const opacity = chunkZ2ZC5QTJ_js.parseDrawingColorOpacity(ln["a:solidFill"]);
|
|
3281
3281
|
const key = `${edge.prefix}`;
|
|
3282
|
-
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${
|
|
3282
|
+
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkZ2ZC5QTJ_js.colorWithOpacity(color, opacity)}`;
|
|
3283
3283
|
}
|
|
3284
3284
|
}
|
|
3285
3285
|
return borderStyle;
|
|
@@ -3292,7 +3292,7 @@ function parseCellTextEffects(runProps) {
|
|
|
3292
3292
|
const textShadowParts = [];
|
|
3293
3293
|
const outerShdw = effectLst["a:outerShdw"];
|
|
3294
3294
|
if (outerShdw) {
|
|
3295
|
-
const shdwColor =
|
|
3295
|
+
const shdwColor = chunkZ2ZC5QTJ_js.parseDrawingColor(outerShdw);
|
|
3296
3296
|
if (shdwColor) {
|
|
3297
3297
|
const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
|
|
3298
3298
|
const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
|
|
@@ -3310,7 +3310,7 @@ function parseCellTextEffects(runProps) {
|
|
|
3310
3310
|
}
|
|
3311
3311
|
const glow = effectLst["a:glow"];
|
|
3312
3312
|
if (glow) {
|
|
3313
|
-
const glowColor =
|
|
3313
|
+
const glowColor = chunkZ2ZC5QTJ_js.parseDrawingColor(glow);
|
|
3314
3314
|
if (glowColor) {
|
|
3315
3315
|
const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
|
|
3316
3316
|
const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
|
|
@@ -3389,10 +3389,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3389
3389
|
if (runProps?.["@_u"] !== void 0) {
|
|
3390
3390
|
cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
|
|
3391
3391
|
}
|
|
3392
|
-
const runColor =
|
|
3392
|
+
const runColor = chunkZ2ZC5QTJ_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkZ2ZC5QTJ_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
|
|
3393
3393
|
if (runColor) {
|
|
3394
|
-
const opacity =
|
|
3395
|
-
cellStyle.color =
|
|
3394
|
+
const opacity = chunkZ2ZC5QTJ_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
|
|
3395
|
+
cellStyle.color = chunkZ2ZC5QTJ_js.colorWithOpacity(runColor, opacity);
|
|
3396
3396
|
}
|
|
3397
3397
|
const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
|
|
3398
3398
|
if (fontFamily) {
|
|
@@ -3402,15 +3402,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3402
3402
|
cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
|
|
3403
3403
|
}
|
|
3404
3404
|
const cellProperties = cellXml["a:tcPr"];
|
|
3405
|
-
const cellFill =
|
|
3405
|
+
const cellFill = chunkZ2ZC5QTJ_js.parseDrawingColor(
|
|
3406
3406
|
cellProperties?.["a:solidFill"],
|
|
3407
3407
|
schemeColorOverrides
|
|
3408
3408
|
);
|
|
3409
3409
|
if (cellFill) {
|
|
3410
|
-
const opacity =
|
|
3410
|
+
const opacity = chunkZ2ZC5QTJ_js.parseDrawingColorOpacity(
|
|
3411
3411
|
cellProperties?.["a:solidFill"]
|
|
3412
3412
|
);
|
|
3413
|
-
cellStyle.backgroundColor =
|
|
3413
|
+
cellStyle.backgroundColor = chunkZ2ZC5QTJ_js.colorWithOpacity(cellFill, opacity);
|
|
3414
3414
|
} else {
|
|
3415
3415
|
const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
|
|
3416
3416
|
if (gradCss) {
|
|
@@ -3425,16 +3425,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3425
3425
|
const edgeBorders = parseCellBorders(cellProperties);
|
|
3426
3426
|
Object.assign(cellStyle, edgeBorders);
|
|
3427
3427
|
if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
|
|
3428
|
-
const borderColor =
|
|
3428
|
+
const borderColor = chunkZ2ZC5QTJ_js.parseDrawingColor(
|
|
3429
3429
|
cellProperties?.["a:lnL"]?.["a:solidFill"],
|
|
3430
3430
|
schemeColorOverrides
|
|
3431
|
-
) ||
|
|
3431
|
+
) || chunkZ2ZC5QTJ_js.parseDrawingColor(
|
|
3432
3432
|
cellProperties?.["a:lnR"]?.["a:solidFill"],
|
|
3433
3433
|
schemeColorOverrides
|
|
3434
|
-
) ||
|
|
3434
|
+
) || chunkZ2ZC5QTJ_js.parseDrawingColor(
|
|
3435
3435
|
cellProperties?.["a:lnT"]?.["a:solidFill"],
|
|
3436
3436
|
schemeColorOverrides
|
|
3437
|
-
) ||
|
|
3437
|
+
) || chunkZ2ZC5QTJ_js.parseDrawingColor(
|
|
3438
3438
|
cellProperties?.["a:lnB"]?.["a:solidFill"],
|
|
3439
3439
|
schemeColorOverrides
|
|
3440
3440
|
);
|
|
@@ -3513,10 +3513,10 @@ function resolveTableStyleFillColor(fill, colorScheme) {
|
|
|
3513
3513
|
}
|
|
3514
3514
|
let color = base;
|
|
3515
3515
|
if (fill.tint !== void 0 && fill.tint > 0) {
|
|
3516
|
-
color =
|
|
3516
|
+
color = chunkZ2ZC5QTJ_js.tintColor2(color, fill.tint / 1e5);
|
|
3517
3517
|
}
|
|
3518
3518
|
if (fill.shade !== void 0 && fill.shade > 0) {
|
|
3519
|
-
color =
|
|
3519
|
+
color = chunkZ2ZC5QTJ_js.shadeColor2(color, 1 - fill.shade / 1e5);
|
|
3520
3520
|
}
|
|
3521
3521
|
return color;
|
|
3522
3522
|
}
|
|
@@ -3541,7 +3541,7 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
|
|
|
3541
3541
|
style.fontFamily = text.fontFace;
|
|
3542
3542
|
applied = true;
|
|
3543
3543
|
} else {
|
|
3544
|
-
const refFont =
|
|
3544
|
+
const refFont = chunkZ2ZC5QTJ_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
|
|
3545
3545
|
if (refFont) {
|
|
3546
3546
|
style.fontFamily = refFont;
|
|
3547
3547
|
applied = true;
|
|
@@ -3552,10 +3552,10 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
|
|
|
3552
3552
|
if (base) {
|
|
3553
3553
|
let color = base;
|
|
3554
3554
|
if (text.fontTint !== void 0 && text.fontTint > 0) {
|
|
3555
|
-
color =
|
|
3555
|
+
color = chunkZ2ZC5QTJ_js.tintColor2(color, text.fontTint / 1e5);
|
|
3556
3556
|
}
|
|
3557
3557
|
if (text.fontShade !== void 0 && text.fontShade > 0) {
|
|
3558
|
-
color =
|
|
3558
|
+
color = chunkZ2ZC5QTJ_js.shadeColor2(color, 1 - text.fontShade / 1e5);
|
|
3559
3559
|
}
|
|
3560
3560
|
style.color = color;
|
|
3561
3561
|
applied = true;
|
|
@@ -3744,7 +3744,7 @@ function parseTableElementData(element, fallbackTextStyle) {
|
|
|
3744
3744
|
};
|
|
3745
3745
|
}
|
|
3746
3746
|
function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
|
|
3747
|
-
return
|
|
3747
|
+
return chunkZ2ZC5QTJ_js.getCellDiagonalBorders(style, tableData, pos, {
|
|
3748
3748
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
3749
3749
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
3750
3750
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -3892,9 +3892,9 @@ function cellStyleToCss(style) {
|
|
|
3892
3892
|
if (style.gradientFillCss) {
|
|
3893
3893
|
css.background = style.gradientFillCss;
|
|
3894
3894
|
} else if (style.fillMode === "pattern" && style.patternFillPreset) {
|
|
3895
|
-
const fg =
|
|
3896
|
-
const bg =
|
|
3897
|
-
const svgPattern =
|
|
3895
|
+
const fg = chunkZ2ZC5QTJ_js.normalizeHexColor(style.patternFillForeground, "#000000");
|
|
3896
|
+
const bg = chunkZ2ZC5QTJ_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
|
|
3897
|
+
const svgPattern = chunkZ2ZC5QTJ_js.getPatternSvg(style.patternFillPreset, fg, bg);
|
|
3898
3898
|
if (svgPattern) {
|
|
3899
3899
|
const encoded = encodeURIComponent(svgPattern);
|
|
3900
3900
|
css.backgroundImage = `url("data:image/svg+xml,${encoded}")`;
|
|
@@ -3970,7 +3970,7 @@ function cellStyleToCss(style) {
|
|
|
3970
3970
|
if (edge.width || edge.color) {
|
|
3971
3971
|
const w = edge.width ?? 1;
|
|
3972
3972
|
const c = edge.color ?? style.borderColor ?? "#000000";
|
|
3973
|
-
const s =
|
|
3973
|
+
const s = chunkZ2ZC5QTJ_js.ooxmlDashToCssBorderStyle(edge.dash);
|
|
3974
3974
|
css[edge.prefix] = `${w}px ${s} ${c}`;
|
|
3975
3975
|
}
|
|
3976
3976
|
}
|
|
@@ -4001,7 +4001,7 @@ function cellStyleToCss(style) {
|
|
|
4001
4001
|
css.textShadow = textShadowParts.join(", ");
|
|
4002
4002
|
}
|
|
4003
4003
|
if (style.cell3D) {
|
|
4004
|
-
Object.assign(css,
|
|
4004
|
+
Object.assign(css, chunkZ2ZC5QTJ_js.cell3DBevelCss(style.cell3D));
|
|
4005
4005
|
}
|
|
4006
4006
|
return css;
|
|
4007
4007
|
}
|
|
@@ -4015,7 +4015,7 @@ function TableResizeOverlay({
|
|
|
4015
4015
|
const containerRef = React6.useRef(null);
|
|
4016
4016
|
const [rowBounds, setRowBounds] = React6.useState([]);
|
|
4017
4017
|
const dragRef = React6.useRef(null);
|
|
4018
|
-
const colBoundaries = React6.useMemo(() =>
|
|
4018
|
+
const colBoundaries = React6.useMemo(() => chunkZ2ZC5QTJ_js.computeColumnBoundaries(columnWidths), [columnWidths]);
|
|
4019
4019
|
const measureRows = React6.useCallback(() => {
|
|
4020
4020
|
const container = containerRef.current;
|
|
4021
4021
|
if (!container) {
|
|
@@ -4062,11 +4062,11 @@ function TableResizeOverlay({
|
|
|
4062
4062
|
const rect = containerRef.current.getBoundingClientRect();
|
|
4063
4063
|
if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
|
|
4064
4064
|
const deltaProp = (e.clientX - drag.startPos) / rect.width;
|
|
4065
|
-
onResizeColumns(
|
|
4065
|
+
onResizeColumns(chunkZ2ZC5QTJ_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
|
|
4066
4066
|
} else if (drag.type === "row" && onResizeRow) {
|
|
4067
4067
|
const deltaY = e.clientY - drag.startPos;
|
|
4068
|
-
const newHeight =
|
|
4069
|
-
drag.initialRowHeight ??
|
|
4068
|
+
const newHeight = chunkZ2ZC5QTJ_js.computeResizedRowHeight(
|
|
4069
|
+
drag.initialRowHeight ?? chunkZ2ZC5QTJ_js.DEFAULT_ROW_HEIGHT,
|
|
4070
4070
|
deltaY
|
|
4071
4071
|
);
|
|
4072
4072
|
onResizeRow(drag.index, newHeight);
|
|
@@ -4104,7 +4104,7 @@ function TableResizeOverlay({
|
|
|
4104
4104
|
e.stopPropagation();
|
|
4105
4105
|
const table = containerRef.current?.querySelector("table");
|
|
4106
4106
|
const tr = table?.querySelectorAll("tbody > tr")[index];
|
|
4107
|
-
const actualHeight = tr?.offsetHeight ??
|
|
4107
|
+
const actualHeight = tr?.offsetHeight ?? chunkZ2ZC5QTJ_js.DEFAULT_ROW_HEIGHT;
|
|
4108
4108
|
document.body.style.cursor = "row-resize";
|
|
4109
4109
|
document.body.style.userSelect = "none";
|
|
4110
4110
|
dragRef.current = {
|
|
@@ -4152,7 +4152,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4152
4152
|
}
|
|
4153
4153
|
const first = selectedCell.selectedCells[0];
|
|
4154
4154
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
4155
|
-
return
|
|
4155
|
+
return chunkZ2ZC5QTJ_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
|
|
4156
4156
|
})();
|
|
4157
4157
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4158
4158
|
TableResizeOverlay,
|
|
@@ -4185,7 +4185,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4185
4185
|
return null;
|
|
4186
4186
|
}
|
|
4187
4187
|
const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
|
|
4188
|
-
const isInMultiSelection =
|
|
4188
|
+
const isInMultiSelection = chunkZ2ZC5QTJ_js.isCellInRect(rowIndex, cellIndex, selectionRect);
|
|
4189
4189
|
const isCellEditing = isCellSelected && selectedCell?.isEditing;
|
|
4190
4190
|
const diag = getCellDiagonalBorders2(
|
|
4191
4191
|
cell.style,
|
|
@@ -4215,7 +4215,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4215
4215
|
}
|
|
4216
4216
|
event.stopPropagation();
|
|
4217
4217
|
if (event.shiftKey && selectedCell) {
|
|
4218
|
-
const rect =
|
|
4218
|
+
const rect = chunkZ2ZC5QTJ_js.computeSelectionRect(
|
|
4219
4219
|
selectedCell.rowIndex,
|
|
4220
4220
|
selectedCell.columnIndex,
|
|
4221
4221
|
rowIndex,
|
|
@@ -4225,7 +4225,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4225
4225
|
options?.onSelectCell?.({
|
|
4226
4226
|
rowIndex: selectedCell.rowIndex,
|
|
4227
4227
|
columnIndex: selectedCell.columnIndex,
|
|
4228
|
-
selectedCells:
|
|
4228
|
+
selectedCells: chunkZ2ZC5QTJ_js.rectToCells(rect)
|
|
4229
4229
|
});
|
|
4230
4230
|
} else {
|
|
4231
4231
|
options?.onSelectCell?.({
|
|
@@ -4302,7 +4302,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4302
4302
|
}
|
|
4303
4303
|
const first = selectedCell.selectedCells[0];
|
|
4304
4304
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
4305
|
-
return
|
|
4305
|
+
return chunkZ2ZC5QTJ_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
|
|
4306
4306
|
})();
|
|
4307
4307
|
const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
|
|
4308
4308
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4379,7 +4379,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4379
4379
|
"border px-1 py-0.5 align-top",
|
|
4380
4380
|
isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
|
|
4381
4381
|
selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
|
|
4382
|
-
|
|
4382
|
+
chunkZ2ZC5QTJ_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
|
|
4383
4383
|
),
|
|
4384
4384
|
colSpan,
|
|
4385
4385
|
rowSpan: rSpan,
|
|
@@ -4390,7 +4390,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4390
4390
|
}
|
|
4391
4391
|
event.stopPropagation();
|
|
4392
4392
|
if (event.shiftKey && selectedCell && tableEl.tableData) {
|
|
4393
|
-
const rect =
|
|
4393
|
+
const rect = chunkZ2ZC5QTJ_js.computeSelectionRect(
|
|
4394
4394
|
selectedCell.rowIndex,
|
|
4395
4395
|
selectedCell.columnIndex,
|
|
4396
4396
|
rowIndex,
|
|
@@ -4400,7 +4400,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4400
4400
|
options?.onSelectCell?.({
|
|
4401
4401
|
rowIndex: selectedCell.rowIndex,
|
|
4402
4402
|
columnIndex: selectedCell.columnIndex,
|
|
4403
|
-
selectedCells:
|
|
4403
|
+
selectedCells: chunkZ2ZC5QTJ_js.rectToCells(rect)
|
|
4404
4404
|
});
|
|
4405
4405
|
} else {
|
|
4406
4406
|
options?.onSelectCell?.({
|
|
@@ -4455,24 +4455,24 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4455
4455
|
}
|
|
4456
4456
|
var LEGEND_ITEM_WIDTH = 80;
|
|
4457
4457
|
function partAttrs(part) {
|
|
4458
|
-
return part ?
|
|
4458
|
+
return part ? chunkZ2ZC5QTJ_js.chartPartToAttrs(part) : void 0;
|
|
4459
4459
|
}
|
|
4460
4460
|
function resolveReactPalette(chartData) {
|
|
4461
4461
|
if (chartData.colorPalette && chartData.colorPalette.length > 0) {
|
|
4462
4462
|
return chartData.colorPalette;
|
|
4463
4463
|
}
|
|
4464
|
-
return [...
|
|
4464
|
+
return [...chunkZ2ZC5QTJ_js.getChartStylePalette(chartData.style?.styleId)];
|
|
4465
4465
|
}
|
|
4466
4466
|
function buildReactChartViewModel(element) {
|
|
4467
4467
|
if (element.type !== "chart" || !element.chartData) {
|
|
4468
|
-
return
|
|
4468
|
+
return chunkZ2ZC5QTJ_js.buildChartViewModel(element);
|
|
4469
4469
|
}
|
|
4470
4470
|
const palette = resolveReactPalette(element.chartData);
|
|
4471
4471
|
const themedElement = {
|
|
4472
4472
|
...element,
|
|
4473
4473
|
chartData: { ...element.chartData, colorPalette: palette }
|
|
4474
4474
|
};
|
|
4475
|
-
return
|
|
4475
|
+
return chunkZ2ZC5QTJ_js.buildChartViewModel(themedElement);
|
|
4476
4476
|
}
|
|
4477
4477
|
function renderPrimitive(prim, key) {
|
|
4478
4478
|
switch (prim.kind) {
|
|
@@ -4861,7 +4861,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4861
4861
|
const unmatchedRows = [];
|
|
4862
4862
|
categories.forEach((cat, i) => {
|
|
4863
4863
|
const value = values[i] ?? 0;
|
|
4864
|
-
const code =
|
|
4864
|
+
const code = chunkZ2ZC5QTJ_js.resolveRegionCode(cat);
|
|
4865
4865
|
if (code) {
|
|
4866
4866
|
regionValueMap.set(code, { value, label: cat });
|
|
4867
4867
|
} else {
|
|
@@ -4899,8 +4899,8 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4899
4899
|
let fill = "#e2e8f0";
|
|
4900
4900
|
let dataLabel = null;
|
|
4901
4901
|
if (entry) {
|
|
4902
|
-
const t =
|
|
4903
|
-
fill =
|
|
4902
|
+
const t = chunkZ2ZC5QTJ_js.normalizeValue(entry.value, minVal, maxVal);
|
|
4903
|
+
fill = chunkZ2ZC5QTJ_js.sequentialColorScale(t);
|
|
4904
4904
|
dataLabel = /* @__PURE__ */ jsxRuntime.jsx(
|
|
4905
4905
|
"text",
|
|
4906
4906
|
{
|
|
@@ -4911,7 +4911,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4911
4911
|
fontWeight: 600,
|
|
4912
4912
|
fill: "#1e293b",
|
|
4913
4913
|
style: { pointerEvents: "none" },
|
|
4914
|
-
children:
|
|
4914
|
+
children: chunkZ2ZC5QTJ_js.formatAxisValue(entry.value)
|
|
4915
4915
|
},
|
|
4916
4916
|
`${element.id}-map-dl-${region.code}`
|
|
4917
4917
|
);
|
|
@@ -4929,7 +4929,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4929
4929
|
opacity: 0.9,
|
|
4930
4930
|
children: /* @__PURE__ */ jsxRuntime.jsxs("title", { children: [
|
|
4931
4931
|
region.name,
|
|
4932
|
-
entry ? `: ${
|
|
4932
|
+
entry ? `: ${chunkZ2ZC5QTJ_js.formatAxisValue(entry.value)}` : ""
|
|
4933
4933
|
] })
|
|
4934
4934
|
}
|
|
4935
4935
|
),
|
|
@@ -4967,7 +4967,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4967
4967
|
fontSize: 7,
|
|
4968
4968
|
fill: "#64748b",
|
|
4969
4969
|
textAnchor: "middle",
|
|
4970
|
-
children:
|
|
4970
|
+
children: chunkZ2ZC5QTJ_js.formatAxisValue(minVal)
|
|
4971
4971
|
},
|
|
4972
4972
|
`${element.id}-map-legend-min`
|
|
4973
4973
|
),
|
|
@@ -4979,7 +4979,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4979
4979
|
fontSize: 7,
|
|
4980
4980
|
fill: "#64748b",
|
|
4981
4981
|
textAnchor: "middle",
|
|
4982
|
-
children:
|
|
4982
|
+
children: chunkZ2ZC5QTJ_js.formatAxisValue(maxVal)
|
|
4983
4983
|
},
|
|
4984
4984
|
`${element.id}-map-legend-max`
|
|
4985
4985
|
)
|
|
@@ -5045,7 +5045,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
5045
5045
|
y,
|
|
5046
5046
|
fontSize,
|
|
5047
5047
|
fill: "#475569",
|
|
5048
|
-
children:
|
|
5048
|
+
children: chunkZ2ZC5QTJ_js.formatAxisValue(row.value)
|
|
5049
5049
|
},
|
|
5050
5050
|
`${element.id}-map-ft-val-${i}`
|
|
5051
5051
|
)
|
|
@@ -5116,7 +5116,7 @@ function renderStackedBarChart(element, _chartData, _categoryLabels) {
|
|
|
5116
5116
|
|
|
5117
5117
|
// src/viewer/utils/chart-overlay-utils.ts
|
|
5118
5118
|
function sColor(series, idx) {
|
|
5119
|
-
return
|
|
5119
|
+
return chunkZ2ZC5QTJ_js.seriesColor(series, idx);
|
|
5120
5120
|
}
|
|
5121
5121
|
function valToY(val, range, topY, bottomY) {
|
|
5122
5122
|
const usable = bottomY - topY;
|
|
@@ -5655,7 +5655,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
|
|
|
5655
5655
|
width: 10,
|
|
5656
5656
|
height: 10,
|
|
5657
5657
|
rx: 2,
|
|
5658
|
-
fill:
|
|
5658
|
+
fill: chunkZ2ZC5QTJ_js.seriesColor(s, i, style?.styleId, colorPalette)
|
|
5659
5659
|
},
|
|
5660
5660
|
`${id}-leg-r-${i}`
|
|
5661
5661
|
)
|
|
@@ -5679,7 +5679,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
|
|
|
5679
5679
|
width: 10,
|
|
5680
5680
|
height: 10,
|
|
5681
5681
|
rx: 2,
|
|
5682
|
-
fill:
|
|
5682
|
+
fill: chunkZ2ZC5QTJ_js.seriesColor(s, i, style?.styleId, colorPalette)
|
|
5683
5683
|
}
|
|
5684
5684
|
),
|
|
5685
5685
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: cy + 8, fontSize: 9, fill: "#475569", children: s.name || `Series ${i + 1}` })
|
|
@@ -5692,9 +5692,9 @@ function renderGridlines(id, style, range, layout) {
|
|
|
5692
5692
|
}
|
|
5693
5693
|
const lines = [];
|
|
5694
5694
|
if (range.logScale && range.logBase) {
|
|
5695
|
-
const ticks =
|
|
5695
|
+
const ticks = chunkZ2ZC5QTJ_js.generateLogTicks(range);
|
|
5696
5696
|
ticks.forEach((tickVal, i) => {
|
|
5697
|
-
const y =
|
|
5697
|
+
const y = chunkZ2ZC5QTJ_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
|
|
5698
5698
|
lines.push(
|
|
5699
5699
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5700
5700
|
"line",
|
|
@@ -5715,7 +5715,7 @@ function renderGridlines(id, style, range, layout) {
|
|
|
5715
5715
|
const steps = 4;
|
|
5716
5716
|
for (let i = 0; i <= steps; i++) {
|
|
5717
5717
|
const val = range.min + range.span * i / steps;
|
|
5718
|
-
const y =
|
|
5718
|
+
const y = chunkZ2ZC5QTJ_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5719
5719
|
lines.push(
|
|
5720
5720
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5721
5721
|
"line",
|
|
@@ -5739,9 +5739,9 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5739
5739
|
const labels = [];
|
|
5740
5740
|
const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
|
|
5741
5741
|
if (range.logScale && range.logBase) {
|
|
5742
|
-
const ticks =
|
|
5742
|
+
const ticks = chunkZ2ZC5QTJ_js.generateLogTicks(range);
|
|
5743
5743
|
ticks.forEach((tickVal, i) => {
|
|
5744
|
-
const y =
|
|
5744
|
+
const y = chunkZ2ZC5QTJ_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
|
|
5745
5745
|
labels.push(
|
|
5746
5746
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5747
5747
|
"text",
|
|
@@ -5751,7 +5751,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5751
5751
|
textAnchor: "end",
|
|
5752
5752
|
fontSize: 8,
|
|
5753
5753
|
fill: "#64748b",
|
|
5754
|
-
children: hasDisplayUnits ?
|
|
5754
|
+
children: hasDisplayUnits ? chunkZ2ZC5QTJ_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkZ2ZC5QTJ_js.formatAxisValue(tickVal)
|
|
5755
5755
|
},
|
|
5756
5756
|
`${id}-vaxis-log-${i}`
|
|
5757
5757
|
)
|
|
@@ -5761,7 +5761,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5761
5761
|
const steps = 4;
|
|
5762
5762
|
for (let i = 0; i <= steps; i++) {
|
|
5763
5763
|
const val = range.min + range.span * i / steps;
|
|
5764
|
-
const y =
|
|
5764
|
+
const y = chunkZ2ZC5QTJ_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5765
5765
|
labels.push(
|
|
5766
5766
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5767
5767
|
"text",
|
|
@@ -5771,7 +5771,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5771
5771
|
textAnchor: "end",
|
|
5772
5772
|
fontSize: 8,
|
|
5773
5773
|
fill: "#64748b",
|
|
5774
|
-
children: hasDisplayUnits ?
|
|
5774
|
+
children: hasDisplayUnits ? chunkZ2ZC5QTJ_js.formatAxisValueWithUnits(val, axisFormatting) : chunkZ2ZC5QTJ_js.formatAxisValue(val)
|
|
5775
5775
|
},
|
|
5776
5776
|
`${id}-vaxis-${i}`
|
|
5777
5777
|
)
|
|
@@ -5779,7 +5779,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5779
5779
|
}
|
|
5780
5780
|
}
|
|
5781
5781
|
if (hasDisplayUnits) {
|
|
5782
|
-
const unitLabel =
|
|
5782
|
+
const unitLabel = chunkZ2ZC5QTJ_js.getDisplayUnitLabel(
|
|
5783
5783
|
axisFormatting.displayUnits,
|
|
5784
5784
|
axisFormatting.displayUnitsLabel
|
|
5785
5785
|
);
|
|
@@ -5854,7 +5854,7 @@ function renderZeroLine(id, range, layout) {
|
|
|
5854
5854
|
if (range.min >= 0) {
|
|
5855
5855
|
return null;
|
|
5856
5856
|
}
|
|
5857
|
-
const y =
|
|
5857
|
+
const y = chunkZ2ZC5QTJ_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
|
|
5858
5858
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5859
5859
|
"line",
|
|
5860
5860
|
{
|
|
@@ -5878,7 +5878,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5878
5878
|
const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
|
|
5879
5879
|
for (let i = 0; i <= steps; i++) {
|
|
5880
5880
|
const val = range.min + range.span * i / steps;
|
|
5881
|
-
const y =
|
|
5881
|
+
const y = chunkZ2ZC5QTJ_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5882
5882
|
labels.push(
|
|
5883
5883
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5884
5884
|
"text",
|
|
@@ -5890,7 +5890,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5890
5890
|
fontFamily,
|
|
5891
5891
|
fontWeight,
|
|
5892
5892
|
fill: fontColor,
|
|
5893
|
-
children: hasDisplayUnits ?
|
|
5893
|
+
children: hasDisplayUnits ? chunkZ2ZC5QTJ_js.formatAxisValueWithUnits(val, axisFormatting) : chunkZ2ZC5QTJ_js.formatAxisValue(val)
|
|
5894
5894
|
},
|
|
5895
5895
|
`${id}-sec-vaxis-${i}`
|
|
5896
5896
|
)
|
|
@@ -5914,7 +5914,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5914
5914
|
);
|
|
5915
5915
|
}
|
|
5916
5916
|
if (hasDisplayUnits) {
|
|
5917
|
-
const unitLabel =
|
|
5917
|
+
const unitLabel = chunkZ2ZC5QTJ_js.getDisplayUnitLabel(
|
|
5918
5918
|
axisFormatting.displayUnits,
|
|
5919
5919
|
axisFormatting.displayUnitsLabel
|
|
5920
5920
|
);
|
|
@@ -5945,7 +5945,7 @@ function renderSecondaryAxisTicks(id, range, layout) {
|
|
|
5945
5945
|
const ticks = [];
|
|
5946
5946
|
for (let i = 0; i <= steps; i++) {
|
|
5947
5947
|
const val = range.min + range.span * i / steps;
|
|
5948
|
-
const y =
|
|
5948
|
+
const y = chunkZ2ZC5QTJ_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5949
5949
|
ticks.push(
|
|
5950
5950
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5951
5951
|
"line",
|
|
@@ -5972,7 +5972,7 @@ function renderSecondaryGridlines(id, range, layout, axisFormatting) {
|
|
|
5972
5972
|
const gridColor = axisFormatting.majorGridlinesSpPr?.strokeColor ?? "#e2e8f0";
|
|
5973
5973
|
for (let i = 0; i <= steps; i++) {
|
|
5974
5974
|
const val = range.min + range.span * i / steps;
|
|
5975
|
-
const y =
|
|
5975
|
+
const y = chunkZ2ZC5QTJ_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5976
5976
|
lines.push(
|
|
5977
5977
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5978
5978
|
"line",
|
|
@@ -6134,7 +6134,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
|
|
|
6134
6134
|
width: 8,
|
|
6135
6135
|
height: 8,
|
|
6136
6136
|
borderRadius: 2,
|
|
6137
|
-
backgroundColor:
|
|
6137
|
+
backgroundColor: chunkZ2ZC5QTJ_js.seriesColor(
|
|
6138
6138
|
s,
|
|
6139
6139
|
si,
|
|
6140
6140
|
chartData.style?.styleId,
|
|
@@ -6173,8 +6173,8 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
|
|
|
6173
6173
|
function renderStockChart(element, chartData, categoryLabels) {
|
|
6174
6174
|
const style = chartData.style;
|
|
6175
6175
|
const legendPos = style?.legendPosition || "b";
|
|
6176
|
-
const range =
|
|
6177
|
-
const layout =
|
|
6176
|
+
const range = chunkZ2ZC5QTJ_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6177
|
+
const layout = chunkZ2ZC5QTJ_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6178
6178
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6179
6179
|
const barGroupWidth = layout.plotWidth / catCount;
|
|
6180
6180
|
const candleWidth = barGroupWidth * 0.5;
|
|
@@ -6195,10 +6195,10 @@ function renderStockChart(element, chartData, categoryLabels) {
|
|
|
6195
6195
|
const close = closeSeries.values[ci] ?? high;
|
|
6196
6196
|
const isUp = close >= open;
|
|
6197
6197
|
const cx = layout.plotLeft + barGroupWidth * ci + barGroupWidth / 2;
|
|
6198
|
-
const highY =
|
|
6199
|
-
const lowY =
|
|
6200
|
-
const openY =
|
|
6201
|
-
const closeY =
|
|
6198
|
+
const highY = chunkZ2ZC5QTJ_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
|
|
6199
|
+
const lowY = chunkZ2ZC5QTJ_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
|
|
6200
|
+
const openY = chunkZ2ZC5QTJ_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
|
|
6201
|
+
const closeY = chunkZ2ZC5QTJ_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
|
|
6202
6202
|
elements.push(
|
|
6203
6203
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6204
6204
|
"line",
|
|
@@ -6241,7 +6241,7 @@ function renderStockChart(element, chartData, categoryLabels) {
|
|
|
6241
6241
|
textAnchor: "middle",
|
|
6242
6242
|
fontSize: 7,
|
|
6243
6243
|
fill: "#334155",
|
|
6244
|
-
children:
|
|
6244
|
+
children: chunkZ2ZC5QTJ_js.formatAxisValue(close)
|
|
6245
6245
|
},
|
|
6246
6246
|
`${element.id}-stock-dl-${ci}`
|
|
6247
6247
|
)
|
|
@@ -6283,7 +6283,7 @@ function FailedToLoad() {
|
|
|
6283
6283
|
var LazySurfaceChart3DScene = React6__default.default.lazy(
|
|
6284
6284
|
async () => {
|
|
6285
6285
|
try {
|
|
6286
|
-
return await import('./SurfaceChart3DScene-
|
|
6286
|
+
return await import('./SurfaceChart3DScene-EOJ6FO7H.js');
|
|
6287
6287
|
} catch {
|
|
6288
6288
|
return { default: FailedToLoad };
|
|
6289
6289
|
}
|
|
@@ -6307,7 +6307,7 @@ var SurfaceChart3DErrorBoundary = class extends React6__default.default.Componen
|
|
|
6307
6307
|
function buildSurfaceData(chartData, categoryLabels) {
|
|
6308
6308
|
const rows = chartData.series.length;
|
|
6309
6309
|
const cols = Math.max(categoryLabels.length, 1);
|
|
6310
|
-
const range =
|
|
6310
|
+
const range = chunkZ2ZC5QTJ_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6311
6311
|
const heightMap = new Float32Array(rows * cols);
|
|
6312
6312
|
const colorMap = new Float32Array(rows * cols * 3);
|
|
6313
6313
|
for (let r = 0; r < rows; r++) {
|
|
@@ -6427,8 +6427,8 @@ function darkenRgb(r, g, b, factor) {
|
|
|
6427
6427
|
function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
|
|
6428
6428
|
const style = chartData.style;
|
|
6429
6429
|
const legendPos = style?.legendPosition || "b";
|
|
6430
|
-
const layout =
|
|
6431
|
-
const range =
|
|
6430
|
+
const layout = chunkZ2ZC5QTJ_js.computeLayout(element.width, element.height, style, false, legendPos);
|
|
6431
|
+
const range = chunkZ2ZC5QTJ_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6432
6432
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6433
6433
|
const seriesCount = chartData.series.length;
|
|
6434
6434
|
const cols = catCount - 1;
|
|
@@ -6518,8 +6518,8 @@ function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
|
|
|
6518
6518
|
function renderFlatSurfaceChart(element, chartData, categoryLabels) {
|
|
6519
6519
|
const style = chartData.style;
|
|
6520
6520
|
const legendPos = style?.legendPosition || "b";
|
|
6521
|
-
const layout =
|
|
6522
|
-
const range =
|
|
6521
|
+
const layout = chunkZ2ZC5QTJ_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6522
|
+
const range = chunkZ2ZC5QTJ_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6523
6523
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6524
6524
|
const seriesCount = chartData.series.length;
|
|
6525
6525
|
const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
|
|
@@ -6582,7 +6582,7 @@ function renderSurfaceChart(element, chartData, categoryLabels) {
|
|
|
6582
6582
|
function renderTreemapChart(element, chartData, categoryLabels) {
|
|
6583
6583
|
const style = chartData.style;
|
|
6584
6584
|
const legendPos = style?.legendPosition || "b";
|
|
6585
|
-
const layout =
|
|
6585
|
+
const layout = chunkZ2ZC5QTJ_js.computeLayout(element.width, element.height, style, false, legendPos);
|
|
6586
6586
|
const allValues = chartData.series.flatMap((s) => s.values);
|
|
6587
6587
|
const totalAbs = allValues.reduce((sum, v) => sum + Math.abs(v), 0) || 1;
|
|
6588
6588
|
const rects = [];
|
|
@@ -6605,7 +6605,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
|
|
|
6605
6605
|
y: curY,
|
|
6606
6606
|
width: Math.max(w - 1, 1),
|
|
6607
6607
|
height: Math.max(h - 1, 1),
|
|
6608
|
-
fill:
|
|
6608
|
+
fill: chunkZ2ZC5QTJ_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
|
|
6609
6609
|
rx: 2,
|
|
6610
6610
|
opacity: 0.85
|
|
6611
6611
|
},
|
|
@@ -6658,8 +6658,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6658
6658
|
const style = chartData.style;
|
|
6659
6659
|
const legendPos = style?.legendPosition || "b";
|
|
6660
6660
|
const values = chartData.series[0]?.values ?? [];
|
|
6661
|
-
const range =
|
|
6662
|
-
const layout =
|
|
6661
|
+
const range = chunkZ2ZC5QTJ_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6662
|
+
const layout = chunkZ2ZC5QTJ_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6663
6663
|
const catCount = Math.max(categoryLabels.length, values.length, 1);
|
|
6664
6664
|
const barWidth = layout.plotWidth / catCount * 0.6;
|
|
6665
6665
|
const gap = layout.plotWidth / catCount * 0.2;
|
|
@@ -6670,8 +6670,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6670
6670
|
const isLast = i === values.length - 1;
|
|
6671
6671
|
const startVal = isLast ? 0 : runningTotal;
|
|
6672
6672
|
const endVal = isLast ? runningTotal + val : runningTotal + val;
|
|
6673
|
-
const barStartY =
|
|
6674
|
-
const barEndY =
|
|
6673
|
+
const barStartY = chunkZ2ZC5QTJ_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
|
|
6674
|
+
const barEndY = chunkZ2ZC5QTJ_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
|
|
6675
6675
|
const x = layout.plotLeft + layout.plotWidth / catCount * i + gap;
|
|
6676
6676
|
const y = Math.min(barStartY, barEndY);
|
|
6677
6677
|
const h = Math.max(Math.abs(barEndY - barStartY), 1);
|
|
@@ -6700,7 +6700,7 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6700
6700
|
textAnchor: "middle",
|
|
6701
6701
|
fontSize: 7,
|
|
6702
6702
|
fill: "#334155",
|
|
6703
|
-
children:
|
|
6703
|
+
children: chunkZ2ZC5QTJ_js.formatAxisValue(isLast ? endVal : val)
|
|
6704
6704
|
},
|
|
6705
6705
|
`${element.id}-wf-dl-${i}`
|
|
6706
6706
|
)
|
|
@@ -6748,18 +6748,18 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6748
6748
|
function renderComboChart(element, chartData, categoryLabels) {
|
|
6749
6749
|
const style = chartData.style;
|
|
6750
6750
|
const legendPos = style?.legendPosition || "b";
|
|
6751
|
-
const layoutOpts =
|
|
6751
|
+
const layoutOpts = chunkZ2ZC5QTJ_js.computeLayoutOptions(
|
|
6752
6752
|
chartData.axes,
|
|
6753
6753
|
chartData.dataTable,
|
|
6754
6754
|
chartData.series.length
|
|
6755
6755
|
);
|
|
6756
|
-
const layout =
|
|
6757
|
-
const { primary, secondary } =
|
|
6756
|
+
const layout = chunkZ2ZC5QTJ_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
|
|
6757
|
+
const { primary, secondary } = chunkZ2ZC5QTJ_js.splitSeriesByAxis(chartData.series, chartData.axes);
|
|
6758
6758
|
const primarySeries = primary.length > 0 ? primary.map((e) => e.series) : chartData.series;
|
|
6759
6759
|
const secondarySeries = secondary.map((e) => e.series);
|
|
6760
|
-
const range =
|
|
6761
|
-
const secondaryRange = secondarySeries.length > 0 ?
|
|
6762
|
-
const secondaryAxisFmt =
|
|
6760
|
+
const range = chunkZ2ZC5QTJ_js.computeValueRangeForChart(primarySeries, chartData.axes);
|
|
6761
|
+
const secondaryRange = secondarySeries.length > 0 ? chunkZ2ZC5QTJ_js.computeValueRange(secondarySeries) : void 0;
|
|
6762
|
+
const secondaryAxisFmt = chunkZ2ZC5QTJ_js.getSecondaryValueAxis(chartData.axes);
|
|
6763
6763
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6764
6764
|
const barSeriesCount = 1;
|
|
6765
6765
|
const barGroupWidth = layout.plotWidth / catCount;
|
|
@@ -6775,8 +6775,8 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6775
6775
|
const barRange = isBarSecondary && secondaryRange ? secondaryRange : range;
|
|
6776
6776
|
barSeries.values.forEach((val, vi) => {
|
|
6777
6777
|
const x = layout.plotLeft + barGroupWidth * vi + barOffset;
|
|
6778
|
-
const zeroY =
|
|
6779
|
-
const valY =
|
|
6778
|
+
const zeroY = chunkZ2ZC5QTJ_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
|
|
6779
|
+
const valY = chunkZ2ZC5QTJ_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
|
|
6780
6780
|
const y = Math.min(zeroY, valY);
|
|
6781
6781
|
const h = Math.max(Math.abs(zeroY - valY), 1);
|
|
6782
6782
|
barElements.push(
|
|
@@ -6787,7 +6787,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6787
6787
|
y,
|
|
6788
6788
|
width: barWidth,
|
|
6789
6789
|
height: h,
|
|
6790
|
-
fill:
|
|
6790
|
+
fill: chunkZ2ZC5QTJ_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
|
|
6791
6791
|
rx: 1
|
|
6792
6792
|
},
|
|
6793
6793
|
`${element.id}-combo-bar-${vi}`
|
|
@@ -6803,7 +6803,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6803
6803
|
textAnchor: "middle",
|
|
6804
6804
|
fontSize: 7,
|
|
6805
6805
|
fill: "#334155",
|
|
6806
|
-
children:
|
|
6806
|
+
children: chunkZ2ZC5QTJ_js.formatAxisValue(val)
|
|
6807
6807
|
},
|
|
6808
6808
|
`${element.id}-combo-bar-dl-${vi}`
|
|
6809
6809
|
)
|
|
@@ -6820,10 +6820,10 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6820
6820
|
const activeRange = isSecondary && secondaryRange ? secondaryRange : range;
|
|
6821
6821
|
const points = series.values.map((val, vi) => {
|
|
6822
6822
|
const x = layout.plotLeft + barGroupWidth * vi + barGroupWidth / 2;
|
|
6823
|
-
const y =
|
|
6823
|
+
const y = chunkZ2ZC5QTJ_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
|
|
6824
6824
|
return { x, y, val };
|
|
6825
6825
|
});
|
|
6826
|
-
const c =
|
|
6826
|
+
const c = chunkZ2ZC5QTJ_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
|
|
6827
6827
|
lineElements.push(
|
|
6828
6828
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6829
6829
|
"polyline",
|
|
@@ -6850,7 +6850,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6850
6850
|
textAnchor: "middle",
|
|
6851
6851
|
fontSize: 7,
|
|
6852
6852
|
fill: "#334155",
|
|
6853
|
-
children:
|
|
6853
|
+
children: chunkZ2ZC5QTJ_js.formatAxisValue(p.val)
|
|
6854
6854
|
},
|
|
6855
6855
|
`${element.id}-combo-line-dl-${si}-${vi}`
|
|
6856
6856
|
)
|
|
@@ -7996,14 +7996,14 @@ function buildNotesPdf(pages) {
|
|
|
7996
7996
|
notes: page.notes,
|
|
7997
7997
|
slideNumber: page.slideNumber
|
|
7998
7998
|
}));
|
|
7999
|
-
const bytes =
|
|
7999
|
+
const bytes = chunkZ2ZC5QTJ_js.buildNotesPdfBytes(images, meta);
|
|
8000
8000
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
8001
8001
|
return URL.createObjectURL(blob);
|
|
8002
8002
|
}
|
|
8003
8003
|
|
|
8004
8004
|
// src/viewer/utils/pdf-builder-slides.ts
|
|
8005
8005
|
function buildPdfFromImageData(images) {
|
|
8006
|
-
const bytes =
|
|
8006
|
+
const bytes = chunkZ2ZC5QTJ_js.buildSlidesPdfBytes(images);
|
|
8007
8007
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
8008
8008
|
return URL.createObjectURL(blob);
|
|
8009
8009
|
}
|
|
@@ -8012,7 +8012,7 @@ function buildPdfFromImageData(images) {
|
|
|
8012
8012
|
var activePreview = null;
|
|
8013
8013
|
function startPreviewAnimation(elementId, preset, options) {
|
|
8014
8014
|
stopPreviewAnimation();
|
|
8015
|
-
const descriptor =
|
|
8015
|
+
const descriptor = chunkZ2ZC5QTJ_js.buildPreviewAnimation(preset, options);
|
|
8016
8016
|
if (!descriptor) {
|
|
8017
8017
|
return;
|
|
8018
8018
|
}
|