UNPKG

@data-ui/xy-chart

Version:

A package of charts with standard x- and y- axes. https://williaster.github.io/data-ui

130 lines (112 loc) 3.71 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _group = require("@vx/group"); var _voronoi = require("@vx/voronoi"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } var propTypes = { data: _propTypes.default.arrayOf(_propTypes.default.object).isRequired, onClick: _propTypes.default.func, onMouseMove: _propTypes.default.func, onMouseLeave: _propTypes.default.func, onMouseDown: _propTypes.default.func, showVoronoi: _propTypes.default.bool, width: _propTypes.default.number.isRequired, height: _propTypes.default.number.isRequired, x: _propTypes.default.func.isRequired, y: _propTypes.default.func.isRequired }; var defaultProps = { onClick: null, onMouseMove: null, onMouseLeave: null, onMouseDown: null, showVoronoi: false }; var Voronoi = /*#__PURE__*/ function (_React$PureComponent) { _inheritsLoose(Voronoi, _React$PureComponent); Voronoi.getVoronoi = function getVoronoi(props) { var x = props.x, y = props.y, data = props.data, width = props.width, height = props.height; return (0, _voronoi.voronoi)({ x: x, y: y, width: width, height: height })(data); }; function Voronoi(props) { var _this; _this = _React$PureComponent.call(this, props) || this; _this.state = { voronoi: Voronoi.getVoronoi(props) }; return _this; } var _proto = Voronoi.prototype; _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { var _this2 = this; if (['data', 'x', 'y', 'width', 'height'].some(function (prop) { return _this2.props[prop] !== nextProps[prop]; } // eslint-disable-line react/destructuring-assignment )) { this.setState({ voronoi: Voronoi.getVoronoi(nextProps) }); } }; _proto.render = function render() { var _this$props = this.props, onMouseLeave = _this$props.onMouseLeave, onMouseMove = _this$props.onMouseMove, onClick = _this$props.onClick, showVoronoi = _this$props.showVoronoi, onMouseDown = _this$props.onMouseDown; var voronoi = this.state.voronoi; return _react.default.createElement(_group.Group, null, voronoi.polygons().map(function (polygon, i) { return _react.default.createElement(_voronoi.VoronoiPolygon, { key: "voronoi-" + polygon.length + "-" + i, polygon: polygon, fill: "transparent", stroke: showVoronoi ? '#ddd' : 'transparent', strokeWidth: 1, onClick: onClick && function () { return function (event) { onClick({ event: event, datum: polygon.data }); }; }, onMouseMove: onMouseMove && function () { return function (event) { onMouseMove({ event: event, datum: polygon.data }); }; }, onMouseLeave: onMouseLeave && function () { return onMouseLeave; }, onMouseDown: onMouseDown && function () { return onMouseDown; } }); })); }; return Voronoi; }(_react.default.PureComponent); Voronoi.propTypes = propTypes; Voronoi.defaultProps = defaultProps; Voronoi.displayName = 'Voronoi'; var _default = Voronoi; exports.default = _default;