{"ast":null,"code":"import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport _babelRuntimeHelpersEsmExtends from \"@babel/runtime/helpers/esm/extends\";\nvar $fe87f22deac4debf3eab2ca6a89602ab$var$formatterCache = new Map();\nvar $fe87f22deac4debf3eab2ca6a89602ab$var$supportsSignDisplay = false;\n\ntry {\n  $fe87f22deac4debf3eab2ca6a89602ab$var$supportsSignDisplay = new Intl.NumberFormat('de-DE', {\n    signDisplay: 'exceptZero'\n  }).resolvedOptions().signDisplay === 'exceptZero';\n} catch (e) {}\n\nvar $fe87f22deac4debf3eab2ca6a89602ab$var$supportsUnit = false;\n\ntry {\n  $fe87f22deac4debf3eab2ca6a89602ab$var$supportsUnit = new Intl.NumberFormat('de-DE', {\n    style: 'unit',\n    unit: 'degree'\n  }).resolvedOptions().style === 'unit';\n} catch (e) {}\n\nvar $fe87f22deac4debf3eab2ca6a89602ab$var$UNITS = {\n  degree: {\n    narrow: {\n      default: '°',\n      'ja-JP': ' 度',\n      'zh-TW': '度',\n      'sl-SI': ' °'\n    }\n  }\n};\nexport var NumberFormatter = function () {\n  function NumberFormatter(locale, options) {\n    _classCallCheck(this, NumberFormatter);\n\n    if (options === void 0) {\n      options = {};\n    }\n\n    this.numberFormatter = void 0;\n    this.options = void 0;\n    this.numberFormatter = $fe87f22deac4debf3eab2ca6a89602ab$var$getCachedNumberFormatter(locale, options);\n    this.options = options;\n  }\n\n  _createClass(NumberFormatter, [{\n    key: \"format\",\n    value: function format(value) {\n      var res = '';\n\n      if (!$fe87f22deac4debf3eab2ca6a89602ab$var$supportsSignDisplay && this.options.signDisplay != null) {\n        res = $fe87f22deac4debf3eab2ca6a89602ab$export$numberFormatSignDisplayPolyfill(this.numberFormatter, this.options.signDisplay, value);\n      } else {\n        res = this.numberFormatter.format(value);\n      }\n\n      if (this.options.style === 'unit' && !$fe87f22deac4debf3eab2ca6a89602ab$var$supportsUnit) {\n        var _UNITS$unit;\n\n        var _this$resolvedOptions = this.resolvedOptions(),\n            unit = _this$resolvedOptions.unit,\n            _this$resolvedOptions2 = _this$resolvedOptions.unitDisplay,\n            unitDisplay = _this$resolvedOptions2 === void 0 ? 'short' : _this$resolvedOptions2,\n            locale = _this$resolvedOptions.locale;\n\n        var values = (_UNITS$unit = $fe87f22deac4debf3eab2ca6a89602ab$var$UNITS[unit]) == null ? void 0 : _UNITS$unit[unitDisplay];\n        res += values[locale] || values.default;\n      }\n\n      return res;\n    }\n  }, {\n    key: \"formatToParts\",\n    value: function formatToParts(value) {\n      return this.numberFormatter.formatToParts(value);\n    }\n  }, {\n    key: \"resolvedOptions\",\n    value: function resolvedOptions() {\n      var options = this.numberFormatter.resolvedOptions();\n\n      if (!$fe87f22deac4debf3eab2ca6a89602ab$var$supportsSignDisplay && this.options.signDisplay != null) {\n        options = _babelRuntimeHelpersEsmExtends({}, options, {\n          signDisplay: this.options.signDisplay\n        });\n      }\n\n      if (!$fe87f22deac4debf3eab2ca6a89602ab$var$supportsUnit && this.options.style === 'unit') {\n        options = _babelRuntimeHelpersEsmExtends({}, options, {\n          style: 'unit',\n          unit: this.options.unit,\n          unitDisplay: this.options.unitDisplay\n        });\n      }\n\n      return options;\n    }\n  }]);\n\n  return NumberFormatter;\n}();\n\nfunction $fe87f22deac4debf3eab2ca6a89602ab$var$getCachedNumberFormatter(locale, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      numberingSystem = _options.numberingSystem;\n\n  if (numberingSystem && locale.indexOf('-u-nu-') === -1) {\n    locale = locale + \"-u-nu-\" + numberingSystem;\n  }\n\n  if (options.style === 'unit' && !$fe87f22deac4debf3eab2ca6a89602ab$var$supportsUnit) {\n    var _UNITS$unit2;\n\n    var _options2 = options,\n        unit = _options2.unit,\n        _options2$unitDisplay = _options2.unitDisplay,\n        unitDisplay = _options2$unitDisplay === void 0 ? 'short' : _options2$unitDisplay;\n\n    if (!unit) {\n      throw new Error('unit option must be provided with style: \"unit\"');\n    }\n\n    if (!((_UNITS$unit2 = $fe87f22deac4debf3eab2ca6a89602ab$var$UNITS[unit]) != null && _UNITS$unit2[unitDisplay])) {\n      throw new Error(\"Unsupported unit \" + unit + \" with unitDisplay = \" + unitDisplay);\n    }\n\n    options = _babelRuntimeHelpersEsmExtends({}, options, {\n      style: 'decimal'\n    });\n  }\n\n  var cacheKey = locale + (options ? Object.entries(options).sort(function (a, b) {\n    return a[0] < b[0] ? -1 : 1;\n  }).join() : '');\n\n  if ($fe87f22deac4debf3eab2ca6a89602ab$var$formatterCache.has(cacheKey)) {\n    return $fe87f22deac4debf3eab2ca6a89602ab$var$formatterCache.get(cacheKey);\n  }\n\n  var numberFormatter = new Intl.NumberFormat(locale, options);\n  $fe87f22deac4debf3eab2ca6a89602ab$var$formatterCache.set(cacheKey, numberFormatter);\n  return numberFormatter;\n}\n\nfunction $fe87f22deac4debf3eab2ca6a89602ab$export$numberFormatSignDisplayPolyfill(numberFormat, signDisplay, num) {\n  if (signDisplay === 'auto') {\n    return numberFormat.format(num);\n  } else if (signDisplay === 'never') {\n    return numberFormat.format(Math.abs(num));\n  } else {\n    var needsPositiveSign = false;\n\n    if (signDisplay === 'always') {\n      needsPositiveSign = num > 0 || Object.is(num, 0);\n    } else if (signDisplay === 'exceptZero') {\n      if (Object.is(num, -0) || Object.is(num, 0)) {\n        num = Math.abs(num);\n      } else {\n        needsPositiveSign = num > 0;\n      }\n    }\n\n    if (needsPositiveSign) {\n      var negative = numberFormat.format(-num);\n      var noSign = numberFormat.format(num);\n      var minus = negative.replace(noSign, '').replace(/\\u200e|\\u061C/, '');\n\n      if (_toConsumableArray(minus).length !== 1) {\n        console.warn('@react-aria/i18n polyfill for NumberFormat signDisplay: Unsupported case');\n      }\n\n      var positive = negative.replace(noSign, '!!!').replace(minus, '+').replace('!!!', noSign);\n      return positive;\n    } else {\n      return numberFormat.format(num);\n    }\n  }\n}\n\nvar $e1a22841ad5113a054c8ebe55b24e1a$var$CURRENCY_SIGN_REGEX = new RegExp('^.*\\\\(.*\\\\).*$');\nvar $e1a22841ad5113a054c8ebe55b24e1a$var$NUMBERING_SYSTEMS = ['latn', 'arab', 'hanidec'];\nexport var NumberParser = function () {\n  function NumberParser(locale, options) {\n    _classCallCheck(this, NumberParser);\n\n    if (options === void 0) {\n      options = {};\n    }\n\n    this.locale = void 0;\n    this.options = void 0;\n    this.locale = locale;\n    this.options = options;\n  }\n\n  _createClass(NumberParser, [{\n    key: \"parse\",\n    value: function parse(value) {\n      return $e1a22841ad5113a054c8ebe55b24e1a$var$getNumberParserImpl(this.locale, this.options, value).parse(value);\n    }\n  }, {\n    key: \"isValidPartialNumber\",\n    value: function isValidPartialNumber(value, minValue, maxValue) {\n      return $e1a22841ad5113a054c8ebe55b24e1a$var$getNumberParserImpl(this.locale, this.options, value).isValidPartialNumber(value, minValue, maxValue);\n    }\n  }, {\n    key: \"getNumberingSystem\",\n    value: function getNumberingSystem(value) {\n      return $e1a22841ad5113a054c8ebe55b24e1a$var$getNumberParserImpl(this.locale, this.options, value).options.numberingSystem;\n    }\n  }]);\n\n  return NumberParser;\n}();\nvar $e1a22841ad5113a054c8ebe55b24e1a$var$numberParserCache = new Map();\n\nfunction $e1a22841ad5113a054c8ebe55b24e1a$var$getNumberParserImpl(locale, options, value) {\n  var defaultParser = $e1a22841ad5113a054c8ebe55b24e1a$var$getCachedNumberParser(locale, options);\n\n  if (!locale.includes('-nu-') && !defaultParser.isValidPartialNumber(value)) {\n    for (var _iterator = _createForOfIteratorHelperLoose($e1a22841ad5113a054c8ebe55b24e1a$var$NUMBERING_SYSTEMS), _step; !(_step = _iterator()).done;) {\n      var numberingSystem = _step.value;\n\n      if (numberingSystem !== defaultParser.options.numberingSystem) {\n        var parser = $e1a22841ad5113a054c8ebe55b24e1a$var$getCachedNumberParser(locale + (locale.includes('-u-') ? '-nu-' : '-u-nu-') + numberingSystem, options);\n\n        if (parser.isValidPartialNumber(value)) {\n          return parser;\n        }\n      }\n    }\n  }\n\n  return defaultParser;\n}\n\nfunction $e1a22841ad5113a054c8ebe55b24e1a$var$getCachedNumberParser(locale, options) {\n  var cacheKey = locale + (options ? Object.entries(options).sort(function (a, b) {\n    return a[0] < b[0] ? -1 : 1;\n  }).join() : '');\n  var parser = $e1a22841ad5113a054c8ebe55b24e1a$var$numberParserCache.get(cacheKey);\n\n  if (!parser) {\n    parser = new $e1a22841ad5113a054c8ebe55b24e1a$var$NumberParserImpl(locale, options);\n    $e1a22841ad5113a054c8ebe55b24e1a$var$numberParserCache.set(cacheKey, parser);\n  }\n\n  return parser;\n}\n\nvar $e1a22841ad5113a054c8ebe55b24e1a$var$NumberParserImpl = function () {\n  function $e1a22841ad5113a054c8ebe55b24e1a$var$NumberParserImpl(locale, options) {\n    _classCallCheck(this, $e1a22841ad5113a054c8ebe55b24e1a$var$NumberParserImpl);\n\n    if (options === void 0) {\n      options = {};\n    }\n\n    this.formatter = void 0;\n    this.options = void 0;\n    this.symbols = void 0;\n    this.formatter = new Intl.NumberFormat(locale, options);\n    this.options = this.formatter.resolvedOptions();\n    this.symbols = $e1a22841ad5113a054c8ebe55b24e1a$var$getSymbols(this.formatter, this.options, options);\n  }\n\n  _createClass($e1a22841ad5113a054c8ebe55b24e1a$var$NumberParserImpl, [{\n    key: \"parse\",\n    value: function parse(value) {\n      var fullySanitizedValue = this.sanitize(value);\n      fullySanitizedValue = $e1a22841ad5113a054c8ebe55b24e1a$var$replaceAll(fullySanitizedValue, this.symbols.group, '').replace(this.symbols.decimal, '.').replace(this.symbols.minusSign, '-').replace(this.symbols.numeral, this.symbols.index);\n      var newValue = fullySanitizedValue ? +fullySanitizedValue : NaN;\n\n      if (isNaN(newValue)) {\n        return NaN;\n      }\n\n      if (this.options.currencySign === 'accounting' && $e1a22841ad5113a054c8ebe55b24e1a$var$CURRENCY_SIGN_REGEX.test(value)) {\n        newValue = -1 * newValue;\n      }\n\n      if (this.options.style === 'percent') {\n        var _this$options$maximum;\n\n        newValue /= 100;\n        newValue = +newValue.toFixed(((_this$options$maximum = this.options.maximumFractionDigits) != null ? _this$options$maximum : 0) + 2);\n      }\n\n      return newValue;\n    }\n  }, {\n    key: \"sanitize\",\n    value: function sanitize(value) {\n      value = value.replace(this.symbols.literals, '');\n      value = value.replace('-', this.symbols.minusSign);\n\n      if (this.options.numberingSystem === 'arab') {\n        value = value.replace(',', this.symbols.decimal);\n        value = value.replace(String.fromCharCode(1548), this.symbols.decimal);\n        value = $e1a22841ad5113a054c8ebe55b24e1a$var$replaceAll(value, '.', this.symbols.group);\n      }\n\n      if (this.options.locale === 'fr-FR') {\n        value = $e1a22841ad5113a054c8ebe55b24e1a$var$replaceAll(value, '.', String.fromCharCode(8239));\n      }\n\n      return value;\n    }\n  }, {\n    key: \"isValidPartialNumber\",\n    value: function isValidPartialNumber(value, minValue, maxValue) {\n      if (minValue === void 0) {\n        minValue = -Infinity;\n      }\n\n      if (maxValue === void 0) {\n        maxValue = Infinity;\n      }\n\n      value = this.sanitize(value);\n\n      if (value.startsWith(this.symbols.minusSign) && minValue < 0) {\n        value = value.slice(this.symbols.minusSign.length);\n      } else if (this.symbols.plusSign && value.startsWith(this.symbols.plusSign) && maxValue > 0) {\n        value = value.slice(this.symbols.plusSign.length);\n      }\n\n      if (value.startsWith(this.symbols.group)) {\n        return false;\n      }\n\n      value = $e1a22841ad5113a054c8ebe55b24e1a$var$replaceAll(value, this.symbols.group, '').replace(this.symbols.numeral, '').replace(this.symbols.decimal, '');\n      return value.length === 0;\n    }\n  }]);\n\n  return $e1a22841ad5113a054c8ebe55b24e1a$var$NumberParserImpl;\n}();\n\nvar $e1a22841ad5113a054c8ebe55b24e1a$var$nonLiteralParts = new Set(['decimal', 'fraction', 'integer', 'minusSign', 'plusSign', 'group']);\n\nfunction $e1a22841ad5113a054c8ebe55b24e1a$var$getSymbols(formatter, intlOptions, originalOptions) {\n  var _allParts$find$value, _allParts$find, _posAllParts$find, _allParts$find2, _allParts$find3;\n\n  var allParts = formatter.formatToParts(-10000.111);\n  var posAllParts = formatter.formatToParts(10000.111);\n  var singularParts = formatter.formatToParts(1);\n  var minusSign = (_allParts$find$value = (_allParts$find = allParts.find(function (p) {\n    return p.type === 'minusSign';\n  })) == null ? void 0 : _allParts$find.value) != null ? _allParts$find$value : '-';\n  var plusSign = (_posAllParts$find = posAllParts.find(function (p) {\n    return p.type === 'plusSign';\n  })) == null ? void 0 : _posAllParts$find.value;\n\n  if (!plusSign && ((originalOptions == null ? void 0 : originalOptions.signDisplay) === 'exceptZero' || (originalOptions == null ? void 0 : originalOptions.signDisplay) === 'always')) {\n    plusSign = '+';\n  }\n\n  var decimal = (_allParts$find2 = allParts.find(function (p) {\n    return p.type === 'decimal';\n  })) == null ? void 0 : _allParts$find2.value;\n  var group = (_allParts$find3 = allParts.find(function (p) {\n    return p.type === 'group';\n  })) == null ? void 0 : _allParts$find3.value;\n  var pluralLiterals = allParts.filter(function (p) {\n    return !$e1a22841ad5113a054c8ebe55b24e1a$var$nonLiteralParts.has(p.type);\n  }).map(function (p) {\n    return $e1a22841ad5113a054c8ebe55b24e1a$var$escapeRegex(p.value);\n  });\n  var singularLiterals = singularParts.filter(function (p) {\n    return !$e1a22841ad5113a054c8ebe55b24e1a$var$nonLiteralParts.has(p.type);\n  }).map(function (p) {\n    return $e1a22841ad5113a054c8ebe55b24e1a$var$escapeRegex(p.value);\n  });\n\n  var sortedLiterals = _toConsumableArray(new Set([].concat(_toConsumableArray(singularLiterals), _toConsumableArray(pluralLiterals)))).sort(function (a, b) {\n    return b.length - a.length;\n  });\n\n  var literals = new RegExp(sortedLiterals.join('|') + \"|[\\\\p{White_Space}]\", 'gu');\n\n  var numerals = _toConsumableArray(new Intl.NumberFormat(intlOptions.locale, {\n    useGrouping: false\n  }).format(9876543210)).reverse();\n\n  var indexes = new Map(numerals.map(function (d, i) {\n    return [d, i];\n  }));\n  var numeral = new RegExp(\"[\" + numerals.join('') + \"]\", 'g');\n\n  var index = function index(d) {\n    return String(indexes.get(d));\n  };\n\n  return {\n    minusSign: minusSign,\n    plusSign: plusSign,\n    decimal: decimal,\n    group: group,\n    literals: literals,\n    numeral: numeral,\n    index: index\n  };\n}\n\nfunction $e1a22841ad5113a054c8ebe55b24e1a$var$replaceAll(str, find, replace) {\n  if (str.replaceAll) {\n    return str.replaceAll(find, replace);\n  }\n\n  return str.split(find).join(replace);\n}\n\nfunction $e1a22841ad5113a054c8ebe55b24e1a$var$escapeRegex(string) {\n  return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}","map":{"version":3,"sources":["packages/@internationalized/number/src/NumberFormatter.ts","packages/@internationalized/number/src/NumberParser.ts"],"names":["formatterCache","supportsSignDisplay","Intl","signDisplay","supportsUnit","style","unit","UNITS","degree","narrow","default","numberFormatter","options","constructor","getCachedNumberFormatter","res","numberFormatSignDisplayPolyfill","unitDisplay","locale","values","numberingSystem","cacheKey","Object","a","b","numberFormat","Math","needsPositiveSign","num","negative","noSign","minus","console","positive","CURRENCY_SIGN_REGEX","NUMBERING_SYSTEMS","getNumberParserImpl","numberParserCache","defaultParser","getCachedNumberParser","parser","formatter","symbols","getSymbols","fullySanitizedValue","replaceAll","newValue","isNaN","value","String","minValue","Infinity","maxValue","nonLiteralParts","allParts","posAllParts","singularParts","minusSign","p","plusSign","decimal","group","pluralLiterals","escapeRegex","singularLiterals","sortedLiterals","literals","numerals","intlOptions","useGrouping","indexes","numeral","index","d","str","string"],"mappings":"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","sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nlet formatterCache = new Map<string, Intl.NumberFormat>();\n\nlet supportsSignDisplay = false;\ntry {\n  // @ts-ignore\n  supportsSignDisplay = (new Intl.NumberFormat('de-DE', {signDisplay: 'exceptZero'})).resolvedOptions().signDisplay === 'exceptZero';\n  // eslint-disable-next-line no-empty\n} catch (e) {}\n\nlet supportsUnit = false;\ntry {\n  // @ts-ignore\n  supportsUnit = (new Intl.NumberFormat('de-DE', {style: 'unit', unit: 'degree'})).resolvedOptions().style === 'unit';\n  // eslint-disable-next-line no-empty\n} catch (e) {}\n\n// Polyfill for units since Safari doesn't support them yet. See https://bugs.webkit.org/show_bug.cgi?id=215438.\n// Currently only polyfilling the unit degree in narrow format for ColorSlider in our supported locales.\n// Values were determined by switching to each locale manually in Chrome.\nconst UNITS = {\n  degree: {\n    narrow: {\n      default: '°',\n      'ja-JP': ' 度',\n      'zh-TW': '度',\n      'sl-SI': ' °'\n      // Arabic?? But Safari already doesn't use Arabic digits so might be ok...\n      // https://bugs.webkit.org/show_bug.cgi?id=218139\n    }\n  }\n};\n\nexport interface NumberFormatOptions extends Intl.NumberFormatOptions {\n  /** Overrides default numbering system for the current locale. */\n  numberingSystem?: string\n}\n\n/**\n * A wrapper around Intl.NumberFormat providing additional options, polyfills, and caching for performance.\n */\nexport class NumberFormatter implements Intl.NumberFormat {\n  private numberFormatter: Intl.NumberFormat;\n  private options: NumberFormatOptions;\n\n  constructor(locale: string, options: NumberFormatOptions = {}) {\n    this.numberFormatter = getCachedNumberFormatter(locale, options);\n    this.options = options;\n  }\n\n  format(value: number): string {\n    let res = '';\n    if (!supportsSignDisplay && this.options.signDisplay != null) {\n      res = numberFormatSignDisplayPolyfill(this.numberFormatter, this.options.signDisplay, value);\n    } else {\n      res = this.numberFormatter.format(value);\n    }\n\n    if (this.options.style === 'unit' && !supportsUnit) {\n      let {unit, unitDisplay = 'short', locale} = this.resolvedOptions();\n      let values = UNITS[unit]?.[unitDisplay];\n      res += values[locale] || values.default;\n    }\n\n    return res;\n  }\n\n  formatToParts(value: number): Intl.NumberFormatPart[] {\n    // TODO: implement signDisplay for formatToParts\n    // @ts-ignore\n    return this.numberFormatter.formatToParts(value);\n  }\n\n  resolvedOptions(): Intl.ResolvedNumberFormatOptions {\n    let options = this.numberFormatter.resolvedOptions();\n    if (!supportsSignDisplay && this.options.signDisplay != null) {\n      options = {...options, signDisplay: this.options.signDisplay};\n    }\n\n    if (!supportsUnit && this.options.style === 'unit') {\n      options = {...options, style: 'unit', unit: this.options.unit, unitDisplay: this.options.unitDisplay};\n    }\n\n    return options;\n  }\n}\n\nfunction getCachedNumberFormatter(locale: string, options: NumberFormatOptions = {}): Intl.NumberFormat {\n  let {numberingSystem} = options;\n  if (numberingSystem && locale.indexOf('-u-nu-') === -1) {\n    locale = `${locale}-u-nu-${numberingSystem}`;\n  }\n\n  if (options.style === 'unit' && !supportsUnit) {\n    let {unit, unitDisplay = 'short'} = options;\n    if (!unit) {\n      throw new Error('unit option must be provided with style: \"unit\"');\n    }\n    if (!UNITS[unit]?.[unitDisplay]) {\n      throw new Error(`Unsupported unit ${unit} with unitDisplay = ${unitDisplay}`);\n    }\n    options = {...options, style: 'decimal'};\n  }\n\n  let cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : '');\n  if (formatterCache.has(cacheKey)) {\n    return formatterCache.get(cacheKey);\n  }\n\n  let numberFormatter = new Intl.NumberFormat(locale, options);\n  formatterCache.set(cacheKey, numberFormatter);\n  return numberFormatter;\n}\n\n/** @private - exported for tests */\nexport function numberFormatSignDisplayPolyfill(numberFormat: Intl.NumberFormat, signDisplay: string, num: number) {\n  if (signDisplay === 'auto') {\n    return numberFormat.format(num);\n  } else if (signDisplay === 'never') {\n    return numberFormat.format(Math.abs(num));\n  } else {\n    let needsPositiveSign = false;\n    if (signDisplay === 'always') {\n      needsPositiveSign = num > 0 || Object.is(num, 0);\n    } else if (signDisplay === 'exceptZero') {\n      if (Object.is(num, -0) || Object.is(num, 0)) {\n        num = Math.abs(num);\n      } else {\n        needsPositiveSign = num > 0;\n      }\n    }\n\n    if (needsPositiveSign) {\n      let negative = numberFormat.format(-num);\n      let noSign = numberFormat.format(num);\n      // ignore RTL/LTR marker character\n      let minus = negative.replace(noSign, '').replace(/\\u200e|\\u061C/, '');\n      if ([...minus].length !== 1) {\n        console.warn('@react-aria/i18n polyfill for NumberFormat signDisplay: Unsupported case');\n      }\n      let positive = negative.replace(noSign, '!!!').replace(minus, '+').replace('!!!', noSign);\n      return positive;\n    } else {\n      return numberFormat.format(num);\n    }\n  }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\ninterface Symbols {\n  minusSign: string,\n  plusSign: string,\n  decimal: string,\n  group: string,\n  literals: RegExp,\n  numeral: RegExp,\n  index: (v: string) => string\n}\n\nconst CURRENCY_SIGN_REGEX = new RegExp('^.*\\\\(.*\\\\).*$');\nconst NUMBERING_SYSTEMS = ['latn', 'arab', 'hanidec'];\n\n/**\n * A NumberParser can be used perform locale aware parsing of numbers from Unicode strings,\n * as well as validation of partial user input. Automatically detects the numbering system\n * used in the input, and supports parsing decimals, percentages, currency values, and units\n * according to the locale.\n */\nexport class NumberParser {\n  locale: string;\n  options: Intl.NumberFormatOptions;\n\n  constructor(locale: string, options: Intl.NumberFormatOptions = {}) {\n    this.locale = locale;\n    this.options = options;\n  }\n\n  /**\n   * Parses the given string to a number. Returns NaN if a valid number could not be parsed.\n   */\n  parse(value: string): number {\n    return getNumberParserImpl(this.locale, this.options, value).parse(value);\n  }\n\n  /**\n   * Returns whether the given string could potentially be a valid number. This should be used to\n   * validate user input as the user types. If a `minValue` or `maxValue` is provided, the validity\n   * of the minus/plus sign characters can be checked.\n   */\n  isValidPartialNumber(value: string, minValue?: number, maxValue?: number): boolean {\n    return getNumberParserImpl(this.locale, this.options, value).isValidPartialNumber(value, minValue, maxValue);\n  }\n\n  /**\n   * Returns a numbering system for which the given string is valid in the current locale.\n   * If no numbering system could be detected, the default numbering system for the current\n   * locale is returned.\n   */\n  getNumberingSystem(value: string): string {\n    return getNumberParserImpl(this.locale, this.options, value).options.numberingSystem;\n  }\n}\n\nconst numberParserCache = new Map<string, NumberParserImpl>();\nfunction getNumberParserImpl(locale: string, options: Intl.NumberFormatOptions, value: string) {\n  // First try the default numbering system for the provided locale\n  let defaultParser = getCachedNumberParser(locale, options);\n\n  // If that doesn't match, and the locale doesn't include a hard coded numbering system,\n  // try each of the other supported numbering systems until we find one that matches.\n  if (!locale.includes('-nu-') && !defaultParser.isValidPartialNumber(value)) {\n    for (let numberingSystem of NUMBERING_SYSTEMS) {\n      if (numberingSystem !== defaultParser.options.numberingSystem) {\n        let parser = getCachedNumberParser(locale + (locale.includes('-u-') ? '-nu-' : '-u-nu-') + numberingSystem, options);\n        if (parser.isValidPartialNumber(value)) {\n          return parser;\n        }\n      }\n    }\n  }\n\n  return defaultParser;\n}\n\nfunction getCachedNumberParser(locale: string, options: Intl.NumberFormatOptions) {\n  let cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : '');\n  let parser = numberParserCache.get(cacheKey);\n  if (!parser) {\n    parser = new NumberParserImpl(locale, options);\n    numberParserCache.set(cacheKey, parser);\n  }\n\n  return parser;\n}\n\n// The actual number parser implementation. Instances of this class are cached\n// based on the locale, options, and detected numbering system.\nclass NumberParserImpl {\n  formatter: Intl.NumberFormat;\n  options: Intl.ResolvedNumberFormatOptions;\n  symbols: Symbols;\n\n  constructor(locale: string, options: Intl.NumberFormatOptions = {}) {\n    this.formatter = new Intl.NumberFormat(locale, options);\n    this.options = this.formatter.resolvedOptions();\n    this.symbols = getSymbols(this.formatter, this.options, options);\n  }\n\n  parse(value: string) {\n    // to parse the number, we need to remove anything that isn't actually part of the number, for example we want '-10.40' not '-10.40 USD'\n    let fullySanitizedValue = this.sanitize(value);\n\n    // Remove group characters, and replace decimal points and numerals with ASCII values.\n    fullySanitizedValue = replaceAll(fullySanitizedValue, this.symbols.group, '')\n      .replace(this.symbols.decimal, '.')\n      .replace(this.symbols.minusSign, '-')\n      .replace(this.symbols.numeral, this.symbols.index);\n\n    let newValue = fullySanitizedValue ? +fullySanitizedValue : NaN;\n    if (isNaN(newValue)) {\n      return NaN;\n    }\n\n    // accounting will always be stripped to a positive number, so if it's accounting and has a () around everything, then we need to make it negative again\n    if (this.options.currencySign === 'accounting' && CURRENCY_SIGN_REGEX.test(value)) {\n      newValue = -1 * newValue;\n    }\n\n    // when reading the number, if it's a percent, then it should be interpreted as being divided by 100\n    if (this.options.style === 'percent') {\n      newValue /= 100;\n      // after dividing to get the percent value, javascript may get .0210999999 instead of .0211, so fix the number of fraction digits\n      newValue = +newValue.toFixed((this.options.maximumFractionDigits ?? 0) + 2);\n    }\n\n    return newValue;\n  }\n\n  sanitize(value: string) {\n    // Remove literals and whitespace, which are allowed anywhere in the string\n    value = value.replace(this.symbols.literals, '');\n\n    // Replace the ASCII minus sign with the minus sign used in the current locale\n    // so that both are allowed in case the user's keyboard doesn't have the locale's minus sign.\n    value = value.replace('-', this.symbols.minusSign);\n\n    // In arab numeral system, their decimal character is 1643, but most keyboards don't type that\n    // instead they use the , (44) character or apparently the (1548) character.\n    if (this.options.numberingSystem === 'arab') {\n      value = value.replace(',', this.symbols.decimal);\n      value = value.replace(String.fromCharCode(1548), this.symbols.decimal);\n      value = replaceAll(value, '.', this.symbols.group);\n    }\n\n    // fr-FR group character is char code 8239, but that's not a key on the french keyboard,\n    // so allow 'period' as a group char and replace it with a space\n    if (this.options.locale === 'fr-FR') {\n      value = replaceAll(value, '.', String.fromCharCode(8239));\n    }\n\n    return value;\n  }\n\n  isValidPartialNumber(value: string, minValue: number = -Infinity, maxValue: number = Infinity): boolean {\n    value = this.sanitize(value);\n\n    // Remove minus or plus sign, which must be at the start of the string.\n    if (value.startsWith(this.symbols.minusSign) && minValue < 0) {\n      value = value.slice(this.symbols.minusSign.length);\n    } else if (this.symbols.plusSign && value.startsWith(this.symbols.plusSign) && maxValue > 0) {\n      value = value.slice(this.symbols.plusSign.length);\n    }\n\n    // Numbers cannot start with a group separator\n    if (value.startsWith(this.symbols.group)) {\n      return false;\n    }\n\n    // Remove numerals, groups, and decimals\n    value = replaceAll(value, this.symbols.group, '')\n      .replace(this.symbols.numeral, '')\n      .replace(this.symbols.decimal, '');\n\n    // The number is valid if there are no remaining characters\n    return value.length === 0;\n  }\n}\n\nconst nonLiteralParts = new Set(['decimal', 'fraction', 'integer', 'minusSign', 'plusSign', 'group']);\n\nfunction getSymbols(formatter: Intl.NumberFormat, intlOptions: Intl.ResolvedNumberFormatOptions, originalOptions: Intl.NumberFormatOptions): Symbols {\n  // Note: some locale's don't add a group symbol until there is a ten thousands place\n  let allParts = formatter.formatToParts(-10000.111);\n  let posAllParts = formatter.formatToParts(10000.111);\n  let singularParts = formatter.formatToParts(1);\n\n  let minusSign = allParts.find(p => p.type === 'minusSign')?.value ?? '-';\n  let plusSign = posAllParts.find(p => p.type === 'plusSign')?.value;\n\n  // Safari does not support the signDisplay option, but our number parser polyfills it.\n  // If no plus sign was returned, but the original options contained signDisplay, default to the '+' character.\n  // @ts-ignore\n  if (!plusSign && (originalOptions?.signDisplay === 'exceptZero' || originalOptions?.signDisplay === 'always')) {\n    plusSign = '+';\n  }\n\n  let decimal = allParts.find(p => p.type === 'decimal')?.value;\n  let group = allParts.find(p => p.type === 'group')?.value;\n\n  // this set is also for a regex, it's all literals that might be in the string we want to eventually parse that\n  // don't contribute to the numerical value\n  let pluralLiterals = allParts.filter(p => !nonLiteralParts.has(p.type)).map(p => escapeRegex(p.value));\n  let singularLiterals = singularParts.filter(p => !nonLiteralParts.has(p.type)).map(p => escapeRegex(p.value));\n  let sortedLiterals = [...new Set([...singularLiterals, ...pluralLiterals])].sort((a, b) => b.length - a.length);\n  let literals = new RegExp(`${sortedLiterals.join('|')}|[\\\\p{White_Space}]`, 'gu');\n\n  // These are for replacing non-latn characters with the latn equivalent\n  let numerals = [...new Intl.NumberFormat(intlOptions.locale, {useGrouping: false}).format(9876543210)].reverse();\n  let indexes = new Map(numerals.map((d, i) => [d, i]));\n  let numeral = new RegExp(`[${numerals.join('')}]`, 'g');\n  let index = d => String(indexes.get(d));\n\n  return {minusSign, plusSign, decimal, group, literals, numeral, index};\n}\n\nfunction replaceAll(str: string, find: string, replace: string) {\n  // @ts-ignore\n  if (str.replaceAll) {\n    // @ts-ignore\n    return str.replaceAll(find, replace);\n  }\n\n  return str.split(find).join(replace);\n}\n\nfunction escapeRegex(string: string) {\n  return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n"]},"metadata":{},"sourceType":"module"}