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 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,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="ngssm-navigation" />
5
+ export * from './public-api';
@@ -0,0 +1 @@
1
+ export * from './navigation-action-type';
@@ -0,0 +1,4 @@
1
+ export declare enum NavigationActionType {
2
+ lockNavigation = "[NavigationActionType] lockNavigation",
3
+ unLockNavigation = "[NavigationActionType] unLockNavigation"
4
+ }
@@ -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
+ }
@@ -0,0 +1,5 @@
1
+ export * from './lib/ngssm-navigation.module';
2
+ export * from './lib/state';
3
+ export * from './lib/guards';
4
+ export * from './lib/actions';
5
+ export * from './lib/model';