@alauda-fe/common
Version:
Alauda frontend team common codes.
69 lines • 8.69 kB
JavaScript
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==