UNPKG

state-t

Version:

`StateTService` est un service générique conçu pour gérer les états de composants dans une application Angular. Il permet de stocker, accéder et manipuler des états de manière typée, flexible et modulaire.

73 lines 7.2 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; export class StateTService { constructor() { this.componentStates = new Map(); this.stateSubjects = new Map(); } /** * setState(componentId : string, state : T) : void * @param componentId * @param state */ setState(componentId, state) { this.componentStates.set(componentId, { state }); if (!this.stateSubjects.has(componentId)) { this.stateSubjects.set(componentId, new BehaviorSubject(state)); } this.stateSubjects.get(componentId)?.next(state); } /** * getStateOtherType(componentId: string, typeFilter?: new (...args: []) => H) * @param componentId * @param typeFilter * @returns */ getStateOtherType(componentId, typeFilter) { const state = this.getState(componentId); if (state && typeFilter && !(state instanceof typeFilter)) { return undefined; } return state; } /** * getState(componentId: string) * @param componentId * @returns */ getState(componentId) { const stateWithMode = this.componentStates.get(componentId); return stateWithMode?.state; } /** * getStateObservable(componentId: string) * @param componentId * @returns */ getStateObservable(componentId) { return this.stateSubjects.get(componentId)?.asObservable(); } /** * getAllStates() * @returns */ getAllStates() { return this.componentStates; } /** * delete all state */ clearAllStates() { this.componentStates.clear(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StateTService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StateTService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StateTService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RhdGUtdC9zcmMvbGliL3N0YXRlLXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBT25ELE1BQU0sT0FBTyxhQUFhO0lBSXhCO1FBSFEsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztRQUN2RCxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDO0lBRTlDLENBQUM7SUFFakI7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxXQUFtQixFQUFFLEtBQVE7UUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxlQUFlLENBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsVUFBbUM7UUFDeEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQU0sQ0FBQztRQUM5QyxJQUFJLEtBQUssSUFBSSxVQUFVLElBQUksQ0FBQyxDQUFDLEtBQUssWUFBWSxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzFELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLFdBQW1CO1FBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVELE9BQU8sYUFBYSxFQUFFLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLFdBQW1CO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUU7SUFDOUQsQ0FBQztJQUNEOzs7T0FHRztJQUNILFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUNEOztPQUVHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQzsrR0E5RFUsYUFBYTttSEFBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbnRlcmZhY2UgU3RhdGVDb21wb25lbnQ8VD4ge1xyXG4gIHN0YXRlOiBUO1xyXG59XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0YXRlVFNlcnZpY2UgPFQsSD1UID4ge1xyXG4gIHByaXZhdGUgY29tcG9uZW50U3RhdGVzID0gbmV3IE1hcDxzdHJpbmcsIFN0YXRlQ29tcG9uZW50PFQ+PigpO1xyXG4gIHByaXZhdGUgc3RhdGVTdWJqZWN0cyA9IG5ldyBNYXA8c3RyaW5nLCBCZWhhdmlvclN1YmplY3Q8VD4+KCk7IFxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBzZXRTdGF0ZShjb21wb25lbnRJZCA6IHN0cmluZywgc3RhdGUgOiBUKSA6IHZvaWRcclxuICAgKiBAcGFyYW0gY29tcG9uZW50SWQgXHJcbiAgICogQHBhcmFtIHN0YXRlIFxyXG4gICAqL1xyXG4gIHNldFN0YXRlKGNvbXBvbmVudElkOiBzdHJpbmcsIHN0YXRlOiBUKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlcy5zZXQoY29tcG9uZW50SWQsIHsgc3RhdGUgfSk7XHJcbiAgICBpZiAoIXRoaXMuc3RhdGVTdWJqZWN0cy5oYXMoY29tcG9uZW50SWQpKSB7XHJcbiAgICAgIHRoaXMuc3RhdGVTdWJqZWN0cy5zZXQoY29tcG9uZW50SWQsIG5ldyBCZWhhdmlvclN1YmplY3Q8VD4oc3RhdGUpKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3RhdGVTdWJqZWN0cy5nZXQoY29tcG9uZW50SWQpPy5uZXh0KHN0YXRlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogZ2V0U3RhdGVPdGhlclR5cGUoY29tcG9uZW50SWQ6IHN0cmluZywgdHlwZUZpbHRlcj86IG5ldyAoLi4uYXJnczogW10pID0+IEgpXHJcbiAgICogQHBhcmFtIGNvbXBvbmVudElkIFxyXG4gICAqIEBwYXJhbSB0eXBlRmlsdGVyIFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIGdldFN0YXRlT3RoZXJUeXBlKGNvbXBvbmVudElkOiBzdHJpbmcsIHR5cGVGaWx0ZXI/OiBuZXcgKC4uLmFyZ3M6IFtdKSA9PiBIKTogSCB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoY29tcG9uZW50SWQpIGFzIEg7XHJcbiAgICBpZiAoc3RhdGUgJiYgdHlwZUZpbHRlciAmJiAhKHN0YXRlIGluc3RhbmNlb2YgdHlwZUZpbHRlcikpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgIFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0YXRlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZ2V0U3RhdGUoY29tcG9uZW50SWQ6IHN0cmluZylcclxuICAgKiBAcGFyYW0gY29tcG9uZW50SWQgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgZ2V0U3RhdGUoY29tcG9uZW50SWQ6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3Qgc3RhdGVXaXRoTW9kZSA9IHRoaXMuY29tcG9uZW50U3RhdGVzLmdldChjb21wb25lbnRJZCk7XHJcbiAgICByZXR1cm4gc3RhdGVXaXRoTW9kZT8uc3RhdGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXRTdGF0ZU9ic2VydmFibGUoY29tcG9uZW50SWQ6IHN0cmluZylcclxuICAgKiBAcGFyYW0gY29tcG9uZW50SWQgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgZ2V0U3RhdGVPYnNlcnZhYmxlKGNvbXBvbmVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlU3ViamVjdHMuZ2V0KGNvbXBvbmVudElkKT8uYXNPYnNlcnZhYmxlKCkgO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBnZXRBbGxTdGF0ZXMoKVxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIGdldEFsbFN0YXRlcygpOiBNYXA8c3RyaW5nLCBTdGF0ZUNvbXBvbmVudDxUPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50U3RhdGVzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBkZWxldGUgYWxsIHN0YXRlXHJcbiAgICovXHJcbiAgY2xlYXJBbGxTdGF0ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlcy5jbGVhcigpO1xyXG4gIH1cclxuICBcclxuXHJcbn1cclxuIl19