{"version":3,"file":"ngx-localized-numbers.mjs","sources":["../../../src/locales.config.ts","../../../src/localized-numbers.service.ts","../../../src/format-currency.pipe.ts","../../../src/format-number.pipe.ts","../../../src/localized-numbers.module.ts"],"sourcesContent":["import { ConfigurationModel } from \"./config.model\";\n\nexport const NGX_NUMBERS_LOCALES: Map<string, ConfigurationModel> = new Map()\n    .set(\"cs_CZ\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"Kč\"\n    })\n    .set(\"da_DK\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"kr.\"\n    })\n    .set(\"de_DE\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"de_AT\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"de_CH\", {\n        thousandSeparator: \"’\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"CHF\"\n    })\n    .set(\"de_LU\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"el_GR\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"en_AU\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"$\"\n    })\n    .set(\"en_CA\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"CAD\"\n    })\n    .set(\"en_GB\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"£\"\n    })\n    .set(\"en_HK\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: false,\n        currency: \"HK$\"\n    })\n    .set(\"en_IE\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"en_IN\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: false,\n        currency: \"₹\"\n    })\n    .set(\"en_MY\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: false,\n        currency: \"MYR\"\n    })\n    .set(\"en_NZ\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"$\"\n    })\n    .set(\"en_TH\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"฿\"\n    })\n    .set(\"en_US\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"$\"\n    })\n    .set(\"en_ZA\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: false,\n        currency: \"ZAR\"\n    })\n    .set(\"es_AR\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"$\"\n    })\n    .set(\"es_CO\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"$\"\n    })\n    .set(\"es_ES\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"fi_FI\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"fr_BE\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"fr_CA\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"CAD\"\n    })\n    .set(\"fr_CH\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"CHF\"\n    })\n    .set(\"fr_FR\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"fr_LU\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"ga_IE\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"hu_HU\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"Ft.\"\n    })\n    .set(\"is_IS\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"ISK\"\n    })\n    .set(\"it_CH\", {\n        thousandSeparator: \"’\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"CHF\"\n    })\n    .set(\"it_IT\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"ja_JP\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"￥\"\n    })\n    .set(\"ko_KR\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"₩\"\n    })\n    .set(\"nl_BE\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"nl_NL\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"no_NO\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"kr\"\n    })\n    .set(\"pl_PL\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"zł\"\n    })\n    .set(\"pt_PT\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"pt_BR\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"R$\"\n    })\n    .set(\"ro_RO\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"RON\"\n    })\n    .set(\"ru_RU\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"RUB\"\n    })\n    .set(\"sk_SK\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"€\"\n    })\n    .set(\"sv_SE\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"kr\"\n    })\n    .set(\"th_TH\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"฿\"\n    })\n    .set(\"tr_TR\", {\n        thousandSeparator: \".\",\n        decimalSeparator: \",\",\n        whitespaceBeforeCurrency: true,\n        currency: \"₺\"\n    })\n    .set(\"zh_CN\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"CNY\"\n    })\n    .set(\"zh_HK\", {\n        thousandSeparator: \",\",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: false,\n        currency: \"HK$\"\n    })\n    .set(\"zh_TW\", {\n        thousandSeparator: \" \",\n        decimalSeparator: \".\",\n        whitespaceBeforeCurrency: true,\n        currency: \"TWS\"\n    });\n","import { Injectable } from \"@angular/core\";\n\nimport { ConfigurationModel } from \"./config.model\";\nimport { NGX_NUMBERS_LOCALES } from \"./locales.config\";\n\n@Injectable()\nexport class NgxLocalizedNumbersService {\n    private DEFAULT_LOCALE: string = \"en_GB\";\n\n    private locale: string;\n\n    private definedLocales: Map<string, ConfigurationModel> = new Map();\n\n    constructor() {\n        this.definedLocales = NGX_NUMBERS_LOCALES;\n    }\n\n    setLocale(locale: string): void {\n        if (!this.definedLocales.get(locale)) {\n            //eslint-disable-next-line no-console\n            console.warn(\"ngx-localized-numbers: locale '\" + locale + \"' does not exist\");\n        }\n        this.locale = locale;\n    }\n\n    getLocale(): string {\n        if (!this.locale) {\n            //eslint-disable-next-line no-console\n            console.warn(\"ngx-localized-numbers: no locale was defined, return default\");\n\n            return this.DEFAULT_LOCALE;\n        }\n\n        return this.locale;\n    }\n\n    addLocale(locale: string, config: ConfigurationModel): void {\n        this.definedLocales.set(locale, config);\n    }\n\n    getCurrentLocaleDefinition(): ConfigurationModel {\n        return this.definedLocales.get(this.getLocale());\n    }\n\n    formatNumber(value: number, decimals: number): string {\n        const strValue: string = \"\" + this.round(value, decimals);\n        const numberParts: string[] = strValue.split(\".\");\n        let beforeComma: string = numberParts[0];\n        let afterComma: string = numberParts.length > 1 ? \".\" + numberParts[1] : \"\";\n        const rgx: any = /(\\d+)(\\d{3})/;\n\n        while (rgx.test(beforeComma)) {\n            beforeComma = beforeComma.replace(rgx, \"$1\" + this.getCurrentLocaleDefinition().thousandSeparator + \"$2\");\n        }\n\n        let decimalSeparator: string = \"\";\n\n        if (decimals > 0) {\n            decimalSeparator = this.getCurrentLocaleDefinition().decimalSeparator;\n        }\n\n        // strip the dot in x2 there is one\n        if (afterComma.indexOf(\".\") > -1) {\n            afterComma = afterComma.replace(\".\", \"\");\n        }\n\n        while (afterComma.length < decimals) {\n            afterComma += \"0\";\n        }\n\n        return beforeComma + decimalSeparator + afterComma;\n    }\n\n    formatCurrency(value: string): string {\n        let output: string = value;\n\n        if (this.getCurrentLocaleDefinition().whitespaceBeforeCurrency) {\n            output += \" \";\n        }\n        output += this.getCurrentLocaleDefinition().currency;\n\n        return output;\n    }\n\n    // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round#Example:_Decimal_rounding\n    round(value: number, prec: number): number {\n        if (typeof prec === \"undefined\" || +prec === 0) {\n            return Math.round(value);\n        }\n\n        value = +value;\n        prec = +prec;\n\n        if (isNaN(value) || !(typeof prec === \"number\" && prec % 1 === 0)) {\n            return NaN;\n        }\n\n        // Shift\n        let shiftValues: string[] = value.toString().split(\"e\");\n\n        value = Math.round(+(shiftValues[0] + \"e\" + (shiftValues[1] ? +shiftValues[1] + prec : prec)));\n\n        // Shift back\n        shiftValues = value.toString().split(\"e\");\n\n        return +(shiftValues[0] + \"e\" + (shiftValues[1] ? +shiftValues[1] - prec : -prec));\n    }\n}\n","import { Injectable, Pipe, PipeTransform } from \"@angular/core\";\n\nimport { NgxLocalizedNumbersService } from \"./localized-numbers.service\";\n\n@Pipe({\n    name: \"formatCurrency\"\n})\n@Injectable()\nexport class LocalizationFormatCurrencyPipe implements PipeTransform {\n    constructor(private numberService: NgxLocalizedNumbersService) {}\n    transform(value: any, _args: any[]): any {\n        return this.numberService.formatCurrency(value);\n    }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\nimport { NgxLocalizedNumbersService } from \"./localized-numbers.service\";\n\n@Pipe({\n    name: \"formatNumber\"\n})\nexport class LocalizationFormatNumberPipe implements PipeTransform {\n    constructor(private numberService: NgxLocalizedNumbersService) {}\n\n    transform(value: any, decimals: number): any {\n        return this.numberService.formatNumber(value, decimals);\n    }\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\n\nimport { NgxLocalizedNumbersService } from \"./localized-numbers.service\";\nimport { LocalizationFormatCurrencyPipe } from \"./format-currency.pipe\";\nimport { LocalizationFormatNumberPipe } from \"./format-number.pipe\";\n\nconst PIPE_DECLARATIONS: any = [LocalizationFormatCurrencyPipe, LocalizationFormatNumberPipe];\n\n@NgModule({\n    imports: [],\n    exports: [PIPE_DECLARATIONS],\n    declarations: [PIPE_DECLARATIONS],\n    providers: []\n})\nexport class NgxLocalizedNumbers {\n    static forRoot(): ModuleWithProviders<NgxLocalizedNumbers> {\n        return {\n            ngModule: NgxLocalizedNumbers,\n            providers: [NgxLocalizedNumbersService]\n        };\n    }\n}\n"],"names":["i1.NgxLocalizedNumbersService"],"mappings":"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"}