@uiw/react-heat-map
Version:
React component create calendar heatmap to visualize time series data, a la github contribution graph.
48 lines (47 loc) • 2.27 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = Legend;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _Rect = require("./Rect");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["panelColors", "leftPad", "topPad", "space", "rectSize", "legendCellSize", "legendRender"];
function Legend(_ref) {
var panelColors = _ref.panelColors,
_ref$leftPad = _ref.leftPad,
leftPad = _ref$leftPad === void 0 ? 0 : _ref$leftPad,
_ref$topPad = _ref.topPad,
topPad = _ref$topPad === void 0 ? 0 : _ref$topPad,
_ref$space = _ref.space,
space = _ref$space === void 0 ? 0 : _ref$space,
_ref$rectSize = _ref.rectSize,
rectSize = _ref$rectSize === void 0 ? 0 : _ref$rectSize,
_ref$legendCellSize = _ref.legendCellSize,
legendCellSize = _ref$legendCellSize === void 0 ? 0 : _ref$legendCellSize,
legendRender = _ref.legendRender,
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
var size = legendCellSize || rectSize;
return (0, _react.useMemo)(function () {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Fragment, {
children: Object.keys(panelColors || {}).map(function (num, key) {
var rectProps = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, props), {}, {
key: key,
x: (size + 1) * key + leftPad,
y: topPad + rectSize * 8 + 6,
fill: panelColors[Number(num)],
width: size,
height: size
});
if (legendRender) return legendRender(rectProps);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Rect.Rect, (0, _objectSpread2["default"])({}, rectProps));
})
});
}, [panelColors, props, size, leftPad, topPad, rectSize, legendRender]);
}
module.exports = exports.default;
//# sourceMappingURL=Legend.js.map
;