locale-7ce850e5.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*!
  2. * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
  4. * v1.0.0-beta.82
  5. */
  6. import { a as sanitizeExponentialNumberString, i as isValidNumber, b as sanitizeDecimalString } from './number-237e74a9.js';
  7. const locales = [
  8. "ar",
  9. "bg",
  10. "bs",
  11. "ca",
  12. "cs",
  13. "da",
  14. "de",
  15. "de-CH",
  16. "el",
  17. "en",
  18. "en-AU",
  19. "en-CA",
  20. "en-GB",
  21. "es",
  22. "es-MX",
  23. "et",
  24. "fi",
  25. "fr",
  26. "fr-CH",
  27. "he",
  28. "hi",
  29. "hr",
  30. "hu",
  31. "id",
  32. "it",
  33. "it-CH",
  34. "ja",
  35. "ko",
  36. "lt",
  37. "lv",
  38. "mk",
  39. "nb",
  40. "nl",
  41. "pl",
  42. "pt",
  43. "pt-PT",
  44. "ro",
  45. "ru",
  46. "sk",
  47. "sl",
  48. "sr",
  49. "sv",
  50. "th",
  51. "tr",
  52. "uk",
  53. "vi",
  54. "zh-CN",
  55. "zh-HK",
  56. "zh-TW"
  57. ];
  58. const allDecimalsExceptLast = new RegExp(`[.](?=.*[.])`, "g");
  59. const everythingExceptNumbersDecimalsAndMinusSigns = new RegExp("[^0-9-.]", "g");
  60. const defaultGroupSeparator = new RegExp(",", "g");
  61. function createLocaleNumberFormatter(locale) {
  62. return new Intl.NumberFormat(locale, {
  63. minimumFractionDigits: 0,
  64. maximumFractionDigits: 20
  65. });
  66. }
  67. function delocalizeNumberString(numberString, locale) {
  68. return sanitizeExponentialNumberString(numberString, (nonExpoNumString) => {
  69. const delocalizedNumberString = nonExpoNumString
  70. .replace(getMinusSign(locale), "-")
  71. .replace(getGroupSeparator(locale), "")
  72. .replace(getDecimalSeparator(locale), ".")
  73. .replace(allDecimalsExceptLast, "")
  74. .replace(everythingExceptNumbersDecimalsAndMinusSigns, "");
  75. return isValidNumber(delocalizedNumberString) ? delocalizedNumberString : nonExpoNumString;
  76. });
  77. }
  78. function getGroupSeparator(locale) {
  79. const formatter = createLocaleNumberFormatter(locale);
  80. const parts = formatter.formatToParts(1234567);
  81. const value = parts.find((part) => part.type === "group").value;
  82. // change whitespace group characters that don't render correctly
  83. return value.trim().length === 0 ? " " : value;
  84. }
  85. function getDecimalSeparator(locale) {
  86. const formatter = createLocaleNumberFormatter(locale);
  87. const parts = formatter.formatToParts(1.1);
  88. return parts.find((part) => part.type === "decimal").value;
  89. }
  90. function getMinusSign(locale) {
  91. const formatter = createLocaleNumberFormatter(locale);
  92. const parts = formatter.formatToParts(-9);
  93. return parts.find((part) => part.type === "minusSign").value;
  94. }
  95. function localizeNumberString(numberString, locale, displayGroupSeparator = false) {
  96. return sanitizeExponentialNumberString(numberString, (nonExpoNumString) => {
  97. if (nonExpoNumString) {
  98. const number = Number(sanitizeDecimalString(nonExpoNumString.replace(defaultGroupSeparator, "")));
  99. if (!isNaN(number)) {
  100. const formatter = createLocaleNumberFormatter(locale);
  101. const parts = formatter.formatToParts(number);
  102. const localizedNumberString = parts
  103. .map(({ type, value }) => {
  104. switch (type) {
  105. case "group":
  106. return displayGroupSeparator ? getGroupSeparator(locale) : "";
  107. case "decimal":
  108. return getDecimalSeparator(locale);
  109. case "minusSign":
  110. return getMinusSign(locale);
  111. default:
  112. return value;
  113. }
  114. })
  115. .reduce((string, part) => string + part);
  116. return localizedNumberString;
  117. }
  118. }
  119. return nonExpoNumString;
  120. });
  121. }
  122. export { locales as a, delocalizeNumberString as d, getDecimalSeparator as g, localizeNumberString as l };