stickyflow 0.2.0 → 0.4.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +1 -1
  3. package/dist/{chunk-KFJIFHXG.js → chunk-65IVT4GK.js} +475 -199
  4. package/dist/chunk-65IVT4GK.js.map +1 -0
  5. package/dist/{chunk-6JKNT2YC.js → chunk-BYMIYXP5.js} +17 -7
  6. package/dist/chunk-BYMIYXP5.js.map +1 -0
  7. package/dist/{chunk-N6WVHOUQ.js → chunk-CSXQD3ON.js} +28 -15
  8. package/dist/chunk-CSXQD3ON.js.map +1 -0
  9. package/dist/{chunk-YM3XFBI4.cjs → chunk-CXL254BT.cjs} +17 -6
  10. package/dist/chunk-CXL254BT.cjs.map +1 -0
  11. package/dist/{chunk-S5BVAAEF.cjs → chunk-DDCTNLLD.cjs} +989 -713
  12. package/dist/chunk-DDCTNLLD.cjs.map +1 -0
  13. package/dist/{chunk-34PK7HEU.cjs → chunk-HFOGKSNU.cjs} +18 -18
  14. package/dist/{chunk-34PK7HEU.cjs.map → chunk-HFOGKSNU.cjs.map} +1 -1
  15. package/dist/{chunk-IIOJFR73.cjs → chunk-UXDWH2JC.cjs} +56 -43
  16. package/dist/chunk-UXDWH2JC.cjs.map +1 -0
  17. package/dist/{chunk-6LQJUAD4.js → chunk-XEN5QIIJ.js} +6 -6
  18. package/dist/{chunk-6LQJUAD4.js.map → chunk-XEN5QIIJ.js.map} +1 -1
  19. package/dist/index.cjs +24 -24
  20. package/dist/index.d.cts +4 -4
  21. package/dist/index.d.ts +4 -4
  22. package/dist/index.js +4 -4
  23. package/dist/interaction/index.cjs +780 -382
  24. package/dist/interaction/index.cjs.map +1 -1
  25. package/dist/interaction/index.d.cts +12 -3
  26. package/dist/interaction/index.d.ts +12 -3
  27. package/dist/interaction/index.js +562 -165
  28. package/dist/interaction/index.js.map +1 -1
  29. package/dist/{render-r1GYvjNm.d.cts → render-C5X74hds.d.cts} +75 -4
  30. package/dist/{render-r1GYvjNm.d.ts → render-C5X74hds.d.ts} +75 -4
  31. package/dist/{runtimeTypes-ByiafBwg.d.ts → runtimeTypes-D8hPZ62T.d.ts} +1 -1
  32. package/dist/{runtimeTypes-DwLeD-em.d.cts → runtimeTypes-yTSAvtCn.d.cts} +1 -1
  33. package/dist/stickyflow-diagram.global.js +37 -35
  34. package/dist/stickyflow-diagram.global.js.map +1 -1
  35. package/dist/{types-T7W2yTQF.d.cts → types-BDKDf4zr.d.cts} +1 -1
  36. package/dist/{types-ndGA1kbl.d.ts → types-CdgGdtoD.d.ts} +1 -1
  37. package/dist/viewer/index.cjs +9 -9
  38. package/dist/viewer/index.d.cts +4 -4
  39. package/dist/viewer/index.d.ts +4 -4
  40. package/dist/viewer/index.js +4 -4
  41. package/dist/web-component/index.cjs +6 -6
  42. package/dist/web-component/index.d.cts +2 -2
  43. package/dist/web-component/index.d.ts +2 -2
  44. package/dist/web-component/index.js +4 -4
  45. package/package.json +1 -1
  46. package/dist/chunk-6JKNT2YC.js.map +0 -1
  47. package/dist/chunk-IIOJFR73.cjs.map +0 -1
  48. package/dist/chunk-KFJIFHXG.js.map +0 -1
  49. package/dist/chunk-N6WVHOUQ.js.map +0 -1
  50. package/dist/chunk-S5BVAAEF.cjs.map +0 -1
  51. package/dist/chunk-YM3XFBI4.cjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkYM3XFBI4_cjs = require('./chunk-YM3XFBI4.cjs');
3
+ var chunkCXL254BT_cjs = require('./chunk-CXL254BT.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-]*`;
@@ -341,17 +341,31 @@ function lineConfig(source, p) {
341
341
  highlightLabelFormat: p.highlightLabelFormat
342
342
  };
343
343
  }
344
- function scatterConfig(source) {
345
- return { categories: source?.categories };
344
+ function scatterConfig(source, p) {
345
+ return {
346
+ categories: source?.categories,
347
+ pointSize: numOf(p.pointSize),
348
+ pointOpacity: numOf(p.pointOpacity),
349
+ pointStrokeWidth: numOf(p.pointStrokeWidth),
350
+ pointStrokeColor: p.pointStrokeColor
351
+ };
346
352
  }
347
- function boxplotConfig(source) {
353
+ function boxplotConfig(source, p) {
348
354
  return {
349
355
  boxWidth: source?.boxWidth,
350
356
  orientation: source?.orientation,
351
357
  barCornerRadius: source?.barCornerRadius,
352
358
  showBoxplotPoints: source?.showBoxplotPoints,
353
359
  barBorderColor: source?.barBorderColor,
354
- barBorderWidth: source?.barBorderWidth
360
+ barBorderWidth: source?.barBorderWidth,
361
+ boxWhiskerWidth: numOf(p.boxWhiskerWidth),
362
+ boxMedianWidth: numOf(p.boxMedianWidth),
363
+ boxMedianColor: p.boxMedianColor,
364
+ boxWhiskerColor: p.boxWhiskerColor,
365
+ boxCapSize: numOf(p.boxCapSize),
366
+ boxPointSize: numOf(p.boxPointSize),
367
+ boxPointOpacity: numOf(p.boxPointOpacity),
368
+ boxJitter: numOf(p.boxJitter)
355
369
  };
356
370
  }
357
371
  function fieldConfig(source) {
@@ -362,26 +376,48 @@ function fieldConfig(source) {
362
376
  isolines: source?.isolines
363
377
  };
364
378
  }
365
- function heatmapConfig(source) {
379
+ function heatmapConfig(source, p) {
366
380
  return {
367
381
  categories: source?.categories,
368
382
  zones: source?.zones,
369
383
  cellGap: source?.cellGap,
370
384
  showValues: source?.showValues,
371
385
  squareCells: source?.squareCells,
372
- barCornerRadius: source?.barCornerRadius
386
+ barCornerRadius: source?.barCornerRadius,
387
+ cellShape: p.cellShape === "circle" ? "circle" : p.cellShape === "square" ? "square" : void 0,
388
+ cellStrokeColor: p.cellStrokeColor,
389
+ cellStrokeWidth: numOf(p.cellStrokeWidth),
390
+ cellValueSize: numOf(p.cellValueSize),
391
+ cellValueColor: p.cellValueColor
373
392
  };
374
393
  }
375
- function hexbinConfig(source) {
376
- return { hexRadius: source?.hexRadius };
394
+ function hexbinConfig(source, p) {
395
+ return {
396
+ hexRadius: source?.hexRadius,
397
+ scale: decodeRamp(source?.scale),
398
+ hexGap: numOf(p.hexGap),
399
+ hexStrokeWidth: numOf(p.hexStrokeWidth),
400
+ hexStrokeColor: p.hexStrokeColor,
401
+ hexMinOpacity: numOf(p.hexMinOpacity)
402
+ };
377
403
  }
378
- function mekkoConfig(source) {
404
+ function mekkoConfig(source, p) {
379
405
  return {
380
406
  categories: source?.categories,
381
407
  barCornerRadius: source?.barCornerRadius,
382
408
  mekkoVaryHeight: source?.mekkoVaryHeight,
383
409
  tileGradient: source?.tileGradient,
384
- showColumnBackdrop: source?.showColumnBackdrop
410
+ showColumnBackdrop: source?.showColumnBackdrop,
411
+ mekkoColumnGap: numOf(p.mekkoColumnGap),
412
+ mekkoSegmentGap: numOf(p.mekkoSegmentGap),
413
+ mekkoRoundAll: p.mekkoRoundAll === void 0 ? void 0 : String(p.mekkoRoundAll) !== "false",
414
+ mekkoSegmentStrokeColor: p.mekkoSegmentStrokeColor,
415
+ mekkoSegmentStrokeWidth: numOf(p.mekkoSegmentStrokeWidth),
416
+ mekkoLabelSize: numOf(p.mekkoLabelSize),
417
+ mekkoValueSize: numOf(p.mekkoValueSize),
418
+ mekkoTextColor: p.mekkoTextColor,
419
+ showMekkoTotals: p.showMekkoTotals === void 0 ? void 0 : String(p.showMekkoTotals) !== "false",
420
+ mekkoValueFormat: p.mekkoValueFormat === "percent" ? "percent" : p.mekkoValueFormat === "value" ? "value" : void 0
385
421
  };
386
422
  }
387
423
  function pieConfig(source, p) {
@@ -403,57 +439,104 @@ function pieConfig(source, p) {
403
439
  pieCenterColor: p.pieCenterColor
404
440
  };
405
441
  }
406
- function polarAreaConfig(source) {
442
+ function polarAreaConfig(source, p) {
407
443
  return {
408
444
  innerRadius: source?.innerRadius,
409
445
  pieCornerRadius: source?.pieCornerRadius,
410
- pieSliceGap: source?.pieSliceGap
446
+ pieSliceGap: source?.pieSliceGap,
447
+ pieStartAngle: numOf(p.pieStartAngle),
448
+ pieStroke: p.pieStroke,
449
+ pieStrokeWidth: numOf(p.pieStrokeWidth),
450
+ polarTrackOpacity: numOf(p.polarTrackOpacity),
451
+ polarRings: p.polarRings === void 0 ? void 0 : String(p.polarRings) !== "false",
452
+ polarTrackStroke: p.polarTrackStroke,
453
+ polarTrackStrokeWidth: numOf(p.polarTrackStrokeWidth),
454
+ polarTrackDash: p.polarTrackDash,
455
+ polarValueSize: numOf(p.polarValueSize),
456
+ polarNameSize: numOf(p.polarNameSize),
457
+ polarValueFirst: p.polarValueFirst === void 0 ? void 0 : String(p.polarValueFirst) !== "false",
458
+ polarOutsideLabels: p.polarOutsideLabels === void 0 ? void 0 : String(p.polarOutsideLabels) !== "false"
411
459
  };
412
460
  }
413
- function radarConfig(source) {
461
+ function radarStyle(p) {
462
+ return {
463
+ radarStrokeWidth: numOf(p.radarStrokeWidth),
464
+ radarPointSize: numOf(p.radarPointSize),
465
+ radarTension: numOf(p.radarTension),
466
+ radarSpokes: p.radarSpokes === void 0 ? void 0 : String(p.radarSpokes) !== "false"
467
+ };
468
+ }
469
+ function radarConfig(source, p) {
414
470
  return {
415
471
  categories: source?.categories,
416
- areaOpacity: source?.areaOpacity
472
+ areaOpacity: source?.areaOpacity,
473
+ ...radarStyle(p)
417
474
  };
418
475
  }
419
- function radialConfig(source) {
476
+ function radialConfig(source, p) {
420
477
  return {
421
478
  categories: source?.categories,
422
- areaOpacity: source?.areaOpacity
479
+ areaOpacity: source?.areaOpacity,
480
+ ...radarStyle(p)
423
481
  };
424
482
  }
425
- function radialBarConfig(source) {
483
+ function radialBarConfig(source, p) {
426
484
  return {
427
485
  ringThickness: source?.ringThickness,
428
- ringGap: source?.ringGap
486
+ ringGap: source?.ringGap,
487
+ ringTrackOpacity: numOf(p.ringTrackOpacity),
488
+ ringCap: p.ringCap === "butt" ? "butt" : p.ringCap === "round" ? "round" : void 0,
489
+ ringStartAngle: numOf(p.ringStartAngle),
490
+ ringSweep: numOf(p.ringSweep)
429
491
  };
430
492
  }
431
- function sankeyConfig(source) {
493
+ function sankeyConfig(source, p) {
432
494
  return {
433
495
  zones: source?.zones,
434
496
  barCornerRadius: source?.barCornerRadius,
435
497
  labelPosition: source?.labelPosition,
436
498
  labelOrientation: source?.labelOrientation,
437
499
  labelColor: source?.labelColor,
438
- linkGradient: source?.linkGradient
500
+ linkGradient: source?.linkGradient,
501
+ sankeyNodeWidth: numOf(p.sankeyNodeWidth),
502
+ sankeyNodeGap: numOf(p.sankeyNodeGap),
503
+ sankeyLinkOpacity: numOf(p.sankeyLinkOpacity),
504
+ sankeyLinkCurve: numOf(p.sankeyLinkCurve),
505
+ sankeyLabelSize: numOf(p.sankeyLabelSize)
439
506
  };
440
507
  }
441
- function treemapConfig(source) {
508
+ function treemapConfig(source, p) {
442
509
  return {
443
510
  zones: source?.zones,
444
511
  cellGap: source?.cellGap,
445
512
  barCornerRadius: source?.barCornerRadius,
446
513
  headerColor: source?.headerColor,
447
- tileGradient: source?.tileGradient
514
+ tileGradient: source?.tileGradient,
515
+ tileStrokeColor: p.tileStrokeColor,
516
+ tileStrokeWidth: numOf(p.tileStrokeWidth),
517
+ tileLabelSize: numOf(p.tileLabelSize),
518
+ tileValueSize: numOf(p.tileValueSize),
519
+ tileTextColor: p.tileTextColor,
520
+ tileLabelPadding: numOf(p.tileLabelPadding),
521
+ showTileValues: p.showTileValues === void 0 ? void 0 : String(p.showTileValues) !== "false",
522
+ headerHeight: numOf(p.headerHeight)
448
523
  };
449
524
  }
450
- function customConfig(source) {
525
+ function customConfig(source, p) {
451
526
  return {
452
527
  categories: source?.categories,
453
528
  zones: source?.zones,
454
529
  orientation: source?.orientation,
455
530
  connectPoints: source?.connectPoints,
456
- reverseComparison: source?.reverseComparison
531
+ reverseComparison: source?.reverseComparison,
532
+ customConnectorWidth: numOf(p.customConnectorWidth),
533
+ customConnectorOpacity: numOf(p.customConnectorOpacity),
534
+ customConnectorDash: p.customConnectorDash,
535
+ customBeforeFill: p.customBeforeFill,
536
+ customBeforeStroke: p.customBeforeStroke,
537
+ customBeforeStrokeWidth: numOf(p.customBeforeStrokeWidth),
538
+ customLabelSize: numOf(p.customLabelSize),
539
+ customLabelColor: p.customLabelColor
457
540
  };
458
541
  }
459
542
 
@@ -469,33 +552,33 @@ function chartObject(e) {
469
552
  case "line":
470
553
  return typedChart(base, chartType, lineConfig(source, p));
471
554
  case "scatter":
472
- return typedChart(base, chartType, scatterConfig(source));
555
+ return typedChart(base, chartType, scatterConfig(source, p));
473
556
  case "boxplot":
474
- return typedChart(base, chartType, boxplotConfig(source));
557
+ return typedChart(base, chartType, boxplotConfig(source, p));
475
558
  case "field":
476
559
  return typedChart(base, chartType, fieldConfig(source));
477
560
  case "heatmap":
478
- return typedChart(base, chartType, heatmapConfig(source));
561
+ return typedChart(base, chartType, heatmapConfig(source, p));
479
562
  case "hexbin":
480
- return typedChart(base, chartType, hexbinConfig(source));
563
+ return typedChart(base, chartType, hexbinConfig(source, p));
481
564
  case "mekko":
482
- return typedChart(base, chartType, mekkoConfig(source));
565
+ return typedChart(base, chartType, mekkoConfig(source, p));
483
566
  case "pie":
484
567
  return typedChart(base, chartType, pieConfig(source, p));
485
568
  case "polarArea":
486
- return typedChart(base, chartType, polarAreaConfig(source));
569
+ return typedChart(base, chartType, polarAreaConfig(source, p));
487
570
  case "radar":
488
- return typedChart(base, chartType, radarConfig(source));
571
+ return typedChart(base, chartType, radarConfig(source, p));
489
572
  case "radial":
490
- return typedChart(base, chartType, radialConfig(source));
573
+ return typedChart(base, chartType, radialConfig(source, p));
491
574
  case "radialBar":
492
- return typedChart(base, chartType, radialBarConfig(source));
575
+ return typedChart(base, chartType, radialBarConfig(source, p));
493
576
  case "sankey":
494
- return typedChart(base, chartType, sankeyConfig(source));
577
+ return typedChart(base, chartType, sankeyConfig(source, p));
495
578
  case "treemap":
496
- return typedChart(base, chartType, treemapConfig(source));
579
+ return typedChart(base, chartType, treemapConfig(source, p));
497
580
  case "custom":
498
- return typedChart(base, chartType, customConfig(source));
581
+ return typedChart(base, chartType, customConfig(source, p));
499
582
  }
500
583
  }
501
584
  function typedChart(base, chartType, config) {
@@ -725,6 +808,10 @@ function variant(value) {
725
808
  function motion(value) {
726
809
  return value === "roll" || value === "fade" ? value : void 0;
727
810
  }
811
+ function positiveNumber(value) {
812
+ const number = Number(value);
813
+ return value !== void 0 && Number.isFinite(number) && number > 0 ? number : void 0;
814
+ }
728
815
  function fontWeight(value) {
729
816
  return value && FONT_WEIGHT.test(value) ? value : void 0;
730
817
  }
@@ -794,7 +881,7 @@ var RULER_NUMBERS = [
794
881
  ];
795
882
  var RULER_COLORS = ["color", "accent", "glow"];
796
883
  var RULER_DEFAULTS = { color: "#8f95c4", accent: "#d9f270", glow: "#3ddc84" };
797
- var RULER_OPTIONAL_COLORS = ["core"];
884
+ var RULER_OPTIONAL_COLORS = ["core", "peak"];
798
885
  function rulerObject(canvasObject) {
799
886
  const properties = canvasObject.props;
800
887
  const parameters = {};
@@ -873,7 +960,8 @@ function widgetObject(canvasObject) {
873
960
  fontFamily: fontFamily(properties.fontFamily),
874
961
  variant: variant(properties.variant),
875
962
  motion: motion(properties.motion),
876
- fontWeight: fontWeight(properties.fontWeight)
963
+ fontWeight: fontWeight(properties.fontWeight),
964
+ fontSize: positiveNumber(properties.fontSize)
877
965
  }
878
966
  };
879
967
  }
@@ -887,7 +975,7 @@ function collectCanvasObjects(state) {
887
975
  shapes: canvasObjects.filter((canvasObject) => canvasObject.objectType === "shape").map((shape) => shapeObject(shape, shaders)),
888
976
  frames: canvasObjects.filter((canvasObject) => canvasObject.objectType === "frame").map(frameObject),
889
977
  swimlanes: canvasObjects.filter((canvasObject) => canvasObject.objectType === "swimlane").map(swimlaneObject),
890
- isometricObjects: canvasObjects.filter(chunkYM3XFBI4_cjs.isIsometricObject).map(isometricObject),
978
+ isometricObjects: canvasObjects.filter(chunkCXL254BT_cjs.isIsometricObject).map(isometricObject),
891
979
  paths: canvasObjects.filter((canvasObject) => canvasObject.objectType === "path").map(pathObject),
892
980
  charts: canvasObjects.filter((canvasObject) => canvasObject.objectType === "chart").map(chartObject),
893
981
  widgets: canvasObjects.filter(
@@ -915,9 +1003,9 @@ function sidePoint(canvasObject, endpoint) {
915
1003
  function namedPortPoint(canvasObject, endpoint) {
916
1004
  const port = canvasObject.symbol?.ports?.find((candidate) => candidate.name === endpoint.port);
917
1005
  if (!port) {
918
- return chunkYM3XFBI4_cjs.elementCenter(canvasObject);
1006
+ return chunkCXL254BT_cjs.elementCenter(canvasObject);
919
1007
  }
920
- return chunkYM3XFBI4_cjs.pointAtNormalizedPort(
1008
+ return chunkCXL254BT_cjs.pointAtNormalizedPort(
921
1009
  {
922
1010
  x: canvasObject.x,
923
1011
  y: canvasObject.y,
@@ -963,7 +1051,7 @@ function explicitAnchorPoint(canvasObject, endpoint) {
963
1051
  return null;
964
1052
  }
965
1053
  function automaticEndpointPoint(canvasObject, opposite) {
966
- return opposite ? chunkYM3XFBI4_cjs.edgePointToward(canvasObject, opposite) : chunkYM3XFBI4_cjs.elementCenter(canvasObject);
1054
+ return opposite ? chunkCXL254BT_cjs.edgePointToward(canvasObject, opposite) : chunkCXL254BT_cjs.elementCenter(canvasObject);
967
1055
  }
968
1056
  function findPositionedCanvasObject(canvasObjects, id) {
969
1057
  return canvasObjects.find((candidate) => candidate.id === id);
@@ -981,7 +1069,7 @@ function positionedCanvasObjects(canvasObjects) {
981
1069
  ];
982
1070
  }
983
1071
  function connectionEndpointPoint(object, face) {
984
- return object ? chunkYM3XFBI4_cjs.isometricFaceCenter(object, face) : { x: 0, y: 0 };
1072
+ return object ? chunkCXL254BT_cjs.isometricFaceCenter(object, face) : { x: 0, y: 0 };
985
1073
  }
986
1074
  function isometricStackPosition(isometricObjects, id) {
987
1075
  const index = isometricObjects.findIndex((object2) => object2.id === id);
@@ -996,8 +1084,8 @@ function connectionStack(isometricObjects, connection) {
996
1084
  return { order: connection.order, sourceIndex: connection.sourceIndex };
997
1085
  }
998
1086
  const behind = [
999
- chunkYM3XFBI4_cjs.VISIBLE_ISOMETRIC_FACES.has(connection.fromFace) ? void 0 : isometricStackPosition(isometricObjects, connection.fromId),
1000
- chunkYM3XFBI4_cjs.VISIBLE_ISOMETRIC_FACES.has(connection.toFace) ? void 0 : isometricStackPosition(isometricObjects, connection.toId)
1087
+ chunkCXL254BT_cjs.VISIBLE_ISOMETRIC_FACES.has(connection.fromFace) ? void 0 : isometricStackPosition(isometricObjects, connection.fromId),
1088
+ chunkCXL254BT_cjs.VISIBLE_ISOMETRIC_FACES.has(connection.toFace) ? void 0 : isometricStackPosition(isometricObjects, connection.toId)
1001
1089
  ].filter((position) => position !== void 0);
1002
1090
  if (!behind.length) {
1003
1091
  return { sourceIndex: connection.sourceIndex };
@@ -1039,7 +1127,7 @@ function createRenderInputLinks(canvasObjects) {
1039
1127
 
1040
1128
  // src/renderInput/fromSfl/index.ts
1041
1129
  function sflToRenderInput(sfl) {
1042
- const state = chunkYM3XFBI4_cjs.sflToCanvasState(sfl);
1130
+ const state = chunkCXL254BT_cjs.sflToCanvasState(sfl);
1043
1131
  const canvasObjects = collectCanvasObjects(state);
1044
1132
  return {
1045
1133
  shapes: canvasObjects.shapes,
@@ -1077,13 +1165,13 @@ function tabBox(input, thickness, length) {
1077
1165
  y,
1078
1166
  width: length,
1079
1167
  height: thickness,
1080
- path: chunkYM3XFBI4_cjs.bottomRoundedRectPath(x, y, length, thickness, TAB_RADIUS)
1168
+ path: chunkCXL254BT_cjs.bottomRoundedRectPath(x, y, length, thickness, TAB_RADIUS)
1081
1169
  };
1082
1170
  }
1083
1171
  case "left": {
1084
1172
  const x = input.x - thickness;
1085
1173
  const y = input.y - inset;
1086
- return { x, y, width: thickness, height: length, path: chunkYM3XFBI4_cjs.leftRoundedRectPath(x, y, thickness, length, TAB_RADIUS) };
1174
+ return { x, y, width: thickness, height: length, path: chunkCXL254BT_cjs.leftRoundedRectPath(x, y, thickness, length, TAB_RADIUS) };
1087
1175
  }
1088
1176
  case "right": {
1089
1177
  const x = input.x + input.width;
@@ -1093,13 +1181,13 @@ function tabBox(input, thickness, length) {
1093
1181
  y,
1094
1182
  width: thickness,
1095
1183
  height: length,
1096
- path: chunkYM3XFBI4_cjs.rightRoundedRectPath(x, y, thickness, length, TAB_RADIUS)
1184
+ path: chunkCXL254BT_cjs.rightRoundedRectPath(x, y, thickness, length, TAB_RADIUS)
1097
1185
  };
1098
1186
  }
1099
1187
  default: {
1100
1188
  const x = input.x - inset;
1101
1189
  const y = input.y - thickness;
1102
- return { x, y, width: length, height: thickness, path: chunkYM3XFBI4_cjs.topRoundedRectPath(x, y, length, thickness, TAB_RADIUS) };
1190
+ return { x, y, width: length, height: thickness, path: chunkCXL254BT_cjs.topRoundedRectPath(x, y, length, thickness, TAB_RADIUS) };
1103
1191
  }
1104
1192
  }
1105
1193
  }
@@ -1108,7 +1196,7 @@ function renderTitleTab(input) {
1108
1196
  const padding = 16;
1109
1197
  const length = Math.max(120, input.title.length * input.fontSize * 0.62 + padding * 2);
1110
1198
  const box = tabBox(input, thickness, length);
1111
- const bounds = chunkYM3XFBI4_cjs.boxBounds(box, 6);
1199
+ const bounds = chunkCXL254BT_cjs.boxBounds(box, 6);
1112
1200
  const vertical = input.labelPosition === "left" || input.labelPosition === "right";
1113
1201
  return [
1114
1202
  {
@@ -1136,7 +1224,7 @@ function horizontalTitleText(input, box, padding, bounds) {
1136
1224
  width: Math.max(0, box.width - padding * 2),
1137
1225
  height: box.height,
1138
1226
  lines: [input.title],
1139
- fontFamily: input.fontFamily ?? chunkYM3XFBI4_cjs.DEFAULT_FONT,
1227
+ fontFamily: input.fontFamily ?? chunkCXL254BT_cjs.DEFAULT_FONT,
1140
1228
  fontSize: input.fontSize,
1141
1229
  fontWeight: input.fontWeight,
1142
1230
  color: input.textColor,
@@ -1160,7 +1248,7 @@ function verticalTitleText(input, box, padding, bounds) {
1160
1248
  width: textLength,
1161
1249
  height: textThickness,
1162
1250
  lines: [input.title],
1163
- fontFamily: input.fontFamily ?? chunkYM3XFBI4_cjs.DEFAULT_FONT,
1251
+ fontFamily: input.fontFamily ?? chunkCXL254BT_cjs.DEFAULT_FONT,
1164
1252
  fontSize: input.fontSize,
1165
1253
  fontWeight: input.fontWeight,
1166
1254
  color: input.textColor,
@@ -1181,7 +1269,7 @@ var SQUARED_CORNER_BY_LABEL_POSITION = {
1181
1269
  };
1182
1270
  function frameBoundaryNode(frame, order, hasTab) {
1183
1271
  const shadow = frame.shadow ?? true;
1184
- const bounds = chunkYM3XFBI4_cjs.boxBounds(
1272
+ const bounds = chunkCXL254BT_cjs.boxBounds(
1185
1273
  { x: frame.x, y: frame.y, width: frame.width, height: frame.height },
1186
1274
  frame.strokeWidth + (shadow ? 20 : 4)
1187
1275
  );
@@ -1216,7 +1304,7 @@ function frameBoundaryNode(frame, order, hasTab) {
1216
1304
  id: `frame-${frame.id}`,
1217
1305
  order,
1218
1306
  bounds,
1219
- d: chunkYM3XFBI4_cjs.cornersRoundedRectPath(frame.x, frame.y, frame.width, frame.height, radii),
1307
+ d: chunkCXL254BT_cjs.cornersRoundedRectPath(frame.x, frame.y, frame.width, frame.height, radii),
1220
1308
  detail: { of: "frameBoundary", cornerRadius: frame.cornerRadius, squareCorner: squared },
1221
1309
  style
1222
1310
  };
@@ -1305,7 +1393,7 @@ function labelBase(context, lane, index) {
1305
1393
  id: `swimlane-label-${context.swimlane.id}-${lane.id}`,
1306
1394
  order: context.order + 0.5 + index / 100,
1307
1395
  lines: [lane.label],
1308
- fontFamily: context.swimlane.fontFamily ?? chunkYM3XFBI4_cjs.DEFAULT_FONT,
1396
+ fontFamily: context.swimlane.fontFamily ?? chunkCXL254BT_cjs.DEFAULT_FONT,
1309
1397
  fontSize: context.swimlane.fontSize,
1310
1398
  fontWeight: context.swimlane.fontWeight,
1311
1399
  color: context.swimlane.textColor,
@@ -1321,7 +1409,7 @@ function horizontalLabel(context, lane, index) {
1321
1409
  const y = centerY - thickness / 2;
1322
1410
  return {
1323
1411
  ...labelBase(context, lane, index),
1324
- bounds: chunkYM3XFBI4_cjs.rotatedBounds({ x, y, width, height: thickness }, -90, 12),
1412
+ bounds: chunkCXL254BT_cjs.rotatedBounds({ x, y, width, height: thickness }, -90, 12),
1325
1413
  x,
1326
1414
  y,
1327
1415
  width,
@@ -1373,7 +1461,7 @@ function createSwimlaneRenderContext(swimlane, index) {
1373
1461
  return {
1374
1462
  swimlane,
1375
1463
  order: 5e3 + index,
1376
- bounds: chunkYM3XFBI4_cjs.boxBounds(
1464
+ bounds: chunkCXL254BT_cjs.boxBounds(
1377
1465
  { x: swimlane.x, y: swimlane.y, width: swimlane.width, height: swimlane.height },
1378
1466
  swimlane.strokeWidth + 4
1379
1467
  ),
@@ -1412,17 +1500,17 @@ function buildSwimlane(swimlane, index) {
1412
1500
  function buildContainers(input) {
1413
1501
  return [
1414
1502
  ...input.frames.flatMap(
1415
- (frame, index) => chunkYM3XFBI4_cjs.tag(buildFrame(frame, index), "frame", frame.id, void 0, frame.title ?? void 0)
1503
+ (frame, index) => chunkCXL254BT_cjs.tag(buildFrame(frame, index), "frame", frame.id, void 0, frame.title ?? void 0)
1416
1504
  ),
1417
- ...input.swimlanes.flatMap((swimlane, index) => chunkYM3XFBI4_cjs.tag(buildSwimlane(swimlane, index), "swimlane", swimlane.id))
1505
+ ...input.swimlanes.flatMap((swimlane, index) => chunkCXL254BT_cjs.tag(buildSwimlane(swimlane, index), "swimlane", swimlane.id))
1418
1506
  ];
1419
1507
  }
1420
1508
 
1421
1509
  // src/renderScene/artifacts/isometric.ts
1422
1510
  function isometricContext(object, index) {
1423
- const strokeWidth = Math.max(0, chunkYM3XFBI4_cjs.finite(object.strokeWidth, 1));
1424
- const rotation = chunkYM3XFBI4_cjs.finite(object.rotation, 0);
1425
- const box = chunkYM3XFBI4_cjs.isometricBounds(object);
1511
+ const strokeWidth = Math.max(0, chunkCXL254BT_cjs.finite(object.strokeWidth, 1));
1512
+ const rotation = chunkCXL254BT_cjs.finite(object.rotation, 0);
1513
+ const box = chunkCXL254BT_cjs.isometricBounds(object);
1426
1514
  const rotationCenter = { x: box.x + box.width / 2, y: box.y + box.height / 2 };
1427
1515
  return {
1428
1516
  object,
@@ -1434,7 +1522,7 @@ function isometricContext(object, index) {
1434
1522
  strokeWidth,
1435
1523
  common: {
1436
1524
  type: "path",
1437
- bounds: chunkYM3XFBI4_cjs.rotatedBounds(box, rotation, strokeWidth + 2),
1525
+ bounds: chunkCXL254BT_cjs.rotatedBounds(box, rotation, strokeWidth + 2),
1438
1526
  rotation,
1439
1527
  rotationCenter,
1440
1528
  style: {
@@ -1452,7 +1540,7 @@ function groundShadowNode(context, faces) {
1452
1540
  }
1453
1541
  const height = Math.max(0, object.height);
1454
1542
  const heightFactor = 0.6 + Math.min(1, height / 150) * 0.7;
1455
- const shadowDrop = height + chunkYM3XFBI4_cjs.finite(object.shadowStyle?.distance, 0);
1543
+ const shadowDrop = height + chunkCXL254BT_cjs.finite(object.shadowStyle?.distance, 0);
1456
1544
  const contactFootprint = faces.top.map((point) => ({ x: point.x, y: point.y + shadowDrop }));
1457
1545
  const footprintCenter = {
1458
1546
  x: contactFootprint.reduce((sum, point) => sum + point.x, 0) / contactFootprint.length,
@@ -1475,14 +1563,14 @@ function groundShadowNode(context, faces) {
1475
1563
  maxX: Math.max(...footprintXs),
1476
1564
  maxY: Math.max(...footprintYs)
1477
1565
  },
1478
- d: chunkYM3XFBI4_cjs.roundedPolygonPath(footprint, 0),
1566
+ d: chunkCXL254BT_cjs.roundedPolygonPath(footprint, 0),
1479
1567
  rotation,
1480
1568
  rotationCenter,
1481
1569
  style: {
1482
1570
  fill: { kind: "solid", color: object.shadowStyle?.color ?? "#000000" },
1483
1571
  stroke: { kind: "none" },
1484
1572
  opacity: Math.min(1, (object.shadowStyle?.opacity ?? 0.18) * heightFactor),
1485
- blur: chunkYM3XFBI4_cjs.finite(object.shadowStyle?.blur, 8),
1573
+ blur: chunkCXL254BT_cjs.finite(object.shadowStyle?.blur, 8),
1486
1574
  pointerEvents: "none"
1487
1575
  }
1488
1576
  };
@@ -1490,13 +1578,13 @@ function groundShadowNode(context, faces) {
1490
1578
  function faceNodes(context, faces, hullClip) {
1491
1579
  const { object, order, common } = context;
1492
1580
  const noStroke = { ...common.style, stroke: { kind: "none" } };
1493
- const faceFills = chunkYM3XFBI4_cjs.deriveFaceFills(object.fill ?? "#f8fafc");
1581
+ const faceFills = chunkCXL254BT_cjs.deriveFaceFills(object.fill ?? "#f8fafc");
1494
1582
  const colorProp = { prop: "style.fill", propKind: "color", propSolidOnly: true };
1495
1583
  const face = (name, offset, points, color2) => ({
1496
1584
  ...common,
1497
1585
  id: `isometric-${object.id}-${name}`,
1498
1586
  order: order + offset,
1499
- d: chunkYM3XFBI4_cjs.roundedPolygonPath(points, 0),
1587
+ d: chunkCXL254BT_cjs.roundedPolygonPath(points, 0),
1500
1588
  style: { ...noStroke, fill: { kind: "solid", color: color2 }, clip: hullClip },
1501
1589
  ...colorProp
1502
1590
  });
@@ -1536,8 +1624,8 @@ function hullNode(context, hullPath, cornerRadius) {
1536
1624
  depth: Math.max(0, object.depth),
1537
1625
  cornerRadius,
1538
1626
  bounds: box,
1539
- labelOffsetX: chunkYM3XFBI4_cjs.finite(object.labelOffsetX, 0),
1540
- labelOffsetY: chunkYM3XFBI4_cjs.finite(object.labelOffsetY, 0)
1627
+ labelOffsetX: chunkCXL254BT_cjs.finite(object.labelOffsetX, 0),
1628
+ labelOffsetY: chunkCXL254BT_cjs.finite(object.labelOffsetY, 0)
1541
1629
  },
1542
1630
  style: { ...common.style, fill: { kind: "none" } }
1543
1631
  };
@@ -1549,9 +1637,9 @@ var LABEL_PADDING_Y = 3;
1549
1637
  var LABEL_CHAR_WIDTH = 6.5;
1550
1638
  function labelPlacement(context) {
1551
1639
  const { object } = context;
1552
- const anchor = chunkYM3XFBI4_cjs.isometricTopFaceCenter(object);
1553
- const bottomY = anchor.y - LABEL_GAP + chunkYM3XFBI4_cjs.finite(object.labelOffsetY, 0);
1554
- return { anchor, centerX: anchor.x + chunkYM3XFBI4_cjs.finite(object.labelOffsetX, 0), topY: bottomY - LABEL_HEIGHT, bottomY };
1640
+ const anchor = chunkCXL254BT_cjs.isometricTopFaceCenter(object);
1641
+ const bottomY = anchor.y - LABEL_GAP + chunkCXL254BT_cjs.finite(object.labelOffsetY, 0);
1642
+ return { anchor, centerX: anchor.x + chunkCXL254BT_cjs.finite(object.labelOffsetX, 0), topY: bottomY - LABEL_HEIGHT, bottomY };
1555
1643
  }
1556
1644
  function labelTextNode(context, placement, text) {
1557
1645
  const { object, order, rotation, rotationCenter, box } = context;
@@ -1566,7 +1654,7 @@ function labelTextNode(context, placement, text) {
1566
1654
  width: box.width,
1567
1655
  height: LABEL_HEIGHT,
1568
1656
  lines: [text],
1569
- fontFamily: chunkYM3XFBI4_cjs.DEFAULT_FONT,
1657
+ fontFamily: chunkCXL254BT_cjs.DEFAULT_FONT,
1570
1658
  fontSize: 12,
1571
1659
  fontWeight: "normal",
1572
1660
  color: "#111827",
@@ -1639,10 +1727,10 @@ function labelNodes(context, text) {
1639
1727
  }
1640
1728
  function buildIsometricObject(object, index) {
1641
1729
  const context = isometricContext(object, index);
1642
- const faces = chunkYM3XFBI4_cjs.isometricFaces(object);
1643
- const cornerRadius = Math.max(0, chunkYM3XFBI4_cjs.finite(object.cornerRadius, 8));
1730
+ const faces = chunkCXL254BT_cjs.isometricFaces(object);
1731
+ const cornerRadius = Math.max(0, chunkCXL254BT_cjs.finite(object.cornerRadius, 8));
1644
1732
  const silhouette = [faces.top[0], faces.top[1], faces.right[2], faces.front[2], faces.front[3], faces.top[3]];
1645
- const hullPath = chunkYM3XFBI4_cjs.roundedPolygonPath(silhouette, cornerRadius);
1733
+ const hullPath = chunkCXL254BT_cjs.roundedPolygonPath(silhouette, cornerRadius);
1646
1734
  const hullClip = { type: "path", d: hullPath };
1647
1735
  const groundShadow = groundShadowNode(context, faces);
1648
1736
  const seams = seamsNode(context, faces, hullClip);
@@ -1653,7 +1741,7 @@ function buildIsometricObject(object, index) {
1653
1741
  }
1654
1742
  function buildIsometricObjects(objects) {
1655
1743
  return objects.flatMap(
1656
- (object, index) => chunkYM3XFBI4_cjs.tag(
1744
+ (object, index) => chunkCXL254BT_cjs.tag(
1657
1745
  buildIsometricObject(object, index),
1658
1746
  "isometric",
1659
1747
  object.id,
@@ -1682,7 +1770,7 @@ function renderEndpointLabel(context, end, labelIndex) {
1682
1770
  if (!label) {
1683
1771
  return [];
1684
1772
  }
1685
- const fontSize = chunkYM3XFBI4_cjs.finite(context.link.style?.fontSize, 10);
1773
+ const fontSize = chunkCXL254BT_cjs.finite(context.link.style?.fontSize, 10);
1686
1774
  const position = endpointLabelPosition(context.points, end);
1687
1775
  const width = 90;
1688
1776
  return [
@@ -1696,7 +1784,7 @@ function renderEndpointLabel(context, end, labelIndex) {
1696
1784
  width,
1697
1785
  height: fontSize * 2,
1698
1786
  lines: [label],
1699
- fontFamily: context.link.style?.fontFamily ?? chunkYM3XFBI4_cjs.DEFAULT_FONT,
1787
+ fontFamily: context.link.style?.fontFamily ?? chunkCXL254BT_cjs.DEFAULT_FONT,
1700
1788
  fontSize,
1701
1789
  fontWeight: "normal",
1702
1790
  color: context.color,
@@ -1726,7 +1814,7 @@ function renderMainLabel(context) {
1726
1814
  width: context.label.width,
1727
1815
  height: context.label.fontSize * 2,
1728
1816
  lines: context.label.lines,
1729
- fontFamily: context.link.style?.fontFamily ?? chunkYM3XFBI4_cjs.DEFAULT_FONT,
1817
+ fontFamily: context.link.style?.fontFamily ?? chunkCXL254BT_cjs.DEFAULT_FONT,
1730
1818
  fontSize: context.label.fontSize,
1731
1819
  fontWeight: "normal",
1732
1820
  color: context.color,
@@ -1780,10 +1868,10 @@ function linkBounds(points, padding) {
1780
1868
  }
1781
1869
  function labelLayout(link, measureText) {
1782
1870
  const visible = Boolean(link.showText && link.text);
1783
- const fontSize = chunkYM3XFBI4_cjs.finite(link.style?.fontSize, 10);
1871
+ const fontSize = chunkCXL254BT_cjs.finite(link.style?.fontSize, 10);
1784
1872
  const width = Math.min(250, Math.max(fontSize * 2, (link.text?.length ?? 0) * fontSize * 0.65 + 10));
1785
- const metrics = measureText?.(link.style?.fontFamily ?? chunkYM3XFBI4_cjs.DEFAULT_FONT, fontSize);
1786
- const lines = visible ? chunkYM3XFBI4_cjs.wrapText(link.text ?? "", width, fontSize, metrics) : [];
1873
+ const metrics = measureText?.(link.style?.fontFamily ?? chunkCXL254BT_cjs.DEFAULT_FONT, fontSize);
1874
+ const lines = visible ? chunkCXL254BT_cjs.wrapText(link.text ?? "", width, fontSize, metrics) : [];
1787
1875
  return { visible, fontSize, width, height: lines.length * fontSize * 1.4, lines };
1788
1876
  }
1789
1877
  function linkStyle(item, strokeWidth, color2, dash) {
@@ -1800,26 +1888,26 @@ function linkStyle(item, strokeWidth, color2, dash) {
1800
1888
  dash,
1801
1889
  lineCap: "round",
1802
1890
  lineJoin: "round",
1803
- opacity: chunkYM3XFBI4_cjs.finite(link.style?.opacity, 1),
1891
+ opacity: chunkCXL254BT_cjs.finite(link.style?.opacity, 1),
1804
1892
  shadow: resolveShadow(link.style?.shadow)
1805
1893
  };
1806
1894
  }
1807
1895
  function createLinkRenderContext(item, index, measureText) {
1808
1896
  const { link, from, to } = item;
1809
1897
  const pathType = link.style?.pathType ?? "orthogonal";
1810
- const { points, segments } = chunkYM3XFBI4_cjs.calculateLinkRoute(link, from, to, pathType);
1811
- const strokeWidth = chunkYM3XFBI4_cjs.finite(link.style?.strokeWidth, 2);
1898
+ const { points, segments } = chunkCXL254BT_cjs.calculateLinkRoute(link, from, to, pathType);
1899
+ const strokeWidth = chunkCXL254BT_cjs.finite(link.style?.strokeWidth, 2);
1812
1900
  const color2 = getLinkStrokeColor(link.style?.color) || "#64748b";
1813
1901
  const label = labelLayout(link, measureText);
1814
1902
  const contentDash = getDashArray(strokeWidth, link.style?.strokeStyle ?? "solid");
1815
- const gap = label.visible && !contentDash ? chunkYM3XFBI4_cjs.labelGapDash(points, pathType, label.width, label.height) : null;
1903
+ const gap = label.visible && !contentDash ? chunkCXL254BT_cjs.labelGapDash(points, pathType, label.width, label.height) : null;
1816
1904
  const dash = gap ? [gap.dashBefore, gap.gapLength, 1e6] : contentDash;
1817
1905
  return {
1818
1906
  link,
1819
1907
  pathType,
1820
1908
  points,
1821
1909
  segments,
1822
- midpoint: chunkYM3XFBI4_cjs.getLineMidpoint(points, pathType, from, to),
1910
+ midpoint: chunkCXL254BT_cjs.getLineMidpoint(points, pathType, from, to),
1823
1911
  strokeWidth,
1824
1912
  bounds: linkBounds(points, strokeWidth + 14),
1825
1913
  color: color2,
@@ -1865,7 +1953,7 @@ function pathData(points, pathType, segments, strokeWidth) {
1865
1953
  return `M ${points[0]} ${points[1]} C ${points[2]} ${points[3]} ${points[4]} ${points[5]} ${points[6]} ${points[7]}`;
1866
1954
  }
1867
1955
  if (pathType === "orthogonal" && segments.length > 0) {
1868
- return chunkYM3XFBI4_cjs.roundedOrthogonalPathData(segments, Math.max(16, strokeWidth * 4));
1956
+ return chunkCXL254BT_cjs.roundedOrthogonalPathData(segments, Math.max(16, strokeWidth * 4));
1869
1957
  }
1870
1958
  return polylinePathData(points);
1871
1959
  }
@@ -1969,7 +2057,7 @@ function buildLink(item, index, measureText) {
1969
2057
  }
1970
2058
  function buildLinks(links, measureText) {
1971
2059
  return links.flatMap(
1972
- (item, index) => chunkYM3XFBI4_cjs.tag(
2060
+ (item, index) => chunkCXL254BT_cjs.tag(
1973
2061
  buildLink(item, index, measureText),
1974
2062
  "link",
1975
2063
  item.link.id,
@@ -1984,7 +2072,7 @@ function buildFreeformPath(path, index) {
1984
2072
  if (path.isVisible === false || path.points.length < 2) {
1985
2073
  return [];
1986
2074
  }
1987
- const strokeWidth = chunkYM3XFBI4_cjs.finite(path.strokeWidth, 2);
2075
+ const strokeWidth = chunkCXL254BT_cjs.finite(path.strokeWidth, 2);
1988
2076
  const extra = strokeWidth + 12;
1989
2077
  const bounds = {
1990
2078
  minX: Math.min(...path.points.map((point) => point.x)) - extra,
@@ -1992,7 +2080,7 @@ function buildFreeformPath(path, index) {
1992
2080
  maxX: Math.max(...path.points.map((point) => point.x)) + extra,
1993
2081
  maxY: Math.max(...path.points.map((point) => point.y)) + extra
1994
2082
  };
1995
- const tension = chunkYM3XFBI4_cjs.finite(path.tension, 0);
2083
+ const tension = chunkCXL254BT_cjs.finite(path.tension, 0);
1996
2084
  const closed = path.closed === true;
1997
2085
  return [
1998
2086
  {
@@ -2000,7 +2088,7 @@ function buildFreeformPath(path, index) {
2000
2088
  id: `path-${path.id}`,
2001
2089
  order: 3e4 + index,
2002
2090
  bounds,
2003
- d: chunkYM3XFBI4_cjs.freeformPathData({ points: path.points, tension, closed }),
2091
+ d: chunkCXL254BT_cjs.freeformPathData({ points: path.points, tension, closed }),
2004
2092
  markerStart: path.startMarker,
2005
2093
  markerEnd: path.endMarker,
2006
2094
  detail: {
@@ -2016,13 +2104,13 @@ function buildFreeformPath(path, index) {
2016
2104
  dash: path.dash?.length ? path.dash : void 0,
2017
2105
  lineCap: "round",
2018
2106
  lineJoin: "round",
2019
- opacity: chunkYM3XFBI4_cjs.finite(path.opacity, 1)
2107
+ opacity: chunkCXL254BT_cjs.finite(path.opacity, 1)
2020
2108
  }
2021
2109
  }
2022
2110
  ];
2023
2111
  }
2024
2112
  function buildFreeformPaths(paths) {
2025
- return paths.flatMap((path, index) => chunkYM3XFBI4_cjs.tag(buildFreeformPath(path, index), "path", path.id, "path", "Path"));
2113
+ return paths.flatMap((path, index) => chunkCXL254BT_cjs.tag(buildFreeformPath(path, index), "path", path.id, "path", "Path"));
2026
2114
  }
2027
2115
 
2028
2116
  // src/renderScene/artifacts/shape/geometry/base.ts
@@ -2038,7 +2126,7 @@ function shapeNodeBase(context) {
2038
2126
 
2039
2127
  // src/renderScene/artifacts/shape/geometry/simple.ts
2040
2128
  function renderPath(context) {
2041
- const path = chunkYM3XFBI4_cjs.localShapePath(context.shape.shapeType, context.x, context.y, context.width, context.height);
2129
+ const path = chunkCXL254BT_cjs.localShapePath(context.shape.shapeType, context.x, context.y, context.width, context.height);
2042
2130
  if (!path) {
2043
2131
  return [];
2044
2132
  }
@@ -2054,7 +2142,7 @@ function renderBoundedPath(context) {
2054
2142
  }));
2055
2143
  }
2056
2144
  function renderRectangle(context) {
2057
- const rx = context.shape.shapeType === "pill" ? chunkYM3XFBI4_cjs.pillCornerRadius(context.width, context.height) : context.shape.shapeType === "rounded_rectangle" ? chunkYM3XFBI4_cjs.finite(context.shape.cornerRadius, 8) : 0;
2145
+ const rx = context.shape.shapeType === "pill" ? chunkCXL254BT_cjs.pillCornerRadius(context.width, context.height) : context.shape.shapeType === "rounded_rectangle" ? chunkCXL254BT_cjs.finite(context.shape.cornerRadius, 8) : 0;
2058
2146
  return [
2059
2147
  {
2060
2148
  ...shapeNodeBase(context),
@@ -2083,7 +2171,7 @@ function renderSymbol(context) {
2083
2171
  if (!context.shape.symbol || context.shape.symbol.points.length < 2) {
2084
2172
  return renderRectangle(context);
2085
2173
  }
2086
- const tension = chunkYM3XFBI4_cjs.finite(context.shape.symbol.tension, 0);
2174
+ const tension = chunkCXL254BT_cjs.finite(context.shape.symbol.tension, 0);
2087
2175
  const points = context.shape.symbol.points.map(([x, y]) => ({
2088
2176
  x: context.x + x * context.width,
2089
2177
  y: context.y + y * context.height
@@ -2092,7 +2180,7 @@ function renderSymbol(context) {
2092
2180
  {
2093
2181
  ...shapeNodeBase(context),
2094
2182
  type: "path",
2095
- d: chunkYM3XFBI4_cjs.freeformPathData({ points, tension, closed: true }),
2183
+ d: chunkCXL254BT_cjs.freeformPathData({ points, tension, closed: true }),
2096
2184
  rotationCenter: context.rotationCenter,
2097
2185
  detail: {
2098
2186
  of: "symbolGeometry",
@@ -2190,22 +2278,22 @@ function shapeDash(shape, strokeWidth) {
2190
2278
  }
2191
2279
  function shapeStyle(shape, diagnostics) {
2192
2280
  const defaults = shapeDefaults(shape, diagnostics);
2193
- const strokeWidth = chunkYM3XFBI4_cjs.finite(shape.strokeWidth, defaults.strokeWidth);
2281
+ const strokeWidth = chunkCXL254BT_cjs.finite(shape.strokeWidth, defaults.strokeWidth);
2194
2282
  const shadow = shape.shadowStyle ?? (shape.hasShadow ? { enabled: true, color: "#000000", opacity: 0.25, blur: 10, angle: 45, distance: 5 } : void 0);
2195
- const angle = chunkYM3XFBI4_cjs.finite(shadow?.angle, 45) * Math.PI / 180;
2283
+ const angle = chunkCXL254BT_cjs.finite(shadow?.angle, 45) * Math.PI / 180;
2196
2284
  return {
2197
- fill: chunkYM3XFBI4_cjs.paint(shape.fillColor, diagnostics, shape.id),
2198
- stroke: chunkYM3XFBI4_cjs.paint(shape.strokeColor, diagnostics, shape.id),
2285
+ fill: chunkCXL254BT_cjs.paint(shape.fillColor, diagnostics, shape.id),
2286
+ stroke: chunkCXL254BT_cjs.paint(shape.strokeColor, diagnostics, shape.id),
2199
2287
  strokeWidth,
2200
2288
  dash: shapeDash(shape, strokeWidth),
2201
2289
  lineCap: shape.strokeStyle === "dotted" ? "round" : "butt",
2202
- opacity: chunkYM3XFBI4_cjs.finite(shape.opacity, defaults.opacity),
2290
+ opacity: chunkCXL254BT_cjs.finite(shape.opacity, defaults.opacity),
2203
2291
  shadow: shadow?.enabled ? {
2204
2292
  color: shadow.color ?? "#000000",
2205
- opacity: chunkYM3XFBI4_cjs.finite(shadow.opacity, 0.25),
2206
- blur: chunkYM3XFBI4_cjs.finite(shadow.blur, 10),
2207
- dx: Math.cos(angle) * chunkYM3XFBI4_cjs.finite(shadow.distance, 5),
2208
- dy: Math.sin(angle) * chunkYM3XFBI4_cjs.finite(shadow.distance, 5)
2293
+ opacity: chunkCXL254BT_cjs.finite(shadow.opacity, 0.25),
2294
+ blur: chunkCXL254BT_cjs.finite(shadow.blur, 10),
2295
+ dx: Math.cos(angle) * chunkCXL254BT_cjs.finite(shadow.distance, 5),
2296
+ dy: Math.sin(angle) * chunkCXL254BT_cjs.finite(shadow.distance, 5)
2209
2297
  } : void 0
2210
2298
  };
2211
2299
  }
@@ -2281,11 +2369,11 @@ function renderShapeText(context, strokeWidth, measureText) {
2281
2369
  if (!shape.text) {
2282
2370
  return null;
2283
2371
  }
2284
- const fontSize = chunkYM3XFBI4_cjs.finite(shape.fontSize, shapeDefaults(shape, []).fontSize);
2372
+ const fontSize = chunkCXL254BT_cjs.finite(shape.fontSize, shapeDefaults(shape, []).fontSize);
2285
2373
  const padding = shape.isText ? 0 : Math.max(8, strokeWidth * 2);
2286
- const area = shape.shapeType === "person" ? chunkYM3XFBI4_cjs.personLabelArea(x, y, width, height) : { x, y, width, height };
2374
+ const area = shape.shapeType === "person" ? chunkCXL254BT_cjs.personLabelArea(x, y, width, height) : { x, y, width, height };
2287
2375
  const textWidth = Math.max(0, area.width - padding * 2);
2288
- const fontFamily2 = shape.fontFamily || chunkYM3XFBI4_cjs.DEFAULT_FONT;
2376
+ const fontFamily2 = shape.fontFamily || chunkCXL254BT_cjs.DEFAULT_FONT;
2289
2377
  const metrics = measureText?.(fontFamily2, fontSize);
2290
2378
  const textNode = {
2291
2379
  type: "text",
@@ -2296,7 +2384,7 @@ function renderShapeText(context, strokeWidth, measureText) {
2296
2384
  y: area.y + padding,
2297
2385
  width: textWidth,
2298
2386
  height: Math.max(0, area.height - padding * 2),
2299
- lines: chunkYM3XFBI4_cjs.wrapText(shape.text, textWidth, fontSize, metrics),
2387
+ lines: chunkCXL254BT_cjs.wrapText(shape.text, textWidth, fontSize, metrics),
2300
2388
  fontFamily: fontFamily2,
2301
2389
  fontSize,
2302
2390
  fontWeight: shape.fontWeight ?? "normal",
@@ -2304,12 +2392,12 @@ function renderShapeText(context, strokeWidth, measureText) {
2304
2392
  color: shape.textColor || "#111827",
2305
2393
  align: shape.textAlign ?? "center",
2306
2394
  verticalAlign: shape.textVerticalAlign ?? "middle",
2307
- lineHeight: chunkYM3XFBI4_cjs.finite(shape.lineHeight, 1.3),
2395
+ lineHeight: chunkCXL254BT_cjs.finite(shape.lineHeight, 1.3),
2308
2396
  rotation,
2309
2397
  rotationCenter
2310
2398
  };
2311
2399
  if (hasBoldMarkup(shape.text)) {
2312
- const { measure, spaceWidth } = metrics ?? chunkYM3XFBI4_cjs.heuristicRichMeasure(fontSize);
2400
+ const { measure, spaceWidth } = metrics ?? chunkCXL254BT_cjs.heuristicRichMeasure(fontSize);
2313
2401
  textNode.richLines = wrapRichText(shape.text, textWidth, measure, spaceWidth);
2314
2402
  }
2315
2403
  return textNode;
@@ -2348,19 +2436,19 @@ function renderDoubleStroke(context, strokeWidth) {
2348
2436
  return nodes;
2349
2437
  }
2350
2438
  function createRenderContext(shape, index, diagnostics) {
2351
- const x = chunkYM3XFBI4_cjs.finite(shape.x, 0);
2352
- const y = chunkYM3XFBI4_cjs.finite(shape.y, 0);
2353
- const width = Math.max(0, chunkYM3XFBI4_cjs.finite(shape.width, 100));
2354
- const height = Math.max(0, chunkYM3XFBI4_cjs.finite(shape.height, 100));
2355
- const rotation = chunkYM3XFBI4_cjs.finite(shape.rotation, 0);
2356
- const strokeWidth = chunkYM3XFBI4_cjs.finite(shape.strokeWidth, 2);
2439
+ const x = chunkCXL254BT_cjs.finite(shape.x, 0);
2440
+ const y = chunkCXL254BT_cjs.finite(shape.y, 0);
2441
+ const width = Math.max(0, chunkCXL254BT_cjs.finite(shape.width, 100));
2442
+ const height = Math.max(0, chunkCXL254BT_cjs.finite(shape.height, 100));
2443
+ const rotation = chunkCXL254BT_cjs.finite(shape.rotation, 0);
2444
+ const strokeWidth = chunkCXL254BT_cjs.finite(shape.strokeWidth, 2);
2357
2445
  return {
2358
2446
  strokeWidth,
2359
2447
  context: {
2360
2448
  shape,
2361
2449
  id: `shape-${shape.id}`,
2362
2450
  order: 1e4 + index,
2363
- bounds: chunkYM3XFBI4_cjs.rotatedBounds({ x, y, width, height }, rotation, strokeWidth + (shape.hasShadow ? 20 : 2)),
2451
+ bounds: chunkCXL254BT_cjs.rotatedBounds({ x, y, width, height }, rotation, strokeWidth + (shape.hasShadow ? 20 : 2)),
2364
2452
  rotation,
2365
2453
  rotationCenter: { x: x + width / 2, y: y + height / 2 },
2366
2454
  style: shapeStyle(shape, diagnostics),
@@ -2413,7 +2501,7 @@ function buildShape(shape, index, diagnostics, measureText) {
2413
2501
  }
2414
2502
  function buildShapes(shapes, diagnostics, measureText) {
2415
2503
  return shapes.flatMap(
2416
- (shape, index) => chunkYM3XFBI4_cjs.tag(
2504
+ (shape, index) => chunkCXL254BT_cjs.tag(
2417
2505
  buildShape(shape, index, diagnostics, measureText),
2418
2506
  "shape",
2419
2507
  shape.id,
@@ -2445,7 +2533,8 @@ var DEFAULT_ROLLING_NUMBER_STYLE = {
2445
2533
  fontFamily: "'Roboto Mono', 'SFMono-Regular', Consolas, monospace",
2446
2534
  variant: "flip",
2447
2535
  motion: "roll",
2448
- fontWeight: "300"
2536
+ fontWeight: "300",
2537
+ fontSize: 0
2449
2538
  };
2450
2539
  function resolveRollingNumberStyle(style) {
2451
2540
  return {
@@ -2456,23 +2545,24 @@ function resolveRollingNumberStyle(style) {
2456
2545
  fontFamily: style.fontFamily ?? DEFAULT_ROLLING_NUMBER_STYLE.fontFamily,
2457
2546
  variant: style.variant ?? DEFAULT_ROLLING_NUMBER_STYLE.variant,
2458
2547
  motion: style.motion ?? DEFAULT_ROLLING_NUMBER_STYLE.motion,
2459
- fontWeight: style.fontWeight ?? DEFAULT_ROLLING_NUMBER_STYLE.fontWeight
2548
+ fontWeight: style.fontWeight ?? DEFAULT_ROLLING_NUMBER_STYLE.fontWeight,
2549
+ fontSize: style.fontSize ?? DEFAULT_ROLLING_NUMBER_STYLE.fontSize
2460
2550
  };
2461
2551
  }
2462
2552
 
2463
2553
  // src/renderScene/artifacts/widget.ts
2464
2554
  function buildRollingNumber(widget, index) {
2465
- const x = chunkYM3XFBI4_cjs.finite(widget.x, 0);
2466
- const y = chunkYM3XFBI4_cjs.finite(widget.y, 0);
2467
- const width = Math.max(0, chunkYM3XFBI4_cjs.finite(widget.width, 160));
2468
- const height = Math.max(0, chunkYM3XFBI4_cjs.finite(widget.height, 90));
2469
- const rotation = chunkYM3XFBI4_cjs.finite(widget.rotation, 0);
2555
+ const x = chunkCXL254BT_cjs.finite(widget.x, 0);
2556
+ const y = chunkCXL254BT_cjs.finite(widget.y, 0);
2557
+ const width = Math.max(0, chunkCXL254BT_cjs.finite(widget.width, 160));
2558
+ const height = Math.max(0, chunkCXL254BT_cjs.finite(widget.height, 90));
2559
+ const rotation = chunkCXL254BT_cjs.finite(widget.rotation, 0);
2470
2560
  return [
2471
2561
  {
2472
2562
  id: `widget-${widget.id}`,
2473
2563
  type: "rolling-number",
2474
2564
  order: 1e4 + index,
2475
- bounds: chunkYM3XFBI4_cjs.rotatedBounds({ x, y, width, height }, rotation, 2),
2565
+ bounds: chunkCXL254BT_cjs.rotatedBounds({ x, y, width, height }, rotation, 2),
2476
2566
  x,
2477
2567
  y,
2478
2568
  width,
@@ -2480,26 +2570,26 @@ function buildRollingNumber(widget, index) {
2480
2570
  rotation,
2481
2571
  value: formatRollingNumber(widget.value, widget.digits),
2482
2572
  digits: widget.digits,
2483
- duration: Math.max(0, chunkYM3XFBI4_cjs.finite(widget.duration, 420)),
2573
+ duration: Math.max(0, chunkCXL254BT_cjs.finite(widget.duration, 420)),
2484
2574
  label: widget.label,
2485
2575
  widgetStyle: resolveRollingNumberStyle(widget.style)
2486
2576
  }
2487
2577
  ];
2488
2578
  }
2489
2579
  function buildTickScale(widget, index) {
2490
- const x = chunkYM3XFBI4_cjs.finite(widget.x, 0);
2491
- const y = chunkYM3XFBI4_cjs.finite(widget.y, 0);
2492
- const width = Math.max(0, chunkYM3XFBI4_cjs.finite(widget.width, 200));
2493
- const height = Math.max(0, chunkYM3XFBI4_cjs.finite(widget.height, 200));
2494
- const rotation = chunkYM3XFBI4_cjs.finite(widget.rotation, 0);
2495
- const max = chunkYM3XFBI4_cjs.finite(widget.max, 100) || 100;
2496
- const progress = Math.min(1, Math.max(0, chunkYM3XFBI4_cjs.finite(Number(widget.value), 0) / max));
2580
+ const x = chunkCXL254BT_cjs.finite(widget.x, 0);
2581
+ const y = chunkCXL254BT_cjs.finite(widget.y, 0);
2582
+ const width = Math.max(0, chunkCXL254BT_cjs.finite(widget.width, 200));
2583
+ const height = Math.max(0, chunkCXL254BT_cjs.finite(widget.height, 200));
2584
+ const rotation = chunkCXL254BT_cjs.finite(widget.rotation, 0);
2585
+ const max = chunkCXL254BT_cjs.finite(widget.max, 100) || 100;
2586
+ const progress = Math.min(1, Math.max(0, chunkCXL254BT_cjs.finite(Number(widget.value), 0) / max));
2497
2587
  const nodes = [
2498
2588
  {
2499
2589
  id: `widget-${widget.id}`,
2500
2590
  type: "shader-surface",
2501
2591
  order: 1e4 + index,
2502
- bounds: chunkYM3XFBI4_cjs.rotatedBounds({ x, y, width, height }, rotation, 2),
2592
+ bounds: chunkCXL254BT_cjs.rotatedBounds({ x, y, width, height }, rotation, 2),
2503
2593
  x,
2504
2594
  y,
2505
2595
  width,
@@ -2516,12 +2606,12 @@ function buildTickScale(widget, index) {
2516
2606
  }
2517
2607
  function buildTickLabels(widget, box) {
2518
2608
  const labels = widget.labels ?? {};
2519
- const ticks = Math.max(1, chunkYM3XFBI4_cjs.finite(Number(widget.parameters.ticks), 48));
2520
- const major = Math.max(1, chunkYM3XFBI4_cjs.finite(Number(widget.parameters.major), 5));
2521
- const start = chunkYM3XFBI4_cjs.finite(Number(widget.parameters.start), 225) * Math.PI / 180;
2522
- const sweep = chunkYM3XFBI4_cjs.finite(Number(widget.parameters.sweep), 270) * Math.PI / 180;
2523
- const radius = chunkYM3XFBI4_cjs.finite(Number(widget.parameters.radius), 0.9) + chunkYM3XFBI4_cjs.finite(labels.offset, 0.08);
2524
- const fontSize = chunkYM3XFBI4_cjs.finite(labels.size, 12);
2609
+ const ticks = Math.max(1, chunkCXL254BT_cjs.finite(Number(widget.parameters.ticks), 48));
2610
+ const major = Math.max(1, chunkCXL254BT_cjs.finite(Number(widget.parameters.major), 5));
2611
+ const start = chunkCXL254BT_cjs.finite(Number(widget.parameters.start), 225) * Math.PI / 180;
2612
+ const sweep = chunkCXL254BT_cjs.finite(Number(widget.parameters.sweep), 270) * Math.PI / 180;
2613
+ const radius = chunkCXL254BT_cjs.finite(Number(widget.parameters.radius), 0.9) + chunkCXL254BT_cjs.finite(labels.offset, 0.08);
2614
+ const fontSize = chunkCXL254BT_cjs.finite(labels.size, 12);
2525
2615
  const centerX = box.x + box.width / 2;
2526
2616
  const centerY = box.y + box.height / 2;
2527
2617
  const count = Math.floor(ticks / major);
@@ -2536,10 +2626,10 @@ function buildTickLabels(widget, box) {
2536
2626
  id: `widget-${widget.id}-label-${step}`,
2537
2627
  type: "text",
2538
2628
  order: box.order + 0.1,
2539
- bounds: chunkYM3XFBI4_cjs.rotatedBounds(labelBox, 0, 2),
2629
+ bounds: chunkCXL254BT_cjs.rotatedBounds(labelBox, 0, 2),
2540
2630
  ...labelBox,
2541
2631
  lines: [String(Math.round(box.max * fraction * 10) / 10)],
2542
- fontFamily: labels.fontFamily || chunkYM3XFBI4_cjs.DEFAULT_FONT,
2632
+ fontFamily: labels.fontFamily || chunkCXL254BT_cjs.DEFAULT_FONT,
2543
2633
  fontSize,
2544
2634
  fontWeight: labels.weight ?? "normal",
2545
2635
  color: labels.color || "#8f95c4",
@@ -2551,20 +2641,20 @@ function buildTickLabels(widget, box) {
2551
2641
  return nodes;
2552
2642
  }
2553
2643
  function buildRuler(widget, index) {
2554
- const x = chunkYM3XFBI4_cjs.finite(widget.x, 0);
2555
- const y = chunkYM3XFBI4_cjs.finite(widget.y, 0);
2556
- const width = Math.max(0, chunkYM3XFBI4_cjs.finite(widget.width, 120));
2557
- const height = Math.max(0, chunkYM3XFBI4_cjs.finite(widget.height, 360));
2558
- const rotation = chunkYM3XFBI4_cjs.finite(widget.rotation, 0);
2559
- const min = chunkYM3XFBI4_cjs.finite(widget.min, 0);
2560
- const max = chunkYM3XFBI4_cjs.finite(widget.max, 100);
2561
- const progress = max === min ? 0 : Math.min(1, Math.max(0, (chunkYM3XFBI4_cjs.finite(Number(widget.value), min) - min) / (max - min)));
2644
+ const x = chunkCXL254BT_cjs.finite(widget.x, 0);
2645
+ const y = chunkCXL254BT_cjs.finite(widget.y, 0);
2646
+ const width = Math.max(0, chunkCXL254BT_cjs.finite(widget.width, 120));
2647
+ const height = Math.max(0, chunkCXL254BT_cjs.finite(widget.height, 360));
2648
+ const rotation = chunkCXL254BT_cjs.finite(widget.rotation, 0);
2649
+ const min = chunkCXL254BT_cjs.finite(widget.min, 0);
2650
+ const max = chunkCXL254BT_cjs.finite(widget.max, 100);
2651
+ const progress = max === min ? 0 : Math.min(1, Math.max(0, (chunkCXL254BT_cjs.finite(Number(widget.value), min) - min) / (max - min)));
2562
2652
  const nodes = [
2563
2653
  {
2564
2654
  id: `widget-${widget.id}`,
2565
2655
  type: "shader-surface",
2566
2656
  order: 1e4 + index,
2567
- bounds: chunkYM3XFBI4_cjs.rotatedBounds({ x, y, width, height }, rotation, 2),
2657
+ bounds: chunkCXL254BT_cjs.rotatedBounds({ x, y, width, height }, rotation, 2),
2568
2658
  x,
2569
2659
  y,
2570
2660
  width,
@@ -2582,14 +2672,14 @@ function buildRuler(widget, index) {
2582
2672
  function buildRulerLabels(widget, box) {
2583
2673
  const labels = widget.labels ?? {};
2584
2674
  const horizontal = widget.parameters.axis === "horizontal";
2585
- const ticks = Math.max(1, chunkYM3XFBI4_cjs.finite(Number(widget.parameters.ticks), 50));
2586
- const major = Math.max(1, chunkYM3XFBI4_cjs.finite(Number(widget.parameters.major), 5));
2587
- const inset = chunkYM3XFBI4_cjs.finite(Number(widget.parameters.inset), 0.05) > 0 ? chunkYM3XFBI4_cjs.finite(Number(widget.parameters.inset), 0.05) : 0.05;
2588
- const line = chunkYM3XFBI4_cjs.finite(Number(widget.parameters.line), 0.7) > 0 ? chunkYM3XFBI4_cjs.finite(Number(widget.parameters.line), 0.7) : 0.7;
2675
+ const ticks = Math.max(1, chunkCXL254BT_cjs.finite(Number(widget.parameters.ticks), 50));
2676
+ const major = Math.max(1, chunkCXL254BT_cjs.finite(Number(widget.parameters.major), 5));
2677
+ const inset = chunkCXL254BT_cjs.finite(Number(widget.parameters.inset), 0.05) > 0 ? chunkCXL254BT_cjs.finite(Number(widget.parameters.inset), 0.05) : 0.05;
2678
+ const line = chunkCXL254BT_cjs.finite(Number(widget.parameters.line), 0.7) > 0 ? chunkCXL254BT_cjs.finite(Number(widget.parameters.line), 0.7) : 0.7;
2589
2679
  const across = horizontal ? box.height : box.width;
2590
- const tickLength = (chunkYM3XFBI4_cjs.finite(Number(widget.parameters.length), 0.1) > 0 ? chunkYM3XFBI4_cjs.finite(Number(widget.parameters.length), 0.1) : 0.1) * across * 1.9;
2591
- const edge = line * across - 0.12 * across - tickLength - chunkYM3XFBI4_cjs.finite(labels.offset, 0.04) * across;
2592
- const fontSize = chunkYM3XFBI4_cjs.finite(labels.size, 12);
2680
+ const tickLength = (chunkCXL254BT_cjs.finite(Number(widget.parameters.length), 0.1) > 0 ? chunkCXL254BT_cjs.finite(Number(widget.parameters.length), 0.1) : 0.1) * across * 1.9;
2681
+ const edge = line * across - 0.12 * across - tickLength - chunkCXL254BT_cjs.finite(labels.offset, 0.04) * across;
2682
+ const fontSize = chunkCXL254BT_cjs.finite(labels.size, 12);
2593
2683
  const count = Math.floor(ticks / major);
2594
2684
  const nodes = [];
2595
2685
  for (let step = 0; step <= count; step += 1) {
@@ -2600,10 +2690,10 @@ function buildRulerLabels(widget, box) {
2600
2690
  id: `widget-${widget.id}-label-${step}`,
2601
2691
  type: "text",
2602
2692
  order: box.order + 0.1,
2603
- bounds: chunkYM3XFBI4_cjs.rotatedBounds(labelBox, 0, 2),
2693
+ bounds: chunkCXL254BT_cjs.rotatedBounds(labelBox, 0, 2),
2604
2694
  ...labelBox,
2605
2695
  lines: [String(Math.round((box.min + (box.max - box.min) * fraction) * 10) / 10)],
2606
- fontFamily: labels.fontFamily || chunkYM3XFBI4_cjs.DEFAULT_FONT,
2696
+ fontFamily: labels.fontFamily || chunkCXL254BT_cjs.DEFAULT_FONT,
2607
2697
  fontSize,
2608
2698
  fontWeight: labels.weight ?? "normal",
2609
2699
  color: labels.color || "#8f95c4",
@@ -2616,7 +2706,7 @@ function buildRulerLabels(widget, box) {
2616
2706
  }
2617
2707
  function buildWidgets(widgets) {
2618
2708
  return widgets.flatMap(
2619
- (widget, index) => chunkYM3XFBI4_cjs.tag(
2709
+ (widget, index) => chunkCXL254BT_cjs.tag(
2620
2710
  widget.type === "tickScale" ? buildTickScale(widget, index) : widget.type === "ruler" ? buildRuler(widget, index) : buildRollingNumber(widget, index),
2621
2711
  "widget",
2622
2712
  widget.id,
@@ -2633,7 +2723,7 @@ function buildXAxisLabel(chart, layout, order) {
2633
2723
  return null;
2634
2724
  }
2635
2725
  return {
2636
- ...chunkYM3XFBI4_cjs.chartText({
2726
+ ...chunkCXL254BT_cjs.chartText({
2637
2727
  role: "axis",
2638
2728
  id: `chart-x-label-${chart.id}`,
2639
2729
  order,
@@ -2643,7 +2733,7 @@ function buildXAxisLabel(chart, layout, order) {
2643
2733
  chart,
2644
2734
  align: "center"
2645
2735
  }),
2646
- prop: chunkYM3XFBI4_cjs.axisLabelProp("x")
2736
+ prop: chunkCXL254BT_cjs.axisLabelProp("x")
2647
2737
  };
2648
2738
  }
2649
2739
  function buildYAxisLabel(chart, layout, order) {
@@ -2651,7 +2741,7 @@ function buildYAxisLabel(chart, layout, order) {
2651
2741
  return null;
2652
2742
  }
2653
2743
  return {
2654
- ...chunkYM3XFBI4_cjs.chartText({
2744
+ ...chunkCXL254BT_cjs.chartText({
2655
2745
  role: "axis",
2656
2746
  id: `chart-y-label-${chart.id}`,
2657
2747
  order,
@@ -2667,7 +2757,7 @@ function buildYAxisLabel(chart, layout, order) {
2667
2757
  align: "center",
2668
2758
  rotation: -90
2669
2759
  }),
2670
- prop: chunkYM3XFBI4_cjs.axisLabelProp("y")
2760
+ prop: chunkCXL254BT_cjs.axisLabelProp("y")
2671
2761
  };
2672
2762
  }
2673
2763
  function buildAxisLabels(chart, layout, order) {
@@ -2690,7 +2780,7 @@ function buildBoxplotSeriesYAxisTicks(chart, layout, order) {
2690
2780
  return chart.series.map((series, index) => {
2691
2781
  const centerY = layout.plot.y + (index + 0.5) * slotWidth;
2692
2782
  return {
2693
- ...chunkYM3XFBI4_cjs.chartText({
2783
+ ...chunkCXL254BT_cjs.chartText({
2694
2784
  role: "axis",
2695
2785
  id: `chart-y-tick-${chart.id}-${index}`,
2696
2786
  order: order + index,
@@ -2700,7 +2790,7 @@ function buildBoxplotSeriesYAxisTicks(chart, layout, order) {
2700
2790
  chart,
2701
2791
  align: "right"
2702
2792
  }),
2703
- prop: chunkYM3XFBI4_cjs.seriesLabelProp(series.id)
2793
+ prop: chunkCXL254BT_cjs.seriesLabelProp(series.id)
2704
2794
  };
2705
2795
  });
2706
2796
  }
@@ -2726,7 +2816,7 @@ function isStackedLegendPosition(position) {
2726
2816
  return position === "bottomLeft" || position === "bottomRight";
2727
2817
  }
2728
2818
  function legendItemWidths(chart) {
2729
- return legendSeries(chart).map((item) => Math.max(42, item.label.length * chunkYM3XFBI4_cjs.finite(chart.fontSize, 12) * 0.58 + 22));
2819
+ return legendSeries(chart).map((item) => Math.max(42, item.label.length * chunkCXL254BT_cjs.finite(chart.fontSize, 12) * 0.58 + 22));
2730
2820
  }
2731
2821
  function stackedLegendColumnWidth(chart) {
2732
2822
  const widths = legendItemWidths(chart);
@@ -2779,9 +2869,9 @@ function renderLegendItem(render2, item) {
2779
2869
  }
2780
2870
  function createLegendSwatch(render2, item) {
2781
2871
  const { chart, bounds, diagnostics } = render2;
2782
- const fallback = chunkYM3XFBI4_cjs.CHART_COLORS[item.seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length];
2872
+ const fallback = chunkCXL254BT_cjs.CHART_COLORS[item.seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length];
2783
2873
  const solidOnly = chart.chartType === "line";
2784
- const color2 = solidOnly ? chunkYM3XFBI4_cjs.representativeColor(item.series.color, fallback) : item.series.color ?? fallback;
2874
+ const color2 = solidOnly ? chunkCXL254BT_cjs.representativeColor(item.series.color, fallback) : item.series.color ?? fallback;
2785
2875
  return {
2786
2876
  type: "rect",
2787
2877
  id: `chart-legend-swatch-${chart.id}-${item.series.id}`,
@@ -2792,16 +2882,16 @@ function createLegendSwatch(render2, item) {
2792
2882
  width: 10,
2793
2883
  height: 10,
2794
2884
  rx: 3,
2795
- prop: chunkYM3XFBI4_cjs.seriesColorProp(item.series.id),
2885
+ prop: chunkCXL254BT_cjs.seriesColorProp(item.series.id),
2796
2886
  propKind: "color",
2797
2887
  propSolidOnly: solidOnly,
2798
- style: { fill: chunkYM3XFBI4_cjs.paint(color2, diagnostics, chart.id) }
2888
+ style: { fill: chunkCXL254BT_cjs.paint(color2, diagnostics, chart.id) }
2799
2889
  };
2800
2890
  }
2801
2891
  function createLegendLabel(render2, item) {
2802
2892
  const { chart, bounds } = render2;
2803
2893
  return {
2804
- ...chunkYM3XFBI4_cjs.chartText({
2894
+ ...chunkCXL254BT_cjs.chartText({
2805
2895
  role: "legend",
2806
2896
  id: `chart-legend-${chart.id}-${item.series.id}`,
2807
2897
  order: item.order + 1,
@@ -2810,7 +2900,7 @@ function createLegendLabel(render2, item) {
2810
2900
  text: item.series.label,
2811
2901
  chart
2812
2902
  }),
2813
- prop: chunkYM3XFBI4_cjs.seriesLabelProp(item.series.id)
2903
+ prop: chunkCXL254BT_cjs.seriesLabelProp(item.series.id)
2814
2904
  };
2815
2905
  }
2816
2906
 
@@ -2829,13 +2919,13 @@ function hasCartesianDecorations(chart) {
2829
2919
  return !CHARTS_WITHOUT_CARTESIAN_DECORATIONS.has(chart.chartType);
2830
2920
  }
2831
2921
  function tickOffset(chart) {
2832
- return hasCartesianDecorations(chart) ? Math.max(0, chunkYM3XFBI4_cjs.finite(chart.tickLength, 0)) : 0;
2922
+ return hasCartesianDecorations(chart) ? Math.max(0, chunkCXL254BT_cjs.finite(chart.tickLength, 0)) : 0;
2833
2923
  }
2834
2924
  function isHorizontalBoxplot(chart) {
2835
2925
  return chart.chartType === "boxplot" && chart.config?.orientation === "horizontal";
2836
2926
  }
2837
2927
  function boxplotCategoryLabelWidth(chart) {
2838
- const fontSize = chunkYM3XFBI4_cjs.finite(chart.fontSize, 12);
2928
+ const fontSize = chunkCXL254BT_cjs.finite(chart.fontSize, 12);
2839
2929
  const longest = Math.max(0, ...chart.series.map((series) => (series.label || series.id).length));
2840
2930
  return longest * fontSize * 0.58 + 16;
2841
2931
  }
@@ -2847,7 +2937,7 @@ function treemapSideLegendSide(chart, showLegend) {
2847
2937
  return chart.legendPosition === "left" ? "left" : chart.legendPosition === "right" ? "right" : null;
2848
2938
  }
2849
2939
  function barCategoryLabelWidth(chart) {
2850
- const fontSize = chunkYM3XFBI4_cjs.finite(chart.axisFontSize ?? chart.fontSize, 12);
2940
+ const fontSize = chunkCXL254BT_cjs.finite(chart.axisFontSize ?? chart.fontSize, 12);
2851
2941
  const categories = chart.config?.categories ?? [];
2852
2942
  return Math.max(0, ...categories.map((category) => category.length)) * fontSize * 0.58 + 16;
2853
2943
  }
@@ -2855,7 +2945,7 @@ function leftLabelWidth(chart) {
2855
2945
  if (isHorizontalBoxplot(chart)) {
2856
2946
  return boxplotCategoryLabelWidth(chart);
2857
2947
  }
2858
- if (chunkYM3XFBI4_cjs.isHorizontalBar(chart)) {
2948
+ if (chunkCXL254BT_cjs.isHorizontalBar(chart)) {
2859
2949
  return chart.categoryAlign === "left" || chart.categoryAlign === "inside" ? 20 : barCategoryLabelWidth(chart);
2860
2950
  }
2861
2951
  if (chart.showValueAxis === false) {
@@ -2876,17 +2966,17 @@ function decorations(chart) {
2876
2966
  const padLeft = tick + (showLabels ? leftLabelWidth(chart) : 12) + (legendPosition === "bottomLeft" ? sideColumnWidth : 0) + (treemapSide === "left" ? TREEMAP_SIDE_LEGEND_WIDTH : 0);
2877
2967
  const padRight = 24 + (legendPosition === "bottomRight" ? sideColumnWidth : 0) + (treemapSide === "right" ? TREEMAP_SIDE_LEGEND_WIDTH : 0);
2878
2968
  const valueRow = chart.chartType === "bar" && chart.config?.showBarLabels === true && chart.config.barLabelPosition === "axis";
2879
- const horizontalValueAxis = chunkYM3XFBI4_cjs.isHorizontalBar(chart) && chart.showValueAxis !== false;
2880
- const basePadBottom = showLabels ? chunkYM3XFBI4_cjs.isHorizontalBar(chart) ? horizontalValueAxis ? 34 : 12 : (chart.axisX.label ? 52 : 34) + (valueRow ? 18 : 0) : 12;
2969
+ const horizontalValueAxis = chunkCXL254BT_cjs.isHorizontalBar(chart) && chart.showValueAxis !== false;
2970
+ const basePadBottom = showLabels ? chunkCXL254BT_cjs.isHorizontalBar(chart) ? horizontalValueAxis ? 34 : 12 : (chart.axisX.label ? 52 : 34) + (valueRow ? 18 : 0) : 12;
2881
2971
  const hasColorBar = chart.chartType === "field" && showLegend && Boolean(chart.config?.scale?.stops.length);
2882
2972
  const legendAtBottomRow = hasLegendItems && !legendAtTop && !legendStacked;
2883
2973
  const padBottom = tick + basePadBottom + (hasColorBar ? 44 : 0) + (legendAtBottomRow ? 16 + LEGEND_ROW_HEIGHT : 0);
2884
- const titleHeight = chart.title ? Math.max(44, 20 + chunkYM3XFBI4_cjs.finite(chart.titleSize, 14) * 1.6) : 0;
2974
+ const titleHeight = chart.title ? Math.max(44, 20 + chunkCXL254BT_cjs.finite(chart.titleSize, 14) * 1.6) : 0;
2885
2975
  const padTop = titleHeight || (legendAtTop && hasLegendItems ? 44 : 24);
2886
2976
  return {
2887
- bounds: chunkYM3XFBI4_cjs.boxBounds(
2977
+ bounds: chunkCXL254BT_cjs.boxBounds(
2888
2978
  { x: chart.x, y: chart.y, width: chart.width, height: chart.height },
2889
- chunkYM3XFBI4_cjs.finite(chart.strokeWidth, 1) + 2
2979
+ chunkCXL254BT_cjs.finite(chart.strokeWidth, 1) + 2
2890
2980
  ),
2891
2981
  plot: {
2892
2982
  x: chart.x + padLeft,
@@ -2908,19 +2998,19 @@ function categoryLabels(chart, count) {
2908
2998
  return Array.from({ length: count }, (_value, index) => String(index + 1));
2909
2999
  }
2910
3000
  function buildCategoricalXAxisTicks(chart, layout, order) {
2911
- const count = chunkYM3XFBI4_cjs.barCategoryCount(chart);
3001
+ const count = chunkCXL254BT_cjs.barCategoryCount(chart);
2912
3002
  const slotWidth = layout.plot.width / count;
2913
3003
  const labels = categoryLabels(chart, count);
2914
3004
  const editable = Boolean(chart.config?.categories?.length);
2915
3005
  const left = chart.categoryAlign === "left";
2916
3006
  const groupGap = left ? Math.min(
2917
- Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.barGroupGap, 8)),
3007
+ Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.barGroupGap, 8)),
2918
3008
  Math.max(0, slotWidth - 1)
2919
3009
  ) : 0;
2920
3010
  return Array.from({ length: count }, (_value, index) => {
2921
3011
  const centerX = layout.plot.x + (index + 0.5) * slotWidth;
2922
3012
  return {
2923
- ...chunkYM3XFBI4_cjs.chartText({
3013
+ ...chunkCXL254BT_cjs.chartText({
2924
3014
  role: "axis",
2925
3015
  id: `chart-x-tick-${chart.id}-${index}`,
2926
3016
  order: order + index,
@@ -2935,7 +3025,7 @@ function buildCategoricalXAxisTicks(chart, layout, order) {
2935
3025
  chart,
2936
3026
  align: left ? "left" : "center"
2937
3027
  }),
2938
- prop: editable ? chunkYM3XFBI4_cjs.categoryProp(index) : void 0
3028
+ prop: editable ? chunkCXL254BT_cjs.categoryProp(index) : void 0
2939
3029
  };
2940
3030
  });
2941
3031
  }
@@ -2945,7 +3035,7 @@ function buildSeriesXAxisTicks(chart, layout, order) {
2945
3035
  return chart.series.map((series, index) => {
2946
3036
  const centerX = layout.plot.x + (index + 0.5) * slotWidth;
2947
3037
  return {
2948
- ...chunkYM3XFBI4_cjs.chartText({
3038
+ ...chunkCXL254BT_cjs.chartText({
2949
3039
  role: "axis",
2950
3040
  id: `chart-x-tick-${chart.id}-${index}`,
2951
3041
  order: order + index,
@@ -2960,16 +3050,16 @@ function buildSeriesXAxisTicks(chart, layout, order) {
2960
3050
  chart,
2961
3051
  align: "center"
2962
3052
  }),
2963
- prop: chunkYM3XFBI4_cjs.seriesLabelProp(series.id)
3053
+ prop: chunkCXL254BT_cjs.seriesLabelProp(series.id)
2964
3054
  };
2965
3055
  });
2966
3056
  }
2967
3057
 
2968
3058
  // src/renderScene/charts/decorations/numericXAxis.ts
2969
3059
  function buildNumericXAxisTicks(chart, layout, order) {
2970
- return chunkYM3XFBI4_cjs.chartTicks(chart.axisX).map((tick, index) => {
2971
- const x = layout.plot.x + chunkYM3XFBI4_cjs.mapChartValue(tick, chart.axisX, layout.plot.width);
2972
- return chunkYM3XFBI4_cjs.chartText({
3060
+ return chunkCXL254BT_cjs.chartTicks(chart.axisX).map((tick, index) => {
3061
+ const x = layout.plot.x + chunkCXL254BT_cjs.mapChartValue(tick, chart.axisX, layout.plot.width);
3062
+ return chunkCXL254BT_cjs.chartText({
2973
3063
  role: "axis",
2974
3064
  id: `chart-x-tick-${chart.id}-${tick}`,
2975
3065
  order: order + index,
@@ -2984,9 +3074,9 @@ function buildNumericXAxisTicks(chart, layout, order) {
2984
3074
 
2985
3075
  // src/renderScene/charts/decorations/numericYAxis.ts
2986
3076
  function buildNumericYAxisTicks(chart, layout, order) {
2987
- return chunkYM3XFBI4_cjs.chartTicks(chart.axisY).map((tick, index) => {
2988
- const y = layout.plot.y + layout.plot.height - chunkYM3XFBI4_cjs.mapChartValue(tick, chart.axisY, layout.plot.height);
2989
- return chunkYM3XFBI4_cjs.chartText({
3077
+ return chunkCXL254BT_cjs.chartTicks(chart.axisY).map((tick, index) => {
3078
+ const y = layout.plot.y + layout.plot.height - chunkCXL254BT_cjs.mapChartValue(tick, chart.axisY, layout.plot.height);
3079
+ return chunkCXL254BT_cjs.chartText({
2990
3080
  role: "axis",
2991
3081
  id: `chart-y-tick-${chart.id}-${tick}`,
2992
3082
  order: order + index,
@@ -3021,10 +3111,10 @@ function buildYAxisTicks(chart, layout, order) {
3021
3111
  function xTickPositions(chart, layout) {
3022
3112
  const { plot } = layout;
3023
3113
  if (chart.chartType === "bar") {
3024
- const count = chunkYM3XFBI4_cjs.barCategoryCount(chart);
3114
+ const count = chunkCXL254BT_cjs.barCategoryCount(chart);
3025
3115
  return Array.from({ length: count }, (_value, index) => plot.x + (index + 0.5) * plot.width / count);
3026
3116
  }
3027
- return chunkYM3XFBI4_cjs.chartTicks(chart.axisX).map((tick) => plot.x + chunkYM3XFBI4_cjs.mapChartValue(tick, chart.axisX, plot.width));
3117
+ return chunkCXL254BT_cjs.chartTicks(chart.axisX).map((tick) => plot.x + chunkCXL254BT_cjs.mapChartValue(tick, chart.axisX, plot.width));
3028
3118
  }
3029
3119
  function axisLineDash(chart, width) {
3030
3120
  if (chart.axisLineStyle === "dashed") {
@@ -3033,8 +3123,8 @@ function axisLineDash(chart, width) {
3033
3123
  return chart.axisLineStyle === "dotted" ? { dash: [0.1, width * 3], lineCap: "round" } : {};
3034
3124
  }
3035
3125
  function buildAxisLines(chart, layout, order) {
3036
- const lineWidth = chunkYM3XFBI4_cjs.finite(chart.axisLineWidth, 0);
3037
- const tickLength = chunkYM3XFBI4_cjs.finite(chart.tickLength, 0);
3126
+ const lineWidth = chunkCXL254BT_cjs.finite(chart.axisLineWidth, 0);
3127
+ const tickLength = chunkCXL254BT_cjs.finite(chart.tickLength, 0);
3038
3128
  if (lineWidth <= 0 && tickLength <= 0) {
3039
3129
  return [];
3040
3130
  }
@@ -3055,20 +3145,20 @@ function buildAxisLines(chart, layout, order) {
3055
3145
  }
3056
3146
  add("line-x", `M ${plot.x} ${bottom} L ${plot.x + plot.width} ${bottom}`);
3057
3147
  }
3058
- if (tickLength > 0 && chunkYM3XFBI4_cjs.isHorizontalBar(chart)) {
3059
- chunkYM3XFBI4_cjs.chartTicks(chart.axisY).forEach((tick) => {
3060
- const x = plot.x + chunkYM3XFBI4_cjs.mapChartValue(tick, chart.axisY, plot.width);
3148
+ if (tickLength > 0 && chunkCXL254BT_cjs.isHorizontalBar(chart)) {
3149
+ chunkCXL254BT_cjs.chartTicks(chart.axisY).forEach((tick) => {
3150
+ const x = plot.x + chunkCXL254BT_cjs.mapChartValue(tick, chart.axisY, plot.width);
3061
3151
  add(`tick-v-${tick}`, `M ${x} ${bottom} L ${x} ${bottom + tickLength}`);
3062
3152
  });
3063
- const rows = chunkYM3XFBI4_cjs.horizontalRows(chart, plot);
3153
+ const rows = chunkCXL254BT_cjs.horizontalRows(chart, plot);
3064
3154
  for (let index = 0; index < rows.count; index++) {
3065
- const y = chunkYM3XFBI4_cjs.rowTop(rows, plot, index) + rows.labelRow + rows.barsHeight / 2;
3155
+ const y = chunkCXL254BT_cjs.rowTop(rows, plot, index) + rows.labelRow + rows.barsHeight / 2;
3066
3156
  add(`tick-c-${index}`, `M ${plot.x - tickLength} ${y} L ${plot.x} ${y}`);
3067
3157
  }
3068
3158
  }
3069
- if (tickLength > 0 && !isHorizontalBoxplot2(chart) && !chunkYM3XFBI4_cjs.isHorizontalBar(chart)) {
3070
- chunkYM3XFBI4_cjs.chartTicks(chart.axisY).forEach((tick) => {
3071
- const y = bottom - chunkYM3XFBI4_cjs.mapChartValue(tick, chart.axisY, plot.height);
3159
+ if (tickLength > 0 && !isHorizontalBoxplot2(chart) && !chunkCXL254BT_cjs.isHorizontalBar(chart)) {
3160
+ chunkCXL254BT_cjs.chartTicks(chart.axisY).forEach((tick) => {
3161
+ const y = bottom - chunkCXL254BT_cjs.mapChartValue(tick, chart.axisY, plot.height);
3072
3162
  add(`tick-y-${tick}`, `M ${plot.x - tickLength} ${y} L ${plot.x} ${y}`);
3073
3163
  });
3074
3164
  xTickPositions(chart, layout).forEach((x, index) => {
@@ -3083,14 +3173,14 @@ function categoryNames(chart, count) {
3083
3173
  }
3084
3174
  function buildHorizontalBarAxes(chart, layout, order) {
3085
3175
  const { plot, bounds } = layout;
3086
- const rows = chunkYM3XFBI4_cjs.horizontalRows(chart, plot);
3176
+ const rows = chunkCXL254BT_cjs.horizontalRows(chart, plot);
3087
3177
  const above = chart.categoryAlign === "left";
3088
3178
  const inside = chart.categoryAlign === "inside";
3089
3179
  const editable = Boolean(chart.config?.categories?.length);
3090
3180
  const nodes = categoryNames(chart, rows.count).map((name, index) => {
3091
- const top = chunkYM3XFBI4_cjs.rowTop(rows, plot, index);
3181
+ const top = chunkCXL254BT_cjs.rowTop(rows, plot, index);
3092
3182
  return {
3093
- ...chunkYM3XFBI4_cjs.chartText({
3183
+ ...chunkCXL254BT_cjs.chartText({
3094
3184
  role: "axis",
3095
3185
  id: `chart-y-category-${chart.id}-${index}`,
3096
3186
  order: order + index,
@@ -3100,19 +3190,19 @@ function buildHorizontalBarAxes(chart, layout, order) {
3100
3190
  chart,
3101
3191
  align: above || inside ? "left" : "right"
3102
3192
  }),
3103
- prop: editable ? chunkYM3XFBI4_cjs.categoryProp(index) : void 0
3193
+ prop: editable ? chunkCXL254BT_cjs.categoryProp(index) : void 0
3104
3194
  };
3105
3195
  });
3106
3196
  if (chart.showValueAxis !== false) {
3107
- chunkYM3XFBI4_cjs.chartTicks(chart.axisY).forEach((tick, index) => {
3108
- const x = plot.x + chunkYM3XFBI4_cjs.mapChartValue(tick, chart.axisY, plot.width);
3197
+ chunkCXL254BT_cjs.chartTicks(chart.axisY).forEach((tick, index) => {
3198
+ const x = plot.x + chunkCXL254BT_cjs.mapChartValue(tick, chart.axisY, plot.width);
3109
3199
  nodes.push(
3110
- chunkYM3XFBI4_cjs.chartText({
3200
+ chunkCXL254BT_cjs.chartText({
3111
3201
  role: "axis",
3112
3202
  id: `chart-x-tick-${chart.id}-${tick}`,
3113
3203
  order: order + rows.count + index,
3114
3204
  bounds,
3115
- frame: { x: x - 20, y: plot.y + plot.height + 4 + chunkYM3XFBI4_cjs.finite(chart.tickLength, 0), width: 40, height: 18 },
3205
+ frame: { x: x - 20, y: plot.y + plot.height + 4 + chunkCXL254BT_cjs.finite(chart.tickLength, 0), width: 40, height: 18 },
3116
3206
  text: String(tick),
3117
3207
  chart,
3118
3208
  align: "center"
@@ -3131,7 +3221,7 @@ function buildChartAxes(chart, layout, order) {
3131
3221
  return lines;
3132
3222
  }
3133
3223
  order += lines.length;
3134
- if (chunkYM3XFBI4_cjs.isHorizontalBar(chart)) {
3224
+ if (chunkCXL254BT_cjs.isHorizontalBar(chart)) {
3135
3225
  return [...lines, ...buildHorizontalBarAxes(chart, layout, order)];
3136
3226
  }
3137
3227
  const xTicks = buildXAxisTicks(chart, layout, order);
@@ -3209,7 +3299,7 @@ function buildCircularChartGrid(chart, plot, bounds, order) {
3209
3299
  const centerX = plot.x + plot.width / 2;
3210
3300
  const centerY = plot.y + plot.height / 2;
3211
3301
  const radius = Math.max(0, Math.min(plot.width, plot.height) / 2);
3212
- const width = chunkYM3XFBI4_cjs.finite(chart.gridWidth, 1);
3302
+ const width = chunkCXL254BT_cjs.finite(chart.gridWidth, 1);
3213
3303
  if (chart.gridLineStyle === "dotted") {
3214
3304
  return buildDottedCircularGrid(chart, bounds, order, centerX, centerY, radius, width);
3215
3305
  }
@@ -3220,7 +3310,7 @@ function buildCircularChartGrid(chart, plot, bounds, order) {
3220
3310
  ...gridLineDashStyle(chart, width)
3221
3311
  };
3222
3312
  const nodes = [];
3223
- chunkYM3XFBI4_cjs.chartTicks(chart.axisY).filter((tick) => tick > chart.axisY.min).forEach((tick) => {
3313
+ chunkCXL254BT_cjs.chartTicks(chart.axisY).filter((tick) => tick > chart.axisY.min).forEach((tick) => {
3224
3314
  const ringRadius = radius * ringRatio(chart, tick);
3225
3315
  nodes.push({
3226
3316
  type: "ellipse",
@@ -3234,8 +3324,8 @@ function buildCircularChartGrid(chart, plot, bounds, order) {
3234
3324
  style
3235
3325
  });
3236
3326
  });
3237
- chunkYM3XFBI4_cjs.chartTicks(chart.axisX).forEach((tick) => {
3238
- const angle = chunkYM3XFBI4_cjs.angleForAxisValue(chart.axisX.min, chart.axisX.max, tick);
3327
+ chunkCXL254BT_cjs.chartTicks(chart.axisX).forEach((tick) => {
3328
+ const angle = chunkCXL254BT_cjs.angleForAxisValue(chart.axisX.min, chart.axisX.max, tick);
3239
3329
  const edgeX = centerX + Math.cos(angle) * radius;
3240
3330
  const edgeY = centerY + Math.sin(angle) * radius;
3241
3331
  nodes.push({
@@ -3250,13 +3340,13 @@ function buildCircularChartGrid(chart, plot, bounds, order) {
3250
3340
  return nodes;
3251
3341
  }
3252
3342
  function buildDottedCircularGrid(chart, bounds, order, centerX, centerY, radius, width) {
3253
- const yTicks = chunkYM3XFBI4_cjs.chartTicks(chart.axisY).filter((tick) => tick > chart.axisY.min);
3254
- const xTicks = chunkYM3XFBI4_cjs.chartTicks(chart.axisX);
3343
+ const yTicks = chunkCXL254BT_cjs.chartTicks(chart.axisY).filter((tick) => tick > chart.axisY.min);
3344
+ const xTicks = chunkCXL254BT_cjs.chartTicks(chart.axisX);
3255
3345
  const nodes = [];
3256
3346
  yTicks.forEach((yTick) => {
3257
3347
  const ringRadius = radius * ringRatio(chart, yTick);
3258
3348
  xTicks.forEach((xTick) => {
3259
- const angle = chunkYM3XFBI4_cjs.angleForAxisValue(chart.axisX.min, chart.axisX.max, xTick);
3349
+ const angle = chunkCXL254BT_cjs.angleForAxisValue(chart.axisX.min, chart.axisX.max, xTick);
3260
3350
  const x = centerX + Math.cos(angle) * ringRadius;
3261
3351
  const y = centerY + Math.sin(angle) * ringRadius;
3262
3352
  const id = `chart-grid-dot-${chart.id}-${xTick}-${yTick}`;
@@ -3278,8 +3368,8 @@ function buildChartGrid(chart, plot, bounds, order) {
3278
3368
  if (chart.gridShape === "circle" && CIRCULAR_GRID_CHART_TYPES.has(chart.chartType)) {
3279
3369
  return buildCircularChartGrid(chart, plot, bounds, order);
3280
3370
  }
3281
- const width = chunkYM3XFBI4_cjs.finite(chart.gridWidth, 1);
3282
- if (chunkYM3XFBI4_cjs.isHorizontalBar(chart)) {
3371
+ const width = chunkCXL254BT_cjs.finite(chart.gridWidth, 1);
3372
+ if (chunkCXL254BT_cjs.isHorizontalBar(chart)) {
3283
3373
  return buildHorizontalBarGrid(chart, plot, bounds, order, width);
3284
3374
  }
3285
3375
  const clip = chart.chartType === "field" ? fieldSurfaceClip(chart, plot) : void 0;
@@ -3294,8 +3384,8 @@ function buildChartGrid(chart, plot, bounds, order) {
3294
3384
  clip
3295
3385
  };
3296
3386
  const nodes = [];
3297
- (chart.gridAxes === "y" ? [] : chunkYM3XFBI4_cjs.chartTicks(chart.axisX)).forEach((tick) => {
3298
- const x = plot.x + chunkYM3XFBI4_cjs.mapChartValue(tick, chart.axisX, plot.width);
3387
+ (chart.gridAxes === "y" ? [] : chunkCXL254BT_cjs.chartTicks(chart.axisX)).forEach((tick) => {
3388
+ const x = plot.x + chunkCXL254BT_cjs.mapChartValue(tick, chart.axisX, plot.width);
3299
3389
  nodes.push({
3300
3390
  type: "path",
3301
3391
  id: `chart-grid-x-${chart.id}-${tick}`,
@@ -3305,8 +3395,8 @@ function buildChartGrid(chart, plot, bounds, order) {
3305
3395
  style
3306
3396
  });
3307
3397
  });
3308
- (chart.gridAxes === "x" ? [] : chunkYM3XFBI4_cjs.chartTicks(chart.axisY)).forEach((tick) => {
3309
- const y = plot.y + plot.height - chunkYM3XFBI4_cjs.mapChartValue(tick, chart.axisY, plot.height);
3398
+ (chart.gridAxes === "x" ? [] : chunkCXL254BT_cjs.chartTicks(chart.axisY)).forEach((tick) => {
3399
+ const y = plot.y + plot.height - chunkCXL254BT_cjs.mapChartValue(tick, chart.axisY, plot.height);
3310
3400
  nodes.push({
3311
3401
  type: "path",
3312
3402
  id: `chart-grid-y-${chart.id}-${tick}`,
@@ -3328,8 +3418,8 @@ function buildHorizontalBarGrid(chart, plot, bounds, order, width) {
3328
3418
  strokeWidth: width,
3329
3419
  ...chart.gridLineStyle === "dotted" ? { dash: [0.1, width * 3], lineCap: "round" } : gridLineDashStyle(chart, width)
3330
3420
  };
3331
- return chunkYM3XFBI4_cjs.chartTicks(chart.axisY).map((tick, index) => {
3332
- const x = plot.x + chunkYM3XFBI4_cjs.mapChartValue(tick, chart.axisY, plot.width);
3421
+ return chunkCXL254BT_cjs.chartTicks(chart.axisY).map((tick, index) => {
3422
+ const x = plot.x + chunkCXL254BT_cjs.mapChartValue(tick, chart.axisY, plot.width);
3333
3423
  return {
3334
3424
  type: "path",
3335
3425
  id: `chart-grid-x-${chart.id}-${tick}`,
@@ -3341,13 +3431,13 @@ function buildHorizontalBarGrid(chart, plot, bounds, order, width) {
3341
3431
  });
3342
3432
  }
3343
3433
  function buildDottedRectGrid(chart, plot, bounds, order, width, clip) {
3344
- const xTicks = chunkYM3XFBI4_cjs.chartTicks(chart.axisX);
3345
- const yTicks = chunkYM3XFBI4_cjs.chartTicks(chart.axisY);
3434
+ const xTicks = chunkCXL254BT_cjs.chartTicks(chart.axisX);
3435
+ const yTicks = chunkCXL254BT_cjs.chartTicks(chart.axisY);
3346
3436
  const nodes = [];
3347
3437
  xTicks.forEach((xTick) => {
3348
- const x = plot.x + chunkYM3XFBI4_cjs.mapChartValue(xTick, chart.axisX, plot.width);
3438
+ const x = plot.x + chunkCXL254BT_cjs.mapChartValue(xTick, chart.axisX, plot.width);
3349
3439
  yTicks.forEach((yTick) => {
3350
- const y = plot.y + plot.height - chunkYM3XFBI4_cjs.mapChartValue(yTick, chart.axisY, plot.height);
3440
+ const y = plot.y + plot.height - chunkCXL254BT_cjs.mapChartValue(yTick, chart.axisY, plot.height);
3351
3441
  const id = `chart-grid-dot-${chart.id}-${xTick}-${yTick}`;
3352
3442
  nodes.push(createGridDot(chart, id, order + nodes.length, bounds, x, y, width, clip));
3353
3443
  });
@@ -3370,7 +3460,7 @@ function createChartRuleMarks(render2) {
3370
3460
  return {
3371
3461
  rule,
3372
3462
  color: rule.color || render2.chart.strokeColor || "#475569",
3373
- y: render2.plot.y + render2.plot.height - chunkYM3XFBI4_cjs.mapChartValue(rule.at, render2.chart.axisY, render2.plot.height),
3463
+ y: render2.plot.y + render2.plot.height - chunkCXL254BT_cjs.mapChartValue(rule.at, render2.chart.axisY, render2.plot.height),
3374
3464
  lineOrder,
3375
3465
  labelOrder
3376
3466
  };
@@ -3390,7 +3480,7 @@ function createChartRuleLine(render2, mark) {
3390
3480
  order: mark.lineOrder,
3391
3481
  bounds: render2.bounds,
3392
3482
  d: `M ${render2.plot.x} ${mark.y} L ${render2.plot.x + render2.plot.width} ${mark.y}`,
3393
- prop: chunkYM3XFBI4_cjs.ruleAtProp(mark.rule.id),
3483
+ prop: chunkCXL254BT_cjs.ruleAtProp(mark.rule.id),
3394
3484
  propKind: "value",
3395
3485
  style: {
3396
3486
  fill: { kind: "none" },
@@ -3401,9 +3491,9 @@ function createChartRuleLine(render2, mark) {
3401
3491
  };
3402
3492
  }
3403
3493
  function createChartRuleLabel(render2, mark) {
3404
- const fontSize = Math.max(9, chunkYM3XFBI4_cjs.finite(render2.chart.fontSize, 12) - 2);
3494
+ const fontSize = Math.max(9, chunkCXL254BT_cjs.finite(render2.chart.fontSize, 12) - 2);
3405
3495
  return {
3406
- ...chunkYM3XFBI4_cjs.chartText({
3496
+ ...chunkCXL254BT_cjs.chartText({
3407
3497
  id: `chart-rule-label-${render2.chart.id}-${mark.rule.id}`,
3408
3498
  order: mark.labelOrder ?? mark.lineOrder + 1,
3409
3499
  bounds: render2.bounds,
@@ -3412,19 +3502,19 @@ function createChartRuleLabel(render2, mark) {
3412
3502
  chart: render2.chart
3413
3503
  }),
3414
3504
  color: mark.color,
3415
- prop: chunkYM3XFBI4_cjs.ruleTextProp(mark.rule.id)
3505
+ prop: chunkCXL254BT_cjs.ruleTextProp(mark.rule.id)
3416
3506
  };
3417
3507
  }
3418
3508
 
3419
3509
  // src/renderScene/charts/chartBackdrop.ts
3420
3510
  function chartImageRect(chart) {
3421
- const inset = chunkYM3XFBI4_cjs.finite(chart.strokeWidth, 1) / 2;
3511
+ const inset = chunkCXL254BT_cjs.finite(chart.strokeWidth, 1) / 2;
3422
3512
  return {
3423
3513
  x: chart.x + inset,
3424
3514
  y: chart.y + inset,
3425
3515
  width: Math.max(1, chart.width - inset * 2),
3426
3516
  height: Math.max(1, chart.height - inset * 2),
3427
- rx: Math.max(0, chunkYM3XFBI4_cjs.finite(chart.cornerRadius, 12) - inset)
3517
+ rx: Math.max(0, chunkCXL254BT_cjs.finite(chart.cornerRadius, 12) - inset)
3428
3518
  };
3429
3519
  }
3430
3520
  function buildChartBackdrop(chart, bounds, order) {
@@ -3466,7 +3556,7 @@ function buildChartBackdrop(chart, bounds, order) {
3466
3556
  // src/renderScene/charts/renderers/bar/glass.ts
3467
3557
  function createGlassBackdropNodes(context, id, d) {
3468
3558
  const { chart, bounds, nextOrder } = context;
3469
- const blur = chunkYM3XFBI4_cjs.finite(chart.config?.barGlassBlur, 0);
3559
+ const blur = chunkCXL254BT_cjs.finite(chart.config?.barGlassBlur, 0);
3470
3560
  if (blur <= 0 || !chart.fillImage) {
3471
3561
  return [];
3472
3562
  }
@@ -3484,7 +3574,7 @@ function createGlassBackdropNodes(context, id, d) {
3484
3574
  href: chart.fillImage.url,
3485
3575
  style: {
3486
3576
  blur,
3487
- saturate: chunkYM3XFBI4_cjs.finite(chart.config?.barGlassSaturation, 1),
3577
+ saturate: chunkCXL254BT_cjs.finite(chart.config?.barGlassSaturation, 1),
3488
3578
  clip: { type: "path", d },
3489
3579
  pointerEvents: "none"
3490
3580
  }
@@ -3535,8 +3625,8 @@ function createBarGlowNode(context, id, d, color2, glow, bounds = context.bounds
3535
3625
  bounds,
3536
3626
  d,
3537
3627
  style: {
3538
- fill: chunkYM3XFBI4_cjs.paint(color2, diagnostics, chart.id),
3539
- shadow: { color: chunkYM3XFBI4_cjs.representativeColor(color2, "#ffffff"), opacity: 0.9, blur: glow, dx: 0, dy: 0 },
3628
+ fill: chunkCXL254BT_cjs.paint(color2, diagnostics, chart.id),
3629
+ shadow: { color: chunkCXL254BT_cjs.representativeColor(color2, "#ffffff"), opacity: 0.9, blur: glow, dx: 0, dy: 0 },
3540
3630
  pointerEvents: "none"
3541
3631
  }
3542
3632
  };
@@ -3547,14 +3637,14 @@ function barLabelsEnabled(context) {
3547
3637
  return context.chart.config?.showBarLabels === true;
3548
3638
  }
3549
3639
  function resolvePlacement(target, size) {
3550
- const fits = target.frame.height >= size.height + chunkYM3XFBI4_cjs.BAR_LABEL.gap * 2;
3640
+ const fits = target.frame.height >= size.height + chunkCXL254BT_cjs.BAR_LABEL.gap * 2;
3551
3641
  return target.placement !== "outside" && !fits ? "outside" : target.placement;
3552
3642
  }
3553
3643
  function labelTop(placement, frame, height) {
3554
3644
  if (placement === "outside") {
3555
- return frame.y - height - chunkYM3XFBI4_cjs.BAR_LABEL.gap;
3645
+ return frame.y - height - chunkCXL254BT_cjs.BAR_LABEL.gap;
3556
3646
  }
3557
- return placement === "inside" ? frame.y + chunkYM3XFBI4_cjs.BAR_LABEL.gap : frame.y + frame.height / 2 - height / 2;
3647
+ return placement === "inside" ? frame.y + chunkCXL254BT_cjs.BAR_LABEL.gap : frame.y + frame.height / 2 - height / 2;
3558
3648
  }
3559
3649
  function createPillNode(context, id, box, color2) {
3560
3650
  const { chart, bounds, diagnostics, nextOrder } = context;
@@ -3564,11 +3654,11 @@ function createPillNode(context, id, box, color2) {
3564
3654
  id: `${id}-pill`,
3565
3655
  order: nextOrder(),
3566
3656
  bounds,
3567
- d: chunkYM3XFBI4_cjs.pillPath(box.left, box.top, box.width, box.height),
3657
+ d: chunkCXL254BT_cjs.pillPath(box.left, box.top, box.width, box.height),
3568
3658
  style: {
3569
- fill: config?.barLabelPillColor ? chunkYM3XFBI4_cjs.paint(config.barLabelPillColor, diagnostics, chart.id) : { kind: "none" },
3570
- stroke: chunkYM3XFBI4_cjs.paint(config?.barLabelBorderColor ?? color2, diagnostics, chart.id),
3571
- strokeWidth: chunkYM3XFBI4_cjs.finite(config?.barLabelBorderWidth, 1),
3659
+ fill: config?.barLabelPillColor ? chunkCXL254BT_cjs.paint(config.barLabelPillColor, diagnostics, chart.id) : { kind: "none" },
3660
+ stroke: chunkCXL254BT_cjs.paint(config?.barLabelBorderColor ?? color2, diagnostics, chart.id),
3661
+ strokeWidth: chunkCXL254BT_cjs.finite(config?.barLabelBorderWidth, 1),
3572
3662
  pointerEvents: "none"
3573
3663
  }
3574
3664
  };
@@ -3577,7 +3667,7 @@ function createTextNode(context, id, box, text, placement, fontSize, color2) {
3577
3667
  const { chart, bounds, nextOrder } = context;
3578
3668
  const config = chart.config;
3579
3669
  return {
3580
- ...chunkYM3XFBI4_cjs.chartText({
3670
+ ...chunkCXL254BT_cjs.chartText({
3581
3671
  id,
3582
3672
  order: nextOrder(),
3583
3673
  bounds,
@@ -3598,7 +3688,7 @@ function createAxisValueNode(context, target, text, fontSize) {
3598
3688
  const config = chart.config;
3599
3689
  const top = plot.y + plot.height + 4 + 16 + Math.max(0, chart.tickLength ?? 0);
3600
3690
  return {
3601
- ...chunkYM3XFBI4_cjs.chartText({
3691
+ ...chunkCXL254BT_cjs.chartText({
3602
3692
  id: target.id,
3603
3693
  order: nextOrder(),
3604
3694
  bounds,
@@ -3607,7 +3697,7 @@ function createAxisValueNode(context, target, text, fontSize) {
3607
3697
  y: target.frame.y + target.frame.height / 2 - fontSize * 0.6,
3608
3698
  width: plot.width - 14,
3609
3699
  height: fontSize * 1.2
3610
- } : { x: plot.x, y: target.frame.y - chunkYM3XFBI4_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 },
3700
+ } : { x: plot.x, y: target.frame.y - chunkCXL254BT_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 },
3611
3701
  text,
3612
3702
  chart,
3613
3703
  align: target.horizontal ? "right" : chart.categoryAlign === "left" ? "left" : "center"
@@ -3621,24 +3711,24 @@ function createAxisValueNode(context, target, text, fontSize) {
3621
3711
  }
3622
3712
  function horizontalPlacement(target, size) {
3623
3713
  const requested = target.placement === "axis" ? "outside" : target.placement;
3624
- const fits = target.frame.width >= size.width + chunkYM3XFBI4_cjs.BAR_LABEL.gap * 2;
3714
+ const fits = target.frame.width >= size.width + chunkCXL254BT_cjs.BAR_LABEL.gap * 2;
3625
3715
  return requested !== "outside" && !fits ? "outside" : requested;
3626
3716
  }
3627
3717
  function horizontalBox(target, size, placement) {
3628
3718
  const { frame } = target;
3629
- const left = placement === "outside" ? frame.x + frame.width + chunkYM3XFBI4_cjs.BAR_LABEL.gap : placement === "inside" ? frame.x + frame.width - size.width - chunkYM3XFBI4_cjs.BAR_LABEL.gap : frame.x + frame.width / 2 - size.width / 2;
3719
+ const left = placement === "outside" ? frame.x + frame.width + chunkCXL254BT_cjs.BAR_LABEL.gap : placement === "inside" ? frame.x + frame.width - size.width - chunkCXL254BT_cjs.BAR_LABEL.gap : frame.x + frame.width / 2 - size.width / 2;
3630
3720
  return { ...size, left, top: frame.y + frame.height / 2 - size.height / 2 };
3631
3721
  }
3632
3722
  function createBarLabelNodes(context, target) {
3633
3723
  const { chart } = context;
3634
3724
  const config = chart.config;
3635
- const fontSize = Math.max(8, chunkYM3XFBI4_cjs.finite(config?.barLabelFontSize, chunkYM3XFBI4_cjs.finite(chart.fontSize, 12)));
3636
- const text = chunkYM3XFBI4_cjs.formatBarLabel(target.value, config?.barLabelFormat);
3725
+ const fontSize = Math.max(8, chunkCXL254BT_cjs.finite(config?.barLabelFontSize, chunkCXL254BT_cjs.finite(chart.fontSize, 12)));
3726
+ const text = chunkCXL254BT_cjs.formatBarLabel(target.value, config?.barLabelFormat);
3637
3727
  if (target.placement === "axis") {
3638
3728
  return [createAxisValueNode(context, target, text, fontSize)];
3639
3729
  }
3640
3730
  const pill = config?.barLabelPill === true;
3641
- const size = chunkYM3XFBI4_cjs.barLabelSize(text, fontSize, pill);
3731
+ const size = chunkCXL254BT_cjs.barLabelSize(text, fontSize, pill);
3642
3732
  const placement = target.horizontal ? horizontalPlacement(target, size) : resolvePlacement(target, size);
3643
3733
  const box = target.horizontal ? horizontalBox(target, size, placement) : {
3644
3734
  ...size,
@@ -3679,7 +3769,7 @@ function barTrackClip(context, frame) {
3679
3769
  }
3680
3770
  return {
3681
3771
  type: "path",
3682
- d: chunkYM3XFBI4_cjs.roundedBarPath(frame.x, frame.y, frame.width, frame.height, context.chart.config?.barCornerRadius ?? 2)
3772
+ d: chunkCXL254BT_cjs.roundedBarPath(frame.x, frame.y, frame.width, frame.height, context.chart.config?.barCornerRadius ?? 2)
3683
3773
  };
3684
3774
  }
3685
3775
  function barTrackEnabled(context) {
@@ -3689,8 +3779,8 @@ function createBarTrackNodes(context, id, frame, orientation = "vertical") {
3689
3779
  const { chart, bounds, diagnostics, nextOrder } = context;
3690
3780
  const config = chart.config;
3691
3781
  const radius = config?.barCornerRadius ?? 2;
3692
- const segments = chunkYM3XFBI4_cjs.finite(config?.barSegments, 0);
3693
- const d = segments > 0 ? chunkYM3XFBI4_cjs.segmentedBarPath(frame, orientation, segments, chunkYM3XFBI4_cjs.finite(config?.barSegmentGap, 4), radius, 1, true) : chunkYM3XFBI4_cjs.roundedBarPath(frame.x, frame.y, frame.width, frame.height, radius);
3782
+ const segments = chunkCXL254BT_cjs.finite(config?.barSegments, 0);
3783
+ const d = segments > 0 ? chunkCXL254BT_cjs.segmentedBarPath(frame, orientation, segments, chunkCXL254BT_cjs.finite(config?.barSegmentGap, 4), radius, 1, true) : chunkCXL254BT_cjs.roundedBarPath(frame.x, frame.y, frame.width, frame.height, radius);
3694
3784
  const nodes = [
3695
3785
  {
3696
3786
  type: "path",
@@ -3699,7 +3789,7 @@ function createBarTrackNodes(context, id, frame, orientation = "vertical") {
3699
3789
  bounds,
3700
3790
  d,
3701
3791
  style: {
3702
- fill: chunkYM3XFBI4_cjs.paint(config?.barTrackColor ?? chart.gridColor ?? "#e2e8f0", diagnostics, chart.id),
3792
+ fill: chunkCXL254BT_cjs.paint(config?.barTrackColor ?? chart.gridColor ?? "#e2e8f0", diagnostics, chart.id),
3703
3793
  pointerEvents: "none"
3704
3794
  }
3705
3795
  }
@@ -3715,13 +3805,13 @@ function createBarTrackNodes(context, id, frame, orientation = "vertical") {
3715
3805
  frame.y,
3716
3806
  frame.width,
3717
3807
  frame.height,
3718
- chunkYM3XFBI4_cjs.finite(config.barTrackHatchAngle, DEFAULT_HATCH.angle),
3719
- Math.max(MIN_HATCH_SPACING, chunkYM3XFBI4_cjs.finite(config.barTrackHatchSpacing, DEFAULT_HATCH.spacing))
3808
+ chunkCXL254BT_cjs.finite(config.barTrackHatchAngle, DEFAULT_HATCH.angle),
3809
+ Math.max(MIN_HATCH_SPACING, chunkCXL254BT_cjs.finite(config.barTrackHatchSpacing, DEFAULT_HATCH.spacing))
3720
3810
  ),
3721
3811
  style: {
3722
3812
  fill: { kind: "none" },
3723
- stroke: chunkYM3XFBI4_cjs.paint(config.barTrackHatchColor ?? chart.gridColor ?? "#cbd5e1", diagnostics, chart.id),
3724
- strokeWidth: chunkYM3XFBI4_cjs.finite(config.barTrackHatchWidth, DEFAULT_HATCH.width),
3813
+ stroke: chunkCXL254BT_cjs.paint(config.barTrackHatchColor ?? chart.gridColor ?? "#cbd5e1", diagnostics, chart.id),
3814
+ strokeWidth: chunkCXL254BT_cjs.finite(config.barTrackHatchWidth, DEFAULT_HATCH.width),
3725
3815
  pointerEvents: "none",
3726
3816
  clip: { type: "path", d }
3727
3817
  }
@@ -3768,23 +3858,23 @@ function groupedShape(context, frame) {
3768
3858
  const { chart, plot } = context;
3769
3859
  const config = chart.config;
3770
3860
  const radius = config?.barCornerRadius ?? 2;
3771
- const segments = chunkYM3XFBI4_cjs.finite(config?.barSegments, 0);
3861
+ const segments = chunkCXL254BT_cjs.finite(config?.barSegments, 0);
3772
3862
  if (segments > 0) {
3773
- return chunkYM3XFBI4_cjs.segmentedBarPath(
3863
+ return chunkCXL254BT_cjs.segmentedBarPath(
3774
3864
  { x: frame.x, y: plot.y, width: frame.width, height: plot.height },
3775
3865
  "vertical",
3776
3866
  segments,
3777
- chunkYM3XFBI4_cjs.finite(config?.barSegmentGap, 4),
3867
+ chunkCXL254BT_cjs.finite(config?.barSegmentGap, 4),
3778
3868
  radius,
3779
3869
  frame.height / plot.height,
3780
3870
  config?.barSegmentSnap !== false
3781
3871
  );
3782
3872
  }
3783
- return chunkYM3XFBI4_cjs.barPath(frame.x, frame.y, frame.width, frame.height, radius, config?.barRoundedBottom === true);
3873
+ return chunkCXL254BT_cjs.barPath(frame.x, frame.y, frame.width, frame.height, radius, config?.barRoundedBottom === true);
3784
3874
  }
3785
3875
  function createGroupedGlow(context, mark) {
3786
3876
  const { chart } = context;
3787
- const glow = chunkYM3XFBI4_cjs.finite(chart.config?.barGlow, 0);
3877
+ const glow = chunkCXL254BT_cjs.finite(chart.config?.barGlow, 0);
3788
3878
  if (glow <= 0 || mark.frame.height <= 0) {
3789
3879
  return [];
3790
3880
  }
@@ -3795,10 +3885,10 @@ function createGroupedGlow(context, mark) {
3795
3885
  }
3796
3886
  function createGroupedBarLayout(context) {
3797
3887
  const { chart, plot } = context;
3798
- const valueCount = chunkYM3XFBI4_cjs.barCategoryCount(chart);
3888
+ const valueCount = chunkCXL254BT_cjs.barCategoryCount(chart);
3799
3889
  const slotWidth = plot.width / valueCount;
3800
- const groupGap = Math.min(Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.barGroupGap, 8)), Math.max(0, slotWidth - 1));
3801
- const barGap = Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.barGap, 2));
3890
+ const groupGap = Math.min(Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.barGroupGap, 8)), Math.max(0, slotWidth - 1));
3891
+ const barGap = Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.barGap, 2));
3802
3892
  return {
3803
3893
  slotWidth,
3804
3894
  seriesWidth: Math.max(1, (slotWidth - groupGap) / Math.max(1, chart.series.length)),
@@ -3808,10 +3898,10 @@ function createGroupedBarLayout(context) {
3808
3898
  }
3809
3899
  function createSeriesBarMarks(context, layout, series, seriesIndex) {
3810
3900
  const { chart, plot } = context;
3811
- const seriesColor2 = series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length];
3901
+ const seriesColor2 = series.color ?? chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length];
3812
3902
  return series.values.map((value, valueIndex) => {
3813
3903
  const numericValue = Array.isArray(value) ? value[1] : value;
3814
- const height = Math.max(0, chunkYM3XFBI4_cjs.mapChartValue(numericValue, chart.axisY, plot.height));
3904
+ const height = Math.max(0, chunkCXL254BT_cjs.mapChartValue(numericValue, chart.axisY, plot.height));
3815
3905
  return {
3816
3906
  seriesId: series.id,
3817
3907
  valueIndex,
@@ -3845,10 +3935,10 @@ function createGroupedBarNodes(context, mark) {
3845
3935
  const radius = chart.config?.barCornerRadius ?? 2;
3846
3936
  const { x, width } = mark.frame;
3847
3937
  const path = groupedShape(context, mark.frame);
3848
- const fill2 = chunkYM3XFBI4_cjs.paint(mark.color, diagnostics, chart.id);
3849
- const stroke = chunkYM3XFBI4_cjs.paint(chart.config?.barBorderColor || "#000000", diagnostics, chart.id);
3850
- const strokeWidth = chunkYM3XFBI4_cjs.finite(chart.config?.barBorderWidth, 0);
3851
- const shadow = chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle);
3938
+ const fill2 = chunkCXL254BT_cjs.paint(mark.color, diagnostics, chart.id);
3939
+ const stroke = chunkCXL254BT_cjs.paint(chart.config?.barBorderColor || "#000000", diagnostics, chart.id);
3940
+ const strokeWidth = chunkCXL254BT_cjs.finite(chart.config?.barBorderWidth, 0);
3941
+ const shadow = chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle);
3852
3942
  const shadowCaster = shadow ? {
3853
3943
  type: "path",
3854
3944
  id: `chart-bar-shadow-${chart.id}-${mark.seriesId}-${mark.valueIndex}`,
@@ -3878,10 +3968,10 @@ function createGroupedBarNodes(context, mark) {
3878
3968
  valueIndex: mark.valueIndex,
3879
3969
  mark: "bar",
3880
3970
  radius,
3881
- colorProp: chunkYM3XFBI4_cjs.seriesValueColorProp(mark.seriesId, mark.valueIndex),
3971
+ colorProp: chunkCXL254BT_cjs.seriesValueColorProp(mark.seriesId, mark.valueIndex),
3882
3972
  hasColorOverride: mark.hasColorOverride
3883
3973
  },
3884
- prop: chunkYM3XFBI4_cjs.seriesValueProp(mark.seriesId, mark.valueIndex),
3974
+ prop: chunkCXL254BT_cjs.seriesValueProp(mark.seriesId, mark.valueIndex),
3885
3975
  style: { fill: fill2, stroke, strokeWidth, innerShadow: shadow }
3886
3976
  };
3887
3977
  const glass = createGlassBackdropNodes(context, `${mark.seriesId}-${mark.valueIndex}`, path);
@@ -3892,15 +3982,15 @@ function createGroupedBarError(context, mark) {
3892
3982
  return null;
3893
3983
  }
3894
3984
  const { chart, plot, bounds, nextOrder } = context;
3895
- const [lower, upper] = chunkYM3XFBI4_cjs.errorBarRange(mark.value, mark.error);
3896
- return chunkYM3XFBI4_cjs.createVerticalErrorWhiskerNode({
3985
+ const [lower, upper] = chunkCXL254BT_cjs.errorBarRange(mark.value, mark.error);
3986
+ return chunkCXL254BT_cjs.createVerticalErrorWhiskerNode({
3897
3987
  id: `chart-bar-error-${chart.id}-${mark.seriesId}-${mark.valueIndex}`,
3898
3988
  order: nextOrder(),
3899
3989
  bounds,
3900
3990
  geometry: {
3901
3991
  centerX: mark.frame.x + mark.frame.width / 2,
3902
- startY: plot.y + plot.height - chunkYM3XFBI4_cjs.mapChartValue(lower, chart.axisY, plot.height),
3903
- endY: plot.y + plot.height - chunkYM3XFBI4_cjs.mapChartValue(upper, chart.axisY, plot.height)
3992
+ startY: plot.y + plot.height - chunkCXL254BT_cjs.mapChartValue(lower, chart.axisY, plot.height),
3993
+ endY: plot.y + plot.height - chunkCXL254BT_cjs.mapChartValue(upper, chart.axisY, plot.height)
3904
3994
  },
3905
3995
  color: chart.textColor ?? "#0f172a",
3906
3996
  valueReference: { seriesId: mark.seriesId, valueIndex: mark.valueIndex }
@@ -3910,9 +4000,9 @@ function createGroupedBarError(context, mark) {
3910
4000
  // src/renderScene/charts/renderers/bar/horizontal.ts
3911
4001
  function barFrame(context, rows, seriesIndex, valueIndex, value) {
3912
4002
  const { chart, plot } = context;
3913
- const top = chunkYM3XFBI4_cjs.rowTop(rows, plot, valueIndex) + rows.labelRow;
4003
+ const top = chunkCXL254BT_cjs.rowTop(rows, plot, valueIndex) + rows.labelRow;
3914
4004
  if (context.stackedMode) {
3915
- const segment = chunkYM3XFBI4_cjs.stackedSegment(chart, context.stackedMode, valueIndex, seriesIndex, plot.width);
4005
+ const segment = chunkCXL254BT_cjs.stackedSegment(chart, context.stackedMode, valueIndex, seriesIndex, plot.width);
3916
4006
  const start = Math.min(segment.pixelStart, segment.pixelEnd);
3917
4007
  return {
3918
4008
  x: plot.x + start,
@@ -3921,27 +4011,27 @@ function barFrame(context, rows, seriesIndex, valueIndex, value) {
3921
4011
  height: rows.barsHeight
3922
4012
  };
3923
4013
  }
3924
- const barGap = Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.barGap, 2));
4014
+ const barGap = Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.barGap, 2));
3925
4015
  const seriesHeight = rows.barsHeight / Math.max(1, chart.series.length);
3926
- const width = Math.max(0, chunkYM3XFBI4_cjs.mapChartValue(value, chart.axisY, plot.width));
4016
+ const width = Math.max(0, chunkCXL254BT_cjs.mapChartValue(value, chart.axisY, plot.width));
3927
4017
  return { x: plot.x, y: top + seriesIndex * seriesHeight, width, height: Math.max(1, seriesHeight - barGap) };
3928
4018
  }
3929
4019
  function barPath2(context, frame) {
3930
4020
  const { chart, plot } = context;
3931
4021
  const config = chart.config;
3932
- const segments = context.stackedMode && chart.series.length > 1 ? 0 : chunkYM3XFBI4_cjs.finite(config?.barSegments, 0);
4022
+ const segments = context.stackedMode && chart.series.length > 1 ? 0 : chunkCXL254BT_cjs.finite(config?.barSegments, 0);
3933
4023
  if (segments > 0) {
3934
- return chunkYM3XFBI4_cjs.segmentedBarPath(
4024
+ return chunkCXL254BT_cjs.segmentedBarPath(
3935
4025
  { x: plot.x, y: frame.y, width: plot.width, height: frame.height },
3936
4026
  "horizontal",
3937
4027
  segments,
3938
- chunkYM3XFBI4_cjs.finite(config?.barSegmentGap, 4),
4028
+ chunkCXL254BT_cjs.finite(config?.barSegmentGap, 4),
3939
4029
  config?.barCornerRadius ?? 2,
3940
4030
  frame.width / plot.width,
3941
4031
  config?.barSegmentSnap !== false
3942
4032
  );
3943
4033
  }
3944
- return chunkYM3XFBI4_cjs.roundedBarPath(frame.x, frame.y, frame.width, frame.height, config?.barCornerRadius ?? 2);
4034
+ return chunkCXL254BT_cjs.roundedBarPath(frame.x, frame.y, frame.width, frame.height, config?.barCornerRadius ?? 2);
3945
4035
  }
3946
4036
  function markOf(context, rows, series, seriesIndex, valueIndex, value) {
3947
4037
  const { plot } = context;
@@ -3961,16 +4051,16 @@ function markOf(context, rows, series, seriesIndex, valueIndex, value) {
3961
4051
  maxY: frame.y + frame.height
3962
4052
  },
3963
4053
  path: barPath2(context, frame),
3964
- color: series.colors?.[valueIndex] ?? series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length]
4054
+ color: series.colors?.[valueIndex] ?? series.color ?? chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length]
3965
4055
  };
3966
4056
  }
3967
4057
  function barNodes(context, mark) {
3968
4058
  const { chart, diagnostics, nextOrder } = context;
3969
4059
  const config = chart.config;
3970
- const stroke = chunkYM3XFBI4_cjs.paint(config?.barBorderColor || "#000000", diagnostics, chart.id);
3971
- const strokeWidth = chunkYM3XFBI4_cjs.finite(config?.barBorderWidth, 0);
3972
- const shadow = chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle);
3973
- const fill2 = chunkYM3XFBI4_cjs.paint(mark.color, diagnostics, chart.id);
4060
+ const stroke = chunkCXL254BT_cjs.paint(config?.barBorderColor || "#000000", diagnostics, chart.id);
4061
+ const strokeWidth = chunkCXL254BT_cjs.finite(config?.barBorderWidth, 0);
4062
+ const shadow = chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle);
4063
+ const fill2 = chunkCXL254BT_cjs.paint(mark.color, diagnostics, chart.id);
3974
4064
  const nodes = [...createGlassBackdropNodes(context, mark.id, mark.path)];
3975
4065
  if (shadow) {
3976
4066
  nodes.push({
@@ -3994,7 +4084,7 @@ function barNodes(context, mark) {
3994
4084
  valueIndex: mark.valueIndex,
3995
4085
  mark: "bar",
3996
4086
  radius: config?.barCornerRadius ?? 2,
3997
- colorProp: chunkYM3XFBI4_cjs.seriesValueColorProp(mark.series.id, mark.valueIndex),
4087
+ colorProp: chunkCXL254BT_cjs.seriesValueColorProp(mark.series.id, mark.valueIndex),
3998
4088
  hasColorOverride: mark.series.colors?.[mark.valueIndex] != null
3999
4089
  },
4000
4090
  style: { fill: fill2, stroke, strokeWidth, innerShadow: shadow }
@@ -4024,7 +4114,7 @@ function pushBar(context, rows, layers, series, seriesIndex, valueIndex, value,
4024
4114
  layers.tracks.push(...createBarTrackNodes(context, mark.id, mark.trackFrame, "horizontal"));
4025
4115
  }
4026
4116
  layers.bars.push(...barNodes(context, mark));
4027
- const glow = chunkYM3XFBI4_cjs.finite(chart.config?.barGlow, 0);
4117
+ const glow = chunkCXL254BT_cjs.finite(chart.config?.barGlow, 0);
4028
4118
  if (glow > 0 && mark.frame.width > 0) {
4029
4119
  layers.glows.push(
4030
4120
  createBarGlowNode(context, `chart-bar-glow-${chart.id}-${mark.id}`, mark.path, mark.color, glow, mark.bounds)
@@ -4033,7 +4123,7 @@ function pushBar(context, rows, layers, series, seriesIndex, valueIndex, value,
4033
4123
  layers.labels.push(...labelNodes2(context, mark, highest));
4034
4124
  }
4035
4125
  function renderHorizontalBars(context) {
4036
- const rows = chunkYM3XFBI4_cjs.horizontalRows(context.chart, context.plot);
4126
+ const rows = chunkCXL254BT_cjs.horizontalRows(context.chart, context.plot);
4037
4127
  const layers = { tracks: [], bars: [], glows: [], labels: [] };
4038
4128
  context.chart.series.forEach((series, seriesIndex) => {
4039
4129
  const numeric = series.values.map((value) => typeof value === "number" ? value : value[1]);
@@ -4048,8 +4138,8 @@ function renderHorizontalBars(context) {
4048
4138
  // src/renderScene/charts/renderers/bar/stacked.ts
4049
4139
  function slotOf(context, mode) {
4050
4140
  const { chart, plot } = context;
4051
- const slotWidth = plot.width / chunkYM3XFBI4_cjs.barCategoryCount(chart);
4052
- const groupGap = Math.min(Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.barGroupGap, 8)), Math.max(0, slotWidth - 1));
4141
+ const slotWidth = plot.width / chunkCXL254BT_cjs.barCategoryCount(chart);
4142
+ const groupGap = Math.min(Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.barGroupGap, 8)), Math.max(0, slotWidth - 1));
4053
4143
  return {
4054
4144
  slotWidth,
4055
4145
  groupGap,
@@ -4060,19 +4150,19 @@ function slotOf(context, mode) {
4060
4150
  }
4061
4151
  function pathOf(context, x, y, height, slot, radius) {
4062
4152
  const { chart, plot } = context;
4063
- const segments = chart.series.length === 1 ? chunkYM3XFBI4_cjs.finite(chart.config?.barSegments, 0) : 0;
4153
+ const segments = chart.series.length === 1 ? chunkCXL254BT_cjs.finite(chart.config?.barSegments, 0) : 0;
4064
4154
  if (segments > 0) {
4065
- return chunkYM3XFBI4_cjs.segmentedBarPath(
4155
+ return chunkCXL254BT_cjs.segmentedBarPath(
4066
4156
  { x, y: plot.y, width: slot.barWidth, height: plot.height },
4067
4157
  "vertical",
4068
4158
  segments,
4069
- chunkYM3XFBI4_cjs.finite(chart.config?.barSegmentGap, 4),
4159
+ chunkCXL254BT_cjs.finite(chart.config?.barSegmentGap, 4),
4070
4160
  radius,
4071
4161
  height / plot.height,
4072
4162
  chart.config?.barSegmentSnap !== false
4073
4163
  );
4074
4164
  }
4075
- return chunkYM3XFBI4_cjs.barPath(x, y, slot.barWidth, height, radius, chart.config?.barRoundedBottom === true);
4165
+ return chunkCXL254BT_cjs.barPath(x, y, slot.barWidth, height, radius, chart.config?.barRoundedBottom === true);
4076
4166
  }
4077
4167
  function pushLabel(context, layers, series, seriesIndex, valueIndex, slot, frame) {
4078
4168
  const { chart } = context;
@@ -4094,7 +4184,7 @@ function pushLabel(context, layers, series, seriesIndex, valueIndex, slot, frame
4094
4184
  }
4095
4185
  function markOf2(context, mode, slot, series, seriesIndex, valueIndex) {
4096
4186
  const { chart, plot } = context;
4097
- const segment = chunkYM3XFBI4_cjs.stackedSegment(chart, mode, valueIndex, seriesIndex, plot.height);
4187
+ const segment = chunkCXL254BT_cjs.stackedSegment(chart, mode, valueIndex, seriesIndex, plot.height);
4098
4188
  const radius = slot.outerSeriesIndex === null || seriesIndex === slot.outerSeriesIndex ? slot.cornerRadius : 0;
4099
4189
  const x = plot.x + valueIndex * slot.slotWidth + slot.groupGap / 2;
4100
4190
  const y = plot.y + plot.height - Math.max(segment.pixelStart, segment.pixelEnd);
@@ -4103,7 +4193,7 @@ function markOf2(context, mode, slot, series, seriesIndex, valueIndex) {
4103
4193
  series,
4104
4194
  valueIndex,
4105
4195
  radius,
4106
- color: series.colors?.[valueIndex] ?? series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length],
4196
+ color: series.colors?.[valueIndex] ?? series.color ?? chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length],
4107
4197
  x,
4108
4198
  y,
4109
4199
  height,
@@ -4114,10 +4204,10 @@ function markOf2(context, mode, slot, series, seriesIndex, valueIndex) {
4114
4204
  function segmentNodes(context, mark) {
4115
4205
  const { chart, plot, bounds, diagnostics, nextOrder } = context;
4116
4206
  const { series, valueIndex, path } = mark;
4117
- const fill2 = chunkYM3XFBI4_cjs.paint(mark.color, diagnostics, chart.id);
4118
- const stroke = chunkYM3XFBI4_cjs.paint(chart.config?.barBorderColor || "#000000", diagnostics, chart.id);
4119
- const strokeWidth = chunkYM3XFBI4_cjs.finite(chart.config?.barBorderWidth, 0);
4120
- const shadow = chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle);
4207
+ const fill2 = chunkCXL254BT_cjs.paint(mark.color, diagnostics, chart.id);
4208
+ const stroke = chunkCXL254BT_cjs.paint(chart.config?.barBorderColor || "#000000", diagnostics, chart.id);
4209
+ const strokeWidth = chunkCXL254BT_cjs.finite(chart.config?.barBorderWidth, 0);
4210
+ const shadow = chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle);
4121
4211
  const nodes = [];
4122
4212
  if (shadow) {
4123
4213
  const plotClip = `M ${plot.x} ${plot.y} H ${plot.x + plot.width} V ${plot.y + plot.height} H ${plot.x} Z`;
@@ -4149,10 +4239,10 @@ function segmentNodes(context, mark) {
4149
4239
  valueIndex,
4150
4240
  mark: "bar",
4151
4241
  radius: mark.radius,
4152
- colorProp: chunkYM3XFBI4_cjs.seriesValueColorProp(series.id, valueIndex),
4242
+ colorProp: chunkCXL254BT_cjs.seriesValueColorProp(series.id, valueIndex),
4153
4243
  hasColorOverride: series.colors?.[valueIndex] != null
4154
4244
  },
4155
- prop: chunkYM3XFBI4_cjs.seriesValueProp(series.id, valueIndex),
4245
+ prop: chunkCXL254BT_cjs.seriesValueProp(series.id, valueIndex),
4156
4246
  style: { fill: fill2, stroke, strokeWidth, innerShadow: shadow }
4157
4247
  });
4158
4248
  return nodes;
@@ -4166,7 +4256,7 @@ function pushSegment(context, mode, layers, slot, series, seriesIndex, valueInde
4166
4256
  layers.bars.push(...segmentNodes(context, mark));
4167
4257
  const frame = { x: mark.x, y: mark.y, width: slot.barWidth, height: mark.height };
4168
4258
  pushLabel(context, layers, series, seriesIndex, valueIndex, slot, frame);
4169
- const glow = chunkYM3XFBI4_cjs.finite(chart.config?.barGlow, 0);
4259
+ const glow = chunkCXL254BT_cjs.finite(chart.config?.barGlow, 0);
4170
4260
  if (glow > 0) {
4171
4261
  layers.glows.push(
4172
4262
  createBarGlowNode(context, `chart-bar-glow-${chart.id}-${series.id}-${valueIndex}`, mark.path, mark.color, glow)
@@ -4177,7 +4267,7 @@ function renderStackedBars(context, mode) {
4177
4267
  const { chart } = context;
4178
4268
  const layers = { tracks: [], bars: [], glows: [], labels: [] };
4179
4269
  const slot = slotOf(context, mode);
4180
- const valueCount = chunkYM3XFBI4_cjs.barCategoryCount(chart);
4270
+ const valueCount = chunkCXL254BT_cjs.barCategoryCount(chart);
4181
4271
  for (let valueIndex = 0; valueIndex < valueCount; valueIndex++) {
4182
4272
  chart.series.forEach((series, seriesIndex) => {
4183
4273
  pushSegment(context, mode, layers, slot, series, seriesIndex, valueIndex);
@@ -4192,7 +4282,7 @@ function isSeriesMax2(values, index) {
4192
4282
 
4193
4283
  // src/renderScene/charts/renderers/bar.ts
4194
4284
  function renderBar(context) {
4195
- if (chunkYM3XFBI4_cjs.isHorizontalBar(context.chart)) {
4285
+ if (chunkCXL254BT_cjs.isHorizontalBar(context.chart)) {
4196
4286
  return renderHorizontalBars(context);
4197
4287
  }
4198
4288
  if (context.stackedMode) {
@@ -4207,6 +4297,7 @@ function createBoxplotLayout(context) {
4207
4297
  const orientation = chart.config?.orientation ?? "vertical";
4208
4298
  const boxCount = Math.max(1, chart.series.length);
4209
4299
  const slotWidth = (orientation === "horizontal" ? plot.height : plot.width) / boxCount;
4300
+ const borderColor = chunkCXL254BT_cjs.representativeColor(chart.config?.barBorderColor, "#000000");
4210
4301
  const widthFraction = Math.min(1, Math.max(0.05, chart.config?.boxWidth ?? 0.6));
4211
4302
  return {
4212
4303
  orientation,
@@ -4214,8 +4305,16 @@ function createBoxplotLayout(context) {
4214
4305
  boxWidth: Math.max(4, slotWidth * widthFraction),
4215
4306
  cornerRadius: chart.config?.barCornerRadius ?? 2,
4216
4307
  showPoints: chart.config?.showBoxplotPoints ?? true,
4217
- borderColor: chunkYM3XFBI4_cjs.representativeColor(chart.config?.barBorderColor, "#000000"),
4218
- borderWidth: chunkYM3XFBI4_cjs.finite(chart.config?.barBorderWidth, 1)
4308
+ borderColor,
4309
+ borderWidth: chunkCXL254BT_cjs.finite(chart.config?.barBorderWidth, 1),
4310
+ whiskerWidth: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.boxWhiskerWidth, 1)),
4311
+ medianWidth: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.boxMedianWidth, 2)),
4312
+ medianColor: chart.config?.boxMedianColor ?? borderColor,
4313
+ whiskerColor: chart.config?.boxWhiskerColor,
4314
+ capSize: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.boxCapSize, 0.4)),
4315
+ pointSize: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.boxPointSize, 3)),
4316
+ pointOpacity: Math.min(1, Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.boxPointOpacity, 0.7))),
4317
+ jitter: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.boxJitter, 1))
4219
4318
  };
4220
4319
  }
4221
4320
 
@@ -4226,7 +4325,7 @@ function boxplotPoint(orientation, center, value) {
4226
4325
  function createBoxplotGeometry(context, layout, seriesIndex, stats) {
4227
4326
  const { chart, plot } = context;
4228
4327
  const { orientation } = layout;
4229
- const valueAt = (value) => orientation === "horizontal" ? plot.x + chunkYM3XFBI4_cjs.mapChartValue(value, chart.axisX, plot.width) : plot.y + plot.height - chunkYM3XFBI4_cjs.mapChartValue(value, chart.axisY, plot.height);
4328
+ const valueAt = (value) => orientation === "horizontal" ? plot.x + chunkCXL254BT_cjs.mapChartValue(value, chart.axisX, plot.width) : plot.y + plot.height - chunkCXL254BT_cjs.mapChartValue(value, chart.axisY, plot.height);
4230
4329
  const center = plot[orientation === "horizontal" ? "y" : "x"] + seriesIndex * layout.slotWidth + layout.slotWidth / 2;
4231
4330
  return {
4232
4331
  center,
@@ -4241,9 +4340,12 @@ function createBoxplotGeometry(context, layout, seriesIndex, stats) {
4241
4340
  // src/renderScene/charts/renderers/boxplot/points.ts
4242
4341
  function renderSamplePoints(context, layout, mark) {
4243
4342
  const { chart, plot, bounds, diagnostics, nextOrder } = context;
4244
- const valueAt = (value) => layout.orientation === "horizontal" ? plot.x + chunkYM3XFBI4_cjs.mapChartValue(value, chart.axisX, plot.width) : plot.y + plot.height - chunkYM3XFBI4_cjs.mapChartValue(value, chart.axisY, plot.height);
4343
+ const valueAt = (value) => layout.orientation === "horizontal" ? plot.x + chunkCXL254BT_cjs.mapChartValue(value, chart.axisX, plot.width) : plot.y + plot.height - chunkCXL254BT_cjs.mapChartValue(value, chart.axisY, plot.height);
4344
+ if (layout.pointSize <= 0) {
4345
+ return [];
4346
+ }
4245
4347
  return mark.series.values.map((value, pointIndex) => {
4246
- const center = mark.geometry.center + jitter(mark.seriesIndex * 1e4 + pointIndex) * layout.boxWidth;
4348
+ const center = mark.geometry.center + jitter(mark.seriesIndex * 1e4 + pointIndex) * layout.jitter * layout.boxWidth;
4247
4349
  const { x, y } = boxplotPoint(layout.orientation, center, valueAt(value));
4248
4350
  return {
4249
4351
  type: "ellipse",
@@ -4252,9 +4354,9 @@ function renderSamplePoints(context, layout, mark) {
4252
4354
  bounds,
4253
4355
  cx: x,
4254
4356
  cy: y,
4255
- rx: 3,
4256
- ry: 3,
4257
- style: { fill: chunkYM3XFBI4_cjs.paint(mark.color, diagnostics, chart.id), opacity: 0.7 }
4357
+ rx: layout.pointSize,
4358
+ ry: layout.pointSize,
4359
+ style: { fill: chunkCXL254BT_cjs.paint(mark.color, diagnostics, chart.id), opacity: layout.pointOpacity }
4258
4360
  };
4259
4361
  });
4260
4362
  }
@@ -4265,22 +4367,30 @@ function jitter(seed) {
4265
4367
 
4266
4368
  // src/renderScene/charts/renderers/boxplot/shapes.ts
4267
4369
  function renderBoxAndWhiskers(context, layout, mark) {
4370
+ const whiskers = layout.whiskerWidth > 0 ? [lowerWhisker(layout, mark), upperWhisker(layout, mark)] : [];
4371
+ const caps = layout.whiskerWidth > 0 && layout.capSize > 0 ? [lowerWhiskerCap(layout, mark), upperWhiskerCap(layout, mark)] : [];
4372
+ const median = layout.medianWidth > 0 ? [medianLine(layout, mark)] : [];
4268
4373
  return [
4269
- createBoxBorderLine(context, layout, lowerWhisker(layout, mark)),
4270
- createBoxBorderLine(context, layout, upperWhisker(layout, mark)),
4271
- createBoxBorderLine(context, layout, lowerWhiskerCap(layout, mark)),
4272
- createBoxBorderLine(context, layout, upperWhiskerCap(layout, mark)),
4374
+ ...[...whiskers, ...caps].map(
4375
+ (line) => createBoxBorderLine(context, layout, { ...line, color: whiskerColor(layout, mark) })
4376
+ ),
4273
4377
  createBoxNode(context, layout, mark),
4274
- createBoxBorderLine(context, layout, medianLine(layout, mark))
4378
+ ...median.map((line) => createBoxBorderLine(context, layout, line))
4275
4379
  ];
4276
4380
  }
4381
+ function whiskerColor(layout, mark) {
4382
+ if (layout.whiskerColor === "series") {
4383
+ return chunkCXL254BT_cjs.representativeColor(mark.color, layout.borderColor);
4384
+ }
4385
+ return layout.whiskerColor;
4386
+ }
4277
4387
  function lowerWhisker(layout, mark) {
4278
4388
  const { center, min, q1 } = mark.geometry;
4279
4389
  return {
4280
4390
  id: `chart-box-whisker-lo-${mark.id}`,
4281
4391
  from: boxplotPoint(layout.orientation, center, min),
4282
4392
  to: boxplotPoint(layout.orientation, center, q1),
4283
- strokeWidth: 1
4393
+ strokeWidth: layout.whiskerWidth
4284
4394
  };
4285
4395
  }
4286
4396
  function upperWhisker(layout, mark) {
@@ -4289,7 +4399,7 @@ function upperWhisker(layout, mark) {
4289
4399
  id: `chart-box-whisker-hi-${mark.id}`,
4290
4400
  from: boxplotPoint(layout.orientation, center, q3),
4291
4401
  to: boxplotPoint(layout.orientation, center, max),
4292
- strokeWidth: 1
4402
+ strokeWidth: layout.whiskerWidth
4293
4403
  };
4294
4404
  }
4295
4405
  function lowerWhiskerCap(layout, mark) {
@@ -4299,12 +4409,12 @@ function upperWhiskerCap(layout, mark) {
4299
4409
  return whiskerCap(`chart-box-cap-hi-${mark.id}`, layout, mark.geometry.center, mark.geometry.max);
4300
4410
  }
4301
4411
  function whiskerCap(id, layout, center, value) {
4302
- const capHalf = layout.boxWidth * 0.2;
4412
+ const capHalf = layout.boxWidth * layout.capSize / 2;
4303
4413
  return {
4304
4414
  id,
4305
4415
  from: boxplotPoint(layout.orientation, center - capHalf, value),
4306
4416
  to: boxplotPoint(layout.orientation, center + capHalf, value),
4307
- strokeWidth: 1
4417
+ strokeWidth: layout.whiskerWidth
4308
4418
  };
4309
4419
  }
4310
4420
  function medianLine(layout, mark) {
@@ -4313,7 +4423,8 @@ function medianLine(layout, mark) {
4313
4423
  id: `chart-box-median-${mark.id}`,
4314
4424
  from: boxplotPoint(layout.orientation, mark.geometry.center - half, mark.geometry.median),
4315
4425
  to: boxplotPoint(layout.orientation, mark.geometry.center + half, mark.geometry.median),
4316
- strokeWidth: 2
4426
+ strokeWidth: layout.medianWidth,
4427
+ color: layout.medianColor
4317
4428
  };
4318
4429
  }
4319
4430
  function createBoxBorderLine(context, layout, line) {
@@ -4325,7 +4436,7 @@ function createBoxBorderLine(context, layout, line) {
4325
4436
  d: `M ${line.from.x} ${line.from.y} L ${line.to.x} ${line.to.y}`,
4326
4437
  style: {
4327
4438
  fill: { kind: "none" },
4328
- stroke: { kind: "solid", color: layout.borderColor },
4439
+ stroke: { kind: "solid", color: line.color ?? layout.borderColor },
4329
4440
  strokeWidth: line.strokeWidth
4330
4441
  }
4331
4442
  };
@@ -4351,7 +4462,7 @@ function createBoxNode(context, layout, mark) {
4351
4462
  height,
4352
4463
  rx: layout.cornerRadius,
4353
4464
  style: {
4354
- fill: chunkYM3XFBI4_cjs.paint(mark.color, diagnostics, chart.id),
4465
+ fill: chunkCXL254BT_cjs.paint(mark.color, diagnostics, chart.id),
4355
4466
  stroke: { kind: "solid", color: layout.borderColor },
4356
4467
  strokeWidth: layout.borderWidth
4357
4468
  }
@@ -4360,12 +4471,12 @@ function createBoxNode(context, layout, mark) {
4360
4471
 
4361
4472
  // src/renderScene/charts/renderers/boxplot/series.ts
4362
4473
  function renderBoxplotSeries(context, layout, series, seriesIndex) {
4363
- const stats = chunkYM3XFBI4_cjs.computeBoxplotStats(series.values);
4474
+ const stats = chunkCXL254BT_cjs.computeBoxplotStats(series.values);
4364
4475
  if (!stats) {
4365
4476
  return [];
4366
4477
  }
4367
4478
  const geometry = createBoxplotGeometry(context, layout, seriesIndex, stats);
4368
- const color2 = series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length];
4479
+ const color2 = series.color ?? chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length];
4369
4480
  const mark = {
4370
4481
  id: `${context.chart.id}-${series.id}`,
4371
4482
  series,
@@ -4427,21 +4538,21 @@ function metricComponent(chart, point) {
4427
4538
  }
4428
4539
  function customPointPosition(context, value) {
4429
4540
  return {
4430
- x: context.plot.x + chunkYM3XFBI4_cjs.mapChartValue(value[0], context.chart.axisX, context.plot.width),
4431
- y: context.plot.y + context.plot.height - chunkYM3XFBI4_cjs.mapChartValue(value[1], context.chart.axisY, context.plot.height)
4541
+ x: context.plot.x + chunkCXL254BT_cjs.mapChartValue(value[0], context.chart.axisX, context.plot.width),
4542
+ y: context.plot.y + context.plot.height - chunkCXL254BT_cjs.mapChartValue(value[1], context.chart.axisY, context.plot.height)
4432
4543
  };
4433
4544
  }
4434
4545
  function customSeriesStyle(context, series, seriesIndex) {
4435
- const color2 = series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length];
4546
+ const color2 = series.color ?? chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length];
4436
4547
  return {
4437
- fill: chunkYM3XFBI4_cjs.paint(color2, context.diagnostics, context.chart.id),
4548
+ fill: chunkCXL254BT_cjs.paint(color2, context.diagnostics, context.chart.id),
4438
4549
  stroke: series.stroke ? { kind: "solid", color: series.stroke } : void 0,
4439
- strokeWidth: series.stroke ? chunkYM3XFBI4_cjs.finite(series.strokeWidth, 1) : void 0
4550
+ strokeWidth: series.stroke ? chunkCXL254BT_cjs.finite(series.strokeWidth, 1) : void 0
4440
4551
  };
4441
4552
  }
4442
4553
  function createCustomSymbolMark(context, mark) {
4443
4554
  const symbol = mark.series.symbol;
4444
- const size = chunkYM3XFBI4_cjs.finite(mark.series.size, 3);
4555
+ const size = chunkCXL254BT_cjs.finite(mark.series.size, 3);
4445
4556
  const scale = symbol?.normalized ? size * 2 : 1;
4446
4557
  const offset = symbol?.normalized ? 0.5 : 0;
4447
4558
  const points = (symbol?.points ?? []).map(([x, y]) => ({
@@ -4453,12 +4564,12 @@ function createCustomSymbolMark(context, mark) {
4453
4564
  id: customMarkId(context.chart, mark.series, mark.valueIndex),
4454
4565
  order: context.nextOrder(),
4455
4566
  bounds: context.bounds,
4456
- d: chunkYM3XFBI4_cjs.freeformPathData({ points, tension: chunkYM3XFBI4_cjs.finite(symbol?.tension, 0), closed: true }),
4567
+ d: chunkCXL254BT_cjs.freeformPathData({ points, tension: chunkCXL254BT_cjs.finite(symbol?.tension, 0), closed: true }),
4457
4568
  style: mark.style
4458
4569
  };
4459
4570
  }
4460
4571
  function createCustomPointMark(context, mark) {
4461
- const radius = chunkYM3XFBI4_cjs.finite(mark.series.size, 3);
4572
+ const radius = chunkCXL254BT_cjs.finite(mark.series.size, 3);
4462
4573
  return {
4463
4574
  type: "ellipse",
4464
4575
  id: customMarkId(context.chart, mark.series, mark.valueIndex),
@@ -4482,7 +4593,7 @@ function renderConnectedPairs(context) {
4482
4593
  const zones = chart.config?.zones ?? [];
4483
4594
  const betterColor = zones[0]?.color ?? "#10b981";
4484
4595
  const worseColor = zones[1]?.color ?? "#ec4899";
4485
- const tieColor = zones[2]?.color ?? chunkYM3XFBI4_cjs.DEFAULT_ZONE_FILL;
4596
+ const tieColor = zones[2]?.color ?? chunkCXL254BT_cjs.DEFAULT_ZONE_FILL;
4486
4597
  const reverse = Boolean(chart.config?.reverseComparison);
4487
4598
  const count = Math.min(beforeValues.length, afterValues.length);
4488
4599
  const categories = chart.config?.categories ?? [];
@@ -4497,7 +4608,7 @@ function renderConnectedPairs(context) {
4497
4608
  const better = reverse ? afterMetric < beforeMetric : afterMetric > beforeMetric;
4498
4609
  const worse = reverse ? afterMetric > beforeMetric : afterMetric < beforeMetric;
4499
4610
  const comparisonColor = better ? betterColor : worse ? worseColor : tieColor;
4500
- const radius = chunkYM3XFBI4_cjs.finite(afterSeries.size, 3);
4611
+ const radius = chunkCXL254BT_cjs.finite(afterSeries.size, 3);
4501
4612
  nodes.push(createConnectorLine(context, index, beforePoint, afterPoint, comparisonColor));
4502
4613
  nodes.push(
4503
4614
  createCustomPointMark(context, {
@@ -4505,9 +4616,9 @@ function renderConnectedPairs(context) {
4505
4616
  valueIndex: index,
4506
4617
  point: beforePoint,
4507
4618
  style: {
4508
- fill: chunkYM3XFBI4_cjs.paint(chart.gridColor ?? "#e2e8f0", context.diagnostics, chart.id),
4509
- stroke: { kind: "solid", color: HOLLOW_POINT_STROKE },
4510
- strokeWidth: 1.5
4619
+ fill: chunkCXL254BT_cjs.paint(chart.config?.customBeforeFill ?? chart.gridColor ?? "#e2e8f0", context.diagnostics, chart.id),
4620
+ stroke: { kind: "solid", color: chart.config?.customBeforeStroke ?? HOLLOW_POINT_STROKE },
4621
+ strokeWidth: chunkCXL254BT_cjs.finite(chart.config?.customBeforeStrokeWidth, 1.5)
4511
4622
  }
4512
4623
  })
4513
4624
  );
@@ -4517,7 +4628,7 @@ function renderConnectedPairs(context) {
4517
4628
  valueIndex: index,
4518
4629
  point: afterPoint,
4519
4630
  style: {
4520
- fill: chunkYM3XFBI4_cjs.paint(comparisonColor, context.diagnostics, chart.id),
4631
+ fill: chunkCXL254BT_cjs.paint(comparisonColor, context.diagnostics, chart.id),
4521
4632
  stroke: void 0,
4522
4633
  strokeWidth: void 0
4523
4634
  }
@@ -4529,6 +4640,10 @@ function renderConnectedPairs(context) {
4529
4640
  }
4530
4641
  return nodes;
4531
4642
  }
4643
+ function connectorDash(text) {
4644
+ const parts = (text ?? "").split(/[ ,]+/).map(Number).filter((part) => Number.isFinite(part) && part > 0);
4645
+ return parts.length > 0 ? parts : void 0;
4646
+ }
4532
4647
  function createConnectorLine(context, index, from, to, color2) {
4533
4648
  const { chart } = context;
4534
4649
  return {
@@ -4537,7 +4652,13 @@ function createConnectorLine(context, index, from, to, color2) {
4537
4652
  order: context.nextOrder(),
4538
4653
  bounds: context.bounds,
4539
4654
  d: `M ${from.x} ${from.y} L ${to.x} ${to.y}`,
4540
- style: { fill: { kind: "none" }, stroke: { kind: "solid", color: color2 }, strokeWidth: 2 }
4655
+ style: {
4656
+ fill: { kind: "none" },
4657
+ stroke: { kind: "solid", color: color2 },
4658
+ strokeWidth: chunkCXL254BT_cjs.finite(chart.config?.customConnectorWidth, 2),
4659
+ opacity: chart.config?.customConnectorOpacity,
4660
+ dash: connectorDash(chart.config?.customConnectorDash)
4661
+ }
4541
4662
  };
4542
4663
  }
4543
4664
  function createConnectorLabel(context, index, beforePoint, afterPoint, radius, text) {
@@ -4555,7 +4676,7 @@ function createConnectorLabel(context, index, beforePoint, afterPoint, radius, t
4555
4676
  height: 16
4556
4677
  };
4557
4678
  return {
4558
- ...chunkYM3XFBI4_cjs.chartText({
4679
+ ...chunkCXL254BT_cjs.chartText({
4559
4680
  id: `chart-custom-label-${chart.id}-${index}`,
4560
4681
  order: nextOrder(),
4561
4682
  bounds,
@@ -4564,7 +4685,8 @@ function createConnectorLabel(context, index, beforePoint, afterPoint, radius, t
4564
4685
  chart,
4565
4686
  align: horizontal ? "left" : "center"
4566
4687
  }),
4567
- fontSize: Math.max(9, chunkYM3XFBI4_cjs.finite(chart.fontSize, 12)) - 2
4688
+ fontSize: Math.max(6, chunkCXL254BT_cjs.finite(chart.config?.customLabelSize, Math.max(9, chunkCXL254BT_cjs.finite(chart.fontSize, 12)) - 2)),
4689
+ ...chart.config?.customLabelColor ? { color: chart.config.customLabelColor } : {}
4568
4690
  };
4569
4691
  }
4570
4692
 
@@ -4575,8 +4697,8 @@ function classifyFieldData(context) {
4575
4697
  const vectorSeries = chart.series.filter((series) => tupleSize(series.values[0]) === 4);
4576
4698
  const scalarSamples = scalarSeries.flatMap(
4577
4699
  (series) => series.values.map(([x, y, value]) => ({
4578
- x: chunkYM3XFBI4_cjs.mapChartValue(x, chart.axisX, plot.width),
4579
- y: plot.height - chunkYM3XFBI4_cjs.mapChartValue(y, chart.axisY, plot.height),
4700
+ x: chunkCXL254BT_cjs.mapChartValue(x, chart.axisX, plot.width),
4701
+ y: plot.height - chunkCXL254BT_cjs.mapChartValue(y, chart.axisY, plot.height),
4580
4702
  value
4581
4703
  }))
4582
4704
  );
@@ -4640,20 +4762,20 @@ function createLegendLabels(context, minimum, maximum, geometry) {
4640
4762
  const { chart, bounds, nextOrder } = context;
4641
4763
  const y = geometry.y + geometry.height + 3;
4642
4764
  return [
4643
- chunkYM3XFBI4_cjs.chartText({
4765
+ chunkCXL254BT_cjs.chartText({
4644
4766
  id: `chart-field-colorbar-min-${chart.id}`,
4645
4767
  order: nextOrder(),
4646
4768
  bounds,
4647
4769
  frame: { x: geometry.x, y, width: 80, height: 16 },
4648
- text: chunkYM3XFBI4_cjs.formatFieldValue(minimum),
4770
+ text: chunkCXL254BT_cjs.formatFieldValue(minimum),
4649
4771
  chart
4650
4772
  }),
4651
- chunkYM3XFBI4_cjs.chartText({
4773
+ chunkCXL254BT_cjs.chartText({
4652
4774
  id: `chart-field-colorbar-max-${chart.id}`,
4653
4775
  order: nextOrder(),
4654
4776
  bounds,
4655
4777
  frame: { x: geometry.x + geometry.width - 80, y, width: 80, height: 16 },
4656
- text: chunkYM3XFBI4_cjs.formatFieldValue(maximum),
4778
+ text: chunkCXL254BT_cjs.formatFieldValue(maximum),
4657
4779
  chart,
4658
4780
  align: "right"
4659
4781
  })
@@ -4666,7 +4788,7 @@ function colorAtRamp(ramp, value) {
4666
4788
  if (!ramp?.stops.length) {
4667
4789
  return RAMP_FALLBACK_COLOR;
4668
4790
  }
4669
- return chunkYM3XFBI4_cjs.interpolateHexColorStops(ramp.stops, value);
4791
+ return chunkCXL254BT_cjs.interpolateHexColorStops(ramp.stops, value);
4670
4792
  }
4671
4793
 
4672
4794
  // src/renderScene/charts/field/isolines.ts
@@ -4876,7 +4998,7 @@ function createIsoline(context, grid, threshold, thresholdIndex) {
4876
4998
  }
4877
4999
  const chains = stitchIsolineSegments(segments);
4878
5000
  const path = chains.map(
4879
- (chain) => chunkYM3XFBI4_cjs.linePathData(
5001
+ (chain) => chunkCXL254BT_cjs.linePathData(
4880
5002
  chain.map(([x, y]) => ({ x: plot.x + x, y: plot.y + y })),
4881
5003
  ISOLINE_TENSION
4882
5004
  )
@@ -4900,7 +5022,7 @@ function createIsoline(context, grid, threshold, thresholdIndex) {
4900
5022
  function renderVectorField(context, seriesList) {
4901
5023
  const nodes = [];
4902
5024
  seriesList.forEach((series, seriesIndex) => {
4903
- const color2 = series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length];
5025
+ const color2 = series.color ?? chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length];
4904
5026
  series.values.forEach((vector, vectorIndex) => {
4905
5027
  nodes.push(createVectorNode(context, series.id, vector, vectorIndex, color2));
4906
5028
  });
@@ -4910,10 +5032,10 @@ function renderVectorField(context, seriesList) {
4910
5032
  function createVectorNode(context, seriesId, vector, vectorIndex, color2) {
4911
5033
  const { chart, plot, bounds, diagnostics, nextOrder } = context;
4912
5034
  const [x, y, angle, magnitude] = vector;
4913
- const startX = plot.x + chunkYM3XFBI4_cjs.mapChartValue(x, chart.axisX, plot.width);
4914
- const startY = plot.y + plot.height - chunkYM3XFBI4_cjs.mapChartValue(y, chart.axisY, plot.height);
4915
- const endX = plot.x + chunkYM3XFBI4_cjs.mapChartValue(x + Math.cos(angle) * magnitude, chart.axisX, plot.width);
4916
- const endY = plot.y + plot.height - chunkYM3XFBI4_cjs.mapChartValue(y + Math.sin(angle) * magnitude, chart.axisY, plot.height);
5035
+ const startX = plot.x + chunkCXL254BT_cjs.mapChartValue(x, chart.axisX, plot.width);
5036
+ const startY = plot.y + plot.height - chunkCXL254BT_cjs.mapChartValue(y, chart.axisY, plot.height);
5037
+ const endX = plot.x + chunkCXL254BT_cjs.mapChartValue(x + Math.cos(angle) * magnitude, chart.axisX, plot.width);
5038
+ const endY = plot.y + plot.height - chunkCXL254BT_cjs.mapChartValue(y + Math.sin(angle) * magnitude, chart.axisY, plot.height);
4917
5039
  return {
4918
5040
  type: "path",
4919
5041
  id: `chart-field-vector-${chart.id}-${seriesId}-${vectorIndex}`,
@@ -4923,7 +5045,7 @@ function createVectorNode(context, seriesId, vector, vectorIndex, color2) {
4923
5045
  markerEnd: "filled_arrow",
4924
5046
  style: {
4925
5047
  fill: { kind: "none" },
4926
- stroke: chunkYM3XFBI4_cjs.paint(color2, diagnostics, chart.id),
5048
+ stroke: chunkCXL254BT_cjs.paint(color2, diagnostics, chart.id),
4927
5049
  strokeWidth: 2
4928
5050
  }
4929
5051
  };
@@ -4970,7 +5092,7 @@ function createHeatmapCell(layout, series, rowIndex, columnIndex) {
4970
5092
  };
4971
5093
  }
4972
5094
  function colorForValue(value, layout) {
4973
- return chunkYM3XFBI4_cjs.zoneColorAtValue(value, layout.bands, layout.zones);
5095
+ return chunkCXL254BT_cjs.zoneColorAtValue(value, layout.bands, layout.zones);
4974
5096
  }
4975
5097
  function renderHeatmapCell(context, layout, cell) {
4976
5098
  const background = createCellBackground(context, layout, cell);
@@ -4981,38 +5103,55 @@ function renderHeatmapCell(context, layout, cell) {
4981
5103
  }
4982
5104
  function createCellBackground(context, layout, cell) {
4983
5105
  const { chart, bounds, nextOrder } = context;
5106
+ const id = `chart-heatmap-cell-${chart.id}-${cell.seriesId}-${cell.columnIndex}`;
5107
+ const style = {
5108
+ fill: { kind: "solid", color: cell.color },
5109
+ stroke: { kind: "solid", color: chart.config?.cellStrokeColor ?? chart.gridColor ?? "#e2e8f0" },
5110
+ strokeWidth: chunkCXL254BT_cjs.finite(chart.config?.cellStrokeWidth, chunkCXL254BT_cjs.finite(chart.gridWidth, 1))
5111
+ };
5112
+ if (chart.config?.cellShape === "circle") {
5113
+ return {
5114
+ type: "ellipse",
5115
+ id,
5116
+ order: nextOrder(),
5117
+ bounds,
5118
+ cx: cell.frame.x + cell.frame.width / 2,
5119
+ cy: cell.frame.y + cell.frame.height / 2,
5120
+ rx: cell.frame.width / 2,
5121
+ ry: cell.frame.height / 2,
5122
+ style
5123
+ };
5124
+ }
4984
5125
  return {
4985
5126
  type: "rect",
4986
- id: `chart-heatmap-cell-${chart.id}-${cell.seriesId}-${cell.columnIndex}`,
5127
+ id,
4987
5128
  order: nextOrder(),
4988
5129
  bounds,
4989
5130
  ...cell.frame,
4990
5131
  rx: layout.grid.cellRadius,
4991
- style: {
4992
- fill: { kind: "solid", color: cell.color },
4993
- stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
4994
- strokeWidth: chunkYM3XFBI4_cjs.finite(chart.gridWidth, 1)
4995
- }
5132
+ style
4996
5133
  };
4997
5134
  }
4998
5135
  function createCellValueLabel(context, layout, cell) {
4999
5136
  const { chart, bounds, nextOrder } = context;
5137
+ const size = Math.max(6, chunkCXL254BT_cjs.finite(chart.config?.cellValueSize, layout.fontSize));
5000
5138
  return {
5001
- ...chunkYM3XFBI4_cjs.chartText({
5139
+ ...chunkCXL254BT_cjs.chartText({
5002
5140
  id: `chart-heatmap-value-${chart.id}-${cell.seriesId}-${cell.columnIndex}`,
5003
5141
  order: nextOrder(),
5004
5142
  bounds,
5005
5143
  frame: {
5006
5144
  x: cell.frame.x,
5007
- y: cell.frame.y + cell.frame.height / 2 - layout.fontSize / 2,
5145
+ y: cell.frame.y + cell.frame.height / 2 - size / 2,
5008
5146
  width: cell.frame.width,
5009
- height: layout.fontSize + 2
5147
+ height: size + 2
5010
5148
  },
5011
5149
  text: String(cell.value),
5012
5150
  chart,
5013
5151
  align: "center"
5014
5152
  }),
5015
- color: chunkYM3XFBI4_cjs.contrastTextColor(cell.color)
5153
+ ...chart.config?.cellValueSize === void 0 ? {} : { fontSize: size },
5154
+ color: chart.config?.cellValueColor ?? chunkCXL254BT_cjs.contrastTextColor(cell.color)
5016
5155
  };
5017
5156
  }
5018
5157
 
@@ -5028,7 +5167,7 @@ function renderRowHeaders(context, layout) {
5028
5167
  }
5029
5168
  function createRowHeader(context, layout, series, rowIndex) {
5030
5169
  const { chart, plot, bounds, nextOrder } = context;
5031
- return chunkYM3XFBI4_cjs.chartText({
5170
+ return chunkCXL254BT_cjs.chartText({
5032
5171
  id: `chart-heatmap-row-${chart.id}-${series.id}`,
5033
5172
  order: nextOrder(),
5034
5173
  bounds,
@@ -5050,7 +5189,7 @@ function renderColumnHeaders(context, layout) {
5050
5189
  }
5051
5190
  function createColumnHeader(context, layout, label, columnIndex) {
5052
5191
  const { chart, plot, bounds, nextOrder } = context;
5053
- return chunkYM3XFBI4_cjs.chartText({
5192
+ return chunkCXL254BT_cjs.chartText({
5054
5193
  id: `chart-heatmap-col-${chart.id}-${columnIndex}`,
5055
5194
  order: nextOrder(),
5056
5195
  bounds,
@@ -5074,9 +5213,9 @@ function createHeatmapLayout(context) {
5074
5213
  return {
5075
5214
  rows: chart.series,
5076
5215
  columns,
5077
- bands: chunkYM3XFBI4_cjs.axisBands(chart.axisY),
5078
- zones: chart.config?.zones?.length ? chart.config.zones : chunkYM3XFBI4_cjs.DEFAULT_HEATMAP_ZONES,
5079
- fontSize: Math.max(9, chunkYM3XFBI4_cjs.finite(chart.fontSize, 12)),
5216
+ bands: chunkCXL254BT_cjs.axisBands(chart.axisY),
5217
+ zones: chart.config?.zones?.length ? chart.config.zones : chunkCXL254BT_cjs.DEFAULT_HEATMAP_ZONES,
5218
+ fontSize: Math.max(9, chunkCXL254BT_cjs.finite(chart.fontSize, 12)),
5080
5219
  reservedSpace,
5081
5220
  grid: createHeatmapGrid(context, reservedSpace, columns.length)
5082
5221
  };
@@ -5087,9 +5226,9 @@ function heatmapColumns(context) {
5087
5226
  }
5088
5227
  function heatmapReservedSpace(context) {
5089
5228
  const { chart } = context;
5090
- const fontSize = Math.max(9, chunkYM3XFBI4_cjs.finite(chart.fontSize, 12));
5229
+ const fontSize = Math.max(9, chunkCXL254BT_cjs.finite(chart.fontSize, 12));
5091
5230
  const longestLabel = chart.series.reduce(
5092
- (max, series) => Math.max(max, chunkYM3XFBI4_cjs.estimateTextWidth(series.label ?? "", fontSize, false)),
5231
+ (max, series) => Math.max(max, chunkCXL254BT_cjs.estimateTextWidth(series.label ?? "", fontSize, false)),
5093
5232
  0
5094
5233
  );
5095
5234
  return {
@@ -5103,7 +5242,7 @@ function createHeatmapGrid(context, reservedSpace, columnCount) {
5103
5242
  const width = Math.max(1, context.plot.width - reservedSpace.rowHeaders);
5104
5243
  const height = Math.max(1, context.plot.height - reservedSpace.columnHeaders - reservedSpace.legend);
5105
5244
  const rowCount = chart.series.length;
5106
- const cellGap = Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.cellGap, 0));
5245
+ const cellGap = Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.cellGap, 0));
5107
5246
  let cellWidth = columnCount ? width / columnCount : width;
5108
5247
  let cellHeight = rowCount ? height / rowCount : height;
5109
5248
  let gridWidth = width;
@@ -5123,7 +5262,7 @@ function createHeatmapGrid(context, reservedSpace, columnCount) {
5123
5262
  cellWidth,
5124
5263
  cellHeight,
5125
5264
  cellGap,
5126
- cellRadius: Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.barCornerRadius, cellGap))
5265
+ cellRadius: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.barCornerRadius, cellGap))
5127
5266
  };
5128
5267
  }
5129
5268
 
@@ -5139,7 +5278,7 @@ function renderHeatmapLegend(context, layout) {
5139
5278
  const barWidth = layout.grid.width;
5140
5279
  const labelHeight = layout.fontSize + 2;
5141
5280
  const barY = layout.grid.y + layout.grid.height + 6;
5142
- const barBounds = chunkYM3XFBI4_cjs.boxBounds({ x: barX, y: barY, width: barWidth, height: BAR_HEIGHT });
5281
+ const barBounds = chunkCXL254BT_cjs.boxBounds({ x: barX, y: barY, width: barWidth, height: BAR_HEIGHT });
5143
5282
  return [
5144
5283
  createGradientBar(context, layout, barX, barY, barWidth, barBounds),
5145
5284
  ...createBoundaryTicks(context, layout, barX, barY, barWidth, labelHeight)
@@ -5156,7 +5295,7 @@ function createGradientBar(context, layout, barX, barY, barWidth, barBounds) {
5156
5295
  const zones = layout.zones.slice(0, bandCount);
5157
5296
  const stops = zones.map((zone, index) => ({
5158
5297
  offset: bandRatio(layout, layout.bands[index + 1] ?? layout.bands[layout.bands.length - 1]) * 100,
5159
- color: zone.color ?? chunkYM3XFBI4_cjs.DEFAULT_ZONE_FILL
5298
+ color: zone.color ?? chunkCXL254BT_cjs.DEFAULT_ZONE_FILL
5160
5299
  }));
5161
5300
  return {
5162
5301
  type: "rect",
@@ -5170,7 +5309,7 @@ function createGradientBar(context, layout, barX, barY, barWidth, barBounds) {
5170
5309
  rx: 3,
5171
5310
  zoneGradient: { axis: "y", min: chart.axisY.min, max: chart.axisY.max },
5172
5311
  style: {
5173
- fill: stops.length ? { kind: "linear-gradient", angle: 0, stops } : { kind: "solid", color: chunkYM3XFBI4_cjs.DEFAULT_ZONE_FILL },
5312
+ fill: stops.length ? { kind: "linear-gradient", angle: 0, stops } : { kind: "solid", color: chunkCXL254BT_cjs.DEFAULT_ZONE_FILL },
5174
5313
  stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
5175
5314
  strokeWidth: 1
5176
5315
  }
@@ -5198,12 +5337,12 @@ function createBoundaryTicks(context, layout, barX, barY, barWidth, labelHeight)
5198
5337
  const isLast = index === layout.bands.length - 1;
5199
5338
  const align = isFirst ? "left" : isLast ? "right" : "center";
5200
5339
  const frameX = isFirst ? x : isLast ? x - labelWidth : x - labelWidth / 2;
5201
- const label = chunkYM3XFBI4_cjs.chartText({
5340
+ const label = chunkCXL254BT_cjs.chartText({
5202
5341
  id: `chart-heatmap-legend-tick-label-${chart.id}-${index}`,
5203
5342
  order: nextOrder(),
5204
5343
  bounds,
5205
5344
  frame: { x: frameX, y: labelY, width: labelWidth, height: labelHeight },
5206
- text: chunkYM3XFBI4_cjs.formatFieldValue(value),
5345
+ text: chunkCXL254BT_cjs.formatFieldValue(value),
5207
5346
  chart,
5208
5347
  align
5209
5348
  });
@@ -5275,6 +5414,10 @@ function groupSankeyColumns(ids, columns) {
5275
5414
  return groups;
5276
5415
  }
5277
5416
 
5417
+ // src/renderScene/charts/geometry/sankey/constants.ts
5418
+ var SANKEY_NODE_WIDTH = 18;
5419
+ var SANKEY_NODE_GAP = 8;
5420
+
5278
5421
  // src/renderScene/charts/geometry/sankey/graph.ts
5279
5422
  function createSankeyGraph(nodes, links) {
5280
5423
  const ids = new Set(nodes.map((node) => node.id));
@@ -5298,10 +5441,6 @@ function createSankeyGraph(nodes, links) {
5298
5441
  return { ids, links: validLinks, incoming, outgoing };
5299
5442
  }
5300
5443
 
5301
- // src/renderScene/charts/geometry/sankey/constants.ts
5302
- var SANKEY_NODE_WIDTH = 18;
5303
- var SANKEY_NODE_GAP = 8;
5304
-
5305
5444
  // src/renderScene/charts/geometry/sankey/nodeGeometry.ts
5306
5445
  function nodeValues(graph) {
5307
5446
  const values = /* @__PURE__ */ new Map();
@@ -5312,11 +5451,11 @@ function nodeValues(graph) {
5312
5451
  }
5313
5452
  return values;
5314
5453
  }
5315
- function calculateValueScale(groups, values, height) {
5454
+ function calculateValueScale(groups, values, height, nodeGap) {
5316
5455
  let scale = Infinity;
5317
5456
  for (const ids of groups.values()) {
5318
5457
  const total = ids.reduce((sum, id) => sum + (values.get(id) ?? 0), 0);
5319
- const gaps = Math.max(0, ids.length - 1) * SANKEY_NODE_GAP;
5458
+ const gaps = Math.max(0, ids.length - 1) * nodeGap;
5320
5459
  const usable = Math.max(1, height - gaps);
5321
5460
  if (total > 0) {
5322
5461
  scale = Math.min(scale, usable / total);
@@ -5327,16 +5466,16 @@ function calculateValueScale(groups, values, height) {
5327
5466
  }
5328
5467
  return scale;
5329
5468
  }
5330
- function sankeyNodeX(column, columnCount, width) {
5469
+ function sankeyNodeX(column, columnCount, width, nodeWidth = SANKEY_NODE_WIDTH) {
5331
5470
  if (columnCount <= 1) {
5332
5471
  return 0;
5333
5472
  }
5334
- return column * (width - SANKEY_NODE_WIDTH) / (columnCount - 1);
5473
+ return column * (width - nodeWidth) / (columnCount - 1);
5335
5474
  }
5336
- function calculateNodeGeometry(graph, columns, height) {
5475
+ function calculateNodeGeometry(graph, columns, height, nodeGap = SANKEY_NODE_GAP) {
5337
5476
  const groups = groupSankeyColumns(graph.ids, columns);
5338
5477
  const values = nodeValues(graph);
5339
- const valueScale = calculateValueScale(groups, values, height);
5478
+ const valueScale = calculateValueScale(groups, values, height, nodeGap);
5340
5479
  const y = /* @__PURE__ */ new Map();
5341
5480
  const heights = /* @__PURE__ */ new Map();
5342
5481
  for (const ids of groups.values()) {
@@ -5345,7 +5484,7 @@ function calculateNodeGeometry(graph, columns, height) {
5345
5484
  const nodeHeight = Math.max(2, (values.get(id) ?? 0) * valueScale);
5346
5485
  y.set(id, cursor);
5347
5486
  heights.set(id, nodeHeight);
5348
- cursor += nodeHeight + SANKEY_NODE_GAP;
5487
+ cursor += nodeHeight + nodeGap;
5349
5488
  }
5350
5489
  }
5351
5490
  return {
@@ -5358,7 +5497,7 @@ function calculateNodeGeometry(graph, columns, height) {
5358
5497
  }
5359
5498
 
5360
5499
  // src/renderScene/charts/geometry/sankey/links.ts
5361
- function layoutSankeyLinks(graph, geometry, width, offsets) {
5500
+ function layoutSankeyLinks(graph, geometry, width, offsets, nodeWidth = SANKEY_NODE_WIDTH) {
5362
5501
  const outgoingOffsets = /* @__PURE__ */ new Map();
5363
5502
  const incomingOffsets = /* @__PURE__ */ new Map();
5364
5503
  for (const id of graph.ids) {
@@ -5380,8 +5519,8 @@ function layoutSankeyLinks(graph, geometry, width, offsets) {
5380
5519
  target: link.target,
5381
5520
  value: link.value,
5382
5521
  color: link.color,
5383
- x0: sankeyNodeX(geometry.columns.get(link.source) ?? 0, geometry.columnCount, width) + SANKEY_NODE_WIDTH + (sourceOffset?.x ?? 0),
5384
- x1: sankeyNodeX(geometry.columns.get(link.target) ?? 0, geometry.columnCount, width) + (targetOffset?.x ?? 0),
5522
+ x0: sankeyNodeX(geometry.columns.get(link.source) ?? 0, geometry.columnCount, width, nodeWidth) + nodeWidth + (sourceOffset?.x ?? 0),
5523
+ x1: sankeyNodeX(geometry.columns.get(link.target) ?? 0, geometry.columnCount, width, nodeWidth) + (targetOffset?.x ?? 0),
5385
5524
  sourceY0: sourceTop + sourceSlice,
5386
5525
  sourceY1: sourceTop + sourceSlice + sliceHeight,
5387
5526
  targetY0: targetTop + targetSlice,
@@ -5391,7 +5530,7 @@ function layoutSankeyLinks(graph, geometry, width, offsets) {
5391
5530
  }
5392
5531
 
5393
5532
  // src/renderScene/charts/geometry/sankey/nodes.ts
5394
- function layoutSankeyNodes(inputs, graph, geometry, width, offsets) {
5533
+ function layoutSankeyNodes(inputs, graph, geometry, width, offsets, nodeWidth = SANKEY_NODE_WIDTH) {
5395
5534
  return [...graph.ids].map((id) => {
5396
5535
  const input = inputs.find((node) => node.id === id);
5397
5536
  const column = geometry.columns.get(id) ?? 0;
@@ -5400,9 +5539,9 @@ function layoutSankeyNodes(inputs, graph, geometry, width, offsets) {
5400
5539
  id,
5401
5540
  label: input?.label ?? id,
5402
5541
  color: input?.color,
5403
- x: sankeyNodeX(column, geometry.columnCount, width) + (offset?.x ?? 0),
5542
+ x: sankeyNodeX(column, geometry.columnCount, width, nodeWidth) + (offset?.x ?? 0),
5404
5543
  y: (geometry.y.get(id) ?? 0) + (offset?.y ?? 0),
5405
- width: SANKEY_NODE_WIDTH,
5544
+ width: nodeWidth,
5406
5545
  height: geometry.heights.get(id) ?? 2,
5407
5546
  column
5408
5547
  };
@@ -5419,17 +5558,17 @@ function collectOffsets(inputs) {
5419
5558
  }
5420
5559
  return offsets;
5421
5560
  }
5422
- function layoutSankey(nodeInputs, linkInputs, width, height) {
5561
+ function layoutSankey(nodeInputs, linkInputs, width, height, options = { nodeWidth: SANKEY_NODE_WIDTH, nodeGap: SANKEY_NODE_GAP }) {
5423
5562
  const graph = createSankeyGraph(nodeInputs, linkInputs);
5424
5563
  if (graph.ids.size === 0) {
5425
5564
  return { nodes: [], links: [] };
5426
5565
  }
5427
5566
  const columns = assignSankeyColumns(graph);
5428
- const geometry = calculateNodeGeometry(graph, columns, height);
5567
+ const geometry = calculateNodeGeometry(graph, columns, height, options.nodeGap);
5429
5568
  const offsets = collectOffsets(nodeInputs);
5430
5569
  return {
5431
- nodes: layoutSankeyNodes(nodeInputs, graph, geometry, width, offsets),
5432
- links: layoutSankeyLinks(graph, geometry, width, offsets)
5570
+ nodes: layoutSankeyNodes(nodeInputs, graph, geometry, width, offsets, options.nodeWidth),
5571
+ links: layoutSankeyLinks(graph, geometry, width, offsets, options.nodeWidth)
5433
5572
  };
5434
5573
  }
5435
5574
 
@@ -5531,6 +5670,8 @@ function placeHorizontalTreemapRow(row, bounds) {
5531
5670
  }
5532
5671
 
5533
5672
  // src/renderScene/charts/renderers/hexbin.ts
5673
+ var DEFAULT_MIN_OPACITY = 0.15;
5674
+ var GAP_TO_RADIUS = 1 / Math.sqrt(3);
5534
5675
  function hexPath(cx, cy, radius) {
5535
5676
  const points = [];
5536
5677
  for (let corner = 0; corner < 6; corner++) {
@@ -5542,29 +5683,38 @@ function hexPath(cx, cy, radius) {
5542
5683
  function renderHexbin(context) {
5543
5684
  const { chart, plot, bounds, diagnostics, nextOrder } = context;
5544
5685
  const nodes = [];
5545
- const hexRadius = Math.max(1, chart.config?.hexRadius ?? chunkYM3XFBI4_cjs.DEFAULT_HEX_RADIUS);
5546
- const shadow = chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle);
5686
+ const config = chart.config;
5687
+ const hexRadius = Math.max(1, config?.hexRadius ?? chunkCXL254BT_cjs.DEFAULT_HEX_RADIUS);
5688
+ const drawRadius = Math.max(0.5, hexRadius - Math.max(0, config?.hexGap ?? 0) * GAP_TO_RADIUS);
5689
+ const strokeWidth = config?.hexStrokeWidth ?? 0;
5690
+ const minOpacity = Math.min(1, Math.max(0, config?.hexMinOpacity ?? DEFAULT_MIN_OPACITY));
5691
+ const shadow = chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle);
5547
5692
  const clipPath = shadow ? `M ${plot.x} ${plot.y} H ${plot.x + plot.width} V ${plot.y + plot.height} H ${plot.x} Z` : void 0;
5548
5693
  chart.series.forEach((series, seriesIndex) => {
5549
5694
  const explicit = series.values.length > 0 && Array.isArray(series.values[0]);
5550
5695
  const pairs = explicit ? series.values : series.values.map((y, i) => [chart.axisX.min + i * chart.axisX.step, y]);
5551
5696
  const pixelPoints2 = pairs.map(([vx, vy]) => ({
5552
- x: chunkYM3XFBI4_cjs.mapChartValue(vx, chart.axisX, plot.width),
5553
- y: plot.height - chunkYM3XFBI4_cjs.mapChartValue(vy, chart.axisY, plot.height)
5697
+ x: chunkCXL254BT_cjs.mapChartValue(vx, chart.axisX, plot.width),
5698
+ y: plot.height - chunkCXL254BT_cjs.mapChartValue(vy, chart.axisY, plot.height)
5554
5699
  }));
5555
5700
  const bins = computeHexBins(pixelPoints2, hexRadius);
5556
5701
  const maxCount = Math.max(1, ...bins.map((bin) => bin.count));
5557
- const color2 = series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length];
5702
+ const color2 = series.color ?? chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length];
5703
+ const ramp = config?.scale;
5558
5704
  bins.forEach((bin, i) => {
5705
+ const share = bin.count / maxCount;
5706
+ const fill2 = ramp ? colorAtRamp(ramp, share) : color2;
5559
5707
  nodes.push({
5560
5708
  type: "path",
5561
5709
  id: `chart-hexbin-${chart.id}-${series.id}-${i}`,
5562
5710
  order: nextOrder(),
5563
5711
  bounds,
5564
- d: hexPath(plot.x + bin.cx, plot.y + bin.cy, hexRadius),
5712
+ d: hexPath(plot.x + bin.cx, plot.y + bin.cy, drawRadius),
5565
5713
  style: {
5566
- fill: chunkYM3XFBI4_cjs.paint(color2, diagnostics, chart.id),
5567
- opacity: Math.max(0.15, bin.count / maxCount),
5714
+ fill: chunkCXL254BT_cjs.paint(fill2, diagnostics, chart.id),
5715
+ stroke: strokeWidth > 0 ? chunkCXL254BT_cjs.paint(config?.hexStrokeColor ?? fill2, diagnostics, chart.id) : void 0,
5716
+ strokeWidth: strokeWidth > 0 ? strokeWidth : void 0,
5717
+ opacity: ramp ? void 0 : Math.max(minOpacity, share),
5568
5718
  shadow,
5569
5719
  clip: clipPath ? { type: "path", d: clipPath } : void 0
5570
5720
  }
@@ -5584,8 +5734,8 @@ function seriesValuePairs(chart, series) {
5584
5734
  function pixelPoints(context, pairs) {
5585
5735
  const { chart, plot } = context;
5586
5736
  return pairs.map(([x, y]) => ({
5587
- x: plot.x + chunkYM3XFBI4_cjs.mapChartValue(x, chart.axisX, plot.width),
5588
- y: plot.y + plot.height - chunkYM3XFBI4_cjs.mapChartValue(y, chart.axisY, plot.height)
5737
+ x: plot.x + chunkCXL254BT_cjs.mapChartValue(x, chart.axisX, plot.width),
5738
+ y: plot.y + plot.height - chunkCXL254BT_cjs.mapChartValue(y, chart.axisY, plot.height)
5589
5739
  }));
5590
5740
  }
5591
5741
 
@@ -5595,7 +5745,7 @@ function createLineAreaFill(context, series, points, color2, tension, areaOpacit
5595
5745
  const baselineY = plot.y + plot.height;
5596
5746
  const first = points[0];
5597
5747
  const last = points[points.length - 1];
5598
- const d = `${chunkYM3XFBI4_cjs.linePathData(points, tension)} L ${last.x} ${baselineY} L ${first.x} ${baselineY} Z`;
5748
+ const d = `${chunkCXL254BT_cjs.linePathData(points, tension)} L ${last.x} ${baselineY} L ${first.x} ${baselineY} Z`;
5599
5749
  const top = Math.min(...points.map((point) => point.y));
5600
5750
  const centerX = (Math.min(...points.map((point) => point.x)) + Math.max(...points.map((point) => point.x))) / 2;
5601
5751
  const halfHeight = (baselineY - top) / 2;
@@ -5617,8 +5767,8 @@ function createLineAreaFill(context, series, points, color2, tension, areaOpacit
5617
5767
  kind: "linear-gradient",
5618
5768
  angle: 90,
5619
5769
  stops: [
5620
- { offset: 0, color: chunkYM3XFBI4_cjs.colorWithAlpha(color2, areaOpacity) },
5621
- { offset: 100, color: chunkYM3XFBI4_cjs.colorWithAlpha(color2, 0) }
5770
+ { offset: 0, color: chunkCXL254BT_cjs.colorWithAlpha(color2, areaOpacity) },
5771
+ { offset: 100, color: chunkCXL254BT_cjs.colorWithAlpha(color2, 0) }
5622
5772
  ]
5623
5773
  },
5624
5774
  stroke: { kind: "none" },
@@ -5641,7 +5791,7 @@ function guideNode(context, mark) {
5641
5791
  d: `M ${mark.point.x} ${mark.point.y} V ${plot.y + plot.height}`,
5642
5792
  style: {
5643
5793
  fill: { kind: "none" },
5644
- stroke: chunkYM3XFBI4_cjs.paint(mark.color, diagnostics, chart.id),
5794
+ stroke: chunkCXL254BT_cjs.paint(mark.color, diagnostics, chart.id),
5645
5795
  strokeWidth: 1,
5646
5796
  dash: [3, 4],
5647
5797
  opacity: 0.55,
@@ -5662,7 +5812,7 @@ function dotNode(context, mark) {
5662
5812
  rx: mark.radius,
5663
5813
  ry: mark.radius,
5664
5814
  style: {
5665
- fill: chunkYM3XFBI4_cjs.paint(mark.color, diagnostics, chart.id),
5815
+ fill: chunkCXL254BT_cjs.paint(mark.color, diagnostics, chart.id),
5666
5816
  shadow: glow ? { color: mark.color, opacity: 0.9, blur: glow, dx: 0, dy: 0 } : void 0,
5667
5817
  pointerEvents: "none"
5668
5818
  }
@@ -5675,7 +5825,7 @@ function labelNode(context, mark, value) {
5675
5825
  const text = formatHighlight(config?.highlightLabelFormat, config?.categories?.[mark.index] ?? "", value);
5676
5826
  const width = Math.max(48, text.length * fontSize * 0.62);
5677
5827
  return {
5678
- ...chunkYM3XFBI4_cjs.chartText({
5828
+ ...chunkCXL254BT_cjs.chartText({
5679
5829
  id: `chart-highlight-label-${mark.key}`,
5680
5830
  order: nextOrder(),
5681
5831
  bounds,
@@ -5755,15 +5905,15 @@ function createLineError(context, mark) {
5755
5905
  return null;
5756
5906
  }
5757
5907
  const { chart, plot, bounds, nextOrder } = context;
5758
- const [lower, upper] = chunkYM3XFBI4_cjs.errorBarRange(mark.value, mark.error);
5759
- return chunkYM3XFBI4_cjs.createVerticalErrorWhiskerNode({
5908
+ const [lower, upper] = chunkCXL254BT_cjs.errorBarRange(mark.value, mark.error);
5909
+ return chunkCXL254BT_cjs.createVerticalErrorWhiskerNode({
5760
5910
  id: `chart-line-error-${chart.id}-${mark.seriesId}-${mark.valueIndex}`,
5761
5911
  order: nextOrder(),
5762
5912
  bounds,
5763
5913
  geometry: {
5764
5914
  centerX: mark.position.x,
5765
- startY: plot.y + plot.height - chunkYM3XFBI4_cjs.mapChartValue(lower, chart.axisY, plot.height),
5766
- endY: plot.y + plot.height - chunkYM3XFBI4_cjs.mapChartValue(upper, chart.axisY, plot.height)
5915
+ startY: plot.y + plot.height - chunkCXL254BT_cjs.mapChartValue(lower, chart.axisY, plot.height),
5916
+ endY: plot.y + plot.height - chunkCXL254BT_cjs.mapChartValue(upper, chart.axisY, plot.height)
5767
5917
  },
5768
5918
  color: mark.color,
5769
5919
  valueReference: { seriesId: mark.seriesId, valueIndex: mark.valueIndex }
@@ -5787,8 +5937,8 @@ function createLinePoint(context, mark) {
5787
5937
  ry: visible ? radius : 6,
5788
5938
  detail: { of: "chartValue", series: mark.seriesId, valueIndex: mark.valueIndex },
5789
5939
  style: {
5790
- fill: visible ? chunkYM3XFBI4_cjs.paint(fill2, diagnostics, chart.id) : { kind: "none" },
5791
- stroke: visible && strokeWidth > 0 ? chunkYM3XFBI4_cjs.paint(mark.color, diagnostics, chart.id) : void 0,
5940
+ fill: visible ? chunkCXL254BT_cjs.paint(fill2, diagnostics, chart.id) : { kind: "none" },
5941
+ stroke: visible && strokeWidth > 0 ? chunkCXL254BT_cjs.paint(mark.color, diagnostics, chart.id) : void 0,
5792
5942
  strokeWidth: visible && strokeWidth > 0 ? strokeWidth : void 0,
5793
5943
  pointerEvents: visible ? void 0 : "all"
5794
5944
  }
@@ -5808,22 +5958,22 @@ function createLinePath(context, series, points, color2, tension) {
5808
5958
  order: nextOrder(),
5809
5959
  bounds: gradient ? { minX: plot.x, maxX: plot.x + plot.width, minY: plot.y, maxY: plot.y + plot.height } : bounds,
5810
5960
  detail: { of: "chartSeries", series: series.id, lineTension: tension || void 0 },
5811
- d: chunkYM3XFBI4_cjs.linePathData(points, tension),
5961
+ d: chunkCXL254BT_cjs.linePathData(points, tension),
5812
5962
  style: {
5813
5963
  fill: { kind: "none" },
5814
- stroke: chunkYM3XFBI4_cjs.paint(gradient ?? color2, diagnostics, chart.id),
5964
+ stroke: chunkCXL254BT_cjs.paint(gradient ?? color2, diagnostics, chart.id),
5815
5965
  strokeWidth: series.strokeWidth ?? config?.lineWidth ?? 2,
5816
5966
  dash: series.dash,
5817
5967
  lineCap: config?.lineWidth === void 0 ? void 0 : "round",
5818
5968
  lineJoin: "round",
5819
- shadow: glow ? { color: color2, opacity: 0.9, blur: glow, dx: 0, dy: 0 } : chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle)
5969
+ shadow: glow ? { color: color2, opacity: 0.9, blur: glow, dx: 0, dy: 0 } : chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle)
5820
5970
  }
5821
5971
  };
5822
5972
  }
5823
5973
 
5824
5974
  // src/renderScene/charts/renderers/line/series.ts
5825
5975
  function seriesColor(series, seriesIndex) {
5826
- return chunkYM3XFBI4_cjs.representativeColor(series.color, chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length]);
5976
+ return chunkCXL254BT_cjs.representativeColor(series.color, chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length]);
5827
5977
  }
5828
5978
  function renderLineSeriesArea(context, series, seriesIndex) {
5829
5979
  const areaOpacity = context.chart.config?.areaOpacity;
@@ -5887,7 +6037,7 @@ function renderGridLines(context, layout) {
5887
6037
  style: {
5888
6038
  fill: { kind: "none" },
5889
6039
  stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
5890
- strokeWidth: chunkYM3XFBI4_cjs.finite(chart.gridWidth, 1)
6040
+ strokeWidth: chunkCXL254BT_cjs.finite(chart.gridWidth, 1)
5891
6041
  }
5892
6042
  };
5893
6043
  });
@@ -5895,7 +6045,7 @@ function renderGridLines(context, layout) {
5895
6045
  function renderPercentageLabels(context, layout) {
5896
6046
  const { chart, plot, bounds, nextOrder } = context;
5897
6047
  return PERCENT_TICKS.map((percent) => ({
5898
- ...chunkYM3XFBI4_cjs.chartText({
6048
+ ...chunkCXL254BT_cjs.chartText({
5899
6049
  id: `chart-mekko-pct-${chart.id}-${percent}`,
5900
6050
  order: nextOrder(),
5901
6051
  bounds,
@@ -5921,15 +6071,13 @@ function renderMekkoColumnLabels(context, layout, columnIndex, column) {
5921
6071
  if (!context.showLabels) {
5922
6072
  return [];
5923
6073
  }
5924
- return [
5925
- createTotalLabel(context, layout, columnIndex, column),
5926
- createColumnLabel(context, layout, columnIndex, column)
5927
- ];
6074
+ const columnLabel = createColumnLabel(context, layout, columnIndex, column);
6075
+ return context.chart.config?.showMekkoTotals === false ? [columnLabel] : [createTotalLabel(context, layout, columnIndex, column), columnLabel];
5928
6076
  }
5929
6077
  function createTotalLabel(context, layout, columnIndex, column) {
5930
6078
  const { chart, plot, bounds, nextOrder } = context;
5931
6079
  return {
5932
- ...chunkYM3XFBI4_cjs.chartText({
6080
+ ...chunkCXL254BT_cjs.chartText({
5933
6081
  id: `chart-mekko-total-${chart.id}-${columnIndex}`,
5934
6082
  order: nextOrder(),
5935
6083
  bounds,
@@ -5950,7 +6098,7 @@ function createColumnLabel(context, layout, columnIndex, column) {
5950
6098
  const { chart, bounds, nextOrder } = context;
5951
6099
  const { label, width } = column;
5952
6100
  return {
5953
- ...chunkYM3XFBI4_cjs.chartText({
6101
+ ...chunkCXL254BT_cjs.chartText({
5954
6102
  id: `chart-mekko-col-label-${chart.id}-${columnIndex}`,
5955
6103
  order: nextOrder(),
5956
6104
  bounds,
@@ -5964,23 +6112,27 @@ function createColumnLabel(context, layout, columnIndex, column) {
5964
6112
  chart,
5965
6113
  align: "center"
5966
6114
  }),
5967
- lines: chunkYM3XFBI4_cjs.wrapText(label, width, layout.smallFontSize),
6115
+ lines: chunkCXL254BT_cjs.wrapText(label, width, layout.smallFontSize),
5968
6116
  fontSize: layout.smallFontSize
5969
6117
  };
5970
6118
  }
5971
6119
 
5972
6120
  // src/renderScene/charts/renderers/mekko/layout.ts
5973
- var COLUMN_GAP = 4;
5974
6121
  function createMekkoLayout(context) {
5975
6122
  const labels = mekkoColumnLabels(context);
5976
6123
  const labelGutterWidth = context.showLabels ? 30 : 0;
5977
6124
  const grid = createMekkoGrid(context, labelGutterWidth);
5978
- const fontSize = Math.max(9, chunkYM3XFBI4_cjs.finite(context.chart.fontSize, 12));
6125
+ const fontSize = Math.max(9, chunkCXL254BT_cjs.finite(context.chart.fontSize, 12));
6126
+ const columnGap = Math.max(0, chunkCXL254BT_cjs.finite(context.chart.config?.mekkoColumnGap, 4));
6127
+ const smallFontSize = Math.max(8, fontSize - 1);
5979
6128
  return {
5980
- columns: createMekkoColumns(context, grid, labels),
6129
+ columns: createMekkoColumns(context, grid, labels, columnGap),
5981
6130
  fontSize,
5982
- smallFontSize: Math.max(8, fontSize - 1),
6131
+ smallFontSize,
5983
6132
  labelGutterWidth,
6133
+ columnGap,
6134
+ labelSize: Math.max(6, chunkCXL254BT_cjs.finite(context.chart.config?.mekkoLabelSize, smallFontSize)),
6135
+ valueSize: Math.max(6, chunkCXL254BT_cjs.finite(context.chart.config?.mekkoValueSize, smallFontSize)),
5984
6136
  grid
5985
6137
  };
5986
6138
  }
@@ -5998,20 +6150,20 @@ function createMekkoGrid(context, labelGutterWidth) {
5998
6150
  height: Math.max(1, context.plot.height - topGutter - bottomGutter)
5999
6151
  };
6000
6152
  }
6001
- function createMekkoColumns(context, grid, labels) {
6153
+ function createMekkoColumns(context, grid, labels, columnGap) {
6002
6154
  const totals = labels.map(
6003
6155
  (_, columnIndex) => context.chart.series.reduce((sum, series) => sum + (series.values[columnIndex] ?? 0), 0)
6004
6156
  );
6005
6157
  const grandTotal = totals.reduce((sum, total) => sum + total, 0);
6006
6158
  const maximumTotal = Math.max(1, ...totals);
6007
- const availableWidth = Math.max(1, grid.width - COLUMN_GAP * Math.max(0, labels.length - 1));
6159
+ const availableWidth = Math.max(1, grid.width - columnGap * Math.max(0, labels.length - 1));
6008
6160
  let nextX = grid.x;
6009
6161
  return labels.map((label, index) => {
6010
6162
  const total = totals[index];
6011
6163
  const width = grandTotal > 0 ? total / grandTotal * availableWidth : availableWidth / labels.length;
6012
6164
  const height = context.chart.config?.mekkoVaryHeight ? grid.height * (total / maximumTotal) : grid.height;
6013
6165
  const column = { label, total, x: nextX, y: grid.y + grid.height - height, width, height };
6014
- nextX += width + COLUMN_GAP;
6166
+ nextX += width + columnGap;
6015
6167
  return column;
6016
6168
  });
6017
6169
  }
@@ -6037,12 +6189,12 @@ function createColumnBackdrop(context, layout, columnIndex) {
6037
6189
  id: `chart-mekko-column-backdrop-${chart.id}-${columnIndex}`,
6038
6190
  order: nextOrder(),
6039
6191
  bounds,
6040
- d: chunkYM3XFBI4_cjs.barShapePath(column.x, layout.grid.y, column.width, layout.grid.height, cornerRadius),
6041
- style: { fill: chunkYM3XFBI4_cjs.paint(chart.gridColor ?? "#e2e8f0", diagnostics, chart.id), opacity: BACKDROP_OPACITY }
6192
+ d: chunkCXL254BT_cjs.barShapePath(column.x, layout.grid.y, column.width, layout.grid.height, cornerRadius),
6193
+ style: { fill: chunkCXL254BT_cjs.paint(chart.gridColor ?? "#e2e8f0", diagnostics, chart.id), opacity: BACKDROP_OPACITY }
6042
6194
  };
6043
6195
  }
6044
6196
  function mekkoCornerRadius(context) {
6045
- return Math.max(0, chunkYM3XFBI4_cjs.finite(context.chart.config?.barCornerRadius, 2));
6197
+ return Math.max(0, chunkCXL254BT_cjs.finite(context.chart.config?.barCornerRadius, 2));
6046
6198
  }
6047
6199
  function calculateColumnSegments(seriesList, layout, columnIndex) {
6048
6200
  const segments = [];
@@ -6053,7 +6205,7 @@ function calculateColumnSegments(seriesList, layout, columnIndex) {
6053
6205
  const height = (column.total > 0 ? value / column.total : 0) * column.height;
6054
6206
  const y = column.y + cumulativeHeight;
6055
6207
  cumulativeHeight += height;
6056
- const color2 = series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length];
6208
+ const color2 = series.color ?? chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length];
6057
6209
  segments.push({
6058
6210
  columnIndex,
6059
6211
  seriesId: series.id,
@@ -6076,10 +6228,12 @@ function renderSegment(context, layout, segment, nextColor) {
6076
6228
  }
6077
6229
  function createSegmentNode(context, segment, nextColor) {
6078
6230
  const { chart, plot, bounds, diagnostics, nextOrder } = context;
6079
- const shadow = chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle);
6231
+ const shadow = chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle);
6080
6232
  const clipPath = shadow ? `M ${plot.x} ${plot.y} H ${plot.x + plot.width} V ${plot.y + plot.height} H ${plot.x} Z` : void 0;
6081
- const radius = segment.isTop ? mekkoCornerRadius(context) : 0;
6233
+ const config = chart.config;
6234
+ const radius = segment.isTop || config?.mekkoRoundAll ? mekkoCornerRadius(context) : 0;
6082
6235
  const { x, y, width, height } = segment.frame;
6236
+ const segmentGap = Math.max(0, chunkCXL254BT_cjs.finite(config?.mekkoSegmentGap, 0));
6083
6237
  const fallback = "#94a3b8";
6084
6238
  const gradientBounds = {
6085
6239
  minX: x + width / 2 - height / 2,
@@ -6091,20 +6245,20 @@ function createSegmentNode(context, segment, nextColor) {
6091
6245
  kind: "linear-gradient",
6092
6246
  angle: 90,
6093
6247
  stops: [
6094
- { offset: 0, color: chunkYM3XFBI4_cjs.representativeColor(segment.color, fallback) },
6095
- { offset: 100, color: chunkYM3XFBI4_cjs.representativeColor(nextColor, fallback) }
6248
+ { offset: 0, color: chunkCXL254BT_cjs.representativeColor(segment.color, fallback) },
6249
+ { offset: 100, color: chunkCXL254BT_cjs.representativeColor(nextColor, fallback) }
6096
6250
  ]
6097
- } : chunkYM3XFBI4_cjs.paint(segment.color, diagnostics, chart.id);
6251
+ } : chunkCXL254BT_cjs.paint(segment.color, diagnostics, chart.id);
6098
6252
  return {
6099
6253
  type: "path",
6100
6254
  id: `chart-mekko-seg-${chart.id}-${segment.columnIndex}-${segment.seriesId}`,
6101
6255
  order: nextOrder(),
6102
6256
  bounds: nextColor ? gradientBounds : bounds,
6103
- d: chunkYM3XFBI4_cjs.barShapePath(x, y, width, height, radius),
6257
+ d: chunkCXL254BT_cjs.barPath(x, y + segmentGap / 2, width, Math.max(0, height - segmentGap), radius, Boolean(config?.mekkoRoundAll)),
6104
6258
  style: {
6105
6259
  fill: fill2,
6106
- stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
6107
- strokeWidth: chunkYM3XFBI4_cjs.finite(chart.gridWidth, 1),
6260
+ stroke: { kind: "solid", color: config?.mekkoSegmentStrokeColor ?? chart.gridColor ?? "#e2e8f0" },
6261
+ strokeWidth: chunkCXL254BT_cjs.finite(config?.mekkoSegmentStrokeWidth, chunkCXL254BT_cjs.finite(chart.gridWidth, 1)),
6108
6262
  shadow,
6109
6263
  clip: clipPath ? { type: "path", d: clipPath } : void 0
6110
6264
  }
@@ -6118,14 +6272,19 @@ function createSegmentLabel(context, layout, segment) {
6118
6272
  }
6119
6273
  const innerWidth = Math.max(1, width - 8);
6120
6274
  const innerHeight = Math.max(1, height - 6);
6121
- const lineHeight = layout.smallFontSize * 1.2;
6122
- const labelLines = chunkYM3XFBI4_cjs.wrapText(segment.seriesLabel, innerWidth, layout.smallFontSize);
6123
- if ((labelLines.length + 1) * lineHeight > innerHeight) {
6275
+ const lineHeight = layout.labelSize * 1.2;
6276
+ const valueHeight = layout.valueSize * 1.2;
6277
+ const labelLines = chunkCXL254BT_cjs.wrapText(segment.seriesLabel, innerWidth, layout.labelSize).map(
6278
+ (line) => chunkCXL254BT_cjs.ellipsizeToWidth(line, innerWidth, layout.labelSize, true)
6279
+ );
6280
+ if (labelLines.length * lineHeight + valueHeight > innerHeight) {
6124
6281
  return [];
6125
6282
  }
6126
- const textColor = chunkYM3XFBI4_cjs.contrastTextColor(chunkYM3XFBI4_cjs.representativeColor(segment.color, "#ffffff"));
6283
+ const textColor = chart.config?.mekkoTextColor ?? chunkCXL254BT_cjs.contrastTextColor(chunkCXL254BT_cjs.representativeColor(segment.color, "#ffffff"));
6284
+ const columnTotal = layout.columns[segment.columnIndex]?.total ?? 0;
6285
+ const valueText = chart.config?.mekkoValueFormat === "percent" ? `${columnTotal > 0 ? Math.round(segment.value / columnTotal * 100) : 0}%` : String(segment.value);
6127
6286
  const label = {
6128
- ...chunkYM3XFBI4_cjs.chartText({
6287
+ ...chunkCXL254BT_cjs.chartText({
6129
6288
  id: `chart-mekko-seg-label-${chart.id}-${segment.columnIndex}-${segment.seriesId}`,
6130
6289
  order: nextOrder(),
6131
6290
  bounds,
@@ -6134,12 +6293,12 @@ function createSegmentLabel(context, layout, segment) {
6134
6293
  chart
6135
6294
  }),
6136
6295
  lines: labelLines,
6137
- fontSize: layout.smallFontSize,
6296
+ fontSize: layout.labelSize,
6138
6297
  fontWeight: "bold",
6139
6298
  color: textColor
6140
6299
  };
6141
6300
  const valueNode = {
6142
- ...chunkYM3XFBI4_cjs.chartText({
6301
+ ...chunkCXL254BT_cjs.chartText({
6143
6302
  id: `chart-mekko-seg-value-${chart.id}-${segment.columnIndex}-${segment.seriesId}`,
6144
6303
  order: nextOrder(),
6145
6304
  bounds,
@@ -6149,11 +6308,11 @@ function createSegmentLabel(context, layout, segment) {
6149
6308
  width: innerWidth,
6150
6309
  height: Math.max(1, innerHeight - labelLines.length * lineHeight)
6151
6310
  },
6152
- text: String(segment.value),
6311
+ text: valueText,
6153
6312
  chart
6154
6313
  }),
6155
- lines: [String(segment.value)],
6156
- fontSize: layout.smallFontSize,
6314
+ lines: [valueText],
6315
+ fontSize: layout.valueSize,
6157
6316
  color: textColor
6158
6317
  };
6159
6318
  return [label, valueNode];
@@ -6172,7 +6331,7 @@ function renderMekko(context) {
6172
6331
 
6173
6332
  // src/renderScene/charts/renderers/pie/center.ts
6174
6333
  function fill(template, chart) {
6175
- const values = chart.series.map((series) => Math.max(0, chunkYM3XFBI4_cjs.finite(series.values[0], 0)));
6334
+ const values = chart.series.map((series) => Math.max(0, chunkCXL254BT_cjs.finite(series.values[0], 0)));
6176
6335
  const total = values.reduce((sum, value) => sum + value, 0);
6177
6336
  const first = values[0] ?? 0;
6178
6337
  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 ?? "");
@@ -6184,7 +6343,7 @@ function renderPieCenter(context, geometry) {
6184
6343
  return [];
6185
6344
  }
6186
6345
  const lines = fill(template, chart).split(/\\n|\n/);
6187
- const fontSize = chunkYM3XFBI4_cjs.finite(chart.config?.pieCenterSize, Math.max(14, Math.min(40, geometry.outerRadius * 0.3)));
6346
+ const fontSize = chunkCXL254BT_cjs.finite(chart.config?.pieCenterSize, Math.max(14, Math.min(40, geometry.outerRadius * 0.3)));
6188
6347
  const lineHeight = fontSize * 1.2;
6189
6348
  const width = Math.max(40, (geometry.innerRadius > 0 ? geometry.innerRadius : geometry.outerRadius * 0.6) * 2);
6190
6349
  const text = {
@@ -6197,7 +6356,7 @@ function renderPieCenter(context, geometry) {
6197
6356
  width,
6198
6357
  height: lineHeight * lines.length,
6199
6358
  lines,
6200
- fontFamily: chart.fontFamily ?? chunkYM3XFBI4_cjs.DEFAULT_FONT,
6359
+ fontFamily: chart.fontFamily ?? chunkCXL254BT_cjs.DEFAULT_FONT,
6201
6360
  fontSize,
6202
6361
  fontWeight: "bold",
6203
6362
  align: "center",
@@ -6217,14 +6376,14 @@ var radians = (degrees) => degrees * Math.PI / 180;
6217
6376
  function renderPieSlices(context, geometry) {
6218
6377
  const config = context.chart.config;
6219
6378
  const marks = createPieSliceMarks(context.chart.series, geometry.total, {
6220
- start: TOP + radians(chunkYM3XFBI4_cjs.finite(config?.pieStartAngle, 0)),
6221
- sweep: Math.min(FULL, Math.max(radians(1), radians(chunkYM3XFBI4_cjs.finite(config?.pieSweep, 360)))),
6222
- explode: Math.max(0, chunkYM3XFBI4_cjs.finite(config?.pieExplode, 0))
6379
+ start: TOP + radians(chunkCXL254BT_cjs.finite(config?.pieStartAngle, 0)),
6380
+ sweep: Math.min(FULL, Math.max(radians(1), radians(chunkCXL254BT_cjs.finite(config?.pieSweep, 360)))),
6381
+ explode: Math.max(0, chunkCXL254BT_cjs.finite(config?.pieExplode, 0))
6223
6382
  });
6224
6383
  const gapPx = config?.pieSliceGap ?? 0;
6225
6384
  return [
6226
6385
  ...marks.flatMap((mark) => createSliceNodes(context, shiftGeometry(geometry, mark), mark, gapPx)),
6227
- ...chunkYM3XFBI4_cjs.renderPieLabels(
6386
+ ...chunkCXL254BT_cjs.renderPieLabels(
6228
6387
  context,
6229
6388
  geometry,
6230
6389
  marks.map((mark) => ({
@@ -6256,20 +6415,20 @@ function createPieSliceMarks(seriesList, total, layout) {
6256
6415
  const marks = [];
6257
6416
  let angle = layout.start;
6258
6417
  seriesList.forEach((series, seriesIndex) => {
6259
- const value = Math.max(0, chunkYM3XFBI4_cjs.finite(series.values[0], 0));
6418
+ const value = Math.max(0, chunkCXL254BT_cjs.finite(series.values[0], 0));
6260
6419
  const sweep = value / total * layout.sweep;
6261
6420
  marks.push({
6262
6421
  seriesId: series.id,
6263
6422
  label: series.label,
6264
- color: series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length],
6423
+ color: series.color ?? chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length],
6265
6424
  stroke: series.stroke,
6266
6425
  strokeWidth: series.strokeWidth,
6267
6426
  value,
6268
6427
  share: value / total,
6269
6428
  angles: { start: angle, end: angle + Math.min(sweep, layout.sweep >= FULL ? MAXIMUM_SWEEP : layout.sweep) },
6270
- explode: Math.max(0, chunkYM3XFBI4_cjs.finite(series.offset, layout.explode)),
6271
- labelOffsetX: chunkYM3XFBI4_cjs.finite(series.labelOffsetX, 0),
6272
- labelOffsetY: chunkYM3XFBI4_cjs.finite(series.labelOffsetY, 0)
6429
+ explode: Math.max(0, chunkCXL254BT_cjs.finite(series.offset, layout.explode)),
6430
+ labelOffsetX: chunkCXL254BT_cjs.finite(series.labelOffsetX, 0),
6431
+ labelOffsetY: chunkCXL254BT_cjs.finite(series.labelOffsetY, 0)
6273
6432
  });
6274
6433
  angle += sweep;
6275
6434
  });
@@ -6292,14 +6451,14 @@ function pieOuterShadow(shadow, gapPx) {
6292
6451
  function sliceCornerRadius(geometry, mark, gapPx) {
6293
6452
  const halfGap = Math.max(0, gapPx) / 2;
6294
6453
  const rawSweep = mark.angles.end - mark.angles.start;
6295
- const usesInnerArc = chunkYM3XFBI4_cjs.pieUsesInnerArc(geometry, mark.angles, gapPx);
6296
- const gapSweep = 2 * chunkYM3XFBI4_cjs.gapInsetAngle(halfGap, geometry.outerRadius);
6454
+ const usesInnerArc = chunkCXL254BT_cjs.pieUsesInnerArc(geometry, mark.angles, gapPx);
6455
+ const gapSweep = 2 * chunkCXL254BT_cjs.gapInsetAngle(halfGap, geometry.outerRadius);
6297
6456
  const availableSweep = Math.max(0, rawSweep - gapSweep);
6298
6457
  return Math.min(
6299
6458
  geometry.cornerRadius,
6300
- usesInnerArc ? chunkYM3XFBI4_cjs.maxPieCornerRadius(geometry.outerRadius, geometry.innerRadius, availableSweep) : chunkYM3XFBI4_cjs.maxApexCornerRadius(
6459
+ usesInnerArc ? chunkCXL254BT_cjs.maxPieCornerRadius(geometry.outerRadius, geometry.innerRadius, availableSweep) : chunkCXL254BT_cjs.maxApexCornerRadius(
6301
6460
  geometry.outerRadius,
6302
- chunkYM3XFBI4_cjs.pieApexRadius(halfGap, rawSweep, geometry.outerRadius),
6461
+ chunkCXL254BT_cjs.pieApexRadius(halfGap, rawSweep, geometry.outerRadius),
6303
6462
  availableSweep
6304
6463
  )
6305
6464
  );
@@ -6312,14 +6471,14 @@ function sliceStroke(context, mark) {
6312
6471
  }
6313
6472
  return {
6314
6473
  stroke: { kind: "solid", color: strokeColor },
6315
- strokeWidth: chunkYM3XFBI4_cjs.finite(mark.strokeWidth, chunkYM3XFBI4_cjs.finite(config?.pieStrokeWidth, 1))
6474
+ strokeWidth: chunkCXL254BT_cjs.finite(mark.strokeWidth, chunkCXL254BT_cjs.finite(config?.pieStrokeWidth, 1))
6316
6475
  };
6317
6476
  }
6318
6477
  function createSliceNodes(context, geometry, mark, gapPx) {
6319
6478
  const { chart, bounds, diagnostics, nextOrder } = context;
6320
- const fill2 = chunkYM3XFBI4_cjs.paint(mark.color, diagnostics, chart.id);
6321
- const slicePath = chunkYM3XFBI4_cjs.createPieSlicePath(geometry, mark.angles, sliceCornerRadius(geometry, mark, gapPx), gapPx);
6322
- const shadow = chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle);
6479
+ const fill2 = chunkCXL254BT_cjs.paint(mark.color, diagnostics, chart.id);
6480
+ const slicePath = chunkCXL254BT_cjs.createPieSlicePath(geometry, mark.angles, sliceCornerRadius(geometry, mark, gapPx), gapPx);
6481
+ const shadow = chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle);
6323
6482
  const strokeStyle = sliceStroke(context, mark);
6324
6483
  const glow = chart.config?.pieGlow;
6325
6484
  const shadowCaster = shadow ? {
@@ -6350,12 +6509,12 @@ function createSliceNodes(context, geometry, mark, gapPx) {
6350
6509
  pieEnd: mark.angles.end,
6351
6510
  pieValue: mark.value
6352
6511
  },
6353
- prop: chunkYM3XFBI4_cjs.seriesValueProp(mark.seriesId, 0),
6512
+ prop: chunkCXL254BT_cjs.seriesValueProp(mark.seriesId, 0),
6354
6513
  style: {
6355
6514
  fill: fill2,
6356
6515
  ...strokeStyle,
6357
6516
  innerShadow: shadow,
6358
- shadow: glow ? { color: chunkYM3XFBI4_cjs.representativeColor(mark.color, "#ffffff"), opacity: 0.85, blur: glow, dx: 0, dy: 0 } : void 0
6517
+ shadow: glow ? { color: chunkCXL254BT_cjs.representativeColor(mark.color, "#ffffff"), opacity: 0.85, blur: glow, dx: 0, dy: 0 } : void 0
6359
6518
  }
6360
6519
  };
6361
6520
  return shadowCaster ? [shadowCaster, slice] : [slice];
@@ -6363,12 +6522,12 @@ function createSliceNodes(context, geometry, mark, gapPx) {
6363
6522
 
6364
6523
  // src/renderScene/charts/renderers/pie.ts
6365
6524
  function renderPie(context) {
6366
- const geometry = chunkYM3XFBI4_cjs.createPieGeometry(context);
6525
+ const geometry = chunkCXL254BT_cjs.createPieGeometry(context);
6367
6526
  return [...renderPieSlices(context, geometry), ...renderPieCenter(context, geometry)];
6368
6527
  }
6369
6528
 
6370
6529
  // src/renderScene/charts/renderers/polarArea.ts
6371
- var START_ANGLE = -Math.PI / 2;
6530
+ var TOP2 = -Math.PI / 2;
6372
6531
  var TRACK_COLOR_FALLBACK = "#e2e8f0";
6373
6532
  var MIN_LABEL_SWEEP = 14 * Math.PI / 180;
6374
6533
  var LABEL_WIDTH = 80;
@@ -6380,17 +6539,18 @@ var OUTSIDE_FALLBACK_COLOR = "#334155";
6380
6539
  function layoutOf(context) {
6381
6540
  const { chart, plot } = context;
6382
6541
  const maxRadius = Math.max(1, Math.min(plot.width, plot.height) / 2 - 4);
6383
- const axisMin = chunkYM3XFBI4_cjs.finite(chart.axisY.min, 0);
6542
+ const axisMin = chunkCXL254BT_cjs.finite(chart.axisY.min, 0);
6384
6543
  return {
6385
6544
  centerX: plot.x + plot.width / 2,
6386
6545
  centerY: plot.y + plot.height / 2,
6387
6546
  maxRadius,
6388
- innerRadius: Math.max(0, Math.min(chunkYM3XFBI4_cjs.finite(chart.config?.innerRadius, 0), maxRadius - 1)),
6389
- cornerRadius: Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.pieCornerRadius, 0)),
6390
- gapPx: Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.pieSliceGap, 0)),
6547
+ innerRadius: Math.max(0, Math.min(chunkCXL254BT_cjs.finite(chart.config?.innerRadius, 0), maxRadius - 1)),
6548
+ cornerRadius: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.pieCornerRadius, 0)),
6549
+ gapPx: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.pieSliceGap, 0)),
6391
6550
  axisMin,
6392
- range: chunkYM3XFBI4_cjs.finite(chart.axisY.max, 100) - axisMin,
6393
- sweep: chart.series.length > 0 ? Math.PI * 2 / chart.series.length : 0
6551
+ range: chunkCXL254BT_cjs.finite(chart.axisY.max, 100) - axisMin,
6552
+ sweep: chart.series.length > 0 ? Math.PI * 2 / chart.series.length : 0,
6553
+ start: TOP2 + chunkCXL254BT_cjs.finite(chart.config?.pieStartAngle, 0) * Math.PI / 180
6394
6554
  };
6395
6555
  }
6396
6556
  function clampedCorner(layout, outerRadius, angles) {
@@ -6398,19 +6558,19 @@ function clampedCorner(layout, outerRadius, angles) {
6398
6558
  const geometry = { centerX, centerY, outerRadius, innerRadius };
6399
6559
  const halfGap = Math.max(0, gapPx) / 2;
6400
6560
  const rawSweep = angles.end - angles.start;
6401
- const availableSweep = Math.max(0, rawSweep - 2 * chunkYM3XFBI4_cjs.gapInsetAngle(halfGap, outerRadius));
6402
- if (chunkYM3XFBI4_cjs.pieUsesInnerArc(geometry, angles, gapPx)) {
6403
- return Math.min(cornerRadius, chunkYM3XFBI4_cjs.maxPieCornerRadius(outerRadius, innerRadius, availableSweep));
6561
+ const availableSweep = Math.max(0, rawSweep - 2 * chunkCXL254BT_cjs.gapInsetAngle(halfGap, outerRadius));
6562
+ if (chunkCXL254BT_cjs.pieUsesInnerArc(geometry, angles, gapPx)) {
6563
+ return Math.min(cornerRadius, chunkCXL254BT_cjs.maxPieCornerRadius(outerRadius, innerRadius, availableSweep));
6404
6564
  }
6405
- const apexRadius = chunkYM3XFBI4_cjs.pieApexRadius(halfGap, rawSweep, outerRadius);
6406
- return Math.min(cornerRadius, chunkYM3XFBI4_cjs.maxApexCornerRadius(outerRadius, apexRadius, availableSweep));
6565
+ const apexRadius = chunkCXL254BT_cjs.pieApexRadius(halfGap, rawSweep, outerRadius);
6566
+ return Math.min(cornerRadius, chunkCXL254BT_cjs.maxApexCornerRadius(outerRadius, apexRadius, availableSweep));
6407
6567
  }
6408
6568
  function wedgeNodes(context, layout, series, angles, outerRadius, value, rawColor) {
6409
6569
  const { chart, bounds, diagnostics, nextOrder } = context;
6410
6570
  const { centerX, centerY, innerRadius, maxRadius, gapPx } = layout;
6411
- const color2 = chunkYM3XFBI4_cjs.paint(rawColor, diagnostics, chart.id);
6412
- const shadow = chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle);
6413
- const trackPath = chunkYM3XFBI4_cjs.createPieSlicePath(
6571
+ const color2 = chunkCXL254BT_cjs.paint(rawColor, diagnostics, chart.id);
6572
+ const shadow = chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle);
6573
+ const trackPath = chunkCXL254BT_cjs.createPieSlicePath(
6414
6574
  { centerX, centerY, outerRadius: maxRadius, innerRadius },
6415
6575
  angles,
6416
6576
  clampedCorner(layout, maxRadius, angles),
@@ -6422,9 +6582,13 @@ function wedgeNodes(context, layout, series, angles, outerRadius, value, rawColo
6422
6582
  order: nextOrder(),
6423
6583
  bounds,
6424
6584
  d: trackPath,
6425
- style: { fill: chunkYM3XFBI4_cjs.paint(chart.gridColor ?? TRACK_COLOR_FALLBACK, diagnostics, chart.id) }
6585
+ style: {
6586
+ fill: chunkCXL254BT_cjs.paint(chart.gridColor ?? TRACK_COLOR_FALLBACK, diagnostics, chart.id),
6587
+ opacity: chart.config?.polarTrackOpacity,
6588
+ ...trackStroke(context)
6589
+ }
6426
6590
  };
6427
- const wedgePath = chunkYM3XFBI4_cjs.createPieSlicePath(
6591
+ const wedgePath = chunkCXL254BT_cjs.createPieSlicePath(
6428
6592
  { centerX, centerY, outerRadius, innerRadius },
6429
6593
  angles,
6430
6594
  clampedCorner(layout, outerRadius, angles),
@@ -6453,21 +6617,68 @@ function wedgeNodes(context, layout, series, angles, outerRadius, value, rawColo
6453
6617
  pieEnd: angles.end,
6454
6618
  pieValue: value
6455
6619
  },
6456
- prop: chunkYM3XFBI4_cjs.seriesValueProp(series.id, 0),
6457
- style: { fill: color2, innerShadow: shadow }
6620
+ prop: chunkCXL254BT_cjs.seriesValueProp(series.id, 0),
6621
+ style: { fill: color2, innerShadow: shadow, ...wedgeStroke(context) }
6458
6622
  };
6459
6623
  return shadowCaster ? [track, shadowCaster, wedge] : [track, wedge];
6460
6624
  }
6625
+ function trackStroke(context) {
6626
+ const config = context.chart.config;
6627
+ if (!config?.polarTrackStroke) {
6628
+ return {};
6629
+ }
6630
+ const dash = (config.polarTrackDash ?? "").split(/[ ,]+/).map(Number).filter((part) => Number.isFinite(part) && part > 0);
6631
+ return {
6632
+ stroke: { kind: "solid", color: config.polarTrackStroke },
6633
+ strokeWidth: chunkCXL254BT_cjs.finite(config.polarTrackStrokeWidth, 1),
6634
+ dash: dash.length > 0 ? dash : void 0
6635
+ };
6636
+ }
6637
+ function wedgeStroke(context) {
6638
+ const config = context.chart.config;
6639
+ if (!config?.pieStroke) {
6640
+ return {};
6641
+ }
6642
+ return {
6643
+ stroke: { kind: "solid", color: config.pieStroke },
6644
+ strokeWidth: chunkCXL254BT_cjs.finite(config.pieStrokeWidth, 1)
6645
+ };
6646
+ }
6647
+ function ringNodes(context, layout) {
6648
+ const { chart, bounds, nextOrder } = context;
6649
+ if (!chart.config?.polarRings || layout.range <= 0) {
6650
+ return [];
6651
+ }
6652
+ return chunkCXL254BT_cjs.chartTicks(chart.axisY).filter((tick) => tick > layout.axisMin && tick < layout.axisMin + layout.range).map((tick) => {
6653
+ const radius = layout.innerRadius + (layout.maxRadius - layout.innerRadius) * (tick - layout.axisMin) / layout.range;
6654
+ return {
6655
+ type: "ellipse",
6656
+ id: `chart-polar-area-ring-${chart.id}-${tick}`,
6657
+ order: nextOrder(),
6658
+ bounds,
6659
+ cx: layout.centerX,
6660
+ cy: layout.centerY,
6661
+ rx: radius,
6662
+ ry: radius,
6663
+ style: {
6664
+ fill: { kind: "none" },
6665
+ stroke: { kind: "solid", color: chart.textColor ?? "#334155" },
6666
+ strokeWidth: chunkCXL254BT_cjs.finite(chart.gridWidth, 1),
6667
+ opacity: 0.25
6668
+ }
6669
+ };
6670
+ });
6671
+ }
6461
6672
  function renderPolarArea(context) {
6462
6673
  const layout = layoutOf(context);
6463
- const { centerX, centerY, innerRadius, maxRadius, axisMin, range, sweep } = layout;
6674
+ const { centerX, centerY, innerRadius, maxRadius, axisMin, range, sweep, start } = layout;
6464
6675
  const showLabels = context.showLabels && sweep >= MIN_LABEL_SWEEP;
6465
- return context.chart.series.flatMap((series, index) => {
6466
- const angles = { start: START_ANGLE + index * sweep, end: START_ANGLE + (index + 1) * sweep };
6467
- const value = Math.max(0, chunkYM3XFBI4_cjs.finite(series.values[0], 0));
6676
+ const wedges = context.chart.series.flatMap((series, index) => {
6677
+ const angles = { start: start + index * sweep, end: start + (index + 1) * sweep };
6678
+ const value = Math.max(0, chunkCXL254BT_cjs.finite(series.values[0], 0));
6468
6679
  const fraction = range > 0 ? Math.min(1, Math.max(0, (value - axisMin) / range)) : 0;
6469
6680
  const outerRadius = Math.max(innerRadius + 1, innerRadius + (maxRadius - innerRadius) * fraction);
6470
- const rawColor = series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[index % chunkYM3XFBI4_cjs.CHART_COLORS.length];
6681
+ const rawColor = series.color ?? chunkCXL254BT_cjs.CHART_COLORS[index % chunkCXL254BT_cjs.CHART_COLORS.length];
6471
6682
  const nodes = wedgeNodes(context, layout, series, angles, outerRadius, value, rawColor);
6472
6683
  if (!showLabels) {
6473
6684
  return nodes;
@@ -6475,27 +6686,36 @@ function renderPolarArea(context) {
6475
6686
  const geometry = { centerX, centerY, outerRadius, innerRadius };
6476
6687
  return [...nodes, ...createWedgeLabel(context, geometry, angles, series, value, rawColor)];
6477
6688
  });
6689
+ return [...wedges, ...ringNodes(context, layout)];
6690
+ }
6691
+ function labelSizes(chart) {
6692
+ const base = Math.max(9, chunkCXL254BT_cjs.finite(chart.fontSize, 12));
6693
+ return {
6694
+ nameSize: Math.max(6, chunkCXL254BT_cjs.finite(chart.config?.polarNameSize, base)),
6695
+ valueSize: Math.max(6, chunkCXL254BT_cjs.finite(chart.config?.polarValueSize, base))
6696
+ };
6478
6697
  }
6479
6698
  function labelPlacement2(context, geometry, angles, series, fillColor) {
6480
6699
  const mid = (angles.start + angles.end) / 2;
6481
- const fontSize = Math.max(9, chunkYM3XFBI4_cjs.finite(context.chart.fontSize, 12));
6482
- const lineHeight = fontSize * 1.2;
6700
+ const { nameSize, valueSize } = labelSizes(context.chart);
6701
+ const lineHeight = (nameSize + valueSize) * 1.2 / 2;
6483
6702
  const ringThickness = geometry.outerRadius - geometry.innerRadius;
6484
- const labelOffsetX = chunkYM3XFBI4_cjs.finite(series.labelOffsetX, 0);
6485
- const labelOffsetY = chunkYM3XFBI4_cjs.finite(series.labelOffsetY, 0);
6703
+ const labelOffsetX = chunkCXL254BT_cjs.finite(series.labelOffsetX, 0);
6704
+ const labelOffsetY = chunkCXL254BT_cjs.finite(series.labelOffsetY, 0);
6486
6705
  const hasManualOffset = labelOffsetX !== 0 || labelOffsetY !== 0;
6487
6706
  const tooThin = ringThickness < lineHeight * 2 + 6;
6488
6707
  const chordWidth = 2 * geometry.outerRadius * Math.sin(Math.abs(angles.end - angles.start) / 2);
6489
6708
  const fitsInline = !tooThin && chordWidth >= LABEL_WIDTH;
6490
- if (!fitsInline && !hasManualOffset) {
6709
+ const outsideLabels = context.chart.config?.polarOutsideLabels ?? false;
6710
+ if (!fitsInline && !hasManualOffset && !outsideLabels) {
6491
6711
  return void 0;
6492
6712
  }
6493
6713
  const outside = hasManualOffset || !fitsInline;
6494
- const tickStart = chunkYM3XFBI4_cjs.pieArcPoint(geometry, mid, geometry.outerRadius + LEADER_INSET);
6495
- const point = outside ? hasManualOffset ? addOffset(chunkYM3XFBI4_cjs.pieArcPoint(geometry, mid, geometry.outerRadius), labelOffsetX, labelOffsetY) : chunkYM3XFBI4_cjs.pieArcPoint(geometry, mid, geometry.outerRadius + OUTSIDE_GAP) : chunkYM3XFBI4_cjs.pieArcPoint(geometry, mid, geometry.innerRadius + ringThickness * LABEL_RADIUS_FRACTION);
6496
- const color2 = outside ? chunkYM3XFBI4_cjs.sameHueTint(chunkYM3XFBI4_cjs.representativeColor(fillColor, OUTSIDE_FALLBACK_COLOR), OUTSIDE_TINT_LIGHTNESS) ?? OUTSIDE_FALLBACK_COLOR : chunkYM3XFBI4_cjs.sameHueContrastColor(
6497
- chunkYM3XFBI4_cjs.representativeColor(fillColor, "#0f172a"),
6498
- chunkYM3XFBI4_cjs.contrastTextColor(chunkYM3XFBI4_cjs.representativeColor(fillColor, "#0f172a"))
6714
+ const tickStart = chunkCXL254BT_cjs.pieArcPoint(geometry, mid, geometry.outerRadius + LEADER_INSET);
6715
+ const point = outside ? hasManualOffset ? addOffset(chunkCXL254BT_cjs.pieArcPoint(geometry, mid, geometry.outerRadius), labelOffsetX, labelOffsetY) : chunkCXL254BT_cjs.pieArcPoint(geometry, mid, geometry.outerRadius + OUTSIDE_GAP) : chunkCXL254BT_cjs.pieArcPoint(geometry, mid, geometry.innerRadius + ringThickness * LABEL_RADIUS_FRACTION);
6716
+ const color2 = outside ? outsideLabels && context.chart.textColor ? context.chart.textColor : chunkCXL254BT_cjs.sameHueTint(chunkCXL254BT_cjs.representativeColor(fillColor, OUTSIDE_FALLBACK_COLOR), OUTSIDE_TINT_LIGHTNESS) ?? OUTSIDE_FALLBACK_COLOR : chunkCXL254BT_cjs.sameHueContrastColor(
6717
+ chunkCXL254BT_cjs.representativeColor(fillColor, "#0f172a"),
6718
+ chunkCXL254BT_cjs.contrastTextColor(chunkCXL254BT_cjs.representativeColor(fillColor, "#0f172a"))
6499
6719
  );
6500
6720
  return { point, color: color2, outside, mid, tickStart };
6501
6721
  }
@@ -6506,9 +6726,9 @@ function createWedgeLabel(context, geometry, angles, series, value, fillColor) {
6506
6726
  }
6507
6727
  const { chart, bounds, nextOrder } = context;
6508
6728
  const { point, color: color2, outside, mid, tickStart } = placement;
6509
- const fontSize = Math.max(9, chunkYM3XFBI4_cjs.finite(chart.fontSize, 12));
6510
- const lineHeight = fontSize * 1.2;
6511
- const tickEnd = outside ? chunkYM3XFBI4_cjs.clipSegmentToRect(tickStart, point, LABEL_WIDTH / 2, lineHeight) : tickStart;
6729
+ const { nameSize, valueSize } = labelSizes(chart);
6730
+ const lineHeight = Math.max(nameSize, valueSize) * 1.2;
6731
+ const tickEnd = outside ? chunkCXL254BT_cjs.clipSegmentToRect(tickStart, point, LABEL_WIDTH / 2, lineHeight) : tickStart;
6512
6732
  const tick = {
6513
6733
  type: "path",
6514
6734
  id: `chart-polar-area-label-tick-${chart.id}-${series.id}`,
@@ -6530,35 +6750,43 @@ function createWedgeLabel(context, geometry, angles, series, value, fillColor) {
6530
6750
  bounds,
6531
6751
  x: point.x - LABEL_WIDTH / 2,
6532
6752
  width: LABEL_WIDTH,
6533
- height: lineHeight,
6534
- fontFamily: chart.fontFamily ?? chunkYM3XFBI4_cjs.DEFAULT_FONT,
6535
- fontSize,
6753
+ fontFamily: chart.fontFamily ?? chunkCXL254BT_cjs.DEFAULT_FONT,
6536
6754
  align: "center",
6537
6755
  verticalAlign: "middle",
6538
6756
  lineHeight: 1.2,
6539
6757
  color: color2
6540
6758
  };
6759
+ const valueFirst = chart.config?.polarValueFirst ?? false;
6760
+ const nameHeight = nameSize * 1.2;
6761
+ const valueHeight = valueSize * 1.2;
6762
+ const top = point.y - (nameHeight + valueHeight) / 2;
6763
+ const nameY = valueFirst ? top + valueHeight : top;
6764
+ const valueY = valueFirst ? top : top + nameHeight;
6541
6765
  const nameText = {
6542
6766
  type: "text",
6543
6767
  id: `chart-polar-area-label-name-${chart.id}-${series.id}`,
6544
6768
  order: nextOrder(),
6545
6769
  ...base,
6546
- y: point.y - lineHeight,
6770
+ y: nameY,
6771
+ height: nameSize * 1.2,
6772
+ fontSize: nameSize,
6547
6773
  lines: [series.label],
6548
- fontWeight: "bold",
6774
+ fontWeight: valueFirst ? "normal" : "bold",
6549
6775
  detail,
6550
- prop: chunkYM3XFBI4_cjs.seriesLabelProp(series.id)
6776
+ prop: chunkCXL254BT_cjs.seriesLabelProp(series.id)
6551
6777
  };
6552
6778
  const valueText = {
6553
6779
  type: "text",
6554
6780
  id: `chart-polar-area-label-value-${chart.id}-${series.id}`,
6555
6781
  order: nextOrder(),
6556
6782
  ...base,
6557
- y: point.y,
6558
- lines: [chunkYM3XFBI4_cjs.formatFieldValue(value)],
6559
- fontWeight: "normal",
6783
+ y: valueY,
6784
+ height: valueSize * 1.2,
6785
+ fontSize: valueSize,
6786
+ lines: [chunkCXL254BT_cjs.formatFieldValue(value)],
6787
+ fontWeight: valueFirst ? "bold" : "normal",
6560
6788
  detail,
6561
- prop: chunkYM3XFBI4_cjs.seriesValueProp(series.id, 0),
6789
+ prop: chunkCXL254BT_cjs.seriesValueProp(series.id, 0),
6562
6790
  propKind: "value"
6563
6791
  };
6564
6792
  return [tick, nameText, valueText];
@@ -6576,11 +6804,12 @@ function radarFrameFor(context) {
6576
6804
  return {
6577
6805
  centerX: plot.x + plot.width / 2,
6578
6806
  centerY: plot.y + plot.height / 2,
6579
- radius: chunkYM3XFBI4_cjs.radarRadius(plot.width, plot.height, chunkYM3XFBI4_cjs.finite(chart.fontSize, 12), context.showLabels),
6807
+ radius: chunkCXL254BT_cjs.radarRadius(plot.width, plot.height, chunkCXL254BT_cjs.finite(chart.fontSize, 12), context.showLabels),
6580
6808
  min: chart.axisY.min,
6581
6809
  max: chart.axisY.max,
6582
- count: chunkYM3XFBI4_cjs.radarCategoryCount(configuredCount, dataCount),
6583
- curved: chart.chartType === "radial"
6810
+ count: chunkCXL254BT_cjs.radarCategoryCount(configuredCount, dataCount),
6811
+ curved: chart.chartType === "radial",
6812
+ tension: chart.config?.radarTension
6584
6813
  };
6585
6814
  }
6586
6815
  function createRadarGeometry(context) {
@@ -6588,17 +6817,21 @@ function createRadarGeometry(context) {
6588
6817
  const configuredCategories = chart.config?.categories?.filter(Boolean) ?? [];
6589
6818
  const frame = radarFrameFor(context);
6590
6819
  const categories = createCategories(configuredCategories, frame.count);
6591
- const pointAt = (pointRadius, pointIndex) => chunkYM3XFBI4_cjs.radarPointAt(frame, pointIndex, pointRadius);
6820
+ const pointAt = (pointRadius, pointIndex) => chunkCXL254BT_cjs.radarPointAt(frame, pointIndex, pointRadius);
6592
6821
  return {
6593
6822
  circular: frame.curved,
6594
6823
  areaOpacity: Math.max(0, Math.min(1, chart.config?.areaOpacity ?? 0.16)),
6824
+ strokeWidth: Math.max(0, chart.config?.radarStrokeWidth ?? 2),
6825
+ tension: frame.tension,
6826
+ pointSize: Math.max(0, chart.config?.radarPointSize ?? 3),
6827
+ showSpokes: chart.config?.radarSpokes ?? true,
6595
6828
  categories,
6596
6829
  centerX: frame.centerX,
6597
6830
  centerY: frame.centerY,
6598
6831
  radius: frame.radius,
6599
- radiusForValue: (value) => chunkYM3XFBI4_cjs.radarRadiusForValue(frame, value),
6832
+ radiusForValue: (value) => chunkCXL254BT_cjs.radarRadiusForValue(frame, value),
6600
6833
  pointAt,
6601
- polygonPath: (pointRadius) => chunkYM3XFBI4_cjs.radarSeriesPath(
6834
+ polygonPath: (pointRadius) => chunkCXL254BT_cjs.radarSeriesPath(
6602
6835
  categories.map((_, index) => pointAt(pointRadius, index)),
6603
6836
  false
6604
6837
  )
@@ -6616,10 +6849,10 @@ function renderRadarGrid(context, geometry) {
6616
6849
  if (context.chart.showGrid === false) {
6617
6850
  return [];
6618
6851
  }
6619
- return [...renderRings(context, geometry), ...renderSpokes(context, geometry)];
6852
+ return [...renderRings(context, geometry), ...geometry.showSpokes ? renderSpokes(context, geometry) : []];
6620
6853
  }
6621
6854
  function renderRings(context, geometry) {
6622
- return chunkYM3XFBI4_cjs.chartTicks(context.chart.axisY).filter((tick) => tick > context.chart.axisY.min).map((tick) => createRingNode(context, geometry, tick));
6855
+ return chunkCXL254BT_cjs.chartTicks(context.chart.axisY).filter((tick) => tick > context.chart.axisY.min).map((tick) => createRingNode(context, geometry, tick));
6623
6856
  }
6624
6857
  function createRingNode(context, geometry, tick) {
6625
6858
  const { chart, bounds, nextOrder } = context;
@@ -6627,7 +6860,7 @@ function createRingNode(context, geometry, tick) {
6627
6860
  const style = {
6628
6861
  fill: { kind: "none" },
6629
6862
  stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
6630
- strokeWidth: chunkYM3XFBI4_cjs.finite(chart.gridWidth, 1)
6863
+ strokeWidth: chunkCXL254BT_cjs.finite(chart.gridWidth, 1)
6631
6864
  };
6632
6865
  if (geometry.circular) {
6633
6866
  return {
@@ -6664,7 +6897,7 @@ function renderSpokes(context, geometry) {
6664
6897
  style: {
6665
6898
  fill: { kind: "none" },
6666
6899
  stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
6667
- strokeWidth: chunkYM3XFBI4_cjs.finite(chart.gridWidth, 1)
6900
+ strokeWidth: chunkCXL254BT_cjs.finite(chart.gridWidth, 1)
6668
6901
  }
6669
6902
  };
6670
6903
  });
@@ -6684,7 +6917,7 @@ function createCategoryLabel(context, geometry, category, categoryIndex) {
6684
6917
  const labelPoint = geometry.pointAt(geometry.radius + 10, categoryIndex);
6685
6918
  const horizontalOffset = labelPoint.x - geometry.centerX;
6686
6919
  const width = Math.max(64, Math.min(120, plot.width / 3));
6687
- return chunkYM3XFBI4_cjs.chartText({
6920
+ return chunkCXL254BT_cjs.chartText({
6688
6921
  id: `chart-radar-label-${chart.id}-${categoryIndex}`,
6689
6922
  order: nextOrder(),
6690
6923
  bounds,
@@ -6722,13 +6955,13 @@ function renderRadarSeries(context, geometry) {
6722
6955
  return nodes;
6723
6956
  }
6724
6957
  function renderSeries(context, geometry, series, seriesIndex) {
6725
- const color2 = series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length];
6958
+ const color2 = series.color ?? chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length];
6726
6959
  const points = seriesPoints(series, context, geometry);
6727
- const path = chunkYM3XFBI4_cjs.radarSeriesPath(points, geometry.circular);
6960
+ const path = chunkCXL254BT_cjs.radarSeriesPath(points, geometry.circular, geometry.tension);
6728
6961
  return [
6729
6962
  createSeriesFill(context, geometry, series, path, color2),
6730
- createSeriesStroke(context, series, path, color2),
6731
- ...createSeriesPoints(context, series, points, color2)
6963
+ ...geometry.strokeWidth > 0 ? [createSeriesStroke(context, geometry, series, path, color2)] : [],
6964
+ ...geometry.pointSize > 0 ? createSeriesPoints(context, geometry, series, points, color2) : []
6732
6965
  ];
6733
6966
  }
6734
6967
  function seriesPoints(series, context, geometry) {
@@ -6747,13 +6980,13 @@ function createSeriesFill(context, geometry, series, path, color2) {
6747
6980
  d: path,
6748
6981
  detail: { of: "chartSeries", series: series.id },
6749
6982
  style: {
6750
- fill: chunkYM3XFBI4_cjs.paint(color2, diagnostics, chart.id),
6983
+ fill: chunkCXL254BT_cjs.paint(color2, diagnostics, chart.id),
6751
6984
  stroke: { kind: "none" },
6752
6985
  opacity: Math.max(0, Math.min(1, series.opacity ?? geometry.areaOpacity))
6753
6986
  }
6754
6987
  };
6755
6988
  }
6756
- function createSeriesStroke(context, series, path, color2) {
6989
+ function createSeriesStroke(context, geometry, series, path, color2) {
6757
6990
  const { chart, bounds, diagnostics, nextOrder } = context;
6758
6991
  return {
6759
6992
  type: "path",
@@ -6764,14 +6997,14 @@ function createSeriesStroke(context, series, path, color2) {
6764
6997
  detail: { of: "chartSeries", series: series.id },
6765
6998
  style: {
6766
6999
  fill: { kind: "none" },
6767
- stroke: chunkYM3XFBI4_cjs.paint(color2, diagnostics, chart.id),
6768
- strokeWidth: 2,
7000
+ stroke: chunkCXL254BT_cjs.paint(color2, diagnostics, chart.id),
7001
+ strokeWidth: geometry.strokeWidth,
6769
7002
  lineJoin: "round",
6770
- shadow: chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle)
7003
+ shadow: chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle)
6771
7004
  }
6772
7005
  };
6773
7006
  }
6774
- function createSeriesPoints(context, series, points, color2) {
7007
+ function createSeriesPoints(context, geometry, series, points, color2) {
6775
7008
  const { chart, bounds, diagnostics, nextOrder } = context;
6776
7009
  return points.map((point, pointIndex) => ({
6777
7010
  type: "ellipse",
@@ -6780,11 +7013,11 @@ function createSeriesPoints(context, series, points, color2) {
6780
7013
  bounds,
6781
7014
  cx: point.x,
6782
7015
  cy: point.y,
6783
- rx: 3,
6784
- ry: 3,
7016
+ rx: geometry.pointSize,
7017
+ ry: geometry.pointSize,
6785
7018
  detail: { of: "chartValue", series: series.id, valueIndex: pointIndex, mark: "radar-vertex" },
6786
- prop: chunkYM3XFBI4_cjs.seriesValueProp(series.id, pointIndex),
6787
- style: { fill: chunkYM3XFBI4_cjs.paint(color2, diagnostics, chart.id) }
7019
+ prop: chunkCXL254BT_cjs.seriesValueProp(series.id, pointIndex),
7020
+ style: { fill: chunkCXL254BT_cjs.paint(color2, diagnostics, chart.id) }
6788
7021
  }));
6789
7022
  }
6790
7023
 
@@ -6799,7 +7032,7 @@ function renderRadar(context) {
6799
7032
  }
6800
7033
 
6801
7034
  // src/renderScene/charts/renderers/radialBar.ts
6802
- var START_ANGLE2 = -Math.PI / 2;
7035
+ var TOP3 = -Math.PI / 2;
6803
7036
  var DEFAULT_RING_THICKNESS = 14;
6804
7037
  var DEFAULT_RING_GAP = 4;
6805
7038
  var TRACK_OPACITY = 0.18;
@@ -6825,34 +7058,38 @@ function ringShadow(shadow, ringThickness) {
6825
7058
  const scale = distance > maxDistance ? maxDistance / distance : 1;
6826
7059
  return { ...shadow, blur, dx: shadow.dx * scale, dy: shadow.dy * scale };
6827
7060
  }
6828
- function ringProgressPath(cx, cy, r, sweep) {
7061
+ function ringProgressPath(cx, cy, r, sweep, from) {
6829
7062
  if (sweep >= Math.PI * 2 - FULL_SWEEP_EPSILON) {
6830
- const start2 = arcPoint(cx, cy, r, START_ANGLE2);
6831
- const mid = arcPoint(cx, cy, r, START_ANGLE2 + Math.PI);
7063
+ const start2 = arcPoint(cx, cy, r, from);
7064
+ const mid = arcPoint(cx, cy, r, from + Math.PI);
6832
7065
  return `M ${start2.x} ${start2.y} A ${r} ${r} 0 1 1 ${mid.x} ${mid.y} A ${r} ${r} 0 1 1 ${start2.x} ${start2.y}`;
6833
7066
  }
6834
- const start = arcPoint(cx, cy, r, START_ANGLE2);
6835
- const end = arcPoint(cx, cy, r, START_ANGLE2 + sweep);
7067
+ const start = arcPoint(cx, cy, r, from);
7068
+ const end = arcPoint(cx, cy, r, from + sweep);
6836
7069
  const largeArc = sweep > Math.PI ? 1 : 0;
6837
7070
  return `M ${start.x} ${start.y} A ${r} ${r} 0 ${largeArc} 1 ${end.x} ${end.y}`;
6838
7071
  }
6839
7072
  function layoutOf2(context) {
6840
7073
  const { chart, plot } = context;
6841
- const axisMin = chunkYM3XFBI4_cjs.finite(chart.axisY.min, 0);
7074
+ const axisMin = chunkCXL254BT_cjs.finite(chart.axisY.min, 0);
6842
7075
  return {
6843
7076
  centerX: plot.x + plot.width / 2,
6844
7077
  centerY: plot.y + plot.height / 2,
6845
7078
  outerRadius: Math.max(1, Math.min(plot.width, plot.height) / 2 - 4),
6846
- ringThickness: Math.max(1, chunkYM3XFBI4_cjs.finite(chart.config?.ringThickness, DEFAULT_RING_THICKNESS)),
6847
- ringGap: Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.ringGap, DEFAULT_RING_GAP)),
7079
+ ringThickness: Math.max(1, chunkCXL254BT_cjs.finite(chart.config?.ringThickness, DEFAULT_RING_THICKNESS)),
7080
+ ringGap: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.ringGap, DEFAULT_RING_GAP)),
6848
7081
  axisMin,
6849
- range: chunkYM3XFBI4_cjs.finite(chart.axisY.max, 100) - axisMin
7082
+ range: chunkCXL254BT_cjs.finite(chart.axisY.max, 100) - axisMin,
7083
+ start: TOP3 + chunkCXL254BT_cjs.finite(chart.config?.ringStartAngle, 0) * Math.PI / 180,
7084
+ total: Math.min(360, Math.max(1, chunkCXL254BT_cjs.finite(chart.config?.ringSweep, 360))) * Math.PI / 180,
7085
+ trackOpacity: Math.min(1, Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.ringTrackOpacity, TRACK_OPACITY))),
7086
+ cap: chart.config?.ringCap ?? "round"
6850
7087
  };
6851
7088
  }
6852
7089
  function ringEndShadows(context, layout, series, radius, sweep, color2) {
6853
7090
  const { chart, bounds, nextOrder } = context;
6854
- const { centerX, centerY, ringThickness } = layout;
6855
- const shadow = chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle);
7091
+ const { centerX, centerY, ringThickness, start } = layout;
7092
+ const shadow = chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle);
6856
7093
  const isFullCircle = sweep >= Math.PI * 2 - FULL_SWEEP_EPSILON;
6857
7094
  if (!shadow || isFullCircle) {
6858
7095
  return [];
@@ -6860,8 +7097,8 @@ function ringEndShadows(context, layout, series, radius, sweep, color2) {
6860
7097
  const clampedShadow = ringShadow(shadow, ringThickness);
6861
7098
  const stubSweep = Math.min(sweep, ringThickness / radius);
6862
7099
  return [
6863
- [START_ANGLE2, START_ANGLE2 + stubSweep],
6864
- [START_ANGLE2 + sweep - stubSweep, START_ANGLE2 + sweep]
7100
+ [start, start + stubSweep],
7101
+ [start + sweep - stubSweep, start + sweep]
6865
7102
  ].map(
6866
7103
  ([from, to], endIndex) => ({
6867
7104
  type: "path",
@@ -6873,7 +7110,7 @@ function ringEndShadows(context, layout, series, radius, sweep, color2) {
6873
7110
  fill: { kind: "none" },
6874
7111
  stroke: color2,
6875
7112
  strokeWidth: ringThickness,
6876
- lineCap: "round",
7113
+ lineCap: layout.cap,
6877
7114
  shadow: clampedShadow,
6878
7115
  clip: {
6879
7116
  type: "path",
@@ -6883,17 +7120,23 @@ function ringEndShadows(context, layout, series, radius, sweep, color2) {
6883
7120
  })
6884
7121
  );
6885
7122
  }
6886
- function ringNodes(context, layout, series, index) {
7123
+ function ringNodes2(context, layout, series, index) {
6887
7124
  const { chart, bounds, diagnostics, nextOrder } = context;
6888
- const { centerX, centerY, outerRadius, ringThickness, ringGap, axisMin, range } = layout;
7125
+ const { centerX, centerY, outerRadius, ringThickness, ringGap, axisMin, range, start, total, trackOpacity, cap } = layout;
6889
7126
  const radius = outerRadius - index * (ringThickness + ringGap) - ringThickness / 2;
6890
7127
  if (radius <= ringThickness / 2) {
6891
7128
  return [];
6892
7129
  }
6893
- const color2 = chunkYM3XFBI4_cjs.paint(series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[index % chunkYM3XFBI4_cjs.CHART_COLORS.length], diagnostics, chart.id);
6894
- const value = Math.max(0, chunkYM3XFBI4_cjs.finite(series.values[0], 0));
7130
+ const color2 = chunkCXL254BT_cjs.paint(series.color ?? chunkCXL254BT_cjs.CHART_COLORS[index % chunkCXL254BT_cjs.CHART_COLORS.length], diagnostics, chart.id);
7131
+ const value = Math.max(0, chunkCXL254BT_cjs.finite(series.values[0], 0));
6895
7132
  const fraction = range > 0 ? Math.min(1, Math.max(0, (value - axisMin) / range)) : 0;
6896
- const track = {
7133
+ const trackStyle = {
7134
+ fill: { kind: "none" },
7135
+ stroke: color2,
7136
+ strokeWidth: ringThickness,
7137
+ opacity: trackOpacity
7138
+ };
7139
+ const track = total >= Math.PI * 2 - FULL_SWEEP_EPSILON ? {
6897
7140
  type: "ellipse",
6898
7141
  id: `chart-radial-bar-track-${chart.id}-${series.id}`,
6899
7142
  order: nextOrder(),
@@ -6902,42 +7145,49 @@ function ringNodes(context, layout, series, index) {
6902
7145
  cy: centerY,
6903
7146
  rx: radius,
6904
7147
  ry: radius,
6905
- style: { fill: { kind: "none" }, stroke: color2, strokeWidth: ringThickness, opacity: TRACK_OPACITY }
7148
+ style: trackStyle
7149
+ } : {
7150
+ type: "path",
7151
+ id: `chart-radial-bar-track-${chart.id}-${series.id}`,
7152
+ order: nextOrder(),
7153
+ bounds,
7154
+ d: arcSegmentPath(centerX, centerY, radius, start, start + total),
7155
+ style: { ...trackStyle, lineCap: cap }
6906
7156
  };
6907
7157
  if (fraction <= 0) {
6908
7158
  return [track];
6909
7159
  }
6910
- const sweep = fraction * Math.PI * 2;
7160
+ const sweep = fraction * total;
6911
7161
  const casters = ringEndShadows(context, layout, series, radius, sweep, color2);
6912
7162
  const progress = {
6913
7163
  type: "path",
6914
7164
  id: `chart-radial-bar-ring-${chart.id}-${series.id}`,
6915
7165
  order: nextOrder(),
6916
7166
  bounds,
6917
- d: ringProgressPath(centerX, centerY, radius, sweep),
7167
+ d: ringProgressPath(centerX, centerY, radius, sweep, start),
6918
7168
  detail: { of: "chartValue", series: series.id, valueIndex: 0, mark: "radial-bar-ring" },
6919
- prop: chunkYM3XFBI4_cjs.seriesValueProp(series.id, 0),
6920
- style: { fill: { kind: "none" }, stroke: color2, strokeWidth: ringThickness, lineCap: "round" }
7169
+ prop: chunkCXL254BT_cjs.seriesValueProp(series.id, 0),
7170
+ style: { fill: { kind: "none" }, stroke: color2, strokeWidth: ringThickness, lineCap: cap }
6921
7171
  };
6922
7172
  return [track, ...casters, progress];
6923
7173
  }
6924
7174
  function renderRadialBar(context) {
6925
7175
  const layout = layoutOf2(context);
6926
- return context.chart.series.flatMap((series, index) => ringNodes(context, layout, series, index));
7176
+ return context.chart.series.flatMap((series, index) => ringNodes2(context, layout, series, index));
6927
7177
  }
6928
7178
 
6929
7179
  // src/renderScene/charts/renderers/sankey/links.ts
6930
7180
  function renderSankeyLinks(context, data) {
6931
- const shadow = chunkYM3XFBI4_cjs.resolveChartShadow(context.chart.shadowStyle);
7181
+ const shadow = chunkCXL254BT_cjs.resolveChartShadow(context.chart.shadowStyle);
6932
7182
  const gradient = Boolean(context.chart.config?.linkGradient);
6933
7183
  const { plot } = context;
6934
7184
  const clipPath = shadow ? `M ${plot.x} ${plot.y} H ${plot.x + plot.width} V ${plot.y + plot.height} H ${plot.x} Z` : void 0;
6935
7185
  return data.links.map((link, linkIndex) => {
6936
- const ribbon = createSankeyLinkRibbon(data, link, linkIndex, gradient);
7186
+ const ribbon = createSankeyLinkRibbon(context, data, link, linkIndex, gradient);
6937
7187
  return createSankeyRibbonNode(context, ribbon, shadow, clipPath, gradient);
6938
7188
  });
6939
7189
  }
6940
- function createSankeyLinkRibbon(data, link, linkIndex, gradient) {
7190
+ function createSankeyLinkRibbon(context, data, link, linkIndex, gradient) {
6941
7191
  const source = {
6942
7192
  x: data.baseX + link.x0,
6943
7193
  top: data.baseY + link.sourceY0,
@@ -6948,8 +7198,9 @@ function createSankeyLinkRibbon(data, link, linkIndex, gradient) {
6948
7198
  top: data.baseY + link.targetY0,
6949
7199
  bottom: data.baseY + link.targetY1
6950
7200
  };
6951
- const fromColor = link.color || data.nodeColors.get(link.source) || chunkYM3XFBI4_cjs.DEFAULT_ZONE_FILL;
6952
- const toColor = data.nodeColors.get(link.target) || chunkYM3XFBI4_cjs.DEFAULT_ZONE_FILL;
7201
+ const config = context.chart.config;
7202
+ const fromColor = link.color || data.nodeColors.get(link.source) || chunkCXL254BT_cjs.DEFAULT_ZONE_FILL;
7203
+ const toColor = data.nodeColors.get(link.target) || chunkCXL254BT_cjs.DEFAULT_ZONE_FILL;
6953
7204
  const fill2 = gradient ? {
6954
7205
  kind: "linear-gradient",
6955
7206
  angle: 0,
@@ -6964,9 +7215,9 @@ function createSankeyLinkRibbon(data, link, linkIndex, gradient) {
6964
7215
  toId: link.target,
6965
7216
  source,
6966
7217
  target,
6967
- controlX: (source.x + target.x) / 2,
7218
+ controlX: source.x + (target.x - source.x) * Math.min(1, Math.max(0, chunkCXL254BT_cjs.finite(config?.sankeyLinkCurve, 0.5))),
6968
7219
  fill: fill2,
6969
- opacity: link.color ? 0.85 : 0.45
7220
+ opacity: Math.min(1, Math.max(0, chunkCXL254BT_cjs.finite(config?.sankeyLinkOpacity, link.color ? 0.85 : 0.45)))
6970
7221
  };
6971
7222
  }
6972
7223
  function createSankeyRibbonNode(context, ribbon, shadow, clipPath, gradient) {
@@ -7007,7 +7258,7 @@ function sankeyRibbonPath(ribbon) {
7007
7258
  var OUTSIDE_LABEL_LIGHTNESS_ON_LIGHT_BG = 0.3;
7008
7259
  var OUTSIDE_LABEL_LIGHTNESS_ON_DARK_BG = 0.78;
7009
7260
  function renderSankeyNodes(context, data) {
7010
- const cornerRadius = Math.max(0, chunkYM3XFBI4_cjs.finite(context.chart.config?.barCornerRadius, 0));
7261
+ const cornerRadius = Math.max(0, chunkCXL254BT_cjs.finite(context.chart.config?.barCornerRadius, 0));
7011
7262
  const nodes = [];
7012
7263
  data.nodes.forEach((node) => {
7013
7264
  nodes.push(createNodeRect(context, data, node, cornerRadius));
@@ -7023,8 +7274,8 @@ function createNodeRect(context, data, node, cornerRadius) {
7023
7274
  const x = data.baseX + node.x;
7024
7275
  const y = data.baseY + node.y;
7025
7276
  const style = {
7026
- fill: { kind: "solid", color: node.color || chunkYM3XFBI4_cjs.DEFAULT_ZONE_FILL },
7027
- shadow: chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle)
7277
+ fill: { kind: "solid", color: node.color || chunkCXL254BT_cjs.DEFAULT_ZONE_FILL },
7278
+ shadow: chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle)
7028
7279
  };
7029
7280
  const isFirstColumn = node.column === 0;
7030
7281
  const isLastColumn = node.column === data.columnCount - 1;
@@ -7050,7 +7301,7 @@ function createNodeRect(context, data, node, cornerRadius) {
7050
7301
  id: `chart-sankey-node-${chart.id}-${node.id}`,
7051
7302
  order: nextOrder(),
7052
7303
  bounds,
7053
- d: chunkYM3XFBI4_cjs.leftRoundedRectPath(x, y, node.width, node.height, cornerRadius),
7304
+ d: chunkCXL254BT_cjs.leftRoundedRectPath(x, y, node.width, node.height, cornerRadius),
7054
7305
  style,
7055
7306
  detail
7056
7307
  };
@@ -7061,7 +7312,7 @@ function createNodeRect(context, data, node, cornerRadius) {
7061
7312
  id: `chart-sankey-node-${chart.id}-${node.id}`,
7062
7313
  order: nextOrder(),
7063
7314
  bounds,
7064
- d: chunkYM3XFBI4_cjs.rightRoundedRectPath(x, y, node.width, node.height, cornerRadius),
7315
+ d: chunkCXL254BT_cjs.rightRoundedRectPath(x, y, node.width, node.height, cornerRadius),
7065
7316
  style,
7066
7317
  detail
7067
7318
  };
@@ -7087,9 +7338,9 @@ function createNodeLabel(context, data, node) {
7087
7338
  return void 0;
7088
7339
  }
7089
7340
  const fallback = chart.textColor ?? "#0f172a";
7090
- const defaultColor = position === "inside" ? chunkYM3XFBI4_cjs.contrastTextColor(node.color) : chunkYM3XFBI4_cjs.sameHueTint(
7341
+ const defaultColor = position === "inside" ? chunkCXL254BT_cjs.contrastTextColor(node.color) : chunkCXL254BT_cjs.sameHueTint(
7091
7342
  node.color,
7092
- chunkYM3XFBI4_cjs.isLightColor(fallback) ? OUTSIDE_LABEL_LIGHTNESS_ON_DARK_BG : OUTSIDE_LABEL_LIGHTNESS_ON_LIGHT_BG
7343
+ chunkCXL254BT_cjs.isLightColor(fallback) ? OUTSIDE_LABEL_LIGHTNESS_ON_DARK_BG : OUTSIDE_LABEL_LIGHTNESS_ON_LIGHT_BG
7093
7344
  ) ?? fallback;
7094
7345
  const color2 = chart.config?.labelColor ?? defaultColor;
7095
7346
  return { ...label, color: color2, detail: { of: "chartSeries", series: node.id, mark: "sankey-node-label" } };
@@ -7101,7 +7352,7 @@ function createOutsideLabel(context, data, node) {
7101
7352
  const y = data.baseY + node.y;
7102
7353
  const labelX2 = isLastColumn ? x - data.labelGutter + 8 : x + node.width + 6;
7103
7354
  return {
7104
- ...chunkYM3XFBI4_cjs.chartText({
7355
+ ...chunkCXL254BT_cjs.chartText({
7105
7356
  id: `chart-sankey-label-${chart.id}-${node.id}`,
7106
7357
  order: nextOrder(),
7107
7358
  bounds,
@@ -7110,7 +7361,7 @@ function createOutsideLabel(context, data, node) {
7110
7361
  chart,
7111
7362
  align: isLastColumn ? "right" : "left"
7112
7363
  }),
7113
- fontSize: data.fontSize - 2,
7364
+ fontSize: data.labelSize,
7114
7365
  fontWeight: "bold",
7115
7366
  verticalAlign: "middle"
7116
7367
  };
@@ -7121,16 +7372,16 @@ function createInsideLabel(context, data, node, orientation) {
7121
7372
  const y = data.baseY + node.y;
7122
7373
  const centerX = x + node.width / 2;
7123
7374
  const centerY = y + node.height / 2;
7124
- const fontSize = data.fontSize - 2;
7375
+ const fontSize = data.labelSize;
7125
7376
  const id = `chart-sankey-label-${chart.id}-${node.id}`;
7126
7377
  if (orientation === "vertical") {
7127
7378
  const thickness = fontSize * 1.4;
7128
7379
  const width = Math.max(1, node.height - 8);
7129
- if (chunkYM3XFBI4_cjs.estimateTextWidth(node.label, fontSize, false) > width) {
7380
+ if (chunkCXL254BT_cjs.estimateTextWidth(node.label, fontSize, false) > width) {
7130
7381
  return void 0;
7131
7382
  }
7132
7383
  return {
7133
- ...chunkYM3XFBI4_cjs.chartText({
7384
+ ...chunkCXL254BT_cjs.chartText({
7134
7385
  id,
7135
7386
  order: nextOrder(),
7136
7387
  bounds,
@@ -7147,7 +7398,7 @@ function createInsideLabel(context, data, node, orientation) {
7147
7398
  };
7148
7399
  }
7149
7400
  return {
7150
- ...chunkYM3XFBI4_cjs.chartText({
7401
+ ...chunkCXL254BT_cjs.chartText({
7151
7402
  id,
7152
7403
  order: nextOrder(),
7153
7404
  bounds,
@@ -7167,15 +7418,19 @@ function createSankeyRenderData(context) {
7167
7418
  const { chart, plot, showLabels } = context;
7168
7419
  const labelGutter = showLabels ? 92 : 0;
7169
7420
  const availableWidth = Math.max(1, plot.width - labelGutter * 2);
7170
- const layout = layoutSankey(createNodeInputs(context), createLinkInputs(context), availableWidth, plot.height);
7421
+ const layout = layoutSankey(createNodeInputs(context), createLinkInputs(context), availableWidth, plot.height, {
7422
+ nodeWidth: Math.max(1, chunkCXL254BT_cjs.finite(chart.config?.sankeyNodeWidth, 18)),
7423
+ nodeGap: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.sankeyNodeGap, 8))
7424
+ });
7171
7425
  return {
7172
7426
  ...layout,
7173
7427
  baseX: plot.x + labelGutter,
7174
7428
  baseY: plot.y,
7175
7429
  labelGutter,
7176
- fontSize: Math.max(9, chunkYM3XFBI4_cjs.finite(chart.fontSize, 12)),
7430
+ fontSize: Math.max(9, chunkCXL254BT_cjs.finite(chart.fontSize, 12)),
7431
+ labelSize: Math.max(6, chunkCXL254BT_cjs.finite(chart.config?.sankeyLabelSize, Math.max(9, chunkCXL254BT_cjs.finite(chart.fontSize, 12)) - 2)),
7177
7432
  columnCount: Math.max(1, ...layout.nodes.map((node) => node.column + 1)),
7178
- nodeColors: new Map(layout.nodes.map((node) => [node.id, node.color || chunkYM3XFBI4_cjs.DEFAULT_ZONE_FILL]))
7433
+ nodeColors: new Map(layout.nodes.map((node) => [node.id, node.color || chunkCXL254BT_cjs.DEFAULT_ZONE_FILL]))
7179
7434
  };
7180
7435
  }
7181
7436
  function createNodeInputs(context) {
@@ -7197,7 +7452,7 @@ function createLinkInputs(context) {
7197
7452
  source: series.source,
7198
7453
  target: series.target,
7199
7454
  value: series.values[0] ?? 0,
7200
- color: series.color ? chunkYM3XFBI4_cjs.representativeColor(series.color, chunkYM3XFBI4_cjs.DEFAULT_ZONE_FILL) : void 0
7455
+ color: series.color ? chunkCXL254BT_cjs.representativeColor(series.color, chunkCXL254BT_cjs.DEFAULT_ZONE_FILL) : void 0
7201
7456
  });
7202
7457
  });
7203
7458
  return inputs;
@@ -7213,20 +7468,24 @@ function renderSankey(context) {
7213
7468
  }
7214
7469
 
7215
7470
  // src/renderScene/charts/renderers/scatter.ts
7216
- function renderScatter(context, radius = 4) {
7471
+ var DEFAULT_POINT_SIZE = 4;
7472
+ function renderScatter(context) {
7217
7473
  const nodes = [];
7218
- const shadow = chunkYM3XFBI4_cjs.resolveChartShadow(context.chart.shadowStyle);
7474
+ const shadow = chunkCXL254BT_cjs.resolveChartShadow(context.chart.shadowStyle);
7219
7475
  context.chart.series.forEach((series, seriesIndex) => {
7220
- const color2 = series.color ?? chunkYM3XFBI4_cjs.CHART_COLORS[seriesIndex % chunkYM3XFBI4_cjs.CHART_COLORS.length];
7476
+ const color2 = series.color ?? chunkCXL254BT_cjs.CHART_COLORS[seriesIndex % chunkCXL254BT_cjs.CHART_COLORS.length];
7221
7477
  const points = pixelPoints(context, seriesValuePairs(context.chart, series));
7222
7478
  points.forEach((point, pointIndex) => {
7223
- nodes.push(createScatterPoint(context, series, point, pointIndex, color2, radius, shadow));
7479
+ nodes.push(createScatterPoint(context, series, point, pointIndex, color2, shadow));
7224
7480
  });
7225
7481
  });
7226
7482
  return nodes;
7227
7483
  }
7228
- function createScatterPoint(context, series, point, pointIndex, color2, radius, shadow) {
7484
+ function createScatterPoint(context, series, point, pointIndex, color2, shadow) {
7229
7485
  const { chart, bounds, diagnostics, nextOrder } = context;
7486
+ const config = chart.config;
7487
+ const radius = config?.pointSize ?? DEFAULT_POINT_SIZE;
7488
+ const strokeWidth = config?.pointStrokeWidth ?? 0;
7230
7489
  return {
7231
7490
  type: "ellipse",
7232
7491
  id: `chart-point-${chart.id}-${series.id}-${pointIndex}`,
@@ -7237,21 +7496,27 @@ function createScatterPoint(context, series, point, pointIndex, color2, radius,
7237
7496
  rx: radius,
7238
7497
  ry: radius,
7239
7498
  detail: { of: "chartValue", series: series.id, valueIndex: pointIndex },
7240
- style: { fill: chunkYM3XFBI4_cjs.paint(color2, diagnostics, chart.id), shadow }
7499
+ style: {
7500
+ fill: chunkCXL254BT_cjs.paint(color2, diagnostics, chart.id),
7501
+ stroke: strokeWidth > 0 ? chunkCXL254BT_cjs.paint(config?.pointStrokeColor ?? color2, diagnostics, chart.id) : void 0,
7502
+ strokeWidth: strokeWidth > 0 ? strokeWidth : void 0,
7503
+ opacity: config?.pointOpacity,
7504
+ shadow
7505
+ }
7241
7506
  };
7242
7507
  }
7243
7508
 
7244
7509
  // src/renderScene/charts/renderers/treemap/layout.ts
7245
7510
  function createTreemapLayout(context) {
7246
7511
  const { chart, plot, showLegend } = context;
7247
- const fontSize = Math.max(9, chunkYM3XFBI4_cjs.finite(chart.fontSize, 12));
7512
+ const fontSize = Math.max(9, chunkCXL254BT_cjs.finite(chart.fontSize, 12));
7248
7513
  const legendPosition = chart.legendPosition === "left" ? "left" : chart.legendPosition === "right" ? "right" : "bottom";
7249
7514
  const legendHeight = showLegend && legendPosition === "bottom" ? 48 : 0;
7250
- const cellGap = Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.cellGap, 0));
7515
+ const cellGap = Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.cellGap, 0));
7251
7516
  return {
7252
7517
  leaves: chart.series,
7253
- bands: chunkYM3XFBI4_cjs.axisBands(chart.axisY),
7254
- zones: chart.config?.zones?.length ? chart.config.zones : chunkYM3XFBI4_cjs.DEFAULT_HEATMAP_ZONES,
7518
+ bands: chunkCXL254BT_cjs.axisBands(chart.axisY),
7519
+ zones: chart.config?.zones?.length ? chart.config.zones : chunkCXL254BT_cjs.DEFAULT_HEATMAP_ZONES,
7255
7520
  fontSize,
7256
7521
  smallFontSize: Math.max(8, fontSize - 1),
7257
7522
  legendPosition,
@@ -7259,14 +7524,18 @@ function createTreemapLayout(context) {
7259
7524
  gridWidth: Math.max(1, plot.width),
7260
7525
  gridHeight: Math.max(1, plot.height - legendHeight),
7261
7526
  cellGap,
7262
- cellRadius: Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.barCornerRadius, cellGap))
7527
+ cellRadius: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.barCornerRadius, cellGap)),
7528
+ headerHeight: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.headerHeight, 20)),
7529
+ labelSize: Math.max(6, chunkCXL254BT_cjs.finite(chart.config?.tileLabelSize, Math.max(8, fontSize - 1))),
7530
+ valueSize: Math.max(6, chunkCXL254BT_cjs.finite(chart.config?.tileValueSize, Math.max(8, fontSize - 1))),
7531
+ labelPadding: Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.tileLabelPadding, 4))
7263
7532
  };
7264
7533
  }
7265
7534
  function treemapLeafValue(leaf) {
7266
7535
  return leaf.values[0] ?? 0;
7267
7536
  }
7268
7537
  function treemapLeafColor(leaf, layout) {
7269
- return leaf.color ?? chunkYM3XFBI4_cjs.zoneColorAtValue(treemapLeafValue(leaf), layout.bands, layout.zones);
7538
+ return leaf.color ?? chunkCXL254BT_cjs.zoneColorAtValue(treemapLeafValue(leaf), layout.bands, layout.zones);
7270
7539
  }
7271
7540
 
7272
7541
  // src/renderScene/charts/renderers/treemap/legend.ts
@@ -7291,7 +7560,7 @@ function bandStops(layout) {
7291
7560
  const zones = layout.zones.slice(0, bandCount);
7292
7561
  return zones.map((zone, index) => ({
7293
7562
  offset: bandRatio2(layout, layout.bands[index + 1] ?? layout.bands[layout.bands.length - 1]) * 100,
7294
- color: zone.color ?? chunkYM3XFBI4_cjs.DEFAULT_ZONE_FILL
7563
+ color: zone.color ?? chunkCXL254BT_cjs.DEFAULT_ZONE_FILL
7295
7564
  }));
7296
7565
  }
7297
7566
  function renderBottomLegend(context, layout) {
@@ -7300,7 +7569,7 @@ function renderBottomLegend(context, layout) {
7300
7569
  const barWidth = layout.gridWidth;
7301
7570
  const labelHeight = layout.fontSize + 2;
7302
7571
  const barY = plot.y + layout.gridHeight + CHART_GAP;
7303
- const barBounds = chunkYM3XFBI4_cjs.boxBounds({ x: barX, y: barY, width: barWidth, height: BAR_THICKNESS });
7572
+ const barBounds = chunkCXL254BT_cjs.boxBounds({ x: barX, y: barY, width: barWidth, height: BAR_THICKNESS });
7304
7573
  const stops = bandStops(layout);
7305
7574
  const bar = {
7306
7575
  type: "rect",
@@ -7314,7 +7583,7 @@ function renderBottomLegend(context, layout) {
7314
7583
  rx: 3,
7315
7584
  zoneGradient: { axis: "y", min: chart.axisY.min, max: chart.axisY.max },
7316
7585
  style: {
7317
- fill: stops.length ? { kind: "linear-gradient", angle: 0, stops } : { kind: "solid", color: chunkYM3XFBI4_cjs.DEFAULT_ZONE_FILL },
7586
+ fill: stops.length ? { kind: "linear-gradient", angle: 0, stops } : { kind: "solid", color: chunkCXL254BT_cjs.DEFAULT_ZONE_FILL },
7318
7587
  stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
7319
7588
  strokeWidth: 1
7320
7589
  }
@@ -7337,12 +7606,12 @@ function renderBottomLegend(context, layout) {
7337
7606
  const isLast = index === layout.bands.length - 1;
7338
7607
  const align = isFirst ? "left" : isLast ? "right" : "center";
7339
7608
  const frameX = isFirst ? x : isLast ? x - LABEL_SIZE : x - LABEL_SIZE / 2;
7340
- const label = chunkYM3XFBI4_cjs.chartText({
7609
+ const label = chunkCXL254BT_cjs.chartText({
7341
7610
  id: `chart-treemap-legend-tick-label-${chart.id}-${index}`,
7342
7611
  order: nextOrder(),
7343
7612
  bounds,
7344
7613
  frame: { x: frameX, y: barY + BAR_THICKNESS + TICK_LENGTH + ROW_GAP2, width: LABEL_SIZE, height: labelHeight },
7345
- text: chunkYM3XFBI4_cjs.formatFieldValue(value),
7614
+ text: chunkCXL254BT_cjs.formatFieldValue(value),
7346
7615
  chart,
7347
7616
  align
7348
7617
  });
@@ -7356,7 +7625,7 @@ function renderSideLegend(context, layout) {
7356
7625
  const barTop = plot.y;
7357
7626
  const barHeight = layout.gridHeight;
7358
7627
  const barX = side === "left" ? plot.x - CHART_GAP - BAR_THICKNESS : plot.x + layout.gridWidth + CHART_GAP;
7359
- const barBounds = chunkYM3XFBI4_cjs.boxBounds({ x: barX, y: barTop, width: BAR_THICKNESS, height: barHeight });
7628
+ const barBounds = chunkCXL254BT_cjs.boxBounds({ x: barX, y: barTop, width: BAR_THICKNESS, height: barHeight });
7360
7629
  const stops = bandStops(layout);
7361
7630
  const bar = {
7362
7631
  type: "rect",
@@ -7370,7 +7639,7 @@ function renderSideLegend(context, layout) {
7370
7639
  rx: 3,
7371
7640
  zoneGradient: { axis: "y", min: chart.axisY.min, max: chart.axisY.max },
7372
7641
  style: {
7373
- fill: stops.length ? { kind: "linear-gradient", angle: 270, stops } : { kind: "solid", color: chunkYM3XFBI4_cjs.DEFAULT_ZONE_FILL },
7642
+ fill: stops.length ? { kind: "linear-gradient", angle: 270, stops } : { kind: "solid", color: chunkCXL254BT_cjs.DEFAULT_ZONE_FILL },
7374
7643
  stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
7375
7644
  strokeWidth: 1
7376
7645
  }
@@ -7392,12 +7661,12 @@ function renderSideLegend(context, layout) {
7392
7661
  strokeWidth: 1
7393
7662
  }
7394
7663
  };
7395
- const label = chunkYM3XFBI4_cjs.chartText({
7664
+ const label = chunkCXL254BT_cjs.chartText({
7396
7665
  id: `chart-treemap-legend-tick-label-${chart.id}-${index}`,
7397
7666
  order: nextOrder(),
7398
7667
  bounds,
7399
7668
  frame: { x: labelX2, y: y - layout.fontSize / 2, width: LABEL_SIZE, height: layout.fontSize + 2 },
7400
- text: chunkYM3XFBI4_cjs.formatFieldValue(value),
7669
+ text: chunkCXL254BT_cjs.formatFieldValue(value),
7401
7670
  chart,
7402
7671
  align: side === "left" ? "right" : "left"
7403
7672
  });
@@ -7407,7 +7676,6 @@ function renderSideLegend(context, layout) {
7407
7676
  }
7408
7677
 
7409
7678
  // src/renderScene/charts/renderers/treemap/tiles.ts
7410
- var HEADER_HEIGHT = 20;
7411
7679
  function renderTreemapTiles(context, layout) {
7412
7680
  const { tiles, headers } = layoutTreemapTiles(context, layout);
7413
7681
  const nodes = [];
@@ -7446,7 +7714,7 @@ function layoutTreemapTiles(context, layout) {
7446
7714
  const tiles = [];
7447
7715
  const headers = [];
7448
7716
  groupRects.forEach((groupRect) => {
7449
- const headerHeight = context.showLabels ? Math.min(HEADER_HEIGHT, groupRect.height) : 0;
7717
+ const headerHeight = context.showLabels ? Math.min(layout.headerHeight, groupRect.height) : 0;
7450
7718
  if (context.showLabels) {
7451
7719
  headers.push({
7452
7720
  key: groupRect.item.key,
@@ -7480,19 +7748,19 @@ function renderTreemapHeader(context, layout, header, index) {
7480
7748
  x: plot.x + header.x,
7481
7749
  y: plot.y + header.y,
7482
7750
  width: header.width,
7483
- height: HEADER_HEIGHT,
7751
+ height: layout.headerHeight,
7484
7752
  rx: layout.cellRadius,
7485
7753
  style: { fill: { kind: "solid", color: fill2 } }
7486
7754
  };
7487
7755
  const smallFontSize = Math.max(8, Math.max(9, chart.fontSize ?? 12) - 1);
7488
7756
  const label = {
7489
- ...chunkYM3XFBI4_cjs.chartText({
7757
+ ...chunkCXL254BT_cjs.chartText({
7490
7758
  id: `chart-treemap-header-label-${chart.id}-${index}`,
7491
7759
  order: nextOrder(),
7492
7760
  bounds,
7493
7761
  frame: {
7494
7762
  x: plot.x + header.x,
7495
- y: plot.y + header.y + (HEADER_HEIGHT - smallFontSize) / 2,
7763
+ y: plot.y + header.y + (layout.headerHeight - smallFontSize) / 2,
7496
7764
  width: header.width,
7497
7765
  height: smallFontSize + 2
7498
7766
  },
@@ -7501,7 +7769,7 @@ function renderTreemapHeader(context, layout, header, index) {
7501
7769
  align: "center"
7502
7770
  }),
7503
7771
  fontSize: smallFontSize,
7504
- color: chunkYM3XFBI4_cjs.contrastTextColor(fill2)
7772
+ color: chunkCXL254BT_cjs.contrastTextColor(fill2)
7505
7773
  };
7506
7774
  return [background, label];
7507
7775
  }
@@ -7517,7 +7785,7 @@ function renderTile(context, layout, tile, nextTile) {
7517
7785
  function createTileNode(context, layout, tile, color2, nextColor) {
7518
7786
  const { chart, plot, bounds, diagnostics, nextOrder } = context;
7519
7787
  const gap = layout.cellGap;
7520
- const shadow = chunkYM3XFBI4_cjs.resolveChartShadow(chart.shadowStyle);
7788
+ const shadow = chunkCXL254BT_cjs.resolveChartShadow(chart.shadowStyle);
7521
7789
  const clipPath = shadow ? `M ${plot.x} ${plot.y} H ${plot.x + plot.width} V ${plot.y + plot.height} H ${plot.x} Z` : void 0;
7522
7790
  const tileX = plot.x + tile.x + gap / 2;
7523
7791
  const tileY = plot.y + tile.y + gap / 2;
@@ -7534,10 +7802,10 @@ function createTileNode(context, layout, tile, color2, nextColor) {
7534
7802
  kind: "linear-gradient",
7535
7803
  angle: 0,
7536
7804
  stops: [
7537
- { offset: 0, color: chunkYM3XFBI4_cjs.representativeColor(color2, fallback) },
7538
- { offset: 100, color: chunkYM3XFBI4_cjs.representativeColor(nextColor, fallback) }
7805
+ { offset: 0, color: chunkCXL254BT_cjs.representativeColor(color2, fallback) },
7806
+ { offset: 100, color: chunkCXL254BT_cjs.representativeColor(nextColor, fallback) }
7539
7807
  ]
7540
- } : chunkYM3XFBI4_cjs.paint(color2, diagnostics, chart.id);
7808
+ } : chunkCXL254BT_cjs.paint(color2, diagnostics, chart.id);
7541
7809
  return {
7542
7810
  type: "rect",
7543
7811
  id: `chart-treemap-tile-${chart.id}-${tile.item.leaf.id}`,
@@ -7550,8 +7818,8 @@ function createTileNode(context, layout, tile, color2, nextColor) {
7550
7818
  rx: layout.cellRadius,
7551
7819
  style: {
7552
7820
  fill: fill2,
7553
- stroke: { kind: "solid", color: chart.gridColor ?? "#e2e8f0" },
7554
- strokeWidth: chunkYM3XFBI4_cjs.finite(chart.gridWidth, 1),
7821
+ stroke: { kind: "solid", color: chart.config?.tileStrokeColor ?? chart.gridColor ?? "#e2e8f0" },
7822
+ strokeWidth: chunkCXL254BT_cjs.finite(chart.config?.tileStrokeWidth, chunkCXL254BT_cjs.finite(chart.gridWidth, 1)),
7555
7823
  shadow,
7556
7824
  clip: clipPath ? { type: "path", d: clipPath } : void 0
7557
7825
  }
@@ -7561,15 +7829,17 @@ function createTileLabel(context, layout, tile, color2) {
7561
7829
  const { chart, plot, bounds, nextOrder } = context;
7562
7830
  const { leaf, value } = tile.item;
7563
7831
  const gap = layout.cellGap;
7564
- const width = Math.max(1, tile.width - gap - 8);
7565
- const height = Math.max(1, tile.height - gap - 6);
7566
- const x = plot.x + tile.x + gap / 2 + 4;
7567
- const y = plot.y + tile.y + gap / 2 + 3;
7568
- const textColor = chunkYM3XFBI4_cjs.contrastTextColor(chunkYM3XFBI4_cjs.representativeColor(color2, "#ffffff"));
7569
- const labelLines = chunkYM3XFBI4_cjs.wrapText(leaf.label, width, layout.smallFontSize);
7570
- const lineHeight = layout.smallFontSize * 1.2;
7832
+ const pad = layout.labelPadding;
7833
+ const width = Math.max(1, tile.width - gap - pad * 2);
7834
+ const height = Math.max(1, tile.height - gap - pad * 1.5);
7835
+ const x = plot.x + tile.x + gap / 2 + pad;
7836
+ const y = plot.y + tile.y + gap / 2 + pad * 0.75;
7837
+ const textColor = chart.config?.tileTextColor ?? chunkCXL254BT_cjs.contrastTextColor(chunkCXL254BT_cjs.representativeColor(color2, "#ffffff"));
7838
+ const lineHeight = layout.labelSize * 1.2;
7839
+ const maxLines = Math.max(1, Math.floor(height / lineHeight));
7840
+ const labelLines = chunkCXL254BT_cjs.wrapText(leaf.label, width, layout.labelSize).slice(0, maxLines).map((line) => chunkCXL254BT_cjs.ellipsizeToWidth(line, width, layout.labelSize, true));
7571
7841
  const label = {
7572
- ...chunkYM3XFBI4_cjs.chartText({
7842
+ ...chunkCXL254BT_cjs.chartText({
7573
7843
  id: `chart-treemap-label-${chart.id}-${leaf.id}`,
7574
7844
  order: nextOrder(),
7575
7845
  bounds,
@@ -7578,12 +7848,17 @@ function createTileLabel(context, layout, tile, color2) {
7578
7848
  chart
7579
7849
  }),
7580
7850
  lines: labelLines,
7581
- fontSize: layout.smallFontSize,
7851
+ fontSize: layout.labelSize,
7582
7852
  fontWeight: "bold",
7583
7853
  color: textColor
7584
7854
  };
7855
+ const valueText = String(value);
7856
+ const valueFits = labelLines.length * lineHeight + layout.valueSize * 1.2 <= height + 2 && chunkCXL254BT_cjs.estimateTextWidth(valueText, layout.valueSize, false) <= width;
7857
+ if (chart.config?.showTileValues === false || !valueFits) {
7858
+ return [label];
7859
+ }
7585
7860
  const valueNode = {
7586
- ...chunkYM3XFBI4_cjs.chartText({
7861
+ ...chunkCXL254BT_cjs.chartText({
7587
7862
  id: `chart-treemap-value-${chart.id}-${leaf.id}`,
7588
7863
  order: nextOrder(),
7589
7864
  bounds,
@@ -7597,7 +7872,7 @@ function createTileLabel(context, layout, tile, color2) {
7597
7872
  chart
7598
7873
  }),
7599
7874
  lines: [String(value)],
7600
- fontSize: layout.smallFontSize,
7875
+ fontSize: layout.valueSize,
7601
7876
  color: textColor
7602
7877
  };
7603
7878
  return [label, valueNode];
@@ -7660,7 +7935,7 @@ function buildCartesianChart(foundation) {
7660
7935
 
7661
7936
  // src/renderScene/charts/chartFrame.ts
7662
7937
  function scaleDetail(chart, plot) {
7663
- const horizontal = chunkYM3XFBI4_cjs.isHorizontalBar(chart);
7938
+ const horizontal = chunkCXL254BT_cjs.isHorizontalBar(chart);
7664
7939
  const range = horizontal ? `${plot.x},${plot.width}` : `${plot.y},${plot.height}`;
7665
7940
  return {
7666
7941
  of: "chartScale",
@@ -7668,7 +7943,7 @@ function scaleDetail(chart, plot) {
7668
7943
  };
7669
7944
  }
7670
7945
  function pieDetail(chart, plot) {
7671
- const { outerRadius, innerRadius, cornerRadius } = chunkYM3XFBI4_cjs.resolvePieRadii(
7946
+ const { outerRadius, innerRadius, cornerRadius } = chunkCXL254BT_cjs.resolvePieRadii(
7672
7947
  plot.width,
7673
7948
  plot.height,
7674
7949
  chart.config?.innerRadius,
@@ -7681,8 +7956,8 @@ function pieDetail(chart, plot) {
7681
7956
  }
7682
7957
  function polarAreaDetail(chart, plot) {
7683
7958
  const maxRadius = Math.max(1, Math.min(plot.width, plot.height) / 2 - 4);
7684
- const innerRadius = Math.max(0, Math.min(chunkYM3XFBI4_cjs.finite(chart.config?.innerRadius, 0), maxRadius - 1));
7685
- const cornerRadius = Math.max(0, chunkYM3XFBI4_cjs.finite(chart.config?.pieCornerRadius, 0));
7959
+ const innerRadius = Math.max(0, Math.min(chunkCXL254BT_cjs.finite(chart.config?.innerRadius, 0), maxRadius - 1));
7960
+ const cornerRadius = Math.max(0, chunkCXL254BT_cjs.finite(chart.config?.pieCornerRadius, 0));
7686
7961
  return {
7687
7962
  of: "pieGeometry",
7688
7963
  pieGeometry: `${plot.x + plot.width / 2},${plot.y + plot.height / 2},${maxRadius},${innerRadius},${cornerRadius}`
@@ -7691,14 +7966,15 @@ function polarAreaDetail(chart, plot) {
7691
7966
  function radarDetail(chart, plot) {
7692
7967
  const configuredCount = (chart.config?.categories?.filter(Boolean) ?? []).length;
7693
7968
  const dataCount = Math.max(0, ...chart.series.map((series) => series.values.length));
7694
- const count = chunkYM3XFBI4_cjs.radarCategoryCount(configuredCount, dataCount);
7695
- const radius = chunkYM3XFBI4_cjs.radarRadius(plot.width, plot.height, chunkYM3XFBI4_cjs.finite(chart.fontSize, 12), chart.showAxisLabels !== false);
7969
+ const count = chunkCXL254BT_cjs.radarCategoryCount(configuredCount, dataCount);
7970
+ const radius = chunkCXL254BT_cjs.radarRadius(plot.width, plot.height, chunkCXL254BT_cjs.finite(chart.fontSize, 12), chart.showAxisLabels !== false);
7696
7971
  const centerX = plot.x + plot.width / 2;
7697
7972
  const centerY = plot.y + plot.height / 2;
7698
7973
  const curved = chart.chartType === "radial" ? 1 : 0;
7974
+ const tension = chart.config?.radarTension;
7699
7975
  return {
7700
7976
  of: "radarGeometry",
7701
- radarGeometry: `${centerX},${centerY},${radius},${chart.axisY.min},${chart.axisY.max},${count},${curved}`
7977
+ radarGeometry: `${centerX},${centerY},${radius},${chart.axisY.min},${chart.axisY.max},${count},${curved}${tension === void 0 ? "" : `,${tension}`}`
7702
7978
  };
7703
7979
  }
7704
7980
  function frameDetail(chart, plot) {
@@ -7725,9 +8001,9 @@ function buildChartFrame(chart, bounds, plot, order) {
7725
8001
  height: chart.height,
7726
8002
  rx: chart.cornerRadius ?? 12,
7727
8003
  style: {
7728
- fill: chunkYM3XFBI4_cjs.paint(chart.fillColor ?? "#ffffff", [], chart.id),
8004
+ fill: chunkCXL254BT_cjs.paint(chart.fillColor ?? "#ffffff", [], chart.id),
7729
8005
  stroke: { kind: "solid", color: chart.strokeColor ?? "#475569" },
7730
- strokeWidth: chunkYM3XFBI4_cjs.finite(chart.strokeWidth, 1)
8006
+ strokeWidth: chunkCXL254BT_cjs.finite(chart.strokeWidth, 1)
7731
8007
  }
7732
8008
  };
7733
8009
  const detail = frameDetail(chart, plot);
@@ -7787,7 +8063,7 @@ function buildChartTitle(chart, bounds, plot, renderOrder) {
7787
8063
  }
7788
8064
  return [
7789
8065
  {
7790
- ...chunkYM3XFBI4_cjs.chartText({
8066
+ ...chunkCXL254BT_cjs.chartText({
7791
8067
  id: `chart-title-${chart.id}`,
7792
8068
  order: renderOrder.next(),
7793
8069
  bounds,
@@ -7797,8 +8073,8 @@ function buildChartTitle(chart, bounds, plot, renderOrder) {
7797
8073
  }),
7798
8074
  ...chart.titleColor ? { color: chart.titleColor } : {},
7799
8075
  fontWeight: chart.titleWeight ?? "bold",
7800
- fontSize: chunkYM3XFBI4_cjs.finite(chart.titleSize, Math.max(10, chunkYM3XFBI4_cjs.finite(chart.fontSize, 12)) + 2),
7801
- prop: chunkYM3XFBI4_cjs.CHART_TITLE_PROP
8076
+ fontSize: chunkCXL254BT_cjs.finite(chart.titleSize, Math.max(10, chunkCXL254BT_cjs.finite(chart.fontSize, 12)) + 2),
8077
+ prop: chunkCXL254BT_cjs.CHART_TITLE_PROP
7802
8078
  }
7803
8079
  ];
7804
8080
  }
@@ -7851,14 +8127,14 @@ function buildChart(chart, index, diagnostics) {
7851
8127
  // src/renderScene/charts/artifacts.ts
7852
8128
  function buildCharts(charts, diagnostics) {
7853
8129
  return charts.flatMap(
7854
- (chart, index) => chunkYM3XFBI4_cjs.tag(buildChart(chart, index, diagnostics), "chart", chart.id, chart.chartType, chart.title ?? "Chart")
8130
+ (chart, index) => chunkCXL254BT_cjs.tag(buildChart(chart, index, diagnostics), "chart", chart.id, chart.chartType, chart.title ?? "Chart")
7855
8131
  );
7856
8132
  }
7857
8133
 
7858
8134
  // src/renderScene/scene/build.ts
7859
8135
  function sceneBounds(nodes) {
7860
8136
  if (!nodes.length) {
7861
- return chunkYM3XFBI4_cjs.EMPTY_BOUNDS;
8137
+ return chunkCXL254BT_cjs.EMPTY_BOUNDS;
7862
8138
  }
7863
8139
  return {
7864
8140
  minX: Math.min(...nodes.map((n) => n.bounds.minX)),
@@ -7872,8 +8148,8 @@ function stackingOf(input) {
7872
8148
  const add = (role, objects, legacyBase) => {
7873
8149
  objects.forEach((object, index) => {
7874
8150
  stacking.set(`${role}:${object.id}`, {
7875
- rank: chunkYM3XFBI4_cjs.stackRank(object),
7876
- sequence: chunkYM3XFBI4_cjs.stackSequence(object, legacyBase + index)
8151
+ rank: chunkCXL254BT_cjs.stackRank(object),
8152
+ sequence: chunkCXL254BT_cjs.stackSequence(object, legacyBase + index)
7877
8153
  });
7878
8154
  });
7879
8155
  };
@@ -8340,31 +8616,31 @@ function chartSeriesAttrs(detail) {
8340
8616
  ];
8341
8617
  }
8342
8618
  function frameBoundaryAttrs(detail) {
8343
- return [`${chunkYM3XFBI4_cjs.CORNER_RADIUS_ATTR}="${num(detail.cornerRadius)}"`, `${chunkYM3XFBI4_cjs.SQUARE_CORNER_ATTR}="${detail.squareCorner}"`];
8619
+ return [`${chunkCXL254BT_cjs.CORNER_RADIUS_ATTR}="${num(detail.cornerRadius)}"`, `${chunkCXL254BT_cjs.SQUARE_CORNER_ATTR}="${detail.squareCorner}"`];
8344
8620
  }
8345
8621
  function declaredBoundsAttr(bounds) {
8346
- return `${chunkYM3XFBI4_cjs.SYMBOL_BOUNDS_ATTR}="${num(bounds.x)},${num(bounds.y)},${num(bounds.width)},${num(bounds.height)}"`;
8622
+ return `${chunkCXL254BT_cjs.SYMBOL_BOUNDS_ATTR}="${num(bounds.x)},${num(bounds.y)},${num(bounds.width)},${num(bounds.height)}"`;
8347
8623
  }
8348
8624
  function symbolGeometryAttrs(detail) {
8349
8625
  return [
8350
- `${chunkYM3XFBI4_cjs.SYMBOL_POINTS_ATTR}="${xml(JSON.stringify(detail.points))}"`,
8351
- `${chunkYM3XFBI4_cjs.SYMBOL_TENSION_ATTR}="${num(detail.tension)}"`,
8626
+ `${chunkCXL254BT_cjs.SYMBOL_POINTS_ATTR}="${xml(JSON.stringify(detail.points))}"`,
8627
+ `${chunkCXL254BT_cjs.SYMBOL_TENSION_ATTR}="${num(detail.tension)}"`,
8352
8628
  declaredBoundsAttr(detail.declaredBounds)
8353
8629
  ];
8354
8630
  }
8355
8631
  function pathGeometryAttrs(detail) {
8356
8632
  return [
8357
- `${chunkYM3XFBI4_cjs.PATH_POINTS_ATTR}="${xml(JSON.stringify(detail.points))}"`,
8358
- `${chunkYM3XFBI4_cjs.PATH_TENSION_ATTR}="${num(detail.tension)}"`,
8359
- `${chunkYM3XFBI4_cjs.PATH_CLOSED_ATTR}="${detail.closed}"`
8633
+ `${chunkCXL254BT_cjs.PATH_POINTS_ATTR}="${xml(JSON.stringify(detail.points))}"`,
8634
+ `${chunkCXL254BT_cjs.PATH_TENSION_ATTR}="${num(detail.tension)}"`,
8635
+ `${chunkCXL254BT_cjs.PATH_CLOSED_ATTR}="${detail.closed}"`
8360
8636
  ];
8361
8637
  }
8362
8638
  function isometricGeometryAttrs(detail) {
8363
8639
  return [
8364
- `${chunkYM3XFBI4_cjs.ISOMETRIC_SIZE_ATTR}="${num(detail.width)},${num(detail.height)},${num(detail.depth)}"`,
8365
- `${chunkYM3XFBI4_cjs.CORNER_RADIUS_ATTR}="${num(detail.cornerRadius)}"`,
8640
+ `${chunkCXL254BT_cjs.ISOMETRIC_SIZE_ATTR}="${num(detail.width)},${num(detail.height)},${num(detail.depth)}"`,
8641
+ `${chunkCXL254BT_cjs.CORNER_RADIUS_ATTR}="${num(detail.cornerRadius)}"`,
8366
8642
  declaredBoundsAttr(detail.bounds),
8367
- `${chunkYM3XFBI4_cjs.ISOMETRIC_LABEL_OFFSET_ATTR}="${num(detail.labelOffsetX)},${num(detail.labelOffsetY)}"`
8643
+ `${chunkCXL254BT_cjs.ISOMETRIC_LABEL_OFFSET_ATTR}="${num(detail.labelOffsetX)},${num(detail.labelOffsetY)}"`
8368
8644
  ];
8369
8645
  }
8370
8646
  function linkDetailAttrs(detail) {
@@ -8460,7 +8736,7 @@ function shaderSurfaceSvg(node, defs) {
8460
8736
  const rotation = transform(node.rotation, { x: node.x + node.width / 2, y: node.y + node.height / 2 });
8461
8737
  const parameters = xml(JSON.stringify(node.shader.parameters));
8462
8738
  const fillColor = node.fillColor ? ` data-sf-shader-fill="${xml(node.fillColor)}"` : "";
8463
- return `<foreignObject id="${defs.elementId(node.id)}"${contractAttrs(node)} data-sf-shader="${xml(node.shader.program)}" data-sf-shader-name="${xml(node.shader.name)}" data-sf-shader-params="${parameters}" data-sf-shader-mask="${node.mask}"${fillColor} x="${num(node.x)}" y="${num(node.y)}" width="${num(node.width)}" height="${num(node.height)}"${rotation} pointer-events="${node.shader.program === "ruler" ? "all" : "none"}"><canvas xmlns="http://www.w3.org/1999/xhtml" data-sf-shader-canvas="true" style="display:block;width:100%;height:100%;pointer-events:none"></canvas></foreignObject>`;
8739
+ return `<foreignObject id="${defs.elementId(node.id)}"${contractAttrs(node)} data-sf-shader="${xml(node.shader.program)}" data-sf-shader-name="${xml(node.shader.name)}" data-sf-shader-params="${parameters}" data-sf-shader-mask="${node.mask}"${fillColor} x="${num(node.x)}" y="${num(node.y)}" width="${num(node.width)}" height="${num(node.height)}"${rotation} pointer-events="${node.shader.program === "ruler" || node.identity?.role === "widget" ? "all" : "none"}"><canvas xmlns="http://www.w3.org/1999/xhtml" data-sf-shader-canvas="true" style="display:block;width:100%;height:100%;pointer-events:none"></canvas></foreignObject>`;
8464
8740
  }
8465
8741
  function rollingDigitSvg(character, node) {
8466
8742
  const style = node.widgetStyle;
@@ -8471,7 +8747,7 @@ function rollingDigitSvg(character, node) {
8471
8747
  }
8472
8748
  function rollingNumberSvg(node, defs) {
8473
8749
  const rotation = transform(node.rotation, { x: node.x + node.width / 2, y: node.y + node.height / 2 });
8474
- const fontSize = Math.max(1, Math.min(node.width, node.height) * 0.28);
8750
+ const fontSize = node.widgetStyle.fontSize > 0 ? node.widgetStyle.fontSize : Math.max(1, Math.min(node.width, node.height) * 0.28);
8475
8751
  const label = node.label ? `<span xmlns="http://www.w3.org/1999/xhtml" style="margin-bottom:.14em;color:${xml(node.widgetStyle.labelColor)};font-size:.16em;font-weight:600;letter-spacing:.24em;line-height:1">${xml(node.label)}</span>` : "";
8476
8752
  const digits = [...node.value].map((character) => rollingDigitSvg(character, node)).join("");
8477
8753
  const widgetStyle = xml(JSON.stringify(node.widgetStyle));
@@ -8510,7 +8786,7 @@ function renderSvgDocument(scene, options = {}) {
8510
8786
  const nodes = options.linkHitAreas ? withLinkHitAreas(scene.nodes) : scene.nodes;
8511
8787
  const body = nodes.map((node) => nodeSvg(node, defs)).join("\n ");
8512
8788
  const declaration = options.includeXmlDeclaration === false ? "" : '<?xml version="1.0" encoding="UTF-8"?>\n';
8513
- const svg = `${declaration}<svg xmlns="http://www.w3.org/2000/svg" width="${num(width)}px" height="${num(height)}px" viewBox="${viewBox}" role="img" data-sf-contract="${chunkYM3XFBI4_cjs.DOM_CONTRACT_VERSION}">
8789
+ const svg = `${declaration}<svg xmlns="http://www.w3.org/2000/svg" width="${num(width)}px" height="${num(height)}px" viewBox="${viewBox}" role="img" data-sf-contract="${chunkCXL254BT_cjs.DOM_CONTRACT_VERSION}">
8514
8790
  <defs>${defs.entries.join("")}</defs>
8515
8791
  ${body}
8516
8792
  </svg>`;
@@ -8564,5 +8840,5 @@ exports.formatRollingNumber = formatRollingNumber;
8564
8840
  exports.render = render;
8565
8841
  exports.renderCanvas = renderCanvas;
8566
8842
  exports.sflToRenderInput = sflToRenderInput;
8567
- //# sourceMappingURL=chunk-S5BVAAEF.cjs.map
8568
- //# sourceMappingURL=chunk-S5BVAAEF.cjs.map
8843
+ //# sourceMappingURL=chunk-DDCTNLLD.cjs.map
8844
+ //# sourceMappingURL=chunk-DDCTNLLD.cjs.map