{"version":3,"sources":["node_modules/@ngx-translate/core/dist/fesm2022/ngx-translate-core.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, InjectionToken, Inject, Directive, Input, Pipe, NgModule } from '@angular/core';\nimport { of, isObservable, forkJoin, concat, defer } from 'rxjs';\nimport { take, shareReplay, map, concatMap, switchMap } from 'rxjs/operators';\n\nclass TranslateLoader {\n}\n/**\n * This loader is just a placeholder that does nothing, in case you don't need a loader at all\n */\nclass TranslateFakeLoader extends TranslateLoader {\n getTranslation(lang) {\n return of({});\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateFakeLoader, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateFakeLoader });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateFakeLoader, decorators: [{\n type: Injectable\n }] });\n\nclass MissingTranslationHandler {\n}\n/**\n * This handler is just a placeholder that does nothing, in case you don't need a missing translation handler at all\n */\nclass FakeMissingTranslationHandler {\n handle(params) {\n return params.key;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FakeMissingTranslationHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FakeMissingTranslationHandler });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: FakeMissingTranslationHandler, decorators: [{\n type: Injectable\n }] });\n\n/* tslint:disable */\n/**\n * Determines if two objects or two values are equivalent.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n * comparing them with `equals`.\n *\n * @param o1 Object or value to compare.\n * @param o2 Object or value to compare.\n * @returns true if arguments are equal.\n */\nfunction equals(o1, o2) {\n if (o1 === o2)\n return true;\n if (o1 === null || o2 === null)\n return false;\n if (o1 !== o1 && o2 !== o2)\n return true; // NaN === NaN\n let t1 = typeof o1, t2 = typeof o2, length, key, keySet;\n if (t1 == t2 && t1 == 'object') {\n if (Array.isArray(o1)) {\n if (!Array.isArray(o2))\n return false;\n if ((length = o1.length) == o2.length) {\n for (key = 0; key < length; key++) {\n if (!equals(o1[key], o2[key]))\n return false;\n }\n return true;\n }\n }\n else {\n if (Array.isArray(o2)) {\n return false;\n }\n keySet = Object.create(null);\n for (key in o1) {\n if (!equals(o1[key], o2[key])) {\n return false;\n }\n keySet[key] = true;\n }\n for (key in o2) {\n if (!(key in keySet) && typeof o2[key] !== 'undefined') {\n return false;\n }\n }\n return true;\n }\n }\n return false;\n}\n/* tslint:enable */\nfunction isDefined(value) {\n return typeof value !== 'undefined' && value !== null;\n}\nfunction isObject(item) {\n return (item && typeof item === 'object' && !Array.isArray(item));\n}\nfunction mergeDeep(target, source) {\n let output = Object.assign({}, target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] });\n }\n else {\n output[key] = mergeDeep(target[key], source[key]);\n }\n }\n else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n}\n\nclass TranslateParser {\n}\nclass TranslateDefaultParser extends TranslateParser {\n templateMatcher = /{{\\s?([^{}\\s]*)\\s?}}/g;\n interpolate(expr, params) {\n let result;\n if (typeof expr === 'string') {\n result = this.interpolateString(expr, params);\n }\n else if (typeof expr === 'function') {\n result = this.interpolateFunction(expr, params);\n }\n else {\n // this should not happen, but an unrelated TranslateService test depends on it\n result = expr;\n }\n return result;\n }\n getValue(target, key) {\n let keys = typeof key === 'string' ? key.split('.') : [key];\n key = '';\n do {\n key += keys.shift();\n if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {\n target = target[key];\n key = '';\n }\n else if (!keys.length) {\n target = undefined;\n }\n else {\n key += '.';\n }\n } while (keys.length);\n return target;\n }\n interpolateFunction(fn, params) {\n return fn(params);\n }\n interpolateString(expr, params) {\n if (!params) {\n return expr;\n }\n return expr.replace(this.templateMatcher, (substring, b) => {\n let r = this.getValue(params, b);\n return isDefined(r) ? r : substring;\n });\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateDefaultParser, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateDefaultParser });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateDefaultParser, decorators: [{\n type: Injectable\n }] });\n\nclass TranslateCompiler {\n}\n/**\n * This compiler is just a placeholder that does nothing, in case you don't need a compiler at all\n */\nclass TranslateFakeCompiler extends TranslateCompiler {\n compile(value, lang) {\n return value;\n }\n compileTranslations(translations, lang) {\n return translations;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateFakeCompiler, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateFakeCompiler });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateFakeCompiler, decorators: [{\n type: Injectable\n }] });\n\nclass TranslateStore {\n /**\n * The default lang to fallback when translations are missing on the current lang\n */\n defaultLang;\n /**\n * The lang currently used\n */\n currentLang = this.defaultLang;\n /**\n * a list of translations per lang\n */\n translations = {};\n /**\n * an array of langs\n */\n langs = [];\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n */\n onTranslationChange = new EventEmitter();\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n */\n onLangChange = new EventEmitter();\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n */\n onDefaultLangChange = new EventEmitter();\n}\n\nconst USE_STORE = new InjectionToken('USE_STORE');\nconst USE_DEFAULT_LANG = new InjectionToken('USE_DEFAULT_LANG');\nconst DEFAULT_LANGUAGE = new InjectionToken('DEFAULT_LANGUAGE');\nconst USE_EXTEND = new InjectionToken('USE_EXTEND');\nclass TranslateService {\n store;\n currentLoader;\n compiler;\n parser;\n missingTranslationHandler;\n useDefaultLang;\n isolate;\n extend;\n loadingTranslations;\n pending = false;\n _onTranslationChange = new EventEmitter();\n _onLangChange = new EventEmitter();\n _onDefaultLangChange = new EventEmitter();\n _defaultLang;\n _currentLang;\n _langs = [];\n _translations = {};\n _translationRequests = {};\n /**\n * An EventEmitter to listen to translation change events\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\n * // do something\n * });\n */\n get onTranslationChange() {\n return this.isolate ? this._onTranslationChange : this.store.onTranslationChange;\n }\n /**\n * An EventEmitter to listen to lang change events\n * onLangChange.subscribe((params: LangChangeEvent) => {\n * // do something\n * });\n */\n get onLangChange() {\n return this.isolate ? this._onLangChange : this.store.onLangChange;\n }\n /**\n * An EventEmitter to listen to default lang change events\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\n * // do something\n * });\n */\n get onDefaultLangChange() {\n return this.isolate ? this._onDefaultLangChange : this.store.onDefaultLangChange;\n }\n /**\n * The default lang to fallback when translations are missing on the current lang\n */\n get defaultLang() {\n return this.isolate ? this._defaultLang : this.store.defaultLang;\n }\n set defaultLang(defaultLang) {\n if (this.isolate) {\n this._defaultLang = defaultLang;\n }\n else {\n this.store.defaultLang = defaultLang;\n }\n }\n /**\n * The lang currently used\n */\n get currentLang() {\n return this.isolate ? this._currentLang : this.store.currentLang;\n }\n set currentLang(currentLang) {\n if (this.isolate) {\n this._currentLang = currentLang;\n }\n else {\n this.store.currentLang = currentLang;\n }\n }\n /**\n * an array of langs\n */\n get langs() {\n return this.isolate ? this._langs : this.store.langs;\n }\n set langs(langs) {\n if (this.isolate) {\n this._langs = langs;\n }\n else {\n this.store.langs = langs;\n }\n }\n /**\n * a list of translations per lang\n */\n get translations() {\n return this.isolate ? this._translations : this.store.translations;\n }\n set translations(translations) {\n if (this.isolate) {\n this._translations = translations;\n }\n else {\n this.store.translations = translations;\n }\n }\n /**\n *\n * @param store an instance of the store (that is supposed to be unique)\n * @param currentLoader An instance of the loader currently used\n * @param compiler An instance of the compiler currently used\n * @param parser An instance of the parser currently used\n * @param missingTranslationHandler A handler for missing translations.\n * @param useDefaultLang whether we should use default language translation when current language translation is missing.\n * @param isolate whether this service should use the store or not\n * @param extend To make a child module extend (and use) translations from parent modules.\n * @param defaultLanguage Set the default language using configuration\n */\n constructor(store, currentLoader, compiler, parser, missingTranslationHandler, useDefaultLang = true, isolate = false, extend = false, defaultLanguage) {\n this.store = store;\n this.currentLoader = currentLoader;\n this.compiler = compiler;\n this.parser = parser;\n this.missingTranslationHandler = missingTranslationHandler;\n this.useDefaultLang = useDefaultLang;\n this.isolate = isolate;\n this.extend = extend;\n /** set the default language from configuration */\n if (defaultLanguage) {\n this.setDefaultLang(defaultLanguage);\n }\n }\n /**\n * Sets the default language to use as a fallback\n */\n setDefaultLang(lang) {\n if (lang === this.defaultLang) {\n return;\n }\n let pending = this.retrieveTranslations(lang);\n if (typeof pending !== \"undefined\") {\n // on init set the defaultLang immediately\n if (this.defaultLang == null) {\n this.defaultLang = lang;\n }\n pending.pipe(take(1))\n .subscribe((res) => {\n this.changeDefaultLang(lang);\n });\n }\n else { // we already have this language\n this.changeDefaultLang(lang);\n }\n }\n /**\n * Gets the default language used\n */\n getDefaultLang() {\n return this.defaultLang;\n }\n /**\n * Changes the lang currently used\n */\n use(lang) {\n // don't change the language if the language given is already selected\n if (lang === this.currentLang) {\n return of(this.translations[lang]);\n }\n let pending = this.retrieveTranslations(lang);\n if (typeof pending !== \"undefined\") {\n // on init set the currentLang immediately\n if (!this.currentLang) {\n this.currentLang = lang;\n }\n pending.pipe(take(1))\n .subscribe((res) => {\n this.changeLang(lang);\n });\n return pending;\n }\n else { // we have this language, return an Observable\n this.changeLang(lang);\n return of(this.translations[lang]);\n }\n }\n /**\n * Retrieves the given translations\n */\n retrieveTranslations(lang) {\n let pending;\n // if this language is unavailable or extend is true, ask for it\n if (typeof this.translations[lang] === \"undefined\" || this.extend) {\n this._translationRequests[lang] = this._translationRequests[lang] || this.getTranslation(lang);\n pending = this._translationRequests[lang];\n }\n return pending;\n }\n /**\n * Gets an object of translations for a given language with the current loader\n * and passes it through the compiler\n */\n getTranslation(lang) {\n this.pending = true;\n const loadingTranslations = this.currentLoader.getTranslation(lang).pipe(shareReplay(1), take(1));\n this.loadingTranslations = loadingTranslations.pipe(map((res) => this.compiler.compileTranslations(res, lang)), shareReplay(1), take(1));\n this.loadingTranslations\n .subscribe({\n next: (res) => {\n this.translations[lang] = this.extend && this.translations[lang] ? { ...res, ...this.translations[lang] } : res;\n this.updateLangs();\n this.pending = false;\n },\n error: (err) => {\n this.pending = false;\n }\n });\n return loadingTranslations;\n }\n /**\n * Manually sets an object of translations for a given language\n * after passing it through the compiler\n */\n setTranslation(lang, translations, shouldMerge = false) {\n translations = this.compiler.compileTranslations(translations, lang);\n if ((shouldMerge || this.extend) && this.translations[lang]) {\n this.translations[lang] = mergeDeep(this.translations[lang], translations);\n }\n else {\n this.translations[lang] = translations;\n }\n this.updateLangs();\n this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Returns an array of currently available langs\n */\n getLangs() {\n return this.langs;\n }\n /**\n * Add available langs\n */\n addLangs(langs) {\n langs.forEach((lang) => {\n if (this.langs.indexOf(lang) === -1) {\n this.langs.push(lang);\n }\n });\n }\n /**\n * Update the list of available langs\n */\n updateLangs() {\n this.addLangs(Object.keys(this.translations));\n }\n /**\n * Returns the parsed result of the translations\n */\n getParsedResult(translations, key, interpolateParams) {\n let res;\n if (key instanceof Array) {\n let result = {}, observables = false;\n for (let k of key) {\n result[k] = this.getParsedResult(translations, k, interpolateParams);\n if (isObservable(result[k])) {\n observables = true;\n }\n }\n if (observables) {\n const sources = key.map(k => isObservable(result[k]) ? result[k] : of(result[k]));\n return forkJoin(sources).pipe(map((arr) => {\n let obj = {};\n arr.forEach((value, index) => {\n obj[key[index]] = value;\n });\n return obj;\n }));\n }\n return result;\n }\n if (translations) {\n res = this.parser.interpolate(this.parser.getValue(translations, key), interpolateParams);\n }\n if (typeof res === \"undefined\" && this.defaultLang != null && this.defaultLang !== this.currentLang && this.useDefaultLang) {\n res = this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang], key), interpolateParams);\n }\n if (typeof res === \"undefined\") {\n let params = { key, translateService: this };\n if (typeof interpolateParams !== 'undefined') {\n params.interpolateParams = interpolateParams;\n }\n res = this.missingTranslationHandler.handle(params);\n }\n return typeof res !== \"undefined\" ? res : key;\n }\n /**\n * Gets the translated value of a key (or an array of keys)\n * @returns the translated key, or an object of translated keys\n */\n get(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n // check if we are loading a new translation to use\n if (this.pending) {\n return this.loadingTranslations.pipe(concatMap((res) => {\n res = this.getParsedResult(res, key, interpolateParams);\n return isObservable(res) ? res : of(res);\n }));\n }\n else {\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n return isObservable(res) ? res : of(res);\n }\n }\n /**\n * Returns a stream of translated values of a key (or an array of keys) which updates\n * whenever the translation changes.\n * @returns A stream of the translated key, or an object of translated keys\n */\n getStreamOnTranslationChange(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n return concat(defer(() => this.get(key, interpolateParams)), this.onTranslationChange.pipe(switchMap((event) => {\n const res = this.getParsedResult(event.translations, key, interpolateParams);\n if (typeof res.subscribe === 'function') {\n return res;\n }\n else {\n return of(res);\n }\n })));\n }\n /**\n * Returns a stream of translated values of a key (or an array of keys) which updates\n * whenever the language changes.\n * @returns A stream of the translated key, or an object of translated keys\n */\n stream(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n return concat(defer(() => this.get(key, interpolateParams)), this.onLangChange.pipe(switchMap((event) => {\n const res = this.getParsedResult(event.translations, key, interpolateParams);\n return isObservable(res) ? res : of(res);\n })));\n }\n /**\n * Returns a translation instantly from the internal state of loaded translation.\n * All rules regarding the current language, the preferred language of even fallback languages will be used except any promise handling.\n */\n instant(key, interpolateParams) {\n if (!isDefined(key) || !key.length) {\n throw new Error(`Parameter \"key\" required`);\n }\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\n if (isObservable(res)) {\n if (key instanceof Array) {\n let obj = {};\n key.forEach((value, index) => {\n obj[key[index]] = key[index];\n });\n return obj;\n }\n return key;\n }\n else {\n return res;\n }\n }\n /**\n * Sets the translated value of a key, after compiling it\n */\n set(key, value, lang = this.currentLang) {\n this.translations[lang][key] = this.compiler.compile(value, lang);\n this.updateLangs();\n this.onTranslationChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Changes the current lang\n */\n changeLang(lang) {\n this.currentLang = lang;\n this.onLangChange.emit({ lang: lang, translations: this.translations[lang] });\n // if there is no default lang, use the one that we just set\n if (this.defaultLang == null) {\n this.changeDefaultLang(lang);\n }\n }\n /**\n * Changes the default lang\n */\n changeDefaultLang(lang) {\n this.defaultLang = lang;\n this.onDefaultLangChange.emit({ lang: lang, translations: this.translations[lang] });\n }\n /**\n * Allows to reload the lang file from the file\n */\n reloadLang(lang) {\n this.resetLang(lang);\n return this.getTranslation(lang);\n }\n /**\n * Deletes inner translation\n */\n resetLang(lang) {\n this._translationRequests[lang] = undefined;\n this.translations[lang] = undefined;\n }\n /**\n * Returns the language code name from the browser, e.g. \"de\"\n */\n getBrowserLang() {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined;\n }\n let browserLang = window.navigator.languages ? window.navigator.languages[0] : null;\n browserLang = browserLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n if (typeof browserLang === 'undefined') {\n return undefined;\n }\n if (browserLang.indexOf('-') !== -1) {\n browserLang = browserLang.split('-')[0];\n }\n if (browserLang.indexOf('_') !== -1) {\n browserLang = browserLang.split('_')[0];\n }\n return browserLang;\n }\n /**\n * Returns the culture language code name from the browser, e.g. \"de-DE\"\n */\n getBrowserCultureLang() {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined;\n }\n let browserCultureLang = window.navigator.languages ? window.navigator.languages[0] : null;\n browserCultureLang = browserCultureLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\n return browserCultureLang;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateService, deps: [{ token: TranslateStore }, { token: TranslateLoader }, { token: TranslateCompiler }, { token: TranslateParser }, { token: MissingTranslationHandler }, { token: USE_DEFAULT_LANG }, { token: USE_STORE }, { token: USE_EXTEND }, { token: DEFAULT_LANGUAGE }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: TranslateStore }, { type: TranslateLoader }, { type: TranslateCompiler }, { type: TranslateParser }, { type: MissingTranslationHandler }, { type: undefined, decorators: [{\n type: Inject,\n args: [USE_DEFAULT_LANG]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [USE_STORE]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [USE_EXTEND]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_LANGUAGE]\n }] }]; } });\n\nclass TranslateDirective {\n translateService;\n element;\n _ref;\n key;\n lastParams;\n currentParams;\n onLangChangeSub;\n onDefaultLangChangeSub;\n onTranslationChangeSub;\n set translate(key) {\n if (key) {\n this.key = key;\n this.checkNodes();\n }\n }\n set translateParams(params) {\n if (!equals(this.currentParams, params)) {\n this.currentParams = params;\n this.checkNodes(true);\n }\n }\n constructor(translateService, element, _ref) {\n this.translateService = translateService;\n this.element = element;\n this._ref = _ref;\n // subscribe to onTranslationChange event, in case the translations of the current lang change\n if (!this.onTranslationChangeSub) {\n this.onTranslationChangeSub = this.translateService.onTranslationChange.subscribe((event) => {\n if (event.lang === this.translateService.currentLang) {\n this.checkNodes(true, event.translations);\n }\n });\n }\n // subscribe to onLangChange event, in case the language changes\n if (!this.onLangChangeSub) {\n this.onLangChangeSub = this.translateService.onLangChange.subscribe((event) => {\n this.checkNodes(true, event.translations);\n });\n }\n // subscribe to onDefaultLangChange event, in case the default language changes\n if (!this.onDefaultLangChangeSub) {\n this.onDefaultLangChangeSub = this.translateService.onDefaultLangChange.subscribe((event) => {\n this.checkNodes(true);\n });\n }\n }\n ngAfterViewChecked() {\n this.checkNodes();\n }\n checkNodes(forceUpdate = false, translations) {\n let nodes = this.element.nativeElement.childNodes;\n // if the element is empty\n if (!nodes.length) {\n // we add the key as content\n this.setContent(this.element.nativeElement, this.key);\n nodes = this.element.nativeElement.childNodes;\n }\n for (let i = 0; i < nodes.length; ++i) {\n let node = nodes[i];\n if (node.nodeType === 3) { // node type 3 is a text node\n let key;\n if (forceUpdate) {\n node.lastKey = null;\n }\n if (isDefined(node.lookupKey)) {\n key = node.lookupKey;\n }\n else if (this.key) {\n key = this.key;\n }\n else {\n let content = this.getContent(node);\n let trimmedContent = content.trim();\n if (trimmedContent.length) {\n node.lookupKey = trimmedContent;\n // we want to use the content as a key, not the translation value\n if (content !== node.currentValue) {\n key = trimmedContent;\n // the content was changed from the user, we'll use it as a reference if needed\n node.originalContent = content || node.originalContent;\n }\n else if (node.originalContent) { // the content seems ok, but the lang has changed\n // the current content is the translation, not the key, use the last real content as key\n key = node.originalContent.trim();\n }\n else if (content !== node.currentValue) {\n // we want to use the content as a key, not the translation value\n key = trimmedContent;\n // the content was changed from the user, we'll use it as a reference if needed\n node.originalContent = content || node.originalContent;\n }\n }\n }\n this.updateValue(key, node, translations);\n }\n }\n }\n updateValue(key, node, translations) {\n if (key) {\n if (node.lastKey === key && this.lastParams === this.currentParams) {\n return;\n }\n this.lastParams = this.currentParams;\n let onTranslation = (res) => {\n if (res !== key) {\n node.lastKey = key;\n }\n if (!node.originalContent) {\n node.originalContent = this.getContent(node);\n }\n node.currentValue = isDefined(res) ? res : (node.originalContent || key);\n // we replace in the original content to preserve spaces that we might have trimmed\n this.setContent(node, this.key ? node.currentValue : node.originalContent.replace(key, node.currentValue));\n this._ref.markForCheck();\n };\n if (isDefined(translations)) {\n let res = this.translateService.getParsedResult(translations, key, this.currentParams);\n if (isObservable(res)) {\n res.subscribe({ next: onTranslation });\n }\n else {\n onTranslation(res);\n }\n }\n else {\n this.translateService.get(key, this.currentParams).subscribe(onTranslation);\n }\n }\n }\n getContent(node) {\n return isDefined(node.textContent) ? node.textContent : node.data;\n }\n setContent(node, content) {\n if (isDefined(node.textContent)) {\n node.textContent = content;\n }\n else {\n node.data = content;\n }\n }\n ngOnDestroy() {\n if (this.onLangChangeSub) {\n this.onLangChangeSub.unsubscribe();\n }\n if (this.onDefaultLangChangeSub) {\n this.onDefaultLangChangeSub.unsubscribe();\n }\n if (this.onTranslationChangeSub) {\n this.onTranslationChangeSub.unsubscribe();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateDirective, deps: [{ token: TranslateService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.0.0\", type: TranslateDirective, selector: \"[translate],[ngx-translate]\", inputs: { translate: \"translate\", translateParams: \"translateParams\" }, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[translate],[ngx-translate]'\n }]\n }], ctorParameters: function () { return [{ type: TranslateService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { translate: [{\n type: Input\n }], translateParams: [{\n type: Input\n }] } });\n\nclass TranslatePipe {\n translate;\n _ref;\n value = '';\n lastKey = null;\n lastParams = [];\n onTranslationChange;\n onLangChange;\n onDefaultLangChange;\n constructor(translate, _ref) {\n this.translate = translate;\n this._ref = _ref;\n }\n updateValue(key, interpolateParams, translations) {\n let onTranslation = (res) => {\n this.value = res !== undefined ? res : key;\n this.lastKey = key;\n this._ref.markForCheck();\n };\n if (translations) {\n let res = this.translate.getParsedResult(translations, key, interpolateParams);\n if (isObservable(res.subscribe)) {\n res.subscribe(onTranslation);\n }\n else {\n onTranslation(res);\n }\n }\n this.translate.get(key, interpolateParams).subscribe(onTranslation);\n }\n transform(query, ...args) {\n if (!query || !query.length) {\n return query;\n }\n // if we ask another time for the same key, return the last value\n if (equals(query, this.lastKey) && equals(args, this.lastParams)) {\n return this.value;\n }\n let interpolateParams = undefined;\n if (isDefined(args[0]) && args.length) {\n if (typeof args[0] === 'string' && args[0].length) {\n // we accept objects written in the template such as {n:1}, {'n':1}, {n:'v'}\n // which is why we might need to change it to real JSON objects such as {\"n\":1} or {\"n\":\"v\"}\n let validArgs = args[0]\n .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, '\"$2\":')\n .replace(/:(\\s)?(\\')(.*?)(\\')/g, ':\"$3\"');\n try {\n interpolateParams = JSON.parse(validArgs);\n }\n catch (e) {\n throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\n }\n }\n else if (typeof args[0] === 'object' && !Array.isArray(args[0])) {\n interpolateParams = args[0];\n }\n }\n // store the query, in case it changes\n this.lastKey = query;\n // store the params, in case they change\n this.lastParams = args;\n // set the value\n this.updateValue(query, interpolateParams);\n // if there is a subscription to onLangChange, clean it\n this._dispose();\n // subscribe to onTranslationChange event, in case the translations change\n if (!this.onTranslationChange) {\n this.onTranslationChange = this.translate.onTranslationChange.subscribe((event) => {\n if (this.lastKey && event.lang === this.translate.currentLang) {\n this.lastKey = null;\n this.updateValue(query, interpolateParams, event.translations);\n }\n });\n }\n // subscribe to onLangChange event, in case the language changes\n if (!this.onLangChange) {\n this.onLangChange = this.translate.onLangChange.subscribe((event) => {\n if (this.lastKey) {\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n this.updateValue(query, interpolateParams, event.translations);\n }\n });\n }\n // subscribe to onDefaultLangChange event, in case the default language changes\n if (!this.onDefaultLangChange) {\n this.onDefaultLangChange = this.translate.onDefaultLangChange.subscribe(() => {\n if (this.lastKey) {\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\n this.updateValue(query, interpolateParams);\n }\n });\n }\n return this.value;\n }\n /**\n * Clean any existing subscription to change events\n */\n _dispose() {\n if (typeof this.onTranslationChange !== 'undefined') {\n this.onTranslationChange.unsubscribe();\n this.onTranslationChange = undefined;\n }\n if (typeof this.onLangChange !== 'undefined') {\n this.onLangChange.unsubscribe();\n this.onLangChange = undefined;\n }\n if (typeof this.onDefaultLangChange !== 'undefined') {\n this.onDefaultLangChange.unsubscribe();\n this.onDefaultLangChange = undefined;\n }\n }\n ngOnDestroy() {\n this._dispose();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslatePipe, deps: [{ token: TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\n static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslatePipe, name: \"translate\", pure: false });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslatePipe });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslatePipe, decorators: [{\n type: Injectable\n }, {\n type: Pipe,\n args: [{\n name: 'translate',\n pure: false // required to update the value when the promise is resolved\n }]\n }], ctorParameters: function () { return [{ type: TranslateService }, { type: i0.ChangeDetectorRef }]; } });\n\nclass TranslateModule {\n /**\n * Use this method in your root module to provide the TranslateService\n */\n static forRoot(config = {}) {\n return {\n ngModule: TranslateModule,\n providers: [\n config.loader || { provide: TranslateLoader, useClass: TranslateFakeLoader },\n config.compiler || { provide: TranslateCompiler, useClass: TranslateFakeCompiler },\n config.parser || { provide: TranslateParser, useClass: TranslateDefaultParser },\n config.missingTranslationHandler || { provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler },\n TranslateStore,\n { provide: USE_STORE, useValue: config.isolate },\n { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\n { provide: USE_EXTEND, useValue: config.extend },\n { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\n TranslateService\n ]\n };\n }\n /**\n * Use this method in your other (non root) modules to import the directive/pipe\n */\n static forChild(config = {}) {\n return {\n ngModule: TranslateModule,\n providers: [\n config.loader || { provide: TranslateLoader, useClass: TranslateFakeLoader },\n config.compiler || { provide: TranslateCompiler, useClass: TranslateFakeCompiler },\n config.parser || { provide: TranslateParser, useClass: TranslateDefaultParser },\n config.missingTranslationHandler || { provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler },\n { provide: USE_STORE, useValue: config.isolate },\n { provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang },\n { provide: USE_EXTEND, useValue: config.extend },\n { provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage },\n TranslateService\n ]\n };\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateModule, declarations: [TranslatePipe,\n TranslateDirective], exports: [TranslatePipe,\n TranslateDirective] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateModule });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0\", ngImport: i0, type: TranslateModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n TranslatePipe,\n TranslateDirective\n ],\n exports: [\n TranslatePipe,\n TranslateDirective\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DEFAULT_LANGUAGE, FakeMissingTranslationHandler, MissingTranslationHandler, TranslateCompiler, TranslateDefaultParser, TranslateDirective, TranslateFakeCompiler, TranslateFakeLoader, TranslateLoader, TranslateModule, TranslateParser, TranslatePipe, TranslateService, TranslateStore, USE_DEFAULT_LANG, USE_EXTEND, USE_STORE };\n\n"],"mappings":"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","names":[],"x_google_ignoreList":[0]}