{"version":3,"sources":["node_modules/@progress/kendo-licensing/dist/index.mjs","node_modules/@progress/kendo-intl/dist/es2015/cldr/default-data.js","node_modules/@progress/kendo-intl/dist/es2015/common/is-string.js","node_modules/@progress/kendo-intl/dist/es2015/error-details.js","node_modules/@progress/kendo-intl/dist/es2015/errors.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/info.js","node_modules/@progress/kendo-intl/dist/es2015/common/constants.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/load-numbers.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/load-dates.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/territory.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/load-units.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/load.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/set-data.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/date-field-name.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/date-format-names.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/parse-range-date.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/currency.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/constants.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/first-day.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/weekend-range.js","node_modules/@progress/kendo-intl/dist/es2015/cldr/number-symbols.js","node_modules/@progress/kendo-intl/dist/es2015/cldr.js","node_modules/@progress/kendo-intl/dist/es2015/common/is-negative-zero.js","node_modules/@progress/kendo-intl/dist/es2015/numbers/format-currency-symbol.js","node_modules/@progress/kendo-intl/dist/es2015/numbers/group-integer.js","node_modules/@progress/kendo-intl/dist/es2015/numbers/is-currency-style.js","node_modules/@progress/kendo-intl/dist/es2015/common/pad.js","node_modules/@progress/kendo-intl/dist/es2015/common/round.js","node_modules/@progress/kendo-intl/dist/es2015/numbers/standard-number-format.js","node_modules/@progress/kendo-intl/dist/es2015/numbers/utils.js","node_modules/@progress/kendo-intl/dist/es2015/numbers/custom-number-format.js","node_modules/@progress/kendo-intl/dist/es2015/numbers/format-options.js","node_modules/@progress/kendo-intl/dist/es2015/numbers/format-number.js","node_modules/@progress/kendo-intl/dist/es2015/common/is-number.js","node_modules/@progress/kendo-intl/dist/es2015/numbers/parse-number.js","node_modules/@progress/kendo-intl/dist/es2015/numbers.js","node_modules/@progress/kendo-intl/dist/es2015/common/format-string.js","node_modules/@progress/kendo-intl/dist/es2015/dates/date-pattern.js","node_modules/@progress/kendo-intl/dist/es2015/dates/date-name-type.js","node_modules/@progress/kendo-intl/dist/es2015/dates/format-names.js","node_modules/@progress/kendo-intl/dist/es2015/common/is-date.js","node_modules/@progress/kendo-intl/dist/es2015/dates/constants.js","node_modules/@progress/kendo-intl/dist/es2015/dates/format-date.js","node_modules/@progress/kendo-intl/dist/es2015/dates/time-utils.js","node_modules/@progress/kendo-intl/dist/es2015/dates/parse-date.js","node_modules/@progress/kendo-intl/dist/es2015/dates/split-date-format.js","node_modules/@progress/kendo-intl/dist/es2015/dates.js","node_modules/@progress/kendo-intl/dist/es2015/format.js","node_modules/@progress/kendo-intl/dist/es2015/main.js","node_modules/@progress/kendo-angular-intl/fesm2022/progress-kendo-angular-intl.mjs"],"sourcesContent":["var _0x10f4 = ['z2v0vgLTzq==', 'ww91CIbSAwnLBNnLigv4CgLYzwqGB24G', 'zgf0yq==', 'uhjVz3jLC3mG', 'AgvmshG=', 'u2vLia==', 'ChjVzhvJDenVzgvZ', 'C2nYAxb0s2v5', 'D3rmuhm=', 'rKjcwKG=', 'tM8GBgLJzw5ZzsbMB3vUzc4k', 'CgfJA2fNzu5HBwu=', 'qvfYAMq=', 'CgfYC2u=', 'ChjVzhvJDhm=', 'igzVCIbTB3jLigLUzM9YBwf0Aw9UlGO=', 'sgr5sMW=', 'rg9iAwe=', 'zxDJr2C=', 'Du9wCuK=', 'z2v0rNvSBfLLyxi=', 'lcb0AguGCgfJA2fNzsb3yxmGChvIBgLZAgvKig9Uia==', 'C2v0', 'zxrNsxC=', 'C29YDa==', 'EeXMBLu=', 'AgfZ', 's0XeCe8=', 'rM1Ttxy=', 'tNvstvG=', 'ww91CIb0CMLHBcbSAwnLBNnLigv4CgLYzwqGB24G', 'z2v0rgf0zq==', 'BgvUz3rO', 'txPHwe8=', 'BgLJzw5Zzuv4CgLYyxrPB25eyxrL', 'DhjPywW=', 'vejxq3K=', 'r2Ltv1q=', 'uhPWBva=', 'z2v0', 'vgHLihbYB2r1y3qGAxmGBM90igLUy2X1zgvKigLUihrOzsbSAwnLBNnLlGO=', 'z2v0tw9UDgG=', 's2DnDfK=', 'DMvYC2LVBG==', 'rKj6sum=', 'DgLTzxn0yw1W', 'B2jQzwn0', 'DhLWzq==', 'BgLJzw5ZAw5Nrg9JC1vYBa==', 'BMfTzq==', 'DwTXAeq=', 'zg9JC1vYBa==', 'z3jVDxbfBMq=', 'z3jVDxa=', 'yuDyzhy=', 'zMLUza==', 'D2fYBG==', 'zNvUy3rPB24=', 'Dw5KzwzPBMvK', 'ChjVzhvJDe5HBwu=', 'y29Uy2f0', 'ChvIBgLZAerHDgu=', 'zxHWAxj5rgf0zq==', 'CeDhAfu=', 'y29Kzq==', 'Dg9mB2nHBgvtDhjPBMC=', 'tgLJzw5ZzsbHy3rPDMf0Aw9UigzHAwXLzcbMB3iG'];\n(function (_0x50aaef, _0x10f4b0) {\n var _0x145713 = function (_0x421c90) {\n while (--_0x421c90) {\n _0x50aaef['push'](_0x50aaef['shift']());\n }\n };\n _0x145713(++_0x10f4b0);\n})(_0x10f4, 0x1b7);\nvar _0x1457 = function (_0x50aaef, _0x10f4b0) {\n _0x50aaef = _0x50aaef - 0x0;\n var _0x145713 = _0x10f4[_0x50aaef];\n if (_0x1457['aWziBr'] === undefined) {\n var _0x421c90 = function (_0x1aecb4) {\n var _0x16aa36 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=',\n _0x27d11b = String(_0x1aecb4)['replace'](/=+$/, '');\n var _0x46c2e8 = '';\n for (var _0x29c8dd = 0x0, _0x5ea27f, _0x25dc8b, _0xcce210 = 0x0; _0x25dc8b = _0x27d11b['charAt'](_0xcce210++); ~_0x25dc8b && (_0x5ea27f = _0x29c8dd % 0x4 ? _0x5ea27f * 0x40 + _0x25dc8b : _0x25dc8b, _0x29c8dd++ % 0x4) ? _0x46c2e8 += String['fromCharCode'](0xff & _0x5ea27f >> (-0x2 * _0x29c8dd & 0x6)) : 0x0) {\n _0x25dc8b = _0x16aa36['indexOf'](_0x25dc8b);\n }\n return _0x46c2e8;\n };\n _0x1457['XjGMHe'] = function (_0x2c6af5) {\n var _0x1b5a14 = _0x421c90(_0x2c6af5);\n var _0x2181c6 = [];\n for (var _0x4e0ecf = 0x0, _0x1a2fc4 = _0x1b5a14['length']; _0x4e0ecf < _0x1a2fc4; _0x4e0ecf++) {\n _0x2181c6 += '%' + ('00' + _0x1b5a14['charCodeAt'](_0x4e0ecf)['toString'](0x10))['slice'](-0x2);\n }\n return decodeURIComponent(_0x2181c6);\n }, _0x1457['XQgCdR'] = {}, _0x1457['aWziBr'] = !![];\n }\n var _0x1b62be = _0x1457['XQgCdR'][_0x50aaef];\n return _0x1b62be === undefined ? (_0x145713 = _0x1457['XjGMHe'](_0x145713), _0x1457['XQgCdR'][_0x50aaef] = _0x145713) : _0x145713 = _0x1b62be, _0x145713;\n};\nvar context = {\n data: ' {\\\"timestamp\\\":1722846000,\\\"products\\\":[{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIREACT\\\",\\\"licenseExpirationDate\\\":1739749344},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUICOMPLETE\\\",\\\"licenseExpirationDate\\\":1739749344},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIVUE\\\",\\\"licenseExpirationDate\\\":1739749344},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIANGULAR\\\",\\\"licenseExpirationDate\\\":1739749344}],\\\"integrity\\\":\\\"vEzeRUu73IY/4h8FSlsqkn5QYUY=\\\"} '\n },\n cache = new Map();\nfunction setScriptKey(_0x35d548) {}\nfunction validatePackage(_0x401145) {\n if (cache[_0x1457('0x38')](_0x401145[_0x1457('0xc')])) {\n if (_0x1457('0x3a') !== _0x1457('0x3a')) {\n function _0x40b483() {\n _0x55416e[_0x1457('0x10')](_0x394293);\n }\n } else return cache[_0x1457('0x2')](_0x401145[_0x1457('0xc')]);\n }\n var _0x13003c = _0x401145[_0x1457('0x6')] ? '\\x20v' + _0x401145[_0x1457('0x6')] : '',\n _0x487465 = _0x401145[_0x1457('0xc')] + _0x13003c,\n _0x5ac69b = JSON[_0x1457('0x2b')](context[_0x1457('0x20')]),\n _0x12f1b9 = !_0x5ac69b[_0x1457('0x25')] && !_0x5ac69b[_0x1457('0x8')],\n _0x404bc6 = _0x5ac69b[_0x1457('0x25')] && typeof KendoLicensing === _0x1457('0x15'),\n _0x21bd47 = matchProduct(_0x5ac69b, _0x401145[_0x1457('0x24')]),\n _0x379487;\n if (_0x12f1b9 || _0x404bc6) {\n if (_0x1457('0x2a') === _0x1457('0x2f')) {\n function _0x32c728() {\n var _0x210aed = _0x1457('0x21')[_0x1457('0x17')](_0x1ec4d4[_0x1457('0x16')]),\n _0x5a1943 = typeof _0x5077fd[_0x1457('0x10')] === _0x1457('0x14');\n _0x5a1943 ? _0x1cbf22[_0x1457('0x10')](_0x210aed) : _0x52c64a[_0x1457('0x13')](_0x210aed), _0x19add1[_0x1457('0x13')](_0x2bf2c1(_0x2b5d62)), _0x5a1943 && _0x210919[_0x1457('0xf')]();\n }\n } else _0x379487 = {\n 'type': 0x0,\n 'packageName': _0x487465,\n 'docsUrl': _0x401145[_0x1457('0xb')]\n };\n } else {\n if (_0x1457('0x39') === _0x1457('0x39')) {\n if (!_0x21bd47) {\n if (_0x1457('0x1a') !== _0x1457('0x1a')) {\n function _0x118e65() {\n return _0x388bef[_0x1457('0x38')](_0x14b8a6[_0x1457('0x1b')]);\n }\n } else _0x379487 = {\n 'type': 0x1,\n 'packageName': _0x487465,\n 'docsUrl': _0x401145[_0x1457('0xb')]\n };\n } else {\n if (_0x21bd47[_0x1457('0x41')] === !![] && isExpired(getCurrentDate(), _0x21bd47[_0x1457('0x40')])) {\n if (_0x1457('0x0') === _0x1457('0x0')) _0x379487 = {\n 'type': 0x3,\n 'packageName': _0x487465,\n 'expiryDate': parseDate(_0x21bd47[_0x1457('0x40')]),\n 'docsUrl': _0x401145[_0x1457('0xb')]\n };else {\n function _0x2acfd0() {\n return new _0x538141(_0x6547c3 * 0x3e8);\n }\n }\n } else {\n if (isExpired(_0x401145[_0x1457('0x18')], _0x21bd47[_0x1457('0x40')])) {\n if (_0x1457('0x22') !== _0x1457('0x22')) {\n function _0x54738d() {\n _0xff686d += _0x1457('0x28');\n }\n } else _0x379487 = {\n 'type': 0x2,\n 'packageName': _0x487465,\n 'publishDate': parseDate(_0x401145[_0x1457('0x18')]),\n 'expiryDate': parseDate(_0x21bd47[_0x1457('0x40')]),\n 'docsUrl': _0x401145[_0x1457('0xb')]\n };\n }\n }\n }\n } else {\n function _0x45a77a() {\n _0x4e0ecf = {\n 'type': 0x0,\n 'packageName': _0x1a2fc4,\n 'docsUrl': _0x281109[_0x1457('0xb')]\n };\n }\n }\n }\n if (_0x379487 && typeof console === _0x1457('0x9')) {\n if (_0x1457('0x5') !== _0x1457('0x5')) {\n function _0x27a0d3() {\n _0x23dc27[_0x1457('0xf')]();\n }\n } else {\n var _0x3e0d1b = _0x1457('0x21')[_0x1457('0x17')](_0x401145[_0x1457('0x16')]),\n _0x225671 = typeof console[_0x1457('0x10')] === _0x1457('0x14');\n if (_0x225671) {\n if (_0x1457('0x2e') === _0x1457('0x2e')) console[_0x1457('0x10')](_0x3e0d1b);else {\n function _0x1c2d92() {\n if (!_0x3e4ff8) _0x37b223 = {\n 'type': 0x1,\n 'packageName': _0x36e726,\n 'docsUrl': _0x3f80b8[_0x1457('0xb')]\n };else {\n if (_0x15d67c[_0x1457('0x41')] === !![] && _0x3b51a9(_0x102df8(), _0x3171d7[_0x1457('0x40')])) _0x1e0cab = {\n 'type': 0x3,\n 'packageName': _0x2724db,\n 'expiryDate': _0x33ff27(_0x4eb9e1[_0x1457('0x40')]),\n 'docsUrl': _0x2a3029[_0x1457('0xb')]\n };else _0x2a1aff(_0x3a6131[_0x1457('0x18')], _0x30ed8b[_0x1457('0x40')]) && (_0x36826b = {\n 'type': 0x2,\n 'packageName': _0x2a7f61,\n 'publishDate': _0x19d46e(_0x3f1d0c[_0x1457('0x18')]),\n 'expiryDate': _0x18bd78(_0x3231eb[_0x1457('0x40')]),\n 'docsUrl': _0x265a7c[_0x1457('0xb')]\n });\n }\n }\n }\n } else {\n if (_0x1457('0x30') !== _0x1457('0x7')) console[_0x1457('0x13')](_0x3e0d1b);else {\n function _0x135861() {\n _0x283aa0 += _0x1457('0x3c')[_0x1457('0x17')](_0x111d35[_0x1457('0x19')][_0x1457('0x1c')](), '.\\x0a');\n }\n }\n }\n console[_0x1457('0x13')](formatError(_0x379487));\n if (_0x225671) {\n if (_0x1457('0xd') !== _0x1457('0xd')) {\n function _0x21b2c4() {\n _0x2b9264 = {\n 'type': 0x1,\n 'packageName': _0x346bb2,\n 'docsUrl': _0x2e7146[_0x1457('0xb')]\n };\n }\n } else console[_0x1457('0xf')]();\n }\n }\n }\n var _0x415e0e = !_0x379487;\n return cache[_0x1457('0x34')](_0x401145[_0x1457('0xc')], _0x415e0e), _0x415e0e;\n}\nfunction formatError(_0x594e89) {\n var _0x2d7e52 = _0x1457('0x1d')[_0x1457('0x17')](_0x594e89[_0x1457('0x29')], '\\x0a');\n if (_0x594e89[_0x1457('0xa')] === 0x2) {\n if (_0x1457('0x3f') !== _0x1457('0x1')) _0x2d7e52 += _0x1457('0x1f')[_0x1457('0x17')](_0x594e89[_0x1457('0x19')][_0x1457('0x1c')](), _0x1457('0x33'))[_0x1457('0x17')](_0x594e89[_0x1457('0x18')][_0x1457('0x1c')](), '.\\x0a');else {\n function _0x4205ac() {\n _0x339f11 = {\n 'type': 0x3,\n 'packageName': _0x324919,\n 'expiryDate': _0x301701(_0xaf8b40[_0x1457('0x40')]),\n 'docsUrl': _0x5b91f9[_0x1457('0xb')]\n };\n }\n }\n }\n if (_0x594e89[_0x1457('0xa')] === 0x3) {\n if (_0x1457('0x11') === _0x1457('0x11')) _0x2d7e52 += _0x1457('0x3c')[_0x1457('0x17')](_0x594e89[_0x1457('0x19')][_0x1457('0x1c')](), '.\\x0a');else {\n function _0x3e8c99() {\n _0x3f28ec += _0x1457('0x1f')[_0x1457('0x17')](_0x4667d4[_0x1457('0x19')][_0x1457('0x1c')](), _0x1457('0x33'))[_0x1457('0x17')](_0x23b5da[_0x1457('0x18')][_0x1457('0x1c')](), '.\\x0a');\n }\n }\n } else {\n if (_0x594e89[_0x1457('0xa')] === 0x0) {\n if (_0x1457('0x35') === _0x1457('0x35')) _0x2d7e52 += _0x1457('0x28');else {\n function _0x3442b2() {\n _0x5ccb08 += _0x1457('0x3');\n }\n }\n } else {\n if (_0x594e89[_0x1457('0xa')] === 0x1) {\n if (_0x1457('0x26') !== _0x1457('0x26')) {\n function _0x23b1cd() {\n var _0x5bedaa = _0x465bb0(_0x2ba0db),\n _0x6c2ce2 = new _0x4a6023(_0x5bedaa[_0x1457('0x32')](), _0x5bedaa[_0x1457('0x4')](), _0x5bedaa[_0x1457('0x3d')]() + 0x1),\n _0x34ce8e = _0x6c2ce2[_0x1457('0x1e')]() / 0x3e8;\n return _0x2f1bc7 > _0x34ce8e;\n }\n } else _0x2d7e52 += _0x1457('0x3');\n }\n }\n }\n return _0x2d7e52 += _0x1457('0x23')[_0x1457('0x17')](_0x594e89[_0x1457('0xe')], _0x1457('0x2d')), _0x2d7e52;\n}\nfunction matchProduct(_0x408a16, _0x9b416b) {\n var _0x45ca78 = _0x408a16[_0x1457('0x2c')];\n if (!_0x45ca78 || !_0x45ca78[_0x1457('0x3e')]) {\n if (_0x1457('0x27') !== _0x1457('0x37')) return null;else {\n function _0x52a8d4() {\n return _0x25dc8b[_0x1457('0x2')](_0xcce210[_0x1457('0xc')]);\n }\n }\n }\n var _0x1880f2 = new Set(_0x9b416b);\n return _0x45ca78[_0x1457('0x36')](function (_0x226118, _0x16f928) {\n if (_0x1457('0x42') !== _0x1457('0x31')) return _0x16f928[_0x1457('0x40')] - _0x226118[_0x1457('0x40')];else {\n function _0x3dde91() {\n return null;\n }\n }\n })[_0x1457('0x12')](function (_0x4632fe) {\n if (_0x1457('0x3b') === _0x1457('0x3b')) return _0x1880f2[_0x1457('0x38')](_0x4632fe[_0x1457('0x1b')]);else {\n function _0x43b66d() {\n return _0x22688d[_0x1457('0x40')] - _0x522bbc[_0x1457('0x40')];\n }\n }\n });\n}\nfunction parseDate(_0xe99283) {\n return new Date(_0xe99283 * 0x3e8);\n}\nfunction getCurrentDate() {\n return new Date()[_0x1457('0x1e')]() / 0x3e8;\n}\nfunction isExpired(_0x4b71d2, _0x1df709) {\n var _0x4f97fc = parseDate(_0x1df709),\n _0xea6b1d = new Date(_0x4f97fc[_0x1457('0x32')](), _0x4f97fc[_0x1457('0x4')](), _0x4f97fc[_0x1457('0x3d')]() + 0x1),\n _0x302664 = _0xea6b1d[_0x1457('0x1e')]() / 0x3e8;\n return _0x4b71d2 > _0x302664;\n}\nexport { setScriptKey, validatePackage };","const defaultData = {\n en: {\n name: \"en\",\n identity: {\n version: {\n _unicodeVersion: \"14.0.0\",\n _cldrVersion: \"41\"\n },\n language: \"en\"\n },\n territory: \"US\",\n numbers: {\n symbols: {\n decimal: \".\",\n group: \",\",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\",\n approximatelySign: \"~\"\n },\n decimal: {\n patterns: [\"n\"],\n groupSize: [3]\n },\n scientific: {\n patterns: [\"nEn\"],\n groupSize: []\n },\n percent: {\n patterns: [\"n%\"],\n groupSize: [3]\n },\n currency: {\n patterns: [\"$n\"],\n groupSize: [3],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n currencies: {\n BGN: {\n displayName: \"Bulgarian Lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leva\",\n symbol: \"BGN\"\n },\n EUR: {\n displayName: \"Euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euros\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n USD: {\n displayName: \"US Dollar\",\n \"displayName-count-one\": \"US dollar\",\n \"displayName-count-other\": \"US dollars\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n }\n },\n localeCurrency: \"USD\",\n accounting: {\n patterns: [\"$n\", \"($n)\"],\n groupSize: [3]\n }\n },\n calendar: {\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n patterns: {\n d: \"M/d/y\",\n D: \"EEEE, MMMM d, y\",\n m: \"MMM d\",\n M: \"MMMM d\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, MMMM d, y h:mm:ss a\",\n g: \"M/d/y h:mm a\",\n G: \"M/d/y h:mm:ss a\",\n t: \"h:mm a\",\n T: \"h:mm:ss a\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMd: \"M/d/y GGGGG\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"MMM d, y G\",\n GyMMMEd: \"E, MMM d, y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M/d\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMd: \"MMM d\",\n MMMEd: \"E, MMM d\",\n MMMMd: \"MMMM d\",\n \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"M/d/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMd: \"MMM d, y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'week' w 'of' Y\",\n \"yw-count-other\": \"'week' w 'of' Y\"\n }\n },\n timeFormats: {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n },\n dateFormats: {\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n },\n days: {\n format: {\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n wide: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n },\n \"stand-alone\": {\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n wide: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n }\n },\n months: {\n format: {\n abbreviated: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n wide: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n },\n \"stand-alone\": {\n abbreviated: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n wide: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n }\n },\n quarters: {\n format: {\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"]\n },\n \"stand-alone\": {\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n narrow: {\n midnight: \"mi\",\n am: \"a\",\n \"am-alt-variant\": \"am\",\n noon: \"n\",\n pm: \"p\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n narrow: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Before Christ\",\n \"1\": \"Anno Domini\",\n \"0-alt-variant\": \"Before Common Era\",\n \"1-alt-variant\": \"Common Era\"\n },\n abbreviated: {\n \"0\": \"BC\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"B\",\n \"1\": \"A\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n dateFields: {\n era: {\n wide: \"era\",\n short: \"era\",\n narrow: \"era\"\n },\n year: {\n wide: \"year\",\n short: \"yr.\",\n narrow: \"yr.\"\n },\n quarter: {\n wide: \"quarter\",\n short: \"qtr.\",\n narrow: \"qtr.\"\n },\n month: {\n wide: \"month\",\n short: \"mo.\",\n narrow: \"mo.\"\n },\n week: {\n wide: \"week\",\n short: \"wk.\",\n narrow: \"wk.\"\n },\n weekOfMonth: {\n wide: \"week of month\",\n short: \"wk. of mo.\",\n narrow: \"wk. of mo.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n dayOfYear: {\n wide: \"day of year\",\n short: \"day of yr.\",\n narrow: \"day of yr.\"\n },\n weekday: {\n wide: \"day of the week\",\n short: \"day of wk.\",\n narrow: \"day of wk.\"\n },\n weekdayOfMonth: {\n wide: \"weekday of the month\",\n short: \"wkday. of mo.\",\n narrow: \"wkday. of mo.\"\n },\n dayperiod: {\n short: \"AM/PM\",\n wide: \"AM/PM\",\n narrow: \"AM/PM\"\n },\n hour: {\n wide: \"hour\",\n short: \"hr.\",\n narrow: \"hr.\"\n },\n minute: {\n wide: \"minute\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"second\",\n short: \"sec.\",\n narrow: \"sec.\"\n },\n zone: {\n wide: \"time zone\",\n short: \"zone\",\n narrow: \"zone\"\n },\n millisecond: {\n narrow: \"ms\",\n short: \"ms\",\n wide: \"millisecond\"\n }\n }\n }\n },\n supplemental: {\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n currencyData: {\n region: {\n US: [{\n USD: {\n _from: \"1792-01-01\"\n }\n }]\n }\n },\n weekData: {\n firstDay: {\n US: \"sun\"\n },\n weekendStart: {\n \"001\": \"sat\"\n },\n weekendEnd: {\n \"001\": \"sun\"\n }\n }\n }\n};\nexport default defaultData;","export default function isString(value) {\n return typeof value === \"string\";\n}","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n \"NoLocale\": \"Missing locale info for '{0}'\",\n \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};","import errorDetails from './error-details';\nconst formatRegExp = /\\{(\\d+)}?\\}/g;\nclass IntlError {\n constructor({\n name,\n message\n }) {\n if (!name || !message) {\n throw new Error(\"{ name: string, message: string } object is required!\");\n }\n this.name = name;\n this.message = message;\n }\n formatMessage(...values) {\n const flattenValues = flatten(values);\n const formattedMessage = this.message.replace(formatRegExp, function (match, index) {\n return flattenValues[parseInt(index, 10)];\n });\n return `${this.name}: ${formattedMessage}`;\n }\n error(...values) {\n return new Error(this.formatMessage(values));\n }\n}\nconst flatten = function (arr) {\n return arr.reduce((a, b) => a.concat(b), []);\n};\nconst toIntlErrors = function (errors) {\n const predicate = function (prev, name) {\n prev[name] = new IntlError({\n name,\n message: errors[name]\n });\n return prev;\n };\n return Object.keys(errors).reduce(predicate, {});\n};\nconst errors = toIntlErrors(errorDetails);\nexport { errors, IntlError, toIntlErrors };","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\nfunction availableLocaleInfo(fullName, suffixes) {\n const parts = fullName.split(\"-\");\n const language = parts[0];\n const script = parts[1];\n const territory = parts[2];\n return cldr[fullName] || suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory] || suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script] || cldr[language];\n}\nfunction localeFullName(language, suffixes) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n for (let idx = 0; idx < suffixes.length; idx++) {\n let name = likelySubtags[language + \"-\" + suffixes[idx]];\n if (name) {\n return name;\n }\n }\n if (likelySubtags[language]) {\n return likelySubtags[language];\n }\n}\nexport const cldr = defaultData;\nexport function getLocaleInfo(locale) {\n let info;\n if (isString(locale)) {\n info = localeInfo(locale);\n } else {\n info = locale;\n }\n return info;\n}\nexport function localeInfo(locale) {\n if (cldr[locale]) {\n return cldr[locale];\n }\n const likelySubtags = cldr.supplemental.likelySubtags;\n if (likelySubtags) {\n const parts = locale.split(\"-\");\n const language = parts[0];\n const suffixes = parts.slice(1);\n const fullName = localeFullName(language, suffixes);\n const info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n if (info) {\n return info;\n }\n }\n throw errors.NoLocale.error(locale);\n}","export const DECIMAL = \"decimal\";\nexport const CURRENCY = \"currency\";\nexport const ACCOUNTING = \"accounting\";\nexport const PERCENT = \"percent\";\nexport const SCIENTIFIC = \"scientific\";\nexport const CURRENCY_PLACEHOLDER = \"$\";\nexport const PERCENT_PLACEHOLDER = \"%\";\nexport const NUMBER_PLACEHOLDER = \"n\";\nexport const LIST_SEPARATOR = \";\";\nexport const GROUP_SEPARATOR = \",\";\nexport const POINT = \".\";\nexport const EMPTY = \"\";\nexport const DEFAULT_LOCALE = \"en\";","import { cldr } from './info';\nimport { CURRENCY, ACCOUNTING, DECIMAL, CURRENCY_PLACEHOLDER, NUMBER_PLACEHOLDER, LIST_SEPARATOR, GROUP_SEPARATOR, POINT } from '../common/constants';\nconst LATIN_NUMBER_FORMATS = \"Formats-numberSystem-latn\";\nconst LATIN_NUMBER_SYMBOLS = \"symbols-numberSystem-latn\";\nconst patternRegExp = /([#,0.]+)/g;\nconst cldrCurrencyRegExp = /¤/g;\nfunction getPatterns(pattern) {\n patternRegExp.lastIndex = 0;\n return pattern.replace(cldrCurrencyRegExp, CURRENCY_PLACEHOLDER).replace(patternRegExp, NUMBER_PLACEHOLDER).split(LIST_SEPARATOR);\n}\nfunction getGroupSize(pattern) {\n patternRegExp.lastIndex = 0;\n const numberPatterns = patternRegExp.exec(pattern.split(LIST_SEPARATOR)[0])[0].split(POINT);\n const integer = numberPatterns[0];\n const groupSize = integer.split(GROUP_SEPARATOR).slice(1).map(function (group) {\n return group.length;\n }).reverse();\n return groupSize;\n}\nfunction loadCurrencyUnitPatterns(currencyInfo, currencyFormats) {\n for (let field in currencyFormats) {\n if (field.startsWith(\"unitPattern\")) {\n currencyInfo[field] = currencyFormats[field].replace(\"{0}\", NUMBER_PLACEHOLDER).replace(\"{1}\", CURRENCY_PLACEHOLDER);\n }\n }\n}\nexport default function loadNumbersInfo(locale, info) {\n const localeInfo = cldr[locale];\n const numbers = localeInfo.numbers = localeInfo.numbers || {};\n numbers.symbols = numbers.symbols || {};\n for (let field in info) {\n if (field === LATIN_NUMBER_SYMBOLS) {\n Object.assign(numbers.symbols, info[field]);\n } else if (field.includes(LATIN_NUMBER_FORMATS)) {\n const style = field.substr(0, field.indexOf(LATIN_NUMBER_FORMATS));\n const pattern = info[field].standard;\n numbers[style] = {\n patterns: getPatterns(pattern)\n };\n if (style === CURRENCY) {\n numbers[style].groupSize = getGroupSize((info[DECIMAL + LATIN_NUMBER_FORMATS] || info[field]).standard);\n loadCurrencyUnitPatterns(numbers[style], info[field]);\n numbers[ACCOUNTING] = {\n patterns: getPatterns(info[field][ACCOUNTING]),\n groupSize: numbers[style].groupSize\n };\n } else {\n numbers[style].groupSize = getGroupSize(pattern);\n }\n } else if (field === \"currencies\") {\n numbers.currencies = info[field];\n }\n }\n}","import { cldr } from './info';\nconst predefinedDatePatterns = {\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n};\nconst YEAR_REGEX = /y+/g;\nconst SHORT_DATE = [[\"dateFormats\", \"short\"]];\nconst datePatterns = {\n D: [[\"dateFormats\", \"full\"]],\n m: [[\"dateTimeFormats\", \"availableFormats\", \"MMMd\"]],\n M: [[\"dateTimeFormats\", \"availableFormats\", \"MMMMd\"]],\n y: [[\"dateTimeFormats\", \"availableFormats\", \"yMMM\"]],\n Y: [[\"dateTimeFormats\", \"availableFormats\", \"yMMMM\"]],\n F: [[\"dateFormats\", \"full\"], [\"timeFormats\", \"medium\"]],\n g: [[\"dateTimeFormats\", \"availableFormats\", \"yMd\"], [\"timeFormats\", \"short\"]],\n G: [[\"dateTimeFormats\", \"availableFormats\", \"yMd\"], [\"timeFormats\", \"medium\"]],\n t: [[\"timeFormats\", \"short\"]],\n T: [[\"timeFormats\", \"medium\"]]\n};\nfunction toArray(obj) {\n let result = [];\n let names = Object.getOwnPropertyNames(obj);\n for (let idx = 0; idx < names.length; idx++) {\n let value = obj[names[idx]];\n result.push(value);\n }\n return result;\n}\nfunction getCalendarNames(info, isObj) {\n const result = {};\n for (let formatType in info) {\n let names = result[formatType] = {};\n for (let format in info[formatType]) {\n let formats = info[formatType][format];\n names[format] = isObj ? formats : toArray(formats);\n }\n }\n return result;\n}\nfunction getEraNames(eras) {\n const result = {};\n const format = result.format = {};\n const eraNameMap = {\n eraAbbr: \"abbreviated\",\n eraNames: \"wide\",\n eraNarrow: \"narrow\"\n };\n for (let eraFormatName in eras) {\n let formatName = eraNameMap[eraFormatName];\n format[formatName] = eras[eraFormatName];\n }\n return result;\n}\nfunction loadCalendarNames(locale, calendar) {\n const localeCalendar = cldr[locale].calendar;\n localeCalendar.days = getCalendarNames(calendar.days);\n localeCalendar.months = getCalendarNames(calendar.months);\n localeCalendar.quarters = getCalendarNames(calendar.quarters);\n localeCalendar.dayPeriods = getCalendarNames(calendar.dayPeriods, true);\n localeCalendar.eras = getEraNames(calendar.eras);\n}\nfunction loadCalendarDateFields(locale, fields) {\n const localeCalendar = cldr[locale].calendar;\n const dateFields = {};\n for (let field in fields) {\n const [fieldName, formatType = 'wide'] = field.split('-');\n const fieldInfo = dateFields[fieldName] || {};\n const displayName = fields[field].displayName;\n if (!displayName) {\n continue;\n }\n fieldInfo[formatType] = displayName;\n dateFields[fieldName] = fieldInfo;\n }\n localeCalendar.dateFields = dateFields;\n}\nfunction getPredefinedFormat(paths, calendar) {\n const result = [];\n for (let pathIdx = 0; pathIdx < paths.length; pathIdx++) {\n let fields = paths[pathIdx];\n let pattern = calendar;\n for (let idx = 0; idx < fields.length; idx++) {\n pattern = pattern[fields[idx]];\n }\n result.push(pattern);\n }\n return result.join(\" \");\n}\nfunction loadCalendarPatterns(locale, calendar) {\n const cldrCalendar = cldr[locale].calendar;\n const patterns = cldrCalendar.patterns = {};\n patterns.d = getPredefinedFormat(SHORT_DATE, calendar).replace(YEAR_REGEX, 'y');\n for (let pattern in datePatterns) {\n patterns[pattern] = getPredefinedFormat(datePatterns[pattern], calendar);\n }\n for (let pattern in predefinedDatePatterns) {\n patterns[pattern] = predefinedDatePatterns[pattern];\n }\n const dateTimeFormats = calendar.dateTimeFormats;\n cldrCalendar.dateTimeFormats = {\n full: dateTimeFormats.full,\n long: dateTimeFormats.long,\n medium: dateTimeFormats.medium,\n short: dateTimeFormats.short,\n availableFormats: dateTimeFormats.availableFormats\n };\n cldrCalendar.timeFormats = calendar.timeFormats;\n cldrCalendar.dateFormats = calendar.dateFormats;\n}\nexport default function loadCalendarInfo(locale, info) {\n const calendar = cldr[locale].calendar = cldr[locale].calendar || {};\n for (let field in info) {\n if (field === \"timeZoneNames\") {\n calendar.gmtFormat = info[field].gmtFormat;\n calendar.gmtZeroFormat = info[field].gmtZeroFormat;\n } else if (field === \"calendars\" && info[field].gregorian) {\n loadCalendarPatterns(locale, info[field].gregorian);\n loadCalendarNames(locale, info[field].gregorian);\n } else if (field === \"fields\") {\n loadCalendarDateFields(locale, info.fields);\n }\n }\n}","import { cldr } from './info';\nfunction territoryFromName(name, identity) {\n const likelySubtags = cldr.supplemental.likelySubtags;\n let parts = name.split(\"-\");\n if (likelySubtags) {\n const likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n if (likelyName) {\n parts = likelyName.split(\"-\");\n }\n }\n if (identity) {\n for (let idx = parts.length - 1; idx >= 1; idx--) {\n const part = parts[idx];\n if (part === identity.variant || part === identity.script) {\n parts.splice(idx, 1);\n }\n }\n }\n const length = parts.length;\n if (length > 1) {\n const territory = parts[length - 1];\n return territory.toUpperCase();\n }\n}\nexport default function localeTerritory(info) {\n if (info.territory) {\n return info.territory;\n }\n const name = info.name;\n const identity = info.identity;\n let territory;\n if (identity && identity.territory) {\n territory = identity.territory;\n } else {\n territory = territoryFromName(name, identity);\n }\n info.territory = territory;\n return territory;\n}","const MILLISECOND = 'duration-millisecond';\nconst UNIT_PATTERN_ONE = 'unitPattern-count-one';\nconst UNIT_PATTERN_OTHER = 'unitPattern-count-other';\nconst placeholderPattern = /\\{0\\}\\s?/;\nfunction extractUnit(unit) {\n const value = unit[UNIT_PATTERN_ONE] || unit[UNIT_PATTERN_OTHER];\n return value.replace(placeholderPattern, '');\n}\nexport default function loadUnits(localeInfo, units) {\n localeInfo.calendar.dateFields.millisecond = {\n narrow: extractUnit(units.narrow[MILLISECOND]),\n short: extractUnit(units.short[MILLISECOND]),\n wide: extractUnit(units.long[MILLISECOND])\n };\n}","import { cldr } from './info';\nimport loadNumbersInfo from './load-numbers';\nimport loadCalendarInfo from './load-dates';\nimport localeTerritory from './territory';\nimport loadUnits from './load-units';\nfunction loadLocale(locale, info) {\n for (let field in info) {\n if (field === \"numbers\") {\n loadNumbersInfo(locale, info[field]);\n } else if (field === \"dates\") {\n loadCalendarInfo(locale, info[field]);\n }\n }\n}\nexport default function load() {\n const length = arguments.length;\n for (let idx = 0; idx < length; idx++) {\n let entry = arguments[idx];\n if (entry.main) {\n let locale = Object.keys(entry.main)[0];\n let info = entry.main[locale];\n let localeInfo = cldr[locale] = cldr[locale] || {};\n if (info.units) {\n loadUnits(localeInfo, info.units);\n } else {\n localeInfo.name = localeInfo.name || locale;\n localeInfo.identity = localeInfo.identity || info.identity;\n localeTerritory(localeInfo);\n loadLocale(locale, info);\n }\n } else if (entry.supplemental) {\n if (entry.supplemental.weekData) {\n cldr.supplemental.weekData = {\n firstDay: entry.supplemental.weekData.firstDay,\n weekendStart: entry.supplemental.weekData.weekendStart,\n weekendEnd: entry.supplemental.weekData.weekendEnd\n };\n } else if (entry.supplemental.likelySubtags) {\n cldr.supplemental.likelySubtags = Object.assign(cldr.supplemental.likelySubtags, entry.supplemental.likelySubtags);\n } else if (entry.supplemental.currencyData) {\n const currencyData = cldr.supplemental.currencyData;\n currencyData.region = Object.assign(currencyData.region || {}, entry.supplemental.currencyData.region);\n currencyData.fractions = Object.assign(currencyData.fractions || {}, entry.supplemental.currencyData.fractions);\n }\n }\n }\n}","import { cldr } from './info';\nexport default function setData(data) {\n const locale = data.name;\n const info = cldr[locale] = cldr[locale] || {};\n const supplemental = cldr.supplemental = cldr.supplemental || {};\n if (data.likelySubtags) {\n supplemental.likelySubtags = Object.assign(supplemental.likelySubtags || {}, data.likelySubtags);\n }\n if (data.currencyData) {\n supplemental.currencyData = supplemental.currencyData || {};\n supplemental.currencyData.fractions = Object.assign(supplemental.currencyData.fractions || {}, data.currencyData);\n }\n const numbers = info.numbers;\n Object.assign(info, data);\n if (numbers && data.numbers) {\n info.numbers = Object.assign({}, numbers, data.numbers);\n }\n}","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\nexport default function dateFieldName(options, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const dateFields = info.calendar.dateFields;\n if (!dateFields) {\n throw errors.NoDateFieldNames.error();\n }\n const fieldNameInfo = dateFields[options.type] || {};\n return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\nfunction lowerArray(arr) {\n const result = [];\n for (let idx = 0; idx < arr.length; idx++) {\n result.push(arr[idx].toLowerCase());\n }\n return result;\n}\nfunction lowerObject(obj) {\n const result = {};\n for (let field in obj) {\n result[field] = obj[field].toLowerCase();\n }\n return result;\n}\nfunction cloneLower(obj) {\n let result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n return result;\n}\nexport default function dateFormatNames(locale, options) {\n const {\n type,\n nameType,\n standAlone,\n lower\n } = options;\n const info = getLocaleInfo(locale);\n const formatType = standAlone ? \"stand-alone\" : \"format\";\n const lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n const formatNames = info.calendar[type][formatType];\n let result = formatNames[lowerNameType];\n if (!result && lower) {\n result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n }\n return result;\n}","export default function parseRangeDate(value) {\n const parts = value.split('-');\n const year = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const day = parseInt(parts[2], 10);\n return new Date(year, month, day);\n}","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nconst {\n NoCurrency,\n NoCurrencyDisplay,\n NoSupplementalCurrency,\n NoCurrencyRegion,\n NoValidCurrency\n} = errors;\nconst DEFAULT_CURRENCY_FRACTIONS = 2;\nconst SYMBOL = \"symbol\";\nconst INVALID_CURRENCY_CODE = 'XXX';\nconst GLOBAL_CURRENCIES = {\n '001': 'USD',\n // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n '150': 'EUR' // 150 territory for Europe\n};\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const currencies = info.numbers.currencies;\n if (!currencies) {\n if (throwIfNoValid) {\n throw NoCurrency.error();\n }\n return;\n }\n const currencyDisplayInfo = currencies[currency];\n if (!currencyDisplayInfo) {\n if (throwIfNoValid) {\n throw NoCurrencyDisplay.error();\n }\n return;\n }\n return currencyDisplayInfo;\n}\nfunction lengthComparer(a, b) {\n return b.length - a.length;\n}\nfunction regionCurrency(regionCurrencies) {\n let latestValidUntil, latestValidUntilRange;\n let latestStillValid, latestStillValidDate;\n for (let idx = 0; idx < regionCurrencies.length; idx++) {\n const currency = regionCurrencies[idx];\n const code = Object.keys(currency)[0];\n const info = currency[code];\n if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n if (!info._to) {\n const stillValidDate = parseRangeDate(info._from);\n if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n latestStillValid = code;\n latestStillValidDate = stillValidDate;\n }\n } else if (!latestStillValid) {\n const validFrom = parseRangeDate(info._from);\n const validTo = parseRangeDate(info._to);\n if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n latestValidUntil = code;\n latestValidUntilRange = {\n from: validFrom,\n to: validTo\n };\n }\n }\n }\n }\n return latestStillValid || latestValidUntil;\n}\nexport function currencyDisplays(locale, currency, throwIfNoValid = true) {\n const currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n if (!currencyInfo) {\n return;\n }\n if (!currencyInfo.displays) {\n const displays = [currency];\n for (let field in currencyInfo) {\n displays.push(currencyInfo[field]);\n }\n displays.sort(lengthComparer);\n currencyInfo.displays = displays;\n }\n return currencyInfo.displays;\n}\nexport function currencyDisplay(locale, options) {\n const {\n value,\n currency,\n currencyDisplay = SYMBOL\n } = options;\n if (currencyDisplay === \"code\") {\n return currency;\n }\n const currencyInfo = getCurrencyInfo(locale, currency, true);\n let result;\n if (currencyDisplay === SYMBOL) {\n result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL] || currency;\n } else {\n if (typeof value === \"undefined\" || value !== 1) {\n result = currencyInfo[\"displayName-count-other\"];\n } else {\n result = currencyInfo[\"displayName-count-one\"];\n }\n }\n return result;\n}\nexport function currencyFractionOptions(code) {\n let minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n let maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n const fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n if (fractions && fractions._digits) {\n maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n }\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\nexport function territoryCurrencyCode(territory, throwIfNoValid = true) {\n if (GLOBAL_CURRENCIES[territory]) {\n return GLOBAL_CURRENCIES[territory];\n }\n const currencyData = cldr.supplemental.currencyData;\n if (!currencyData) {\n if (throwIfNoValid) {\n throw NoSupplementalCurrency.error();\n }\n return;\n }\n const regionCurrencies = currencyData.region[territory];\n if (!regionCurrencies) {\n if (throwIfNoValid) {\n throw NoCurrencyRegion.error(territory);\n }\n return;\n }\n const currencyCode = regionCurrency(regionCurrencies);\n return currencyCode;\n}\nexport function localeCurrency(locale, throwIfNoValid) {\n const info = getLocaleInfo(locale);\n const numbers = info.numbers;\n if (!numbers.localeCurrency) {\n const currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n if (!currency && throwIfNoValid) {\n throw NoValidCurrency.error(info.name);\n }\n numbers.localeCurrency = currency;\n }\n return numbers.localeCurrency;\n}","export const DAYS_OF_WEEK = [\"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\"];\nexport const DEFAULT_TERRITORY = '001';","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\nconst {\n NoWeekData,\n NoFirstDay\n} = errors;\nexport default function firstDay(locale) {\n const info = getLocaleInfo(locale);\n if (!isNaN(info.firstDay)) {\n return info.firstDay;\n }\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n const firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n if (!firstDay) {\n throw NoFirstDay.error();\n }\n info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n return info.firstDay;\n}","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\nconst {\n NoWeekData\n} = errors;\nexport default function weekendRange(locale) {\n const info = getLocaleInfo(locale);\n if (info.weekendRange) {\n return info.weekendRange;\n }\n const weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n const territory = localeTerritory(info);\n const start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n const end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n info.weekendRange = {\n start: DAYS_OF_WEEK.indexOf(start),\n end: DAYS_OF_WEEK.indexOf(end)\n };\n return info.weekendRange;\n}","import { getLocaleInfo } from './info';\nexport default function numberSymbols(locale) {\n const info = getLocaleInfo(locale);\n return info.numbers.symbols;\n}","export { default as load } from './cldr/load';\nexport { default as setData } from './cldr/set-data';\nexport { default as dateFieldName } from './cldr/date-field-name';\nexport { default as dateFormatNames } from './cldr/date-format-names';\nexport { cldr, localeInfo } from './cldr/info';\nexport { currencyDisplays, currencyDisplay, currencyFractionOptions, territoryCurrencyCode, localeCurrency } from './cldr/currency';\nexport { default as firstDay } from './cldr/first-day';\nexport { default as weekendRange } from './cldr/weekend-range';\nexport { default as numberSymbols } from './cldr/number-symbols';","export default function isNegativeZero(value) {\n return 1 / value === -Infinity;\n}","import { currencyDisplay, localeCurrency } from '../cldr';\nexport default function formatCurrencySymbol(info, options = {}) {\n if (!options.currency) {\n options.currency = localeCurrency(info, true);\n }\n const display = currencyDisplay(info, options);\n return display;\n}","export default function groupInteger(number, start, end, options, info) {\n const symbols = info.numbers.symbols;\n const decimalIndex = number.indexOf(symbols.decimal);\n const groupSizes = options.groupSize.slice();\n let groupSize = groupSizes.shift();\n let integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n let integer = number.substring(start, integerEnd);\n let result = number;\n const integerLength = integer.length;\n if (integerLength >= groupSize) {\n let idx = integerLength;\n let parts = [];\n while (idx > -1) {\n let value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n let newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n if (groupSize === 0) {\n value = integer.substring(0, idx);\n if (value) {\n parts.push(value);\n }\n break;\n }\n }\n integer = parts.reverse().join(symbols.group);\n result = number.substring(0, start) + integer + number.substring(integerEnd);\n }\n return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\nexport default function isCurrencyStyle(style) {\n return style === CURRENCY || style === ACCOUNTING;\n}","export default function pad(number, digits = 2, right = false) {\n const count = digits - String(number).length;\n let result = number;\n if (count > 0) {\n const padString = new Array(count + 1).join(\"0\");\n result = right ? number + padString : padString + number;\n }\n return result;\n}","const MAX_PRECISION = 20;\nexport default function round(value, precision) {\n let result = value;\n let decimals = precision || 0;\n result = result.toString().split('e');\n result = Math.round(Number(result[0] + 'e' + (result[1] ? Number(result[1]) + decimals : decimals)));\n result = result.toString().split('e');\n result = Number(result[0] + 'e' + (result[1] ? Number(result[1]) - decimals : -decimals));\n return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\nconst DEFAULT_DECIMAL_ROUNDING = 3;\nconst DEFAULT_PERCENT_ROUNDING = 0;\nconst trailingZeroRegex = /0+$/;\nfunction fractionOptions(options) {\n let {\n minimumFractionDigits,\n maximumFractionDigits,\n style\n } = options;\n const isCurrency = isCurrencyStyle(style);\n let currencyFractions;\n if (isCurrency) {\n currencyFractions = currencyFractionOptions(options.currency);\n }\n if (minimumFractionDigits === undefined) {\n minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n }\n if (maximumFractionDigits === undefined) {\n if (style === PERCENT) {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n } else if (isCurrency) {\n maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n } else {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n }\n }\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\nfunction applyPattern(value, pattern, symbol) {\n let result = EMPTY;\n for (let idx = 0, length = pattern.length; idx < length; idx++) {\n let ch = pattern.charAt(idx);\n if (ch === NUMBER_PLACEHOLDER) {\n result += value;\n } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n result += symbol;\n } else {\n result += ch;\n }\n }\n return result;\n}\nfunction currencyUnitPattern(info, value) {\n const currencyInfo = info.numbers.currency;\n let pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n if (value < 0) {\n pattern = pattern.replace(NUMBER_PLACEHOLDER, `-${NUMBER_PLACEHOLDER}`);\n }\n return pattern;\n}\nexport default function standardNumberFormat(number, options, info) {\n const symbols = info.numbers.symbols;\n const {\n style\n } = options;\n const isCurrency = isCurrencyStyle(style);\n\n //return number in exponential format\n if (style === SCIENTIFIC) {\n let exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n return exponential.replace(POINT, symbols.decimal);\n }\n let value = number;\n let symbol;\n if (isCurrency) {\n options.value = value;\n symbol = formatCurrencySymbol(info, options);\n }\n if (style === PERCENT) {\n value *= 100;\n symbol = symbols.percentSign;\n }\n const {\n minimumFractionDigits,\n maximumFractionDigits\n } = fractionOptions(options);\n value = round(value, maximumFractionDigits);\n const negative = value < 0;\n const negativeZero = isNegativeZero(number);\n const parts = value.split(POINT);\n let integer = parts[0];\n let fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n if (options.minimumIntegerDigits) {\n integer = pad(integer, options.minimumIntegerDigits);\n }\n let formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n if (fraction) {\n formattedValue += symbols.decimal + fraction;\n }\n let pattern;\n if (isCurrency && options.currencyDisplay === \"name\") {\n pattern = currencyUnitPattern(info, number);\n } else {\n const patterns = options.patterns;\n pattern = negative || negativeZero ? patterns[1] || \"-\" + patterns[0] : patterns[0];\n }\n if (pattern === NUMBER_PLACEHOLDER && !negative) {\n return formattedValue;\n }\n const result = applyPattern(formattedValue, pattern, symbol);\n return result;\n}","import { PERCENT_PLACEHOLDER, CURRENCY_PLACEHOLDER, CURRENCY, PERCENT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\nconst literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nconst PLACEHOLDER = \"__??__\";\nexport function setStyleOptions(formatOptions, info) {\n const format = formatOptions.format;\n\n //multiply number if the format has percent\n if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n formatOptions.style = PERCENT;\n formatOptions.symbol = info.numbers.symbols.percentSign;\n formatOptions.number *= 100;\n }\n if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n formatOptions.style = CURRENCY;\n formatOptions.symbol = formatCurrencySymbol(info);\n }\n}\nexport function setFormatLiterals(formatOptions) {\n let format = formatOptions.format;\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n const literals = formatOptions.literals = [];\n formatOptions.format = format.replace(literalRegExp, function (match) {\n const quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n const literal = match.slice(1).replace(quoteChar, EMPTY);\n literals.push(literal);\n return PLACEHOLDER;\n });\n }\n}\nexport function replaceLiterals(number, literals) {\n let result = number;\n if (literals) {\n const length = literals.length;\n for (let idx = 0; idx < length; idx++) {\n result = result.replace(PLACEHOLDER, literals[idx]);\n }\n }\n return result;\n}","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nimport { setStyleOptions, setFormatLiterals, replaceLiterals } from './utils';\nconst SHARP = \"#\";\nconst ZERO = \"0\";\nconst trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nconst trailingPointRegExp = /\\.$/;\nconst commaRegExp = /,/g;\nfunction trimTrailingZeros(value, lastZero) {\n let trimRegex;\n if (lastZero === 0) {\n trimRegex = trailingZerosRegExp;\n } else {\n trimRegex = new RegExp(`(\\\\.[0-9]{${lastZero}}[1-9]*)0+$`, 'g');\n }\n return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\nfunction roundNumber(formatOptions) {\n let {\n number,\n format\n } = formatOptions;\n let decimalIndex = format.indexOf(POINT);\n if (decimalIndex !== -1) {\n const zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n const sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n const hasZero = zeroIndex > -1;\n const hasSharp = sharpIndex > -1;\n let fraction = number.toString().split(\"e\");\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n let precision = fraction.length;\n let trailingZeros = -1;\n if (!hasZero && !hasSharp) {\n formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n decimalIndex = -1;\n precision = 0;\n } else if (hasZero && zeroIndex > sharpIndex) {\n precision = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && precision > sharpIndex) {\n precision = sharpIndex;\n } else if (hasZero && precision < zeroIndex) {\n precision = zeroIndex;\n }\n trailingZeros = hasZero ? zeroIndex : 0;\n }\n if (precision > -1) {\n number = round(number, precision);\n if (trailingZeros > -1) {\n number = trimTrailingZeros(number, trailingZeros);\n }\n }\n } else {\n number = round(number);\n }\n if (formatOptions.negative && number * -1 >= 0 && !formatOptions.negativeZero) {\n formatOptions.negative = false;\n }\n formatOptions.number = number;\n formatOptions.decimalIndex = decimalIndex;\n}\nfunction isConstantFormat(format) {\n return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\nfunction setValueSpecificFormat(formatOptions) {\n let {\n number,\n format\n } = formatOptions;\n format = format.split(LIST_SEPARATOR);\n if ((formatOptions.negative || formatOptions.negativeZero) && format[1]) {\n format = format[1];\n formatOptions.hasNegativeFormat = true;\n } else if (number === 0) {\n const zeroFormat = format[2];\n format = zeroFormat || format[0];\n if (zeroFormat && isConstantFormat(zeroFormat)) {\n formatOptions.constant = zeroFormat;\n }\n } else {\n format = format[0];\n }\n formatOptions.format = format;\n}\nfunction setGroupOptions(formatOptions) {\n formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n if (formatOptions.hasGroup) {\n formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n }\n}\nfunction placeholderIndex(index1, index2, start) {\n let index;\n if (index1 === -1 && index2 !== -1) {\n index = index2;\n } else if (index1 !== -1 && index2 === -1) {\n index = index1;\n } else {\n index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n }\n return index;\n}\nfunction setPlaceholderIndices(formatOptions) {\n const format = formatOptions.format;\n let sharpIndex = format.indexOf(SHARP);\n let zeroIndex = format.indexOf(ZERO);\n let start = placeholderIndex(sharpIndex, zeroIndex, true);\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n let end = placeholderIndex(sharpIndex, zeroIndex);\n if (start === format.length) {\n end = start;\n }\n formatOptions.start = start;\n formatOptions.end = end;\n formatOptions.lastZeroIndex = zeroIndex;\n}\nfunction replaceStyleSymbols(number, style, symbol) {\n let result = number;\n if (style === CURRENCY || style === PERCENT) {\n result = EMPTY;\n for (let idx = 0, length = number.length; idx < length; idx++) {\n let ch = number.charAt(idx);\n result += ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER ? symbol : ch;\n }\n }\n return result;\n}\nfunction replacePlaceHolders(formatOptions, info) {\n const {\n start,\n end,\n negative,\n negativeZero,\n format,\n decimalIndex,\n lastZeroIndex,\n hasNegativeFormat,\n hasGroup\n } = formatOptions;\n let number = formatOptions.number;\n const value = number.toString().split(POINT);\n const length = format.length;\n const integer = value[0];\n const fraction = value[1] || EMPTY;\n const integerLength = integer.length;\n let replacement = EMPTY;\n number = format.substring(0, start);\n if ((negative || negativeZero) && !hasNegativeFormat) {\n number += \"-\";\n }\n for (let idx = start; idx < length; idx++) {\n let ch = format.charAt(idx);\n if (decimalIndex === -1) {\n if (end - idx < integerLength) {\n number += integer;\n break;\n }\n } else {\n if (lastZeroIndex !== -1 && lastZeroIndex < idx) {\n replacement = EMPTY;\n }\n if (decimalIndex - idx <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n if (decimalIndex === idx) {\n number += (fraction ? info.numbers.symbols.decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, integerLength + start), info.numbers.decimal, info);\n }\n if (end >= start) {\n number += format.substring(end + 1);\n }\n return number;\n}\nfunction applyCustomFormat(formatOptions, info) {\n let number = formatOptions.number;\n if (formatOptions.start !== -1) {\n number = replacePlaceHolders(formatOptions, info);\n number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n number = replaceLiterals(number, formatOptions.literals);\n }\n return number;\n}\nexport default function customNumberFormat(number, format, info) {\n const formatOptions = {\n negative: number < 0,\n number: Math.abs(number),\n negativeZero: isNegativeZero(number),\n format: format\n };\n setValueSpecificFormat(formatOptions);\n if (formatOptions.constant) {\n return formatOptions.constant;\n }\n setFormatLiterals(formatOptions);\n setStyleOptions(formatOptions, info);\n setGroupOptions(formatOptions);\n roundNumber(formatOptions);\n setPlaceholderIndices(formatOptions);\n return applyCustomFormat(formatOptions, info);\n}","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\nconst standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\nfunction standardFormatOptions(format) {\n const formatAndPrecision = standardFormatRegExp.exec(format);\n if (formatAndPrecision) {\n const options = {\n style: DECIMAL\n };\n let style = formatAndPrecision[1].toLowerCase();\n if (style === \"c\") {\n options.style = CURRENCY;\n } else if (style === \"a\") {\n options.style = ACCOUNTING;\n } else if (style === \"p\") {\n options.style = PERCENT;\n } else if (style === \"e\") {\n options.style = SCIENTIFIC;\n }\n if (formatAndPrecision[2]) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n }\n return options;\n }\n}\nexport default function formatOptions(format) {\n let options;\n if (isString(format)) {\n options = standardFormatOptions(format);\n } else {\n options = format;\n }\n return options;\n}","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\nexport default function formatNumber(number, format = NUMBER_PLACEHOLDER, locale = DEFAULT_LOCALE) {\n if (number === undefined || number === null) {\n return EMPTY;\n }\n if (!isFinite(number)) {\n return String(number);\n }\n const info = localeInfo(locale);\n const options = formatOptions(format);\n let result;\n if (options) {\n const style = options.style || DECIMAL;\n result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n } else {\n result = customNumberFormat(number, format, info);\n }\n return result;\n}","export default function isNumber(value) {\n return typeof value === \"number\";\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport { setStyleOptions, setFormatLiterals } from './utils';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\nimport isString from '../common/is-string';\nconst exponentRegExp = /[eE][-+]?[0-9]+/;\nconst nonBreakingSpaceRegExp = /\\u00A0/g;\nfunction cleanNegativePattern(number, patterns) {\n if (patterns.length > 1) {\n const parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n }\n }\n}\nfunction cleanCurrencyNumber(value, info, format) {\n const options = formatOptions(format) || {};\n let isCurrency = isCurrencyStyle(options.style);\n let number = value;\n let negative;\n const currency = options.currency || localeCurrency(info, isCurrency);\n if (currency) {\n const displays = currencyDisplays(info, currency, isCurrency);\n if (displays) {\n for (let idx = 0; idx < displays.length; idx++) {\n let display = displays[idx];\n if (number.includes(display)) {\n number = number.replace(display, EMPTY);\n isCurrency = true;\n break;\n }\n }\n }\n if (isCurrency) {\n const cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) || cleanNegativePattern(number, info.numbers.accounting.patterns);\n if (cleanNumber) {\n negative = true;\n number = cleanNumber;\n }\n }\n }\n return {\n number: number,\n negative: negative\n };\n}\nfunction cleanLiterals(number, formatOptions) {\n const literals = formatOptions.literals;\n let result = number;\n if (literals) {\n for (let idx = 0; idx < literals.length; idx++) {\n result = result.replace(literals[idx], EMPTY);\n }\n }\n return result;\n}\nfunction divideBy100(number) {\n const strNumber = String(number);\n const pointIndex = strNumber.indexOf(POINT);\n const zeroesCount = 2;\n let result = number / Math.pow(10, zeroesCount);\n if (pointIndex === -1 || String(result).length <= strNumber.length + zeroesCount) {\n return result;\n }\n const fractionDigits = strNumber.length - pointIndex + 1 + zeroesCount;\n return parseFloat(result.toFixed(fractionDigits));\n}\nexport default function parseNumber(value, locale = DEFAULT_LOCALE, format = {}) {\n if (!value && value !== 0) {\n return null;\n }\n if (isNumber(value)) {\n return value;\n }\n const info = localeInfo(locale);\n const symbols = info.numbers.symbols;\n let number = value.toString();\n let formatOptions = format || {};\n let isPercent;\n if (isString(format)) {\n formatOptions = {\n format: format\n };\n setFormatLiterals(formatOptions);\n number = cleanLiterals(number, formatOptions);\n setStyleOptions(formatOptions, info);\n }\n if (formatOptions.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n number = number.replace(symbols.percentSign, EMPTY);\n isPercent = true;\n }\n if (exponentRegExp.test(number)) {\n number = parseFloat(number.replace(symbols.decimal, POINT));\n return isNaN(number) ? null : number;\n }\n const {\n negative: negativeCurrency,\n number: currencyNumber\n } = cleanCurrencyNumber(number, info, formatOptions);\n number = String(currencyNumber).trim();\n const negativeSignIndex = number.indexOf(\"-\");\n if (negativeSignIndex > 0) {\n return null;\n }\n let isNegative = negativeSignIndex > -1;\n isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n number = number.replace(\"-\", EMPTY).replace(nonBreakingSpaceRegExp, \" \").split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY).replace(symbols.decimal, POINT);\n number = parseFloat(number);\n if (isNaN(number)) {\n number = null;\n } else if (isNegative) {\n number *= -1;\n }\n if (number && isPercent) {\n number = divideBy100(number);\n }\n return number;\n}","export { default as formatNumber } from './numbers/format-number';\nexport { default as parseNumber } from './numbers/parse-number';","const formatRegExp = /\\{(\\d+)}/g;\nexport default function formatString(format) {\n const values = arguments;\n return format.replace(formatRegExp, (match, index) => {\n const value = values[parseInt(index, 10) + 1];\n return value;\n });\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\nconst REMOVAL_PENALTY = 120;\nconst ADDITION_PENALTY = 20;\nconst LENGHT_DELTA = [2, 1, 5, 3, 4];\nconst LONG_LESS_PENALTY_DELTA = -2;\nconst SHORT_LESS_PENALTY_DELTA = -1;\nconst SHORT_MORE_PENALTY_DELTA = 1;\nconst LONG_MORE_PENALTY_DELTA = 2;\nconst PENALTIES = {\n [LONG_LESS_PENALTY_DELTA.toString()]: 8,\n [SHORT_LESS_PENALTY_DELTA.toString()]: 6,\n [LONG_MORE_PENALTY_DELTA.toString()]: 6,\n [SHORT_MORE_PENALTY_DELTA.toString()]: 3\n};\nconst VALUE_FORMAT_LENGTH = {\n numeric: 1,\n \"2-digit\": 2,\n short: 3,\n long: 4,\n narrow: 5\n};\nconst TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\nfunction getHourSpecifier(options) {\n return options.hour12 ? \"h\" : \"H\";\n}\nconst DATE_OPTIONS_MAP = [{\n key: \"era\",\n specifier: \"G\"\n}, {\n key: \"year\",\n specifier: \"y\"\n}, {\n key: \"month\",\n specifier: \"M\"\n}, {\n key: \"day\",\n specifier: \"d\"\n}, {\n key: \"weekday\",\n specifier: \"E\"\n}, {\n key: \"hour\",\n getSpecifier: getHourSpecifier\n}, {\n key: \"minute\",\n specifier: \"m\"\n}, {\n key: \"second\",\n specifier: \"s\"\n}, {\n key: \"timeZoneName\",\n specifier: \"z\"\n}];\nconst STAND_ALONE_SPECIFIERS = {\n e: 'c',\n E: 'c',\n M: 'L',\n Q: 'q'\n};\nconst specifiersRegex = {};\nconst resolvedFormats = {};\nfunction getSpecifierRegex(specifier) {\n if (!specifiersRegex[specifier]) {\n specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n }\n return specifiersRegex[specifier];\n}\nfunction skeletonSpecifiers(skeleton) {\n const result = [];\n let current = skeleton.charAt(0);\n let specifier = current;\n for (let idx = 1; idx < skeleton.length; idx++) {\n let character = skeleton.charAt(idx);\n if (character === specifier) {\n current += character;\n } else {\n result.push(current);\n current = specifier = character;\n }\n }\n result.push(current);\n return result;\n}\nfunction findBestMatch(specifiers, availableFormats) {\n const specifiersLength = specifiers.length;\n let maxScore = -Number.MAX_VALUE;\n let bestMatches, result;\n for (let format in availableFormats) {\n const matches = [];\n let currentFormat = format.replace(\"v\", \"z\");\n let score = 0;\n for (let idx = 0; idx < specifiersLength; idx++) {\n const specifier = specifiers[idx];\n let specifierRegex = getSpecifierRegex(specifier[0]);\n let match = (specifierRegex.exec(currentFormat) || [])[0];\n if (!match) {\n score -= REMOVAL_PENALTY;\n } else {\n currentFormat = currentFormat.replace(match, EMPTY);\n if (match.length !== specifier.length) {\n let delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n score -= PENALTIES[delta];\n }\n }\n matches.push(match);\n if (score < maxScore) {\n break;\n }\n }\n if (currentFormat.length) {\n score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n }\n if (score > maxScore) {\n maxScore = score;\n bestMatches = matches;\n result = availableFormats[format];\n }\n }\n result = result.replace(\"v\", \"z\");\n for (let idx = 0; idx < specifiersLength; idx++) {\n const bestMatch = bestMatches[idx];\n if (bestMatch && bestMatch !== specifiers[idx]) {\n const matchSpecifier = bestMatches[idx][0];\n result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx]);\n if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx]);\n }\n }\n }\n return result;\n}\nfunction cacheFormat(skeleton, format, locale) {\n if (!resolvedFormats[locale]) {\n resolvedFormats[locale] = {};\n }\n resolvedFormats[locale][skeleton] = format;\n}\nfunction skeletonFormat(skeleton, info) {\n const availableFormats = info.calendar.dateTimeFormats.availableFormats;\n if (availableFormats[skeleton]) {\n return availableFormats[skeleton];\n }\n if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n return resolvedFormats[info.name][skeleton];\n }\n const timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n let result;\n if (timeStartIndex > 0) {\n const dateSkeleton = skeleton.substr(0, timeStartIndex);\n const timeSkeleton = skeleton.substr(timeStartIndex);\n result = formatString(info.calendar.dateTimeFormats.short,\n //should be deterimed based on specifiers\n availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats), availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n } else {\n result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n }\n cacheFormat(skeleton, result, info.name);\n return result;\n}\nfunction skeletonFromOptions(options) {\n let result = [];\n for (let idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n let option = DATE_OPTIONS_MAP[idx];\n let field = option.key;\n let value = options[field];\n if (value) {\n let spcifier = option.specifier || option.getSpecifier(options);\n result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n }\n }\n return result.join(EMPTY);\n}\nexport default function datePattern(format, info) {\n const calendar = info.calendar;\n let result;\n if (isString(format)) {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n } else if (format) {\n if (format.pattern) {\n return format.pattern;\n }\n let skeleton = format.skeleton;\n if (!skeleton) {\n if (format.datetime) {\n result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n } else if (format.date) {\n result = calendar.dateFormats[format.date];\n } else if (format.time) {\n result = calendar.timeFormats[format.time];\n } else {\n skeleton = skeletonFromOptions(format);\n }\n }\n if (skeleton) {\n result = skeletonFormat(skeleton, info);\n }\n }\n if (!result) {\n result = calendar.patterns.d;\n }\n return result;\n}","export default function dateNameType(formatLength) {\n let nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n } else if (formatLength === 6) {\n nameType = \"short\";\n }\n return nameType;\n}","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n return dateFormatNames(locale, {\n type: type,\n nameType: dateNameType(formatLength),\n standAlone: standAlone,\n lower: lower\n });\n}","function isFunction(fun) {\n return typeof fun === 'function';\n}\nexport default function isDate(value) {\n return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}","const MONTH = 'month';\nconst HOUR = 'hour';\nconst ZONE = 'zone';\nconst WEEKDAY = 'weekday';\nconst QUARTER = 'quarter';\nconst DATE_FIELD_MAP = {\n 'G': 'era',\n 'y': 'year',\n 'q': QUARTER,\n 'Q': QUARTER,\n 'M': MONTH,\n 'L': MONTH,\n 'd': 'day',\n 'E': WEEKDAY,\n 'c': WEEKDAY,\n 'e': WEEKDAY,\n 'h': HOUR,\n 'H': HOUR,\n 'k': HOUR,\n 'K': HOUR,\n 'm': 'minute',\n 's': 'second',\n 'S': 'millisecond',\n 'a': 'dayperiod',\n 'x': ZONE,\n 'X': ZONE,\n 'z': ZONE,\n 'Z': ZONE\n};\nconst dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\nexport { dateFormatRegExp, DATE_FIELD_MAP };","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n const firstDayIndex = firstDay(localeInfo);\n let dayIndex;\n if (day < firstDayIndex) {\n dayIndex = 7 - firstDayIndex + day;\n } else {\n dayIndex = day - firstDayIndex;\n }\n return dayIndex + 1;\n}\nfunction formatMonth(month, formatLength, info, standAlone) {\n if (formatLength <= 2) {\n return pad(month + 1, formatLength);\n }\n return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\nfunction formatQuarter(date, formatLength, info, standAlone) {\n const quarter = Math.floor(date.getMonth() / 3);\n if (formatLength < 3) {\n return quarter + 1;\n }\n return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\nfunction formatTimeZone(date, info, options) {\n const {\n shortHours,\n optionalMinutes,\n separator,\n localizedName,\n zZeroOffset\n } = options;\n const offset = date.getTimezoneOffset() / 60;\n if (offset === 0 && zZeroOffset) {\n return \"Z\";\n }\n const sign = offset <= 0 ? \"+\" : \"-\";\n const hoursMinutes = Math.abs(offset).toString().split(\".\");\n const minutes = hoursMinutes[1] || 0;\n let result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n if (minutes || !optionalMinutes) {\n result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n }\n if (localizedName) {\n const localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n result = formatString(localizedFormat, result);\n }\n return result;\n}\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n let result;\n if (formatLength < 3) {\n result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n } else {\n result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n }\n return result;\n}\nconst formatters = {};\nformatters.d = function (date, formatLength) {\n return pad(date.getDate(), formatLength);\n};\nformatters.E = function (date, formatLength, info) {\n return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\nformatters.M = function (date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, false);\n};\nformatters.L = function (date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, true);\n};\nformatters.y = function (date, formatLength) {\n let year = date.getFullYear();\n if (formatLength === 2) {\n year = year % 100;\n }\n return pad(year, formatLength);\n};\nformatters.h = function (date, formatLength) {\n const hours = date.getHours() % 12 || 12;\n return pad(hours, formatLength);\n};\nformatters.H = function (date, formatLength) {\n return pad(date.getHours(), formatLength);\n};\nformatters.k = function (date, formatLength) {\n return pad(date.getHours() || 24, formatLength);\n};\nformatters.K = function (date, formatLength) {\n return pad(date.getHours() % 12, formatLength);\n};\nformatters.m = function (date, formatLength) {\n return pad(date.getMinutes(), formatLength);\n};\nformatters.s = function (date, formatLength) {\n return pad(date.getSeconds(), formatLength);\n};\nformatters.S = function (date, formatLength) {\n const milliseconds = date.getMilliseconds();\n let result;\n if (milliseconds !== 0) {\n result = pad(String(milliseconds / 1000).split(\".\")[1].substr(0, formatLength), formatLength, true);\n } else {\n result = pad(EMPTY, formatLength);\n }\n return result;\n};\nformatters.a = function (date, formatLength, info) {\n return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\nformatters.z = function (date, formatLength, info) {\n return formatTimeZone(date, info, {\n shortHours: formatLength < 4,\n optionalMinutes: formatLength < 4,\n separator: true,\n localizedName: true\n });\n};\nformatters.Z = function (date, formatLength, info) {\n return formatTimeZone(date, info, {\n separator: formatLength > 3,\n localizedName: formatLength === 4,\n zZeroOffset: formatLength === 5\n });\n};\nformatters.x = function (date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5\n });\n};\nformatters.X = function (date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5,\n zZeroOffset: true\n });\n};\nformatters.G = function (date, formatLength, info) {\n let era = date.getFullYear() >= 0 ? 1 : 0;\n return formatNames(info, \"eras\", formatLength)[era];\n};\nformatters.e = formatDayOfWeek;\nformatters.c = function (date, formatLength, info) {\n return formatDayOfWeek(date, formatLength, info, true);\n};\nformatters.q = function (date, formatLength, info) {\n return formatQuarter(date, formatLength, info, true);\n};\nformatters.Q = formatQuarter;\nexport default function formatDate(date, format, locale = DEFAULT_LOCALE) {\n if (!isDate(date)) {\n if (date === undefined || date === null) {\n return EMPTY;\n }\n return date;\n }\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n return pattern.replace(dateFormatRegExp, function (match) {\n let formatLength = match.length;\n let result;\n if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n result = match.slice(1, formatLength - 1);\n } else {\n result = formatters[match[0]](date, formatLength, info);\n }\n return result;\n });\n}","export function convertTimeZone(date, fromOffset, toOffset) {\n const fromLocalOffset = date.getTimezoneOffset();\n const offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n const toLocalOffset = offsetDate.getTimezoneOffset();\n return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\nexport function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\nconst timeZoneOffsetRegExp = /([+|-]\\d{1,2})(:?)(\\d{2})?/;\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nconst offsetRegExp = /[+-]\\d*/;\nconst numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n};\nconst numberRegex = /\\d+/;\nconst PLACEHOLDER = \"{0}\";\nconst leadingSpacesRegex = /^ */;\nconst trailingSpacesRegex = / *$/;\nconst standardDateFormats = [\"yyyy/MM/dd HH:mm:ss\", \"yyyy/MM/dd HH:mm\", \"yyyy/MM/dd\", \"E MMM dd yyyy HH:mm:ss\", \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\", \"yyyy-MM-ddTHH:mm:ss.SSSXXX\", \"yyyy-MM-ddTHH:mm:ss.SSXXX\", \"yyyy-MM-ddTHH:mm:ssXXX\", \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\", \"yyyy-MM-ddTHH:mm:ss.SSS\", \"yyyy-MM-ddTHH:mmXXX\", \"yyyy-MM-ddTHH:mmX\", \"yyyy-MM-ddTHH:mm:ss\", \"yyyy-MM-ddTHH:mm\", \"yyyy-MM-dd HH:mm:ss\", \"yyyy-MM-dd HH:mm\", \"yyyy-MM-dd\", \"HH:mm:ss\", \"HH:mm\"];\nconst FORMATS_SEQUENCE = [\"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\"];\nconst TWO_DIGIT_YEAR_MAX = 2029;\nfunction outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n}\nfunction lookAhead(match, state) {\n let {\n format,\n idx\n } = state;\n let i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n state.idx = idx;\n return i;\n}\nfunction getNumber(size, state) {\n let regex = size ? numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}') : numberRegex,\n match = state.value.substr(state.valueIdx, size).match(regex);\n if (match) {\n match = match[0];\n state.valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n}\nfunction getIndexByName(names, state, lower) {\n let i = 0,\n length = names.length,\n name,\n nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = state.value.substr(state.valueIdx, nameLength);\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n if (subValue === name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n if (matchLength) {\n state.valueIdx += matchLength;\n return matchIdx + 1;\n }\n return null;\n}\nfunction checkLiteral(state) {\n let result = false;\n if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n state.valueIdx++;\n result = true;\n }\n return result;\n}\nfunction calendarGmtFormats(calendar) {\n const {\n gmtFormat,\n gmtZeroFormat\n } = calendar;\n if (!gmtFormat) {\n throw errors.NoGMTInfo.error();\n }\n return [gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase()];\n}\nfunction parseTimeZoneOffset(state, info, options) {\n const {\n shortHours,\n noSeparator,\n optionalMinutes,\n localizedName,\n zLiteral\n } = options;\n state.UTC = true;\n if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n state.valueIdx++;\n return false;\n }\n if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n return true;\n }\n const matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n if (!matches) {\n return !localizedName;\n }\n const hoursMatch = matches[1];\n const minutesMatch = matches[3];\n const hoursOffset = parseInt(hoursMatch, 10);\n const separator = matches[2];\n let minutesOffset = parseInt(minutesMatch, 10);\n if (isNaN(hoursOffset) || !shortHours && hoursMatch.length !== 3 || !optionalMinutes && isNaN(minutesOffset) || noSeparator && separator) {\n return true;\n }\n if (isNaN(minutesOffset)) {\n minutesOffset = null;\n }\n if (outOfRange(hoursOffset, -12, 13) || minutesOffset && outOfRange(minutesOffset, 0, 59)) {\n return true;\n }\n state.valueIdx += matches[0].length;\n state.hoursOffset = hoursOffset;\n state.minutesOffset = minutesOffset;\n}\nfunction parseMonth(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"months\", count, ch === \"L\", true);\n const month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n if (month === null || outOfRange(month, 1, 12)) {\n return true;\n }\n state.month = month - 1;\n}\nfunction parseDayOfWeek(ch, state, info) {\n const count = lookAhead(ch, state);\n const names = formatNames(info, \"days\", count, ch === \"c\", true);\n let dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n if (!dayOfWeek && dayOfWeek !== 0 || outOfRange(dayOfWeek, 1, 7)) {\n return true;\n }\n}\nconst parsers = {};\nparsers.d = function (state) {\n lookAhead(\"d\", state);\n const day = getNumber(2, state);\n if (day === null || outOfRange(day, 1, 31)) {\n return true;\n }\n if (state.day === null) {\n state.day = day;\n }\n};\nparsers.E = function (state, info) {\n const count = lookAhead(\"E\", state);\n //validate if it matches the day?\n let dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n if (dayOfWeek === null) {\n return true;\n }\n};\nparsers.M = function (state, info) {\n return parseMonth(\"M\", state, info);\n};\nparsers.L = function (state, info) {\n return parseMonth(\"L\", state, info);\n};\nparsers.y = function (state) {\n const count = lookAhead(\"y\", state);\n let year = getNumber(count === 1 ? undefined : count, state);\n if (year === null) {\n return true;\n }\n if (count === 2) {\n const currentYear = new Date().getFullYear();\n year = currentYear - currentYear % 100 + year;\n if (year > TWO_DIGIT_YEAR_MAX) {\n year -= 100;\n }\n }\n state.year = year;\n};\nparsers.h = function (state) {\n lookAhead(\"h\", state);\n let hours = getNumber(2, state);\n if (hours === 12) {\n hours = 0;\n }\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n state.hours = hours;\n};\nparsers.K = function (state) {\n lookAhead(\"K\", state);\n let hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n state.hours = hours;\n};\nparsers.a = function (state, info) {\n const count = lookAhead(\"a\", state);\n let periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n const pmHour = getIndexByName([periodFormats.pm], state, true);\n if (!pmHour && !getIndexByName([periodFormats.am], state, true)) {\n return true;\n }\n state.pmHour = pmHour;\n};\nparsers.H = function (state) {\n lookAhead(\"H\", state);\n const hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return true;\n }\n state.hours = hours;\n};\nparsers.k = function (state) {\n lookAhead(\"k\", state);\n let hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 1, 24)) {\n return true;\n }\n state.hours = hours === 24 ? 0 : hours;\n};\nparsers.m = function (state) {\n lookAhead(\"m\", state);\n const minutes = getNumber(2, state);\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return true;\n }\n state.minutes = minutes;\n};\nparsers.s = function (state) {\n lookAhead(\"s\", state);\n const seconds = getNumber(2, state);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return true;\n }\n state.seconds = seconds;\n};\nparsers.S = function (state) {\n const count = lookAhead(\"S\", state);\n const match = state.value.substr(state.valueIdx, count);\n let milliseconds = null;\n if (!isNaN(parseInt(match, 10))) {\n milliseconds = parseFloat(\"0.\" + match, 10);\n milliseconds = round(milliseconds, 3);\n milliseconds *= 1000;\n state.valueIdx += count;\n }\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return true;\n }\n state.milliseconds = milliseconds;\n};\nparsers.z = function (state, info) {\n const count = lookAhead(\"z\", state);\n const shortFormat = count < 4;\n const invalid = parseTimeZoneOffset(state, info, {\n shortHours: shortFormat,\n optionalMinutes: shortFormat,\n localizedName: true\n });\n if (invalid) {\n return invalid;\n }\n};\nparsers.Z = function (state, info) {\n const count = lookAhead(\"Z\", state);\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count < 4,\n zLiteral: count === 5,\n localizedName: count === 4\n });\n if (invalid) {\n return invalid;\n }\n};\nparsers.x = function (state, info) {\n const count = lookAhead(\"x\", state);\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1\n });\n if (invalid) {\n return invalid;\n }\n};\nparsers.X = function (state, info) {\n const count = lookAhead(\"X\", state);\n const invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1,\n zLiteral: true\n });\n if (invalid) {\n return invalid;\n }\n};\nparsers.G = function (state, info) {\n const count = lookAhead(\"G\", state);\n const eras = formatNames(info, \"eras\", count, false, true);\n const era = getIndexByName([eras[0], eras[1]], state, true);\n if (era === null) {\n return true;\n }\n};\nparsers.e = function (state, info) {\n return parseDayOfWeek(\"e\", state, info);\n};\nparsers.c = function (state, info) {\n return parseDayOfWeek(\"c\", state, info);\n};\nfunction createDate(state) {\n let {\n year,\n month,\n day,\n hours,\n minutes,\n seconds,\n milliseconds,\n pmHour,\n UTC,\n hoursOffset,\n minutesOffset\n } = state;\n const hasTime = hours !== null || minutes !== null || seconds || null;\n const date = new Date();\n let result;\n if (year === null && month === null && day === null && hasTime) {\n year = date.getFullYear();\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = date.getFullYear();\n }\n if (day === null) {\n day = 1;\n }\n }\n if (pmHour && hours < 12) {\n hours += 12;\n }\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n if (minutesOffset) {\n minutes += -minutesOffset * (hoursOffset < 0 ? -1 : 1);\n }\n result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(result, hours);\n }\n if (year < 100) {\n result.setFullYear(year);\n }\n if (result.getDate() !== day && UTC === undefined) {\n return null;\n }\n return result;\n}\nfunction addFormatSpaces(value, format) {\n const leadingSpaces = leadingSpacesRegex.exec(format)[0];\n const trailingSpaces = trailingSpacesRegex.exec(format)[0];\n return `${leadingSpaces}${value}${trailingSpaces}`;\n}\nfunction parseExact(value, format, info) {\n let pattern = datePattern(format, info).split(EMPTY);\n const state = {\n format: pattern,\n idx: 0,\n value: addFormatSpaces(value, format),\n valueIdx: 0,\n year: null,\n month: null,\n day: null,\n hours: null,\n minutes: null,\n seconds: null,\n milliseconds: null\n };\n const length = pattern.length;\n let literal = false;\n for (; state.idx < length; state.idx++) {\n let ch = pattern[state.idx];\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n }\n checkLiteral(state);\n } else {\n if (parsers[ch]) {\n let invalid = parsers[ch](state, info);\n if (invalid) {\n return null;\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral(state);\n } else if (!checkLiteral(state)) {\n return null;\n }\n }\n }\n if (state.valueIdx < value.length) {\n return null;\n }\n return createDate(state) || null;\n}\nfunction parseMicrosoftDateOffset(offset) {\n const sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n let result = offset.substring(1);\n result = parseInt(result.substr(0, 2), 10) * 60 + parseInt(result.substring(2), 10);\n return sign * result;\n}\nfunction parseMicrosoftDateFormat(value) {\n if (value && value.indexOf(\"/D\") === 0) {\n let date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n let tzoffset = offsetRegExp.exec(date.substring(1));\n date = new Date(parseInt(date, 10));\n if (tzoffset) {\n tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n date = convertTimeZone(date, 0, -1 * tzoffset);\n }\n return date;\n }\n }\n}\nfunction defaultFormats(calendar) {\n const formats = [];\n const patterns = calendar.patterns;\n const length = FORMATS_SEQUENCE.length;\n for (let idx = 0; idx < length; idx++) {\n formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n }\n return formats.concat(standardDateFormats);\n}\nexport default function parseDate(value, formats, locale = DEFAULT_LOCALE) {\n if (!value) {\n return null;\n }\n if (isDate(value)) {\n return value;\n }\n let parseValue = String(value).trim();\n let date = parseMicrosoftDateFormat(parseValue);\n if (date) {\n return date;\n }\n const info = localeInfo(locale);\n let parseFormats = formats || defaultFormats(info.calendar);\n parseFormats = Array.isArray(parseFormats) ? parseFormats : [parseFormats];\n const length = parseFormats.length;\n for (let idx = 0; idx < length; idx++) {\n date = parseExact(parseValue, parseFormats[idx], info);\n if (date) {\n return date;\n }\n }\n return date;\n}","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\nconst NAME_TYPES = {\n month: {\n type: 'months',\n minLength: 3,\n standAlone: 'L'\n },\n quarter: {\n type: 'quarters',\n minLength: 3,\n standAlone: 'q'\n },\n weekday: {\n type: 'days',\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: 'c'\n },\n dayperiod: {\n type: 'dayPeriods',\n minLength: 0\n },\n era: {\n type: 'eras',\n minLength: 0\n }\n};\nconst LITERAL = 'literal';\nfunction addLiteral(parts, value) {\n const lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === LITERAL) {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: LITERAL,\n pattern: value\n });\n }\n}\nfunction isHour12(pattern) {\n return pattern === 'h' || pattern === 'K';\n}\nexport default function splitDateFormat(format, locale = DEFAULT_LOCALE) {\n const info = localeInfo(locale);\n const pattern = datePattern(format, info);\n const parts = [];\n let lastIndex = dateFormatRegExp.lastIndex = 0;\n let match = dateFormatRegExp.exec(pattern);\n while (match) {\n let value = match[0];\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n if (value.startsWith('\"') || value.startsWith(\"'\")) {\n addLiteral(parts, value);\n } else {\n const specifier = value[0];\n const type = DATE_FIELD_MAP[specifier];\n const part = {\n type: type,\n pattern: value\n };\n if (type === 'hour') {\n part.hour12 = isHour12(value);\n }\n const names = NAME_TYPES[type];\n if (names) {\n const minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n const patternLength = value.length;\n if (patternLength >= minLength) {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n parts.push(part);\n }\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n return parts;\n}","export { default as formatDate } from './dates/format-date';\nexport { default as parseDate } from './dates/parse-date';\nexport { default as splitDateFormat } from './dates/split-date-format';","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\nconst formatRegExp = /\\{(\\d+)(:[^}]+)?\\}/g;\nexport function toString(value, format, locale) {\n if (format) {\n if (isDate(value)) {\n return formatDate(value, format, locale);\n } else if (isNumber(value)) {\n return formatNumber(value, format, locale);\n }\n }\n return value !== undefined && value !== null ? value : EMPTY;\n}\nexport function format(format, values, locale) {\n return format.replace(formatRegExp, function (match, index, placeholderFormat) {\n let value = values[parseInt(index, 10)];\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n });\n}","export * from './numbers';\nexport * from './dates';\nexport * from './cldr';\nexport * from './format';\nexport * from './errors';","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, LOCALE_ID, Injectable, Inject, Pipe, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as intl from '@progress/kendo-intl';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-intl',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1734681633,\n version: '17.2.0',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\nconst DOCS_URL = 'https://www.telerik.com/kendo-angular-ui/components/internationalization/troubleshooting/';\n/**\n * @hidden\n */\nconst errorSolutions = {\n 'NoCurrency': `Solution: ${DOCS_URL}#toc-no-currency`,\n 'NoCurrencyDisplay': `Solution: ${DOCS_URL}#toc-no-currency-display`,\n 'NoCurrencyRegion': `Solution: ${DOCS_URL}#toc-no-currency-region`,\n 'NoDateFieldNames': `Solution: ${DOCS_URL}#toc-no-date-filed-names`,\n 'NoFirstDay': `Solution: ${DOCS_URL}#toc-no-first-day`,\n 'NoGMTInfo': `Solution: ${DOCS_URL}#toc-no-gmt-info`,\n 'NoLocale': `Solution: ${DOCS_URL}#toc-no-locale`,\n 'NoValidCurrency': `Solution: ${DOCS_URL}#toc-no-valid-currency`,\n 'NoWeekData': `Solution: ${DOCS_URL}#toc-no-week-data`\n};\nfunction formatMessage(error) {\n const message = error.message;\n const errorSolution = errorSolutions[Object.keys(errorSolutions).filter(key => message.indexOf(key) === 0)[0]];\n return errorSolution ? `${message} ${errorSolution}` : message;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction intlMethod(fn) {\n return function (...values) {\n try {\n return fn(...values);\n } catch (error) {\n error.message = formatMessage(error);\n throw error;\n }\n };\n}\n/**\n * @hidden\n */\nconst dateFormatNames = intlMethod(intl.dateFormatNames);\n/**\n * @hidden\n */\nconst dateFieldName = intlMethod(intl.dateFieldName);\n/**\n * @hidden\n */\nconst firstDay = intlMethod(intl.firstDay);\n/**\n * @hidden\n */\nconst format = intlMethod(intl.format);\n/**\n * @hidden\n */\nconst formatDate = intlMethod(intl.formatDate);\n/**\n * @hidden\n */\nconst formatNumber = intlMethod(intl.formatNumber);\n/**\n * @hidden\n */\nconst load = intlMethod(intl.load);\n/**\n * @hidden\n */\nconst numberSymbols = intlMethod(intl.numberSymbols);\n/**\n * @hidden\n */\nconst parseDate = intlMethod(intl.parseDate);\n/**\n * @hidden\n */\nconst parseNumber = intlMethod(intl.parseNumber);\n/**\n * @hidden\n */\nconst splitDateFormat = intlMethod(intl.splitDateFormat);\n/**\n * @hidden\n */\nconst toString = intlMethod(intl.toString);\n/**\n * @hidden\n */\nconst weekendRange = intlMethod(intl.weekendRange);\n/**\n * Sets a pre-built locale.\n *\n * @params data - The pre-built locale data.\n */\nconst setData = data => intl.setData(data);\n/**\n * Retrieves the locale data for the specified locale.\n *\n * @params locale - The locale id.\n * @returns data - The locale data.\n */\nconst localeData = locale => {\n try {\n return intl.localeInfo(locale);\n } catch (error) {\n error.message = formatMessage(error);\n throw error;\n }\n};\nconst LOCALE_REGEX = /_/g;\n/**\n * @hidden\n */\nfunction cldrServiceFactory(localeId) {\n return new CldrIntlService(localeId);\n}\n/**\n * An abstract base class that implements\n * the Internationalization service methods\n * for the current locale.\n */\nclass IntlService {\n /**\n * @hidden\n */\n changes = new EventEmitter();\n /**\n * @hidden\n */\n constructor() {\n validatePackage(packageMetadata);\n }\n /**\n * Notifies that the service was changed.\n */\n notify() {\n this.changes.emit();\n }\n static ɵfac = function IntlService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || IntlService)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: IntlService,\n factory: function IntlService_Factory(__ngFactoryType__) {\n let __ngConditionalFactory__ = null;\n if (__ngFactoryType__) {\n __ngConditionalFactory__ = new __ngFactoryType__();\n } else {\n __ngConditionalFactory__ = cldrServiceFactory(i0.ɵɵinject(LOCALE_ID));\n }\n return __ngConditionalFactory__;\n },\n providedIn: 'root'\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(IntlService, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: cldrServiceFactory,\n deps: [LOCALE_ID]\n }]\n }], function () {\n return [];\n }, null);\n})();\n/**\n * The Internationalization service implemented by using\n * the CLDR Database via the `@progress/kendo-intl` package.\n */\nclass CldrIntlService extends IntlService {\n locale;\n /**\n * Gets or sets the current locale ID.\n */\n get localeId() {\n return this.locale;\n }\n set localeId(value) {\n // Angular locales use underscore, for example, en_US\n // while IETF BCP-47 specifies a dash.\n // https://tools.ietf.org/html/bcp47\n const locale = value.replace(LOCALE_REGEX, '-');\n if (locale !== this.locale) {\n this.locale = locale;\n this.notify();\n }\n }\n /**\n * Creates a new instance of the service with the ID of the specified locale.\n *\n * Note that the parts of the locale ID can be separated by either `_` (underscore)\n * or `-` (dash).\n *\n * @param localeId - The default locale ID.\n */\n constructor(localeId) {\n super();\n this.localeId = localeId;\n }\n /**\n * Formats a string with placeholders such as\n * `Total amount {0:c}`.\n *\n * @param format - The format string.\n * @param values - One or more values to output in the format string placeholders.\n * @return - The formatted string.\n */\n format(format$1, ...values) {\n return format(format$1, values, this.localeId);\n }\n /**\n * Converts an object into a string based on the specified format.\n *\n * @param value - The value to format.\n * @param format - The format to use.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted object.\n */\n toString(value, format, localeId) {\n return toString(value, format, localeId || this.localeId);\n }\n /**\n * Converts a `Date` object into a string based on the specified format.\n * If no format is provided, the default short date format is used.\n *\n * @param value - The date to format.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted date.\n */\n formatDate(value, format, localeId) {\n return formatDate(value, format, localeId || this.localeId);\n }\n /**\n * Converts a string into a `Date` object based on the specified format.\n *\n * @param value - The string to convert.\n * @param format - The format strings or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The parsed date.\n */\n parseDate(value, format, localeId) {\n return parseDate(value, format, localeId || this.localeId);\n }\n /**\n * Converts a string into a `Number`.\n *\n * @param value - The string to convert.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The parsed number.\n */\n parseNumber(value, format, localeId) {\n return parseNumber(value, localeId || this.localeId, format);\n }\n /**\n * Converts a `Number` into a string based on the specified format.\n *\n * @param value - The number to format.\n * @param format - The format string or options.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return The formatted number.\n */\n formatNumber(value, format, localeId) {\n return formatNumber(value, format, localeId || this.localeId);\n }\n /**\n * Returns the date names from the current locale based on the option.\n *\n * The available `type` values are:\n * - `era`\n * - `year`\n * - `quarter`\n * - `month`\n * - `week`\n * - `day`\n * - `dayperiod`\n * - `hour`\n * - `minute`\n * - `second`\n * - `zone`\n *\n * The available `nameType` values are:\n * - `wide`\n * - `narrow`\n * - `short`\n *\n * @param options - Detailed configuration for the desired date field name.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The day names from the current locale based on the option.\n * @returns The localized date field name from the current locale based on the option.\n *\n * @example\n * ```ts\n * dateFieldName({ type: 'day' }); //returns 'day';\n * dateFieldName({ type: 'day', nameType: 'wide' }); //returns 'day';\n * dateFieldName({ type: 'month', nameType: 'short' }); //returns 'mo.';\n * dateFieldName({ type: 'month', nameType: 'wide' }); //returns 'month';\n * ```\n */\n dateFieldName(options, localeId) {\n return dateFieldName(options, localeId || this.localeId);\n }\n /**\n * Returns a localized date field name based on specific dateFieldName options.\n *\n * The available type values are:\n * - `day`\n * - `dayperiod`\n * - `months`\n * - `quarters`\n * - `eras`\n *\n * @param options - Detailed configuration for the desired date format.\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The day names from the current locale based on the option.\n */\n dateFormatNames(options, localeId) {\n return dateFormatNames(localeId || this.localeId, options);\n }\n /**\n * Splits the date format into objects containing information about each part of the pattern.\n *\n * @param format The format string or options.\n * @param localeId The optional locale id. If not specified, the `\"en\"` locale id is used.\n * @returns The date format parts.\n */\n splitDateFormat(format, localeId) {\n return splitDateFormat(format, localeId || this.localeId);\n }\n /**\n * Returns the number symbols from the current locale based on the option.\n *\n * @param localeId - The locale ID to use in place of the default one. Optional.\n * @return - The number symbols from the current locale.\n */\n numberSymbols(localeId) {\n return numberSymbols(localeId || this.localeId);\n }\n /**\n * Returns the first day index starting from Sunday.\n *\n * @param localeId - The locale ID. Defaults to the current locale ID.\n * @return - The index of the first day of the week (0 == Sunday).\n */\n firstDay(localeId) {\n return firstDay(localeId || this.localeId);\n }\n /**\n * Returns the start and end index of the locale weekend starting from Sunday.\n *\n * @param localeId - The locale ID. Defaults to the current locale ID.\n * @return - The start and end index of the locale weekend (0 == Sunday).\n */\n weekendRange(localeId) {\n return weekendRange(localeId || this.localeId);\n }\n static ɵfac = function CldrIntlService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CldrIntlService)(i0.ɵɵinject(LOCALE_ID));\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CldrIntlService,\n factory: CldrIntlService.ɵfac\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CldrIntlService, [{\n type: Injectable\n }], function () {\n return [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }]\n }];\n }, null);\n})();\nconst isNumeric = value => !isNaN(value - parseFloat(value));\n/**\n * Formats a date value to a string based on the requested format.\n * This pipe uses the [IntlService]({% slug api_intl_intlservice %}).\n *\n * @example\n * ```ng-template-no-run\n * \n * ```\n */\nclass DatePipe {\n intlService;\n /**\n * @hidden\n */\n constructor(intlService) {\n this.intlService = intlService;\n }\n /**\n * Converts a `Date` object into a string based on the specified format.\n * If no format is provided, the default short date format is used.\n *\n * @param value - The date to format.\n * @param format - The format string or options.\n * @param localeId - (Optional) The ID of the locale which will be used instead of the default one.\n * @return - The formatted date.\n */\n transform(value, format = \"\", localeId) {\n value = this.normalize(value);\n if (value) {\n return this.intlService.formatDate(value, format, localeId);\n }\n return value;\n }\n normalize(value) {\n if (value && typeof value === 'string') {\n value = this.intlService.parseDate(value);\n } else if (value && isNumeric(value)) {\n value = new Date(parseFloat(value));\n }\n return value;\n }\n static ɵfac = function DatePipe_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DatePipe)(i0.ɵɵdirectiveInject(IntlService, 16));\n };\n static ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"kendoDate\",\n type: DatePipe,\n pure: true\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatePipe, [{\n type: Pipe,\n args: [{\n name: 'kendoDate',\n standalone: true\n }]\n }], function () {\n return [{\n type: IntlService\n }];\n }, null);\n})();\n\n/**\n * Formats a number value to a string based on the requested format.\n * This pipe uses the [`IntlService`]({% slug api_intl_intlservice %}).\n *\n * @example\n * ```ng-template-no-run\n * \n * ```\n */\nclass NumberPipe {\n intlService;\n /**\n * @hidden\n */\n constructor(intlService) {\n this.intlService = intlService;\n }\n /**\n * Converts a `Number` object into a string based on the specified format.\n * If no format is provided, the value is formatted as decimal number using the\n * [`\"n\"`](https://github.com/telerik/kendo-intl/blob/master/docs/num-formatting/index.md#standard) format.\n *\n * @param value - The numer that will be formatted.\n * @param format - The format string or options.\n * @param localeId - (Optional) The locale ID that will be used in place of the default one.\n * @return - The formatted number.\n */\n transform(value, format, localeId) {\n if (typeof value === 'string') {\n value = this.intlService.parseNumber(value);\n }\n if (value !== null && value !== undefined) {\n return this.intlService.formatNumber(value, format, localeId);\n }\n return value;\n }\n static ɵfac = function NumberPipe_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NumberPipe)(i0.ɵɵdirectiveInject(IntlService, 16));\n };\n static ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"kendoNumber\",\n type: NumberPipe,\n pure: true\n });\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NumberPipe, [{\n type: Pipe,\n args: [{\n name: 'kendoNumber',\n standalone: true\n }]\n }], function () {\n return [{\n type: IntlService\n }];\n }, null);\n})();\n\n/**\n * Utility array that contains all `kendoNumber` related components and directives\n */\nconst KENDO_NUMBER = [NumberPipe];\n/**\n * Utility array that contains all `kendoDate` related components and directives\n */\nconst KENDO_DATE = [DatePipe];\n/**\n * Utility array that contains all `@progress/kendo-angular-intl` related components and directives\n */\nconst KENDO_INTL = [...KENDO_NUMBER, ...KENDO_DATE];\n\n//IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Intl services.\n */\nclass IntlModule {\n static ɵfac = function IntlModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || IntlModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: IntlModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(IntlModule, [{\n type: NgModule,\n args: [{\n imports: [...KENDO_INTL],\n exports: [...KENDO_INTL]\n }]\n }], null, null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CldrIntlService, DatePipe, IntlModule, IntlService, KENDO_DATE, KENDO_INTL, KENDO_NUMBER, NumberPipe, cldrServiceFactory, dateFieldName, dateFormatNames, firstDay, format, formatDate, formatNumber, load, localeData, numberSymbols, parseDate, parseNumber, setData, splitDateFormat, toString, weekendRange };"],"mappings":"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","names":["_0x40b483","_0x32c728","_0x118e65","_0x2acfd0","_0x54738d","_0x45a77a","_0x27a0d3","_0x1c2d92","_0x135861","_0x21b2c4","_0x4205ac","_0x3e8c99","_0x3442b2","_0x23b1cd","_0x52a8d4","_0x3dde91","_0x43b66d","_0x25dc8b","_0xcce210","_0x4e0ecf","_0x1a2fc4","errors","localeInfo","format","localeInfo","localeInfo","formatNames","currencyDisplay","init_constants","firstDay","init_constants","NoWeekData","init_constants","formatOptions","format","formatOptions","format","format","format","format","formatOptions","format","formatRegExp","format","init_constants","localeInfo","format","init_constants","format","PLACEHOLDER","parseDate","format","init_constants","format","formatRegExp","dateFieldName","dateFormatNames","firstDay","format","formatDate","formatNumber","load","numberSymbols","parseDate","parseNumber","setData","splitDateFormat","toString","weekendRange"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]}