ngssm-store 20.2.4 → 20.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ngssm-store-caching-testing.mjs +3 -3
- package/fesm2022/ngssm-store-caching-testing.mjs.map +1 -1
- package/fesm2022/ngssm-store-caching.mjs +3 -3
- package/fesm2022/ngssm-store-caching.mjs.map +1 -1
- package/fesm2022/ngssm-store-testing.mjs.map +1 -1
- package/fesm2022/ngssm-store-visibility-testing.mjs +3 -3
- package/fesm2022/ngssm-store-visibility-testing.mjs.map +1 -1
- package/fesm2022/ngssm-store-visibility.mjs +18 -18
- package/fesm2022/ngssm-store-visibility.mjs.map +1 -1
- package/fesm2022/ngssm-store.mjs +18 -18
- package/fesm2022/ngssm-store.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -95,10 +95,10 @@ class NgssmCachedItemSetter {
|
|
|
95
95
|
}
|
|
96
96
|
return this;
|
|
97
97
|
}
|
|
98
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
99
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgssmCachedItemSetter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
99
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgssmCachedItemSetter }); }
|
|
100
100
|
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgssmCachedItemSetter, decorators: [{
|
|
102
102
|
type: Injectable
|
|
103
103
|
}] });
|
|
104
104
|
const ngssmCachedItemSetter = () => TestBed.inject(NgssmCachedItemSetter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngssm-store-caching-testing.mjs","sources":["../../../projects/ngssm-store/caching/testing/src/ngssm-cached-item-setter.ts","../../../projects/ngssm-store/caching/testing/src/provide-ngssm-caching-testing.ts","../../../projects/ngssm-store/caching/testing/ngssm-store-caching-testing.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport { Store } from 'ngssm-store';\nimport { CachedItemStatus, selectNgssmCachedItem, SetCachedItemAction, updateNgssmCachingState } from 'ngssm-store/caching';\nimport { StoreMock } from 'ngssm-store/testing';\n\n/**\n * Utility service for setting and updating cached items in the StoreMock during tests.\n * Provides methods to apply a SetCachedItemAction, set the status, or set the value of a cached item.\n */\n@Injectable()\nexport class NgssmCachedItemSetter {\n public readonly store = inject(Store) as unknown as StoreMock;\n\n /**\n * Applies a SetCachedItemAction to the StoreMock, updating the cache state.\n * @param action The SetCachedItemAction to apply.\n * @returns The NgssmCachedItemSetter instance for chaining.\n */\n public apply<T = unknown>(action: SetCachedItemAction<T>): NgssmCachedItemSetter {\n this.store.stateValue = updateNgssmCachingState(this.store.stateValue, {\n caches: {\n [action.cachedItemKey]: {\n $set: {\n status: action.status,\n item: action.cachedItem,\n error: action.error\n }\n }\n }\n });\n\n return this;\n }\n\n /**\n * Sets the status of a cached item in the StoreMock.\n * If the key does not exist in cache, it is created with an undefined value.\n *\n * @param cachedItemKey The key of the cached item.\n * @param status The new status to set.\n * @returns The NgssmCachedItemSetter instance for chaining.\n */\n public setCachedItemStatus(cachedItemKey: string, status: CachedItemStatus): NgssmCachedItemSetter {\n if (selectNgssmCachedItem(this.store.stateValue, cachedItemKey)) {\n this.store.stateValue = updateNgssmCachingState(this.store.stateValue, {\n caches: {\n [cachedItemKey]: {\n status: { $set: status }\n }\n }\n });\n } else {\n this.store.stateValue = updateNgssmCachingState(this.store.stateValue, {\n caches: {\n [cachedItemKey]: {\n $set: {\n status\n }\n }\n }\n });\n }\n\n return this;\n }\n\n /**\n * Sets the value of a cached item in the StoreMock.\n * If the key does not exist in cache, it is created with the status CachedItemStatus.notSet.\n *\n * @param cachedItemKey The key of the cached item.\n * @param value The value to set.\n * @returns The NgssmCachedItemSetter instance for chaining.\n */\n public setCachedItemValue<T>(cachedItemKey: string, value?: T): NgssmCachedItemSetter {\n if (selectNgssmCachedItem(this.store.stateValue, cachedItemKey)) {\n this.store.stateValue = updateNgssmCachingState(this.store.stateValue, {\n caches: {\n [cachedItemKey]: {\n item: { $set: value }\n }\n }\n });\n } else {\n this.store.stateValue = updateNgssmCachingState(this.store.stateValue, {\n caches: {\n [cachedItemKey]: {\n $set: {\n status: CachedItemStatus.notSet,\n item: value\n }\n }\n }\n });\n }\n\n return this;\n }\n}\n\nexport const ngssmCachedItemSetter = () => TestBed.inject(NgssmCachedItemSetter);\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\n\nimport { Logger, Store } from 'ngssm-store';\nimport { StoreMock } from 'ngssm-store/testing';\nimport { NgssmCachingStateSpecification } from 'ngssm-store/caching';\n\nimport { NgssmCachedItemSetter } from './ngssm-cached-item-setter';\n\n/**\n * App initializer that sets up the NgssmCaching state in the StoreMock for testing purposes.\n * Throws an error if StoreMock is not registered.\n */\nexport const ngssmCachingStateInitializer = () => {\n const logger = inject(Logger);\n logger.information('[ngssm-caching-testing] Initialization of state');\n const store = inject(Store);\n if (!(store instanceof StoreMock)) {\n throw new Error('StoreMock is not registered.');\n }\n\n store.stateValue = {\n ...store.stateValue,\n [NgssmCachingStateSpecification.featureStateKey]: NgssmCachingStateSpecification.initialState\n };\n};\n\n/**\n * Provides environment providers for NgssmCaching testing, including the state initializer.\n */\nexport const provideNgssmCachingTesting = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideAppInitializer(ngssmCachingStateInitializer), NgssmCachedItemSetter]);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;AAOA;;;AAGG;MAEU,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAEkB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAyB;AAuF9D;AArFC;;;;AAIG;AACI,IAAA,KAAK,CAAc,MAA8B,EAAA;AACtD,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACrE,YAAA,MAAM,EAAE;AACN,gBAAA,CAAC,MAAM,CAAC,aAAa,GAAG;AACtB,oBAAA,IAAI,EAAE;wBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,IAAI,EAAE,MAAM,CAAC,UAAU;wBACvB,KAAK,EAAE,MAAM,CAAC;AACf;AACF;AACF;AACF,SAAA,CAAC;AAEF,QAAA,OAAO,IAAI
|
|
1
|
+
{"version":3,"file":"ngssm-store-caching-testing.mjs","sources":["../../../projects/ngssm-store/caching/testing/src/ngssm-cached-item-setter.ts","../../../projects/ngssm-store/caching/testing/src/provide-ngssm-caching-testing.ts","../../../projects/ngssm-store/caching/testing/ngssm-store-caching-testing.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport { Store } from 'ngssm-store';\nimport { CachedItemStatus, selectNgssmCachedItem, SetCachedItemAction, updateNgssmCachingState } from 'ngssm-store/caching';\nimport { StoreMock } from 'ngssm-store/testing';\n\n/**\n * Utility service for setting and updating cached items in the StoreMock during tests.\n * Provides methods to apply a SetCachedItemAction, set the status, or set the value of a cached item.\n */\n@Injectable()\nexport class NgssmCachedItemSetter {\n public readonly store = inject(Store) as unknown as StoreMock;\n\n /**\n * Applies a SetCachedItemAction to the StoreMock, updating the cache state.\n * @param action The SetCachedItemAction to apply.\n * @returns The NgssmCachedItemSetter instance for chaining.\n */\n public apply<T = unknown>(action: SetCachedItemAction<T>): NgssmCachedItemSetter {\n this.store.stateValue = updateNgssmCachingState(this.store.stateValue, {\n caches: {\n [action.cachedItemKey]: {\n $set: {\n status: action.status,\n item: action.cachedItem,\n error: action.error\n }\n }\n }\n });\n\n return this;\n }\n\n /**\n * Sets the status of a cached item in the StoreMock.\n * If the key does not exist in cache, it is created with an undefined value.\n *\n * @param cachedItemKey The key of the cached item.\n * @param status The new status to set.\n * @returns The NgssmCachedItemSetter instance for chaining.\n */\n public setCachedItemStatus(cachedItemKey: string, status: CachedItemStatus): NgssmCachedItemSetter {\n if (selectNgssmCachedItem(this.store.stateValue, cachedItemKey)) {\n this.store.stateValue = updateNgssmCachingState(this.store.stateValue, {\n caches: {\n [cachedItemKey]: {\n status: { $set: status }\n }\n }\n });\n } else {\n this.store.stateValue = updateNgssmCachingState(this.store.stateValue, {\n caches: {\n [cachedItemKey]: {\n $set: {\n status\n }\n }\n }\n });\n }\n\n return this;\n }\n\n /**\n * Sets the value of a cached item in the StoreMock.\n * If the key does not exist in cache, it is created with the status CachedItemStatus.notSet.\n *\n * @param cachedItemKey The key of the cached item.\n * @param value The value to set.\n * @returns The NgssmCachedItemSetter instance for chaining.\n */\n public setCachedItemValue<T>(cachedItemKey: string, value?: T): NgssmCachedItemSetter {\n if (selectNgssmCachedItem(this.store.stateValue, cachedItemKey)) {\n this.store.stateValue = updateNgssmCachingState(this.store.stateValue, {\n caches: {\n [cachedItemKey]: {\n item: { $set: value }\n }\n }\n });\n } else {\n this.store.stateValue = updateNgssmCachingState(this.store.stateValue, {\n caches: {\n [cachedItemKey]: {\n $set: {\n status: CachedItemStatus.notSet,\n item: value\n }\n }\n }\n });\n }\n\n return this;\n }\n}\n\nexport const ngssmCachedItemSetter = () => TestBed.inject(NgssmCachedItemSetter);\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\n\nimport { Logger, Store } from 'ngssm-store';\nimport { StoreMock } from 'ngssm-store/testing';\nimport { NgssmCachingStateSpecification } from 'ngssm-store/caching';\n\nimport { NgssmCachedItemSetter } from './ngssm-cached-item-setter';\n\n/**\n * App initializer that sets up the NgssmCaching state in the StoreMock for testing purposes.\n * Throws an error if StoreMock is not registered.\n */\nexport const ngssmCachingStateInitializer = () => {\n const logger = inject(Logger);\n logger.information('[ngssm-caching-testing] Initialization of state');\n const store = inject(Store);\n if (!(store instanceof StoreMock)) {\n throw new Error('StoreMock is not registered.');\n }\n\n store.stateValue = {\n ...store.stateValue,\n [NgssmCachingStateSpecification.featureStateKey]: NgssmCachingStateSpecification.initialState\n };\n};\n\n/**\n * Provides environment providers for NgssmCaching testing, including the state initializer.\n */\nexport const provideNgssmCachingTesting = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideAppInitializer(ngssmCachingStateInitializer), NgssmCachedItemSetter]);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -100,10 +100,10 @@ class CachedItemReducer {
|
|
|
100
100
|
}
|
|
101
101
|
return state;
|
|
102
102
|
}
|
|
103
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
104
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
103
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: CachedItemReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
104
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: CachedItemReducer }); }
|
|
105
105
|
}
|
|
106
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: CachedItemReducer, decorators: [{
|
|
107
107
|
type: Injectable
|
|
108
108
|
}] });
|
|
109
109
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngssm-store-caching.mjs","sources":["../../../projects/ngssm-store/caching/src/actions/ngssm-caching-action-type.ts","../../../projects/ngssm-store/caching/src/model/cached-item-status.ts","../../../projects/ngssm-store/caching/src/actions/set-cached-item.action.ts","../../../projects/ngssm-store/caching/src/actions/unset-cached-item.action.ts","../../../projects/ngssm-store/caching/src/state/ngssm-caching.state.ts","../../../projects/ngssm-store/caching/src/state/selectors.ts","../../../projects/ngssm-store/caching/src/reducers/cached-item.reducer.ts","../../../projects/ngssm-store/caching/src/provide-ngssm-caching.ts","../../../projects/ngssm-store/caching/ngssm-store-caching.ts"],"sourcesContent":["export enum NgssmCachingActionType {\n setCachedItem = '[NgssmCachingActionType] setCachedItem',\n unsetCachedItem = '[NgssmCachingActionType] unsetCachedItem'\n}\n","export enum CachedItemStatus {\n notSet = 'Not Set',\n loading = 'Loading',\n set = 'Set',\n error = 'Error'\n}\n","import { Action } from 'ngssm-store';\n\nimport { NgssmCachingActionType } from './ngssm-caching-action-type';\nimport { CachedItemStatus } from '../model';\n\n/**\n * Represents an action to set a cached item in the state. If key is already set in the state, the value is replaced by the new one.\n *\n * @template TData The type of the cached item's data.\n * @implements {Action}\n *\n * @property {string} cachedItemKey - The unique key identifying the cached item.\n * @property {TData} cachedItem - The data to be cached.\n * @property {CachedItemStatus} [status=CachedItemStatus.set] - The status of the cached item operation.\n * @property {string} [error] - An optional error message if the caching operation failed.\n *\n * @remarks\n * This action is dispatched to update the cache with a new or modified item, along with its status and any error information.\n */\nexport class SetCachedItemAction<TData = unknown> implements Action {\n public readonly type: string = NgssmCachingActionType.setCachedItem;\n\n constructor(\n public readonly cachedItemKey: string,\n public readonly cachedItem: TData,\n public readonly status = CachedItemStatus.set,\n public readonly error?: string\n ) {}\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmCachingActionType } from './ngssm-caching-action-type';\n\nexport class UnsetCachedItemAction implements Action {\n public readonly type: string = NgssmCachingActionType.unsetCachedItem;\n\n constructor(public readonly cachedItemKey: string) {}\n}\n","import update, { CustomCommands, Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\nimport { CachedItem } from '../model';\n\nexport const selectNgssmCachingState = (state: State): NgssmCachingState =>\n state[NgssmCachingStateSpecification.featureStateKey] as NgssmCachingState;\n\nexport const updateNgssmCachingState = <T extends CustomCommands<object> = never>(\n state: State,\n command: Spec<NgssmCachingState, T>\n): State =>\n update(state, {\n [NgssmCachingStateSpecification.featureStateKey]: command\n });\n\nexport interface NgssmCachingState {\n caches: Record<string, CachedItem>;\n}\n\n@NgSsmFeatureState({\n featureStateKey: NgssmCachingStateSpecification.featureStateKey,\n initialState: NgssmCachingStateSpecification.initialState\n})\nexport class NgssmCachingStateSpecification {\n public static readonly featureStateKey = 'ngssm-caching-state';\n public static readonly initialState: NgssmCachingState = {\n caches: {}\n };\n}\n","import { State } from 'ngssm-store';\nimport { CachedItem } from '../model';\nimport { selectNgssmCachingState } from './ngssm-caching.state';\n\nexport const selectNgssmCachedItem = <T = unknown>(state: State, key: string): CachedItem<T> | undefined =>\n selectNgssmCachingState(state).caches[key] as CachedItem<T>;\n","import { Injectable } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport { NgssmCachingActionType, SetCachedItemAction, UnsetCachedItemAction } from '../actions';\nimport { selectNgssmCachedItem, updateNgssmCachingState } from '../state';\n\n@Injectable()\nexport class CachedItemReducer implements Reducer {\n public readonly processedActions: string[] = [NgssmCachingActionType.setCachedItem, NgssmCachingActionType.unsetCachedItem];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmCachingActionType.setCachedItem: {\n const setCachedItemAction = action as SetCachedItemAction;\n\n return updateNgssmCachingState(state, {\n caches: {\n [setCachedItemAction.cachedItemKey]: {\n $set: {\n status: setCachedItemAction.status,\n error: setCachedItemAction.error,\n item: setCachedItemAction.cachedItem\n }\n }\n }\n });\n }\n\n case NgssmCachingActionType.unsetCachedItem: {\n const unsetCachedItemAction = action as UnsetCachedItemAction;\n if (selectNgssmCachedItem(state, unsetCachedItemAction.cachedItemKey) === undefined) {\n return state;\n }\n\n return updateNgssmCachingState(state, {\n caches: { $unset: [unsetCachedItemAction.cachedItemKey] }\n });\n }\n }\n\n return state;\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { provideReducers } from 'ngssm-store';\nimport { CachedItemReducer } from './reducers';\n\nexport const provideNgssmCaching = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideReducers(CachedItemReducer)]);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;IAAY;AAAZ,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,eAAA,CAAA,GAAA,wCAAwD;AACxD,IAAA,sBAAA,CAAA,iBAAA,CAAA,GAAA,0CAA4D;AAC9D,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;;ICAtB;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,SAAkB;AAClB,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,gBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;;ACK5B;;;;;;;;;;;;;AAaG;MACU,mBAAmB,CAAA;IAG9B,WAAA,CACkB,aAAqB,EACrB,UAAiB,EACjB,SAAS,gBAAgB,CAAC,GAAG,EAC7B,KAAc,EAAA;QAHd,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;AANP,QAAA,IAAA,CAAA,IAAI,GAAW,sBAAsB,CAAC,aAAa;;
|
|
1
|
+
{"version":3,"file":"ngssm-store-caching.mjs","sources":["../../../projects/ngssm-store/caching/src/actions/ngssm-caching-action-type.ts","../../../projects/ngssm-store/caching/src/model/cached-item-status.ts","../../../projects/ngssm-store/caching/src/actions/set-cached-item.action.ts","../../../projects/ngssm-store/caching/src/actions/unset-cached-item.action.ts","../../../projects/ngssm-store/caching/src/state/ngssm-caching.state.ts","../../../projects/ngssm-store/caching/src/state/selectors.ts","../../../projects/ngssm-store/caching/src/reducers/cached-item.reducer.ts","../../../projects/ngssm-store/caching/src/provide-ngssm-caching.ts","../../../projects/ngssm-store/caching/ngssm-store-caching.ts"],"sourcesContent":["export enum NgssmCachingActionType {\n setCachedItem = '[NgssmCachingActionType] setCachedItem',\n unsetCachedItem = '[NgssmCachingActionType] unsetCachedItem'\n}\n","export enum CachedItemStatus {\n notSet = 'Not Set',\n loading = 'Loading',\n set = 'Set',\n error = 'Error'\n}\n","import { Action } from 'ngssm-store';\n\nimport { NgssmCachingActionType } from './ngssm-caching-action-type';\nimport { CachedItemStatus } from '../model';\n\n/**\n * Represents an action to set a cached item in the state. If key is already set in the state, the value is replaced by the new one.\n *\n * @template TData The type of the cached item's data.\n * @implements {Action}\n *\n * @property {string} cachedItemKey - The unique key identifying the cached item.\n * @property {TData} cachedItem - The data to be cached.\n * @property {CachedItemStatus} [status=CachedItemStatus.set] - The status of the cached item operation.\n * @property {string} [error] - An optional error message if the caching operation failed.\n *\n * @remarks\n * This action is dispatched to update the cache with a new or modified item, along with its status and any error information.\n */\nexport class SetCachedItemAction<TData = unknown> implements Action {\n public readonly type: string = NgssmCachingActionType.setCachedItem;\n\n constructor(\n public readonly cachedItemKey: string,\n public readonly cachedItem: TData,\n public readonly status = CachedItemStatus.set,\n public readonly error?: string\n ) {}\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmCachingActionType } from './ngssm-caching-action-type';\n\nexport class UnsetCachedItemAction implements Action {\n public readonly type: string = NgssmCachingActionType.unsetCachedItem;\n\n constructor(public readonly cachedItemKey: string) {}\n}\n","import update, { CustomCommands, Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\nimport { CachedItem } from '../model';\n\nexport const selectNgssmCachingState = (state: State): NgssmCachingState =>\n state[NgssmCachingStateSpecification.featureStateKey] as NgssmCachingState;\n\nexport const updateNgssmCachingState = <T extends CustomCommands<object> = never>(\n state: State,\n command: Spec<NgssmCachingState, T>\n): State =>\n update(state, {\n [NgssmCachingStateSpecification.featureStateKey]: command\n });\n\nexport interface NgssmCachingState {\n caches: Record<string, CachedItem>;\n}\n\n@NgSsmFeatureState({\n featureStateKey: NgssmCachingStateSpecification.featureStateKey,\n initialState: NgssmCachingStateSpecification.initialState\n})\nexport class NgssmCachingStateSpecification {\n public static readonly featureStateKey = 'ngssm-caching-state';\n public static readonly initialState: NgssmCachingState = {\n caches: {}\n };\n}\n","import { State } from 'ngssm-store';\nimport { CachedItem } from '../model';\nimport { selectNgssmCachingState } from './ngssm-caching.state';\n\nexport const selectNgssmCachedItem = <T = unknown>(state: State, key: string): CachedItem<T> | undefined =>\n selectNgssmCachingState(state).caches[key] as CachedItem<T>;\n","import { Injectable } from '@angular/core';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport { NgssmCachingActionType, SetCachedItemAction, UnsetCachedItemAction } from '../actions';\nimport { selectNgssmCachedItem, updateNgssmCachingState } from '../state';\n\n@Injectable()\nexport class CachedItemReducer implements Reducer {\n public readonly processedActions: string[] = [NgssmCachingActionType.setCachedItem, NgssmCachingActionType.unsetCachedItem];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmCachingActionType.setCachedItem: {\n const setCachedItemAction = action as SetCachedItemAction;\n\n return updateNgssmCachingState(state, {\n caches: {\n [setCachedItemAction.cachedItemKey]: {\n $set: {\n status: setCachedItemAction.status,\n error: setCachedItemAction.error,\n item: setCachedItemAction.cachedItem\n }\n }\n }\n });\n }\n\n case NgssmCachingActionType.unsetCachedItem: {\n const unsetCachedItemAction = action as UnsetCachedItemAction;\n if (selectNgssmCachedItem(state, unsetCachedItemAction.cachedItemKey) === undefined) {\n return state;\n }\n\n return updateNgssmCachingState(state, {\n caches: { $unset: [unsetCachedItemAction.cachedItemKey] }\n });\n }\n }\n\n return state;\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { provideReducers } from 'ngssm-store';\nimport { CachedItemReducer } from './reducers';\n\nexport const provideNgssmCaching = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideReducers(CachedItemReducer)]);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngssm-store-testing.mjs","sources":["../../../projects/ngssm-store/testing/src/store-mock.ts","../../../projects/ngssm-store/testing/src/provide-ngssm-store-testing.ts","../../../projects/ngssm-store/testing/ngssm-store-testing.ts"],"sourcesContent":["import { signal } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Action, ActionDispatcher, State } from 'ngssm-store';\n\nexport class StoreMock implements ActionDispatcher {\n private _stateValue: State = {};\n public state$ = new BehaviorSubject<State>(this._stateValue);\n public state = signal<State>(this._stateValue);\n public logsEnabled = false;\n public processedAction = signal<Action>({ type: '' });\n\n constructor(initialState: State) {\n this.stateValue = initialState;\n }\n\n public set stateValue(value: State) {\n this._stateValue = value;\n this.state$.next(value);\n this.state.set(value);\n }\n\n public get stateValue(): State {\n return this._stateValue;\n }\n\n public dispatchAction(action: Action): void {\n if (this.logsEnabled) {\n console.log('[StoreMock - dispatchAction]', action);\n }\n }\n\n public dispatchActionType(type: string): void {\n if (this.logsEnabled) {\n console.log('[StoreMock - dispatchActionType]', type);\n }\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { Store } from 'ngssm-store';\n\nimport { StoreMock } from './store-mock';\n\n/**\n * Provides a testing environment provider for the `Store` service using a mock implementation.\n *\n * This function returns Angular environment providers that replace the actual `Store` service\n * with a `StoreMock` instance, allowing for isolated and controlled testing of components or services\n * that depend on the `Store`.\n *\n * @returns {EnvironmentProviders} The environment providers configured with the `StoreMock`.\n */\nexport const provideNgssmStoreTesting = (): EnvironmentProviders => {\n return makeEnvironmentProviders([{ provide: Store, useValue: new StoreMock({}) }]);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MAKa,SAAS,CAAA;AAOpB,IAAA,WAAA,CAAY,YAAmB,EAAA;QANvB,IAAA,CAAA,WAAW,GAAU,EAAE;QACxB,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAQ,IAAI,CAAC,WAAW,CAAC;AACrD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAQ,IAAI,CAAC,WAAW,iDAAC;QACvC,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,eAAe,GAAG,MAAM,CAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAGnD,QAAA,IAAI,CAAC,UAAU,GAAG,YAAY
|
|
1
|
+
{"version":3,"file":"ngssm-store-testing.mjs","sources":["../../../projects/ngssm-store/testing/src/store-mock.ts","../../../projects/ngssm-store/testing/src/provide-ngssm-store-testing.ts","../../../projects/ngssm-store/testing/ngssm-store-testing.ts"],"sourcesContent":["import { signal } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Action, ActionDispatcher, State } from 'ngssm-store';\n\nexport class StoreMock implements ActionDispatcher {\n private _stateValue: State = {};\n public state$ = new BehaviorSubject<State>(this._stateValue);\n public state = signal<State>(this._stateValue);\n public logsEnabled = false;\n public processedAction = signal<Action>({ type: '' });\n\n constructor(initialState: State) {\n this.stateValue = initialState;\n }\n\n public set stateValue(value: State) {\n this._stateValue = value;\n this.state$.next(value);\n this.state.set(value);\n }\n\n public get stateValue(): State {\n return this._stateValue;\n }\n\n public dispatchAction(action: Action): void {\n if (this.logsEnabled) {\n console.log('[StoreMock - dispatchAction]', action);\n }\n }\n\n public dispatchActionType(type: string): void {\n if (this.logsEnabled) {\n console.log('[StoreMock - dispatchActionType]', type);\n }\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { Store } from 'ngssm-store';\n\nimport { StoreMock } from './store-mock';\n\n/**\n * Provides a testing environment provider for the `Store` service using a mock implementation.\n *\n * This function returns Angular environment providers that replace the actual `Store` service\n * with a `StoreMock` instance, allowing for isolated and controlled testing of components or services\n * that depend on the `Store`.\n *\n * @returns {EnvironmentProviders} The environment providers configured with the `StoreMock`.\n */\nexport const provideNgssmStoreTesting = (): EnvironmentProviders => {\n return makeEnvironmentProviders([{ provide: Store, useValue: new StoreMock({}) }]);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;MAKa,SAAS,CAAA;AAOpB,IAAA,WAAA,CAAY,YAAmB,EAAA;QANvB,IAAA,CAAA,WAAW,GAAU,EAAE;QACxB,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAQ,IAAI,CAAC,WAAW,CAAC;AACrD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAQ,IAAI,CAAC,WAAW,iDAAC;QACvC,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,eAAe,GAAG,MAAM,CAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAGnD,QAAA,IAAI,CAAC,UAAU,GAAG,YAAY;IAChC;IAEA,IAAW,UAAU,CAAC,KAAY,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACvB;AAEA,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;IACzB;AAEO,IAAA,cAAc,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC;QACrD;IACF;AAEO,IAAA,kBAAkB,CAAC,IAAY,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,CAAC;QACvD;IACF;AACD;;AC/BD;;;;;;;;AAQG;AACI,MAAM,wBAAwB,GAAG,MAA2B;AACjE,IAAA,OAAO,wBAAwB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpF;;ACjBA;;AAEG;;;;"}
|
|
@@ -41,10 +41,10 @@ class NgssmVisibilitySetter {
|
|
|
41
41
|
this.store.stateValue = this.reducer.updateState(this.store.stateValue, new ToggleElementVisibilityAction(elementKey));
|
|
42
42
|
return this;
|
|
43
43
|
}
|
|
44
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
45
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
44
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgssmVisibilitySetter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
45
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgssmVisibilitySetter }); }
|
|
46
46
|
}
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgssmVisibilitySetter, decorators: [{
|
|
48
48
|
type: Injectable
|
|
49
49
|
}] });
|
|
50
50
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngssm-store-visibility-testing.mjs","sources":["../../../projects/ngssm-store/visibility/testing/src/ngssm-visibility-setter.ts","../../../projects/ngssm-store/visibility/testing/src/provide-ngssm-visibility-testing.ts","../../../projects/ngssm-store/visibility/testing/ngssm-store-visibility-testing.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport { Store } from 'ngssm-store';\nimport { StoreMock } from 'ngssm-store/testing';\nimport { HideElementAction, ShowElementAction, ToggleElementVisibilityAction, VisibilityReducer } from 'ngssm-store/visibility';\n\n/**\n * Utility service for manipulating element visibility state in the StoreMock during tests.\n * Provides methods to show, hide, or toggle the visibility of an element.\n */\n@Injectable()\nexport class NgssmVisibilitySetter {\n private readonly reducer = new VisibilityReducer();\n public readonly store = inject(Store) as unknown as StoreMock;\n\n /**\n * Sets the specified element as visible in the StoreMock.\n * @param elementKey The key of the element to show.\n * @returns The NgssmVisibilitySetter instance for chaining.\n */\n public showElement(elementKey: string): NgssmVisibilitySetter {\n this.store.stateValue = this.reducer.updateState(this.store.stateValue, new ShowElementAction(elementKey));\n return this;\n }\n\n /**\n * Sets the specified element as hidden in the StoreMock.\n * @param elementKey The key of the element to hide.\n * @returns The NgssmVisibilitySetter instance for chaining.\n */\n public hideElement(elementKey: string): NgssmVisibilitySetter {\n this.store.stateValue = this.reducer.updateState(this.store.stateValue, new HideElementAction(elementKey));\n return this;\n }\n\n /**\n * Toggles the visibility of the specified element in the StoreMock.\n * @param elementKey The key of the element to toggle.\n * @returns The NgssmVisibilitySetter instance for chaining.\n */\n public toggleElementVisibility(elementKey: string): NgssmVisibilitySetter {\n this.store.stateValue = this.reducer.updateState(this.store.stateValue, new ToggleElementVisibilityAction(elementKey));\n return this;\n }\n}\n\n/**\n * Helper function to retrieve the NgssmVisibilitySetter instance from the TestBed.\n */\nexport const ngssmVisibilitySetter = () => TestBed.inject(NgssmVisibilitySetter);\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\n\nimport { Logger, Store } from 'ngssm-store';\nimport { StoreMock } from 'ngssm-store/testing';\nimport { NgssmVisibilityStateSpecification } from 'ngssm-store/visibility';\n\nimport { NgssmVisibilitySetter } from './ngssm-visibility-setter';\n\n/**\n * App initializer that sets up the ngssm state visibility in the StoreMock for testing purposes.\n * Throws an error if StoreMock is not registered.\n */\nexport const ngssmVisibilityStateInitializer = () => {\n const logger = inject(Logger);\n logger.information('[ngssm-visibility-testing] Initialization of state');\n const store = inject(Store);\n if (!(store instanceof StoreMock)) {\n throw new Error('StoreMock is not registered.');\n }\n\n store.stateValue = {\n ...store.stateValue,\n [NgssmVisibilityStateSpecification.featureStateKey]: NgssmVisibilityStateSpecification.initialState\n };\n};\n\n/**\n * Provides environment providers for ngssm visibility testing, including the state initializer.\n */\nexport const provideNgssmVisibilityTesting = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideAppInitializer(ngssmVisibilityStateInitializer), NgssmVisibilitySetter]);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;AAOA;;;AAGG;MAEU,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,iBAAiB,EAAE;AAClC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAyB;AA+B9D;AA7BC;;;;AAIG;AACI,IAAA,WAAW,CAAC,UAAkB,EAAA;QACnC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC1G,QAAA,OAAO,IAAI
|
|
1
|
+
{"version":3,"file":"ngssm-store-visibility-testing.mjs","sources":["../../../projects/ngssm-store/visibility/testing/src/ngssm-visibility-setter.ts","../../../projects/ngssm-store/visibility/testing/src/provide-ngssm-visibility-testing.ts","../../../projects/ngssm-store/visibility/testing/ngssm-store-visibility-testing.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport { Store } from 'ngssm-store';\nimport { StoreMock } from 'ngssm-store/testing';\nimport { HideElementAction, ShowElementAction, ToggleElementVisibilityAction, VisibilityReducer } from 'ngssm-store/visibility';\n\n/**\n * Utility service for manipulating element visibility state in the StoreMock during tests.\n * Provides methods to show, hide, or toggle the visibility of an element.\n */\n@Injectable()\nexport class NgssmVisibilitySetter {\n private readonly reducer = new VisibilityReducer();\n public readonly store = inject(Store) as unknown as StoreMock;\n\n /**\n * Sets the specified element as visible in the StoreMock.\n * @param elementKey The key of the element to show.\n * @returns The NgssmVisibilitySetter instance for chaining.\n */\n public showElement(elementKey: string): NgssmVisibilitySetter {\n this.store.stateValue = this.reducer.updateState(this.store.stateValue, new ShowElementAction(elementKey));\n return this;\n }\n\n /**\n * Sets the specified element as hidden in the StoreMock.\n * @param elementKey The key of the element to hide.\n * @returns The NgssmVisibilitySetter instance for chaining.\n */\n public hideElement(elementKey: string): NgssmVisibilitySetter {\n this.store.stateValue = this.reducer.updateState(this.store.stateValue, new HideElementAction(elementKey));\n return this;\n }\n\n /**\n * Toggles the visibility of the specified element in the StoreMock.\n * @param elementKey The key of the element to toggle.\n * @returns The NgssmVisibilitySetter instance for chaining.\n */\n public toggleElementVisibility(elementKey: string): NgssmVisibilitySetter {\n this.store.stateValue = this.reducer.updateState(this.store.stateValue, new ToggleElementVisibilityAction(elementKey));\n return this;\n }\n}\n\n/**\n * Helper function to retrieve the NgssmVisibilitySetter instance from the TestBed.\n */\nexport const ngssmVisibilitySetter = () => TestBed.inject(NgssmVisibilitySetter);\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\n\nimport { Logger, Store } from 'ngssm-store';\nimport { StoreMock } from 'ngssm-store/testing';\nimport { NgssmVisibilityStateSpecification } from 'ngssm-store/visibility';\n\nimport { NgssmVisibilitySetter } from './ngssm-visibility-setter';\n\n/**\n * App initializer that sets up the ngssm state visibility in the StoreMock for testing purposes.\n * Throws an error if StoreMock is not registered.\n */\nexport const ngssmVisibilityStateInitializer = () => {\n const logger = inject(Logger);\n logger.information('[ngssm-visibility-testing] Initialization of state');\n const store = inject(Store);\n if (!(store instanceof StoreMock)) {\n throw new Error('StoreMock is not registered.');\n }\n\n store.stateValue = {\n ...store.stateValue,\n [NgssmVisibilityStateSpecification.featureStateKey]: NgssmVisibilityStateSpecification.initialState\n };\n};\n\n/**\n * Provides environment providers for ngssm visibility testing, including the state initializer.\n */\nexport const provideNgssmVisibilityTesting = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideAppInitializer(ngssmVisibilityStateInitializer), NgssmVisibilitySetter]);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;AAOA;;;AAGG;MAEU,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,iBAAiB,EAAE;AAClC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAyB;AA+B9D,IAAA;AA7BC;;;;AAIG;AACI,IAAA,WAAW,CAAC,UAAkB,EAAA;QACnC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC1G,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;AACI,IAAA,WAAW,CAAC,UAAkB,EAAA;QACnC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC1G,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;AACI,IAAA,uBAAuB,CAAC,UAAkB,EAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,6BAA6B,CAAC,UAAU,CAAC,CAAC;AACtH,QAAA,OAAO,IAAI;IACb;8GAhCW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;AAoCD;;AAEG;AACI,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,qBAAqB;;AC1C/E;;;AAGG;AACI,MAAM,+BAA+B,GAAG,MAAK;AAClD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,CAAC,WAAW,CAAC,oDAAoD,CAAC;AACxE,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,IAAA,IAAI,EAAE,KAAK,YAAY,SAAS,CAAC,EAAE;AACjC,QAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;IACjD;IAEA,KAAK,CAAC,UAAU,GAAG;QACjB,GAAG,KAAK,CAAC,UAAU;AACnB,QAAA,CAAC,iCAAiC,CAAC,eAAe,GAAG,iCAAiC,CAAC;KACxF;AACH;AAEA;;AAEG;AACI,MAAM,6BAA6B,GAAG,MAA2B;IACtE,OAAO,wBAAwB,CAAC,CAAC,qBAAqB,CAAC,+BAA+B,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAClH;;AC/BA;;AAEG;;;;"}
|
|
@@ -133,10 +133,10 @@ class VisibilityReducer {
|
|
|
133
133
|
elements: elementsCommand
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
137
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
136
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: VisibilityReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
137
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: VisibilityReducer }); }
|
|
138
138
|
}
|
|
139
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: VisibilityReducer, decorators: [{
|
|
140
140
|
type: Injectable
|
|
141
141
|
}] });
|
|
142
142
|
|
|
@@ -155,10 +155,10 @@ class ToggleElementVisibilityDirective {
|
|
|
155
155
|
this.store.dispatchAction(new ToggleElementVisibilityAction(elementKey));
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
159
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.
|
|
158
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ToggleElementVisibilityDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
159
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: ToggleElementVisibilityDirective, isStandalone: true, selector: "[toggleElementVisibility]", inputs: { key: ["toggleElementVisibility", "key"] }, host: { listeners: { "click": "toggleElementvisibility($event)" } }, ngImport: i0 }); }
|
|
160
160
|
}
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ToggleElementVisibilityDirective, decorators: [{
|
|
162
162
|
type: Directive,
|
|
163
163
|
args: [{
|
|
164
164
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -177,10 +177,10 @@ class IsElementVisiblePipe {
|
|
|
177
177
|
transform(value, ...args) {
|
|
178
178
|
return selectNgssmVisibilityState(value).elements[args[0]] === true;
|
|
179
179
|
}
|
|
180
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
181
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.
|
|
180
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: IsElementVisiblePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
181
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.2.0", ngImport: i0, type: IsElementVisiblePipe, isStandalone: true, name: "isElementVisible" }); }
|
|
182
182
|
}
|
|
183
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: IsElementVisiblePipe, decorators: [{
|
|
184
184
|
type: Pipe,
|
|
185
185
|
args: [{
|
|
186
186
|
name: 'isElementVisible',
|
|
@@ -199,10 +199,10 @@ class ShowElementDirective {
|
|
|
199
199
|
this.store.dispatchAction(new ShowElementAction(elementKey));
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
203
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.
|
|
202
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ShowElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
203
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: ShowElementDirective, isStandalone: true, selector: "[showElement]", inputs: { key: ["showElement", "key"] }, host: { listeners: { "click": "toggleElementvisibility($event)" } }, ngImport: i0 }); }
|
|
204
204
|
}
|
|
205
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ShowElementDirective, decorators: [{
|
|
206
206
|
type: Directive,
|
|
207
207
|
args: [{
|
|
208
208
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -228,10 +228,10 @@ class HideElementDirective {
|
|
|
228
228
|
this.store.dispatchAction(new HideElementAction(elementKey));
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
232
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.
|
|
231
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: HideElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
232
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: HideElementDirective, isStandalone: true, selector: "[hideElement]", inputs: { key: ["hideElement", "key"] }, host: { listeners: { "click": "toggleElementvisibility($event)" } }, ngImport: i0 }); }
|
|
233
233
|
}
|
|
234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: HideElementDirective, decorators: [{
|
|
235
235
|
type: Directive,
|
|
236
236
|
args: [{
|
|
237
237
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -252,10 +252,10 @@ class VisibilityToggleGroupComponent {
|
|
|
252
252
|
this.items = input([], ...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
253
253
|
this.hideMultipleSelectionIndicator = input(false, ...(ngDevMode ? [{ debugName: "hideMultipleSelectionIndicator", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
254
254
|
}
|
|
255
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
256
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
255
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: VisibilityToggleGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
256
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.0", type: VisibilityToggleGroupComponent, isStandalone: true, selector: "ngssm-visibility-toggle-group", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, hideMultipleSelectionIndicator: { classPropertyName: "hideMultipleSelectionIndicator", publicName: "hideMultipleSelectionIndicator", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-button-toggle-group [multiple]=\"true\" [hideMultipleSelectionIndicator]=\"hideMultipleSelectionIndicator()\">\n @for (item of items(); track item.key) {\n <mat-button-toggle [toggleElementVisibility]=\"item.key\" [checked]=\"store.state() | isElementVisible: item.key\" [id]=\"item.key\">\n {{ item.label }}\n </mat-button-toggle>\n }\n</mat-button-toggle-group>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: ToggleElementVisibilityDirective, selector: "[toggleElementVisibility]", inputs: ["toggleElementVisibility"] }, { kind: "pipe", type: IsElementVisiblePipe, name: "isElementVisible" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
257
257
|
}
|
|
258
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
258
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: VisibilityToggleGroupComponent, decorators: [{
|
|
259
259
|
type: Component,
|
|
260
260
|
args: [{ selector: 'ngssm-visibility-toggle-group', imports: [CommonModule, MatButtonToggleModule, ToggleElementVisibilityDirective, IsElementVisiblePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-button-toggle-group [multiple]=\"true\" [hideMultipleSelectionIndicator]=\"hideMultipleSelectionIndicator()\">\n @for (item of items(); track item.key) {\n <mat-button-toggle [toggleElementVisibility]=\"item.key\" [checked]=\"store.state() | isElementVisible: item.key\" [id]=\"item.key\">\n {{ item.label }}\n </mat-button-toggle>\n }\n</mat-button-toggle-group>\n" }]
|
|
261
261
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngssm-store-visibility.mjs","sources":["../../../projects/ngssm-store/visibility/src/actions/ngssm-visibility-action-type.ts","../../../projects/ngssm-store/visibility/src/actions/toggle-element-visibility.action.ts","../../../projects/ngssm-store/visibility/src/actions/show-element.action.ts","../../../projects/ngssm-store/visibility/src/actions/hide-element.action.ts","../../../projects/ngssm-store/visibility/src/actions/define-elements-group.action.ts","../../../projects/ngssm-store/visibility/src/state/ngssm-visibility.state.ts","../../../projects/ngssm-store/visibility/src/reducers/visibility.reducer.ts","../../../projects/ngssm-store/visibility/src/provide-ngssm-visibility.ts","../../../projects/ngssm-store/visibility/src/components/toggle-element-visibility.directive.ts","../../../projects/ngssm-store/visibility/src/components/is-element-visible.pipe.ts","../../../projects/ngssm-store/visibility/src/components/show-element.directive.ts","../../../projects/ngssm-store/visibility/src/components/hide-element.directive.ts","../../../projects/ngssm-store/visibility/src/components/visibility-toggle-group/visibility-toggle-group.component.ts","../../../projects/ngssm-store/visibility/src/components/visibility-toggle-group/visibility-toggle-group.component.html","../../../projects/ngssm-store/visibility/src/signal-helpers.ts","../../../projects/ngssm-store/visibility/ngssm-store-visibility.ts"],"sourcesContent":["export enum NgssmVisibilityActionType {\n defineElementsGroup = '[NgssmVisibilityActionType] defineElementsGroup',\n toggleElementVisibility = '[NgssmVisibilityActionType] toggleElementVisibility',\n hideElement = '[NgssmVisibilityActionType] hideElement',\n showElement = '[NgssmVisibilityActionType] showElement'\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmVisibilityActionType } from './ngssm-visibility-action-type';\n\nexport class ToggleElementVisibilityAction implements Action {\n public readonly type: string = NgssmVisibilityActionType.toggleElementVisibility;\n\n constructor(public readonly elementKey: string) {}\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmVisibilityActionType } from './ngssm-visibility-action-type';\n\nexport class ShowElementAction implements Action {\n public readonly type: string = NgssmVisibilityActionType.showElement;\n\n constructor(public readonly elementKey: string) {}\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmVisibilityActionType } from './ngssm-visibility-action-type';\n\nexport class HideElementAction implements Action {\n public readonly type: string = NgssmVisibilityActionType.hideElement;\n\n constructor(public readonly elementKey: string) {}\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmVisibilityActionType } from './ngssm-visibility-action-type';\n\nexport class DefineElementsGroupAction implements Action {\n public readonly type: string = NgssmVisibilityActionType.defineElementsGroup;\n\n constructor(public readonly elementKeys: string[]) {}\n}\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nexport const selectNgssmVisibilityState = (state: State): NgssmVisibilityState =>\n state[NgssmVisibilityStateSpecification.featureStateKey] as NgssmVisibilityState;\n\nexport const updateNgssmVisibilityState = (state: State, command: Spec<NgssmVisibilityState, never>): State =>\n update(state, {\n [NgssmVisibilityStateSpecification.featureStateKey]: command\n });\n\nexport interface NgssmVisibilityState {\n elements: Record<string, boolean>;\n elementsGroups: string[][];\n}\n\n@NgSsmFeatureState({\n featureStateKey: NgssmVisibilityStateSpecification.featureStateKey,\n initialState: NgssmVisibilityStateSpecification.initialState\n})\nexport class NgssmVisibilityStateSpecification {\n public static readonly featureStateKey = 'ngssm-visibility-state';\n public static readonly initialState: NgssmVisibilityState = {\n elements: {},\n elementsGroups: []\n };\n}\n","import { Injectable } from '@angular/core';\n\nimport { Spec } from 'immutability-helper';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport {\n DefineElementsGroupAction,\n HideElementAction,\n NgssmVisibilityActionType,\n ShowElementAction,\n ToggleElementVisibilityAction\n} from '../actions';\nimport { selectNgssmVisibilityState, updateNgssmVisibilityState } from '../state';\n\n@Injectable()\nexport class VisibilityReducer implements Reducer {\n public readonly processedActions: string[] = [\n NgssmVisibilityActionType.toggleElementVisibility,\n NgssmVisibilityActionType.showElement,\n NgssmVisibilityActionType.hideElement,\n NgssmVisibilityActionType.defineElementsGroup\n ];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmVisibilityActionType.toggleElementVisibility: {\n const toggleVisibilityAction = action as ToggleElementVisibilityAction;\n if (selectNgssmVisibilityState(state).elements[toggleVisibilityAction.elementKey] === true) {\n return updateNgssmVisibilityState(state, {\n elements: {\n [toggleVisibilityAction.elementKey]: { $set: false }\n }\n });\n }\n\n return this.setElementVisible(state, toggleVisibilityAction.elementKey);\n }\n\n case NgssmVisibilityActionType.showElement: {\n const showAction = action as ShowElementAction;\n return this.setElementVisible(state, showAction.elementKey);\n }\n\n case NgssmVisibilityActionType.hideElement: {\n const hideAction = action as HideElementAction;\n return updateNgssmVisibilityState(state, {\n elements: {\n [hideAction.elementKey]: { $set: false }\n }\n });\n }\n\n case NgssmVisibilityActionType.defineElementsGroup: {\n const defineElementsGroupAction = action as DefineElementsGroupAction;\n const keys = [...defineElementsGroupAction.elementKeys];\n keys.sort();\n if (this.groupExists(keys, selectNgssmVisibilityState(state).elementsGroups)) {\n break;\n }\n\n return updateNgssmVisibilityState(state, {\n elementsGroups: { $push: [keys] }\n });\n }\n }\n\n return state;\n }\n\n private groupExists(keys: string[], groups: string[][]): boolean {\n const index = groups.findIndex((group) => {\n return group.length === keys.length && group.findIndex((k, i) => k !== keys[i]) === -1;\n });\n return index !== -1;\n }\n\n private getElementsKeysGroupedWith(key: string, groups: string[][]): string[] {\n const keys = groups.filter((g) => g.includes(key)).flatMap((g) => g);\n const distinctKeys = new Set<string>(keys);\n distinctKeys.delete(key);\n return [...distinctKeys];\n }\n\n private setElementVisible(state: State, key: string): State {\n const elementsCommand: Spec<Record<string, boolean>, never> = {\n [key]: { $set: true }\n };\n\n const associatedElements = this.getElementsKeysGroupedWith(key, selectNgssmVisibilityState(state).elementsGroups);\n associatedElements.forEach((el) => {\n elementsCommand[el] = { $set: false };\n });\n\n return updateNgssmVisibilityState(state, {\n elements: elementsCommand\n });\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { provideReducers } from 'ngssm-store';\nimport { VisibilityReducer } from './reducers';\n\nexport const provideNgssmVisibility = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideReducers(VisibilityReducer)]);\n};\n","import { Directive, HostListener, inject, Input } from '@angular/core';\n\nimport { Store } from 'ngssm-store';\n\nimport { ToggleElementVisibilityAction } from '../actions';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[toggleElementVisibility]',\n standalone: true\n})\nexport class ToggleElementVisibilityDirective {\n private readonly store = inject(Store);\n\n @Input('toggleElementVisibility') public key: string | undefined | null = '';\n\n @HostListener('click', ['$event'])\n public toggleElementvisibility(): void {\n const elementKey = this.key;\n if (elementKey) {\n this.store.dispatchAction(new ToggleElementVisibilityAction(elementKey));\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { State } from 'ngssm-store';\nimport { selectNgssmVisibilityState } from '../state';\n\n@Pipe({\n name: 'isElementVisible',\n standalone: true\n})\nexport class IsElementVisiblePipe implements PipeTransform {\n public transform(value: State, ...args: string[]): boolean {\n return selectNgssmVisibilityState(value).elements[args[0]] === true;\n }\n}\n","import { Directive, HostListener, inject, Input } from '@angular/core';\nimport { Store } from 'ngssm-store';\nimport { ShowElementAction } from '../actions';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[showElement]',\n standalone: true\n})\nexport class ShowElementDirective {\n private readonly store = inject(Store);\n\n @Input('showElement') public key: string | undefined | null = '';\n\n @HostListener('click', ['$event'])\n public toggleElementvisibility(): void {\n const elementKey = this.key;\n if (elementKey) {\n this.store.dispatchAction(new ShowElementAction(elementKey));\n }\n }\n}\n","import { Directive, HostListener, inject, Input } from '@angular/core';\nimport { Store } from 'ngssm-store';\nimport { HideElementAction } from '../actions';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[hideElement]',\n standalone: true\n})\nexport class HideElementDirective {\n private readonly store = inject(Store);\n\n @Input('hideElement') public key: string | undefined | null = '';\n\n @HostListener('click', ['$event'])\n public toggleElementvisibility(): void {\n const elementKey = this.key;\n if (elementKey) {\n this.store.dispatchAction(new HideElementAction(elementKey));\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, booleanAttribute, input, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n\nimport { Store } from 'ngssm-store';\n\nimport { ToggleElementVisibilityDirective } from '../toggle-element-visibility.directive';\nimport { IsElementVisiblePipe } from '../is-element-visible.pipe';\n\n@Component({\n selector: 'ngssm-visibility-toggle-group',\n imports: [CommonModule, MatButtonToggleModule, ToggleElementVisibilityDirective, IsElementVisiblePipe],\n templateUrl: './visibility-toggle-group.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VisibilityToggleGroupComponent {\n public readonly store = inject(Store);\n\n public readonly items = input<{ label: string; key: string }[]>([]);\n public readonly hideMultipleSelectionIndicator = input<boolean, boolean>(false, { transform: booleanAttribute });\n}\n","<mat-button-toggle-group [multiple]=\"true\" [hideMultipleSelectionIndicator]=\"hideMultipleSelectionIndicator()\">\n @for (item of items(); track item.key) {\n <mat-button-toggle [toggleElementVisibility]=\"item.key\" [checked]=\"store.state() | isElementVisible: item.key\" [id]=\"item.key\">\n {{ item.label }}\n </mat-button-toggle>\n }\n</mat-button-toggle-group>\n","import { Signal } from '@angular/core';\n\nimport { createSignal } from 'ngssm-store';\n\nimport { selectNgssmVisibilityState } from './state';\n\n/**\n * Represents the visibility state of a specific element.\n * - key: The unique identifier for the element.\n * - visible: A signal that emits the visibility status (true if visible, false otherwise).\n */\nexport interface ElementVisibility {\n key: string;\n visible: Signal<boolean>;\n}\n\n// Creates a signal allowing to listen to changes in element visibility.\nexport const isElementVisible = (elementKey: string): ElementVisibility => ({\n key: elementKey,\n visible: createSignal((state) => selectNgssmVisibilityState(state).elements[elementKey] === true)\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngssm-store-visibility.mjs","sources":["../../../projects/ngssm-store/visibility/src/actions/ngssm-visibility-action-type.ts","../../../projects/ngssm-store/visibility/src/actions/toggle-element-visibility.action.ts","../../../projects/ngssm-store/visibility/src/actions/show-element.action.ts","../../../projects/ngssm-store/visibility/src/actions/hide-element.action.ts","../../../projects/ngssm-store/visibility/src/actions/define-elements-group.action.ts","../../../projects/ngssm-store/visibility/src/state/ngssm-visibility.state.ts","../../../projects/ngssm-store/visibility/src/reducers/visibility.reducer.ts","../../../projects/ngssm-store/visibility/src/provide-ngssm-visibility.ts","../../../projects/ngssm-store/visibility/src/components/toggle-element-visibility.directive.ts","../../../projects/ngssm-store/visibility/src/components/is-element-visible.pipe.ts","../../../projects/ngssm-store/visibility/src/components/show-element.directive.ts","../../../projects/ngssm-store/visibility/src/components/hide-element.directive.ts","../../../projects/ngssm-store/visibility/src/components/visibility-toggle-group/visibility-toggle-group.component.ts","../../../projects/ngssm-store/visibility/src/components/visibility-toggle-group/visibility-toggle-group.component.html","../../../projects/ngssm-store/visibility/src/signal-helpers.ts","../../../projects/ngssm-store/visibility/ngssm-store-visibility.ts"],"sourcesContent":["export enum NgssmVisibilityActionType {\n defineElementsGroup = '[NgssmVisibilityActionType] defineElementsGroup',\n toggleElementVisibility = '[NgssmVisibilityActionType] toggleElementVisibility',\n hideElement = '[NgssmVisibilityActionType] hideElement',\n showElement = '[NgssmVisibilityActionType] showElement'\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmVisibilityActionType } from './ngssm-visibility-action-type';\n\nexport class ToggleElementVisibilityAction implements Action {\n public readonly type: string = NgssmVisibilityActionType.toggleElementVisibility;\n\n constructor(public readonly elementKey: string) {}\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmVisibilityActionType } from './ngssm-visibility-action-type';\n\nexport class ShowElementAction implements Action {\n public readonly type: string = NgssmVisibilityActionType.showElement;\n\n constructor(public readonly elementKey: string) {}\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmVisibilityActionType } from './ngssm-visibility-action-type';\n\nexport class HideElementAction implements Action {\n public readonly type: string = NgssmVisibilityActionType.hideElement;\n\n constructor(public readonly elementKey: string) {}\n}\n","import { Action } from 'ngssm-store';\nimport { NgssmVisibilityActionType } from './ngssm-visibility-action-type';\n\nexport class DefineElementsGroupAction implements Action {\n public readonly type: string = NgssmVisibilityActionType.defineElementsGroup;\n\n constructor(public readonly elementKeys: string[]) {}\n}\n","import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nexport const selectNgssmVisibilityState = (state: State): NgssmVisibilityState =>\n state[NgssmVisibilityStateSpecification.featureStateKey] as NgssmVisibilityState;\n\nexport const updateNgssmVisibilityState = (state: State, command: Spec<NgssmVisibilityState, never>): State =>\n update(state, {\n [NgssmVisibilityStateSpecification.featureStateKey]: command\n });\n\nexport interface NgssmVisibilityState {\n elements: Record<string, boolean>;\n elementsGroups: string[][];\n}\n\n@NgSsmFeatureState({\n featureStateKey: NgssmVisibilityStateSpecification.featureStateKey,\n initialState: NgssmVisibilityStateSpecification.initialState\n})\nexport class NgssmVisibilityStateSpecification {\n public static readonly featureStateKey = 'ngssm-visibility-state';\n public static readonly initialState: NgssmVisibilityState = {\n elements: {},\n elementsGroups: []\n };\n}\n","import { Injectable } from '@angular/core';\n\nimport { Spec } from 'immutability-helper';\n\nimport { Reducer, State, Action } from 'ngssm-store';\n\nimport {\n DefineElementsGroupAction,\n HideElementAction,\n NgssmVisibilityActionType,\n ShowElementAction,\n ToggleElementVisibilityAction\n} from '../actions';\nimport { selectNgssmVisibilityState, updateNgssmVisibilityState } from '../state';\n\n@Injectable()\nexport class VisibilityReducer implements Reducer {\n public readonly processedActions: string[] = [\n NgssmVisibilityActionType.toggleElementVisibility,\n NgssmVisibilityActionType.showElement,\n NgssmVisibilityActionType.hideElement,\n NgssmVisibilityActionType.defineElementsGroup\n ];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmVisibilityActionType.toggleElementVisibility: {\n const toggleVisibilityAction = action as ToggleElementVisibilityAction;\n if (selectNgssmVisibilityState(state).elements[toggleVisibilityAction.elementKey] === true) {\n return updateNgssmVisibilityState(state, {\n elements: {\n [toggleVisibilityAction.elementKey]: { $set: false }\n }\n });\n }\n\n return this.setElementVisible(state, toggleVisibilityAction.elementKey);\n }\n\n case NgssmVisibilityActionType.showElement: {\n const showAction = action as ShowElementAction;\n return this.setElementVisible(state, showAction.elementKey);\n }\n\n case NgssmVisibilityActionType.hideElement: {\n const hideAction = action as HideElementAction;\n return updateNgssmVisibilityState(state, {\n elements: {\n [hideAction.elementKey]: { $set: false }\n }\n });\n }\n\n case NgssmVisibilityActionType.defineElementsGroup: {\n const defineElementsGroupAction = action as DefineElementsGroupAction;\n const keys = [...defineElementsGroupAction.elementKeys];\n keys.sort();\n if (this.groupExists(keys, selectNgssmVisibilityState(state).elementsGroups)) {\n break;\n }\n\n return updateNgssmVisibilityState(state, {\n elementsGroups: { $push: [keys] }\n });\n }\n }\n\n return state;\n }\n\n private groupExists(keys: string[], groups: string[][]): boolean {\n const index = groups.findIndex((group) => {\n return group.length === keys.length && group.findIndex((k, i) => k !== keys[i]) === -1;\n });\n return index !== -1;\n }\n\n private getElementsKeysGroupedWith(key: string, groups: string[][]): string[] {\n const keys = groups.filter((g) => g.includes(key)).flatMap((g) => g);\n const distinctKeys = new Set<string>(keys);\n distinctKeys.delete(key);\n return [...distinctKeys];\n }\n\n private setElementVisible(state: State, key: string): State {\n const elementsCommand: Spec<Record<string, boolean>, never> = {\n [key]: { $set: true }\n };\n\n const associatedElements = this.getElementsKeysGroupedWith(key, selectNgssmVisibilityState(state).elementsGroups);\n associatedElements.forEach((el) => {\n elementsCommand[el] = { $set: false };\n });\n\n return updateNgssmVisibilityState(state, {\n elements: elementsCommand\n });\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { provideReducers } from 'ngssm-store';\nimport { VisibilityReducer } from './reducers';\n\nexport const provideNgssmVisibility = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideReducers(VisibilityReducer)]);\n};\n","import { Directive, HostListener, inject, Input } from '@angular/core';\n\nimport { Store } from 'ngssm-store';\n\nimport { ToggleElementVisibilityAction } from '../actions';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[toggleElementVisibility]',\n standalone: true\n})\nexport class ToggleElementVisibilityDirective {\n private readonly store = inject(Store);\n\n @Input('toggleElementVisibility') public key: string | undefined | null = '';\n\n @HostListener('click', ['$event'])\n public toggleElementvisibility(): void {\n const elementKey = this.key;\n if (elementKey) {\n this.store.dispatchAction(new ToggleElementVisibilityAction(elementKey));\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { State } from 'ngssm-store';\nimport { selectNgssmVisibilityState } from '../state';\n\n@Pipe({\n name: 'isElementVisible',\n standalone: true\n})\nexport class IsElementVisiblePipe implements PipeTransform {\n public transform(value: State, ...args: string[]): boolean {\n return selectNgssmVisibilityState(value).elements[args[0]] === true;\n }\n}\n","import { Directive, HostListener, inject, Input } from '@angular/core';\nimport { Store } from 'ngssm-store';\nimport { ShowElementAction } from '../actions';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[showElement]',\n standalone: true\n})\nexport class ShowElementDirective {\n private readonly store = inject(Store);\n\n @Input('showElement') public key: string | undefined | null = '';\n\n @HostListener('click', ['$event'])\n public toggleElementvisibility(): void {\n const elementKey = this.key;\n if (elementKey) {\n this.store.dispatchAction(new ShowElementAction(elementKey));\n }\n }\n}\n","import { Directive, HostListener, inject, Input } from '@angular/core';\nimport { Store } from 'ngssm-store';\nimport { HideElementAction } from '../actions';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[hideElement]',\n standalone: true\n})\nexport class HideElementDirective {\n private readonly store = inject(Store);\n\n @Input('hideElement') public key: string | undefined | null = '';\n\n @HostListener('click', ['$event'])\n public toggleElementvisibility(): void {\n const elementKey = this.key;\n if (elementKey) {\n this.store.dispatchAction(new HideElementAction(elementKey));\n }\n }\n}\n","import { Component, ChangeDetectionStrategy, booleanAttribute, input, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\n\nimport { Store } from 'ngssm-store';\n\nimport { ToggleElementVisibilityDirective } from '../toggle-element-visibility.directive';\nimport { IsElementVisiblePipe } from '../is-element-visible.pipe';\n\n@Component({\n selector: 'ngssm-visibility-toggle-group',\n imports: [CommonModule, MatButtonToggleModule, ToggleElementVisibilityDirective, IsElementVisiblePipe],\n templateUrl: './visibility-toggle-group.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VisibilityToggleGroupComponent {\n public readonly store = inject(Store);\n\n public readonly items = input<{ label: string; key: string }[]>([]);\n public readonly hideMultipleSelectionIndicator = input<boolean, boolean>(false, { transform: booleanAttribute });\n}\n","<mat-button-toggle-group [multiple]=\"true\" [hideMultipleSelectionIndicator]=\"hideMultipleSelectionIndicator()\">\n @for (item of items(); track item.key) {\n <mat-button-toggle [toggleElementVisibility]=\"item.key\" [checked]=\"store.state() | isElementVisible: item.key\" [id]=\"item.key\">\n {{ item.label }}\n </mat-button-toggle>\n }\n</mat-button-toggle-group>\n","import { Signal } from '@angular/core';\n\nimport { createSignal } from 'ngssm-store';\n\nimport { selectNgssmVisibilityState } from './state';\n\n/**\n * Represents the visibility state of a specific element.\n * - key: The unique identifier for the element.\n * - visible: A signal that emits the visibility status (true if visible, false otherwise).\n */\nexport interface ElementVisibility {\n key: string;\n visible: Signal<boolean>;\n}\n\n// Creates a signal allowing to listen to changes in element visibility.\nexport const isElementVisible = (elementKey: string): ElementVisibility => ({\n key: elementKey,\n visible: createSignal((state) => selectNgssmVisibilityState(state).elements[elementKey] === true)\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
package/fesm2022/ngssm-store.mjs
CHANGED
|
@@ -67,10 +67,10 @@ class Logger {
|
|
|
67
67
|
payload
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
71
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: Logger, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
71
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: Logger, providedIn: 'root' }); }
|
|
72
72
|
}
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: Logger, decorators: [{
|
|
74
74
|
type: Injectable,
|
|
75
75
|
args: [{
|
|
76
76
|
providedIn: 'root'
|
|
@@ -106,10 +106,10 @@ class ConsoleAppender {
|
|
|
106
106
|
stop() {
|
|
107
107
|
this.stopEvent$.next(true);
|
|
108
108
|
}
|
|
109
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
110
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ConsoleAppender, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
110
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ConsoleAppender, providedIn: 'root' }); }
|
|
111
111
|
}
|
|
112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ConsoleAppender, decorators: [{
|
|
113
113
|
type: Injectable,
|
|
114
114
|
args: [{
|
|
115
115
|
providedIn: 'root'
|
|
@@ -369,10 +369,10 @@ class Store {
|
|
|
369
369
|
Promise.resolve().then(() => this.processNextAction());
|
|
370
370
|
}
|
|
371
371
|
}
|
|
372
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
373
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
372
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: Store, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
373
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: Store, providedIn: 'root' }); }
|
|
374
374
|
}
|
|
375
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
375
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: Store, decorators: [{
|
|
376
376
|
type: Injectable,
|
|
377
377
|
args: [{
|
|
378
378
|
providedIn: 'root'
|
|
@@ -425,10 +425,10 @@ class ProvideNgssmFeatureStateDirective {
|
|
|
425
425
|
ngOnDestroy() {
|
|
426
426
|
this.store.dispatchAction(new NgssmUnregisterFeatureStateAction(this.component.featureStateKey));
|
|
427
427
|
}
|
|
428
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
429
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.
|
|
428
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ProvideNgssmFeatureStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
429
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: ProvideNgssmFeatureStateDirective, isStandalone: true, selector: "[provideNgssmFeatureState]", ngImport: i0 }); }
|
|
430
430
|
}
|
|
431
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
431
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: ProvideNgssmFeatureStateDirective, decorators: [{
|
|
432
432
|
type: Directive,
|
|
433
433
|
args: [{
|
|
434
434
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -458,10 +458,10 @@ class FeatureStateReducer {
|
|
|
458
458
|
}
|
|
459
459
|
return state;
|
|
460
460
|
}
|
|
461
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
462
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
461
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: FeatureStateReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
462
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: FeatureStateReducer }); }
|
|
463
463
|
}
|
|
464
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
464
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: FeatureStateReducer, decorators: [{
|
|
465
465
|
type: Injectable
|
|
466
466
|
}] });
|
|
467
467
|
|
|
@@ -486,10 +486,10 @@ class NgSsmComponent {
|
|
|
486
486
|
dispatchActionType(actionType) {
|
|
487
487
|
this.store.dispatchActionType(actionType);
|
|
488
488
|
}
|
|
489
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
490
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.
|
|
489
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgSsmComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
490
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: NgSsmComponent, isStandalone: true, ngImport: i0 }); }
|
|
491
491
|
}
|
|
492
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
492
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgSsmComponent, decorators: [{
|
|
493
493
|
type: Directive,
|
|
494
494
|
args: [{}]
|
|
495
495
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngssm-store.mjs","sources":["../../../projects/ngssm-store/src/lib/reducer.ts","../../../projects/ngssm-store/src/lib/effect.ts","../../../projects/ngssm-store/src/lib/state-initializer.ts","../../../projects/ngssm-store/src/lib/logging/log-level.ts","../../../projects/ngssm-store/src/lib/logging/logger.ts","../../../projects/ngssm-store/src/lib/logging/console-appender.ts","../../../projects/ngssm-store/src/lib/logging/provide-console-appender.ts","../../../projects/ngssm-store/src/lib/store.ts","../../../projects/ngssm-store/src/lib/feature-state/feature-state-specification.ts","../../../projects/ngssm-store/src/lib/actions/ngssm-store-action-type.ts","../../../projects/ngssm-store/src/lib/actions/ngssm-register-feature-state.action.ts","../../../projects/ngssm-store/src/lib/actions/ngssm-unregister-feature-state.action.ts","../../../projects/ngssm-store/src/lib/feature-state/provide-feature-state.ts","../../../projects/ngssm-store/src/lib/feature-state/provide-ngssm-feature-state.directive.ts","../../../projects/ngssm-store/src/lib/feature-state/feature-state.reducer.ts","../../../projects/ngssm-store/src/lib/ngssm-component.ts","../../../projects/ngssm-store/src/lib/provide-ngssm-store.ts","../../../projects/ngssm-store/src/lib/signal-helpers.ts","../../../projects/ngssm-store/src/public-api.ts","../../../projects/ngssm-store/src/ngssm-store.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, Type, makeEnvironmentProviders } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\n\nexport interface Reducer {\n processedActions: string[];\n updateState(state: State, action: Action): State;\n}\n\nexport const NGSSM_REDUCER = new InjectionToken<Reducer>('NGSSM_REDUCER');\n\nexport const provideReducer = (reducer: Type<unknown>): EnvironmentProviders => {\n return makeEnvironmentProviders([{ provide: NGSSM_REDUCER, useClass: reducer, multi: true }]);\n};\n\nexport const provideReducers = (...reducers: Type<unknown>[]): EnvironmentProviders => {\n return makeEnvironmentProviders(reducers.map((reducer) => ({ provide: NGSSM_REDUCER, useClass: reducer, multi: true })));\n};\n","import { EnvironmentProviders, InjectionToken, Type, makeEnvironmentProviders } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { ActionDispatcher } from './action-dispatcher';\n\nexport interface Effect {\n processedActions: string[];\n processAction(actiondispatcher: ActionDispatcher, state: State, action: Action): void;\n isFunc?: boolean;\n}\n\nexport const NGSSM_EFFECT = new InjectionToken<Effect>('NGSSM_EFFECT');\n\nexport const provideEffect = (effect: Type<unknown>): EnvironmentProviders => {\n return makeEnvironmentProviders([{ provide: NGSSM_EFFECT, useClass: effect, multi: true }]);\n};\n\nexport const provideEffects = (...effects: Type<unknown>[]): EnvironmentProviders => {\n return makeEnvironmentProviders(effects.map((effect) => ({ provide: NGSSM_EFFECT, useClass: effect, multi: true })));\n};\n\nexport type EffectFunc = (state: State, action: Action) => void;\n\nexport const provideEffectFunc = (actionType: string, effectFunc: EffectFunc): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: NGSSM_EFFECT,\n useFactory: () => {\n const effect: Effect = {\n processedActions: [actionType],\n processAction: (_, state, action) => effectFunc(state, action),\n isFunc: true\n };\n return effect;\n },\n multi: true\n }\n ]);\n};\n","import { InjectionToken } from '@angular/core';\nimport { State } from './state';\n\nexport interface StateInitializer {\n initializeState(state: State): State;\n}\n\nexport const NGSSM_STATE_INITIALIZER = new InjectionToken<StateInitializer>('NGSSM_STATE_INITIALIZER');\n","export enum LogLevel {\n debug = 'Debug',\n information = 'Information',\n error = 'Error'\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { LogEvent } from './log-event';\nimport { LogLevel } from './log-level';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Logger {\n private readonly _logEvents$ = new Subject<LogEvent>();\n\n public get logEvents$(): Observable<LogEvent> {\n return this._logEvents$.asObservable();\n }\n\n public debug(message: string, payload?: unknown): void {\n this.log(LogLevel.debug, message, payload);\n }\n\n public information(message: string, payload?: unknown): void {\n this.log(LogLevel.information, message, payload);\n }\n\n public error(message: string, payload?: unknown): void {\n this.log(LogLevel.error, message, payload);\n }\n\n public log(level: LogLevel, message: string, payload?: unknown): void {\n this._logEvents$.next({\n level,\n message,\n payload\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { Logger } from './logger';\nimport { LogLevel } from './log-level';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsoleAppender {\n private logger = inject(Logger);\n\n private readonly stopEvent$ = new Subject<boolean>();\n\n public start(contextName?: string): void {\n this.logger.logEvents$.pipe(takeUntil(this.stopEvent$)).subscribe((logEvent) => {\n let logFunction: (...data: unknown[]) => void;\n switch (logEvent.level) {\n case LogLevel.error:\n logFunction = console.error;\n break;\n\n default:\n logFunction = console.log;\n break;\n }\n\n const now = new Date().toLocaleString();\n const prefix = contextName ? `[${contextName}] ` : '';\n\n if (logEvent.payload) {\n logFunction(`${prefix}[${now}] [${logEvent.level}] ${logEvent.message}`, logEvent.payload);\n } else {\n logFunction(`${prefix}[${now}] [${logEvent.level}] ${logEvent.message}`);\n }\n });\n }\n\n public stop(): void {\n this.stopEvent$.next(true);\n }\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';\nimport { ConsoleAppender } from './console-appender';\n\nexport const NGSSM_CONSOLE_APPENDER_NAME = new InjectionToken<string>('NGSSM_CONSOLE_APPENDER_NAME');\n\nexport const startConsoleAppenderFactory = (): (() => void) => {\n return () => {\n const name = inject(NGSSM_CONSOLE_APPENDER_NAME);\n const consoleAppender = inject(ConsoleAppender);\n consoleAppender.start(name);\n };\n};\n\nexport const provideConsoleAppender = (name: string): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: NGSSM_CONSOLE_APPENDER_NAME,\n useValue: name\n },\n provideAppInitializer(startConsoleAppenderFactory())\n ]);\n};\n","import { EnvironmentInjector, Injectable, Signal, inject, runInInjectionContext, signal } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport update from 'immutability-helper';\n\nimport { FeatureStateSpecification } from './feature-state';\nimport { State } from './state';\nimport { Action } from './action';\nimport { NGSSM_REDUCER, Reducer } from './reducer';\nimport { Effect, NGSSM_EFFECT } from './effect';\nimport { NGSSM_STATE_INITIALIZER, StateInitializer } from './state-initializer';\nimport { Logger } from './logging';\nimport { ActionDispatcher } from './action-dispatcher';\n\nconst featureStateSpecifications: FeatureStateSpecification[] = [];\nexport const NgSsmFeatureState = (specification: FeatureStateSpecification) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return (target: object) => {\n featureStateSpecifications.push(specification);\n };\n};\n\n/**\n * The `Store` class is a centralized state management system for Angular applications.\n * It manages the application state, processes actions using reducers, and handles side effects using effects.\n * The class integrates both RxJS (`BehaviorSubject`) and Angular signals for reactive state management.\n *\n * ### Features:\n * - Centralized state management with support for reducers and effects.\n * - Reactive state updates using both RxJS and Angular signals.\n * - Modular initialization of feature states, reducers, and effects.\n * - Sequential action processing with an action queue.\n * - Logging for debugging and monitoring state changes and action processing.\n *\n * ### Usage:\n * - Dispatch actions using `dispatchAction` or `dispatchActionType`.\n * - Subscribe to state updates using `state$` (RxJS) or `state` (Angular signal).\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class Store implements ActionDispatcher {\n // Logger service for debugging and monitoring.\n private readonly logger = inject(Logger);\n // Array of reducers to process state updates.\n private readonly reducers: Reducer[] | null = inject(NGSSM_REDUCER, { optional: true }) as unknown as Reducer[];\n // Array of effects to handle side effects.\n private readonly effects: Effect[] | null = inject(NGSSM_EFFECT, { optional: true }) as unknown as Effect[];\n // Array of state initializers to set up the initial state.\n private readonly initializers: StateInitializer[] = inject(NGSSM_STATE_INITIALIZER, { optional: true }) as unknown as StateInitializer[];\n // Angular's `EnvironmentInjector` for running effects in the correct context.\n private injector = inject(EnvironmentInjector);\n\n // The current state of the application, managed as a BehaviorSubject for RxJS compatibility.\n private readonly _state$ = new BehaviorSubject<State>({});\n\n // A queue to ensure actions are processed sequentially.\n private readonly actionQueue: Action[] = [];\n\n // Maps action types to their corresponding reducers.\n private readonly reducersPerActionType = new Map<string, Reducer[]>();\n\n // Maps action types to their corresponding effects.\n private readonly effectsPerActionType = new Map<string, Effect[]>();\n\n // The current state of the application, managed as an Angular signal for signal-based reactivity.\n private readonly _stateSignal = signal<State>({});\n\n // The most recently action processed by reducers, managed as an Angular signal.\n private readonly _processedAction = signal<Action>({ type: '' });\n\n // The most recently action processed by reducers, managed as an observable.\n private readonly _processedAction$ = new BehaviorSubject<Action>({ type: '' });\n\n // If true, an action is processed in a macro-task by using setTimoeout. Otherwise, Promise.resolve() is used\n // When using micro task, an issue can occur with angular root effects that want to process state or action signals.\n // They can be executed after a list of actions is processed. In that case, some actions are never processed by the effects.\n public useMacroTasks = true;\n\n /**\n * Initializes the `Store` with reducers, effects, and state initializers.\n * Also sets up the initial state and registers reducers and effects.\n */\n constructor() {\n // Synchronize the RxJS state with the Angular signal state.\n this._state$.subscribe((value) => this._stateSignal.set(value));\n\n this.logger.information('[Store] ---> state initialization...');\n let state = this._state$.getValue();\n\n // Initialize feature states.\n state = featureStateSpecifications.reduce((p, c) => update(p, { [c.featureStateKey]: { $set: c.initialState } }), state);\n\n // Apply state initializers.\n (this.initializers ?? []).forEach((initializer) => {\n this.logger.information('[Store] ------> calling initializer', initializer);\n state = initializer.initializeState(state);\n });\n\n // Update the state with the initialized values.\n this._state$.next(state);\n\n // Register reducers and effects.\n this.logger.information(`[Store] ---> initialization of ${(this.reducers ?? []).length} reducers...`);\n this.initializeProcessors(this.reducers ?? [], this.reducersPerActionType, (r) => r.processedActions);\n this.logger.information(`[Store] ---> initialization of ${(this.effects ?? []).length} effects...`);\n this.initializeProcessors(this.effects ?? [], this.effectsPerActionType, (e) => e.processedActions);\n }\n\n /**\n * Returns the current state as an RxJS observable.\n * Useful for subscribing to state changes in a reactive manner.\n */\n public get state$(): Observable<State> {\n return this._state$.asObservable();\n }\n\n /**\n * Returns the most recently action processed by reducers as an Angular signal.\n * Useful for accessing the last processed action in a reactive manner.\n * This signal is updated before processing the effects.\n */\n public get processedAction(): Signal<Action> {\n return this._processedAction.asReadonly();\n }\n\n /**\n * Returns the most recently action processed by reducers as an observale.\n * Useful for accessing the last processed action in a reactive manner.\n * This signal is updated before processing the effects.\n */\n public get processedAction$(): Observable<Action> {\n return this._processedAction$.asObservable();\n }\n\n /**\n * Returns the current state as an Angular signal.\n * Useful for signal-based reactivity in Angular components.\n */\n public get state(): Signal<State> {\n return this._stateSignal.asReadonly();\n }\n\n /**\n * Dispatches an action to the store.\n * The action is added to the action queue and processed sequentially.\n *\n * @param action - The action to dispatch.\n */\n public dispatchAction(action: Action): void {\n this.actionQueue.push(action);\n this.logger.debug(`Action of type '${action.type}' added to the queue => ${this.actionQueue.length} pending actions`, action);\n\n this.addTaskForNextAction();\n }\n\n /**\n * Dispatches an action by its type.\n * This is a shorthand for dispatching actions without additional payload.\n *\n * @param type - The type of the action to dispatch.\n */\n public dispatchActionType(type: string): void {\n this.dispatchAction({ type });\n }\n\n /**\n * Processes the next action in the action queue.\n * Applies reducers to update the state and executes effects for side effects.\n */\n private processNextAction(): void {\n const nextAction = this.actionQueue.shift();\n if (!nextAction) {\n this.logger.debug('[processNextAction] No action to process');\n return;\n }\n\n this.logger.information(`[processNextAction] Start processing action '${nextAction.type}...`, nextAction);\n\n try {\n // Apply reducers to update the state.\n const updatedState = this.applyReducers(nextAction);\n\n // Execute effects for the action.\n const effects = this.effectsPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${effects.length} effects found to process the action ${nextAction.type}`, effects);\n effects.forEach((effect) => {\n if (effect.isFunc === true) {\n runInInjectionContext(this.injector, () => this.runEffect(effect, updatedState, nextAction));\n } else {\n this.runEffect(effect, updatedState, nextAction);\n }\n });\n } catch (error) {\n this.logger.error(`Error when processing action ${nextAction.type}`, {\n error,\n action: nextAction\n });\n } finally {\n this.logger.information(`[processNextAction] action '${nextAction.type} processed.`, nextAction);\n\n // Process the next action asynchronously\n this.addTaskForNextAction();\n }\n }\n\n /**\n * Applies reducers to the current state based on the dispatched action.\n * Updates the state if there are changes and sets the processed action signal.\n *\n * @param nextAction - The action being processed.\n * @returns The updated state after applying reducers.\n */\n private applyReducers(nextAction: Action): State {\n try {\n const reducers = this.reducersPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${reducers.length} reducers found to process the action ${nextAction.type}`, reducers);\n const currentState = this._state$.getValue();\n const updatedState = reducers.reduce((p, c) => c.updateState(p, nextAction), currentState);\n\n if (updatedState !== currentState) {\n this._state$.next(updatedState);\n }\n\n return updatedState;\n } finally {\n this.logger.debug(`[Store] Notify action ${nextAction.type} as processed`);\n this._processedAction.set(nextAction);\n this._processedAction$.next(nextAction);\n }\n }\n\n /**\n * Executes an effect for a given action.\n * Handles any errors that occur during effect execution.\n *\n * @param effect - The effect to execute.\n * @param updatedState - The updated state after reducers have been applied.\n * @param nextAction - The action being processed.\n */\n private runEffect(effect: Effect, updatedState: State, nextAction: Action): void {\n try {\n effect.processAction(this, updatedState, nextAction);\n } catch (error) {\n this.logger.error(`Unable to process action ${nextAction.type} by effect ${effect}`, {\n error,\n action: nextAction,\n processor: effect\n });\n }\n }\n\n /**\n * Initializes reducers or effects and maps them to their corresponding action types.\n *\n * @param processors - The array of reducers or effects to initialize.\n * @param processorMap - The map to store processors by action type.\n * @param getProcessedActions - A function to retrieve the action types processed by a processor.\n */\n private initializeProcessors<T>(processors: T[], processorMap: Map<string, T[]>, getProcessedActions: (processor: T) => string[]): void {\n processors.forEach((processor) => {\n this.logger.information('[Store] ------> initialization of ', processor);\n getProcessedActions(processor).forEach((actionType) => {\n const storedProcessors = processorMap.get(actionType) ?? [];\n if (storedProcessors.length === 0) {\n processorMap.set(actionType, storedProcessors);\n }\n storedProcessors.push(processor);\n });\n });\n }\n\n private addTaskForNextAction(): void {\n if (this.useMacroTasks) {\n setTimeout(() => this.processNextAction());\n } else {\n Promise.resolve().then(() => this.processNextAction());\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface FeatureStateSpecification {\n readonly featureStateKey: string;\n readonly initialState: object;\n}\n\nexport const NGSSM_COMPONENT_WITH_FEATURE_STATE = new InjectionToken<FeatureStateSpecification>('NGSSM_COMPONENT_WITH_FEATURE_STATE');\n","export enum NgssmStoreActionType {\n registerFeatureState = '[NgssmStoreActionType] registerFeatureState',\n unregisterFeatureState = '[NgssmStoreActionType] unregisterFeatureState'\n}\n","import { Action } from '../action';\nimport { NgssmStoreActionType } from './ngssm-store-action-type';\n\nexport class NgssmRegisterFeatureStateAction implements Action {\n public readonly type: string = NgssmStoreActionType.registerFeatureState;\n\n constructor(\n public readonly featureStateKey: string,\n public readonly initialValue: object\n ) {}\n}\n","import { Action } from '../action';\nimport { NgssmStoreActionType } from './ngssm-store-action-type';\n\nexport class NgssmUnregisterFeatureStateAction implements Action {\n public readonly type: string = NgssmStoreActionType.unregisterFeatureState;\n\n constructor(public readonly featureStateKey: string) {}\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';\nimport { Store } from '../store';\nimport { NgssmRegisterFeatureStateAction } from '../actions';\n\nconst registerFeatureState = (featureStateKey: string, initialValue: object) => {\n return () => {\n inject(Store).dispatchAction(new NgssmRegisterFeatureStateAction(featureStateKey, initialValue));\n };\n};\n\nexport const provideNgssmFeatureState = (featureStateKey: string, initialValue: object): EnvironmentProviders => {\n return makeEnvironmentProviders([provideAppInitializer(registerFeatureState(featureStateKey, initialValue))]);\n};\n","import { Directive, inject, OnDestroy } from '@angular/core';\n\nimport { Store } from '../store';\nimport { NgssmRegisterFeatureStateAction, NgssmUnregisterFeatureStateAction } from '../actions';\nimport { FeatureStateSpecification, NGSSM_COMPONENT_WITH_FEATURE_STATE } from './feature-state-specification';\n\n// export interface ComponentWithFeatureState {\n// featureStateKey: string;\n// initialValue: object;\n// }\n\n// export const NGSSM_COMPONENT_WITH_FEATURE_STATE = new InjectionToken<ComponentWithFeatureState>('NGSSM_COMPONENT_WITH_FEATURE_STATE');\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[provideNgssmFeatureState]',\n standalone: true\n})\nexport class ProvideNgssmFeatureStateDirective implements OnDestroy {\n private readonly component: FeatureStateSpecification = inject(NGSSM_COMPONENT_WITH_FEATURE_STATE);\n private store = inject(Store);\n\n constructor() {\n this.store.dispatchAction(new NgssmRegisterFeatureStateAction(this.component.featureStateKey, this.component.initialState));\n }\n\n public ngOnDestroy(): void {\n this.store.dispatchAction(new NgssmUnregisterFeatureStateAction(this.component.featureStateKey));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport update from 'immutability-helper';\n\nimport { Reducer } from '../reducer';\nimport { NgssmRegisterFeatureStateAction, NgssmStoreActionType, NgssmUnregisterFeatureStateAction } from '../actions';\nimport { State } from '../state';\nimport { Action } from '../action';\n\n@Injectable()\nexport class FeatureStateReducer implements Reducer {\n public readonly processedActions: string[] = [NgssmStoreActionType.registerFeatureState, NgssmStoreActionType.unregisterFeatureState];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmStoreActionType.registerFeatureState: {\n const registerFeatureStateAction = action as NgssmRegisterFeatureStateAction;\n return update(state, {\n [registerFeatureStateAction.featureStateKey]: { $set: registerFeatureStateAction.initialValue }\n });\n }\n\n case NgssmStoreActionType.unregisterFeatureState: {\n const unregisterFeatureStateAction = action as NgssmUnregisterFeatureStateAction;\n return update(state, {\n $unset: [unregisterFeatureStateAction.featureStateKey]\n });\n }\n }\n\n return state;\n }\n}\n","import { Directive, inject, OnDestroy } from '@angular/core';\nimport { map, Observable, Subject, distinctUntilChanged, takeUntil } from 'rxjs';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { Store } from './store';\n\n@Directive({})\nexport class NgSsmComponent implements OnDestroy {\n protected store = inject(Store);\n\n private readonly _unsubscribeAll$ = new Subject<void>();\n\n protected get unsubscribeAll$(): Observable<void> {\n return this._unsubscribeAll$.asObservable();\n }\n\n public ngOnDestroy(): void {\n this._unsubscribeAll$.next();\n this._unsubscribeAll$.complete();\n }\n\n public watch<T>(selector: (state: State) => T): Observable<T> {\n return this.store.state$.pipe(\n map((state) => selector(state)),\n distinctUntilChanged(),\n takeUntil(this.unsubscribeAll$)\n );\n }\n\n public dispatchAction(action: Action): void {\n this.store.dispatchAction(action);\n }\n\n public dispatchActionType(actionType: string): void {\n this.store.dispatchActionType(actionType);\n }\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\nimport { provideReducers } from './reducer';\nimport { ActionDispatcher } from './action-dispatcher';\nimport { FeatureStateReducer } from './feature-state';\nimport { Store } from './store';\n\nexport const ACTION_DISPATCHER = new InjectionToken<ActionDispatcher>('ACTION_DISPATCHER');\n\nexport const provideNgssmStore = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideReducers(FeatureStateReducer), { provide: ACTION_DISPATCHER, useExisting: Store }]);\n};\n","import { computed, inject, Signal } from '@angular/core';\nimport { State } from './state';\nimport { Store } from './store';\n\nexport const createSignal = <T = unknown>(selector: (state: State) => T): Signal<T> => {\n const store = inject(Store);\n return computed(() => selector(store.state()));\n};\n","/*\n * Public API Surface of ngssm-store\n */\n\nexport * from './lib/store';\nexport * from './lib/state';\nexport * from './lib/action';\nexport * from './lib/reducer';\nexport * from './lib/effect';\nexport * from './lib/feature-state';\nexport * from './lib/ngssm-component';\nexport * from './lib/state-initializer';\nexport * from './lib/logging';\nexport * from './lib/actions';\nexport * from './lib/provide-ngssm-store';\nexport * from './lib/signal-helpers';\nexport * from './lib/action-dispatcher';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngssm-store.mjs","sources":["../../../projects/ngssm-store/src/lib/reducer.ts","../../../projects/ngssm-store/src/lib/effect.ts","../../../projects/ngssm-store/src/lib/state-initializer.ts","../../../projects/ngssm-store/src/lib/logging/log-level.ts","../../../projects/ngssm-store/src/lib/logging/logger.ts","../../../projects/ngssm-store/src/lib/logging/console-appender.ts","../../../projects/ngssm-store/src/lib/logging/provide-console-appender.ts","../../../projects/ngssm-store/src/lib/store.ts","../../../projects/ngssm-store/src/lib/feature-state/feature-state-specification.ts","../../../projects/ngssm-store/src/lib/actions/ngssm-store-action-type.ts","../../../projects/ngssm-store/src/lib/actions/ngssm-register-feature-state.action.ts","../../../projects/ngssm-store/src/lib/actions/ngssm-unregister-feature-state.action.ts","../../../projects/ngssm-store/src/lib/feature-state/provide-feature-state.ts","../../../projects/ngssm-store/src/lib/feature-state/provide-ngssm-feature-state.directive.ts","../../../projects/ngssm-store/src/lib/feature-state/feature-state.reducer.ts","../../../projects/ngssm-store/src/lib/ngssm-component.ts","../../../projects/ngssm-store/src/lib/provide-ngssm-store.ts","../../../projects/ngssm-store/src/lib/signal-helpers.ts","../../../projects/ngssm-store/src/public-api.ts","../../../projects/ngssm-store/src/ngssm-store.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, Type, makeEnvironmentProviders } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\n\nexport interface Reducer {\n processedActions: string[];\n updateState(state: State, action: Action): State;\n}\n\nexport const NGSSM_REDUCER = new InjectionToken<Reducer>('NGSSM_REDUCER');\n\nexport const provideReducer = (reducer: Type<unknown>): EnvironmentProviders => {\n return makeEnvironmentProviders([{ provide: NGSSM_REDUCER, useClass: reducer, multi: true }]);\n};\n\nexport const provideReducers = (...reducers: Type<unknown>[]): EnvironmentProviders => {\n return makeEnvironmentProviders(reducers.map((reducer) => ({ provide: NGSSM_REDUCER, useClass: reducer, multi: true })));\n};\n","import { EnvironmentProviders, InjectionToken, Type, makeEnvironmentProviders } from '@angular/core';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { ActionDispatcher } from './action-dispatcher';\n\nexport interface Effect {\n processedActions: string[];\n processAction(actiondispatcher: ActionDispatcher, state: State, action: Action): void;\n isFunc?: boolean;\n}\n\nexport const NGSSM_EFFECT = new InjectionToken<Effect>('NGSSM_EFFECT');\n\nexport const provideEffect = (effect: Type<unknown>): EnvironmentProviders => {\n return makeEnvironmentProviders([{ provide: NGSSM_EFFECT, useClass: effect, multi: true }]);\n};\n\nexport const provideEffects = (...effects: Type<unknown>[]): EnvironmentProviders => {\n return makeEnvironmentProviders(effects.map((effect) => ({ provide: NGSSM_EFFECT, useClass: effect, multi: true })));\n};\n\nexport type EffectFunc = (state: State, action: Action) => void;\n\nexport const provideEffectFunc = (actionType: string, effectFunc: EffectFunc): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: NGSSM_EFFECT,\n useFactory: () => {\n const effect: Effect = {\n processedActions: [actionType],\n processAction: (_, state, action) => effectFunc(state, action),\n isFunc: true\n };\n return effect;\n },\n multi: true\n }\n ]);\n};\n","import { InjectionToken } from '@angular/core';\nimport { State } from './state';\n\nexport interface StateInitializer {\n initializeState(state: State): State;\n}\n\nexport const NGSSM_STATE_INITIALIZER = new InjectionToken<StateInitializer>('NGSSM_STATE_INITIALIZER');\n","export enum LogLevel {\n debug = 'Debug',\n information = 'Information',\n error = 'Error'\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { LogEvent } from './log-event';\nimport { LogLevel } from './log-level';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Logger {\n private readonly _logEvents$ = new Subject<LogEvent>();\n\n public get logEvents$(): Observable<LogEvent> {\n return this._logEvents$.asObservable();\n }\n\n public debug(message: string, payload?: unknown): void {\n this.log(LogLevel.debug, message, payload);\n }\n\n public information(message: string, payload?: unknown): void {\n this.log(LogLevel.information, message, payload);\n }\n\n public error(message: string, payload?: unknown): void {\n this.log(LogLevel.error, message, payload);\n }\n\n public log(level: LogLevel, message: string, payload?: unknown): void {\n this._logEvents$.next({\n level,\n message,\n payload\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { Logger } from './logger';\nimport { LogLevel } from './log-level';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsoleAppender {\n private logger = inject(Logger);\n\n private readonly stopEvent$ = new Subject<boolean>();\n\n public start(contextName?: string): void {\n this.logger.logEvents$.pipe(takeUntil(this.stopEvent$)).subscribe((logEvent) => {\n let logFunction: (...data: unknown[]) => void;\n switch (logEvent.level) {\n case LogLevel.error:\n logFunction = console.error;\n break;\n\n default:\n logFunction = console.log;\n break;\n }\n\n const now = new Date().toLocaleString();\n const prefix = contextName ? `[${contextName}] ` : '';\n\n if (logEvent.payload) {\n logFunction(`${prefix}[${now}] [${logEvent.level}] ${logEvent.message}`, logEvent.payload);\n } else {\n logFunction(`${prefix}[${now}] [${logEvent.level}] ${logEvent.message}`);\n }\n });\n }\n\n public stop(): void {\n this.stopEvent$.next(true);\n }\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';\nimport { ConsoleAppender } from './console-appender';\n\nexport const NGSSM_CONSOLE_APPENDER_NAME = new InjectionToken<string>('NGSSM_CONSOLE_APPENDER_NAME');\n\nexport const startConsoleAppenderFactory = (): (() => void) => {\n return () => {\n const name = inject(NGSSM_CONSOLE_APPENDER_NAME);\n const consoleAppender = inject(ConsoleAppender);\n consoleAppender.start(name);\n };\n};\n\nexport const provideConsoleAppender = (name: string): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: NGSSM_CONSOLE_APPENDER_NAME,\n useValue: name\n },\n provideAppInitializer(startConsoleAppenderFactory())\n ]);\n};\n","import { EnvironmentInjector, Injectable, Signal, inject, runInInjectionContext, signal } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport update from 'immutability-helper';\n\nimport { FeatureStateSpecification } from './feature-state';\nimport { State } from './state';\nimport { Action } from './action';\nimport { NGSSM_REDUCER, Reducer } from './reducer';\nimport { Effect, NGSSM_EFFECT } from './effect';\nimport { NGSSM_STATE_INITIALIZER, StateInitializer } from './state-initializer';\nimport { Logger } from './logging';\nimport { ActionDispatcher } from './action-dispatcher';\n\nconst featureStateSpecifications: FeatureStateSpecification[] = [];\nexport const NgSsmFeatureState = (specification: FeatureStateSpecification) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return (target: object) => {\n featureStateSpecifications.push(specification);\n };\n};\n\n/**\n * The `Store` class is a centralized state management system for Angular applications.\n * It manages the application state, processes actions using reducers, and handles side effects using effects.\n * The class integrates both RxJS (`BehaviorSubject`) and Angular signals for reactive state management.\n *\n * ### Features:\n * - Centralized state management with support for reducers and effects.\n * - Reactive state updates using both RxJS and Angular signals.\n * - Modular initialization of feature states, reducers, and effects.\n * - Sequential action processing with an action queue.\n * - Logging for debugging and monitoring state changes and action processing.\n *\n * ### Usage:\n * - Dispatch actions using `dispatchAction` or `dispatchActionType`.\n * - Subscribe to state updates using `state$` (RxJS) or `state` (Angular signal).\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class Store implements ActionDispatcher {\n // Logger service for debugging and monitoring.\n private readonly logger = inject(Logger);\n // Array of reducers to process state updates.\n private readonly reducers: Reducer[] | null = inject(NGSSM_REDUCER, { optional: true }) as unknown as Reducer[];\n // Array of effects to handle side effects.\n private readonly effects: Effect[] | null = inject(NGSSM_EFFECT, { optional: true }) as unknown as Effect[];\n // Array of state initializers to set up the initial state.\n private readonly initializers: StateInitializer[] = inject(NGSSM_STATE_INITIALIZER, { optional: true }) as unknown as StateInitializer[];\n // Angular's `EnvironmentInjector` for running effects in the correct context.\n private injector = inject(EnvironmentInjector);\n\n // The current state of the application, managed as a BehaviorSubject for RxJS compatibility.\n private readonly _state$ = new BehaviorSubject<State>({});\n\n // A queue to ensure actions are processed sequentially.\n private readonly actionQueue: Action[] = [];\n\n // Maps action types to their corresponding reducers.\n private readonly reducersPerActionType = new Map<string, Reducer[]>();\n\n // Maps action types to their corresponding effects.\n private readonly effectsPerActionType = new Map<string, Effect[]>();\n\n // The current state of the application, managed as an Angular signal for signal-based reactivity.\n private readonly _stateSignal = signal<State>({});\n\n // The most recently action processed by reducers, managed as an Angular signal.\n private readonly _processedAction = signal<Action>({ type: '' });\n\n // The most recently action processed by reducers, managed as an observable.\n private readonly _processedAction$ = new BehaviorSubject<Action>({ type: '' });\n\n // If true, an action is processed in a macro-task by using setTimoeout. Otherwise, Promise.resolve() is used\n // When using micro task, an issue can occur with angular root effects that want to process state or action signals.\n // They can be executed after a list of actions is processed. In that case, some actions are never processed by the effects.\n public useMacroTasks = true;\n\n /**\n * Initializes the `Store` with reducers, effects, and state initializers.\n * Also sets up the initial state and registers reducers and effects.\n */\n constructor() {\n // Synchronize the RxJS state with the Angular signal state.\n this._state$.subscribe((value) => this._stateSignal.set(value));\n\n this.logger.information('[Store] ---> state initialization...');\n let state = this._state$.getValue();\n\n // Initialize feature states.\n state = featureStateSpecifications.reduce((p, c) => update(p, { [c.featureStateKey]: { $set: c.initialState } }), state);\n\n // Apply state initializers.\n (this.initializers ?? []).forEach((initializer) => {\n this.logger.information('[Store] ------> calling initializer', initializer);\n state = initializer.initializeState(state);\n });\n\n // Update the state with the initialized values.\n this._state$.next(state);\n\n // Register reducers and effects.\n this.logger.information(`[Store] ---> initialization of ${(this.reducers ?? []).length} reducers...`);\n this.initializeProcessors(this.reducers ?? [], this.reducersPerActionType, (r) => r.processedActions);\n this.logger.information(`[Store] ---> initialization of ${(this.effects ?? []).length} effects...`);\n this.initializeProcessors(this.effects ?? [], this.effectsPerActionType, (e) => e.processedActions);\n }\n\n /**\n * Returns the current state as an RxJS observable.\n * Useful for subscribing to state changes in a reactive manner.\n */\n public get state$(): Observable<State> {\n return this._state$.asObservable();\n }\n\n /**\n * Returns the most recently action processed by reducers as an Angular signal.\n * Useful for accessing the last processed action in a reactive manner.\n * This signal is updated before processing the effects.\n */\n public get processedAction(): Signal<Action> {\n return this._processedAction.asReadonly();\n }\n\n /**\n * Returns the most recently action processed by reducers as an observale.\n * Useful for accessing the last processed action in a reactive manner.\n * This signal is updated before processing the effects.\n */\n public get processedAction$(): Observable<Action> {\n return this._processedAction$.asObservable();\n }\n\n /**\n * Returns the current state as an Angular signal.\n * Useful for signal-based reactivity in Angular components.\n */\n public get state(): Signal<State> {\n return this._stateSignal.asReadonly();\n }\n\n /**\n * Dispatches an action to the store.\n * The action is added to the action queue and processed sequentially.\n *\n * @param action - The action to dispatch.\n */\n public dispatchAction(action: Action): void {\n this.actionQueue.push(action);\n this.logger.debug(`Action of type '${action.type}' added to the queue => ${this.actionQueue.length} pending actions`, action);\n\n this.addTaskForNextAction();\n }\n\n /**\n * Dispatches an action by its type.\n * This is a shorthand for dispatching actions without additional payload.\n *\n * @param type - The type of the action to dispatch.\n */\n public dispatchActionType(type: string): void {\n this.dispatchAction({ type });\n }\n\n /**\n * Processes the next action in the action queue.\n * Applies reducers to update the state and executes effects for side effects.\n */\n private processNextAction(): void {\n const nextAction = this.actionQueue.shift();\n if (!nextAction) {\n this.logger.debug('[processNextAction] No action to process');\n return;\n }\n\n this.logger.information(`[processNextAction] Start processing action '${nextAction.type}...`, nextAction);\n\n try {\n // Apply reducers to update the state.\n const updatedState = this.applyReducers(nextAction);\n\n // Execute effects for the action.\n const effects = this.effectsPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${effects.length} effects found to process the action ${nextAction.type}`, effects);\n effects.forEach((effect) => {\n if (effect.isFunc === true) {\n runInInjectionContext(this.injector, () => this.runEffect(effect, updatedState, nextAction));\n } else {\n this.runEffect(effect, updatedState, nextAction);\n }\n });\n } catch (error) {\n this.logger.error(`Error when processing action ${nextAction.type}`, {\n error,\n action: nextAction\n });\n } finally {\n this.logger.information(`[processNextAction] action '${nextAction.type} processed.`, nextAction);\n\n // Process the next action asynchronously\n this.addTaskForNextAction();\n }\n }\n\n /**\n * Applies reducers to the current state based on the dispatched action.\n * Updates the state if there are changes and sets the processed action signal.\n *\n * @param nextAction - The action being processed.\n * @returns The updated state after applying reducers.\n */\n private applyReducers(nextAction: Action): State {\n try {\n const reducers = this.reducersPerActionType.get(nextAction.type) ?? [];\n this.logger.debug(`[Store] ${reducers.length} reducers found to process the action ${nextAction.type}`, reducers);\n const currentState = this._state$.getValue();\n const updatedState = reducers.reduce((p, c) => c.updateState(p, nextAction), currentState);\n\n if (updatedState !== currentState) {\n this._state$.next(updatedState);\n }\n\n return updatedState;\n } finally {\n this.logger.debug(`[Store] Notify action ${nextAction.type} as processed`);\n this._processedAction.set(nextAction);\n this._processedAction$.next(nextAction);\n }\n }\n\n /**\n * Executes an effect for a given action.\n * Handles any errors that occur during effect execution.\n *\n * @param effect - The effect to execute.\n * @param updatedState - The updated state after reducers have been applied.\n * @param nextAction - The action being processed.\n */\n private runEffect(effect: Effect, updatedState: State, nextAction: Action): void {\n try {\n effect.processAction(this, updatedState, nextAction);\n } catch (error) {\n this.logger.error(`Unable to process action ${nextAction.type} by effect ${effect}`, {\n error,\n action: nextAction,\n processor: effect\n });\n }\n }\n\n /**\n * Initializes reducers or effects and maps them to their corresponding action types.\n *\n * @param processors - The array of reducers or effects to initialize.\n * @param processorMap - The map to store processors by action type.\n * @param getProcessedActions - A function to retrieve the action types processed by a processor.\n */\n private initializeProcessors<T>(processors: T[], processorMap: Map<string, T[]>, getProcessedActions: (processor: T) => string[]): void {\n processors.forEach((processor) => {\n this.logger.information('[Store] ------> initialization of ', processor);\n getProcessedActions(processor).forEach((actionType) => {\n const storedProcessors = processorMap.get(actionType) ?? [];\n if (storedProcessors.length === 0) {\n processorMap.set(actionType, storedProcessors);\n }\n storedProcessors.push(processor);\n });\n });\n }\n\n private addTaskForNextAction(): void {\n if (this.useMacroTasks) {\n setTimeout(() => this.processNextAction());\n } else {\n Promise.resolve().then(() => this.processNextAction());\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface FeatureStateSpecification {\n readonly featureStateKey: string;\n readonly initialState: object;\n}\n\nexport const NGSSM_COMPONENT_WITH_FEATURE_STATE = new InjectionToken<FeatureStateSpecification>('NGSSM_COMPONENT_WITH_FEATURE_STATE');\n","export enum NgssmStoreActionType {\n registerFeatureState = '[NgssmStoreActionType] registerFeatureState',\n unregisterFeatureState = '[NgssmStoreActionType] unregisterFeatureState'\n}\n","import { Action } from '../action';\nimport { NgssmStoreActionType } from './ngssm-store-action-type';\n\nexport class NgssmRegisterFeatureStateAction implements Action {\n public readonly type: string = NgssmStoreActionType.registerFeatureState;\n\n constructor(\n public readonly featureStateKey: string,\n public readonly initialValue: object\n ) {}\n}\n","import { Action } from '../action';\nimport { NgssmStoreActionType } from './ngssm-store-action-type';\n\nexport class NgssmUnregisterFeatureStateAction implements Action {\n public readonly type: string = NgssmStoreActionType.unregisterFeatureState;\n\n constructor(public readonly featureStateKey: string) {}\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, inject, provideAppInitializer } from '@angular/core';\nimport { Store } from '../store';\nimport { NgssmRegisterFeatureStateAction } from '../actions';\n\nconst registerFeatureState = (featureStateKey: string, initialValue: object) => {\n return () => {\n inject(Store).dispatchAction(new NgssmRegisterFeatureStateAction(featureStateKey, initialValue));\n };\n};\n\nexport const provideNgssmFeatureState = (featureStateKey: string, initialValue: object): EnvironmentProviders => {\n return makeEnvironmentProviders([provideAppInitializer(registerFeatureState(featureStateKey, initialValue))]);\n};\n","import { Directive, inject, OnDestroy } from '@angular/core';\n\nimport { Store } from '../store';\nimport { NgssmRegisterFeatureStateAction, NgssmUnregisterFeatureStateAction } from '../actions';\nimport { FeatureStateSpecification, NGSSM_COMPONENT_WITH_FEATURE_STATE } from './feature-state-specification';\n\n// export interface ComponentWithFeatureState {\n// featureStateKey: string;\n// initialValue: object;\n// }\n\n// export const NGSSM_COMPONENT_WITH_FEATURE_STATE = new InjectionToken<ComponentWithFeatureState>('NGSSM_COMPONENT_WITH_FEATURE_STATE');\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[provideNgssmFeatureState]',\n standalone: true\n})\nexport class ProvideNgssmFeatureStateDirective implements OnDestroy {\n private readonly component: FeatureStateSpecification = inject(NGSSM_COMPONENT_WITH_FEATURE_STATE);\n private store = inject(Store);\n\n constructor() {\n this.store.dispatchAction(new NgssmRegisterFeatureStateAction(this.component.featureStateKey, this.component.initialState));\n }\n\n public ngOnDestroy(): void {\n this.store.dispatchAction(new NgssmUnregisterFeatureStateAction(this.component.featureStateKey));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport update from 'immutability-helper';\n\nimport { Reducer } from '../reducer';\nimport { NgssmRegisterFeatureStateAction, NgssmStoreActionType, NgssmUnregisterFeatureStateAction } from '../actions';\nimport { State } from '../state';\nimport { Action } from '../action';\n\n@Injectable()\nexport class FeatureStateReducer implements Reducer {\n public readonly processedActions: string[] = [NgssmStoreActionType.registerFeatureState, NgssmStoreActionType.unregisterFeatureState];\n\n public updateState(state: State, action: Action): State {\n switch (action.type) {\n case NgssmStoreActionType.registerFeatureState: {\n const registerFeatureStateAction = action as NgssmRegisterFeatureStateAction;\n return update(state, {\n [registerFeatureStateAction.featureStateKey]: { $set: registerFeatureStateAction.initialValue }\n });\n }\n\n case NgssmStoreActionType.unregisterFeatureState: {\n const unregisterFeatureStateAction = action as NgssmUnregisterFeatureStateAction;\n return update(state, {\n $unset: [unregisterFeatureStateAction.featureStateKey]\n });\n }\n }\n\n return state;\n }\n}\n","import { Directive, inject, OnDestroy } from '@angular/core';\nimport { map, Observable, Subject, distinctUntilChanged, takeUntil } from 'rxjs';\n\nimport { Action } from './action';\nimport { State } from './state';\nimport { Store } from './store';\n\n@Directive({})\nexport class NgSsmComponent implements OnDestroy {\n protected store = inject(Store);\n\n private readonly _unsubscribeAll$ = new Subject<void>();\n\n protected get unsubscribeAll$(): Observable<void> {\n return this._unsubscribeAll$.asObservable();\n }\n\n public ngOnDestroy(): void {\n this._unsubscribeAll$.next();\n this._unsubscribeAll$.complete();\n }\n\n public watch<T>(selector: (state: State) => T): Observable<T> {\n return this.store.state$.pipe(\n map((state) => selector(state)),\n distinctUntilChanged(),\n takeUntil(this.unsubscribeAll$)\n );\n }\n\n public dispatchAction(action: Action): void {\n this.store.dispatchAction(action);\n }\n\n public dispatchActionType(actionType: string): void {\n this.store.dispatchActionType(actionType);\n }\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\n\nimport { provideReducers } from './reducer';\nimport { ActionDispatcher } from './action-dispatcher';\nimport { FeatureStateReducer } from './feature-state';\nimport { Store } from './store';\n\nexport const ACTION_DISPATCHER = new InjectionToken<ActionDispatcher>('ACTION_DISPATCHER');\n\nexport const provideNgssmStore = (): EnvironmentProviders => {\n return makeEnvironmentProviders([provideReducers(FeatureStateReducer), { provide: ACTION_DISPATCHER, useExisting: Store }]);\n};\n","import { computed, inject, Signal } from '@angular/core';\nimport { State } from './state';\nimport { Store } from './store';\n\nexport const createSignal = <T = unknown>(selector: (state: State) => T): Signal<T> => {\n const store = inject(Store);\n return computed(() => selector(store.state()));\n};\n","/*\n * Public API Surface of ngssm-store\n */\n\nexport * from './lib/store';\nexport * from './lib/state';\nexport * from './lib/action';\nexport * from './lib/reducer';\nexport * from './lib/effect';\nexport * from './lib/feature-state';\nexport * from './lib/ngssm-component';\nexport * from './lib/state-initializer';\nexport * from './lib/logging';\nexport * from './lib/actions';\nexport * from './lib/provide-ngssm-store';\nexport * from './lib/signal-helpers';\nexport * from './lib/action-dispatcher';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|