@semcore/d3-chart 1.0.0-8 → 1.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 (154) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/lib/cjs/Area.js +71 -49
  3. package/lib/cjs/Area.js.map +1 -1
  4. package/lib/cjs/Axis.js +148 -142
  5. package/lib/cjs/Axis.js.map +1 -1
  6. package/lib/cjs/Bar.js +101 -54
  7. package/lib/cjs/Bar.js.map +1 -1
  8. package/lib/cjs/ClipPath.js +110 -0
  9. package/lib/cjs/ClipPath.js.map +1 -0
  10. package/lib/cjs/Donut.js +169 -68
  11. package/lib/cjs/Donut.js.map +1 -1
  12. package/lib/cjs/Dots.js +55 -21
  13. package/lib/cjs/Dots.js.map +1 -1
  14. package/lib/cjs/GroupBar.js +7 -6
  15. package/lib/cjs/GroupBar.js.map +1 -1
  16. package/lib/cjs/HorizontalBar.js +72 -45
  17. package/lib/cjs/HorizontalBar.js.map +1 -1
  18. package/lib/cjs/Hover.js +46 -47
  19. package/lib/cjs/Hover.js.map +1 -1
  20. package/lib/cjs/Line.js +63 -41
  21. package/lib/cjs/Line.js.map +1 -1
  22. package/lib/cjs/Plot.js +16 -29
  23. package/lib/cjs/Plot.js.map +1 -1
  24. package/lib/cjs/ResponsiveContainer.js +13 -9
  25. package/lib/cjs/ResponsiveContainer.js.map +1 -1
  26. package/lib/cjs/StackBar.js +6 -6
  27. package/lib/cjs/StackBar.js.map +1 -1
  28. package/lib/cjs/StackedArea.js +8 -9
  29. package/lib/cjs/StackedArea.js.map +1 -1
  30. package/lib/cjs/Tooltip.js +49 -75
  31. package/lib/cjs/Tooltip.js.map +1 -1
  32. package/lib/cjs/Venn.js +235 -0
  33. package/lib/cjs/Venn.js.map +1 -0
  34. package/lib/cjs/index.js +8 -0
  35. package/lib/cjs/index.js.map +1 -1
  36. package/lib/cjs/style/area.shadow.css +11 -10
  37. package/lib/cjs/style/bar.shadow.css +4 -0
  38. package/lib/cjs/style/donut.shadow.css +1 -0
  39. package/lib/cjs/style/dot.shadow.css +19 -0
  40. package/lib/cjs/style/line.shadow.css +4 -15
  41. package/lib/cjs/style/tooltip.shadow.css +1 -0
  42. package/lib/cjs/style/venn.shadow.css +23 -0
  43. package/lib/cjs/utils.js +8 -1
  44. package/lib/cjs/utils.js.map +1 -1
  45. package/lib/es6/Area.js +72 -50
  46. package/lib/es6/Area.js.map +1 -1
  47. package/lib/es6/Axis.js +149 -143
  48. package/lib/es6/Axis.js.map +1 -1
  49. package/lib/es6/Bar.js +100 -54
  50. package/lib/es6/Bar.js.map +1 -1
  51. package/lib/es6/ClipPath.js +91 -0
  52. package/lib/es6/ClipPath.js.map +1 -0
  53. package/lib/es6/Donut.js +167 -67
  54. package/lib/es6/Donut.js.map +1 -1
  55. package/lib/es6/Dots.js +51 -20
  56. package/lib/es6/Dots.js.map +1 -1
  57. package/lib/es6/GroupBar.js +7 -6
  58. package/lib/es6/GroupBar.js.map +1 -1
  59. package/lib/es6/HorizontalBar.js +72 -45
  60. package/lib/es6/HorizontalBar.js.map +1 -1
  61. package/lib/es6/Hover.js +47 -48
  62. package/lib/es6/Hover.js.map +1 -1
  63. package/lib/es6/Line.js +65 -43
  64. package/lib/es6/Line.js.map +1 -1
  65. package/lib/es6/Plot.js +17 -29
  66. package/lib/es6/Plot.js.map +1 -1
  67. package/lib/es6/ResponsiveContainer.js +13 -7
  68. package/lib/es6/ResponsiveContainer.js.map +1 -1
  69. package/lib/es6/StackBar.js +6 -6
  70. package/lib/es6/StackBar.js.map +1 -1
  71. package/lib/es6/StackedArea.js +8 -9
  72. package/lib/es6/StackedArea.js.map +1 -1
  73. package/lib/es6/Tooltip.js +52 -76
  74. package/lib/es6/Tooltip.js.map +1 -1
  75. package/lib/es6/Venn.js +217 -0
  76. package/lib/es6/Venn.js.map +1 -0
  77. package/lib/es6/index.js +1 -0
  78. package/lib/es6/index.js.map +1 -1
  79. package/lib/es6/style/area.shadow.css +11 -10
  80. package/lib/es6/style/bar.shadow.css +4 -0
  81. package/lib/es6/style/donut.shadow.css +1 -0
  82. package/lib/es6/style/dot.shadow.css +19 -0
  83. package/lib/es6/style/line.shadow.css +4 -15
  84. package/lib/es6/style/tooltip.shadow.css +1 -0
  85. package/lib/es6/style/venn.shadow.css +23 -0
  86. package/lib/es6/utils.js +6 -1
  87. package/lib/es6/utils.js.map +1 -1
  88. package/lib/types/Area.d.ts +7 -8
  89. package/lib/types/Axis.d.ts +6 -6
  90. package/lib/types/Bar.d.ts +7 -3
  91. package/lib/types/ClipPath.d.ts +26 -0
  92. package/lib/types/Donut.d.ts +12 -2
  93. package/lib/types/GroupBar.d.ts +2 -2
  94. package/lib/types/HorizontalBar.d.ts +7 -3
  95. package/lib/types/Hover.d.ts +2 -2
  96. package/lib/types/Line.d.ts +9 -4
  97. package/{src/types/Plot.ts → lib/types/Plot.d.ts} +2 -2
  98. package/lib/types/ResponsiveContainer.d.ts +1 -1
  99. package/lib/types/StackBar.d.ts +3 -11
  100. package/lib/types/StackedArea.d.ts +7 -6
  101. package/lib/types/Tooltip.d.ts +4 -4
  102. package/lib/types/Venn.d.ts +45 -0
  103. package/lib/types/context.d.ts +1 -1
  104. package/lib/types/index.d.ts +6 -0
  105. package/package.json +10 -5
  106. package/src/Area.js +43 -14
  107. package/src/Axis.js +24 -22
  108. package/src/Bar.js +69 -24
  109. package/src/ClipPath.js +36 -0
  110. package/src/Donut.js +84 -12
  111. package/src/Dots.js +36 -20
  112. package/src/GroupBar.js +1 -0
  113. package/src/HorizontalBar.js +49 -22
  114. package/src/Hover.js +3 -3
  115. package/src/Line.js +41 -13
  116. package/src/Plot.js +3 -7
  117. package/src/ResponsiveContainer.js +3 -3
  118. package/src/StackBar.js +1 -1
  119. package/src/StackedArea.js +3 -2
  120. package/src/Tooltip.js +11 -12
  121. package/src/Venn.js +112 -0
  122. package/src/index.js +1 -0
  123. package/src/style/area.shadow.css +11 -10
  124. package/src/style/bar.shadow.css +4 -0
  125. package/src/style/donut.shadow.css +1 -0
  126. package/src/style/dot.shadow.css +19 -0
  127. package/src/style/line.shadow.css +4 -15
  128. package/src/style/tooltip.shadow.css +1 -0
  129. package/src/style/venn.shadow.css +23 -0
  130. package/src/types/Area.d.ts +7 -8
  131. package/src/types/Axis.d.ts +6 -6
  132. package/src/types/Bar.d.ts +7 -3
  133. package/src/types/ClipPath.d.ts +26 -0
  134. package/src/types/Donut.d.ts +12 -2
  135. package/src/types/GroupBar.d.ts +2 -2
  136. package/src/types/HorizontalBar.d.ts +7 -3
  137. package/src/types/Hover.d.ts +2 -2
  138. package/src/types/Line.d.ts +9 -4
  139. package/src/types/Plot.d.ts +16 -0
  140. package/src/types/ResponsiveContainer.d.ts +1 -1
  141. package/src/types/StackBar.d.ts +3 -11
  142. package/src/types/StackedArea.d.ts +7 -6
  143. package/src/types/Tooltip.d.ts +4 -4
  144. package/src/types/Venn.d.ts +45 -0
  145. package/src/types/context.d.ts +1 -1
  146. package/src/types/index.d.ts +6 -0
  147. package/src/utils.js +7 -1
  148. package/lib/cjs/style/chart.shadow.css +0 -4
  149. package/lib/cjs/types/Plot.js +0 -2
  150. package/lib/cjs/types/Plot.js.map +0 -1
  151. package/lib/es6/style/chart.shadow.css +0 -4
  152. package/lib/es6/types/Plot.js +0 -2
  153. package/lib/es6/types/Plot.js.map +0 -1
  154. package/src/style/chart.shadow.css +0 -4
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
+
20
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
+
22
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
+
24
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
+
26
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
+
28
+ var _core = require("@semcore/core");
29
+
30
+ var _react = _interopRequireDefault(require("react"));
31
+
32
+ var _venn = require("@upsetjs/venn.js");
33
+
34
+ var _canUseDOM = _interopRequireDefault(require("@semcore/utils/lib/canUseDOM"));
35
+
36
+ var _animation = require("@semcore/animation");
37
+
38
+ var _createElement = _interopRequireDefault(require("./createElement"));
39
+
40
+ var _utils = require("./utils");
41
+
42
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
43
+
44
+ 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; } }
45
+
46
+ /*__reshadow-styles__:"./style/venn.shadow.css"*/
47
+ var style = (
48
+ /*__reshadow_css_start__*/
49
+ _core.sstyled.insert(
50
+ /*__inner_css_start__*/
51
+ ".___SCircle_1qcib_gg_{fill:var(--color_v23pgz);stroke:#fff;stroke-width:2px;fill-opacity:.5;transition-property:cx,cy;transition-duration:var(--duration_v23pgz);transition-timing-function:ease-in-out}.___SCircle_1qcib_gg_:hover{fill-opacity:.7}.___SIntersection_1qcib_gg_{stroke:#fff;stroke-width:2px;fill-opacity:0}.___SIntersection_1qcib_gg_:hover{fill-opacity:.1}"
52
+ /*__inner_css_end__*/
53
+ , "v23pgz_gg_")
54
+ /*__reshadow_css_end__*/
55
+ , {
56
+ "__SCircle": "___SCircle_1qcib_gg_",
57
+ "--color": "--color_v23pgz",
58
+ "--duration": "--duration_v23pgz",
59
+ "__SIntersection": "___SIntersection_1qcib_gg_"
60
+ });
61
+
62
+ var VennRoot = /*#__PURE__*/function (_Component) {
63
+ (0, _inherits2["default"])(VennRoot, _Component);
64
+
65
+ var _super = _createSuper(VennRoot);
66
+
67
+ function VennRoot() {
68
+ var _this;
69
+
70
+ (0, _classCallCheck2["default"])(this, VennRoot);
71
+
72
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
73
+ args[_key] = arguments[_key];
74
+ }
75
+
76
+ _this = _super.call.apply(_super, [this].concat(args));
77
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "virtualElement", (0, _canUseDOM["default"])() ? document.createElement('div') : {});
78
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "bindHandlerTooltip", function (visible, props) {
79
+ return function (_ref3) {
80
+ var x = _ref3.clientX,
81
+ y = _ref3.clientY;
82
+ var eventEmitter = _this.asProps.eventEmitter;
83
+ _this.virtualElement.getBoundingClientRect = _this.generateGetBoundingClientRect(x, y);
84
+ _this.virtualElement[_utils.CONSTANT.VIRTUAL_ELEMENT] = true;
85
+ eventEmitter.emit('onTooltipVisible', visible, props, _this.virtualElement);
86
+ };
87
+ });
88
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "renderElement", /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
89
+ return /*#__PURE__*/_react["default"].createElement(_animation.FadeInOut, (0, _extends2["default"])({
90
+ ref: ref,
91
+ tag: "g",
92
+ visible: true
93
+ }, props));
94
+ }));
95
+ return _this;
96
+ }
97
+
98
+ (0, _createClass2["default"])(VennRoot, [{
99
+ key: "generateGetBoundingClientRect",
100
+ value: function generateGetBoundingClientRect() {
101
+ var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
102
+ var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
103
+ return function () {
104
+ return {
105
+ width: 0,
106
+ height: 0,
107
+ top: y,
108
+ right: x,
109
+ bottom: y,
110
+ left: x
111
+ };
112
+ };
113
+ }
114
+ }, {
115
+ key: "getVennData",
116
+ value: function getVennData() {
117
+ var _this$asProps = this.asProps,
118
+ data = _this$asProps.data,
119
+ orientation = _this$asProps.orientation,
120
+ orientationOrder = _this$asProps.orientationOrder,
121
+ size = _this$asProps.size;
122
+
123
+ var _size = (0, _slicedToArray2["default"])(size, 2),
124
+ width = _size[0],
125
+ height = _size[1];
126
+
127
+ var vennData = Object.entries(data).map(function (_ref4) {
128
+ var _ref5 = (0, _slicedToArray2["default"])(_ref4, 2),
129
+ dataKey = _ref5[0],
130
+ size = _ref5[1];
131
+
132
+ return {
133
+ sets: dataKey.split('/'),
134
+ size: size
135
+ };
136
+ });
137
+ return (0, _venn.scaleSolution)((0, _venn.normalizeSolution)((0, _venn.venn)(vennData), orientation, orientationOrder), width, height, 10);
138
+ }
139
+ }, {
140
+ key: "getCircleProps",
141
+ value: function getCircleProps(props) {
142
+ return {
143
+ duration: this.asProps.duration,
144
+ data: this.vennData[props.dataKey],
145
+ onMouseMove: this.bindHandlerTooltip(true, props),
146
+ onMouseLeave: this.bindHandlerTooltip(false, props)
147
+ };
148
+ }
149
+ }, {
150
+ key: "getIntersectionProps",
151
+ value: function getIntersectionProps(props) {
152
+ var duration = this.asProps.duration;
153
+ var dataKeys = props.dataKey.split('/');
154
+ return {
155
+ duration: duration,
156
+ delay: duration,
157
+ data: Object.values(this.vennData).filter(function (d) {
158
+ return dataKeys.includes(d.setid);
159
+ }),
160
+ onMouseMove: this.bindHandlerTooltip(true, props),
161
+ onMouseLeave: this.bindHandlerTooltip(false, props)
162
+ };
163
+ }
164
+ }, {
165
+ key: "render",
166
+ value: function render() {
167
+ var Element = this.Element;
168
+ this.vennData = this.getVennData();
169
+ return /*#__PURE__*/_react["default"].createElement(Element, {
170
+ render: this.renderElement,
171
+ childrenPosition: "inside",
172
+ vennData: this.vennData
173
+ });
174
+ }
175
+ }]);
176
+ return VennRoot;
177
+ }(_core.Component);
178
+
179
+ (0, _defineProperty2["default"])(VennRoot, "displayName", 'Venn');
180
+ (0, _defineProperty2["default"])(VennRoot, "style", style);
181
+ (0, _defineProperty2["default"])(VennRoot, "defaultProps", {
182
+ orientation: Math.PI / 2,
183
+ orientationOrder: function orientationOrder(c1, c2) {
184
+ return c2.radius - c1.radius;
185
+ },
186
+ duration: 500
187
+ });
188
+
189
+ function Circle(_ref6) {
190
+ var _ref;
191
+
192
+ var SCircle = _ref6.Element,
193
+ styles = _ref6.styles,
194
+ _ref6$color = _ref6.color,
195
+ color = _ref6$color === void 0 ? '#3AB011' : _ref6$color,
196
+ data = _ref6.data,
197
+ duration = _ref6.duration;
198
+ return _ref = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SCircle, _ref.cn("SCircle", {
199
+ "render": "circle",
200
+ "color": color,
201
+ "cx": data.x,
202
+ "cy": data.y,
203
+ "r": data.radius,
204
+ "use:duration": "".concat(duration, "ms")
205
+ }));
206
+ }
207
+
208
+ function Intersection(props) {
209
+ var _ref2;
210
+
211
+ var SIntersection = props.Element,
212
+ styles = props.styles,
213
+ data = props.data;
214
+
215
+ var renderIntersection = _react["default"].useCallback( /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
216
+ return /*#__PURE__*/_react["default"].createElement(_animation.FadeInOut, (0, _extends2["default"])({
217
+ ref: ref,
218
+ tag: "path",
219
+ visible: true
220
+ }, props));
221
+ }), [props]);
222
+
223
+ return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SIntersection, _ref2.cn("SIntersection", {
224
+ "render": renderIntersection,
225
+ "d": (0, _venn.intersectionAreaPath)(data)
226
+ }));
227
+ }
228
+
229
+ var Venn = (0, _createElement["default"])(VennRoot, {
230
+ Circle: Circle,
231
+ Intersection: Intersection
232
+ });
233
+ var _default = Venn;
234
+ exports["default"] = _default;
235
+ //# sourceMappingURL=Venn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Venn.js"],"names":["VennRoot","document","createElement","visible","props","x","clientX","y","clientY","eventEmitter","asProps","virtualElement","getBoundingClientRect","generateGetBoundingClientRect","CONSTANT","VIRTUAL_ELEMENT","emit","React","forwardRef","ref","width","height","top","right","bottom","left","data","orientation","orientationOrder","size","vennData","Object","entries","map","dataKey","sets","split","duration","onMouseMove","bindHandlerTooltip","onMouseLeave","dataKeys","delay","values","filter","d","includes","setid","Element","getVennData","renderElement","Component","style","Math","PI","c1","c2","radius","Circle","SCircle","styles","color","Intersection","SIntersection","renderIntersection","useCallback","Venn"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { venn, normalizeSolution, scaleSolution, intersectionAreaPath } from '@upsetjs/venn.js';\nimport { Component, sstyled } from '@semcore/core';\nimport canUseDOM from '@semcore/utils/lib/canUseDOM';\nimport { FadeInOut } from '@semcore/animation';\n\nimport createElement from './createElement';\nimport { CONSTANT } from './utils';\n\nimport style from './style/venn.shadow.css';\n\nclass VennRoot extends Component {\n static displayName = 'Venn';\n static style = style;\n\n static defaultProps = {\n orientation: Math.PI / 2,\n orientationOrder: (c1, c2) => c2.radius - c1.radius,\n duration: 500,\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 = (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 getVennData() {\n const { data, orientation, orientationOrder, size } = this.asProps;\n const [width, height] = size;\n const vennData = Object.entries(data).map(([dataKey, size]) => ({\n sets: dataKey.split('/'),\n size,\n }));\n return scaleSolution(\n normalizeSolution(venn(vennData), orientation, orientationOrder),\n width,\n height,\n 10,\n );\n }\n\n getCircleProps(props) {\n return {\n duration: this.asProps.duration,\n data: this.vennData[props.dataKey],\n onMouseMove: this.bindHandlerTooltip(true, props),\n onMouseLeave: this.bindHandlerTooltip(false, props),\n };\n }\n\n getIntersectionProps(props) {\n const { duration } = this.asProps;\n const dataKeys = props.dataKey.split('/');\n return {\n duration,\n delay: duration,\n data: Object.values(this.vennData).filter((d) => dataKeys.includes(d.setid)),\n onMouseMove: this.bindHandlerTooltip(true, props),\n onMouseLeave: this.bindHandlerTooltip(false, props),\n };\n }\n\n renderElement = React.forwardRef((props, ref) => {\n return <FadeInOut ref={ref} tag=\"g\" visible {...props} />;\n });\n\n render() {\n const Element = this.Element;\n this.vennData = this.getVennData();\n return (\n <Element render={this.renderElement} childrenPosition=\"inside\" vennData={this.vennData} />\n );\n }\n}\n\nfunction Circle({ Element: SCircle, styles, color = '#3AB011', data, duration }) {\n return sstyled(styles)(\n <SCircle\n render=\"circle\"\n color={color}\n cx={data.x}\n cy={data.y}\n r={data.radius}\n use:duration={`${duration}ms`}\n />,\n );\n}\n\nfunction Intersection(props) {\n const { Element: SIntersection, styles, data } = props;\n const renderIntersection = React.useCallback(\n React.forwardRef((props, ref) => {\n return <FadeInOut ref={ref} tag=\"path\" visible {...props} />;\n }),\n [props],\n );\n return sstyled(styles)(\n <SIntersection render={renderIntersection} d={intersectionAreaPath(data)} />,\n );\n}\n\nconst Venn = createElement(VennRoot, { Circle, Intersection });\n\nexport default Venn;\n"],"file":"Venn.js"}
package/lib/cjs/index.js CHANGED
@@ -71,6 +71,12 @@ Object.defineProperty(exports, "Donut", {
71
71
  return _Donut["default"];
72
72
  }
73
73
  });
74
+ Object.defineProperty(exports, "Venn", {
75
+ enumerable: true,
76
+ get: function get() {
77
+ return _Venn["default"];
78
+ }
79
+ });
74
80
  Object.defineProperty(exports, "Tooltip", {
75
81
  enumerable: true,
76
82
  get: function get() {
@@ -128,6 +134,8 @@ var _StackedArea = _interopRequireDefault(require("./StackedArea"));
128
134
 
129
135
  var _Donut = _interopRequireDefault(require("./Donut"));
130
136
 
137
+ var _Venn = _interopRequireDefault(require("./Venn"));
138
+
131
139
  var _Tooltip = _interopRequireDefault(require("./Tooltip"));
132
140
 
133
141
  var _ResponsiveContainer = _interopRequireDefault(require("./ResponsiveContainer"));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AACA","sourcesContent":["export { default as Plot } from './Plot';\n\nexport { XAxis, YAxis } from './Axis';\n\nexport { default as Line } from './Line';\n\nexport { default as Bar } from './Bar';\nexport { default as HorizontalBar } from './HorizontalBar';\nexport { default as GroupBar } from './GroupBar';\nexport { default as StackBar } from './StackBar';\nexport { default as Area } from './Area';\nexport { default as StackedArea } from './StackedArea';\nexport { default as Donut } from './Donut';\n\nexport { default as Tooltip } from './Tooltip';\n\nexport { default as ResponsiveContainer } from './ResponsiveContainer';\n\nexport { HoverLine, HoverRect } from './Hover';\n\nexport { minMax } from './utils';\nexport { colors } from './color';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AACA","sourcesContent":["export { default as Plot } from './Plot';\n\nexport { XAxis, YAxis } from './Axis';\n\nexport { default as Line } from './Line';\n\nexport { default as Bar } from './Bar';\nexport { default as HorizontalBar } from './HorizontalBar';\nexport { default as GroupBar } from './GroupBar';\nexport { default as StackBar } from './StackBar';\nexport { default as Area } from './Area';\nexport { default as StackedArea } from './StackedArea';\nexport { default as Donut } from './Donut';\nexport { default as Venn } from './Venn';\n\nexport { default as Tooltip } from './Tooltip';\n\nexport { default as ResponsiveContainer } from './ResponsiveContainer';\n\nexport { HoverLine, HoverRect } from './Hover';\n\nexport { minMax } from './utils';\nexport { colors } from './color';\n"],"file":"index.js"}
@@ -1,18 +1,19 @@
1
1
  SArea {
2
+ fill: var(--color);
3
+ fill-opacity: 0.4;
2
4
  }
3
5
 
4
- SDot {
5
- stroke-width: 2px;
6
- stroke: #fff;
7
- r: 6px;
8
- }
9
-
10
- SDot[hide] {
11
- display: none;
6
+ SAreaLine {
7
+ stroke: var(--color);
8
+ stroke-width: 3;
9
+ fill: transparent;
12
10
  }
13
11
 
14
- SDot[active] {
15
- r: 8px;
12
+ SArea,
13
+ SAreaLine {
14
+ transition-property: d;
15
+ transition-duration: var(--duration);
16
+ transition-timing-function: ease-in-out;
16
17
  }
17
18
 
18
19
  SNull {
@@ -1,6 +1,10 @@
1
1
  @import '@semcore/utils/style/var.css';
2
2
 
3
3
  SBar {
4
+ fill: var(--color);
5
+ transition-property: height, width, y;
6
+ transition-duration: var(--duration);
7
+ transition-timing-function: ease-in-out;
4
8
  }
5
9
 
6
10
  SBar[hide] {
@@ -1,5 +1,6 @@
1
1
  SPie {
2
2
  stroke: #ffffff;
3
+ fill: var(--color);
3
4
  }
4
5
 
5
6
  SLabel {
@@ -0,0 +1,19 @@
1
+ @import '@semcore/utils/style/var.css';
2
+
3
+ SDot {
4
+ stroke-width: 2px;
5
+ stroke: #fff;
6
+ r: 6px;
7
+ fill: var(--color);
8
+ transition-property: cx, cy;
9
+ transition-duration: var(--duration);
10
+ transition-timing-function: ease-in-out;
11
+ }
12
+
13
+ SDot[hide] {
14
+ display: none;
15
+ }
16
+
17
+ SDot[active] {
18
+ r: 8px;
19
+ }
@@ -3,27 +3,16 @@
3
3
  SLine {
4
4
  fill: transparent;
5
5
  stroke-width: 3;
6
- /*stroke-linecap: round;*/
6
+ stroke: var(--color);
7
+ transition-property: d;
8
+ transition-duration: var(--duration);
9
+ transition-timing-function: ease-in-out;
7
10
  }
8
11
 
9
12
  SLine[hide] {
10
13
  display: none;
11
14
  }
12
15
 
13
- SDot {
14
- stroke-width: 2px;
15
- stroke: #fff;
16
- r: 6px;
17
- }
18
-
19
- SDot[hide] {
20
- display: none;
21
- }
22
-
23
- SDot[active] {
24
- r: 8px;
25
- }
26
-
27
16
  SNull {
28
17
  fill: transparent;
29
18
  stroke: var(--mist);
@@ -27,4 +27,5 @@ SDot {
27
27
  height: 8px;
28
28
  border-radius: 50%;
29
29
  margin-right: 8px;
30
+ background: var(--color);
30
31
  }
@@ -0,0 +1,23 @@
1
+ SCircle {
2
+ fill: var(--color);
3
+ stroke: #fff;
4
+ stroke-width: 2px;
5
+ fill-opacity: 0.5;
6
+ transition-property: cx, cy;
7
+ transition-duration: var(--duration);
8
+ transition-timing-function: ease-in-out;
9
+
10
+ &:hover {
11
+ fill-opacity: 0.7;
12
+ }
13
+ }
14
+
15
+ SIntersection {
16
+ stroke: #fff;
17
+ stroke-width: 2px;
18
+ fill-opacity: 0;
19
+
20
+ &:hover {
21
+ fill-opacity: 0.1;
22
+ }
23
+ }
package/lib/cjs/utils.js CHANGED
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.eventToPoint = eventToPoint;
9
9
  exports.invert = invert;
10
+ exports.definedNullData = definedNullData;
10
11
  exports.definedData = definedData;
11
12
  exports.scaleOfBandwidth = scaleOfBandwidth;
12
13
  exports.minMax = minMax;
@@ -42,12 +43,18 @@ function invert(scale, value) {
42
43
  return (0, _d3Scale.scaleQuantize)().domain(range[0] <= range[1] ? range : range.slice().reverse()).range(range[0] <= range[1] ? domain : domain.slice().reverse())(value);
43
44
  }
44
45
 
45
- function definedData(x, y) {
46
+ function definedNullData(x, y) {
46
47
  return function (p) {
47
48
  return p[x] !== null && p[y] !== null;
48
49
  };
49
50
  }
50
51
 
52
+ function definedData(x, y) {
53
+ return function (p) {
54
+ return p[x] !== null && p[x] !== undefined && p[y] !== null && p[y] !== undefined;
55
+ };
56
+ }
57
+
51
58
  function scaleOfBandwidth(scale, value) {
52
59
  return scale.bandwidth ? scale(value) + scale.bandwidth() / 2 : scale(value);
53
60
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils.js"],"names":["CONSTANT","VIRTUAL_ELEMENT","Symbol","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","invert","scale","value","range","domain","slice","reverse","definedData","x","y","p","scaleOfBandwidth","bandwidth","minMax","data","key","d","getNullData","defined","name","reduce","acc","i","push","prev","next","defNext","find","length","defPrev","getIndexFromData","bisect","center","step","index","findIndex","console","warn"],"mappings":"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","sourcesContent":["import { extent, bisector } from 'd3-array';\nimport { scaleQuantize } from 'd3-scale';\n\nconst CONSTANT = {\n VIRTUAL_ELEMENT: Symbol('VIRTUAL_ELEMENT'),\n};\n\nexport { CONSTANT };\n\nexport function eventToPoint(event, svgRoot) {\n const node = event.currentTarget || event.target;\n const rect = svgRoot.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n\nexport function invert(scale, value) {\n if (scale.invert) return scale.invert(value);\n\n const range = scale.range();\n const domain = scale.domain();\n\n return scaleQuantize()\n .domain(range[0] <= range[1] ? range : range.slice().reverse())\n .range(range[0] <= range[1] ? domain : domain.slice().reverse())(value);\n}\n\nexport function definedData(x, y) {\n return (p) => p[x] !== null && p[y] !== null;\n}\n\nexport function scaleOfBandwidth(scale, value) {\n return scale.bandwidth ? scale(value) + scale.bandwidth() / 2 : scale(value);\n}\n\nexport function minMax(data, key) {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]);\n }\n return extent(data, key);\n}\n\nexport function getNullData(data, defined, name) {\n return data.reduce((acc, d, i, data) => {\n if (defined(d)) {\n acc.push({\n [name]: null,\n });\n } else {\n const prev = data[i - 1];\n const next = data[i + 1];\n\n if (i === 0) {\n const defNext = data.find(defined);\n acc.push({\n ...d,\n [name]: defNext ? defNext[name] : null,\n });\n }\n\n // prev\n if (prev && defined(prev)) {\n acc.push(prev);\n }\n\n // next\n if (next && defined(next)) {\n acc.push(next);\n }\n\n if (data.length - 1 === i) {\n const defPrev = data\n .slice()\n .reverse()\n .find(defined);\n acc.push({\n ...d,\n [name]: defPrev ? defPrev[name] : null,\n });\n }\n }\n return acc;\n }, []);\n}\n\nexport function getIndexFromData(data, scale, key, value) {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function') {\n const bisect = bisector((d) => d[key]).center;\n return bisect(data, value);\n }\n // detect bar chart\n else if ('step' in scale && typeof scale.step !== 'undefined') {\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\n } else {\n console.warn('[d3-chart/utils/getIndexFromData] encountered incompatible scale type');\n return null;\n }\n}\n"],"file":"utils.js"}
1
+ {"version":3,"sources":["../../src/utils.js"],"names":["CONSTANT","VIRTUAL_ELEMENT","Symbol","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","invert","scale","value","range","domain","slice","reverse","definedNullData","x","y","p","definedData","undefined","scaleOfBandwidth","bandwidth","minMax","data","key","d","getNullData","defined","name","reduce","acc","i","push","prev","next","defNext","find","length","defPrev","getIndexFromData","bisect","center","step","index","findIndex","console","warn"],"mappings":"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","sourcesContent":["import { extent, bisector } from 'd3-array';\nimport { scaleQuantize } from 'd3-scale';\n\nconst CONSTANT = {\n VIRTUAL_ELEMENT: Symbol('VIRTUAL_ELEMENT'),\n};\n\nexport { CONSTANT };\n\nexport function eventToPoint(event, svgRoot) {\n const node = event.currentTarget || event.target;\n const rect = svgRoot.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n\nexport function invert(scale, value) {\n if (scale.invert) return scale.invert(value);\n\n const range = scale.range();\n const domain = scale.domain();\n\n return scaleQuantize()\n .domain(range[0] <= range[1] ? range : range.slice().reverse())\n .range(range[0] <= range[1] ? domain : domain.slice().reverse())(value);\n}\n\nexport function definedNullData(x, y) {\n return (p) => p[x] !== null && p[y] !== null;\n}\n\nexport function definedData(x, y) {\n return (p) => {\n return p[x] !== null && p[x] !== undefined && (p[y] !== null && p[y] !== undefined);\n };\n}\n\nexport function scaleOfBandwidth(scale, value) {\n return scale.bandwidth ? scale(value) + scale.bandwidth() / 2 : scale(value);\n}\n\nexport function minMax(data, key) {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]);\n }\n return extent(data, key);\n}\n\nexport function getNullData(data, defined, name) {\n return data.reduce((acc, d, i, data) => {\n if (defined(d)) {\n acc.push({\n [name]: null,\n });\n } else {\n const prev = data[i - 1];\n const next = data[i + 1];\n\n if (i === 0) {\n const defNext = data.find(defined);\n acc.push({\n ...d,\n [name]: defNext ? defNext[name] : null,\n });\n }\n\n // prev\n if (prev && defined(prev)) {\n acc.push(prev);\n }\n\n // next\n if (next && defined(next)) {\n acc.push(next);\n }\n\n if (data.length - 1 === i) {\n const defPrev = data\n .slice()\n .reverse()\n .find(defined);\n acc.push({\n ...d,\n [name]: defPrev ? defPrev[name] : null,\n });\n }\n }\n return acc;\n }, []);\n}\n\nexport function getIndexFromData(data, scale, key, value) {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function') {\n const bisect = bisector((d) => d[key]).center;\n return bisect(data, value);\n }\n // detect bar chart\n else if ('step' in scale && typeof scale.step !== 'undefined') {\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\n } else {\n console.warn('[d3-chart/utils/getIndexFromData] encountered incompatible scale type');\n return null;\n }\n}\n"],"file":"utils.js"}