@visactor/vutils 0.18.0-alpha.1 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,10 +26,10 @@ export declare class NumberUtil {
26
26
  private newFormat;
27
27
  private _formatPrefix;
28
28
  formatter: (specifier: string) => {
29
- (value: number): string | string[];
29
+ (value: number): any;
30
30
  toString(): string;
31
31
  };
32
- format: (specifier: string, value: number) => string | string[];
32
+ format: (specifier: string, value: number) => any;
33
33
  formatPrefix: (specifier: string, value: number) => (value: number) => string;
34
34
  }
35
35
  export declare const formatTypes: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/number/number.ts"],"names":[],"mappings":"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","file":"number.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\n\nimport { formatDecimal, formatDecimalParts } from './formatDecimal';\nimport { formatGroup } from './formatGroup';\nimport { formatPrefixAuto, prefixExponent } from './formatPrefixAuto';\nimport { formatRounded } from './formatRounded';\nimport { formatTrim } from './formatTrim';\nimport { formatSpecifier } from './specifier';\n\nexport interface FormatLocale {\n thousands: string;\n grouping: number[];\n currency: [string, string];\n numerals?: string[] | undefined;\n percent?: string | undefined;\n minus?: string | undefined;\n nan?: string | undefined;\n decimal?: string;\n}\n\nconst prefixes = ['y', 'z', 'a', 'f', 'p', 'n', 'µ', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];\n\nexport class NumberUtil {\n private locale: FormatLocale = {\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n };\n\n private group =\n this.locale.grouping === undefined || this.locale.thousands === undefined\n ? (group: any) => group\n : formatGroup([...this.locale.grouping].map(Number), `${this.locale.thousands}`);\n private currencyPrefix = this.locale.currency === undefined ? '' : this.locale.currency[0] + '';\n private currencySuffix = this.locale.currency === undefined ? '' : this.locale.currency[1] + '';\n private decimal = this.locale.decimal === undefined ? '.' : this.locale.decimal + '';\n private numerals =\n this.locale.numerals === undefined\n ? (numerals: string[]) => numerals\n : formatNumerals([...this.locale.numerals].map(String));\n private percent = this.locale.percent === undefined ? '%' : this.locale.percent + '';\n private minus = this.locale.minus === undefined ? '−' : this.locale.minus + '';\n private nan = this.locale.nan === undefined ? 'NaN' : this.locale.nan + '';\n\n private static instance: NumberUtil;\n\n static getInstance(): NumberUtil {\n if (!NumberUtil.instance) {\n NumberUtil.instance = new NumberUtil();\n }\n return NumberUtil.instance;\n }\n\n private newFormat(specifier: string) {\n const specifierIns = formatSpecifier(specifier);\n\n let fill = specifierIns.fill;\n let align = specifierIns.align;\n const sign = specifierIns.sign;\n const symbol = specifierIns.symbol;\n let zero = specifierIns.zero;\n const width = specifierIns.width;\n let comma = specifierIns.comma;\n let precision = specifierIns.precision;\n let trim = specifierIns.trim;\n let type = specifierIns.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === 'n') {\n (comma = true), (type = 'g');\n }\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n // @ts-ignore\n else if (!formatTypes[type]) {\n precision === undefined && (precision = 12), (trim = true), (type = 'g');\n }\n\n // If zero fill is specified, padding goes after sign and before digits.\n // @ts-ignore\n if (zero || (fill === '0' && align === '=')) {\n (zero = true), (fill = '0'), (align = '=');\n }\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n const prefix =\n symbol === '$' ? this.currencyPrefix : symbol === '#' && /[boxX]/.test(type) ? '0' + type.toLowerCase() : '';\n const suffix = symbol === '$' ? this.currencySuffix : /[%p]/.test(type) ? this.percent : '';\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n const formatType = formatTypes[type];\n const maybeSuffix = /[defgprstz%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision =\n precision === undefined\n ? 6\n : /[gprs]/.test(type)\n ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n const { nan, minus, decimal, group, numerals } = this;\n\n function format(value: number) {\n let valuePrefix = prefix;\n let valueSuffix = suffix;\n let i;\n let n;\n let c;\n let _value: any = value;\n\n if (type === 'c') {\n valueSuffix = formatType(_value) + valueSuffix;\n _value = '';\n } else {\n _value = +_value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n let valueNegative = _value < 0 || 1 / _value < 0;\n\n // Perform the initial formatting.\n _value = isNaN(_value) ? nan : formatType(Math.abs(_value), precision);\n\n // Trim insignificant zeros.\n if (trim) {\n _value = formatTrim(_value);\n }\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +_value === 0 && sign !== '+') {\n valueNegative = false;\n }\n\n // Compute the prefix and suffix.\n valuePrefix =\n (valueNegative ? (sign === '(' ? sign : minus) : sign === '-' || sign === '(' ? '' : sign) + valuePrefix;\n valueSuffix =\n (type === 's' ? prefixes[8 + prefixExponent / 3] : '') +\n valueSuffix +\n (valueNegative && sign === '(' ? ')' : '');\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n (i = -1), (n = _value.length);\n while (++i < n) {\n if (((c = _value.charCodeAt(i)), 48 > c || c > 57)) {\n valueSuffix = (c === 46 ? decimal + _value.slice(i + 1) : _value.slice(i)) + valueSuffix;\n _value = _value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) {\n _value = group(_value, Infinity);\n }\n\n // Compute the padding.\n let length = valuePrefix.length + _value.length + valueSuffix.length;\n let padding = length < width ? new Array(width - length + 1).join(fill) : '';\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) {\n _value = group(padding + _value, padding.length ? width - valueSuffix.length : Infinity);\n padding = '';\n }\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case '<':\n _value = valuePrefix + _value + valueSuffix + padding;\n break;\n case '=':\n _value = valuePrefix + padding + _value + valueSuffix;\n break;\n case '^':\n _value =\n padding.slice(0, (length = padding.length >> 1)) +\n valuePrefix +\n _value +\n valueSuffix +\n padding.slice(length);\n break;\n default:\n _value = padding + valuePrefix + _value + valueSuffix;\n break;\n }\n return numerals(_value);\n }\n\n format.toString = function () {\n return specifier + '';\n };\n\n return format;\n }\n\n private _formatPrefix(specifier: string, value: number) {\n const _specifier = formatSpecifier(specifier);\n _specifier.type = 'f';\n const f = this.newFormat(_specifier.toString());\n const e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3;\n const k = Math.pow(10, -e);\n const prefix = prefixes[8 + e / 3];\n return function (value: number) {\n return f(k * value) + prefix;\n };\n }\n\n formatter = (specifier: string) => {\n return this.newFormat(specifier);\n };\n\n format = (specifier: string, value: number) => {\n return this.formatter(specifier)(value);\n };\n\n formatPrefix = (specifier: string, value: number) => {\n return this._formatPrefix(specifier, value);\n };\n}\n\nexport const formatTypes = {\n '%': (x: number, p: number) => (x * 100).toFixed(p),\n b: (x: number) => Math.round(x).toString(2),\n c: (x: number) => x + '',\n d: formatDecimal,\n f: (x: number, p: number) => x.toFixed(p),\n e: (x: number, p: number) => x.toExponential(p),\n g: (x: number, p: number) => x.toPrecision(p),\n o: (x: number) => Math.round(x).toString(8),\n p: (x: number, p: number) => formatRounded(x * 100, p),\n r: formatRounded,\n s: formatPrefixAuto,\n X: (x: number) => Math.round(x).toString(16).toUpperCase(),\n x: (x: number) => Math.round(x).toString(16),\n t: (x: number, p: number) => {\n // 判断是否为整数\n if (Number.isInteger(x)) {\n return x.toFixed(2);\n }\n return Math.floor(x * Math.pow(10, p)) / Math.pow(10, p) + '';\n },\n z: (x: number, p: number) => (x % 1 === 0 ? x + '' : x.toFixed(p))\n};\n\nexport function exponent(x: number) {\n const _x = formatDecimalParts(Math.abs(x));\n return _x ? _x[1] : NaN;\n}\n\nexport function formatNumerals(numerals: string[]) {\n return function (value: string) {\n return value.replace(/[0-9]/g, (i: string) => numerals[+i]);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/format/number/number.ts"],"names":[],"mappings":"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","file":"number.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\n\nimport { formatDecimal, formatDecimalParts } from './formatDecimal';\nimport { formatGroup } from './formatGroup';\nimport { formatPrefixAuto, prefixExponent } from './formatPrefixAuto';\nimport { formatRounded } from './formatRounded';\nimport { formatTrim } from './formatTrim';\nimport { formatSpecifier } from './specifier';\n\nexport interface FormatLocale {\n thousands: string;\n grouping: number[];\n currency: [string, string];\n numerals?: string[] | undefined;\n percent?: string | undefined;\n minus?: string | undefined;\n nan?: string | undefined;\n decimal?: string;\n}\n\nconst prefixes = ['y', 'z', 'a', 'f', 'p', 'n', 'µ', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];\n\nexport class NumberUtil {\n private locale: FormatLocale = {\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n };\n\n private group =\n this.locale.grouping === undefined || this.locale.thousands === undefined\n ? (group: any) => group\n : formatGroup([...this.locale.grouping].map(Number), `${this.locale.thousands}`);\n private currencyPrefix = this.locale.currency === undefined ? '' : this.locale.currency[0] + '';\n private currencySuffix = this.locale.currency === undefined ? '' : this.locale.currency[1] + '';\n private decimal = this.locale.decimal === undefined ? '.' : this.locale.decimal + '';\n private numerals =\n this.locale.numerals === undefined\n ? (numerals: any) => numerals\n : formatNumerals([...this.locale.numerals].map(String));\n private percent = this.locale.percent === undefined ? '%' : this.locale.percent + '';\n private minus = this.locale.minus === undefined ? '−' : this.locale.minus + '';\n private nan = this.locale.nan === undefined ? 'NaN' : this.locale.nan + '';\n\n private static instance: NumberUtil;\n\n static getInstance(): NumberUtil {\n if (!NumberUtil.instance) {\n NumberUtil.instance = new NumberUtil();\n }\n return NumberUtil.instance;\n }\n\n private newFormat(specifier: string) {\n const specifierIns = formatSpecifier(specifier);\n\n let fill = specifierIns.fill;\n let align = specifierIns.align;\n const sign = specifierIns.sign;\n const symbol = specifierIns.symbol;\n let zero = specifierIns.zero;\n const width = specifierIns.width;\n let comma = specifierIns.comma;\n let precision = specifierIns.precision;\n let trim = specifierIns.trim;\n let type = specifierIns.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === 'n') {\n (comma = true), (type = 'g');\n }\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n // @ts-ignore\n else if (!formatTypes[type]) {\n precision === undefined && (precision = 12), (trim = true), (type = 'g');\n }\n\n // If zero fill is specified, padding goes after sign and before digits.\n // @ts-ignore\n if (zero || (fill === '0' && align === '=')) {\n (zero = true), (fill = '0'), (align = '=');\n }\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n const prefix =\n symbol === '$' ? this.currencyPrefix : symbol === '#' && /[boxX]/.test(type) ? '0' + type.toLowerCase() : '';\n const suffix = symbol === '$' ? this.currencySuffix : /[%p]/.test(type) ? this.percent : '';\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n const formatType = formatTypes[type];\n const maybeSuffix = /[defgprstz%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision =\n precision === undefined\n ? 6\n : /[gprs]/.test(type)\n ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n const { nan, minus, decimal, group, numerals } = this;\n\n function format(value: number) {\n let valuePrefix = prefix;\n let valueSuffix = suffix;\n let i;\n let n;\n let c;\n let _value: any = value;\n\n if (type === 'c') {\n valueSuffix = formatType(_value) + valueSuffix;\n _value = '';\n } else {\n _value = +_value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n let valueNegative = _value < 0 || 1 / _value < 0;\n\n // Perform the initial formatting.\n _value = isNaN(_value) ? nan : formatType(Math.abs(_value), precision);\n\n // Trim insignificant zeros.\n if (trim) {\n _value = formatTrim(_value);\n }\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +_value === 0 && sign !== '+') {\n valueNegative = false;\n }\n\n // Compute the prefix and suffix.\n valuePrefix =\n (valueNegative ? (sign === '(' ? sign : minus) : sign === '-' || sign === '(' ? '' : sign) + valuePrefix;\n valueSuffix =\n (type === 's' ? prefixes[8 + prefixExponent / 3] : '') +\n valueSuffix +\n (valueNegative && sign === '(' ? ')' : '');\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n (i = -1), (n = _value.length);\n while (++i < n) {\n if (((c = _value.charCodeAt(i)), 48 > c || c > 57)) {\n valueSuffix = (c === 46 ? decimal + _value.slice(i + 1) : _value.slice(i)) + valueSuffix;\n _value = _value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) {\n _value = group(_value, Infinity);\n }\n\n // Compute the padding.\n let length = valuePrefix.length + _value.length + valueSuffix.length;\n let padding = length < width ? new Array(width - length + 1).join(fill) : '';\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) {\n _value = group(padding + _value, padding.length ? width - valueSuffix.length : Infinity);\n padding = '';\n }\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case '<':\n _value = valuePrefix + _value + valueSuffix + padding;\n break;\n case '=':\n _value = valuePrefix + padding + _value + valueSuffix;\n break;\n case '^':\n _value =\n padding.slice(0, (length = padding.length >> 1)) +\n valuePrefix +\n _value +\n valueSuffix +\n padding.slice(length);\n break;\n default:\n _value = padding + valuePrefix + _value + valueSuffix;\n break;\n }\n return numerals(_value);\n }\n\n format.toString = function () {\n return specifier + '';\n };\n\n return format;\n }\n\n private _formatPrefix(specifier: string, value: number) {\n const _specifier = formatSpecifier(specifier);\n _specifier.type = 'f';\n const f = this.newFormat(_specifier.toString());\n const e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3;\n const k = Math.pow(10, -e);\n const prefix = prefixes[8 + e / 3];\n return function (value: number) {\n return f(k * value) + prefix;\n };\n }\n\n formatter = (specifier: string) => {\n return this.newFormat(specifier);\n };\n\n format = (specifier: string, value: number) => {\n return this.formatter(specifier)(value);\n };\n\n formatPrefix = (specifier: string, value: number) => {\n return this._formatPrefix(specifier, value);\n };\n}\n\nexport const formatTypes = {\n '%': (x: number, p: number) => (x * 100).toFixed(p),\n b: (x: number) => Math.round(x).toString(2),\n c: (x: number) => x + '',\n d: formatDecimal,\n f: (x: number, p: number) => x.toFixed(p),\n e: (x: number, p: number) => x.toExponential(p),\n g: (x: number, p: number) => x.toPrecision(p),\n o: (x: number) => Math.round(x).toString(8),\n p: (x: number, p: number) => formatRounded(x * 100, p),\n r: formatRounded,\n s: formatPrefixAuto,\n X: (x: number) => Math.round(x).toString(16).toUpperCase(),\n x: (x: number) => Math.round(x).toString(16),\n t: (x: number, p: number) => {\n // 判断是否为整数\n if (Number.isInteger(x)) {\n return x.toFixed(2);\n }\n return Math.floor(x * Math.pow(10, p)) / Math.pow(10, p) + '';\n },\n z: (x: number, p: number) => (x % 1 === 0 ? x + '' : x.toFixed(p))\n};\n\nexport function exponent(x: number) {\n const _x = formatDecimalParts(Math.abs(x));\n return _x ? _x[1] : NaN;\n}\n\nexport function formatNumerals(numerals: string[]) {\n return function (value: string) {\n return value.replace(/[0-9]/g, (i: string) => numerals[+i]);\n };\n}\n"]}
@@ -26,10 +26,10 @@ export declare class NumberUtil {
26
26
  private newFormat;
27
27
  private _formatPrefix;
28
28
  formatter: (specifier: string) => {
29
- (value: number): string | string[];
29
+ (value: number): any;
30
30
  toString(): string;
31
31
  };
32
- format: (specifier: string, value: number) => string | string[];
32
+ format: (specifier: string, value: number) => any;
33
33
  formatPrefix: (specifier: string, value: number) => (value: number) => string;
34
34
  }
35
35
  export declare const formatTypes: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/number/number.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAa9C,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEtG,MAAM,OAAO,UAAU;IAAvB;QACU,WAAM,GAAiB;YAC7B,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,CAAC,CAAC,CAAC;YACb,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;SACpB,CAAC;QAEM,UAAK,GACX,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;YACvE,CAAC,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK;YACvB,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7E,mBAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACxF,mBAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACxF,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QAC7E,aAAQ,GACd,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS;YAChC,CAAC,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ;YAClC,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QAC7E,UAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QACvE,QAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QA+K3E,cAAS,GAAG,CAAC,SAAiB,EAAE,EAAE;YAChC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE;YAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE;YAClD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC;IAtLC,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YACxB,UAAU,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;SACxC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAEO,SAAS,CAAC,SAAiB;QACjC,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAEhD,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC7B,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACjC,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QAC/B,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QACvC,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC7B,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAG7B,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;SAC9B;aAGI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC3B,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;SAC1E;QAID,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,EAAE;YAC3C,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;SAC5C;QAID,MAAM,MAAM,GACV,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/G,MAAM,MAAM,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAK5F,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAM9C,SAAS;YACP,SAAS,KAAK,SAAS;gBACrB,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;oBACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oBACtC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QAE3C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAEtD,SAAS,MAAM,CAAC,KAAa;YAC3B,IAAI,WAAW,GAAG,MAAM,CAAC;YACzB,IAAI,WAAW,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,CAAC;YACN,IAAI,MAAM,GAAQ,KAAK,CAAC;YAExB,IAAI,IAAI,KAAK,GAAG,EAAE;gBAChB,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;gBAC/C,MAAM,GAAG,EAAE,CAAC;aACb;iBAAM;gBACL,MAAM,GAAG,CAAC,MAAM,CAAC;gBAGjB,IAAI,aAAa,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;gBAGjD,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;gBAGvE,IAAI,IAAI,EAAE;oBACR,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;iBAC7B;gBAGD,IAAI,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,EAAE;oBAClD,aAAa,GAAG,KAAK,CAAC;iBACvB;gBAGD,WAAW;oBACT,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;gBAC3G,WAAW;oBACT,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACtD,WAAW;wBACX,CAAC,aAAa,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAI7C,IAAI,WAAW,EAAE;oBACf,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9B,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;wBACd,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;4BAClD,WAAW,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;4BACzF,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC5B,MAAM;yBACP;qBACF;iBACF;aACF;YAGD,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;gBAClB,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAClC;YAGD,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YACrE,IAAI,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAG7E,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACzF,OAAO,GAAG,EAAE,CAAC;aACd;YAGD,QAAQ,KAAK,EAAE;gBACb,KAAK,GAAG;oBACN,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;oBACtD,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;oBACtD,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM;wBACJ,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;4BAChD,WAAW;4BACX,MAAM;4BACN,WAAW;4BACX,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACxB,MAAM;gBACR;oBACE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;oBACtD,MAAM;aACT;YACD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,CAAC,QAAQ,GAAG;YAChB,OAAO,SAAS,GAAG,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa,CAAC,SAAiB,EAAE,KAAa;QACpD,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAC9C,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,OAAO,UAAU,KAAa;YAC5B,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;QAC/B,CAAC,CAAC;IACJ,CAAC;CAaF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE;IACxB,CAAC,EAAE,aAAa;IAChB,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7C,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC,EAAE,aAAa;IAChB,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;IAC1D,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5C,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QAE1B,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACvB,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACrB;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAChE,CAAC;IACD,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,OAAO,UAAU,KAAa;QAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC","file":"number.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\n\nimport { formatDecimal, formatDecimalParts } from './formatDecimal';\nimport { formatGroup } from './formatGroup';\nimport { formatPrefixAuto, prefixExponent } from './formatPrefixAuto';\nimport { formatRounded } from './formatRounded';\nimport { formatTrim } from './formatTrim';\nimport { formatSpecifier } from './specifier';\n\nexport interface FormatLocale {\n thousands: string;\n grouping: number[];\n currency: [string, string];\n numerals?: string[] | undefined;\n percent?: string | undefined;\n minus?: string | undefined;\n nan?: string | undefined;\n decimal?: string;\n}\n\nconst prefixes = ['y', 'z', 'a', 'f', 'p', 'n', 'µ', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];\n\nexport class NumberUtil {\n private locale: FormatLocale = {\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n };\n\n private group =\n this.locale.grouping === undefined || this.locale.thousands === undefined\n ? (group: any) => group\n : formatGroup([...this.locale.grouping].map(Number), `${this.locale.thousands}`);\n private currencyPrefix = this.locale.currency === undefined ? '' : this.locale.currency[0] + '';\n private currencySuffix = this.locale.currency === undefined ? '' : this.locale.currency[1] + '';\n private decimal = this.locale.decimal === undefined ? '.' : this.locale.decimal + '';\n private numerals =\n this.locale.numerals === undefined\n ? (numerals: string[]) => numerals\n : formatNumerals([...this.locale.numerals].map(String));\n private percent = this.locale.percent === undefined ? '%' : this.locale.percent + '';\n private minus = this.locale.minus === undefined ? '−' : this.locale.minus + '';\n private nan = this.locale.nan === undefined ? 'NaN' : this.locale.nan + '';\n\n private static instance: NumberUtil;\n\n static getInstance(): NumberUtil {\n if (!NumberUtil.instance) {\n NumberUtil.instance = new NumberUtil();\n }\n return NumberUtil.instance;\n }\n\n private newFormat(specifier: string) {\n const specifierIns = formatSpecifier(specifier);\n\n let fill = specifierIns.fill;\n let align = specifierIns.align;\n const sign = specifierIns.sign;\n const symbol = specifierIns.symbol;\n let zero = specifierIns.zero;\n const width = specifierIns.width;\n let comma = specifierIns.comma;\n let precision = specifierIns.precision;\n let trim = specifierIns.trim;\n let type = specifierIns.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === 'n') {\n (comma = true), (type = 'g');\n }\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n // @ts-ignore\n else if (!formatTypes[type]) {\n precision === undefined && (precision = 12), (trim = true), (type = 'g');\n }\n\n // If zero fill is specified, padding goes after sign and before digits.\n // @ts-ignore\n if (zero || (fill === '0' && align === '=')) {\n (zero = true), (fill = '0'), (align = '=');\n }\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n const prefix =\n symbol === '$' ? this.currencyPrefix : symbol === '#' && /[boxX]/.test(type) ? '0' + type.toLowerCase() : '';\n const suffix = symbol === '$' ? this.currencySuffix : /[%p]/.test(type) ? this.percent : '';\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n const formatType = formatTypes[type];\n const maybeSuffix = /[defgprstz%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision =\n precision === undefined\n ? 6\n : /[gprs]/.test(type)\n ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n const { nan, minus, decimal, group, numerals } = this;\n\n function format(value: number) {\n let valuePrefix = prefix;\n let valueSuffix = suffix;\n let i;\n let n;\n let c;\n let _value: any = value;\n\n if (type === 'c') {\n valueSuffix = formatType(_value) + valueSuffix;\n _value = '';\n } else {\n _value = +_value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n let valueNegative = _value < 0 || 1 / _value < 0;\n\n // Perform the initial formatting.\n _value = isNaN(_value) ? nan : formatType(Math.abs(_value), precision);\n\n // Trim insignificant zeros.\n if (trim) {\n _value = formatTrim(_value);\n }\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +_value === 0 && sign !== '+') {\n valueNegative = false;\n }\n\n // Compute the prefix and suffix.\n valuePrefix =\n (valueNegative ? (sign === '(' ? sign : minus) : sign === '-' || sign === '(' ? '' : sign) + valuePrefix;\n valueSuffix =\n (type === 's' ? prefixes[8 + prefixExponent / 3] : '') +\n valueSuffix +\n (valueNegative && sign === '(' ? ')' : '');\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n (i = -1), (n = _value.length);\n while (++i < n) {\n if (((c = _value.charCodeAt(i)), 48 > c || c > 57)) {\n valueSuffix = (c === 46 ? decimal + _value.slice(i + 1) : _value.slice(i)) + valueSuffix;\n _value = _value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) {\n _value = group(_value, Infinity);\n }\n\n // Compute the padding.\n let length = valuePrefix.length + _value.length + valueSuffix.length;\n let padding = length < width ? new Array(width - length + 1).join(fill) : '';\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) {\n _value = group(padding + _value, padding.length ? width - valueSuffix.length : Infinity);\n padding = '';\n }\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case '<':\n _value = valuePrefix + _value + valueSuffix + padding;\n break;\n case '=':\n _value = valuePrefix + padding + _value + valueSuffix;\n break;\n case '^':\n _value =\n padding.slice(0, (length = padding.length >> 1)) +\n valuePrefix +\n _value +\n valueSuffix +\n padding.slice(length);\n break;\n default:\n _value = padding + valuePrefix + _value + valueSuffix;\n break;\n }\n return numerals(_value);\n }\n\n format.toString = function () {\n return specifier + '';\n };\n\n return format;\n }\n\n private _formatPrefix(specifier: string, value: number) {\n const _specifier = formatSpecifier(specifier);\n _specifier.type = 'f';\n const f = this.newFormat(_specifier.toString());\n const e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3;\n const k = Math.pow(10, -e);\n const prefix = prefixes[8 + e / 3];\n return function (value: number) {\n return f(k * value) + prefix;\n };\n }\n\n formatter = (specifier: string) => {\n return this.newFormat(specifier);\n };\n\n format = (specifier: string, value: number) => {\n return this.formatter(specifier)(value);\n };\n\n formatPrefix = (specifier: string, value: number) => {\n return this._formatPrefix(specifier, value);\n };\n}\n\nexport const formatTypes = {\n '%': (x: number, p: number) => (x * 100).toFixed(p),\n b: (x: number) => Math.round(x).toString(2),\n c: (x: number) => x + '',\n d: formatDecimal,\n f: (x: number, p: number) => x.toFixed(p),\n e: (x: number, p: number) => x.toExponential(p),\n g: (x: number, p: number) => x.toPrecision(p),\n o: (x: number) => Math.round(x).toString(8),\n p: (x: number, p: number) => formatRounded(x * 100, p),\n r: formatRounded,\n s: formatPrefixAuto,\n X: (x: number) => Math.round(x).toString(16).toUpperCase(),\n x: (x: number) => Math.round(x).toString(16),\n t: (x: number, p: number) => {\n // 判断是否为整数\n if (Number.isInteger(x)) {\n return x.toFixed(2);\n }\n return Math.floor(x * Math.pow(10, p)) / Math.pow(10, p) + '';\n },\n z: (x: number, p: number) => (x % 1 === 0 ? x + '' : x.toFixed(p))\n};\n\nexport function exponent(x: number) {\n const _x = formatDecimalParts(Math.abs(x));\n return _x ? _x[1] : NaN;\n}\n\nexport function formatNumerals(numerals: string[]) {\n return function (value: string) {\n return value.replace(/[0-9]/g, (i: string) => numerals[+i]);\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/format/number/number.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAa9C,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEtG,MAAM,OAAO,UAAU;IAAvB;QACU,WAAM,GAAiB;YAC7B,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,CAAC,CAAC,CAAC;YACb,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;SACpB,CAAC;QAEM,UAAK,GACX,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;YACvE,CAAC,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK;YACvB,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7E,mBAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACxF,mBAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACxF,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QAC7E,aAAQ,GACd,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS;YAChC,CAAC,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,QAAQ;YAC7B,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACpD,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QAC7E,UAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QACvE,QAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QA+K3E,cAAS,GAAG,CAAC,SAAiB,EAAE,EAAE;YAChC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE;YAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE;YAClD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC;IACJ,CAAC;IAtLC,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YACxB,UAAU,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;SACxC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAEO,SAAS,CAAC,SAAiB;QACjC,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAEhD,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC7B,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACjC,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QAC/B,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QACvC,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC7B,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAG7B,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;SAC9B;aAGI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC3B,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;SAC1E;QAID,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,EAAE;YAC3C,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;SAC5C;QAID,MAAM,MAAM,GACV,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/G,MAAM,MAAM,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAK5F,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAM9C,SAAS;YACP,SAAS,KAAK,SAAS;gBACrB,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;oBACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oBACtC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QAE3C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAEtD,SAAS,MAAM,CAAC,KAAa;YAC3B,IAAI,WAAW,GAAG,MAAM,CAAC;YACzB,IAAI,WAAW,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,CAAC;YACN,IAAI,MAAM,GAAQ,KAAK,CAAC;YAExB,IAAI,IAAI,KAAK,GAAG,EAAE;gBAChB,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;gBAC/C,MAAM,GAAG,EAAE,CAAC;aACb;iBAAM;gBACL,MAAM,GAAG,CAAC,MAAM,CAAC;gBAGjB,IAAI,aAAa,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;gBAGjD,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;gBAGvE,IAAI,IAAI,EAAE;oBACR,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;iBAC7B;gBAGD,IAAI,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,EAAE;oBAClD,aAAa,GAAG,KAAK,CAAC;iBACvB;gBAGD,WAAW;oBACT,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;gBAC3G,WAAW;oBACT,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACtD,WAAW;wBACX,CAAC,aAAa,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAI7C,IAAI,WAAW,EAAE;oBACf,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9B,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;wBACd,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;4BAClD,WAAW,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;4BACzF,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BAC5B,MAAM;yBACP;qBACF;iBACF;aACF;YAGD,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;gBAClB,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAClC;YAGD,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YACrE,IAAI,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAG7E,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACzF,OAAO,GAAG,EAAE,CAAC;aACd;YAGD,QAAQ,KAAK,EAAE;gBACb,KAAK,GAAG;oBACN,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;oBACtD,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;oBACtD,MAAM;gBACR,KAAK,GAAG;oBACN,MAAM;wBACJ,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;4BAChD,WAAW;4BACX,MAAM;4BACN,WAAW;4BACX,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACxB,MAAM;gBACR;oBACE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;oBACtD,MAAM;aACT;YACD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,CAAC,QAAQ,GAAG;YAChB,OAAO,SAAS,GAAG,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa,CAAC,SAAiB,EAAE,KAAa;QACpD,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAC9C,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,OAAO,UAAU,KAAa;YAC5B,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;QAC/B,CAAC,CAAC;IACJ,CAAC;CAaF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE;IACxB,CAAC,EAAE,aAAa;IAChB,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7C,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC,EAAE,aAAa;IAChB,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;IAC1D,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5C,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QAE1B,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACvB,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACrB;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAChE,CAAC;IACD,CAAC,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,MAAM,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,OAAO,UAAU,KAAa;QAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC","file":"number.js","sourcesContent":["/* Adapted from d3-time-format by Mike Bostock\n * https://github.com/d3/d3-format\n * Licensed under the ISC\n\n * License: https://github.com/d3/d3-format/blob/main/LICENSE\n * @license\n */\n\nimport { formatDecimal, formatDecimalParts } from './formatDecimal';\nimport { formatGroup } from './formatGroup';\nimport { formatPrefixAuto, prefixExponent } from './formatPrefixAuto';\nimport { formatRounded } from './formatRounded';\nimport { formatTrim } from './formatTrim';\nimport { formatSpecifier } from './specifier';\n\nexport interface FormatLocale {\n thousands: string;\n grouping: number[];\n currency: [string, string];\n numerals?: string[] | undefined;\n percent?: string | undefined;\n minus?: string | undefined;\n nan?: string | undefined;\n decimal?: string;\n}\n\nconst prefixes = ['y', 'z', 'a', 'f', 'p', 'n', 'µ', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];\n\nexport class NumberUtil {\n private locale: FormatLocale = {\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n };\n\n private group =\n this.locale.grouping === undefined || this.locale.thousands === undefined\n ? (group: any) => group\n : formatGroup([...this.locale.grouping].map(Number), `${this.locale.thousands}`);\n private currencyPrefix = this.locale.currency === undefined ? '' : this.locale.currency[0] + '';\n private currencySuffix = this.locale.currency === undefined ? '' : this.locale.currency[1] + '';\n private decimal = this.locale.decimal === undefined ? '.' : this.locale.decimal + '';\n private numerals =\n this.locale.numerals === undefined\n ? (numerals: any) => numerals\n : formatNumerals([...this.locale.numerals].map(String));\n private percent = this.locale.percent === undefined ? '%' : this.locale.percent + '';\n private minus = this.locale.minus === undefined ? '−' : this.locale.minus + '';\n private nan = this.locale.nan === undefined ? 'NaN' : this.locale.nan + '';\n\n private static instance: NumberUtil;\n\n static getInstance(): NumberUtil {\n if (!NumberUtil.instance) {\n NumberUtil.instance = new NumberUtil();\n }\n return NumberUtil.instance;\n }\n\n private newFormat(specifier: string) {\n const specifierIns = formatSpecifier(specifier);\n\n let fill = specifierIns.fill;\n let align = specifierIns.align;\n const sign = specifierIns.sign;\n const symbol = specifierIns.symbol;\n let zero = specifierIns.zero;\n const width = specifierIns.width;\n let comma = specifierIns.comma;\n let precision = specifierIns.precision;\n let trim = specifierIns.trim;\n let type = specifierIns.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === 'n') {\n (comma = true), (type = 'g');\n }\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n // @ts-ignore\n else if (!formatTypes[type]) {\n precision === undefined && (precision = 12), (trim = true), (type = 'g');\n }\n\n // If zero fill is specified, padding goes after sign and before digits.\n // @ts-ignore\n if (zero || (fill === '0' && align === '=')) {\n (zero = true), (fill = '0'), (align = '=');\n }\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n const prefix =\n symbol === '$' ? this.currencyPrefix : symbol === '#' && /[boxX]/.test(type) ? '0' + type.toLowerCase() : '';\n const suffix = symbol === '$' ? this.currencySuffix : /[%p]/.test(type) ? this.percent : '';\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n const formatType = formatTypes[type];\n const maybeSuffix = /[defgprstz%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision =\n precision === undefined\n ? 6\n : /[gprs]/.test(type)\n ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n const { nan, minus, decimal, group, numerals } = this;\n\n function format(value: number) {\n let valuePrefix = prefix;\n let valueSuffix = suffix;\n let i;\n let n;\n let c;\n let _value: any = value;\n\n if (type === 'c') {\n valueSuffix = formatType(_value) + valueSuffix;\n _value = '';\n } else {\n _value = +_value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n let valueNegative = _value < 0 || 1 / _value < 0;\n\n // Perform the initial formatting.\n _value = isNaN(_value) ? nan : formatType(Math.abs(_value), precision);\n\n // Trim insignificant zeros.\n if (trim) {\n _value = formatTrim(_value);\n }\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +_value === 0 && sign !== '+') {\n valueNegative = false;\n }\n\n // Compute the prefix and suffix.\n valuePrefix =\n (valueNegative ? (sign === '(' ? sign : minus) : sign === '-' || sign === '(' ? '' : sign) + valuePrefix;\n valueSuffix =\n (type === 's' ? prefixes[8 + prefixExponent / 3] : '') +\n valueSuffix +\n (valueNegative && sign === '(' ? ')' : '');\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n (i = -1), (n = _value.length);\n while (++i < n) {\n if (((c = _value.charCodeAt(i)), 48 > c || c > 57)) {\n valueSuffix = (c === 46 ? decimal + _value.slice(i + 1) : _value.slice(i)) + valueSuffix;\n _value = _value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) {\n _value = group(_value, Infinity);\n }\n\n // Compute the padding.\n let length = valuePrefix.length + _value.length + valueSuffix.length;\n let padding = length < width ? new Array(width - length + 1).join(fill) : '';\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) {\n _value = group(padding + _value, padding.length ? width - valueSuffix.length : Infinity);\n padding = '';\n }\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case '<':\n _value = valuePrefix + _value + valueSuffix + padding;\n break;\n case '=':\n _value = valuePrefix + padding + _value + valueSuffix;\n break;\n case '^':\n _value =\n padding.slice(0, (length = padding.length >> 1)) +\n valuePrefix +\n _value +\n valueSuffix +\n padding.slice(length);\n break;\n default:\n _value = padding + valuePrefix + _value + valueSuffix;\n break;\n }\n return numerals(_value);\n }\n\n format.toString = function () {\n return specifier + '';\n };\n\n return format;\n }\n\n private _formatPrefix(specifier: string, value: number) {\n const _specifier = formatSpecifier(specifier);\n _specifier.type = 'f';\n const f = this.newFormat(_specifier.toString());\n const e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3;\n const k = Math.pow(10, -e);\n const prefix = prefixes[8 + e / 3];\n return function (value: number) {\n return f(k * value) + prefix;\n };\n }\n\n formatter = (specifier: string) => {\n return this.newFormat(specifier);\n };\n\n format = (specifier: string, value: number) => {\n return this.formatter(specifier)(value);\n };\n\n formatPrefix = (specifier: string, value: number) => {\n return this._formatPrefix(specifier, value);\n };\n}\n\nexport const formatTypes = {\n '%': (x: number, p: number) => (x * 100).toFixed(p),\n b: (x: number) => Math.round(x).toString(2),\n c: (x: number) => x + '',\n d: formatDecimal,\n f: (x: number, p: number) => x.toFixed(p),\n e: (x: number, p: number) => x.toExponential(p),\n g: (x: number, p: number) => x.toPrecision(p),\n o: (x: number) => Math.round(x).toString(8),\n p: (x: number, p: number) => formatRounded(x * 100, p),\n r: formatRounded,\n s: formatPrefixAuto,\n X: (x: number) => Math.round(x).toString(16).toUpperCase(),\n x: (x: number) => Math.round(x).toString(16),\n t: (x: number, p: number) => {\n // 判断是否为整数\n if (Number.isInteger(x)) {\n return x.toFixed(2);\n }\n return Math.floor(x * Math.pow(10, p)) / Math.pow(10, p) + '';\n },\n z: (x: number, p: number) => (x % 1 === 0 ? x + '' : x.toFixed(p))\n};\n\nexport function exponent(x: number) {\n const _x = formatDecimalParts(Math.abs(x));\n return _x ? _x[1] : NaN;\n}\n\nexport function formatNumerals(numerals: string[]) {\n return function (value: string) {\n return value.replace(/[0-9]/g, (i: string) => numerals[+i]);\n };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visactor/vutils",
3
- "version": "0.18.0-alpha.1",
3
+ "version": "0.18.0",
4
4
  "main": "cjs/index.js",
5
5
  "module": "es/index.js",
6
6
  "types": "es/index.d.ts",
@@ -28,8 +28,8 @@
28
28
  "typescript": "4.9.5",
29
29
  "@types/node": "*",
30
30
  "@internal/bundler": "0.0.1",
31
- "@internal/eslint-config": "0.0.1",
32
31
  "@internal/jest-config": "0.0.1",
32
+ "@internal/eslint-config": "0.0.1",
33
33
  "@internal/ts-config": "0.0.1"
34
34
  },
35
35
  "dependencies": {