UNPKG

@rb-mwindh/ngx-theme-manager

Version:

Angular component to switch between different theming stylesheets

66 lines 5.27 kB
import { Injectable } from '@angular/core'; import { distinctUntilChanged, share, Subject, tap } from 'rxjs'; import * as i0 from "@angular/core"; /** * A service to track the currently active theme. * * @internal * @group Services */ export class ThemeTrackingService { constructor() { /** * The subject that emits the next value set through {@link currentTheme}. * * @private */ this.#currentTheme$ = new Subject(); /** * A private property to hold the current theme value. * * @private */ this.#currentTheme = null; /** * The observable that emits the current theme, shared among subscribers. * This observable prevents emitting the same value twice in a row. * It also updates the private #currentTheme property. */ this.currentTheme$ = this.#currentTheme$.pipe(distinctUntilChanged(), tap((theme) => (this.#currentTheme = theme)), share()); } /** * The subject that emits the next value set through {@link currentTheme}. * * @private */ #currentTheme$; /** * A private property to hold the current theme value. * * @private */ #currentTheme; /** * Set the current theme. * * @param {string | null} arg */ set currentTheme(arg) { this.#currentTheme$.next(arg); } /** * Get the current theme. * * @returns {string | null} The current theme */ get currentTheme() { return this.#currentTheme; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ThemeTrackingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ThemeTrackingService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: ThemeTrackingService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUtdHJhY2tpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10aGVtZS1tYW5hZ2VyL3NyYy9saWIvaW50ZXJuYWwvdGhlbWUtdHJhY2tpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFakU7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBRGpDO1FBRUU7Ozs7V0FJRztRQUNNLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFFdkQ7Ozs7V0FJRztRQUNILGtCQUFhLEdBQWtCLElBQUksQ0FBQztRQUVwQzs7OztXQUlHO1FBQ00sa0JBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDL0Msb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFDNUMsS0FBSyxFQUFFLENBQ1IsQ0FBQztLQW1CSDtJQTFDQzs7OztPQUlHO0lBQ00sY0FBYyxDQUFnQztJQUV2RDs7OztPQUlHO0lBQ0gsYUFBYSxDQUF1QjtJQWFwQzs7OztPQUlHO0lBQ0gsSUFBSSxZQUFZLENBQUMsR0FBa0I7UUFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQzs4R0ExQ1Usb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzsyRkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzaGFyZSwgU3ViamVjdCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQSBzZXJ2aWNlIHRvIHRyYWNrIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRoZW1lLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQGdyb3VwIFNlcnZpY2VzXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGhlbWVUcmFja2luZ1NlcnZpY2Uge1xuICAvKipcbiAgICogVGhlIHN1YmplY3QgdGhhdCBlbWl0cyB0aGUgbmV4dCB2YWx1ZSBzZXQgdGhyb3VnaCB7QGxpbmsgY3VycmVudFRoZW1lfS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHJlYWRvbmx5ICNjdXJyZW50VGhlbWUkID0gbmV3IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4oKTtcblxuICAvKipcbiAgICogQSBwcml2YXRlIHByb3BlcnR5IHRvIGhvbGQgdGhlIGN1cnJlbnQgdGhlbWUgdmFsdWUuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICAjY3VycmVudFRoZW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgY3VycmVudCB0aGVtZSwgc2hhcmVkIGFtb25nIHN1YnNjcmliZXJzLlxuICAgKiBUaGlzIG9ic2VydmFibGUgcHJldmVudHMgZW1pdHRpbmcgdGhlIHNhbWUgdmFsdWUgdHdpY2UgaW4gYSByb3cuXG4gICAqIEl0IGFsc28gdXBkYXRlcyB0aGUgcHJpdmF0ZSAjY3VycmVudFRoZW1lIHByb3BlcnR5LlxuICAgKi9cbiAgcmVhZG9ubHkgY3VycmVudFRoZW1lJCA9IHRoaXMuI2N1cnJlbnRUaGVtZSQucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHRhcCgodGhlbWUpID0+ICh0aGlzLiNjdXJyZW50VGhlbWUgPSB0aGVtZSkpLFxuICAgIHNoYXJlKCksXG4gICk7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VycmVudCB0aGVtZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBhcmdcbiAgICovXG4gIHNldCBjdXJyZW50VGhlbWUoYXJnOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy4jY3VycmVudFRoZW1lJC5uZXh0KGFyZyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHRoZW1lLlxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVsbH0gVGhlIGN1cnJlbnQgdGhlbWVcbiAgICovXG4gIGdldCBjdXJyZW50VGhlbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuI2N1cnJlbnRUaGVtZTtcbiAgfVxufVxuIl19