UNPKG

@visx/heatmap

Version:
95 lines (94 loc) 4 kB
"use strict"; exports.__esModule = true; exports.default = HeatmapCircle; var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireDefault(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _group = require("@visx/group"); var _excluded = ["className", "top", "left", "data", "gap", "radius", "xScale", "yScale", "colorScale", "opacityScale", "bins", "count", "children"]; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function HeatmapCircle(_ref) { var className = _ref.className, top = _ref.top, left = _ref.left, _ref$data = _ref.data, data = _ref$data === void 0 ? [] : _ref$data, _ref$gap = _ref.gap, gap = _ref$gap === void 0 ? 1 : _ref$gap, _ref$radius = _ref.radius, radius = _ref$radius === void 0 ? 6 : _ref$radius, xScale = _ref.xScale, yScale = _ref.yScale, _ref$colorScale = _ref.colorScale, colorScale = _ref$colorScale === void 0 ? function () { return undefined; } : _ref$colorScale, _ref$opacityScale = _ref.opacityScale, opacityScale = _ref$opacityScale === void 0 ? function () { return 1; } : _ref$opacityScale, _ref$bins = _ref.bins, bins = _ref$bins === void 0 ? function (column) { return column == null ? void 0 : column.bins; } : _ref$bins, _ref$count = _ref.count, count = _ref$count === void 0 ? function (cell) { return cell == null ? void 0 : cell.count; } : _ref$count, children = _ref.children, restProps = _objectWithoutPropertiesLoose(_ref, _excluded); var innerRadius = radius - gap; var heatmap = data.map(function (columnDatum, column) { var x = xScale(column); return bins(columnDatum).map(function (bin, row) { var countValue = count(bin); return { bin: bin, row: row, column: column, datum: columnDatum, radius: radius, gap: gap, count: countValue, cx: radius + x, cy: yScale(row) + gap + radius, r: innerRadius, opacity: opacityScale(countValue), color: colorScale(countValue) }; }); }); if (children) return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children(heatmap)); return /*#__PURE__*/_react.default.createElement(_group.Group, { className: "visx-heatmap-circles", top: top, left: left }, heatmap.map(function (columns) { return columns.map(function (bin) { return /*#__PURE__*/_react.default.createElement("circle", _extends({ key: "heatmap-tile-circle-" + bin.row + "-" + bin.column, className: (0, _classnames.default)('visx-heatmap-circle', className), r: bin.r, cx: bin.cx, cy: bin.cy, fill: bin.color, fillOpacity: bin.opacity }, restProps)); }); })); } HeatmapCircle.propTypes = { data: _propTypes.default.array, left: _propTypes.default.number, top: _propTypes.default.number, gap: _propTypes.default.number, radius: _propTypes.default.number, xScale: _propTypes.default.func.isRequired, yScale: _propTypes.default.func.isRequired, bins: _propTypes.default.func, count: _propTypes.default.func, className: _propTypes.default.string, children: _propTypes.default.func };