@semcore/d3-chart 1.0.0 → 1.3.1-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 (55) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/lib/cjs/Area.js +2 -1
  3. package/lib/cjs/Area.js.map +1 -1
  4. package/lib/cjs/Bar.js +44 -12
  5. package/lib/cjs/Bar.js.map +1 -1
  6. package/lib/cjs/ClipPath.js +1 -1
  7. package/lib/cjs/ClipPath.js.map +1 -1
  8. package/lib/cjs/Donut.js +125 -57
  9. package/lib/cjs/Donut.js.map +1 -1
  10. package/lib/cjs/GroupBar.js +5 -5
  11. package/lib/cjs/HorizontalBar.js +45 -9
  12. package/lib/cjs/HorizontalBar.js.map +1 -1
  13. package/lib/cjs/Hover.js +24 -6
  14. package/lib/cjs/Hover.js.map +1 -1
  15. package/lib/cjs/Line.js +2 -1
  16. package/lib/cjs/Line.js.map +1 -1
  17. package/lib/cjs/StackBar.js +6 -6
  18. package/lib/cjs/StackBar.js.map +1 -1
  19. package/lib/cjs/StackedArea.js +6 -6
  20. package/lib/cjs/utils.js +67 -1
  21. package/lib/cjs/utils.js.map +1 -1
  22. package/lib/es6/Area.js +3 -2
  23. package/lib/es6/Area.js.map +1 -1
  24. package/lib/es6/Bar.js +42 -11
  25. package/lib/es6/Bar.js.map +1 -1
  26. package/lib/es6/ClipPath.js +1 -1
  27. package/lib/es6/ClipPath.js.map +1 -1
  28. package/lib/es6/Donut.js +124 -56
  29. package/lib/es6/Donut.js.map +1 -1
  30. package/lib/es6/GroupBar.js +5 -5
  31. package/lib/es6/HorizontalBar.js +44 -9
  32. package/lib/es6/HorizontalBar.js.map +1 -1
  33. package/lib/es6/Hover.js +24 -7
  34. package/lib/es6/Hover.js.map +1 -1
  35. package/lib/es6/Line.js +3 -2
  36. package/lib/es6/Line.js.map +1 -1
  37. package/lib/es6/StackBar.js +6 -6
  38. package/lib/es6/StackBar.js.map +1 -1
  39. package/lib/es6/StackedArea.js +6 -6
  40. package/lib/es6/utils.js +61 -1
  41. package/lib/es6/utils.js.map +1 -1
  42. package/lib/types/Bar.d.ts +4 -0
  43. package/lib/types/HorizontalBar.d.ts +4 -0
  44. package/package.json +5 -4
  45. package/src/Area.js +3 -3
  46. package/src/Bar.js +58 -20
  47. package/src/ClipPath.js +1 -1
  48. package/src/Donut.js +61 -4
  49. package/src/HorizontalBar.js +46 -7
  50. package/src/Hover.js +17 -23
  51. package/src/Line.js +3 -3
  52. package/src/StackBar.js +1 -1
  53. package/src/types/Bar.d.ts +4 -0
  54. package/src/types/HorizontalBar.d.ts +4 -0
  55. package/src/utils.js +52 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Area.js"],"names":["React","area","curveLinear","line","Dots","Component","sstyled","createElement","definedData","scaleOfBandwidth","getNullData","ClipPath","uniqueIDEnhancement","AreaRoot","asProps","x","y","color","data","d3Line","d3","defined","SArea","Element","SAreaLine","styles","hide","uid","size","duration","rect","setAttribute","style","y0","$rootProps","curve","scale","xScale","yScale","yRange","range","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 } 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 }) => {\n const [xScale, yScale] = $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 color: '#50aef4',\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 { y, color, data, d3Line } = this.asProps;\n return {\n data: getNullData(data, d3Line.defined(), 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.js"],"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 }) => {\n const [xScale, yScale] = $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 color: '#50aef4',\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"}
package/lib/es6/Bar.js CHANGED
@@ -12,11 +12,12 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
12
12
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
13
13
 
14
14
  import React from 'react';
15
+ import { transition } from 'd3-transition';
15
16
  import { Component, sstyled } from '@semcore/core';
17
+ import uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';
16
18
  import createElement from './createElement';
17
19
  import ClipPath from './ClipPath';
18
- import uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';
19
- import { transition } from 'd3-transition';
20
+ import { getBandwidth, roundedPath } from './utils';
20
21
 
21
22
  /*__reshadow-styles__:"./style/bar.shadow.css"*/
22
23
  var style = (
@@ -95,15 +96,23 @@ var BarRoot = /*#__PURE__*/function (_Component) {
95
96
  hide = _this$asProps3.hide,
96
97
  offset = _this$asProps3.offset,
97
98
  duration = _this$asProps3.duration,
98
- uid = _this$asProps3.uid;
99
+ uid = _this$asProps3.uid,
100
+ r = _this$asProps3.r,
101
+ $index = _this$asProps3.$index,
102
+ widthProps = _this$asProps3.width;
99
103
 
100
104
  var _scale = _slicedToArray(scale, 2),
101
105
  xScale = _scale[0],
102
106
  yScale = _scale[1];
103
107
 
104
- return _ref = sstyled(styles), /*#__PURE__*/React.createElement(SBar, _ref.cn("SBar", {
108
+ var barY = yScale(Math.max((_d$y = d[y0]) !== null && _d$y !== void 0 ? _d$y : 0, d[y])) + offset[1];
109
+ var barX = xScale(d[x]) + offset[0];
110
+ var height = Math.abs(yScale(d[y]) - Math.min(yScale(yScale.domain()[0]), yScale((_d$y2 = d[y0]) !== null && _d$y2 !== void 0 ? _d$y2 : 0)));
111
+ var width = widthProps || getBandwidth(xScale);
112
+ var isRounded = r !== 0;
113
+ return _ref = sstyled(styles), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SBar, _ref.cn("SBar", {
105
114
  "key": "bar-".concat(i),
106
- "render": "rect",
115
+ "render": "path",
107
116
  "clipPath": "url(#".concat(uid, ")"),
108
117
  "__excludeProps": ['data', 'scale', 'value'],
109
118
  "childrenPosition": "above",
@@ -111,12 +120,16 @@ var BarRoot = /*#__PURE__*/function (_Component) {
111
120
  "index": i,
112
121
  "hide": hide,
113
122
  "color": color,
114
- "width": xScale.bandwidth(),
115
- "height": Math.abs(yScale(d[y]) - Math.min(yScale(yScale.domain()[0]), yScale((_d$y = d[y0]) !== null && _d$y !== void 0 ? _d$y : 0))),
116
- "x": xScale(d[x]) + offset[0],
117
- "y": yScale(Math.max((_d$y2 = d[y0]) !== null && _d$y2 !== void 0 ? _d$y2 : 0, d[y])) + offset[1],
123
+ "d": getRect({
124
+ x: barX,
125
+ y: isRounded ? d[y] > 0 ? barY - r : barY : barY,
126
+ width: width,
127
+ height: isRounded ? height + r : height,
128
+ radius: r,
129
+ position: d[y] > 0 ? 'top' : 'bottom'
130
+ }),
118
131
  "use:duration": "".concat(duration, "ms")
119
- }));
132
+ })));
120
133
  }
121
134
  }, {
122
135
  key: "render",
@@ -149,7 +162,8 @@ _defineProperty(BarRoot, "enhance", [uniqueIDEnhancement()]);
149
162
  _defineProperty(BarRoot, "defaultProps", {
150
163
  color: '#50aef4',
151
164
  offset: [0, 0],
152
- duration: 500
165
+ duration: 500,
166
+ r: 2
153
167
  });
154
168
 
155
169
  function Background(props) {
@@ -175,6 +189,23 @@ function Background(props) {
175
189
  }));
176
190
  }
177
191
 
192
+ function getRect(_ref3) {
193
+ var x = _ref3.x,
194
+ y = _ref3.y,
195
+ width = _ref3.width,
196
+ height = _ref3.height,
197
+ radius = _ref3.radius,
198
+ position = _ref3.position;
199
+ if (height <= radius) return '';
200
+
201
+ if (radius) {
202
+ if (position === 'top') return roundedPath(x, y, width, height, radius, true, true, false, false);
203
+ return roundedPath(x, y, width, height, radius, false, false, true, true);
204
+ }
205
+
206
+ return roundedPath(x, y, width, height, radius);
207
+ }
208
+
178
209
  export default createElement(BarRoot, {
179
210
  Background: Background
180
211
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Bar.js"],"names":["React","Component","sstyled","createElement","ClipPath","uniqueIDEnhancement","transition","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","xScale","yScale","bandwidth","Math","abs","min","domain","max","size","map","renderBar","bind","style","Background","SBackground","yRange","range"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Component, sstyled } from '@semcore/core';\nimport createElement from './createElement';\nimport ClipPath from './ClipPath';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport { transition } from 'd3-transition';\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 color: '#50aef4',\n offset: [0, 0],\n duration: 500,\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()\n .selection()\n .selectAll(`#${uid} rect`);\n const selectRectNode = selectRect.node();\n\n if (duration > 0 && selectRectNode && selectRectNode.getAttribute('y') !== '0') {\n selectRect\n .transition()\n .duration(duration)\n .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 { styles, color, x, y, y0, scale, hide, offset, duration, uid } = this.asProps;\n\n const [xScale, yScale] = scale;\n\n return sstyled(styles)(\n <SBar\n key={`bar-${i}`}\n render=\"rect\"\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 // TODO: https://github.com/airbnb/visx/blob/2fa674e7d7fdc9cffea13e8bf644d46dd6f0db5b/packages/visx-shape/src/util/getBandwidth.ts#L3\n width={xScale.bandwidth()}\n height={Math.abs(yScale(d[y]) - Math.min(yScale(yScale.domain()[0]), yScale(d[y0] ?? 0)))}\n x={xScale(d[x]) + offset[0]}\n y={yScale(Math.max(d[y0] ?? 0, d[y])) + offset[1]}\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\nexport default createElement(BarRoot, { Background });\n"],"file":"Bar.js"}
1
+ {"version":3,"sources":["../../src/Bar.js"],"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","$index","widthProps","width","xScale","yScale","barY","Math","max","barX","height","abs","min","domain","isRounded","getRect","radius","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 color: '#50aef4',\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()\n .selection()\n .selectAll(`#${uid} rect`);\n const selectRectNode = selectRect.node();\n\n if (duration > 0 && selectRectNode && selectRectNode.getAttribute('y') !== '0') {\n selectRect\n .transition()\n .duration(duration)\n .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 $index,\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 isRounded = r !== 0;\n\n return sstyled(styles)(\n <>\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 d={getRect({\n x: barX,\n y: isRounded ? (d[y] > 0 ? barY - r : barY) : barY,\n width,\n height: isRounded ? height + r : height,\n radius: r,\n position: d[y] > 0 ? 'top' : 'bottom',\n })}\n use:duration={`${duration}ms`}\n />\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"}
@@ -48,7 +48,7 @@ var ClipPath = /*#__PURE__*/function (_Component) {
48
48
  id = _this$asProps.id,
49
49
  tag = _this$asProps.tag,
50
50
  setAttributeTag = _this$asProps.setAttributeTag;
51
- if (!document || !document.querySelector("#".concat(id))) return;
51
+ if (!document || !id || !document.querySelector("#".concat(id))) return;
52
52
  var svg = document.querySelector("#".concat(id)).closest('svg');
53
53
  Array.from(svg.querySelectorAll("[clip-path=\"url(#".concat(id, ")\"]"))).forEach(function (node) {
54
54
  node && node.getTotalLength && node.getTotalLength();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ClipPath.js"],"names":["React","createComponent","Component","propsForElement","ClipPath","createRef","asProps","id","tag","setAttributeTag","document","querySelector","svg","closest","Array","from","querySelectorAll","forEach","node","getTotalLength","transition","Tag","style","className","other","refClipPath"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,eAAP,IAA0BC,SAA1B,QAA2C,eAA3C;AACA,OAAOC,eAAP,MAA4B,oCAA5B;;IAEMC,Q;;;;;;;;;;;;;;;;+EAQUJ,KAAK,CAACK,SAAN,E;;;;;;;WAEd,6BAAoB;AAAA,0BACmB,KAAKC,OADxB;AAAA,UACVC,EADU,iBACVA,EADU;AAAA,UACNC,GADM,iBACNA,GADM;AAAA,UACDC,eADC,iBACDA,eADC;AAElB,UAAI,CAACC,QAAD,IAAa,CAACA,QAAQ,CAACC,aAAT,YAA2BJ,EAA3B,EAAlB,EAAoD;AACpD,UAAMK,GAAG,GAAGF,QAAQ,CAACC,aAAT,YAA2BJ,EAA3B,GAAiCM,OAAjC,CAAyC,KAAzC,CAAZ;AACAC,MAAAA,KAAK,CAACC,IAAN,CAAWH,GAAG,CAACI,gBAAJ,6BAAyCT,EAAzC,UAAX,EAA8DU,OAA9D,CAAsE,UAACC,IAAD,EAAU;AAC9EA,QAAAA,IAAI,IAAIA,IAAI,CAACC,cAAb,IAA+BD,IAAI,CAACC,cAAL,EAA/B;AACD,OAFD;AAGAV,MAAAA,eAAe,IACbK,KAAK,CAACC,IAAN,CAAWL,QAAQ,CAACM,gBAAT,YAA8BT,EAA9B,cAAoCC,GAApC,EAAX,EAAuDS,OAAvD,CAA+DR,eAA/D,CADF;AAED;;;WAED,kBAAS;AAAA,2BAC0D,KAAKH,OAD/D;AAAA,UACCC,EADD,kBACCA,EADD;AAAA,UACKa,UADL,kBACKA,UADL;AAAA,UACsBC,GADtB,kBACiBb,GADjB;AAAA,UAC2Bc,KAD3B,kBAC2BA,KAD3B;AAAA,UACkCC,SADlC,kBACkCA,SADlC;AAAA,UACgDC,KADhD;;AAEP,0BACE;AAAU,QAAA,GAAG,EAAE,KAAKC,WAApB;AAAiC,QAAA,EAAE,EAAElB;AAArC,sBACE,oBAAC,GAAD;AAAK,QAAA,KAAK,kCAAOe,KAAP;AAAcF,UAAAA,UAAU,EAAVA;AAAd;AAAV,SAA0CjB,eAAe,CAACqB,KAAD,EAAQH,GAAR,CAAzD,EADF,CADF;AAKD;;;;EA5BoBnB,S;;gBAAjBE,Q,kBACkB;AACpBI,EAAAA,GAAG,EAAE,MADe;AAEpBD,EAAAA,EAAE,EAAE,EAFgB;AAGpBa,EAAAA,UAAU,EAAE,EAHQ;AAIpBX,EAAAA,eAAe,EAAE;AAJG,C;;AA8BxB,eAAeR,eAAe,CAACG,QAAD,CAA9B","sourcesContent":["import React from 'react';\nimport createComponent, { Component } from '@semcore/core';\nimport propsForElement from '@semcore/utils/lib/propsForElement';\n\nclass ClipPath extends Component {\n static defaultProps = {\n tag: 'rect',\n id: '',\n transition: '',\n setAttributeTag: null,\n };\n\n refClipPath = React.createRef();\n\n componentDidMount() {\n const { id, tag, setAttributeTag } = this.asProps;\n if (!document || !document.querySelector(`#${id}`)) return;\n const svg = document.querySelector(`#${id}`).closest('svg');\n Array.from(svg.querySelectorAll(`[clip-path=\"url(#${id})\"]`)).forEach((node) => {\n node && node.getTotalLength && node.getTotalLength();\n });\n setAttributeTag &&\n Array.from(document.querySelectorAll(`#${id} ${tag}`)).forEach(setAttributeTag);\n }\n\n render() {\n const { id, transition, tag: Tag, style, className, ...other } = this.asProps;\n return (\n <clipPath ref={this.refClipPath} id={id}>\n <Tag style={{ ...style, transition }} {...propsForElement(other, Tag)} />\n </clipPath>\n );\n }\n}\n\nexport default createComponent(ClipPath);\n"],"file":"ClipPath.js"}
1
+ {"version":3,"sources":["../../src/ClipPath.js"],"names":["React","createComponent","Component","propsForElement","ClipPath","createRef","asProps","id","tag","setAttributeTag","document","querySelector","svg","closest","Array","from","querySelectorAll","forEach","node","getTotalLength","transition","Tag","style","className","other","refClipPath"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,eAAP,IAA0BC,SAA1B,QAA2C,eAA3C;AACA,OAAOC,eAAP,MAA4B,oCAA5B;;IAEMC,Q;;;;;;;;;;;;;;;;+EAQUJ,KAAK,CAACK,SAAN,E;;;;;;;WAEd,6BAAoB;AAAA,0BACmB,KAAKC,OADxB;AAAA,UACVC,EADU,iBACVA,EADU;AAAA,UACNC,GADM,iBACNA,GADM;AAAA,UACDC,eADC,iBACDA,eADC;AAElB,UAAI,CAACC,QAAD,IAAa,CAACH,EAAd,IAAoB,CAACG,QAAQ,CAACC,aAAT,YAA2BJ,EAA3B,EAAzB,EAA2D;AAC3D,UAAMK,GAAG,GAAGF,QAAQ,CAACC,aAAT,YAA2BJ,EAA3B,GAAiCM,OAAjC,CAAyC,KAAzC,CAAZ;AACAC,MAAAA,KAAK,CAACC,IAAN,CAAWH,GAAG,CAACI,gBAAJ,6BAAyCT,EAAzC,UAAX,EAA8DU,OAA9D,CAAsE,UAACC,IAAD,EAAU;AAC9EA,QAAAA,IAAI,IAAIA,IAAI,CAACC,cAAb,IAA+BD,IAAI,CAACC,cAAL,EAA/B;AACD,OAFD;AAGAV,MAAAA,eAAe,IACbK,KAAK,CAACC,IAAN,CAAWL,QAAQ,CAACM,gBAAT,YAA8BT,EAA9B,cAAoCC,GAApC,EAAX,EAAuDS,OAAvD,CAA+DR,eAA/D,CADF;AAED;;;WAED,kBAAS;AAAA,2BAC0D,KAAKH,OAD/D;AAAA,UACCC,EADD,kBACCA,EADD;AAAA,UACKa,UADL,kBACKA,UADL;AAAA,UACsBC,GADtB,kBACiBb,GADjB;AAAA,UAC2Bc,KAD3B,kBAC2BA,KAD3B;AAAA,UACkCC,SADlC,kBACkCA,SADlC;AAAA,UACgDC,KADhD;;AAEP,0BACE;AAAU,QAAA,GAAG,EAAE,KAAKC,WAApB;AAAiC,QAAA,EAAE,EAAElB;AAArC,sBACE,oBAAC,GAAD;AAAK,QAAA,KAAK,kCAAOe,KAAP;AAAcF,UAAAA,UAAU,EAAVA;AAAd;AAAV,SAA0CjB,eAAe,CAACqB,KAAD,EAAQH,GAAR,CAAzD,EADF,CADF;AAKD;;;;EA5BoBnB,S;;gBAAjBE,Q,kBACkB;AACpBI,EAAAA,GAAG,EAAE,MADe;AAEpBD,EAAAA,EAAE,EAAE,EAFgB;AAGpBa,EAAAA,UAAU,EAAE,EAHQ;AAIpBX,EAAAA,eAAe,EAAE;AAJG,C;;AA8BxB,eAAeR,eAAe,CAACG,QAAD,CAA9B","sourcesContent":["import React from 'react';\nimport createComponent, { Component } from '@semcore/core';\nimport propsForElement from '@semcore/utils/lib/propsForElement';\n\nclass ClipPath extends Component {\n static defaultProps = {\n tag: 'rect',\n id: '',\n transition: '',\n setAttributeTag: null,\n };\n\n refClipPath = React.createRef();\n\n componentDidMount() {\n const { id, tag, setAttributeTag } = this.asProps;\n if (!document || !id || !document.querySelector(`#${id}`)) return;\n const svg = document.querySelector(`#${id}`).closest('svg');\n Array.from(svg.querySelectorAll(`[clip-path=\"url(#${id})\"]`)).forEach((node) => {\n node && node.getTotalLength && node.getTotalLength();\n });\n setAttributeTag &&\n Array.from(document.querySelectorAll(`#${id} ${tag}`)).forEach(setAttributeTag);\n }\n\n render() {\n const { id, transition, tag: Tag, style, className, ...other } = this.asProps;\n return (\n <clipPath ref={this.refClipPath} id={id}>\n <Tag style={{ ...style, transition }} {...propsForElement(other, Tag)} />\n </clipPath>\n );\n }\n}\n\nexport default createComponent(ClipPath);\n"],"file":"ClipPath.js"}
package/lib/es6/Donut.js CHANGED
@@ -1,4 +1,3 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
1
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
2
  import _createClass from "@babel/runtime/helpers/createClass";
4
3
  import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
@@ -6,6 +5,7 @@ import _inherits from "@babel/runtime/helpers/inherits";
6
5
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
6
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
7
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
9
9
  import { sstyled as _sstyled } from "@semcore/core";
10
10
 
11
11
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
@@ -82,6 +82,34 @@ function animationUpdatePie(_ref4) {
82
82
  };
83
83
  }
84
84
 
85
+ function animationHoverPie(_ref5) {
86
+ var d = _ref5.d,
87
+ selector = _ref5.selector,
88
+ duration = _ref5.duration,
89
+ innerRadius = _ref5.innerRadius,
90
+ outerRadius = _ref5.outerRadius;
91
+
92
+ if (duration > 0) {
93
+ transition().selection().select(selector).transition().duration(duration).attrTween('d', function () {
94
+ if (!d) return function () {
95
+ return '';
96
+ };
97
+
98
+ var _outerRadius = _slicedToArray(outerRadius, 2),
99
+ min = _outerRadius[0],
100
+ max = _outerRadius[1];
101
+
102
+ var i = interpolate(min, max);
103
+ return function (t) {
104
+ var d3ArcOut = arc().innerRadius(innerRadius).outerRadius(i(t));
105
+ return d3ArcOut(d);
106
+ };
107
+ });
108
+ }
109
+ }
110
+
111
+ var increaseFactor = 8;
112
+
85
113
  var DonutRoot = /*#__PURE__*/function (_Component) {
86
114
  _inherits(DonutRoot, _Component);
87
115
 
@@ -101,9 +129,9 @@ var DonutRoot = /*#__PURE__*/function (_Component) {
101
129
  _defineProperty(_assertThisInitialized(_this), "virtualElement", canUseDOM() ? document.createElement('div') : {});
102
130
 
103
131
  _defineProperty(_assertThisInitialized(_this), "bindHandlerTooltip", function (visible, props) {
104
- return function (_ref5) {
105
- var x = _ref5.clientX,
106
- y = _ref5.clientY;
132
+ return function (_ref6) {
133
+ var x = _ref6.clientX,
134
+ y = _ref6.clientY;
107
135
  var eventEmitter = _this.asProps.eventEmitter;
108
136
  _this.virtualElement.getBoundingClientRect = _this.generateGetBoundingClientRect(x, y);
109
137
  _this.virtualElement[CONSTANT.VIRTUAL_ELEMENT] = true;
@@ -155,35 +183,75 @@ var DonutRoot = /*#__PURE__*/function (_Component) {
155
183
 
156
184
  return acc;
157
185
  }, []);
158
- pieData = Object.entries(data).filter(function (_ref6) {
159
- var _ref7 = _slicedToArray(_ref6, 1),
160
- key = _ref7[0];
186
+ pieData = Object.entries(data).filter(function (_ref7) {
187
+ var _ref8 = _slicedToArray(_ref7, 1),
188
+ key = _ref8[0];
161
189
 
162
190
  return keys.includes(key);
163
- }).sort(function (_ref8, _ref9) {
164
- var _ref10 = _slicedToArray(_ref8, 1),
165
- a = _ref10[0];
166
-
191
+ }).sort(function (_ref9, _ref10) {
167
192
  var _ref11 = _slicedToArray(_ref9, 1),
168
- b = _ref11[0];
193
+ a = _ref11[0];
194
+
195
+ var _ref12 = _slicedToArray(_ref10, 1),
196
+ b = _ref12[0];
169
197
 
170
198
  return keys.indexOf(a) > keys.indexOf(b) ? 1 : -1;
171
199
  });
172
200
  }
173
201
 
202
+ var minValue = pieData.reduce(function (acc, cur) {
203
+ if (cur[1]) acc += cur[1];
204
+ return acc;
205
+ }, 0) / 100;
206
+ pieData = pieData.map(function (d) {
207
+ if (d[1] && d[1] < minValue) d[1] = minValue;
208
+ return d;
209
+ });
174
210
  return d3Pie(pieData);
175
211
  }
176
212
  }, {
177
213
  key: "getPieProps",
178
214
  value: function getPieProps(props) {
179
- var d3Arc = this.asProps.d3Arc;
215
+ var _this$asProps3 = this.asProps,
216
+ d3Arc = _this$asProps3.d3Arc,
217
+ halfsize = _this$asProps3.halfsize,
218
+ size = _this$asProps3.size,
219
+ duration = _this$asProps3.duration,
220
+ innerRadius = _this$asProps3.innerRadius;
221
+
222
+ var _size = _slicedToArray(size, 2),
223
+ width = _size[0],
224
+ height = _size[1];
225
+
226
+ var minORmax = halfsize ? Math.max : Math.min;
227
+ innerRadius = innerRadius > increaseFactor ? innerRadius - increaseFactor : innerRadius;
228
+ var outerRadius = minORmax(width - increaseFactor * 2, height - increaseFactor * 2) / 2;
229
+ var data = this.arcs.find(function (arc) {
230
+ return arc.data[0] === props.dataKey;
231
+ });
180
232
  return {
181
- data: this.arcs.find(function (arc) {
182
- return arc.data[0] === props.dataKey;
183
- }),
233
+ data: data,
184
234
  d3Arc: d3Arc,
185
235
  onMouseMove: this.bindHandlerTooltip(true, props),
186
- onMouseLeave: this.bindHandlerTooltip(false, props)
236
+ onMouseLeave: this.bindHandlerTooltip(false, props),
237
+ onMouseOver: function onMouseOver(e) {
238
+ animationHoverPie({
239
+ d: data,
240
+ selector: "[d=\"".concat(e.target.getAttribute('d'), "\"]"),
241
+ duration: duration === 0 ? 0 : 300,
242
+ innerRadius: innerRadius,
243
+ outerRadius: [outerRadius, outerRadius + increaseFactor]
244
+ });
245
+ },
246
+ onMouseOut: function onMouseOut(e) {
247
+ animationHoverPie({
248
+ d: data,
249
+ selector: "[d=\"".concat(e.target.getAttribute('d'), "\"]"),
250
+ duration: duration === 0 ? 0 : 300,
251
+ innerRadius: innerRadius,
252
+ outerRadius: [outerRadius + increaseFactor, outerRadius]
253
+ });
254
+ }
187
255
  };
188
256
  }
189
257
  }, {
@@ -202,11 +270,11 @@ var DonutRoot = /*#__PURE__*/function (_Component) {
202
270
  }, {
203
271
  key: "componentDidUpdate",
204
272
  value: function componentDidUpdate(prevProps) {
205
- var _this$asProps3 = this.asProps,
206
- data = _this$asProps3.data,
207
- duration = _this$asProps3.duration,
208
- d3Arc = _this$asProps3.d3Arc,
209
- halfsize = _this$asProps3.halfsize;
273
+ var _this$asProps4 = this.asProps,
274
+ data = _this$asProps4.data,
275
+ duration = _this$asProps4.duration,
276
+ d3Arc = _this$asProps4.d3Arc,
277
+ halfsize = _this$asProps4.halfsize;
210
278
  var arcs = this.arcs;
211
279
 
212
280
  if (prevProps.$rootProps.data !== data && duration > 0) {
@@ -220,10 +288,10 @@ var DonutRoot = /*#__PURE__*/function (_Component) {
220
288
  }, {
221
289
  key: "componentDidMount",
222
290
  value: function componentDidMount() {
223
- var _this$asProps4 = this.asProps,
224
- duration = _this$asProps4.duration,
225
- d3Arc = _this$asProps4.d3Arc,
226
- halfsize = _this$asProps4.halfsize;
291
+ var _this$asProps5 = this.asProps,
292
+ duration = _this$asProps5.duration,
293
+ d3Arc = _this$asProps5.d3Arc,
294
+ halfsize = _this$asProps5.halfsize;
227
295
  var arcs = this.arcs;
228
296
 
229
297
  if (duration > 0) {
@@ -239,13 +307,13 @@ var DonutRoot = /*#__PURE__*/function (_Component) {
239
307
  }, {
240
308
  key: "render",
241
309
  value: function render() {
242
- var _this$asProps5 = this.asProps,
243
- halfsize = _this$asProps5.halfsize,
244
- size = _this$asProps5.size;
310
+ var _this$asProps6 = this.asProps,
311
+ halfsize = _this$asProps6.halfsize,
312
+ size = _this$asProps6.size;
245
313
 
246
- var _size = _slicedToArray(size, 2),
247
- width = _size[0],
248
- height = _size[1];
314
+ var _size2 = _slicedToArray(size, 2),
315
+ width = _size2[0],
316
+ height = _size2[1];
249
317
 
250
318
  var Element = this.Element;
251
319
  var k = halfsize ? 1 : 2;
@@ -268,22 +336,22 @@ _defineProperty(DonutRoot, "style", style);
268
336
 
269
337
  _defineProperty(DonutRoot, "enhance", [uniqueIDEnhancement()]);
270
338
 
271
- _defineProperty(DonutRoot, "defaultProps", function (_ref14) {
272
- var _ref14$innerRadius = _ref14.innerRadius,
273
- innerRadius = _ref14$innerRadius === void 0 ? 0 : _ref14$innerRadius,
274
- _ref14$halfsize = _ref14.halfsize,
275
- halfsize = _ref14$halfsize === void 0 ? false : _ref14$halfsize,
276
- size = _ref14.$rootProps.size;
339
+ _defineProperty(DonutRoot, "defaultProps", function (_ref15) {
340
+ var _ref15$innerRadius = _ref15.innerRadius,
341
+ innerRadius = _ref15$innerRadius === void 0 ? 0 : _ref15$innerRadius,
342
+ _ref15$halfsize = _ref15.halfsize,
343
+ halfsize = _ref15$halfsize === void 0 ? false : _ref15$halfsize,
344
+ size = _ref15.$rootProps.size;
277
345
 
278
- var _size2 = _slicedToArray(size, 2),
279
- width = _size2[0],
280
- height = _size2[1];
346
+ var _size3 = _slicedToArray(size, 2),
347
+ width = _size3[0],
348
+ height = _size3[1];
281
349
 
282
350
  var minORmax = halfsize ? Math.max : Math.min;
283
- var d3Arc = arc().outerRadius(minORmax(width, height) / 2).innerRadius(innerRadius);
284
- var d3Pie = pie().sort(null).value(function (_ref15) {
285
- var _ref16 = _slicedToArray(_ref15, 2),
286
- value = _ref16[1];
351
+ var d3Arc = arc().outerRadius(minORmax(width - increaseFactor * 2, height - increaseFactor * 2) / 2).innerRadius(innerRadius > increaseFactor ? innerRadius - increaseFactor : innerRadius);
352
+ var d3Pie = pie().sort(null).value(function (_ref16) {
353
+ var _ref17 = _slicedToArray(_ref16, 2),
354
+ value = _ref17[1];
287
355
 
288
356
  return value;
289
357
  });
@@ -300,15 +368,15 @@ _defineProperty(DonutRoot, "defaultProps", function (_ref14) {
300
368
  };
301
369
  });
302
370
 
303
- function Pie(_ref12) {
371
+ function Pie(_ref13) {
304
372
  var _ref;
305
373
 
306
- var SPie = _ref12.Element,
307
- styles = _ref12.styles,
308
- d3Arc = _ref12.d3Arc,
309
- data = _ref12.data,
310
- _ref12$color = _ref12.color,
311
- color = _ref12$color === void 0 ? '#50aef4' : _ref12$color;
374
+ var SPie = _ref13.Element,
375
+ styles = _ref13.styles,
376
+ d3Arc = _ref13.d3Arc,
377
+ data = _ref13.data,
378
+ _ref13$color = _ref13.color,
379
+ color = _ref13$color === void 0 ? '#50aef4' : _ref13$color;
312
380
  return _ref = sstyled(styles), /*#__PURE__*/React.createElement(SPie, _ref.cn("SPie", {
313
381
  "render": "path",
314
382
  "color": color,
@@ -316,12 +384,12 @@ function Pie(_ref12) {
316
384
  }));
317
385
  }
318
386
 
319
- function Label(_ref13) {
387
+ function Label(_ref14) {
320
388
  var _ref2;
321
389
 
322
- var SLabel = _ref13.Element,
323
- styles = _ref13.styles,
324
- Children = _ref13.Children;
390
+ var SLabel = _ref14.Element,
391
+ styles = _ref14.styles,
392
+ Children = _ref14.Children;
325
393
  return _ref2 = sstyled(styles), /*#__PURE__*/React.createElement(SLabel, _ref2.cn("SLabel", {
326
394
  "render": "text",
327
395
  "x": "0",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Donut.js"],"names":["React","arc","pie","Component","sstyled","canUseDOM","getOriginChildren","CONSTANT","createElement","uniqueIDEnhancement","interpolate","transition","DEFAULT_INSTANCE","Symbol","animationInitialPie","halfsize","d3Arc","arcs","_","ind","d","iStart","Math","PI","startAngle","iEnd","endAngle","t","animationUpdatePie","_current","i","DonutRoot","document","visible","props","x","clientX","y","clientY","eventEmitter","asProps","virtualElement","getBoundingClientRect","generateGetBoundingClientRect","VIRTUAL_ELEMENT","emit","uid","id","width","height","top","right","bottom","left","Children","data","d3Pie","pieData","Object","entries","keys","toArray","reduce","acc","child","isValidElement","type","Donut","Pie","push","dataKey","filter","key","includes","sort","a","b","indexOf","find","onMouseMove","bindHandlerTooltip","onMouseLeave","color","prevProps","duration","$rootProps","selection","selectAll","attrTween","each","size","Element","k","getArcs","style","innerRadius","minORmax","max","min","outerRadius","value","SPie","styles","Label","SLabel","EmptyData"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { arc, pie } from 'd3-shape';\nimport { Component, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/utils/lib/canUseDOM';\nimport getOriginChildren from '@semcore/utils/lib/getOriginChildren';\nimport { CONSTANT } from './utils';\nimport createElement from './createElement';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport { interpolate } from 'd3-interpolate';\nimport { transition } from 'd3-transition';\n\nimport style from './style/donut.shadow.css';\n\nconst DEFAULT_INSTANCE = Symbol('DEFAULT_INSTANCE');\n\nfunction animationInitialPie({ halfsize, d3Arc, arcs }) {\n return function(_, ind) {\n const d = arcs[ind];\n if (!d) return () => '';\n const iStart = interpolate(halfsize ? -Math.PI / 2 : 0, d.startAngle);\n const iEnd = interpolate(halfsize ? -Math.PI / 2 : 0, d.endAngle);\n return function(t) {\n d.startAngle = iStart(t);\n d.endAngle = iEnd(t);\n return d3Arc(d);\n };\n };\n}\n\nfunction animationUpdatePie({ halfsize, arcs, d3Arc }) {\n return function(_, ind) {\n const d = arcs[ind];\n if (this._current) {\n const i = interpolate(this._current, d);\n this._current = i(0);\n return function(t) {\n return d3Arc(i(t));\n };\n } else {\n this._current = d;\n return animationInitialPie({ halfsize, arcs, d3Arc })(_, ind);\n }\n };\n}\n\nclass DonutRoot extends Component {\n static displayName = 'Donut';\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = ({ innerRadius = 0, halfsize = false, $rootProps: { size } }) => {\n const [width, height] = size;\n const minORmax = halfsize ? Math.max : Math.min;\n const d3Arc = arc()\n .outerRadius(minORmax(width, height) / 2)\n .innerRadius(innerRadius);\n let d3Pie = pie()\n .sort(null)\n .value(([, value]) => value);\n d3Pie[DEFAULT_INSTANCE] = true;\n\n if (halfsize) {\n d3Pie = d3Pie.startAngle(-Math.PI / 2).endAngle(Math.PI / 2);\n }\n return {\n d3Pie,\n d3Arc,\n duration: 500,\n };\n };\n\n get id() {\n const { uid, id } = this.asProps;\n return id || uid;\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 getArcs() {\n let { Children, data, d3Pie } = this.asProps;\n let pieData = Object.entries(data);\n\n if (d3Pie[DEFAULT_INSTANCE]) {\n const keys = React.Children.toArray(getOriginChildren(Children)).reduce((acc, child) => {\n if (React.isValidElement(child) && child.type === Donut.Pie) {\n acc.push(child.props.dataKey);\n }\n return acc;\n }, []);\n pieData = Object.entries(data)\n .filter(([key]) => keys.includes(key))\n .sort(([a], [b]) => (keys.indexOf(a) > keys.indexOf(b) ? 1 : -1));\n }\n return d3Pie(pieData);\n }\n\n bindHandlerTooltip = (visible, props) => ({ 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 getPieProps(props) {\n const { d3Arc } = this.asProps;\n return {\n data: this.arcs.find((arc) => arc.data[0] === props.dataKey),\n d3Arc,\n onMouseMove: this.bindHandlerTooltip(true, props),\n onMouseLeave: this.bindHandlerTooltip(false, props),\n };\n }\n\n getEmptyDataProps() {\n const { d3Arc } = this.asProps;\n return {\n data: {\n endAngle: Math.PI * 2,\n startAngle: 0,\n },\n d3Arc,\n color: '#E4ECF1',\n };\n }\n\n componentDidUpdate(prevProps) {\n const { data, duration, d3Arc, halfsize } = this.asProps;\n const arcs = this.arcs;\n if (prevProps.$rootProps.data !== data && duration > 0) {\n transition()\n .selection()\n .selectAll(`#${this.id} [data-ui-name=\"Donut.Pie\"]`)\n .transition()\n .duration(duration)\n .attrTween('d', animationUpdatePie({ d3Arc, arcs, halfsize }));\n }\n }\n\n componentDidMount() {\n const { duration, d3Arc, halfsize } = this.asProps;\n const arcs = this.arcs;\n if (duration > 0) {\n transition()\n .selection()\n .selectAll(`#${this.id} [data-ui-name=\"Donut.Pie\"]`)\n .each(function(_, ind) {\n this._current = arcs[ind];\n })\n .transition()\n .duration(duration)\n .attrTween('d', animationInitialPie({ halfsize, d3Arc, arcs }));\n }\n }\n\n render() {\n const { halfsize, size } = this.asProps;\n const [width, height] = size;\n const Element = this.Element;\n const k = halfsize ? 1 : 2;\n this.arcs = this.getArcs();\n return (\n <Element\n id={this.id}\n render=\"g\"\n childrenPosition=\"inside\"\n transform={`translate(${width / 2},${height / k})`}\n />\n );\n }\n}\n\nfunction Pie({ Element: SPie, styles, d3Arc, data, color = '#50aef4' }) {\n return sstyled(styles)(<SPie render=\"path\" color={color} d={d3Arc(data)} />);\n}\n\nfunction Label({ Element: SLabel, styles, Children }) {\n return sstyled(styles)(\n <SLabel render=\"text\" x=\"0\" y=\"0\">\n <Children />\n </SLabel>,\n );\n}\n\nconst Donut = createElement(DonutRoot, { Pie, Label, EmptyData: Pie });\n\nexport default Donut;\n"],"file":"Donut.js"}
1
+ {"version":3,"sources":["../../src/Donut.js"],"names":["React","arc","pie","Component","sstyled","canUseDOM","getOriginChildren","CONSTANT","createElement","uniqueIDEnhancement","interpolate","transition","DEFAULT_INSTANCE","Symbol","animationInitialPie","halfsize","d3Arc","arcs","_","ind","d","iStart","Math","PI","startAngle","iEnd","endAngle","t","animationUpdatePie","_current","i","animationHoverPie","selector","duration","innerRadius","outerRadius","selection","select","attrTween","min","max","d3ArcOut","increaseFactor","DonutRoot","document","visible","props","x","clientX","y","clientY","eventEmitter","asProps","virtualElement","getBoundingClientRect","generateGetBoundingClientRect","VIRTUAL_ELEMENT","emit","uid","id","width","height","top","right","bottom","left","Children","data","d3Pie","pieData","Object","entries","keys","toArray","reduce","acc","child","isValidElement","type","Donut","Pie","push","dataKey","filter","key","includes","sort","a","b","indexOf","minValue","cur","map","size","minORmax","find","onMouseMove","bindHandlerTooltip","onMouseLeave","onMouseOver","e","target","getAttribute","onMouseOut","color","prevProps","$rootProps","selectAll","each","Element","k","getArcs","style","value","SPie","styles","Label","SLabel","EmptyData"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { arc, pie } from 'd3-shape';\nimport { Component, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/utils/lib/canUseDOM';\nimport getOriginChildren from '@semcore/utils/lib/getOriginChildren';\nimport { CONSTANT } from './utils';\nimport createElement from './createElement';\nimport uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';\nimport { interpolate } from 'd3-interpolate';\nimport { transition } from 'd3-transition';\n\nimport style from './style/donut.shadow.css';\n\nconst DEFAULT_INSTANCE = Symbol('DEFAULT_INSTANCE');\n\nfunction animationInitialPie({ halfsize, d3Arc, arcs }) {\n return function(_, ind) {\n const d = arcs[ind];\n if (!d) return () => '';\n const iStart = interpolate(halfsize ? -Math.PI / 2 : 0, d.startAngle);\n const iEnd = interpolate(halfsize ? -Math.PI / 2 : 0, d.endAngle);\n return function(t) {\n d.startAngle = iStart(t);\n d.endAngle = iEnd(t);\n return d3Arc(d);\n };\n };\n}\n\nfunction animationUpdatePie({ halfsize, arcs, d3Arc }) {\n return function(_, ind) {\n const d = arcs[ind];\n if (this._current) {\n const i = interpolate(this._current, d);\n this._current = i(0);\n return function(t) {\n return d3Arc(i(t));\n };\n } else {\n this._current = d;\n return animationInitialPie({ halfsize, arcs, d3Arc })(_, ind);\n }\n };\n}\n\nfunction animationHoverPie({ d, selector, duration, innerRadius, outerRadius }) {\n if (duration > 0) {\n transition()\n .selection()\n .select(selector)\n .transition()\n .duration(duration)\n .attrTween('d', function() {\n if (!d) return () => '';\n const [min, max] = outerRadius;\n const i = interpolate(min, max);\n return function(t) {\n const d3ArcOut = arc()\n .innerRadius(innerRadius)\n .outerRadius(i(t));\n return d3ArcOut(d);\n };\n });\n }\n}\n\nconst increaseFactor = 8;\n\nclass DonutRoot extends Component {\n static displayName = 'Donut';\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = ({ innerRadius = 0, halfsize = false, $rootProps: { size } }) => {\n const [width, height] = size;\n const minORmax = halfsize ? Math.max : Math.min;\n const d3Arc = arc()\n .outerRadius(minORmax(width - increaseFactor * 2, height - increaseFactor * 2) / 2)\n .innerRadius(innerRadius > increaseFactor ? innerRadius - increaseFactor : innerRadius);\n let d3Pie = pie()\n .sort(null)\n .value(([, value]) => value);\n d3Pie[DEFAULT_INSTANCE] = true;\n\n if (halfsize) {\n d3Pie = d3Pie.startAngle(-Math.PI / 2).endAngle(Math.PI / 2);\n }\n return {\n d3Pie,\n d3Arc,\n duration: 500,\n };\n };\n\n get id() {\n const { uid, id } = this.asProps;\n return id || uid;\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 getArcs() {\n let { Children, data, d3Pie } = this.asProps;\n let pieData = Object.entries(data);\n\n if (d3Pie[DEFAULT_INSTANCE]) {\n const keys = React.Children.toArray(getOriginChildren(Children)).reduce((acc, child) => {\n if (React.isValidElement(child) && child.type === Donut.Pie) {\n acc.push(child.props.dataKey);\n }\n return acc;\n }, []);\n pieData = Object.entries(data)\n .filter(([key]) => keys.includes(key))\n .sort(([a], [b]) => (keys.indexOf(a) > keys.indexOf(b) ? 1 : -1));\n }\n const minValue =\n pieData.reduce((acc, cur) => {\n if (cur[1]) acc += cur[1];\n return acc;\n }, 0) / 100;\n pieData = pieData.map((d) => {\n if (d[1] && d[1] < minValue) d[1] = minValue;\n return d;\n });\n return d3Pie(pieData);\n }\n\n bindHandlerTooltip = (visible, props) => ({ 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 getPieProps(props) {\n let { d3Arc, halfsize, size, duration, innerRadius } = this.asProps;\n const [width, height] = size;\n const minORmax = halfsize ? Math.max : Math.min;\n innerRadius = innerRadius > increaseFactor ? innerRadius - increaseFactor : innerRadius;\n const outerRadius = minORmax(width - increaseFactor * 2, height - increaseFactor * 2) / 2;\n const data = this.arcs.find((arc) => arc.data[0] === props.dataKey);\n\n return {\n data,\n d3Arc,\n onMouseMove: this.bindHandlerTooltip(true, props),\n onMouseLeave: this.bindHandlerTooltip(false, props),\n onMouseOver: (e) => {\n animationHoverPie({\n d: data,\n selector: `[d=\"${e.target.getAttribute('d')}\"]`,\n duration: duration === 0 ? 0 : 300,\n innerRadius,\n outerRadius: [outerRadius, outerRadius + increaseFactor],\n });\n },\n onMouseOut: (e) => {\n animationHoverPie({\n d: data,\n selector: `[d=\"${e.target.getAttribute('d')}\"]`,\n duration: duration === 0 ? 0 : 300,\n innerRadius,\n outerRadius: [outerRadius + increaseFactor, outerRadius],\n });\n },\n };\n }\n\n getEmptyDataProps() {\n const { d3Arc } = this.asProps;\n return {\n data: {\n endAngle: Math.PI * 2,\n startAngle: 0,\n },\n d3Arc,\n color: '#E4ECF1',\n };\n }\n\n componentDidUpdate(prevProps) {\n const { data, duration, d3Arc, halfsize } = this.asProps;\n const arcs = this.arcs;\n if (prevProps.$rootProps.data !== data && duration > 0) {\n transition()\n .selection()\n .selectAll(`#${this.id} [data-ui-name=\"Donut.Pie\"]`)\n .transition()\n .duration(duration)\n .attrTween('d', animationUpdatePie({ d3Arc, arcs, halfsize }));\n }\n }\n\n componentDidMount() {\n const { duration, d3Arc, halfsize } = this.asProps;\n const arcs = this.arcs;\n if (duration > 0) {\n transition()\n .selection()\n .selectAll(`#${this.id} [data-ui-name=\"Donut.Pie\"]`)\n .each(function(_, ind) {\n this._current = arcs[ind];\n })\n .transition()\n .duration(duration)\n .attrTween('d', animationInitialPie({ halfsize, d3Arc, arcs }));\n }\n }\n\n render() {\n const { halfsize, size } = this.asProps;\n const [width, height] = size;\n const Element = this.Element;\n const k = halfsize ? 1 : 2;\n this.arcs = this.getArcs();\n return (\n <Element\n id={this.id}\n render=\"g\"\n childrenPosition=\"inside\"\n transform={`translate(${width / 2},${height / k})`}\n />\n );\n }\n}\n\nfunction Pie({ Element: SPie, styles, d3Arc, data, color = '#50aef4' }) {\n return sstyled(styles)(<SPie render=\"path\" color={color} d={d3Arc(data)} />);\n}\n\nfunction Label({ Element: SLabel, styles, Children }) {\n return sstyled(styles)(\n <SLabel render=\"text\" x=\"0\" y=\"0\">\n <Children />\n </SLabel>,\n );\n}\n\nconst Donut = createElement(DonutRoot, { Pie, Label, EmptyData: Pie });\n\nexport default Donut;\n"],"file":"Donut.js"}
@@ -22,14 +22,14 @@ var _ref = (
22
22
  /*__reshadow_css_start__*/
23
23
  __css__(
24
24
  /*__inner_css_start__*/
25
- ".___SBar_icqax_gg_{fill:var(--color);transition-property:height,width,y;transition-duration:var(--duration);transition-timing-function:ease-in-out}.___SBar_icqax_gg_.__hide_icqax_gg_{display:none}.___SBackground_icqax_gg_{fill:#e4ecf1}"
25
+ ".___SBar_1hsyh_gg_{fill:var(--color);transition-property:height,width,y;transition-duration:var(--duration);transition-timing-function:ease-in-out}.___SBar_1hsyh_gg_.__hide_1hsyh_gg_{display:none}.___SBackground_1hsyh_gg_{fill:#e4ecf1}"
26
26
  /*__inner_css_end__*/
27
- , "1xgn2id_gg_")
27
+ , "f6nc1h_gg_")
28
28
  /*__reshadow_css_end__*/
29
29
  , {
30
- "__SBar": "___SBar_icqax_gg_",
31
- "_hide": "__hide_icqax_gg_",
32
- "__SBackground": "___SBackground_icqax_gg_"
30
+ "__SBar": "___SBar_1hsyh_gg_",
31
+ "_hide": "__hide_1hsyh_gg_",
32
+ "__SBackground": "___SBackground_1hsyh_gg_"
33
33
  }),
34
34
  style = _extends({}, _ref);
35
35