pptx-react-viewer 2.2.0 → 2.3.0
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-S3FWARWG.js → AiChatPanel-HC3CE3TL.js} +23 -23
- package/dist/AiChatPanel-HC3CE3TL.js.br +0 -0
- package/dist/AiChatPanel-HC3CE3TL.js.gz +0 -0
- package/dist/{AiChatPanel-JFCJCR3O.mjs → AiChatPanel-PXZYHJUB.mjs} +4 -4
- package/dist/AiChatPanel-PXZYHJUB.mjs.br +0 -0
- package/dist/AiChatPanel-PXZYHJUB.mjs.gz +0 -0
- package/dist/{Model3DScene-BZK4UHL4.js → Model3DScene-37QZRHV5.js} +3 -3
- package/dist/Model3DScene-37QZRHV5.js.br +0 -0
- package/dist/Model3DScene-37QZRHV5.js.gz +0 -0
- package/dist/{Model3DScene-RCZCBW52.mjs → Model3DScene-ZG4HTMPX.mjs} +2 -2
- package/dist/Model3DScene-ZG4HTMPX.mjs.br +0 -0
- package/dist/Model3DScene-ZG4HTMPX.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-EGPAMPX4.js → SurfaceChart3DScene-QIREQ66D.js} +3 -3
- package/dist/SurfaceChart3DScene-QIREQ66D.js.br +0 -0
- package/dist/SurfaceChart3DScene-QIREQ66D.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-IRLH4ADG.mjs → SurfaceChart3DScene-Z7R6DZXN.mjs} +2 -2
- package/dist/{SurfaceChart3DScene-IRLH4ADG.mjs.br → SurfaceChart3DScene-Z7R6DZXN.mjs.br} +0 -0
- package/dist/SurfaceChart3DScene-Z7R6DZXN.mjs.gz +0 -0
- package/dist/{chunk-CLNGAVNH.js → chunk-3TB45PVK.js} +69 -111
- package/dist/chunk-3TB45PVK.js.br +0 -0
- package/dist/chunk-3TB45PVK.js.gz +0 -0
- package/dist/{chunk-RLK72AOU.mjs → chunk-4AAFZFGH.mjs} +36 -7
- package/dist/chunk-4AAFZFGH.mjs.br +0 -0
- package/dist/chunk-4AAFZFGH.mjs.gz +0 -0
- package/dist/{chunk-SYPHGLIB.js → chunk-EUIFPDXZ.js} +3 -3
- package/dist/chunk-EUIFPDXZ.js.br +0 -0
- package/dist/chunk-EUIFPDXZ.js.gz +0 -0
- package/dist/{chunk-L4ETDT4F.mjs → chunk-I5LEMC5C.mjs} +4 -4
- package/dist/chunk-I5LEMC5C.mjs.br +0 -0
- package/dist/chunk-I5LEMC5C.mjs.gz +0 -0
- package/dist/{chunk-6BUR4MJO.mjs → chunk-J5A22DZ7.mjs} +63 -38
- package/dist/chunk-J5A22DZ7.mjs.br +0 -0
- package/dist/chunk-J5A22DZ7.mjs.gz +0 -0
- package/dist/{chunk-6YXLGMTN.mjs → chunk-JFNMD6TM.mjs} +68 -112
- package/dist/chunk-JFNMD6TM.mjs.br +0 -0
- package/dist/chunk-JFNMD6TM.mjs.gz +0 -0
- package/dist/{chunk-UTTXH3GH.js → chunk-KDW3LLG5.js} +77 -47
- package/dist/chunk-KDW3LLG5.js.br +0 -0
- package/dist/chunk-KDW3LLG5.js.gz +0 -0
- package/dist/{chunk-JPJBOVU7.js → chunk-L7JNCVTF.js} +309 -309
- package/dist/chunk-L7JNCVTF.js.br +0 -0
- package/dist/chunk-L7JNCVTF.js.gz +0 -0
- package/dist/{chunk-BHVCED34.mjs → chunk-M5YR3QSB.mjs} +1 -1
- package/dist/chunk-M5YR3QSB.mjs.br +0 -0
- package/dist/chunk-M5YR3QSB.mjs.gz +0 -0
- package/dist/{chunk-RNZJKGA7.js → chunk-P7UVBRFO.js} +257 -241
- package/dist/chunk-P7UVBRFO.js.br +0 -0
- package/dist/chunk-P7UVBRFO.js.gz +0 -0
- package/dist/{chunk-SOHIKHL4.mjs → chunk-VOHTAUN4.mjs} +23 -7
- package/dist/chunk-VOHTAUN4.mjs.br +0 -0
- package/dist/chunk-VOHTAUN4.mjs.gz +0 -0
- package/dist/{chunk-3KD6S6VM.js → chunk-ZLSVW5GP.js} +898 -873
- package/dist/chunk-ZLSVW5GP.js.br +0 -0
- package/dist/chunk-ZLSVW5GP.js.gz +0 -0
- package/dist/{dist-4LUVI3SW.js → dist-FTEVZZPM.js} +576 -568
- package/dist/dist-FTEVZZPM.js.br +0 -0
- package/dist/dist-FTEVZZPM.js.gz +0 -0
- package/dist/{dist-J6PC54PZ.mjs → dist-L7GZVBMG.mjs} +1 -1
- package/dist/dist-L7GZVBMG.mjs.br +0 -0
- package/dist/dist-L7GZVBMG.mjs.gz +0 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +35 -35
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +13 -0
- package/dist/internals.js +79 -79
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -4
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/viewer/index.d.ts +13 -0
- package/dist/viewer/index.js +22 -22
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -6
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-JFCJCR3O.mjs.br +0 -0
- package/dist/AiChatPanel-JFCJCR3O.mjs.gz +0 -0
- package/dist/AiChatPanel-S3FWARWG.js.br +0 -0
- package/dist/AiChatPanel-S3FWARWG.js.gz +0 -0
- package/dist/Model3DScene-BZK4UHL4.js.br +0 -0
- package/dist/Model3DScene-BZK4UHL4.js.gz +0 -0
- package/dist/Model3DScene-RCZCBW52.mjs.br +0 -0
- package/dist/Model3DScene-RCZCBW52.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-EGPAMPX4.js.br +0 -0
- package/dist/SurfaceChart3DScene-EGPAMPX4.js.gz +0 -0
- package/dist/SurfaceChart3DScene-IRLH4ADG.mjs.gz +0 -0
- package/dist/chunk-3KD6S6VM.js.br +0 -0
- package/dist/chunk-3KD6S6VM.js.gz +0 -0
- package/dist/chunk-6BUR4MJO.mjs.br +0 -0
- package/dist/chunk-6BUR4MJO.mjs.gz +0 -0
- package/dist/chunk-6YXLGMTN.mjs.br +0 -0
- package/dist/chunk-6YXLGMTN.mjs.gz +0 -0
- package/dist/chunk-BHVCED34.mjs.br +0 -0
- package/dist/chunk-BHVCED34.mjs.gz +0 -0
- package/dist/chunk-CLNGAVNH.js.br +0 -0
- package/dist/chunk-CLNGAVNH.js.gz +0 -0
- package/dist/chunk-JPJBOVU7.js.br +0 -0
- package/dist/chunk-JPJBOVU7.js.gz +0 -0
- package/dist/chunk-L4ETDT4F.mjs.br +0 -0
- package/dist/chunk-L4ETDT4F.mjs.gz +0 -0
- package/dist/chunk-RLK72AOU.mjs.br +0 -0
- package/dist/chunk-RLK72AOU.mjs.gz +0 -0
- package/dist/chunk-RNZJKGA7.js.br +0 -0
- package/dist/chunk-RNZJKGA7.js.gz +0 -0
- package/dist/chunk-SOHIKHL4.mjs.br +0 -0
- package/dist/chunk-SOHIKHL4.mjs.gz +0 -0
- package/dist/chunk-SYPHGLIB.js.br +0 -0
- package/dist/chunk-SYPHGLIB.js.gz +0 -0
- package/dist/chunk-UTTXH3GH.js.br +0 -0
- package/dist/chunk-UTTXH3GH.js.gz +0 -0
- package/dist/dist-4LUVI3SW.js.br +0 -0
- package/dist/dist-4LUVI3SW.js.gz +0 -0
- package/dist/dist-J6PC54PZ.mjs.br +0 -0
- package/dist/dist-J6PC54PZ.mjs.gz +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkKDW3LLG5_js = require('./chunk-KDW3LLG5.js');
|
|
4
4
|
var chunkYIFO3WQO_js = require('./chunk-YIFO3WQO.js');
|
|
5
|
-
var
|
|
5
|
+
var chunk3TB45PVK_js = require('./chunk-3TB45PVK.js');
|
|
6
6
|
var clsx = require('clsx');
|
|
7
7
|
var tailwindMerge = require('tailwind-merge');
|
|
8
8
|
var React6 = require('react');
|
|
@@ -16,7 +16,7 @@ var React6__default = /*#__PURE__*/_interopDefault(React6);
|
|
|
16
16
|
|
|
17
17
|
// src/viewer/utils/animation-effects.ts
|
|
18
18
|
function getAnimationInitialStyle2(preset, nativeAnimation) {
|
|
19
|
-
return
|
|
19
|
+
return chunkKDW3LLG5_js.getAnimationInitialStyle(preset, nativeAnimation);
|
|
20
20
|
}
|
|
21
21
|
function cn(...inputs) {
|
|
22
22
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
@@ -24,7 +24,7 @@ function cn(...inputs) {
|
|
|
24
24
|
|
|
25
25
|
// src/viewer/utils/clone.ts
|
|
26
26
|
function cloneHistorySnapshot2(snapshot) {
|
|
27
|
-
return
|
|
27
|
+
return chunkKDW3LLG5_js.cloneHistorySnapshot(snapshot);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
// src/viewer/constants/scalar.ts
|
|
@@ -134,7 +134,7 @@ var GLYPH_COMPONENTS = {
|
|
|
134
134
|
plus: lu.LuPlus,
|
|
135
135
|
triangle: lu.LuTriangle
|
|
136
136
|
};
|
|
137
|
-
var SHAPE_PRESETS =
|
|
137
|
+
var SHAPE_PRESETS = chunkKDW3LLG5_js.SHAPE_PRESET_DEFS.map(
|
|
138
138
|
(def) => ({
|
|
139
139
|
type: def.type,
|
|
140
140
|
label: def.label,
|
|
@@ -252,7 +252,7 @@ function isConnectorOrLineElement(element) {
|
|
|
252
252
|
if (element.type === "connector") {
|
|
253
253
|
return true;
|
|
254
254
|
}
|
|
255
|
-
if (!
|
|
255
|
+
if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
|
|
256
256
|
return false;
|
|
257
257
|
}
|
|
258
258
|
const st = getShapeType(element.shapeType);
|
|
@@ -263,12 +263,12 @@ function isConnectorOrLineElement(element) {
|
|
|
263
263
|
function partitionTemplateElements(slides) {
|
|
264
264
|
const templateElementsBySlideId = {};
|
|
265
265
|
const nextSlides = slides.map((slide) => {
|
|
266
|
-
const template = slide.elements.filter((el) =>
|
|
266
|
+
const template = slide.elements.filter((el) => chunkKDW3LLG5_js.isTemplateElement(el));
|
|
267
267
|
if (template.length === 0) {
|
|
268
268
|
return slide;
|
|
269
269
|
}
|
|
270
270
|
templateElementsBySlideId[slide.id] = template;
|
|
271
|
-
return { ...slide, elements: slide.elements.filter((el) => !
|
|
271
|
+
return { ...slide, elements: slide.elements.filter((el) => !chunkKDW3LLG5_js.isTemplateElement(el)) };
|
|
272
272
|
});
|
|
273
273
|
return { slides: nextSlides, templateElementsBySlideId };
|
|
274
274
|
}
|
|
@@ -284,7 +284,7 @@ function buildSaveSlides(slides, templateElementsBySlideId) {
|
|
|
284
284
|
|
|
285
285
|
// src/viewer/utils/image-style.ts
|
|
286
286
|
function getImageMaskStyle(element) {
|
|
287
|
-
if (!
|
|
287
|
+
if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
|
|
288
288
|
return void 0;
|
|
289
289
|
}
|
|
290
290
|
const shapeType = element.shapeType;
|
|
@@ -293,7 +293,7 @@ function getImageMaskStyle(element) {
|
|
|
293
293
|
}
|
|
294
294
|
const normalized = shapeType.toLowerCase();
|
|
295
295
|
if (normalized === "roundrect" || normalized === "round1rect" || normalized === "round2samerect" || normalized === "round2diagrect" || normalized === "sniproundrect" || normalized === "snip1rect" || normalized === "snip2diagrect") {
|
|
296
|
-
const radiusPx =
|
|
296
|
+
const radiusPx = chunkKDW3LLG5_js.getRoundRectRadiusPx(element);
|
|
297
297
|
if (radiusPx <= 0.01) {
|
|
298
298
|
return void 0;
|
|
299
299
|
}
|
|
@@ -305,7 +305,7 @@ function getImageMaskStyle(element) {
|
|
|
305
305
|
if (normalized === "can" || normalized === "cylinder") {
|
|
306
306
|
return { borderRadius: "48% / 12%" };
|
|
307
307
|
}
|
|
308
|
-
const clipPath =
|
|
308
|
+
const clipPath = chunkKDW3LLG5_js.getResolvedShapeClipPath(element);
|
|
309
309
|
if (!clipPath) {
|
|
310
310
|
return void 0;
|
|
311
311
|
}
|
|
@@ -313,7 +313,7 @@ function getImageMaskStyle(element) {
|
|
|
313
313
|
}
|
|
314
314
|
function getImageRenderStyle(element) {
|
|
315
315
|
const maskStyle = getImageMaskStyle(element) || {};
|
|
316
|
-
if (!
|
|
316
|
+
if (!chunk3TB45PVK_js.isImageLikeElement(element)) {
|
|
317
317
|
return {
|
|
318
318
|
...maskStyle,
|
|
319
319
|
width: "100%",
|
|
@@ -321,10 +321,10 @@ function getImageRenderStyle(element) {
|
|
|
321
321
|
objectFit: "cover"
|
|
322
322
|
};
|
|
323
323
|
}
|
|
324
|
-
const cropLeft =
|
|
325
|
-
const cropTop =
|
|
326
|
-
const cropRight =
|
|
327
|
-
const cropBottom =
|
|
324
|
+
const cropLeft = chunkKDW3LLG5_js.clampCropValue(element.cropLeft);
|
|
325
|
+
const cropTop = chunkKDW3LLG5_js.clampCropValue(element.cropTop);
|
|
326
|
+
const cropRight = chunkKDW3LLG5_js.clampCropValue(element.cropRight);
|
|
327
|
+
const cropBottom = chunkKDW3LLG5_js.clampCropValue(element.cropBottom);
|
|
328
328
|
const hasCrop = cropLeft + cropRight > 1e-4 || cropTop + cropBottom > 1e-4;
|
|
329
329
|
if (!hasCrop) {
|
|
330
330
|
return {
|
|
@@ -336,10 +336,10 @@ function getImageRenderStyle(element) {
|
|
|
336
336
|
}
|
|
337
337
|
const safeHorizontalScale = cropLeft + cropRight >= 0.99 ? 0.99 / (cropLeft + cropRight) : 1;
|
|
338
338
|
const safeVerticalScale = cropTop + cropBottom >= 0.99 ? 0.99 / (cropTop + cropBottom) : 1;
|
|
339
|
-
const normalizedLeft =
|
|
340
|
-
const normalizedRight =
|
|
341
|
-
const normalizedTop =
|
|
342
|
-
const normalizedBottom =
|
|
339
|
+
const normalizedLeft = chunkKDW3LLG5_js.clampCropValue(cropLeft * safeHorizontalScale);
|
|
340
|
+
const normalizedRight = chunkKDW3LLG5_js.clampCropValue(cropRight * safeHorizontalScale);
|
|
341
|
+
const normalizedTop = chunkKDW3LLG5_js.clampCropValue(cropTop * safeVerticalScale);
|
|
342
|
+
const normalizedBottom = chunkKDW3LLG5_js.clampCropValue(cropBottom * safeVerticalScale);
|
|
343
343
|
const remainingWidth = Math.max(0.01, 1 - normalizedLeft - normalizedRight);
|
|
344
344
|
const remainingHeight = Math.max(0.01, 1 - normalizedTop - normalizedBottom);
|
|
345
345
|
const tx = Math.round(-normalizedLeft / remainingWidth * 1e4) / 100;
|
|
@@ -368,7 +368,7 @@ var CROP_SHAPE_CLIP_PATHS = {
|
|
|
368
368
|
star: "polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%)"
|
|
369
369
|
};
|
|
370
370
|
function getCropShapeClipPath(element) {
|
|
371
|
-
if (!
|
|
371
|
+
if (!chunk3TB45PVK_js.isImageLikeElement(element)) {
|
|
372
372
|
return void 0;
|
|
373
373
|
}
|
|
374
374
|
const shape = element.cropShape;
|
|
@@ -378,7 +378,7 @@ function getCropShapeClipPath(element) {
|
|
|
378
378
|
return CROP_SHAPE_CLIP_PATHS[shape];
|
|
379
379
|
}
|
|
380
380
|
function isImageTiled(element) {
|
|
381
|
-
if (!
|
|
381
|
+
if (!chunk3TB45PVK_js.isImageLikeElement(element)) {
|
|
382
382
|
return false;
|
|
383
383
|
}
|
|
384
384
|
return typeof element.tileScaleX === "number" || typeof element.tileScaleY === "number";
|
|
@@ -436,7 +436,7 @@ function buildMirrorTiledBackground(src, flip, scaleX, scaleY) {
|
|
|
436
436
|
};
|
|
437
437
|
}
|
|
438
438
|
function getImageTilingStyle(element) {
|
|
439
|
-
if (!
|
|
439
|
+
if (!chunk3TB45PVK_js.isImageLikeElement(element) || !isImageTiled(element)) {
|
|
440
440
|
return void 0;
|
|
441
441
|
}
|
|
442
442
|
const scaleX = typeof element.tileScaleX === "number" ? element.tileScaleX * 100 : 100;
|
|
@@ -720,7 +720,7 @@ function executeMediaCommand(command) {
|
|
|
720
720
|
if (!el) {
|
|
721
721
|
return false;
|
|
722
722
|
}
|
|
723
|
-
const parsed =
|
|
723
|
+
const parsed = chunkKDW3LLG5_js.parseMediaCommand(command.command);
|
|
724
724
|
if (!parsed) {
|
|
725
725
|
return false;
|
|
726
726
|
}
|
|
@@ -1172,7 +1172,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
1172
1172
|
|
|
1173
1173
|
// src/viewer/utils/text-utils.tsx
|
|
1174
1174
|
function getTextStyleForElement(element, fallbackColor) {
|
|
1175
|
-
if (!
|
|
1175
|
+
if (!chunk3TB45PVK_js.hasTextProperties(element)) {
|
|
1176
1176
|
return { color: fallbackColor };
|
|
1177
1177
|
}
|
|
1178
1178
|
const textDecorationTokens = [];
|
|
@@ -1186,20 +1186,20 @@ function getTextStyleForElement(element, fallbackColor) {
|
|
|
1186
1186
|
const textDecorationStyle = isDoubleStrike ? "double" : void 0;
|
|
1187
1187
|
const hasItalicRuns = element.textStyle?.italic || Boolean(element.textSegments?.some((segment) => segment.style?.italic));
|
|
1188
1188
|
const isRtl = element.textStyle?.rtl === true;
|
|
1189
|
-
const resolvedTextColor = element.textStyle?.hyperlink ?
|
|
1189
|
+
const resolvedTextColor = element.textStyle?.hyperlink ? chunkKDW3LLG5_js.normalizeHexColor(element.textStyle?.color, HYPERLINK_COLOR) : chunkKDW3LLG5_js.normalizeHexColor(element.textStyle?.color, fallbackColor);
|
|
1190
1190
|
const bodyTop = element.textStyle?.bodyInsetTop ?? DEFAULT_BODY_INSET_TB_PX;
|
|
1191
1191
|
const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
|
|
1192
1192
|
const bodyLeft = element.textStyle?.bodyInsetLeft ?? DEFAULT_BODY_INSET_LR_PX;
|
|
1193
1193
|
const bodyRight = element.textStyle?.bodyInsetRight ?? DEFAULT_BODY_INSET_LR_PX;
|
|
1194
|
-
const writingMode =
|
|
1195
|
-
const textOrientation =
|
|
1196
|
-
const verticalDirection =
|
|
1194
|
+
const writingMode = chunkKDW3LLG5_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
1195
|
+
const textOrientation = chunkKDW3LLG5_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
1196
|
+
const verticalDirection = chunkKDW3LLG5_js.toCssVerticalDirection(element.textStyle?.textDirection);
|
|
1197
1197
|
const resolvedDirection = verticalDirection || (isRtl ? "rtl" : "ltr");
|
|
1198
1198
|
const resolvedUnicodeBidi = isRtl ? "plaintext" : void 0;
|
|
1199
1199
|
const hasSegments = (element.textSegments?.length ?? 0) > 0;
|
|
1200
1200
|
return {
|
|
1201
1201
|
color: resolvedTextColor,
|
|
1202
|
-
backgroundColor: !hasSegments && element.textStyle?.highlightColor ?
|
|
1202
|
+
backgroundColor: !hasSegments && element.textStyle?.highlightColor ? chunkKDW3LLG5_js.normalizeHexColor(element.textStyle.highlightColor, void 0) : void 0,
|
|
1203
1203
|
textAlign: (() => {
|
|
1204
1204
|
const a = element.textStyle?.align;
|
|
1205
1205
|
if (a === "justLow" || a === "dist" || a === "thaiDist") {
|
|
@@ -1215,7 +1215,7 @@ function getTextStyleForElement(element, fallbackColor) {
|
|
|
1215
1215
|
textDecorationLine: textDecorationTokens.length > 0 ? textDecorationTokens.join(" ") : "none",
|
|
1216
1216
|
textDecorationStyle,
|
|
1217
1217
|
fontFamily: element.textStyle?.fontFamily || DEFAULT_FONT_FAMILY,
|
|
1218
|
-
lineHeight:
|
|
1218
|
+
lineHeight: chunkKDW3LLG5_js.resolveLineHeight(element.textStyle, hasItalicRuns),
|
|
1219
1219
|
paddingTop: bodyTop + (hasItalicRuns ? 1 : 0),
|
|
1220
1220
|
paddingBottom: bodyBottom + (hasItalicRuns ? 1 : 0),
|
|
1221
1221
|
paddingLeft: bodyLeft + (element.textStyle?.paragraphMarginLeft || 0),
|
|
@@ -1228,7 +1228,7 @@ function getTextStyleForElement(element, fallbackColor) {
|
|
|
1228
1228
|
// Auto-fit: use OOXML-provided fontScale/lnSpcReduction when available,
|
|
1229
1229
|
// otherwise fall back to heuristic estimation. The pure font-scale maths
|
|
1230
1230
|
// now lives in pptx-viewer-shared (computeAutoFitTextStyle).
|
|
1231
|
-
...
|
|
1231
|
+
...chunkKDW3LLG5_js.computeAutoFitTextStyle({
|
|
1232
1232
|
textStyle: element.textStyle,
|
|
1233
1233
|
text: element.text ?? "",
|
|
1234
1234
|
width: element.width,
|
|
@@ -1262,13 +1262,13 @@ function computeTabSize(tabStops, defaultTabSize) {
|
|
|
1262
1262
|
return avgGap > 0 ? `${Math.round(avgGap)}px` : fromDefault;
|
|
1263
1263
|
}
|
|
1264
1264
|
function getTextLayoutStyle(element) {
|
|
1265
|
-
if (!
|
|
1265
|
+
if (!chunk3TB45PVK_js.hasTextProperties(element)) {
|
|
1266
1266
|
return {};
|
|
1267
1267
|
}
|
|
1268
1268
|
const verticalAlign = element.textStyle?.vAlign || "top";
|
|
1269
|
-
const writingMode =
|
|
1270
|
-
const textOrientation =
|
|
1271
|
-
const verticalDirection =
|
|
1269
|
+
const writingMode = chunkKDW3LLG5_js.toCssWritingMode(element.textStyle?.textDirection);
|
|
1270
|
+
const textOrientation = chunkKDW3LLG5_js.toCssTextOrientation(element.textStyle?.textDirection);
|
|
1271
|
+
const verticalDirection = chunkKDW3LLG5_js.toCssVerticalDirection(element.textStyle?.textDirection);
|
|
1272
1272
|
const parsedColumnCount = Number(element.textStyle?.columnCount);
|
|
1273
1273
|
const columnCount = Number.isFinite(parsedColumnCount) ? Math.max(1, Math.min(16, Math.round(parsedColumnCount))) : 1;
|
|
1274
1274
|
const hasColumns = columnCount > 1;
|
|
@@ -1276,7 +1276,7 @@ function getTextLayoutStyle(element) {
|
|
|
1276
1276
|
const tabStops = element.textStyle?.tabStops;
|
|
1277
1277
|
const tabSize = computeTabSize(tabStops, element.textStyle?.defaultTabSize);
|
|
1278
1278
|
const textWrapNone = element.textStyle?.textWrap === "none";
|
|
1279
|
-
const hasParagraphIndents =
|
|
1279
|
+
const hasParagraphIndents = chunk3TB45PVK_js.hasTextProperties(element) && element.paragraphIndents && element.paragraphIndents.length > 0;
|
|
1280
1280
|
const paragraphMarginLeft = element.textStyle?.paragraphMarginLeft;
|
|
1281
1281
|
const paragraphIndent = element.textStyle?.paragraphIndent;
|
|
1282
1282
|
const marginLeft = !hasParagraphIndents && typeof paragraphMarginLeft === "number" && paragraphMarginLeft !== 0 ? paragraphMarginLeft : void 0;
|
|
@@ -1285,7 +1285,7 @@ function getTextLayoutStyle(element) {
|
|
|
1285
1285
|
const bodyBottom = element.textStyle?.bodyInsetBottom ?? DEFAULT_BODY_INSET_TB_PX;
|
|
1286
1286
|
const parsedColumnSpacing = Number(element.textStyle?.columnSpacing);
|
|
1287
1287
|
const columnGap = Number.isFinite(parsedColumnSpacing) && parsedColumnSpacing > 0 ? `${parsedColumnSpacing}px` : "0.75em";
|
|
1288
|
-
const kinsokuStyles =
|
|
1288
|
+
const kinsokuStyles = chunkKDW3LLG5_js.getKinsokuLineBreakStyles(element.textStyle);
|
|
1289
1289
|
if (hasColumns) {
|
|
1290
1290
|
return {
|
|
1291
1291
|
display: "block",
|
|
@@ -1332,10 +1332,10 @@ function getTextLayoutStyle(element) {
|
|
|
1332
1332
|
|
|
1333
1333
|
// src/viewer/utils/text-effects.tsx
|
|
1334
1334
|
function buildTextFillCss2(style) {
|
|
1335
|
-
return
|
|
1335
|
+
return chunkKDW3LLG5_js.buildTextFillCss(style);
|
|
1336
1336
|
}
|
|
1337
1337
|
function buildTextBody3DSceneStyle2(textStyle) {
|
|
1338
|
-
return
|
|
1338
|
+
return chunkKDW3LLG5_js.buildTextBody3DSceneStyle(textStyle);
|
|
1339
1339
|
}
|
|
1340
1340
|
|
|
1341
1341
|
// src/viewer/utils/text-warp-css.tsx
|
|
@@ -1520,17 +1520,17 @@ function wrapWithTextBuildAnimation(elementId, paraIndex, renderedSegments, para
|
|
|
1520
1520
|
if (!subElementAnimStates || subElementAnimStates.size === 0) {
|
|
1521
1521
|
return renderedSegments;
|
|
1522
1522
|
}
|
|
1523
|
-
const paraKey = `${elementId}${
|
|
1523
|
+
const paraKey = `${elementId}${chunkKDW3LLG5_js.TEXT_BUILD_ID_SEP}p${paraIndex}`;
|
|
1524
1524
|
const paraState = subElementAnimStates.get(paraKey);
|
|
1525
1525
|
if (paraState) {
|
|
1526
1526
|
const style = buildAnimStyle(paraState);
|
|
1527
1527
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { "data-anim-id": paraKey, style: { display: "inline", ...style }, children: renderedSegments }, paraKey);
|
|
1528
1528
|
}
|
|
1529
|
-
const firstWordKey = `${elementId}${
|
|
1529
|
+
const firstWordKey = `${elementId}${chunkKDW3LLG5_js.TEXT_BUILD_ID_SEP}w${paraIndex}-0`;
|
|
1530
1530
|
if (subElementAnimStates.has(firstWordKey)) {
|
|
1531
1531
|
return wrapByWord(elementId, paraIndex, paraSegments, subElementAnimStates);
|
|
1532
1532
|
}
|
|
1533
|
-
const firstCharKey = `${elementId}${
|
|
1533
|
+
const firstCharKey = `${elementId}${chunkKDW3LLG5_js.TEXT_BUILD_ID_SEP}c${paraIndex}-0`;
|
|
1534
1534
|
if (subElementAnimStates.has(firstCharKey)) {
|
|
1535
1535
|
return wrapByChar(elementId, paraIndex, paraSegments, subElementAnimStates);
|
|
1536
1536
|
}
|
|
@@ -1551,7 +1551,7 @@ function wrapByWord(elementId, paraIndex, paraSegments, states) {
|
|
|
1551
1551
|
nodes.push(/* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: w }, `ws-${i}`));
|
|
1552
1552
|
continue;
|
|
1553
1553
|
}
|
|
1554
|
-
const key = `${elementId}${
|
|
1554
|
+
const key = `${elementId}${chunkKDW3LLG5_js.TEXT_BUILD_ID_SEP}w${paraIndex}-${wordIdx}`;
|
|
1555
1555
|
const state = states.get(key);
|
|
1556
1556
|
const style = buildAnimStyle(state);
|
|
1557
1557
|
nodes.push(
|
|
@@ -1565,7 +1565,7 @@ function wrapByChar(elementId, paraIndex, paraSegments, states) {
|
|
|
1565
1565
|
const fullText = paraSegments.map((e) => e.segment.text).join("");
|
|
1566
1566
|
const nodes = [];
|
|
1567
1567
|
for (let i = 0; i < fullText.length; i++) {
|
|
1568
|
-
const key = `${elementId}${
|
|
1568
|
+
const key = `${elementId}${chunkKDW3LLG5_js.TEXT_BUILD_ID_SEP}c${paraIndex}-${i}`;
|
|
1569
1569
|
const state = states.get(key);
|
|
1570
1570
|
const style = buildAnimStyle(state);
|
|
1571
1571
|
nodes.push(
|
|
@@ -1711,10 +1711,10 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1711
1711
|
if (!needsScriptFonts || !text) {
|
|
1712
1712
|
return text;
|
|
1713
1713
|
}
|
|
1714
|
-
const runs =
|
|
1714
|
+
const runs = chunkKDW3LLG5_js.segmentByScript(text);
|
|
1715
1715
|
if (runs.length <= 1) {
|
|
1716
1716
|
if (runs.length === 1) {
|
|
1717
|
-
const font =
|
|
1717
|
+
const font = chunkKDW3LLG5_js.resolveFontForScript(runs[0].script, scriptFonts);
|
|
1718
1718
|
if (font && font !== baseFontFamily) {
|
|
1719
1719
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontFamily: font }, children: text });
|
|
1720
1720
|
}
|
|
@@ -1722,7 +1722,7 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1722
1722
|
return text;
|
|
1723
1723
|
}
|
|
1724
1724
|
return runs.map((run, i) => {
|
|
1725
|
-
const font =
|
|
1725
|
+
const font = chunkKDW3LLG5_js.resolveFontForScript(run.script, scriptFonts);
|
|
1726
1726
|
if (!font || font === baseFontFamily) {
|
|
1727
1727
|
return /* @__PURE__ */ jsxRuntime.jsx(React6__default.default.Fragment, { children: run.text }, `${keyPrefix}-r${i}`);
|
|
1728
1728
|
}
|
|
@@ -1794,8 +1794,8 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
|
|
|
1794
1794
|
);
|
|
1795
1795
|
}
|
|
1796
1796
|
function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
|
|
1797
|
-
const mathml =
|
|
1798
|
-
const safeMathml = mathml ?
|
|
1797
|
+
const mathml = chunkKDW3LLG5_js.convertOmmlToMathMl(equationXml);
|
|
1798
|
+
const safeMathml = mathml ? chunkKDW3LLG5_js.sanitizeMathMl(mathml) : "";
|
|
1799
1799
|
const equationContent = safeMathml ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1800
1800
|
"span",
|
|
1801
1801
|
{
|
|
@@ -1845,7 +1845,7 @@ function renderEquationSegment(elementId, segmentIndex, equationXml, equationNum
|
|
|
1845
1845
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { children: equationContent }, `${elementId}-seg-${segmentIndex}`);
|
|
1846
1846
|
}
|
|
1847
1847
|
function renderPictureBullet(elementId, segmentIndex, bulletInfo, baseFontSize) {
|
|
1848
|
-
const picture =
|
|
1848
|
+
const picture = chunkKDW3LLG5_js.resolvePictureBullet(bulletInfo, baseFontSize) ?? {
|
|
1849
1849
|
sizePx: baseFontSize,
|
|
1850
1850
|
fallbackMarker: "\u2022",
|
|
1851
1851
|
accessibleLabel: "Bullet"
|
|
@@ -1895,7 +1895,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1895
1895
|
);
|
|
1896
1896
|
}
|
|
1897
1897
|
const segmentStyle = segment.style || {};
|
|
1898
|
-
const textValue =
|
|
1898
|
+
const textValue = chunkKDW3LLG5_js.substituteFieldText(segment.text || "", segment.fieldType, fieldContext);
|
|
1899
1899
|
const lines = textValue.split("\n");
|
|
1900
1900
|
const textDecorationTokens = [];
|
|
1901
1901
|
if (segmentStyle.underline || segmentStyle.hyperlink) {
|
|
@@ -1905,8 +1905,8 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1905
1905
|
textDecorationTokens.push("line-through");
|
|
1906
1906
|
}
|
|
1907
1907
|
const isDoubleStrike = segmentStyle.strikethrough && segmentStyle.strikeType === "dblStrike";
|
|
1908
|
-
const resolvedSegmentColor = segmentStyle.hyperlink ?
|
|
1909
|
-
const underlineDecoration =
|
|
1908
|
+
const resolvedSegmentColor = segmentStyle.hyperlink ? chunkKDW3LLG5_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, HYPERLINK_COLOR) : chunkKDW3LLG5_js.normalizeHexColor(segmentStyle.color || element.textStyle?.color, fallbackColor);
|
|
1909
|
+
const underlineDecoration = chunkKDW3LLG5_js.resolveUnderlineDecorationStyle(
|
|
1910
1910
|
Boolean(isDoubleStrike),
|
|
1911
1911
|
segmentStyle.underlineStyle
|
|
1912
1912
|
);
|
|
@@ -1922,14 +1922,14 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1922
1922
|
const baseFontSizePt = baseFontSize * (72 / 96);
|
|
1923
1923
|
const fontKerning = typeof segmentStyle.kerning === "number" ? segmentStyle.kerning === 0 ? "none" : baseFontSizePt >= segmentStyle.kerning / 100 ? "normal" : "none" : void 0;
|
|
1924
1924
|
const rawFontFamily = segmentStyle.fontFamily || element.textStyle?.fontFamily;
|
|
1925
|
-
const baseFontFamily = rawFontFamily ?
|
|
1925
|
+
const baseFontFamily = rawFontFamily ? chunk3TB45PVK_js.getSubstituteFontFamily(rawFontFamily) : DEFAULT_FONT_FAMILY;
|
|
1926
1926
|
const scriptFonts = {
|
|
1927
1927
|
latin: baseFontFamily,
|
|
1928
1928
|
eastAsia: segmentStyle.eastAsiaFont || element.textStyle?.eastAsiaFont || baseFontFamily,
|
|
1929
1929
|
complexScript: segmentStyle.complexScriptFont || element.textStyle?.complexScriptFont || baseFontFamily,
|
|
1930
1930
|
symbol: segmentStyle.symbolFont || element.textStyle?.symbolFont || baseFontFamily
|
|
1931
1931
|
};
|
|
1932
|
-
const needsScriptFonts =
|
|
1932
|
+
const needsScriptFonts = chunkKDW3LLG5_js.hasDistinctScriptFonts(scriptFonts);
|
|
1933
1933
|
const spanStyle = {
|
|
1934
1934
|
color: resolvedSegmentColor,
|
|
1935
1935
|
fontSize: baseFontSize * baselineFontScale,
|
|
@@ -1947,15 +1947,15 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1947
1947
|
fontVariantCaps: segmentStyle.textCaps === "small" ? "small-caps" : void 0,
|
|
1948
1948
|
letterSpacing,
|
|
1949
1949
|
fontKerning,
|
|
1950
|
-
backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ?
|
|
1950
|
+
backgroundColor: textFillStyles ? void 0 : segmentStyle.highlightColor ? chunkKDW3LLG5_js.normalizeHexColor(segmentStyle.highlightColor, "transparent") : void 0,
|
|
1951
1951
|
...textFillStyles,
|
|
1952
|
-
textDecorationColor: segmentStyle.underlineColor ?
|
|
1953
|
-
WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${
|
|
1952
|
+
textDecorationColor: segmentStyle.underlineColor ? chunkKDW3LLG5_js.normalizeHexColor(segmentStyle.underlineColor, void 0) : void 0,
|
|
1953
|
+
WebkitTextStroke: segmentStyle.textOutlineWidth && segmentStyle.textOutlineColor ? `${segmentStyle.textOutlineWidth}px ${chunkKDW3LLG5_js.normalizeHexColor(segmentStyle.textOutlineColor, "#000000")}` : segmentStyle.textOutlineWidth ? `${segmentStyle.textOutlineWidth}px currentColor` : void 0,
|
|
1954
1954
|
paintOrder: segmentStyle.textOutlineWidth ? "stroke fill" : void 0,
|
|
1955
|
-
textShadow:
|
|
1956
|
-
filter:
|
|
1957
|
-
opacity:
|
|
1958
|
-
WebkitBoxReflect:
|
|
1955
|
+
textShadow: chunkKDW3LLG5_js.buildTextShadowCss(segmentStyle),
|
|
1956
|
+
filter: chunkKDW3LLG5_js.buildTextRunFilterChain(segmentStyle),
|
|
1957
|
+
opacity: chunkKDW3LLG5_js.getTextAlphaOpacity(segmentStyle),
|
|
1958
|
+
WebkitBoxReflect: chunkKDW3LLG5_js.buildTextReflectionCss(segmentStyle)
|
|
1959
1959
|
};
|
|
1960
1960
|
const runRtl = segmentStyle.rtl;
|
|
1961
1961
|
if (runRtl !== void 0 && runRtl !== paragraphRtl) {
|
|
@@ -1975,7 +1975,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1975
1975
|
spanStyle.fontSize = baseFontSize * (bulletInfo.sizePercent / 100) * baselineFontScale;
|
|
1976
1976
|
}
|
|
1977
1977
|
if (bulletInfo.color) {
|
|
1978
|
-
spanStyle.color =
|
|
1978
|
+
spanStyle.color = chunkKDW3LLG5_js.normalizeHexColor(bulletInfo.color, resolvedSegmentColor);
|
|
1979
1979
|
}
|
|
1980
1980
|
}
|
|
1981
1981
|
if (bulletInfo?.imageDataUrl || bulletInfo?.imageRelId) {
|
|
@@ -2015,7 +2015,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
2015
2015
|
textAlign: segment.rubyAlignment === "l" ? "left" : segment.rubyAlignment === "r" ? "right" : segment.rubyAlignment === "dist" || segment.rubyAlignment === "distCat" || segment.rubyAlignment === "distLetter" ? "justify" : "center"
|
|
2016
2016
|
};
|
|
2017
2017
|
if (segment.rubyStyle?.color) {
|
|
2018
|
-
rubyStyle.color =
|
|
2018
|
+
rubyStyle.color = chunkKDW3LLG5_js.normalizeHexColor(segment.rubyStyle.color, resolvedSegmentColor);
|
|
2019
2019
|
}
|
|
2020
2020
|
innerContent = /* @__PURE__ */ jsxRuntime.jsxs("ruby", { children: [
|
|
2021
2021
|
baseContent,
|
|
@@ -2110,7 +2110,7 @@ function groupSegmentsIntoParagraphs(segments) {
|
|
|
2110
2110
|
return paragraphs;
|
|
2111
2111
|
}
|
|
2112
2112
|
function renderTextSegments(element, fallbackColor, emptyFallback, findHighlights, onHyperlinkClick, fieldContext, subElementAnimStates, segmentOverrides, requireCtrlClick) {
|
|
2113
|
-
if (!
|
|
2113
|
+
if (!chunk3TB45PVK_js.hasTextProperties(element)) {
|
|
2114
2114
|
return emptyFallback || null;
|
|
2115
2115
|
}
|
|
2116
2116
|
const effectiveSegments = segmentOverrides ?? element.textSegments;
|
|
@@ -2131,10 +2131,10 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
2131
2131
|
return element.text || emptyFallback || "";
|
|
2132
2132
|
}
|
|
2133
2133
|
const paragraphs = groupSegmentsIntoParagraphs(effectiveSegments);
|
|
2134
|
-
const paragraphIndents =
|
|
2135
|
-
const elementRtl =
|
|
2136
|
-
const elementAlign =
|
|
2137
|
-
const bodyStyle =
|
|
2134
|
+
const paragraphIndents = chunk3TB45PVK_js.hasTextProperties(element) ? element.paragraphIndents : void 0;
|
|
2135
|
+
const elementRtl = chunk3TB45PVK_js.hasTextProperties(element) ? element.textStyle?.rtl : void 0;
|
|
2136
|
+
const elementAlign = chunk3TB45PVK_js.hasTextProperties(element) ? element.textStyle?.align : void 0;
|
|
2137
|
+
const bodyStyle = chunk3TB45PVK_js.hasTextProperties(element) ? element.textStyle : void 0;
|
|
2138
2138
|
const spaceFirstLast = bodyStyle?.spaceFirstLastParagraph !== false;
|
|
2139
2139
|
return paragraphs.map((paraSegments, paraIndex) => {
|
|
2140
2140
|
const paraIndent = paragraphIndents?.[paraIndex];
|
|
@@ -2149,14 +2149,14 @@ function renderTextSegments(element, fallbackColor, emptyFallback, findHighlight
|
|
|
2149
2149
|
return Boolean(segment.text) && segment.text.trim().length > 0;
|
|
2150
2150
|
});
|
|
2151
2151
|
const hasBullet = bulletInfo && !bulletInfo.none && hasVisibleTextContent;
|
|
2152
|
-
const paraRtl =
|
|
2152
|
+
const paraRtl = chunkKDW3LLG5_js.resolveParagraphRtl(paraSegments, elementRtl);
|
|
2153
2153
|
const isRtlParagraph = paraRtl === true;
|
|
2154
|
-
const paraAlign =
|
|
2155
|
-
const cssTextAlign =
|
|
2154
|
+
const paraAlign = chunkKDW3LLG5_js.resolveParagraphAlign(paraSegments, elementAlign);
|
|
2155
|
+
const cssTextAlign = chunkKDW3LLG5_js.resolveCssTextAlign(paraAlign, isRtlParagraph);
|
|
2156
2156
|
const paraMarginLeft = isRtlParagraph ? void 0 : rawMarginLeft;
|
|
2157
2157
|
const paraMarginRight = isRtlParagraph ? rawMarginLeft : void 0;
|
|
2158
2158
|
const paraTextIndent = rawTextIndent;
|
|
2159
|
-
const paraKinsokuStyle =
|
|
2159
|
+
const paraKinsokuStyle = chunkKDW3LLG5_js.getKinsokuLineBreakStyles(firstSeg?.segment.style);
|
|
2160
2160
|
const hasParaKinsoku = Object.keys(paraKinsokuStyle).length > 0;
|
|
2161
2161
|
const paraProps = effectiveSegments[firstSeg?.globalIndex ?? -1]?.paragraphProperties;
|
|
2162
2162
|
const spacing = resolveParagraphSpacing({
|
|
@@ -2243,13 +2243,13 @@ function hexToRgbUnit(hex) {
|
|
|
2243
2243
|
};
|
|
2244
2244
|
}
|
|
2245
2245
|
function getDuotoneColors(element) {
|
|
2246
|
-
if (!
|
|
2246
|
+
if (!chunk3TB45PVK_js.isImageLikeElement(element)) {
|
|
2247
2247
|
return void 0;
|
|
2248
2248
|
}
|
|
2249
2249
|
return element.imageEffects?.duotone;
|
|
2250
2250
|
}
|
|
2251
2251
|
function buildLineShadowCss(element) {
|
|
2252
|
-
if (!
|
|
2252
|
+
if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
|
|
2253
2253
|
return void 0;
|
|
2254
2254
|
}
|
|
2255
2255
|
const ss = element.shapeStyle;
|
|
@@ -2260,13 +2260,13 @@ function buildLineShadowCss(element) {
|
|
|
2260
2260
|
const offsetY = typeof ss.lineShadowOffsetY === "number" ? ss.lineShadowOffsetY : 2;
|
|
2261
2261
|
const blur = typeof ss.lineShadowBlur === "number" ? Math.max(0, ss.lineShadowBlur) : 4;
|
|
2262
2262
|
const opacity = typeof ss.lineShadowOpacity === "number" ? Math.max(0, Math.min(1, ss.lineShadowOpacity)) : 0.35;
|
|
2263
|
-
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${
|
|
2264
|
-
|
|
2263
|
+
return `${Math.round(offsetX)}px ${Math.round(offsetY)}px ${Math.round(blur)}px ${chunkKDW3LLG5_js.colorWithOpacity(
|
|
2264
|
+
chunkKDW3LLG5_js.normalizeHexColor(ss.lineShadowColor, "#000000"),
|
|
2265
2265
|
opacity
|
|
2266
2266
|
)}`;
|
|
2267
2267
|
}
|
|
2268
2268
|
function buildLineGlowFilter(element) {
|
|
2269
|
-
if (!
|
|
2269
|
+
if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
|
|
2270
2270
|
return void 0;
|
|
2271
2271
|
}
|
|
2272
2272
|
const ss = element.shapeStyle;
|
|
@@ -2275,7 +2275,7 @@ function buildLineGlowFilter(element) {
|
|
|
2275
2275
|
}
|
|
2276
2276
|
const glowOpacity = typeof ss.lineGlowOpacity === "number" ? ss.lineGlowOpacity : 0.75;
|
|
2277
2277
|
const glowRad = Math.round(Math.max(0, ss.lineGlowRadius));
|
|
2278
|
-
const glowCol =
|
|
2278
|
+
const glowCol = chunkKDW3LLG5_js.colorWithOpacity(chunkKDW3LLG5_js.normalizeHexColor(ss.lineGlowColor, "#ffff00"), glowOpacity);
|
|
2279
2279
|
return `drop-shadow(0 0 ${glowRad}px ${glowCol})`;
|
|
2280
2280
|
}
|
|
2281
2281
|
function mapDagBlendModeToCss(blend) {
|
|
@@ -2299,7 +2299,7 @@ function getDagDuotoneFilterId(elementId) {
|
|
|
2299
2299
|
return `dag-duotone-${elementId}`;
|
|
2300
2300
|
}
|
|
2301
2301
|
function hasDagDuotoneEffect(element) {
|
|
2302
|
-
if (!
|
|
2302
|
+
if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
|
|
2303
2303
|
return false;
|
|
2304
2304
|
}
|
|
2305
2305
|
return Boolean(element.shapeStyle?.dagDuotone);
|
|
@@ -2362,7 +2362,7 @@ function getRoundRectRadiusPx2(element) {
|
|
|
2362
2362
|
|
|
2363
2363
|
// src/viewer/utils/shape-visual-3d.ts
|
|
2364
2364
|
function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elementHeight) {
|
|
2365
|
-
return
|
|
2365
|
+
return chunkKDW3LLG5_js.build3DExtrusionData(
|
|
2366
2366
|
shape3d,
|
|
2367
2367
|
scene3d,
|
|
2368
2368
|
fillColor,
|
|
@@ -2371,7 +2371,7 @@ function build3DExtrusionData2(shape3d, scene3d, fillColor, elementWidth, elemen
|
|
|
2371
2371
|
);
|
|
2372
2372
|
}
|
|
2373
2373
|
function apply3dEffects2(base, scene3d, shape3d, fillColorFallback) {
|
|
2374
|
-
|
|
2374
|
+
chunkKDW3LLG5_js.apply3dEffects(base, scene3d, shape3d, fillColorFallback);
|
|
2375
2375
|
}
|
|
2376
2376
|
|
|
2377
2377
|
// src/viewer/utils/vector-subpath-paint.ts
|
|
@@ -2380,7 +2380,7 @@ function toHexByte(value) {
|
|
|
2380
2380
|
return clamped.toString(16).padStart(2, "0");
|
|
2381
2381
|
}
|
|
2382
2382
|
function shiftHex(hex, factor, towardsWhite) {
|
|
2383
|
-
const channels =
|
|
2383
|
+
const channels = chunkKDW3LLG5_js.hexToRgbChannels(hex);
|
|
2384
2384
|
if (!channels) {
|
|
2385
2385
|
return hex;
|
|
2386
2386
|
}
|
|
@@ -2406,13 +2406,13 @@ function buildCustomSubpathPaints(subpaths, hasFill, fillColor, fillOpacity) {
|
|
|
2406
2406
|
const fillOff = subpath.fillMode === "none" || !hasFill;
|
|
2407
2407
|
return {
|
|
2408
2408
|
d: subpath.d,
|
|
2409
|
-
fill: fillOff ? "none" :
|
|
2409
|
+
fill: fillOff ? "none" : chunkKDW3LLG5_js.colorWithOpacity(adjustFillForMode(fillColor, subpath.fillMode), fillOpacity),
|
|
2410
2410
|
stroked: subpath.stroke !== false
|
|
2411
2411
|
};
|
|
2412
2412
|
});
|
|
2413
2413
|
}
|
|
2414
2414
|
function getStrokeOnlyPresetPaths(element) {
|
|
2415
|
-
if (element.type !== "shape" || !
|
|
2415
|
+
if (element.type !== "shape" || !chunk3TB45PVK_js.hasShapeProperties(element)) {
|
|
2416
2416
|
return void 0;
|
|
2417
2417
|
}
|
|
2418
2418
|
const shapeType = element.shapeType;
|
|
@@ -2422,7 +2422,7 @@ function getStrokeOnlyPresetPaths(element) {
|
|
|
2422
2422
|
if (element.pathData) {
|
|
2423
2423
|
return void 0;
|
|
2424
2424
|
}
|
|
2425
|
-
const result =
|
|
2425
|
+
const result = chunk3TB45PVK_js.evaluatePresetShape(
|
|
2426
2426
|
shapeType,
|
|
2427
2427
|
Math.max(element.width, 1),
|
|
2428
2428
|
Math.max(element.height, 1),
|
|
@@ -2437,27 +2437,27 @@ function getStrokeOnlyPresetPaths(element) {
|
|
|
2437
2437
|
|
|
2438
2438
|
// src/viewer/utils/shape-visual-style.ts
|
|
2439
2439
|
function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2440
|
-
if (!
|
|
2440
|
+
if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
|
|
2441
2441
|
return {};
|
|
2442
2442
|
}
|
|
2443
2443
|
const normalizedShapeType = getShapeType(element.shapeType);
|
|
2444
|
-
const clipPath =
|
|
2444
|
+
const clipPath = chunkKDW3LLG5_js.getResolvedShapeClipPath(element);
|
|
2445
2445
|
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;
|
|
2446
2446
|
const rendersStrokeOnlyPreset = Boolean(getStrokeOnlyPresetPaths(element));
|
|
2447
2447
|
const fillOpacity = element.shapeStyle?.fillOpacity;
|
|
2448
2448
|
const strokeOpacity = element.shapeStyle?.strokeOpacity;
|
|
2449
|
-
const strokeDash =
|
|
2450
|
-
const fillGradient =
|
|
2451
|
-
const shadowCss =
|
|
2452
|
-
const innerShadowCss =
|
|
2453
|
-
const resolvedFillColor =
|
|
2454
|
-
const resolvedStrokeColor =
|
|
2449
|
+
const strokeDash = chunkKDW3LLG5_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2450
|
+
const fillGradient = chunkKDW3LLG5_js.buildCssGradientFromShapeStyle(element.shapeStyle) || element.shapeStyle?.fillGradient;
|
|
2451
|
+
const shadowCss = chunkKDW3LLG5_js.buildShadowCssFromShapeStyle(element.shapeStyle);
|
|
2452
|
+
const innerShadowCss = chunkKDW3LLG5_js.buildInnerShadowCssFromShapeStyle(element.shapeStyle);
|
|
2453
|
+
const resolvedFillColor = chunkKDW3LLG5_js.colorWithOpacity(fillColor, fillOpacity);
|
|
2454
|
+
const resolvedStrokeColor = chunkKDW3LLG5_js.colorWithOpacity(strokeColor, strokeOpacity);
|
|
2455
2455
|
const ss = element.shapeStyle;
|
|
2456
2456
|
const hasFillOverlayColor = Boolean(
|
|
2457
2457
|
ss?.dagFillOverlayColor && ss.dagFillOverlayColor !== "transparent"
|
|
2458
2458
|
);
|
|
2459
2459
|
const combinedShadowParts = [];
|
|
2460
|
-
const multiLayerShadow =
|
|
2460
|
+
const multiLayerShadow = chunkKDW3LLG5_js.buildMultiLayerShadowCss(element.shapeStyle);
|
|
2461
2461
|
if (multiLayerShadow) {
|
|
2462
2462
|
combinedShadowParts.push(multiLayerShadow);
|
|
2463
2463
|
} else if (shadowCss) {
|
|
@@ -2466,7 +2466,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2466
2466
|
if (innerShadowCss) {
|
|
2467
2467
|
combinedShadowParts.push(innerShadowCss);
|
|
2468
2468
|
}
|
|
2469
|
-
const glowBoxShadow =
|
|
2469
|
+
const glowBoxShadow = chunkKDW3LLG5_js.buildGlowBoxShadow(ss?.glowColor, ss?.glowRadius, ss?.glowOpacity);
|
|
2470
2470
|
if (glowBoxShadow) {
|
|
2471
2471
|
combinedShadowParts.push(glowBoxShadow);
|
|
2472
2472
|
}
|
|
@@ -2474,7 +2474,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2474
2474
|
if (lineShadow) {
|
|
2475
2475
|
combinedShadowParts.push(lineShadow);
|
|
2476
2476
|
}
|
|
2477
|
-
const compoundLineShadow =
|
|
2477
|
+
const compoundLineShadow = chunkKDW3LLG5_js.getCompoundLineBoxShadow(
|
|
2478
2478
|
element.shapeStyle?.compoundLine,
|
|
2479
2479
|
strokeWidth,
|
|
2480
2480
|
resolvedStrokeColor
|
|
@@ -2487,11 +2487,11 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2487
2487
|
if (ss?.glowColor && ss.glowColor !== "transparent" && ss.glowRadius) {
|
|
2488
2488
|
const glowOpacity = typeof ss.glowOpacity === "number" ? ss.glowOpacity : 0.75;
|
|
2489
2489
|
const glowRad = Math.round(Math.max(0, ss.glowRadius));
|
|
2490
|
-
const glowCol =
|
|
2490
|
+
const glowCol = chunkKDW3LLG5_js.colorWithOpacity(chunkKDW3LLG5_js.normalizeHexColor(ss.glowColor, "#ffff00"), glowOpacity);
|
|
2491
2491
|
filterParts.push(`drop-shadow(0 0 ${glowRad}px ${glowCol})`);
|
|
2492
2492
|
}
|
|
2493
2493
|
if (typeof ss?.softEdgeRadius === "number" && ss.softEdgeRadius > 0) {
|
|
2494
|
-
filterParts.push(`url(#${
|
|
2494
|
+
filterParts.push(`url(#${chunkKDW3LLG5_js.getSoftEdgeFilterId(element.id)})`);
|
|
2495
2495
|
}
|
|
2496
2496
|
if (typeof ss?.blurRadius === "number" && ss.blurRadius > 0) {
|
|
2497
2497
|
filterParts.push(`blur(${Math.round(ss.blurRadius)}px)`);
|
|
@@ -2500,13 +2500,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2500
2500
|
if (lineGlowCss) {
|
|
2501
2501
|
filterParts.push(lineGlowCss);
|
|
2502
2502
|
}
|
|
2503
|
-
const dagFilter =
|
|
2503
|
+
const dagFilter = chunkKDW3LLG5_js.getEffectDagFilter(ss, element.id);
|
|
2504
2504
|
if (dagFilter) {
|
|
2505
2505
|
filterParts.push(dagFilter);
|
|
2506
2506
|
}
|
|
2507
2507
|
const lineJoinCss = ss?.lineJoin === "round" ? "round" : ss?.lineJoin === "bevel" ? "bevel" : ss?.lineJoin === "miter" ? "miter" : void 0;
|
|
2508
2508
|
const miterLimitCss = ss?.lineJoin === "miter" && typeof ss?.miterLimit === "number" ? Math.max(ss.miterLimit / 1e5, 1) : void 0;
|
|
2509
|
-
const patternFill =
|
|
2509
|
+
const patternFill = chunkKDW3LLG5_js.buildPatternFillCss(element.shapeStyle);
|
|
2510
2510
|
const imageFillUrl = ss?.fillMode === "image" && ss.fillImageUrl ? ss.fillImageUrl : void 0;
|
|
2511
2511
|
const imageFillMode = ss?.fillImageMode || "stretch";
|
|
2512
2512
|
let reflectCss;
|
|
@@ -2518,14 +2518,30 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2518
2518
|
const endOpacity = typeof ss.reflectionEndOpacity === "number" ? ss.reflectionEndOpacity : 0;
|
|
2519
2519
|
const fadeLength = typeof ss.reflectionEndPosition === "number" ? Math.round(ss.reflectionEndPosition * Math.max(element.height, 1)) : 100;
|
|
2520
2520
|
const blurRadius = typeof ss.reflectionBlurRadius === "number" ? ss.reflectionBlurRadius : 0;
|
|
2521
|
-
reflectCss =
|
|
2521
|
+
reflectCss = chunkKDW3LLG5_js.buildReflectionCss(distance, startOpacity, endOpacity, fadeLength, blurRadius);
|
|
2522
2522
|
}
|
|
2523
2523
|
}
|
|
2524
2524
|
const base = {
|
|
2525
|
-
|
|
2525
|
+
// A gradient fill REPLACES the solid fill, it does not sit on top of it.
|
|
2526
|
+
// The parser also records a representative `fillColor`/`fillOpacity` for a
|
|
2527
|
+
// `a:gradFill` (used by thumbnails and the inspector), and painting that as
|
|
2528
|
+
// a `backgroundColor` under the gradient washed the whole shape: wherever
|
|
2529
|
+
// the gradient's own stops were transparent the solid still showed, so a
|
|
2530
|
+
// fade-to-transparent overlay dimmed everything behind it and its edge read
|
|
2531
|
+
// as a hard line. Mirrors the fill precedence in shared's
|
|
2532
|
+
// `getComputedFillStyle` (image -> gradient -> pattern -> solid).
|
|
2533
|
+
backgroundColor: imageFillUrl ? "transparent" : patternFill ? patternFill.backgroundColor : hasFill && !fillGradient ? resolvedFillColor : "transparent",
|
|
2526
2534
|
backgroundImage: imageFillUrl ? `url(${imageFillUrl})` : patternFill ? patternFill.backgroundImage : hasFill && fillGradient ? fillGradient : void 0,
|
|
2527
|
-
backgroundRepeat: imageFillUrl ? imageFillMode === "tile" ? "repeat" : "no-repeat" : patternFill ? "repeat" : void 0,
|
|
2528
|
-
backgroundSize: imageFillUrl ? imageFillMode === "tile" ? "auto" : "100% 100%" : patternFill ? "auto" : void 0,
|
|
2535
|
+
backgroundRepeat: imageFillUrl ? imageFillMode === "tile" ? "repeat" : "no-repeat" : patternFill ? "repeat" : hasFill && fillGradient ? "no-repeat" : void 0,
|
|
2536
|
+
backgroundSize: imageFillUrl ? imageFillMode === "tile" ? "auto" : "100% 100%" : patternFill ? "auto" : hasFill && fillGradient ? "100% 100%" : void 0,
|
|
2537
|
+
// The container always carries a 1px border (transparent unless the shape
|
|
2538
|
+
// has a stroke or is hovered) and `box-sizing: border-box`, so the default
|
|
2539
|
+
// `background-origin: padding-box` sizes the paint 2px smaller than the
|
|
2540
|
+
// shape. Combined with the default `background-repeat: repeat` that made a
|
|
2541
|
+
// gradient tile wrap, painting a 1px sliver of its opposite end along the
|
|
2542
|
+
// edge - a fade-to-transparent overlay grew a hard opaque line down its
|
|
2543
|
+
// side. Paint from the border box so the fill matches the shape outline.
|
|
2544
|
+
backgroundOrigin: "border-box",
|
|
2529
2545
|
backgroundPosition: imageFillUrl ? "center" : void 0,
|
|
2530
2546
|
boxShadow: combinedBoxShadow,
|
|
2531
2547
|
WebkitBoxReflect: reflectCss,
|
|
@@ -2536,9 +2552,9 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2536
2552
|
// is present, `ShapeEffectOverlay` paints a separate blended tint layer so
|
|
2537
2553
|
// the colour is actually rendered (and text/children are not tinted).
|
|
2538
2554
|
mixBlendMode: hasFillOverlayColor ? void 0 : mapDagBlendModeToCss(ss?.dagFillOverlayBlend),
|
|
2539
|
-
borderWidth: strokeWidth > 0 ?
|
|
2555
|
+
borderWidth: strokeWidth > 0 ? chunkKDW3LLG5_js.getCompoundLineBorderWidth(ss?.compoundLine, strokeWidth) : void 0,
|
|
2540
2556
|
borderColor: strokeWidth > 0 ? resolvedStrokeColor : void 0,
|
|
2541
|
-
borderStyle: strokeWidth > 0 ?
|
|
2557
|
+
borderStyle: strokeWidth > 0 ? chunkKDW3LLG5_js.getCssBorderDashStyle(strokeDash, ss?.compoundLine) : void 0,
|
|
2542
2558
|
strokeLinejoin: lineJoinCss,
|
|
2543
2559
|
strokeMiterlimit: miterLimitCss,
|
|
2544
2560
|
strokeLinecap: ss?.lineCap === "rnd" ? "round" : ss?.lineCap === "sq" ? "square" : ss?.lineCap === "flat" ? "butt" : void 0
|
|
@@ -2594,7 +2610,7 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2594
2610
|
borderWidth: 0,
|
|
2595
2611
|
borderTopWidth: Math.max(strokeWidth, 2),
|
|
2596
2612
|
borderTopColor: resolvedStrokeColor,
|
|
2597
|
-
borderTopStyle:
|
|
2613
|
+
borderTopStyle: chunkKDW3LLG5_js.getCssBorderDashStyle(strokeDash)
|
|
2598
2614
|
};
|
|
2599
2615
|
}
|
|
2600
2616
|
if (normalizedShapeType === "cylinder") {
|
|
@@ -2608,13 +2624,13 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2608
2624
|
function getConnectorAdjustment(element, key, fallback) {
|
|
2609
2625
|
const direct = element.shapeAdjustments?.[key];
|
|
2610
2626
|
if (typeof direct === "number" && Number.isFinite(direct)) {
|
|
2611
|
-
return
|
|
2627
|
+
return chunkKDW3LLG5_js.clampUnitInterval(direct / 1e5);
|
|
2612
2628
|
}
|
|
2613
2629
|
const fallbackKey = element.shapeAdjustments?.adj;
|
|
2614
2630
|
if (typeof fallbackKey === "number" && Number.isFinite(fallbackKey)) {
|
|
2615
|
-
return
|
|
2631
|
+
return chunkKDW3LLG5_js.clampUnitInterval(fallbackKey / 1e5);
|
|
2616
2632
|
}
|
|
2617
|
-
return
|
|
2633
|
+
return chunkKDW3LLG5_js.clampUnitInterval(fallback);
|
|
2618
2634
|
}
|
|
2619
2635
|
function getConnectorPathGeometry(element) {
|
|
2620
2636
|
const width = Math.max(element.width, 1);
|
|
@@ -2751,11 +2767,11 @@ function strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray) {
|
|
|
2751
2767
|
strokePaint,
|
|
2752
2768
|
strokeWidth,
|
|
2753
2769
|
dashArray,
|
|
2754
|
-
lineCap:
|
|
2770
|
+
lineCap: chunkKDW3LLG5_js.svgLineCap(shapeStyle?.lineCap),
|
|
2755
2771
|
lineJoin,
|
|
2756
2772
|
miterLimit,
|
|
2757
|
-
offsets:
|
|
2758
|
-
widths:
|
|
2773
|
+
offsets: chunkKDW3LLG5_js.getCompoundLineOffsets(shapeStyle?.compoundLine, strokeWidth),
|
|
2774
|
+
widths: chunkKDW3LLG5_js.getCompoundLineWidths(shapeStyle?.compoundLine, strokeWidth)
|
|
2759
2775
|
};
|
|
2760
2776
|
}
|
|
2761
2777
|
function strokeStrands(d, keyBase, ctx) {
|
|
@@ -2778,7 +2794,7 @@ function strokeStrands(d, keyBase, ctx) {
|
|
|
2778
2794
|
}
|
|
2779
2795
|
function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredPaths, shapeStyle, hasFill, fillColor, fillOpacity, strokePaint, strokeWidth, dashArray, animatesFill = false) {
|
|
2780
2796
|
const ctx = strokeContext(shapeStyle, strokePaint, strokeWidth, dashArray);
|
|
2781
|
-
const subpaths = structuredPaths && structuredPaths.length > 0 ?
|
|
2797
|
+
const subpaths = structuredPaths && structuredPaths.length > 0 ? chunk3TB45PVK_js.customGeometryPathsToSvgSubpaths(structuredPaths, pathWidth, pathHeight) : void 0;
|
|
2782
2798
|
const needsPerSubpath = subpaths !== void 0 && subpaths.some((sp) => sp.fillMode && sp.fillMode !== "norm" || sp.stroke === false);
|
|
2783
2799
|
const nodes = [];
|
|
2784
2800
|
if (subpaths && needsPerSubpath) {
|
|
@@ -2809,7 +2825,7 @@ function renderCustomGeometryVector(pathData, pathWidth, pathHeight, structuredP
|
|
|
2809
2825
|
"path",
|
|
2810
2826
|
{
|
|
2811
2827
|
d: pathData,
|
|
2812
|
-
fill: animatesFill ? "inherit" :
|
|
2828
|
+
fill: animatesFill ? "inherit" : chunkKDW3LLG5_js.colorWithOpacity(fillColor, fillOpacity),
|
|
2813
2829
|
stroke: "none",
|
|
2814
2830
|
vectorEffect: "non-scaling-stroke"
|
|
2815
2831
|
},
|
|
@@ -2851,14 +2867,14 @@ function renderStrokeOnlyPreset(presetPaths, width, height, shapeStyle, strokePa
|
|
|
2851
2867
|
);
|
|
2852
2868
|
}
|
|
2853
2869
|
function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor, animatesFill, animatesStroke) {
|
|
2854
|
-
if (!
|
|
2870
|
+
if (!chunk3TB45PVK_js.hasShapeProperties(element)) {
|
|
2855
2871
|
return null;
|
|
2856
2872
|
}
|
|
2857
2873
|
const normalizedType = (element.shapeType || "").toLowerCase();
|
|
2858
|
-
const fillPaint = animatesFill ? "inherit" :
|
|
2859
|
-
const strokePaint = animatesStroke ? "inherit" :
|
|
2860
|
-
const dashType =
|
|
2861
|
-
const dashArray =
|
|
2874
|
+
const fillPaint = animatesFill ? "inherit" : chunkKDW3LLG5_js.colorWithOpacity(fillColor, element.shapeStyle?.fillOpacity);
|
|
2875
|
+
const strokePaint = animatesStroke ? "inherit" : chunkKDW3LLG5_js.colorWithOpacity(strokeColor, element.shapeStyle?.strokeOpacity);
|
|
2876
|
+
const dashType = chunkKDW3LLG5_js.normalizeStrokeDashType(element.shapeStyle?.strokeDash);
|
|
2877
|
+
const dashArray = chunkKDW3LLG5_js.getSvgStrokeDasharray(
|
|
2862
2878
|
dashType,
|
|
2863
2879
|
Math.max(strokeWidth, 1),
|
|
2864
2880
|
element.shapeStyle?.customDashSegments
|
|
@@ -2937,18 +2953,18 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
2937
2953
|
Boolean(animatesFill)
|
|
2938
2954
|
);
|
|
2939
2955
|
}
|
|
2940
|
-
if (
|
|
2956
|
+
if (chunk3TB45PVK_js.isCalloutShape(normalizedType)) {
|
|
2941
2957
|
const width = Math.max(element.width, 1);
|
|
2942
2958
|
const height = Math.max(element.height, 1);
|
|
2943
|
-
const geometry =
|
|
2959
|
+
const geometry = chunk3TB45PVK_js.getCalloutLeaderLineGeometry(
|
|
2944
2960
|
normalizedType,
|
|
2945
2961
|
width,
|
|
2946
2962
|
height,
|
|
2947
2963
|
element.shapeAdjustments
|
|
2948
2964
|
);
|
|
2949
2965
|
if (geometry && geometry.points.length >= 2) {
|
|
2950
|
-
const leaderPath =
|
|
2951
|
-
const bounds =
|
|
2966
|
+
const leaderPath = chunk3TB45PVK_js.buildCalloutLeaderLineSvgPath(geometry);
|
|
2967
|
+
const bounds = chunk3TB45PVK_js.getCalloutViewBoxBounds(width, height, geometry);
|
|
2952
2968
|
const lineStroke = Math.max(strokeWidth, 1);
|
|
2953
2969
|
const offsetLeft = bounds.minX;
|
|
2954
2970
|
const offsetTop = bounds.minY;
|
|
@@ -3011,10 +3027,10 @@ function renderVectorShape(element, hasFill, fillColor, strokeWidth, strokeColor
|
|
|
3011
3027
|
const endArrowW = element.shapeStyle?.connectorEndArrowWidth;
|
|
3012
3028
|
const endArrowL = element.shapeStyle?.connectorEndArrowLength;
|
|
3013
3029
|
const compoundLine = element.shapeStyle?.compoundLine;
|
|
3014
|
-
const connectorLineCap =
|
|
3030
|
+
const connectorLineCap = chunkKDW3LLG5_js.svgLineCap(element.shapeStyle?.lineCap);
|
|
3015
3031
|
const hitTargetWidth = Math.max(strokeWidth * 3, 12);
|
|
3016
|
-
const offsets =
|
|
3017
|
-
const widths =
|
|
3032
|
+
const offsets = chunkKDW3LLG5_js.getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
3033
|
+
const widths = chunkKDW3LLG5_js.getCompoundLineWidths(compoundLine, strokeWidth);
|
|
3018
3034
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3019
3035
|
"svg",
|
|
3020
3036
|
{
|
|
@@ -3093,15 +3109,15 @@ function parseGradientFillCss(gradFill) {
|
|
|
3093
3109
|
}
|
|
3094
3110
|
const parsed = stops.map((gs) => {
|
|
3095
3111
|
const pos = Number.parseInt(String(gs["@_pos"] || "0"), 10) / 1e3;
|
|
3096
|
-
const color =
|
|
3097
|
-
const opacity =
|
|
3098
|
-
return { pos, color:
|
|
3112
|
+
const color = chunkKDW3LLG5_js.parseDrawingColor(gs) ?? "#888888";
|
|
3113
|
+
const opacity = chunkKDW3LLG5_js.parseDrawingColorOpacity(gs);
|
|
3114
|
+
return { pos, color: chunkKDW3LLG5_js.colorWithOpacity(color, opacity) };
|
|
3099
3115
|
}).sort((a, b) => a.pos - b.pos);
|
|
3100
3116
|
const stopStrings = parsed.map((s) => `${s.color} ${s.pos.toFixed(1)}%`).join(", ");
|
|
3101
3117
|
const lin = gradFill["a:lin"];
|
|
3102
3118
|
if (lin) {
|
|
3103
3119
|
const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
|
|
3104
|
-
const angleDeg = Math.round(angRaw / 6e4);
|
|
3120
|
+
const angleDeg = Math.round(chunk3TB45PVK_js.ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
|
|
3105
3121
|
return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
|
|
3106
3122
|
}
|
|
3107
3123
|
const path = gradFill["a:path"];
|
|
@@ -3136,8 +3152,8 @@ function parsePatternFillCss(pattFill) {
|
|
|
3136
3152
|
if (!pattFill) {
|
|
3137
3153
|
return void 0;
|
|
3138
3154
|
}
|
|
3139
|
-
const fgColor =
|
|
3140
|
-
const bgColor =
|
|
3155
|
+
const fgColor = chunkKDW3LLG5_js.parseDrawingColor(pattFill["a:fgClr"]) ?? "#000000";
|
|
3156
|
+
const bgColor = chunkKDW3LLG5_js.parseDrawingColor(pattFill["a:bgClr"]) ?? "#ffffff";
|
|
3141
3157
|
const preset = String(pattFill["@_prst"] || "ltDnDiag");
|
|
3142
3158
|
switch (preset) {
|
|
3143
3159
|
case "ltHorz":
|
|
@@ -3248,11 +3264,11 @@ function parseCellBorders(cellProperties) {
|
|
|
3248
3264
|
const prstDash = ln["a:prstDash"];
|
|
3249
3265
|
const dashVal = prstDash ? String(prstDash["@_val"] || "") : void 0;
|
|
3250
3266
|
const cssBorderStyle = ooxmlDashToCss(dashVal);
|
|
3251
|
-
const color =
|
|
3267
|
+
const color = chunkKDW3LLG5_js.parseDrawingColor(ln["a:solidFill"]);
|
|
3252
3268
|
if (color) {
|
|
3253
|
-
const opacity =
|
|
3269
|
+
const opacity = chunkKDW3LLG5_js.parseDrawingColorOpacity(ln["a:solidFill"]);
|
|
3254
3270
|
const key = `${edge.prefix}`;
|
|
3255
|
-
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${
|
|
3271
|
+
borderStyle[key] = `${widthPx}px ${cssBorderStyle} ${chunkKDW3LLG5_js.colorWithOpacity(color, opacity)}`;
|
|
3256
3272
|
}
|
|
3257
3273
|
}
|
|
3258
3274
|
return borderStyle;
|
|
@@ -3265,7 +3281,7 @@ function parseCellTextEffects(runProps) {
|
|
|
3265
3281
|
const textShadowParts = [];
|
|
3266
3282
|
const outerShdw = effectLst["a:outerShdw"];
|
|
3267
3283
|
if (outerShdw) {
|
|
3268
|
-
const shdwColor =
|
|
3284
|
+
const shdwColor = chunkKDW3LLG5_js.parseDrawingColor(outerShdw);
|
|
3269
3285
|
if (shdwColor) {
|
|
3270
3286
|
const blurRad = Number.parseInt(String(outerShdw["@_blurRad"] || "0"), 10);
|
|
3271
3287
|
const blurPx = blurRad > 0 ? Math.round(blurRad / 12700) : 0;
|
|
@@ -3283,7 +3299,7 @@ function parseCellTextEffects(runProps) {
|
|
|
3283
3299
|
}
|
|
3284
3300
|
const glow = effectLst["a:glow"];
|
|
3285
3301
|
if (glow) {
|
|
3286
|
-
const glowColor =
|
|
3302
|
+
const glowColor = chunkKDW3LLG5_js.parseDrawingColor(glow);
|
|
3287
3303
|
if (glowColor) {
|
|
3288
3304
|
const glowRad = Number.parseInt(String(glow["@_rad"] || "0"), 10);
|
|
3289
3305
|
const glowPx = glowRad > 0 ? Math.round(glowRad / 12700) : 2;
|
|
@@ -3362,10 +3378,10 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3362
3378
|
if (runProps?.["@_u"] !== void 0) {
|
|
3363
3379
|
cellStyle.textDecorationLine = runProps["@_u"] === "sng" ? "underline" : "none";
|
|
3364
3380
|
}
|
|
3365
|
-
const runColor =
|
|
3381
|
+
const runColor = chunkKDW3LLG5_js.parseDrawingColor(runProps?.["a:solidFill"], schemeColorOverrides) || chunkKDW3LLG5_js.parseDrawingColor(runProps?.["a:highlight"], schemeColorOverrides);
|
|
3366
3382
|
if (runColor) {
|
|
3367
|
-
const opacity =
|
|
3368
|
-
cellStyle.color =
|
|
3383
|
+
const opacity = chunkKDW3LLG5_js.parseDrawingColorOpacity(runProps?.["a:solidFill"]);
|
|
3384
|
+
cellStyle.color = chunkKDW3LLG5_js.colorWithOpacity(runColor, opacity);
|
|
3369
3385
|
}
|
|
3370
3386
|
const fontFamily = runProps?.["a:latin"]?.["@_typeface"] || runProps?.["a:ea"]?.["@_typeface"] || runProps?.["a:cs"]?.["@_typeface"];
|
|
3371
3387
|
if (fontFamily) {
|
|
@@ -3375,15 +3391,15 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3375
3391
|
cellStyle.textAlign = parseParagraphAlignment(paragraphProperties["@_algn"]);
|
|
3376
3392
|
}
|
|
3377
3393
|
const cellProperties = cellXml["a:tcPr"];
|
|
3378
|
-
const cellFill =
|
|
3394
|
+
const cellFill = chunkKDW3LLG5_js.parseDrawingColor(
|
|
3379
3395
|
cellProperties?.["a:solidFill"],
|
|
3380
3396
|
schemeColorOverrides
|
|
3381
3397
|
);
|
|
3382
3398
|
if (cellFill) {
|
|
3383
|
-
const opacity =
|
|
3399
|
+
const opacity = chunkKDW3LLG5_js.parseDrawingColorOpacity(
|
|
3384
3400
|
cellProperties?.["a:solidFill"]
|
|
3385
3401
|
);
|
|
3386
|
-
cellStyle.backgroundColor =
|
|
3402
|
+
cellStyle.backgroundColor = chunkKDW3LLG5_js.colorWithOpacity(cellFill, opacity);
|
|
3387
3403
|
} else {
|
|
3388
3404
|
const gradCss = parseGradientFillCss(cellProperties?.["a:gradFill"]);
|
|
3389
3405
|
if (gradCss) {
|
|
@@ -3398,16 +3414,16 @@ function extractTableCellStyle(cellXml, fallbackStyle, schemeColorOverrides) {
|
|
|
3398
3414
|
const edgeBorders = parseCellBorders(cellProperties);
|
|
3399
3415
|
Object.assign(cellStyle, edgeBorders);
|
|
3400
3416
|
if (!cellStyle.borderLeftColor && !cellStyle.borderRightColor && !cellStyle.borderTopColor && !cellStyle.borderBottomColor) {
|
|
3401
|
-
const borderColor =
|
|
3417
|
+
const borderColor = chunkKDW3LLG5_js.parseDrawingColor(
|
|
3402
3418
|
cellProperties?.["a:lnL"]?.["a:solidFill"],
|
|
3403
3419
|
schemeColorOverrides
|
|
3404
|
-
) ||
|
|
3420
|
+
) || chunkKDW3LLG5_js.parseDrawingColor(
|
|
3405
3421
|
cellProperties?.["a:lnR"]?.["a:solidFill"],
|
|
3406
3422
|
schemeColorOverrides
|
|
3407
|
-
) ||
|
|
3423
|
+
) || chunkKDW3LLG5_js.parseDrawingColor(
|
|
3408
3424
|
cellProperties?.["a:lnT"]?.["a:solidFill"],
|
|
3409
3425
|
schemeColorOverrides
|
|
3410
|
-
) ||
|
|
3426
|
+
) || chunkKDW3LLG5_js.parseDrawingColor(
|
|
3411
3427
|
cellProperties?.["a:lnB"]?.["a:solidFill"],
|
|
3412
3428
|
schemeColorOverrides
|
|
3413
3429
|
);
|
|
@@ -3486,10 +3502,10 @@ function resolveTableStyleFillColor(fill, colorScheme) {
|
|
|
3486
3502
|
}
|
|
3487
3503
|
let color = base;
|
|
3488
3504
|
if (fill.tint !== void 0 && fill.tint > 0) {
|
|
3489
|
-
color =
|
|
3505
|
+
color = chunkKDW3LLG5_js.tintColor2(color, fill.tint / 1e5);
|
|
3490
3506
|
}
|
|
3491
3507
|
if (fill.shade !== void 0 && fill.shade > 0) {
|
|
3492
|
-
color =
|
|
3508
|
+
color = chunkKDW3LLG5_js.shadeColor2(color, 1 - fill.shade / 1e5);
|
|
3493
3509
|
}
|
|
3494
3510
|
return color;
|
|
3495
3511
|
}
|
|
@@ -3514,7 +3530,7 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
|
|
|
3514
3530
|
style.fontFamily = text.fontFace;
|
|
3515
3531
|
applied = true;
|
|
3516
3532
|
} else {
|
|
3517
|
-
const refFont =
|
|
3533
|
+
const refFont = chunkKDW3LLG5_js.resolveFontRefIdx(text.fontRefIdx, fontScheme);
|
|
3518
3534
|
if (refFont) {
|
|
3519
3535
|
style.fontFamily = refFont;
|
|
3520
3536
|
applied = true;
|
|
@@ -3525,10 +3541,10 @@ function applyTableStyleText(text, colorScheme, style, fontScheme) {
|
|
|
3525
3541
|
if (base) {
|
|
3526
3542
|
let color = base;
|
|
3527
3543
|
if (text.fontTint !== void 0 && text.fontTint > 0) {
|
|
3528
|
-
color =
|
|
3544
|
+
color = chunkKDW3LLG5_js.tintColor2(color, text.fontTint / 1e5);
|
|
3529
3545
|
}
|
|
3530
3546
|
if (text.fontShade !== void 0 && text.fontShade > 0) {
|
|
3531
|
-
color =
|
|
3547
|
+
color = chunkKDW3LLG5_js.shadeColor2(color, 1 - text.fontShade / 1e5);
|
|
3532
3548
|
}
|
|
3533
3549
|
style.color = color;
|
|
3534
3550
|
applied = true;
|
|
@@ -3717,7 +3733,7 @@ function parseTableElementData(element, fallbackTextStyle) {
|
|
|
3717
3733
|
};
|
|
3718
3734
|
}
|
|
3719
3735
|
function getCellDiagonalBorders2(style, tableData, pos, styleCtx) {
|
|
3720
|
-
return
|
|
3736
|
+
return chunkKDW3LLG5_js.getCellDiagonalBorders(style, tableData, pos, {
|
|
3721
3737
|
tableStyleMap: styleCtx?.tableStyleMap,
|
|
3722
3738
|
colorScheme: styleCtx?.theme?.colorScheme,
|
|
3723
3739
|
fontScheme: styleCtx?.theme?.fontScheme
|
|
@@ -3865,9 +3881,9 @@ function cellStyleToCss(style) {
|
|
|
3865
3881
|
if (style.gradientFillCss) {
|
|
3866
3882
|
css.background = style.gradientFillCss;
|
|
3867
3883
|
} else if (style.fillMode === "pattern" && style.patternFillPreset) {
|
|
3868
|
-
const fg =
|
|
3869
|
-
const bg =
|
|
3870
|
-
const svgPattern =
|
|
3884
|
+
const fg = chunkKDW3LLG5_js.normalizeHexColor(style.patternFillForeground, "#000000");
|
|
3885
|
+
const bg = chunkKDW3LLG5_js.normalizeHexColor(style.patternFillBackground, "#ffffff");
|
|
3886
|
+
const svgPattern = chunkKDW3LLG5_js.getPatternSvg(style.patternFillPreset, fg, bg);
|
|
3871
3887
|
if (svgPattern) {
|
|
3872
3888
|
const encoded = encodeURIComponent(svgPattern);
|
|
3873
3889
|
css.backgroundImage = `url("data:image/svg+xml,${encoded}")`;
|
|
@@ -3943,7 +3959,7 @@ function cellStyleToCss(style) {
|
|
|
3943
3959
|
if (edge.width || edge.color) {
|
|
3944
3960
|
const w = edge.width ?? 1;
|
|
3945
3961
|
const c = edge.color ?? style.borderColor ?? "#000000";
|
|
3946
|
-
const s =
|
|
3962
|
+
const s = chunkKDW3LLG5_js.ooxmlDashToCssBorderStyle(edge.dash);
|
|
3947
3963
|
css[edge.prefix] = `${w}px ${s} ${c}`;
|
|
3948
3964
|
}
|
|
3949
3965
|
}
|
|
@@ -3974,7 +3990,7 @@ function cellStyleToCss(style) {
|
|
|
3974
3990
|
css.textShadow = textShadowParts.join(", ");
|
|
3975
3991
|
}
|
|
3976
3992
|
if (style.cell3D) {
|
|
3977
|
-
Object.assign(css,
|
|
3993
|
+
Object.assign(css, chunkKDW3LLG5_js.cell3DBevelCss(style.cell3D));
|
|
3978
3994
|
}
|
|
3979
3995
|
return css;
|
|
3980
3996
|
}
|
|
@@ -3988,7 +4004,7 @@ function TableResizeOverlay({
|
|
|
3988
4004
|
const containerRef = React6.useRef(null);
|
|
3989
4005
|
const [rowBounds, setRowBounds] = React6.useState([]);
|
|
3990
4006
|
const dragRef = React6.useRef(null);
|
|
3991
|
-
const colBoundaries = React6.useMemo(() =>
|
|
4007
|
+
const colBoundaries = React6.useMemo(() => chunkKDW3LLG5_js.computeColumnBoundaries(columnWidths), [columnWidths]);
|
|
3992
4008
|
const measureRows = React6.useCallback(() => {
|
|
3993
4009
|
const container = containerRef.current;
|
|
3994
4010
|
if (!container) {
|
|
@@ -4035,11 +4051,11 @@ function TableResizeOverlay({
|
|
|
4035
4051
|
const rect = containerRef.current.getBoundingClientRect();
|
|
4036
4052
|
if (drag.type === "col" && drag.initialWidths && onResizeColumns) {
|
|
4037
4053
|
const deltaProp = (e.clientX - drag.startPos) / rect.width;
|
|
4038
|
-
onResizeColumns(
|
|
4054
|
+
onResizeColumns(chunkKDW3LLG5_js.computeResizedColumnWidths(drag.initialWidths, drag.index, deltaProp));
|
|
4039
4055
|
} else if (drag.type === "row" && onResizeRow) {
|
|
4040
4056
|
const deltaY = e.clientY - drag.startPos;
|
|
4041
|
-
const newHeight =
|
|
4042
|
-
drag.initialRowHeight ??
|
|
4057
|
+
const newHeight = chunkKDW3LLG5_js.computeResizedRowHeight(
|
|
4058
|
+
drag.initialRowHeight ?? chunkKDW3LLG5_js.DEFAULT_ROW_HEIGHT,
|
|
4043
4059
|
deltaY
|
|
4044
4060
|
);
|
|
4045
4061
|
onResizeRow(drag.index, newHeight);
|
|
@@ -4077,7 +4093,7 @@ function TableResizeOverlay({
|
|
|
4077
4093
|
e.stopPropagation();
|
|
4078
4094
|
const table = containerRef.current?.querySelector("table");
|
|
4079
4095
|
const tr = table?.querySelectorAll("tbody > tr")[index];
|
|
4080
|
-
const actualHeight = tr?.offsetHeight ??
|
|
4096
|
+
const actualHeight = tr?.offsetHeight ?? chunkKDW3LLG5_js.DEFAULT_ROW_HEIGHT;
|
|
4081
4097
|
document.body.style.cursor = "row-resize";
|
|
4082
4098
|
document.body.style.userSelect = "none";
|
|
4083
4099
|
dragRef.current = {
|
|
@@ -4125,7 +4141,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4125
4141
|
}
|
|
4126
4142
|
const first = selectedCell.selectedCells[0];
|
|
4127
4143
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
4128
|
-
return
|
|
4144
|
+
return chunkKDW3LLG5_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableData);
|
|
4129
4145
|
})();
|
|
4130
4146
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4131
4147
|
TableResizeOverlay,
|
|
@@ -4158,7 +4174,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4158
4174
|
return null;
|
|
4159
4175
|
}
|
|
4160
4176
|
const isCellSelected = selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex;
|
|
4161
|
-
const isInMultiSelection =
|
|
4177
|
+
const isInMultiSelection = chunkKDW3LLG5_js.isCellInRect(rowIndex, cellIndex, selectionRect);
|
|
4162
4178
|
const isCellEditing = isCellSelected && selectedCell?.isEditing;
|
|
4163
4179
|
const diag = getCellDiagonalBorders2(
|
|
4164
4180
|
cell.style,
|
|
@@ -4188,7 +4204,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4188
4204
|
}
|
|
4189
4205
|
event.stopPropagation();
|
|
4190
4206
|
if (event.shiftKey && selectedCell) {
|
|
4191
|
-
const rect =
|
|
4207
|
+
const rect = chunkKDW3LLG5_js.computeSelectionRect(
|
|
4192
4208
|
selectedCell.rowIndex,
|
|
4193
4209
|
selectedCell.columnIndex,
|
|
4194
4210
|
rowIndex,
|
|
@@ -4198,7 +4214,7 @@ function renderTableFromTableData(element, textStyle, options) {
|
|
|
4198
4214
|
options?.onSelectCell?.({
|
|
4199
4215
|
rowIndex: selectedCell.rowIndex,
|
|
4200
4216
|
columnIndex: selectedCell.columnIndex,
|
|
4201
|
-
selectedCells:
|
|
4217
|
+
selectedCells: chunkKDW3LLG5_js.rectToCells(rect)
|
|
4202
4218
|
});
|
|
4203
4219
|
} else {
|
|
4204
4220
|
options?.onSelectCell?.({
|
|
@@ -4275,7 +4291,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4275
4291
|
}
|
|
4276
4292
|
const first = selectedCell.selectedCells[0];
|
|
4277
4293
|
const last = selectedCell.selectedCells[selectedCell.selectedCells.length - 1];
|
|
4278
|
-
return
|
|
4294
|
+
return chunkKDW3LLG5_js.computeSelectionRect(first.row, first.col, last.row, last.col, tableEl.tableData);
|
|
4279
4295
|
})();
|
|
4280
4296
|
const schemeOverrides = options?.styleCtx?.theme?.colorScheme ? options.styleCtx.theme.colorScheme : void 0;
|
|
4281
4297
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4352,7 +4368,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4352
4368
|
"border px-1 py-0.5 align-top",
|
|
4353
4369
|
isEditable && hasCellSelectionHandler ? "border-blue-200/70 cursor-cell" : "border-white/30",
|
|
4354
4370
|
selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex ? "ring-1 ring-inset ring-blue-500" : null,
|
|
4355
|
-
|
|
4371
|
+
chunkKDW3LLG5_js.isCellInRect(rowIndex, cellIndex, xmlSelectionRect) && !(selectedCell?.rowIndex === rowIndex && selectedCell?.columnIndex === cellIndex) ? "bg-blue-500/15 ring-1 ring-inset ring-blue-400/50" : null
|
|
4356
4372
|
),
|
|
4357
4373
|
colSpan,
|
|
4358
4374
|
rowSpan: rSpan,
|
|
@@ -4363,7 +4379,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4363
4379
|
}
|
|
4364
4380
|
event.stopPropagation();
|
|
4365
4381
|
if (event.shiftKey && selectedCell && tableEl.tableData) {
|
|
4366
|
-
const rect =
|
|
4382
|
+
const rect = chunkKDW3LLG5_js.computeSelectionRect(
|
|
4367
4383
|
selectedCell.rowIndex,
|
|
4368
4384
|
selectedCell.columnIndex,
|
|
4369
4385
|
rowIndex,
|
|
@@ -4373,7 +4389,7 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4373
4389
|
options?.onSelectCell?.({
|
|
4374
4390
|
rowIndex: selectedCell.rowIndex,
|
|
4375
4391
|
columnIndex: selectedCell.columnIndex,
|
|
4376
|
-
selectedCells:
|
|
4392
|
+
selectedCells: chunkKDW3LLG5_js.rectToCells(rect)
|
|
4377
4393
|
});
|
|
4378
4394
|
} else {
|
|
4379
4395
|
options?.onSelectCell?.({
|
|
@@ -4428,24 +4444,24 @@ function renderTableElement(element, textStyle, options) {
|
|
|
4428
4444
|
}
|
|
4429
4445
|
var LEGEND_ITEM_WIDTH = 80;
|
|
4430
4446
|
function partAttrs(part) {
|
|
4431
|
-
return part ?
|
|
4447
|
+
return part ? chunkKDW3LLG5_js.chartPartToAttrs(part) : void 0;
|
|
4432
4448
|
}
|
|
4433
4449
|
function resolveReactPalette(chartData) {
|
|
4434
4450
|
if (chartData.colorPalette && chartData.colorPalette.length > 0) {
|
|
4435
4451
|
return chartData.colorPalette;
|
|
4436
4452
|
}
|
|
4437
|
-
return [...
|
|
4453
|
+
return [...chunkKDW3LLG5_js.getChartStylePalette(chartData.style?.styleId)];
|
|
4438
4454
|
}
|
|
4439
4455
|
function buildReactChartViewModel(element) {
|
|
4440
4456
|
if (element.type !== "chart" || !element.chartData) {
|
|
4441
|
-
return
|
|
4457
|
+
return chunkKDW3LLG5_js.buildChartViewModel(element);
|
|
4442
4458
|
}
|
|
4443
4459
|
const palette = resolveReactPalette(element.chartData);
|
|
4444
4460
|
const themedElement = {
|
|
4445
4461
|
...element,
|
|
4446
4462
|
chartData: { ...element.chartData, colorPalette: palette }
|
|
4447
4463
|
};
|
|
4448
|
-
return
|
|
4464
|
+
return chunkKDW3LLG5_js.buildChartViewModel(themedElement);
|
|
4449
4465
|
}
|
|
4450
4466
|
function renderPrimitive(prim, key) {
|
|
4451
4467
|
switch (prim.kind) {
|
|
@@ -4834,7 +4850,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4834
4850
|
const unmatchedRows = [];
|
|
4835
4851
|
categories.forEach((cat, i) => {
|
|
4836
4852
|
const value = values[i] ?? 0;
|
|
4837
|
-
const code =
|
|
4853
|
+
const code = chunkKDW3LLG5_js.resolveRegionCode(cat);
|
|
4838
4854
|
if (code) {
|
|
4839
4855
|
regionValueMap.set(code, { value, label: cat });
|
|
4840
4856
|
} else {
|
|
@@ -4872,8 +4888,8 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4872
4888
|
let fill = "#e2e8f0";
|
|
4873
4889
|
let dataLabel = null;
|
|
4874
4890
|
if (entry) {
|
|
4875
|
-
const t =
|
|
4876
|
-
fill =
|
|
4891
|
+
const t = chunkKDW3LLG5_js.normalizeValue(entry.value, minVal, maxVal);
|
|
4892
|
+
fill = chunkKDW3LLG5_js.sequentialColorScale(t);
|
|
4877
4893
|
dataLabel = /* @__PURE__ */ jsxRuntime.jsx(
|
|
4878
4894
|
"text",
|
|
4879
4895
|
{
|
|
@@ -4884,7 +4900,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4884
4900
|
fontWeight: 600,
|
|
4885
4901
|
fill: "#1e293b",
|
|
4886
4902
|
style: { pointerEvents: "none" },
|
|
4887
|
-
children:
|
|
4903
|
+
children: chunkKDW3LLG5_js.formatAxisValue(entry.value)
|
|
4888
4904
|
},
|
|
4889
4905
|
`${element.id}-map-dl-${region.code}`
|
|
4890
4906
|
);
|
|
@@ -4902,7 +4918,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4902
4918
|
opacity: 0.9,
|
|
4903
4919
|
children: /* @__PURE__ */ jsxRuntime.jsxs("title", { children: [
|
|
4904
4920
|
region.name,
|
|
4905
|
-
entry ? `: ${
|
|
4921
|
+
entry ? `: ${chunkKDW3LLG5_js.formatAxisValue(entry.value)}` : ""
|
|
4906
4922
|
] })
|
|
4907
4923
|
}
|
|
4908
4924
|
),
|
|
@@ -4940,7 +4956,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4940
4956
|
fontSize: 7,
|
|
4941
4957
|
fill: "#64748b",
|
|
4942
4958
|
textAnchor: "middle",
|
|
4943
|
-
children:
|
|
4959
|
+
children: chunkKDW3LLG5_js.formatAxisValue(minVal)
|
|
4944
4960
|
},
|
|
4945
4961
|
`${element.id}-map-legend-min`
|
|
4946
4962
|
),
|
|
@@ -4952,7 +4968,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
4952
4968
|
fontSize: 7,
|
|
4953
4969
|
fill: "#64748b",
|
|
4954
4970
|
textAnchor: "middle",
|
|
4955
|
-
children:
|
|
4971
|
+
children: chunkKDW3LLG5_js.formatAxisValue(maxVal)
|
|
4956
4972
|
},
|
|
4957
4973
|
`${element.id}-map-legend-max`
|
|
4958
4974
|
)
|
|
@@ -5018,7 +5034,7 @@ function renderMapChart(element, chartData, categoryLabels) {
|
|
|
5018
5034
|
y,
|
|
5019
5035
|
fontSize,
|
|
5020
5036
|
fill: "#475569",
|
|
5021
|
-
children:
|
|
5037
|
+
children: chunkKDW3LLG5_js.formatAxisValue(row.value)
|
|
5022
5038
|
},
|
|
5023
5039
|
`${element.id}-map-ft-val-${i}`
|
|
5024
5040
|
)
|
|
@@ -5089,7 +5105,7 @@ function renderStackedBarChart(element, _chartData, _categoryLabels) {
|
|
|
5089
5105
|
|
|
5090
5106
|
// src/viewer/utils/chart-overlay-utils.ts
|
|
5091
5107
|
function sColor(series, idx) {
|
|
5092
|
-
return
|
|
5108
|
+
return chunkKDW3LLG5_js.seriesColor(series, idx);
|
|
5093
5109
|
}
|
|
5094
5110
|
function valToY(val, range, topY, bottomY) {
|
|
5095
5111
|
const usable = bottomY - topY;
|
|
@@ -5628,7 +5644,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
|
|
|
5628
5644
|
width: 10,
|
|
5629
5645
|
height: 10,
|
|
5630
5646
|
rx: 2,
|
|
5631
|
-
fill:
|
|
5647
|
+
fill: chunkKDW3LLG5_js.seriesColor(s, i, style?.styleId, colorPalette)
|
|
5632
5648
|
},
|
|
5633
5649
|
`${id}-leg-r-${i}`
|
|
5634
5650
|
)
|
|
@@ -5652,7 +5668,7 @@ function renderLegend(id, style, series, layout, colorPalette) {
|
|
|
5652
5668
|
width: 10,
|
|
5653
5669
|
height: 10,
|
|
5654
5670
|
rx: 2,
|
|
5655
|
-
fill:
|
|
5671
|
+
fill: chunkKDW3LLG5_js.seriesColor(s, i, style?.styleId, colorPalette)
|
|
5656
5672
|
}
|
|
5657
5673
|
),
|
|
5658
5674
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: x + 14, y: cy + 8, fontSize: 9, fill: "#475569", children: s.name || `Series ${i + 1}` })
|
|
@@ -5665,9 +5681,9 @@ function renderGridlines(id, style, range, layout) {
|
|
|
5665
5681
|
}
|
|
5666
5682
|
const lines = [];
|
|
5667
5683
|
if (range.logScale && range.logBase) {
|
|
5668
|
-
const ticks =
|
|
5684
|
+
const ticks = chunkKDW3LLG5_js.generateLogTicks(range);
|
|
5669
5685
|
ticks.forEach((tickVal, i) => {
|
|
5670
|
-
const y =
|
|
5686
|
+
const y = chunkKDW3LLG5_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
|
|
5671
5687
|
lines.push(
|
|
5672
5688
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5673
5689
|
"line",
|
|
@@ -5688,7 +5704,7 @@ function renderGridlines(id, style, range, layout) {
|
|
|
5688
5704
|
const steps = 4;
|
|
5689
5705
|
for (let i = 0; i <= steps; i++) {
|
|
5690
5706
|
const val = range.min + range.span * i / steps;
|
|
5691
|
-
const y =
|
|
5707
|
+
const y = chunkKDW3LLG5_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5692
5708
|
lines.push(
|
|
5693
5709
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5694
5710
|
"line",
|
|
@@ -5712,9 +5728,9 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5712
5728
|
const labels = [];
|
|
5713
5729
|
const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
|
|
5714
5730
|
if (range.logScale && range.logBase) {
|
|
5715
|
-
const ticks =
|
|
5731
|
+
const ticks = chunkKDW3LLG5_js.generateLogTicks(range);
|
|
5716
5732
|
ticks.forEach((tickVal, i) => {
|
|
5717
|
-
const y =
|
|
5733
|
+
const y = chunkKDW3LLG5_js.valueToY(tickVal, range, layout.plotTop, layout.plotBottom);
|
|
5718
5734
|
labels.push(
|
|
5719
5735
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5720
5736
|
"text",
|
|
@@ -5724,7 +5740,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5724
5740
|
textAnchor: "end",
|
|
5725
5741
|
fontSize: 8,
|
|
5726
5742
|
fill: "#64748b",
|
|
5727
|
-
children: hasDisplayUnits ?
|
|
5743
|
+
children: hasDisplayUnits ? chunkKDW3LLG5_js.formatAxisValueWithUnits(tickVal, axisFormatting) : chunkKDW3LLG5_js.formatAxisValue(tickVal)
|
|
5728
5744
|
},
|
|
5729
5745
|
`${id}-vaxis-log-${i}`
|
|
5730
5746
|
)
|
|
@@ -5734,7 +5750,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5734
5750
|
const steps = 4;
|
|
5735
5751
|
for (let i = 0; i <= steps; i++) {
|
|
5736
5752
|
const val = range.min + range.span * i / steps;
|
|
5737
|
-
const y =
|
|
5753
|
+
const y = chunkKDW3LLG5_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5738
5754
|
labels.push(
|
|
5739
5755
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5740
5756
|
"text",
|
|
@@ -5744,7 +5760,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5744
5760
|
textAnchor: "end",
|
|
5745
5761
|
fontSize: 8,
|
|
5746
5762
|
fill: "#64748b",
|
|
5747
|
-
children: hasDisplayUnits ?
|
|
5763
|
+
children: hasDisplayUnits ? chunkKDW3LLG5_js.formatAxisValueWithUnits(val, axisFormatting) : chunkKDW3LLG5_js.formatAxisValue(val)
|
|
5748
5764
|
},
|
|
5749
5765
|
`${id}-vaxis-${i}`
|
|
5750
5766
|
)
|
|
@@ -5752,7 +5768,7 @@ function renderValueAxis(id, range, layout, axisFormatting) {
|
|
|
5752
5768
|
}
|
|
5753
5769
|
}
|
|
5754
5770
|
if (hasDisplayUnits) {
|
|
5755
|
-
const unitLabel =
|
|
5771
|
+
const unitLabel = chunkKDW3LLG5_js.getDisplayUnitLabel(
|
|
5756
5772
|
axisFormatting.displayUnits,
|
|
5757
5773
|
axisFormatting.displayUnitsLabel
|
|
5758
5774
|
);
|
|
@@ -5827,7 +5843,7 @@ function renderZeroLine(id, range, layout) {
|
|
|
5827
5843
|
if (range.min >= 0) {
|
|
5828
5844
|
return null;
|
|
5829
5845
|
}
|
|
5830
|
-
const y =
|
|
5846
|
+
const y = chunkKDW3LLG5_js.valueToY(0, range, layout.plotTop, layout.plotBottom);
|
|
5831
5847
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5832
5848
|
"line",
|
|
5833
5849
|
{
|
|
@@ -5851,7 +5867,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5851
5867
|
const hasDisplayUnits = Boolean(axisFormatting?.displayUnits);
|
|
5852
5868
|
for (let i = 0; i <= steps; i++) {
|
|
5853
5869
|
const val = range.min + range.span * i / steps;
|
|
5854
|
-
const y =
|
|
5870
|
+
const y = chunkKDW3LLG5_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5855
5871
|
labels.push(
|
|
5856
5872
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5857
5873
|
"text",
|
|
@@ -5863,7 +5879,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5863
5879
|
fontFamily,
|
|
5864
5880
|
fontWeight,
|
|
5865
5881
|
fill: fontColor,
|
|
5866
|
-
children: hasDisplayUnits ?
|
|
5882
|
+
children: hasDisplayUnits ? chunkKDW3LLG5_js.formatAxisValueWithUnits(val, axisFormatting) : chunkKDW3LLG5_js.formatAxisValue(val)
|
|
5867
5883
|
},
|
|
5868
5884
|
`${id}-sec-vaxis-${i}`
|
|
5869
5885
|
)
|
|
@@ -5887,7 +5903,7 @@ function renderSecondaryValueAxis(id, range, layout, axisFormatting) {
|
|
|
5887
5903
|
);
|
|
5888
5904
|
}
|
|
5889
5905
|
if (hasDisplayUnits) {
|
|
5890
|
-
const unitLabel =
|
|
5906
|
+
const unitLabel = chunkKDW3LLG5_js.getDisplayUnitLabel(
|
|
5891
5907
|
axisFormatting.displayUnits,
|
|
5892
5908
|
axisFormatting.displayUnitsLabel
|
|
5893
5909
|
);
|
|
@@ -5918,7 +5934,7 @@ function renderSecondaryAxisTicks(id, range, layout) {
|
|
|
5918
5934
|
const ticks = [];
|
|
5919
5935
|
for (let i = 0; i <= steps; i++) {
|
|
5920
5936
|
const val = range.min + range.span * i / steps;
|
|
5921
|
-
const y =
|
|
5937
|
+
const y = chunkKDW3LLG5_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5922
5938
|
ticks.push(
|
|
5923
5939
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5924
5940
|
"line",
|
|
@@ -5945,7 +5961,7 @@ function renderSecondaryGridlines(id, range, layout, axisFormatting) {
|
|
|
5945
5961
|
const gridColor = axisFormatting.majorGridlinesSpPr?.strokeColor ?? "#e2e8f0";
|
|
5946
5962
|
for (let i = 0; i <= steps; i++) {
|
|
5947
5963
|
const val = range.min + range.span * i / steps;
|
|
5948
|
-
const y =
|
|
5964
|
+
const y = chunkKDW3LLG5_js.valueToY(val, range, layout.plotTop, layout.plotBottom);
|
|
5949
5965
|
lines.push(
|
|
5950
5966
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5951
5967
|
"line",
|
|
@@ -6107,7 +6123,7 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
|
|
|
6107
6123
|
width: 8,
|
|
6108
6124
|
height: 8,
|
|
6109
6125
|
borderRadius: 2,
|
|
6110
|
-
backgroundColor:
|
|
6126
|
+
backgroundColor: chunkKDW3LLG5_js.seriesColor(
|
|
6111
6127
|
s,
|
|
6112
6128
|
si,
|
|
6113
6129
|
chartData.style?.styleId,
|
|
@@ -6146,8 +6162,8 @@ function renderChartDataTable(elementId, chartData, svgWidth) {
|
|
|
6146
6162
|
function renderStockChart(element, chartData, categoryLabels) {
|
|
6147
6163
|
const style = chartData.style;
|
|
6148
6164
|
const legendPos = style?.legendPosition || "b";
|
|
6149
|
-
const range =
|
|
6150
|
-
const layout =
|
|
6165
|
+
const range = chunkKDW3LLG5_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6166
|
+
const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6151
6167
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6152
6168
|
const barGroupWidth = layout.plotWidth / catCount;
|
|
6153
6169
|
const candleWidth = barGroupWidth * 0.5;
|
|
@@ -6168,10 +6184,10 @@ function renderStockChart(element, chartData, categoryLabels) {
|
|
|
6168
6184
|
const close = closeSeries.values[ci] ?? high;
|
|
6169
6185
|
const isUp = close >= open;
|
|
6170
6186
|
const cx = layout.plotLeft + barGroupWidth * ci + barGroupWidth / 2;
|
|
6171
|
-
const highY =
|
|
6172
|
-
const lowY =
|
|
6173
|
-
const openY =
|
|
6174
|
-
const closeY =
|
|
6187
|
+
const highY = chunkKDW3LLG5_js.valueToY(high, range, layout.plotTop, layout.plotBottom);
|
|
6188
|
+
const lowY = chunkKDW3LLG5_js.valueToY(low, range, layout.plotTop, layout.plotBottom);
|
|
6189
|
+
const openY = chunkKDW3LLG5_js.valueToY(open, range, layout.plotTop, layout.plotBottom);
|
|
6190
|
+
const closeY = chunkKDW3LLG5_js.valueToY(close, range, layout.plotTop, layout.plotBottom);
|
|
6175
6191
|
elements.push(
|
|
6176
6192
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6177
6193
|
"line",
|
|
@@ -6214,7 +6230,7 @@ function renderStockChart(element, chartData, categoryLabels) {
|
|
|
6214
6230
|
textAnchor: "middle",
|
|
6215
6231
|
fontSize: 7,
|
|
6216
6232
|
fill: "#334155",
|
|
6217
|
-
children:
|
|
6233
|
+
children: chunkKDW3LLG5_js.formatAxisValue(close)
|
|
6218
6234
|
},
|
|
6219
6235
|
`${element.id}-stock-dl-${ci}`
|
|
6220
6236
|
)
|
|
@@ -6256,7 +6272,7 @@ function FailedToLoad() {
|
|
|
6256
6272
|
var LazySurfaceChart3DScene = React6__default.default.lazy(
|
|
6257
6273
|
async () => {
|
|
6258
6274
|
try {
|
|
6259
|
-
return await import('./SurfaceChart3DScene-
|
|
6275
|
+
return await import('./SurfaceChart3DScene-QIREQ66D.js');
|
|
6260
6276
|
} catch {
|
|
6261
6277
|
return { default: FailedToLoad };
|
|
6262
6278
|
}
|
|
@@ -6280,7 +6296,7 @@ var SurfaceChart3DErrorBoundary = class extends React6__default.default.Componen
|
|
|
6280
6296
|
function buildSurfaceData(chartData, categoryLabels) {
|
|
6281
6297
|
const rows = chartData.series.length;
|
|
6282
6298
|
const cols = Math.max(categoryLabels.length, 1);
|
|
6283
|
-
const range =
|
|
6299
|
+
const range = chunkKDW3LLG5_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6284
6300
|
const heightMap = new Float32Array(rows * cols);
|
|
6285
6301
|
const colorMap = new Float32Array(rows * cols * 3);
|
|
6286
6302
|
for (let r = 0; r < rows; r++) {
|
|
@@ -6400,8 +6416,8 @@ function darkenRgb(r, g, b, factor) {
|
|
|
6400
6416
|
function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
|
|
6401
6417
|
const style = chartData.style;
|
|
6402
6418
|
const legendPos = style?.legendPosition || "b";
|
|
6403
|
-
const layout =
|
|
6404
|
-
const range =
|
|
6419
|
+
const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, false, legendPos);
|
|
6420
|
+
const range = chunkKDW3LLG5_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6405
6421
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6406
6422
|
const seriesCount = chartData.series.length;
|
|
6407
6423
|
const cols = catCount - 1;
|
|
@@ -6491,8 +6507,8 @@ function renderIsometricSurfaceChart(element, chartData, categoryLabels) {
|
|
|
6491
6507
|
function renderFlatSurfaceChart(element, chartData, categoryLabels) {
|
|
6492
6508
|
const style = chartData.style;
|
|
6493
6509
|
const legendPos = style?.legendPosition || "b";
|
|
6494
|
-
const layout =
|
|
6495
|
-
const range =
|
|
6510
|
+
const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6511
|
+
const range = chunkKDW3LLG5_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6496
6512
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6497
6513
|
const seriesCount = chartData.series.length;
|
|
6498
6514
|
const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
|
|
@@ -6555,7 +6571,7 @@ function renderSurfaceChart(element, chartData, categoryLabels) {
|
|
|
6555
6571
|
function renderTreemapChart(element, chartData, categoryLabels) {
|
|
6556
6572
|
const style = chartData.style;
|
|
6557
6573
|
const legendPos = style?.legendPosition || "b";
|
|
6558
|
-
const layout =
|
|
6574
|
+
const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, false, legendPos);
|
|
6559
6575
|
const allValues = chartData.series.flatMap((s) => s.values);
|
|
6560
6576
|
const totalAbs = allValues.reduce((sum, v) => sum + Math.abs(v), 0) || 1;
|
|
6561
6577
|
const rects = [];
|
|
@@ -6578,7 +6594,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
|
|
|
6578
6594
|
y: curY,
|
|
6579
6595
|
width: Math.max(w - 1, 1),
|
|
6580
6596
|
height: Math.max(h - 1, 1),
|
|
6581
|
-
fill:
|
|
6597
|
+
fill: chunkKDW3LLG5_js.paletteColor(item.index, chartData.style?.styleId, chartData.colorPalette),
|
|
6582
6598
|
rx: 2,
|
|
6583
6599
|
opacity: 0.85
|
|
6584
6600
|
},
|
|
@@ -6631,8 +6647,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6631
6647
|
const style = chartData.style;
|
|
6632
6648
|
const legendPos = style?.legendPosition || "b";
|
|
6633
6649
|
const values = chartData.series[0]?.values ?? [];
|
|
6634
|
-
const range =
|
|
6635
|
-
const layout =
|
|
6650
|
+
const range = chunkKDW3LLG5_js.computeValueRangeForChart(chartData.series, chartData.axes);
|
|
6651
|
+
const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, true, legendPos);
|
|
6636
6652
|
const catCount = Math.max(categoryLabels.length, values.length, 1);
|
|
6637
6653
|
const barWidth = layout.plotWidth / catCount * 0.6;
|
|
6638
6654
|
const gap = layout.plotWidth / catCount * 0.2;
|
|
@@ -6643,8 +6659,8 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6643
6659
|
const isLast = i === values.length - 1;
|
|
6644
6660
|
const startVal = isLast ? 0 : runningTotal;
|
|
6645
6661
|
const endVal = isLast ? runningTotal + val : runningTotal + val;
|
|
6646
|
-
const barStartY =
|
|
6647
|
-
const barEndY =
|
|
6662
|
+
const barStartY = chunkKDW3LLG5_js.valueToY(startVal, range, layout.plotTop, layout.plotBottom);
|
|
6663
|
+
const barEndY = chunkKDW3LLG5_js.valueToY(endVal, range, layout.plotTop, layout.plotBottom);
|
|
6648
6664
|
const x = layout.plotLeft + layout.plotWidth / catCount * i + gap;
|
|
6649
6665
|
const y = Math.min(barStartY, barEndY);
|
|
6650
6666
|
const h = Math.max(Math.abs(barEndY - barStartY), 1);
|
|
@@ -6673,7 +6689,7 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6673
6689
|
textAnchor: "middle",
|
|
6674
6690
|
fontSize: 7,
|
|
6675
6691
|
fill: "#334155",
|
|
6676
|
-
children:
|
|
6692
|
+
children: chunkKDW3LLG5_js.formatAxisValue(isLast ? endVal : val)
|
|
6677
6693
|
},
|
|
6678
6694
|
`${element.id}-wf-dl-${i}`
|
|
6679
6695
|
)
|
|
@@ -6721,18 +6737,18 @@ function renderWaterfallChart(element, chartData, categoryLabels) {
|
|
|
6721
6737
|
function renderComboChart(element, chartData, categoryLabels) {
|
|
6722
6738
|
const style = chartData.style;
|
|
6723
6739
|
const legendPos = style?.legendPosition || "b";
|
|
6724
|
-
const layoutOpts =
|
|
6740
|
+
const layoutOpts = chunkKDW3LLG5_js.computeLayoutOptions(
|
|
6725
6741
|
chartData.axes,
|
|
6726
6742
|
chartData.dataTable,
|
|
6727
6743
|
chartData.series.length
|
|
6728
6744
|
);
|
|
6729
|
-
const layout =
|
|
6730
|
-
const { primary, secondary } =
|
|
6745
|
+
const layout = chunkKDW3LLG5_js.computeLayout(element.width, element.height, style, true, legendPos, layoutOpts);
|
|
6746
|
+
const { primary, secondary } = chunkKDW3LLG5_js.splitSeriesByAxis(chartData.series, chartData.axes);
|
|
6731
6747
|
const primarySeries = primary.length > 0 ? primary.map((e) => e.series) : chartData.series;
|
|
6732
6748
|
const secondarySeries = secondary.map((e) => e.series);
|
|
6733
|
-
const range =
|
|
6734
|
-
const secondaryRange = secondarySeries.length > 0 ?
|
|
6735
|
-
const secondaryAxisFmt =
|
|
6749
|
+
const range = chunkKDW3LLG5_js.computeValueRangeForChart(primarySeries, chartData.axes);
|
|
6750
|
+
const secondaryRange = secondarySeries.length > 0 ? chunkKDW3LLG5_js.computeValueRange(secondarySeries) : void 0;
|
|
6751
|
+
const secondaryAxisFmt = chunkKDW3LLG5_js.getSecondaryValueAxis(chartData.axes);
|
|
6736
6752
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
6737
6753
|
const barSeriesCount = 1;
|
|
6738
6754
|
const barGroupWidth = layout.plotWidth / catCount;
|
|
@@ -6748,8 +6764,8 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6748
6764
|
const barRange = isBarSecondary && secondaryRange ? secondaryRange : range;
|
|
6749
6765
|
barSeries.values.forEach((val, vi) => {
|
|
6750
6766
|
const x = layout.plotLeft + barGroupWidth * vi + barOffset;
|
|
6751
|
-
const zeroY =
|
|
6752
|
-
const valY =
|
|
6767
|
+
const zeroY = chunkKDW3LLG5_js.valueToY(0, barRange, layout.plotTop, layout.plotBottom);
|
|
6768
|
+
const valY = chunkKDW3LLG5_js.valueToY(val, barRange, layout.plotTop, layout.plotBottom);
|
|
6753
6769
|
const y = Math.min(zeroY, valY);
|
|
6754
6770
|
const h = Math.max(Math.abs(zeroY - valY), 1);
|
|
6755
6771
|
barElements.push(
|
|
@@ -6760,7 +6776,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6760
6776
|
y,
|
|
6761
6777
|
width: barWidth,
|
|
6762
6778
|
height: h,
|
|
6763
|
-
fill:
|
|
6779
|
+
fill: chunkKDW3LLG5_js.seriesColor(barSeries, 0, chartData.style?.styleId, chartData.colorPalette),
|
|
6764
6780
|
rx: 1
|
|
6765
6781
|
},
|
|
6766
6782
|
`${element.id}-combo-bar-${vi}`
|
|
@@ -6776,7 +6792,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6776
6792
|
textAnchor: "middle",
|
|
6777
6793
|
fontSize: 7,
|
|
6778
6794
|
fill: "#334155",
|
|
6779
|
-
children:
|
|
6795
|
+
children: chunkKDW3LLG5_js.formatAxisValue(val)
|
|
6780
6796
|
},
|
|
6781
6797
|
`${element.id}-combo-bar-dl-${vi}`
|
|
6782
6798
|
)
|
|
@@ -6793,10 +6809,10 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6793
6809
|
const activeRange = isSecondary && secondaryRange ? secondaryRange : range;
|
|
6794
6810
|
const points = series.values.map((val, vi) => {
|
|
6795
6811
|
const x = layout.plotLeft + barGroupWidth * vi + barGroupWidth / 2;
|
|
6796
|
-
const y =
|
|
6812
|
+
const y = chunkKDW3LLG5_js.valueToY(val, activeRange, layout.plotTop, layout.plotBottom);
|
|
6797
6813
|
return { x, y, val };
|
|
6798
6814
|
});
|
|
6799
|
-
const c =
|
|
6815
|
+
const c = chunkKDW3LLG5_js.seriesColor(series, seriesIdx, chartData.style?.styleId, chartData.colorPalette);
|
|
6800
6816
|
lineElements.push(
|
|
6801
6817
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6802
6818
|
"polyline",
|
|
@@ -6823,7 +6839,7 @@ function renderComboChart(element, chartData, categoryLabels) {
|
|
|
6823
6839
|
textAnchor: "middle",
|
|
6824
6840
|
fontSize: 7,
|
|
6825
6841
|
fill: "#334155",
|
|
6826
|
-
children:
|
|
6842
|
+
children: chunkKDW3LLG5_js.formatAxisValue(p.val)
|
|
6827
6843
|
},
|
|
6828
6844
|
`${element.id}-combo-line-dl-${si}-${vi}`
|
|
6829
6845
|
)
|
|
@@ -7969,14 +7985,14 @@ function buildNotesPdf(pages) {
|
|
|
7969
7985
|
notes: page.notes,
|
|
7970
7986
|
slideNumber: page.slideNumber
|
|
7971
7987
|
}));
|
|
7972
|
-
const bytes =
|
|
7988
|
+
const bytes = chunkKDW3LLG5_js.buildNotesPdfBytes(images, meta);
|
|
7973
7989
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
7974
7990
|
return URL.createObjectURL(blob);
|
|
7975
7991
|
}
|
|
7976
7992
|
|
|
7977
7993
|
// src/viewer/utils/pdf-builder-slides.ts
|
|
7978
7994
|
function buildPdfFromImageData(images) {
|
|
7979
|
-
const bytes =
|
|
7995
|
+
const bytes = chunkKDW3LLG5_js.buildSlidesPdfBytes(images);
|
|
7980
7996
|
const blob = new Blob([bytes], { type: "application/pdf" });
|
|
7981
7997
|
return URL.createObjectURL(blob);
|
|
7982
7998
|
}
|
|
@@ -7985,7 +8001,7 @@ function buildPdfFromImageData(images) {
|
|
|
7985
8001
|
var activePreview = null;
|
|
7986
8002
|
function startPreviewAnimation(elementId, preset, options) {
|
|
7987
8003
|
stopPreviewAnimation();
|
|
7988
|
-
const descriptor =
|
|
8004
|
+
const descriptor = chunkKDW3LLG5_js.buildPreviewAnimation(preset, options);
|
|
7989
8005
|
if (!descriptor) {
|
|
7990
8006
|
return;
|
|
7991
8007
|
}
|