UNPKG

@ngneat/transloco

Version:

The internationalization (i18n) library for Angular

201 lines 15.3 kB
/** * @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'; var TranslocoPipe = /** @class */ (function () { function TranslocoPipe(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 // null is for handling strict mode + async pipe types https://github.com/ngneat/transloco/issues/311 /** * @param {?} key * @param {?=} params * @param {?=} inlineLang * @return {?} */ TranslocoPipe.prototype.transform = // null is for handling strict mode + async pipe types https://github.com/ngneat/transloco/issues/311 /** * @param {?} key * @param {?=} params * @param {?=} inlineLang * @return {?} */ function (key, params, inlineLang) { var _this = this; if (!key) { return key; } /** @type {?} */ var 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 {?} */ function (activeLang) { /** @type {?} */ var lang = _this.langResolver.resolve({ inline: inlineLang, provider: _this.providerLang, active: activeLang }); return Array.isArray(_this.providerScope) ? forkJoin(((/** @type {?} */ (_this.providerScope))).map((/** * @param {?} providerScope * @return {?} */ function (providerScope) { return _this.resolveScope(lang, providerScope); }))) : _this.resolveScope(lang, _this.providerScope); })), listenOrNotOperator(this.listenToLangChange)) .subscribe((/** * @return {?} */ function () { return _this.updateValue(key, params); })); return this.lastValue; }; /** * @return {?} */ TranslocoPipe.prototype.ngOnDestroy = /** * @return {?} */ function () { this.subscription && this.subscription.unsubscribe(); }; /** * @private * @param {?} key * @param {?=} params * @return {?} */ TranslocoPipe.prototype.updateValue = /** * @private * @param {?} key * @param {?=} params * @return {?} */ function (key, params) { /** @type {?} */ var lang = this.langResolver.resolveLangBasedOnScope(this.path); this.lastValue = this.translocoService.translate(key, params, lang); this.cdr.markForCheck(); }; /** * @private * @param {?} lang * @param {?} providerScope * @return {?} */ TranslocoPipe.prototype.resolveScope = /** * @private * @param {?} lang * @param {?} providerScope * @return {?} */ function (lang, providerScope) { /** @type {?} */ var resolvedScope = this.scopeResolver.resolve({ inline: undefined, provider: providerScope }); this.path = this.langResolver.resolveLangPath(lang, resolvedScope); /** @type {?} */ var inlineLoader = resolveInlineLoader(providerScope, resolvedScope); return this.translocoService._loadDependencies(this.path, inlineLoader); }; TranslocoPipe.decorators = [ { type: Pipe, args: [{ name: 'transloco', pure: false },] } ]; /** @nocollapse */ TranslocoPipe.ctorParameters = function () { return [ { type: TranslocoService }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [TRANSLOCO_SCOPE,] }] }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [TRANSLOCO_LANG,] }] }, { type: ChangeDetectorRef } ]; }; return TranslocoPipe; }()); export { TranslocoPipe }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsb2NvLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmduZWF0L3RyYW5zbG9jby8iLCJzb3VyY2VzIjpbImxpYi90cmFuc2xvY28ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQWEsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQ7SUFhRSx1QkFDVSxnQkFBa0MsRUFDRyxhQUF5QyxFQUMxQyxZQUEyQixFQUMvRCxHQUFzQjtRQUh0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ0csa0JBQWEsR0FBYixhQUFhLENBQTRCO1FBQzFDLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBQy9ELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBWnhCLGlCQUFZLEdBQXdCLElBQUksQ0FBQztRQUN6QyxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBSXZCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxrQkFBYSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FB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QUFDLENBQUM7O1lBQzdELFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUUsQ0FBQzs7Z0JBMUVGLElBQUksU0FBQztvQkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsSUFBSSxFQUFFLEtBQUs7aUJBQ1o7Ozs7Z0JBYlEsZ0JBQWdCO2dEQXlCcEIsUUFBUSxZQUFJLE1BQU0sU0FBQyxlQUFlO2dEQUNsQyxRQUFRLFlBQUksTUFBTSxTQUFDLGNBQWM7Z0JBM0I3QixpQkFBaUI7O0lBc0YxQixvQkFBQztDQUFBLEFBM0VELElBMkVDO1NBdkVZLGFBQWE7Ozs7OztJQUN4QixxQ0FBaUQ7Ozs7O0lBQ2pELGtDQUErQjs7Ozs7SUFDL0IsZ0NBQW9DOzs7OztJQUNwQywyQ0FBb0M7Ozs7O0lBQ3BDLDZCQUFxQjs7Ozs7SUFDckIscUNBQTBDOzs7OztJQUMxQyxzQ0FBaUU7Ozs7O0lBRy9ELHlDQUEwQzs7Ozs7SUFDMUMsc0NBQXNGOzs7OztJQUN0RixxQ0FBdUU7Ozs7O0lBQ3ZFLDRCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBJbmplY3QsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICcuL3RyYW5zbG9jby5zZXJ2aWNlJztcbmltcG9ydCB7IEhhc2hNYXAsIE1heWJlQXJyYXksIFRyYW5zbGF0aW9uLCBUcmFuc2xvY29TY29wZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVFJBTlNMT0NPX1NDT1BFIH0gZnJvbSAnLi90cmFuc2xvY28tc2NvcGUnO1xuaW1wb3J0IHsgVFJBTlNMT0NPX0xBTkcgfSBmcm9tICcuL3RyYW5zbG9jby1sYW5nJztcbmltcG9ydCB7IGxpc3Rlbk9yTm90T3BlcmF0b3IsIHJlc29sdmVJbmxpbmVMb2FkZXIsIHNob3VsZExpc3RlblRvTGFuZ0NoYW5nZXMgfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQgeyBMYW5nUmVzb2x2ZXIgfSBmcm9tICcuL2xhbmctcmVzb2x2ZXInO1xuaW1wb3J0IHsgU2NvcGVSZXNvbHZlciB9IGZyb20gJy4vc2NvcGUtcmVzb2x2ZXInO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICd0cmFuc2xvY28nLFxuICBwdXJlOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xvY29QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxhc3RWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgbGFzdEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxpc3RlblRvTGFuZ0NoYW5nZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBwYXRoOiBzdHJpbmc7XG4gIHByaXZhdGUgbGFuZ1Jlc29sdmVyID0gbmV3IExhbmdSZXNvbHZlcigpO1xuICBwcml2YXRlIHNjb3BlUmVzb2x2ZXIgPSBuZXcgU2NvcGVSZXNvbHZlcih0aGlzLnRyYW5zbG9jb1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRSQU5TTE9DT19TQ09QRSkgcHJpdmF0ZSBwcm92aWRlclNjb3BlOiBNYXliZUFycmF5PFRyYW5zbG9jb1Njb3BlPixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRSQU5TTE9DT19MQU5HKSBwcml2YXRlIHByb3ZpZGVyTGFuZzogc3RyaW5nIHwgbnVsbCxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5saXN0ZW5Ub0xhbmdDaGFuZ2UgPSBzaG91bGRMaXN0ZW5Ub0xhbmdDaGFuZ2VzKHRoaXMudHJhbnNsb2NvU2VydmljZSwgdGhpcy5wcm92aWRlckxhbmcpO1xuICB9XG5cbiAgLy8gbnVsbCBpcyBmb3IgaGFuZGxpbmcgc3RyaWN0IG1vZGUgKyBhc3luYyBwaXBlIHR5cGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9uZ25lYXQvdHJhbnNsb2NvL2lzc3Vlcy8zMTFcbiAgdHJhbnNmb3JtKGtleTogc3RyaW5nIHwgbnVsbCwgcGFyYW1zPzogSGFzaE1hcCB8IHVuZGVmaW5lZCwgaW5saW5lTGFuZz86IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5TmFtZSA9IHBhcmFtcyA/IGAke2tleX0ke0pTT04uc3RyaW5naWZ5KHBhcmFtcyl9YCA6IGtleTtcblxuICAgIGlmIChrZXlOYW1lID09PSB0aGlzLmxhc3RLZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhc3RWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3RLZXkgPSBrZXlOYW1lO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uICYmIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudHJhbnNsb2NvU2VydmljZS5sYW5nQ2hhbmdlcyRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoYWN0aXZlTGFuZyA9PiB7XG4gICAgICAgICAgY29uc3QgbGFuZyA9IHRoaXMubGFuZ1Jlc29sdmVyLnJlc29sdmUoe1xuICAgICAgICAgICAgaW5saW5lOiBpbmxpbmVMYW5nLFxuICAgICAgICAgICAgcHJvdmlkZXI6IHRoaXMucHJvdmlkZXJMYW5nLFxuICAgICAgICAgICAgYWN0aXZlOiBhY3RpdmVMYW5nXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnByb3ZpZGVyU2NvcGUpXG4gICAgICAgICAgICA/IGZvcmtKb2luKFxuICAgICAgICAgICAgICAgICg8VHJhbnNsb2NvU2NvcGVbXT50aGlzLnByb3ZpZGVyU2NvcGUpLm1hcChwcm92aWRlclNjb3BlID0+IHRoaXMucmVzb2x2ZVNjb3BlKGxhbmcsIHByb3ZpZGVyU2NvcGUpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMucmVzb2x2ZVNjb3BlKGxhbmcsIHRoaXMucHJvdmlkZXJTY29wZSk7XG4gICAgICAgIH0pLFxuICAgICAgICBsaXN0ZW5Pck5vdE9wZXJhdG9yKHRoaXMubGlzdGVuVG9MYW5nQ2hhbmdlKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVZhbHVlKGtleSwgcGFyYW1zKSk7XG5cbiAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiAmJiB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZShrZXk6IHN0cmluZywgcGFyYW1zPzogSGFzaE1hcCB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLmxhbmdSZXNvbHZlci5yZXNvbHZlTGFuZ0Jhc2VkT25TY29wZSh0aGlzLnBhdGgpO1xuICAgIHRoaXMubGFzdFZhbHVlID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZShrZXksIHBhcmFtcywgbGFuZyk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVTY29wZShsYW5nOiBzdHJpbmcsIHByb3ZpZGVyU2NvcGU6IFRyYW5zbG9jb1Njb3BlKTogT2JzZXJ2YWJsZTxUcmFuc2xhdGlvbiB8IFRyYW5zbGF0aW9uW10+IHtcbiAgICBsZXQgcmVzb2x2ZWRTY29wZSA9IHRoaXMuc2NvcGVSZXNvbHZlci5yZXNvbHZlKHsgaW5saW5lOiB1bmRlZmluZWQsIHByb3ZpZGVyOiBwcm92aWRlclNjb3BlIH0pO1xuICAgIHRoaXMucGF0aCA9IHRoaXMubGFuZ1Jlc29sdmVyLnJlc29sdmVMYW5nUGF0aChsYW5nLCByZXNvbHZlZFNjb3BlKTtcbiAgICBjb25zdCBpbmxpbmVMb2FkZXIgPSByZXNvbHZlSW5saW5lTG9hZGVyKHByb3ZpZGVyU2NvcGUsIHJlc29sdmVkU2NvcGUpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UuX2xvYWREZXBlbmRlbmNpZXModGhpcy5wYXRoLCBpbmxpbmVMb2FkZXIpO1xuICB9XG59XG4iXX0=