ngssm-navigation 15.3.13 → 16.0.0

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.
@@ -0,0 +1,26 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { map, take } from 'rxjs';
3
+ import { Store } from 'ngssm-store';
4
+ import { selectNavigationState } from '../state';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "ngssm-store";
7
+ class NavigationLockedGuard {
8
+ constructor(store) {
9
+ this.store = store;
10
+ }
11
+ canDeactivate() {
12
+ return this.store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationLockedGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
15
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationLockedGuard, providedIn: 'root' }); }
16
+ }
17
+ export { NavigationLockedGuard };
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationLockedGuard, decorators: [{
19
+ type: Injectable,
20
+ args: [{
21
+ providedIn: 'root'
22
+ }]
23
+ }], ctorParameters: function () { return [{ type: i1.Store }]; } });
24
+ export const isNavigationLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => selectNavigationState(s).navigationLocked));
25
+ export const isNavigationUnLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1sb2NrZWQuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1uYXZpZ2F0aW9uL3NyYy9saWIvZ3VhcmRzL25hdmlnYXRpb24tbG9ja2VkLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFFakQsTUFHYSxxQkFBcUI7SUFDaEMsWUFBb0IsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87SUFBRyxDQUFDO0lBRTdCLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzNCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FDdkQsQ0FBQztJQUNKLENBQUM7OEdBUlUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7U0FFUCxxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBWUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUF1QixFQUFFLENBQy9FLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNmLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQ3RELENBQUM7QUFFSixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQXVCLEVBQUUsQ0FDakYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IHNlbGVjdE5hdmlnYXRpb25TdGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkxvY2tlZEd1YXJkIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUpIHt9XG5cbiAgcHVibGljIGNhbkRlYWN0aXZhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGUkLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgbWFwKChzKSA9PiAhc2VsZWN0TmF2aWdhdGlvblN0YXRlKHMpLm5hdmlnYXRpb25Mb2NrZWQpXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgaXNOYXZpZ2F0aW9uTG9ja2VkID0gKHN0b3JlID0gaW5qZWN0KFN0b3JlKSk6IE9ic2VydmFibGU8Ym9vbGVhbj4gPT5cbiAgc3RvcmUuc3RhdGUkLnBpcGUoXG4gICAgdGFrZSgxKSxcbiAgICBtYXAoKHMpID0+IHNlbGVjdE5hdmlnYXRpb25TdGF0ZShzKS5uYXZpZ2F0aW9uTG9ja2VkKVxuICApO1xuXG5leHBvcnQgY29uc3QgaXNOYXZpZ2F0aW9uVW5Mb2NrZWQgPSAoc3RvcmUgPSBpbmplY3QoU3RvcmUpKTogT2JzZXJ2YWJsZTxib29sZWFuPiA9PlxuICBzdG9yZS5zdGF0ZSQucGlwZShcbiAgICB0YWtlKDEpLFxuICAgIG1hcCgocykgPT4gIXNlbGVjdE5hdmlnYXRpb25TdGF0ZShzKS5uYXZpZ2F0aW9uTG9ja2VkKVxuICApO1xuIl19
@@ -0,0 +1,48 @@
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { NGSSM_REDUCER } from 'ngssm-store';
3
+ import { NavigationActionType } from '../actions';
4
+ import { NGSSM_NAVIGATION_LOCKING_CONFIG } from '../model';
5
+ import { updateNavigationState } from '../state';
6
+ import * as i0 from "@angular/core";
7
+ class NavigationReducer {
8
+ constructor(configs) {
9
+ this.processedActions = [];
10
+ this.lockingActions = new Set([NavigationActionType.lockNavigation]);
11
+ this.unlockingActions = new Set([NavigationActionType.unLockNavigation]);
12
+ (configs ?? []).forEach((config) => {
13
+ (config.actionsLockingNavigation ?? []).forEach((command) => this.lockingActions.add(command));
14
+ (config.actionsUnLockingNavigation ?? []).forEach((command) => this.unlockingActions.add(command));
15
+ });
16
+ this.processedActions = [...this.lockingActions, ...this.unlockingActions];
17
+ }
18
+ updateState(state, action) {
19
+ if (this.lockingActions.has(action.type)) {
20
+ return updateNavigationState(state, {
21
+ navigationLocked: { $set: true }
22
+ });
23
+ }
24
+ if (this.unlockingActions.has(action.type)) {
25
+ return updateNavigationState(state, {
26
+ navigationLocked: { $set: false }
27
+ });
28
+ }
29
+ return state;
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationReducer, deps: [{ token: NGSSM_NAVIGATION_LOCKING_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
32
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationReducer }); }
33
+ }
34
+ export { NavigationReducer };
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationReducer, decorators: [{
36
+ type: Injectable
37
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
38
+ type: Inject,
39
+ args: [NGSSM_NAVIGATION_LOCKING_CONFIG]
40
+ }, {
41
+ type: Optional
42
+ }] }]; } });
43
+ export const navigationReducerProvider = {
44
+ provide: NGSSM_REDUCER,
45
+ useClass: NavigationReducer,
46
+ multi: true
47
+ };
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tbmF2aWdhdGlvbi9zcmMvbGliL3JlZHVjZXJzL25hdmlnYXRpb24ucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xELE9BQU8sRUFBMkIsK0JBQStCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUVqRCxNQUNhLGlCQUFpQjtJQU01QixZQUdFLE9BQWtDO1FBTHBCLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQU85QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksR0FBRyxDQUFTLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFFakYsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakMsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQy9GLENBQUMsTUFBTSxDQUFDLDBCQUEwQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFZLEVBQUUsTUFBYztRQUM3QyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4QyxPQUFPLHFCQUFxQixDQUFDLEtBQUssRUFBRTtnQkFDbEMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO2FBQ2pDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxQyxPQUFPLHFCQUFxQixDQUFDLEtBQUssRUFBRTtnQkFDbEMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO2FBQ2xDLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzhHQXBDVSxpQkFBaUIsa0JBT2xCLCtCQUErQjtrSEFQOUIsaUJBQWlCOztTQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBUU4sTUFBTTsyQkFBQywrQkFBK0I7OzBCQUN0QyxRQUFROztBQStCYixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBYTtJQUNqRCxPQUFPLEVBQUUsYUFBYTtJQUN0QixRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlZHVjZXIsIFN0YXRlLCBBY3Rpb24sIE5HU1NNX1JFRFVDRVIgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IE5hdmlnYXRpb25BY3Rpb25UeXBlIH0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uTG9ja2luZ0NvbmZpZywgTkdTU01fTkFWSUdBVElPTl9MT0NLSU5HX0NPTkZJRyB9IGZyb20gJy4uL21vZGVsJztcbmltcG9ydCB7IHVwZGF0ZU5hdmlnYXRpb25TdGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25SZWR1Y2VyIGltcGxlbWVudHMgUmVkdWNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9ja2luZ0FjdGlvbnM6IFNldDxzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IHVubG9ja2luZ0FjdGlvbnM6IFNldDxzdHJpbmc+O1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzZWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTkdTU01fTkFWSUdBVElPTl9MT0NLSU5HX0NPTkZJRylcbiAgICBAT3B0aW9uYWwoKVxuICAgIGNvbmZpZ3M6IE5hdmlnYXRpb25Mb2NraW5nQ29uZmlnW11cbiAgKSB7XG4gICAgdGhpcy5sb2NraW5nQWN0aW9ucyA9IG5ldyBTZXQ8c3RyaW5nPihbTmF2aWdhdGlvbkFjdGlvblR5cGUubG9ja05hdmlnYXRpb25dKTtcbiAgICB0aGlzLnVubG9ja2luZ0FjdGlvbnMgPSBuZXcgU2V0PHN0cmluZz4oW05hdmlnYXRpb25BY3Rpb25UeXBlLnVuTG9ja05hdmlnYXRpb25dKTtcblxuICAgIChjb25maWdzID8/IFtdKS5mb3JFYWNoKChjb25maWcpID0+IHtcbiAgICAgIChjb25maWcuYWN0aW9uc0xvY2tpbmdOYXZpZ2F0aW9uID8/IFtdKS5mb3JFYWNoKChjb21tYW5kKSA9PiB0aGlzLmxvY2tpbmdBY3Rpb25zLmFkZChjb21tYW5kKSk7XG4gICAgICAoY29uZmlnLmFjdGlvbnNVbkxvY2tpbmdOYXZpZ2F0aW9uID8/IFtdKS5mb3JFYWNoKChjb21tYW5kKSA9PiB0aGlzLnVubG9ja2luZ0FjdGlvbnMuYWRkKGNvbW1hbmQpKTtcbiAgICB9KTtcblxuICAgIHRoaXMucHJvY2Vzc2VkQWN0aW9ucyA9IFsuLi50aGlzLmxvY2tpbmdBY3Rpb25zLCAuLi50aGlzLnVubG9ja2luZ0FjdGlvbnNdO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVN0YXRlKHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pOiBTdGF0ZSB7XG4gICAgaWYgKHRoaXMubG9ja2luZ0FjdGlvbnMuaGFzKGFjdGlvbi50eXBlKSkge1xuICAgICAgcmV0dXJuIHVwZGF0ZU5hdmlnYXRpb25TdGF0ZShzdGF0ZSwge1xuICAgICAgICBuYXZpZ2F0aW9uTG9ja2VkOiB7ICRzZXQ6IHRydWUgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudW5sb2NraW5nQWN0aW9ucy5oYXMoYWN0aW9uLnR5cGUpKSB7XG4gICAgICByZXR1cm4gdXBkYXRlTmF2aWdhdGlvblN0YXRlKHN0YXRlLCB7XG4gICAgICAgIG5hdmlnYXRpb25Mb2NrZWQ6IHsgJHNldDogZmFsc2UgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBuYXZpZ2F0aW9uUmVkdWNlclByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdTU01fUkVEVUNFUixcbiAgdXNlQ2xhc3M6IE5hdmlnYXRpb25SZWR1Y2VyLFxuICBtdWx0aTogdHJ1ZVxufTtcbiJdfQ==
@@ -0,0 +1,22 @@
1
+ var NavigationStateSpecification_1;
2
+ import { __decorate } from "tslib";
3
+ import update from 'immutability-helper';
4
+ import { NgSsmFeatureState } from 'ngssm-store';
5
+ export const selectNavigationState = (state) => state[NavigationStateSpecification.featureStateKey];
6
+ export const updateNavigationState = (state, command) => update(state, {
7
+ [NavigationStateSpecification.featureStateKey]: command
8
+ });
9
+ let NavigationStateSpecification = NavigationStateSpecification_1 = class NavigationStateSpecification {
10
+ static { this.featureStateKey = 'navigation-state'; }
11
+ static { this.initialState = {
12
+ navigationLocked: false
13
+ }; }
14
+ };
15
+ NavigationStateSpecification = NavigationStateSpecification_1 = __decorate([
16
+ NgSsmFeatureState({
17
+ featureStateKey: NavigationStateSpecification_1.featureStateKey,
18
+ initialState: NavigationStateSpecification_1.initialState
19
+ })
20
+ ], NavigationStateSpecification);
21
+ export { NavigationStateSpecification };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLW5hdmlnYXRpb24vc3JjL2xpYi9zdGF0ZS9uYXZpZ2F0aW9uLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxNQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxpQkFBaUIsRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQVksRUFBbUIsRUFBRSxDQUNyRSxLQUFLLENBQUMsNEJBQTRCLENBQUMsZUFBZSxDQUFvQixDQUFDO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBWSxFQUFFLE9BQXFDLEVBQVMsRUFBRSxDQUNsRyxNQUFNLENBQUMsS0FBSyxFQUFFO0lBQ1osQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPO0NBQ3hELENBQUMsQ0FBQztBQVVMLElBQWEsNEJBQTRCLG9DQUF6QyxNQUFhLDRCQUE0QjthQUNoQixvQkFBZSxHQUFHLGtCQUFrQixBQUFyQixDQUFzQjthQUNyQyxpQkFBWSxHQUFvQjtRQUNyRCxnQkFBZ0IsRUFBRSxLQUFLO0tBQ3hCLEFBRmtDLENBRWpDOztBQUpTLDRCQUE0QjtJQUp4QyxpQkFBaUIsQ0FBQztRQUNqQixlQUFlLEVBQUUsOEJBQTRCLENBQUMsZUFBZTtRQUM3RCxZQUFZLEVBQUUsOEJBQTRCLENBQUMsWUFBWTtLQUN4RCxDQUFDO0dBQ1csNEJBQTRCLENBS3hDO1NBTFksNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHVwZGF0ZSwgeyBTcGVjIH0gZnJvbSAnaW1tdXRhYmlsaXR5LWhlbHBlcic7XG5cbmltcG9ydCB7IE5nU3NtRmVhdHVyZVN0YXRlLCBTdGF0ZSB9IGZyb20gJ25nc3NtLXN0b3JlJztcblxuZXhwb3J0IGNvbnN0IHNlbGVjdE5hdmlnYXRpb25TdGF0ZSA9IChzdGF0ZTogU3RhdGUpOiBOYXZpZ2F0aW9uU3RhdGUgPT5cbiAgc3RhdGVbTmF2aWdhdGlvblN0YXRlU3BlY2lmaWNhdGlvbi5mZWF0dXJlU3RhdGVLZXldIGFzIE5hdmlnYXRpb25TdGF0ZTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZU5hdmlnYXRpb25TdGF0ZSA9IChzdGF0ZTogU3RhdGUsIGNvbW1hbmQ6IFNwZWM8TmF2aWdhdGlvblN0YXRlLCBuZXZlcj4pOiBTdGF0ZSA9PlxuICB1cGRhdGUoc3RhdGUsIHtcbiAgICBbTmF2aWdhdGlvblN0YXRlU3BlY2lmaWNhdGlvbi5mZWF0dXJlU3RhdGVLZXldOiBjb21tYW5kXG4gIH0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRpb25TdGF0ZSB7XG4gIG5hdmlnYXRpb25Mb2NrZWQ6IGJvb2xlYW47XG59XG5cbkBOZ1NzbUZlYXR1cmVTdGF0ZSh7XG4gIGZlYXR1cmVTdGF0ZUtleTogTmF2aWdhdGlvblN0YXRlU3BlY2lmaWNhdGlvbi5mZWF0dXJlU3RhdGVLZXksXG4gIGluaXRpYWxTdGF0ZTogTmF2aWdhdGlvblN0YXRlU3BlY2lmaWNhdGlvbi5pbml0aWFsU3RhdGVcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblN0YXRlU3BlY2lmaWNhdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZmVhdHVyZVN0YXRlS2V5ID0gJ25hdmlnYXRpb24tc3RhdGUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGluaXRpYWxTdGF0ZTogTmF2aWdhdGlvblN0YXRlID0ge1xuICAgIG5hdmlnYXRpb25Mb2NrZWQ6IGZhbHNlXG4gIH07XG59XG4iXX0=
@@ -13,10 +13,10 @@ const updateNavigationState = (state, command) => update(state, {
13
13
  [NavigationStateSpecification.featureStateKey]: command
14
14
  });
15
15
  let NavigationStateSpecification = NavigationStateSpecification_1 = class NavigationStateSpecification {
16
- };
17
- NavigationStateSpecification.featureStateKey = 'navigation-state';
18
- NavigationStateSpecification.initialState = {
19
- navigationLocked: false
16
+ static { this.featureStateKey = 'navigation-state'; }
17
+ static { this.initialState = {
18
+ navigationLocked: false
19
+ }; }
20
20
  };
21
21
  NavigationStateSpecification = NavigationStateSpecification_1 = __decorate([
22
22
  NgSsmFeatureState({
@@ -32,10 +32,10 @@ class NavigationLockedGuard {
32
32
  canDeactivate() {
33
33
  return this.store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
34
34
  }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationLockedGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
36
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationLockedGuard, providedIn: 'root' }); }
35
37
  }
36
- NavigationLockedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationLockedGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
37
- NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationLockedGuard, providedIn: 'root' });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationLockedGuard, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationLockedGuard, decorators: [{
39
39
  type: Injectable,
40
40
  args: [{
41
41
  providedIn: 'root'
@@ -76,10 +76,10 @@ class NavigationReducer {
76
76
  }
77
77
  return state;
78
78
  }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationReducer, deps: [{ token: NGSSM_NAVIGATION_LOCKING_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
80
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationReducer }); }
79
81
  }
80
- NavigationReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationReducer, deps: [{ token: NGSSM_NAVIGATION_LOCKING_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
81
- NavigationReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationReducer });
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationReducer, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationReducer, decorators: [{
83
83
  type: Injectable
84
84
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
85
85
  type: Inject,
@@ -1 +1 @@
1
- {"version":3,"file":"ngssm-navigation.mjs","sources":["../../../projects/ngssm-navigation/src/lib/state/navigation.state.ts","../../../projects/ngssm-navigation/src/lib/guards/navigation-locked.guard.ts","../../../projects/ngssm-navigation/src/lib/actions/navigation-action-type.ts","../../../projects/ngssm-navigation/src/lib/model/navigation-locking-config.ts","../../../projects/ngssm-navigation/src/lib/reducers/navigation.reducer.ts","../../../projects/ngssm-navigation/src/lib/provide-ngssm-navigation.ts","../../../projects/ngssm-navigation/src/public-api.ts","../../../projects/ngssm-navigation/src/ngssm-navigation.ts"],"sourcesContent":["import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nexport const selectNavigationState = (state: State): NavigationState =>\n state[NavigationStateSpecification.featureStateKey] as NavigationState;\n\nexport const updateNavigationState = (state: State, command: Spec<NavigationState, never>): State =>\n update(state, {\n [NavigationStateSpecification.featureStateKey]: command\n });\n\nexport interface NavigationState {\n navigationLocked: boolean;\n}\n\n@NgSsmFeatureState({\n featureStateKey: NavigationStateSpecification.featureStateKey,\n initialState: NavigationStateSpecification.initialState\n})\nexport class NavigationStateSpecification {\n public static readonly featureStateKey = 'navigation-state';\n public static readonly initialState: NavigationState = {\n navigationLocked: false\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { map, Observable, take } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { selectNavigationState } from '../state';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavigationLockedGuard {\n constructor(private store: Store) {}\n\n public canDeactivate(): Observable<boolean> {\n return this.store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n }\n}\n\nexport const isNavigationLocked = (store = inject(Store)): Observable<boolean> =>\n store.state$.pipe(\n take(1),\n map((s) => selectNavigationState(s).navigationLocked)\n );\n\nexport const isNavigationUnLocked = (store = inject(Store)): Observable<boolean> =>\n store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n","export enum NavigationActionType {\n lockNavigation = '[NavigationActionType] lockNavigation',\n unLockNavigation = '[NavigationActionType] unLockNavigation'\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface NavigationLockingConfig {\n actionsLockingNavigation?: string[];\n actionsUnLockingNavigation?: string[];\n}\n\nexport const NGSSM_NAVIGATION_LOCKING_CONFIG = new InjectionToken<NavigationLockingConfig>('NGSSM_NAVIGATION_LOCKING_CONFIG');\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, Action, NGSSM_REDUCER } from 'ngssm-store';\n\nimport { NavigationActionType } from '../actions';\nimport { NavigationLockingConfig, NGSSM_NAVIGATION_LOCKING_CONFIG } from '../model';\nimport { updateNavigationState } from '../state';\n\n@Injectable()\nexport class NavigationReducer implements Reducer {\n private readonly lockingActions: Set<string>;\n private readonly unlockingActions: Set<string>;\n\n public readonly processedActions: string[] = [];\n\n constructor(\n @Inject(NGSSM_NAVIGATION_LOCKING_CONFIG)\n @Optional()\n configs: NavigationLockingConfig[]\n ) {\n this.lockingActions = new Set<string>([NavigationActionType.lockNavigation]);\n this.unlockingActions = new Set<string>([NavigationActionType.unLockNavigation]);\n\n (configs ?? []).forEach((config) => {\n (config.actionsLockingNavigation ?? []).forEach((command) => this.lockingActions.add(command));\n (config.actionsUnLockingNavigation ?? []).forEach((command) => this.unlockingActions.add(command));\n });\n\n this.processedActions = [...this.lockingActions, ...this.unlockingActions];\n }\n\n public updateState(state: State, action: Action): State {\n if (this.lockingActions.has(action.type)) {\n return updateNavigationState(state, {\n navigationLocked: { $set: true }\n });\n }\n\n if (this.unlockingActions.has(action.type)) {\n return updateNavigationState(state, {\n navigationLocked: { $set: false }\n });\n }\n\n return state;\n }\n}\n\nexport const navigationReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: NavigationReducer,\n multi: true\n};\n","import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isNavigationUnLocked } from './guards';\nimport { navigationReducerProvider } from './reducers/navigation.reducer';\n\nfunction initializeNavigation(router: Router): () => void {\n return () => {\n router.config.forEach((route) => {\n route.canDeactivate = [() => isNavigationUnLocked(), ...(route.canDeactivate ?? [])];\n });\n };\n}\n\nexport const provideNgssmNavigation = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n navigationReducerProvider,\n {\n provide: APP_INITIALIZER,\n useFactory: initializeNavigation,\n deps: [Router],\n multi: true\n }\n ]);\n};\n","/*\n * Public API Surface of ngssm-navigation\n */\n\nexport * from './lib/provide-ngssm-navigation';\nexport * from './lib/state';\nexport * from './lib/guards';\nexport * from './lib/actions';\nexport * from './lib/model';\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-navigation.mjs","sources":["../../../projects/ngssm-navigation/src/lib/state/navigation.state.ts","../../../projects/ngssm-navigation/src/lib/guards/navigation-locked.guard.ts","../../../projects/ngssm-navigation/src/lib/actions/navigation-action-type.ts","../../../projects/ngssm-navigation/src/lib/model/navigation-locking-config.ts","../../../projects/ngssm-navigation/src/lib/reducers/navigation.reducer.ts","../../../projects/ngssm-navigation/src/lib/provide-ngssm-navigation.ts","../../../projects/ngssm-navigation/src/public-api.ts","../../../projects/ngssm-navigation/src/ngssm-navigation.ts"],"sourcesContent":["import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nexport const selectNavigationState = (state: State): NavigationState =>\n state[NavigationStateSpecification.featureStateKey] as NavigationState;\n\nexport const updateNavigationState = (state: State, command: Spec<NavigationState, never>): State =>\n update(state, {\n [NavigationStateSpecification.featureStateKey]: command\n });\n\nexport interface NavigationState {\n navigationLocked: boolean;\n}\n\n@NgSsmFeatureState({\n featureStateKey: NavigationStateSpecification.featureStateKey,\n initialState: NavigationStateSpecification.initialState\n})\nexport class NavigationStateSpecification {\n public static readonly featureStateKey = 'navigation-state';\n public static readonly initialState: NavigationState = {\n navigationLocked: false\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { map, Observable, take } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { selectNavigationState } from '../state';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavigationLockedGuard {\n constructor(private store: Store) {}\n\n public canDeactivate(): Observable<boolean> {\n return this.store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n }\n}\n\nexport const isNavigationLocked = (store = inject(Store)): Observable<boolean> =>\n store.state$.pipe(\n take(1),\n map((s) => selectNavigationState(s).navigationLocked)\n );\n\nexport const isNavigationUnLocked = (store = inject(Store)): Observable<boolean> =>\n store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n","export enum NavigationActionType {\n lockNavigation = '[NavigationActionType] lockNavigation',\n unLockNavigation = '[NavigationActionType] unLockNavigation'\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface NavigationLockingConfig {\n actionsLockingNavigation?: string[];\n actionsUnLockingNavigation?: string[];\n}\n\nexport const NGSSM_NAVIGATION_LOCKING_CONFIG = new InjectionToken<NavigationLockingConfig>('NGSSM_NAVIGATION_LOCKING_CONFIG');\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, Action, NGSSM_REDUCER } from 'ngssm-store';\n\nimport { NavigationActionType } from '../actions';\nimport { NavigationLockingConfig, NGSSM_NAVIGATION_LOCKING_CONFIG } from '../model';\nimport { updateNavigationState } from '../state';\n\n@Injectable()\nexport class NavigationReducer implements Reducer {\n private readonly lockingActions: Set<string>;\n private readonly unlockingActions: Set<string>;\n\n public readonly processedActions: string[] = [];\n\n constructor(\n @Inject(NGSSM_NAVIGATION_LOCKING_CONFIG)\n @Optional()\n configs: NavigationLockingConfig[]\n ) {\n this.lockingActions = new Set<string>([NavigationActionType.lockNavigation]);\n this.unlockingActions = new Set<string>([NavigationActionType.unLockNavigation]);\n\n (configs ?? []).forEach((config) => {\n (config.actionsLockingNavigation ?? []).forEach((command) => this.lockingActions.add(command));\n (config.actionsUnLockingNavigation ?? []).forEach((command) => this.unlockingActions.add(command));\n });\n\n this.processedActions = [...this.lockingActions, ...this.unlockingActions];\n }\n\n public updateState(state: State, action: Action): State {\n if (this.lockingActions.has(action.type)) {\n return updateNavigationState(state, {\n navigationLocked: { $set: true }\n });\n }\n\n if (this.unlockingActions.has(action.type)) {\n return updateNavigationState(state, {\n navigationLocked: { $set: false }\n });\n }\n\n return state;\n }\n}\n\nexport const navigationReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: NavigationReducer,\n multi: true\n};\n","import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isNavigationUnLocked } from './guards';\nimport { navigationReducerProvider } from './reducers/navigation.reducer';\n\nfunction initializeNavigation(router: Router): () => void {\n return () => {\n router.config.forEach((route) => {\n route.canDeactivate = [() => isNavigationUnLocked(), ...(route.canDeactivate ?? [])];\n });\n };\n}\n\nexport const provideNgssmNavigation = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n navigationReducerProvider,\n {\n provide: APP_INITIALIZER,\n useFactory: initializeNavigation,\n deps: [Router],\n multi: true\n }\n ]);\n};\n","/*\n * Public API Surface of ngssm-navigation\n */\n\nexport * from './lib/provide-ngssm-navigation';\nexport * from './lib/state';\nexport * from './lib/guards';\nexport * from './lib/actions';\nexport * from './lib/model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "ngssm-navigation",
3
- "version": "15.3.13",
3
+ "version": "16.0.0",
4
4
  "description": "NgSsm - Helpers to control angular navigation.",
5
5
  "author": "Lion Marc",
6
6
  "license": "MIT",
7
7
  "peerDependencies": {
8
8
  "@angular/common": ">=15.0.0",
9
9
  "@angular/core": ">=15.0.0",
10
- "ngssm-store": "15.3.13"
10
+ "ngssm-store": "16.0.0"
11
11
  },
12
12
  "dependencies": {
13
13
  "tslib": "^2.3.0"
@@ -17,11 +17,7 @@
17
17
  "url": "https://github.com/LionMarc/ng-simple-state-management",
18
18
  "directory": "projects/ngssm-navigation"
19
19
  },
20
- "module": "fesm2015/ngssm-navigation.mjs",
21
- "es2020": "fesm2020/ngssm-navigation.mjs",
22
- "esm2020": "esm2020/ngssm-navigation.mjs",
23
- "fesm2020": "fesm2020/ngssm-navigation.mjs",
24
- "fesm2015": "fesm2015/ngssm-navigation.mjs",
20
+ "module": "fesm2022/ngssm-navigation.mjs",
25
21
  "typings": "index.d.ts",
26
22
  "exports": {
27
23
  "./package.json": {
@@ -29,11 +25,9 @@
29
25
  },
30
26
  ".": {
31
27
  "types": "./index.d.ts",
32
- "esm2020": "./esm2020/ngssm-navigation.mjs",
33
- "es2020": "./fesm2020/ngssm-navigation.mjs",
34
- "es2015": "./fesm2015/ngssm-navigation.mjs",
35
- "node": "./fesm2015/ngssm-navigation.mjs",
36
- "default": "./fesm2020/ngssm-navigation.mjs"
28
+ "esm2022": "./esm2022/ngssm-navigation.mjs",
29
+ "esm": "./esm2022/ngssm-navigation.mjs",
30
+ "default": "./fesm2022/ngssm-navigation.mjs"
37
31
  }
38
32
  },
39
33
  "sideEffects": false
@@ -1,25 +0,0 @@
1
- import { inject, Injectable } from '@angular/core';
2
- import { map, take } from 'rxjs';
3
- import { Store } from 'ngssm-store';
4
- import { selectNavigationState } from '../state';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "ngssm-store";
7
- export class NavigationLockedGuard {
8
- constructor(store) {
9
- this.store = store;
10
- }
11
- canDeactivate() {
12
- return this.store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
13
- }
14
- }
15
- NavigationLockedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationLockedGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
16
- NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationLockedGuard, providedIn: 'root' });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationLockedGuard, decorators: [{
18
- type: Injectable,
19
- args: [{
20
- providedIn: 'root'
21
- }]
22
- }], ctorParameters: function () { return [{ type: i1.Store }]; } });
23
- export const isNavigationLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => selectNavigationState(s).navigationLocked));
24
- export const isNavigationUnLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1sb2NrZWQuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1uYXZpZ2F0aW9uL3NyYy9saWIvZ3VhcmRzL25hdmlnYXRpb24tbG9ja2VkLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFLakQsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7SUFFN0IsYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUN2RCxDQUFDO0lBQ0osQ0FBQzs7a0hBUlUscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQVlELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBdUIsRUFBRSxDQUMvRSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUN0RCxDQUFDO0FBRUosTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUF1QixFQUFFLENBQ2pGLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNmLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBzZWxlY3ROYXZpZ2F0aW9uU3RhdGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25Mb2NrZWRHdWFyZCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIHB1YmxpYyBjYW5EZWFjdGl2YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlJC5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIG1hcCgocykgPT4gIXNlbGVjdE5hdmlnYXRpb25TdGF0ZShzKS5uYXZpZ2F0aW9uTG9ja2VkKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGlzTmF2aWdhdGlvbkxvY2tlZCA9IChzdG9yZSA9IGluamVjdChTdG9yZSkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0+XG4gIHN0b3JlLnN0YXRlJC5waXBlKFxuICAgIHRha2UoMSksXG4gICAgbWFwKChzKSA9PiBzZWxlY3ROYXZpZ2F0aW9uU3RhdGUocykubmF2aWdhdGlvbkxvY2tlZClcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGlzTmF2aWdhdGlvblVuTG9ja2VkID0gKHN0b3JlID0gaW5qZWN0KFN0b3JlKSk6IE9ic2VydmFibGU8Ym9vbGVhbj4gPT5cbiAgc3RvcmUuc3RhdGUkLnBpcGUoXG4gICAgdGFrZSgxKSxcbiAgICBtYXAoKHMpID0+ICFzZWxlY3ROYXZpZ2F0aW9uU3RhdGUocykubmF2aWdhdGlvbkxvY2tlZClcbiAgKTtcbiJdfQ==
@@ -1,47 +0,0 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
2
- import { NGSSM_REDUCER } from 'ngssm-store';
3
- import { NavigationActionType } from '../actions';
4
- import { NGSSM_NAVIGATION_LOCKING_CONFIG } from '../model';
5
- import { updateNavigationState } from '../state';
6
- import * as i0 from "@angular/core";
7
- export class NavigationReducer {
8
- constructor(configs) {
9
- this.processedActions = [];
10
- this.lockingActions = new Set([NavigationActionType.lockNavigation]);
11
- this.unlockingActions = new Set([NavigationActionType.unLockNavigation]);
12
- (configs ?? []).forEach((config) => {
13
- (config.actionsLockingNavigation ?? []).forEach((command) => this.lockingActions.add(command));
14
- (config.actionsUnLockingNavigation ?? []).forEach((command) => this.unlockingActions.add(command));
15
- });
16
- this.processedActions = [...this.lockingActions, ...this.unlockingActions];
17
- }
18
- updateState(state, action) {
19
- if (this.lockingActions.has(action.type)) {
20
- return updateNavigationState(state, {
21
- navigationLocked: { $set: true }
22
- });
23
- }
24
- if (this.unlockingActions.has(action.type)) {
25
- return updateNavigationState(state, {
26
- navigationLocked: { $set: false }
27
- });
28
- }
29
- return state;
30
- }
31
- }
32
- NavigationReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationReducer, deps: [{ token: NGSSM_NAVIGATION_LOCKING_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
33
- NavigationReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationReducer });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationReducer, decorators: [{
35
- type: Injectable
36
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
37
- type: Inject,
38
- args: [NGSSM_NAVIGATION_LOCKING_CONFIG]
39
- }, {
40
- type: Optional
41
- }] }]; } });
42
- export const navigationReducerProvider = {
43
- provide: NGSSM_REDUCER,
44
- useClass: NavigationReducer,
45
- multi: true
46
- };
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tbmF2aWdhdGlvbi9zcmMvbGliL3JlZHVjZXJzL25hdmlnYXRpb24ucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xELE9BQU8sRUFBMkIsK0JBQStCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUdqRCxNQUFNLE9BQU8saUJBQWlCO0lBTTVCLFlBR0UsT0FBa0M7UUFMcEIscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBTzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBUyxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUVqRixDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqQyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDL0YsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDckcsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQVksRUFBRSxNQUFjO1FBQzdDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hDLE9BQU8scUJBQXFCLENBQUMsS0FBSyxFQUFFO2dCQUNsQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7YUFDakMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFDLE9BQU8scUJBQXFCLENBQUMsS0FBSyxFQUFFO2dCQUNsQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7YUFDbEMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OzhHQXBDVSxpQkFBaUIsa0JBT2xCLCtCQUErQjtrSEFQOUIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7OzBCQVFOLE1BQU07MkJBQUMsK0JBQStCOzswQkFDdEMsUUFBUTs7QUErQmIsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQWE7SUFDakQsT0FBTyxFQUFFLGFBQWE7SUFDdEIsUUFBUSxFQUFFLGlCQUFpQjtJQUMzQixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBSZWR1Y2VyLCBTdGF0ZSwgQWN0aW9uLCBOR1NTTV9SRURVQ0VSIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBOYXZpZ2F0aW9uQWN0aW9uVHlwZSB9IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkxvY2tpbmdDb25maWcsIE5HU1NNX05BVklHQVRJT05fTE9DS0lOR19DT05GSUcgfSBmcm9tICcuLi9tb2RlbCc7XG5pbXBvcnQgeyB1cGRhdGVOYXZpZ2F0aW9uU3RhdGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uUmVkdWNlciBpbXBsZW1lbnRzIFJlZHVjZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2tpbmdBY3Rpb25zOiBTZXQ8c3RyaW5nPjtcbiAgcHJpdmF0ZSByZWFkb25seSB1bmxvY2tpbmdBY3Rpb25zOiBTZXQ8c3RyaW5nPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgcHJvY2Vzc2VkQWN0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE5HU1NNX05BVklHQVRJT05fTE9DS0lOR19DT05GSUcpXG4gICAgQE9wdGlvbmFsKClcbiAgICBjb25maWdzOiBOYXZpZ2F0aW9uTG9ja2luZ0NvbmZpZ1tdXG4gICkge1xuICAgIHRoaXMubG9ja2luZ0FjdGlvbnMgPSBuZXcgU2V0PHN0cmluZz4oW05hdmlnYXRpb25BY3Rpb25UeXBlLmxvY2tOYXZpZ2F0aW9uXSk7XG4gICAgdGhpcy51bmxvY2tpbmdBY3Rpb25zID0gbmV3IFNldDxzdHJpbmc+KFtOYXZpZ2F0aW9uQWN0aW9uVHlwZS51bkxvY2tOYXZpZ2F0aW9uXSk7XG5cbiAgICAoY29uZmlncyA/PyBbXSkuZm9yRWFjaCgoY29uZmlnKSA9PiB7XG4gICAgICAoY29uZmlnLmFjdGlvbnNMb2NraW5nTmF2aWdhdGlvbiA/PyBbXSkuZm9yRWFjaCgoY29tbWFuZCkgPT4gdGhpcy5sb2NraW5nQWN0aW9ucy5hZGQoY29tbWFuZCkpO1xuICAgICAgKGNvbmZpZy5hY3Rpb25zVW5Mb2NraW5nTmF2aWdhdGlvbiA/PyBbXSkuZm9yRWFjaCgoY29tbWFuZCkgPT4gdGhpcy51bmxvY2tpbmdBY3Rpb25zLmFkZChjb21tYW5kKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnByb2Nlc3NlZEFjdGlvbnMgPSBbLi4udGhpcy5sb2NraW5nQWN0aW9ucywgLi4udGhpcy51bmxvY2tpbmdBY3Rpb25zXTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZShzdGF0ZTogU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUge1xuICAgIGlmICh0aGlzLmxvY2tpbmdBY3Rpb25zLmhhcyhhY3Rpb24udHlwZSkpIHtcbiAgICAgIHJldHVybiB1cGRhdGVOYXZpZ2F0aW9uU3RhdGUoc3RhdGUsIHtcbiAgICAgICAgbmF2aWdhdGlvbkxvY2tlZDogeyAkc2V0OiB0cnVlIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnVubG9ja2luZ0FjdGlvbnMuaGFzKGFjdGlvbi50eXBlKSkge1xuICAgICAgcmV0dXJuIHVwZGF0ZU5hdmlnYXRpb25TdGF0ZShzdGF0ZSwge1xuICAgICAgICBuYXZpZ2F0aW9uTG9ja2VkOiB7ICRzZXQ6IGZhbHNlIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbmF2aWdhdGlvblJlZHVjZXJQcm92aWRlcjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HU1NNX1JFRFVDRVIsXG4gIHVzZUNsYXNzOiBOYXZpZ2F0aW9uUmVkdWNlcixcbiAgbXVsdGk6IHRydWVcbn07XG4iXX0=
@@ -1,22 +0,0 @@
1
- var NavigationStateSpecification_1;
2
- import { __decorate } from "tslib";
3
- import update from 'immutability-helper';
4
- import { NgSsmFeatureState } from 'ngssm-store';
5
- export const selectNavigationState = (state) => state[NavigationStateSpecification.featureStateKey];
6
- export const updateNavigationState = (state, command) => update(state, {
7
- [NavigationStateSpecification.featureStateKey]: command
8
- });
9
- let NavigationStateSpecification = NavigationStateSpecification_1 = class NavigationStateSpecification {
10
- };
11
- NavigationStateSpecification.featureStateKey = 'navigation-state';
12
- NavigationStateSpecification.initialState = {
13
- navigationLocked: false
14
- };
15
- NavigationStateSpecification = NavigationStateSpecification_1 = __decorate([
16
- NgSsmFeatureState({
17
- featureStateKey: NavigationStateSpecification_1.featureStateKey,
18
- initialState: NavigationStateSpecification_1.initialState
19
- })
20
- ], NavigationStateSpecification);
21
- export { NavigationStateSpecification };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLW5hdmlnYXRpb24vc3JjL2xpYi9zdGF0ZS9uYXZpZ2F0aW9uLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxNQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxpQkFBaUIsRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQVksRUFBbUIsRUFBRSxDQUNyRSxLQUFLLENBQUMsNEJBQTRCLENBQUMsZUFBZSxDQUFvQixDQUFDO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBWSxFQUFFLE9BQXFDLEVBQVMsRUFBRSxDQUNsRyxNQUFNLENBQUMsS0FBSyxFQUFFO0lBQ1osQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPO0NBQ3hELENBQUMsQ0FBQztBQVVFLElBQU0sNEJBQTRCLG9DQUFsQyxNQUFNLDRCQUE0Qjs7QUFDaEIsNENBQWUsR0FBRyxrQkFBa0IsQ0FBQztBQUNyQyx5Q0FBWSxHQUFvQjtJQUNyRCxnQkFBZ0IsRUFBRSxLQUFLO0NBQ3hCLENBQUM7QUFKUyw0QkFBNEI7SUFKeEMsaUJBQWlCLENBQUM7UUFDakIsZUFBZSxFQUFFLDhCQUE0QixDQUFDLGVBQWU7UUFDN0QsWUFBWSxFQUFFLDhCQUE0QixDQUFDLFlBQVk7S0FDeEQsQ0FBQztHQUNXLDRCQUE0QixDQUt4QztTQUxZLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1cGRhdGUsIHsgU3BlYyB9IGZyb20gJ2ltbXV0YWJpbGl0eS1oZWxwZXInO1xuXG5pbXBvcnQgeyBOZ1NzbUZlYXR1cmVTdGF0ZSwgU3RhdGUgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmV4cG9ydCBjb25zdCBzZWxlY3ROYXZpZ2F0aW9uU3RhdGUgPSAoc3RhdGU6IFN0YXRlKTogTmF2aWdhdGlvblN0YXRlID0+XG4gIHN0YXRlW05hdmlnYXRpb25TdGF0ZVNwZWNpZmljYXRpb24uZmVhdHVyZVN0YXRlS2V5XSBhcyBOYXZpZ2F0aW9uU3RhdGU7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVOYXZpZ2F0aW9uU3RhdGUgPSAoc3RhdGU6IFN0YXRlLCBjb21tYW5kOiBTcGVjPE5hdmlnYXRpb25TdGF0ZSwgbmV2ZXI+KTogU3RhdGUgPT5cbiAgdXBkYXRlKHN0YXRlLCB7XG4gICAgW05hdmlnYXRpb25TdGF0ZVNwZWNpZmljYXRpb24uZmVhdHVyZVN0YXRlS2V5XTogY29tbWFuZFxuICB9KTtcblxuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uU3RhdGUge1xuICBuYXZpZ2F0aW9uTG9ja2VkOiBib29sZWFuO1xufVxuXG5ATmdTc21GZWF0dXJlU3RhdGUoe1xuICBmZWF0dXJlU3RhdGVLZXk6IE5hdmlnYXRpb25TdGF0ZVNwZWNpZmljYXRpb24uZmVhdHVyZVN0YXRlS2V5LFxuICBpbml0aWFsU3RhdGU6IE5hdmlnYXRpb25TdGF0ZVNwZWNpZmljYXRpb24uaW5pdGlhbFN0YXRlXG59KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25TdGF0ZVNwZWNpZmljYXRpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGZlYXR1cmVTdGF0ZUtleSA9ICduYXZpZ2F0aW9uLXN0YXRlJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBpbml0aWFsU3RhdGU6IE5hdmlnYXRpb25TdGF0ZSA9IHtcbiAgICBuYXZpZ2F0aW9uTG9ja2VkOiBmYWxzZVxuICB9O1xufVxuIl19
@@ -1,128 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable, inject, InjectionToken, Inject, Optional, makeEnvironmentProviders, APP_INITIALIZER } from '@angular/core';
3
- import { Router } from '@angular/router';
4
- import { take, map } from 'rxjs';
5
- import * as i1 from 'ngssm-store';
6
- import { NgSsmFeatureState, Store, NGSSM_REDUCER } from 'ngssm-store';
7
- import { __decorate } from 'tslib';
8
- import update from 'immutability-helper';
9
-
10
- var NavigationStateSpecification_1;
11
- const selectNavigationState = (state) => state[NavigationStateSpecification.featureStateKey];
12
- const updateNavigationState = (state, command) => update(state, {
13
- [NavigationStateSpecification.featureStateKey]: command
14
- });
15
- let NavigationStateSpecification = NavigationStateSpecification_1 = class NavigationStateSpecification {
16
- };
17
- NavigationStateSpecification.featureStateKey = 'navigation-state';
18
- NavigationStateSpecification.initialState = {
19
- navigationLocked: false
20
- };
21
- NavigationStateSpecification = NavigationStateSpecification_1 = __decorate([
22
- NgSsmFeatureState({
23
- featureStateKey: NavigationStateSpecification_1.featureStateKey,
24
- initialState: NavigationStateSpecification_1.initialState
25
- })
26
- ], NavigationStateSpecification);
27
-
28
- class NavigationLockedGuard {
29
- constructor(store) {
30
- this.store = store;
31
- }
32
- canDeactivate() {
33
- return this.store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
34
- }
35
- }
36
- NavigationLockedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationLockedGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
37
- NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationLockedGuard, providedIn: 'root' });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationLockedGuard, decorators: [{
39
- type: Injectable,
40
- args: [{
41
- providedIn: 'root'
42
- }]
43
- }], ctorParameters: function () { return [{ type: i1.Store }]; } });
44
- const isNavigationLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => selectNavigationState(s).navigationLocked));
45
- const isNavigationUnLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
46
-
47
- var NavigationActionType;
48
- (function (NavigationActionType) {
49
- NavigationActionType["lockNavigation"] = "[NavigationActionType] lockNavigation";
50
- NavigationActionType["unLockNavigation"] = "[NavigationActionType] unLockNavigation";
51
- })(NavigationActionType || (NavigationActionType = {}));
52
-
53
- const NGSSM_NAVIGATION_LOCKING_CONFIG = new InjectionToken('NGSSM_NAVIGATION_LOCKING_CONFIG');
54
-
55
- class NavigationReducer {
56
- constructor(configs) {
57
- this.processedActions = [];
58
- this.lockingActions = new Set([NavigationActionType.lockNavigation]);
59
- this.unlockingActions = new Set([NavigationActionType.unLockNavigation]);
60
- (configs !== null && configs !== void 0 ? configs : []).forEach((config) => {
61
- var _a, _b;
62
- ((_a = config.actionsLockingNavigation) !== null && _a !== void 0 ? _a : []).forEach((command) => this.lockingActions.add(command));
63
- ((_b = config.actionsUnLockingNavigation) !== null && _b !== void 0 ? _b : []).forEach((command) => this.unlockingActions.add(command));
64
- });
65
- this.processedActions = [...this.lockingActions, ...this.unlockingActions];
66
- }
67
- updateState(state, action) {
68
- if (this.lockingActions.has(action.type)) {
69
- return updateNavigationState(state, {
70
- navigationLocked: { $set: true }
71
- });
72
- }
73
- if (this.unlockingActions.has(action.type)) {
74
- return updateNavigationState(state, {
75
- navigationLocked: { $set: false }
76
- });
77
- }
78
- return state;
79
- }
80
- }
81
- NavigationReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationReducer, deps: [{ token: NGSSM_NAVIGATION_LOCKING_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
82
- NavigationReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationReducer });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NavigationReducer, decorators: [{
84
- type: Injectable
85
- }], ctorParameters: function () {
86
- return [{ type: undefined, decorators: [{
87
- type: Inject,
88
- args: [NGSSM_NAVIGATION_LOCKING_CONFIG]
89
- }, {
90
- type: Optional
91
- }] }];
92
- } });
93
- const navigationReducerProvider = {
94
- provide: NGSSM_REDUCER,
95
- useClass: NavigationReducer,
96
- multi: true
97
- };
98
-
99
- function initializeNavigation(router) {
100
- return () => {
101
- router.config.forEach((route) => {
102
- var _a;
103
- route.canDeactivate = [() => isNavigationUnLocked(), ...((_a = route.canDeactivate) !== null && _a !== void 0 ? _a : [])];
104
- });
105
- };
106
- }
107
- const provideNgssmNavigation = () => {
108
- return makeEnvironmentProviders([
109
- navigationReducerProvider,
110
- {
111
- provide: APP_INITIALIZER,
112
- useFactory: initializeNavigation,
113
- deps: [Router],
114
- multi: true
115
- }
116
- ]);
117
- };
118
-
119
- /*
120
- * Public API Surface of ngssm-navigation
121
- */
122
-
123
- /**
124
- * Generated bundle index. Do not edit.
125
- */
126
-
127
- export { NGSSM_NAVIGATION_LOCKING_CONFIG, NavigationActionType, NavigationLockedGuard, NavigationStateSpecification, isNavigationLocked, isNavigationUnLocked, provideNgssmNavigation, selectNavigationState, updateNavigationState };
128
- //# sourceMappingURL=ngssm-navigation.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngssm-navigation.mjs","sources":["../../../projects/ngssm-navigation/src/lib/state/navigation.state.ts","../../../projects/ngssm-navigation/src/lib/guards/navigation-locked.guard.ts","../../../projects/ngssm-navigation/src/lib/actions/navigation-action-type.ts","../../../projects/ngssm-navigation/src/lib/model/navigation-locking-config.ts","../../../projects/ngssm-navigation/src/lib/reducers/navigation.reducer.ts","../../../projects/ngssm-navigation/src/lib/provide-ngssm-navigation.ts","../../../projects/ngssm-navigation/src/public-api.ts","../../../projects/ngssm-navigation/src/ngssm-navigation.ts"],"sourcesContent":["import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nexport const selectNavigationState = (state: State): NavigationState =>\n state[NavigationStateSpecification.featureStateKey] as NavigationState;\n\nexport const updateNavigationState = (state: State, command: Spec<NavigationState, never>): State =>\n update(state, {\n [NavigationStateSpecification.featureStateKey]: command\n });\n\nexport interface NavigationState {\n navigationLocked: boolean;\n}\n\n@NgSsmFeatureState({\n featureStateKey: NavigationStateSpecification.featureStateKey,\n initialState: NavigationStateSpecification.initialState\n})\nexport class NavigationStateSpecification {\n public static readonly featureStateKey = 'navigation-state';\n public static readonly initialState: NavigationState = {\n navigationLocked: false\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { map, Observable, take } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { selectNavigationState } from '../state';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavigationLockedGuard {\n constructor(private store: Store) {}\n\n public canDeactivate(): Observable<boolean> {\n return this.store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n }\n}\n\nexport const isNavigationLocked = (store = inject(Store)): Observable<boolean> =>\n store.state$.pipe(\n take(1),\n map((s) => selectNavigationState(s).navigationLocked)\n );\n\nexport const isNavigationUnLocked = (store = inject(Store)): Observable<boolean> =>\n store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n","export enum NavigationActionType {\n lockNavigation = '[NavigationActionType] lockNavigation',\n unLockNavigation = '[NavigationActionType] unLockNavigation'\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface NavigationLockingConfig {\n actionsLockingNavigation?: string[];\n actionsUnLockingNavigation?: string[];\n}\n\nexport const NGSSM_NAVIGATION_LOCKING_CONFIG = new InjectionToken<NavigationLockingConfig>('NGSSM_NAVIGATION_LOCKING_CONFIG');\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, Action, NGSSM_REDUCER } from 'ngssm-store';\n\nimport { NavigationActionType } from '../actions';\nimport { NavigationLockingConfig, NGSSM_NAVIGATION_LOCKING_CONFIG } from '../model';\nimport { updateNavigationState } from '../state';\n\n@Injectable()\nexport class NavigationReducer implements Reducer {\n private readonly lockingActions: Set<string>;\n private readonly unlockingActions: Set<string>;\n\n public readonly processedActions: string[] = [];\n\n constructor(\n @Inject(NGSSM_NAVIGATION_LOCKING_CONFIG)\n @Optional()\n configs: NavigationLockingConfig[]\n ) {\n this.lockingActions = new Set<string>([NavigationActionType.lockNavigation]);\n this.unlockingActions = new Set<string>([NavigationActionType.unLockNavigation]);\n\n (configs ?? []).forEach((config) => {\n (config.actionsLockingNavigation ?? []).forEach((command) => this.lockingActions.add(command));\n (config.actionsUnLockingNavigation ?? []).forEach((command) => this.unlockingActions.add(command));\n });\n\n this.processedActions = [...this.lockingActions, ...this.unlockingActions];\n }\n\n public updateState(state: State, action: Action): State {\n if (this.lockingActions.has(action.type)) {\n return updateNavigationState(state, {\n navigationLocked: { $set: true }\n });\n }\n\n if (this.unlockingActions.has(action.type)) {\n return updateNavigationState(state, {\n navigationLocked: { $set: false }\n });\n }\n\n return state;\n }\n}\n\nexport const navigationReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: NavigationReducer,\n multi: true\n};\n","import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isNavigationUnLocked } from './guards';\nimport { navigationReducerProvider } from './reducers/navigation.reducer';\n\nfunction initializeNavigation(router: Router): () => void {\n return () => {\n router.config.forEach((route) => {\n route.canDeactivate = [() => isNavigationUnLocked(), ...(route.canDeactivate ?? [])];\n });\n };\n}\n\nexport const provideNgssmNavigation = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n navigationReducerProvider,\n {\n provide: APP_INITIALIZER,\n useFactory: initializeNavigation,\n deps: [Router],\n multi: true\n }\n ]);\n};\n","/*\n * Public API Surface of ngssm-navigation\n */\n\nexport * from './lib/provide-ngssm-navigation';\nexport * from './lib/state';\nexport * from './lib/guards';\nexport * from './lib/actions';\nexport * from './lib/model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes