stickyflow 0.11.3 → 0.12.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 +17 -0
- package/dist/binding/index.cjs +9 -9
- package/dist/binding/index.d.cts +3 -3
- package/dist/binding/index.d.ts +3 -3
- package/dist/binding/index.js +3 -3
- package/dist/{chunk-WZA3DJJH.cjs → chunk-3OF37CZX.cjs} +15 -15
- package/dist/{chunk-WZA3DJJH.cjs.map → chunk-3OF37CZX.cjs.map} +1 -1
- package/dist/{chunk-V22J7Z4H.cjs → chunk-3XPNGIMV.cjs} +37 -37
- package/dist/chunk-3XPNGIMV.cjs.map +1 -0
- package/dist/{chunk-G6IW2IX3.js → chunk-4SXXMOXR.js} +31 -5
- package/dist/chunk-4SXXMOXR.js.map +1 -0
- package/dist/{chunk-GQRJSA73.cjs → chunk-EG7VZJZX.cjs} +23 -23
- package/dist/{chunk-GQRJSA73.cjs.map → chunk-EG7VZJZX.cjs.map} +1 -1
- package/dist/{chunk-BFQWCOEC.js → chunk-FYSJMUJI.js} +3 -3
- package/dist/{chunk-BFQWCOEC.js.map → chunk-FYSJMUJI.js.map} +1 -1
- package/dist/{chunk-W25SXORW.js → chunk-LDRUTQF7.js} +4 -4
- package/dist/{chunk-W25SXORW.js.map → chunk-LDRUTQF7.js.map} +1 -1
- package/dist/{chunk-IQQ5KBL6.js → chunk-Q4OIDWT6.js} +6 -6
- package/dist/chunk-Q4OIDWT6.js.map +1 -0
- package/dist/{chunk-UHKFJBY5.cjs → chunk-SKGJXCAO.cjs} +31 -5
- package/dist/chunk-SKGJXCAO.cjs.map +1 -0
- package/dist/{chunk-EBHO2FJ5.js → chunk-UCOMSZPC.js} +10 -9
- package/dist/chunk-UCOMSZPC.js.map +1 -0
- package/dist/{chunk-K5PGMZAD.cjs → chunk-ZE2KRWOM.cjs} +663 -662
- package/dist/chunk-ZE2KRWOM.cjs.map +1 -0
- package/dist/index.cjs +36 -36
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +5 -5
- package/dist/interaction/index.cjs +275 -237
- package/dist/interaction/index.cjs.map +1 -1
- package/dist/interaction/index.js +41 -3
- package/dist/interaction/index.js.map +1 -1
- package/dist/{runtime-C-C5v9po.d.cts → runtime-BJDaqo6f.d.cts} +1 -1
- package/dist/{runtime-lCAfU-1Q.d.ts → runtime-DaconR36.d.ts} +1 -1
- package/dist/{runtimeTypes-BDA_CfWh.d.ts → runtimeTypes-BE_GI1yU.d.ts} +1 -1
- package/dist/{runtimeTypes-B7p6b1Bi.d.cts → runtimeTypes-BE_nllY6.d.cts} +1 -1
- package/dist/stickyflow-diagram.global.js +39 -39
- package/dist/stickyflow-diagram.global.js.map +1 -1
- package/dist/viewer/index.cjs +9 -9
- package/dist/viewer/index.d.cts +1 -1
- package/dist/viewer/index.d.ts +1 -1
- package/dist/viewer/index.js +4 -4
- package/dist/web-component/index.cjs +6 -6
- package/dist/web-component/index.js +4 -4
- package/package.json +1 -1
- package/dist/chunk-EBHO2FJ5.js.map +0 -1
- package/dist/chunk-G6IW2IX3.js.map +0 -1
- package/dist/chunk-IQQ5KBL6.js.map +0 -1
- package/dist/chunk-K5PGMZAD.cjs.map +0 -1
- package/dist/chunk-UHKFJBY5.cjs.map +0 -1
- package/dist/chunk-V22J7Z4H.cjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkSKGJXCAO_cjs = require('./chunk-SKGJXCAO.cjs');
|
|
4
4
|
|
|
5
5
|
// src/renderInput/styleDecoding/colorToken.ts
|
|
6
6
|
var COLOR_TOKEN_PATTERN = String.raw`rgba?\([^)]*\)|#[0-9a-fA-F]+|[a-zA-Z][\w-]*`;
|
|
@@ -660,7 +660,7 @@ function readComponentValue(descriptor, raw) {
|
|
|
660
660
|
return raw;
|
|
661
661
|
}
|
|
662
662
|
function genericComponentObject(canvasObject) {
|
|
663
|
-
const descriptor =
|
|
663
|
+
const descriptor = chunkSKGJXCAO_cjs.getComponentDescriptor(canvasObject.component.type);
|
|
664
664
|
return {
|
|
665
665
|
id: canvasObject.id,
|
|
666
666
|
type: canvasObject.component.type,
|
|
@@ -849,7 +849,7 @@ var BUILT_IN_OBJECTS = {
|
|
|
849
849
|
};
|
|
850
850
|
function componentObject(canvasObject) {
|
|
851
851
|
const type = canvasObject.component.type;
|
|
852
|
-
return
|
|
852
|
+
return chunkSKGJXCAO_cjs.isBuiltInComponentType(type) ? BUILT_IN_OBJECTS[type](canvasObject) : genericComponentObject(canvasObject);
|
|
853
853
|
}
|
|
854
854
|
|
|
855
855
|
// src/renderInput/fromSfl/canvasObjects/connection.ts
|
|
@@ -896,6 +896,7 @@ function dimensionObject(canvasObject) {
|
|
|
896
896
|
// src/renderInput/fromSfl/canvasObjects/frame.ts
|
|
897
897
|
function frameObject(e) {
|
|
898
898
|
const p = e.props;
|
|
899
|
+
const screen = e.kind === "screen";
|
|
899
900
|
return {
|
|
900
901
|
id: e.id,
|
|
901
902
|
title: e.text ?? null,
|
|
@@ -903,18 +904,18 @@ function frameObject(e) {
|
|
|
903
904
|
y: e.y,
|
|
904
905
|
width: e.width,
|
|
905
906
|
height: e.height,
|
|
906
|
-
fillColor: p.fill ?? "rgba(155, 66, 223, 0.05)",
|
|
907
|
-
strokeColor: p.stroke ?? "#9b42df",
|
|
908
|
-
strokeWidth: numOf(p.strokeWidth) ?? 2,
|
|
909
|
-
cornerRadius: numOf(p.cornerRadius) ?? 12,
|
|
907
|
+
fillColor: p.fill ?? (screen ? "rgba(0, 0, 0, 0)" : "rgba(155, 66, 223, 0.05)"),
|
|
908
|
+
strokeColor: p.stroke ?? (screen ? "rgba(0, 0, 0, 0)" : "#9b42df"),
|
|
909
|
+
strokeWidth: numOf(p.strokeWidth) ?? (screen ? 0 : 2),
|
|
910
|
+
cornerRadius: numOf(p.cornerRadius) ?? (screen ? 0 : 12),
|
|
910
911
|
textColor: p.textColor ?? "#ffffff",
|
|
911
912
|
fontSize: numOf(p.fontSize) ?? 14,
|
|
912
913
|
fontWeight: oneOf(p.fontWeight, FONT_WEIGHTS, "bold"),
|
|
913
914
|
fontFamily: p.fontFamily,
|
|
914
915
|
dash: dashArray(p.dash),
|
|
915
|
-
showLabel: p.showLabel !== "false",
|
|
916
|
+
showLabel: screen ? p.showLabel === "true" : p.showLabel !== "false",
|
|
916
917
|
labelPosition: oneOf(p.labelPosition, LABEL_POSITIONS, "top"),
|
|
917
|
-
shadow: p.shadow !== "false",
|
|
918
|
+
shadow: screen ? p.shadow === "true" : p.shadow !== "false",
|
|
918
919
|
clip: p.clip === "true" || void 0,
|
|
919
920
|
order: e.order,
|
|
920
921
|
sourceIndex: e.sourceIndex
|
|
@@ -1113,9 +1114,9 @@ function collectCanvasObjects(state) {
|
|
|
1113
1114
|
shapes: canvasObjects.filter((canvasObject) => canvasObject.objectType === "shape").map((shape) => shapeObject(shape, shaders)),
|
|
1114
1115
|
frames: canvasObjects.filter((canvasObject) => canvasObject.objectType === "frame").map(frameObject),
|
|
1115
1116
|
swimlanes: canvasObjects.filter((canvasObject) => canvasObject.objectType === "swimlane").map(swimlaneObject),
|
|
1116
|
-
isometricObjects: canvasObjects.filter(
|
|
1117
|
+
isometricObjects: canvasObjects.filter(chunkSKGJXCAO_cjs.isIsometricObject).map(isometricObject),
|
|
1117
1118
|
paths: canvasObjects.filter((canvasObject) => canvasObject.objectType === "path").map(pathObject),
|
|
1118
|
-
dimensions: canvasObjects.filter(
|
|
1119
|
+
dimensions: canvasObjects.filter(chunkSKGJXCAO_cjs.isDimensionObject).map(dimensionObject),
|
|
1119
1120
|
charts: canvasObjects.filter((canvasObject) => canvasObject.objectType === "chart").map(chartObject),
|
|
1120
1121
|
components: canvasObjects.filter(
|
|
1121
1122
|
(canvasObject) => canvasObject.objectType === "component" && canvasObject.component !== void 0
|
|
@@ -1142,9 +1143,9 @@ function sidePoint(canvasObject, endpoint) {
|
|
|
1142
1143
|
function namedPortPoint(canvasObject, endpoint) {
|
|
1143
1144
|
const port = canvasObject.symbol?.ports?.find((candidate) => candidate.name === endpoint.port);
|
|
1144
1145
|
if (!port) {
|
|
1145
|
-
return
|
|
1146
|
+
return chunkSKGJXCAO_cjs.elementCenter(canvasObject);
|
|
1146
1147
|
}
|
|
1147
|
-
return
|
|
1148
|
+
return chunkSKGJXCAO_cjs.pointAtNormalizedPort(
|
|
1148
1149
|
{
|
|
1149
1150
|
x: canvasObject.x,
|
|
1150
1151
|
y: canvasObject.y,
|
|
@@ -1190,7 +1191,7 @@ function explicitAnchorPoint(canvasObject, endpoint) {
|
|
|
1190
1191
|
return null;
|
|
1191
1192
|
}
|
|
1192
1193
|
function automaticEndpointPoint(canvasObject, opposite) {
|
|
1193
|
-
return opposite ?
|
|
1194
|
+
return opposite ? chunkSKGJXCAO_cjs.edgePointToward(canvasObject, opposite) : chunkSKGJXCAO_cjs.elementCenter(canvasObject);
|
|
1194
1195
|
}
|
|
1195
1196
|
function findPositionedCanvasObject(canvasObjects, id) {
|
|
1196
1197
|
return canvasObjects.find((candidate) => candidate.id === id);
|
|
@@ -1208,7 +1209,7 @@ function positionedCanvasObjects(canvasObjects) {
|
|
|
1208
1209
|
];
|
|
1209
1210
|
}
|
|
1210
1211
|
function connectionEndpointPoint(object, face) {
|
|
1211
|
-
return object ?
|
|
1212
|
+
return object ? chunkSKGJXCAO_cjs.isometricFaceCenter(object, face) : { x: 0, y: 0 };
|
|
1212
1213
|
}
|
|
1213
1214
|
function isometricStackPosition(isometricObjects, id) {
|
|
1214
1215
|
const index = isometricObjects.findIndex((object2) => object2.id === id);
|
|
@@ -1223,8 +1224,8 @@ function connectionStack(isometricObjects, connection) {
|
|
|
1223
1224
|
return { order: connection.order, sourceIndex: connection.sourceIndex };
|
|
1224
1225
|
}
|
|
1225
1226
|
const behind = [
|
|
1226
|
-
|
|
1227
|
-
|
|
1227
|
+
chunkSKGJXCAO_cjs.VISIBLE_ISOMETRIC_FACES.has(connection.fromFace) ? void 0 : isometricStackPosition(isometricObjects, connection.fromId),
|
|
1228
|
+
chunkSKGJXCAO_cjs.VISIBLE_ISOMETRIC_FACES.has(connection.toFace) ? void 0 : isometricStackPosition(isometricObjects, connection.toId)
|
|
1228
1229
|
].filter((position) => position !== void 0);
|
|
1229
1230
|
if (!behind.length) {
|
|
1230
1231
|
return { sourceIndex: connection.sourceIndex };
|
|
@@ -1266,7 +1267,7 @@ function createRenderInputLinks(canvasObjects) {
|
|
|
1266
1267
|
|
|
1267
1268
|
// src/renderInput/fromSfl/index.ts
|
|
1268
1269
|
function sflToRenderInput(sfl) {
|
|
1269
|
-
const state =
|
|
1270
|
+
const state = chunkSKGJXCAO_cjs.sflToCanvasState(sfl);
|
|
1270
1271
|
const canvasObjects = collectCanvasObjects(state);
|
|
1271
1272
|
return {
|
|
1272
1273
|
shapes: canvasObjects.shapes,
|
|
@@ -1285,13 +1286,13 @@ function sflToRenderInput(sfl) {
|
|
|
1285
1286
|
// src/renderScene/artifacts/component/placeholder.ts
|
|
1286
1287
|
var STROKE = "#94a3b8";
|
|
1287
1288
|
function buildPlaceholder(component, index) {
|
|
1288
|
-
const x =
|
|
1289
|
-
const y =
|
|
1290
|
-
const width = Math.max(0,
|
|
1291
|
-
const height = Math.max(0,
|
|
1292
|
-
const rotation =
|
|
1289
|
+
const x = chunkSKGJXCAO_cjs.finite(component.x, 0);
|
|
1290
|
+
const y = chunkSKGJXCAO_cjs.finite(component.y, 0);
|
|
1291
|
+
const width = Math.max(0, chunkSKGJXCAO_cjs.finite(component.width, 120));
|
|
1292
|
+
const height = Math.max(0, chunkSKGJXCAO_cjs.finite(component.height, 60));
|
|
1293
|
+
const rotation = chunkSKGJXCAO_cjs.finite(component.rotation, 0);
|
|
1293
1294
|
const order = 1e4 + index;
|
|
1294
|
-
const bounds =
|
|
1295
|
+
const bounds = chunkSKGJXCAO_cjs.rotatedBounds({ x, y, width, height }, rotation, 2);
|
|
1295
1296
|
return [
|
|
1296
1297
|
{
|
|
1297
1298
|
id: `widget-${component.id}`,
|
|
@@ -1316,7 +1317,7 @@ function buildPlaceholder(component, index) {
|
|
|
1316
1317
|
width,
|
|
1317
1318
|
height,
|
|
1318
1319
|
lines: [component.type],
|
|
1319
|
-
fontFamily:
|
|
1320
|
+
fontFamily: chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
1320
1321
|
fontSize: 12,
|
|
1321
1322
|
fontWeight: "normal",
|
|
1322
1323
|
color: STROKE,
|
|
@@ -1330,44 +1331,44 @@ function buildPlaceholder(component, index) {
|
|
|
1330
1331
|
|
|
1331
1332
|
// src/renderScene/artifacts/component/builtIn.ts
|
|
1332
1333
|
function buildRollingNumber(component, index) {
|
|
1333
|
-
const x =
|
|
1334
|
-
const y =
|
|
1335
|
-
const width = Math.max(0,
|
|
1336
|
-
const height = Math.max(0,
|
|
1337
|
-
const rotation =
|
|
1334
|
+
const x = chunkSKGJXCAO_cjs.finite(component.x, 0);
|
|
1335
|
+
const y = chunkSKGJXCAO_cjs.finite(component.y, 0);
|
|
1336
|
+
const width = Math.max(0, chunkSKGJXCAO_cjs.finite(component.width, 160));
|
|
1337
|
+
const height = Math.max(0, chunkSKGJXCAO_cjs.finite(component.height, 90));
|
|
1338
|
+
const rotation = chunkSKGJXCAO_cjs.finite(component.rotation, 0);
|
|
1338
1339
|
return [
|
|
1339
1340
|
{
|
|
1340
1341
|
id: `widget-${component.id}`,
|
|
1341
1342
|
type: "rolling-number",
|
|
1342
1343
|
order: 1e4 + index,
|
|
1343
|
-
bounds:
|
|
1344
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds({ x, y, width, height }, rotation, 2),
|
|
1344
1345
|
x,
|
|
1345
1346
|
y,
|
|
1346
1347
|
width,
|
|
1347
1348
|
height,
|
|
1348
1349
|
rotation,
|
|
1349
|
-
value:
|
|
1350
|
+
value: chunkSKGJXCAO_cjs.formatRollingNumber(component.value, component.digits),
|
|
1350
1351
|
digits: component.digits,
|
|
1351
|
-
duration: Math.max(0,
|
|
1352
|
+
duration: Math.max(0, chunkSKGJXCAO_cjs.finite(component.duration, 420)),
|
|
1352
1353
|
label: component.label,
|
|
1353
|
-
componentStyle:
|
|
1354
|
+
componentStyle: chunkSKGJXCAO_cjs.resolveRollingNumberStyle(component.style)
|
|
1354
1355
|
}
|
|
1355
1356
|
];
|
|
1356
1357
|
}
|
|
1357
1358
|
function buildTickScale(component, index) {
|
|
1358
|
-
const x =
|
|
1359
|
-
const y =
|
|
1360
|
-
const width = Math.max(0,
|
|
1361
|
-
const height = Math.max(0,
|
|
1362
|
-
const rotation =
|
|
1363
|
-
const max =
|
|
1364
|
-
const progress = Math.min(1, Math.max(0,
|
|
1359
|
+
const x = chunkSKGJXCAO_cjs.finite(component.x, 0);
|
|
1360
|
+
const y = chunkSKGJXCAO_cjs.finite(component.y, 0);
|
|
1361
|
+
const width = Math.max(0, chunkSKGJXCAO_cjs.finite(component.width, 200));
|
|
1362
|
+
const height = Math.max(0, chunkSKGJXCAO_cjs.finite(component.height, 200));
|
|
1363
|
+
const rotation = chunkSKGJXCAO_cjs.finite(component.rotation, 0);
|
|
1364
|
+
const max = chunkSKGJXCAO_cjs.finite(component.max, 100) || 100;
|
|
1365
|
+
const progress = Math.min(1, Math.max(0, chunkSKGJXCAO_cjs.finite(Number(component.value), 0) / max));
|
|
1365
1366
|
const nodes = [
|
|
1366
1367
|
{
|
|
1367
1368
|
id: `widget-${component.id}`,
|
|
1368
1369
|
type: "shader-surface",
|
|
1369
1370
|
order: 1e4 + index,
|
|
1370
|
-
bounds:
|
|
1371
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds({ x, y, width, height }, rotation, 2),
|
|
1371
1372
|
x,
|
|
1372
1373
|
y,
|
|
1373
1374
|
width,
|
|
@@ -1384,12 +1385,12 @@ function buildTickScale(component, index) {
|
|
|
1384
1385
|
}
|
|
1385
1386
|
function buildTickLabels(component, box) {
|
|
1386
1387
|
const labels = component.labels ?? {};
|
|
1387
|
-
const ticks2 = Math.max(1,
|
|
1388
|
-
const major = Math.max(1,
|
|
1389
|
-
const start =
|
|
1390
|
-
const sweep =
|
|
1391
|
-
const radius =
|
|
1392
|
-
const fontSize =
|
|
1388
|
+
const ticks2 = Math.max(1, chunkSKGJXCAO_cjs.finite(Number(component.parameters.ticks), 48));
|
|
1389
|
+
const major = Math.max(1, chunkSKGJXCAO_cjs.finite(Number(component.parameters.major), 5));
|
|
1390
|
+
const start = chunkSKGJXCAO_cjs.finite(Number(component.parameters.start), 225) * Math.PI / 180;
|
|
1391
|
+
const sweep = chunkSKGJXCAO_cjs.finite(Number(component.parameters.sweep), 270) * Math.PI / 180;
|
|
1392
|
+
const radius = chunkSKGJXCAO_cjs.finite(Number(component.parameters.radius), 0.9) + chunkSKGJXCAO_cjs.finite(labels.offset, 0.08);
|
|
1393
|
+
const fontSize = chunkSKGJXCAO_cjs.finite(labels.size, 12);
|
|
1393
1394
|
const centerX = box.x + box.width / 2;
|
|
1394
1395
|
const centerY = box.y + box.height / 2;
|
|
1395
1396
|
const count = Math.floor(ticks2 / major);
|
|
@@ -1404,10 +1405,10 @@ function buildTickLabels(component, box) {
|
|
|
1404
1405
|
id: `widget-${component.id}-label-${step}`,
|
|
1405
1406
|
type: "text",
|
|
1406
1407
|
order: box.order + 0.1,
|
|
1407
|
-
bounds:
|
|
1408
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(labelBox, 0, 2),
|
|
1408
1409
|
...labelBox,
|
|
1409
1410
|
lines: [String(Math.round(box.max * fraction * 10) / 10)],
|
|
1410
|
-
fontFamily: labels.fontFamily ||
|
|
1411
|
+
fontFamily: labels.fontFamily || chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
1411
1412
|
fontSize,
|
|
1412
1413
|
fontWeight: labels.weight ?? "normal",
|
|
1413
1414
|
color: labels.color || "#8f95c4",
|
|
@@ -1419,20 +1420,20 @@ function buildTickLabels(component, box) {
|
|
|
1419
1420
|
return nodes;
|
|
1420
1421
|
}
|
|
1421
1422
|
function buildRuler(component, index) {
|
|
1422
|
-
const x =
|
|
1423
|
-
const y =
|
|
1424
|
-
const width = Math.max(0,
|
|
1425
|
-
const height = Math.max(0,
|
|
1426
|
-
const rotation =
|
|
1427
|
-
const min =
|
|
1428
|
-
const max =
|
|
1429
|
-
const progress = max === min ? 0 : Math.min(1, Math.max(0, (
|
|
1423
|
+
const x = chunkSKGJXCAO_cjs.finite(component.x, 0);
|
|
1424
|
+
const y = chunkSKGJXCAO_cjs.finite(component.y, 0);
|
|
1425
|
+
const width = Math.max(0, chunkSKGJXCAO_cjs.finite(component.width, 120));
|
|
1426
|
+
const height = Math.max(0, chunkSKGJXCAO_cjs.finite(component.height, 360));
|
|
1427
|
+
const rotation = chunkSKGJXCAO_cjs.finite(component.rotation, 0);
|
|
1428
|
+
const min = chunkSKGJXCAO_cjs.finite(component.min, 0);
|
|
1429
|
+
const max = chunkSKGJXCAO_cjs.finite(component.max, 100);
|
|
1430
|
+
const progress = max === min ? 0 : Math.min(1, Math.max(0, (chunkSKGJXCAO_cjs.finite(Number(component.value), min) - min) / (max - min)));
|
|
1430
1431
|
const nodes = [
|
|
1431
1432
|
{
|
|
1432
1433
|
id: `widget-${component.id}`,
|
|
1433
1434
|
type: "shader-surface",
|
|
1434
1435
|
order: 1e4 + index,
|
|
1435
|
-
bounds:
|
|
1436
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds({ x, y, width, height }, rotation, 2),
|
|
1436
1437
|
x,
|
|
1437
1438
|
y,
|
|
1438
1439
|
width,
|
|
@@ -1450,14 +1451,14 @@ function buildRuler(component, index) {
|
|
|
1450
1451
|
function buildRulerLabels(component, box) {
|
|
1451
1452
|
const labels = component.labels ?? {};
|
|
1452
1453
|
const horizontal = component.parameters.axis === "horizontal";
|
|
1453
|
-
const ticks2 = Math.max(1,
|
|
1454
|
-
const major = Math.max(1,
|
|
1455
|
-
const inset =
|
|
1456
|
-
const line =
|
|
1454
|
+
const ticks2 = Math.max(1, chunkSKGJXCAO_cjs.finite(Number(component.parameters.ticks), 50));
|
|
1455
|
+
const major = Math.max(1, chunkSKGJXCAO_cjs.finite(Number(component.parameters.major), 5));
|
|
1456
|
+
const inset = chunkSKGJXCAO_cjs.finite(Number(component.parameters.inset), 0.05) > 0 ? chunkSKGJXCAO_cjs.finite(Number(component.parameters.inset), 0.05) : 0.05;
|
|
1457
|
+
const line = chunkSKGJXCAO_cjs.finite(Number(component.parameters.line), 0.7) > 0 ? chunkSKGJXCAO_cjs.finite(Number(component.parameters.line), 0.7) : 0.7;
|
|
1457
1458
|
const across = horizontal ? box.height : box.width;
|
|
1458
|
-
const tickLength = (
|
|
1459
|
-
const edge = line * across - 0.12 * across - tickLength -
|
|
1460
|
-
const fontSize =
|
|
1459
|
+
const tickLength = (chunkSKGJXCAO_cjs.finite(Number(component.parameters.length), 0.1) > 0 ? chunkSKGJXCAO_cjs.finite(Number(component.parameters.length), 0.1) : 0.1) * across * 1.9;
|
|
1460
|
+
const edge = line * across - 0.12 * across - tickLength - chunkSKGJXCAO_cjs.finite(labels.offset, 0.04) * across;
|
|
1461
|
+
const fontSize = chunkSKGJXCAO_cjs.finite(labels.size, 12);
|
|
1461
1462
|
const count = Math.floor(ticks2 / major);
|
|
1462
1463
|
const nodes = [];
|
|
1463
1464
|
for (let step = 0; step <= count; step += 1) {
|
|
@@ -1468,10 +1469,10 @@ function buildRulerLabels(component, box) {
|
|
|
1468
1469
|
id: `widget-${component.id}-label-${step}`,
|
|
1469
1470
|
type: "text",
|
|
1470
1471
|
order: box.order + 0.1,
|
|
1471
|
-
bounds:
|
|
1472
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(labelBox, 0, 2),
|
|
1472
1473
|
...labelBox,
|
|
1473
1474
|
lines: [String(Math.round((box.min + (box.max - box.min) * fraction) * 10) / 10)],
|
|
1474
|
-
fontFamily: labels.fontFamily ||
|
|
1475
|
+
fontFamily: labels.fontFamily || chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
1475
1476
|
fontSize,
|
|
1476
1477
|
fontWeight: labels.weight ?? "normal",
|
|
1477
1478
|
color: labels.color || "#8f95c4",
|
|
@@ -1487,10 +1488,10 @@ function buildRulerLabels(component, box) {
|
|
|
1487
1488
|
var DISABLED_INK = "#94a3b8";
|
|
1488
1489
|
function controlBox(component, index, fallback) {
|
|
1489
1490
|
return {
|
|
1490
|
-
x:
|
|
1491
|
-
y:
|
|
1492
|
-
width: Math.max(1,
|
|
1493
|
-
height: Math.max(1,
|
|
1491
|
+
x: chunkSKGJXCAO_cjs.finite(component.x, 0),
|
|
1492
|
+
y: chunkSKGJXCAO_cjs.finite(component.y, 0),
|
|
1493
|
+
width: Math.max(1, chunkSKGJXCAO_cjs.finite(component.width, fallback.width)),
|
|
1494
|
+
height: Math.max(1, chunkSKGJXCAO_cjs.finite(component.height, fallback.height)),
|
|
1494
1495
|
order: 1e4 + index
|
|
1495
1496
|
};
|
|
1496
1497
|
}
|
|
@@ -1508,7 +1509,7 @@ function hitArea(component, box, takesClicks = true) {
|
|
|
1508
1509
|
id: `widget-${component.id}`,
|
|
1509
1510
|
type: "rect",
|
|
1510
1511
|
order: box.order,
|
|
1511
|
-
bounds:
|
|
1512
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(box, 0, 0),
|
|
1512
1513
|
x: box.x,
|
|
1513
1514
|
y: box.y,
|
|
1514
1515
|
width: box.width,
|
|
@@ -1521,13 +1522,13 @@ function labelText(component, part, area, label, order) {
|
|
|
1521
1522
|
id: `widget-${component.id}-${part}`,
|
|
1522
1523
|
type: "text",
|
|
1523
1524
|
order,
|
|
1524
|
-
bounds:
|
|
1525
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(area, 0, 0),
|
|
1525
1526
|
x: area.x,
|
|
1526
1527
|
y: area.y,
|
|
1527
1528
|
width: area.width,
|
|
1528
1529
|
height: area.height,
|
|
1529
1530
|
lines: [label.text],
|
|
1530
|
-
fontFamily:
|
|
1531
|
+
fontFamily: chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
1531
1532
|
fontSize: label.fontSize,
|
|
1532
1533
|
fontWeight: "600",
|
|
1533
1534
|
color: label.color,
|
|
@@ -1546,7 +1547,7 @@ function buildButton(component, index) {
|
|
|
1546
1547
|
id: `widget-${component.id}-face`,
|
|
1547
1548
|
type: "rect",
|
|
1548
1549
|
order: box.order + 0.1,
|
|
1549
|
-
bounds:
|
|
1550
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(box, 0, 0),
|
|
1550
1551
|
x: box.x,
|
|
1551
1552
|
y: box.y,
|
|
1552
1553
|
width: box.width,
|
|
@@ -1585,7 +1586,7 @@ function boxNode(component, box, square) {
|
|
|
1585
1586
|
id: `widget-${component.id}-box`,
|
|
1586
1587
|
type: "rect",
|
|
1587
1588
|
order: box.order + 0.1,
|
|
1588
|
-
bounds:
|
|
1589
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(square, 0, 2),
|
|
1589
1590
|
...square,
|
|
1590
1591
|
rx: square.width * CORNER_RATIO,
|
|
1591
1592
|
style: fade(component, {
|
|
@@ -1600,7 +1601,7 @@ function checkNode(component, box, square) {
|
|
|
1600
1601
|
id: `widget-${component.id}-check`,
|
|
1601
1602
|
type: "path",
|
|
1602
1603
|
order: box.order + 0.2,
|
|
1603
|
-
bounds:
|
|
1604
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(square, 0, 0),
|
|
1604
1605
|
d: checkPath(square),
|
|
1605
1606
|
style: fade(component, {
|
|
1606
1607
|
fill: { kind: "none" },
|
|
@@ -1637,7 +1638,7 @@ function buildCheckbox(component, index) {
|
|
|
1637
1638
|
// src/renderScene/artifacts/component/hand.ts
|
|
1638
1639
|
var MIN_TIP = 0.25;
|
|
1639
1640
|
function withAlpha(color, alpha) {
|
|
1640
|
-
const rgb =
|
|
1641
|
+
const rgb = chunkSKGJXCAO_cjs.parseHexRgb(color);
|
|
1641
1642
|
return rgb && alpha < 1 ? `rgba(${rgb[0]}, ${rgb[1]}, ${rgb[2]}, ${Number(alpha.toFixed(3))})` : color;
|
|
1642
1643
|
}
|
|
1643
1644
|
var num = (value) => String(Number(value.toFixed(3)));
|
|
@@ -1727,7 +1728,7 @@ function handLayer(component, box, base, angle, layer, order) {
|
|
|
1727
1728
|
id: `widget-${component.id}-${layer.part}`,
|
|
1728
1729
|
type: "path",
|
|
1729
1730
|
order: box.order + order,
|
|
1730
|
-
bounds:
|
|
1731
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(extent, 0, 0),
|
|
1731
1732
|
d: outline(hand),
|
|
1732
1733
|
rotation: angle,
|
|
1733
1734
|
rotationCenter: { x: hand.cx, y: hand.cy },
|
|
@@ -1834,7 +1835,7 @@ function hubNode(component, box, hand, radius) {
|
|
|
1834
1835
|
id: `widget-${component.id}-hub`,
|
|
1835
1836
|
type: "ellipse",
|
|
1836
1837
|
order: box.order + 0.4,
|
|
1837
|
-
bounds:
|
|
1838
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(
|
|
1838
1839
|
{ x: hand.cx - radius, y: hand.cy - radius, width: radius * 2, height: radius * 2 },
|
|
1839
1840
|
0,
|
|
1840
1841
|
ringWidth
|
|
@@ -1875,7 +1876,7 @@ function pickNodes(component, box, hand, angle) {
|
|
|
1875
1876
|
id: `widget-${component.id}-pick`,
|
|
1876
1877
|
type: "path",
|
|
1877
1878
|
order: box.order + 0.5,
|
|
1878
|
-
bounds:
|
|
1879
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(extent, 0, 0),
|
|
1879
1880
|
d: outline(reach),
|
|
1880
1881
|
rotation: angle,
|
|
1881
1882
|
rotationCenter: { x: reach.cx, y: reach.cy },
|
|
@@ -1931,7 +1932,7 @@ function arcNode(component, box, dial, part, order, color, length, extra = {}) {
|
|
|
1931
1932
|
id: `widget-${component.id}-${part}`,
|
|
1932
1933
|
type: "ellipse",
|
|
1933
1934
|
order: box.order + order,
|
|
1934
|
-
bounds:
|
|
1935
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds({ x: cx - radius, y: cy - radius, width: radius * 2, height: radius * 2 }, 0, thickness),
|
|
1935
1936
|
cx,
|
|
1936
1937
|
cy,
|
|
1937
1938
|
rx: radius,
|
|
@@ -1952,7 +1953,7 @@ function discNode(component, box, part, order, center, radius, fill2) {
|
|
|
1952
1953
|
id: `widget-${component.id}-${part}`,
|
|
1953
1954
|
type: "ellipse",
|
|
1954
1955
|
order: box.order + order,
|
|
1955
|
-
bounds:
|
|
1956
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds({ x: center.x - radius, y: center.y - radius, width: radius * 2, height: radius * 2 }, 0, 0),
|
|
1956
1957
|
cx: center.x,
|
|
1957
1958
|
cy: center.y,
|
|
1958
1959
|
rx: radius,
|
|
@@ -2032,7 +2033,7 @@ function buildRing(component, box, fraction, round2) {
|
|
|
2032
2033
|
id: `widget-${component.id}-${part}`,
|
|
2033
2034
|
type: "ellipse",
|
|
2034
2035
|
order: box.order + order,
|
|
2035
|
-
bounds:
|
|
2036
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds({ x: cx - radius, y: cy - radius, width: radius * 2, height: radius * 2 }, 0, thickness),
|
|
2036
2037
|
cx,
|
|
2037
2038
|
cy,
|
|
2038
2039
|
rx: radius,
|
|
@@ -2058,7 +2059,7 @@ function buildBar(component, box, fraction, round2) {
|
|
|
2058
2059
|
id: `widget-${component.id}-${part}`,
|
|
2059
2060
|
type: "rect",
|
|
2060
2061
|
order: box.order + order,
|
|
2061
|
-
bounds:
|
|
2062
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(shape, 0, 0),
|
|
2062
2063
|
...shape,
|
|
2063
2064
|
rx: radius,
|
|
2064
2065
|
style: fade(component, {
|
|
@@ -2113,7 +2114,7 @@ function buildSegmented(component, index) {
|
|
|
2113
2114
|
id: `widget-${component.id}-track`,
|
|
2114
2115
|
type: "rect",
|
|
2115
2116
|
order: box.order + 0.1,
|
|
2116
|
-
bounds:
|
|
2117
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(box, 0, 0),
|
|
2117
2118
|
x: box.x,
|
|
2118
2119
|
y: box.y,
|
|
2119
2120
|
width: box.width,
|
|
@@ -2125,7 +2126,7 @@ function buildSegmented(component, index) {
|
|
|
2125
2126
|
id: `widget-${component.id}-active`,
|
|
2126
2127
|
type: "rect",
|
|
2127
2128
|
order: box.order + 0.2,
|
|
2128
|
-
bounds:
|
|
2129
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds({ x: box.x + inset + active * cellWidth, width: cellWidth, ...cell }, 0, 0),
|
|
2129
2130
|
x: box.x + inset + active * cellWidth,
|
|
2130
2131
|
y: cell.y,
|
|
2131
2132
|
width: cellWidth,
|
|
@@ -2177,7 +2178,7 @@ var rect = (component, box, part, order, shape, color, extra = {}) => ({
|
|
|
2177
2178
|
id: `widget-${component.id}-${part}`,
|
|
2178
2179
|
type: "rect",
|
|
2179
2180
|
order: box.order + order,
|
|
2180
|
-
bounds:
|
|
2181
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(shape, 0, 0),
|
|
2181
2182
|
...shape,
|
|
2182
2183
|
style: fade(component, { fill: solid(color), stroke: { kind: "none" }, ...extra })
|
|
2183
2184
|
});
|
|
@@ -2233,7 +2234,7 @@ function buildLine(component, box, thumbs, vertical) {
|
|
|
2233
2234
|
id: `widget-${component.id}-${part}`,
|
|
2234
2235
|
type: "ellipse",
|
|
2235
2236
|
order: box.order + order,
|
|
2236
|
-
bounds:
|
|
2237
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds({ x: cx - radius, y: cy - radius, width: radius * 2, height: radius * 2 }, 0, 0),
|
|
2237
2238
|
cx,
|
|
2238
2239
|
cy,
|
|
2239
2240
|
rx: radius,
|
|
@@ -2395,7 +2396,7 @@ function buildSwitch(component, index) {
|
|
|
2395
2396
|
id: `widget-${component.id}-track`,
|
|
2396
2397
|
type: "rect",
|
|
2397
2398
|
order: box.order + 0.1,
|
|
2398
|
-
bounds:
|
|
2399
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(box, 0, 0),
|
|
2399
2400
|
x: box.x,
|
|
2400
2401
|
y: box.y,
|
|
2401
2402
|
width: box.width,
|
|
@@ -2410,7 +2411,7 @@ function buildSwitch(component, index) {
|
|
|
2410
2411
|
id: `widget-${component.id}-thumb`,
|
|
2411
2412
|
type: "ellipse",
|
|
2412
2413
|
order: box.order + 0.2,
|
|
2413
|
-
bounds:
|
|
2414
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(thumb, 0, 0),
|
|
2414
2415
|
cx: centerX,
|
|
2415
2416
|
cy: box.y + box.height / 2,
|
|
2416
2417
|
rx: radius,
|
|
@@ -2434,7 +2435,7 @@ function buildToggleButton(component, index) {
|
|
|
2434
2435
|
id: `widget-${component.id}-face`,
|
|
2435
2436
|
type: "rect",
|
|
2436
2437
|
order: box.order + 0.1,
|
|
2437
|
-
bounds:
|
|
2438
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(box, 0, 2),
|
|
2438
2439
|
x: box.x,
|
|
2439
2440
|
y: box.y,
|
|
2440
2441
|
width: box.width,
|
|
@@ -2490,8 +2491,8 @@ function getComponentBuilder(type) {
|
|
|
2490
2491
|
|
|
2491
2492
|
// src/renderScene/artifacts/component/build.ts
|
|
2492
2493
|
function ariaOf(component) {
|
|
2493
|
-
const role =
|
|
2494
|
-
if (!role || !
|
|
2494
|
+
const role = chunkSKGJXCAO_cjs.getComponentDescriptor(component.type)?.role;
|
|
2495
|
+
if (!role || !chunkSKGJXCAO_cjs.isGenericComponent(component)) {
|
|
2495
2496
|
return void 0;
|
|
2496
2497
|
}
|
|
2497
2498
|
const flag = typeof component.value === "boolean" ? component.value : void 0;
|
|
@@ -2502,12 +2503,12 @@ function ariaOf(component) {
|
|
|
2502
2503
|
};
|
|
2503
2504
|
}
|
|
2504
2505
|
function labelOf(component) {
|
|
2505
|
-
return component.label ?? (
|
|
2506
|
+
return component.label ?? (chunkSKGJXCAO_cjs.isGenericComponent(component) ? component.id : String(component.value));
|
|
2506
2507
|
}
|
|
2507
2508
|
function buildComponents(components) {
|
|
2508
2509
|
return components.flatMap((component, index) => {
|
|
2509
2510
|
const build = getComponentBuilder(component.type) ?? buildPlaceholder;
|
|
2510
|
-
const nodes =
|
|
2511
|
+
const nodes = chunkSKGJXCAO_cjs.tag(
|
|
2511
2512
|
build(component, index),
|
|
2512
2513
|
"widget",
|
|
2513
2514
|
component.id,
|
|
@@ -2547,13 +2548,13 @@ function tabBox(input, thickness, length) {
|
|
|
2547
2548
|
y,
|
|
2548
2549
|
width: length,
|
|
2549
2550
|
height: thickness,
|
|
2550
|
-
path:
|
|
2551
|
+
path: chunkSKGJXCAO_cjs.bottomRoundedRectPath(x, y, length, thickness, TAB_RADIUS)
|
|
2551
2552
|
};
|
|
2552
2553
|
}
|
|
2553
2554
|
case "left": {
|
|
2554
2555
|
const x = input.x - thickness;
|
|
2555
2556
|
const y = input.y - inset;
|
|
2556
|
-
return { x, y, width: thickness, height: length, path:
|
|
2557
|
+
return { x, y, width: thickness, height: length, path: chunkSKGJXCAO_cjs.leftRoundedRectPath(x, y, thickness, length, TAB_RADIUS) };
|
|
2557
2558
|
}
|
|
2558
2559
|
case "right": {
|
|
2559
2560
|
const x = input.x + input.width;
|
|
@@ -2563,13 +2564,13 @@ function tabBox(input, thickness, length) {
|
|
|
2563
2564
|
y,
|
|
2564
2565
|
width: thickness,
|
|
2565
2566
|
height: length,
|
|
2566
|
-
path:
|
|
2567
|
+
path: chunkSKGJXCAO_cjs.rightRoundedRectPath(x, y, thickness, length, TAB_RADIUS)
|
|
2567
2568
|
};
|
|
2568
2569
|
}
|
|
2569
2570
|
default: {
|
|
2570
2571
|
const x = input.x - inset;
|
|
2571
2572
|
const y = input.y - thickness;
|
|
2572
|
-
return { x, y, width: length, height: thickness, path:
|
|
2573
|
+
return { x, y, width: length, height: thickness, path: chunkSKGJXCAO_cjs.topRoundedRectPath(x, y, length, thickness, TAB_RADIUS) };
|
|
2573
2574
|
}
|
|
2574
2575
|
}
|
|
2575
2576
|
}
|
|
@@ -2578,7 +2579,7 @@ function renderTitleTab(input) {
|
|
|
2578
2579
|
const padding = 16;
|
|
2579
2580
|
const length = Math.max(120, input.title.length * input.fontSize * 0.62 + padding * 2);
|
|
2580
2581
|
const box = tabBox(input, thickness, length);
|
|
2581
|
-
const bounds =
|
|
2582
|
+
const bounds = chunkSKGJXCAO_cjs.boxBounds(box, 6);
|
|
2582
2583
|
const vertical = input.labelPosition === "left" || input.labelPosition === "right";
|
|
2583
2584
|
return [
|
|
2584
2585
|
{
|
|
@@ -2606,7 +2607,7 @@ function horizontalTitleText(input, box, padding, bounds) {
|
|
|
2606
2607
|
width: Math.max(0, box.width - padding * 2),
|
|
2607
2608
|
height: box.height,
|
|
2608
2609
|
lines: [input.title],
|
|
2609
|
-
fontFamily: input.fontFamily ??
|
|
2610
|
+
fontFamily: input.fontFamily ?? chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
2610
2611
|
fontSize: input.fontSize,
|
|
2611
2612
|
fontWeight: input.fontWeight,
|
|
2612
2613
|
color: input.textColor,
|
|
@@ -2630,7 +2631,7 @@ function verticalTitleText(input, box, padding, bounds) {
|
|
|
2630
2631
|
width: textLength,
|
|
2631
2632
|
height: textThickness,
|
|
2632
2633
|
lines: [input.title],
|
|
2633
|
-
fontFamily: input.fontFamily ??
|
|
2634
|
+
fontFamily: input.fontFamily ?? chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
2634
2635
|
fontSize: input.fontSize,
|
|
2635
2636
|
fontWeight: input.fontWeight,
|
|
2636
2637
|
color: input.textColor,
|
|
@@ -2651,7 +2652,7 @@ var SQUARED_CORNER_BY_LABEL_POSITION = {
|
|
|
2651
2652
|
};
|
|
2652
2653
|
function frameBoundaryNode(frame, order, hasTab) {
|
|
2653
2654
|
const shadow = frame.shadow ?? true;
|
|
2654
|
-
const bounds =
|
|
2655
|
+
const bounds = chunkSKGJXCAO_cjs.boxBounds(
|
|
2655
2656
|
{ x: frame.x, y: frame.y, width: frame.width, height: frame.height },
|
|
2656
2657
|
frame.strokeWidth + (shadow ? 20 : 4)
|
|
2657
2658
|
);
|
|
@@ -2686,7 +2687,7 @@ function frameBoundaryNode(frame, order, hasTab) {
|
|
|
2686
2687
|
id: `frame-${frame.id}`,
|
|
2687
2688
|
order,
|
|
2688
2689
|
bounds,
|
|
2689
|
-
d:
|
|
2690
|
+
d: chunkSKGJXCAO_cjs.cornersRoundedRectPath(frame.x, frame.y, frame.width, frame.height, radii),
|
|
2690
2691
|
detail: { of: "frameBoundary", cornerRadius: frame.cornerRadius, squareCorner: squared },
|
|
2691
2692
|
style
|
|
2692
2693
|
};
|
|
@@ -2775,7 +2776,7 @@ function labelBase(context, lane, index) {
|
|
|
2775
2776
|
id: `swimlane-label-${context.swimlane.id}-${lane.id}`,
|
|
2776
2777
|
order: context.order + 0.5 + index / 100,
|
|
2777
2778
|
lines: [lane.label],
|
|
2778
|
-
fontFamily: context.swimlane.fontFamily ??
|
|
2779
|
+
fontFamily: context.swimlane.fontFamily ?? chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
2779
2780
|
fontSize: context.swimlane.fontSize,
|
|
2780
2781
|
fontWeight: context.swimlane.fontWeight,
|
|
2781
2782
|
color: context.swimlane.textColor,
|
|
@@ -2791,7 +2792,7 @@ function horizontalLabel(context, lane, index) {
|
|
|
2791
2792
|
const y = centerY - thickness / 2;
|
|
2792
2793
|
return {
|
|
2793
2794
|
...labelBase(context, lane, index),
|
|
2794
|
-
bounds:
|
|
2795
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds({ x, y, width, height: thickness }, -90, 12),
|
|
2795
2796
|
x,
|
|
2796
2797
|
y,
|
|
2797
2798
|
width,
|
|
@@ -2843,7 +2844,7 @@ function createSwimlaneRenderContext(swimlane, index) {
|
|
|
2843
2844
|
return {
|
|
2844
2845
|
swimlane,
|
|
2845
2846
|
order: 5e3 + index,
|
|
2846
|
-
bounds:
|
|
2847
|
+
bounds: chunkSKGJXCAO_cjs.boxBounds(
|
|
2847
2848
|
{ x: swimlane.x, y: swimlane.y, width: swimlane.width, height: swimlane.height },
|
|
2848
2849
|
swimlane.strokeWidth + 4
|
|
2849
2850
|
),
|
|
@@ -2882,9 +2883,9 @@ function buildSwimlane(swimlane, index) {
|
|
|
2882
2883
|
function buildContainers(input) {
|
|
2883
2884
|
return [
|
|
2884
2885
|
...input.frames.flatMap(
|
|
2885
|
-
(frame, index) =>
|
|
2886
|
+
(frame, index) => chunkSKGJXCAO_cjs.tag(buildFrame(frame, index), "frame", frame.id, void 0, frame.title ?? void 0)
|
|
2886
2887
|
),
|
|
2887
|
-
...input.swimlanes.flatMap((swimlane, index) =>
|
|
2888
|
+
...input.swimlanes.flatMap((swimlane, index) => chunkSKGJXCAO_cjs.tag(buildSwimlane(swimlane, index), "swimlane", swimlane.id))
|
|
2888
2889
|
];
|
|
2889
2890
|
}
|
|
2890
2891
|
|
|
@@ -2934,7 +2935,7 @@ var DEFAULT_COLOR = "#475569";
|
|
|
2934
2935
|
var CHAR_WIDTH = 0.6;
|
|
2935
2936
|
var pathData = (segments) => segments.map(([from, to]) => `M ${from.x} ${from.y} L ${to.x} ${to.y}`).join(" ");
|
|
2936
2937
|
function pathNode(dimension, name, order, segments) {
|
|
2937
|
-
const strokeWidth = Math.max(0,
|
|
2938
|
+
const strokeWidth = Math.max(0, chunkSKGJXCAO_cjs.finite(dimension.strokeWidth, 1));
|
|
2938
2939
|
const points = segments.flat();
|
|
2939
2940
|
return {
|
|
2940
2941
|
type: "path",
|
|
@@ -2956,7 +2957,7 @@ function pathNode(dimension, name, order, segments) {
|
|
|
2956
2957
|
};
|
|
2957
2958
|
}
|
|
2958
2959
|
function labelNode2(dimension, order, text, center, angle) {
|
|
2959
|
-
const fontSize =
|
|
2960
|
+
const fontSize = chunkSKGJXCAO_cjs.finite(dimension.fontSize, 11);
|
|
2960
2961
|
const width = Math.max(24, text.length * fontSize * CHAR_WIDTH + 8);
|
|
2961
2962
|
const height = fontSize * 1.3;
|
|
2962
2963
|
return {
|
|
@@ -2974,7 +2975,7 @@ function labelNode2(dimension, order, text, center, angle) {
|
|
|
2974
2975
|
width,
|
|
2975
2976
|
height,
|
|
2976
2977
|
lines: [text],
|
|
2977
|
-
fontFamily:
|
|
2978
|
+
fontFamily: chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
2978
2979
|
fontSize,
|
|
2979
2980
|
fontWeight: "normal",
|
|
2980
2981
|
color: dimension.textColor ?? dimension.strokeColor ?? DEFAULT_COLOR,
|
|
@@ -2999,7 +3000,7 @@ function buildDimension(dimension, index) {
|
|
|
2999
3000
|
}
|
|
3000
3001
|
function buildDimensions(dimensions) {
|
|
3001
3002
|
return dimensions.flatMap(
|
|
3002
|
-
(dimension, index) =>
|
|
3003
|
+
(dimension, index) => chunkSKGJXCAO_cjs.tag(
|
|
3003
3004
|
buildDimension(dimension, index),
|
|
3004
3005
|
"dimension",
|
|
3005
3006
|
dimension.id,
|
|
@@ -3013,9 +3014,9 @@ function buildDimensions(dimensions) {
|
|
|
3013
3014
|
// src/renderScene/artifacts/isometric/context.ts
|
|
3014
3015
|
var FILL_PROP = { prop: "style.fill", propKind: "color", propSolidOnly: true };
|
|
3015
3016
|
function isometricContext(object, index) {
|
|
3016
|
-
const strokeWidth = Math.max(0,
|
|
3017
|
-
const rotation =
|
|
3018
|
-
const box =
|
|
3017
|
+
const strokeWidth = Math.max(0, chunkSKGJXCAO_cjs.finite(object.strokeWidth, 1));
|
|
3018
|
+
const rotation = chunkSKGJXCAO_cjs.finite(object.rotation, 0);
|
|
3019
|
+
const box = chunkSKGJXCAO_cjs.isometricBounds(object);
|
|
3019
3020
|
const rotationCenter = { x: box.x + box.width / 2, y: box.y + box.height / 2 };
|
|
3020
3021
|
return {
|
|
3021
3022
|
object,
|
|
@@ -3027,7 +3028,7 @@ function isometricContext(object, index) {
|
|
|
3027
3028
|
strokeWidth,
|
|
3028
3029
|
common: {
|
|
3029
3030
|
type: "path",
|
|
3030
|
-
bounds:
|
|
3031
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(box, rotation, strokeWidth + 2),
|
|
3031
3032
|
rotation,
|
|
3032
3033
|
rotationCenter,
|
|
3033
3034
|
style: {
|
|
@@ -3043,13 +3044,13 @@ function faceNode(context, name, offset, points, style) {
|
|
|
3043
3044
|
...context.common,
|
|
3044
3045
|
id: `isometric-${context.object.id}-${name}`,
|
|
3045
3046
|
order: context.order + offset,
|
|
3046
|
-
d:
|
|
3047
|
+
d: chunkSKGJXCAO_cjs.roundedPolygonPath([...points], 0),
|
|
3047
3048
|
style,
|
|
3048
3049
|
...FILL_PROP
|
|
3049
3050
|
};
|
|
3050
3051
|
}
|
|
3051
3052
|
function silhouette(object) {
|
|
3052
|
-
const faces =
|
|
3053
|
+
const faces = chunkSKGJXCAO_cjs.isometricFaces(object);
|
|
3053
3054
|
return [faces.top[0], faces.top[1], faces.right[2], faces.front[2], faces.front[3], faces.top[3]];
|
|
3054
3055
|
}
|
|
3055
3056
|
function hullNode(context, hullPath, cornerRadius) {
|
|
@@ -3066,15 +3067,15 @@ function hullNode(context, hullPath, cornerRadius) {
|
|
|
3066
3067
|
depth: Math.max(0, object.depth),
|
|
3067
3068
|
cornerRadius,
|
|
3068
3069
|
bounds: box,
|
|
3069
|
-
labelOffsetX:
|
|
3070
|
-
labelOffsetY:
|
|
3070
|
+
labelOffsetX: chunkSKGJXCAO_cjs.finite(object.labelOffsetX, 0),
|
|
3071
|
+
labelOffsetY: chunkSKGJXCAO_cjs.finite(object.labelOffsetY, 0)
|
|
3071
3072
|
},
|
|
3072
3073
|
style: { ...common.style, fill: { kind: "none" } }
|
|
3073
3074
|
};
|
|
3074
3075
|
}
|
|
3075
3076
|
function unseenHullNode(context) {
|
|
3076
3077
|
return {
|
|
3077
|
-
...hullNode(context,
|
|
3078
|
+
...hullNode(context, chunkSKGJXCAO_cjs.roundedPolygonPath(silhouette(context.object), 0), 0),
|
|
3078
3079
|
style: { ...context.common.style, fill: { kind: "none" }, stroke: { kind: "none" } }
|
|
3079
3080
|
};
|
|
3080
3081
|
}
|
|
@@ -3087,9 +3088,9 @@ var LABEL_PADDING_Y = 3;
|
|
|
3087
3088
|
var LABEL_CHAR_WIDTH = 6.5;
|
|
3088
3089
|
function labelPlacement(context) {
|
|
3089
3090
|
const { object } = context;
|
|
3090
|
-
const anchor =
|
|
3091
|
-
const bottomY = anchor.y - LABEL_GAP +
|
|
3092
|
-
return { anchor, centerX: anchor.x +
|
|
3091
|
+
const anchor = chunkSKGJXCAO_cjs.isometricTopFaceCenter(object);
|
|
3092
|
+
const bottomY = anchor.y - LABEL_GAP + chunkSKGJXCAO_cjs.finite(object.labelOffsetY, 0);
|
|
3093
|
+
return { anchor, centerX: anchor.x + chunkSKGJXCAO_cjs.finite(object.labelOffsetX, 0), topY: bottomY - LABEL_HEIGHT, bottomY };
|
|
3093
3094
|
}
|
|
3094
3095
|
function labelTextNode(context, placement, text) {
|
|
3095
3096
|
const { object, order, rotation, rotationCenter, box } = context;
|
|
@@ -3104,7 +3105,7 @@ function labelTextNode(context, placement, text) {
|
|
|
3104
3105
|
width: box.width,
|
|
3105
3106
|
height: LABEL_HEIGHT,
|
|
3106
3107
|
lines: [text],
|
|
3107
|
-
fontFamily:
|
|
3108
|
+
fontFamily: chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
3108
3109
|
fontSize: 12,
|
|
3109
3110
|
fontWeight: "normal",
|
|
3110
3111
|
color: "#111827",
|
|
@@ -3184,7 +3185,7 @@ function groundShadowNode(context, topOutline) {
|
|
|
3184
3185
|
}
|
|
3185
3186
|
const height = Math.max(0, object.height);
|
|
3186
3187
|
const heightFactor = 0.6 + Math.min(1, height / 150) * 0.7;
|
|
3187
|
-
const shadowDrop = height +
|
|
3188
|
+
const shadowDrop = height + chunkSKGJXCAO_cjs.finite(object.shadowStyle?.distance, 0);
|
|
3188
3189
|
const contactFootprint = topOutline.map((point) => ({ x: point.x, y: point.y + shadowDrop }));
|
|
3189
3190
|
const footprintCenter = {
|
|
3190
3191
|
x: contactFootprint.reduce((sum, point) => sum + point.x, 0) / contactFootprint.length,
|
|
@@ -3207,14 +3208,14 @@ function groundShadowNode(context, topOutline) {
|
|
|
3207
3208
|
maxX: Math.max(...footprintXs),
|
|
3208
3209
|
maxY: Math.max(...footprintYs)
|
|
3209
3210
|
},
|
|
3210
|
-
d:
|
|
3211
|
+
d: chunkSKGJXCAO_cjs.roundedPolygonPath(footprint, 0),
|
|
3211
3212
|
rotation,
|
|
3212
3213
|
rotationCenter,
|
|
3213
3214
|
style: {
|
|
3214
3215
|
fill: { kind: "solid", color: object.shadowStyle?.color ?? "#000000" },
|
|
3215
3216
|
stroke: { kind: "none" },
|
|
3216
3217
|
opacity: Math.min(1, (object.shadowStyle?.opacity ?? 0.18) * heightFactor),
|
|
3217
|
-
blur:
|
|
3218
|
+
blur: chunkSKGJXCAO_cjs.finite(object.shadowStyle?.blur, 8),
|
|
3218
3219
|
pointerEvents: "none"
|
|
3219
3220
|
}
|
|
3220
3221
|
};
|
|
@@ -3228,7 +3229,7 @@ function sphereShadowNode(context, radius) {
|
|
|
3228
3229
|
const depth = Math.max(0, object.depth);
|
|
3229
3230
|
const center = {
|
|
3230
3231
|
x: box.x + box.width / 2,
|
|
3231
|
-
y: object.y + Math.max(0, object.height) + (width + depth) *
|
|
3232
|
+
y: object.y + Math.max(0, object.height) + (width + depth) * chunkSKGJXCAO_cjs.AXIS_SIN / 2
|
|
3232
3233
|
};
|
|
3233
3234
|
return {
|
|
3234
3235
|
type: "ellipse",
|
|
@@ -3248,7 +3249,7 @@ function sphereShadowNode(context, radius) {
|
|
|
3248
3249
|
fill: { kind: "solid", color: object.shadowStyle?.color ?? "#000000" },
|
|
3249
3250
|
stroke: { kind: "none" },
|
|
3250
3251
|
opacity: object.shadowStyle?.opacity ?? 0.2,
|
|
3251
|
-
blur:
|
|
3252
|
+
blur: chunkSKGJXCAO_cjs.finite(object.shadowStyle?.blur, 8),
|
|
3252
3253
|
pointerEvents: "none"
|
|
3253
3254
|
}
|
|
3254
3255
|
};
|
|
@@ -3258,7 +3259,7 @@ function sphereShadowNode(context, radius) {
|
|
|
3258
3259
|
function faceNodes(context, faces, hullClip) {
|
|
3259
3260
|
const { object, common } = context;
|
|
3260
3261
|
const noStroke = { ...common.style, stroke: { kind: "none" } };
|
|
3261
|
-
const fills =
|
|
3262
|
+
const fills = chunkSKGJXCAO_cjs.deriveFaceFills(object.fill ?? "#f8fafc");
|
|
3262
3263
|
const face = (name, offset, points, color) => faceNode(context, name, offset, points, { ...noStroke, fill: { kind: "solid", color }, clip: hullClip });
|
|
3263
3264
|
return [
|
|
3264
3265
|
face("top", 0, faces.top, fills.topFill),
|
|
@@ -3284,9 +3285,9 @@ function seamsNode(context, faces, hullClip) {
|
|
|
3284
3285
|
}
|
|
3285
3286
|
function buildBox(object, index) {
|
|
3286
3287
|
const context = isometricContext(object, index);
|
|
3287
|
-
const faces =
|
|
3288
|
-
const cornerRadius = Math.max(0,
|
|
3289
|
-
const hullPath =
|
|
3288
|
+
const faces = chunkSKGJXCAO_cjs.isometricFaces(object);
|
|
3289
|
+
const cornerRadius = Math.max(0, chunkSKGJXCAO_cjs.finite(object.cornerRadius, 8));
|
|
3290
|
+
const hullPath = chunkSKGJXCAO_cjs.roundedPolygonPath(silhouette(object), cornerRadius);
|
|
3290
3291
|
const hullClip = { type: "path", d: hullPath };
|
|
3291
3292
|
const groundShadow = groundShadowNode(context, faces.top);
|
|
3292
3293
|
const seams = object.seams === false ? void 0 : seamsNode(context, faces, hullClip);
|
|
@@ -3298,7 +3299,7 @@ function buildBox(object, index) {
|
|
|
3298
3299
|
|
|
3299
3300
|
// src/renderScene/artifacts/isometric/extruded.ts
|
|
3300
3301
|
function wallNode(context, side, index, fill2) {
|
|
3301
|
-
const color =
|
|
3302
|
+
const color = chunkSKGJXCAO_cjs.shadeFill(fill2, side.light);
|
|
3302
3303
|
return faceNode(context, `side-${index}`, 0.05 + index * 1e-3, side.points, {
|
|
3303
3304
|
...context.common.style,
|
|
3304
3305
|
stroke: { kind: "solid", color },
|
|
@@ -3323,7 +3324,7 @@ function wallEdgesNode(context, side, index) {
|
|
|
3323
3324
|
}
|
|
3324
3325
|
function buildExtruded(object, index, footprint) {
|
|
3325
3326
|
const context = isometricContext(object, index);
|
|
3326
|
-
const { top, sides } =
|
|
3327
|
+
const { top, sides } = chunkSKGJXCAO_cjs.extrudeFootprint(object, footprint, Math.max(0, chunkSKGJXCAO_cjs.finite(object.cornerRadius, 0)));
|
|
3327
3328
|
const fill2 = object.fill ?? "#f8fafc";
|
|
3328
3329
|
const groundShadow = groundShadowNode(context, top);
|
|
3329
3330
|
const topFace = faceNode(context, "top", 0.2, top, { ...context.common.style, fill: { kind: "solid", color: fill2 } });
|
|
@@ -3360,9 +3361,9 @@ function buildSphere(object, index) {
|
|
|
3360
3361
|
kind: "linear-gradient",
|
|
3361
3362
|
angle: 135,
|
|
3362
3363
|
stops: [
|
|
3363
|
-
{ offset: 0, color:
|
|
3364
|
+
{ offset: 0, color: chunkSKGJXCAO_cjs.shadeFill(fill2, 1.22) },
|
|
3364
3365
|
{ offset: 0.5, color: fill2 },
|
|
3365
|
-
{ offset: 1, color:
|
|
3366
|
+
{ offset: 1, color: chunkSKGJXCAO_cjs.shadeFill(fill2, 0.82) }
|
|
3366
3367
|
]
|
|
3367
3368
|
}
|
|
3368
3369
|
},
|
|
@@ -3398,12 +3399,12 @@ function buildIsometricObject(object, index) {
|
|
|
3398
3399
|
if (object.form === "sphere") {
|
|
3399
3400
|
return buildSphere(object, index);
|
|
3400
3401
|
}
|
|
3401
|
-
const footprint =
|
|
3402
|
+
const footprint = chunkSKGJXCAO_cjs.cleanFootprint(object.footprint);
|
|
3402
3403
|
return footprint.length > 0 ? buildExtruded(object, index, footprint) : buildBox(object, index);
|
|
3403
3404
|
}
|
|
3404
3405
|
function buildIsometricObjects(objects) {
|
|
3405
3406
|
return objects.flatMap(
|
|
3406
|
-
(object, index) =>
|
|
3407
|
+
(object, index) => chunkSKGJXCAO_cjs.tag(
|
|
3407
3408
|
buildIsometricObject(object, index),
|
|
3408
3409
|
"isometric",
|
|
3409
3410
|
object.id,
|
|
@@ -3432,7 +3433,7 @@ function renderEndpointLabel(context, end, labelIndex) {
|
|
|
3432
3433
|
if (!label) {
|
|
3433
3434
|
return [];
|
|
3434
3435
|
}
|
|
3435
|
-
const fontSize =
|
|
3436
|
+
const fontSize = chunkSKGJXCAO_cjs.finite(context.link.style?.fontSize, 10);
|
|
3436
3437
|
const position = endpointLabelPosition(context.points, end);
|
|
3437
3438
|
const width = 90;
|
|
3438
3439
|
return [
|
|
@@ -3446,7 +3447,7 @@ function renderEndpointLabel(context, end, labelIndex) {
|
|
|
3446
3447
|
width,
|
|
3447
3448
|
height: fontSize * 2,
|
|
3448
3449
|
lines: [label],
|
|
3449
|
-
fontFamily: context.link.style?.fontFamily ??
|
|
3450
|
+
fontFamily: context.link.style?.fontFamily ?? chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
3450
3451
|
fontSize,
|
|
3451
3452
|
fontWeight: "normal",
|
|
3452
3453
|
color: context.color,
|
|
@@ -3476,7 +3477,7 @@ function renderMainLabel(context) {
|
|
|
3476
3477
|
width: context.label.width,
|
|
3477
3478
|
height: context.label.fontSize * 2,
|
|
3478
3479
|
lines: context.label.lines,
|
|
3479
|
-
fontFamily: context.link.style?.fontFamily ??
|
|
3480
|
+
fontFamily: context.link.style?.fontFamily ?? chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
3480
3481
|
fontSize: context.label.fontSize,
|
|
3481
3482
|
fontWeight: "normal",
|
|
3482
3483
|
color: context.color,
|
|
@@ -3530,10 +3531,10 @@ function linkBounds(points, padding) {
|
|
|
3530
3531
|
}
|
|
3531
3532
|
function labelLayout(link, measureText) {
|
|
3532
3533
|
const visible = Boolean(link.showText && link.text);
|
|
3533
|
-
const fontSize =
|
|
3534
|
+
const fontSize = chunkSKGJXCAO_cjs.finite(link.style?.fontSize, 10);
|
|
3534
3535
|
const width = Math.min(250, Math.max(fontSize * 2, (link.text?.length ?? 0) * fontSize * 0.65 + 10));
|
|
3535
|
-
const metrics = measureText?.(link.style?.fontFamily ??
|
|
3536
|
-
const lines = visible ?
|
|
3536
|
+
const metrics = measureText?.(link.style?.fontFamily ?? chunkSKGJXCAO_cjs.DEFAULT_FONT, fontSize);
|
|
3537
|
+
const lines = visible ? chunkSKGJXCAO_cjs.wrapText(link.text ?? "", width, fontSize, metrics) : [];
|
|
3537
3538
|
return { visible, fontSize, width, height: lines.length * fontSize * 1.4, lines };
|
|
3538
3539
|
}
|
|
3539
3540
|
function linkStyle(item, strokeWidth, color, dash) {
|
|
@@ -3550,26 +3551,26 @@ function linkStyle(item, strokeWidth, color, dash) {
|
|
|
3550
3551
|
dash,
|
|
3551
3552
|
lineCap: "round",
|
|
3552
3553
|
lineJoin: "round",
|
|
3553
|
-
opacity:
|
|
3554
|
+
opacity: chunkSKGJXCAO_cjs.finite(link.style?.opacity, 1),
|
|
3554
3555
|
shadow: resolveShadow(link.style?.shadow)
|
|
3555
3556
|
};
|
|
3556
3557
|
}
|
|
3557
3558
|
function createLinkRenderContext(item, index, measureText) {
|
|
3558
3559
|
const { link, from, to } = item;
|
|
3559
3560
|
const pathType = link.style?.pathType ?? "orthogonal";
|
|
3560
|
-
const { points, segments } =
|
|
3561
|
-
const strokeWidth =
|
|
3561
|
+
const { points, segments } = chunkSKGJXCAO_cjs.calculateLinkRoute(link, from, to, pathType);
|
|
3562
|
+
const strokeWidth = chunkSKGJXCAO_cjs.finite(link.style?.strokeWidth, 2);
|
|
3562
3563
|
const color = getLinkStrokeColor(link.style?.color) || "#64748b";
|
|
3563
3564
|
const label = labelLayout(link, measureText);
|
|
3564
3565
|
const contentDash = getDashArray(strokeWidth, link.style?.strokeStyle ?? "solid");
|
|
3565
|
-
const gap = label.visible && !contentDash ?
|
|
3566
|
+
const gap = label.visible && !contentDash ? chunkSKGJXCAO_cjs.labelGapDash(points, pathType, label.width, label.height) : null;
|
|
3566
3567
|
const dash = gap ? [gap.dashBefore, gap.gapLength, 1e6] : contentDash;
|
|
3567
3568
|
return {
|
|
3568
3569
|
link,
|
|
3569
3570
|
pathType,
|
|
3570
3571
|
points,
|
|
3571
3572
|
segments,
|
|
3572
|
-
midpoint:
|
|
3573
|
+
midpoint: chunkSKGJXCAO_cjs.getLineMidpoint(points, pathType, from, to),
|
|
3573
3574
|
strokeWidth,
|
|
3574
3575
|
bounds: linkBounds(points, strokeWidth + 14),
|
|
3575
3576
|
color,
|
|
@@ -3615,7 +3616,7 @@ function pathData2(points, pathType, segments, strokeWidth) {
|
|
|
3615
3616
|
return `M ${points[0]} ${points[1]} C ${points[2]} ${points[3]} ${points[4]} ${points[5]} ${points[6]} ${points[7]}`;
|
|
3616
3617
|
}
|
|
3617
3618
|
if (pathType === "orthogonal" && segments.length > 0) {
|
|
3618
|
-
return
|
|
3619
|
+
return chunkSKGJXCAO_cjs.roundedOrthogonalPathData(segments, Math.max(16, strokeWidth * 4));
|
|
3619
3620
|
}
|
|
3620
3621
|
return polylinePathData(points);
|
|
3621
3622
|
}
|
|
@@ -3719,7 +3720,7 @@ function buildLink(item, index, measureText) {
|
|
|
3719
3720
|
}
|
|
3720
3721
|
function buildLinks(links, measureText) {
|
|
3721
3722
|
return links.flatMap(
|
|
3722
|
-
(item, index) =>
|
|
3723
|
+
(item, index) => chunkSKGJXCAO_cjs.tag(
|
|
3723
3724
|
buildLink(item, index, measureText),
|
|
3724
3725
|
"link",
|
|
3725
3726
|
item.link.id,
|
|
@@ -3734,7 +3735,7 @@ function buildFreeformPath(path, index) {
|
|
|
3734
3735
|
if (path.isVisible === false || path.points.length < 2) {
|
|
3735
3736
|
return [];
|
|
3736
3737
|
}
|
|
3737
|
-
const strokeWidth =
|
|
3738
|
+
const strokeWidth = chunkSKGJXCAO_cjs.finite(path.strokeWidth, 2);
|
|
3738
3739
|
const extra = strokeWidth + 12;
|
|
3739
3740
|
const bounds = {
|
|
3740
3741
|
minX: Math.min(...path.points.map((point) => point.x)) - extra,
|
|
@@ -3742,7 +3743,7 @@ function buildFreeformPath(path, index) {
|
|
|
3742
3743
|
maxX: Math.max(...path.points.map((point) => point.x)) + extra,
|
|
3743
3744
|
maxY: Math.max(...path.points.map((point) => point.y)) + extra
|
|
3744
3745
|
};
|
|
3745
|
-
const tension =
|
|
3746
|
+
const tension = chunkSKGJXCAO_cjs.finite(path.tension, 0);
|
|
3746
3747
|
const closed = path.closed === true;
|
|
3747
3748
|
return [
|
|
3748
3749
|
{
|
|
@@ -3750,7 +3751,7 @@ function buildFreeformPath(path, index) {
|
|
|
3750
3751
|
id: `path-${path.id}`,
|
|
3751
3752
|
order: 3e4 + index,
|
|
3752
3753
|
bounds,
|
|
3753
|
-
d:
|
|
3754
|
+
d: chunkSKGJXCAO_cjs.freeformPathData({ points: path.points, tension, closed }),
|
|
3754
3755
|
markerStart: path.startMarker,
|
|
3755
3756
|
markerEnd: path.endMarker,
|
|
3756
3757
|
detail: {
|
|
@@ -3766,13 +3767,13 @@ function buildFreeformPath(path, index) {
|
|
|
3766
3767
|
dash: path.dash?.length ? path.dash : void 0,
|
|
3767
3768
|
lineCap: "round",
|
|
3768
3769
|
lineJoin: "round",
|
|
3769
|
-
opacity:
|
|
3770
|
+
opacity: chunkSKGJXCAO_cjs.finite(path.opacity, 1)
|
|
3770
3771
|
}
|
|
3771
3772
|
}
|
|
3772
3773
|
];
|
|
3773
3774
|
}
|
|
3774
3775
|
function buildFreeformPaths(paths) {
|
|
3775
|
-
return paths.flatMap((path, index) =>
|
|
3776
|
+
return paths.flatMap((path, index) => chunkSKGJXCAO_cjs.tag(buildFreeformPath(path, index), "path", path.id, "path", "Path"));
|
|
3776
3777
|
}
|
|
3777
3778
|
|
|
3778
3779
|
// src/renderScene/artifacts/shape/geometry/base.ts
|
|
@@ -3788,7 +3789,7 @@ function shapeNodeBase(context) {
|
|
|
3788
3789
|
|
|
3789
3790
|
// src/renderScene/artifacts/shape/geometry/simple.ts
|
|
3790
3791
|
function renderPath(context) {
|
|
3791
|
-
const path =
|
|
3792
|
+
const path = chunkSKGJXCAO_cjs.localShapePath(context.shape.shapeType, context.x, context.y, context.width, context.height);
|
|
3792
3793
|
if (!path) {
|
|
3793
3794
|
return [];
|
|
3794
3795
|
}
|
|
@@ -3804,7 +3805,7 @@ function renderBoundedPath(context) {
|
|
|
3804
3805
|
}));
|
|
3805
3806
|
}
|
|
3806
3807
|
function renderRectangle(context) {
|
|
3807
|
-
const rx = context.shape.shapeType === "pill" ?
|
|
3808
|
+
const rx = context.shape.shapeType === "pill" ? chunkSKGJXCAO_cjs.pillCornerRadius(context.width, context.height) : context.shape.shapeType === "rounded_rectangle" ? chunkSKGJXCAO_cjs.finite(context.shape.cornerRadius, 8) : 0;
|
|
3808
3809
|
return [
|
|
3809
3810
|
{
|
|
3810
3811
|
...shapeNodeBase(context),
|
|
@@ -3833,7 +3834,7 @@ function renderSymbol(context) {
|
|
|
3833
3834
|
if (!context.shape.symbol || context.shape.symbol.points.length < 2) {
|
|
3834
3835
|
return renderRectangle(context);
|
|
3835
3836
|
}
|
|
3836
|
-
const tension =
|
|
3837
|
+
const tension = chunkSKGJXCAO_cjs.finite(context.shape.symbol.tension, 0);
|
|
3837
3838
|
const points = context.shape.symbol.points.map(([x, y]) => ({
|
|
3838
3839
|
x: context.x + x * context.width,
|
|
3839
3840
|
y: context.y + y * context.height
|
|
@@ -3842,7 +3843,7 @@ function renderSymbol(context) {
|
|
|
3842
3843
|
{
|
|
3843
3844
|
...shapeNodeBase(context),
|
|
3844
3845
|
type: "path",
|
|
3845
|
-
d:
|
|
3846
|
+
d: chunkSKGJXCAO_cjs.freeformPathData({ points, tension, closed: true }),
|
|
3846
3847
|
rotationCenter: context.rotationCenter,
|
|
3847
3848
|
detail: {
|
|
3848
3849
|
of: "symbolGeometry",
|
|
@@ -3979,7 +3980,7 @@ function renderShapeShaderSurface(context) {
|
|
|
3979
3980
|
id: `${context.id}-shader`,
|
|
3980
3981
|
type: "shader-surface",
|
|
3981
3982
|
order: context.order,
|
|
3982
|
-
bounds:
|
|
3983
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds(surfaceBounds, context.rotation, 0),
|
|
3983
3984
|
...surfaceBounds,
|
|
3984
3985
|
rotation: context.rotation,
|
|
3985
3986
|
shader: context.shape.shader,
|
|
@@ -4049,24 +4050,24 @@ function shapeDash(shape, strokeWidth) {
|
|
|
4049
4050
|
}
|
|
4050
4051
|
function shapeStyle(shape, diagnostics) {
|
|
4051
4052
|
const defaults = shapeDefaults(shape, diagnostics);
|
|
4052
|
-
const strokeWidth =
|
|
4053
|
+
const strokeWidth = chunkSKGJXCAO_cjs.finite(shape.strokeWidth, defaults.strokeWidth);
|
|
4053
4054
|
const shadow = shape.shadowStyle ?? (shape.hasShadow ? { enabled: true, color: "#000000", opacity: 0.25, blur: 10, angle: 45, distance: 5 } : void 0);
|
|
4054
|
-
const angle =
|
|
4055
|
+
const angle = chunkSKGJXCAO_cjs.finite(shadow?.angle, 45) * Math.PI / 180;
|
|
4055
4056
|
return {
|
|
4056
|
-
fill:
|
|
4057
|
-
stroke:
|
|
4057
|
+
fill: chunkSKGJXCAO_cjs.paint(shape.fillColor, diagnostics, shape.id),
|
|
4058
|
+
stroke: chunkSKGJXCAO_cjs.paint(shape.strokeColor, diagnostics, shape.id),
|
|
4058
4059
|
strokeWidth,
|
|
4059
4060
|
dash: shapeDash(shape, strokeWidth),
|
|
4060
4061
|
lineCap: shape.strokeStyle === "dotted" ? "round" : "butt",
|
|
4061
|
-
opacity:
|
|
4062
|
+
opacity: chunkSKGJXCAO_cjs.finite(shape.opacity, defaults.opacity),
|
|
4062
4063
|
blur: shape.blur !== void 0 && shape.blur > 0 ? shape.blur : void 0,
|
|
4063
4064
|
blend: shape.blend,
|
|
4064
4065
|
shadow: shadow?.enabled ? {
|
|
4065
4066
|
color: shadow.color ?? "#000000",
|
|
4066
|
-
opacity:
|
|
4067
|
-
blur:
|
|
4068
|
-
dx: Math.cos(angle) *
|
|
4069
|
-
dy: Math.sin(angle) *
|
|
4067
|
+
opacity: chunkSKGJXCAO_cjs.finite(shadow.opacity, 0.25),
|
|
4068
|
+
blur: chunkSKGJXCAO_cjs.finite(shadow.blur, 10),
|
|
4069
|
+
dx: Math.cos(angle) * chunkSKGJXCAO_cjs.finite(shadow.distance, 5),
|
|
4070
|
+
dy: Math.sin(angle) * chunkSKGJXCAO_cjs.finite(shadow.distance, 5)
|
|
4070
4071
|
} : void 0
|
|
4071
4072
|
};
|
|
4072
4073
|
}
|
|
@@ -4142,11 +4143,11 @@ function renderShapeText(context, strokeWidth, measureText) {
|
|
|
4142
4143
|
if (!shape.text) {
|
|
4143
4144
|
return null;
|
|
4144
4145
|
}
|
|
4145
|
-
const fontSize =
|
|
4146
|
+
const fontSize = chunkSKGJXCAO_cjs.finite(shape.fontSize, shapeDefaults(shape, []).fontSize);
|
|
4146
4147
|
const padding = shape.isText ? 0 : Math.max(8, strokeWidth * 2);
|
|
4147
|
-
const area = shape.shapeType === "person" ?
|
|
4148
|
+
const area = shape.shapeType === "person" ? chunkSKGJXCAO_cjs.personLabelArea(x, y, width, height) : { x, y, width, height };
|
|
4148
4149
|
const textWidth = Math.max(0, area.width - padding * 2);
|
|
4149
|
-
const fontFamily2 = shape.fontFamily ||
|
|
4150
|
+
const fontFamily2 = shape.fontFamily || chunkSKGJXCAO_cjs.DEFAULT_FONT;
|
|
4150
4151
|
const metrics = measureText?.(fontFamily2, fontSize);
|
|
4151
4152
|
const textNode = {
|
|
4152
4153
|
type: "text",
|
|
@@ -4157,7 +4158,7 @@ function renderShapeText(context, strokeWidth, measureText) {
|
|
|
4157
4158
|
y: area.y + padding,
|
|
4158
4159
|
width: textWidth,
|
|
4159
4160
|
height: Math.max(0, area.height - padding * 2),
|
|
4160
|
-
lines:
|
|
4161
|
+
lines: chunkSKGJXCAO_cjs.wrapText(shape.text, textWidth, fontSize, metrics),
|
|
4161
4162
|
fontFamily: fontFamily2,
|
|
4162
4163
|
fontSize,
|
|
4163
4164
|
fontWeight: shape.fontWeight ?? "normal",
|
|
@@ -4165,12 +4166,12 @@ function renderShapeText(context, strokeWidth, measureText) {
|
|
|
4165
4166
|
color: shape.textColor || "#111827",
|
|
4166
4167
|
align: shape.textAlign ?? "center",
|
|
4167
4168
|
verticalAlign: shape.textVerticalAlign ?? "middle",
|
|
4168
|
-
lineHeight:
|
|
4169
|
+
lineHeight: chunkSKGJXCAO_cjs.finite(shape.lineHeight, 1.3),
|
|
4169
4170
|
rotation,
|
|
4170
4171
|
rotationCenter
|
|
4171
4172
|
};
|
|
4172
4173
|
if (hasBoldMarkup(shape.text)) {
|
|
4173
|
-
const { measure, spaceWidth } = metrics ??
|
|
4174
|
+
const { measure, spaceWidth } = metrics ?? chunkSKGJXCAO_cjs.heuristicRichMeasure(fontSize);
|
|
4174
4175
|
textNode.richLines = wrapRichText(shape.text, textWidth, measure, spaceWidth);
|
|
4175
4176
|
}
|
|
4176
4177
|
return textNode;
|
|
@@ -4209,19 +4210,19 @@ function renderDoubleStroke(context, strokeWidth) {
|
|
|
4209
4210
|
return nodes;
|
|
4210
4211
|
}
|
|
4211
4212
|
function createRenderContext(shape, index, diagnostics) {
|
|
4212
|
-
const x =
|
|
4213
|
-
const y =
|
|
4214
|
-
const width = Math.max(0,
|
|
4215
|
-
const height = Math.max(0,
|
|
4216
|
-
const rotation =
|
|
4217
|
-
const strokeWidth =
|
|
4213
|
+
const x = chunkSKGJXCAO_cjs.finite(shape.x, 0);
|
|
4214
|
+
const y = chunkSKGJXCAO_cjs.finite(shape.y, 0);
|
|
4215
|
+
const width = Math.max(0, chunkSKGJXCAO_cjs.finite(shape.width, 100));
|
|
4216
|
+
const height = Math.max(0, chunkSKGJXCAO_cjs.finite(shape.height, 100));
|
|
4217
|
+
const rotation = chunkSKGJXCAO_cjs.finite(shape.rotation, 0);
|
|
4218
|
+
const strokeWidth = chunkSKGJXCAO_cjs.finite(shape.strokeWidth, 2);
|
|
4218
4219
|
return {
|
|
4219
4220
|
strokeWidth,
|
|
4220
4221
|
context: {
|
|
4221
4222
|
shape,
|
|
4222
4223
|
id: `shape-${shape.id}`,
|
|
4223
4224
|
order: 1e4 + index,
|
|
4224
|
-
bounds:
|
|
4225
|
+
bounds: chunkSKGJXCAO_cjs.rotatedBounds({ x, y, width, height }, rotation, strokeWidth + (shape.hasShadow ? 20 : 2)),
|
|
4225
4226
|
rotation,
|
|
4226
4227
|
rotationCenter: { x: x + width / 2, y: y + height / 2 },
|
|
4227
4228
|
style: shapeStyle(shape, diagnostics),
|
|
@@ -4271,7 +4272,7 @@ function buildShape(shape, index, diagnostics, measureText) {
|
|
|
4271
4272
|
}
|
|
4272
4273
|
function buildShapes(shapes, diagnostics, measureText) {
|
|
4273
4274
|
return shapes.flatMap(
|
|
4274
|
-
(shape, index) =>
|
|
4275
|
+
(shape, index) => chunkSKGJXCAO_cjs.tag(
|
|
4275
4276
|
buildShape(shape, index, diagnostics, measureText),
|
|
4276
4277
|
"shape",
|
|
4277
4278
|
shape.id,
|
|
@@ -4288,7 +4289,7 @@ function buildXAxisLabel(chart, layout, order) {
|
|
|
4288
4289
|
return null;
|
|
4289
4290
|
}
|
|
4290
4291
|
return {
|
|
4291
|
-
...
|
|
4292
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
4292
4293
|
role: "axis",
|
|
4293
4294
|
id: `chart-x-label-${chart.id}`,
|
|
4294
4295
|
order,
|
|
@@ -4298,7 +4299,7 @@ function buildXAxisLabel(chart, layout, order) {
|
|
|
4298
4299
|
chart,
|
|
4299
4300
|
align: "center"
|
|
4300
4301
|
}),
|
|
4301
|
-
prop:
|
|
4302
|
+
prop: chunkSKGJXCAO_cjs.axisLabelProp("x")
|
|
4302
4303
|
};
|
|
4303
4304
|
}
|
|
4304
4305
|
function buildYAxisLabel(chart, layout, order) {
|
|
@@ -4306,7 +4307,7 @@ function buildYAxisLabel(chart, layout, order) {
|
|
|
4306
4307
|
return null;
|
|
4307
4308
|
}
|
|
4308
4309
|
return {
|
|
4309
|
-
...
|
|
4310
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
4310
4311
|
role: "axis",
|
|
4311
4312
|
id: `chart-y-label-${chart.id}`,
|
|
4312
4313
|
order,
|
|
@@ -4322,7 +4323,7 @@ function buildYAxisLabel(chart, layout, order) {
|
|
|
4322
4323
|
align: "center",
|
|
4323
4324
|
rotation: -90
|
|
4324
4325
|
}),
|
|
4325
|
-
prop:
|
|
4326
|
+
prop: chunkSKGJXCAO_cjs.axisLabelProp("y")
|
|
4326
4327
|
};
|
|
4327
4328
|
}
|
|
4328
4329
|
function buildAxisLabels(chart, layout, order) {
|
|
@@ -4345,7 +4346,7 @@ function buildBoxplotSeriesYAxisTicks(chart, layout, order) {
|
|
|
4345
4346
|
return chart.series.map((series, index) => {
|
|
4346
4347
|
const centerY = layout.plot.y + (index + 0.5) * slotWidth;
|
|
4347
4348
|
return {
|
|
4348
|
-
...
|
|
4349
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
4349
4350
|
role: "axis",
|
|
4350
4351
|
id: `chart-y-tick-${chart.id}-${index}`,
|
|
4351
4352
|
order: order + index,
|
|
@@ -4355,7 +4356,7 @@ function buildBoxplotSeriesYAxisTicks(chart, layout, order) {
|
|
|
4355
4356
|
chart,
|
|
4356
4357
|
align: "right"
|
|
4357
4358
|
}),
|
|
4358
|
-
prop:
|
|
4359
|
+
prop: chunkSKGJXCAO_cjs.seriesLabelProp(series.id)
|
|
4359
4360
|
};
|
|
4360
4361
|
});
|
|
4361
4362
|
}
|
|
@@ -4381,7 +4382,7 @@ function isStackedLegendPosition(position) {
|
|
|
4381
4382
|
return position === "bottomLeft" || position === "bottomRight";
|
|
4382
4383
|
}
|
|
4383
4384
|
function legendItemWidths(chart) {
|
|
4384
|
-
return legendSeries(chart).map((item) => Math.max(42, item.label.length *
|
|
4385
|
+
return legendSeries(chart).map((item) => Math.max(42, item.label.length * chunkSKGJXCAO_cjs.finite(chart.fontSize, 12) * 0.58 + 22));
|
|
4385
4386
|
}
|
|
4386
4387
|
function stackedLegendColumnWidth(chart) {
|
|
4387
4388
|
const widths = legendItemWidths(chart);
|
|
@@ -4434,9 +4435,9 @@ function renderLegendItem(render2, item) {
|
|
|
4434
4435
|
}
|
|
4435
4436
|
function createLegendSwatch(render2, item) {
|
|
4436
4437
|
const { chart, bounds, diagnostics } = render2;
|
|
4437
|
-
const fallback =
|
|
4438
|
+
const fallback = chunkSKGJXCAO_cjs.CHART_COLORS[item.seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length];
|
|
4438
4439
|
const solidOnly = chart.chartType === "line";
|
|
4439
|
-
const color = solidOnly ?
|
|
4440
|
+
const color = solidOnly ? chunkSKGJXCAO_cjs.representativeColor(item.series.color, fallback) : item.series.color ?? fallback;
|
|
4440
4441
|
return {
|
|
4441
4442
|
type: "rect",
|
|
4442
4443
|
id: `chart-legend-swatch-${chart.id}-${item.series.id}`,
|
|
@@ -4447,16 +4448,16 @@ function createLegendSwatch(render2, item) {
|
|
|
4447
4448
|
width: 10,
|
|
4448
4449
|
height: 10,
|
|
4449
4450
|
rx: 3,
|
|
4450
|
-
prop:
|
|
4451
|
+
prop: chunkSKGJXCAO_cjs.seriesColorProp(item.series.id),
|
|
4451
4452
|
propKind: "color",
|
|
4452
4453
|
propSolidOnly: solidOnly,
|
|
4453
|
-
style: { fill:
|
|
4454
|
+
style: { fill: chunkSKGJXCAO_cjs.paint(color, diagnostics, chart.id) }
|
|
4454
4455
|
};
|
|
4455
4456
|
}
|
|
4456
4457
|
function createLegendLabel(render2, item) {
|
|
4457
4458
|
const { chart, bounds } = render2;
|
|
4458
4459
|
return {
|
|
4459
|
-
...
|
|
4460
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
4460
4461
|
role: "legend",
|
|
4461
4462
|
id: `chart-legend-${chart.id}-${item.series.id}`,
|
|
4462
4463
|
order: item.order + 1,
|
|
@@ -4465,7 +4466,7 @@ function createLegendLabel(render2, item) {
|
|
|
4465
4466
|
text: item.series.label,
|
|
4466
4467
|
chart
|
|
4467
4468
|
}),
|
|
4468
|
-
prop:
|
|
4469
|
+
prop: chunkSKGJXCAO_cjs.seriesLabelProp(item.series.id)
|
|
4469
4470
|
};
|
|
4470
4471
|
}
|
|
4471
4472
|
|
|
@@ -4484,19 +4485,19 @@ function hasCartesianDecorations(chart) {
|
|
|
4484
4485
|
return !CHARTS_WITHOUT_CARTESIAN_DECORATIONS.has(chart.chartType);
|
|
4485
4486
|
}
|
|
4486
4487
|
function tickOffset(chart) {
|
|
4487
|
-
return hasCartesianDecorations(chart) ? Math.max(0,
|
|
4488
|
+
return hasCartesianDecorations(chart) ? Math.max(0, chunkSKGJXCAO_cjs.finite(chart.tickLength, 0)) : 0;
|
|
4488
4489
|
}
|
|
4489
4490
|
function xLabelOffset(chart) {
|
|
4490
|
-
return tickOffset(chart) + (hasCartesianDecorations(chart) ? Math.max(0,
|
|
4491
|
+
return tickOffset(chart) + (hasCartesianDecorations(chart) ? Math.max(0, chunkSKGJXCAO_cjs.finite(chart.xLabelGap, 0)) : 0);
|
|
4491
4492
|
}
|
|
4492
4493
|
function yLabelOffset(chart) {
|
|
4493
|
-
return tickOffset(chart) + (hasCartesianDecorations(chart) ? Math.max(0,
|
|
4494
|
+
return tickOffset(chart) + (hasCartesianDecorations(chart) ? Math.max(0, chunkSKGJXCAO_cjs.finite(chart.yLabelGap, 0)) : 0);
|
|
4494
4495
|
}
|
|
4495
4496
|
function isHorizontalBoxplot(chart) {
|
|
4496
4497
|
return chart.chartType === "boxplot" && chart.config?.orientation === "horizontal";
|
|
4497
4498
|
}
|
|
4498
4499
|
function boxplotCategoryLabelWidth(chart) {
|
|
4499
|
-
const fontSize =
|
|
4500
|
+
const fontSize = chunkSKGJXCAO_cjs.finite(chart.fontSize, 12);
|
|
4500
4501
|
const longest = Math.max(0, ...chart.series.map((series) => (series.label || series.id).length));
|
|
4501
4502
|
return longest * fontSize * 0.58 + 16;
|
|
4502
4503
|
}
|
|
@@ -4508,18 +4509,18 @@ function treemapSideLegendSide(chart, showLegend) {
|
|
|
4508
4509
|
return chart.legendPosition === "left" ? "left" : chart.legendPosition === "right" ? "right" : null;
|
|
4509
4510
|
}
|
|
4510
4511
|
function barCategoryLabelWidth(chart) {
|
|
4511
|
-
const fontSize =
|
|
4512
|
+
const fontSize = chunkSKGJXCAO_cjs.finite(chart.axisFontSize ?? chart.fontSize, 12);
|
|
4512
4513
|
const categories = chart.config?.categories ?? [];
|
|
4513
4514
|
return Math.max(0, ...categories.map((category) => category.length)) * fontSize * 0.58 + 16;
|
|
4514
4515
|
}
|
|
4515
4516
|
function leftLabelWidth(chart) {
|
|
4516
|
-
if (chart.axisLabelSpace && chart.axisLabelSpace > 0 && (isHorizontalBoxplot(chart) ||
|
|
4517
|
+
if (chart.axisLabelSpace && chart.axisLabelSpace > 0 && (isHorizontalBoxplot(chart) || chunkSKGJXCAO_cjs.isHorizontalBar(chart))) {
|
|
4517
4518
|
return chart.axisLabelSpace;
|
|
4518
4519
|
}
|
|
4519
4520
|
if (isHorizontalBoxplot(chart)) {
|
|
4520
4521
|
return boxplotCategoryLabelWidth(chart);
|
|
4521
4522
|
}
|
|
4522
|
-
if (
|
|
4523
|
+
if (chunkSKGJXCAO_cjs.isHorizontalBar(chart)) {
|
|
4523
4524
|
return chart.categoryAlign === "left" || chart.categoryAlign === "inside" ? 20 : barCategoryLabelWidth(chart);
|
|
4524
4525
|
}
|
|
4525
4526
|
if (chart.showValueAxis === false) {
|
|
@@ -4528,12 +4529,12 @@ function leftLabelWidth(chart) {
|
|
|
4528
4529
|
return chart.axisY.label ? 60 : 46;
|
|
4529
4530
|
}
|
|
4530
4531
|
function tiltedBottomRoom(chart) {
|
|
4531
|
-
const tilt =
|
|
4532
|
+
const tilt = chunkSKGJXCAO_cjs.labelTilt(chart);
|
|
4532
4533
|
if (tilt <= 0) {
|
|
4533
4534
|
return 0;
|
|
4534
4535
|
}
|
|
4535
|
-
const labels = chart.chartType === "bar" && !
|
|
4536
|
-
return labels.length > 0 ? Math.max(0,
|
|
4536
|
+
const labels = chart.chartType === "bar" && !chunkSKGJXCAO_cjs.isHorizontalBar(chart) ? chart.config?.categories ?? [] : chart.chartType === "boxplot" && !isHorizontalBoxplot(chart) ? chart.series.map((series) => series.label || series.id) : [];
|
|
4537
|
+
return labels.length > 0 ? Math.max(0, chunkSKGJXCAO_cjs.tiltedLabelRoom(chart, labels, tilt) - 18) : 0;
|
|
4537
4538
|
}
|
|
4538
4539
|
function legendPlaceOf(chart) {
|
|
4539
4540
|
const showLegend = chart.showLegend !== false;
|
|
@@ -4558,14 +4559,14 @@ function padRightOf(legend) {
|
|
|
4558
4559
|
}
|
|
4559
4560
|
function padBottomOf(chart, showLabels, legend) {
|
|
4560
4561
|
const valueRow = chart.chartType === "bar" && chart.config?.showBarLabels === true && chart.config.barLabelPosition === "axis";
|
|
4561
|
-
const horizontalValueAxis =
|
|
4562
|
-
const base = showLabels ?
|
|
4562
|
+
const horizontalValueAxis = chunkSKGJXCAO_cjs.isHorizontalBar(chart) && chart.showValueAxis !== false;
|
|
4563
|
+
const base = showLabels ? chunkSKGJXCAO_cjs.isHorizontalBar(chart) ? horizontalValueAxis ? 34 : 12 : (chart.axisX.label ? 52 : 34) + (valueRow ? 18 : 0) : 12;
|
|
4563
4564
|
const hasColorBar = chart.chartType === "field" && legend.showLegend && Boolean(chart.config?.scale?.stops.length);
|
|
4564
4565
|
const legendInRow = legend.hasItems && !legend.atTop && !legend.stacked;
|
|
4565
4566
|
return xLabelOffset(chart) + base + (showLabels ? tiltedBottomRoom(chart) : 0) + (hasColorBar ? 44 : 0) + (legendInRow ? 16 + LEGEND_ROW_HEIGHT : 0);
|
|
4566
4567
|
}
|
|
4567
4568
|
function padTopOf(chart, legend) {
|
|
4568
|
-
const titleHeight = chart.title ? Math.max(44, 20 +
|
|
4569
|
+
const titleHeight = chart.title ? Math.max(44, 20 + chunkSKGJXCAO_cjs.finite(chart.titleSize, 14) * 1.6) : 0;
|
|
4569
4570
|
return titleHeight || (legend.atTop && legend.hasItems ? 44 : 24);
|
|
4570
4571
|
}
|
|
4571
4572
|
function decorations(chart) {
|
|
@@ -4576,9 +4577,9 @@ function decorations(chart) {
|
|
|
4576
4577
|
const padBottom = padBottomOf(chart, showLabels, legend);
|
|
4577
4578
|
const padTop = padTopOf(chart, legend);
|
|
4578
4579
|
return {
|
|
4579
|
-
bounds:
|
|
4580
|
+
bounds: chunkSKGJXCAO_cjs.boxBounds(
|
|
4580
4581
|
{ x: chart.x, y: chart.y, width: chart.width, height: chart.height },
|
|
4581
|
-
|
|
4582
|
+
chunkSKGJXCAO_cjs.finite(chart.strokeWidth, 1) + 2
|
|
4582
4583
|
),
|
|
4583
4584
|
plot: {
|
|
4584
4585
|
x: chart.x + padLeft,
|
|
@@ -4600,26 +4601,26 @@ function categoryLabels(chart, count) {
|
|
|
4600
4601
|
return Array.from({ length: count }, (_value, index) => String(index + 1));
|
|
4601
4602
|
}
|
|
4602
4603
|
function buildCategoricalXAxisTicks(chart, layout, order) {
|
|
4603
|
-
const count =
|
|
4604
|
+
const count = chunkSKGJXCAO_cjs.barCategoryCount(chart);
|
|
4604
4605
|
const slotWidth = layout.plot.width / count;
|
|
4605
4606
|
const labels = categoryLabels(chart, count);
|
|
4606
4607
|
const editable = Boolean(chart.config?.categories?.length);
|
|
4607
|
-
const tilt =
|
|
4608
|
+
const tilt = chunkSKGJXCAO_cjs.labelTilt(chart);
|
|
4608
4609
|
const left = chart.categoryAlign === "left";
|
|
4609
4610
|
const groupGap = left ? Math.min(
|
|
4610
|
-
Math.max(0,
|
|
4611
|
+
Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.barGroupGap, 8)),
|
|
4611
4612
|
Math.max(0, slotWidth - 1)
|
|
4612
4613
|
) : 0;
|
|
4613
4614
|
return Array.from({ length: count }, (_value, index) => {
|
|
4614
4615
|
const centerX = layout.plot.x + (index + 0.5) * slotWidth;
|
|
4615
4616
|
if (tilt > 0) {
|
|
4616
4617
|
const text = labels[index] ?? String(index + 1);
|
|
4617
|
-
const { frame, rotation } =
|
|
4618
|
+
const { frame, rotation } = chunkSKGJXCAO_cjs.labelBelowFrame(chart, text, tilt, {
|
|
4618
4619
|
x: centerX,
|
|
4619
4620
|
y: layout.plot.y + layout.plot.height + 4 + xLabelOffset(chart)
|
|
4620
4621
|
});
|
|
4621
4622
|
return {
|
|
4622
|
-
...
|
|
4623
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
4623
4624
|
role: "axis",
|
|
4624
4625
|
id: `chart-x-tick-${chart.id}-${index}`,
|
|
4625
4626
|
order: order + index,
|
|
@@ -4630,11 +4631,11 @@ function buildCategoricalXAxisTicks(chart, layout, order) {
|
|
|
4630
4631
|
align: "right",
|
|
4631
4632
|
rotation
|
|
4632
4633
|
}),
|
|
4633
|
-
prop: editable ?
|
|
4634
|
+
prop: editable ? chunkSKGJXCAO_cjs.categoryProp(index) : void 0
|
|
4634
4635
|
};
|
|
4635
4636
|
}
|
|
4636
4637
|
return {
|
|
4637
|
-
...
|
|
4638
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
4638
4639
|
role: "axis",
|
|
4639
4640
|
id: `chart-x-tick-${chart.id}-${index}`,
|
|
4640
4641
|
order: order + index,
|
|
@@ -4649,24 +4650,24 @@ function buildCategoricalXAxisTicks(chart, layout, order) {
|
|
|
4649
4650
|
chart,
|
|
4650
4651
|
align: left ? "left" : "center"
|
|
4651
4652
|
}),
|
|
4652
|
-
prop: editable ?
|
|
4653
|
+
prop: editable ? chunkSKGJXCAO_cjs.categoryProp(index) : void 0
|
|
4653
4654
|
};
|
|
4654
4655
|
});
|
|
4655
4656
|
}
|
|
4656
4657
|
function buildSeriesXAxisTicks(chart, layout, order) {
|
|
4657
4658
|
const count = Math.max(1, chart.series.length);
|
|
4658
4659
|
const slotWidth = layout.plot.width / count;
|
|
4659
|
-
const tilt =
|
|
4660
|
+
const tilt = chunkSKGJXCAO_cjs.labelTilt(chart);
|
|
4660
4661
|
return chart.series.map((series, index) => {
|
|
4661
4662
|
const centerX = layout.plot.x + (index + 0.5) * slotWidth;
|
|
4662
4663
|
if (tilt > 0) {
|
|
4663
4664
|
const text = series.label || series.id;
|
|
4664
|
-
const { frame, rotation } =
|
|
4665
|
+
const { frame, rotation } = chunkSKGJXCAO_cjs.labelBelowFrame(chart, text, tilt, {
|
|
4665
4666
|
x: centerX,
|
|
4666
4667
|
y: layout.plot.y + layout.plot.height + 4 + xLabelOffset(chart)
|
|
4667
4668
|
});
|
|
4668
4669
|
return {
|
|
4669
|
-
...
|
|
4670
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
4670
4671
|
role: "axis",
|
|
4671
4672
|
id: `chart-x-tick-${chart.id}-${index}`,
|
|
4672
4673
|
order: order + index,
|
|
@@ -4677,11 +4678,11 @@ function buildSeriesXAxisTicks(chart, layout, order) {
|
|
|
4677
4678
|
align: "right",
|
|
4678
4679
|
rotation
|
|
4679
4680
|
}),
|
|
4680
|
-
prop:
|
|
4681
|
+
prop: chunkSKGJXCAO_cjs.seriesLabelProp(series.id)
|
|
4681
4682
|
};
|
|
4682
4683
|
}
|
|
4683
4684
|
return {
|
|
4684
|
-
...
|
|
4685
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
4685
4686
|
role: "axis",
|
|
4686
4687
|
id: `chart-x-tick-${chart.id}-${index}`,
|
|
4687
4688
|
order: order + index,
|
|
@@ -4696,16 +4697,16 @@ function buildSeriesXAxisTicks(chart, layout, order) {
|
|
|
4696
4697
|
chart,
|
|
4697
4698
|
align: "center"
|
|
4698
4699
|
}),
|
|
4699
|
-
prop:
|
|
4700
|
+
prop: chunkSKGJXCAO_cjs.seriesLabelProp(series.id)
|
|
4700
4701
|
};
|
|
4701
4702
|
});
|
|
4702
4703
|
}
|
|
4703
4704
|
|
|
4704
4705
|
// src/renderScene/charts/decorations/numericXAxis.ts
|
|
4705
4706
|
function buildNumericXAxisTicks(chart, layout, order) {
|
|
4706
|
-
return
|
|
4707
|
-
const x = layout.plot.x +
|
|
4708
|
-
return
|
|
4707
|
+
return chunkSKGJXCAO_cjs.chartTicks(chart.axisX).map((tick, index) => {
|
|
4708
|
+
const x = layout.plot.x + chunkSKGJXCAO_cjs.mapChartValue(tick, chart.axisX, layout.plot.width);
|
|
4709
|
+
return chunkSKGJXCAO_cjs.chartText({
|
|
4709
4710
|
role: "axis",
|
|
4710
4711
|
id: `chart-x-tick-${chart.id}-${tick}`,
|
|
4711
4712
|
order: order + index,
|
|
@@ -4720,9 +4721,9 @@ function buildNumericXAxisTicks(chart, layout, order) {
|
|
|
4720
4721
|
|
|
4721
4722
|
// src/renderScene/charts/decorations/numericYAxis.ts
|
|
4722
4723
|
function buildNumericYAxisTicks(chart, layout, order) {
|
|
4723
|
-
return
|
|
4724
|
-
const y = layout.plot.y + layout.plot.height -
|
|
4725
|
-
return
|
|
4724
|
+
return chunkSKGJXCAO_cjs.chartTicks(chart.axisY).map((tick, index) => {
|
|
4725
|
+
const y = layout.plot.y + layout.plot.height - chunkSKGJXCAO_cjs.mapChartValue(tick, chart.axisY, layout.plot.height);
|
|
4726
|
+
return chunkSKGJXCAO_cjs.chartText({
|
|
4726
4727
|
role: "axis",
|
|
4727
4728
|
id: `chart-y-tick-${chart.id}-${tick}`,
|
|
4728
4729
|
order: order + index,
|
|
@@ -4757,10 +4758,10 @@ function buildYAxisTicks(chart, layout, order) {
|
|
|
4757
4758
|
function xTickPositions(chart, layout) {
|
|
4758
4759
|
const { plot } = layout;
|
|
4759
4760
|
if (chart.chartType === "bar") {
|
|
4760
|
-
const count =
|
|
4761
|
+
const count = chunkSKGJXCAO_cjs.barCategoryCount(chart);
|
|
4761
4762
|
return Array.from({ length: count }, (_value, index) => plot.x + (index + 0.5) * plot.width / count);
|
|
4762
4763
|
}
|
|
4763
|
-
return
|
|
4764
|
+
return chunkSKGJXCAO_cjs.chartTicks(chart.axisX).map((tick) => plot.x + chunkSKGJXCAO_cjs.mapChartValue(tick, chart.axisX, plot.width));
|
|
4764
4765
|
}
|
|
4765
4766
|
function axisLineDash(chart, width) {
|
|
4766
4767
|
if (chart.axisLineStyle === "dashed") {
|
|
@@ -4769,8 +4770,8 @@ function axisLineDash(chart, width) {
|
|
|
4769
4770
|
return chart.axisLineStyle === "dotted" ? { dash: [0.1, width * 3], lineCap: "round" } : {};
|
|
4770
4771
|
}
|
|
4771
4772
|
function buildAxisLines(chart, layout, order) {
|
|
4772
|
-
const lineWidth =
|
|
4773
|
-
const tickLength =
|
|
4773
|
+
const lineWidth = chunkSKGJXCAO_cjs.finite(chart.axisLineWidth, 0);
|
|
4774
|
+
const tickLength = chunkSKGJXCAO_cjs.finite(chart.tickLength, 0);
|
|
4774
4775
|
if (lineWidth <= 0 && tickLength <= 0) {
|
|
4775
4776
|
return [];
|
|
4776
4777
|
}
|
|
@@ -4791,20 +4792,20 @@ function buildAxisLines(chart, layout, order) {
|
|
|
4791
4792
|
}
|
|
4792
4793
|
add("line-x", `M ${plot.x} ${bottom} L ${plot.x + plot.width} ${bottom}`);
|
|
4793
4794
|
}
|
|
4794
|
-
if (tickLength > 0 &&
|
|
4795
|
-
|
|
4796
|
-
const x = plot.x +
|
|
4795
|
+
if (tickLength > 0 && chunkSKGJXCAO_cjs.isHorizontalBar(chart)) {
|
|
4796
|
+
chunkSKGJXCAO_cjs.chartTicks(chart.axisY).forEach((tick) => {
|
|
4797
|
+
const x = plot.x + chunkSKGJXCAO_cjs.mapChartValue(tick, chart.axisY, plot.width);
|
|
4797
4798
|
add(`tick-v-${tick}`, `M ${x} ${bottom} L ${x} ${bottom + tickLength}`);
|
|
4798
4799
|
});
|
|
4799
|
-
const rows =
|
|
4800
|
+
const rows = chunkSKGJXCAO_cjs.horizontalRows(chart, plot);
|
|
4800
4801
|
for (let index = 0; index < rows.count; index++) {
|
|
4801
|
-
const y =
|
|
4802
|
+
const y = chunkSKGJXCAO_cjs.rowTop(rows, plot, index) + rows.labelRow + rows.barsHeight / 2;
|
|
4802
4803
|
add(`tick-c-${index}`, `M ${plot.x - tickLength} ${y} L ${plot.x} ${y}`);
|
|
4803
4804
|
}
|
|
4804
4805
|
}
|
|
4805
|
-
if (tickLength > 0 && !isHorizontalBoxplot2(chart) && !
|
|
4806
|
-
|
|
4807
|
-
const y = bottom -
|
|
4806
|
+
if (tickLength > 0 && !isHorizontalBoxplot2(chart) && !chunkSKGJXCAO_cjs.isHorizontalBar(chart)) {
|
|
4807
|
+
chunkSKGJXCAO_cjs.chartTicks(chart.axisY).forEach((tick) => {
|
|
4808
|
+
const y = bottom - chunkSKGJXCAO_cjs.mapChartValue(tick, chart.axisY, plot.height);
|
|
4808
4809
|
add(`tick-y-${tick}`, `M ${plot.x - tickLength} ${y} L ${plot.x} ${y}`);
|
|
4809
4810
|
});
|
|
4810
4811
|
xTickPositions(chart, layout).forEach((x, index) => {
|
|
@@ -4819,14 +4820,14 @@ function categoryNames(chart, count) {
|
|
|
4819
4820
|
}
|
|
4820
4821
|
function buildHorizontalBarAxes(chart, layout, order) {
|
|
4821
4822
|
const { plot, bounds } = layout;
|
|
4822
|
-
const rows =
|
|
4823
|
+
const rows = chunkSKGJXCAO_cjs.horizontalRows(chart, plot);
|
|
4823
4824
|
const above = chart.categoryAlign === "left";
|
|
4824
4825
|
const inside = chart.categoryAlign === "inside";
|
|
4825
4826
|
const editable = Boolean(chart.config?.categories?.length);
|
|
4826
4827
|
const nodes = categoryNames(chart, rows.count).map((name, index) => {
|
|
4827
|
-
const top =
|
|
4828
|
+
const top = chunkSKGJXCAO_cjs.rowTop(rows, plot, index);
|
|
4828
4829
|
return {
|
|
4829
|
-
...
|
|
4830
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
4830
4831
|
role: "axis",
|
|
4831
4832
|
id: `chart-y-category-${chart.id}-${index}`,
|
|
4832
4833
|
order: order + index,
|
|
@@ -4836,19 +4837,19 @@ function buildHorizontalBarAxes(chart, layout, order) {
|
|
|
4836
4837
|
chart,
|
|
4837
4838
|
align: above || inside ? "left" : "right"
|
|
4838
4839
|
}),
|
|
4839
|
-
prop: editable ?
|
|
4840
|
+
prop: editable ? chunkSKGJXCAO_cjs.categoryProp(index) : void 0
|
|
4840
4841
|
};
|
|
4841
4842
|
});
|
|
4842
4843
|
if (chart.showValueAxis !== false) {
|
|
4843
|
-
|
|
4844
|
-
const x = plot.x +
|
|
4844
|
+
chunkSKGJXCAO_cjs.chartTicks(chart.axisY).forEach((tick, index) => {
|
|
4845
|
+
const x = plot.x + chunkSKGJXCAO_cjs.mapChartValue(tick, chart.axisY, plot.width);
|
|
4845
4846
|
nodes.push(
|
|
4846
|
-
|
|
4847
|
+
chunkSKGJXCAO_cjs.chartText({
|
|
4847
4848
|
role: "axis",
|
|
4848
4849
|
id: `chart-x-tick-${chart.id}-${tick}`,
|
|
4849
4850
|
order: order + rows.count + index,
|
|
4850
4851
|
bounds,
|
|
4851
|
-
frame: { x: x - 20, y: plot.y + plot.height + 4 +
|
|
4852
|
+
frame: { x: x - 20, y: plot.y + plot.height + 4 + chunkSKGJXCAO_cjs.finite(chart.tickLength, 0), width: 40, height: 18 },
|
|
4852
4853
|
text: String(tick),
|
|
4853
4854
|
chart,
|
|
4854
4855
|
align: "center"
|
|
@@ -4867,7 +4868,7 @@ function buildChartAxes(chart, layout, order) {
|
|
|
4867
4868
|
return lines;
|
|
4868
4869
|
}
|
|
4869
4870
|
order += lines.length;
|
|
4870
|
-
if (
|
|
4871
|
+
if (chunkSKGJXCAO_cjs.isHorizontalBar(chart)) {
|
|
4871
4872
|
return [...lines, ...buildHorizontalBarAxes(chart, layout, order)];
|
|
4872
4873
|
}
|
|
4873
4874
|
const xTicks = buildXAxisTicks(chart, layout, order);
|
|
@@ -4945,7 +4946,7 @@ function buildCircularChartGrid(chart, plot, bounds, order) {
|
|
|
4945
4946
|
const centerX = plot.x + plot.width / 2;
|
|
4946
4947
|
const centerY = plot.y + plot.height / 2;
|
|
4947
4948
|
const radius = Math.max(0, Math.min(plot.width, plot.height) / 2);
|
|
4948
|
-
const width =
|
|
4949
|
+
const width = chunkSKGJXCAO_cjs.finite(chart.gridWidth, 1);
|
|
4949
4950
|
if (chart.gridLineStyle === "dotted") {
|
|
4950
4951
|
return buildDottedCircularGrid(chart, bounds, order, centerX, centerY, radius, width);
|
|
4951
4952
|
}
|
|
@@ -4956,7 +4957,7 @@ function buildCircularChartGrid(chart, plot, bounds, order) {
|
|
|
4956
4957
|
...gridLineDashStyle(chart, width)
|
|
4957
4958
|
};
|
|
4958
4959
|
const nodes = [];
|
|
4959
|
-
|
|
4960
|
+
chunkSKGJXCAO_cjs.chartTicks(chart.axisY).filter((tick) => tick > chart.axisY.min).forEach((tick) => {
|
|
4960
4961
|
const ringRadius = radius * ringRatio(chart, tick);
|
|
4961
4962
|
nodes.push({
|
|
4962
4963
|
type: "ellipse",
|
|
@@ -4970,8 +4971,8 @@ function buildCircularChartGrid(chart, plot, bounds, order) {
|
|
|
4970
4971
|
style
|
|
4971
4972
|
});
|
|
4972
4973
|
});
|
|
4973
|
-
|
|
4974
|
-
const angle =
|
|
4974
|
+
chunkSKGJXCAO_cjs.chartTicks(chart.axisX).forEach((tick) => {
|
|
4975
|
+
const angle = chunkSKGJXCAO_cjs.angleForAxisValue(chart.axisX.min, chart.axisX.max, tick);
|
|
4975
4976
|
const edgeX = centerX + Math.cos(angle) * radius;
|
|
4976
4977
|
const edgeY = centerY + Math.sin(angle) * radius;
|
|
4977
4978
|
nodes.push({
|
|
@@ -4986,13 +4987,13 @@ function buildCircularChartGrid(chart, plot, bounds, order) {
|
|
|
4986
4987
|
return nodes;
|
|
4987
4988
|
}
|
|
4988
4989
|
function buildDottedCircularGrid(chart, bounds, order, centerX, centerY, radius, width) {
|
|
4989
|
-
const yTicks =
|
|
4990
|
-
const xTicks =
|
|
4990
|
+
const yTicks = chunkSKGJXCAO_cjs.chartTicks(chart.axisY).filter((tick) => tick > chart.axisY.min);
|
|
4991
|
+
const xTicks = chunkSKGJXCAO_cjs.chartTicks(chart.axisX);
|
|
4991
4992
|
const nodes = [];
|
|
4992
4993
|
yTicks.forEach((yTick) => {
|
|
4993
4994
|
const ringRadius = radius * ringRatio(chart, yTick);
|
|
4994
4995
|
xTicks.forEach((xTick) => {
|
|
4995
|
-
const angle =
|
|
4996
|
+
const angle = chunkSKGJXCAO_cjs.angleForAxisValue(chart.axisX.min, chart.axisX.max, xTick);
|
|
4996
4997
|
const x = centerX + Math.cos(angle) * ringRadius;
|
|
4997
4998
|
const y = centerY + Math.sin(angle) * ringRadius;
|
|
4998
4999
|
const id = `chart-grid-dot-${chart.id}-${xTick}-${yTick}`;
|
|
@@ -5014,8 +5015,8 @@ function buildChartGrid(chart, plot, bounds, order) {
|
|
|
5014
5015
|
if (chart.gridShape === "circle" && CIRCULAR_GRID_CHART_TYPES.has(chart.chartType)) {
|
|
5015
5016
|
return buildCircularChartGrid(chart, plot, bounds, order);
|
|
5016
5017
|
}
|
|
5017
|
-
const width =
|
|
5018
|
-
if (
|
|
5018
|
+
const width = chunkSKGJXCAO_cjs.finite(chart.gridWidth, 1);
|
|
5019
|
+
if (chunkSKGJXCAO_cjs.isHorizontalBar(chart)) {
|
|
5019
5020
|
return buildHorizontalBarGrid(chart, plot, bounds, order, width);
|
|
5020
5021
|
}
|
|
5021
5022
|
const clip = chart.chartType === "field" ? fieldSurfaceClip(chart, plot) : void 0;
|
|
@@ -5030,8 +5031,8 @@ function buildChartGrid(chart, plot, bounds, order) {
|
|
|
5030
5031
|
clip
|
|
5031
5032
|
};
|
|
5032
5033
|
const nodes = [];
|
|
5033
|
-
(chart.gridAxes === "y" ? [] :
|
|
5034
|
-
const x = plot.x +
|
|
5034
|
+
(chart.gridAxes === "y" ? [] : chunkSKGJXCAO_cjs.chartTicks(chart.axisX)).forEach((tick) => {
|
|
5035
|
+
const x = plot.x + chunkSKGJXCAO_cjs.mapChartValue(tick, chart.axisX, plot.width);
|
|
5035
5036
|
nodes.push({
|
|
5036
5037
|
type: "path",
|
|
5037
5038
|
id: `chart-grid-x-${chart.id}-${tick}`,
|
|
@@ -5041,8 +5042,8 @@ function buildChartGrid(chart, plot, bounds, order) {
|
|
|
5041
5042
|
style
|
|
5042
5043
|
});
|
|
5043
5044
|
});
|
|
5044
|
-
(chart.gridAxes === "x" ? [] :
|
|
5045
|
-
const y = plot.y + plot.height -
|
|
5045
|
+
(chart.gridAxes === "x" ? [] : chunkSKGJXCAO_cjs.chartTicks(chart.axisY)).forEach((tick) => {
|
|
5046
|
+
const y = plot.y + plot.height - chunkSKGJXCAO_cjs.mapChartValue(tick, chart.axisY, plot.height);
|
|
5046
5047
|
nodes.push({
|
|
5047
5048
|
type: "path",
|
|
5048
5049
|
id: `chart-grid-y-${chart.id}-${tick}`,
|
|
@@ -5064,8 +5065,8 @@ function buildHorizontalBarGrid(chart, plot, bounds, order, width) {
|
|
|
5064
5065
|
strokeWidth: width,
|
|
5065
5066
|
...chart.gridLineStyle === "dotted" ? { dash: [0.1, width * 3], lineCap: "round" } : gridLineDashStyle(chart, width)
|
|
5066
5067
|
};
|
|
5067
|
-
return
|
|
5068
|
-
const x = plot.x +
|
|
5068
|
+
return chunkSKGJXCAO_cjs.chartTicks(chart.axisY).map((tick, index) => {
|
|
5069
|
+
const x = plot.x + chunkSKGJXCAO_cjs.mapChartValue(tick, chart.axisY, plot.width);
|
|
5069
5070
|
return {
|
|
5070
5071
|
type: "path",
|
|
5071
5072
|
id: `chart-grid-x-${chart.id}-${tick}`,
|
|
@@ -5077,13 +5078,13 @@ function buildHorizontalBarGrid(chart, plot, bounds, order, width) {
|
|
|
5077
5078
|
});
|
|
5078
5079
|
}
|
|
5079
5080
|
function buildDottedRectGrid(chart, plot, bounds, order, width, clip) {
|
|
5080
|
-
const xTicks =
|
|
5081
|
-
const yTicks =
|
|
5081
|
+
const xTicks = chunkSKGJXCAO_cjs.chartTicks(chart.axisX);
|
|
5082
|
+
const yTicks = chunkSKGJXCAO_cjs.chartTicks(chart.axisY);
|
|
5082
5083
|
const nodes = [];
|
|
5083
5084
|
xTicks.forEach((xTick) => {
|
|
5084
|
-
const x = plot.x +
|
|
5085
|
+
const x = plot.x + chunkSKGJXCAO_cjs.mapChartValue(xTick, chart.axisX, plot.width);
|
|
5085
5086
|
yTicks.forEach((yTick) => {
|
|
5086
|
-
const y = plot.y + plot.height -
|
|
5087
|
+
const y = plot.y + plot.height - chunkSKGJXCAO_cjs.mapChartValue(yTick, chart.axisY, plot.height);
|
|
5087
5088
|
const id = `chart-grid-dot-${chart.id}-${xTick}-${yTick}`;
|
|
5088
5089
|
nodes.push(createGridDot(chart, id, order + nodes.length, bounds, x, y, width, clip));
|
|
5089
5090
|
});
|
|
@@ -5106,7 +5107,7 @@ function createChartRuleMarks(render2) {
|
|
|
5106
5107
|
return {
|
|
5107
5108
|
rule,
|
|
5108
5109
|
color: rule.color || render2.chart.strokeColor || "#475569",
|
|
5109
|
-
y: render2.plot.y + render2.plot.height -
|
|
5110
|
+
y: render2.plot.y + render2.plot.height - chunkSKGJXCAO_cjs.mapChartValue(rule.at, render2.chart.axisY, render2.plot.height),
|
|
5110
5111
|
lineOrder,
|
|
5111
5112
|
labelOrder
|
|
5112
5113
|
};
|
|
@@ -5126,7 +5127,7 @@ function createChartRuleLine(render2, mark) {
|
|
|
5126
5127
|
order: mark.lineOrder,
|
|
5127
5128
|
bounds: render2.bounds,
|
|
5128
5129
|
d: `M ${render2.plot.x} ${mark.y} L ${render2.plot.x + render2.plot.width} ${mark.y}`,
|
|
5129
|
-
prop:
|
|
5130
|
+
prop: chunkSKGJXCAO_cjs.ruleAtProp(mark.rule.id),
|
|
5130
5131
|
propKind: "value",
|
|
5131
5132
|
style: {
|
|
5132
5133
|
fill: { kind: "none" },
|
|
@@ -5137,9 +5138,9 @@ function createChartRuleLine(render2, mark) {
|
|
|
5137
5138
|
};
|
|
5138
5139
|
}
|
|
5139
5140
|
function createChartRuleLabel(render2, mark) {
|
|
5140
|
-
const fontSize = Math.max(9,
|
|
5141
|
+
const fontSize = Math.max(9, chunkSKGJXCAO_cjs.finite(render2.chart.fontSize, 12) - 2);
|
|
5141
5142
|
return {
|
|
5142
|
-
...
|
|
5143
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
5143
5144
|
id: `chart-rule-label-${render2.chart.id}-${mark.rule.id}`,
|
|
5144
5145
|
order: mark.labelOrder ?? mark.lineOrder + 1,
|
|
5145
5146
|
bounds: render2.bounds,
|
|
@@ -5148,19 +5149,19 @@ function createChartRuleLabel(render2, mark) {
|
|
|
5148
5149
|
chart: render2.chart
|
|
5149
5150
|
}),
|
|
5150
5151
|
color: mark.color,
|
|
5151
|
-
prop:
|
|
5152
|
+
prop: chunkSKGJXCAO_cjs.ruleTextProp(mark.rule.id)
|
|
5152
5153
|
};
|
|
5153
5154
|
}
|
|
5154
5155
|
|
|
5155
5156
|
// src/renderScene/charts/chartBackdrop.ts
|
|
5156
5157
|
function chartImageRect(chart) {
|
|
5157
|
-
const inset =
|
|
5158
|
+
const inset = chunkSKGJXCAO_cjs.finite(chart.strokeWidth, 1) / 2;
|
|
5158
5159
|
return {
|
|
5159
5160
|
x: chart.x + inset,
|
|
5160
5161
|
y: chart.y + inset,
|
|
5161
5162
|
width: Math.max(1, chart.width - inset * 2),
|
|
5162
5163
|
height: Math.max(1, chart.height - inset * 2),
|
|
5163
|
-
rx: Math.max(0,
|
|
5164
|
+
rx: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.cornerRadius, 12) - inset)
|
|
5164
5165
|
};
|
|
5165
5166
|
}
|
|
5166
5167
|
function buildChartBackdrop(chart, bounds, order) {
|
|
@@ -5202,7 +5203,7 @@ function buildChartBackdrop(chart, bounds, order) {
|
|
|
5202
5203
|
// src/renderScene/charts/renderers/bar/glass.ts
|
|
5203
5204
|
function createGlassBackdropNodes(context, id, d) {
|
|
5204
5205
|
const { chart, bounds, nextOrder } = context;
|
|
5205
|
-
const blur =
|
|
5206
|
+
const blur = chunkSKGJXCAO_cjs.finite(chart.config?.barGlassBlur, 0);
|
|
5206
5207
|
if (blur <= 0 || !chart.fillImage) {
|
|
5207
5208
|
return [];
|
|
5208
5209
|
}
|
|
@@ -5220,7 +5221,7 @@ function createGlassBackdropNodes(context, id, d) {
|
|
|
5220
5221
|
href: chart.fillImage.url,
|
|
5221
5222
|
style: {
|
|
5222
5223
|
blur,
|
|
5223
|
-
saturate:
|
|
5224
|
+
saturate: chunkSKGJXCAO_cjs.finite(chart.config?.barGlassSaturation, 1),
|
|
5224
5225
|
clip: { type: "path", d },
|
|
5225
5226
|
pointerEvents: "none"
|
|
5226
5227
|
}
|
|
@@ -5271,8 +5272,8 @@ function createBarGlowNode(context, id, d, color, glow, bounds = context.bounds)
|
|
|
5271
5272
|
bounds,
|
|
5272
5273
|
d,
|
|
5273
5274
|
style: {
|
|
5274
|
-
fill:
|
|
5275
|
-
shadow: { color:
|
|
5275
|
+
fill: chunkSKGJXCAO_cjs.paint(color, diagnostics, chart.id),
|
|
5276
|
+
shadow: { color: chunkSKGJXCAO_cjs.representativeColor(color, "#ffffff"), opacity: 0.9, blur: glow, dx: 0, dy: 0 },
|
|
5276
5277
|
pointerEvents: "none"
|
|
5277
5278
|
}
|
|
5278
5279
|
};
|
|
@@ -5283,14 +5284,14 @@ function barLabelsEnabled(context) {
|
|
|
5283
5284
|
return context.chart.config?.showBarLabels === true;
|
|
5284
5285
|
}
|
|
5285
5286
|
function resolvePlacement(target, size) {
|
|
5286
|
-
const fits = target.frame.height >= size.height +
|
|
5287
|
+
const fits = target.frame.height >= size.height + chunkSKGJXCAO_cjs.BAR_LABEL.gap * 2;
|
|
5287
5288
|
return target.placement !== "outside" && !fits ? "outside" : target.placement;
|
|
5288
5289
|
}
|
|
5289
5290
|
function labelTop(placement, frame, height) {
|
|
5290
5291
|
if (placement === "outside") {
|
|
5291
|
-
return frame.y - height -
|
|
5292
|
+
return frame.y - height - chunkSKGJXCAO_cjs.BAR_LABEL.gap;
|
|
5292
5293
|
}
|
|
5293
|
-
return placement === "inside" ? frame.y +
|
|
5294
|
+
return placement === "inside" ? frame.y + chunkSKGJXCAO_cjs.BAR_LABEL.gap : frame.y + frame.height / 2 - height / 2;
|
|
5294
5295
|
}
|
|
5295
5296
|
function createPillNode(context, id, box, color) {
|
|
5296
5297
|
const { chart, bounds, diagnostics, nextOrder } = context;
|
|
@@ -5300,11 +5301,11 @@ function createPillNode(context, id, box, color) {
|
|
|
5300
5301
|
id: `${id}-pill`,
|
|
5301
5302
|
order: nextOrder(),
|
|
5302
5303
|
bounds,
|
|
5303
|
-
d:
|
|
5304
|
+
d: chunkSKGJXCAO_cjs.pillPath(box.left, box.top, box.width, box.height),
|
|
5304
5305
|
style: {
|
|
5305
|
-
fill: config?.barLabelPillColor ?
|
|
5306
|
-
stroke:
|
|
5307
|
-
strokeWidth:
|
|
5306
|
+
fill: config?.barLabelPillColor ? chunkSKGJXCAO_cjs.paint(config.barLabelPillColor, diagnostics, chart.id) : { kind: "none" },
|
|
5307
|
+
stroke: chunkSKGJXCAO_cjs.paint(config?.barLabelBorderColor ?? color, diagnostics, chart.id),
|
|
5308
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(config?.barLabelBorderWidth, 1),
|
|
5308
5309
|
pointerEvents: "none"
|
|
5309
5310
|
}
|
|
5310
5311
|
};
|
|
@@ -5313,7 +5314,7 @@ function createTextNode(context, id, box, text, placement, fontSize, color) {
|
|
|
5313
5314
|
const { chart, bounds, nextOrder } = context;
|
|
5314
5315
|
const config = chart.config;
|
|
5315
5316
|
return {
|
|
5316
|
-
...
|
|
5317
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
5317
5318
|
id,
|
|
5318
5319
|
order: nextOrder(),
|
|
5319
5320
|
bounds,
|
|
@@ -5334,7 +5335,7 @@ function createAxisValueNode(context, target, text, fontSize) {
|
|
|
5334
5335
|
const config = chart.config;
|
|
5335
5336
|
const top = plot.y + plot.height + 4 + 16 + Math.max(0, chart.tickLength ?? 0);
|
|
5336
5337
|
return {
|
|
5337
|
-
...
|
|
5338
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
5338
5339
|
id: target.id,
|
|
5339
5340
|
order: nextOrder(),
|
|
5340
5341
|
bounds,
|
|
@@ -5343,7 +5344,7 @@ function createAxisValueNode(context, target, text, fontSize) {
|
|
|
5343
5344
|
y: target.frame.y + target.frame.height / 2 - fontSize * 0.6,
|
|
5344
5345
|
width: plot.width - 14,
|
|
5345
5346
|
height: fontSize * 1.2
|
|
5346
|
-
} : { x: plot.x, y: target.frame.y -
|
|
5347
|
+
} : { x: plot.x, y: target.frame.y - chunkSKGJXCAO_cjs.CATEGORY_LABEL_ROW, width: plot.width, height: fontSize * 1.2 } : { x: target.frame.x, y: top, width: target.frame.width, height: fontSize * 1.2 },
|
|
5347
5348
|
text,
|
|
5348
5349
|
chart,
|
|
5349
5350
|
align: target.horizontal ? "right" : chart.categoryAlign === "left" ? "left" : "center"
|
|
@@ -5357,24 +5358,24 @@ function createAxisValueNode(context, target, text, fontSize) {
|
|
|
5357
5358
|
}
|
|
5358
5359
|
function horizontalPlacement(target, size) {
|
|
5359
5360
|
const requested = target.placement === "axis" ? "outside" : target.placement;
|
|
5360
|
-
const fits = target.frame.width >= size.width +
|
|
5361
|
+
const fits = target.frame.width >= size.width + chunkSKGJXCAO_cjs.BAR_LABEL.gap * 2;
|
|
5361
5362
|
return requested !== "outside" && !fits ? "outside" : requested;
|
|
5362
5363
|
}
|
|
5363
5364
|
function horizontalBox(target, size, placement) {
|
|
5364
5365
|
const { frame } = target;
|
|
5365
|
-
const left = placement === "outside" ? frame.x + frame.width +
|
|
5366
|
+
const left = placement === "outside" ? frame.x + frame.width + chunkSKGJXCAO_cjs.BAR_LABEL.gap : placement === "inside" ? frame.x + frame.width - size.width - chunkSKGJXCAO_cjs.BAR_LABEL.gap : frame.x + frame.width / 2 - size.width / 2;
|
|
5366
5367
|
return { ...size, left, top: frame.y + frame.height / 2 - size.height / 2 };
|
|
5367
5368
|
}
|
|
5368
5369
|
function createBarLabelNodes(context, target) {
|
|
5369
5370
|
const { chart } = context;
|
|
5370
5371
|
const config = chart.config;
|
|
5371
|
-
const fontSize = Math.max(8,
|
|
5372
|
-
const text =
|
|
5372
|
+
const fontSize = Math.max(8, chunkSKGJXCAO_cjs.finite(config?.barLabelFontSize, chunkSKGJXCAO_cjs.finite(chart.fontSize, 12)));
|
|
5373
|
+
const text = chunkSKGJXCAO_cjs.formatBarLabel(target.value, config?.barLabelFormat);
|
|
5373
5374
|
if (target.placement === "axis") {
|
|
5374
5375
|
return [createAxisValueNode(context, target, text, fontSize)];
|
|
5375
5376
|
}
|
|
5376
5377
|
const pill = config?.barLabelPill === true;
|
|
5377
|
-
const size =
|
|
5378
|
+
const size = chunkSKGJXCAO_cjs.barLabelSize(text, fontSize, pill);
|
|
5378
5379
|
const placement = target.horizontal ? horizontalPlacement(target, size) : resolvePlacement(target, size);
|
|
5379
5380
|
const box = target.horizontal ? horizontalBox(target, size, placement) : {
|
|
5380
5381
|
...size,
|
|
@@ -5415,7 +5416,7 @@ function barTrackClip(context, frame) {
|
|
|
5415
5416
|
}
|
|
5416
5417
|
return {
|
|
5417
5418
|
type: "path",
|
|
5418
|
-
d:
|
|
5419
|
+
d: chunkSKGJXCAO_cjs.roundedBarPath(frame.x, frame.y, frame.width, frame.height, context.chart.config?.barCornerRadius ?? 2)
|
|
5419
5420
|
};
|
|
5420
5421
|
}
|
|
5421
5422
|
function barTrackEnabled(context) {
|
|
@@ -5425,8 +5426,8 @@ function createBarTrackNodes(context, id, frame, orientation = "vertical") {
|
|
|
5425
5426
|
const { chart, bounds, diagnostics, nextOrder } = context;
|
|
5426
5427
|
const config = chart.config;
|
|
5427
5428
|
const radius = config?.barCornerRadius ?? 2;
|
|
5428
|
-
const segments =
|
|
5429
|
-
const d = segments > 0 ?
|
|
5429
|
+
const segments = chunkSKGJXCAO_cjs.finite(config?.barSegments, 0);
|
|
5430
|
+
const d = segments > 0 ? chunkSKGJXCAO_cjs.segmentedBarPath(frame, orientation, segments, chunkSKGJXCAO_cjs.finite(config?.barSegmentGap, 4), radius, 1, true) : chunkSKGJXCAO_cjs.roundedBarPath(frame.x, frame.y, frame.width, frame.height, radius);
|
|
5430
5431
|
const nodes = [
|
|
5431
5432
|
{
|
|
5432
5433
|
type: "path",
|
|
@@ -5435,7 +5436,7 @@ function createBarTrackNodes(context, id, frame, orientation = "vertical") {
|
|
|
5435
5436
|
bounds,
|
|
5436
5437
|
d,
|
|
5437
5438
|
style: {
|
|
5438
|
-
fill:
|
|
5439
|
+
fill: chunkSKGJXCAO_cjs.paint(config?.barTrackColor ?? chart.gridColor ?? "#e2e8f0", diagnostics, chart.id),
|
|
5439
5440
|
pointerEvents: "none"
|
|
5440
5441
|
}
|
|
5441
5442
|
}
|
|
@@ -5451,13 +5452,13 @@ function createBarTrackNodes(context, id, frame, orientation = "vertical") {
|
|
|
5451
5452
|
frame.y,
|
|
5452
5453
|
frame.width,
|
|
5453
5454
|
frame.height,
|
|
5454
|
-
|
|
5455
|
-
Math.max(MIN_HATCH_SPACING,
|
|
5455
|
+
chunkSKGJXCAO_cjs.finite(config.barTrackHatchAngle, DEFAULT_HATCH.angle),
|
|
5456
|
+
Math.max(MIN_HATCH_SPACING, chunkSKGJXCAO_cjs.finite(config.barTrackHatchSpacing, DEFAULT_HATCH.spacing))
|
|
5456
5457
|
),
|
|
5457
5458
|
style: {
|
|
5458
5459
|
fill: { kind: "none" },
|
|
5459
|
-
stroke:
|
|
5460
|
-
strokeWidth:
|
|
5460
|
+
stroke: chunkSKGJXCAO_cjs.paint(config.barTrackHatchColor ?? chart.gridColor ?? "#cbd5e1", diagnostics, chart.id),
|
|
5461
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(config.barTrackHatchWidth, DEFAULT_HATCH.width),
|
|
5461
5462
|
pointerEvents: "none",
|
|
5462
5463
|
clip: { type: "path", d }
|
|
5463
5464
|
}
|
|
@@ -5504,23 +5505,23 @@ function groupedShape(context, frame) {
|
|
|
5504
5505
|
const { chart, plot } = context;
|
|
5505
5506
|
const config = chart.config;
|
|
5506
5507
|
const radius = config?.barCornerRadius ?? 2;
|
|
5507
|
-
const segments =
|
|
5508
|
+
const segments = chunkSKGJXCAO_cjs.finite(config?.barSegments, 0);
|
|
5508
5509
|
if (segments > 0) {
|
|
5509
|
-
return
|
|
5510
|
+
return chunkSKGJXCAO_cjs.segmentedBarPath(
|
|
5510
5511
|
{ x: frame.x, y: plot.y, width: frame.width, height: plot.height },
|
|
5511
5512
|
"vertical",
|
|
5512
5513
|
segments,
|
|
5513
|
-
|
|
5514
|
+
chunkSKGJXCAO_cjs.finite(config?.barSegmentGap, 4),
|
|
5514
5515
|
radius,
|
|
5515
5516
|
frame.height / plot.height,
|
|
5516
5517
|
config?.barSegmentSnap !== false
|
|
5517
5518
|
);
|
|
5518
5519
|
}
|
|
5519
|
-
return
|
|
5520
|
+
return chunkSKGJXCAO_cjs.barPath(frame.x, frame.y, frame.width, frame.height, radius, config?.barRoundedBottom === true);
|
|
5520
5521
|
}
|
|
5521
5522
|
function createGroupedGlow(context, mark) {
|
|
5522
5523
|
const { chart } = context;
|
|
5523
|
-
const glow =
|
|
5524
|
+
const glow = chunkSKGJXCAO_cjs.finite(chart.config?.barGlow, 0);
|
|
5524
5525
|
if (glow <= 0 || mark.frame.height <= 0) {
|
|
5525
5526
|
return [];
|
|
5526
5527
|
}
|
|
@@ -5531,10 +5532,10 @@ function createGroupedGlow(context, mark) {
|
|
|
5531
5532
|
}
|
|
5532
5533
|
function createGroupedBarLayout(context) {
|
|
5533
5534
|
const { chart, plot } = context;
|
|
5534
|
-
const valueCount =
|
|
5535
|
+
const valueCount = chunkSKGJXCAO_cjs.barCategoryCount(chart);
|
|
5535
5536
|
const slotWidth = plot.width / valueCount;
|
|
5536
|
-
const groupGap = Math.min(Math.max(0,
|
|
5537
|
-
const barGap = Math.max(0,
|
|
5537
|
+
const groupGap = Math.min(Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.barGroupGap, 8)), Math.max(0, slotWidth - 1));
|
|
5538
|
+
const barGap = Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.barGap, 2));
|
|
5538
5539
|
return {
|
|
5539
5540
|
slotWidth,
|
|
5540
5541
|
seriesWidth: Math.max(1, (slotWidth - groupGap) / Math.max(1, chart.series.length)),
|
|
@@ -5544,10 +5545,10 @@ function createGroupedBarLayout(context) {
|
|
|
5544
5545
|
}
|
|
5545
5546
|
function createSeriesBarMarks(context, layout, series, seriesIndex) {
|
|
5546
5547
|
const { chart, plot } = context;
|
|
5547
|
-
const seriesColor2 = series.color ??
|
|
5548
|
+
const seriesColor2 = series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length];
|
|
5548
5549
|
return series.values.map((value, valueIndex) => {
|
|
5549
5550
|
const numericValue = Array.isArray(value) ? value[1] : value;
|
|
5550
|
-
const height = Math.max(0,
|
|
5551
|
+
const height = Math.max(0, chunkSKGJXCAO_cjs.mapChartValue(numericValue, chart.axisY, plot.height));
|
|
5551
5552
|
return {
|
|
5552
5553
|
seriesId: series.id,
|
|
5553
5554
|
valueIndex,
|
|
@@ -5581,10 +5582,10 @@ function createGroupedBarNodes(context, mark) {
|
|
|
5581
5582
|
const radius = chart.config?.barCornerRadius ?? 2;
|
|
5582
5583
|
const { x, width } = mark.frame;
|
|
5583
5584
|
const path = groupedShape(context, mark.frame);
|
|
5584
|
-
const fill2 =
|
|
5585
|
-
const stroke =
|
|
5586
|
-
const strokeWidth =
|
|
5587
|
-
const shadow =
|
|
5585
|
+
const fill2 = chunkSKGJXCAO_cjs.paint(mark.color, diagnostics, chart.id);
|
|
5586
|
+
const stroke = chunkSKGJXCAO_cjs.paint(chart.config?.barBorderColor || "#000000", diagnostics, chart.id);
|
|
5587
|
+
const strokeWidth = chunkSKGJXCAO_cjs.finite(chart.config?.barBorderWidth, 0);
|
|
5588
|
+
const shadow = chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle);
|
|
5588
5589
|
const shadowCaster = shadow ? {
|
|
5589
5590
|
type: "path",
|
|
5590
5591
|
id: `chart-bar-shadow-${chart.id}-${mark.seriesId}-${mark.valueIndex}`,
|
|
@@ -5614,10 +5615,10 @@ function createGroupedBarNodes(context, mark) {
|
|
|
5614
5615
|
valueIndex: mark.valueIndex,
|
|
5615
5616
|
mark: "bar",
|
|
5616
5617
|
radius,
|
|
5617
|
-
colorProp:
|
|
5618
|
+
colorProp: chunkSKGJXCAO_cjs.seriesValueColorProp(mark.seriesId, mark.valueIndex),
|
|
5618
5619
|
hasColorOverride: mark.hasColorOverride
|
|
5619
5620
|
},
|
|
5620
|
-
prop:
|
|
5621
|
+
prop: chunkSKGJXCAO_cjs.seriesValueProp(mark.seriesId, mark.valueIndex),
|
|
5621
5622
|
style: { fill: fill2, stroke, strokeWidth, innerShadow: shadow }
|
|
5622
5623
|
};
|
|
5623
5624
|
const glass = createGlassBackdropNodes(context, `${mark.seriesId}-${mark.valueIndex}`, path);
|
|
@@ -5628,15 +5629,15 @@ function createGroupedBarError(context, mark) {
|
|
|
5628
5629
|
return null;
|
|
5629
5630
|
}
|
|
5630
5631
|
const { chart, plot, bounds, nextOrder } = context;
|
|
5631
|
-
const [lower, upper] =
|
|
5632
|
-
return
|
|
5632
|
+
const [lower, upper] = chunkSKGJXCAO_cjs.errorBarRange(mark.value, mark.error);
|
|
5633
|
+
return chunkSKGJXCAO_cjs.createVerticalErrorWhiskerNode({
|
|
5633
5634
|
id: `chart-bar-error-${chart.id}-${mark.seriesId}-${mark.valueIndex}`,
|
|
5634
5635
|
order: nextOrder(),
|
|
5635
5636
|
bounds,
|
|
5636
5637
|
geometry: {
|
|
5637
5638
|
centerX: mark.frame.x + mark.frame.width / 2,
|
|
5638
|
-
startY: plot.y + plot.height -
|
|
5639
|
-
endY: plot.y + plot.height -
|
|
5639
|
+
startY: plot.y + plot.height - chunkSKGJXCAO_cjs.mapChartValue(lower, chart.axisY, plot.height),
|
|
5640
|
+
endY: plot.y + plot.height - chunkSKGJXCAO_cjs.mapChartValue(upper, chart.axisY, plot.height)
|
|
5640
5641
|
},
|
|
5641
5642
|
color: chart.textColor ?? "#0f172a",
|
|
5642
5643
|
valueReference: { seriesId: mark.seriesId, valueIndex: mark.valueIndex }
|
|
@@ -5646,9 +5647,9 @@ function createGroupedBarError(context, mark) {
|
|
|
5646
5647
|
// src/renderScene/charts/renderers/bar/horizontal.ts
|
|
5647
5648
|
function barFrame(context, rows, seriesIndex, valueIndex, value) {
|
|
5648
5649
|
const { chart, plot } = context;
|
|
5649
|
-
const top =
|
|
5650
|
+
const top = chunkSKGJXCAO_cjs.rowTop(rows, plot, valueIndex) + rows.labelRow;
|
|
5650
5651
|
if (context.stackedMode) {
|
|
5651
|
-
const segment =
|
|
5652
|
+
const segment = chunkSKGJXCAO_cjs.stackedSegment(chart, context.stackedMode, valueIndex, seriesIndex, plot.width);
|
|
5652
5653
|
const start = Math.min(segment.pixelStart, segment.pixelEnd);
|
|
5653
5654
|
return {
|
|
5654
5655
|
x: plot.x + start,
|
|
@@ -5657,27 +5658,27 @@ function barFrame(context, rows, seriesIndex, valueIndex, value) {
|
|
|
5657
5658
|
height: rows.barsHeight
|
|
5658
5659
|
};
|
|
5659
5660
|
}
|
|
5660
|
-
const barGap = Math.max(0,
|
|
5661
|
+
const barGap = Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.barGap, 2));
|
|
5661
5662
|
const seriesHeight = rows.barsHeight / Math.max(1, chart.series.length);
|
|
5662
|
-
const width = Math.max(0,
|
|
5663
|
+
const width = Math.max(0, chunkSKGJXCAO_cjs.mapChartValue(value, chart.axisY, plot.width));
|
|
5663
5664
|
return { x: plot.x, y: top + seriesIndex * seriesHeight, width, height: Math.max(1, seriesHeight - barGap) };
|
|
5664
5665
|
}
|
|
5665
5666
|
function barPath2(context, frame) {
|
|
5666
5667
|
const { chart, plot } = context;
|
|
5667
5668
|
const config = chart.config;
|
|
5668
|
-
const segments = context.stackedMode && chart.series.length > 1 ? 0 :
|
|
5669
|
+
const segments = context.stackedMode && chart.series.length > 1 ? 0 : chunkSKGJXCAO_cjs.finite(config?.barSegments, 0);
|
|
5669
5670
|
if (segments > 0) {
|
|
5670
|
-
return
|
|
5671
|
+
return chunkSKGJXCAO_cjs.segmentedBarPath(
|
|
5671
5672
|
{ x: plot.x, y: frame.y, width: plot.width, height: frame.height },
|
|
5672
5673
|
"horizontal",
|
|
5673
5674
|
segments,
|
|
5674
|
-
|
|
5675
|
+
chunkSKGJXCAO_cjs.finite(config?.barSegmentGap, 4),
|
|
5675
5676
|
config?.barCornerRadius ?? 2,
|
|
5676
5677
|
frame.width / plot.width,
|
|
5677
5678
|
config?.barSegmentSnap !== false
|
|
5678
5679
|
);
|
|
5679
5680
|
}
|
|
5680
|
-
return
|
|
5681
|
+
return chunkSKGJXCAO_cjs.roundedBarPath(frame.x, frame.y, frame.width, frame.height, config?.barCornerRadius ?? 2);
|
|
5681
5682
|
}
|
|
5682
5683
|
function markOf(context, rows, series, seriesIndex, valueIndex, value) {
|
|
5683
5684
|
const { plot } = context;
|
|
@@ -5697,16 +5698,16 @@ function markOf(context, rows, series, seriesIndex, valueIndex, value) {
|
|
|
5697
5698
|
maxY: frame.y + frame.height
|
|
5698
5699
|
},
|
|
5699
5700
|
path: barPath2(context, frame),
|
|
5700
|
-
color: series.colors?.[valueIndex] ?? series.color ??
|
|
5701
|
+
color: series.colors?.[valueIndex] ?? series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length]
|
|
5701
5702
|
};
|
|
5702
5703
|
}
|
|
5703
5704
|
function barNodes(context, mark) {
|
|
5704
5705
|
const { chart, diagnostics, nextOrder } = context;
|
|
5705
5706
|
const config = chart.config;
|
|
5706
|
-
const stroke =
|
|
5707
|
-
const strokeWidth =
|
|
5708
|
-
const shadow =
|
|
5709
|
-
const fill2 =
|
|
5707
|
+
const stroke = chunkSKGJXCAO_cjs.paint(config?.barBorderColor || "#000000", diagnostics, chart.id);
|
|
5708
|
+
const strokeWidth = chunkSKGJXCAO_cjs.finite(config?.barBorderWidth, 0);
|
|
5709
|
+
const shadow = chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle);
|
|
5710
|
+
const fill2 = chunkSKGJXCAO_cjs.paint(mark.color, diagnostics, chart.id);
|
|
5710
5711
|
const nodes = [...createGlassBackdropNodes(context, mark.id, mark.path)];
|
|
5711
5712
|
if (shadow) {
|
|
5712
5713
|
nodes.push({
|
|
@@ -5730,7 +5731,7 @@ function barNodes(context, mark) {
|
|
|
5730
5731
|
valueIndex: mark.valueIndex,
|
|
5731
5732
|
mark: "bar",
|
|
5732
5733
|
radius: config?.barCornerRadius ?? 2,
|
|
5733
|
-
colorProp:
|
|
5734
|
+
colorProp: chunkSKGJXCAO_cjs.seriesValueColorProp(mark.series.id, mark.valueIndex),
|
|
5734
5735
|
hasColorOverride: mark.series.colors?.[mark.valueIndex] != null
|
|
5735
5736
|
},
|
|
5736
5737
|
style: { fill: fill2, stroke, strokeWidth, innerShadow: shadow }
|
|
@@ -5760,7 +5761,7 @@ function pushBar(context, rows, layers, series, seriesIndex, valueIndex, value,
|
|
|
5760
5761
|
layers.tracks.push(...createBarTrackNodes(context, mark.id, mark.trackFrame, "horizontal"));
|
|
5761
5762
|
}
|
|
5762
5763
|
layers.bars.push(...barNodes(context, mark));
|
|
5763
|
-
const glow =
|
|
5764
|
+
const glow = chunkSKGJXCAO_cjs.finite(chart.config?.barGlow, 0);
|
|
5764
5765
|
if (glow > 0 && mark.frame.width > 0) {
|
|
5765
5766
|
layers.glows.push(
|
|
5766
5767
|
createBarGlowNode(context, `chart-bar-glow-${chart.id}-${mark.id}`, mark.path, mark.color, glow, mark.bounds)
|
|
@@ -5769,7 +5770,7 @@ function pushBar(context, rows, layers, series, seriesIndex, valueIndex, value,
|
|
|
5769
5770
|
layers.labels.push(...labelNodes2(context, mark, highest));
|
|
5770
5771
|
}
|
|
5771
5772
|
function renderHorizontalBars(context) {
|
|
5772
|
-
const rows =
|
|
5773
|
+
const rows = chunkSKGJXCAO_cjs.horizontalRows(context.chart, context.plot);
|
|
5773
5774
|
const layers = { tracks: [], bars: [], glows: [], labels: [] };
|
|
5774
5775
|
context.chart.series.forEach((series, seriesIndex) => {
|
|
5775
5776
|
const numeric = series.values.map((value) => typeof value === "number" ? value : value[1]);
|
|
@@ -5784,8 +5785,8 @@ function renderHorizontalBars(context) {
|
|
|
5784
5785
|
// src/renderScene/charts/renderers/bar/stacked.ts
|
|
5785
5786
|
function slotOf(context, mode) {
|
|
5786
5787
|
const { chart, plot } = context;
|
|
5787
|
-
const slotWidth = plot.width /
|
|
5788
|
-
const groupGap = Math.min(Math.max(0,
|
|
5788
|
+
const slotWidth = plot.width / chunkSKGJXCAO_cjs.barCategoryCount(chart);
|
|
5789
|
+
const groupGap = Math.min(Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.barGroupGap, 8)), Math.max(0, slotWidth - 1));
|
|
5789
5790
|
return {
|
|
5790
5791
|
slotWidth,
|
|
5791
5792
|
groupGap,
|
|
@@ -5796,19 +5797,19 @@ function slotOf(context, mode) {
|
|
|
5796
5797
|
}
|
|
5797
5798
|
function pathOf(context, x, y, height, slot, radius) {
|
|
5798
5799
|
const { chart, plot } = context;
|
|
5799
|
-
const segments = chart.series.length === 1 ?
|
|
5800
|
+
const segments = chart.series.length === 1 ? chunkSKGJXCAO_cjs.finite(chart.config?.barSegments, 0) : 0;
|
|
5800
5801
|
if (segments > 0) {
|
|
5801
|
-
return
|
|
5802
|
+
return chunkSKGJXCAO_cjs.segmentedBarPath(
|
|
5802
5803
|
{ x, y: plot.y, width: slot.barWidth, height: plot.height },
|
|
5803
5804
|
"vertical",
|
|
5804
5805
|
segments,
|
|
5805
|
-
|
|
5806
|
+
chunkSKGJXCAO_cjs.finite(chart.config?.barSegmentGap, 4),
|
|
5806
5807
|
radius,
|
|
5807
5808
|
height / plot.height,
|
|
5808
5809
|
chart.config?.barSegmentSnap !== false
|
|
5809
5810
|
);
|
|
5810
5811
|
}
|
|
5811
|
-
return
|
|
5812
|
+
return chunkSKGJXCAO_cjs.barPath(x, y, slot.barWidth, height, radius, chart.config?.barRoundedBottom === true);
|
|
5812
5813
|
}
|
|
5813
5814
|
function pushLabel(context, layers, series, seriesIndex, valueIndex, slot, frame) {
|
|
5814
5815
|
const { chart } = context;
|
|
@@ -5830,7 +5831,7 @@ function pushLabel(context, layers, series, seriesIndex, valueIndex, slot, frame
|
|
|
5830
5831
|
}
|
|
5831
5832
|
function markOf2(context, mode, slot, series, seriesIndex, valueIndex) {
|
|
5832
5833
|
const { chart, plot } = context;
|
|
5833
|
-
const segment =
|
|
5834
|
+
const segment = chunkSKGJXCAO_cjs.stackedSegment(chart, mode, valueIndex, seriesIndex, plot.height);
|
|
5834
5835
|
const radius = slot.outerSeriesIndex === null || seriesIndex === slot.outerSeriesIndex ? slot.cornerRadius : 0;
|
|
5835
5836
|
const x = plot.x + valueIndex * slot.slotWidth + slot.groupGap / 2;
|
|
5836
5837
|
const y = plot.y + plot.height - Math.max(segment.pixelStart, segment.pixelEnd);
|
|
@@ -5839,7 +5840,7 @@ function markOf2(context, mode, slot, series, seriesIndex, valueIndex) {
|
|
|
5839
5840
|
series,
|
|
5840
5841
|
valueIndex,
|
|
5841
5842
|
radius,
|
|
5842
|
-
color: series.colors?.[valueIndex] ?? series.color ??
|
|
5843
|
+
color: series.colors?.[valueIndex] ?? series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length],
|
|
5843
5844
|
x,
|
|
5844
5845
|
y,
|
|
5845
5846
|
height,
|
|
@@ -5850,10 +5851,10 @@ function markOf2(context, mode, slot, series, seriesIndex, valueIndex) {
|
|
|
5850
5851
|
function segmentNodes(context, mark) {
|
|
5851
5852
|
const { chart, plot, bounds, diagnostics, nextOrder } = context;
|
|
5852
5853
|
const { series, valueIndex, path } = mark;
|
|
5853
|
-
const fill2 =
|
|
5854
|
-
const stroke =
|
|
5855
|
-
const strokeWidth =
|
|
5856
|
-
const shadow =
|
|
5854
|
+
const fill2 = chunkSKGJXCAO_cjs.paint(mark.color, diagnostics, chart.id);
|
|
5855
|
+
const stroke = chunkSKGJXCAO_cjs.paint(chart.config?.barBorderColor || "#000000", diagnostics, chart.id);
|
|
5856
|
+
const strokeWidth = chunkSKGJXCAO_cjs.finite(chart.config?.barBorderWidth, 0);
|
|
5857
|
+
const shadow = chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle);
|
|
5857
5858
|
const nodes = [];
|
|
5858
5859
|
if (shadow) {
|
|
5859
5860
|
const plotClip = `M ${plot.x} ${plot.y} H ${plot.x + plot.width} V ${plot.y + plot.height} H ${plot.x} Z`;
|
|
@@ -5885,10 +5886,10 @@ function segmentNodes(context, mark) {
|
|
|
5885
5886
|
valueIndex,
|
|
5886
5887
|
mark: "bar",
|
|
5887
5888
|
radius: mark.radius,
|
|
5888
|
-
colorProp:
|
|
5889
|
+
colorProp: chunkSKGJXCAO_cjs.seriesValueColorProp(series.id, valueIndex),
|
|
5889
5890
|
hasColorOverride: series.colors?.[valueIndex] != null
|
|
5890
5891
|
},
|
|
5891
|
-
prop:
|
|
5892
|
+
prop: chunkSKGJXCAO_cjs.seriesValueProp(series.id, valueIndex),
|
|
5892
5893
|
style: { fill: fill2, stroke, strokeWidth, innerShadow: shadow }
|
|
5893
5894
|
});
|
|
5894
5895
|
return nodes;
|
|
@@ -5902,7 +5903,7 @@ function pushSegment(context, mode, layers, slot, series, seriesIndex, valueInde
|
|
|
5902
5903
|
layers.bars.push(...segmentNodes(context, mark));
|
|
5903
5904
|
const frame = { x: mark.x, y: mark.y, width: slot.barWidth, height: mark.height };
|
|
5904
5905
|
pushLabel(context, layers, series, seriesIndex, valueIndex, slot, frame);
|
|
5905
|
-
const glow =
|
|
5906
|
+
const glow = chunkSKGJXCAO_cjs.finite(chart.config?.barGlow, 0);
|
|
5906
5907
|
if (glow > 0) {
|
|
5907
5908
|
layers.glows.push(
|
|
5908
5909
|
createBarGlowNode(context, `chart-bar-glow-${chart.id}-${series.id}-${valueIndex}`, mark.path, mark.color, glow)
|
|
@@ -5913,7 +5914,7 @@ function renderStackedBars(context, mode) {
|
|
|
5913
5914
|
const { chart } = context;
|
|
5914
5915
|
const layers = { tracks: [], bars: [], glows: [], labels: [] };
|
|
5915
5916
|
const slot = slotOf(context, mode);
|
|
5916
|
-
const valueCount =
|
|
5917
|
+
const valueCount = chunkSKGJXCAO_cjs.barCategoryCount(chart);
|
|
5917
5918
|
for (let valueIndex = 0; valueIndex < valueCount; valueIndex++) {
|
|
5918
5919
|
chart.series.forEach((series, seriesIndex) => {
|
|
5919
5920
|
pushSegment(context, mode, layers, slot, series, seriesIndex, valueIndex);
|
|
@@ -5928,7 +5929,7 @@ function isSeriesMax2(values, index) {
|
|
|
5928
5929
|
|
|
5929
5930
|
// src/renderScene/charts/renderers/bar.ts
|
|
5930
5931
|
function renderBar(context) {
|
|
5931
|
-
if (
|
|
5932
|
+
if (chunkSKGJXCAO_cjs.isHorizontalBar(context.chart)) {
|
|
5932
5933
|
return renderHorizontalBars(context);
|
|
5933
5934
|
}
|
|
5934
5935
|
if (context.stackedMode) {
|
|
@@ -5943,7 +5944,7 @@ function createBoxplotLayout(context) {
|
|
|
5943
5944
|
const orientation = chart.config?.orientation ?? "vertical";
|
|
5944
5945
|
const boxCount = Math.max(1, chart.series.length);
|
|
5945
5946
|
const slotWidth = (orientation === "horizontal" ? plot.height : plot.width) / boxCount;
|
|
5946
|
-
const borderColor =
|
|
5947
|
+
const borderColor = chunkSKGJXCAO_cjs.representativeColor(chart.config?.barBorderColor, "#000000");
|
|
5947
5948
|
const widthFraction = Math.min(1, Math.max(0.05, chart.config?.boxWidth ?? 0.6));
|
|
5948
5949
|
return {
|
|
5949
5950
|
orientation,
|
|
@@ -5952,15 +5953,15 @@ function createBoxplotLayout(context) {
|
|
|
5952
5953
|
cornerRadius: chart.config?.barCornerRadius ?? 2,
|
|
5953
5954
|
showPoints: chart.config?.showBoxplotPoints ?? true,
|
|
5954
5955
|
borderColor,
|
|
5955
|
-
borderWidth:
|
|
5956
|
-
whiskerWidth: Math.max(0,
|
|
5957
|
-
medianWidth: Math.max(0,
|
|
5956
|
+
borderWidth: chunkSKGJXCAO_cjs.finite(chart.config?.barBorderWidth, 1),
|
|
5957
|
+
whiskerWidth: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.boxWhiskerWidth, 1)),
|
|
5958
|
+
medianWidth: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.boxMedianWidth, 2)),
|
|
5958
5959
|
medianColor: chart.config?.boxMedianColor ?? borderColor,
|
|
5959
5960
|
whiskerColor: chart.config?.boxWhiskerColor,
|
|
5960
|
-
capSize: Math.max(0,
|
|
5961
|
-
pointSize: Math.max(0,
|
|
5962
|
-
pointOpacity: Math.min(1, Math.max(0,
|
|
5963
|
-
jitter: Math.max(0,
|
|
5961
|
+
capSize: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.boxCapSize, 0.4)),
|
|
5962
|
+
pointSize: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.boxPointSize, 3)),
|
|
5963
|
+
pointOpacity: Math.min(1, Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.boxPointOpacity, 0.7))),
|
|
5964
|
+
jitter: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.boxJitter, 1))
|
|
5964
5965
|
};
|
|
5965
5966
|
}
|
|
5966
5967
|
|
|
@@ -5971,7 +5972,7 @@ function boxplotPoint(orientation, center, value) {
|
|
|
5971
5972
|
function createBoxplotGeometry(context, layout, seriesIndex, stats) {
|
|
5972
5973
|
const { chart, plot } = context;
|
|
5973
5974
|
const { orientation } = layout;
|
|
5974
|
-
const valueAt = (value) => orientation === "horizontal" ? plot.x +
|
|
5975
|
+
const valueAt = (value) => orientation === "horizontal" ? plot.x + chunkSKGJXCAO_cjs.mapChartValue(value, chart.axisX, plot.width) : plot.y + plot.height - chunkSKGJXCAO_cjs.mapChartValue(value, chart.axisY, plot.height);
|
|
5975
5976
|
const center = plot[orientation === "horizontal" ? "y" : "x"] + seriesIndex * layout.slotWidth + layout.slotWidth / 2;
|
|
5976
5977
|
return {
|
|
5977
5978
|
center,
|
|
@@ -5986,7 +5987,7 @@ function createBoxplotGeometry(context, layout, seriesIndex, stats) {
|
|
|
5986
5987
|
// src/renderScene/charts/renderers/boxplot/points.ts
|
|
5987
5988
|
function renderSamplePoints(context, layout, mark) {
|
|
5988
5989
|
const { chart, plot, bounds, diagnostics, nextOrder } = context;
|
|
5989
|
-
const valueAt = (value) => layout.orientation === "horizontal" ? plot.x +
|
|
5990
|
+
const valueAt = (value) => layout.orientation === "horizontal" ? plot.x + chunkSKGJXCAO_cjs.mapChartValue(value, chart.axisX, plot.width) : plot.y + plot.height - chunkSKGJXCAO_cjs.mapChartValue(value, chart.axisY, plot.height);
|
|
5990
5991
|
if (layout.pointSize <= 0) {
|
|
5991
5992
|
return [];
|
|
5992
5993
|
}
|
|
@@ -6002,7 +6003,7 @@ function renderSamplePoints(context, layout, mark) {
|
|
|
6002
6003
|
cy: y,
|
|
6003
6004
|
rx: layout.pointSize,
|
|
6004
6005
|
ry: layout.pointSize,
|
|
6005
|
-
style: { fill:
|
|
6006
|
+
style: { fill: chunkSKGJXCAO_cjs.paint(mark.color, diagnostics, chart.id), opacity: layout.pointOpacity }
|
|
6006
6007
|
};
|
|
6007
6008
|
});
|
|
6008
6009
|
}
|
|
@@ -6026,7 +6027,7 @@ function renderBoxAndWhiskers(context, layout, mark) {
|
|
|
6026
6027
|
}
|
|
6027
6028
|
function whiskerColor(layout, mark) {
|
|
6028
6029
|
if (layout.whiskerColor === "series") {
|
|
6029
|
-
return
|
|
6030
|
+
return chunkSKGJXCAO_cjs.representativeColor(mark.color, layout.borderColor);
|
|
6030
6031
|
}
|
|
6031
6032
|
return layout.whiskerColor;
|
|
6032
6033
|
}
|
|
@@ -6108,7 +6109,7 @@ function createBoxNode(context, layout, mark) {
|
|
|
6108
6109
|
height,
|
|
6109
6110
|
rx: layout.cornerRadius,
|
|
6110
6111
|
style: {
|
|
6111
|
-
fill:
|
|
6112
|
+
fill: chunkSKGJXCAO_cjs.paint(mark.color, diagnostics, chart.id),
|
|
6112
6113
|
stroke: { kind: "solid", color: layout.borderColor },
|
|
6113
6114
|
strokeWidth: layout.borderWidth
|
|
6114
6115
|
}
|
|
@@ -6117,12 +6118,12 @@ function createBoxNode(context, layout, mark) {
|
|
|
6117
6118
|
|
|
6118
6119
|
// src/renderScene/charts/renderers/boxplot/series.ts
|
|
6119
6120
|
function renderBoxplotSeries(context, layout, series, seriesIndex) {
|
|
6120
|
-
const stats =
|
|
6121
|
+
const stats = chunkSKGJXCAO_cjs.computeBoxplotStats(series.values);
|
|
6121
6122
|
if (!stats) {
|
|
6122
6123
|
return [];
|
|
6123
6124
|
}
|
|
6124
6125
|
const geometry = createBoxplotGeometry(context, layout, seriesIndex, stats);
|
|
6125
|
-
const color = series.color ??
|
|
6126
|
+
const color = series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length];
|
|
6126
6127
|
const mark = {
|
|
6127
6128
|
id: `${context.chart.id}-${series.id}`,
|
|
6128
6129
|
series,
|
|
@@ -6184,21 +6185,21 @@ function metricComponent(chart, point) {
|
|
|
6184
6185
|
}
|
|
6185
6186
|
function customPointPosition(context, value) {
|
|
6186
6187
|
return {
|
|
6187
|
-
x: context.plot.x +
|
|
6188
|
-
y: context.plot.y + context.plot.height -
|
|
6188
|
+
x: context.plot.x + chunkSKGJXCAO_cjs.mapChartValue(value[0], context.chart.axisX, context.plot.width),
|
|
6189
|
+
y: context.plot.y + context.plot.height - chunkSKGJXCAO_cjs.mapChartValue(value[1], context.chart.axisY, context.plot.height)
|
|
6189
6190
|
};
|
|
6190
6191
|
}
|
|
6191
6192
|
function customSeriesStyle(context, series, seriesIndex) {
|
|
6192
|
-
const color = series.color ??
|
|
6193
|
+
const color = series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length];
|
|
6193
6194
|
return {
|
|
6194
|
-
fill:
|
|
6195
|
+
fill: chunkSKGJXCAO_cjs.paint(color, context.diagnostics, context.chart.id),
|
|
6195
6196
|
stroke: series.stroke ? { kind: "solid", color: series.stroke } : void 0,
|
|
6196
|
-
strokeWidth: series.stroke ?
|
|
6197
|
+
strokeWidth: series.stroke ? chunkSKGJXCAO_cjs.finite(series.strokeWidth, 1) : void 0
|
|
6197
6198
|
};
|
|
6198
6199
|
}
|
|
6199
6200
|
function createCustomSymbolMark(context, mark) {
|
|
6200
6201
|
const symbol = mark.series.symbol;
|
|
6201
|
-
const size =
|
|
6202
|
+
const size = chunkSKGJXCAO_cjs.finite(mark.series.size, 3);
|
|
6202
6203
|
const scale = symbol?.normalized ? size * 2 : 1;
|
|
6203
6204
|
const offset = symbol?.normalized ? 0.5 : 0;
|
|
6204
6205
|
const points = (symbol?.points ?? []).map(([x, y]) => ({
|
|
@@ -6210,12 +6211,12 @@ function createCustomSymbolMark(context, mark) {
|
|
|
6210
6211
|
id: customMarkId(context.chart, mark.series, mark.valueIndex),
|
|
6211
6212
|
order: context.nextOrder(),
|
|
6212
6213
|
bounds: context.bounds,
|
|
6213
|
-
d:
|
|
6214
|
+
d: chunkSKGJXCAO_cjs.freeformPathData({ points, tension: chunkSKGJXCAO_cjs.finite(symbol?.tension, 0), closed: true }),
|
|
6214
6215
|
style: mark.style
|
|
6215
6216
|
};
|
|
6216
6217
|
}
|
|
6217
6218
|
function createCustomPointMark(context, mark) {
|
|
6218
|
-
const radius =
|
|
6219
|
+
const radius = chunkSKGJXCAO_cjs.finite(mark.series.size, 3);
|
|
6219
6220
|
return {
|
|
6220
6221
|
type: "ellipse",
|
|
6221
6222
|
id: customMarkId(context.chart, mark.series, mark.valueIndex),
|
|
@@ -6239,7 +6240,7 @@ function renderConnectedPairs(context) {
|
|
|
6239
6240
|
const zones = chart.config?.zones ?? [];
|
|
6240
6241
|
const betterColor = zones[0]?.color ?? "#10b981";
|
|
6241
6242
|
const worseColor = zones[1]?.color ?? "#ec4899";
|
|
6242
|
-
const tieColor = zones[2]?.color ??
|
|
6243
|
+
const tieColor = zones[2]?.color ?? chunkSKGJXCAO_cjs.DEFAULT_ZONE_FILL;
|
|
6243
6244
|
const reverse = Boolean(chart.config?.reverseComparison);
|
|
6244
6245
|
const count = Math.min(beforeValues.length, afterValues.length);
|
|
6245
6246
|
const categories = chart.config?.categories ?? [];
|
|
@@ -6254,7 +6255,7 @@ function renderConnectedPairs(context) {
|
|
|
6254
6255
|
const better = reverse ? afterMetric < beforeMetric : afterMetric > beforeMetric;
|
|
6255
6256
|
const worse = reverse ? afterMetric > beforeMetric : afterMetric < beforeMetric;
|
|
6256
6257
|
const comparisonColor = better ? betterColor : worse ? worseColor : tieColor;
|
|
6257
|
-
const radius =
|
|
6258
|
+
const radius = chunkSKGJXCAO_cjs.finite(afterSeries.size, 3);
|
|
6258
6259
|
nodes.push(createConnectorLine(context, index, beforePoint, afterPoint, comparisonColor));
|
|
6259
6260
|
nodes.push(
|
|
6260
6261
|
createCustomPointMark(context, {
|
|
@@ -6262,9 +6263,9 @@ function renderConnectedPairs(context) {
|
|
|
6262
6263
|
valueIndex: index,
|
|
6263
6264
|
point: beforePoint,
|
|
6264
6265
|
style: {
|
|
6265
|
-
fill:
|
|
6266
|
+
fill: chunkSKGJXCAO_cjs.paint(chart.config?.customBeforeFill ?? chart.gridColor ?? "#e2e8f0", context.diagnostics, chart.id),
|
|
6266
6267
|
stroke: { kind: "solid", color: chart.config?.customBeforeStroke ?? HOLLOW_POINT_STROKE },
|
|
6267
|
-
strokeWidth:
|
|
6268
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(chart.config?.customBeforeStrokeWidth, 1.5)
|
|
6268
6269
|
}
|
|
6269
6270
|
})
|
|
6270
6271
|
);
|
|
@@ -6274,7 +6275,7 @@ function renderConnectedPairs(context) {
|
|
|
6274
6275
|
valueIndex: index,
|
|
6275
6276
|
point: afterPoint,
|
|
6276
6277
|
style: {
|
|
6277
|
-
fill:
|
|
6278
|
+
fill: chunkSKGJXCAO_cjs.paint(comparisonColor, context.diagnostics, chart.id),
|
|
6278
6279
|
stroke: void 0,
|
|
6279
6280
|
strokeWidth: void 0
|
|
6280
6281
|
}
|
|
@@ -6301,7 +6302,7 @@ function createConnectorLine(context, index, from, to, color) {
|
|
|
6301
6302
|
style: {
|
|
6302
6303
|
fill: { kind: "none" },
|
|
6303
6304
|
stroke: { kind: "solid", color },
|
|
6304
|
-
strokeWidth:
|
|
6305
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(chart.config?.customConnectorWidth, 2),
|
|
6305
6306
|
opacity: chart.config?.customConnectorOpacity,
|
|
6306
6307
|
dash: connectorDash(chart.config?.customConnectorDash)
|
|
6307
6308
|
}
|
|
@@ -6322,7 +6323,7 @@ function createConnectorLabel(context, index, beforePoint, afterPoint, radius, t
|
|
|
6322
6323
|
height: 16
|
|
6323
6324
|
};
|
|
6324
6325
|
return {
|
|
6325
|
-
...
|
|
6326
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
6326
6327
|
id: `chart-custom-label-${chart.id}-${index}`,
|
|
6327
6328
|
order: nextOrder(),
|
|
6328
6329
|
bounds,
|
|
@@ -6331,7 +6332,7 @@ function createConnectorLabel(context, index, beforePoint, afterPoint, radius, t
|
|
|
6331
6332
|
chart,
|
|
6332
6333
|
align: horizontal ? "left" : "center"
|
|
6333
6334
|
}),
|
|
6334
|
-
fontSize: Math.max(6,
|
|
6335
|
+
fontSize: Math.max(6, chunkSKGJXCAO_cjs.finite(chart.config?.customLabelSize, Math.max(9, chunkSKGJXCAO_cjs.finite(chart.fontSize, 12)) - 2)),
|
|
6335
6336
|
...chart.config?.customLabelColor ? { color: chart.config.customLabelColor } : {}
|
|
6336
6337
|
};
|
|
6337
6338
|
}
|
|
@@ -6343,8 +6344,8 @@ function classifyFieldData(context) {
|
|
|
6343
6344
|
const vectorSeries = chart.series.filter((series) => tupleSize(series.values[0]) === 4);
|
|
6344
6345
|
const scalarSamples = scalarSeries.flatMap(
|
|
6345
6346
|
(series) => series.values.map(([x, y, value]) => ({
|
|
6346
|
-
x:
|
|
6347
|
-
y: plot.height -
|
|
6347
|
+
x: chunkSKGJXCAO_cjs.mapChartValue(x, chart.axisX, plot.width),
|
|
6348
|
+
y: plot.height - chunkSKGJXCAO_cjs.mapChartValue(y, chart.axisY, plot.height),
|
|
6348
6349
|
value
|
|
6349
6350
|
}))
|
|
6350
6351
|
);
|
|
@@ -6408,20 +6409,20 @@ function createLegendLabels(context, minimum, maximum, geometry) {
|
|
|
6408
6409
|
const { chart, bounds, nextOrder } = context;
|
|
6409
6410
|
const y = geometry.y + geometry.height + 3;
|
|
6410
6411
|
return [
|
|
6411
|
-
|
|
6412
|
+
chunkSKGJXCAO_cjs.chartText({
|
|
6412
6413
|
id: `chart-field-colorbar-min-${chart.id}`,
|
|
6413
6414
|
order: nextOrder(),
|
|
6414
6415
|
bounds,
|
|
6415
6416
|
frame: { x: geometry.x, y, width: 80, height: 16 },
|
|
6416
|
-
text:
|
|
6417
|
+
text: chunkSKGJXCAO_cjs.formatFieldValue(minimum),
|
|
6417
6418
|
chart
|
|
6418
6419
|
}),
|
|
6419
|
-
|
|
6420
|
+
chunkSKGJXCAO_cjs.chartText({
|
|
6420
6421
|
id: `chart-field-colorbar-max-${chart.id}`,
|
|
6421
6422
|
order: nextOrder(),
|
|
6422
6423
|
bounds,
|
|
6423
6424
|
frame: { x: geometry.x + geometry.width - 80, y, width: 80, height: 16 },
|
|
6424
|
-
text:
|
|
6425
|
+
text: chunkSKGJXCAO_cjs.formatFieldValue(maximum),
|
|
6425
6426
|
chart,
|
|
6426
6427
|
align: "right"
|
|
6427
6428
|
})
|
|
@@ -6434,7 +6435,7 @@ function colorAtRamp(ramp, value) {
|
|
|
6434
6435
|
if (!ramp?.stops.length) {
|
|
6435
6436
|
return RAMP_FALLBACK_COLOR;
|
|
6436
6437
|
}
|
|
6437
|
-
return
|
|
6438
|
+
return chunkSKGJXCAO_cjs.interpolateHexColorStops(ramp.stops, value);
|
|
6438
6439
|
}
|
|
6439
6440
|
|
|
6440
6441
|
// src/renderScene/charts/field/isolines.ts
|
|
@@ -6644,7 +6645,7 @@ function createIsoline(context, grid, threshold, thresholdIndex) {
|
|
|
6644
6645
|
}
|
|
6645
6646
|
const chains = stitchIsolineSegments(segments);
|
|
6646
6647
|
const path = chains.map(
|
|
6647
|
-
(chain) =>
|
|
6648
|
+
(chain) => chunkSKGJXCAO_cjs.linePathData(
|
|
6648
6649
|
chain.map(([x, y]) => ({ x: plot.x + x, y: plot.y + y })),
|
|
6649
6650
|
ISOLINE_TENSION
|
|
6650
6651
|
)
|
|
@@ -6668,7 +6669,7 @@ function createIsoline(context, grid, threshold, thresholdIndex) {
|
|
|
6668
6669
|
function renderVectorField(context, seriesList) {
|
|
6669
6670
|
const nodes = [];
|
|
6670
6671
|
seriesList.forEach((series, seriesIndex) => {
|
|
6671
|
-
const color = series.color ??
|
|
6672
|
+
const color = series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length];
|
|
6672
6673
|
series.values.forEach((vector, vectorIndex) => {
|
|
6673
6674
|
nodes.push(createVectorNode(context, series.id, vector, vectorIndex, color));
|
|
6674
6675
|
});
|
|
@@ -6678,10 +6679,10 @@ function renderVectorField(context, seriesList) {
|
|
|
6678
6679
|
function createVectorNode(context, seriesId, vector, vectorIndex, color) {
|
|
6679
6680
|
const { chart, plot, bounds, diagnostics, nextOrder } = context;
|
|
6680
6681
|
const [x, y, angle, magnitude] = vector;
|
|
6681
|
-
const startX = plot.x +
|
|
6682
|
-
const startY = plot.y + plot.height -
|
|
6683
|
-
const endX = plot.x +
|
|
6684
|
-
const endY = plot.y + plot.height -
|
|
6682
|
+
const startX = plot.x + chunkSKGJXCAO_cjs.mapChartValue(x, chart.axisX, plot.width);
|
|
6683
|
+
const startY = plot.y + plot.height - chunkSKGJXCAO_cjs.mapChartValue(y, chart.axisY, plot.height);
|
|
6684
|
+
const endX = plot.x + chunkSKGJXCAO_cjs.mapChartValue(x + Math.cos(angle) * magnitude, chart.axisX, plot.width);
|
|
6685
|
+
const endY = plot.y + plot.height - chunkSKGJXCAO_cjs.mapChartValue(y + Math.sin(angle) * magnitude, chart.axisY, plot.height);
|
|
6685
6686
|
return {
|
|
6686
6687
|
type: "path",
|
|
6687
6688
|
id: `chart-field-vector-${chart.id}-${seriesId}-${vectorIndex}`,
|
|
@@ -6691,7 +6692,7 @@ function createVectorNode(context, seriesId, vector, vectorIndex, color) {
|
|
|
6691
6692
|
markerEnd: "filled_arrow",
|
|
6692
6693
|
style: {
|
|
6693
6694
|
fill: { kind: "none" },
|
|
6694
|
-
stroke:
|
|
6695
|
+
stroke: chunkSKGJXCAO_cjs.paint(color, diagnostics, chart.id),
|
|
6695
6696
|
strokeWidth: 2
|
|
6696
6697
|
}
|
|
6697
6698
|
};
|
|
@@ -6738,7 +6739,7 @@ function createHeatmapCell(layout, series, rowIndex, columnIndex) {
|
|
|
6738
6739
|
};
|
|
6739
6740
|
}
|
|
6740
6741
|
function colorForValue(value, layout) {
|
|
6741
|
-
return
|
|
6742
|
+
return chunkSKGJXCAO_cjs.zoneColorAtValue(value, layout.bands, layout.zones);
|
|
6742
6743
|
}
|
|
6743
6744
|
function renderHeatmapCell(context, layout, cell) {
|
|
6744
6745
|
const background = createCellBackground(context, layout, cell);
|
|
@@ -6753,7 +6754,7 @@ function createCellBackground(context, layout, cell) {
|
|
|
6753
6754
|
const style = {
|
|
6754
6755
|
fill: { kind: "solid", color: cell.color },
|
|
6755
6756
|
stroke: { kind: "solid", color: chart.config?.cellStrokeColor ?? chart.gridColor ?? "#e2e8f0" },
|
|
6756
|
-
strokeWidth:
|
|
6757
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(chart.config?.cellStrokeWidth, chunkSKGJXCAO_cjs.finite(chart.gridWidth, 1))
|
|
6757
6758
|
};
|
|
6758
6759
|
if (chart.config?.cellShape === "circle") {
|
|
6759
6760
|
return {
|
|
@@ -6780,9 +6781,9 @@ function createCellBackground(context, layout, cell) {
|
|
|
6780
6781
|
}
|
|
6781
6782
|
function createCellValueLabel(context, layout, cell) {
|
|
6782
6783
|
const { chart, bounds, nextOrder } = context;
|
|
6783
|
-
const size = Math.max(6,
|
|
6784
|
+
const size = Math.max(6, chunkSKGJXCAO_cjs.finite(chart.config?.cellValueSize, layout.fontSize));
|
|
6784
6785
|
return {
|
|
6785
|
-
...
|
|
6786
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
6786
6787
|
id: `chart-heatmap-value-${chart.id}-${cell.seriesId}-${cell.columnIndex}`,
|
|
6787
6788
|
order: nextOrder(),
|
|
6788
6789
|
bounds,
|
|
@@ -6797,7 +6798,7 @@ function createCellValueLabel(context, layout, cell) {
|
|
|
6797
6798
|
align: "center"
|
|
6798
6799
|
}),
|
|
6799
6800
|
...chart.config?.cellValueSize === void 0 ? {} : { fontSize: size },
|
|
6800
|
-
color: chart.config?.cellValueColor ??
|
|
6801
|
+
color: chart.config?.cellValueColor ?? chunkSKGJXCAO_cjs.contrastTextColor(cell.color)
|
|
6801
6802
|
};
|
|
6802
6803
|
}
|
|
6803
6804
|
|
|
@@ -6810,9 +6811,9 @@ function createHeatmapLayout(context) {
|
|
|
6810
6811
|
return {
|
|
6811
6812
|
rows: chart.series,
|
|
6812
6813
|
columns,
|
|
6813
|
-
bands:
|
|
6814
|
-
zones: chart.config?.zones?.length ? chart.config.zones :
|
|
6815
|
-
fontSize: Math.max(9,
|
|
6814
|
+
bands: chunkSKGJXCAO_cjs.axisBands(chart.axisY),
|
|
6815
|
+
zones: chart.config?.zones?.length ? chart.config.zones : chunkSKGJXCAO_cjs.DEFAULT_HEATMAP_ZONES,
|
|
6816
|
+
fontSize: Math.max(9, chunkSKGJXCAO_cjs.finite(chart.fontSize, 12)),
|
|
6816
6817
|
headerFontSize: headerFontSize(chart),
|
|
6817
6818
|
legendGap: legendGap(chart),
|
|
6818
6819
|
sides,
|
|
@@ -6820,10 +6821,10 @@ function createHeatmapLayout(context) {
|
|
|
6820
6821
|
grid: createHeatmapGrid(context, reservedSpace, sides, columns.length)
|
|
6821
6822
|
};
|
|
6822
6823
|
}
|
|
6823
|
-
var headerFontSize = (chart) => Math.max(9,
|
|
6824
|
-
var rowGap = (chart) => Math.min(120, Math.max(0,
|
|
6825
|
-
var columnGap = (chart) => Math.min(120, Math.max(0,
|
|
6826
|
-
var legendGap = (chart) => Math.min(80, Math.max(0,
|
|
6824
|
+
var headerFontSize = (chart) => Math.max(9, chunkSKGJXCAO_cjs.finite(chart.axisFontSize ?? chart.fontSize, 12));
|
|
6825
|
+
var rowGap = (chart) => Math.min(120, Math.max(0, chunkSKGJXCAO_cjs.finite(chart.yLabelGap, 6)));
|
|
6826
|
+
var columnGap = (chart) => Math.min(120, Math.max(0, chunkSKGJXCAO_cjs.finite(chart.xLabelGap, 4)));
|
|
6827
|
+
var legendGap = (chart) => Math.min(80, Math.max(0, chunkSKGJXCAO_cjs.finite(chart.legendGap, 6)));
|
|
6827
6828
|
function heatmapSides(context) {
|
|
6828
6829
|
const { chart } = context;
|
|
6829
6830
|
return {
|
|
@@ -6842,7 +6843,7 @@ function heatmapReservedSpace(context, sides) {
|
|
|
6842
6843
|
const { chart } = context;
|
|
6843
6844
|
const fontSize = headerFontSize(chart);
|
|
6844
6845
|
const longestLabel = chart.series.reduce(
|
|
6845
|
-
(max, series) => Math.max(max,
|
|
6846
|
+
(max, series) => Math.max(max, chunkSKGJXCAO_cjs.estimateTextWidth(series.label ?? "", fontSize, false)),
|
|
6846
6847
|
0
|
|
6847
6848
|
);
|
|
6848
6849
|
const vertical = sides.legend === "left" || sides.legend === "right";
|
|
@@ -6858,8 +6859,8 @@ function heatmapReservedSpace(context, sides) {
|
|
|
6858
6859
|
}
|
|
6859
6860
|
function columnHeaderRoom(context) {
|
|
6860
6861
|
const { chart } = context;
|
|
6861
|
-
const tilt =
|
|
6862
|
-
return tilt > 0 ? Math.min(context.plot.height * 0.4,
|
|
6862
|
+
const tilt = chunkSKGJXCAO_cjs.labelTilt(chart);
|
|
6863
|
+
return tilt > 0 ? Math.min(context.plot.height * 0.4, chunkSKGJXCAO_cjs.tiltedLabelRoom(chart, heatmapColumns(context), tilt) + columnGap(chart) + 4) : headerFontSize(chart) + 2 + columnGap(chart) + 6;
|
|
6863
6864
|
}
|
|
6864
6865
|
function createHeatmapGrid(context, reservedSpace, sides, columnCount) {
|
|
6865
6866
|
const { chart } = context;
|
|
@@ -6870,7 +6871,7 @@ function createHeatmapGrid(context, reservedSpace, sides, columnCount) {
|
|
|
6870
6871
|
const width = Math.max(1, context.plot.width - left - right);
|
|
6871
6872
|
const height = Math.max(1, context.plot.height - top - bottom);
|
|
6872
6873
|
const rowCount = chart.series.length;
|
|
6873
|
-
const cellGap = Math.max(0,
|
|
6874
|
+
const cellGap = Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.cellGap, 0));
|
|
6874
6875
|
let cellWidth = columnCount ? width / columnCount : width;
|
|
6875
6876
|
let cellHeight = rowCount ? height / rowCount : height;
|
|
6876
6877
|
let gridWidth = width;
|
|
@@ -6890,7 +6891,7 @@ function createHeatmapGrid(context, reservedSpace, sides, columnCount) {
|
|
|
6890
6891
|
cellWidth,
|
|
6891
6892
|
cellHeight,
|
|
6892
6893
|
cellGap,
|
|
6893
|
-
cellRadius: Math.max(0,
|
|
6894
|
+
cellRadius: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.barCornerRadius, cellGap))
|
|
6894
6895
|
};
|
|
6895
6896
|
}
|
|
6896
6897
|
|
|
@@ -6909,7 +6910,7 @@ function createRowHeader(context, layout, series, rowIndex) {
|
|
|
6909
6910
|
const room = layout.reservedSpace.rowHeaders;
|
|
6910
6911
|
const gap = rowGap(chart);
|
|
6911
6912
|
const x = layout.sides.rows === "left" ? layout.grid.x - room : layout.grid.x + layout.grid.width + gap;
|
|
6912
|
-
return
|
|
6913
|
+
return chunkSKGJXCAO_cjs.chartText({
|
|
6913
6914
|
id: `chart-heatmap-row-${chart.id}-${series.id}`,
|
|
6914
6915
|
order: nextOrder(),
|
|
6915
6916
|
bounds,
|
|
@@ -6935,12 +6936,12 @@ function createColumnHeader(context, layout, label, columnIndex) {
|
|
|
6935
6936
|
const { chart, bounds, nextOrder } = context;
|
|
6936
6937
|
const above = layout.sides.columns === "top";
|
|
6937
6938
|
const centerX = layout.grid.x + (columnIndex + 0.5) * layout.grid.cellWidth;
|
|
6938
|
-
const tilt =
|
|
6939
|
+
const tilt = chunkSKGJXCAO_cjs.labelTilt(chart);
|
|
6939
6940
|
const gap = columnGap(chart);
|
|
6940
6941
|
const id = `chart-heatmap-col-${chart.id}-${columnIndex}`;
|
|
6941
6942
|
if (tilt > 0) {
|
|
6942
|
-
const { frame, rotation } = above ?
|
|
6943
|
-
return
|
|
6943
|
+
const { frame, rotation } = above ? chunkSKGJXCAO_cjs.labelAboveFrame(chart, label, tilt, { x: centerX, y: layout.grid.y - gap }) : chunkSKGJXCAO_cjs.labelBelowFrame(chart, label, tilt, { x: centerX, y: layout.grid.y + layout.grid.height + gap });
|
|
6944
|
+
return chunkSKGJXCAO_cjs.chartText({
|
|
6944
6945
|
id,
|
|
6945
6946
|
order: nextOrder(),
|
|
6946
6947
|
bounds,
|
|
@@ -6952,7 +6953,7 @@ function createColumnHeader(context, layout, label, columnIndex) {
|
|
|
6952
6953
|
role: "axis"
|
|
6953
6954
|
});
|
|
6954
6955
|
}
|
|
6955
|
-
return
|
|
6956
|
+
return chunkSKGJXCAO_cjs.chartText({
|
|
6956
6957
|
id,
|
|
6957
6958
|
order: nextOrder(),
|
|
6958
6959
|
bounds,
|
|
@@ -7030,7 +7031,7 @@ function renderHeatmapLegend(context, layout) {
|
|
|
7030
7031
|
return [];
|
|
7031
7032
|
}
|
|
7032
7033
|
const place = barPlace(layout);
|
|
7033
|
-
const barBounds =
|
|
7034
|
+
const barBounds = chunkSKGJXCAO_cjs.boxBounds({ x: place.x, y: place.y, width: place.width, height: place.height });
|
|
7034
7035
|
return [createGradientBar(context, layout, place, barBounds), ...createBoundaryTicks(context, layout, place)];
|
|
7035
7036
|
}
|
|
7036
7037
|
function bandRatio(layout, value) {
|
|
@@ -7044,7 +7045,7 @@ function createGradientBar(context, layout, place, barBounds) {
|
|
|
7044
7045
|
const zones = layout.zones.slice(0, bandCount);
|
|
7045
7046
|
const stops = zones.map((zone, index) => ({
|
|
7046
7047
|
offset: bandRatio(layout, layout.bands[index + 1] ?? layout.bands[layout.bands.length - 1]) * 100,
|
|
7047
|
-
color: zone.color ??
|
|
7048
|
+
color: zone.color ?? chunkSKGJXCAO_cjs.DEFAULT_ZONE_FILL
|
|
7048
7049
|
}));
|
|
7049
7050
|
return {
|
|
7050
7051
|
type: "rect",
|
|
@@ -7059,7 +7060,7 @@ function createGradientBar(context, layout, place, barBounds) {
|
|
|
7059
7060
|
zoneGradient: { axis: "y", min: chart.axisY.min, max: chart.axisY.max },
|
|
7060
7061
|
style: {
|
|
7061
7062
|
// Across the grid it runs from the lowest value on the left; beside it from the lowest at the bottom.
|
|
7062
|
-
fill: stops.length ? { kind: "linear-gradient", angle: place.vertical ? 270 : 0, stops } : { kind: "solid", color:
|
|
7063
|
+
fill: stops.length ? { kind: "linear-gradient", angle: place.vertical ? 270 : 0, stops } : { kind: "solid", color: chunkSKGJXCAO_cjs.DEFAULT_ZONE_FILL },
|
|
7063
7064
|
stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
|
|
7064
7065
|
strokeWidth: 1
|
|
7065
7066
|
}
|
|
@@ -7085,12 +7086,12 @@ function createBoundaryTicks(context, layout, place) {
|
|
|
7085
7086
|
strokeWidth: 1
|
|
7086
7087
|
}
|
|
7087
7088
|
};
|
|
7088
|
-
const label =
|
|
7089
|
+
const label = chunkSKGJXCAO_cjs.chartText({
|
|
7089
7090
|
id: `chart-heatmap-legend-tick-label-${chart.id}-${index}`,
|
|
7090
7091
|
order: nextOrder(),
|
|
7091
7092
|
bounds,
|
|
7092
7093
|
...labelAt(place, at, index === 0, index === lastIndex, labelHeight),
|
|
7093
|
-
text:
|
|
7094
|
+
text: chunkSKGJXCAO_cjs.formatFieldValue(value),
|
|
7094
7095
|
chart
|
|
7095
7096
|
});
|
|
7096
7097
|
return [tick, label];
|
|
@@ -7457,22 +7458,22 @@ function renderHexbin(context) {
|
|
|
7457
7458
|
const { chart, plot, bounds, diagnostics, nextOrder } = context;
|
|
7458
7459
|
const nodes = [];
|
|
7459
7460
|
const config = chart.config;
|
|
7460
|
-
const hexRadius = Math.max(1, config?.hexRadius ??
|
|
7461
|
+
const hexRadius = Math.max(1, config?.hexRadius ?? chunkSKGJXCAO_cjs.DEFAULT_HEX_RADIUS);
|
|
7461
7462
|
const drawRadius = Math.max(0.5, hexRadius - Math.max(0, config?.hexGap ?? 0) * GAP_TO_RADIUS);
|
|
7462
7463
|
const strokeWidth = config?.hexStrokeWidth ?? 0;
|
|
7463
7464
|
const minOpacity = Math.min(1, Math.max(0, config?.hexMinOpacity ?? DEFAULT_MIN_OPACITY));
|
|
7464
|
-
const shadow =
|
|
7465
|
+
const shadow = chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle);
|
|
7465
7466
|
const clipPath = shadow ? `M ${plot.x} ${plot.y} H ${plot.x + plot.width} V ${plot.y + plot.height} H ${plot.x} Z` : void 0;
|
|
7466
7467
|
chart.series.forEach((series, seriesIndex) => {
|
|
7467
7468
|
const explicit = series.values.length > 0 && Array.isArray(series.values[0]);
|
|
7468
7469
|
const pairs = explicit ? series.values : series.values.map((y, i) => [chart.axisX.min + i * chart.axisX.step, y]);
|
|
7469
7470
|
const pixelPoints2 = pairs.map(([vx, vy]) => ({
|
|
7470
|
-
x:
|
|
7471
|
-
y: plot.height -
|
|
7471
|
+
x: chunkSKGJXCAO_cjs.mapChartValue(vx, chart.axisX, plot.width),
|
|
7472
|
+
y: plot.height - chunkSKGJXCAO_cjs.mapChartValue(vy, chart.axisY, plot.height)
|
|
7472
7473
|
}));
|
|
7473
7474
|
const bins = computeHexBins(pixelPoints2, hexRadius);
|
|
7474
7475
|
const maxCount = Math.max(1, ...bins.map((bin) => bin.count));
|
|
7475
|
-
const color = series.color ??
|
|
7476
|
+
const color = series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length];
|
|
7476
7477
|
const ramp = config?.scale;
|
|
7477
7478
|
bins.forEach((bin, i) => {
|
|
7478
7479
|
const share = bin.count / maxCount;
|
|
@@ -7484,8 +7485,8 @@ function renderHexbin(context) {
|
|
|
7484
7485
|
bounds,
|
|
7485
7486
|
d: hexPath(plot.x + bin.cx, plot.y + bin.cy, drawRadius),
|
|
7486
7487
|
style: {
|
|
7487
|
-
fill:
|
|
7488
|
-
stroke: strokeWidth > 0 ?
|
|
7488
|
+
fill: chunkSKGJXCAO_cjs.paint(fill2, diagnostics, chart.id),
|
|
7489
|
+
stroke: strokeWidth > 0 ? chunkSKGJXCAO_cjs.paint(config?.hexStrokeColor ?? fill2, diagnostics, chart.id) : void 0,
|
|
7489
7490
|
strokeWidth: strokeWidth > 0 ? strokeWidth : void 0,
|
|
7490
7491
|
opacity: ramp ? void 0 : Math.max(minOpacity, share),
|
|
7491
7492
|
shadow,
|
|
@@ -7507,8 +7508,8 @@ function seriesValuePairs(chart, series) {
|
|
|
7507
7508
|
function pixelPoints(context, pairs) {
|
|
7508
7509
|
const { chart, plot } = context;
|
|
7509
7510
|
return pairs.map(([x, y]) => ({
|
|
7510
|
-
x: plot.x +
|
|
7511
|
-
y: plot.y + plot.height -
|
|
7511
|
+
x: plot.x + chunkSKGJXCAO_cjs.mapChartValue(x, chart.axisX, plot.width),
|
|
7512
|
+
y: plot.y + plot.height - chunkSKGJXCAO_cjs.mapChartValue(y, chart.axisY, plot.height)
|
|
7512
7513
|
}));
|
|
7513
7514
|
}
|
|
7514
7515
|
|
|
@@ -7518,7 +7519,7 @@ function createLineAreaFill(context, series, points, color, tension, areaOpacity
|
|
|
7518
7519
|
const baselineY = plot.y + plot.height;
|
|
7519
7520
|
const first = points[0];
|
|
7520
7521
|
const last = points[points.length - 1];
|
|
7521
|
-
const d = `${
|
|
7522
|
+
const d = `${chunkSKGJXCAO_cjs.linePathData(points, tension)} L ${last.x} ${baselineY} L ${first.x} ${baselineY} Z`;
|
|
7522
7523
|
const top = Math.min(...points.map((point) => point.y));
|
|
7523
7524
|
const centerX = (Math.min(...points.map((point) => point.x)) + Math.max(...points.map((point) => point.x))) / 2;
|
|
7524
7525
|
const halfHeight = (baselineY - top) / 2;
|
|
@@ -7540,8 +7541,8 @@ function createLineAreaFill(context, series, points, color, tension, areaOpacity
|
|
|
7540
7541
|
kind: "linear-gradient",
|
|
7541
7542
|
angle: 90,
|
|
7542
7543
|
stops: [
|
|
7543
|
-
{ offset: 0, color:
|
|
7544
|
-
{ offset: 100, color:
|
|
7544
|
+
{ offset: 0, color: chunkSKGJXCAO_cjs.colorWithAlpha(color, areaOpacity) },
|
|
7545
|
+
{ offset: 100, color: chunkSKGJXCAO_cjs.colorWithAlpha(color, 0) }
|
|
7545
7546
|
]
|
|
7546
7547
|
},
|
|
7547
7548
|
stroke: { kind: "none" },
|
|
@@ -7564,7 +7565,7 @@ function guideNode(context, mark) {
|
|
|
7564
7565
|
d: `M ${mark.point.x} ${mark.point.y} V ${plot.y + plot.height}`,
|
|
7565
7566
|
style: {
|
|
7566
7567
|
fill: { kind: "none" },
|
|
7567
|
-
stroke:
|
|
7568
|
+
stroke: chunkSKGJXCAO_cjs.paint(mark.color, diagnostics, chart.id),
|
|
7568
7569
|
strokeWidth: 1,
|
|
7569
7570
|
dash: [3, 4],
|
|
7570
7571
|
opacity: 0.55,
|
|
@@ -7585,7 +7586,7 @@ function dotNode(context, mark) {
|
|
|
7585
7586
|
rx: mark.radius,
|
|
7586
7587
|
ry: mark.radius,
|
|
7587
7588
|
style: {
|
|
7588
|
-
fill:
|
|
7589
|
+
fill: chunkSKGJXCAO_cjs.paint(mark.color, diagnostics, chart.id),
|
|
7589
7590
|
shadow: glow ? { color: mark.color, opacity: 0.9, blur: glow, dx: 0, dy: 0 } : void 0,
|
|
7590
7591
|
pointerEvents: "none"
|
|
7591
7592
|
}
|
|
@@ -7598,7 +7599,7 @@ function labelNode3(context, mark, value) {
|
|
|
7598
7599
|
const text = formatHighlight(config?.highlightLabelFormat, config?.categories?.[mark.index] ?? "", value);
|
|
7599
7600
|
const width = Math.max(48, text.length * fontSize * 0.62);
|
|
7600
7601
|
return {
|
|
7601
|
-
...
|
|
7602
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
7602
7603
|
id: `chart-highlight-label-${mark.key}`,
|
|
7603
7604
|
order: nextOrder(),
|
|
7604
7605
|
bounds,
|
|
@@ -7678,15 +7679,15 @@ function createLineError(context, mark) {
|
|
|
7678
7679
|
return null;
|
|
7679
7680
|
}
|
|
7680
7681
|
const { chart, plot, bounds, nextOrder } = context;
|
|
7681
|
-
const [lower, upper] =
|
|
7682
|
-
return
|
|
7682
|
+
const [lower, upper] = chunkSKGJXCAO_cjs.errorBarRange(mark.value, mark.error);
|
|
7683
|
+
return chunkSKGJXCAO_cjs.createVerticalErrorWhiskerNode({
|
|
7683
7684
|
id: `chart-line-error-${chart.id}-${mark.seriesId}-${mark.valueIndex}`,
|
|
7684
7685
|
order: nextOrder(),
|
|
7685
7686
|
bounds,
|
|
7686
7687
|
geometry: {
|
|
7687
7688
|
centerX: mark.position.x,
|
|
7688
|
-
startY: plot.y + plot.height -
|
|
7689
|
-
endY: plot.y + plot.height -
|
|
7689
|
+
startY: plot.y + plot.height - chunkSKGJXCAO_cjs.mapChartValue(lower, chart.axisY, plot.height),
|
|
7690
|
+
endY: plot.y + plot.height - chunkSKGJXCAO_cjs.mapChartValue(upper, chart.axisY, plot.height)
|
|
7690
7691
|
},
|
|
7691
7692
|
color: mark.color,
|
|
7692
7693
|
valueReference: { seriesId: mark.seriesId, valueIndex: mark.valueIndex }
|
|
@@ -7710,8 +7711,8 @@ function createLinePoint(context, mark) {
|
|
|
7710
7711
|
ry: visible ? radius : 6,
|
|
7711
7712
|
detail: { of: "chartValue", series: mark.seriesId, valueIndex: mark.valueIndex },
|
|
7712
7713
|
style: {
|
|
7713
|
-
fill: visible ?
|
|
7714
|
-
stroke: visible && strokeWidth > 0 ?
|
|
7714
|
+
fill: visible ? chunkSKGJXCAO_cjs.paint(fill2, diagnostics, chart.id) : { kind: "none" },
|
|
7715
|
+
stroke: visible && strokeWidth > 0 ? chunkSKGJXCAO_cjs.paint(mark.color, diagnostics, chart.id) : void 0,
|
|
7715
7716
|
strokeWidth: visible && strokeWidth > 0 ? strokeWidth : void 0,
|
|
7716
7717
|
pointerEvents: visible ? void 0 : "all"
|
|
7717
7718
|
}
|
|
@@ -7731,22 +7732,22 @@ function createLinePath(context, series, points, color, tension) {
|
|
|
7731
7732
|
order: nextOrder(),
|
|
7732
7733
|
bounds: gradient ? { minX: plot.x, maxX: plot.x + plot.width, minY: plot.y, maxY: plot.y + plot.height } : bounds,
|
|
7733
7734
|
detail: { of: "chartSeries", series: series.id, lineTension: tension || void 0 },
|
|
7734
|
-
d:
|
|
7735
|
+
d: chunkSKGJXCAO_cjs.linePathData(points, tension),
|
|
7735
7736
|
style: {
|
|
7736
7737
|
fill: { kind: "none" },
|
|
7737
|
-
stroke:
|
|
7738
|
+
stroke: chunkSKGJXCAO_cjs.paint(gradient ?? color, diagnostics, chart.id),
|
|
7738
7739
|
strokeWidth: series.strokeWidth ?? config?.lineWidth ?? 2,
|
|
7739
7740
|
dash: series.dash,
|
|
7740
7741
|
lineCap: config?.lineWidth === void 0 ? void 0 : "round",
|
|
7741
7742
|
lineJoin: "round",
|
|
7742
|
-
shadow: glow ? { color, opacity: 0.9, blur: glow, dx: 0, dy: 0 } :
|
|
7743
|
+
shadow: glow ? { color, opacity: 0.9, blur: glow, dx: 0, dy: 0 } : chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle)
|
|
7743
7744
|
}
|
|
7744
7745
|
};
|
|
7745
7746
|
}
|
|
7746
7747
|
|
|
7747
7748
|
// src/renderScene/charts/renderers/line/series.ts
|
|
7748
7749
|
function seriesColor(series, seriesIndex) {
|
|
7749
|
-
return
|
|
7750
|
+
return chunkSKGJXCAO_cjs.representativeColor(series.color, chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length]);
|
|
7750
7751
|
}
|
|
7751
7752
|
function renderLineSeriesArea(context, series, seriesIndex) {
|
|
7752
7753
|
const areaOpacity = context.chart.config?.areaOpacity;
|
|
@@ -7810,7 +7811,7 @@ function renderGridLines(context, layout) {
|
|
|
7810
7811
|
style: {
|
|
7811
7812
|
fill: { kind: "none" },
|
|
7812
7813
|
stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
|
|
7813
|
-
strokeWidth:
|
|
7814
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(chart.gridWidth, 1)
|
|
7814
7815
|
}
|
|
7815
7816
|
};
|
|
7816
7817
|
});
|
|
@@ -7818,7 +7819,7 @@ function renderGridLines(context, layout) {
|
|
|
7818
7819
|
function renderPercentageLabels(context, layout) {
|
|
7819
7820
|
const { chart, plot, bounds, nextOrder } = context;
|
|
7820
7821
|
return PERCENT_TICKS.map((percent) => ({
|
|
7821
|
-
...
|
|
7822
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
7822
7823
|
id: `chart-mekko-pct-${chart.id}-${percent}`,
|
|
7823
7824
|
order: nextOrder(),
|
|
7824
7825
|
bounds,
|
|
@@ -7850,7 +7851,7 @@ function renderMekkoColumnLabels(context, layout, columnIndex, column) {
|
|
|
7850
7851
|
function createTotalLabel(context, layout, columnIndex, column) {
|
|
7851
7852
|
const { chart, plot, bounds, nextOrder } = context;
|
|
7852
7853
|
return {
|
|
7853
|
-
...
|
|
7854
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
7854
7855
|
id: `chart-mekko-total-${chart.id}-${columnIndex}`,
|
|
7855
7856
|
order: nextOrder(),
|
|
7856
7857
|
bounds,
|
|
@@ -7871,7 +7872,7 @@ function createColumnLabel(context, layout, columnIndex, column) {
|
|
|
7871
7872
|
const { chart, bounds, nextOrder } = context;
|
|
7872
7873
|
const { label, width } = column;
|
|
7873
7874
|
return {
|
|
7874
|
-
...
|
|
7875
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
7875
7876
|
id: `chart-mekko-col-label-${chart.id}-${columnIndex}`,
|
|
7876
7877
|
order: nextOrder(),
|
|
7877
7878
|
bounds,
|
|
@@ -7885,7 +7886,7 @@ function createColumnLabel(context, layout, columnIndex, column) {
|
|
|
7885
7886
|
chart,
|
|
7886
7887
|
align: "center"
|
|
7887
7888
|
}),
|
|
7888
|
-
lines:
|
|
7889
|
+
lines: chunkSKGJXCAO_cjs.wrapText(label, width, layout.smallFontSize),
|
|
7889
7890
|
fontSize: layout.smallFontSize
|
|
7890
7891
|
};
|
|
7891
7892
|
}
|
|
@@ -7895,8 +7896,8 @@ function createMekkoLayout(context) {
|
|
|
7895
7896
|
const labels = mekkoColumnLabels(context);
|
|
7896
7897
|
const labelGutterWidth = context.showLabels ? 30 : 0;
|
|
7897
7898
|
const grid = createMekkoGrid(context, labelGutterWidth);
|
|
7898
|
-
const fontSize = Math.max(9,
|
|
7899
|
-
const columnGap2 = Math.max(0,
|
|
7899
|
+
const fontSize = Math.max(9, chunkSKGJXCAO_cjs.finite(context.chart.fontSize, 12));
|
|
7900
|
+
const columnGap2 = Math.max(0, chunkSKGJXCAO_cjs.finite(context.chart.config?.mekkoColumnGap, 4));
|
|
7900
7901
|
const smallFontSize = Math.max(8, fontSize - 1);
|
|
7901
7902
|
return {
|
|
7902
7903
|
columns: createMekkoColumns(context, grid, labels, columnGap2),
|
|
@@ -7904,8 +7905,8 @@ function createMekkoLayout(context) {
|
|
|
7904
7905
|
smallFontSize,
|
|
7905
7906
|
labelGutterWidth,
|
|
7906
7907
|
columnGap: columnGap2,
|
|
7907
|
-
labelSize: Math.max(6,
|
|
7908
|
-
valueSize: Math.max(6,
|
|
7908
|
+
labelSize: Math.max(6, chunkSKGJXCAO_cjs.finite(context.chart.config?.mekkoLabelSize, smallFontSize)),
|
|
7909
|
+
valueSize: Math.max(6, chunkSKGJXCAO_cjs.finite(context.chart.config?.mekkoValueSize, smallFontSize)),
|
|
7909
7910
|
grid
|
|
7910
7911
|
};
|
|
7911
7912
|
}
|
|
@@ -7962,12 +7963,12 @@ function createColumnBackdrop(context, layout, columnIndex) {
|
|
|
7962
7963
|
id: `chart-mekko-column-backdrop-${chart.id}-${columnIndex}`,
|
|
7963
7964
|
order: nextOrder(),
|
|
7964
7965
|
bounds,
|
|
7965
|
-
d:
|
|
7966
|
-
style: { fill:
|
|
7966
|
+
d: chunkSKGJXCAO_cjs.barShapePath(column.x, layout.grid.y, column.width, layout.grid.height, cornerRadius),
|
|
7967
|
+
style: { fill: chunkSKGJXCAO_cjs.paint(chart.gridColor ?? "#e2e8f0", diagnostics, chart.id), opacity: BACKDROP_OPACITY }
|
|
7967
7968
|
};
|
|
7968
7969
|
}
|
|
7969
7970
|
function mekkoCornerRadius(context) {
|
|
7970
|
-
return Math.max(0,
|
|
7971
|
+
return Math.max(0, chunkSKGJXCAO_cjs.finite(context.chart.config?.barCornerRadius, 2));
|
|
7971
7972
|
}
|
|
7972
7973
|
function calculateColumnSegments(seriesList, layout, columnIndex) {
|
|
7973
7974
|
const segments = [];
|
|
@@ -7978,7 +7979,7 @@ function calculateColumnSegments(seriesList, layout, columnIndex) {
|
|
|
7978
7979
|
const height = (column.total > 0 ? value / column.total : 0) * column.height;
|
|
7979
7980
|
const y = column.y + cumulativeHeight;
|
|
7980
7981
|
cumulativeHeight += height;
|
|
7981
|
-
const color = series.color ??
|
|
7982
|
+
const color = series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length];
|
|
7982
7983
|
segments.push({
|
|
7983
7984
|
columnIndex,
|
|
7984
7985
|
seriesId: series.id,
|
|
@@ -8001,12 +8002,12 @@ function renderSegment(context, layout, segment, nextColor) {
|
|
|
8001
8002
|
}
|
|
8002
8003
|
function createSegmentNode(context, segment, nextColor) {
|
|
8003
8004
|
const { chart, plot, bounds, diagnostics, nextOrder } = context;
|
|
8004
|
-
const shadow =
|
|
8005
|
+
const shadow = chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle);
|
|
8005
8006
|
const clipPath = shadow ? `M ${plot.x} ${plot.y} H ${plot.x + plot.width} V ${plot.y + plot.height} H ${plot.x} Z` : void 0;
|
|
8006
8007
|
const config = chart.config;
|
|
8007
8008
|
const radius = segment.isTop || config?.mekkoRoundAll ? mekkoCornerRadius(context) : 0;
|
|
8008
8009
|
const { x, y, width, height } = segment.frame;
|
|
8009
|
-
const segmentGap = Math.max(0,
|
|
8010
|
+
const segmentGap = Math.max(0, chunkSKGJXCAO_cjs.finite(config?.mekkoSegmentGap, 0));
|
|
8010
8011
|
const fallback = "#94a3b8";
|
|
8011
8012
|
const gradientBounds = {
|
|
8012
8013
|
minX: x + width / 2 - height / 2,
|
|
@@ -8018,20 +8019,20 @@ function createSegmentNode(context, segment, nextColor) {
|
|
|
8018
8019
|
kind: "linear-gradient",
|
|
8019
8020
|
angle: 90,
|
|
8020
8021
|
stops: [
|
|
8021
|
-
{ offset: 0, color:
|
|
8022
|
-
{ offset: 100, color:
|
|
8022
|
+
{ offset: 0, color: chunkSKGJXCAO_cjs.representativeColor(segment.color, fallback) },
|
|
8023
|
+
{ offset: 100, color: chunkSKGJXCAO_cjs.representativeColor(nextColor, fallback) }
|
|
8023
8024
|
]
|
|
8024
|
-
} :
|
|
8025
|
+
} : chunkSKGJXCAO_cjs.paint(segment.color, diagnostics, chart.id);
|
|
8025
8026
|
return {
|
|
8026
8027
|
type: "path",
|
|
8027
8028
|
id: `chart-mekko-seg-${chart.id}-${segment.columnIndex}-${segment.seriesId}`,
|
|
8028
8029
|
order: nextOrder(),
|
|
8029
8030
|
bounds: nextColor ? gradientBounds : bounds,
|
|
8030
|
-
d:
|
|
8031
|
+
d: chunkSKGJXCAO_cjs.barPath(x, y + segmentGap / 2, width, Math.max(0, height - segmentGap), radius, Boolean(config?.mekkoRoundAll)),
|
|
8031
8032
|
style: {
|
|
8032
8033
|
fill: fill2,
|
|
8033
8034
|
stroke: { kind: "solid", color: config?.mekkoSegmentStrokeColor ?? chart.gridColor ?? "#e2e8f0" },
|
|
8034
|
-
strokeWidth:
|
|
8035
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(config?.mekkoSegmentStrokeWidth, chunkSKGJXCAO_cjs.finite(chart.gridWidth, 1)),
|
|
8035
8036
|
shadow,
|
|
8036
8037
|
clip: clipPath ? { type: "path", d: clipPath } : void 0
|
|
8037
8038
|
}
|
|
@@ -8047,17 +8048,17 @@ function createSegmentLabel(context, layout, segment) {
|
|
|
8047
8048
|
const innerHeight = Math.max(1, height - 6);
|
|
8048
8049
|
const lineHeight = layout.labelSize * 1.2;
|
|
8049
8050
|
const valueHeight = layout.valueSize * 1.2;
|
|
8050
|
-
const labelLines =
|
|
8051
|
-
(line) =>
|
|
8051
|
+
const labelLines = chunkSKGJXCAO_cjs.wrapText(segment.seriesLabel, innerWidth, layout.labelSize).map(
|
|
8052
|
+
(line) => chunkSKGJXCAO_cjs.ellipsizeToWidth(line, innerWidth, layout.labelSize, true)
|
|
8052
8053
|
);
|
|
8053
8054
|
if (labelLines.length * lineHeight + valueHeight > innerHeight) {
|
|
8054
8055
|
return [];
|
|
8055
8056
|
}
|
|
8056
|
-
const textColor = chart.config?.mekkoTextColor ??
|
|
8057
|
+
const textColor = chart.config?.mekkoTextColor ?? chunkSKGJXCAO_cjs.contrastTextColor(chunkSKGJXCAO_cjs.representativeColor(segment.color, "#ffffff"));
|
|
8057
8058
|
const columnTotal = layout.columns[segment.columnIndex]?.total ?? 0;
|
|
8058
8059
|
const valueText = chart.config?.mekkoValueFormat === "percent" ? `${columnTotal > 0 ? Math.round(segment.value / columnTotal * 100) : 0}%` : String(segment.value);
|
|
8059
8060
|
const label = {
|
|
8060
|
-
...
|
|
8061
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
8061
8062
|
id: `chart-mekko-seg-label-${chart.id}-${segment.columnIndex}-${segment.seriesId}`,
|
|
8062
8063
|
order: nextOrder(),
|
|
8063
8064
|
bounds,
|
|
@@ -8071,7 +8072,7 @@ function createSegmentLabel(context, layout, segment) {
|
|
|
8071
8072
|
color: textColor
|
|
8072
8073
|
};
|
|
8073
8074
|
const valueNode = {
|
|
8074
|
-
...
|
|
8075
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
8075
8076
|
id: `chart-mekko-seg-value-${chart.id}-${segment.columnIndex}-${segment.seriesId}`,
|
|
8076
8077
|
order: nextOrder(),
|
|
8077
8078
|
bounds,
|
|
@@ -8104,7 +8105,7 @@ function renderMekko(context) {
|
|
|
8104
8105
|
|
|
8105
8106
|
// src/renderScene/charts/renderers/pie/center.ts
|
|
8106
8107
|
function fill(template, chart) {
|
|
8107
|
-
const values = chart.series.map((series) => Math.max(0,
|
|
8108
|
+
const values = chart.series.map((series) => Math.max(0, chunkSKGJXCAO_cjs.finite(series.values[0], 0)));
|
|
8108
8109
|
const total = values.reduce((sum, value) => sum + value, 0);
|
|
8109
8110
|
const first = values[0] ?? 0;
|
|
8110
8111
|
return template.replace(/\{total\}/g, String(Math.round(total * 100) / 100)).replace(/\{percent\}/g, String(total > 0 ? Math.round(first / total * 100) : 0)).replace(/\{label\}/g, chart.series[0]?.label ?? "");
|
|
@@ -8116,7 +8117,7 @@ function renderPieCenter(context, geometry) {
|
|
|
8116
8117
|
return [];
|
|
8117
8118
|
}
|
|
8118
8119
|
const lines = fill(template, chart).split(/\\n|\n/);
|
|
8119
|
-
const fontSize =
|
|
8120
|
+
const fontSize = chunkSKGJXCAO_cjs.finite(chart.config?.pieCenterSize, Math.max(14, Math.min(40, geometry.outerRadius * 0.3)));
|
|
8120
8121
|
const lineHeight = fontSize * 1.2;
|
|
8121
8122
|
const width = Math.max(40, (geometry.innerRadius > 0 ? geometry.innerRadius : geometry.outerRadius * 0.6) * 2);
|
|
8122
8123
|
const text = {
|
|
@@ -8129,7 +8130,7 @@ function renderPieCenter(context, geometry) {
|
|
|
8129
8130
|
width,
|
|
8130
8131
|
height: lineHeight * lines.length,
|
|
8131
8132
|
lines,
|
|
8132
|
-
fontFamily: chart.fontFamily ??
|
|
8133
|
+
fontFamily: chart.fontFamily ?? chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
8133
8134
|
fontSize,
|
|
8134
8135
|
fontWeight: "bold",
|
|
8135
8136
|
align: "center",
|
|
@@ -8149,14 +8150,14 @@ var radians = (degrees) => degrees * Math.PI / 180;
|
|
|
8149
8150
|
function renderPieSlices(context, geometry) {
|
|
8150
8151
|
const config = context.chart.config;
|
|
8151
8152
|
const marks = createPieSliceMarks(context.chart.series, geometry.total, {
|
|
8152
|
-
start: TOP + radians(
|
|
8153
|
-
sweep: Math.min(FULL, Math.max(radians(1), radians(
|
|
8154
|
-
explode: Math.max(0,
|
|
8153
|
+
start: TOP + radians(chunkSKGJXCAO_cjs.finite(config?.pieStartAngle, 0)),
|
|
8154
|
+
sweep: Math.min(FULL, Math.max(radians(1), radians(chunkSKGJXCAO_cjs.finite(config?.pieSweep, 360)))),
|
|
8155
|
+
explode: Math.max(0, chunkSKGJXCAO_cjs.finite(config?.pieExplode, 0))
|
|
8155
8156
|
});
|
|
8156
8157
|
const gapPx = config?.pieSliceGap ?? 0;
|
|
8157
8158
|
return [
|
|
8158
8159
|
...marks.flatMap((mark) => createSliceNodes(context, shiftGeometry(geometry, mark), mark, gapPx)),
|
|
8159
|
-
...
|
|
8160
|
+
...chunkSKGJXCAO_cjs.renderPieLabels(
|
|
8160
8161
|
context,
|
|
8161
8162
|
geometry,
|
|
8162
8163
|
marks.map((mark) => ({
|
|
@@ -8188,20 +8189,20 @@ function createPieSliceMarks(seriesList, total, layout) {
|
|
|
8188
8189
|
const marks = [];
|
|
8189
8190
|
let angle = layout.start;
|
|
8190
8191
|
seriesList.forEach((series, seriesIndex) => {
|
|
8191
|
-
const value = Math.max(0,
|
|
8192
|
+
const value = Math.max(0, chunkSKGJXCAO_cjs.finite(series.values[0], 0));
|
|
8192
8193
|
const sweep = value / total * layout.sweep;
|
|
8193
8194
|
marks.push({
|
|
8194
8195
|
seriesId: series.id,
|
|
8195
8196
|
label: series.label,
|
|
8196
|
-
color: series.color ??
|
|
8197
|
+
color: series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length],
|
|
8197
8198
|
stroke: series.stroke,
|
|
8198
8199
|
strokeWidth: series.strokeWidth,
|
|
8199
8200
|
value,
|
|
8200
8201
|
share: value / total,
|
|
8201
8202
|
angles: { start: angle, end: angle + Math.min(sweep, layout.sweep >= FULL ? MAXIMUM_SWEEP : layout.sweep) },
|
|
8202
|
-
explode: Math.max(0,
|
|
8203
|
-
labelOffsetX:
|
|
8204
|
-
labelOffsetY:
|
|
8203
|
+
explode: Math.max(0, chunkSKGJXCAO_cjs.finite(series.offset, layout.explode)),
|
|
8204
|
+
labelOffsetX: chunkSKGJXCAO_cjs.finite(series.labelOffsetX, 0),
|
|
8205
|
+
labelOffsetY: chunkSKGJXCAO_cjs.finite(series.labelOffsetY, 0)
|
|
8205
8206
|
});
|
|
8206
8207
|
angle += sweep;
|
|
8207
8208
|
});
|
|
@@ -8224,14 +8225,14 @@ function pieOuterShadow(shadow, gapPx) {
|
|
|
8224
8225
|
function sliceCornerRadius(geometry, mark, gapPx) {
|
|
8225
8226
|
const halfGap = Math.max(0, gapPx) / 2;
|
|
8226
8227
|
const rawSweep = mark.angles.end - mark.angles.start;
|
|
8227
|
-
const usesInnerArc =
|
|
8228
|
-
const gapSweep = 2 *
|
|
8228
|
+
const usesInnerArc = chunkSKGJXCAO_cjs.pieUsesInnerArc(geometry, mark.angles, gapPx);
|
|
8229
|
+
const gapSweep = 2 * chunkSKGJXCAO_cjs.gapInsetAngle(halfGap, geometry.outerRadius);
|
|
8229
8230
|
const availableSweep = Math.max(0, rawSweep - gapSweep);
|
|
8230
8231
|
return Math.min(
|
|
8231
8232
|
geometry.cornerRadius,
|
|
8232
|
-
usesInnerArc ?
|
|
8233
|
+
usesInnerArc ? chunkSKGJXCAO_cjs.maxPieCornerRadius(geometry.outerRadius, geometry.innerRadius, availableSweep) : chunkSKGJXCAO_cjs.maxApexCornerRadius(
|
|
8233
8234
|
geometry.outerRadius,
|
|
8234
|
-
|
|
8235
|
+
chunkSKGJXCAO_cjs.pieApexRadius(halfGap, rawSweep, geometry.outerRadius),
|
|
8235
8236
|
availableSweep
|
|
8236
8237
|
)
|
|
8237
8238
|
);
|
|
@@ -8244,14 +8245,14 @@ function sliceStroke(context, mark) {
|
|
|
8244
8245
|
}
|
|
8245
8246
|
return {
|
|
8246
8247
|
stroke: { kind: "solid", color: strokeColor },
|
|
8247
|
-
strokeWidth:
|
|
8248
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(mark.strokeWidth, chunkSKGJXCAO_cjs.finite(config?.pieStrokeWidth, 1))
|
|
8248
8249
|
};
|
|
8249
8250
|
}
|
|
8250
8251
|
function createSliceNodes(context, geometry, mark, gapPx) {
|
|
8251
8252
|
const { chart, bounds, diagnostics, nextOrder } = context;
|
|
8252
|
-
const fill2 =
|
|
8253
|
-
const slicePath =
|
|
8254
|
-
const shadow =
|
|
8253
|
+
const fill2 = chunkSKGJXCAO_cjs.paint(mark.color, diagnostics, chart.id);
|
|
8254
|
+
const slicePath = chunkSKGJXCAO_cjs.createPieSlicePath(geometry, mark.angles, sliceCornerRadius(geometry, mark, gapPx), gapPx);
|
|
8255
|
+
const shadow = chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle);
|
|
8255
8256
|
const strokeStyle = sliceStroke(context, mark);
|
|
8256
8257
|
const glow = chart.config?.pieGlow;
|
|
8257
8258
|
const shadowCaster = shadow ? {
|
|
@@ -8282,12 +8283,12 @@ function createSliceNodes(context, geometry, mark, gapPx) {
|
|
|
8282
8283
|
pieEnd: mark.angles.end,
|
|
8283
8284
|
pieValue: mark.value
|
|
8284
8285
|
},
|
|
8285
|
-
prop:
|
|
8286
|
+
prop: chunkSKGJXCAO_cjs.seriesValueProp(mark.seriesId, 0),
|
|
8286
8287
|
style: {
|
|
8287
8288
|
fill: fill2,
|
|
8288
8289
|
...strokeStyle,
|
|
8289
8290
|
innerShadow: shadow,
|
|
8290
|
-
shadow: glow ? { color:
|
|
8291
|
+
shadow: glow ? { color: chunkSKGJXCAO_cjs.representativeColor(mark.color, "#ffffff"), opacity: 0.85, blur: glow, dx: 0, dy: 0 } : void 0
|
|
8291
8292
|
}
|
|
8292
8293
|
};
|
|
8293
8294
|
return shadowCaster ? [shadowCaster, slice] : [slice];
|
|
@@ -8295,7 +8296,7 @@ function createSliceNodes(context, geometry, mark, gapPx) {
|
|
|
8295
8296
|
|
|
8296
8297
|
// src/renderScene/charts/renderers/pie.ts
|
|
8297
8298
|
function renderPie(context) {
|
|
8298
|
-
const geometry =
|
|
8299
|
+
const geometry = chunkSKGJXCAO_cjs.createPieGeometry(context);
|
|
8299
8300
|
return [...renderPieSlices(context, geometry), ...renderPieCenter(context, geometry)];
|
|
8300
8301
|
}
|
|
8301
8302
|
|
|
@@ -8312,18 +8313,18 @@ var OUTSIDE_FALLBACK_COLOR = "#334155";
|
|
|
8312
8313
|
function layoutOf(context) {
|
|
8313
8314
|
const { chart, plot } = context;
|
|
8314
8315
|
const maxRadius = Math.max(1, Math.min(plot.width, plot.height) / 2 - 4);
|
|
8315
|
-
const axisMin =
|
|
8316
|
+
const axisMin = chunkSKGJXCAO_cjs.finite(chart.axisY.min, 0);
|
|
8316
8317
|
return {
|
|
8317
8318
|
centerX: plot.x + plot.width / 2,
|
|
8318
8319
|
centerY: plot.y + plot.height / 2,
|
|
8319
8320
|
maxRadius,
|
|
8320
|
-
innerRadius: Math.max(0, Math.min(
|
|
8321
|
-
cornerRadius: Math.max(0,
|
|
8322
|
-
gapPx: Math.max(0,
|
|
8321
|
+
innerRadius: Math.max(0, Math.min(chunkSKGJXCAO_cjs.finite(chart.config?.innerRadius, 0), maxRadius - 1)),
|
|
8322
|
+
cornerRadius: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.pieCornerRadius, 0)),
|
|
8323
|
+
gapPx: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.pieSliceGap, 0)),
|
|
8323
8324
|
axisMin,
|
|
8324
|
-
range:
|
|
8325
|
+
range: chunkSKGJXCAO_cjs.finite(chart.axisY.max, 100) - axisMin,
|
|
8325
8326
|
sweep: chart.series.length > 0 ? Math.PI * 2 / chart.series.length : 0,
|
|
8326
|
-
start: TOP2 +
|
|
8327
|
+
start: TOP2 + chunkSKGJXCAO_cjs.finite(chart.config?.pieStartAngle, 0) * Math.PI / 180
|
|
8327
8328
|
};
|
|
8328
8329
|
}
|
|
8329
8330
|
function clampedCorner(layout, outerRadius, angles) {
|
|
@@ -8331,19 +8332,19 @@ function clampedCorner(layout, outerRadius, angles) {
|
|
|
8331
8332
|
const geometry = { centerX, centerY, outerRadius, innerRadius };
|
|
8332
8333
|
const halfGap = Math.max(0, gapPx) / 2;
|
|
8333
8334
|
const rawSweep = angles.end - angles.start;
|
|
8334
|
-
const availableSweep = Math.max(0, rawSweep - 2 *
|
|
8335
|
-
if (
|
|
8336
|
-
return Math.min(cornerRadius,
|
|
8335
|
+
const availableSweep = Math.max(0, rawSweep - 2 * chunkSKGJXCAO_cjs.gapInsetAngle(halfGap, outerRadius));
|
|
8336
|
+
if (chunkSKGJXCAO_cjs.pieUsesInnerArc(geometry, angles, gapPx)) {
|
|
8337
|
+
return Math.min(cornerRadius, chunkSKGJXCAO_cjs.maxPieCornerRadius(outerRadius, innerRadius, availableSweep));
|
|
8337
8338
|
}
|
|
8338
|
-
const apexRadius =
|
|
8339
|
-
return Math.min(cornerRadius,
|
|
8339
|
+
const apexRadius = chunkSKGJXCAO_cjs.pieApexRadius(halfGap, rawSweep, outerRadius);
|
|
8340
|
+
return Math.min(cornerRadius, chunkSKGJXCAO_cjs.maxApexCornerRadius(outerRadius, apexRadius, availableSweep));
|
|
8340
8341
|
}
|
|
8341
8342
|
function wedgeNodes(context, layout, series, angles, outerRadius, value, rawColor) {
|
|
8342
8343
|
const { chart, bounds, diagnostics, nextOrder } = context;
|
|
8343
8344
|
const { centerX, centerY, innerRadius, maxRadius, gapPx } = layout;
|
|
8344
|
-
const color =
|
|
8345
|
-
const shadow =
|
|
8346
|
-
const trackPath =
|
|
8345
|
+
const color = chunkSKGJXCAO_cjs.paint(rawColor, diagnostics, chart.id);
|
|
8346
|
+
const shadow = chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle);
|
|
8347
|
+
const trackPath = chunkSKGJXCAO_cjs.createPieSlicePath(
|
|
8347
8348
|
{ centerX, centerY, outerRadius: maxRadius, innerRadius },
|
|
8348
8349
|
angles,
|
|
8349
8350
|
clampedCorner(layout, maxRadius, angles),
|
|
@@ -8356,12 +8357,12 @@ function wedgeNodes(context, layout, series, angles, outerRadius, value, rawColo
|
|
|
8356
8357
|
bounds,
|
|
8357
8358
|
d: trackPath,
|
|
8358
8359
|
style: {
|
|
8359
|
-
fill:
|
|
8360
|
+
fill: chunkSKGJXCAO_cjs.paint(chart.gridColor ?? TRACK_COLOR_FALLBACK, diagnostics, chart.id),
|
|
8360
8361
|
opacity: chart.config?.polarTrackOpacity,
|
|
8361
8362
|
...trackStroke(context)
|
|
8362
8363
|
}
|
|
8363
8364
|
};
|
|
8364
|
-
const wedgePath =
|
|
8365
|
+
const wedgePath = chunkSKGJXCAO_cjs.createPieSlicePath(
|
|
8365
8366
|
{ centerX, centerY, outerRadius, innerRadius },
|
|
8366
8367
|
angles,
|
|
8367
8368
|
clampedCorner(layout, outerRadius, angles),
|
|
@@ -8390,7 +8391,7 @@ function wedgeNodes(context, layout, series, angles, outerRadius, value, rawColo
|
|
|
8390
8391
|
pieEnd: angles.end,
|
|
8391
8392
|
pieValue: value
|
|
8392
8393
|
},
|
|
8393
|
-
prop:
|
|
8394
|
+
prop: chunkSKGJXCAO_cjs.seriesValueProp(series.id, 0),
|
|
8394
8395
|
style: { fill: color, innerShadow: shadow, ...wedgeStroke(context) }
|
|
8395
8396
|
};
|
|
8396
8397
|
return shadowCaster ? [track, shadowCaster, wedge] : [track, wedge];
|
|
@@ -8403,7 +8404,7 @@ function trackStroke(context) {
|
|
|
8403
8404
|
const dash = (config.polarTrackDash ?? "").split(/[ ,]+/).map(Number).filter((part) => Number.isFinite(part) && part > 0);
|
|
8404
8405
|
return {
|
|
8405
8406
|
stroke: { kind: "solid", color: config.polarTrackStroke },
|
|
8406
|
-
strokeWidth:
|
|
8407
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(config.polarTrackStrokeWidth, 1),
|
|
8407
8408
|
dash: dash.length > 0 ? dash : void 0
|
|
8408
8409
|
};
|
|
8409
8410
|
}
|
|
@@ -8414,7 +8415,7 @@ function wedgeStroke(context) {
|
|
|
8414
8415
|
}
|
|
8415
8416
|
return {
|
|
8416
8417
|
stroke: { kind: "solid", color: config.pieStroke },
|
|
8417
|
-
strokeWidth:
|
|
8418
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(config.pieStrokeWidth, 1)
|
|
8418
8419
|
};
|
|
8419
8420
|
}
|
|
8420
8421
|
function ringNodes(context, layout) {
|
|
@@ -8422,7 +8423,7 @@ function ringNodes(context, layout) {
|
|
|
8422
8423
|
if (!chart.config?.polarRings || layout.range <= 0) {
|
|
8423
8424
|
return [];
|
|
8424
8425
|
}
|
|
8425
|
-
return
|
|
8426
|
+
return chunkSKGJXCAO_cjs.chartTicks(chart.axisY).filter((tick) => tick > layout.axisMin && tick < layout.axisMin + layout.range).map((tick) => {
|
|
8426
8427
|
const radius = layout.innerRadius + (layout.maxRadius - layout.innerRadius) * (tick - layout.axisMin) / layout.range;
|
|
8427
8428
|
return {
|
|
8428
8429
|
type: "ellipse",
|
|
@@ -8436,7 +8437,7 @@ function ringNodes(context, layout) {
|
|
|
8436
8437
|
style: {
|
|
8437
8438
|
fill: { kind: "none" },
|
|
8438
8439
|
stroke: { kind: "solid", color: chart.textColor ?? "#334155" },
|
|
8439
|
-
strokeWidth:
|
|
8440
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(chart.gridWidth, 1),
|
|
8440
8441
|
opacity: 0.25
|
|
8441
8442
|
}
|
|
8442
8443
|
};
|
|
@@ -8448,10 +8449,10 @@ function renderPolarArea(context) {
|
|
|
8448
8449
|
const showLabels = context.showLabels && sweep >= MIN_LABEL_SWEEP;
|
|
8449
8450
|
const wedges = context.chart.series.flatMap((series, index) => {
|
|
8450
8451
|
const angles = { start: start + index * sweep, end: start + (index + 1) * sweep };
|
|
8451
|
-
const value = Math.max(0,
|
|
8452
|
+
const value = Math.max(0, chunkSKGJXCAO_cjs.finite(series.values[0], 0));
|
|
8452
8453
|
const fraction = range > 0 ? Math.min(1, Math.max(0, (value - axisMin) / range)) : 0;
|
|
8453
8454
|
const outerRadius = Math.max(innerRadius + 1, innerRadius + (maxRadius - innerRadius) * fraction);
|
|
8454
|
-
const rawColor = series.color ??
|
|
8455
|
+
const rawColor = series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[index % chunkSKGJXCAO_cjs.CHART_COLORS.length];
|
|
8455
8456
|
const nodes = wedgeNodes(context, layout, series, angles, outerRadius, value, rawColor);
|
|
8456
8457
|
if (!showLabels) {
|
|
8457
8458
|
return nodes;
|
|
@@ -8462,10 +8463,10 @@ function renderPolarArea(context) {
|
|
|
8462
8463
|
return [...wedges, ...ringNodes(context, layout)];
|
|
8463
8464
|
}
|
|
8464
8465
|
function labelSizes(chart) {
|
|
8465
|
-
const base = Math.max(9,
|
|
8466
|
+
const base = Math.max(9, chunkSKGJXCAO_cjs.finite(chart.fontSize, 12));
|
|
8466
8467
|
return {
|
|
8467
|
-
nameSize: Math.max(6,
|
|
8468
|
-
valueSize: Math.max(6,
|
|
8468
|
+
nameSize: Math.max(6, chunkSKGJXCAO_cjs.finite(chart.config?.polarNameSize, base)),
|
|
8469
|
+
valueSize: Math.max(6, chunkSKGJXCAO_cjs.finite(chart.config?.polarValueSize, base))
|
|
8469
8470
|
};
|
|
8470
8471
|
}
|
|
8471
8472
|
function labelPlacement2(context, geometry, angles, series, fillColor) {
|
|
@@ -8473,8 +8474,8 @@ function labelPlacement2(context, geometry, angles, series, fillColor) {
|
|
|
8473
8474
|
const { nameSize, valueSize } = labelSizes(context.chart);
|
|
8474
8475
|
const lineHeight = (nameSize + valueSize) * 1.2 / 2;
|
|
8475
8476
|
const ringThickness = geometry.outerRadius - geometry.innerRadius;
|
|
8476
|
-
const labelOffsetX =
|
|
8477
|
-
const labelOffsetY =
|
|
8477
|
+
const labelOffsetX = chunkSKGJXCAO_cjs.finite(series.labelOffsetX, 0);
|
|
8478
|
+
const labelOffsetY = chunkSKGJXCAO_cjs.finite(series.labelOffsetY, 0);
|
|
8478
8479
|
const hasManualOffset = labelOffsetX !== 0 || labelOffsetY !== 0;
|
|
8479
8480
|
const tooThin = ringThickness < lineHeight * 2 + 6;
|
|
8480
8481
|
const chordWidth = 2 * geometry.outerRadius * Math.sin(Math.abs(angles.end - angles.start) / 2);
|
|
@@ -8484,17 +8485,17 @@ function labelPlacement2(context, geometry, angles, series, fillColor) {
|
|
|
8484
8485
|
return void 0;
|
|
8485
8486
|
}
|
|
8486
8487
|
const outside = hasManualOffset || !fitsInline;
|
|
8487
|
-
const tickStart =
|
|
8488
|
-
const point = outside ? hasManualOffset ? addOffset(
|
|
8489
|
-
const color = outside ? outsideLabels && context.chart.textColor ? context.chart.textColor :
|
|
8490
|
-
|
|
8491
|
-
|
|
8488
|
+
const tickStart = chunkSKGJXCAO_cjs.pieArcPoint(geometry, mid, geometry.outerRadius + LEADER_INSET);
|
|
8489
|
+
const point = outside ? hasManualOffset ? addOffset(chunkSKGJXCAO_cjs.pieArcPoint(geometry, mid, geometry.outerRadius), labelOffsetX, labelOffsetY) : chunkSKGJXCAO_cjs.pieArcPoint(geometry, mid, geometry.outerRadius + OUTSIDE_GAP) : chunkSKGJXCAO_cjs.pieArcPoint(geometry, mid, geometry.innerRadius + ringThickness * LABEL_RADIUS_FRACTION);
|
|
8490
|
+
const color = outside ? outsideLabels && context.chart.textColor ? context.chart.textColor : chunkSKGJXCAO_cjs.sameHueTint(chunkSKGJXCAO_cjs.representativeColor(fillColor, OUTSIDE_FALLBACK_COLOR), OUTSIDE_TINT_LIGHTNESS) ?? OUTSIDE_FALLBACK_COLOR : chunkSKGJXCAO_cjs.sameHueContrastColor(
|
|
8491
|
+
chunkSKGJXCAO_cjs.representativeColor(fillColor, "#0f172a"),
|
|
8492
|
+
chunkSKGJXCAO_cjs.contrastTextColor(chunkSKGJXCAO_cjs.representativeColor(fillColor, "#0f172a"))
|
|
8492
8493
|
);
|
|
8493
8494
|
return { point, color, outside, mid, tickStart };
|
|
8494
8495
|
}
|
|
8495
8496
|
function labelTick(context, series, placement, lineHeight) {
|
|
8496
8497
|
const { point, color, outside, tickStart } = placement;
|
|
8497
|
-
const tickEnd = outside ?
|
|
8498
|
+
const tickEnd = outside ? chunkSKGJXCAO_cjs.clipSegmentToRect(tickStart, point, LABEL_WIDTH2 / 2, lineHeight) : tickStart;
|
|
8498
8499
|
return {
|
|
8499
8500
|
type: "path",
|
|
8500
8501
|
id: `chart-polar-area-label-tick-${context.chart.id}-${series.id}`,
|
|
@@ -8521,7 +8522,7 @@ function labelTexts(context, geometry, series, value, placement) {
|
|
|
8521
8522
|
bounds,
|
|
8522
8523
|
x: point.x - LABEL_WIDTH2 / 2,
|
|
8523
8524
|
width: LABEL_WIDTH2,
|
|
8524
|
-
fontFamily: chart.fontFamily ??
|
|
8525
|
+
fontFamily: chart.fontFamily ?? chunkSKGJXCAO_cjs.DEFAULT_FONT,
|
|
8525
8526
|
align: "center",
|
|
8526
8527
|
verticalAlign: "middle",
|
|
8527
8528
|
lineHeight: 1.2,
|
|
@@ -8544,7 +8545,7 @@ function labelTexts(context, geometry, series, value, placement) {
|
|
|
8544
8545
|
lines: [series.label],
|
|
8545
8546
|
fontWeight: valueFirst ? "normal" : "bold",
|
|
8546
8547
|
detail,
|
|
8547
|
-
prop:
|
|
8548
|
+
prop: chunkSKGJXCAO_cjs.seriesLabelProp(series.id)
|
|
8548
8549
|
};
|
|
8549
8550
|
const valueText = {
|
|
8550
8551
|
type: "text",
|
|
@@ -8554,10 +8555,10 @@ function labelTexts(context, geometry, series, value, placement) {
|
|
|
8554
8555
|
y: valueY,
|
|
8555
8556
|
height: valueSize * 1.2,
|
|
8556
8557
|
fontSize: valueSize,
|
|
8557
|
-
lines: [
|
|
8558
|
+
lines: [chunkSKGJXCAO_cjs.formatFieldValue(value)],
|
|
8558
8559
|
fontWeight: valueFirst ? "bold" : "normal",
|
|
8559
8560
|
detail,
|
|
8560
|
-
prop:
|
|
8561
|
+
prop: chunkSKGJXCAO_cjs.seriesValueProp(series.id, 0),
|
|
8561
8562
|
propKind: "value"
|
|
8562
8563
|
};
|
|
8563
8564
|
return [nameText, valueText];
|
|
@@ -8584,10 +8585,10 @@ function radarFrameFor(context) {
|
|
|
8584
8585
|
return {
|
|
8585
8586
|
centerX: plot.x + plot.width / 2,
|
|
8586
8587
|
centerY: plot.y + plot.height / 2,
|
|
8587
|
-
radius:
|
|
8588
|
+
radius: chunkSKGJXCAO_cjs.radarRadius(plot.width, plot.height, chunkSKGJXCAO_cjs.finite(chart.fontSize, 12), context.showLabels),
|
|
8588
8589
|
min: chart.axisY.min,
|
|
8589
8590
|
max: chart.axisY.max,
|
|
8590
|
-
count:
|
|
8591
|
+
count: chunkSKGJXCAO_cjs.radarCategoryCount(configuredCount, dataCount),
|
|
8591
8592
|
curved: chart.chartType === "radial",
|
|
8592
8593
|
tension: chart.config?.radarTension
|
|
8593
8594
|
};
|
|
@@ -8597,7 +8598,7 @@ function createRadarGeometry(context) {
|
|
|
8597
8598
|
const configuredCategories = chart.config?.categories?.filter(Boolean) ?? [];
|
|
8598
8599
|
const frame = radarFrameFor(context);
|
|
8599
8600
|
const categories = createCategories(configuredCategories, frame.count);
|
|
8600
|
-
const pointAt = (pointRadius, pointIndex) =>
|
|
8601
|
+
const pointAt = (pointRadius, pointIndex) => chunkSKGJXCAO_cjs.radarPointAt(frame, pointIndex, pointRadius);
|
|
8601
8602
|
return {
|
|
8602
8603
|
circular: frame.curved,
|
|
8603
8604
|
areaOpacity: Math.max(0, Math.min(1, chart.config?.areaOpacity ?? 0.16)),
|
|
@@ -8609,9 +8610,9 @@ function createRadarGeometry(context) {
|
|
|
8609
8610
|
centerX: frame.centerX,
|
|
8610
8611
|
centerY: frame.centerY,
|
|
8611
8612
|
radius: frame.radius,
|
|
8612
|
-
radiusForValue: (value) =>
|
|
8613
|
+
radiusForValue: (value) => chunkSKGJXCAO_cjs.radarRadiusForValue(frame, value),
|
|
8613
8614
|
pointAt,
|
|
8614
|
-
polygonPath: (pointRadius) =>
|
|
8615
|
+
polygonPath: (pointRadius) => chunkSKGJXCAO_cjs.radarSeriesPath(
|
|
8615
8616
|
categories.map((_, index) => pointAt(pointRadius, index)),
|
|
8616
8617
|
false
|
|
8617
8618
|
)
|
|
@@ -8632,7 +8633,7 @@ function renderRadarGrid(context, geometry) {
|
|
|
8632
8633
|
return [...renderRings(context, geometry), ...geometry.showSpokes ? renderSpokes(context, geometry) : []];
|
|
8633
8634
|
}
|
|
8634
8635
|
function renderRings(context, geometry) {
|
|
8635
|
-
return
|
|
8636
|
+
return chunkSKGJXCAO_cjs.chartTicks(context.chart.axisY).filter((tick) => tick > context.chart.axisY.min).map((tick) => createRingNode(context, geometry, tick));
|
|
8636
8637
|
}
|
|
8637
8638
|
function createRingNode(context, geometry, tick) {
|
|
8638
8639
|
const { chart, bounds, nextOrder } = context;
|
|
@@ -8640,7 +8641,7 @@ function createRingNode(context, geometry, tick) {
|
|
|
8640
8641
|
const style = {
|
|
8641
8642
|
fill: { kind: "none" },
|
|
8642
8643
|
stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
|
|
8643
|
-
strokeWidth:
|
|
8644
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(chart.gridWidth, 1)
|
|
8644
8645
|
};
|
|
8645
8646
|
if (geometry.circular) {
|
|
8646
8647
|
return {
|
|
@@ -8677,7 +8678,7 @@ function renderSpokes(context, geometry) {
|
|
|
8677
8678
|
style: {
|
|
8678
8679
|
fill: { kind: "none" },
|
|
8679
8680
|
stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
|
|
8680
|
-
strokeWidth:
|
|
8681
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(chart.gridWidth, 1)
|
|
8681
8682
|
}
|
|
8682
8683
|
};
|
|
8683
8684
|
});
|
|
@@ -8697,7 +8698,7 @@ function createCategoryLabel(context, geometry, category, categoryIndex) {
|
|
|
8697
8698
|
const labelPoint = geometry.pointAt(geometry.radius + 10, categoryIndex);
|
|
8698
8699
|
const horizontalOffset = labelPoint.x - geometry.centerX;
|
|
8699
8700
|
const width = Math.max(64, Math.min(120, plot.width / 3));
|
|
8700
|
-
return
|
|
8701
|
+
return chunkSKGJXCAO_cjs.chartText({
|
|
8701
8702
|
id: `chart-radar-label-${chart.id}-${categoryIndex}`,
|
|
8702
8703
|
order: nextOrder(),
|
|
8703
8704
|
bounds,
|
|
@@ -8735,9 +8736,9 @@ function renderRadarSeries(context, geometry) {
|
|
|
8735
8736
|
return nodes;
|
|
8736
8737
|
}
|
|
8737
8738
|
function renderSeries(context, geometry, series, seriesIndex) {
|
|
8738
|
-
const color = series.color ??
|
|
8739
|
+
const color = series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length];
|
|
8739
8740
|
const points = seriesPoints(series, context, geometry);
|
|
8740
|
-
const path =
|
|
8741
|
+
const path = chunkSKGJXCAO_cjs.radarSeriesPath(points, geometry.circular, geometry.tension);
|
|
8741
8742
|
return [
|
|
8742
8743
|
createSeriesFill(context, geometry, series, path, color),
|
|
8743
8744
|
...geometry.strokeWidth > 0 ? [createSeriesStroke(context, geometry, series, path, color)] : [],
|
|
@@ -8760,7 +8761,7 @@ function createSeriesFill(context, geometry, series, path, color) {
|
|
|
8760
8761
|
d: path,
|
|
8761
8762
|
detail: { of: "chartSeries", series: series.id },
|
|
8762
8763
|
style: {
|
|
8763
|
-
fill:
|
|
8764
|
+
fill: chunkSKGJXCAO_cjs.paint(color, diagnostics, chart.id),
|
|
8764
8765
|
stroke: { kind: "none" },
|
|
8765
8766
|
opacity: Math.max(0, Math.min(1, series.opacity ?? geometry.areaOpacity))
|
|
8766
8767
|
}
|
|
@@ -8777,10 +8778,10 @@ function createSeriesStroke(context, geometry, series, path, color) {
|
|
|
8777
8778
|
detail: { of: "chartSeries", series: series.id },
|
|
8778
8779
|
style: {
|
|
8779
8780
|
fill: { kind: "none" },
|
|
8780
|
-
stroke:
|
|
8781
|
+
stroke: chunkSKGJXCAO_cjs.paint(color, diagnostics, chart.id),
|
|
8781
8782
|
strokeWidth: geometry.strokeWidth,
|
|
8782
8783
|
lineJoin: "round",
|
|
8783
|
-
shadow:
|
|
8784
|
+
shadow: chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle)
|
|
8784
8785
|
}
|
|
8785
8786
|
};
|
|
8786
8787
|
}
|
|
@@ -8796,8 +8797,8 @@ function createSeriesPoints(context, geometry, series, points, color) {
|
|
|
8796
8797
|
rx: geometry.pointSize,
|
|
8797
8798
|
ry: geometry.pointSize,
|
|
8798
8799
|
detail: { of: "chartValue", series: series.id, valueIndex: pointIndex, mark: "radar-vertex" },
|
|
8799
|
-
prop:
|
|
8800
|
-
style: { fill:
|
|
8800
|
+
prop: chunkSKGJXCAO_cjs.seriesValueProp(series.id, pointIndex),
|
|
8801
|
+
style: { fill: chunkSKGJXCAO_cjs.paint(color, diagnostics, chart.id) }
|
|
8801
8802
|
}));
|
|
8802
8803
|
}
|
|
8803
8804
|
|
|
@@ -8851,25 +8852,25 @@ function ringProgressPath(cx, cy, r, sweep, from) {
|
|
|
8851
8852
|
}
|
|
8852
8853
|
function layoutOf2(context) {
|
|
8853
8854
|
const { chart, plot } = context;
|
|
8854
|
-
const axisMin =
|
|
8855
|
+
const axisMin = chunkSKGJXCAO_cjs.finite(chart.axisY.min, 0);
|
|
8855
8856
|
return {
|
|
8856
8857
|
centerX: plot.x + plot.width / 2,
|
|
8857
8858
|
centerY: plot.y + plot.height / 2,
|
|
8858
8859
|
outerRadius: Math.max(1, Math.min(plot.width, plot.height) / 2 - 4),
|
|
8859
|
-
ringThickness: Math.max(1,
|
|
8860
|
-
ringGap: Math.max(0,
|
|
8860
|
+
ringThickness: Math.max(1, chunkSKGJXCAO_cjs.finite(chart.config?.ringThickness, DEFAULT_RING_THICKNESS)),
|
|
8861
|
+
ringGap: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.ringGap, DEFAULT_RING_GAP)),
|
|
8861
8862
|
axisMin,
|
|
8862
|
-
range:
|
|
8863
|
-
start: TOP3 +
|
|
8864
|
-
total: Math.min(360, Math.max(1,
|
|
8865
|
-
trackOpacity: Math.min(1, Math.max(0,
|
|
8863
|
+
range: chunkSKGJXCAO_cjs.finite(chart.axisY.max, 100) - axisMin,
|
|
8864
|
+
start: TOP3 + chunkSKGJXCAO_cjs.finite(chart.config?.ringStartAngle, 0) * Math.PI / 180,
|
|
8865
|
+
total: Math.min(360, Math.max(1, chunkSKGJXCAO_cjs.finite(chart.config?.ringSweep, 360))) * Math.PI / 180,
|
|
8866
|
+
trackOpacity: Math.min(1, Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.ringTrackOpacity, TRACK_OPACITY))),
|
|
8866
8867
|
cap: chart.config?.ringCap ?? "round"
|
|
8867
8868
|
};
|
|
8868
8869
|
}
|
|
8869
8870
|
function ringEndShadows(context, layout, series, radius, sweep, color) {
|
|
8870
8871
|
const { chart, bounds, nextOrder } = context;
|
|
8871
8872
|
const { centerX, centerY, ringThickness, start } = layout;
|
|
8872
|
-
const shadow =
|
|
8873
|
+
const shadow = chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle);
|
|
8873
8874
|
const isFullCircle = sweep >= Math.PI * 2 - FULL_SWEEP_EPSILON;
|
|
8874
8875
|
if (!shadow || isFullCircle) {
|
|
8875
8876
|
return [];
|
|
@@ -8907,8 +8908,8 @@ function ringNodes2(context, layout, series, index) {
|
|
|
8907
8908
|
if (radius <= ringThickness / 2) {
|
|
8908
8909
|
return [];
|
|
8909
8910
|
}
|
|
8910
|
-
const color =
|
|
8911
|
-
const value = Math.max(0,
|
|
8911
|
+
const color = chunkSKGJXCAO_cjs.paint(series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[index % chunkSKGJXCAO_cjs.CHART_COLORS.length], diagnostics, chart.id);
|
|
8912
|
+
const value = Math.max(0, chunkSKGJXCAO_cjs.finite(series.values[0], 0));
|
|
8912
8913
|
const fraction = range > 0 ? Math.min(1, Math.max(0, (value - axisMin) / range)) : 0;
|
|
8913
8914
|
const trackStyle = {
|
|
8914
8915
|
fill: { kind: "none" },
|
|
@@ -8946,7 +8947,7 @@ function ringNodes2(context, layout, series, index) {
|
|
|
8946
8947
|
bounds,
|
|
8947
8948
|
d: ringProgressPath(centerX, centerY, radius, sweep, start),
|
|
8948
8949
|
detail: { of: "chartValue", series: series.id, valueIndex: 0, mark: "radial-bar-ring" },
|
|
8949
|
-
prop:
|
|
8950
|
+
prop: chunkSKGJXCAO_cjs.seriesValueProp(series.id, 0),
|
|
8950
8951
|
style: { fill: { kind: "none" }, stroke: color, strokeWidth: ringThickness, lineCap: cap }
|
|
8951
8952
|
};
|
|
8952
8953
|
return [track, ...casters, progress];
|
|
@@ -8958,7 +8959,7 @@ function renderRadialBar(context) {
|
|
|
8958
8959
|
|
|
8959
8960
|
// src/renderScene/charts/renderers/sankey/links.ts
|
|
8960
8961
|
function renderSankeyLinks(context, data) {
|
|
8961
|
-
const shadow =
|
|
8962
|
+
const shadow = chunkSKGJXCAO_cjs.resolveChartShadow(context.chart.shadowStyle);
|
|
8962
8963
|
const gradient = Boolean(context.chart.config?.linkGradient);
|
|
8963
8964
|
const { plot } = context;
|
|
8964
8965
|
const clipPath = shadow ? `M ${plot.x} ${plot.y} H ${plot.x + plot.width} V ${plot.y + plot.height} H ${plot.x} Z` : void 0;
|
|
@@ -8979,8 +8980,8 @@ function createSankeyLinkRibbon(context, data, link, linkIndex, gradient) {
|
|
|
8979
8980
|
bottom: data.baseY + link.targetY1
|
|
8980
8981
|
};
|
|
8981
8982
|
const config = context.chart.config;
|
|
8982
|
-
const fromColor = link.color || data.nodeColors.get(link.source) ||
|
|
8983
|
-
const toColor = data.nodeColors.get(link.target) ||
|
|
8983
|
+
const fromColor = link.color || data.nodeColors.get(link.source) || chunkSKGJXCAO_cjs.DEFAULT_ZONE_FILL;
|
|
8984
|
+
const toColor = data.nodeColors.get(link.target) || chunkSKGJXCAO_cjs.DEFAULT_ZONE_FILL;
|
|
8984
8985
|
const fill2 = gradient ? {
|
|
8985
8986
|
kind: "linear-gradient",
|
|
8986
8987
|
angle: 0,
|
|
@@ -8995,9 +8996,9 @@ function createSankeyLinkRibbon(context, data, link, linkIndex, gradient) {
|
|
|
8995
8996
|
toId: link.target,
|
|
8996
8997
|
source,
|
|
8997
8998
|
target,
|
|
8998
|
-
controlX: source.x + (target.x - source.x) * Math.min(1, Math.max(0,
|
|
8999
|
+
controlX: source.x + (target.x - source.x) * Math.min(1, Math.max(0, chunkSKGJXCAO_cjs.finite(config?.sankeyLinkCurve, 0.5))),
|
|
8999
9000
|
fill: fill2,
|
|
9000
|
-
opacity: Math.min(1, Math.max(0,
|
|
9001
|
+
opacity: Math.min(1, Math.max(0, chunkSKGJXCAO_cjs.finite(config?.sankeyLinkOpacity, link.color ? 0.85 : 0.45)))
|
|
9001
9002
|
};
|
|
9002
9003
|
}
|
|
9003
9004
|
function createSankeyRibbonNode(context, ribbon, shadow, clipPath, gradient) {
|
|
@@ -9038,7 +9039,7 @@ function sankeyRibbonPath(ribbon) {
|
|
|
9038
9039
|
var OUTSIDE_LABEL_LIGHTNESS_ON_LIGHT_BG = 0.3;
|
|
9039
9040
|
var OUTSIDE_LABEL_LIGHTNESS_ON_DARK_BG = 0.78;
|
|
9040
9041
|
function renderSankeyNodes(context, data) {
|
|
9041
|
-
const cornerRadius = Math.max(0,
|
|
9042
|
+
const cornerRadius = Math.max(0, chunkSKGJXCAO_cjs.finite(context.chart.config?.barCornerRadius, 0));
|
|
9042
9043
|
const nodes = [];
|
|
9043
9044
|
data.nodes.forEach((node) => {
|
|
9044
9045
|
nodes.push(createNodeRect(context, data, node, cornerRadius));
|
|
@@ -9054,8 +9055,8 @@ function createNodeRect(context, data, node, cornerRadius) {
|
|
|
9054
9055
|
const x = data.baseX + node.x;
|
|
9055
9056
|
const y = data.baseY + node.y;
|
|
9056
9057
|
const style = {
|
|
9057
|
-
fill: { kind: "solid", color: node.color ||
|
|
9058
|
-
shadow:
|
|
9058
|
+
fill: { kind: "solid", color: node.color || chunkSKGJXCAO_cjs.DEFAULT_ZONE_FILL },
|
|
9059
|
+
shadow: chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle)
|
|
9059
9060
|
};
|
|
9060
9061
|
const isFirstColumn = node.column === 0;
|
|
9061
9062
|
const isLastColumn = node.column === data.columnCount - 1;
|
|
@@ -9081,7 +9082,7 @@ function createNodeRect(context, data, node, cornerRadius) {
|
|
|
9081
9082
|
id: `chart-sankey-node-${chart.id}-${node.id}`,
|
|
9082
9083
|
order: nextOrder(),
|
|
9083
9084
|
bounds,
|
|
9084
|
-
d:
|
|
9085
|
+
d: chunkSKGJXCAO_cjs.leftRoundedRectPath(x, y, node.width, node.height, cornerRadius),
|
|
9085
9086
|
style,
|
|
9086
9087
|
detail
|
|
9087
9088
|
};
|
|
@@ -9092,7 +9093,7 @@ function createNodeRect(context, data, node, cornerRadius) {
|
|
|
9092
9093
|
id: `chart-sankey-node-${chart.id}-${node.id}`,
|
|
9093
9094
|
order: nextOrder(),
|
|
9094
9095
|
bounds,
|
|
9095
|
-
d:
|
|
9096
|
+
d: chunkSKGJXCAO_cjs.rightRoundedRectPath(x, y, node.width, node.height, cornerRadius),
|
|
9096
9097
|
style,
|
|
9097
9098
|
detail
|
|
9098
9099
|
};
|
|
@@ -9118,9 +9119,9 @@ function createNodeLabel(context, data, node) {
|
|
|
9118
9119
|
return void 0;
|
|
9119
9120
|
}
|
|
9120
9121
|
const fallback = chart.textColor ?? "#0f172a";
|
|
9121
|
-
const defaultColor = position === "inside" ?
|
|
9122
|
+
const defaultColor = position === "inside" ? chunkSKGJXCAO_cjs.contrastTextColor(node.color) : chunkSKGJXCAO_cjs.sameHueTint(
|
|
9122
9123
|
node.color,
|
|
9123
|
-
|
|
9124
|
+
chunkSKGJXCAO_cjs.isLightColor(fallback) ? OUTSIDE_LABEL_LIGHTNESS_ON_DARK_BG : OUTSIDE_LABEL_LIGHTNESS_ON_LIGHT_BG
|
|
9124
9125
|
) ?? fallback;
|
|
9125
9126
|
const color = chart.config?.labelColor ?? defaultColor;
|
|
9126
9127
|
return { ...label, color, detail: { of: "chartSeries", series: node.id, mark: "sankey-node-label" } };
|
|
@@ -9132,7 +9133,7 @@ function createOutsideLabel(context, data, node) {
|
|
|
9132
9133
|
const y = data.baseY + node.y;
|
|
9133
9134
|
const labelX2 = isLastColumn ? x - data.labelGutter + 8 : x + node.width + 6;
|
|
9134
9135
|
return {
|
|
9135
|
-
...
|
|
9136
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
9136
9137
|
id: `chart-sankey-label-${chart.id}-${node.id}`,
|
|
9137
9138
|
order: nextOrder(),
|
|
9138
9139
|
bounds,
|
|
@@ -9157,11 +9158,11 @@ function createInsideLabel(context, data, node, orientation) {
|
|
|
9157
9158
|
if (orientation === "vertical") {
|
|
9158
9159
|
const thickness = fontSize * 1.4;
|
|
9159
9160
|
const width = Math.max(1, node.height - 8);
|
|
9160
|
-
if (
|
|
9161
|
+
if (chunkSKGJXCAO_cjs.estimateTextWidth(node.label, fontSize, false) > width) {
|
|
9161
9162
|
return void 0;
|
|
9162
9163
|
}
|
|
9163
9164
|
return {
|
|
9164
|
-
...
|
|
9165
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
9165
9166
|
id,
|
|
9166
9167
|
order: nextOrder(),
|
|
9167
9168
|
bounds,
|
|
@@ -9178,7 +9179,7 @@ function createInsideLabel(context, data, node, orientation) {
|
|
|
9178
9179
|
};
|
|
9179
9180
|
}
|
|
9180
9181
|
return {
|
|
9181
|
-
...
|
|
9182
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
9182
9183
|
id,
|
|
9183
9184
|
order: nextOrder(),
|
|
9184
9185
|
bounds,
|
|
@@ -9199,18 +9200,18 @@ function createSankeyRenderData(context) {
|
|
|
9199
9200
|
const labelGutter = showLabels ? 92 : 0;
|
|
9200
9201
|
const availableWidth = Math.max(1, plot.width - labelGutter * 2);
|
|
9201
9202
|
const layout = layoutSankey(createNodeInputs(context), createLinkInputs(context), availableWidth, plot.height, {
|
|
9202
|
-
nodeWidth: Math.max(1,
|
|
9203
|
-
nodeGap: Math.max(0,
|
|
9203
|
+
nodeWidth: Math.max(1, chunkSKGJXCAO_cjs.finite(chart.config?.sankeyNodeWidth, 18)),
|
|
9204
|
+
nodeGap: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.sankeyNodeGap, 8))
|
|
9204
9205
|
});
|
|
9205
9206
|
return {
|
|
9206
9207
|
...layout,
|
|
9207
9208
|
baseX: plot.x + labelGutter,
|
|
9208
9209
|
baseY: plot.y,
|
|
9209
9210
|
labelGutter,
|
|
9210
|
-
fontSize: Math.max(9,
|
|
9211
|
-
labelSize: Math.max(6,
|
|
9211
|
+
fontSize: Math.max(9, chunkSKGJXCAO_cjs.finite(chart.fontSize, 12)),
|
|
9212
|
+
labelSize: Math.max(6, chunkSKGJXCAO_cjs.finite(chart.config?.sankeyLabelSize, Math.max(9, chunkSKGJXCAO_cjs.finite(chart.fontSize, 12)) - 2)),
|
|
9212
9213
|
columnCount: Math.max(1, ...layout.nodes.map((node) => node.column + 1)),
|
|
9213
|
-
nodeColors: new Map(layout.nodes.map((node) => [node.id, node.color ||
|
|
9214
|
+
nodeColors: new Map(layout.nodes.map((node) => [node.id, node.color || chunkSKGJXCAO_cjs.DEFAULT_ZONE_FILL]))
|
|
9214
9215
|
};
|
|
9215
9216
|
}
|
|
9216
9217
|
function createNodeInputs(context) {
|
|
@@ -9232,7 +9233,7 @@ function createLinkInputs(context) {
|
|
|
9232
9233
|
source: series.source,
|
|
9233
9234
|
target: series.target,
|
|
9234
9235
|
value: series.values[0] ?? 0,
|
|
9235
|
-
color: series.color ?
|
|
9236
|
+
color: series.color ? chunkSKGJXCAO_cjs.representativeColor(series.color, chunkSKGJXCAO_cjs.DEFAULT_ZONE_FILL) : void 0
|
|
9236
9237
|
});
|
|
9237
9238
|
});
|
|
9238
9239
|
return inputs;
|
|
@@ -9251,9 +9252,9 @@ function renderSankey(context) {
|
|
|
9251
9252
|
var DEFAULT_POINT_SIZE = 4;
|
|
9252
9253
|
function renderScatter(context) {
|
|
9253
9254
|
const nodes = [];
|
|
9254
|
-
const shadow =
|
|
9255
|
+
const shadow = chunkSKGJXCAO_cjs.resolveChartShadow(context.chart.shadowStyle);
|
|
9255
9256
|
context.chart.series.forEach((series, seriesIndex) => {
|
|
9256
|
-
const color = series.color ??
|
|
9257
|
+
const color = series.color ?? chunkSKGJXCAO_cjs.CHART_COLORS[seriesIndex % chunkSKGJXCAO_cjs.CHART_COLORS.length];
|
|
9257
9258
|
const points = pixelPoints(context, seriesValuePairs(context.chart, series));
|
|
9258
9259
|
points.forEach((point, pointIndex) => {
|
|
9259
9260
|
nodes.push(createScatterPoint(context, series, point, pointIndex, color, shadow));
|
|
@@ -9277,8 +9278,8 @@ function createScatterPoint(context, series, point, pointIndex, color, shadow) {
|
|
|
9277
9278
|
ry: radius,
|
|
9278
9279
|
detail: { of: "chartValue", series: series.id, valueIndex: pointIndex },
|
|
9279
9280
|
style: {
|
|
9280
|
-
fill:
|
|
9281
|
-
stroke: strokeWidth > 0 ?
|
|
9281
|
+
fill: chunkSKGJXCAO_cjs.paint(color, diagnostics, chart.id),
|
|
9282
|
+
stroke: strokeWidth > 0 ? chunkSKGJXCAO_cjs.paint(config?.pointStrokeColor ?? color, diagnostics, chart.id) : void 0,
|
|
9282
9283
|
strokeWidth: strokeWidth > 0 ? strokeWidth : void 0,
|
|
9283
9284
|
opacity: config?.pointOpacity,
|
|
9284
9285
|
shadow
|
|
@@ -9289,14 +9290,14 @@ function createScatterPoint(context, series, point, pointIndex, color, shadow) {
|
|
|
9289
9290
|
// src/renderScene/charts/renderers/treemap/layout.ts
|
|
9290
9291
|
function createTreemapLayout(context) {
|
|
9291
9292
|
const { chart, plot, showLegend } = context;
|
|
9292
|
-
const fontSize = Math.max(9,
|
|
9293
|
+
const fontSize = Math.max(9, chunkSKGJXCAO_cjs.finite(chart.fontSize, 12));
|
|
9293
9294
|
const legendPosition = chart.legendPosition === "left" ? "left" : chart.legendPosition === "right" ? "right" : "bottom";
|
|
9294
9295
|
const legendHeight = showLegend && legendPosition === "bottom" ? 48 : 0;
|
|
9295
|
-
const cellGap = Math.max(0,
|
|
9296
|
+
const cellGap = Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.cellGap, 0));
|
|
9296
9297
|
return {
|
|
9297
9298
|
leaves: chart.series,
|
|
9298
|
-
bands:
|
|
9299
|
-
zones: chart.config?.zones?.length ? chart.config.zones :
|
|
9299
|
+
bands: chunkSKGJXCAO_cjs.axisBands(chart.axisY),
|
|
9300
|
+
zones: chart.config?.zones?.length ? chart.config.zones : chunkSKGJXCAO_cjs.DEFAULT_HEATMAP_ZONES,
|
|
9300
9301
|
fontSize,
|
|
9301
9302
|
smallFontSize: Math.max(8, fontSize - 1),
|
|
9302
9303
|
legendPosition,
|
|
@@ -9304,18 +9305,18 @@ function createTreemapLayout(context) {
|
|
|
9304
9305
|
gridWidth: Math.max(1, plot.width),
|
|
9305
9306
|
gridHeight: Math.max(1, plot.height - legendHeight),
|
|
9306
9307
|
cellGap,
|
|
9307
|
-
cellRadius: Math.max(0,
|
|
9308
|
-
headerHeight: Math.max(0,
|
|
9309
|
-
labelSize: Math.max(6,
|
|
9310
|
-
valueSize: Math.max(6,
|
|
9311
|
-
labelPadding: Math.max(0,
|
|
9308
|
+
cellRadius: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.barCornerRadius, cellGap)),
|
|
9309
|
+
headerHeight: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.headerHeight, 20)),
|
|
9310
|
+
labelSize: Math.max(6, chunkSKGJXCAO_cjs.finite(chart.config?.tileLabelSize, Math.max(8, fontSize - 1))),
|
|
9311
|
+
valueSize: Math.max(6, chunkSKGJXCAO_cjs.finite(chart.config?.tileValueSize, Math.max(8, fontSize - 1))),
|
|
9312
|
+
labelPadding: Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.tileLabelPadding, 4))
|
|
9312
9313
|
};
|
|
9313
9314
|
}
|
|
9314
9315
|
function treemapLeafValue(leaf) {
|
|
9315
9316
|
return leaf.values[0] ?? 0;
|
|
9316
9317
|
}
|
|
9317
9318
|
function treemapLeafColor(leaf, layout) {
|
|
9318
|
-
return leaf.color ??
|
|
9319
|
+
return leaf.color ?? chunkSKGJXCAO_cjs.zoneColorAtValue(treemapLeafValue(leaf), layout.bands, layout.zones);
|
|
9319
9320
|
}
|
|
9320
9321
|
|
|
9321
9322
|
// src/renderScene/charts/renderers/treemap/legend.ts
|
|
@@ -9340,7 +9341,7 @@ function bandStops(layout) {
|
|
|
9340
9341
|
const zones = layout.zones.slice(0, bandCount);
|
|
9341
9342
|
return zones.map((zone, index) => ({
|
|
9342
9343
|
offset: bandRatio2(layout, layout.bands[index + 1] ?? layout.bands[layout.bands.length - 1]) * 100,
|
|
9343
|
-
color: zone.color ??
|
|
9344
|
+
color: zone.color ?? chunkSKGJXCAO_cjs.DEFAULT_ZONE_FILL
|
|
9344
9345
|
}));
|
|
9345
9346
|
}
|
|
9346
9347
|
function renderBottomLegend(context, layout) {
|
|
@@ -9349,7 +9350,7 @@ function renderBottomLegend(context, layout) {
|
|
|
9349
9350
|
const barWidth = layout.gridWidth;
|
|
9350
9351
|
const labelHeight = layout.fontSize + 2;
|
|
9351
9352
|
const barY = plot.y + layout.gridHeight + CHART_GAP;
|
|
9352
|
-
const barBounds =
|
|
9353
|
+
const barBounds = chunkSKGJXCAO_cjs.boxBounds({ x: barX, y: barY, width: barWidth, height: BAR_THICKNESS2 });
|
|
9353
9354
|
const stops = bandStops(layout);
|
|
9354
9355
|
const bar = {
|
|
9355
9356
|
type: "rect",
|
|
@@ -9363,7 +9364,7 @@ function renderBottomLegend(context, layout) {
|
|
|
9363
9364
|
rx: 3,
|
|
9364
9365
|
zoneGradient: { axis: "y", min: chart.axisY.min, max: chart.axisY.max },
|
|
9365
9366
|
style: {
|
|
9366
|
-
fill: stops.length ? { kind: "linear-gradient", angle: 0, stops } : { kind: "solid", color:
|
|
9367
|
+
fill: stops.length ? { kind: "linear-gradient", angle: 0, stops } : { kind: "solid", color: chunkSKGJXCAO_cjs.DEFAULT_ZONE_FILL },
|
|
9367
9368
|
stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
|
|
9368
9369
|
strokeWidth: 1
|
|
9369
9370
|
}
|
|
@@ -9386,12 +9387,12 @@ function renderBottomLegend(context, layout) {
|
|
|
9386
9387
|
const isLast = index === layout.bands.length - 1;
|
|
9387
9388
|
const align = isFirst ? "left" : isLast ? "right" : "center";
|
|
9388
9389
|
const frameX = isFirst ? x : isLast ? x - LABEL_SIZE : x - LABEL_SIZE / 2;
|
|
9389
|
-
const label =
|
|
9390
|
+
const label = chunkSKGJXCAO_cjs.chartText({
|
|
9390
9391
|
id: `chart-treemap-legend-tick-label-${chart.id}-${index}`,
|
|
9391
9392
|
order: nextOrder(),
|
|
9392
9393
|
bounds,
|
|
9393
9394
|
frame: { x: frameX, y: barY + BAR_THICKNESS2 + TICK_LENGTH3 + ROW_GAP2, width: LABEL_SIZE, height: labelHeight },
|
|
9394
|
-
text:
|
|
9395
|
+
text: chunkSKGJXCAO_cjs.formatFieldValue(value),
|
|
9395
9396
|
chart,
|
|
9396
9397
|
align
|
|
9397
9398
|
});
|
|
@@ -9405,7 +9406,7 @@ function renderSideLegend(context, layout) {
|
|
|
9405
9406
|
const barTop = plot.y;
|
|
9406
9407
|
const barHeight = layout.gridHeight;
|
|
9407
9408
|
const barX = side === "left" ? plot.x - CHART_GAP - BAR_THICKNESS2 : plot.x + layout.gridWidth + CHART_GAP;
|
|
9408
|
-
const barBounds =
|
|
9409
|
+
const barBounds = chunkSKGJXCAO_cjs.boxBounds({ x: barX, y: barTop, width: BAR_THICKNESS2, height: barHeight });
|
|
9409
9410
|
const stops = bandStops(layout);
|
|
9410
9411
|
const bar = {
|
|
9411
9412
|
type: "rect",
|
|
@@ -9419,7 +9420,7 @@ function renderSideLegend(context, layout) {
|
|
|
9419
9420
|
rx: 3,
|
|
9420
9421
|
zoneGradient: { axis: "y", min: chart.axisY.min, max: chart.axisY.max },
|
|
9421
9422
|
style: {
|
|
9422
|
-
fill: stops.length ? { kind: "linear-gradient", angle: 270, stops } : { kind: "solid", color:
|
|
9423
|
+
fill: stops.length ? { kind: "linear-gradient", angle: 270, stops } : { kind: "solid", color: chunkSKGJXCAO_cjs.DEFAULT_ZONE_FILL },
|
|
9423
9424
|
stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
|
|
9424
9425
|
strokeWidth: 1
|
|
9425
9426
|
}
|
|
@@ -9441,12 +9442,12 @@ function renderSideLegend(context, layout) {
|
|
|
9441
9442
|
strokeWidth: 1
|
|
9442
9443
|
}
|
|
9443
9444
|
};
|
|
9444
|
-
const label =
|
|
9445
|
+
const label = chunkSKGJXCAO_cjs.chartText({
|
|
9445
9446
|
id: `chart-treemap-legend-tick-label-${chart.id}-${index}`,
|
|
9446
9447
|
order: nextOrder(),
|
|
9447
9448
|
bounds,
|
|
9448
9449
|
frame: { x: labelX2, y: y - layout.fontSize / 2, width: LABEL_SIZE, height: layout.fontSize + 2 },
|
|
9449
|
-
text:
|
|
9450
|
+
text: chunkSKGJXCAO_cjs.formatFieldValue(value),
|
|
9450
9451
|
chart,
|
|
9451
9452
|
align: side === "left" ? "right" : "left"
|
|
9452
9453
|
});
|
|
@@ -9534,7 +9535,7 @@ function renderTreemapHeader(context, layout, header, index) {
|
|
|
9534
9535
|
};
|
|
9535
9536
|
const smallFontSize = Math.max(8, Math.max(9, chart.fontSize ?? 12) - 1);
|
|
9536
9537
|
const label = {
|
|
9537
|
-
...
|
|
9538
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
9538
9539
|
id: `chart-treemap-header-label-${chart.id}-${index}`,
|
|
9539
9540
|
order: nextOrder(),
|
|
9540
9541
|
bounds,
|
|
@@ -9549,7 +9550,7 @@ function renderTreemapHeader(context, layout, header, index) {
|
|
|
9549
9550
|
align: "center"
|
|
9550
9551
|
}),
|
|
9551
9552
|
fontSize: smallFontSize,
|
|
9552
|
-
color:
|
|
9553
|
+
color: chunkSKGJXCAO_cjs.contrastTextColor(fill2)
|
|
9553
9554
|
};
|
|
9554
9555
|
return [background, label];
|
|
9555
9556
|
}
|
|
@@ -9565,7 +9566,7 @@ function renderTile(context, layout, tile, nextTile) {
|
|
|
9565
9566
|
function createTileNode(context, layout, tile, color, nextColor) {
|
|
9566
9567
|
const { chart, plot, bounds, diagnostics, nextOrder } = context;
|
|
9567
9568
|
const gap = layout.cellGap;
|
|
9568
|
-
const shadow =
|
|
9569
|
+
const shadow = chunkSKGJXCAO_cjs.resolveChartShadow(chart.shadowStyle);
|
|
9569
9570
|
const clipPath = shadow ? `M ${plot.x} ${plot.y} H ${plot.x + plot.width} V ${plot.y + plot.height} H ${plot.x} Z` : void 0;
|
|
9570
9571
|
const tileX = plot.x + tile.x + gap / 2;
|
|
9571
9572
|
const tileY = plot.y + tile.y + gap / 2;
|
|
@@ -9582,10 +9583,10 @@ function createTileNode(context, layout, tile, color, nextColor) {
|
|
|
9582
9583
|
kind: "linear-gradient",
|
|
9583
9584
|
angle: 0,
|
|
9584
9585
|
stops: [
|
|
9585
|
-
{ offset: 0, color:
|
|
9586
|
-
{ offset: 100, color:
|
|
9586
|
+
{ offset: 0, color: chunkSKGJXCAO_cjs.representativeColor(color, fallback) },
|
|
9587
|
+
{ offset: 100, color: chunkSKGJXCAO_cjs.representativeColor(nextColor, fallback) }
|
|
9587
9588
|
]
|
|
9588
|
-
} :
|
|
9589
|
+
} : chunkSKGJXCAO_cjs.paint(color, diagnostics, chart.id);
|
|
9589
9590
|
return {
|
|
9590
9591
|
type: "rect",
|
|
9591
9592
|
id: `chart-treemap-tile-${chart.id}-${tile.item.leaf.id}`,
|
|
@@ -9599,7 +9600,7 @@ function createTileNode(context, layout, tile, color, nextColor) {
|
|
|
9599
9600
|
style: {
|
|
9600
9601
|
fill: fill2,
|
|
9601
9602
|
stroke: { kind: "solid", color: chart.config?.tileStrokeColor ?? chart.gridColor ?? "#e2e8f0" },
|
|
9602
|
-
strokeWidth:
|
|
9603
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(chart.config?.tileStrokeWidth, chunkSKGJXCAO_cjs.finite(chart.gridWidth, 1)),
|
|
9603
9604
|
shadow,
|
|
9604
9605
|
clip: clipPath ? { type: "path", d: clipPath } : void 0
|
|
9605
9606
|
}
|
|
@@ -9614,12 +9615,12 @@ function createTileLabel(context, layout, tile, color) {
|
|
|
9614
9615
|
const height = Math.max(1, tile.height - gap - pad * 1.5);
|
|
9615
9616
|
const x = plot.x + tile.x + gap / 2 + pad;
|
|
9616
9617
|
const y = plot.y + tile.y + gap / 2 + pad * 0.75;
|
|
9617
|
-
const textColor = chart.config?.tileTextColor ??
|
|
9618
|
+
const textColor = chart.config?.tileTextColor ?? chunkSKGJXCAO_cjs.contrastTextColor(chunkSKGJXCAO_cjs.representativeColor(color, "#ffffff"));
|
|
9618
9619
|
const lineHeight = layout.labelSize * 1.2;
|
|
9619
9620
|
const maxLines = Math.max(1, Math.floor(height / lineHeight));
|
|
9620
|
-
const labelLines =
|
|
9621
|
+
const labelLines = chunkSKGJXCAO_cjs.wrapText(leaf.label, width, layout.labelSize).slice(0, maxLines).map((line) => chunkSKGJXCAO_cjs.ellipsizeToWidth(line, width, layout.labelSize, true));
|
|
9621
9622
|
const label = {
|
|
9622
|
-
...
|
|
9623
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
9623
9624
|
id: `chart-treemap-label-${chart.id}-${leaf.id}`,
|
|
9624
9625
|
order: nextOrder(),
|
|
9625
9626
|
bounds,
|
|
@@ -9633,12 +9634,12 @@ function createTileLabel(context, layout, tile, color) {
|
|
|
9633
9634
|
color: textColor
|
|
9634
9635
|
};
|
|
9635
9636
|
const valueText = String(value);
|
|
9636
|
-
const valueFits = labelLines.length * lineHeight + layout.valueSize * 1.2 <= height + 2 &&
|
|
9637
|
+
const valueFits = labelLines.length * lineHeight + layout.valueSize * 1.2 <= height + 2 && chunkSKGJXCAO_cjs.estimateTextWidth(valueText, layout.valueSize, false) <= width;
|
|
9637
9638
|
if (chart.config?.showTileValues === false || !valueFits) {
|
|
9638
9639
|
return [label];
|
|
9639
9640
|
}
|
|
9640
9641
|
const valueNode = {
|
|
9641
|
-
...
|
|
9642
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
9642
9643
|
id: `chart-treemap-value-${chart.id}-${leaf.id}`,
|
|
9643
9644
|
order: nextOrder(),
|
|
9644
9645
|
bounds,
|
|
@@ -9715,7 +9716,7 @@ function buildCartesianChart(foundation) {
|
|
|
9715
9716
|
|
|
9716
9717
|
// src/renderScene/charts/chartFrame.ts
|
|
9717
9718
|
function scaleDetail(chart, plot) {
|
|
9718
|
-
const horizontal =
|
|
9719
|
+
const horizontal = chunkSKGJXCAO_cjs.isHorizontalBar(chart);
|
|
9719
9720
|
const range = horizontal ? `${plot.x},${plot.width}` : `${plot.y},${plot.height}`;
|
|
9720
9721
|
return {
|
|
9721
9722
|
of: "chartScale",
|
|
@@ -9723,7 +9724,7 @@ function scaleDetail(chart, plot) {
|
|
|
9723
9724
|
};
|
|
9724
9725
|
}
|
|
9725
9726
|
function pieDetail(chart, plot) {
|
|
9726
|
-
const { outerRadius, innerRadius, cornerRadius } =
|
|
9727
|
+
const { outerRadius, innerRadius, cornerRadius } = chunkSKGJXCAO_cjs.resolvePieRadii(
|
|
9727
9728
|
plot.width,
|
|
9728
9729
|
plot.height,
|
|
9729
9730
|
chart.config?.innerRadius,
|
|
@@ -9736,8 +9737,8 @@ function pieDetail(chart, plot) {
|
|
|
9736
9737
|
}
|
|
9737
9738
|
function polarAreaDetail(chart, plot) {
|
|
9738
9739
|
const maxRadius = Math.max(1, Math.min(plot.width, plot.height) / 2 - 4);
|
|
9739
|
-
const innerRadius = Math.max(0, Math.min(
|
|
9740
|
-
const cornerRadius = Math.max(0,
|
|
9740
|
+
const innerRadius = Math.max(0, Math.min(chunkSKGJXCAO_cjs.finite(chart.config?.innerRadius, 0), maxRadius - 1));
|
|
9741
|
+
const cornerRadius = Math.max(0, chunkSKGJXCAO_cjs.finite(chart.config?.pieCornerRadius, 0));
|
|
9741
9742
|
return {
|
|
9742
9743
|
of: "pieGeometry",
|
|
9743
9744
|
pieGeometry: `${plot.x + plot.width / 2},${plot.y + plot.height / 2},${maxRadius},${innerRadius},${cornerRadius}`
|
|
@@ -9746,8 +9747,8 @@ function polarAreaDetail(chart, plot) {
|
|
|
9746
9747
|
function radarDetail(chart, plot) {
|
|
9747
9748
|
const configuredCount = (chart.config?.categories?.filter(Boolean) ?? []).length;
|
|
9748
9749
|
const dataCount = Math.max(0, ...chart.series.map((series) => series.values.length));
|
|
9749
|
-
const count =
|
|
9750
|
-
const radius =
|
|
9750
|
+
const count = chunkSKGJXCAO_cjs.radarCategoryCount(configuredCount, dataCount);
|
|
9751
|
+
const radius = chunkSKGJXCAO_cjs.radarRadius(plot.width, plot.height, chunkSKGJXCAO_cjs.finite(chart.fontSize, 12), chart.showAxisLabels !== false);
|
|
9751
9752
|
const centerX = plot.x + plot.width / 2;
|
|
9752
9753
|
const centerY = plot.y + plot.height / 2;
|
|
9753
9754
|
const curved = chart.chartType === "radial" ? 1 : 0;
|
|
@@ -9781,9 +9782,9 @@ function buildChartFrame(chart, bounds, plot, order) {
|
|
|
9781
9782
|
height: chart.height,
|
|
9782
9783
|
rx: chart.cornerRadius ?? 12,
|
|
9783
9784
|
style: {
|
|
9784
|
-
fill:
|
|
9785
|
+
fill: chunkSKGJXCAO_cjs.paint(chart.fillColor ?? "#ffffff", [], chart.id),
|
|
9785
9786
|
stroke: { kind: "solid", color: chart.strokeColor ?? "#475569" },
|
|
9786
|
-
strokeWidth:
|
|
9787
|
+
strokeWidth: chunkSKGJXCAO_cjs.finite(chart.strokeWidth, 1)
|
|
9787
9788
|
}
|
|
9788
9789
|
};
|
|
9789
9790
|
const detail = frameDetail(chart, plot);
|
|
@@ -9843,7 +9844,7 @@ function buildChartTitle(chart, bounds, plot, renderOrder) {
|
|
|
9843
9844
|
}
|
|
9844
9845
|
return [
|
|
9845
9846
|
{
|
|
9846
|
-
...
|
|
9847
|
+
...chunkSKGJXCAO_cjs.chartText({
|
|
9847
9848
|
id: `chart-title-${chart.id}`,
|
|
9848
9849
|
order: renderOrder.next(),
|
|
9849
9850
|
bounds,
|
|
@@ -9854,8 +9855,8 @@ function buildChartTitle(chart, bounds, plot, renderOrder) {
|
|
|
9854
9855
|
}),
|
|
9855
9856
|
...chart.titleColor ? { color: chart.titleColor } : {},
|
|
9856
9857
|
fontWeight: chart.titleWeight ?? "bold",
|
|
9857
|
-
fontSize:
|
|
9858
|
-
prop:
|
|
9858
|
+
fontSize: chunkSKGJXCAO_cjs.finite(chart.titleSize, Math.max(10, chunkSKGJXCAO_cjs.finite(chart.fontSize, 12)) + 2),
|
|
9859
|
+
prop: chunkSKGJXCAO_cjs.CHART_TITLE_PROP
|
|
9859
9860
|
}
|
|
9860
9861
|
];
|
|
9861
9862
|
}
|
|
@@ -9908,7 +9909,7 @@ function buildChart(chart, index, diagnostics) {
|
|
|
9908
9909
|
// src/renderScene/charts/artifacts.ts
|
|
9909
9910
|
function buildCharts(charts, diagnostics) {
|
|
9910
9911
|
return charts.flatMap(
|
|
9911
|
-
(chart, index) =>
|
|
9912
|
+
(chart, index) => chunkSKGJXCAO_cjs.tag(buildChart(chart, index, diagnostics), "chart", chart.id, chart.chartType, chart.title ?? "Chart")
|
|
9912
9913
|
);
|
|
9913
9914
|
}
|
|
9914
9915
|
|
|
@@ -10009,7 +10010,7 @@ function visibleBounds(node) {
|
|
|
10009
10010
|
}
|
|
10010
10011
|
function sceneBounds(nodes) {
|
|
10011
10012
|
if (!nodes.length) {
|
|
10012
|
-
return
|
|
10013
|
+
return chunkSKGJXCAO_cjs.EMPTY_BOUNDS;
|
|
10013
10014
|
}
|
|
10014
10015
|
const all = nodes.map(visibleBounds);
|
|
10015
10016
|
return {
|
|
@@ -10024,8 +10025,8 @@ function stackingOf(input) {
|
|
|
10024
10025
|
const add = (role, objects, legacyBase) => {
|
|
10025
10026
|
objects.forEach((object, index) => {
|
|
10026
10027
|
stacking.set(`${role}:${object.id}`, {
|
|
10027
|
-
rank:
|
|
10028
|
-
sequence:
|
|
10028
|
+
rank: chunkSKGJXCAO_cjs.stackRank(object),
|
|
10029
|
+
sequence: chunkSKGJXCAO_cjs.stackSequence(object, legacyBase + index)
|
|
10029
10030
|
});
|
|
10030
10031
|
});
|
|
10031
10032
|
};
|
|
@@ -10522,31 +10523,31 @@ function chartSeriesAttrs(detail) {
|
|
|
10522
10523
|
];
|
|
10523
10524
|
}
|
|
10524
10525
|
function frameBoundaryAttrs(detail) {
|
|
10525
|
-
return [`${
|
|
10526
|
+
return [`${chunkSKGJXCAO_cjs.CORNER_RADIUS_ATTR}="${num2(detail.cornerRadius)}"`, `${chunkSKGJXCAO_cjs.SQUARE_CORNER_ATTR}="${detail.squareCorner}"`];
|
|
10526
10527
|
}
|
|
10527
10528
|
function declaredBoundsAttr(bounds) {
|
|
10528
|
-
return `${
|
|
10529
|
+
return `${chunkSKGJXCAO_cjs.SYMBOL_BOUNDS_ATTR}="${num2(bounds.x)},${num2(bounds.y)},${num2(bounds.width)},${num2(bounds.height)}"`;
|
|
10529
10530
|
}
|
|
10530
10531
|
function symbolGeometryAttrs(detail) {
|
|
10531
10532
|
return [
|
|
10532
|
-
`${
|
|
10533
|
-
`${
|
|
10533
|
+
`${chunkSKGJXCAO_cjs.SYMBOL_POINTS_ATTR}="${xml(JSON.stringify(detail.points))}"`,
|
|
10534
|
+
`${chunkSKGJXCAO_cjs.SYMBOL_TENSION_ATTR}="${num2(detail.tension)}"`,
|
|
10534
10535
|
declaredBoundsAttr(detail.declaredBounds)
|
|
10535
10536
|
];
|
|
10536
10537
|
}
|
|
10537
10538
|
function pathGeometryAttrs(detail) {
|
|
10538
10539
|
return [
|
|
10539
|
-
`${
|
|
10540
|
-
`${
|
|
10541
|
-
`${
|
|
10540
|
+
`${chunkSKGJXCAO_cjs.PATH_POINTS_ATTR}="${xml(JSON.stringify(detail.points))}"`,
|
|
10541
|
+
`${chunkSKGJXCAO_cjs.PATH_TENSION_ATTR}="${num2(detail.tension)}"`,
|
|
10542
|
+
`${chunkSKGJXCAO_cjs.PATH_CLOSED_ATTR}="${detail.closed}"`
|
|
10542
10543
|
];
|
|
10543
10544
|
}
|
|
10544
10545
|
function isometricGeometryAttrs(detail) {
|
|
10545
10546
|
return [
|
|
10546
|
-
`${
|
|
10547
|
-
`${
|
|
10547
|
+
`${chunkSKGJXCAO_cjs.ISOMETRIC_SIZE_ATTR}="${num2(detail.width)},${num2(detail.height)},${num2(detail.depth)}"`,
|
|
10548
|
+
`${chunkSKGJXCAO_cjs.CORNER_RADIUS_ATTR}="${num2(detail.cornerRadius)}"`,
|
|
10548
10549
|
declaredBoundsAttr(detail.bounds),
|
|
10549
|
-
`${
|
|
10550
|
+
`${chunkSKGJXCAO_cjs.ISOMETRIC_LABEL_OFFSET_ATTR}="${num2(detail.labelOffsetX)},${num2(detail.labelOffsetY)}"`
|
|
10550
10551
|
];
|
|
10551
10552
|
}
|
|
10552
10553
|
function linkDetailAttrs(detail) {
|
|
@@ -10693,7 +10694,7 @@ function renderSvgDocument(scene, options = {}) {
|
|
|
10693
10694
|
const nodes = options.linkHitAreas ? withLinkHitAreas(scene.nodes) : scene.nodes;
|
|
10694
10695
|
const body = nodes.map((node) => nodeSvg(node, defs)).join("\n ");
|
|
10695
10696
|
const declaration = options.includeXmlDeclaration === false ? "" : '<?xml version="1.0" encoding="UTF-8"?>\n';
|
|
10696
|
-
const svg = `${declaration}<svg xmlns="http://www.w3.org/2000/svg" width="${num2(width)}px" height="${num2(height)}px" viewBox="${viewBox}" role="img" data-sf-contract="${
|
|
10697
|
+
const svg = `${declaration}<svg xmlns="http://www.w3.org/2000/svg" width="${num2(width)}px" height="${num2(height)}px" viewBox="${viewBox}" role="img" data-sf-contract="${chunkSKGJXCAO_cjs.DOM_CONTRACT_VERSION}">
|
|
10697
10698
|
<defs>${defs.entries.join("")}</defs>
|
|
10698
10699
|
${body}
|
|
10699
10700
|
</svg>`;
|
|
@@ -10713,9 +10714,9 @@ function renderCanvas(input, options = {}) {
|
|
|
10713
10714
|
}
|
|
10714
10715
|
var SCENE_CACHE_LIMIT = 50;
|
|
10715
10716
|
var sceneCache = /* @__PURE__ */ new Map();
|
|
10716
|
-
var cachedForRegistry =
|
|
10717
|
+
var cachedForRegistry = chunkSKGJXCAO_cjs.componentRegistryVersion();
|
|
10717
10718
|
function cachedRenderScene(source) {
|
|
10718
|
-
const registry =
|
|
10719
|
+
const registry = chunkSKGJXCAO_cjs.componentRegistryVersion();
|
|
10719
10720
|
if (registry !== cachedForRegistry) {
|
|
10720
10721
|
sceneCache.clear();
|
|
10721
10722
|
cachedForRegistry = registry;
|
|
@@ -10747,7 +10748,7 @@ function render(source, options = {}) {
|
|
|
10747
10748
|
var SCENE_ORDER_BASE = 1e4;
|
|
10748
10749
|
function defineComponent(definition) {
|
|
10749
10750
|
const { scene, ...descriptor } = definition;
|
|
10750
|
-
const unregisterDescriptor =
|
|
10751
|
+
const unregisterDescriptor = chunkSKGJXCAO_cjs.registerComponentDescriptor(descriptor);
|
|
10751
10752
|
const unregisterBuilder = registerComponentBuilder(
|
|
10752
10753
|
descriptor.type,
|
|
10753
10754
|
(component, index) => scene(component, { order: SCENE_ORDER_BASE + index })
|
|
@@ -10766,5 +10767,5 @@ exports.render = render;
|
|
|
10766
10767
|
exports.renderCanvas = renderCanvas;
|
|
10767
10768
|
exports.sflToRenderInput = sflToRenderInput;
|
|
10768
10769
|
exports.sliderReach = sliderReach;
|
|
10769
|
-
//# sourceMappingURL=chunk-
|
|
10770
|
-
//# sourceMappingURL=chunk-
|
|
10770
|
+
//# sourceMappingURL=chunk-ZE2KRWOM.cjs.map
|
|
10771
|
+
//# sourceMappingURL=chunk-ZE2KRWOM.cjs.map
|