{"version":3,"file":"angular-l10n.mjs","sources":["../../../projects/angular-l10n/src/lib/models/l10n-config.ts","../../../projects/angular-l10n/src/lib/models/l10n-error.ts","../../../projects/angular-l10n/src/lib/models/utils.ts","../../../projects/angular-l10n/src/lib/services/l10n-cache.ts","../../../projects/angular-l10n/src/lib/services/l10n-storage.ts","../../../projects/angular-l10n/src/lib/services/l10n-locale-resolver.ts","../../../projects/angular-l10n/src/lib/services/l10n-translation-loader.ts","../../../projects/angular-l10n/src/lib/services/l10n-translation-fallback.ts","../../../projects/angular-l10n/src/lib/services/l10n-translation-handler.ts","../../../projects/angular-l10n/src/lib/services/l10n-missing-translation-handler.ts","../../../projects/angular-l10n/src/lib/services/l10n-translation.service.ts","../../../projects/angular-l10n/src/lib/models/l10n-async-pipe.ts","../../../projects/angular-l10n/src/lib/models/bfs.ts","../../../projects/angular-l10n/src/lib/models/l10n-directive.ts","../../../projects/angular-l10n/src/lib/functions/resolveL10n.ts","../../../projects/angular-l10n/src/lib/services/l10n-loader.ts","../../../projects/angular-l10n/src/lib/services/l10n-intl.service.ts","../../../projects/angular-l10n/src/lib/services/l10n-validation.ts","../../../projects/angular-l10n/src/lib/functions/initL10n.ts","../../../projects/angular-l10n/src/lib/functions/provideL10n.ts","../../../projects/angular-l10n/src/lib/pipes/l10n-translate.pipe.ts","../../../projects/angular-l10n/src/lib/directives/l10n-translate.directive.ts","../../../projects/angular-l10n/src/lib/modules/l10n-translation.module.ts","../../../projects/angular-l10n/src/lib/pipes/l10n-date.pipe.ts","../../../projects/angular-l10n/src/lib/pipes/l10n-number.pipe.ts","../../../projects/angular-l10n/src/lib/pipes/l10n-time-ago.pipe.ts","../../../projects/angular-l10n/src/lib/pipes/l10n-plural.pipe.ts","../../../projects/angular-l10n/src/lib/pipes/l10n-display-names.pipe.ts","../../../projects/angular-l10n/src/lib/directives/l10n-date.directive.ts","../../../projects/angular-l10n/src/lib/directives/l10n-number.directive.ts","../../../projects/angular-l10n/src/lib/directives/l10n-time-ago.directive.ts","../../../projects/angular-l10n/src/lib/directives/l10n-plural.directive.ts","../../../projects/angular-l10n/src/lib/directives/l10n-display-names.directive.ts","../../../projects/angular-l10n/src/lib/modules/l10n-intl.module.ts","../../../projects/angular-l10n/src/lib/directives/l10n-validate-number.directive.ts","../../../projects/angular-l10n/src/lib/directives/l10n-validate-date.directive.ts","../../../projects/angular-l10n/src/lib/modules/l10n-validation.module.ts","../../../projects/angular-l10n/src/public-api.ts","../../../projects/angular-l10n/src/angular-l10n.ts"],"sourcesContent":["import { InjectionToken, Type } from '@angular/core';\r\n\r\nimport { L10nFormat, L10nProvider, L10nLocale, L10nSchema } from './types';\r\nimport { L10nStorage } from '../services/l10n-storage';\r\nimport { L10nLocaleResolver } from '../services/l10n-locale-resolver';\r\nimport { L10nTranslationFallback } from '../services/l10n-translation-fallback';\r\nimport { L10nTranslationLoader } from '../services/l10n-translation-loader';\r\nimport { L10nTranslationHandler } from '../services/l10n-translation-handler';\r\nimport { L10nMissingTranslationHandler } from '../services/l10n-missing-translation-handler';\r\nimport { L10nValidation } from '../services/l10n-validation';\r\nimport { L10nLoader } from '../services/l10n-loader';\r\n\r\nexport interface L10nConfig {\r\n    /**\r\n     * Format of the translation language. Pattern: 'language[-script][-region]'\r\n     * E.g.\r\n     * format: 'language-region';\r\n     */\r\n    format: L10nFormat;\r\n    /**\r\n     * The providers of the translations data.\r\n     */\r\n    providers: L10nProvider[];\r\n    /**\r\n     * Translation fallback.\r\n     */\r\n    fallback?: boolean;\r\n    /**\r\n     * Caching for providers.\r\n     */\r\n    cache?: boolean;\r\n    /**\r\n     * Sets key separator.\r\n     */\r\n    keySeparator: string;\r\n    /**\r\n     * Defines the default locale to be used.\r\n     * E.g.\r\n     * defaultLocale: { language: 'en-US', currency: 'USD };\r\n     */\r\n    defaultLocale: L10nLocale;\r\n    /**\r\n     * Provides the schema of the supported locales.\r\n     */\r\n    schema: L10nSchema[];\r\n}\r\n\r\n/**\r\n * L10n configuration token.\r\n */\r\nexport const L10N_CONFIG = new InjectionToken<L10nConfig>('L10N_CONFIG');\r\n\r\n/**\r\n * L10n locale token.\r\n */\r\nexport const L10N_LOCALE = new InjectionToken<L10nLocale>('L10N_LOCALE');\r\n\r\nexport interface L10nTranslationToken {\r\n    /**\r\n     * Defines the storage to be used.\r\n     */\r\n    storage?: Type<L10nStorage>;\r\n    /**\r\n     * Defines the locale to be used.\r\n     */\r\n    localeResolver?: Type<L10nLocaleResolver>;\r\n    /**\r\n     * Defines the translation fallback to be used.\r\n     */\r\n    translationFallback?: Type<L10nTranslationFallback>;\r\n    /**\r\n     * Defines the translation loader to be used.\r\n     */\r\n    translationLoader?: Type<L10nTranslationLoader>;\r\n    /**\r\n     * Defines the translation handler to be used.\r\n     */\r\n    translationHandler?: Type<L10nTranslationHandler>;\r\n    /**\r\n     * Defines the missing translation handler to be used.\r\n     */\r\n    missingTranslationHandler?: Type<L10nMissingTranslationHandler>;\r\n    /**\r\n     * Defines the loader to be used.\r\n     */\r\n    loader?: Type<L10nLoader>;\r\n}\r\n\r\nexport interface L10nValidationToken {\r\n    /**\r\n     * Defines the validation service to be used.\r\n     */\r\n    validation?: Type<L10nValidation>;\r\n}\r\n","import { Type } from '@angular/core';\r\n\r\nexport function l10nError(type: Type<any> | any, value: string): Error {\r\n    return new Error(`angular-l10n (${type.name}): ${value}`);\r\n}\r\n","import { L10nFormat, L10nSchema } from './types';\r\nimport { l10nError } from './l10n-error';\r\n\r\nexport function validateLanguage(language: string): boolean {\r\n    const regExp = new RegExp(/^([a-z]{2,3})(\\-[A-Z][a-z]{3})?(\\-[A-Z]{2})?(-u.+)?$/);\r\n    return regExp.test(language);\r\n}\r\n\r\nexport function formatLanguage(language: string, format: L10nFormat): string {\r\n    if (language == null || language === '') return '';\r\n    if (!validateLanguage(language)) throw l10nError(formatLanguage, 'Invalid language');\r\n\r\n    const [, LANGUAGE = '', SCRIPT = '', REGION = ''] = language.match(/^([a-z]{2,3})(\\-[A-Z][a-z]{3})?(\\-[A-Z]{2})?/) || [];\r\n    switch (format) {\r\n        case 'language':\r\n            return LANGUAGE;\r\n        case 'language-script':\r\n            return LANGUAGE + SCRIPT;\r\n        case 'language-region':\r\n            return LANGUAGE + REGION;\r\n        case 'language-script-region':\r\n            return LANGUAGE + SCRIPT + REGION;\r\n    }\r\n}\r\n\r\nexport function parseLanguage(language: string) {\r\n    const groups = language.match(/^([a-z]{2,3})(\\-([A-Z][a-z]{3}))?(\\-([A-Z]{2}))?(-u.+)?$/);\r\n    if (groups == null) throw l10nError(parseLanguage, 'Invalid language');\r\n\r\n    return {\r\n        language: groups[1],\r\n        script: groups[3],\r\n        region: groups[5],\r\n        extension: groups[6]\r\n    };\r\n}\r\n\r\nexport function getBrowserLanguage(format: L10nFormat): string | null {\r\n    let browserLanguage = null;\r\n    if (typeof navigator !== 'undefined' && navigator.language) {\r\n        switch (format) {\r\n            case 'language-region':\r\n            case 'language-script-region':\r\n                browserLanguage = navigator.language;\r\n                break;\r\n            default:\r\n                browserLanguage = navigator.language.split('-')[0];\r\n        }\r\n    }\r\n    return browserLanguage;\r\n}\r\n\r\nexport function getSchema(schema: L10nSchema[], language: string, format: L10nFormat): L10nSchema | undefined {\r\n    const element = schema.find(item => formatLanguage(item.locale.language, format) === language);\r\n    return element;\r\n}\r\n\r\nexport function getValue(key: string, data: { [key: string]: any }, keySeparator: string): string | any | null {\r\n    if (data) {\r\n        if (keySeparator) {\r\n            return key.split(keySeparator).reduce((acc, cur) => (acc && acc[cur]) != null ? acc[cur] : null, data);\r\n        }\r\n        return data[key] != null ? data[key] : null;\r\n    }\r\n    return null;\r\n}\r\n\r\nexport function handleParams(value: string, params: any): string {\r\n    const replacedValue = value.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (substring: string, parsedKey: string) => {\r\n        const replacer = params[parsedKey];\r\n        return replacer !== undefined ? replacer : substring;\r\n    });\r\n    return replacedValue;\r\n}\r\n\r\nexport function mergeDeep(target: { [key: string]: any }, source: { [key: string]: any }): any {\r\n    const output = Object.assign({}, target);\r\n\r\n    if (isObject(target) && isObject(source)) {\r\n        Object.keys(source).forEach((key) => {\r\n            if (isObject(source[key])) {\r\n                if (!(key in target)) {\r\n                    Object.assign(output, { [key]: source[key] });\r\n                } else {\r\n                    output[key] = mergeDeep(target[key], source[key]);\r\n                }\r\n            } else {\r\n                Object.assign(output, { [key]: source[key] });\r\n            }\r\n        });\r\n    }\r\n\r\n    return output;\r\n}\r\n\r\nexport function toNumber(value: any): number {\r\n    const parsedValue = typeof value === 'string' && !isNaN(+value - parseFloat(value)) ? +value : value;\r\n    return parsedValue;\r\n}\r\n\r\nexport function toDate(value: any): Date {\r\n    if (isDate(value)) {\r\n        return value;\r\n    }\r\n\r\n    if (typeof value === 'number' && !isNaN(value)) {\r\n        return new Date(value);\r\n    }\r\n    if (typeof value === 'string') {\r\n        value = value.trim();\r\n        if (!isNaN(value - parseFloat(value))) {\r\n            return new Date(parseFloat(value));\r\n        }\r\n        if (/^(\\d{4}-\\d{1,2}-\\d{1,2})$/.test(value)) {\r\n            const [y, m, d] = value.split('-').map((val: string) => +val);\r\n            return new Date(y, m - 1, d);\r\n        }\r\n        const match = value.match(/^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/);\r\n        if (match) {\r\n            return isoStringToDate(match);\r\n        }\r\n    }\r\n\r\n    const date = new Date(value as any);\r\n    if (!isDate(date)) {\r\n        throw l10nError(toDate, 'Invalid date');\r\n    }\r\n    return date;\r\n}\r\n\r\nexport const PARSE_DATE_STYLE: { [format: string]: any } = {\r\n    full: { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' },\r\n    long: { year: 'numeric', month: 'long', day: 'numeric' },\r\n    medium: { year: 'numeric', month: 'short', day: 'numeric' },\r\n    short: { year: '2-digit', month: 'numeric', day: 'numeric' }\r\n};\r\n\r\nexport const PARSE_TIME_STYLE: { [format: string]: any } = {\r\n    full: { hour: 'numeric', minute: 'numeric', second: 'numeric', timeZoneName: 'long' },\r\n    long: { hour: 'numeric', minute: 'numeric', second: 'numeric', timeZoneName: 'short' },\r\n    medium: { hour: 'numeric', minute: 'numeric', second: 'numeric' },\r\n    short: { hour: 'numeric', minute: 'numeric' }\r\n};\r\n\r\nexport function parseDigits(digits: string) {\r\n    const groups = digits.match(/^(\\d+)?\\.((\\d+)(\\-(\\d+))?)?$/);\r\n    if (groups == null) throw l10nError(parseDigits, 'Invalid digits');\r\n\r\n    return {\r\n        minimumIntegerDigits: groups[1] ? parseInt(groups[1]) : undefined,\r\n        minimumFractionDigits: groups[3] ? parseInt(groups[3]) : undefined,\r\n        maximumFractionDigits: groups[5] ? parseInt(groups[5]) : undefined,\r\n    };\r\n}\r\n\r\nfunction isObject(item: any): boolean {\r\n    return typeof item === 'object' && !Array.isArray(item);\r\n}\r\n\r\nfunction isDate(value: any): value is Date {\r\n    return value instanceof Date && !isNaN(value.valueOf());\r\n}\r\n\r\n/**\r\n * Converts a date in ISO 8601 to a Date.\r\n */\r\nfunction isoStringToDate(match: RegExpMatchArray): Date {\r\n    const date = new Date(0);\r\n    let tzHour = 0;\r\n    let tzMin = 0;\r\n    const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\r\n    const timeSetter = match[8] ? date.setUTCHours : date.setHours;\r\n    if (match[9]) {\r\n        tzHour = Number(match[9] + match[10]);\r\n        tzMin = Number(match[9] + match[11]);\r\n    }\r\n    dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\r\n    const h = Number(match[4] || 0) - tzHour;\r\n    const m = Number(match[5] || 0) - tzMin;\r\n    const s = Number(match[6] || 0);\r\n    const ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);\r\n    timeSetter.call(date, h, m, s, ms);\r\n    return date;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { shareReplay } from 'rxjs/operators';\r\n\r\n@Injectable() export class L10nCache {\r\n\r\n    private cache: { [key: string]: Observable<any> } = {};\r\n\r\n    public read(key: string, request: Observable<any>): Observable<any> {\r\n        if (this.cache[key]) return this.cache[key];\r\n\r\n        const response = request.pipe(\r\n            shareReplay(1)\r\n        );\r\n\r\n        this.cache[key] = response;\r\n        return response;\r\n    }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { L10nLocale } from '../models/types';\r\n\r\n/**\r\n * Implement this class-interface to create a storage for the locale.\r\n */\r\n@Injectable() export abstract class L10nStorage {\r\n\r\n    /**\r\n     * This method must contain the logic to read the storage.\r\n     * @return A promise with the value of the locale\r\n     */\r\n    public abstract read(): Promise<L10nLocale | null>;\r\n\r\n    /**\r\n     * This method must contain the logic to write the storage.\r\n     * @param locale The current locale\r\n     */\r\n    public abstract write(locale: L10nLocale): Promise<void>;\r\n\r\n}\r\n\r\n@Injectable() export class L10nDefaultStorage implements L10nStorage {\r\n\r\n    public async read(): Promise<L10nLocale | null> {\r\n        return Promise.resolve(null);\r\n    }\r\n\r\n    public async write(locale: L10nLocale): Promise<void> { }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\n\r\nimport { L10N_CONFIG, L10nConfig } from '../models/l10n-config';\r\nimport { getBrowserLanguage, getSchema } from '../models/utils';\r\nimport { L10nLocale } from '../models/types';\r\n\r\n/**\r\n * Implement this class-interface to resolve the locale.\r\n */\r\n@Injectable() export abstract class L10nLocaleResolver {\r\n\r\n    /**\r\n     * This method must contain the logic to get the locale.\r\n     * @return The locale\r\n     */\r\n    public abstract get(): Promise<L10nLocale | null>;\r\n\r\n}\r\n\r\n@Injectable() export class L10nDefaultLocaleResolver implements L10nLocaleResolver {\r\n\r\n    constructor(@Inject(L10N_CONFIG) private config: L10nConfig) { }\r\n\r\n    public async get(): Promise<L10nLocale | null> {\r\n        const browserLanguage = getBrowserLanguage(this.config.format);\r\n        if (browserLanguage) {\r\n            const schema = getSchema(this.config.schema, browserLanguage, this.config.format);\r\n            if (schema) {\r\n                return Promise.resolve(schema.locale);\r\n            }\r\n        }\r\n        return Promise.resolve(null);\r\n    }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, of, throwError } from 'rxjs';\r\n\r\nimport { L10nProvider } from '../models/types';\r\nimport { l10nError } from '../models/l10n-error';\r\n\r\n/**\r\n * Implement this class-interface to create a loader of translation data.\r\n */\r\n@Injectable() export abstract class L10nTranslationLoader {\r\n\r\n    /**\r\n     * This method must contain the logic to get translation data.\r\n     * @param language The current language\r\n     * @param provider The provider of the translations data\r\n     * @return An object of translation data for the language: {key: value}\r\n     */\r\n    public abstract get(language: string, provider: L10nProvider): Observable<{ [key: string]: any }>;\r\n\r\n}\r\n\r\n@Injectable() export class L10nDefaultTranslationLoader implements L10nTranslationLoader {\r\n\r\n    public get(language: string, provider: L10nProvider): Observable<{ [key: string]: any }> {\r\n        return provider.asset[language] ?\r\n            of(provider.asset[language]) :\r\n            throwError(() => l10nError(L10nDefaultTranslationLoader, 'Asset not found'));\r\n    }\r\n\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { L10nProvider } from '../models/types';\r\nimport { L10N_CONFIG, L10nConfig } from '../models/l10n-config';\r\nimport { L10nCache } from './l10n-cache';\r\nimport { L10nTranslationLoader } from './l10n-translation-loader';\r\n\r\n/**\r\n * Implement this class-interface to create a translation fallback.\r\n */\r\n@Injectable() export abstract class L10nTranslationFallback {\r\n\r\n    /**\r\n     * This method must contain the logic to get the ordered loaders.\r\n     * @param language The current language\r\n     * @param provider The provider of the translations data\r\n     * @return An array of loaders\r\n     */\r\n    public abstract get(language: string, provider: L10nProvider): Observable<any>[];\r\n\r\n}\r\n\r\n@Injectable() export class L10nDefaultTranslationFallback implements L10nTranslationFallback {\r\n\r\n    constructor(\r\n        @Inject(L10N_CONFIG) private config: L10nConfig,\r\n        private cache: L10nCache,\r\n        private translationLoader: L10nTranslationLoader\r\n    ) { }\r\n\r\n    /**\r\n     * Translation data will be merged in the following order:\r\n     * 'language'\r\n     * 'language[-script]'\r\n     * 'language[-script][-region]'\r\n     */\r\n    public get(language: string, provider: L10nProvider): Observable<any>[] {\r\n        const loaders: Observable<any>[] = [];\r\n        const keywords = language.match(/-?[a-zA-z]+/g) || [];\r\n        let fallbackLanguage = '';\r\n        for (const keyword of keywords) {\r\n            fallbackLanguage += keyword;\r\n            if (this.config.cache) {\r\n                loaders.push(\r\n                    this.cache.read(`${provider.name}-${fallbackLanguage}`,\r\n                        this.translationLoader.get(fallbackLanguage, provider))\r\n                );\r\n            } else {\r\n                loaders.push(this.translationLoader.get(fallbackLanguage, provider));\r\n            }\r\n        }\r\n        return loaders;\r\n    }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { handleParams } from '../models/utils';\r\n\r\n/**\r\n * Implement this class-interface to create an handler for translated values.\r\n */\r\n@Injectable() export abstract class L10nTranslationHandler {\r\n\r\n    /**\r\n     * This method must contain the logic to parse the translated value.\r\n     * @param key The key that has been requested\r\n     * @param params The parameters passed along with the key\r\n     * @param value The translated value\r\n     * @return The parsed value\r\n     */\r\n    public abstract parseValue(key: string, params: any, value: any): string | any;\r\n\r\n}\r\n\r\n@Injectable() export class L10nDefaultTranslationHandler implements L10nTranslationHandler {\r\n\r\n    public parseValue(key: string, params: any, value: any): string | any {\r\n        if (params) return handleParams(value, params);\r\n        return value;\r\n    }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Implement this class-interface to create an handler for missing values.\r\n */\r\n@Injectable() export abstract class L10nMissingTranslationHandler {\r\n\r\n    /**\r\n     * This method must contain the logic to handle missing values.\r\n     * @param key The key that has been requested\r\n     * @param value Null or empty string\r\n     * @param params Optional parameters contained in the key\r\n     * @return The value\r\n     */\r\n    public abstract handle(key: string, value?: string, params?: any): string | any;\r\n\r\n}\r\n\r\n@Injectable() export class L10nDefaultMissingTranslationHandler implements L10nMissingTranslationHandler {\r\n\r\n    public handle(key: string, value?: string, params?: any): string | any {\r\n        return key;\r\n    }\r\n\r\n}\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { Observable, BehaviorSubject, merge, concat } from 'rxjs';\r\n\r\nimport { L10nLocale, L10nProvider } from '../models/types';\r\nimport { L10N_CONFIG, L10nConfig, L10N_LOCALE } from '../models/l10n-config';\r\nimport { formatLanguage, getSchema, getValue, mergeDeep } from '../models/utils';\r\nimport { L10nCache } from './l10n-cache';\r\nimport { L10nStorage } from './l10n-storage';\r\nimport { L10nLocaleResolver } from './l10n-locale-resolver';\r\nimport { L10nTranslationFallback } from './l10n-translation-fallback';\r\nimport { L10nTranslationLoader } from './l10n-translation-loader';\r\nimport { L10nTranslationHandler } from './l10n-translation-handler';\r\nimport { L10nMissingTranslationHandler } from './l10n-missing-translation-handler';\r\n\r\n@Injectable() export class L10nTranslationService {\r\n\r\n    /**\r\n     * The translation data: {language: {key: value}}\r\n     */\r\n    public data: { [key: string]: any } = {};\r\n\r\n    private translation = new BehaviorSubject<L10nLocale>(this.locale);\r\n\r\n    private error = new BehaviorSubject<any>(null);\r\n\r\n    constructor(\r\n        @Inject(L10N_CONFIG) private config: L10nConfig,\r\n        @Inject(L10N_LOCALE) private locale: L10nLocale,\r\n        private cache: L10nCache,\r\n        private storage: L10nStorage,\r\n        private resolveLocale: L10nLocaleResolver,\r\n        private translationFallback: L10nTranslationFallback,\r\n        private translationLoader: L10nTranslationLoader,\r\n        private translationHandler: L10nTranslationHandler,\r\n        private missingTranslationHandler: L10nMissingTranslationHandler\r\n    ) { }\r\n\r\n    /**\r\n     * Gets the current locale.\r\n     */\r\n    public getLocale(): L10nLocale {\r\n        return this.locale;\r\n    }\r\n\r\n    /**\r\n     * Changes the current locale and load the translation data.\r\n     * @param locale The new locale\r\n     */\r\n    public async setLocale(locale: L10nLocale): Promise<void> {\r\n        await this.loadTranslations(this.config.providers, locale);\r\n    }\r\n\r\n    /**\r\n     * Fired every time the translation data has been loaded. Returns the locale.\r\n     */\r\n    public onChange(): Observable<L10nLocale> {\r\n        return this.translation.asObservable();\r\n    }\r\n\r\n    /**\r\n     * Fired when the translation data could not been loaded. Returns the error.\r\n     */\r\n    public onError(): Observable<any> {\r\n        return this.error.asObservable();\r\n    }\r\n\r\n    /**\r\n     * Translates a key or an array of keys.\r\n     * @param keys The key or an array of keys to be translated\r\n     * @param params Optional parameters contained in the key\r\n     * @param language The current language\r\n     * @return The translated value or an object: {key: value}\r\n     */\r\n    public translate(\r\n        keys: string | string[],\r\n        params?: any,\r\n        language = this.locale.language\r\n    ): string | any {\r\n        language = formatLanguage(language, this.config.format);\r\n\r\n        if (Array.isArray(keys)) {\r\n            const data: { [key: string]: any } = {};\r\n            for (const key of keys) {\r\n                data[key] = this.translate(key, params, language);\r\n            }\r\n            return data;\r\n        }\r\n\r\n        const value = getValue(keys, this.data[language], this.config.keySeparator);\r\n\r\n        return value ? this.translationHandler.parseValue(keys, params, value) : this.missingTranslationHandler.handle(keys, value, params);\r\n    }\r\n\r\n    /**\r\n     * Checks if a translation exists.\r\n     * @param key The key to be tested\r\n     * @param language The current language\r\n     */\r\n    public has(key: string, language = this.locale.language): boolean {\r\n        language = formatLanguage(language, this.config.format);\r\n\r\n        return getValue(key, this.data[language], this.config.keySeparator) !== null;\r\n    }\r\n\r\n    /**\r\n     * Gets the language direction.\r\n     */\r\n    public getLanguageDirection(language = this.locale.language): 'ltr' | 'rtl' | undefined {\r\n        const schema = getSchema(this.config.schema, language, this.config.format);\r\n        return schema ? schema.dir : undefined;\r\n    }\r\n\r\n    /**\r\n     * Gets available languages.\r\n     */\r\n    public getAvailableLanguages(): string[] {\r\n        const languages = this.config.schema.map(item => formatLanguage(item.locale.language, this.config.format));\r\n        return languages;\r\n    }\r\n\r\n    /**\r\n     * Initializes the service\r\n     * @param providers An array of L10nProvider\r\n     */\r\n    public async init(providers: L10nProvider[] = this.config.providers): Promise<void> {\r\n        let locale: L10nLocale | null = null;\r\n\r\n        // Tries to get locale from storage.\r\n        if (locale == null) {\r\n            locale = await this.storage.read();\r\n        }\r\n        // Tries resolved locale.\r\n        if (locale == null) {\r\n            locale = await this.resolveLocale.get();\r\n        }\r\n        // Uses default locale.\r\n        if (locale == null) {\r\n            locale = this.config.defaultLocale;\r\n        }\r\n\r\n        // Loads translation data.\r\n        await this.loadTranslations(providers, locale);\r\n    }\r\n\r\n    /**\r\n     * Can be called at every translation change.\r\n     * @param providers An array of L10nProvider\r\n     * @param locale The current locale\r\n     */\r\n    public async loadTranslations(providers: L10nProvider[] = this.config.providers, locale = this.locale): Promise<void> {\r\n        const language = formatLanguage(locale.language, this.config.format);\r\n\r\n        return new Promise((resolve) => {\r\n            concat(...this.getTranslation(providers, language)).subscribe({\r\n                next: (data) => this.addData(data, language),\r\n                error: (error) => {\r\n                    this.handleError(error);\r\n                    resolve();\r\n                },\r\n                complete: () => {\r\n                    this.releaseTranslation(locale);\r\n                    resolve();\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Can be called to add translation data.\r\n     * @param data The translation data {key: value}\r\n     * @param language The language to add data\r\n     */\r\n    public addData(data: { [key: string]: any }, language: string): void {\r\n        this.data[language] = this.data[language] !== undefined\r\n            ? mergeDeep(this.data[language], data)\r\n            : data;\r\n    }\r\n\r\n    /**\r\n     * Adds providers to configuration\r\n     * @param providers The providers of the translations data\r\n     */\r\n    public addProviders(providers: L10nProvider[]): void {\r\n        providers.forEach(provider => {\r\n            if (!this.config.providers.find(p => p.name === provider.name)) {\r\n                this.config.providers.push(provider);\r\n            }\r\n        });\r\n    }\r\n\r\n    private getTranslation(providers: L10nProvider[], language: string): Observable<any>[] {\r\n        const lazyLoaders: Observable<any>[] = [];\r\n        let loaders: Observable<any>[] = [];\r\n\r\n        for (const provider of providers) {\r\n            if (this.config.fallback) {\r\n                loaders = loaders.concat(this.translationFallback.get(language, provider));\r\n            } else {\r\n                if (this.config.cache) {\r\n                    lazyLoaders.push(\r\n                        this.cache.read(`${provider.name}-${language}`, this.translationLoader.get(language, provider))\r\n                    );\r\n                } else {\r\n                    lazyLoaders.push(this.translationLoader.get(language, provider));\r\n                }\r\n            }\r\n        }\r\n        loaders.push(merge(...lazyLoaders));\r\n\r\n        return loaders;\r\n    }\r\n\r\n    private handleError(error: any): void {\r\n        this.error.next(error);\r\n    }\r\n\r\n    private releaseTranslation(locale: L10nLocale): void {\r\n        Object.assign(this.locale, locale);\r\n        this.translation.next(this.locale);\r\n        this.storage.write(this.locale);\r\n    }\r\n\r\n}\r\n","import { Injectable, OnDestroy, ChangeDetectorRef, inject } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { L10nTranslationService } from '../services/l10n-translation.service';\r\n\r\n@Injectable()\r\nexport class L10nAsyncPipe implements OnDestroy {\r\n\r\n    protected onChanges: Subscription;\r\n\r\n    protected translation = inject(L10nTranslationService);\r\n    protected cdr = inject(ChangeDetectorRef);\r\n\r\n    constructor() {\r\n        this.onChanges = this.translation.onChange().subscribe({\r\n            next: () => this.cdr.markForCheck()\r\n        });\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        if (this.onChanges) this.onChanges.unsubscribe();\r\n    }\r\n\r\n}\r\n","/**\r\n * Breadth First Search (BFS) algorithm for traversing & searching tree data structure of DOM\r\n * explores the neighbor nodes first, before moving to the next level neighbors.\r\n * Time complexity: between O(1) and O(|V|^2).\r\n */\r\nexport function getTargetNode(rootNode: HTMLElement): HTMLElement {\r\n    return walk(rootNode);\r\n}\r\n\r\nconst MAX_DEPTH = 10;\r\n\r\nfunction walk(rootNode: HTMLElement): HTMLElement {\r\n    const queue: HTMLElement[] = [];\r\n\r\n    let iNode: HTMLElement;\r\n    let depth = 0;\r\n    let nodeToDepthIncrease = 1;\r\n\r\n    queue.push(rootNode);\r\n    while (queue.length > 0 && depth <= MAX_DEPTH) {\r\n        iNode = queue.splice(0, 1)[0];\r\n        if (isTargetNode(iNode)) return iNode;\r\n        if (depth < MAX_DEPTH && iNode.childNodes) {\r\n            for (const child of Array.from(iNode.childNodes)) {\r\n                if (isValidNode(child as HTMLElement)) {\r\n                    queue.push(child as HTMLElement);\r\n                }\r\n            }\r\n        }\r\n        if (--nodeToDepthIncrease === 0) {\r\n            depth++;\r\n            nodeToDepthIncrease = queue.length;\r\n        }\r\n    }\r\n    return rootNode;\r\n}\r\n\r\nfunction isTargetNode(node: HTMLElement): boolean {\r\n    return typeof node !== 'undefined' && node.nodeType === 3 && node.nodeValue != null && node.nodeValue.trim() !== '';\r\n}\r\n\r\n/**\r\n * A valid node is not marked for translation.\r\n */\r\nfunction isValidNode(node: HTMLElement): boolean {\r\n    if (typeof node !== 'undefined' && node.nodeType === 1 && node.attributes) {\r\n        for (const attr of Array.from(node.attributes)) {\r\n            if (attr && /^l10n|translate/.test(attr.name)) return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\n","import { Directive, Input, AfterViewInit, OnChanges, OnDestroy, ElementRef, Renderer2, inject, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { getTargetNode } from './bfs';\r\nimport { L10nTranslationService } from '../services/l10n-translation.service';\r\n\r\n@Directive()\r\nexport abstract class L10nDirective implements AfterViewInit, OnChanges, OnDestroy {\r\n\r\n    @Input() public value?: string;\r\n\r\n    @Input() set innerHTML(content: any) {\r\n        // Handle TrustedHTML\r\n        this.content = content.toString();\r\n    }\r\n\r\n    @Input() public language?: string;\r\n\r\n    protected el = inject(ElementRef);\r\n    protected renderer = inject(Renderer2);\r\n    protected translation = inject(L10nTranslationService);\r\n\r\n    private content?: string;\r\n\r\n    private text?: string;\r\n    private attributes: any[] = [];\r\n\r\n    private element?: HTMLElement;\r\n    private renderNode?: HTMLElement;\r\n    private nodeValue?: string;\r\n\r\n    private textObserver?: MutationObserver;\r\n\r\n    private destroy = new Subject<boolean>();\r\n\r\n    public ngAfterViewInit(): void {\r\n        if (this.el && this.el.nativeElement) {\r\n            this.element = this.el.nativeElement;\r\n            this.renderNode = getTargetNode(this.el.nativeElement);\r\n            this.text = this.getText();\r\n            this.attributes = this.getAttributes();\r\n            this.addTextListener();\r\n\r\n            if (this.language) {\r\n                this.replaceText();\r\n                this.replaceAttributes();\r\n            } else {\r\n                this.addTranslationListener();\r\n            }\r\n        }\r\n    }\r\n\r\n    public ngOnChanges(): void {\r\n        if (this.text) {\r\n            if (this.nodeValue == null || this.nodeValue === '') {\r\n                if (this.value) {\r\n                    this.text = this.value;\r\n                } else if (this.content) {\r\n                    this.text = this.content;\r\n                }\r\n            }\r\n            this.replaceText();\r\n        }\r\n        if (this.attributes && this.attributes.length > 0) {\r\n            this.replaceAttributes();\r\n        }\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.destroy.next(true);\r\n        this.removeTextListener();\r\n    }\r\n\r\n    protected abstract getValue(text: string): string;\r\n\r\n    private getText(): string {\r\n        let text = '';\r\n        if (this.element && this.element.childNodes.length > 0) {\r\n            text = this.getNodeValue();\r\n        } else if (this.value) {\r\n            text = this.value;\r\n        } else if (this.content) {\r\n            text = this.content;\r\n        }\r\n        return text;\r\n    }\r\n\r\n    private getNodeValue(): string {\r\n        this.nodeValue = this.renderNode != null && this.renderNode.nodeValue != null ? this.renderNode.nodeValue : '';\r\n        return this.nodeValue ? this.nodeValue.trim() : '';\r\n    }\r\n\r\n    private getAttributes(): any[] {\r\n        const attributes: any[] = [];\r\n        if (this.element && this.element.attributes) {\r\n            for (const attr of Array.from(this.element.attributes)) {\r\n                if (attr && attr.name) {\r\n                    const [, name = ''] = attr.name.match(/^l10n-(.+)$/) || [];\r\n                    if (name) {\r\n                        const targetAttr = Array.from(this.element.attributes).find(a => a.name === name);\r\n                        if (targetAttr) attributes.push({ name: targetAttr.name, value: targetAttr.value });\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return attributes;\r\n    }\r\n\r\n    private addTextListener(): void {\r\n        if (typeof MutationObserver !== 'undefined') {\r\n            this.textObserver = new MutationObserver(() => {\r\n                if (this.element) {\r\n                    this.renderNode = getTargetNode(this.element);\r\n                    this.text = this.getText();\r\n                    this.replaceText();\r\n                }\r\n            });\r\n            if (this.renderNode) {\r\n                this.textObserver.observe(this.renderNode, { subtree: true, characterData: true });\r\n            }\r\n        }\r\n    }\r\n\r\n    private removeTextListener(): void {\r\n        if (this.textObserver) {\r\n            this.textObserver.disconnect();\r\n        }\r\n    }\r\n\r\n    private addTranslationListener(): void {\r\n        this.translation.onChange().pipe(takeUntil(this.destroy)).subscribe({\r\n            next: () => {\r\n                this.replaceText();\r\n                this.replaceAttributes();\r\n            }\r\n        });\r\n    }\r\n\r\n    private replaceText(): void {\r\n        if (this.text) {\r\n            this.setText(this.getValue(this.text));\r\n        }\r\n    }\r\n\r\n    private replaceAttributes(): void {\r\n        if (this.attributes.length > 0) {\r\n            this.setAttributes(this.getAttributesValues());\r\n        }\r\n    }\r\n\r\n    private setText(value: string): void {\r\n        if (value) {\r\n            if (this.nodeValue && this.text) {\r\n                this.removeTextListener();\r\n                this.renderer.setValue(this.renderNode, this.nodeValue.replace(this.text, value));\r\n                this.addTextListener();\r\n            } else if (this.value) {\r\n                this.renderer.setAttribute(this.element, 'value', value);\r\n            } else if (this.content) {\r\n                this.renderer.setProperty(this.element, 'innerHTML', value);\r\n            }\r\n        }\r\n    }\r\n\r\n    private setAttributes(data: any): void {\r\n        for (const attr of this.attributes) {\r\n            this.renderer.setAttribute(this.element, attr.name, data[attr.value]);\r\n        }\r\n    }\r\n\r\n    private getAttributesValues(): any {\r\n        const values = this.attributes.map(attr => attr.value);\r\n        const data: any = {};\r\n        for (const value of values) {\r\n            data[value] = this.getValue(value);\r\n        }\r\n        return data;\r\n    }\r\n\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { L10nTranslationService } from '../services/l10n-translation.service';\r\n\r\nexport const resolveL10n: ResolveFn<void> = async (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n    const translation = inject(L10nTranslationService);\r\n\r\n    const providers = route.data['l10nProviders'];\r\n    translation.addProviders(providers);\r\n\r\n    await translation.loadTranslations(providers);\r\n};\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { L10nTranslationService } from './l10n-translation.service';\r\n\r\n/**\r\n * Implement this class-interface to init L10n.\r\n */\r\n@Injectable() export abstract class L10nLoader {\r\n\r\n    /**\r\n     * This method must contain the logic to init L10n.\r\n     */\r\n    public abstract init(): Promise<void>;\r\n\r\n}\r\n\r\n@Injectable() export class L10nDefaultLoader implements L10nLoader {\r\n\r\n    constructor(private translation: L10nTranslationService) { }\r\n\r\n    public async init(): Promise<void> {\r\n        await this.translation.init();\r\n    }\r\n\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\n\r\nimport { L10nLocale, L10nDateTimeFormatOptions, L10nNumberFormatOptions } from '../models/types';\r\nimport { L10nConfig, L10N_CONFIG, L10N_LOCALE } from '../models/l10n-config';\r\nimport {\r\n    toDate,\r\n    toNumber,\r\n    PARSE_DATE_STYLE,\r\n    PARSE_TIME_STYLE,\r\n    parseDigits\r\n} from '../models/utils';\r\nimport { L10nTranslationService } from './l10n-translation.service';\r\n\r\n@Injectable() export class L10nIntlService {\r\n\r\n    constructor(\r\n        @Inject(L10N_CONFIG) private config: L10nConfig,\r\n        @Inject(L10N_LOCALE) private locale: L10nLocale,\r\n        private translation: L10nTranslationService\r\n    ) { }\r\n\r\n    /**\r\n     * Formats a date.\r\n     * @param value A date, a number (milliseconds since UTC epoch) or an ISO 8601 string\r\n     * @param options A L10n or Intl DateTimeFormatOptions object\r\n     * @param language The current language\r\n     * @param timeZone The current time zone\r\n     */\r\n    public formatDate(\r\n        value: any,\r\n        options?: L10nDateTimeFormatOptions,\r\n        language = this.locale.dateLanguage || this.locale.language,\r\n        timeZone = this.locale.timeZone\r\n    ): string {\r\n        value = toDate(value);\r\n\r\n        let dateTimeFormatOptions: Intl.DateTimeFormatOptions = {};\r\n        if (options) {\r\n            if (options) {\r\n                const { dateStyle, timeStyle, ...rest } = options;\r\n                if (dateStyle) {\r\n                    dateTimeFormatOptions = { ...dateTimeFormatOptions, ...PARSE_DATE_STYLE[dateStyle] };\r\n                }\r\n                if (timeStyle) {\r\n                    dateTimeFormatOptions = { ...dateTimeFormatOptions, ...PARSE_TIME_STYLE[timeStyle] };\r\n                }\r\n                dateTimeFormatOptions = { ...dateTimeFormatOptions, ...rest };\r\n            }\r\n        }\r\n        if (timeZone) {\r\n            dateTimeFormatOptions.timeZone = timeZone;\r\n        }\r\n\r\n        return new Intl.DateTimeFormat(language, dateTimeFormatOptions).format(value);\r\n    }\r\n\r\n    /**\r\n     * Formats a number.\r\n     * @param value A number or a string\r\n     * @param options A L10n or Intl NumberFormatOptions object\r\n     * @param language The current language\r\n     * @param currency The current currency\r\n     * @param convert An optional function to convert the value, with value and locale in the signature. \r\n     * For example:\r\n     * ```\r\n     * const convert = (value: number, locale: L10nLocale) => { return ... };\r\n     * ```\r\n     * @param convertParams Optional parameters for the convert function\r\n     */\r\n    public formatNumber(\r\n        value: any,\r\n        options?: L10nNumberFormatOptions,\r\n        language = this.locale.numberLanguage || this.locale.language,\r\n        currency = this.locale.currency,\r\n        convert?: (value: number, locale: L10nLocale, params: any) => number,\r\n        convertParams?: any\r\n    ): string {\r\n        if (options && options['style'] === 'unit' && !options['unit']) return value;\r\n\r\n        value = toNumber(value);\r\n\r\n        // Optional conversion.\r\n        if (typeof convert === 'function') {\r\n            value = convert(value, this.locale, Object.values(convertParams || {})); // Destructures params\r\n        }\r\n\r\n        let numberFormatOptions: Intl.NumberFormatOptions = {};\r\n        if (options) {\r\n            const { digits, ...rest } = options;\r\n            if (digits) {\r\n                numberFormatOptions = { ...numberFormatOptions, ...parseDigits(digits) };\r\n            }\r\n            numberFormatOptions = { ...numberFormatOptions, ...rest };\r\n        }\r\n        if (currency) numberFormatOptions.currency = currency;\r\n\r\n        return new Intl.NumberFormat(language, numberFormatOptions).format(value);\r\n    }\r\n\r\n    /**\r\n     * Formats a relative time.\r\n     * @param value A negative (or positive) number\r\n     * @param unit An Intl RelativeTimeFormatUnit value\r\n     * @param options An Intl RelativeTimeFormatOptions object\r\n     * @param language The current language\r\n     */\r\n    public formatRelativeTime(\r\n        value: any,\r\n        unit: Intl.RelativeTimeFormatUnit,\r\n        options?: Intl.RelativeTimeFormatOptions,\r\n        language = this.locale.dateLanguage || this.locale.language\r\n    ): string {\r\n        value = toNumber(value);\r\n\r\n        return new Intl.RelativeTimeFormat(language, options).format(value, unit);\r\n    }\r\n\r\n    /**\r\n     * Gets the plural by a number.\r\n     * The 'value' is passed as a parameter to the translation function.\r\n     * @param value The number to get the plural\r\n     * @param prefix Optional prefix for the key\r\n     * @param options An Intl PluralRulesOptions object\r\n     * @param language The current language\r\n     */\r\n    public plural(value: any, prefix = '', options?: Intl.PluralRulesOptions, language = this.locale.language): string {\r\n        value = toNumber(value);\r\n\r\n        const rule = new Intl.PluralRules(language, options).select(value);\r\n\r\n        const key = prefix ? `${prefix}${this.config.keySeparator}${rule}` : rule;\r\n\r\n        return this.translation.translate(key, { value });\r\n    }\r\n\r\n    /**\r\n     * Returns translation of language, region, script or currency display names\r\n     * @param code ISO code of language, region, script or currency\r\n     * @param options An Intl DisplayNamesOptions object\r\n     * @param language The current language\r\n     */\r\n    public displayNames(code: string, options: Intl.DisplayNamesOptions, language = this.locale.language): string {\r\n        return new Intl.DisplayNames(language, options).of(code) || code;\r\n    }\r\n\r\n    public getCurrencySymbol(locale = this.locale): string | undefined {\r\n        const decimal = this.formatNumber(0, { digits: '1.0-0' }, locale.numberLanguage || locale.language);\r\n        const currency = this.formatNumber(\r\n            0,\r\n            { digits: '1.0-0', style: 'currency', currencyDisplay: 'symbol' },\r\n            locale.numberLanguage || locale.language,\r\n            locale.currency\r\n        );\r\n        let symbol = currency.replace(decimal, '');\r\n        symbol = symbol.trim();\r\n\r\n        return symbol;\r\n    }\r\n\r\n    /**\r\n     * Compares two keys by the value of translation.\r\n     * @param key1 First key to compare\r\n     * @param key1 Second key to compare\r\n     * @param options An Intl CollatorOptions object\r\n     * @param language The current language\r\n     * @return A negative value if the value of translation of key1 comes before the value of translation of key2;\r\n     *         a positive value if key1 comes after key2;\r\n     *         0 if they are considered equal or Intl.Collator is not supported\r\n     */\r\n    public compare(key1: string, key2: string, options?: Intl.CollatorOptions, language = this.locale.language): number {\r\n        const value1 = this.translation.translate(key1);\r\n        const value2 = this.translation.translate(key2);\r\n\r\n        return new Intl.Collator(language, options).compare(value1, value2);\r\n    }\r\n\r\n    /**\r\n     * Returns the representation of a list.\r\n     * @param list An array of keys\r\n     * @param options An Intl ListFormatOptions object\r\n     * @param language The current language\r\n     */\r\n    public list(list: string[], options?: Intl.ListFormatOptions, language = this.locale.language): string {\r\n        const values = list.map(key => this.translation.translate(key));\r\n        if (language == null || language === '') return values.join(', ');\r\n\r\n        return new Intl.ListFormat(language, options).format(values);\r\n    }\r\n\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\n\r\nimport { L10nNumberFormatOptions, L10nDateTimeFormatOptions, L10nLocale } from '../models/types';\r\nimport { L10N_LOCALE } from '../models/l10n-config';\r\n\r\n/**\r\n * Implement this class-interface to create a validation service.\r\n */\r\n@Injectable() export abstract class L10nValidation {\r\n\r\n    /**\r\n     * This method must contain the logic to convert a string to a number.\r\n     * @param value The string to be parsed\r\n     * @param options A L10n or Intl NumberFormatOptions object\r\n     * @param language The current language\r\n     * @return The parsed number\r\n     */\r\n    public abstract parseNumber(\r\n        value: string,\r\n        options?: L10nNumberFormatOptions,\r\n        language?: string\r\n    ): number | null;\r\n\r\n    /**\r\n     * This method must contain the logic to convert a string to a date.\r\n     * @param value The string to be parsed\r\n     * @param options A L10n or Intl DateTimeFormatOptions object\r\n     * @param language The current language\r\n     * @return The parsed date\r\n     */\r\n    public abstract parseDate(\r\n        value: string,\r\n        options?: L10nDateTimeFormatOptions,\r\n        language?: string\r\n    ): Date | null;\r\n\r\n}\r\n\r\n@Injectable() export class L10nDefaultValidation {\r\n\r\n    constructor(@Inject(L10N_LOCALE) private locale: L10nLocale) { }\r\n\r\n    public parseNumber(\r\n        value: string,\r\n        options?: L10nNumberFormatOptions,\r\n        language = this.locale.numberLanguage || this.locale.language\r\n    ): number | null {\r\n        return null;\r\n    }\r\n\r\n    public parseDate(\r\n        value: string,\r\n        options?: L10nDateTimeFormatOptions,\r\n        language = this.locale.dateLanguage || this.locale.language\r\n    ): Date | null {\r\n        return null;\r\n    }\r\n\r\n}\r\n","import { L10nTranslationService } from '../services/l10n-translation.service';\r\n\r\nexport function initL10n(translation: L10nTranslationService): () => Promise<void> {\r\n    return () => translation.init();\r\n}\r\n","import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\r\n\r\nimport { L10N_CONFIG, L10N_LOCALE, L10nConfig, L10nTranslationToken, L10nValidationToken } from '../models/l10n-config';\r\nimport { L10nCache } from '../services/l10n-cache';\r\nimport { L10nLoader, L10nDefaultLoader } from '../services/l10n-loader';\r\nimport { L10nMissingTranslationHandler, L10nDefaultMissingTranslationHandler } from '../services/l10n-missing-translation-handler';\r\nimport { L10nLocaleResolver, L10nDefaultLocaleResolver } from '../services/l10n-locale-resolver';\r\nimport { L10nStorage, L10nDefaultStorage } from '../services/l10n-storage';\r\nimport { L10nTranslationFallback, L10nDefaultTranslationFallback } from '../services/l10n-translation-fallback';\r\nimport { L10nTranslationHandler, L10nDefaultTranslationHandler } from '../services/l10n-translation-handler';\r\nimport { L10nTranslationLoader, L10nDefaultTranslationLoader } from '../services/l10n-translation-loader';\r\nimport { L10nTranslationService } from '../services/l10n-translation.service';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\nimport { L10nDefaultValidation, L10nValidation } from '../services/l10n-validation';\r\nimport { initL10n } from './initL10n';\r\n\r\nexport function provideL10nTranslation(config: L10nConfig, token: L10nTranslationToken = {}): EnvironmentProviders {\r\n    return makeEnvironmentProviders([\r\n        L10nTranslationService,\r\n        L10nCache,\r\n        { provide: L10N_CONFIG, useValue: config },\r\n        { provide: L10N_LOCALE, useValue: { language: '', units: {} } },\r\n        { provide: L10nStorage, useClass: token.storage || L10nDefaultStorage },\r\n        { provide: L10nLocaleResolver, useClass: token.localeResolver || L10nDefaultLocaleResolver },\r\n        { provide: L10nTranslationFallback, useClass: token.translationFallback || L10nDefaultTranslationFallback },\r\n        { provide: L10nTranslationLoader, useClass: token.translationLoader || L10nDefaultTranslationLoader },\r\n        { provide: L10nTranslationHandler, useClass: token.translationHandler || L10nDefaultTranslationHandler },\r\n        {\r\n            provide: L10nMissingTranslationHandler,\r\n            useClass: token.missingTranslationHandler || L10nDefaultMissingTranslationHandler\r\n        },\r\n        { provide: L10nLoader, useClass: token.loader || L10nDefaultLoader },\r\n        {\r\n            provide: APP_INITIALIZER,\r\n            useFactory: initL10n,\r\n            deps: [L10nLoader],\r\n            multi: true\r\n        }\r\n    ]);\r\n}\r\n\r\nexport function provideL10nIntl(): EnvironmentProviders {\r\n    return makeEnvironmentProviders([\r\n        L10nIntlService\r\n    ]);\r\n}\r\n\r\nexport function provideL10nValidation(token: L10nValidationToken = {}): EnvironmentProviders {\r\n    return makeEnvironmentProviders([\r\n        { provide: L10nValidation, useClass: token.validation || L10nDefaultValidation }\r\n    ]);\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { L10nAsyncPipe } from '../models/l10n-async-pipe';\r\nimport { L10nTranslationService } from '../services/l10n-translation.service';\r\n\r\n@Pipe({\r\n    name: 'translate',\r\n    pure: true,\r\n    standalone: true\r\n})\r\nexport class L10nTranslatePipe implements PipeTransform {\r\n\r\n    constructor(protected translation: L10nTranslationService) { }\r\n\r\n    public transform(key: null, language: string, params?: any): null;\r\n    public transform(key: \"\", language: string, params?: any): null;\r\n    public transform(key: string, language: string, params?: any): string;\r\n    public transform(key: any, language: string, params?: any): string | null;\r\n    public transform(key: any, language: string, params?: any): string | null {\r\n        if (key == null || key === '') return null;\r\n\r\n        return this.translation.translate(key, params, language);\r\n    }\r\n\r\n}\r\n\r\n@Pipe({\r\n    name: 'translateAsync',\r\n    pure: false,\r\n    standalone: true\r\n})\r\nexport class L10nTranslateAsyncPipe extends L10nAsyncPipe implements PipeTransform {\r\n\r\n    public transform(key: null, params?: any, language?: string): null;\r\n    public transform(key: \"\", params?: any, language?: string): null;\r\n    public transform(key: string, params?: any, language?: string): string;\r\n    public transform(key: any, params?: any, language?: string): string | null;\r\n    public transform(key: any, params?: any, language?: string): string | null {\r\n        if (key == null || key === '') return null;\r\n\r\n        return this.translation.translate(key, params, language);\r\n    }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\nimport { L10nDirective } from '../models/l10n-directive';\r\n\r\n@Directive({\r\n    selector: '[l10nTranslate],[translate]',\r\n    standalone: true\r\n})\r\nexport class L10nTranslateDirective extends L10nDirective {\r\n\r\n    @Input() set l10nTranslate(params: any | '') {\r\n        if (params) this.params = params;\r\n    }\r\n    @Input() set translate(params: any | '') {\r\n        if (params) this.params = params;\r\n    }\r\n\r\n    @Input() public params?: any;\r\n\r\n    protected getValue(text: string): string {\r\n        return this.translation.translate(text, this.params, this.language);\r\n    }\r\n\r\n}\r\n","import { NgModule, ModuleWithProviders, APP_INITIALIZER } from '@angular/core';\r\n\r\nimport { L10nTranslatePipe, L10nTranslateAsyncPipe } from '../pipes/l10n-translate.pipe';\r\nimport { L10nTranslateDirective } from '../directives/l10n-translate.directive';\r\nimport { L10nConfig, L10nTranslationToken, L10N_CONFIG, L10N_LOCALE } from '../models/l10n-config';\r\nimport { L10nTranslationService } from '../services/l10n-translation.service';\r\nimport { L10nCache } from '../services/l10n-cache';\r\nimport { L10nStorage, L10nDefaultStorage } from '../services/l10n-storage';\r\nimport { L10nLocaleResolver, L10nDefaultLocaleResolver } from '../services/l10n-locale-resolver';\r\nimport { L10nTranslationFallback, L10nDefaultTranslationFallback } from '../services/l10n-translation-fallback';\r\nimport { L10nTranslationLoader, L10nDefaultTranslationLoader } from '../services/l10n-translation-loader';\r\nimport { L10nTranslationHandler, L10nDefaultTranslationHandler } from '../services/l10n-translation-handler';\r\nimport { L10nMissingTranslationHandler, L10nDefaultMissingTranslationHandler } from '../services/l10n-missing-translation-handler';\r\nimport { L10nLoader, L10nDefaultLoader } from '../services/l10n-loader';\r\nimport { initL10n } from '../functions/initL10n';\r\n\r\n@NgModule({\r\n    imports: [\r\n        L10nTranslatePipe,\r\n        L10nTranslateAsyncPipe,\r\n        L10nTranslateDirective\r\n    ],\r\n    exports: [\r\n        L10nTranslatePipe,\r\n        L10nTranslateAsyncPipe,\r\n        L10nTranslateDirective\r\n    ]\r\n})\r\nexport class L10nTranslationModule {\r\n\r\n    public static forRoot(config: L10nConfig, token: L10nTranslationToken = {}): ModuleWithProviders<L10nTranslationModule> {\r\n        return {\r\n            ngModule: L10nTranslationModule,\r\n            providers: [\r\n                L10nTranslationService,\r\n                L10nCache,\r\n                { provide: L10N_CONFIG, useValue: config },\r\n                { provide: L10N_LOCALE, useValue: { language: '', units: {} } },\r\n                { provide: L10nStorage, useClass: token.storage || L10nDefaultStorage },\r\n                { provide: L10nLocaleResolver, useClass: token.localeResolver || L10nDefaultLocaleResolver },\r\n                { provide: L10nTranslationFallback, useClass: token.translationFallback || L10nDefaultTranslationFallback },\r\n                { provide: L10nTranslationLoader, useClass: token.translationLoader || L10nDefaultTranslationLoader },\r\n                { provide: L10nTranslationHandler, useClass: token.translationHandler || L10nDefaultTranslationHandler },\r\n                {\r\n                    provide: L10nMissingTranslationHandler,\r\n                    useClass: token.missingTranslationHandler || L10nDefaultMissingTranslationHandler\r\n                },\r\n                { provide: L10nLoader, useClass: token.loader || L10nDefaultLoader },\r\n                {\r\n                    provide: APP_INITIALIZER,\r\n                    useFactory: initL10n,\r\n                    deps: [L10nLoader],\r\n                    multi: true\r\n                }\r\n            ]\r\n        };\r\n    }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { L10nDateTimeFormatOptions } from '../models/types';\r\nimport { L10nAsyncPipe } from '../models/l10n-async-pipe';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\n\r\n@Pipe({\r\n    name: 'l10nDate',\r\n    pure: true,\r\n    standalone: true\r\n})\r\nexport class L10nDatePipe implements PipeTransform {\r\n\r\n    constructor(protected intl: L10nIntlService) { }\r\n\r\n    public transform(value: any, language: string, options?: L10nDateTimeFormatOptions, timezone?: string): string | null {\r\n        if (value == null || value === '') return null;\r\n\r\n        return this.intl.formatDate(value, options, language, timezone);\r\n    }\r\n\r\n}\r\n\r\n@Pipe({\r\n    name: 'l10nDateAsync',\r\n    pure: false,\r\n    standalone: true\r\n})\r\nexport class L10nDateAsyncPipe extends L10nAsyncPipe implements PipeTransform {\r\n\r\n    constructor(protected intl: L10nIntlService) {\r\n        super();\r\n    }\r\n\r\n    public transform(value: any, options?: L10nDateTimeFormatOptions, timezone?: string, language?: string): string | null {\r\n        if (value == null || value === '') return null;\r\n\r\n        return this.intl.formatDate(value, options, language, timezone);\r\n    }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { L10nLocale, L10nNumberFormatOptions } from '../models/types';\r\nimport { L10nAsyncPipe } from '../models/l10n-async-pipe';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\n\r\n@Pipe({\r\n    name: 'l10nNumber',\r\n    pure: true,\r\n    standalone: true\r\n})\r\nexport class L10nNumberPipe implements PipeTransform {\r\n\r\n    constructor(protected intl: L10nIntlService) { }\r\n\r\n    public transform(\r\n        value: any,\r\n        language: string,\r\n        options?: L10nNumberFormatOptions,\r\n        currency?: string,\r\n        convert?: (value: number, locale: L10nLocale, params: any) => number,\r\n        convertParams?: any\r\n    ): string | null {\r\n        if (value == null || value === '') return null;\r\n\r\n        return this.intl.formatNumber(value, options, language, currency, convert, convertParams);\r\n    }\r\n\r\n}\r\n\r\n@Pipe({\r\n    name: 'l10nNumberAsync',\r\n    pure: false,\r\n    standalone: true\r\n})\r\nexport class L10nNumberAsyncPipe extends L10nAsyncPipe implements PipeTransform {\r\n\r\n    constructor(protected intl: L10nIntlService) {\r\n        super();\r\n    }\r\n\r\n    public transform(\r\n        value: any,\r\n        options?: L10nNumberFormatOptions,\r\n        convert?: (value: number, locale: L10nLocale, params: any) => number,\r\n        convertParams?: any,\r\n        language?: string,\r\n        currency?: string\r\n    ): string | null {\r\n        if (value == null || value === '') return null;\r\n\r\n        return this.intl.formatNumber(value, options, language, currency, convert, convertParams);\r\n    }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { L10nAsyncPipe } from '../models/l10n-async-pipe';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\n\r\n@Pipe({\r\n    name: 'l10nTimeAgo',\r\n    pure: true,\r\n    standalone: true\r\n})\r\nexport class L10nTimeAgoPipe implements PipeTransform {\r\n\r\n    constructor(protected intl: L10nIntlService) { }\r\n\r\n    public transform(\r\n        value: any,\r\n        language: string,\r\n        unit: Intl.RelativeTimeFormatUnit,\r\n        options?: Intl.RelativeTimeFormatOptions\r\n    ): string | null {\r\n        if (value == null || value === '') return null;\r\n\r\n        return this.intl.formatRelativeTime(value, unit, options, language);\r\n    }\r\n\r\n}\r\n\r\n@Pipe({\r\n    name: 'l10nTimeAgoAsync',\r\n    pure: false,\r\n    standalone: true\r\n})\r\nexport class L10nTimeAgoAsyncPipe extends L10nAsyncPipe implements PipeTransform {\r\n\r\n    constructor(protected intl: L10nIntlService) {\r\n        super();\r\n    }\r\n\r\n    public transform(\r\n        value: any,\r\n        unit: Intl.RelativeTimeFormatUnit,\r\n        options?: Intl.RelativeTimeFormatOptions,\r\n        language?: string\r\n    ): string | null {\r\n        if (value == null || value === '') return null;\r\n\r\n        return this.intl.formatRelativeTime(value, unit, options, language);\r\n    }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { L10nAsyncPipe } from '../models/l10n-async-pipe';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\n\r\n@Pipe({\r\n    name: 'l10nPlural',\r\n    pure: true,\r\n    standalone: true\r\n})\r\nexport class L10nPluralPipe implements PipeTransform {\r\n\r\n    constructor(protected intl: L10nIntlService) { }\r\n\r\n    public transform(value: any, language: string, prefix?: string, options?: Intl.PluralRulesOptions): string | null {\r\n        if (value == null || value === '') return null;\r\n\r\n        return this.intl.plural(value, prefix, options, language);\r\n    }\r\n\r\n}\r\n\r\n@Pipe({\r\n    name: 'l10nPluralAsync',\r\n    pure: false,\r\n    standalone: true\r\n})\r\nexport class L10nPluralAsyncPipe extends L10nAsyncPipe implements PipeTransform {\r\n\r\n    constructor(protected intl: L10nIntlService) {\r\n        super();\r\n    }\r\n\r\n    public transform(value: any, prefix?: string, options?: Intl.PluralRulesOptions, language?: string): string | null {\r\n        if (value == null || value === '') return null;\r\n\r\n        return this.intl.plural(value, prefix, options, language);\r\n    }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { L10nAsyncPipe } from '../models/l10n-async-pipe';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\n\r\n@Pipe({\r\n    name: 'l10nDisplayNames',\r\n    pure: true,\r\n    standalone: true\r\n})\r\nexport class L10nDisplayNamesPipe implements PipeTransform {\r\n\r\n    constructor(protected intl: L10nIntlService) { }\r\n\r\n    public transform(value: any, language: string, options: Intl.DisplayNamesOptions): string | null {\r\n        if (value == null || value === '') return null;\r\n\r\n        return this.intl.displayNames(value, options, language);\r\n    }\r\n\r\n}\r\n\r\n@Pipe({\r\n    name: 'l10nDisplayNamesAsync',\r\n    pure: false,\r\n    standalone: true\r\n})\r\nexport class L10nDisplayNamesAsyncPipe extends L10nAsyncPipe implements PipeTransform {\r\n\r\n    constructor(protected intl: L10nIntlService) {\r\n        super();\r\n    }\r\n\r\n    public transform(value: any, options: Intl.DisplayNamesOptions, language?: string): string | null {\r\n        if (value == null || value === '') return null;\r\n\r\n        return this.intl.displayNames(value, options, language);\r\n    }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\nimport { L10nDateTimeFormatOptions } from '../models/types';\r\nimport { L10nDirective } from '../models/l10n-directive';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\n\r\n@Directive({\r\n    selector: '[l10nDate]',\r\n    standalone: true\r\n})\r\nexport class L10nDateDirective extends L10nDirective {\r\n\r\n    @Input() set l10nDate(options: L10nDateTimeFormatOptions | '') {\r\n        if (options) this.options = options;\r\n    }\r\n\r\n    @Input() public options?: L10nDateTimeFormatOptions;\r\n\r\n    @Input() public timezone?: string;\r\n\r\n    constructor(protected intl: L10nIntlService) {\r\n        super();\r\n    }\r\n\r\n    protected getValue(text: string): string {\r\n        return this.intl.formatDate(text, this.options, this.language, this.timezone);\r\n    }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\nimport { L10nLocale, L10nNumberFormatOptions } from '../models/types';\r\nimport { L10nDirective } from '../models/l10n-directive';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\n\r\n@Directive({\r\n    selector: '[l10nNumber]',\r\n    standalone: true\r\n})\r\nexport class L10nNumberDirective extends L10nDirective {\r\n\r\n    @Input() set l10nNumber(options: L10nNumberFormatOptions | '') {\r\n        if (options) this.options = options;\r\n    }\r\n\r\n    @Input() public options?: L10nNumberFormatOptions;\r\n\r\n    @Input() public currency?: string;\r\n\r\n    @Input() public convert?: (value: number, locale: L10nLocale, params: any) => number;\r\n    @Input() public convertParams?: any;\r\n\r\n    constructor(protected intl: L10nIntlService) {\r\n        super();\r\n    }\r\n\r\n    protected getValue(text: string): string {\r\n        return this.intl.formatNumber(text, this.options, this.language, this.currency, this.convert, this.convertParams);\r\n    }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\nimport { L10nDirective } from '../models/l10n-directive';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\n\r\n@Directive({\r\n    selector: '[l10nTimeAgo]',\r\n    standalone: true\r\n})\r\nexport class L10nTimeAgoDirective extends L10nDirective {\r\n\r\n    @Input() set l10nTimeAgo(options: Intl.RelativeTimeFormatOptions | '') {\r\n        if (options) this.options = options;\r\n    }\r\n\r\n    @Input() public unit!: Intl.RelativeTimeFormatUnit;\r\n\r\n    @Input() public options?: Intl.RelativeTimeFormatOptions;\r\n\r\n    constructor(protected intl: L10nIntlService) {\r\n        super();\r\n    }\r\n\r\n    protected getValue(text: string): string {\r\n        return this.intl.formatRelativeTime(text, this.unit, this.options, this.language);\r\n    }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\nimport { L10nDirective } from '../models/l10n-directive';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\n\r\n@Directive({\r\n    selector: '[l10nPlural]',\r\n    standalone: true\r\n})\r\nexport class L10nPluralDirective extends L10nDirective {\r\n\r\n    @Input() set l10nPlural(options: Intl.PluralRulesOptions | '') {\r\n        if (options) this.options = options;\r\n    }\r\n\r\n    @Input() public prefix?: string;\r\n\r\n    @Input() public options?: Intl.PluralRulesOptions;\r\n\r\n    constructor(protected intl: L10nIntlService) {\r\n        super();\r\n    }\r\n\r\n    protected getValue(text: string): string {\r\n        return this.intl.plural(text, this.prefix, this.options, this.language);\r\n    }\r\n\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\r\nimport { L10nDirective } from '../models/l10n-directive';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\n\r\n@Directive({\r\n    selector: '[l10nDisplayNames]',\r\n    standalone: true\r\n})\r\nexport class L10nDisplayNamesDirective extends L10nDirective {\r\n\r\n    @Input() set l10nDisplayNames(options: Intl.DisplayNamesOptions | '') {\r\n        if (options) this.options = options;\r\n    }\r\n\r\n    @Input() public options!: Intl.DisplayNamesOptions;\r\n\r\n    constructor(protected intl: L10nIntlService) {\r\n        super();\r\n    }\r\n\r\n    protected getValue(text: string): string {\r\n        return this.intl.displayNames(text, this.options, this.language);\r\n    }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { L10nDatePipe, L10nDateAsyncPipe } from '../pipes/l10n-date.pipe';\r\nimport { L10nNumberPipe, L10nNumberAsyncPipe } from '../pipes/l10n-number.pipe';\r\nimport { L10nTimeAgoPipe, L10nTimeAgoAsyncPipe } from '../pipes/l10n-time-ago.pipe';\r\nimport { L10nPluralPipe, L10nPluralAsyncPipe } from '../pipes/l10n-plural.pipe';\r\nimport { L10nDisplayNamesPipe, L10nDisplayNamesAsyncPipe } from '../pipes/l10n-display-names.pipe';\r\nimport { L10nDateDirective } from '../directives/l10n-date.directive';\r\nimport { L10nNumberDirective } from '../directives/l10n-number.directive';\r\nimport { L10nTimeAgoDirective } from '../directives/l10n-time-ago.directive';\r\nimport { L10nPluralDirective } from '../directives/l10n-plural.directive';\r\nimport { L10nDisplayNamesDirective } from '../directives/l10n-display-names.directive';\r\nimport { L10nIntlService } from '../services/l10n-intl.service';\r\n\r\n@NgModule({\r\n    imports: [\r\n        L10nDatePipe,\r\n        L10nNumberPipe,\r\n        L10nTimeAgoPipe,\r\n        L10nPluralPipe,\r\n        L10nDisplayNamesPipe,\r\n        L10nDateAsyncPipe,\r\n        L10nNumberAsyncPipe,\r\n        L10nTimeAgoAsyncPipe,\r\n        L10nPluralAsyncPipe,\r\n        L10nDisplayNamesAsyncPipe,\r\n        L10nDateDirective,\r\n        L10nNumberDirective,\r\n        L10nTimeAgoDirective,\r\n        L10nPluralDirective,\r\n        L10nDisplayNamesDirective\r\n    ],\r\n    exports: [\r\n        L10nDatePipe,\r\n        L10nNumberPipe,\r\n        L10nTimeAgoPipe,\r\n        L10nPluralPipe,\r\n        L10nDisplayNamesPipe,\r\n        L10nDateAsyncPipe,\r\n        L10nNumberAsyncPipe,\r\n        L10nTimeAgoAsyncPipe,\r\n        L10nPluralAsyncPipe,\r\n        L10nDisplayNamesAsyncPipe,\r\n        L10nDateDirective,\r\n        L10nNumberDirective,\r\n        L10nTimeAgoDirective,\r\n        L10nPluralDirective,\r\n        L10nDisplayNamesDirective\r\n    ],\r\n    providers: [L10nIntlService]\r\n})\r\nexport class L10nIntlModule { }\r\n","import { Directive, forwardRef, OnInit, Input, OnChanges } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, ValidatorFn, ValidationErrors, AbstractControl } from '@angular/forms';\r\n\r\nimport { L10nNumberFormatOptions } from '../models/types';\r\nimport { L10nValidation } from '../services/l10n-validation';\r\n\r\n/**\r\n * Function that takes a control and returns either null when it’s valid, or an error object if it’s not.\r\n * @param validation The instance of L10nValidation service\r\n * @param options A L10n or Intl NumberFormatOptions object\r\n * @param minValue The minimum value\r\n * @param maxValue The maximum value\r\n * @param language The current language\r\n * @return An error object: 'format', 'minValue' or 'maxValue'; null in case the value is valid\r\n */\r\nexport function l10nValidateNumber(\r\n    validation: L10nValidation,\r\n    options?: L10nNumberFormatOptions,\r\n    minValue = Number.MIN_VALUE,\r\n    maxValue = Number.MAX_VALUE,\r\n    language?: string\r\n): ValidatorFn {\r\n    const validator = (c: AbstractControl): ValidationErrors | null => {\r\n        if (c.value === '' || c.value == null) return null;\r\n\r\n        const value = validation.parseNumber(c.value, options, language);\r\n        if (value != null) {\r\n            if (value < minValue) {\r\n                return { minValue: true };\r\n            } else if (value > maxValue) {\r\n                return { maxValue: true };\r\n            }\r\n            return null; // The number is valid.\r\n        } else {\r\n            return { format: true };\r\n        }\r\n    };\r\n    return validator;\r\n}\r\n\r\n@Directive({\r\n    selector: '[l10nValidateNumber][ngModel],[l10nValidateNumber][formControl],[l10nValidateNumber][formControlName]',\r\n    providers: [\r\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => L10nValidateNumberDirective), multi: true }\r\n    ],\r\n    standalone: true\r\n})\r\nexport class L10nValidateNumberDirective implements Validator, OnInit, OnChanges {\r\n\r\n    @Input() set l10nValidateNumber(options: L10nNumberFormatOptions | '') {\r\n        if (options) this.options = options;\r\n    }\r\n\r\n    @Input() public options?: L10nNumberFormatOptions;\r\n\r\n    @Input() public minValue?: number;\r\n    @Input() public maxValue?: number;\r\n\r\n    @Input() public language?: string;\r\n\r\n    protected validator?: ValidatorFn;\r\n\r\n    constructor(protected validation: L10nValidation) { }\r\n\r\n    public ngOnInit() {\r\n        this.validator = l10nValidateNumber(this.validation, this.options, this.minValue, this.maxValue, this.language);\r\n    }\r\n\r\n    public ngOnChanges() {\r\n        this.validator = l10nValidateNumber(this.validation, this.options, this.minValue, this.maxValue, this.language);\r\n    }\r\n\r\n    public validate(c: AbstractControl): ValidationErrors | null {\r\n        return this.validator ? this.validator(c) : null;\r\n    }\r\n\r\n}\r\n","import { Directive, forwardRef, OnInit, Input, OnChanges } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, ValidatorFn, ValidationErrors, AbstractControl } from '@angular/forms';\r\n\r\nimport { L10nDateTimeFormatOptions } from '../models/types';\r\nimport { L10nValidation } from '../services/l10n-validation';\r\n\r\n/**\r\n * Function that takes a control and returns either null when it’s valid, or an error object if it’s not.\r\n * @param validation The instance of L10nValidation service\r\n * @param options A L10n or Intl DateTimeFormatOptions object\r\n * @param minDate The minimum date\r\n * @param maxDate The maximum date\r\n * @param language The current language\r\n * @return An error object: 'format', 'minDate' or 'maxDate'; null in case the date is valid\r\n */\r\nexport function l10nValidateDate(\r\n    validation: L10nValidation,\r\n    options?: L10nDateTimeFormatOptions,\r\n    minDate?: Date,\r\n    maxDate?: Date,\r\n    language?: string\r\n): ValidatorFn {\r\n    const validator = (c: AbstractControl): ValidationErrors | null => {\r\n        if (c.value === '' || c.value == null) return null;\r\n\r\n        const date = validation.parseDate(c.value, options, language);\r\n        if (date != null) {\r\n            if (minDate && date < minDate) {\r\n                return { mindate: true };\r\n            } else if (maxDate && date > maxDate) {\r\n                return { maxDate: true };\r\n            }\r\n            return null; // The date is valid.\r\n        } else {\r\n            return { format: true };\r\n        }\r\n    };\r\n    return validator;\r\n}\r\n\r\n@Directive({\r\n    selector: '[l10nValidateDate][ngModel],[l10nValidateDate][formControl],[l10nValidateDate][formControlName]',\r\n    providers: [\r\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => L10nValidateDateDirective), multi: true }\r\n    ],\r\n    standalone: true\r\n})\r\nexport class L10nValidateDateDirective implements Validator, OnInit, OnChanges {\r\n\r\n    @Input() set l10nValidateDate(options: L10nDateTimeFormatOptions | '') {\r\n        if (options) this.options = options;\r\n    }\r\n\r\n    @Input() public options?: L10nDateTimeFormatOptions;\r\n\r\n    @Input() public minDate?: Date;\r\n    @Input() public maxDate?: Date;\r\n\r\n    @Input() public language?: string;\r\n\r\n    protected validator?: ValidatorFn;\r\n\r\n    constructor(protected validation: L10nValidation) { }\r\n\r\n    public ngOnInit() {\r\n        this.validator = l10nValidateDate(this.validation, this.options, this.minDate, this.maxDate, this.language);\r\n    }\r\n\r\n    public ngOnChanges() {\r\n        this.validator = l10nValidateDate(this.validation, this.options, this.minDate, this.maxDate, this.language);\r\n    }\r\n\r\n    public validate(c: AbstractControl): ValidationErrors | null {\r\n        return this.validator ? this.validator(c) : null;\r\n    }\r\n\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\n\r\nimport { L10nValidateNumberDirective } from '../directives/l10n-validate-number.directive';\r\nimport { L10nValidateDateDirective } from '../directives/l10n-validate-date.directive';\r\nimport { L10nValidationToken } from '../models/l10n-config';\r\nimport { L10nValidation, L10nDefaultValidation } from '../services/l10n-validation';\r\n\r\n@NgModule({\r\n    imports: [\r\n        L10nValidateNumberDirective,\r\n        L10nValidateDateDirective\r\n    ],\r\n    exports: [\r\n        L10nValidateNumberDirective,\r\n        L10nValidateDateDirective\r\n    ]\r\n})\r\nexport class L10nValidationModule {\r\n\r\n    public static forRoot(token: L10nValidationToken = {}): ModuleWithProviders<L10nValidationModule> {\r\n        return {\r\n            ngModule: L10nValidationModule,\r\n            providers: [\r\n                { provide: L10nValidation, useClass: token.validation || L10nDefaultValidation }\r\n            ]\r\n        };\r\n    }\r\n\r\n}\r\n","/*\r\n * Public API Surface of angular-l10n\r\n */\r\n\r\n// Models\r\nexport * from './lib/models/types';\r\nexport * from './lib/models/l10n-config';\r\nexport * from './lib/models/l10n-async-pipe';\r\nexport * from './lib/models/l10n-directive';\r\nexport * from './lib/models/utils';\r\n// Functions\r\nexport * from './lib/functions/resolveL10n';\r\nexport { provideL10nTranslation, provideL10nIntl, provideL10nValidation } from './lib/functions/provideL10n';\r\n// L10nTranslationModule\r\nexport * from './lib/services/l10n-translation.service';\r\nexport * from './lib/services/l10n-cache';\r\nexport { L10nStorage } from './lib/services/l10n-storage';\r\nexport { L10nLocaleResolver } from './lib/services/l10n-locale-resolver';\r\nexport { L10nTranslationFallback } from './lib/services/l10n-translation-fallback';\r\nexport { L10nTranslationLoader } from './lib/services/l10n-translation-loader';\r\nexport { L10nTranslationHandler } from './lib/services/l10n-translation-handler';\r\nexport { L10nMissingTranslationHandler } from './lib/services/l10n-missing-translation-handler';\r\nexport { L10nLoader } from './lib/services/l10n-loader';\r\nexport * from './lib/pipes/l10n-translate.pipe';\r\nexport * from './lib/directives/l10n-translate.directive';\r\nexport * from './lib/modules/l10n-translation.module';\r\n// L10nIntlModule\r\nexport * from './lib/services/l10n-intl.service';\r\nexport * from './lib/pipes/l10n-date.pipe';\r\nexport * from './lib/pipes/l10n-number.pipe';\r\nexport * from './lib/pipes/l10n-time-ago.pipe';\r\nexport * from './lib/pipes/l10n-plural.pipe';\r\nexport * from './lib/pipes/l10n-display-names.pipe';\r\nexport * from './lib/directives/l10n-date.directive';\r\nexport * from './lib/directives/l10n-number.directive';\r\nexport * from './lib/directives/l10n-time-ago.directive';\r\nexport * from './lib/directives/l10n-plural.directive';\r\nexport * from './lib/directives/l10n-display-names.directive';\r\nexport * from './lib/modules/l10n-intl.module';\r\n// L10nValidationModule\r\nexport * from './lib/directives/l10n-validate-number.directive';\r\nexport * from './lib/directives/l10n-validate-date.directive';\r\nexport { L10nValidation } from './lib/services/l10n-validation';\r\nexport * from './lib/modules/l10n-validation.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.L10nCache","i2.L10nTranslationLoader","i2.L10nStorage","i3.L10nLocaleResolver","i4.L10nTranslationFallback","i5.L10nTranslationLoader","i6.L10nTranslationHandler","i7.L10nMissingTranslationHandler","i1.L10nTranslationService","i1.L10nIntlService","i1.L10nValidation"],"mappings":"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"}