@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
JavaScript
;
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;