Number.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. "use strict";
  2. "use client";
  3. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var React = _interopRequireWildcard(require("react"));
  9. const StatisticNumber = props => {
  10. const {
  11. value,
  12. formatter,
  13. precision,
  14. decimalSeparator,
  15. groupSeparator = '',
  16. prefixCls
  17. } = props;
  18. let valueNode;
  19. if (typeof formatter === 'function') {
  20. // Customize formatter
  21. valueNode = formatter(value);
  22. } else {
  23. // Internal formatter
  24. const val = String(value);
  25. const cells = val.match(/^(-?)(\d*)(\.(\d+))?$/);
  26. // Process if illegal number
  27. if (!cells || val === '-') {
  28. valueNode = val;
  29. } else {
  30. const negative = cells[1];
  31. let int = cells[2] || '0';
  32. let decimal = cells[4] || '';
  33. int = int.replace(/\B(?=(\d{3})+(?!\d))/g, groupSeparator);
  34. if (typeof precision === 'number') {
  35. decimal = decimal.padEnd(precision, '0').slice(0, precision > 0 ? precision : 0);
  36. }
  37. if (decimal) {
  38. decimal = `${decimalSeparator}${decimal}`;
  39. }
  40. valueNode = [/*#__PURE__*/React.createElement("span", {
  41. key: "int",
  42. className: `${prefixCls}-content-value-int`
  43. }, negative, int), decimal && (/*#__PURE__*/React.createElement("span", {
  44. key: "decimal",
  45. className: `${prefixCls}-content-value-decimal`
  46. }, decimal))];
  47. }
  48. }
  49. return /*#__PURE__*/React.createElement("span", {
  50. className: `${prefixCls}-content-value`
  51. }, valueNode);
  52. };
  53. var _default = exports.default = StatisticNumber;