@uiw/react-heat-map
Version:
React component create calendar heatmap to visualize time series data, a la github contribution graph.
52 lines (51 loc) • 1.88 kB
JavaScript
import React, { Fragment, useMemo } from 'react';
import { oneDayTime } from './utils';
import { jsx as _jsx } from "react/jsx-runtime";
export var LablesMonth = function LablesMonth(_ref) {
var _ref$monthLables = _ref.monthLables,
monthLables = _ref$monthLables === void 0 ? [] : _ref$monthLables,
_ref$rectSize = _ref.rectSize,
rectSize = _ref$rectSize === void 0 ? 0 : _ref$rectSize,
_ref$space = _ref.space,
space = _ref$space === void 0 ? 0 : _ref$space,
_ref$leftPad = _ref.leftPad,
leftPad = _ref$leftPad === void 0 ? 0 : _ref$leftPad,
_ref$colNum = _ref.colNum,
colNum = _ref$colNum === void 0 ? 0 : _ref$colNum,
startDate = _ref.startDate;
var data = useMemo(function () {
if (monthLables === false || colNum < 1) return [];
return [].concat(Array(colNum * 7)).map(function (_, idx) {
if (idx / 7 % 1 === 0) {
var date = new Date(startDate.getTime() + idx * oneDayTime);
var month = date.getMonth();
return {
col: idx / 7,
index: idx,
month: month,
day: date.getDate(),
monthStr: monthLables[month],
date: date
};
}
return null;
}).filter(Boolean).filter(function (item, idx, list) {
return list[idx - 1] && list[idx - 1].month !== item.month;
});
}, [colNum, monthLables, startDate]);
return useMemo(function () {
return /*#__PURE__*/_jsx(Fragment, {
children: [].concat(data).map(function (item, idx) {
return /*#__PURE__*/_jsx("text", {
"data-size": rectSize,
x: leftPad + space + space,
y: 15,
dx: item.col * (rectSize + space),
textAnchor: "start",
children: item.monthStr
}, idx);
})
});
}, [data, leftPad, rectSize, space]);
};
//# sourceMappingURL=LablesMonth.js.map