123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*!
- * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
- * v1.0.0-beta.82
- */
- 'use strict';
- const number = require('./number-364babbc.js');
- const locales = [
- "ar",
- "bg",
- "bs",
- "ca",
- "cs",
- "da",
- "de",
- "de-CH",
- "el",
- "en",
- "en-AU",
- "en-CA",
- "en-GB",
- "es",
- "es-MX",
- "et",
- "fi",
- "fr",
- "fr-CH",
- "he",
- "hi",
- "hr",
- "hu",
- "id",
- "it",
- "it-CH",
- "ja",
- "ko",
- "lt",
- "lv",
- "mk",
- "nb",
- "nl",
- "pl",
- "pt",
- "pt-PT",
- "ro",
- "ru",
- "sk",
- "sl",
- "sr",
- "sv",
- "th",
- "tr",
- "uk",
- "vi",
- "zh-CN",
- "zh-HK",
- "zh-TW"
- ];
- const allDecimalsExceptLast = new RegExp(`[.](?=.*[.])`, "g");
- const everythingExceptNumbersDecimalsAndMinusSigns = new RegExp("[^0-9-.]", "g");
- const defaultGroupSeparator = new RegExp(",", "g");
- function createLocaleNumberFormatter(locale) {
- return new Intl.NumberFormat(locale, {
- minimumFractionDigits: 0,
- maximumFractionDigits: 20
- });
- }
- function delocalizeNumberString(numberString, locale) {
- return number.sanitizeExponentialNumberString(numberString, (nonExpoNumString) => {
- const delocalizedNumberString = nonExpoNumString
- .replace(getMinusSign(locale), "-")
- .replace(getGroupSeparator(locale), "")
- .replace(getDecimalSeparator(locale), ".")
- .replace(allDecimalsExceptLast, "")
- .replace(everythingExceptNumbersDecimalsAndMinusSigns, "");
- return number.isValidNumber(delocalizedNumberString) ? delocalizedNumberString : nonExpoNumString;
- });
- }
- function getGroupSeparator(locale) {
- const formatter = createLocaleNumberFormatter(locale);
- const parts = formatter.formatToParts(1234567);
- const value = parts.find((part) => part.type === "group").value;
- // change whitespace group characters that don't render correctly
- return value.trim().length === 0 ? " " : value;
- }
- function getDecimalSeparator(locale) {
- const formatter = createLocaleNumberFormatter(locale);
- const parts = formatter.formatToParts(1.1);
- return parts.find((part) => part.type === "decimal").value;
- }
- function getMinusSign(locale) {
- const formatter = createLocaleNumberFormatter(locale);
- const parts = formatter.formatToParts(-9);
- return parts.find((part) => part.type === "minusSign").value;
- }
- function localizeNumberString(numberString, locale, displayGroupSeparator = false) {
- return number.sanitizeExponentialNumberString(numberString, (nonExpoNumString) => {
- if (nonExpoNumString) {
- const number$1 = Number(number.sanitizeDecimalString(nonExpoNumString.replace(defaultGroupSeparator, "")));
- if (!isNaN(number$1)) {
- const formatter = createLocaleNumberFormatter(locale);
- const parts = formatter.formatToParts(number$1);
- const localizedNumberString = parts
- .map(({ type, value }) => {
- switch (type) {
- case "group":
- return displayGroupSeparator ? getGroupSeparator(locale) : "";
- case "decimal":
- return getDecimalSeparator(locale);
- case "minusSign":
- return getMinusSign(locale);
- default:
- return value;
- }
- })
- .reduce((string, part) => string + part);
- return localizedNumberString;
- }
- }
- return nonExpoNumString;
- });
- }
- exports.delocalizeNumberString = delocalizeNumberString;
- exports.getDecimalSeparator = getDecimalSeparator;
- exports.locales = locales;
- exports.localizeNumberString = localizeNumberString;
|