useCellRender.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import { warning } from 'rc-util';
  3. import * as React from 'react';
  4. export default function useCellRender(cellRender, dateRender, monthCellRender, range) {
  5. // ========================= Warn =========================
  6. if (process.env.NODE_ENV !== 'production') {
  7. warning(!dateRender, "'dateRender' is deprecated. Please use 'cellRender' instead.");
  8. warning(!monthCellRender, "'monthCellRender' is deprecated. Please use 'cellRender' instead.");
  9. }
  10. // ======================== Render ========================
  11. // Merged render
  12. var mergedCellRender = React.useMemo(function () {
  13. if (cellRender) {
  14. return cellRender;
  15. }
  16. return function (current, info) {
  17. var date = current;
  18. if (dateRender && info.type === 'date') {
  19. return dateRender(date, info.today);
  20. }
  21. if (monthCellRender && info.type === 'month') {
  22. return monthCellRender(date, info.locale);
  23. }
  24. return info.originNode;
  25. };
  26. }, [cellRender, monthCellRender, dateRender]);
  27. // Cell render
  28. var onInternalCellRender = React.useCallback(function (date, info) {
  29. return mergedCellRender(date, _objectSpread(_objectSpread({}, info), {}, {
  30. range: range
  31. }));
  32. }, [mergedCellRender, range]);
  33. return onInternalCellRender;
  34. }