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