ngssm-navigation 14.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.
- package/README.md +21 -0
- package/esm2020/lib/actions/index.mjs +2 -0
- package/esm2020/lib/actions/navigation-action-type.mjs +6 -0
- package/esm2020/lib/guards/index.mjs +2 -0
- package/esm2020/lib/guards/navigation-locked.guard.mjs +22 -0
- package/esm2020/lib/model/index.mjs +2 -0
- package/esm2020/lib/model/navigation-locking-config.mjs +3 -0
- package/esm2020/lib/ngssm-navigation.module.mjs +43 -0
- package/esm2020/lib/reducers/navigation.reducer.mjs +47 -0
- package/esm2020/lib/state/index.mjs +2 -0
- package/esm2020/lib/state/navigation.state.mjs +22 -0
- package/esm2020/ngssm-navigation.mjs +5 -0
- package/esm2020/public-api.mjs +9 -0
- package/fesm2015/ngssm-navigation.mjs +145 -0
- package/fesm2015/ngssm-navigation.mjs.map +1 -0
- package/fesm2020/ngssm-navigation.mjs +141 -0
- package/fesm2020/ngssm-navigation.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/navigation-action-type.d.ts +4 -0
- package/lib/guards/index.d.ts +1 -0
- package/lib/guards/navigation-locked.guard.d.ts +11 -0
- package/lib/model/index.d.ts +1 -0
- package/lib/model/navigation-locking-config.d.ts +6 -0
- package/lib/ngssm-navigation.module.d.ts +6 -0
- package/lib/reducers/navigation.reducer.d.ts +14 -0
- package/lib/state/index.d.ts +1 -0
- package/lib/state/navigation.state.d.ts +11 -0
- package/package.json +40 -0
- package/public-api.d.ts +5 -0
package/README.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# ngssm-navigation
|
|
2
|
+
|
|
3
|
+
Provides helpers to control angular navigation.
|
|
4
|
+
|
|
5
|
+
## Locking/unlocking navigation for given actions
|
|
6
|
+
|
|
7
|
+
- initialize navigation module by importing **NgssmNavigationModule** in **AppModule**
|
|
8
|
+
- configure actions which lock and unlock the navigation in your feature module:
|
|
9
|
+
```
|
|
10
|
+
providers: [
|
|
11
|
+
...
|
|
12
|
+
{
|
|
13
|
+
provide: NGSSM_NAVIGATION_LOCKING_CONFIG,
|
|
14
|
+
multi: true,
|
|
15
|
+
useValue: {
|
|
16
|
+
actionsLockingNavigation: [TodoActionType.addTodoItem, TodoActionType.editTodoItem],
|
|
17
|
+
actionsUnLockingNavigation: [TodoActionType.closeTodoItemEditor]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
```
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './navigation-action-type';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1uYXZpZ2F0aW9uL3NyYy9saWIvYWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0aW9uLWFjdGlvbi10eXBlJztcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export var NavigationActionType;
|
|
2
|
+
(function (NavigationActionType) {
|
|
3
|
+
NavigationActionType["lockNavigation"] = "[NavigationActionType] lockNavigation";
|
|
4
|
+
NavigationActionType["unLockNavigation"] = "[NavigationActionType] unLockNavigation";
|
|
5
|
+
})(NavigationActionType || (NavigationActionType = {}));
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1hY3Rpb24tdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLW5hdmlnYXRpb24vc3JjL2xpYi9hY3Rpb25zL25hdmlnYXRpb24tYWN0aW9uLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksb0JBR1g7QUFIRCxXQUFZLG9CQUFvQjtJQUM5QixnRkFBd0QsQ0FBQTtJQUN4RCxvRkFBNEQsQ0FBQTtBQUM5RCxDQUFDLEVBSFcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUcvQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE5hdmlnYXRpb25BY3Rpb25UeXBlIHtcbiAgbG9ja05hdmlnYXRpb24gPSAnW05hdmlnYXRpb25BY3Rpb25UeXBlXSBsb2NrTmF2aWdhdGlvbicsXG4gIHVuTG9ja05hdmlnYXRpb24gPSAnW05hdmlnYXRpb25BY3Rpb25UeXBlXSB1bkxvY2tOYXZpZ2F0aW9uJ1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './navigation-locked.guard';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1uYXZpZ2F0aW9uL3NyYy9saWIvZ3VhcmRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL25hdmlnYXRpb24tbG9ja2VkLmd1YXJkJztcbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { map, take } from 'rxjs';
|
|
3
|
+
import { selectNavigationState } from '../state';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ngssm-store";
|
|
6
|
+
export class NavigationLockedGuard {
|
|
7
|
+
constructor(store) {
|
|
8
|
+
this.store = store;
|
|
9
|
+
}
|
|
10
|
+
canDeactivate(component, currentRoute, currentState, nextState) {
|
|
11
|
+
return this.store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
NavigationLockedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationLockedGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15
|
+
NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationLockedGuard, providedIn: 'root' });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationLockedGuard, decorators: [{
|
|
17
|
+
type: Injectable,
|
|
18
|
+
args: [{
|
|
19
|
+
providedIn: 'root'
|
|
20
|
+
}]
|
|
21
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1sb2NrZWQuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1uYXZpZ2F0aW9uL3NyYy9saWIvZ3VhcmRzL25hdmlnYXRpb24tbG9ja2VkLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFLakQsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7SUFFN0IsYUFBYSxDQUNsQixTQUFrQixFQUNsQixZQUFvQyxFQUNwQyxZQUFpQyxFQUNqQyxTQUErQjtRQUUvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUN2RCxDQUFDO0lBQ0osQ0FBQzs7a0hBYlUscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuRGVhY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IHNlbGVjdE5hdmlnYXRpb25TdGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkxvY2tlZEd1YXJkIGltcGxlbWVudHMgQ2FuRGVhY3RpdmF0ZTx1bmtub3duPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIHB1YmxpYyBjYW5EZWFjdGl2YXRlKFxuICAgIGNvbXBvbmVudDogdW5rbm93bixcbiAgICBjdXJyZW50Um91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICAgIG5leHRTdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZSQucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICBtYXAoKHMpID0+ICFzZWxlY3ROYXZpZ2F0aW9uU3RhdGUocykubmF2aWdhdGlvbkxvY2tlZClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './navigation-locking-config';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1uYXZpZ2F0aW9uL3NyYy9saWIvbW9kZWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdGlvbi1sb2NraW5nLWNvbmZpZyc7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const NGSSM_NAVIGATION_LOCKING_CONFIG = new InjectionToken('NGSSM_NAVIGATION_LOCKING_CONFIG');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1sb2NraW5nLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLW5hdmlnYXRpb24vc3JjL2xpYi9tb2RlbC9uYXZpZ2F0aW9uLWxvY2tpbmctY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPL0MsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsSUFBSSxjQUFjLENBQTBCLGlDQUFpQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRpb25Mb2NraW5nQ29uZmlnIHtcbiAgYWN0aW9uc0xvY2tpbmdOYXZpZ2F0aW9uPzogc3RyaW5nW107XG4gIGFjdGlvbnNVbkxvY2tpbmdOYXZpZ2F0aW9uPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjb25zdCBOR1NTTV9OQVZJR0FUSU9OX0xPQ0tJTkdfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPE5hdmlnYXRpb25Mb2NraW5nQ29uZmlnPignTkdTU01fTkFWSUdBVElPTl9MT0NLSU5HX0NPTkZJRycpO1xuIl19
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { NavigationLockedGuard } from './guards';
|
|
4
|
+
import { navigationReducerProvider } from './reducers/navigation.reducer';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
function initializeNavigation(router) {
|
|
7
|
+
return () => {
|
|
8
|
+
router.config.forEach((route) => {
|
|
9
|
+
route.canDeactivate = [NavigationLockedGuard, ...(route.canDeactivate ?? [])];
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export class NgssmNavigationModule {
|
|
14
|
+
}
|
|
15
|
+
NgssmNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
16
|
+
NgssmNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule });
|
|
17
|
+
NgssmNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule, providers: [
|
|
18
|
+
navigationReducerProvider,
|
|
19
|
+
{
|
|
20
|
+
provide: APP_INITIALIZER,
|
|
21
|
+
useFactory: initializeNavigation,
|
|
22
|
+
deps: [Router],
|
|
23
|
+
multi: true
|
|
24
|
+
}
|
|
25
|
+
] });
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule, decorators: [{
|
|
27
|
+
type: NgModule,
|
|
28
|
+
args: [{
|
|
29
|
+
declarations: [],
|
|
30
|
+
imports: [],
|
|
31
|
+
exports: [],
|
|
32
|
+
providers: [
|
|
33
|
+
navigationReducerProvider,
|
|
34
|
+
{
|
|
35
|
+
provide: APP_INITIALIZER,
|
|
36
|
+
useFactory: initializeNavigation,
|
|
37
|
+
deps: [Router],
|
|
38
|
+
multi: true
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}]
|
|
42
|
+
}] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tbmF2aWdhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1uYXZpZ2F0aW9uL3NyYy9saWIvbmdzc20tbmF2aWdhdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFMUUsU0FBUyxvQkFBb0IsQ0FBQyxNQUFjO0lBQzFDLE9BQU8sR0FBRyxFQUFFO1FBQ1YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5QixLQUFLLENBQUMsYUFBYSxHQUFHLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUM7QUFnQkQsTUFBTSxPQUFPLHFCQUFxQjs7a0hBQXJCLHFCQUFxQjttSEFBckIscUJBQXFCO21IQUFyQixxQkFBcUIsYUFWckI7UUFDVCx5QkFBeUI7UUFDekI7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsb0JBQW9CO1lBQ2hDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNkLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRjsyRkFFVSxxQkFBcUI7a0JBZGpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRTt3QkFDVCx5QkFBeUI7d0JBQ3pCOzRCQUNFLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixVQUFVLEVBQUUsb0JBQW9COzRCQUNoQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7NEJBQ2QsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBOYXZpZ2F0aW9uTG9ja2VkR3VhcmQgfSBmcm9tICcuL2d1YXJkcyc7XG5pbXBvcnQgeyBuYXZpZ2F0aW9uUmVkdWNlclByb3ZpZGVyIH0gZnJvbSAnLi9yZWR1Y2Vycy9uYXZpZ2F0aW9uLnJlZHVjZXInO1xuXG5mdW5jdGlvbiBpbml0aWFsaXplTmF2aWdhdGlvbihyb3V0ZXI6IFJvdXRlcik6ICgpID0+IHZvaWQge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHJvdXRlci5jb25maWcuZm9yRWFjaCgocm91dGUpID0+IHtcbiAgICAgIHJvdXRlLmNhbkRlYWN0aXZhdGUgPSBbTmF2aWdhdGlvbkxvY2tlZEd1YXJkLCAuLi4ocm91dGUuY2FuRGVhY3RpdmF0ZSA/PyBbXSldO1xuICAgIH0pO1xuICB9O1xufVxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW10sXG4gIHByb3ZpZGVyczogW1xuICAgIG5hdmlnYXRpb25SZWR1Y2VyUHJvdmlkZXIsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogaW5pdGlhbGl6ZU5hdmlnYXRpb24sXG4gICAgICBkZXBzOiBbUm91dGVyXSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5nc3NtTmF2aWdhdGlvbk1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
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: "14.2.2", 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: "14.2.2", ngImport: i0, type: NavigationReducer });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", 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=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './navigation.state';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1uYXZpZ2F0aW9uL3NyYy9saWIvc3RhdGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdGlvbi5zdGF0ZSc7XG4iXX0=
|
|
@@ -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
|
+
};
|
|
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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzc20tbmF2aWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nc3NtLW5hdmlnYXRpb24vc3JjL25nc3NtLW5hdmlnYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ngssm-navigation
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/ngssm-navigation.module';
|
|
5
|
+
export * from './lib/state';
|
|
6
|
+
export * from './lib/guards';
|
|
7
|
+
export * from './lib/actions';
|
|
8
|
+
export * from './lib/model';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nc3NtLW5hdmlnYXRpb24vc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3NzbS1uYXZpZ2F0aW9uXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmdzc20tbmF2aWdhdGlvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3VhcmRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwnO1xuIl19
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, InjectionToken, Inject, Optional, APP_INITIALIZER, NgModule } from '@angular/core';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { take, map } from 'rxjs';
|
|
5
|
+
import { __decorate } from 'tslib';
|
|
6
|
+
import update from 'immutability-helper';
|
|
7
|
+
import * as i1 from 'ngssm-store';
|
|
8
|
+
import { NgSsmFeatureState, NGSSM_REDUCER } from 'ngssm-store';
|
|
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(component, currentRoute, currentState, nextState) {
|
|
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: "14.2.2", ngImport: i0, type: NavigationLockedGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationLockedGuard, providedIn: 'root' });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationLockedGuard, decorators: [{
|
|
39
|
+
type: Injectable,
|
|
40
|
+
args: [{
|
|
41
|
+
providedIn: 'root'
|
|
42
|
+
}]
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
44
|
+
|
|
45
|
+
var NavigationActionType;
|
|
46
|
+
(function (NavigationActionType) {
|
|
47
|
+
NavigationActionType["lockNavigation"] = "[NavigationActionType] lockNavigation";
|
|
48
|
+
NavigationActionType["unLockNavigation"] = "[NavigationActionType] unLockNavigation";
|
|
49
|
+
})(NavigationActionType || (NavigationActionType = {}));
|
|
50
|
+
|
|
51
|
+
const NGSSM_NAVIGATION_LOCKING_CONFIG = new InjectionToken('NGSSM_NAVIGATION_LOCKING_CONFIG');
|
|
52
|
+
|
|
53
|
+
class NavigationReducer {
|
|
54
|
+
constructor(configs) {
|
|
55
|
+
this.processedActions = [];
|
|
56
|
+
this.lockingActions = new Set([NavigationActionType.lockNavigation]);
|
|
57
|
+
this.unlockingActions = new Set([NavigationActionType.unLockNavigation]);
|
|
58
|
+
(configs !== null && configs !== void 0 ? configs : []).forEach((config) => {
|
|
59
|
+
var _a, _b;
|
|
60
|
+
((_a = config.actionsLockingNavigation) !== null && _a !== void 0 ? _a : []).forEach((command) => this.lockingActions.add(command));
|
|
61
|
+
((_b = config.actionsUnLockingNavigation) !== null && _b !== void 0 ? _b : []).forEach((command) => this.unlockingActions.add(command));
|
|
62
|
+
});
|
|
63
|
+
this.processedActions = [...this.lockingActions, ...this.unlockingActions];
|
|
64
|
+
}
|
|
65
|
+
updateState(state, action) {
|
|
66
|
+
if (this.lockingActions.has(action.type)) {
|
|
67
|
+
return updateNavigationState(state, {
|
|
68
|
+
navigationLocked: { $set: true }
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (this.unlockingActions.has(action.type)) {
|
|
72
|
+
return updateNavigationState(state, {
|
|
73
|
+
navigationLocked: { $set: false }
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return state;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
NavigationReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationReducer, deps: [{ token: NGSSM_NAVIGATION_LOCKING_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
80
|
+
NavigationReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationReducer });
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationReducer, decorators: [{
|
|
82
|
+
type: Injectable
|
|
83
|
+
}], ctorParameters: function () {
|
|
84
|
+
return [{ type: undefined, decorators: [{
|
|
85
|
+
type: Inject,
|
|
86
|
+
args: [NGSSM_NAVIGATION_LOCKING_CONFIG]
|
|
87
|
+
}, {
|
|
88
|
+
type: Optional
|
|
89
|
+
}] }];
|
|
90
|
+
} });
|
|
91
|
+
const navigationReducerProvider = {
|
|
92
|
+
provide: NGSSM_REDUCER,
|
|
93
|
+
useClass: NavigationReducer,
|
|
94
|
+
multi: true
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
function initializeNavigation(router) {
|
|
98
|
+
return () => {
|
|
99
|
+
router.config.forEach((route) => {
|
|
100
|
+
var _a;
|
|
101
|
+
route.canDeactivate = [NavigationLockedGuard, ...((_a = route.canDeactivate) !== null && _a !== void 0 ? _a : [])];
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
class NgssmNavigationModule {
|
|
106
|
+
}
|
|
107
|
+
NgssmNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
108
|
+
NgssmNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule });
|
|
109
|
+
NgssmNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule, providers: [
|
|
110
|
+
navigationReducerProvider,
|
|
111
|
+
{
|
|
112
|
+
provide: APP_INITIALIZER,
|
|
113
|
+
useFactory: initializeNavigation,
|
|
114
|
+
deps: [Router],
|
|
115
|
+
multi: true
|
|
116
|
+
}
|
|
117
|
+
] });
|
|
118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule, decorators: [{
|
|
119
|
+
type: NgModule,
|
|
120
|
+
args: [{
|
|
121
|
+
declarations: [],
|
|
122
|
+
imports: [],
|
|
123
|
+
exports: [],
|
|
124
|
+
providers: [
|
|
125
|
+
navigationReducerProvider,
|
|
126
|
+
{
|
|
127
|
+
provide: APP_INITIALIZER,
|
|
128
|
+
useFactory: initializeNavigation,
|
|
129
|
+
deps: [Router],
|
|
130
|
+
multi: true
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
}]
|
|
134
|
+
}] });
|
|
135
|
+
|
|
136
|
+
/*
|
|
137
|
+
* Public API Surface of ngssm-navigation
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Generated bundle index. Do not edit.
|
|
142
|
+
*/
|
|
143
|
+
|
|
144
|
+
export { NGSSM_NAVIGATION_LOCKING_CONFIG, NavigationActionType, NavigationLockedGuard, NavigationStateSpecification, NgssmNavigationModule, selectNavigationState, updateNavigationState };
|
|
145
|
+
//# sourceMappingURL=ngssm-navigation.mjs.map
|
|
@@ -0,0 +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/ngssm-navigation.module.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 { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot, UrlTree } from '@angular/router';\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 implements CanDeactivate<unknown> {\n constructor(private store: Store) {}\n\n public canDeactivate(\n component: unknown,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this.store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n }\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, NgModule } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { NavigationLockedGuard } from './guards';\nimport { navigationReducerProvider } from './reducers/navigation.reducer';\n\nfunction initializeNavigation(router: Router): () => void {\n return () => {\n router.config.forEach((route) => {\n route.canDeactivate = [NavigationLockedGuard, ...(route.canDeactivate ?? [])];\n });\n };\n}\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n providers: [\n navigationReducerProvider,\n {\n provide: APP_INITIALIZER,\n useFactory: initializeNavigation,\n deps: [Router],\n multi: true\n }\n ]\n})\nexport class NgssmNavigationModule {}\n","/*\n * Public API Surface of ngssm-navigation\n */\n\nexport * from './lib/ngssm-navigation.module';\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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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, InjectionToken, Inject, Optional, APP_INITIALIZER, NgModule } from '@angular/core';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { take, map } from 'rxjs';
|
|
5
|
+
import { __decorate } from 'tslib';
|
|
6
|
+
import update from 'immutability-helper';
|
|
7
|
+
import * as i1 from 'ngssm-store';
|
|
8
|
+
import { NgSsmFeatureState, NGSSM_REDUCER } from 'ngssm-store';
|
|
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(component, currentRoute, currentState, nextState) {
|
|
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: "14.2.2", ngImport: i0, type: NavigationLockedGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationLockedGuard, providedIn: 'root' });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationLockedGuard, decorators: [{
|
|
39
|
+
type: Injectable,
|
|
40
|
+
args: [{
|
|
41
|
+
providedIn: 'root'
|
|
42
|
+
}]
|
|
43
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
44
|
+
|
|
45
|
+
var NavigationActionType;
|
|
46
|
+
(function (NavigationActionType) {
|
|
47
|
+
NavigationActionType["lockNavigation"] = "[NavigationActionType] lockNavigation";
|
|
48
|
+
NavigationActionType["unLockNavigation"] = "[NavigationActionType] unLockNavigation";
|
|
49
|
+
})(NavigationActionType || (NavigationActionType = {}));
|
|
50
|
+
|
|
51
|
+
const NGSSM_NAVIGATION_LOCKING_CONFIG = new InjectionToken('NGSSM_NAVIGATION_LOCKING_CONFIG');
|
|
52
|
+
|
|
53
|
+
class NavigationReducer {
|
|
54
|
+
constructor(configs) {
|
|
55
|
+
this.processedActions = [];
|
|
56
|
+
this.lockingActions = new Set([NavigationActionType.lockNavigation]);
|
|
57
|
+
this.unlockingActions = new Set([NavigationActionType.unLockNavigation]);
|
|
58
|
+
(configs ?? []).forEach((config) => {
|
|
59
|
+
(config.actionsLockingNavigation ?? []).forEach((command) => this.lockingActions.add(command));
|
|
60
|
+
(config.actionsUnLockingNavigation ?? []).forEach((command) => this.unlockingActions.add(command));
|
|
61
|
+
});
|
|
62
|
+
this.processedActions = [...this.lockingActions, ...this.unlockingActions];
|
|
63
|
+
}
|
|
64
|
+
updateState(state, action) {
|
|
65
|
+
if (this.lockingActions.has(action.type)) {
|
|
66
|
+
return updateNavigationState(state, {
|
|
67
|
+
navigationLocked: { $set: true }
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (this.unlockingActions.has(action.type)) {
|
|
71
|
+
return updateNavigationState(state, {
|
|
72
|
+
navigationLocked: { $set: false }
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return state;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
NavigationReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationReducer, deps: [{ token: NGSSM_NAVIGATION_LOCKING_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
79
|
+
NavigationReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationReducer });
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NavigationReducer, decorators: [{
|
|
81
|
+
type: Injectable
|
|
82
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
83
|
+
type: Inject,
|
|
84
|
+
args: [NGSSM_NAVIGATION_LOCKING_CONFIG]
|
|
85
|
+
}, {
|
|
86
|
+
type: Optional
|
|
87
|
+
}] }]; } });
|
|
88
|
+
const navigationReducerProvider = {
|
|
89
|
+
provide: NGSSM_REDUCER,
|
|
90
|
+
useClass: NavigationReducer,
|
|
91
|
+
multi: true
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
function initializeNavigation(router) {
|
|
95
|
+
return () => {
|
|
96
|
+
router.config.forEach((route) => {
|
|
97
|
+
route.canDeactivate = [NavigationLockedGuard, ...(route.canDeactivate ?? [])];
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
class NgssmNavigationModule {
|
|
102
|
+
}
|
|
103
|
+
NgssmNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
104
|
+
NgssmNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule });
|
|
105
|
+
NgssmNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule, providers: [
|
|
106
|
+
navigationReducerProvider,
|
|
107
|
+
{
|
|
108
|
+
provide: APP_INITIALIZER,
|
|
109
|
+
useFactory: initializeNavigation,
|
|
110
|
+
deps: [Router],
|
|
111
|
+
multi: true
|
|
112
|
+
}
|
|
113
|
+
] });
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: NgssmNavigationModule, decorators: [{
|
|
115
|
+
type: NgModule,
|
|
116
|
+
args: [{
|
|
117
|
+
declarations: [],
|
|
118
|
+
imports: [],
|
|
119
|
+
exports: [],
|
|
120
|
+
providers: [
|
|
121
|
+
navigationReducerProvider,
|
|
122
|
+
{
|
|
123
|
+
provide: APP_INITIALIZER,
|
|
124
|
+
useFactory: initializeNavigation,
|
|
125
|
+
deps: [Router],
|
|
126
|
+
multi: true
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
}]
|
|
130
|
+
}] });
|
|
131
|
+
|
|
132
|
+
/*
|
|
133
|
+
* Public API Surface of ngssm-navigation
|
|
134
|
+
*/
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Generated bundle index. Do not edit.
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
export { NGSSM_NAVIGATION_LOCKING_CONFIG, NavigationActionType, NavigationLockedGuard, NavigationStateSpecification, NgssmNavigationModule, selectNavigationState, updateNavigationState };
|
|
141
|
+
//# sourceMappingURL=ngssm-navigation.mjs.map
|
|
@@ -0,0 +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/ngssm-navigation.module.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 { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot, UrlTree } from '@angular/router';\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 implements CanDeactivate<unknown> {\n constructor(private store: Store) {}\n\n public canDeactivate(\n component: unknown,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n return this.store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n }\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, NgModule } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { NavigationLockedGuard } from './guards';\nimport { navigationReducerProvider } from './reducers/navigation.reducer';\n\nfunction initializeNavigation(router: Router): () => void {\n return () => {\n router.config.forEach((route) => {\n route.canDeactivate = [NavigationLockedGuard, ...(route.canDeactivate ?? [])];\n });\n };\n}\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n providers: [\n navigationReducerProvider,\n {\n provide: APP_INITIALIZER,\n useFactory: initializeNavigation,\n deps: [Router],\n multi: true\n }\n ]\n})\nexport class NgssmNavigationModule {}\n","/*\n * Public API Surface of ngssm-navigation\n */\n\nexport * from './lib/ngssm-navigation.module';\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/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './navigation-action-type';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './navigation-locked.guard';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot, UrlTree } from '@angular/router';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { Store } from 'ngssm-store';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class NavigationLockedGuard implements CanDeactivate<unknown> {
|
|
6
|
+
private store;
|
|
7
|
+
constructor(store: Store);
|
|
8
|
+
canDeactivate(component: unknown, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NavigationLockedGuard, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NavigationLockedGuard>;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './navigation-locking-config';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export interface NavigationLockingConfig {
|
|
3
|
+
actionsLockingNavigation?: string[];
|
|
4
|
+
actionsUnLockingNavigation?: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare const NGSSM_NAVIGATION_LOCKING_CONFIG: InjectionToken<NavigationLockingConfig>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class NgssmNavigationModule {
|
|
3
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgssmNavigationModule, never>;
|
|
4
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NgssmNavigationModule, never, never, never>;
|
|
5
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<NgssmNavigationModule>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Provider } from '@angular/core';
|
|
2
|
+
import { Reducer, State, Action } from 'ngssm-store';
|
|
3
|
+
import { NavigationLockingConfig } from '../model';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class NavigationReducer implements Reducer {
|
|
6
|
+
private readonly lockingActions;
|
|
7
|
+
private readonly unlockingActions;
|
|
8
|
+
readonly processedActions: string[];
|
|
9
|
+
constructor(configs: NavigationLockingConfig[]);
|
|
10
|
+
updateState(state: State, action: Action): State;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NavigationReducer, [{ optional: true; }]>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NavigationReducer>;
|
|
13
|
+
}
|
|
14
|
+
export declare const navigationReducerProvider: Provider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './navigation.state';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Spec } from 'immutability-helper';
|
|
2
|
+
import { State } from 'ngssm-store';
|
|
3
|
+
export declare const selectNavigationState: (state: State) => NavigationState;
|
|
4
|
+
export declare const updateNavigationState: (state: State, command: Spec<NavigationState, never>) => State;
|
|
5
|
+
export interface NavigationState {
|
|
6
|
+
navigationLocked: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare class NavigationStateSpecification {
|
|
9
|
+
static readonly featureStateKey = "navigation-state";
|
|
10
|
+
static readonly initialState: NavigationState;
|
|
11
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ngssm-navigation",
|
|
3
|
+
"version": "14.0.0",
|
|
4
|
+
"description": "NgSsm - Helpers to control angular navigation.",
|
|
5
|
+
"author": "Lion Marc",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"peerDependencies": {
|
|
8
|
+
"@angular/common": "^14.2.0",
|
|
9
|
+
"@angular/core": "^14.2.0",
|
|
10
|
+
"ngssm-store": "14.0.0"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"tslib": "^2.3.0"
|
|
14
|
+
},
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "https://github.com/LionMarc/ng-simple-state-management",
|
|
18
|
+
"directory": "projects/ngssm-navigation"
|
|
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",
|
|
25
|
+
"typings": "index.d.ts",
|
|
26
|
+
"exports": {
|
|
27
|
+
"./package.json": {
|
|
28
|
+
"default": "./package.json"
|
|
29
|
+
},
|
|
30
|
+
".": {
|
|
31
|
+
"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"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"sideEffects": false
|
|
40
|
+
}
|