{"version":3,"file":"LocaleFormat.bundle.js","mappings":"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","sources":["webpack://advfnweb/webpack/bootstrap","webpack://advfnweb/./advfn3/content/_common/locale-format/src/lib/LocaleFormatSchema.js","webpack://advfnweb/./advfn3/content/_common/locale-format/src/lib/LocaleFormatConfig.js","webpack://advfnweb/./advfn3/content/_common/locale-format/src/lib/LocaleFormat.js","webpack://advfnweb/./advfn3/content/_common/locale-format/src/app.js"],"sourcesContent":["// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","const DEFAULT_CURRENCY = '_default';\n\nclass LocaleFormatSchema\n{\n constructor(schema)\n {\n this.schema = schema;\n this.type = 'price';\n this.currency = DEFAULT_CURRENCY;\n }\n\n /**\n * @param {SchemaType} schemaType\n * @returns {this}\n * @throws {Error}\n */\n setSchemaType(schemaType)\n {\n if (!this.schema.hasOwnProperty(schemaType))\n {\n throw Error(`Schema type is not valid for this schema: ${schemaType}`);\n }\n this.type = schemaType;\n return this;\n }\n\n /**\n * @param {string} currency\n * @returns {this}\n */\n setCurrency(currency)\n {\n if (!this.schema[this.type].hasOwnProperty(currency))\n {\n currency = DEFAULT_CURRENCY;\n }\n this.currency = currency;\n return this;\n }\n\n /**\n * @returns {Object}\n */\n getCases()\n {\n return this.schema[this.type][this.currency];\n }\n\n /**\n * @param {number|string} value\n * @returns {Object}\n * @throws {Error}\n */\n getFormatForValue(value)\n {\n const cases = this.getCases();\n if (typeof value === 'string')\n {\n value = parseFloat(value);\n }\n\n let format;\n Object.keys(cases).every((key) =>\n {\n const { conditions } = cases[key];\n if (this.evaluateConditionsForValue(Math.abs(value), conditions))\n {\n format = cases[key].format;\n return false;\n }\n\n return true;\n });\n\n if (!format)\n {\n throw Error(`Can not obtain format options for value: ${value}`);\n }\n return format;\n }\n\n /**\n * @param {string|number} value\n * @param {Object} conditions\n * @returns {boolean}\n * @throws {Error}\n */\n evaluateConditionsForValue(value, conditions)\n {\n let valid = true;\n if (typeof value === 'string')\n {\n value = parseFloat(value);\n }\n if (conditions.length === 0)\n {\n return valid;\n }\n\n Object.keys(conditions).every((condition) =>\n {\n const testValue = conditions[condition];\n switch (condition)\n {\n case 'eq':\n valid = (value === testValue);\n break;\n case 'neq':\n valid = (value !== testValue);\n break;\n case 'lt':\n valid = (value < testValue);\n break;\n case 'gt':\n valid = (value > testValue);\n break;\n case 'lte':\n valid = (value <= testValue);\n break;\n case 'gte':\n valid = (value >= testValue);\n break;\n default:\n throw Error(`Condition is not supported: ${condition}`);\n }\n return valid;\n });\n return valid;\n }\n}\n\nexport default LocaleFormatSchema;\n","import LocalesConfig from '../data/locales.config.json';\n\nclass LocaleFormatConfig\n{\n constructor()\n {\n this.locales = LocalesConfig.locales;\n this.instrumentTypes = this._loadInstrumentTypes();\n }\n\n /**\n * @param {string} instrumentType\n * @returns {boolean}\n */\n hasInstrumentType(instrumentType)\n {\n return this.instrumentTypes.hasOwnProperty(instrumentType);\n }\n\n /**\n * @param {string} instrumentType\n * @returns {object|null}\n */\n getSchemasForInstrumentType(instrumentType)\n {\n if (this.hasInstrumentType(instrumentType))\n {\n return this.instrumentTypes[instrumentType].schemas;\n }\n\n return null;\n }\n\n /**\n * @returns {object}\n * @private\n */\n _loadInstrumentTypes()\n {\n const DEFAULT = require('../../instrument/_resources/type_DEFAULT.json');\n const CS = require('../../instrument/_resources/type_CS.json');\n const CX = require('../../instrument/_resources/type_CX.json');\n const DE = require('../../instrument/_resources/type_DE.json');\n const FX = require('../../instrument/_resources/type_FX.json');\n const IX = require('../../instrument/_resources/type_IX.json');\n const OTC = require('../../instrument/_resources/type_OTC.json');\n const PR = require('../../instrument/_resources/type_PR.json');\n\n return {\n DEFAULT, CS, CX, DE, FX, IX, OTC, PR,\n };\n }\n\n /**\n * @returns {object}\n */\n getLocales()\n {\n return this.locales;\n }\n\n /**\n * @param {string} localeCode\n * @returns {object}\n */\n getConfigForLocale(localeCode)\n {\n if (!this.locales.hasOwnProperty(localeCode))\n {\n throw Error(`Locale code is not valid for this config: ${localeCode}`);\n }\n return this.locales[localeCode];\n }\n}\n\nexport default LocaleFormatConfig;\n","import LocaleFormatSchema from './LocaleFormatSchema';\nimport LocaleFormatConfig from './LocaleFormatConfig';\n\nconst LOCALE_FORMAT_VERSION = '20230914-1805';\n\nclass LocaleFormat\n{\n constructor()\n {\n this.version = LOCALE_FORMAT_VERSION;\n\n this.config = new LocaleFormatConfig();\n\n this.locale = 'en_GB';\n this.thousandsSeparator = ',';\n this.decimalPoint = '.';\n this.formatOptions = {};\n\n if (window.ADVFN.LOCALE)\n {\n this.setLocale(window.ADVFN.LOCALE);\n }\n }\n\n /**\n * @returns {string}\n */\n getVersion()\n {\n return this.version;\n }\n\n /**\n * @deprecated\n * @returns {boolean}\n */\n isReady()\n {\n return true;\n }\n\n /** @deprecated */\n init() { }\n\n /** @deprecated */\n addListener() { }\n\n /**\n * @returns {string}\n */\n getDecimalPoint()\n {\n return this.decimalPoint;\n }\n\n /**\n * @returns {string}\n */\n getThousandsSeparator()\n {\n return this.thousandsSeparator;\n }\n\n /**\n * @param {string} locale\n * @returns {this}\n */\n setLocale(locale)\n {\n this.locale = locale;\n\n const config = this.config.getConfigForLocale(locale);\n\n this.thousandsSeparator = config.thousandsSeparator;\n this.decimalPoint = config.decimalPoint;\n\n return this;\n }\n\n /**\n * @param {object} formatOptions\n * @returns {this}\n * @private\n */\n _setFormatOptions(formatOptions)\n {\n this.formatOptions = formatOptions;\n return this;\n }\n\n /**\n * @param {number|string} value\n * @param {number} decimalPlaces\n * @param {number} minDp\n * @param {string} instrumentType\n * @returns {string}\n * @private\n */\n _numberFormat(value, decimalPlaces, minDp, instrumentType)\n {\n const number = Number(value);\n const formattedNumber = (typeof decimalPlaces !== 'undefined')\n ? number.toFixed(decimalPlaces)\n : number.toString();\n const numberItems = formattedNumber.split('.');\n numberItems[0] = numberItems[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n let formatted = numberItems.join(this.decimalPoint);\n\n if (decimalPlaces > minDp && formatted.substr(-1) === '0' && instrumentType !== 'CX')\n {\n formatted = this._removeTrailingZeros(formatted, minDp);\n }\n\n return formatted;\n }\n\n /**\n * Removes any trailing zeros from a number based on the minimum number of decimal places.\n * @param {string} number\n * @param {number} minDp\n * @returns {string}\n * @private\n */\n _removeTrailingZeros(number, minDp)\n {\n const decimalParts = number.split(this.decimalPoint);\n if (decimalParts[1].length > minDp && decimalParts[1].substr(-1) === '0')\n {\n while (decimalParts[1].length > minDp)\n {\n if (decimalParts[1].substr(-1) !== '0') break;\n\n if (decimalParts[1].substr(-1) === '0')\n {\n decimalParts[1] = decimalParts[1].slice(0, -1);\n }\n }\n number = decimalParts.join(this.decimalPoint);\n }\n return number;\n }\n\n /**\n * @param {number|string} value\n * @param {string} instrumentType\n * @returns {string}\n * @private\n */\n _format(value, instrumentType)\n {\n value = this._cleanValue(value);\n\n if (value === null || Number.isNaN(value))\n {\n return null;\n }\n\n const valueStr = `${value}`;\n\n const maxDp = this.formatOptions.max_dp;\n const minDp = this.formatOptions.min_dp;\n\n let decimals = minDp;\n if (maxDp !== minDp)\n {\n const numDecimals = this.getDecimalPlaces(valueStr);\n if (numDecimals > 0)\n {\n if (numDecimals >= minDp)\n {\n decimals = numDecimals;\n }\n if (decimals > maxDp)\n {\n decimals = maxDp;\n }\n }\n else\n {\n decimals = 0;\n if (minDp > 0)\n {\n decimals = minDp;\n }\n }\n }\n\n if (typeof instrumentType === 'undefined')\n {\n instrumentType = 'CS';\n }\n\n return this._numberFormat(value, decimals, minDp, instrumentType);\n }\n\n /**\n * @param {number|string} value\n * @returns {number}\n */\n getDecimalPlaces(value)\n {\n const match = value.match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n if (!match) { return 0; }\n return Math.max(\n 0,\n // Number of digits right of decimal point.\n (match[1] ? match[1].length : 0)\n // Adjust for scientific notation.\n - (match[2] ? +match[2] : 0),\n );\n }\n\n /**\n * @param {string} value\n * @param {string} currency\n * @returns {string}\n * @private\n */\n _formatWithCurrency(value, currency)\n {\n let currencySymbol = currency;\n switch (currency)\n {\n case 'EUR':\n currencySymbol = '€';\n break;\n case 'GBX':\n currencySymbol = 'p';\n break;\n case 'GBP':\n currencySymbol = '£';\n break;\n case 'JPY':\n currencySymbol = '¥';\n break;\n case 'USD':\n currencySymbol = '$';\n break;\n case 'BRL':\n currencySymbol = 'R$';\n break;\n }\n\n switch (currency)\n {\n case 'EUR':\n return `${value} ${currencySymbol}`; // e.g. \"35.00 €\"\n\n case 'GBX':\n return value + currencySymbol; // e.g. \"208.25p\"\n\n case 'JPY':\n return `${currencySymbol} ${value}`; // e.g. \"¥ 35\"\n\n case 'percent':\n return `${value}%`; // e.g 35%\n\n case 'percent_with_parenthesis':\n return `(${value}%)`; // e.g (35%)\n\n default:\n return `${currencySymbol} ${value}`; // e.g. \"$ 35.00\"\n }\n }\n\n /**\n * @param {number|string} value\n * @returns {number}\n * @private\n */\n _cleanValue(value)\n {\n if (typeof value === 'string')\n {\n value = value.trim();\n value = value.replace(/,|%/g, '');\n if (Number.isNaN(value))\n {\n return null;\n }\n }\n return parseFloat(value);\n }\n\n /**\n * @param {number|string} value\n * @param {string} instrumentType\n * @param {SchemaType} schemaType\n * @param {string} currency\n * @param {null|boolean} showCurrency\n * @returns {string}\n */\n formatForInstrumentType(value, instrumentType, schemaType, currency, showCurrency)\n {\n if (schemaType === 'abbreviated')\n {\n return this._formatAbbreviatedValue(value);\n }\n\n const schema = this.getSchemaForInstrumentType(instrumentType);\n if (Number.isNaN(parseFloat(value)))\n {\n if (schemaType === 'price')\n {\n return '';\n }\n return '0';\n }\n if (typeof schemaType !== 'undefined')\n {\n schema.setSchemaType(schemaType);\n }\n if (typeof currency !== 'undefined')\n {\n schema.setCurrency(currency);\n }\n this._setFormatOptions(schema.getFormatForValue(value));\n\n const formattedValue = this._format(value, instrumentType);\n if (showCurrency === true)\n {\n return this._formatWithCurrency(formattedValue, currency);\n }\n return formattedValue;\n }\n\n /**\n * @param {string} instrumentType\n * @returns {LocaleFormatSchema}\n */\n getSchemaForInstrumentType(instrumentType)\n {\n if (this.config.hasInstrumentType(instrumentType) === false)\n {\n return new LocaleFormatSchema(this.config.getSchemasForInstrumentType('DEFAULT'));\n }\n return new LocaleFormatSchema(this.config.getSchemasForInstrumentType(instrumentType));\n }\n\n /**\n * @param {string} value\n */\n _formatAbbreviatedValue(value)\n {\n let clean = this._cleanValue(value);\n let divisor = 1;\n let postfix = '';\n let isNegative = false;\n\n if (clean < 0)\n {\n isNegative = true;\n clean = Math.abs(clean);\n }\n\n if (clean >= 1000000000000)\n {\n divisor = 1000000000000;\n postfix = 'T';\n }\n else if (clean >= 1000000000)\n {\n divisor = 1000000000;\n postfix = 'B';\n }\n else if (clean >= 1000000)\n {\n divisor = 1000000;\n postfix = 'M';\n }\n else if (clean > 1000)\n {\n divisor = 1000;\n postfix = 'k';\n }\n\n const prevMaxDp = this.formatOptions.max_dp;\n const prevMinDp = this.formatOptions.min_dp;\n\n this.formatOptions.max_dp = 1;\n this.formatOptions.min_dp = 0;\n\n const result = (isNegative ? '-' : '') + this._format(clean / divisor) + postfix;\n\n this.formatOptions.max_dp = prevMaxDp;\n this.formatOptions.min_dp = prevMinDp;\n\n return result;\n }\n}\n\nexport default LocaleFormat;\n","import LocaleFormat from './lib/LocaleFormat';\n\nwindow.LocaleFormat = new LocaleFormat();\n"],"names":["__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","const","DEFAULT_CURRENCY","LocaleFormatSchema","schema","this","type","currency","setSchemaType","schemaType","hasOwnProperty","Error","setCurrency","getCases","getFormatForValue","value","format","cases","parseFloat","Object","keys","every","key","conditions","evaluateConditionsForValue","Math","abs","let","valid","length","condition","testValue","LocaleFormatConfig","locales","instrumentTypes","_loadInstrumentTypes","hasInstrumentType","instrumentType","getSchemasForInstrumentType","schemas","CS","CX","DE","FX","IX","OTC","PR","getLocales","getConfigForLocale","localeCode","LocaleFormat","version","config","locale","thousandsSeparator","decimalPoint","formatOptions","window","ADVFN","LOCALE","setLocale","getVersion","isReady","init","addListener","getDecimalPoint","getThousandsSeparator","_setFormatOptions","_numberFormat","decimalPlaces","minDp","number","Number","numberItems","toFixed","toString","split","replace","formatted","join","substr","_removeTrailingZeros","decimalParts","slice","_format","_cleanValue","isNaN","valueStr","maxDp","max_dp","min_dp","decimals","numDecimals","getDecimalPlaces","match","max","_formatWithCurrency","currencySymbol","trim","formatForInstrumentType","showCurrency","_formatAbbreviatedValue","getSchemaForInstrumentType","formattedValue","clean","divisor","postfix","isNegative","prevMaxDp","prevMinDp","result"],"sourceRoot":""}