@alauda-fe/common
Version:
Alauda frontend team common codes.
38 lines • 4.61 kB
JavaScript
import { ThemeService } from '@alauda/ui';
import { ChangeDetectorRef, Pipe, } from '@angular/core';
import { Subject, takeUntil } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@alauda/ui";
/*
因为业务中有很多图片需要在浅色和暗色两个主题切换后使用不同的图片。
推荐在业务中建两个图片的文件夹,light 和 dark,把两种主题对应的图片放在这两个目录下
<img src="icons/xxx/xxx.svg" > 变更为 <img [src]="'icons/$theme/xxx/xxx.svg' | aclImageTheme" >
*/
export class ImgThemePipe {
constructor(theme, cdr) {
this.theme = theme;
this.cdr = cdr;
this.destroy$$ = new Subject();
this.theme.currentTheme$.pipe(takeUntil(this.destroy$$)).subscribe(() => {
this.cdr.markForCheck();
});
}
transform(value) {
return value.replace('$theme', this.theme.currentTheme());
}
ngOnDestroy() {
this.destroy$$.next();
this.destroy$$.complete();
}
static { this.ɵfac = function ImgThemePipe_Factory(t) { return new (t || ImgThemePipe)(i0.ɵɵdirectiveInject(i1.ThemeService, 16), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef, 16)); }; }
static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "aclImageTheme", type: ImgThemePipe, pure: false, standalone: true }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImgThemePipe, [{
type: Pipe,
args: [{
name: 'aclImageTheme',
pure: false,
standalone: true,
}]
}], () => [{ type: i1.ThemeService }, { type: i0.ChangeDetectorRef }], null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXRoZW1lLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY29yZS9waXBlcy9pbWctdGhlbWUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsSUFBSSxHQUVMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFFMUM7Ozs7RUFJRTtBQU1GLE1BQU0sT0FBTyxZQUFZO0lBR3ZCLFlBQ21CLEtBQW1CLEVBQ25CLEdBQXNCO1FBRHRCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFKeEIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFNL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RFLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs2RUFuQlUsWUFBWTt1RkFBWixZQUFZOztpRkFBWixZQUFZO2NBTHhCLElBQUk7ZUFBQztnQkFDSixJQUFJLEVBQUUsZUFBZTtnQkFDckIsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsVUFBVSxFQUFFLElBQUk7YUFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBPbkRlc3Ryb3ksXG4gIFBpcGUsXG4gIFBpcGVUcmFuc2Zvcm0sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbi8qXG4gIOWboOS4uuS4muWKoeS4reacieW+iOWkmuWbvueJh+mcgOimgeWcqOa1heiJsuWSjOaal+iJsuS4pOS4quS4u+mimOWIh+aNouWQjuS9v+eUqOS4jeWQjOeahOWbvueJh+OAglxuICDmjqjojZDlnKjkuJrliqHkuK3lu7rkuKTkuKrlm77niYfnmoTmlofku7blpLnvvIxsaWdodCDlkowgZGFya++8jOaKiuS4pOenjeS4u+mimOWvueW6lOeahOWbvueJh+aUvuWcqOi/meS4pOS4quebruW9leS4i1xuICA8aW1nIHNyYz1cImljb25zL3h4eC94eHguc3ZnXCIgPiDlj5jmm7TkuLogPGltZyBbc3JjXT1cIidpY29ucy8kdGhlbWUveHh4L3h4eC5zdmcnIHwgYWNsSW1hZ2VUaGVtZVwiID5cbiovXG5AUGlwZSh7XG4gIG5hbWU6ICdhY2xJbWFnZVRoZW1lJyxcbiAgcHVyZTogZmFsc2UsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEltZ1RoZW1lUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRoZW1lOiBUaGVtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICB0aGlzLnRoZW1lLmN1cnJlbnRUaGVtZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKCckdGhlbWUnLCB0aGlzLnRoZW1lLmN1cnJlbnRUaGVtZSgpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=