@semcore/d3-chart 1.8.0 → 2.0.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.
Files changed (179) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/lib/cjs/Area.js +9 -9
  3. package/lib/cjs/Axis.js +17 -19
  4. package/lib/cjs/Axis.js.map +1 -1
  5. package/lib/cjs/Bar.js +11 -11
  6. package/lib/cjs/Bar.js.map +1 -1
  7. package/lib/cjs/Bubble.js +13 -34
  8. package/lib/cjs/Bubble.js.map +1 -1
  9. package/lib/cjs/ClipPath.js +2 -1
  10. package/lib/cjs/ClipPath.js.map +1 -1
  11. package/lib/cjs/Donut.js +8 -8
  12. package/lib/cjs/Donut.js.map +1 -1
  13. package/lib/cjs/Dots.js +9 -9
  14. package/lib/cjs/Dots.js.map +1 -1
  15. package/lib/cjs/GroupBar.js +8 -8
  16. package/lib/cjs/GroupBar.js.map +1 -1
  17. package/lib/cjs/HorizontalBar.js +11 -11
  18. package/lib/cjs/HorizontalBar.js.map +1 -1
  19. package/lib/cjs/Hover.js +4 -4
  20. package/lib/cjs/Line.js +8 -8
  21. package/lib/cjs/Plot.js +15 -1
  22. package/lib/cjs/Plot.js.map +1 -1
  23. package/lib/cjs/RadialTree.js +694 -0
  24. package/lib/cjs/RadialTree.js.map +1 -0
  25. package/lib/cjs/ResponsiveContainer.js +1 -1
  26. package/lib/cjs/ResponsiveContainer.js.map +1 -1
  27. package/lib/cjs/ScatterPlot.js +7 -7
  28. package/lib/cjs/StackBar.js +8 -8
  29. package/lib/cjs/StackBar.js.map +1 -1
  30. package/lib/cjs/StackedArea.js +8 -8
  31. package/lib/cjs/StackedArea.js.map +1 -1
  32. package/lib/cjs/Tooltip.js +11 -15
  33. package/lib/cjs/Tooltip.js.map +1 -1
  34. package/lib/cjs/Venn.js +9 -9
  35. package/lib/cjs/Venn.js.map +1 -1
  36. package/lib/cjs/color.js +122 -30
  37. package/lib/cjs/color.js.map +1 -1
  38. package/lib/cjs/createElement.js +3 -2
  39. package/lib/cjs/createElement.js.map +1 -1
  40. package/lib/cjs/index.js +8 -0
  41. package/lib/cjs/index.js.map +1 -1
  42. package/lib/cjs/style/area.shadow.css +4 -4
  43. package/lib/cjs/style/axis.shadow.css +4 -4
  44. package/lib/cjs/style/bar.shadow.css +2 -2
  45. package/lib/cjs/style/bubble.shadow.css +3 -3
  46. package/lib/cjs/style/donut.shadow.css +2 -2
  47. package/lib/cjs/style/dot.shadow.css +1 -1
  48. package/lib/cjs/style/hover.shadow.css +2 -2
  49. package/lib/cjs/style/line.shadow.css +2 -2
  50. package/lib/cjs/style/plot.shadow.css +6 -0
  51. package/lib/cjs/style/radial-tree.shadow.css +34 -0
  52. package/lib/cjs/style/scatterplot.shadow.css +2 -2
  53. package/lib/cjs/style/tooltip.shadow.css +5 -5
  54. package/lib/cjs/style/var.css +123 -30
  55. package/lib/cjs/style/venn.shadow.css +1 -1
  56. package/lib/cjs/types/Area.d.ts +47 -0
  57. package/lib/cjs/types/Axis.d.ts +64 -0
  58. package/lib/cjs/types/Bar.d.ts +48 -0
  59. package/lib/cjs/types/Bubble.d.ts +27 -0
  60. package/lib/cjs/types/ClipPath.d.ts +26 -0
  61. package/lib/cjs/types/Donut.d.ts +42 -0
  62. package/lib/cjs/types/GroupBar.d.ts +20 -0
  63. package/lib/cjs/types/HorizontalBar.d.ts +29 -0
  64. package/lib/cjs/types/Hover.d.ts +15 -0
  65. package/lib/cjs/types/Line.d.ts +50 -0
  66. package/lib/cjs/types/Plot.d.ts +16 -0
  67. package/lib/cjs/types/ResponsiveContainer.d.ts +20 -0
  68. package/lib/cjs/types/ScatterPlot.d.ts +27 -0
  69. package/lib/cjs/types/StackBar.d.ts +26 -0
  70. package/lib/cjs/types/StackedArea.d.ts +26 -0
  71. package/lib/cjs/types/Tooltip.d.ts +31 -0
  72. package/lib/cjs/types/Venn.d.ts +45 -0
  73. package/lib/cjs/types/context.d.ts +6 -0
  74. package/lib/cjs/types/index.d.ts +53 -0
  75. package/lib/cjs/utils.js +120 -55
  76. package/lib/cjs/utils.js.map +1 -1
  77. package/lib/es6/Area.js +9 -9
  78. package/lib/es6/Axis.js +17 -19
  79. package/lib/es6/Axis.js.map +1 -1
  80. package/lib/es6/Bar.js +11 -11
  81. package/lib/es6/Bar.js.map +1 -1
  82. package/lib/es6/Bubble.js +13 -34
  83. package/lib/es6/Bubble.js.map +1 -1
  84. package/lib/es6/ClipPath.js +2 -1
  85. package/lib/es6/ClipPath.js.map +1 -1
  86. package/lib/es6/Donut.js +8 -8
  87. package/lib/es6/Donut.js.map +1 -1
  88. package/lib/es6/Dots.js +9 -9
  89. package/lib/es6/Dots.js.map +1 -1
  90. package/lib/es6/GroupBar.js +8 -8
  91. package/lib/es6/GroupBar.js.map +1 -1
  92. package/lib/es6/HorizontalBar.js +11 -11
  93. package/lib/es6/HorizontalBar.js.map +1 -1
  94. package/lib/es6/Hover.js +4 -4
  95. package/lib/es6/Line.js +8 -8
  96. package/lib/es6/Plot.js +17 -1
  97. package/lib/es6/Plot.js.map +1 -1
  98. package/lib/es6/RadialTree.js +682 -0
  99. package/lib/es6/RadialTree.js.map +1 -0
  100. package/lib/es6/ResponsiveContainer.js +1 -1
  101. package/lib/es6/ResponsiveContainer.js.map +1 -1
  102. package/lib/es6/ScatterPlot.js +7 -7
  103. package/lib/es6/StackBar.js +8 -8
  104. package/lib/es6/StackBar.js.map +1 -1
  105. package/lib/es6/StackedArea.js +8 -8
  106. package/lib/es6/StackedArea.js.map +1 -1
  107. package/lib/es6/Tooltip.js +11 -15
  108. package/lib/es6/Tooltip.js.map +1 -1
  109. package/lib/es6/Venn.js +9 -9
  110. package/lib/es6/Venn.js.map +1 -1
  111. package/lib/es6/color.js +122 -30
  112. package/lib/es6/color.js.map +1 -1
  113. package/lib/es6/createElement.js +3 -2
  114. package/lib/es6/createElement.js.map +1 -1
  115. package/lib/es6/index.js +1 -0
  116. package/lib/es6/index.js.map +1 -1
  117. package/lib/es6/style/area.shadow.css +4 -4
  118. package/lib/es6/style/axis.shadow.css +4 -4
  119. package/lib/es6/style/bar.shadow.css +2 -2
  120. package/lib/es6/style/bubble.shadow.css +3 -3
  121. package/lib/es6/style/donut.shadow.css +2 -2
  122. package/lib/es6/style/dot.shadow.css +1 -1
  123. package/lib/es6/style/hover.shadow.css +2 -2
  124. package/lib/es6/style/line.shadow.css +2 -2
  125. package/lib/es6/style/plot.shadow.css +6 -0
  126. package/lib/es6/style/radial-tree.shadow.css +34 -0
  127. package/lib/es6/style/scatterplot.shadow.css +2 -2
  128. package/lib/es6/style/tooltip.shadow.css +5 -5
  129. package/lib/es6/style/var.css +123 -30
  130. package/lib/es6/style/venn.shadow.css +1 -1
  131. package/lib/es6/types/Area.d.ts +47 -0
  132. package/lib/es6/types/Axis.d.ts +64 -0
  133. package/lib/es6/types/Bar.d.ts +48 -0
  134. package/lib/es6/types/Bubble.d.ts +27 -0
  135. package/lib/es6/types/ClipPath.d.ts +26 -0
  136. package/lib/es6/types/Donut.d.ts +42 -0
  137. package/lib/es6/types/GroupBar.d.ts +20 -0
  138. package/lib/es6/types/HorizontalBar.d.ts +29 -0
  139. package/lib/es6/types/Hover.d.ts +15 -0
  140. package/lib/es6/types/Line.d.ts +50 -0
  141. package/lib/es6/types/Plot.d.ts +16 -0
  142. package/lib/es6/types/ResponsiveContainer.d.ts +20 -0
  143. package/lib/es6/types/ScatterPlot.d.ts +27 -0
  144. package/lib/es6/types/StackBar.d.ts +26 -0
  145. package/lib/es6/types/StackedArea.d.ts +26 -0
  146. package/lib/es6/types/Tooltip.d.ts +31 -0
  147. package/lib/es6/types/Venn.d.ts +45 -0
  148. package/lib/es6/types/context.d.ts +6 -0
  149. package/lib/es6/types/index.d.ts +53 -0
  150. package/lib/es6/utils.js +95 -44
  151. package/lib/es6/utils.js.map +1 -1
  152. package/lib/types/RadialTree.d.ts +202 -0
  153. package/lib/types/index.d.ts +6 -0
  154. package/lib/types/utils.d.ts +27 -0
  155. package/package.json +22 -10
  156. package/src/Bubble.jsx +1 -21
  157. package/src/ClipPath.jsx +1 -0
  158. package/src/Donut.jsx +7 -9
  159. package/src/Plot.jsx +2 -0
  160. package/src/RadialTree.tsx +767 -0
  161. package/src/createElement.jsx +3 -1
  162. package/src/index.js +1 -0
  163. package/src/style/area.shadow.css +4 -4
  164. package/src/style/axis.shadow.css +4 -4
  165. package/src/style/bar.shadow.css +2 -2
  166. package/src/style/bubble.shadow.css +3 -3
  167. package/src/style/donut.shadow.css +2 -2
  168. package/src/style/dot.shadow.css +1 -1
  169. package/src/style/hover.shadow.css +2 -2
  170. package/src/style/line.shadow.css +2 -2
  171. package/src/style/plot.shadow.css +6 -0
  172. package/src/style/radial-tree.shadow.css +34 -0
  173. package/src/style/scatterplot.shadow.css +2 -2
  174. package/src/style/tooltip.shadow.css +5 -5
  175. package/src/style/var.css +123 -30
  176. package/src/style/venn.shadow.css +1 -1
  177. package/src/types/index.d.ts +6 -0
  178. package/src/utils.ts +227 -0
  179. package/src/utils.js +0 -147
@@ -9,11 +9,13 @@ import hoistNonReactStatics from 'hoist-non-react-statics';
9
9
 
10
10
  function createElementRender() {
11
11
  const Element = React.forwardRef(function (
12
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
12
13
  { render, tag, childrenPosition = 'below', x: xS, y: yS, ...source },
13
14
  ref,
14
15
  ) {
15
16
  const {
16
17
  forwardRef = null,
18
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
17
19
  children: _children,
18
20
  Children,
19
21
  x = xS,
@@ -50,7 +52,7 @@ function createElementRender() {
50
52
  }
51
53
 
52
54
  if (!Tag) {
53
- throw new Error('В Element нужно передать render');
55
+ throw new Error('Element expected render prop to be passed');
54
56
  }
55
57
  return [
56
58
  <React.Fragment key="child-above">
package/src/index.js CHANGED
@@ -12,6 +12,7 @@ export { default as Area } from './Area';
12
12
  export { default as StackedArea } from './StackedArea';
13
13
  export { default as ScatterPlot } from './ScatterPlot';
14
14
  export { default as Bubble } from './Bubble';
15
+ export { default as RadialTree } from './RadialTree';
15
16
  export { default as Donut } from './Donut';
16
17
  export { default as Venn } from './Venn';
17
18
 
@@ -1,8 +1,8 @@
1
1
  @import '@semcore/d3-chart/src/style/var.css';
2
2
 
3
3
  SArea {
4
- fill: var(--blue-01);
5
- fill-opacity: 0.4;
4
+ fill: var(--blue-03);
5
+ fill-opacity: 0.2;
6
6
  }
7
7
 
8
8
  SArea[color] {
@@ -10,7 +10,7 @@ SArea[color] {
10
10
  }
11
11
 
12
12
  SAreaLine {
13
- stroke: var(--blue-01);
13
+ stroke: var(--blue-03);
14
14
  stroke-width: 3;
15
15
  fill: transparent;
16
16
  }
@@ -28,7 +28,7 @@ SAreaLine {
28
28
 
29
29
  SNull {
30
30
  fill: transparent;
31
- stroke: #bdc4c6;
31
+ stroke: var(--gray-400);
32
32
  stroke-dasharray: 4;
33
33
  }
34
34
 
@@ -1,7 +1,7 @@
1
1
  @import '@semcore/utils/style/var.css';
2
2
 
3
3
  SAxis {
4
- stroke: var(--stone);
4
+ stroke: var(--gray-200);
5
5
  }
6
6
 
7
7
  SAxis[hide] {
@@ -10,7 +10,7 @@ SAxis[hide] {
10
10
 
11
11
  STick {
12
12
  font-size: 12px;
13
- fill: var(--gray60);
13
+ fill: var(--gray-500);
14
14
  }
15
15
 
16
16
  STick[hide] {
@@ -19,12 +19,12 @@ STick[hide] {
19
19
 
20
20
  SGrid {
21
21
  fill: transparent;
22
- stroke: var(--mercury);
22
+ stroke: var(--gray-100);
23
23
  }
24
24
 
25
25
  STitle {
26
26
  font-size: 12px;
27
- fill: var(--gray60);
27
+ fill: var(--gray-500);
28
28
  transform-origin: var(--transform-origin);
29
29
  }
30
30
 
@@ -2,7 +2,7 @@
2
2
  @import '@semcore/d3-chart/src/style/var.css';
3
3
 
4
4
  SBar {
5
- fill: var(--blue-01);
5
+ fill: var(--blue-03);
6
6
  transition-property: height, width, y;
7
7
  transition-duration: var(--duration);
8
8
  transition-timing-function: ease-in-out;
@@ -17,5 +17,5 @@ SBar[hide] {
17
17
  }
18
18
 
19
19
  SBackground {
20
- fill: var(--mystic);
20
+ fill: var(--gray-200);
21
21
  }
@@ -2,7 +2,7 @@
2
2
  @import '@semcore/d3-chart/src/style/var.css';
3
3
 
4
4
  SBubble {
5
- fill: #2bb3ff;
5
+ fill: var(--blue-03);
6
6
  stroke: #fff;
7
7
  stroke-width: 2px;
8
8
  transition-property: cx, cy;
@@ -21,7 +21,7 @@ SBubble[color] {
21
21
  SCenter {
22
22
  text-anchor: middle;
23
23
  font-size: 11px;
24
- stroke: #2bb3ff;
24
+ stroke: var(--blue-03);
25
25
  }
26
26
 
27
27
  SCenter[color] {
@@ -29,7 +29,7 @@ SCenter[color] {
29
29
  }
30
30
 
31
31
  SLabel {
32
- fill: #2bb3ff;
32
+ fill: var(--blue-03);
33
33
  }
34
34
 
35
35
  SLabel[position='right'] {
@@ -3,7 +3,7 @@
3
3
 
4
4
  SPie {
5
5
  stroke: #ffffff;
6
- fill: var(--blue-01);
6
+ fill: var(--blue-03);
7
7
  }
8
8
 
9
9
  SPie[color] {
@@ -11,7 +11,7 @@ SPie[color] {
11
11
  }
12
12
 
13
13
  SEmptyData {
14
- fill: var(--mystic);
14
+ fill: var(--gray-100);
15
15
  }
16
16
 
17
17
  SEmptyData[color] {
@@ -5,7 +5,7 @@ SDot {
5
5
  stroke-width: 2px;
6
6
  stroke: #fff;
7
7
  r: 6px;
8
- fill: var(--blue-01);
8
+ fill: var(--blue-03);
9
9
  transition-property: cx, cy;
10
10
  transition-duration: var(--duration);
11
11
  transition-timing-function: ease-in-out;
@@ -1,9 +1,9 @@
1
1
  @import '@semcore/utils/style/var.css';
2
2
 
3
3
  SHoverLine {
4
- stroke: var(--stone);
4
+ stroke: var(--gray-300);
5
5
  }
6
6
 
7
7
  SHoverRect {
8
- fill: color-mod(var(--mist) a(30%));
8
+ fill: color-mod(var(--gray-200) a(30%));
9
9
  }
@@ -4,7 +4,7 @@
4
4
  SLine {
5
5
  fill: transparent;
6
6
  stroke-width: 3;
7
- stroke: var(--blue-01);
7
+ stroke: var(--blue-03);
8
8
  transition-property: d;
9
9
  transition-duration: var(--duration);
10
10
  transition-timing-function: ease-in-out;
@@ -20,7 +20,7 @@ SLine[hide] {
20
20
 
21
21
  SNull {
22
22
  fill: transparent;
23
- stroke: var(--mist);
23
+ stroke: var(--gray-200);
24
24
  stroke-dasharray: 4;
25
25
  }
26
26
 
@@ -0,0 +1,6 @@
1
+ @import '@semcore/utils/style/var.css';
2
+ @import '@semcore/d3-chart/src/style/var.css';
3
+
4
+ SPlot {
5
+ overflow: hidden;
6
+ }
@@ -0,0 +1,34 @@
1
+ @import '@semcore/utils/style/var.css';
2
+ @import '@semcore/d3-chart/src/style/var.css';
3
+
4
+ SRadian {
5
+ cursor: pointer;
6
+ fill: var(--blue-04);
7
+ }
8
+
9
+ SLine {
10
+ stroke: var(--blue-04);
11
+ }
12
+
13
+ SLine[color] {
14
+ stroke: var(--color);
15
+ }
16
+
17
+ SCap {
18
+ transition: r 0.1s;
19
+ }
20
+
21
+ SLabel {
22
+ fill: var(--color);
23
+ cursor: var(--text-cursor);
24
+ transform-origin: var(--transform-origin);
25
+ }
26
+ SRadian:hover SLabel {
27
+ fill: var(--color-hovered);
28
+ }
29
+
30
+ @media (prefers-reduced-motion) {
31
+ SLineCap {
32
+ transition: none;
33
+ }
34
+ }
@@ -2,7 +2,7 @@
2
2
  @import '@semcore/d3-chart/src/style/var.css';
3
3
 
4
4
  SScatterPlot {
5
- fill: #2bb3ff;
5
+ fill: var(--blue-03);
6
6
  transition-property: cx, cy;
7
7
  transition-duration: var(--duration);
8
8
  transition-timing-function: ease-in-out;
@@ -19,7 +19,7 @@ SScatterPlot[color] {
19
19
  SValue {
20
20
  text-anchor: middle;
21
21
  font-size: 10px;
22
- stroke: #008ff8;
22
+ stroke: var(--blue-04);
23
23
  }
24
24
 
25
25
  SValue[color] {
@@ -6,15 +6,15 @@ STooltip {
6
6
  line-height: var(--lh-100);
7
7
  position: relative;
8
8
  background-color: #fff;
9
- border-radius: 3px;
10
- border: 1px solid var(--stone-light);
9
+ border-radius: 6px;
10
+ border: 1px solid var(--gray-100);
11
11
  box-sizing: border-box;
12
- box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.25), 0 -2px 5px -2px rgba(0, 0, 0, 0.25);
12
+ box-shadow: var(--box-shadow-popper);
13
13
  padding: 12px;
14
14
  }
15
15
 
16
16
  STitle {
17
- color: var(--gray60);
17
+ color: var(--gray-500);
18
18
  margin-bottom: 8px;
19
19
  }
20
20
 
@@ -28,7 +28,7 @@ SDot {
28
28
  height: 8px;
29
29
  border-radius: 50%;
30
30
  margin-right: 8px;
31
- background: var(--blue-01);
31
+ background: var(--blue-03);
32
32
  }
33
33
 
34
34
  SDot[color] {
package/src/style/var.css CHANGED
@@ -1,32 +1,125 @@
1
1
  :root {
2
- --blue-01: #50aef4;
3
- --blue-02: #91c7ef;
4
- --blue-03: #0e75c2;
5
- --blue-04: #d1e8f8;
6
- --blue-05: #084c80;
7
- --green-01: #3ab011;
8
- --green-02: #91d27b;
9
- --green-03: #278707;
10
- --green-04: #d1edc8;
11
- --green-05: #1a6700;
12
- --orange-01: #ff8e29;
13
- --orange-02: #fec089;
14
- --orange-03: #da6905;
15
- --orange-04: #ffe5cd;
16
- --orange-05: #a14e03;
17
- --violet-01: #890c85;
18
- --violet-02: #c783c5;
19
- --violet-03: #6e026b;
20
- --violet-04: #e7cbe6;
21
- --violet-05: #4d024b;
22
- --red-01: #e91e25;
23
- --red-02: #f69498;
24
- --red-03: #bd0000;
25
- --red-04: #fbd2d3;
26
- --red-05: #830005;
27
- --yellow-01: #ffc83f;
28
- --yellow-02: #ffdb82;
29
- --yellow-03: #e4aa18;
30
- --yellow-04: #ffebb9;
31
- --yellow-05: #b3840c;
2
+ --blue-01: #c4e5fe;
3
+ --blue-02: #8ecdff;
4
+ --blue-03: #2bb3ff;
5
+ --blue-04: #008ff8;
6
+ --blue-05: #006dca;
7
+ --green-01: #9ef2c9;
8
+ --green-02: #59ddaa;
9
+ --green-03: #00c192;
10
+ --green-04: #009f81;
11
+ --green-05: #007c65;
12
+ --orange-01: #ffdca2;
13
+ --orange-02: #ffb26e;
14
+ --orange-03: #ff8c43;
15
+ --orange-04: #ff622d;
16
+ --orange-05: #c33909;
17
+ --pink-01: #ffd3ff;
18
+ --pink-02: #ffa9fa;
19
+ --pink-03: #f67cf2;
20
+ --pink-04: #e14adf;
21
+ --pink-05: #b229b9;
22
+ --violet-01: #edd9ff;
23
+ --violet-02: #dcb8ff;
24
+ --violet-03: #c695ff;
25
+ --violet-04: #ab6cfe;
26
+ --violet-05: #8649e1;
27
+ --red-01: #ffd7df;
28
+ --red-02: #ffaeb5;
29
+ --red-03: #ff8786;
30
+ --red-04: #ff4953;
31
+ --red-05: #d1002f;
32
+ --yellow-01: #fce081;
33
+ --yellow-02: #fdc23c;
34
+ --yellow-03: #ef9800;
35
+ --yellow-04: #d87900;
36
+ --yellow-05: #a75800;
37
+ --salad-01: #c7ee96;
38
+ --salad-02: #9bd85d;
39
+ --salad-03: #66c030;
40
+ --salad-04: #35a21e;
41
+ --salad-05: #0a7e22;
42
+ --gray-01: #c4c7cf;
43
+
44
+ --gray-50: #f4f5f9;
45
+ --gray-100: #e0e1e9;
46
+ --gray-200: #c4c7cf;
47
+ --gray-300: #a9abb6;
48
+ --gray-400: #8a8e9b;
49
+ --gray-500: #6c6e79;
50
+ --gray-600: #484a54;
51
+ --gray-700: #2b2e38;
52
+ --gray-800: #191b23;
53
+ --blue-50: #e9f7ff;
54
+ --blue-100: #c4e5fe;
55
+ --blue-200: #8ecdff;
56
+ --blue-300: #2bb3ff;
57
+ --blue-400: #008ff8;
58
+ --blue-500: #006dca;
59
+ --blue-600: #044792;
60
+ --blue-700: #002b5f;
61
+ --blue-800: #001b3d;
62
+ --green-100: #9ef2c9;
63
+ --green-200: #59ddaa;
64
+ --green-300: #00c192;
65
+ --green-400: #009f81;
66
+ --green-50: #dbfee8;
67
+ --green-500: #007c65;
68
+ --green-600: #055345;
69
+ --green-700: #00342d;
70
+ --green-800: #00201e;
71
+ --salad-100: #c7ee96;
72
+ --salad-200: #9bd85d;
73
+ --salad-300: #66c030;
74
+ --salad-400: #35a21e;
75
+ --salad-50: #ecfbcd;
76
+ --salad-500: #0a7e22;
77
+ --salad-600: #005613;
78
+ --salad-700: #003509;
79
+ --salad-800: #002203;
80
+ --orange-50: #fff3d9;
81
+ --orange-100: #ffdca2;
82
+ --orange-200: #ffb26e;
83
+ --orange-300: #ff8c43;
84
+ --orange-400: #ff622d;
85
+ --orange-500: #c33909;
86
+ --orange-600: #8b1500;
87
+ --orange-700: #551200;
88
+ --orange-800: #351000;
89
+ --yellow-100: #fce081;
90
+ --yellow-200: #fdc23c;
91
+ --yellow-300: #ef9800;
92
+ --yellow-400: #d87900;
93
+ --yellow-50: #fdf7c8;
94
+ --yellow-500: #a75800;
95
+ --yellow-600: #743a00;
96
+ --yellow-700: #462500;
97
+ --yellow-800: #2c1600;
98
+ --red-100: #ffd7df;
99
+ --red-200: #ffaeb5;
100
+ --red-300: #ff8786;
101
+ --red-400: #ff4953;
102
+ --red-50: #fff0f7;
103
+ --red-500: #d1002f;
104
+ --red-600: #8e0016;
105
+ --red-700: #58000a;
106
+ --red-800: #410101;
107
+ --pink-100: #ffd3ff;
108
+ --pink-200: #ffa9fa;
109
+ --pink-300: #f67cf2;
110
+ --pink-400: #e14adf;
111
+ --pink-50: #fff0ff;
112
+ --pink-500: #b229b9;
113
+ --pink-600: #7d0480;
114
+ --pink-700: #4d0050;
115
+ --pink-800: #340439;
116
+ --violet-100: #edd9ff;
117
+ --violet-200: #dcb8ff;
118
+ --violet-300: #c695ff;
119
+ --violet-400: #ab6cfe;
120
+ --violet-50: #f9f2ff;
121
+ --violet-500: #8649e1;
122
+ --violet-600: #5925ab;
123
+ --violet-700: #421984;
124
+ --violet-800: #220358;
32
125
  }
@@ -1,7 +1,7 @@
1
1
  @import '@semcore/d3-chart/src/style/var.css';
2
2
 
3
3
  SCircle {
4
- fill: var(--green-01);
4
+ fill: var(--green-02);
5
5
  stroke: #fff;
6
6
  stroke-width: 2px;
7
7
  fill-opacity: 0.5;
@@ -34,6 +34,12 @@ export * from './Area';
34
34
  export { default as StackedArea } from './StackedArea';
35
35
  export * from './StackedArea';
36
36
 
37
+ /** It becomes resolvable after building and moving file to lib dir */
38
+ // eslint-disable-next-line import/no-unresolved
39
+ export { default as RadialTree } from './RadialTree';
40
+ // eslint-disable-next-line import/no-unresolved
41
+ export * from './RadialTree';
42
+
37
43
  export { default as Donut } from './Donut';
38
44
  export * from './Donut';
39
45
 
package/src/utils.ts ADDED
@@ -0,0 +1,227 @@
1
+ import { extent, bisector, Numeric } from 'd3-array';
2
+ import {
3
+ scaleQuantize,
4
+ ScaleIdentity,
5
+ ScaleTime,
6
+ ScaleContinuousNumeric,
7
+ ScaleBand,
8
+ ScalePoint,
9
+ NumberValue,
10
+ } from 'd3-scale';
11
+ import React from 'react';
12
+
13
+ const CONSTANT = {
14
+ VIRTUAL_ELEMENT: Symbol('VIRTUAL_ELEMENT'),
15
+ } as const;
16
+
17
+ export { CONSTANT };
18
+
19
+ export const eventToPoint = (event: React.MouseEvent<HTMLElement>, svgRoot: SVGElement) => {
20
+ const node = (event.currentTarget || event.target) as HTMLElement;
21
+ const rect = svgRoot.getBoundingClientRect();
22
+ return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];
23
+ };
24
+
25
+ type InvertableScale =
26
+ | ScaleIdentity
27
+ | ScaleTime<unknown, unknown>
28
+ | ScaleContinuousNumeric<unknown, unknown>;
29
+ export const invert = <Scale extends InvertableScale = InvertableScale>(
30
+ scale: Scale,
31
+ value: number,
32
+ ) => {
33
+ if (scale.invert) return scale.invert(value);
34
+
35
+ const range = scale.range() as number[];
36
+ const domain = scale.domain();
37
+
38
+ return scaleQuantize()
39
+ .domain((range[0] <= range[1] ? range : range.slice().reverse()) as NumberValue[])
40
+ .range((range[0] <= range[1] ? domain : domain.slice().reverse()) as number[])(value);
41
+ };
42
+
43
+ export const definedNullData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>
44
+ plot[x] !== null && plot[y] !== null;
45
+
46
+ export const definedData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>
47
+ plot[x] !== null && plot[x] !== undefined && plot[y] !== null && plot[y] !== undefined;
48
+
49
+ export const scaleOfBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale, value: number) =>
50
+ scale.bandwidth ? scale(value)! + scale.bandwidth() / 2 : scale(value);
51
+
52
+ export const minMax = <
53
+ Key extends string = string,
54
+ Data extends Iterable<{ [key in Key]: Numeric | null | undefined }> = Iterable<{
55
+ [key in Key]: Numeric | null | undefined;
56
+ }>,
57
+ >(
58
+ data: Data,
59
+ key: Key,
60
+ ) => {
61
+ if (typeof key === 'string') {
62
+ return extent(data, (d) => d[key]);
63
+ }
64
+ return extent(data, key);
65
+ };
66
+
67
+ export const getNullData = <
68
+ Name extends string = string,
69
+ Data extends { [name in Name]?: unknown | null } = {},
70
+ >(
71
+ data: Data[],
72
+ defined: (data: Data) => boolean,
73
+ name: Name,
74
+ ) =>
75
+ data.reduce((acc, d, i, data) => {
76
+ if (defined(d)) {
77
+ acc.push({
78
+ [name]: null,
79
+ } as Data);
80
+ } else {
81
+ const prev = data[i - 1];
82
+ const next = data[i + 1];
83
+
84
+ if (i === 0) {
85
+ const defNext = data.find(defined);
86
+ acc.push({
87
+ ...d,
88
+ [name]: defNext ? defNext[name] : null,
89
+ });
90
+ }
91
+
92
+ // prev
93
+ if (prev && defined(prev)) {
94
+ acc.push(prev);
95
+ }
96
+
97
+ // next
98
+ if (next && defined(next)) {
99
+ acc.push(next);
100
+ }
101
+
102
+ if (data.length - 1 === i) {
103
+ const defPrev = data.slice().reverse().find(defined);
104
+ acc.push({
105
+ ...d,
106
+ [name]: defPrev ? defPrev[name] : null,
107
+ });
108
+ }
109
+ }
110
+ return acc;
111
+ }, [] as Data[]);
112
+
113
+ type IndexFromDataScale =
114
+ | ScaleIdentity
115
+ | ScaleTime<unknown, unknown>
116
+ | ScaleContinuousNumeric<unknown, unknown>
117
+ | ScaleBand<{}>
118
+ | ScalePoint<{}>;
119
+ export const getIndexFromData = <
120
+ Data extends {
121
+ [key: string]: number;
122
+ } = {},
123
+ Scale extends IndexFromDataScale = IndexFromDataScale,
124
+ >(
125
+ data: Data[],
126
+ scale: Scale,
127
+ key: string,
128
+ value: number,
129
+ ) => {
130
+ // detect line chart
131
+ if ('invert' in scale && typeof scale.invert === 'function') {
132
+ const bisect = bisector((d: { [key: string]: number }) => d[key]).center;
133
+ return bisect(data, value);
134
+ }
135
+ // detect bar chart
136
+ else if ('step' in scale && typeof scale.step !== 'undefined') {
137
+ const index = data.findIndex((d) => d[key] === value);
138
+ return index >= 0 ? index : null;
139
+ } else {
140
+ // eslint-disable-next-line no-console
141
+ console.warn('[d3-chart/utils/getIndexFromData] encountered incompatible scale type');
142
+ return null;
143
+ }
144
+ };
145
+
146
+ export const roundedPath = (
147
+ x: number,
148
+ y: number,
149
+ w: number,
150
+ h: number,
151
+ r: number,
152
+ tl = false,
153
+ tr = false,
154
+ bl = false,
155
+ br = false,
156
+ ) => {
157
+ let result = 'M' + (x + r) + ',' + y;
158
+ result += 'h' + (w - 2 * r);
159
+ if (tr) {
160
+ result += 'a' + r + ',' + r + ' 0 0 1 ' + r + ',' + r;
161
+ } else {
162
+ result += 'h' + r;
163
+ result += 'v' + r;
164
+ }
165
+ result += 'v' + (h - 2 * r);
166
+ if (br) {
167
+ result += 'a' + r + ',' + r + ' 0 0 1 ' + -r + ',' + r;
168
+ } else {
169
+ result += 'v' + r;
170
+ result += 'h' + -r;
171
+ }
172
+ result += 'h' + (2 * r - w);
173
+ if (bl) {
174
+ result += 'a' + r + ',' + r + ' 0 0 1 ' + -r + ',' + -r;
175
+ } else {
176
+ result += 'h' + -r;
177
+ result += 'v' + -r;
178
+ }
179
+ result += 'v' + (2 * r - h);
180
+ if (tl) {
181
+ result += 'a' + r + ',' + r + ' 0 0 1 ' + r + ',' + -r;
182
+ } else {
183
+ result += 'v' + -r;
184
+ result += 'h' + r;
185
+ }
186
+ result += 'z';
187
+ return result;
188
+ };
189
+
190
+ export const getBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale) => {
191
+ if ('bandwidth' in scale) {
192
+ return scale.bandwidth();
193
+ }
194
+
195
+ const range = scale.range();
196
+ const domain = scale.domain();
197
+ return Math.abs(range[range.length - 1] - range[0]) / domain.length;
198
+ };
199
+
200
+ export const memoize = <Func extends (...args: any[]) => any>(func: Func): Func => {
201
+ const results: { [cacheKey: string]: any } = {};
202
+ return ((...args: any[]) => {
203
+ const argsKey = args.join(',');
204
+ if (!results[argsKey]) {
205
+ results[argsKey] = func(...args);
206
+ }
207
+ return results[argsKey];
208
+ }) as Func;
209
+ };
210
+
211
+ export const measureText = memoize((text: string, fontSize?: number) => {
212
+ if (!text) return 0;
213
+
214
+ const span = document.createElement('span');
215
+ if (fontSize) {
216
+ span.style.fontSize = `${fontSize}px`;
217
+ }
218
+ for (const line of text.split('\n')) {
219
+ span.append(document.createTextNode(line));
220
+ span.append(document.createElement('br'));
221
+ }
222
+ span.style.display = 'inline-block';
223
+ document.body.append(span);
224
+ const textWidth = span.offsetWidth;
225
+ span.remove();
226
+ return textWidth;
227
+ });