UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

69 lines 8.69 kB
import { ThemeService } from '@alauda/ui'; import { Pipe, ChangeDetectorRef, } from '@angular/core'; import { Subject, takeUntil } from 'rxjs'; import { FALLBACK_LANGUAGE, TranslateService, isZhLang, } from '../../translate/public-api'; import * as i0 from "@angular/core"; import * as i1 from "../../translate/public-api"; import * as i2 from "@alauda/ui"; /** * 业务中存在需要根据界面语言和主题环境切换而变化的数据 * 通过传入第一个参数为环境变量(theme/locale)的回调函数以实现数据的变化 * 例 fn:(locale:string,prefix:string) => string; * fn | aclLocaleTrans:prefix * * 需要组合多种环境影响的场景可以通过柯里化的方式来使用管道 * 例 fn: (locale:string) => (theme:string) => string; * fn | aclLocaleTrans | aclThemeTrans */ export class LocaleTransformPipe { constructor(translate, cdr) { this.translate = translate; this.cdr = cdr; this.destroyed$$ = new Subject(); this.translate.locale$.pipe(takeUntil(this.destroyed$$)).subscribe(() => { this.cdr.markForCheck(); }); } ngOnDestroy() { this.destroyed$$.next(); this.destroyed$$.complete(); } transform(fn, ...params) { const locale = isZhLang(this.translate.locale) ? this.translate.locale : FALLBACK_LANGUAGE; return fn(locale, ...params); } static { this.ɵfac = function LocaleTransformPipe_Factory(t) { return new (t || LocaleTransformPipe)(i0.ɵɵdirectiveInject(i1.TranslateService, 16), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef, 16)); }; } static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "aclLocaleTrans", type: LocaleTransformPipe, pure: false }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LocaleTransformPipe, [{ type: Pipe, args: [{ name: 'aclLocaleTrans', pure: false }] }], () => [{ type: i1.TranslateService }, { type: i0.ChangeDetectorRef }], null); })(); export class ThemeTransformPipe { constructor(themeService, cdr) { this.themeService = themeService; this.cdr = cdr; this.destroyed$$ = new Subject(); this.themeService.currentTheme$ .pipe(takeUntil(this.destroyed$$)) .subscribe(() => { this.cdr.markForCheck(); }); } ngOnDestroy() { this.destroyed$$.next(); this.destroyed$$.complete(); } transform(fn, ...params) { return fn(this.themeService.currentTheme(), ...params); } static { this.ɵfac = function ThemeTransformPipe_Factory(t) { return new (t || ThemeTransformPipe)(i0.ɵɵdirectiveInject(i2.ThemeService, 16), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef, 16)); }; } static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "aclThemeTrans", type: ThemeTransformPipe, pure: false }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ThemeTransformPipe, [{ type: Pipe, args: [{ name: 'aclThemeTrans', pure: false }] }], () => [{ type: i2.ThemeService }, { type: i0.ChangeDetectorRef }], null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1lbnYucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL3BpcGVzL3BhZ2UtZW52LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQ0wsSUFBSSxFQUdKLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixRQUFRLEdBQ1QsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQUVwQzs7Ozs7Ozs7O0dBU0c7QUFHSCxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLFlBQ21CLFNBQTJCLEVBQzNCLEdBQXNCO1FBRHRCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBSnhCLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU1qRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxTQUFTLENBQ1AsRUFBK0MsRUFDL0MsR0FBRyxNQUFpQjtRQUVwQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDNUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtZQUN2QixDQUFDLENBQUMsaUJBQWlCLENBQUM7UUFDdEIsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztvRkF6QlUsbUJBQW1CO3dGQUFuQixtQkFBbUI7O2lGQUFuQixtQkFBbUI7Y0FEL0IsSUFBSTtlQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7O0FBOEI3QyxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQ21CLFlBQTBCLEVBQzFCLEdBQXNCO1FBRHRCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBSnhCLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQU1qRCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWE7YUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDakMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsU0FBUyxDQUNQLEVBQThDLEVBQzlDLEdBQUcsTUFBaUI7UUFFcEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELENBQUM7bUZBeEJVLGtCQUFrQjt1RkFBbEIsa0JBQWtCOztpRkFBbEIsa0JBQWtCO2NBRDlCLElBQUk7ZUFBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgUGlwZSxcbiAgUGlwZVRyYW5zZm9ybSxcbiAgT25EZXN0cm95LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgRkFMTEJBQ0tfTEFOR1VBR0UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIGlzWmhMYW5nLFxufSBmcm9tICcuLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5cbi8qKlxuICog5Lia5Yqh5Lit5a2Y5Zyo6ZyA6KaB5qC55o2u55WM6Z2i6K+t6KiA5ZKM5Li76aKY546v5aKD5YiH5o2i6ICM5Y+Y5YyW55qE5pWw5o2uXG4gKiDpgJrov4fkvKDlhaXnrKzkuIDkuKrlj4LmlbDkuLrnjq/looPlj5jph48odGhlbWUvbG9jYWxlKeeahOWbnuiwg+WHveaVsOS7peWunueOsOaVsOaNrueahOWPmOWMllxuICog5L6LIGZuOihsb2NhbGU6c3RyaW5nLHByZWZpeDpzdHJpbmcpID0+IHN0cmluZztcbiAqICAgIGZuIHwgYWNsTG9jYWxlVHJhbnM6cHJlZml4XG4gKlxuICog6ZyA6KaB57uE5ZCI5aSa56eN546v5aKD5b2x5ZON55qE5Zy65pmv5Y+v5Lul6YCa6L+H5p+v6YeM5YyW55qE5pa55byP5p2l5L2/55So566h6YGTXG4gKiDkvosgZm46IChsb2NhbGU6c3RyaW5nKSA9PiAodGhlbWU6c3RyaW5nKSA9PiBzdHJpbmc7XG4gKiAgICBmbiB8IGFjbExvY2FsZVRyYW5zIHwgYWNsVGhlbWVUcmFuc1xuICovXG5cbkBQaXBlKHsgbmFtZTogJ2FjbExvY2FsZVRyYW5zJywgcHVyZTogZmFsc2UgfSlcbmV4cG9ydCBjbGFzcyBMb2NhbGVUcmFuc2Zvcm1QaXBlPFQ+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95ZWQkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICB0aGlzLnRyYW5zbGF0ZS5sb2NhbGUkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB0cmFuc2Zvcm0oXG4gICAgZm46IChsb2NhbGU6IHN0cmluZywgLi4ucGFyYW1zOiB1bmtub3duW10pID0+IFQsXG4gICAgLi4ucGFyYW1zOiB1bmtub3duW11cbiAgKSB7XG4gICAgY29uc3QgbG9jYWxlID0gaXNaaExhbmcodGhpcy50cmFuc2xhdGUubG9jYWxlKVxuICAgICAgPyB0aGlzLnRyYW5zbGF0ZS5sb2NhbGVcbiAgICAgIDogRkFMTEJBQ0tfTEFOR1VBR0U7XG4gICAgcmV0dXJuIGZuKGxvY2FsZSwgLi4ucGFyYW1zKTtcbiAgfVxufVxuXG5AUGlwZSh7IG5hbWU6ICdhY2xUaGVtZVRyYW5zJywgcHVyZTogZmFsc2UgfSlcbmV4cG9ydCBjbGFzcyBUaGVtZVRyYW5zZm9ybVBpcGU8VD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3llZCQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgdGhpcy50aGVtZVNlcnZpY2UuY3VycmVudFRoZW1lJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB0cmFuc2Zvcm0oXG4gICAgZm46ICh0aGVtZTogc3RyaW5nLCAuLi5wYXJhbXM6IHVua25vd25bXSkgPT4gVCxcbiAgICAuLi5wYXJhbXM6IHVua25vd25bXVxuICApIHtcbiAgICByZXR1cm4gZm4odGhpcy50aGVtZVNlcnZpY2UuY3VycmVudFRoZW1lKCksIC4uLnBhcmFtcyk7XG4gIH1cbn1cbiJdfQ==