UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

278 lines (209 loc) 7.33 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatCurrency = formatCurrency; exports.formatFileSize = formatFileSize; exports.formatNumber = formatNumber; exports.formatString = formatString; exports.formatTemplate = formatTemplate; exports.transformString = transformString; exports.trimString = trimString; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _isString = _interopRequireDefault(require("lodash/isString")); var _capitalize = _interopRequireDefault(require("lodash/capitalize")); var _bignumber = _interopRequireDefault(require("bignumber.js")); var _enum = require("../data-set/enum"); var _utils = require("../utils"); var _math = _interopRequireDefault(require("../math")); function trimString(value, fieldTrim) { if (fieldTrim) { switch (fieldTrim) { case _enum.FieldTrim.both: return value.trim(); case _enum.FieldTrim.left: return value.trimLeft(); case _enum.FieldTrim.right: return value.trimRight(); default: } } return value; } function transformString(value, format) { if (format) { switch (format) { case _enum.FieldFormat.uppercase: return value.toUpperCase(); case _enum.FieldFormat.lowercase: return value.toLowerCase(); case _enum.FieldFormat.capitalize: return (0, _capitalize["default"])(value); default: } } return value; } function formatString(value, _ref) { var trim = _ref.trim, format = _ref.format; if ((0, _isString["default"])(value)) { return transformString(trimString(value, trim), format); } return value; } function $formatNumber(v, lang, options) { return v.toLocaleString((0, _utils.normalizeLanguage)(lang), options); } var bigNumberGroupMap = new Map(); var bigNumberCurrencyMap = new Map(); var separatorReg = /\D+/; function getCurrencyOptions(lang, options) { var style = options.style, currency = options.currency; if (style === 'currency' && currency) { var currencyMap = bigNumberCurrencyMap.get(lang); if (!currencyMap) { currencyMap = new Map(); bigNumberCurrencyMap.set(lang, currencyMap); } var _options = currencyMap.get(currency); if (_options) { return _options; } var formatted = $formatNumber(1, lang, { style: style, currency: currency }); var matches = formatted.match(separatorReg); if (matches) { var currencyOptions = matches.index === 0 ? { prefix: matches[0] } : { suffix: matches[0] }; currencyMap.set(currency, currencyOptions); return currencyOptions; } } } function getBigNumberFormatOptionsByGroupSize(lang, groupSize) { var formatted = $formatNumber(Math.pow(10, groupSize), lang); var matches = formatted.match(separatorReg); if (matches && matches.index === 1) { var decimalMatches = $formatNumber(0.1, lang).match(separatorReg); var matchedGroup = { groupSeparator: matches[0], decimalSeparator: decimalMatches ? decimalMatches[0] : '.', groupSize: groupSize }; bigNumberGroupMap.set(lang, matchedGroup); return matchedGroup; } } var defaultBigNumberFormatOptions = { groupSeparator: ',', decimalSeparator: '.', groupSize: 3 }; function getBigNumberFormatOption(lang) { if (!lang) { return defaultBigNumberFormatOptions; } var option = bigNumberGroupMap.get(lang); if (option) { return option; } for (var groupSize = 3, s = groupSize; s > 0 && groupSize < 6; groupSize += 1) { var g = getBigNumberFormatOptionsByGroupSize(lang, groupSize); if (g) { return g; } s -= 1; var sg = getBigNumberFormatOptionsByGroupSize(lang, s); if (sg) { return sg; } } bigNumberGroupMap.set(lang, defaultBigNumberFormatOptions); return defaultBigNumberFormatOptions; } function $formatBigNumber(value, lang, options) { var _getBigNumberFormatOp = getBigNumberFormatOption(lang), groupSeparator = _getBigNumberFormatOp.groupSeparator, groupSize = _getBigNumberFormatOp.groupSize, decimalSeparator = _getBigNumberFormatOp.decimalSeparator; var _ref2 = getCurrencyOptions(lang, options) || {}, _ref2$prefix = _ref2.prefix, prefix = _ref2$prefix === void 0 ? '' : _ref2$prefix, _ref2$suffix = _ref2.suffix, suffix = _ref2$suffix === void 0 ? '' : _ref2$suffix; var useGrouping = options.useGrouping; var fmt = { prefix: prefix, decimalSeparator: decimalSeparator, groupSeparator: useGrouping === false ? '' : groupSeparator, groupSize: useGrouping === false ? 0 : groupSize, secondaryGroupSize: 0, fractionGroupSeparator: ' ', fractionGroupSize: 0, suffix: suffix }; var _options$maximumFract = options.maximumFractionDigits, maximumFractionDigits = _options$maximumFract === void 0 ? Infinity : _options$maximumFract, _options$minimumFract = options.minimumFractionDigits, minimumFractionDigits = _options$minimumFract === void 0 ? 0 : _options$minimumFract; var dp = Math.min(Math.max(value.dp(), minimumFractionDigits), maximumFractionDigits); return value.toFormat(dp, fmt); } function formatCurrency(value, lang, options) { var bn = new _bignumber["default"](value); if (_math["default"].isValidBigNumber(bn)) { var v = _math["default"].fix(bn); var currencyOptions = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, (0, _utils.getNumberFormatOptions)(_enum.FieldType.currency, options)), options); if (_math["default"].isBigNumber(v)) { return $formatBigNumber(v, lang, currencyOptions); } return $formatNumber(v, lang, currencyOptions); } return value.toString(); } function formatNumber(value, lang, options) { var bn = new _bignumber["default"](value); if (_math["default"].isValidBigNumber(bn)) { var v = _math["default"].fix(bn); var numberOptions = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, (0, _utils.getNumberFormatOptions)(_enum.FieldType.number, options)), options); if (_math["default"].isBigNumber(v)) { return $formatBigNumber(v, lang, numberOptions); } return $formatNumber(v, lang, numberOptions); } return value.toString(); } var nargs = /\{([0-9a-zA-Z_]+)\}/g; function formatTemplate(string, args, lazy) { return string.replace(nargs, function (match, i, index) { if (string[index - 1] === '{' && string[index + match.length] === '}') { return i; } var has = Object.hasOwnProperty.call(args, i); if (has) { var result = has ? args[i] : null; if (result === null || result === undefined) { return ''; } return result; } return lazy ? "{".concat(i, "}") : ''; }); } var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']; function formatFileSize(size) { var unitIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; if (size < 1024) { return "".concat(size).concat(units[unitIndex]); } return formatFileSize(Math.round(size / 1024), unitIndex + 1); } //# sourceMappingURL=index.js.map