ScrollNumber.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. "use strict";
  2. "use client";
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  5. Object.defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. exports.default = void 0;
  9. var React = _interopRequireWildcard(require("react"));
  10. var _classnames = _interopRequireDefault(require("classnames"));
  11. var _reactNode = require("../_util/reactNode");
  12. var _configProvider = require("../config-provider");
  13. var _SingleNumber = _interopRequireDefault(require("./SingleNumber"));
  14. var __rest = void 0 && (void 0).__rest || function (s, e) {
  15. var t = {};
  16. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  17. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  18. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  19. }
  20. return t;
  21. };
  22. const ScrollNumber = /*#__PURE__*/React.forwardRef((props, ref) => {
  23. const {
  24. prefixCls: customizePrefixCls,
  25. count,
  26. className,
  27. motionClassName,
  28. style,
  29. title,
  30. show,
  31. component: Component = 'sup',
  32. children
  33. } = props,
  34. restProps = __rest(props, ["prefixCls", "count", "className", "motionClassName", "style", "title", "show", "component", "children"]);
  35. const {
  36. getPrefixCls
  37. } = React.useContext(_configProvider.ConfigContext);
  38. const prefixCls = getPrefixCls('scroll-number', customizePrefixCls);
  39. // ============================ Render ============================
  40. const newProps = Object.assign(Object.assign({}, restProps), {
  41. 'data-show': show,
  42. style,
  43. className: (0, _classnames.default)(prefixCls, className, motionClassName),
  44. title: title
  45. });
  46. // Only integer need motion
  47. let numberNodes = count;
  48. if (count && Number(count) % 1 === 0) {
  49. const numberList = String(count).split('');
  50. numberNodes = /*#__PURE__*/React.createElement("bdi", null, numberList.map((num, i) => (/*#__PURE__*/React.createElement(_SingleNumber.default, {
  51. prefixCls: prefixCls,
  52. count: Number(count),
  53. value: num,
  54. // eslint-disable-next-line react/no-array-index-key
  55. key: numberList.length - i
  56. }))));
  57. }
  58. // allow specify the border
  59. // mock border-color by box-shadow for compatible with old usage:
  60. // <Badge count={4} style={{ backgroundColor: '#fff', color: '#999', borderColor: '#d9d9d9' }} />
  61. if (style === null || style === void 0 ? void 0 : style.borderColor) {
  62. newProps.style = Object.assign(Object.assign({}, style), {
  63. boxShadow: `0 0 0 1px ${style.borderColor} inset`
  64. });
  65. }
  66. if (children) {
  67. return (0, _reactNode.cloneElement)(children, oriProps => ({
  68. className: (0, _classnames.default)(`${prefixCls}-custom-component`, oriProps === null || oriProps === void 0 ? void 0 : oriProps.className, motionClassName)
  69. }));
  70. }
  71. return /*#__PURE__*/React.createElement(Component, Object.assign({}, newProps, {
  72. ref: ref
  73. }), numberNodes);
  74. });
  75. var _default = exports.default = ScrollNumber;