UNPKG

@uiw/react-heat-map

Version:

React component create calendar heatmap to visualize time series data, a la github contribution graph.

341 lines (291 loc) 25.1 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("react")); else if(typeof define === 'function' && define.amd) define(["react"], factory); else if(typeof exports === 'object') exports["@uiw/react-heat-map"] = factory(require("react")); else root["@uiw/react-heat-map"] = factory(root["React"]); })(self, (__WEBPACK_EXTERNAL_MODULE__442__) => { return /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ 192 (__unused_webpack_module, exports, __webpack_require__) { var __webpack_unused_export__; /** * @license React * react-jsx-runtime.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var f=__webpack_require__(442),k=Symbol.for("react.element"),l=Symbol.for("react.fragment"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0}; function q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=""+g);void 0!==a.key&&(e=""+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}__webpack_unused_export__=l;exports.jsx=q;exports.jsxs=q; /***/ }, /***/ 540 (module, __unused_webpack_exports, __webpack_require__) { if (true) { module.exports = __webpack_require__(192); } else // removed by dead control flow {} /***/ }, /***/ 442 (module) { module.exports = __WEBPACK_EXTERNAL_MODULE__442__; /***/ } /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => (module['default']) : /******/ () => (module); /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, { "default": () => (/* binding */ HeatMap) }); ;// ../node_modules/@babel/runtime/helpers/esm/typeof.js function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } ;// ../node_modules/@babel/runtime/helpers/esm/toPrimitive.js function toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } ;// ../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js function toPropertyKey(t) { var i = toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } ;// ../node_modules/@babel/runtime/helpers/esm/defineProperty.js function _defineProperty(e, r, t) { return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } ;// ../node_modules/@babel/runtime/helpers/esm/objectSpread2.js function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } ;// ../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } ;// ../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react"} var external_root_React_commonjs2_react_commonjs_react_amd_react_ = __webpack_require__(442); var external_root_React_commonjs2_react_commonjs_react_amd_react_default = /*#__PURE__*/__webpack_require__.n(external_root_React_commonjs2_react_commonjs_react_amd_react_); ;// ../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } ;// ../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } ;// ../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } ;// ../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } ;// ../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } ;// ../node_modules/@babel/runtime/helpers/esm/slicedToArray.js function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } ;// ../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } ;// ../node_modules/@babel/runtime/helpers/esm/iterableToArray.js function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } ;// ../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } ;// ../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } // EXTERNAL MODULE: ../node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(540); ;// ./src/LabelsWeek.tsx var textStyle={textAnchor:'middle',fontSize:'inherit',fill:'currentColor'};var LabelsWeek=function LabelsWeek(_ref){var _ref$weekLabels=_ref.weekLabels,weekLabels=_ref$weekLabels===void 0?[]:_ref$weekLabels,_ref$rectSize=_ref.rectSize,rectSize=_ref$rectSize===void 0?0:_ref$rectSize,_ref$topPad=_ref.topPad,topPad=_ref$topPad===void 0?0:_ref$topPad,_ref$space=_ref.space,space=_ref$space===void 0?0:_ref$space;return (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function(){return/*#__PURE__*/(0,jsx_runtime.jsx)(external_root_React_commonjs2_react_commonjs_react_amd_react_.Fragment,{children:_toConsumableArray(Array(7)).map(function(_,idx){if(weekLabels&&weekLabels[idx]){return/*#__PURE__*/(0,jsx_runtime.jsx)("text",{className:"w-heatmap-week",x:15,y:topPad,dy:(idx+1)*(rectSize+space)-5,style:textStyle,children:weekLabels[idx]},idx);}return null;})});},[rectSize,space,topPad,weekLabels]);}; ;// ./src/utils.ts var oneDayTime=(/* unused pure expression or super */ null && (24*60*60*1000));function isValidDate(date){return date instanceof Date&&!isNaN(date.getTime());}var DATE_ONLY_PATTERN=/^(\d{4})[/-](\d{1,2})[/-](\d{1,2})$/;function parseDate(value){if(value instanceof Date){return isValidDate(value)?new Date(value.getTime()):null;}var matched=value.match(DATE_ONLY_PATTERN);if(matched){var year=Number(matched[1]);var month=Number(matched[2])-1;var day=Number(matched[3]);var _date=new Date(year,month,day);if(_date.getFullYear()===year&&_date.getMonth()===month&&_date.getDate()===day){return _date;}return null;}var date=new Date(value);return isValidDate(date)?date:null;}function addDays(date,days){var nextDate=new Date(date.getTime());nextDate.setDate(nextDate.getDate()+days);return nextDate;}function getStartOfWeek(date){var startDate=new Date(date.getTime());startDate.setHours(0,0,0,0);startDate.setDate(startDate.getDate()-startDate.getDay());return startDate;}function getDateToString(date){return"".concat(date.getFullYear(),"/").concat(date.getMonth()+1,"/").concat(date.getDate());}function formatData(){var data=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];var result={};data.forEach(function(item){if(item.date){var date=parseDate(item.date);if(!date)return;var dateString=getDateToString(date);result[dateString]=_objectSpread2(_objectSpread2({},item),{},{date:dateString});}});return result;}/** 排序 比较函数 */function numberSort(){var keys=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];return keys.sort(function(x,y){if(x<y)return-1;else if(x>y)return 1;return 0;});}function existColor(){var num=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var nums=arguments.length>1?arguments[1]:undefined;var panelColors=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};var color='';for(var a=0;a<nums.length;a+=1){if(nums[a]>num){color=panelColors[nums[a]];break;}color=panelColors[nums[a]];}return color;}var convertPanelColors=function convertPanelColors(colors,maxCount){var step=Math.ceil(maxCount/(colors.length-1));var panelColors={};colors.forEach(function(color,index){panelColors[index*step]=color;});return panelColors;}; ;// ./src/LabelsMonth.tsx var generateData=function generateData(colNum,monthLabels,startDate,endDate){if(monthLabels===false||colNum<1)return[];return Array.from({length:colNum*7}).map(function(_,idx){if(idx/7%1===0){var date=addDays(startDate,idx);var month=date.getMonth();if(endDate&&date>endDate)return null;return{col:idx/7,index:idx,month:month,day:date.getDate(),monthStr:monthLabels[month],date:date};}return null;}).filter(Boolean).filter(function(item,idx,list){return list[idx-1]&&list[idx-1].month!==item.month;});};var LabelsMonth=function LabelsMonth(_ref){var _ref$monthLabels=_ref.monthLabels,monthLabels=_ref$monthLabels===void 0?[]:_ref$monthLabels,_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,_ref$rectY=_ref.rectY,rectY=_ref$rectY===void 0?15:_ref$rectY,startDate=_ref.startDate,endDate=_ref.endDate;var data=(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function(){return generateData(colNum,monthLabels,startDate,endDate);},[colNum,monthLabels,startDate,endDate]);return/*#__PURE__*/(0,jsx_runtime.jsx)(external_root_React_commonjs2_react_commonjs_react_amd_react_.Fragment,{children:data.map(function(item,idx){return/*#__PURE__*/(0,jsx_runtime.jsx)("text",{"data-size":rectSize,x:leftPad+space+space,y:rectY,dx:item.col*(rectSize+space),textAnchor:"start",style:textStyle,children:item.monthStr},idx);})});}; ;// ./src/Rect.tsx var _excluded=["style","value","render","key"];var rectStyle=(/* unused pure expression or super */ null && ({display:'block',cursor:'pointer'}));var Rect=function Rect(props){var style=props.style,value=props.value,render=props.render,key=props.key,reset=_objectWithoutProperties(props,_excluded);var rectProps=_objectSpread2(_objectSpread2({},reset),{},{style:_objectSpread2({display:'block',cursor:'pointer'},style)});if(render&&typeof render==='function'){var elm=render(_objectSpread2({},rectProps),value);if(elm&&/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().isValidElement(elm)){return elm;}}return/*#__PURE__*/(0,jsx_runtime.jsx)("rect",_objectSpread2({},rectProps));}; ;// ./src/Legend.tsx var Legend_excluded=["panelColors","leftPad","topPad","rectY","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$rectY=_ref.rectY,rectY=_ref$rectY===void 0?15:_ref$rectY,_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=_objectWithoutProperties(_ref,Legend_excluded);var size=legendCellSize||rectSize;return (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function(){return/*#__PURE__*/(0,jsx_runtime.jsx)(external_root_React_commonjs2_react_commonjs_react_amd_react_.Fragment,{children:Object.keys(panelColors||{}).map(function(num,key){var rectProps=_objectSpread2(_objectSpread2({},props),{},{key:key,x:(size+1)*key+leftPad,y:rectY,// y: topPad + rectSize * 8 + 6, fill:panelColors[Number(num)],width:size,height:size});if(legendRender)return legendRender(rectProps);return/*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.createElement)(Rect,_objectSpread2(_objectSpread2({},rectProps),{},{key:key}));})});},[panelColors,props,size,rectY,leftPad,rectSize,legendRender]);} ;// ./src/Day.tsx var Day=function Day(props){var transform=props.transform,_props$gridNum=props.gridNum,gridNum=_props$gridNum===void 0?0:_props$gridNum,_props$startY=props.startY,startY=_props$startY===void 0?0:_props$startY,_props$panelColors=props.panelColors,panelColors=_props$panelColors===void 0?{}:_props$panelColors,initStartDate=props.initStartDate,_props$space=props.space,space=_props$space===void 0?2:_props$space,_props$value=props.value,value=_props$value===void 0?[]:_props$value,_props$rectSize=props.rectSize,rectSize=_props$rectSize===void 0?11:_props$rectSize,endDate=props.endDate,rectProps=props.rectProps,rectRender=props.rectRender;var data=(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function(){return formatData(value);},[value]);var nums=(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function(){return numberSort(Object.keys(panelColors).map(function(item){return parseInt(item,10);}));},[panelColors]);return/*#__PURE__*/(0,jsx_runtime.jsx)("g",{transform:transform,children:gridNum>0&&_toConsumableArray(Array(gridNum)).map(function(_,idx){return/*#__PURE__*/(0,jsx_runtime.jsx)("g",{"data-column":idx,children:_toConsumableArray(Array(7)).map(function(_,cidx){var currentDate=addDays(initStartDate,idx*7+cidx);var date=getDateToString(currentDate);var dataProps=_objectSpread2(_objectSpread2({},data[date]),{},{date:date,row:cidx,column:idx,index:idx*7+cidx});var dayProps=_objectSpread2(_objectSpread2({},rectProps),{},{fill:'var(--rhm-rect, #EBEDF0)',width:rectSize,height:rectSize,x:idx*(rectSize+space),y:(rectSize+space)*cidx,render:rectRender,value:dataProps});if(endDate instanceof Date&&currentDate.getTime()>endDate.getTime()){return null;}if(date&&data[date]&&panelColors&&Object.keys(panelColors).length>0){dayProps.fill=existColor(data[date].count||0,nums,panelColors);}else if(panelColors&&panelColors[0]){dayProps.fill=panelColors[0];}return/*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.createElement)(Rect,_objectSpread2(_objectSpread2({},dayProps),{},{key:cidx,value:dataProps,"data-date":date,"data-index":dataProps.index,"data-row":dataProps.row,"data-column":dataProps.column}));})},idx);})});}; ;// ./src/SVG.tsx var SVG_excluded=["rectSize","legendCellSize","space","monthPlacement","startDate","endDate","rectProps","rectRender","legendRender","value","weekLabels","monthLabels","panelColors","style"];function SVG(props){var _ref=props||{},_ref$rectSize=_ref.rectSize,rectSize=_ref$rectSize===void 0?11:_ref$rectSize,_ref$legendCellSize=_ref.legendCellSize,legendCellSize=_ref$legendCellSize===void 0?11:_ref$legendCellSize,_ref$space=_ref.space,space=_ref$space===void 0?2:_ref$space,_ref$monthPlacement=_ref.monthPlacement,monthPlacement=_ref$monthPlacement===void 0?'top':_ref$monthPlacement,_ref$startDate=_ref.startDate,startDate=_ref$startDate===void 0?new Date():_ref$startDate,endDate=_ref.endDate,rectProps=_ref.rectProps,rectRender=_ref.rectRender,legendRender=_ref.legendRender,_ref$value=_ref.value,value=_ref$value===void 0?[]:_ref$value,_ref$weekLabels=_ref.weekLabels,weekLabels=_ref$weekLabels===void 0?['Sun','Mon','Tue','Wed','Thu','Fri','Sat']:_ref$weekLabels,_ref$monthLabels=_ref.monthLabels,monthLabels=_ref$monthLabels===void 0?['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']:_ref$monthLabels,_ref$panelColors=_ref.panelColors,panelColors=_ref$panelColors===void 0?['var(--rhm-rect, #EBEDF0)','#C6E48B','#7BC96F','#239A3B','#196127']:_ref$panelColors,style=_ref.style,other=_objectWithoutProperties(_ref,SVG_excluded);var maxCount=Math.max.apply(Math,_toConsumableArray(value.map(function(item){return item.count;})).concat([0]));var panelColorsObject=Array.isArray(panelColors)?convertPanelColors(panelColors,maxCount):panelColors;var _useState=(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(0),_useState2=_slicedToArray(_useState,2),gridNum=_useState2[0],setGridNum=_useState2[1];var _useState3=(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(!!weekLabels?28:5),_useState4=_slicedToArray(_useState3,2),leftPad=_useState4[0],setLeftPad=_useState4[1];var defaultTopPad=monthPlacement==='top'?20:5;var _useState5=(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(!!monthLabels?defaultTopPad:5),_useState6=_slicedToArray(_useState5,2),topPad=_useState6[0],setTopPad=_useState6[1];var svgRef=/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createRef();(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function(){return setLeftPad(!!weekLabels?28:5);},[weekLabels]);(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function(){if(svgRef.current){var width=svgRef.current.clientWidth-leftPad||0;setGridNum(Math.floor(width/(rectSize+space))||0);}},[rectSize,svgRef,space,leftPad]);(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function(){setTopPad(!!monthLabels?defaultTopPad:5);},[monthLabels]);var initStartDate=(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function(){if(isValidDate(startDate)){return getStartOfWeek(startDate);}else{return getStartOfWeek(new Date());}},[startDate]);var styl={color:'var(--rhm-text-color, #24292e)',userSelect:'none',display:'block',fontSize:10};var monthRectY=monthPlacement==='top'?15:15*7+space;var legendTopPad=monthPlacement==='top'?topPad+rectSize*8+6:(!!monthLabels?topPad+rectSize+space:topPad)+rectSize*8+6;return/*#__PURE__*/(0,jsx_runtime.jsxs)("svg",_objectSpread2(_objectSpread2({ref:svgRef,style:_objectSpread2(_objectSpread2({},styl),style)},other),{},{children:[legendCellSize!==0&&/*#__PURE__*/(0,jsx_runtime.jsx)(Legend,{legendRender:legendRender,panelColors:panelColorsObject,rectSize:rectSize,rectY:legendTopPad,legendCellSize:legendCellSize,leftPad:leftPad,topPad:topPad,space:space}),/*#__PURE__*/(0,jsx_runtime.jsx)(LabelsWeek,{weekLabels:weekLabels,rectSize:rectSize,space:space,topPad:topPad}),/*#__PURE__*/(0,jsx_runtime.jsx)(LabelsMonth,{monthLabels:monthLabels,rectSize:rectSize,space:space,leftPad:leftPad,colNum:gridNum,rectY:monthRectY,startDate:initStartDate,endDate:endDate}),/*#__PURE__*/(0,jsx_runtime.jsx)(Day,{transform:"translate(".concat(leftPad,", ").concat(topPad,")"),gridNum:gridNum,initStartDate:initStartDate,endDate:endDate,rectProps:rectProps,rectSize:rectSize,rectRender:rectRender,panelColors:panelColorsObject,value:value,space:space})]}));} ;// ./src/style/index.less // extracted by mini-css-extract-plugin /* harmony default export */ const style = ((/* unused pure expression or super */ null && ({}))); ;// ./src/index.tsx var src_excluded=["prefixCls","className"];function HeatMap(props){var _props$prefixCls=props.prefixCls,prefixCls=_props$prefixCls===void 0?'w-heatmap':_props$prefixCls,className=props.className,others=_objectWithoutProperties(props,src_excluded);var cls=[className,prefixCls].filter(Boolean).join(' ');return/*#__PURE__*/(0,jsx_runtime.jsx)(SVG,_objectSpread2({className:cls},others));} /******/ return __webpack_exports__; /******/ })() ; });