@ngneat/transloco
Version:
The internationalization (i18n) library for Angular
180 lines • 14.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/transloco.pipe.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ChangeDetectorRef, Inject, Optional, Pipe } from '@angular/core';
import { TranslocoService } from './transloco.service';
import { switchMap } from 'rxjs/operators';
import { forkJoin } from 'rxjs';
import { TRANSLOCO_SCOPE } from './transloco-scope';
import { TRANSLOCO_LANG } from './transloco-lang';
import { listenOrNotOperator, resolveInlineLoader, shouldListenToLangChanges } from './shared';
import { LangResolver } from './lang-resolver';
import { ScopeResolver } from './scope-resolver';
export class TranslocoPipe {
/**
* @param {?} translocoService
* @param {?} providerScope
* @param {?} providerLang
* @param {?} cdr
*/
constructor(translocoService, providerScope, providerLang, cdr) {
this.translocoService = translocoService;
this.providerScope = providerScope;
this.providerLang = providerLang;
this.cdr = cdr;
this.subscription = null;
this.lastValue = '';
this.langResolver = new LangResolver();
this.scopeResolver = new ScopeResolver(this.translocoService);
this.listenToLangChange = shouldListenToLangChanges(this.translocoService, this.providerLang);
}
// null is for handling strict mode + async pipe types https://github.com/ngneat/transloco/issues/311
/**
* @param {?} key
* @param {?=} params
* @param {?=} inlineLang
* @return {?}
*/
transform(key, params, inlineLang) {
if (!key) {
return key;
}
/** @type {?} */
const keyName = params ? `${key}${JSON.stringify(params)}` : key;
if (keyName === this.lastKey) {
return this.lastValue;
}
this.lastKey = keyName;
this.subscription && this.subscription.unsubscribe();
this.subscription = this.translocoService.langChanges$
.pipe(switchMap((/**
* @param {?} activeLang
* @return {?}
*/
activeLang => {
/** @type {?} */
const lang = this.langResolver.resolve({
inline: inlineLang,
provider: this.providerLang,
active: activeLang
});
return Array.isArray(this.providerScope)
? forkJoin(((/** @type {?} */ (this.providerScope))).map((/**
* @param {?} providerScope
* @return {?}
*/
providerScope => this.resolveScope(lang, providerScope))))
: this.resolveScope(lang, this.providerScope);
})), listenOrNotOperator(this.listenToLangChange))
.subscribe((/**
* @return {?}
*/
() => this.updateValue(key, params)));
return this.lastValue;
}
/**
* @return {?}
*/
ngOnDestroy() {
this.subscription && this.subscription.unsubscribe();
}
/**
* @private
* @param {?} key
* @param {?=} params
* @return {?}
*/
updateValue(key, params) {
/** @type {?} */
const lang = this.langResolver.resolveLangBasedOnScope(this.path);
this.lastValue = this.translocoService.translate(key, params, lang);
this.cdr.markForCheck();
}
/**
* @private
* @param {?} lang
* @param {?} providerScope
* @return {?}
*/
resolveScope(lang, providerScope) {
/** @type {?} */
let resolvedScope = this.scopeResolver.resolve({ inline: undefined, provider: providerScope });
this.path = this.langResolver.resolveLangPath(lang, resolvedScope);
/** @type {?} */
const inlineLoader = resolveInlineLoader(providerScope, resolvedScope);
return this.translocoService._loadDependencies(this.path, inlineLoader);
}
}
TranslocoPipe.decorators = [
{ type: Pipe, args: [{
name: 'transloco',
pure: false
},] }
];
/** @nocollapse */
TranslocoPipe.ctorParameters = () => [
{ type: TranslocoService },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [TRANSLOCO_SCOPE,] }] },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [TRANSLOCO_LANG,] }] },
{ type: ChangeDetectorRef }
];
if (false) {
/**
* @type {?}
* @private
*/
TranslocoPipe.prototype.subscription;
/**
* @type {?}
* @private
*/
TranslocoPipe.prototype.lastValue;
/**
* @type {?}
* @private
*/
TranslocoPipe.prototype.lastKey;
/**
* @type {?}
* @private
*/
TranslocoPipe.prototype.listenToLangChange;
/**
* @type {?}
* @private
*/
TranslocoPipe.prototype.path;
/**
* @type {?}
* @private
*/
TranslocoPipe.prototype.langResolver;
/**
* @type {?}
* @private
*/
TranslocoPipe.prototype.scopeResolver;
/**
* @type {?}
* @private
*/
TranslocoPipe.prototype.translocoService;
/**
* @type {?}
* @private
*/
TranslocoPipe.prototype.providerScope;
/**
* @type {?}
* @private
*/
TranslocoPipe.prototype.providerLang;
/**
* @type {?}
* @private
*/
TranslocoPipe.prototype.cdr;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmduZWF0L3RyYW5zbG9jby8iLCJzb3VyY2VzIjpbImxpYi90cmFuc2xvY28ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQWEsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFNakQsTUFBTSxPQUFPLGFBQWE7Ozs7Ozs7SUFTeEIsWUFDVSxnQkFBa0MsRUFDRyxhQUF5QyxFQUMxQyxZQUEyQixFQUMvRCxHQUFzQjtRQUh0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ0csa0JBQWEsR0FBYixhQUFhLENBQTRCO1FBQzFDLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBQy9ELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBWnhCLGlCQUFZLEdBQXdCLElBQUksQ0FBQztRQUN6QyxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBSXZCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxrQkFBYSxHQUFHLElBQUksYUFBYSxDQUFD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dEUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMxRSxDQUFDOzs7WUExRUYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxXQUFXO2dCQUNqQixJQUFJLEVBQUUsS0FBSzthQUNaOzs7O1lBYlEsZ0JBQWdCOzRDQXlCcEIsUUFBUSxZQUFJLE1BQU0sU0FBQyxlQUFlOzRDQUNsQyxRQUFRLFlBQUksTUFBTSxTQUFDLGNBQWM7WUEzQjdCLGlCQUFpQjs7Ozs7OztJQWdCeEIscUNBQWlEOzs7OztJQUNqRCxrQ0FBK0I7Ozs7O0lBQy9CLGdDQUFvQzs7Ozs7SUFDcEMsMkNBQW9DOzs7OztJQUNwQyw2QkFBcUI7Ozs7O0lBQ3JCLHFDQUEwQzs7Ozs7SUFDMUMsc0NBQWlFOzs7OztJQUcvRCx5Q0FBMEM7Ozs7O0lBQzFDLHNDQUFzRjs7Ozs7SUFDdEYscUNBQXVFOzs7OztJQUN2RSw0QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xvY28uc2VydmljZSc7XG5pbXBvcnQgeyBIYXNoTWFwLCBNYXliZUFycmF5LCBUcmFuc2xhdGlvbiwgVHJhbnNsb2NvU2NvcGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRSQU5TTE9DT19TQ09QRSB9IGZyb20gJy4vdHJhbnNsb2NvLXNjb3BlJztcbmltcG9ydCB7IFRSQU5TTE9DT19MQU5HIH0gZnJvbSAnLi90cmFuc2xvY28tbGFuZyc7XG5pbXBvcnQgeyBsaXN0ZW5Pck5vdE9wZXJhdG9yLCByZXNvbHZlSW5saW5lTG9hZGVyLCBzaG91bGRMaXN0ZW5Ub0xhbmdDaGFuZ2VzIH0gZnJvbSAnLi9zaGFyZWQnO1xuaW1wb3J0IHsgTGFuZ1Jlc29sdmVyIH0gZnJvbSAnLi9sYW5nLXJlc29sdmVyJztcbmltcG9ydCB7IFNjb3BlUmVzb2x2ZXIgfSBmcm9tICcuL3Njb3BlLXJlc29sdmVyJztcblxuQFBpcGUoe1xuICBuYW1lOiAndHJhbnNsb2NvJyxcbiAgcHVyZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNsb2NvUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsYXN0VmFsdWU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGxhc3RLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsaXN0ZW5Ub0xhbmdDaGFuZ2U6IGJvb2xlYW47XG4gIHByaXZhdGUgcGF0aDogc3RyaW5nO1xuICBwcml2YXRlIGxhbmdSZXNvbHZlciA9IG5ldyBMYW5nUmVzb2x2ZXIoKTtcbiAgcHJpdmF0ZSBzY29wZVJlc29sdmVyID0gbmV3IFNjb3BlUmVzb2x2ZXIodGhpcy50cmFuc2xvY29TZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUUkFOU0xPQ09fU0NPUEUpIHByaXZhdGUgcHJvdmlkZXJTY29wZTogTWF5YmVBcnJheTxUcmFuc2xvY29TY29wZT4sXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUUkFOU0xPQ09fTEFORykgcHJpdmF0ZSBwcm92aWRlckxhbmc6IHN0cmluZyB8IG51bGwsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMubGlzdGVuVG9MYW5nQ2hhbmdlID0gc2hvdWxkTGlzdGVuVG9MYW5nQ2hhbmdlcyh0aGlzLnRyYW5zbG9jb1NlcnZpY2UsIHRoaXMucHJvdmlkZXJMYW5nKTtcbiAgfVxuXG4gIC8vIG51bGwgaXMgZm9yIGhhbmRsaW5nIHN0cmljdCBtb2RlICsgYXN5bmMgcGlwZSB0eXBlcyBodHRwczovL2dpdGh1Yi5jb20vbmduZWF0L3RyYW5zbG9jby9pc3N1ZXMvMzExXG4gIHRyYW5zZm9ybShrZXk6IHN0cmluZyB8IG51bGwsIHBhcmFtcz86IEhhc2hNYXAgfCB1bmRlZmluZWQsIGlubGluZUxhbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICgha2V5KSB7XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH1cblxuICAgIGNvbnN0IGtleU5hbWUgPSBwYXJhbXMgPyBgJHtrZXl9JHtKU09OLnN0cmluZ2lmeShwYXJhbXMpfWAgOiBrZXk7XG5cbiAgICBpZiAoa2V5TmFtZSA9PT0gdGhpcy5sYXN0S2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0S2V5ID0ga2V5TmFtZTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiAmJiB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UubGFuZ0NoYW5nZXMkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGFjdGl2ZUxhbmcgPT4ge1xuICAgICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLmxhbmdSZXNvbHZlci5yZXNvbHZlKHtcbiAgICAgICAgICAgIGlubGluZTogaW5saW5lTGFuZyxcbiAgICAgICAgICAgIHByb3ZpZGVyOiB0aGlzLnByb3ZpZGVyTGFuZyxcbiAgICAgICAgICAgIGFjdGl2ZTogYWN0aXZlTGFuZ1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5wcm92aWRlclNjb3BlKVxuICAgICAgICAgICAgPyBmb3JrSm9pbihcbiAgICAgICAgICAgICAgICAoPFRyYW5zbG9jb1Njb3BlW10+dGhpcy5wcm92aWRlclNjb3BlKS5tYXAocHJvdmlkZXJTY29wZSA9PiB0aGlzLnJlc29sdmVTY29wZShsYW5nLCBwcm92aWRlclNjb3BlKSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiB0aGlzLnJlc29sdmVTY29wZShsYW5nLCB0aGlzLnByb3ZpZGVyU2NvcGUpO1xuICAgICAgICB9KSxcbiAgICAgICAgbGlzdGVuT3JOb3RPcGVyYXRvcih0aGlzLmxpc3RlblRvTGFuZ0NoYW5nZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVWYWx1ZShrZXksIHBhcmFtcykpO1xuXG4gICAgcmV0dXJuIHRoaXMubGFzdFZhbHVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gJiYgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUoa2V5OiBzdHJpbmcsIHBhcmFtcz86IEhhc2hNYXAgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBsYW5nID0gdGhpcy5sYW5nUmVzb2x2ZXIucmVzb2x2ZUxhbmdCYXNlZE9uU2NvcGUodGhpcy5wYXRoKTtcbiAgICB0aGlzLmxhc3RWYWx1ZSA9IHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoa2V5LCBwYXJhbXMsIGxhbmcpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlU2NvcGUobGFuZzogc3RyaW5nLCBwcm92aWRlclNjb3BlOiBUcmFuc2xvY29TY29wZSk6IE9ic2VydmFibGU8VHJhbnNsYXRpb24gfCBUcmFuc2xhdGlvbltdPiB7XG4gICAgbGV0IHJlc29sdmVkU2NvcGUgPSB0aGlzLnNjb3BlUmVzb2x2ZXIucmVzb2x2ZSh7IGlubGluZTogdW5kZWZpbmVkLCBwcm92aWRlcjogcHJvdmlkZXJTY29wZSB9KTtcbiAgICB0aGlzLnBhdGggPSB0aGlzLmxhbmdSZXNvbHZlci5yZXNvbHZlTGFuZ1BhdGgobGFuZywgcmVzb2x2ZWRTY29wZSk7XG4gICAgY29uc3QgaW5saW5lTG9hZGVyID0gcmVzb2x2ZUlubGluZUxvYWRlcihwcm92aWRlclNjb3BlLCByZXNvbHZlZFNjb3BlKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLl9sb2FkRGVwZW5kZW5jaWVzKHRoaXMucGF0aCwgaW5saW5lTG9hZGVyKTtcbiAgfVxufVxuIl19