@semcore/d3-chart 2.0.9 → 2.2.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 (105) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/lib/cjs/Area.js +70 -29
  3. package/lib/cjs/Area.js.map +1 -1
  4. package/lib/cjs/Bar.js +6 -4
  5. package/lib/cjs/Bar.js.map +1 -1
  6. package/lib/cjs/Bubble.js +1 -0
  7. package/lib/cjs/Bubble.js.map +1 -1
  8. package/lib/cjs/Donut.js +120 -44
  9. package/lib/cjs/Donut.js.map +1 -1
  10. package/lib/cjs/Dots.js +24 -25
  11. package/lib/cjs/Dots.js.map +1 -1
  12. package/lib/cjs/GroupBar.js +7 -7
  13. package/lib/cjs/GroupBar.js.map +1 -1
  14. package/lib/cjs/Line.js +4 -2
  15. package/lib/cjs/Line.js.map +1 -1
  16. package/lib/cjs/ReferenceLine.js +258 -0
  17. package/lib/cjs/ReferenceLine.js.map +1 -0
  18. package/lib/cjs/ResponsiveContainer.js +1 -1
  19. package/lib/cjs/ResponsiveContainer.js.map +1 -1
  20. package/lib/cjs/ScatterPlot.js +1 -0
  21. package/lib/cjs/ScatterPlot.js.map +1 -1
  22. package/lib/cjs/StackBar.js +6 -6
  23. package/lib/cjs/StackedArea.js +7 -7
  24. package/lib/cjs/Tooltip.js +3 -2
  25. package/lib/cjs/Tooltip.js.map +1 -1
  26. package/lib/cjs/createElement.js +4 -3
  27. package/lib/cjs/createElement.js.map +1 -1
  28. package/lib/cjs/index.js +8 -0
  29. package/lib/cjs/index.js.map +1 -1
  30. package/lib/cjs/style/dot.shadow.css +10 -5
  31. package/lib/cjs/style/reference-line.shadow.css +37 -0
  32. package/lib/cjs/types/Area.d.ts +1 -0
  33. package/lib/cjs/types/Bar.d.ts +4 -0
  34. package/lib/cjs/types/Bubble.d.ts +6 -1
  35. package/lib/cjs/types/Donut.d.ts +4 -0
  36. package/lib/cjs/types/ReferenceLine.d.ts +31 -0
  37. package/lib/cjs/types/Tooltip.d.ts +5 -3
  38. package/lib/cjs/types/index.d.ts +3 -0
  39. package/lib/es6/Area.js +68 -27
  40. package/lib/es6/Area.js.map +1 -1
  41. package/lib/es6/Bar.js +6 -4
  42. package/lib/es6/Bar.js.map +1 -1
  43. package/lib/es6/Bubble.js +1 -0
  44. package/lib/es6/Bubble.js.map +1 -1
  45. package/lib/es6/Donut.js +114 -44
  46. package/lib/es6/Donut.js.map +1 -1
  47. package/lib/es6/Dots.js +24 -23
  48. package/lib/es6/Dots.js.map +1 -1
  49. package/lib/es6/GroupBar.js +7 -7
  50. package/lib/es6/GroupBar.js.map +1 -1
  51. package/lib/es6/Line.js +4 -2
  52. package/lib/es6/Line.js.map +1 -1
  53. package/lib/es6/ReferenceLine.js +244 -0
  54. package/lib/es6/ReferenceLine.js.map +1 -0
  55. package/lib/es6/ResponsiveContainer.js +1 -1
  56. package/lib/es6/ResponsiveContainer.js.map +1 -1
  57. package/lib/es6/ScatterPlot.js +1 -0
  58. package/lib/es6/ScatterPlot.js.map +1 -1
  59. package/lib/es6/StackBar.js +6 -6
  60. package/lib/es6/StackedArea.js +7 -7
  61. package/lib/es6/Tooltip.js +3 -2
  62. package/lib/es6/Tooltip.js.map +1 -1
  63. package/lib/es6/createElement.js +3 -3
  64. package/lib/es6/createElement.js.map +1 -1
  65. package/lib/es6/index.js +1 -0
  66. package/lib/es6/index.js.map +1 -1
  67. package/lib/es6/style/dot.shadow.css +10 -5
  68. package/lib/es6/style/reference-line.shadow.css +37 -0
  69. package/lib/es6/types/Area.d.ts +1 -0
  70. package/lib/es6/types/Bar.d.ts +4 -0
  71. package/lib/es6/types/Bubble.d.ts +6 -1
  72. package/lib/es6/types/Donut.d.ts +4 -0
  73. package/lib/es6/types/ReferenceLine.d.ts +31 -0
  74. package/lib/es6/types/Tooltip.d.ts +5 -3
  75. package/lib/es6/types/index.d.ts +3 -0
  76. package/lib/types/Area.d.ts +1 -0
  77. package/lib/types/Bar.d.ts +4 -0
  78. package/lib/types/Bubble.d.ts +6 -1
  79. package/lib/types/Donut.d.ts +4 -0
  80. package/lib/types/ReferenceLine.d.ts +31 -0
  81. package/lib/types/Tooltip.d.ts +5 -3
  82. package/lib/types/index.d.ts +3 -0
  83. package/package.json +11 -11
  84. package/src/Area.jsx +41 -8
  85. package/src/Bar.jsx +6 -5
  86. package/src/Bubble.jsx +1 -0
  87. package/src/Donut.jsx +96 -29
  88. package/src/Dots.jsx +11 -14
  89. package/src/GroupBar.jsx +1 -1
  90. package/src/Line.jsx +2 -1
  91. package/src/ReferenceLine.jsx +146 -0
  92. package/src/ResponsiveContainer.jsx +1 -1
  93. package/src/ScatterPlot.jsx +1 -0
  94. package/src/Tooltip.jsx +2 -3
  95. package/src/createElement.jsx +4 -2
  96. package/src/index.js +1 -0
  97. package/src/style/dot.shadow.css +10 -5
  98. package/src/style/reference-line.shadow.css +37 -0
  99. package/src/types/Area.d.ts +1 -0
  100. package/src/types/Bar.d.ts +4 -0
  101. package/src/types/Bubble.d.ts +6 -1
  102. package/src/types/Donut.d.ts +4 -0
  103. package/src/types/ReferenceLine.d.ts +31 -0
  104. package/src/types/Tooltip.d.ts +5 -3
  105. package/src/types/index.d.ts +3 -0
@@ -1,20 +1,21 @@
1
1
  @import '@semcore/utils/style/var.css';
2
2
  @import '@semcore/d3-chart/src/style/var.css';
3
3
 
4
+ SDots {
5
+ & SDot {
6
+ transition-duration: var(--duration);
7
+ }
8
+ }
9
+
4
10
  SDot {
5
11
  stroke-width: 2px;
6
12
  stroke: #fff;
7
13
  r: 6px;
8
14
  fill: var(--blue-03);
9
15
  transition-property: cx, cy;
10
- transition-duration: var(--duration);
11
16
  transition-timing-function: ease-in-out;
12
17
  }
13
18
 
14
- SDot[color] {
15
- fill: var(--color);
16
- }
17
-
18
19
  SDot[hide] {
19
20
  display: none;
20
21
  }
@@ -22,3 +23,7 @@ SDot[hide] {
22
23
  SDot[active] {
23
24
  r: 8px;
24
25
  }
26
+
27
+ SDot[color] {
28
+ fill: var(--color);
29
+ }
@@ -0,0 +1,37 @@
1
+ @import '@semcore/utils/style/var.css';
2
+
3
+ SReferenceLine {
4
+ fill: none;
5
+ stroke: var(--gray-300);
6
+ }
7
+
8
+ STitle {
9
+ font-size: var(--fs-100);
10
+ fill: var(--gray-500);
11
+ transform-origin: var(--transform-origin);
12
+ }
13
+
14
+ STitle[position='top'] {
15
+ text-anchor: middle;
16
+ }
17
+
18
+ STitle[position='bottom'] {
19
+ text-anchor: middle;
20
+ alignment-baseline: hanging;
21
+ }
22
+
23
+ STitle[position='right'] {
24
+ transform: rotate(-90deg);
25
+ alignment-baseline: middle;
26
+ text-anchor: middle;
27
+ }
28
+
29
+ STitle[position='left'] {
30
+ transform: rotate(-90deg);
31
+ text-anchor: middle;
32
+ alignment-baseline: middle;
33
+ }
34
+
35
+ SBackground {
36
+ fill: color-mod(var(--gray-200) a(20%));
37
+ }
@@ -42,6 +42,7 @@ export interface IAreaNullProps extends IContext {
42
42
  declare const Area: (<T>(props: CProps<IAreaProps & T>) => ReturnEl) & {
43
43
  Dots: <T>(props: CProps<IAreaDotsProps & T, IAreaDotsContext>) => ReturnEl;
44
44
  Null: <T>(props: CProps<IAreaNullProps & T>) => ReturnEl;
45
+ Line: <T>(props: CProps<IContext & T>) => ReturnEl;
45
46
  };
46
47
 
47
48
  export default Area;
@@ -19,6 +19,10 @@ export interface IBarProps extends IContext {
19
19
  * @default 2
20
20
  */
21
21
  r?: number | number[];
22
+ /** Minimal height
23
+ * @default 4
24
+ */
25
+ hMin?: number;
22
26
  }
23
27
 
24
28
  export interface IBarContext {
@@ -22,6 +22,11 @@ export interface IBubbleProps extends IContext {
22
22
  duration?: number;
23
23
  }
24
24
 
25
- declare const Bubble: <T>(props: CProps<IBubbleProps & T>) => ReturnEl;
25
+ export interface IBubbleContext {
26
+ /** Index element of data */
27
+ index: number;
28
+ }
29
+
30
+ declare const Bubble: <T>(props: CProps<IBubbleProps & T, IBubbleContext>) => ReturnEl;
26
31
 
27
32
  export default Bubble;
@@ -27,6 +27,10 @@ export interface IPieProps extends IContext {
27
27
  @default #50aef4
28
28
  **/
29
29
  color?: string;
30
+ /**
31
+ * Active sector
32
+ * */
33
+ active?: boolean;
30
34
  }
31
35
 
32
36
  export interface IEmptyDataProps extends IContext {}
@@ -0,0 +1,31 @@
1
+ import { CProps, ReturnEl } from '@semcore/core';
2
+ import IContext from './context';
3
+
4
+ export interface IReferenceLineProps extends IContext {
5
+ /** The position of the title relative reference line
6
+ * @default 'left' */
7
+ position?: 'top' | 'right' | 'bottom' | 'left';
8
+ /** Value element of data */
9
+ value: any;
10
+ }
11
+
12
+ export interface IReferenceLineTitleProps extends IContext {
13
+ /** The position of the axis relative reference line */
14
+ position?: 'top' | 'right' | 'bottom' | 'left';
15
+ /** Value element of data */
16
+ value: any;
17
+ }
18
+
19
+ export interface IReferenceLineBackgroundProps extends IContext {
20
+ /** The position of the axis relative reference line */
21
+ position?: 'top' | 'right' | 'bottom' | 'left';
22
+ /** Value element of data */
23
+ value: any;
24
+ }
25
+
26
+ declare const ReferenceLine: (<T>(props: CProps<IReferenceLineProps & T>) => ReturnEl) & {
27
+ Title: <T>(props: CProps<IReferenceLineTitleProps & T>) => ReturnEl;
28
+ Background: <T>(props: CProps<IReferenceLineBackgroundProps & T>) => ReturnEl;
29
+ };
30
+
31
+ export default ReferenceLine;
@@ -4,14 +4,14 @@ import { CProps, PropGetterFn, ReturnEl } from '@semcore/core';
4
4
  import { IBoxProps } from '@semcore/flex-box';
5
5
  import IContext from './context';
6
6
 
7
- export interface ITooltipProps extends IPopperProps, IPopperTriggerProps, IContext {
7
+ export interface ITooltipChartProps extends IPopperProps, IPopperTriggerProps, IContext {
8
8
  /** Field from data for XAxis */
9
9
  x?: string;
10
10
  /** Field from data for YAxis */
11
11
  y?: string;
12
12
  }
13
13
 
14
- export interface ITooltipContext {
14
+ export interface ITooltipChartContext {
15
15
  getTriggerProps: PropGetterFn;
16
16
  getPopperProps: PropGetterFn;
17
17
  /** Index active value for Axis x */
@@ -20,7 +20,9 @@ export interface ITooltipContext {
20
20
  yIndex: number | null;
21
21
  }
22
22
 
23
- declare const Tooltip: (<T>(props: CProps<ITooltipProps & T, ITooltipContext>) => ReturnEl) & {
23
+ declare const Tooltip: (<T>(
24
+ props: CProps<ITooltipChartProps & T, ITooltipChartContext>,
25
+ ) => ReturnEl) & {
24
26
  Trigger: <T>(props: CProps<ComponentProps<typeof Popper.Trigger> & T>) => ReturnEl;
25
27
  Popper: <T>(props: CProps<ComponentProps<typeof Popper.Popper> & T>) => ReturnEl;
26
28
  Title: <T>(props: CProps<IBoxProps & T>) => ReturnEl;
@@ -51,3 +51,6 @@ export * from './ScatterPlot';
51
51
 
52
52
  export { default as Bubble } from './Bubble';
53
53
  export * from './Bubble';
54
+
55
+ export { default as ReferenceLine } from './ReferenceLine';
56
+ export * from './ReferenceLine';
package/lib/es6/Area.js CHANGED
@@ -19,6 +19,7 @@ import createElement from './createElement';
19
19
  import { definedData, scaleOfBandwidth, getNullData, definedNullData } from './utils';
20
20
  import ClipPath from './ClipPath';
21
21
  import uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';
22
+ import findComponent from '@semcore/utils/lib/findComponent';
22
23
 
23
24
  /*__reshadow-styles__:"./style/area.shadow.css"*/
24
25
  var style = (
@@ -82,6 +83,23 @@ var AreaRoot = /*#__PURE__*/function (_Component) {
82
83
  color: color
83
84
  };
84
85
  }
86
+ }, {
87
+ key: "getLineProps",
88
+ value: function getLineProps() {
89
+ var _this$asProps3 = this.asProps,
90
+ duration = _this$asProps3.duration,
91
+ color = _this$asProps3.color,
92
+ data = _this$asProps3.data,
93
+ d3Line = _this$asProps3.d3Line,
94
+ uid = _this$asProps3.uid;
95
+ return {
96
+ uid: uid,
97
+ data: data,
98
+ d3: d3Line,
99
+ color: color,
100
+ duration: duration
101
+ };
102
+ }
85
103
  }, {
86
104
  key: "render",
87
105
  value: function render() {
@@ -89,17 +107,19 @@ var AreaRoot = /*#__PURE__*/function (_Component) {
89
107
 
90
108
  var SArea = this.Element;
91
109
  var SAreaLine = 'path';
92
- var _this$asProps3 = this.asProps,
93
- styles = _this$asProps3.styles,
94
- hide = _this$asProps3.hide,
95
- d3 = _this$asProps3.d3,
96
- d3Line = _this$asProps3.d3Line,
97
- data = _this$asProps3.data,
98
- color = _this$asProps3.color,
99
- uid = _this$asProps3.uid,
100
- size = _this$asProps3.size,
101
- duration = _this$asProps3.duration;
102
- return _ref = sstyled(styles), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SAreaLine, _ref.cn("SAreaLine", {
110
+ var _this$asProps4 = this.asProps,
111
+ styles = _this$asProps4.styles,
112
+ hide = _this$asProps4.hide,
113
+ d3 = _this$asProps4.d3,
114
+ d3Line = _this$asProps4.d3Line,
115
+ data = _this$asProps4.data,
116
+ color = _this$asProps4.color,
117
+ uid = _this$asProps4.uid,
118
+ size = _this$asProps4.size,
119
+ duration = _this$asProps4.duration,
120
+ Children = _this$asProps4.Children;
121
+ var advanceMode = !!findComponent(Children, [Area.Line.displayName]);
122
+ return _ref = sstyled(styles), /*#__PURE__*/React.createElement(React.Fragment, null, !advanceMode && /*#__PURE__*/React.createElement(SAreaLine, _ref.cn("SAreaLine", {
103
123
  "clipPath": "url(#".concat(uid, ")"),
104
124
  "d": d3Line(data),
105
125
  "color": color,
@@ -134,19 +154,19 @@ _defineProperty(AreaRoot, "style", style);
134
154
 
135
155
  _defineProperty(AreaRoot, "enhance", [uniqueIDEnhancement()]);
136
156
 
137
- _defineProperty(AreaRoot, "defaultProps", function (_ref3) {
138
- var x = _ref3.x,
139
- y = _ref3.y,
140
- y0 = _ref3.y0,
141
- $rootProps = _ref3.$rootProps,
142
- _ref3$curve = _ref3.curve,
143
- curve = _ref3$curve === void 0 ? curveLinear : _ref3$curve,
144
- scale = _ref3.scale;
157
+ _defineProperty(AreaRoot, "defaultProps", function (_ref4) {
158
+ var x = _ref4.x,
159
+ y = _ref4.y,
160
+ y0 = _ref4.y0,
161
+ $rootProps = _ref4.$rootProps,
162
+ _ref4$curve = _ref4.curve,
163
+ curve = _ref4$curve === void 0 ? curveLinear : _ref4$curve,
164
+ scale = _ref4.scale;
145
165
 
146
- var _ref4 = scale || $rootProps.scale,
147
- _ref5 = _slicedToArray(_ref4, 2),
148
- xScale = _ref5[0],
149
- yScale = _ref5[1];
166
+ var _ref5 = scale || $rootProps.scale,
167
+ _ref6 = _slicedToArray(_ref5, 2),
168
+ xScale = _ref6[0],
169
+ yScale = _ref6[1];
150
170
 
151
171
  var yRange = yScale.range();
152
172
  return {
@@ -166,16 +186,35 @@ _defineProperty(AreaRoot, "defaultProps", function (_ref3) {
166
186
  };
167
187
  });
168
188
 
169
- function Null(props) {
189
+ function Line(props) {
170
190
  var _ref2;
171
191
 
192
+ var SAreaLine = props.Element,
193
+ styles = props.styles,
194
+ d3 = props.d3,
195
+ data = props.data,
196
+ color = props.color,
197
+ duration = props.duration,
198
+ uid = props.uid;
199
+ return _ref2 = sstyled(styles), /*#__PURE__*/React.createElement(SAreaLine, _ref2.cn("SAreaLine", {
200
+ "render": "path",
201
+ "clipPath": "url(#".concat(uid, ")"),
202
+ "d": d3(data),
203
+ "color": color,
204
+ "use:duration": "".concat(duration, "ms")
205
+ }));
206
+ }
207
+
208
+ function Null(props) {
209
+ var _ref3;
210
+
172
211
  var SNull = props.Element,
173
212
  styles = props.styles,
174
213
  d3 = props.d3,
175
214
  data = props.data,
176
215
  hide = props.hide,
177
216
  color = props.color;
178
- return _ref2 = sstyled(styles), /*#__PURE__*/React.createElement(SNull, _ref2.cn("SNull", {
217
+ return _ref3 = sstyled(styles), /*#__PURE__*/React.createElement(SNull, _ref3.cn("SNull", {
179
218
  "render": "path",
180
219
  "d": d3(data),
181
220
  "hide": hide,
@@ -183,8 +222,10 @@ function Null(props) {
183
222
  }));
184
223
  }
185
224
 
186
- export default createElement(AreaRoot, {
225
+ var Area = createElement(AreaRoot, {
187
226
  Dots: Dots,
188
- Null: Null
227
+ Null: Null,
228
+ Line: Line
189
229
  });
230
+ export default Area;
190
231
  //# sourceMappingURL=Area.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Area.jsx"],"names":["React","area","curveLinear","line","Dots","Component","sstyled","createElement","definedData","scaleOfBandwidth","getNullData","definedNullData","ClipPath","uniqueIDEnhancement","AreaRoot","asProps","x","y","color","data","d3Line","d3","SArea","Element","SAreaLine","styles","hide","uid","size","duration","rect","setAttribute","style","y0","$rootProps","curve","scale","xScale","yScale","yRange","range","defined","p","y1","Null","props","SNull"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { area, curveLinear, line } from 'd3-shape';\nimport Dots from './Dots';\nimport { Component, sstyled } from '@semcore/core';\nimport createElement from './createElement';\nimport { definedData, scaleOfBandwidth, getNullData, definedNullData } from './utils';\nimport ClipPath from './ClipPath';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\n\nimport style from './style/area.shadow.css';\n\nclass AreaRoot extends Component {\n static displayName = 'Area';\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = ({ x, y, y0, $rootProps, curve = curveLinear, scale }) => {\n const [xScale, yScale] = scale || $rootProps.scale;\n const yRange = yScale.range();\n\n return {\n d3: area()\n .defined(definedData(x, y))\n .curve(curve)\n .x((p) => scaleOfBandwidth(xScale, p[x]))\n .y0((p) => (p[y0] ? scaleOfBandwidth(yScale, p[y0]) : yRange[0]))\n .y1((p) => scaleOfBandwidth(yScale, p[y])),\n d3Line: line()\n .defined(definedData(x, y))\n .curve(curve)\n .x((p) => scaleOfBandwidth(xScale, p[x]))\n .y((p) => scaleOfBandwidth(yScale, p[y])),\n duration: 500,\n };\n };\n\n getDotsProps() {\n const { x, y, color, data, d3Line } = this.asProps;\n\n return {\n x,\n y,\n data,\n d3: d3Line,\n color,\n };\n }\n\n getNullProps() {\n const { x, y, color, data, d3Line } = this.asProps;\n return {\n data: getNullData(data, definedNullData(x, y), y),\n d3: d3Line,\n color,\n };\n }\n\n render() {\n const SArea = this.Element;\n const SAreaLine = 'path';\n const { styles, hide, d3, d3Line, data, color, uid, size, duration } = this.asProps;\n return sstyled(styles)(\n <>\n <SAreaLine\n clipPath={`url(#${uid})`}\n d={d3Line(data)}\n color={color}\n use:duration={`${duration}ms`}\n />\n <SArea\n clipPath={`url(#${uid})`}\n render=\"path\"\n d={d3(data)}\n hide={hide}\n color={color}\n use:duration={`${duration}ms`}\n />\n {duration && (\n <ClipPath\n setAttributeTag={(rect) => {\n rect.setAttribute('width', size[0]);\n }}\n id={uid}\n x=\"0\"\n y=\"0\"\n width={0}\n height={size[1]}\n transition={`width ${duration}ms ease-in-out`}\n />\n )}\n </>,\n );\n }\n}\n\nfunction Null(props) {\n const { Element: SNull, styles, d3, data, hide, color } = props;\n return sstyled(styles)(<SNull render=\"path\" d={d3(data)} hide={hide} color={color} />);\n}\n\nexport default createElement(AreaRoot, {\n Dots,\n Null,\n});\n"],"file":"Area.js"}
1
+ {"version":3,"sources":["../../src/Area.jsx"],"names":["React","area","curveLinear","line","Dots","Component","sstyled","createElement","definedData","scaleOfBandwidth","getNullData","definedNullData","ClipPath","uniqueIDEnhancement","findComponent","AreaRoot","asProps","x","y","color","data","d3Line","d3","duration","uid","SArea","Element","SAreaLine","styles","hide","size","Children","advanceMode","Area","Line","displayName","rect","setAttribute","style","y0","$rootProps","curve","scale","xScale","yScale","yRange","range","defined","p","y1","props","Null","SNull"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { area, curveLinear, line } from 'd3-shape';\nimport Dots from './Dots';\nimport { Component, sstyled } from '@semcore/core';\nimport createElement from './createElement';\nimport { definedData, scaleOfBandwidth, getNullData, definedNullData } from './utils';\nimport ClipPath from './ClipPath';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport findComponent from '@semcore/utils/lib/findComponent';\n\nimport style from './style/area.shadow.css';\n\nclass AreaRoot extends Component {\n static displayName = 'Area';\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = ({ x, y, y0, $rootProps, curve = curveLinear, scale }) => {\n const [xScale, yScale] = scale || $rootProps.scale;\n const yRange = yScale.range();\n\n return {\n d3: area()\n .defined(definedData(x, y))\n .curve(curve)\n .x((p) => scaleOfBandwidth(xScale, p[x]))\n .y0((p) => (p[y0] ? scaleOfBandwidth(yScale, p[y0]) : yRange[0]))\n .y1((p) => scaleOfBandwidth(yScale, p[y])),\n d3Line: line()\n .defined(definedData(x, y))\n .curve(curve)\n .x((p) => scaleOfBandwidth(xScale, p[x]))\n .y((p) => scaleOfBandwidth(yScale, p[y])),\n duration: 500,\n };\n };\n\n getDotsProps() {\n const { x, y, color, data, d3Line } = this.asProps;\n\n return {\n x,\n y,\n data,\n d3: d3Line,\n color,\n };\n }\n\n getNullProps() {\n const { x, y, color, data, d3Line } = this.asProps;\n return {\n data: getNullData(data, definedNullData(x, y), y),\n d3: d3Line,\n color,\n };\n }\n\n getLineProps() {\n const { duration, color, data, d3Line, uid } = this.asProps;\n\n return {\n uid,\n data,\n d3: d3Line,\n color,\n duration,\n };\n }\n\n render() {\n const SArea = this.Element;\n const SAreaLine = 'path';\n const { styles, hide, d3, d3Line, data, color, uid, size, duration, Children } = this.asProps;\n const advanceMode = !!findComponent(Children, [Area.Line.displayName]);\n\n return sstyled(styles)(\n <>\n {!advanceMode && (\n <SAreaLine\n clipPath={`url(#${uid})`}\n d={d3Line(data)}\n color={color}\n use:duration={`${duration}ms`}\n />\n )}\n <SArea\n clipPath={`url(#${uid})`}\n render=\"path\"\n d={d3(data)}\n hide={hide}\n color={color}\n use:duration={`${duration}ms`}\n />\n {duration && (\n <ClipPath\n setAttributeTag={(rect) => {\n rect.setAttribute('width', size[0]);\n }}\n id={uid}\n x=\"0\"\n y=\"0\"\n width={0}\n height={size[1]}\n transition={`width ${duration}ms ease-in-out`}\n />\n )}\n </>,\n );\n }\n}\n\nfunction Line(props) {\n const { Element: SAreaLine, styles, d3, data, color, duration, uid } = props;\n return sstyled(styles)(\n <SAreaLine\n render=\"path\"\n clipPath={`url(#${uid})`}\n d={d3(data)}\n color={color}\n use:duration={`${duration}ms`}\n />,\n );\n}\n\nfunction Null(props) {\n const { Element: SNull, styles, d3, data, hide, color } = props;\n return sstyled(styles)(<SNull render=\"path\" d={d3(data)} hide={hide} color={color} />);\n}\n\nconst Area = createElement(AreaRoot, {\n Dots,\n Null,\n Line,\n});\n\nexport default Area;\n"],"file":"Area.js"}
package/lib/es6/Bar.js CHANGED
@@ -99,15 +99,16 @@ var BarRoot = /*#__PURE__*/function (_Component) {
99
99
  duration = _this$asProps3.duration,
100
100
  uid = _this$asProps3.uid,
101
101
  r = _this$asProps3.r,
102
+ hMin = _this$asProps3.hMin,
102
103
  widthProps = _this$asProps3.width;
103
104
 
104
105
  var _scale = _slicedToArray(scale, 2),
105
106
  xScale = _scale[0],
106
107
  yScale = _scale[1];
107
108
 
108
- var barY = yScale(Math.max(d[y0] ?? 0, d[y])) + offset[1];
109
+ var barY = yScale(Math.max(d[y0] ?? 0, d[y])) + offset[1] - (Object.is(d[y], 0) ? hMin : 0);
109
110
  var barX = xScale(d[x]) + offset[0];
110
- var height = Math.abs(yScale(d[y]) - Math.min(yScale(yScale.domain()[0]), yScale(d[y0] ?? 0)));
111
+ var height = Math.abs(yScale(d[y]) - Math.min(yScale(yScale.domain()[0]), yScale(d[y0] ?? 0))) || hMin;
111
112
  var width = widthProps || getBandwidth(xScale);
112
113
  var dSvg = getRect({
113
114
  x: barX,
@@ -115,7 +116,7 @@ var BarRoot = /*#__PURE__*/function (_Component) {
115
116
  width: width,
116
117
  height: height,
117
118
  radius: Array.isArray(r) ? r[i] : r,
118
- position: d[y] > 0 ? 'top' : 'bottom'
119
+ position: d[y] > 0 || Object.is(d[y], 0) ? 'top' : 'bottom'
119
120
  });
120
121
  return _ref = sstyled(styles), /*#__PURE__*/React.createElement(SBar, _ref.cn("SBar", {
121
122
  "key": "bar-".concat(i),
@@ -166,7 +167,8 @@ _defineProperty(BarRoot, "enhance", [uniqueIDEnhancement()]);
166
167
  _defineProperty(BarRoot, "defaultProps", {
167
168
  offset: [0, 0],
168
169
  duration: 500,
169
- r: 2
170
+ r: 2,
171
+ hMin: 4
170
172
  });
171
173
 
172
174
  function Background(props) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Bar.jsx"],"names":["React","transition","Component","sstyled","uniqueIDEnhancement","createElement","ClipPath","getBandwidth","roundedPath","BarRoot","props","index","asProps","x","data","value","duration","uid","selectRect","selection","selectAll","selectRectNode","node","getAttribute","attr","animationBar","d","i","SBar","Element","styles","color","y","y0","scale","hide","offset","r","widthProps","width","xScale","yScale","barY","Math","max","barX","height","abs","min","domain","dSvg","getRect","radius","Array","isArray","position","size","map","renderBar","bind","style","Background","SBackground","yRange","range","bandwidth"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { transition } from 'd3-transition';\nimport { Component, sstyled } from '@semcore/core';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport createElement from './createElement';\nimport ClipPath from './ClipPath';\nimport { getBandwidth, roundedPath } from './utils';\n\nimport style from './style/bar.shadow.css';\n\nclass BarRoot extends Component {\n static displayName = 'Bar';\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = {\n offset: [0, 0],\n duration: 500,\n r: 2,\n };\n\n getBackgroundProps(props, index) {\n const { x, data } = this.asProps;\n return {\n value: data[index][x],\n };\n }\n\n animationBar() {\n const { duration, uid } = this.asProps;\n const selectRect = transition().selection().selectAll(`#${uid} rect`);\n const selectRectNode = selectRect.node();\n\n if (duration > 0 && selectRectNode && selectRectNode.getAttribute('y') !== '0') {\n selectRect.transition().duration(duration).attr('y', 0);\n }\n }\n\n componentDidUpdate() {\n this.animationBar();\n }\n\n componentDidMount() {\n this.animationBar();\n }\n\n renderBar(d, i) {\n const SBar = this.Element;\n const {\n styles,\n color,\n x,\n y,\n y0,\n scale,\n hide,\n offset,\n duration,\n uid,\n r,\n width: widthProps,\n } = this.asProps;\n\n const [xScale, yScale] = scale;\n const barY = yScale(Math.max(d[y0] ?? 0, d[y])) + offset[1];\n const barX = xScale(d[x]) + offset[0];\n const height = Math.abs(\n yScale(d[y]) - Math.min(yScale(yScale.domain()[0]), yScale(d[y0] ?? 0)),\n );\n const width = widthProps || getBandwidth(xScale);\n const dSvg = getRect({\n x: barX,\n y: barY,\n width,\n height,\n radius: Array.isArray(r) ? r[i] : r,\n position: d[y] > 0 ? 'top' : 'bottom',\n });\n\n return sstyled(styles)(\n <SBar\n key={`bar-${i}`}\n render=\"path\"\n clipPath={`url(#${uid})`}\n __excludeProps={['data', 'scale', 'value']}\n childrenPosition=\"above\"\n value={d}\n index={i}\n hide={hide}\n color={color}\n x={barX}\n y={barY}\n width={width}\n height={height}\n d={dSvg}\n use:duration={`${duration}ms`}\n />,\n );\n }\n render() {\n const { data, uid, size, duration } = this.asProps;\n return (\n <>\n {data.map(this.renderBar.bind(this))}\n {duration && (\n <ClipPath\n key={`${uid}-animation`}\n id={uid}\n x=\"0\"\n y={size[1]}\n width={size[0]}\n height={`${size[1]}px`}\n />\n )}\n </>\n );\n }\n}\n\nfunction Background(props) {\n const { Element: SBackground, styles, scale, value } = props;\n\n const [xScale, yScale] = scale;\n const yRange = yScale.range();\n\n return sstyled(styles)(\n <SBackground\n render=\"rect\"\n childrenPosition=\"above\"\n width={xScale.bandwidth()}\n height={yRange[0] - yRange[1]}\n x={xScale(value)}\n y={yRange[1]}\n />,\n );\n}\n\nfunction getRect({ x, y, width, height, radius, position }) {\n if (height <= radius) return '';\n if (radius) {\n if (position === 'top')\n return roundedPath(x, y, width, height, radius, true, true, false, false);\n return roundedPath(x, y, width, height, radius, false, false, true, true);\n }\n return roundedPath(x, y, width, height, radius);\n}\n\nexport default createElement(BarRoot, { Background });\n"],"file":"Bar.js"}
1
+ {"version":3,"sources":["../../src/Bar.jsx"],"names":["React","transition","Component","sstyled","uniqueIDEnhancement","createElement","ClipPath","getBandwidth","roundedPath","BarRoot","props","index","asProps","x","data","value","duration","uid","selectRect","selection","selectAll","selectRectNode","node","getAttribute","attr","animationBar","d","i","SBar","Element","styles","color","y","y0","scale","hide","offset","r","hMin","widthProps","width","xScale","yScale","barY","Math","max","Object","is","barX","height","abs","min","domain","dSvg","getRect","radius","Array","isArray","position","size","map","renderBar","bind","style","Background","SBackground","yRange","range","bandwidth"],"mappings":";;;;;;;;;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,QAA2B,eAA3B;AACA,SAASC,SAAT,EAAoBC,OAApB,QAAmC,eAAnC;AACA,OAAOC,mBAAP,MAAgC,6BAAhC;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AACA,OAAOC,QAAP,MAAqB,YAArB;AACA,SAASC,YAAT,EAAuBC,WAAvB,QAA0C,SAA1C;;;;;;;;;;;;;;;;;;;;IAIMC,O;;;;;;;;;;;;;WAYJ,4BAAmBC,KAAnB,EAA0BC,KAA1B,EAAiC;AAC/B,0BAAoB,KAAKC,OAAzB;AAAA,UAAQC,CAAR,iBAAQA,CAAR;AAAA,UAAWC,IAAX,iBAAWA,IAAX;AACA,aAAO;AACLC,QAAAA,KAAK,EAAED,IAAI,CAACH,KAAD,CAAJ,CAAYE,CAAZ;AADF,OAAP;AAGD;;;WAED,wBAAe;AACb,2BAA0B,KAAKD,OAA/B;AAAA,UAAQI,QAAR,kBAAQA,QAAR;AAAA,UAAkBC,GAAlB,kBAAkBA,GAAlB;AACA,UAAMC,UAAU,GAAGjB,UAAU,GAAGkB,SAAb,GAAyBC,SAAzB,YAAuCH,GAAvC,WAAnB;AACA,UAAMI,cAAc,GAAGH,UAAU,CAACI,IAAX,EAAvB;;AAEA,UAAIN,QAAQ,GAAG,CAAX,IAAgBK,cAAhB,IAAkCA,cAAc,CAACE,YAAf,CAA4B,GAA5B,MAAqC,GAA3E,EAAgF;AAC9EL,QAAAA,UAAU,CAACjB,UAAX,GAAwBe,QAAxB,CAAiCA,QAAjC,EAA2CQ,IAA3C,CAAgD,GAAhD,EAAqD,CAArD;AACD;AACF;;;WAED,8BAAqB;AACnB,WAAKC,YAAL;AACD;;;WAED,6BAAoB;AAClB,WAAKA,YAAL;AACD;;;WAED,mBAAUC,CAAV,EAAaC,CAAb,EAAgB;AAAA;;AACd,UAAMC,IAAI,GAAG,KAAKC,OAAlB;AACA,2BAcI,KAAKjB,OAdT;AAAA,UACEkB,MADF,kBACEA,MADF;AAAA,UAEEC,KAFF,kBAEEA,KAFF;AAAA,UAGElB,CAHF,kBAGEA,CAHF;AAAA,UAIEmB,CAJF,kBAIEA,CAJF;AAAA,UAKEC,EALF,kBAKEA,EALF;AAAA,UAMEC,KANF,kBAMEA,KANF;AAAA,UAOEC,IAPF,kBAOEA,IAPF;AAAA,UAQEC,MARF,kBAQEA,MARF;AAAA,UASEpB,QATF,kBASEA,QATF;AAAA,UAUEC,GAVF,kBAUEA,GAVF;AAAA,UAWEoB,CAXF,kBAWEA,CAXF;AAAA,UAYEC,IAZF,kBAYEA,IAZF;AAAA,UAaSC,UAbT,kBAaEC,KAbF;;AAgBA,kCAAyBN,KAAzB;AAAA,UAAOO,MAAP;AAAA,UAAeC,MAAf;;AACA,UAAMC,IAAI,GAAGD,MAAM,CAACE,IAAI,CAACC,GAAL,CAASnB,CAAC,CAACO,EAAD,CAAD,IAAS,CAAlB,EAAqBP,CAAC,CAACM,CAAD,CAAtB,CAAD,CAAN,GAAqCI,MAAM,CAAC,CAAD,CAA3C,IAAkDU,MAAM,CAACC,EAAP,CAAUrB,CAAC,CAACM,CAAD,CAAX,EAAgB,CAAhB,IAAqBM,IAArB,GAA4B,CAA9E,CAAb;AACA,UAAMU,IAAI,GAAGP,MAAM,CAACf,CAAC,CAACb,CAAD,CAAF,CAAN,GAAeuB,MAAM,CAAC,CAAD,CAAlC;AACA,UAAMa,MAAM,GACVL,IAAI,CAACM,GAAL,CAASR,MAAM,CAAChB,CAAC,CAACM,CAAD,CAAF,CAAN,GAAeY,IAAI,CAACO,GAAL,CAAST,MAAM,CAACA,MAAM,CAACU,MAAP,GAAgB,CAAhB,CAAD,CAAf,EAAqCV,MAAM,CAAChB,CAAC,CAACO,EAAD,CAAD,IAAS,CAAV,CAA3C,CAAxB,KAAqFK,IADvF;AAEA,UAAME,KAAK,GAAGD,UAAU,IAAIhC,YAAY,CAACkC,MAAD,CAAxC;AACA,UAAMY,IAAI,GAAGC,OAAO,CAAC;AACnBzC,QAAAA,CAAC,EAAEmC,IADgB;AAEnBhB,QAAAA,CAAC,EAAEW,IAFgB;AAGnBH,QAAAA,KAAK,EAALA,KAHmB;AAInBS,QAAAA,MAAM,EAANA,MAJmB;AAKnBM,QAAAA,MAAM,EAAEC,KAAK,CAACC,OAAN,CAAcpB,CAAd,IAAmBA,CAAC,CAACV,CAAD,CAApB,GAA0BU,CALf;AAMnBqB,QAAAA,QAAQ,EAAEhC,CAAC,CAACM,CAAD,CAAD,GAAO,CAAP,IAAYc,MAAM,CAACC,EAAP,CAAUrB,CAAC,CAACM,CAAD,CAAX,EAAgB,CAAhB,CAAZ,GAAiC,KAAjC,GAAyC;AANhC,OAAD,CAApB;AASA,oBAAO7B,OAAO,CAAC2B,MAAD,CAAd,eACE,oBAAC,IAAD;AAAA,6BACcH,CADd;AAAA,kBAES,MAFT;AAAA,mCAGoBV,GAHpB;AAAA,0BAIkB,CAAC,MAAD,EAAS,OAAT,EAAkB,OAAlB,CAJlB;AAAA,4BAKmB,OALnB;AAAA,iBAMSS,CANT;AAAA,iBAOSC,CAPT;AAAA,gBAQQQ,IARR;AAAA,iBASSJ,KATT;AAAA,aAUKiB,IAVL;AAAA,aAWKL,IAXL;AAAA,iBAYSH,KAZT;AAAA,kBAaUS,MAbV;AAAA,aAcKI,IAdL;AAAA,kCAemBrC,QAfnB;AAAA,SADF;AAmBD;;;WACD,kBAAS;AACP,2BAAsC,KAAKJ,OAA3C;AAAA,UAAQE,IAAR,kBAAQA,IAAR;AAAA,UAAcG,GAAd,kBAAcA,GAAd;AAAA,UAAmB0C,IAAnB,kBAAmBA,IAAnB;AAAA,UAAyB3C,QAAzB,kBAAyBA,QAAzB;AACA,0BACE,0CACGF,IAAI,CAAC8C,GAAL,CAAS,KAAKC,SAAL,CAAeC,IAAf,CAAoB,IAApB,CAAT,CADH,EAEG9C,QAAQ,iBACP,oBAAC,QAAD;AACE,QAAA,GAAG,YAAKC,GAAL,eADL;AAEE,QAAA,EAAE,EAAEA,GAFN;AAGE,QAAA,CAAC,EAAC,GAHJ;AAIE,QAAA,CAAC,EAAE0C,IAAI,CAAC,CAAD,CAJT;AAKE,QAAA,KAAK,EAAEA,IAAI,CAAC,CAAD,CALb;AAME,QAAA,MAAM,YAAKA,IAAI,CAAC,CAAD,CAAT;AANR,QAHJ,CADF;AAeD;;;;EA3GmBzD,S;;gBAAhBO,O,iBACiB,K;;gBADjBA,O,WAEWsD,K;;gBAFXtD,O,aAGa,CAACL,mBAAmB,EAApB,C;;gBAHbK,O,kBAKkB;AACpB2B,EAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,CADY;AAEpBpB,EAAAA,QAAQ,EAAE,GAFU;AAGpBqB,EAAAA,CAAC,EAAE,CAHiB;AAIpBC,EAAAA,IAAI,EAAE;AAJc,C;;AAyGxB,SAAS0B,UAAT,CAAoBtD,KAApB,EAA2B;AAAA;;AACzB,MAAiBuD,WAAjB,GAAuDvD,KAAvD,CAAQmB,OAAR;AAAA,MAA8BC,MAA9B,GAAuDpB,KAAvD,CAA8BoB,MAA9B;AAAA,MAAsCI,KAAtC,GAAuDxB,KAAvD,CAAsCwB,KAAtC;AAAA,MAA6CnB,KAA7C,GAAuDL,KAAvD,CAA6CK,KAA7C;;AAEA,+BAAyBmB,KAAzB;AAAA,MAAOO,MAAP;AAAA,MAAeC,MAAf;;AACA,MAAMwB,MAAM,GAAGxB,MAAM,CAACyB,KAAP,EAAf;AAEA,iBAAOhE,OAAO,CAAC2B,MAAD,CAAd,eACE,oBAAC,WAAD;AAAA,cACS,MADT;AAAA,wBAEmB,OAFnB;AAAA,aAGSW,MAAM,CAAC2B,SAAP,EAHT;AAAA,cAIUF,MAAM,CAAC,CAAD,CAAN,GAAYA,MAAM,CAAC,CAAD,CAJ5B;AAAA,SAKKzB,MAAM,CAAC1B,KAAD,CALX;AAAA,SAMKmD,MAAM,CAAC,CAAD;AANX,KADF;AAUD;;AAED,SAASZ,OAAT,QAA4D;AAAA,MAAzCzC,CAAyC,SAAzCA,CAAyC;AAAA,MAAtCmB,CAAsC,SAAtCA,CAAsC;AAAA,MAAnCQ,KAAmC,SAAnCA,KAAmC;AAAA,MAA5BS,MAA4B,SAA5BA,MAA4B;AAAA,MAApBM,MAAoB,SAApBA,MAAoB;AAAA,MAAZG,QAAY,SAAZA,QAAY;AAC1D,MAAIT,MAAM,IAAIM,MAAd,EAAsB,OAAO,EAAP;;AACtB,MAAIA,MAAJ,EAAY;AACV,QAAIG,QAAQ,KAAK,KAAjB,EACE,OAAOlD,WAAW,CAACK,CAAD,EAAImB,CAAJ,EAAOQ,KAAP,EAAcS,MAAd,EAAsBM,MAAtB,EAA8B,IAA9B,EAAoC,IAApC,EAA0C,KAA1C,EAAiD,KAAjD,CAAlB;AACF,WAAO/C,WAAW,CAACK,CAAD,EAAImB,CAAJ,EAAOQ,KAAP,EAAcS,MAAd,EAAsBM,MAAtB,EAA8B,KAA9B,EAAqC,KAArC,EAA4C,IAA5C,EAAkD,IAAlD,CAAlB;AACD;;AACD,SAAO/C,WAAW,CAACK,CAAD,EAAImB,CAAJ,EAAOQ,KAAP,EAAcS,MAAd,EAAsBM,MAAtB,CAAlB;AACD;;AAED,eAAelD,aAAa,CAACI,OAAD,EAAU;AAAEuD,EAAAA,UAAU,EAAVA;AAAF,CAAV,CAA5B","sourcesContent":["import React from 'react';\nimport { transition } from 'd3-transition';\nimport { Component, sstyled } from '@semcore/core';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport createElement from './createElement';\nimport ClipPath from './ClipPath';\nimport { getBandwidth, roundedPath } from './utils';\n\nimport style from './style/bar.shadow.css';\n\nclass BarRoot extends Component {\n static displayName = 'Bar';\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = {\n offset: [0, 0],\n duration: 500,\n r: 2,\n hMin: 4,\n };\n\n getBackgroundProps(props, index) {\n const { x, data } = this.asProps;\n return {\n value: data[index][x],\n };\n }\n\n animationBar() {\n const { duration, uid } = this.asProps;\n const selectRect = transition().selection().selectAll(`#${uid} rect`);\n const selectRectNode = selectRect.node();\n\n if (duration > 0 && selectRectNode && selectRectNode.getAttribute('y') !== '0') {\n selectRect.transition().duration(duration).attr('y', 0);\n }\n }\n\n componentDidUpdate() {\n this.animationBar();\n }\n\n componentDidMount() {\n this.animationBar();\n }\n\n renderBar(d, i) {\n const SBar = this.Element;\n const {\n styles,\n color,\n x,\n y,\n y0,\n scale,\n hide,\n offset,\n duration,\n uid,\n r,\n hMin,\n width: widthProps,\n } = this.asProps;\n\n const [xScale, yScale] = scale;\n const barY = yScale(Math.max(d[y0] ?? 0, d[y])) + offset[1] - (Object.is(d[y], 0) ? hMin : 0);\n const barX = xScale(d[x]) + offset[0];\n const height =\n Math.abs(yScale(d[y]) - Math.min(yScale(yScale.domain()[0]), yScale(d[y0] ?? 0))) || hMin;\n const width = widthProps || getBandwidth(xScale);\n const dSvg = getRect({\n x: barX,\n y: barY,\n width,\n height,\n radius: Array.isArray(r) ? r[i] : r,\n position: d[y] > 0 || Object.is(d[y], 0) ? 'top' : 'bottom',\n });\n\n return sstyled(styles)(\n <SBar\n key={`bar-${i}`}\n render=\"path\"\n clipPath={`url(#${uid})`}\n __excludeProps={['data', 'scale', 'value']}\n childrenPosition=\"above\"\n value={d}\n index={i}\n hide={hide}\n color={color}\n x={barX}\n y={barY}\n width={width}\n height={height}\n d={dSvg}\n use:duration={`${duration}ms`}\n />,\n );\n }\n render() {\n const { data, uid, size, duration } = this.asProps;\n return (\n <>\n {data.map(this.renderBar.bind(this))}\n {duration && (\n <ClipPath\n key={`${uid}-animation`}\n id={uid}\n x=\"0\"\n y={size[1]}\n width={size[0]}\n height={`${size[1]}px`}\n />\n )}\n </>\n );\n }\n}\n\nfunction Background(props) {\n const { Element: SBackground, styles, scale, value } = props;\n\n const [xScale, yScale] = scale;\n const yRange = yScale.range();\n\n return sstyled(styles)(\n <SBackground\n render=\"rect\"\n childrenPosition=\"above\"\n width={xScale.bandwidth()}\n height={yRange[0] - yRange[1]}\n x={xScale(value)}\n y={yRange[1]}\n />,\n );\n}\n\nfunction getRect({ x, y, width, height, radius, position }) {\n if (height <= radius) return '';\n if (radius) {\n if (position === 'top')\n return roundedPath(x, y, width, height, radius, true, true, false, false);\n return roundedPath(x, y, width, height, radius, false, false, true, true);\n }\n return roundedPath(x, y, width, height, radius);\n}\n\nexport default createElement(BarRoot, { Background });\n"],"file":"Bar.js"}
package/lib/es6/Bubble.js CHANGED
@@ -177,6 +177,7 @@ var BubbleRoot = /*#__PURE__*/function (_Component) {
177
177
  "color": d[color] ?? color
178
178
  }), "+"), /*#__PURE__*/React.createElement(SBubble, _ref.cn("SBubble", {
179
179
  "id": "".concat(uid).concat(uid),
180
+ "index": i,
180
181
  "render": "circle",
181
182
  "clipPath": "url(#".concat(uid, ")"),
182
183
  "cx": xScale(d[x]) + offset[0],
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Bubble.jsx"],"names":["React","Component","sstyled","canUseDOM","CONSTANT","measureText","createElement","uniqueIDEnhancement","transition","ClipPath","scaleSqrt","BubbleRoot","document","visible","props","x","clientX","y","clientY","eventEmitter","asProps","virtualElement","getBoundingClientRect","generateGetBoundingClientRect","VIRTUAL_ELEMENT","emit","width","height","top","right","bottom","left","duration","uid","data","value","z","domain","Math","max","map","el","range","selectRect","selection","selectAll","attr","selectRectNode","node","_","ind","animationCircle","d","i","color","scale","offset","styles","label","markedCross","size","xScale","yScale","SBubble","Element","SCenter","SLabel","margin","min","labelPosition","labelDistance","bindHandlerTooltip","xIndex","xSize","abs","ySize","xMargin","yMargin","renderCircle","bind","style","Bubble"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Component, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/utils/lib/canUseDOM';\nimport { CONSTANT, measureText } from './utils';\nimport createElement from './createElement';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport { transition } from 'd3-transition';\nimport style from './style/bubble.shadow.css';\nimport ClipPath from './ClipPath';\nimport { scaleSqrt } from 'd3-scale';\n\nclass BubbleRoot extends Component {\n static displayName = 'Bubble';\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = {\n offset: [0, 0],\n duration: 500,\n markedCross: true,\n };\n\n virtualElement = canUseDOM() ? document.createElement('div') : {};\n\n generateGetBoundingClientRect(x = 0, y = 0) {\n return () => ({ width: 0, height: 0, top: y, right: x, bottom: y, left: x });\n }\n\n bindHandlerTooltip =\n (visible, props) =>\n ({ clientX: x, clientY: y }) => {\n const { eventEmitter } = this.asProps;\n this.virtualElement.getBoundingClientRect = this.generateGetBoundingClientRect(x, y);\n this.virtualElement[CONSTANT.VIRTUAL_ELEMENT] = true;\n eventEmitter.emit('onTooltipVisible', visible, props, this.virtualElement);\n };\n\n animationCircle() {\n const { duration, uid, data, value } = this.asProps;\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[value]))])\n .range([5.5, 50.5]);\n\n const selectRect = transition().selection().selectAll(`[id^=${uid}${uid}]`).attr('r', 0);\n\n const selectRectNode = selectRect.node();\n if (duration > 0 && selectRectNode) {\n selectRect\n .transition()\n .duration(duration)\n .attr('r', function (_, ind) {\n return z(data[ind][value]);\n });\n }\n }\n\n componentDidUpdate() {\n this.animationCircle();\n }\n\n componentDidMount() {\n this.animationCircle();\n }\n\n renderCircle(d, i) {\n const {\n color,\n scale,\n x,\n y,\n offset,\n styles,\n uid,\n duration,\n value,\n label,\n markedCross,\n size,\n data,\n } = this.asProps;\n const [xScale, yScale] = scale;\n\n const SBubble = this.Element;\n const SCenter = 'text';\n const SLabel = 'text';\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[value]))])\n .range([5.5, 50.5]);\n\n const margin = Math.min(xScale.range()[0], xScale.range()[1]);\n\n const labelPosition =\n size[0] - 2 * margin - (xScale(d[x]) + offset[0] + z(d[value])) < measureText(d[label])\n ? 'right'\n : 'left';\n const labelDistance = {\n right: xScale(d[x]) + offset[0] - z(d[value]),\n left: xScale(d[x]) + offset[0] + z(d[value]),\n }[labelPosition];\n\n return sstyled(styles)(\n <g\n key={`circle(#${i})`}\n onMouseMove={this.bindHandlerTooltip(true, { ...this.props, xIndex: i })}\n onMouseLeave={this.bindHandlerTooltip(false, { ...this.props, xIndex: i })}\n >\n {markedCross && (\n <SCenter\n x={xScale(d[x]) + offset[0]}\n y={yScale(d[y]) + offset[1]}\n dy=\".3em\"\n clipPath={`url(#${uid})`}\n color={d[color] ?? color}\n >\n &#43;\n </SCenter>\n )}\n <SBubble\n id={`${uid}${uid}`}\n render=\"circle\"\n clipPath={`url(#${uid})`}\n cx={xScale(d[x]) + offset[0]}\n cy={yScale(d[y]) + offset[1]}\n color={d[color]}\n r={z(d[value])}\n use:duration={`${duration}ms`}\n />\n {d[label] && (\n <SLabel\n x={labelDistance}\n y={yScale(d[y]) + offset[1]}\n dy=\".3em\"\n clipPath={`url(#${uid})`}\n position={labelPosition}\n color={d[color]}\n >\n {d[label]}\n </SLabel>\n )}\n </g>,\n );\n }\n\n render() {\n const { data, uid, scale } = this.asProps;\n const [xScale, yScale] = scale;\n const xSize = Math.abs(xScale.range()[0] - xScale.range()[1]);\n const ySize = Math.abs(yScale.range()[0] - yScale.range()[1]);\n const xMargin = Math.min(xScale.range()[0], xScale.range()[1]);\n const yMargin = Math.min(yScale.range()[0], yScale.range()[1]);\n\n return (\n <>\n {data.map(this.renderCircle.bind(this))}\n {data.map(this.animationCircle.bind(this))}\n <ClipPath id={uid} x={xMargin} y={yMargin} width={`${xSize}px`} height={`${ySize}px`} />\n </>\n );\n }\n}\n\nconst Bubble = createElement(BubbleRoot);\n\nexport default Bubble;\n"],"file":"Bubble.js"}
1
+ {"version":3,"sources":["../../src/Bubble.jsx"],"names":["React","Component","sstyled","canUseDOM","CONSTANT","measureText","createElement","uniqueIDEnhancement","transition","ClipPath","scaleSqrt","BubbleRoot","document","visible","props","x","clientX","y","clientY","eventEmitter","asProps","virtualElement","getBoundingClientRect","generateGetBoundingClientRect","VIRTUAL_ELEMENT","emit","width","height","top","right","bottom","left","duration","uid","data","value","z","domain","Math","max","map","el","range","selectRect","selection","selectAll","attr","selectRectNode","node","_","ind","animationCircle","d","i","color","scale","offset","styles","label","markedCross","size","xScale","yScale","SBubble","Element","SCenter","SLabel","margin","min","labelPosition","labelDistance","bindHandlerTooltip","xIndex","xSize","abs","ySize","xMargin","yMargin","renderCircle","bind","style","Bubble"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Component, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/utils/lib/canUseDOM';\nimport { CONSTANT, measureText } from './utils';\nimport createElement from './createElement';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport { transition } from 'd3-transition';\nimport style from './style/bubble.shadow.css';\nimport ClipPath from './ClipPath';\nimport { scaleSqrt } from 'd3-scale';\n\nclass BubbleRoot extends Component {\n static displayName = 'Bubble';\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = {\n offset: [0, 0],\n duration: 500,\n markedCross: true,\n };\n\n virtualElement = canUseDOM() ? document.createElement('div') : {};\n\n generateGetBoundingClientRect(x = 0, y = 0) {\n return () => ({ width: 0, height: 0, top: y, right: x, bottom: y, left: x });\n }\n\n bindHandlerTooltip =\n (visible, props) =>\n ({ clientX: x, clientY: y }) => {\n const { eventEmitter } = this.asProps;\n this.virtualElement.getBoundingClientRect = this.generateGetBoundingClientRect(x, y);\n this.virtualElement[CONSTANT.VIRTUAL_ELEMENT] = true;\n eventEmitter.emit('onTooltipVisible', visible, props, this.virtualElement);\n };\n\n animationCircle() {\n const { duration, uid, data, value } = this.asProps;\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[value]))])\n .range([5.5, 50.5]);\n\n const selectRect = transition().selection().selectAll(`[id^=${uid}${uid}]`).attr('r', 0);\n\n const selectRectNode = selectRect.node();\n if (duration > 0 && selectRectNode) {\n selectRect\n .transition()\n .duration(duration)\n .attr('r', function (_, ind) {\n return z(data[ind][value]);\n });\n }\n }\n\n componentDidUpdate() {\n this.animationCircle();\n }\n\n componentDidMount() {\n this.animationCircle();\n }\n\n renderCircle(d, i) {\n const {\n color,\n scale,\n x,\n y,\n offset,\n styles,\n uid,\n duration,\n value,\n label,\n markedCross,\n size,\n data,\n } = this.asProps;\n const [xScale, yScale] = scale;\n\n const SBubble = this.Element;\n const SCenter = 'text';\n const SLabel = 'text';\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[value]))])\n .range([5.5, 50.5]);\n\n const margin = Math.min(xScale.range()[0], xScale.range()[1]);\n\n const labelPosition =\n size[0] - 2 * margin - (xScale(d[x]) + offset[0] + z(d[value])) < measureText(d[label])\n ? 'right'\n : 'left';\n const labelDistance = {\n right: xScale(d[x]) + offset[0] - z(d[value]),\n left: xScale(d[x]) + offset[0] + z(d[value]),\n }[labelPosition];\n\n return sstyled(styles)(\n <g\n key={`circle(#${i})`}\n onMouseMove={this.bindHandlerTooltip(true, { ...this.props, xIndex: i })}\n onMouseLeave={this.bindHandlerTooltip(false, { ...this.props, xIndex: i })}\n >\n {markedCross && (\n <SCenter\n x={xScale(d[x]) + offset[0]}\n y={yScale(d[y]) + offset[1]}\n dy=\".3em\"\n clipPath={`url(#${uid})`}\n color={d[color] ?? color}\n >\n &#43;\n </SCenter>\n )}\n <SBubble\n id={`${uid}${uid}`}\n index={i}\n render=\"circle\"\n clipPath={`url(#${uid})`}\n cx={xScale(d[x]) + offset[0]}\n cy={yScale(d[y]) + offset[1]}\n color={d[color]}\n r={z(d[value])}\n use:duration={`${duration}ms`}\n />\n {d[label] && (\n <SLabel\n x={labelDistance}\n y={yScale(d[y]) + offset[1]}\n dy=\".3em\"\n clipPath={`url(#${uid})`}\n position={labelPosition}\n color={d[color]}\n >\n {d[label]}\n </SLabel>\n )}\n </g>,\n );\n }\n\n render() {\n const { data, uid, scale } = this.asProps;\n const [xScale, yScale] = scale;\n const xSize = Math.abs(xScale.range()[0] - xScale.range()[1]);\n const ySize = Math.abs(yScale.range()[0] - yScale.range()[1]);\n const xMargin = Math.min(xScale.range()[0], xScale.range()[1]);\n const yMargin = Math.min(yScale.range()[0], yScale.range()[1]);\n\n return (\n <>\n {data.map(this.renderCircle.bind(this))}\n {data.map(this.animationCircle.bind(this))}\n <ClipPath id={uid} x={xMargin} y={yMargin} width={`${xSize}px`} height={`${ySize}px`} />\n </>\n );\n }\n}\n\nconst Bubble = createElement(BubbleRoot);\n\nexport default Bubble;\n"],"file":"Bubble.js"}