cx 24.2.0 → 24.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/charts.js CHANGED
@@ -634,43 +634,98 @@ var PieCalculator = /*#__PURE__*/ (function () {
634
634
  };
635
635
  return PieCalculator;
636
636
  })();
637
- function createSvgArc(x, y, r0, r, startAngle, endAngle) {
638
- if (startAngle > endAngle) {
639
- var s = startAngle;
640
- startAngle = endAngle;
641
- endAngle = s;
637
+ function createSvgArc(x, y, r0, r, startAngleRadian, endAngleRadian, br) {
638
+ if (r0 === void 0) {
639
+ r0 = 0;
642
640
  }
643
- var largeArc = endAngle - startAngle <= Math.PI ? 0 : 1;
644
- if (endAngle - startAngle >= 2 * Math.PI - 0.0001) endAngle = startAngle + 2 * Math.PI - 0.0001;
645
- var result = [];
646
- var startX, startY;
647
- if (r0 > 0) {
648
- startX = x + Math.cos(endAngle) * r0;
649
- startY = y - Math.sin(endAngle) * r0;
650
- result.push("M", startX, startY);
651
- result.push("A", r0, r0, 0, largeArc, 1, x + Math.cos(startAngle) * r0, y - Math.sin(startAngle) * r0);
641
+ if (br === void 0) {
642
+ br = 0;
643
+ }
644
+ if (startAngleRadian > endAngleRadian) {
645
+ var s = startAngleRadian;
646
+ startAngleRadian = endAngleRadian;
647
+ endAngleRadian = s;
648
+ }
649
+ var path = [];
650
+ // limit br size based on r and r0
651
+ if (br > (r - r0) / 2) br = (r - r0) / 2;
652
+ var largeArc = endAngleRadian - startAngleRadian > Math.PI ? 1 : 0;
653
+ if (br > 0) {
654
+ if (r0 > 0) {
655
+ var innerBr = br;
656
+ var innerSmallArcAngle = Math.asin(br / (r0 + br));
657
+ if (innerSmallArcAngle > (endAngleRadian - startAngleRadian) / 2) {
658
+ innerSmallArcAngle = (endAngleRadian - startAngleRadian) / 2;
659
+ var sin = Math.sin(innerSmallArcAngle);
660
+ // correct br according to newly calculated border radius angle
661
+ innerBr = (r0 * sin) / (1 - sin);
662
+ }
663
+ var innerHip = Math.cos(innerSmallArcAngle) * (r0 + innerBr);
664
+ var innerSmallArc1XFrom = x + Math.cos(endAngleRadian) * innerHip;
665
+ var innerSmallArc1YFrom = y - Math.sin(endAngleRadian) * innerHip;
666
+
667
+ // move from the first small inner arc
668
+ path.push(move(innerSmallArc1XFrom, innerSmallArc1YFrom));
669
+ var innerSmallArc1XTo = x + Math.cos(endAngleRadian - innerSmallArcAngle) * r0;
670
+ var innerSmallArc1YTo = y - Math.sin(endAngleRadian - innerSmallArcAngle) * r0;
671
+
672
+ // add first small inner arc
673
+ path.push(arc(innerBr, innerBr, 0, 0, 0, innerSmallArc1XTo, innerSmallArc1YTo));
674
+ var innerArcXTo = x + Math.cos(startAngleRadian + innerSmallArcAngle) * r0;
675
+ var innerArcYTo = y - Math.sin(startAngleRadian + innerSmallArcAngle) * r0;
676
+
677
+ // add large inner arc
678
+ path.push(arc(r0, r0, 0, largeArc, 1, innerArcXTo, innerArcYTo));
679
+ var innerSmallArc2XTo = x + Math.cos(startAngleRadian) * innerHip;
680
+ var innerSmallArc2YTo = y - Math.sin(startAngleRadian) * innerHip;
681
+ // add second small inner arc
682
+ path.push(arc(innerBr, innerBr, 0, 0, 0, innerSmallArc2XTo, innerSmallArc2YTo));
683
+ } else {
684
+ path.push(move(x, y));
685
+ }
686
+ var outerBr = br;
687
+ var outerSmallArcAngle = Math.asin(br / (r - br));
688
+ if (outerSmallArcAngle > (endAngleRadian - startAngleRadian) / 2) {
689
+ outerSmallArcAngle = (endAngleRadian - startAngleRadian) / 2;
690
+ var _sin = Math.sin(outerSmallArcAngle);
691
+ // correct br according to newly calculated border radius angle
692
+ outerBr = (r * _sin) / (1 + _sin);
693
+ }
694
+ var outerHip = Math.cos(outerSmallArcAngle) * (r - outerBr);
695
+ var outerSmallArc1XFrom = x + Math.cos(startAngleRadian) * outerHip;
696
+ var outerSmallArc1YFrom = y - Math.sin(startAngleRadian) * outerHip;
697
+ var outerSmallArc1XTo = x + Math.cos(startAngleRadian + outerSmallArcAngle) * r;
698
+ var outerSmallArc1YTo = y - Math.sin(startAngleRadian + outerSmallArcAngle) * r;
699
+ var outerLargeArcXTo = x + Math.cos(endAngleRadian - outerSmallArcAngle) * r;
700
+ var outerLargeArcYTo = y - Math.sin(endAngleRadian - outerSmallArcAngle) * r;
701
+ var outerSmallArc2XTo = x + Math.cos(endAngleRadian) * outerHip;
702
+ var outerSmallArc2YTo = y - Math.sin(endAngleRadian) * outerHip;
703
+ path.push(
704
+ line$1(outerSmallArc1XFrom, outerSmallArc1YFrom),
705
+ arc(outerBr, outerBr, 0, 0, 0, outerSmallArc1XTo, outerSmallArc1YTo),
706
+ arc(r, r, 0, largeArc, 0, outerLargeArcXTo, outerLargeArcYTo),
707
+ arc(outerBr, outerBr, 0, 0, 0, outerSmallArc2XTo, outerSmallArc2YTo),
708
+ );
652
709
  } else {
653
- startX = x;
654
- startY = y;
655
- result.push("M", startX, startY);
710
+ if (r0 > 0) {
711
+ var startX = x + Math.cos(endAngleRadian) * r0;
712
+ var startY = y - Math.sin(endAngleRadian) * r0;
713
+ path.push(move(startX, startY));
714
+ var innerArcToX = x + Math.cos(startAngleRadian) * r0;
715
+ var innerArcToY = y - Math.sin(startAngleRadian) * r0;
716
+ path.push(arc(r0, r0, 0, largeArc, 1, innerArcToX, innerArcToY));
717
+ } else {
718
+ path.push(move(x, y));
719
+ }
720
+ var lineToX = x + Math.cos(startAngleRadian) * r;
721
+ var lineToY = y - Math.sin(startAngleRadian) * r;
722
+ path.push(line$1(lineToX, lineToY));
723
+ var arcToX = x + Math.cos(endAngleRadian) * r;
724
+ var arcToY = y - Math.sin(endAngleRadian) * r;
725
+ path.push(arc(r, r, 0, largeArc, 0, arcToX, arcToY));
656
726
  }
657
- result.push(
658
- "L",
659
- x + Math.cos(startAngle) * r,
660
- y - Math.sin(startAngle) * r,
661
- "A",
662
- r,
663
- r,
664
- 0,
665
- largeArc,
666
- 0,
667
- x + Math.cos(endAngle) * r,
668
- y - Math.sin(endAngle) * r,
669
- "L",
670
- startX,
671
- startY,
672
- );
673
- return result.join(" ");
727
+ path.push(z());
728
+ return path.join(" ");
674
729
  }
675
730
  PieChart.prototype.anchors = "0 1 1 0";
676
731
  PieChart.prototype.angle = 360;
@@ -683,6 +738,7 @@ var PieSlice = /*#__PURE__*/ (function (_Container) {
683
738
  var _proto3 = PieSlice.prototype;
684
739
  _proto3.init = function init() {
685
740
  this.selection = Selection.create(this.selection);
741
+ if (this.borderRadius) this.br = this.borderRadius;
686
742
  _Container.prototype.init.call(this);
687
743
  };
688
744
  _proto3.declareData = function declareData() {
@@ -708,6 +764,7 @@ var PieSlice = /*#__PURE__*/ (function (_Container) {
708
764
  stack: undefined,
709
765
  legend: undefined,
710
766
  hoverId: undefined,
767
+ br: undefined,
711
768
  },
712
769
  ]),
713
770
  );
@@ -829,6 +886,7 @@ var PieSlice = /*#__PURE__*/ (function (_Container) {
829
886
  data.r * segment.radiusMultiplier,
830
887
  segment.startAngle,
831
888
  segment.endAngle,
889
+ data.br,
832
890
  );
833
891
  return /*#__PURE__*/ jsxs(
834
892
  "g",
@@ -869,6 +927,18 @@ var PieSlice = /*#__PURE__*/ (function (_Container) {
869
927
  };
870
928
  return PieSlice;
871
929
  })(Container);
930
+ function move(x, y) {
931
+ return "M " + x + " " + y;
932
+ }
933
+ function line$1(x, y) {
934
+ return "L " + x + " " + y;
935
+ }
936
+ function z() {
937
+ return "Z";
938
+ }
939
+ function arc(rx, ry, xRotation, largeArc, sweep, x, y) {
940
+ return "A " + rx + " " + ry + " " + xRotation + " " + largeArc + " " + sweep + " " + x + " " + y;
941
+ }
872
942
  PieSlice.prototype.offset = 0;
873
943
  PieSlice.prototype.r0 = 0;
874
944
  PieSlice.prototype.r = 50;