ngssm-navigation 15.2.11 → 15.3.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/esm2020/lib/guards/navigation-locked.guard.mjs +9 -6
- package/esm2020/lib/provide-ngssm-navigation.mjs +23 -0
- package/esm2020/lib/reducers/navigation.reducer.mjs +3 -3
- package/esm2020/public-api.mjs +2 -2
- package/fesm2015/ngssm-navigation.mjs +18 -35
- package/fesm2015/ngssm-navigation.mjs.map +1 -1
- package/fesm2020/ngssm-navigation.mjs +18 -35
- package/fesm2020/ngssm-navigation.mjs.map +1 -1
- package/lib/guards/navigation-locked.guard.d.ts +4 -3
- package/lib/provide-ngssm-navigation.d.ts +2 -0
- package/package.json +2 -2
- package/public-api.d.ts +1 -1
- package/esm2020/lib/ngssm-navigation.module.mjs +0 -43
- package/lib/ngssm-navigation.module.d.ts +0 -6
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { inject, Injectable } from '@angular/core';
|
|
2
2
|
import { map, take } from 'rxjs';
|
|
3
|
+
import { Store } from 'ngssm-store';
|
|
3
4
|
import { selectNavigationState } from '../state';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "ngssm-store";
|
|
@@ -7,16 +8,18 @@ export class NavigationLockedGuard {
|
|
|
7
8
|
constructor(store) {
|
|
8
9
|
this.store = store;
|
|
9
10
|
}
|
|
10
|
-
canDeactivate(
|
|
11
|
+
canDeactivate() {
|
|
11
12
|
return this.store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
|
-
NavigationLockedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
15
|
-
NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
15
|
+
NavigationLockedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationLockedGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16
|
+
NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationLockedGuard, providedIn: 'root' });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationLockedGuard, decorators: [{
|
|
17
18
|
type: Injectable,
|
|
18
19
|
args: [{
|
|
19
20
|
providedIn: 'root'
|
|
20
21
|
}]
|
|
21
22
|
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
22
|
-
|
|
23
|
+
export const isNavigationLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => selectNavigationState(s).navigationLocked));
|
|
24
|
+
export const isNavigationUnLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1sb2NrZWQuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1uYXZpZ2F0aW9uL3NyYy9saWIvZ3VhcmRzL25hdmlnYXRpb24tbG9ja2VkLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFLakQsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztJQUFHLENBQUM7SUFFN0IsYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUN2RCxDQUFDO0lBQ0osQ0FBQzs7a0hBUlUscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQVlELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBdUIsRUFBRSxDQUMvRSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUN0RCxDQUFDO0FBRUosTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUF1QixFQUFFLENBQ2pGLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNmLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBzZWxlY3ROYXZpZ2F0aW9uU3RhdGUgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25Mb2NrZWRHdWFyZCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIHB1YmxpYyBjYW5EZWFjdGl2YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlJC5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIG1hcCgocykgPT4gIXNlbGVjdE5hdmlnYXRpb25TdGF0ZShzKS5uYXZpZ2F0aW9uTG9ja2VkKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGlzTmF2aWdhdGlvbkxvY2tlZCA9IChzdG9yZSA9IGluamVjdChTdG9yZSkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0+XG4gIHN0b3JlLnN0YXRlJC5waXBlKFxuICAgIHRha2UoMSksXG4gICAgbWFwKChzKSA9PiBzZWxlY3ROYXZpZ2F0aW9uU3RhdGUocykubmF2aWdhdGlvbkxvY2tlZClcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGlzTmF2aWdhdGlvblVuTG9ja2VkID0gKHN0b3JlID0gaW5qZWN0KFN0b3JlKSk6IE9ic2VydmFibGU8Ym9vbGVhbj4gPT5cbiAgc3RvcmUuc3RhdGUkLnBpcGUoXG4gICAgdGFrZSgxKSxcbiAgICBtYXAoKHMpID0+ICFzZWxlY3ROYXZpZ2F0aW9uU3RhdGUocykubmF2aWdhdGlvbkxvY2tlZClcbiAgKTtcbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { APP_INITIALIZER, makeEnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { isNavigationUnLocked } from './guards';
|
|
4
|
+
import { navigationReducerProvider } from './reducers/navigation.reducer';
|
|
5
|
+
function initializeNavigation(router) {
|
|
6
|
+
return () => {
|
|
7
|
+
router.config.forEach((route) => {
|
|
8
|
+
route.canDeactivate = [() => isNavigationUnLocked(), ...(route.canDeactivate ?? [])];
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export const provideNgssmNavigation = () => {
|
|
13
|
+
return makeEnvironmentProviders([
|
|
14
|
+
navigationReducerProvider,
|
|
15
|
+
{
|
|
16
|
+
provide: APP_INITIALIZER,
|
|
17
|
+
useFactory: initializeNavigation,
|
|
18
|
+
deps: [Router],
|
|
19
|
+
multi: true
|
|
20
|
+
}
|
|
21
|
+
]);
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1uZ3NzbS1uYXZpZ2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tbmF2aWdhdGlvbi9zcmMvbGliL3Byb3ZpZGUtbmdzc20tbmF2aWdhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUF3Qix3QkFBd0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTFFLFNBQVMsb0JBQW9CLENBQUMsTUFBYztJQUMxQyxPQUFPLEdBQUcsRUFBRTtRQUNWLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDOUIsS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUF5QixFQUFFO0lBQy9ELE9BQU8sd0JBQXdCLENBQUM7UUFDOUIseUJBQXlCO1FBQ3pCO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLG9CQUFvQjtZQUNoQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDZCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgaXNOYXZpZ2F0aW9uVW5Mb2NrZWQgfSBmcm9tICcuL2d1YXJkcyc7XG5pbXBvcnQgeyBuYXZpZ2F0aW9uUmVkdWNlclByb3ZpZGVyIH0gZnJvbSAnLi9yZWR1Y2Vycy9uYXZpZ2F0aW9uLnJlZHVjZXInO1xuXG5mdW5jdGlvbiBpbml0aWFsaXplTmF2aWdhdGlvbihyb3V0ZXI6IFJvdXRlcik6ICgpID0+IHZvaWQge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHJvdXRlci5jb25maWcuZm9yRWFjaCgocm91dGUpID0+IHtcbiAgICAgIHJvdXRlLmNhbkRlYWN0aXZhdGUgPSBbKCkgPT4gaXNOYXZpZ2F0aW9uVW5Mb2NrZWQoKSwgLi4uKHJvdXRlLmNhbkRlYWN0aXZhdGUgPz8gW10pXTtcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IHByb3ZpZGVOZ3NzbU5hdmlnYXRpb24gPSAoKTogRW52aXJvbm1lbnRQcm92aWRlcnMgPT4ge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICBuYXZpZ2F0aW9uUmVkdWNlclByb3ZpZGVyLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6IGluaXRpYWxpemVOYXZpZ2F0aW9uLFxuICAgICAgZGVwczogW1JvdXRlcl0sXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSk7XG59O1xuIl19
|
|
@@ -29,9 +29,9 @@ export class NavigationReducer {
|
|
|
29
29
|
return state;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
NavigationReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
33
|
-
NavigationReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
32
|
+
NavigationReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationReducer, deps: [{ token: NGSSM_NAVIGATION_LOCKING_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
33
|
+
NavigationReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationReducer });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationReducer, decorators: [{
|
|
35
35
|
type: Injectable
|
|
36
36
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
37
37
|
type: Inject,
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Public API Surface of ngssm-navigation
|
|
3
3
|
*/
|
|
4
|
-
export * from './lib/ngssm-navigation
|
|
4
|
+
export * from './lib/provide-ngssm-navigation';
|
|
5
5
|
export * from './lib/state';
|
|
6
6
|
export * from './lib/guards';
|
|
7
7
|
export * from './lib/actions';
|
|
8
8
|
export * from './lib/model';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nc3NtLW5hdmlnYXRpb24vc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3NzbS1uYXZpZ2F0aW9uXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvdmlkZS1uZ3NzbS1uYXZpZ2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1YXJkcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsJztcbiJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, InjectionToken, Inject, Optional,
|
|
2
|
+
import { Injectable, inject, InjectionToken, Inject, Optional, makeEnvironmentProviders, APP_INITIALIZER } from '@angular/core';
|
|
3
3
|
import { Router } from '@angular/router';
|
|
4
4
|
import { take, map } from 'rxjs';
|
|
5
|
+
import * as i1 from 'ngssm-store';
|
|
6
|
+
import { NgSsmFeatureState, Store, NGSSM_REDUCER } from 'ngssm-store';
|
|
5
7
|
import { __decorate } from 'tslib';
|
|
6
8
|
import update from 'immutability-helper';
|
|
7
|
-
import * as i1 from 'ngssm-store';
|
|
8
|
-
import { NgSsmFeatureState, NGSSM_REDUCER } from 'ngssm-store';
|
|
9
9
|
|
|
10
10
|
var NavigationStateSpecification_1;
|
|
11
11
|
const selectNavigationState = (state) => state[NavigationStateSpecification.featureStateKey];
|
|
@@ -29,18 +29,20 @@ class NavigationLockedGuard {
|
|
|
29
29
|
constructor(store) {
|
|
30
30
|
this.store = store;
|
|
31
31
|
}
|
|
32
|
-
canDeactivate(
|
|
32
|
+
canDeactivate() {
|
|
33
33
|
return this.store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
NavigationLockedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
37
|
-
NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
36
|
+
NavigationLockedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationLockedGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationLockedGuard, providedIn: 'root' });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationLockedGuard, decorators: [{
|
|
39
39
|
type: Injectable,
|
|
40
40
|
args: [{
|
|
41
41
|
providedIn: 'root'
|
|
42
42
|
}]
|
|
43
43
|
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
44
|
+
const isNavigationLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => selectNavigationState(s).navigationLocked));
|
|
45
|
+
const isNavigationUnLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
|
|
44
46
|
|
|
45
47
|
var NavigationActionType;
|
|
46
48
|
(function (NavigationActionType) {
|
|
@@ -76,9 +78,9 @@ class NavigationReducer {
|
|
|
76
78
|
return state;
|
|
77
79
|
}
|
|
78
80
|
}
|
|
79
|
-
NavigationReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
80
|
-
NavigationReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.
|
|
81
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
81
|
+
NavigationReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationReducer, deps: [{ token: NGSSM_NAVIGATION_LOCKING_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
82
|
+
NavigationReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationReducer });
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationReducer, decorators: [{
|
|
82
84
|
type: Injectable
|
|
83
85
|
}], ctorParameters: function () {
|
|
84
86
|
return [{ type: undefined, decorators: [{
|
|
@@ -98,15 +100,12 @@ function initializeNavigation(router) {
|
|
|
98
100
|
return () => {
|
|
99
101
|
router.config.forEach((route) => {
|
|
100
102
|
var _a;
|
|
101
|
-
route.canDeactivate = [
|
|
103
|
+
route.canDeactivate = [() => isNavigationUnLocked(), ...((_a = route.canDeactivate) !== null && _a !== void 0 ? _a : [])];
|
|
102
104
|
});
|
|
103
105
|
};
|
|
104
106
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
NgssmNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
108
|
-
NgssmNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: NgssmNavigationModule });
|
|
109
|
-
NgssmNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmNavigationModule, providers: [
|
|
107
|
+
const provideNgssmNavigation = () => {
|
|
108
|
+
return makeEnvironmentProviders([
|
|
110
109
|
navigationReducerProvider,
|
|
111
110
|
{
|
|
112
111
|
provide: APP_INITIALIZER,
|
|
@@ -114,24 +113,8 @@ NgssmNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
|
|
|
114
113
|
deps: [Router],
|
|
115
114
|
multi: true
|
|
116
115
|
}
|
|
117
|
-
]
|
|
118
|
-
|
|
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
|
-
}] });
|
|
116
|
+
]);
|
|
117
|
+
};
|
|
135
118
|
|
|
136
119
|
/*
|
|
137
120
|
* Public API Surface of ngssm-navigation
|
|
@@ -141,5 +124,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
|
|
|
141
124
|
* Generated bundle index. Do not edit.
|
|
142
125
|
*/
|
|
143
126
|
|
|
144
|
-
export { NGSSM_NAVIGATION_LOCKING_CONFIG, NavigationActionType, NavigationLockedGuard, NavigationStateSpecification,
|
|
127
|
+
export { NGSSM_NAVIGATION_LOCKING_CONFIG, NavigationActionType, NavigationLockedGuard, NavigationStateSpecification, isNavigationLocked, isNavigationUnLocked, provideNgssmNavigation, selectNavigationState, updateNavigationState };
|
|
145
128
|
//# sourceMappingURL=ngssm-navigation.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngssm-navigation.mjs","sources":["../../../projects/ngssm-navigation/src/lib/state/navigation.state.ts","../../../projects/ngssm-navigation/src/lib/guards/navigation-locked.guard.ts","../../../projects/ngssm-navigation/src/lib/actions/navigation-action-type.ts","../../../projects/ngssm-navigation/src/lib/model/navigation-locking-config.ts","../../../projects/ngssm-navigation/src/lib/reducers/navigation.reducer.ts","../../../projects/ngssm-navigation/src/lib/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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"}
|
|
1
|
+
{"version":3,"file":"ngssm-navigation.mjs","sources":["../../../projects/ngssm-navigation/src/lib/state/navigation.state.ts","../../../projects/ngssm-navigation/src/lib/guards/navigation-locked.guard.ts","../../../projects/ngssm-navigation/src/lib/actions/navigation-action-type.ts","../../../projects/ngssm-navigation/src/lib/model/navigation-locking-config.ts","../../../projects/ngssm-navigation/src/lib/reducers/navigation.reducer.ts","../../../projects/ngssm-navigation/src/lib/provide-ngssm-navigation.ts","../../../projects/ngssm-navigation/src/public-api.ts","../../../projects/ngssm-navigation/src/ngssm-navigation.ts"],"sourcesContent":["import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nexport const selectNavigationState = (state: State): NavigationState =>\n state[NavigationStateSpecification.featureStateKey] as NavigationState;\n\nexport const updateNavigationState = (state: State, command: Spec<NavigationState, never>): State =>\n update(state, {\n [NavigationStateSpecification.featureStateKey]: command\n });\n\nexport interface NavigationState {\n navigationLocked: boolean;\n}\n\n@NgSsmFeatureState({\n featureStateKey: NavigationStateSpecification.featureStateKey,\n initialState: NavigationStateSpecification.initialState\n})\nexport class NavigationStateSpecification {\n public static readonly featureStateKey = 'navigation-state';\n public static readonly initialState: NavigationState = {\n navigationLocked: false\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { map, Observable, take } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { selectNavigationState } from '../state';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavigationLockedGuard {\n constructor(private store: Store) {}\n\n public canDeactivate(): Observable<boolean> {\n return this.store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n }\n}\n\nexport const isNavigationLocked = (store = inject(Store)): Observable<boolean> =>\n store.state$.pipe(\n take(1),\n map((s) => selectNavigationState(s).navigationLocked)\n );\n\nexport const isNavigationUnLocked = (store = inject(Store)): Observable<boolean> =>\n store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n","export enum NavigationActionType {\n lockNavigation = '[NavigationActionType] lockNavigation',\n unLockNavigation = '[NavigationActionType] unLockNavigation'\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface NavigationLockingConfig {\n actionsLockingNavigation?: string[];\n actionsUnLockingNavigation?: string[];\n}\n\nexport const NGSSM_NAVIGATION_LOCKING_CONFIG = new InjectionToken<NavigationLockingConfig>('NGSSM_NAVIGATION_LOCKING_CONFIG');\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, Action, NGSSM_REDUCER } from 'ngssm-store';\n\nimport { NavigationActionType } from '../actions';\nimport { NavigationLockingConfig, NGSSM_NAVIGATION_LOCKING_CONFIG } from '../model';\nimport { updateNavigationState } from '../state';\n\n@Injectable()\nexport class NavigationReducer implements Reducer {\n private readonly lockingActions: Set<string>;\n private readonly unlockingActions: Set<string>;\n\n public readonly processedActions: string[] = [];\n\n constructor(\n @Inject(NGSSM_NAVIGATION_LOCKING_CONFIG)\n @Optional()\n configs: NavigationLockingConfig[]\n ) {\n this.lockingActions = new Set<string>([NavigationActionType.lockNavigation]);\n this.unlockingActions = new Set<string>([NavigationActionType.unLockNavigation]);\n\n (configs ?? []).forEach((config) => {\n (config.actionsLockingNavigation ?? []).forEach((command) => this.lockingActions.add(command));\n (config.actionsUnLockingNavigation ?? []).forEach((command) => this.unlockingActions.add(command));\n });\n\n this.processedActions = [...this.lockingActions, ...this.unlockingActions];\n }\n\n public updateState(state: State, action: Action): State {\n if (this.lockingActions.has(action.type)) {\n return updateNavigationState(state, {\n navigationLocked: { $set: true }\n });\n }\n\n if (this.unlockingActions.has(action.type)) {\n return updateNavigationState(state, {\n navigationLocked: { $set: false }\n });\n }\n\n return state;\n }\n}\n\nexport const navigationReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: NavigationReducer,\n multi: true\n};\n","import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isNavigationUnLocked } from './guards';\nimport { navigationReducerProvider } from './reducers/navigation.reducer';\n\nfunction initializeNavigation(router: Router): () => void {\n return () => {\n router.config.forEach((route) => {\n route.canDeactivate = [() => isNavigationUnLocked(), ...(route.canDeactivate ?? [])];\n });\n };\n}\n\nexport const provideNgssmNavigation = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n navigationReducerProvider,\n {\n provide: APP_INITIALIZER,\n useFactory: initializeNavigation,\n deps: [Router],\n multi: true\n }\n ]);\n};\n","/*\n * Public API Surface of ngssm-navigation\n */\n\nexport * from './lib/provide-ngssm-navigation';\nexport * from './lib/state';\nexport * from './lib/guards';\nexport * from './lib/actions';\nexport * from './lib/model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, InjectionToken, Inject, Optional,
|
|
2
|
+
import { Injectable, inject, InjectionToken, Inject, Optional, makeEnvironmentProviders, APP_INITIALIZER } from '@angular/core';
|
|
3
3
|
import { Router } from '@angular/router';
|
|
4
4
|
import { take, map } from 'rxjs';
|
|
5
|
+
import * as i1 from 'ngssm-store';
|
|
6
|
+
import { NgSsmFeatureState, Store, NGSSM_REDUCER } from 'ngssm-store';
|
|
5
7
|
import { __decorate } from 'tslib';
|
|
6
8
|
import update from 'immutability-helper';
|
|
7
|
-
import * as i1 from 'ngssm-store';
|
|
8
|
-
import { NgSsmFeatureState, NGSSM_REDUCER } from 'ngssm-store';
|
|
9
9
|
|
|
10
10
|
var NavigationStateSpecification_1;
|
|
11
11
|
const selectNavigationState = (state) => state[NavigationStateSpecification.featureStateKey];
|
|
@@ -29,18 +29,20 @@ class NavigationLockedGuard {
|
|
|
29
29
|
constructor(store) {
|
|
30
30
|
this.store = store;
|
|
31
31
|
}
|
|
32
|
-
canDeactivate(
|
|
32
|
+
canDeactivate() {
|
|
33
33
|
return this.store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
NavigationLockedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
37
|
-
NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
36
|
+
NavigationLockedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationLockedGuard, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
37
|
+
NavigationLockedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationLockedGuard, providedIn: 'root' });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationLockedGuard, decorators: [{
|
|
39
39
|
type: Injectable,
|
|
40
40
|
args: [{
|
|
41
41
|
providedIn: 'root'
|
|
42
42
|
}]
|
|
43
43
|
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
44
|
+
const isNavigationLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => selectNavigationState(s).navigationLocked));
|
|
45
|
+
const isNavigationUnLocked = (store = inject(Store)) => store.state$.pipe(take(1), map((s) => !selectNavigationState(s).navigationLocked));
|
|
44
46
|
|
|
45
47
|
var NavigationActionType;
|
|
46
48
|
(function (NavigationActionType) {
|
|
@@ -75,9 +77,9 @@ class NavigationReducer {
|
|
|
75
77
|
return state;
|
|
76
78
|
}
|
|
77
79
|
}
|
|
78
|
-
NavigationReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
79
|
-
NavigationReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
80
|
+
NavigationReducer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationReducer, deps: [{ token: NGSSM_NAVIGATION_LOCKING_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
81
|
+
NavigationReducer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationReducer });
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: NavigationReducer, decorators: [{
|
|
81
83
|
type: Injectable
|
|
82
84
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
83
85
|
type: Inject,
|
|
@@ -94,15 +96,12 @@ const navigationReducerProvider = {
|
|
|
94
96
|
function initializeNavigation(router) {
|
|
95
97
|
return () => {
|
|
96
98
|
router.config.forEach((route) => {
|
|
97
|
-
route.canDeactivate = [
|
|
99
|
+
route.canDeactivate = [() => isNavigationUnLocked(), ...(route.canDeactivate ?? [])];
|
|
98
100
|
});
|
|
99
101
|
};
|
|
100
102
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
NgssmNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
104
|
-
NgssmNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: NgssmNavigationModule });
|
|
105
|
-
NgssmNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgssmNavigationModule, providers: [
|
|
103
|
+
const provideNgssmNavigation = () => {
|
|
104
|
+
return makeEnvironmentProviders([
|
|
106
105
|
navigationReducerProvider,
|
|
107
106
|
{
|
|
108
107
|
provide: APP_INITIALIZER,
|
|
@@ -110,24 +109,8 @@ NgssmNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
|
|
|
110
109
|
deps: [Router],
|
|
111
110
|
multi: true
|
|
112
111
|
}
|
|
113
|
-
]
|
|
114
|
-
|
|
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
|
-
}] });
|
|
112
|
+
]);
|
|
113
|
+
};
|
|
131
114
|
|
|
132
115
|
/*
|
|
133
116
|
* Public API Surface of ngssm-navigation
|
|
@@ -137,5 +120,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
|
|
|
137
120
|
* Generated bundle index. Do not edit.
|
|
138
121
|
*/
|
|
139
122
|
|
|
140
|
-
export { NGSSM_NAVIGATION_LOCKING_CONFIG, NavigationActionType, NavigationLockedGuard, NavigationStateSpecification,
|
|
123
|
+
export { NGSSM_NAVIGATION_LOCKING_CONFIG, NavigationActionType, NavigationLockedGuard, NavigationStateSpecification, isNavigationLocked, isNavigationUnLocked, provideNgssmNavigation, selectNavigationState, updateNavigationState };
|
|
141
124
|
//# sourceMappingURL=ngssm-navigation.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngssm-navigation.mjs","sources":["../../../projects/ngssm-navigation/src/lib/state/navigation.state.ts","../../../projects/ngssm-navigation/src/lib/guards/navigation-locked.guard.ts","../../../projects/ngssm-navigation/src/lib/actions/navigation-action-type.ts","../../../projects/ngssm-navigation/src/lib/model/navigation-locking-config.ts","../../../projects/ngssm-navigation/src/lib/reducers/navigation.reducer.ts","../../../projects/ngssm-navigation/src/lib/ngssm-navigation.
|
|
1
|
+
{"version":3,"file":"ngssm-navigation.mjs","sources":["../../../projects/ngssm-navigation/src/lib/state/navigation.state.ts","../../../projects/ngssm-navigation/src/lib/guards/navigation-locked.guard.ts","../../../projects/ngssm-navigation/src/lib/actions/navigation-action-type.ts","../../../projects/ngssm-navigation/src/lib/model/navigation-locking-config.ts","../../../projects/ngssm-navigation/src/lib/reducers/navigation.reducer.ts","../../../projects/ngssm-navigation/src/lib/provide-ngssm-navigation.ts","../../../projects/ngssm-navigation/src/public-api.ts","../../../projects/ngssm-navigation/src/ngssm-navigation.ts"],"sourcesContent":["import update, { Spec } from 'immutability-helper';\n\nimport { NgSsmFeatureState, State } from 'ngssm-store';\n\nexport const selectNavigationState = (state: State): NavigationState =>\n state[NavigationStateSpecification.featureStateKey] as NavigationState;\n\nexport const updateNavigationState = (state: State, command: Spec<NavigationState, never>): State =>\n update(state, {\n [NavigationStateSpecification.featureStateKey]: command\n });\n\nexport interface NavigationState {\n navigationLocked: boolean;\n}\n\n@NgSsmFeatureState({\n featureStateKey: NavigationStateSpecification.featureStateKey,\n initialState: NavigationStateSpecification.initialState\n})\nexport class NavigationStateSpecification {\n public static readonly featureStateKey = 'navigation-state';\n public static readonly initialState: NavigationState = {\n navigationLocked: false\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { map, Observable, take } from 'rxjs';\n\nimport { Store } from 'ngssm-store';\n\nimport { selectNavigationState } from '../state';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavigationLockedGuard {\n constructor(private store: Store) {}\n\n public canDeactivate(): Observable<boolean> {\n return this.store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n }\n}\n\nexport const isNavigationLocked = (store = inject(Store)): Observable<boolean> =>\n store.state$.pipe(\n take(1),\n map((s) => selectNavigationState(s).navigationLocked)\n );\n\nexport const isNavigationUnLocked = (store = inject(Store)): Observable<boolean> =>\n store.state$.pipe(\n take(1),\n map((s) => !selectNavigationState(s).navigationLocked)\n );\n","export enum NavigationActionType {\n lockNavigation = '[NavigationActionType] lockNavigation',\n unLockNavigation = '[NavigationActionType] unLockNavigation'\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface NavigationLockingConfig {\n actionsLockingNavigation?: string[];\n actionsUnLockingNavigation?: string[];\n}\n\nexport const NGSSM_NAVIGATION_LOCKING_CONFIG = new InjectionToken<NavigationLockingConfig>('NGSSM_NAVIGATION_LOCKING_CONFIG');\n","import { Inject, Injectable, Optional, Provider } from '@angular/core';\n\nimport { Reducer, State, Action, NGSSM_REDUCER } from 'ngssm-store';\n\nimport { NavigationActionType } from '../actions';\nimport { NavigationLockingConfig, NGSSM_NAVIGATION_LOCKING_CONFIG } from '../model';\nimport { updateNavigationState } from '../state';\n\n@Injectable()\nexport class NavigationReducer implements Reducer {\n private readonly lockingActions: Set<string>;\n private readonly unlockingActions: Set<string>;\n\n public readonly processedActions: string[] = [];\n\n constructor(\n @Inject(NGSSM_NAVIGATION_LOCKING_CONFIG)\n @Optional()\n configs: NavigationLockingConfig[]\n ) {\n this.lockingActions = new Set<string>([NavigationActionType.lockNavigation]);\n this.unlockingActions = new Set<string>([NavigationActionType.unLockNavigation]);\n\n (configs ?? []).forEach((config) => {\n (config.actionsLockingNavigation ?? []).forEach((command) => this.lockingActions.add(command));\n (config.actionsUnLockingNavigation ?? []).forEach((command) => this.unlockingActions.add(command));\n });\n\n this.processedActions = [...this.lockingActions, ...this.unlockingActions];\n }\n\n public updateState(state: State, action: Action): State {\n if (this.lockingActions.has(action.type)) {\n return updateNavigationState(state, {\n navigationLocked: { $set: true }\n });\n }\n\n if (this.unlockingActions.has(action.type)) {\n return updateNavigationState(state, {\n navigationLocked: { $set: false }\n });\n }\n\n return state;\n }\n}\n\nexport const navigationReducerProvider: Provider = {\n provide: NGSSM_REDUCER,\n useClass: NavigationReducer,\n multi: true\n};\n","import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isNavigationUnLocked } from './guards';\nimport { navigationReducerProvider } from './reducers/navigation.reducer';\n\nfunction initializeNavigation(router: Router): () => void {\n return () => {\n router.config.forEach((route) => {\n route.canDeactivate = [() => isNavigationUnLocked(), ...(route.canDeactivate ?? [])];\n });\n };\n}\n\nexport const provideNgssmNavigation = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n navigationReducerProvider,\n {\n provide: APP_INITIALIZER,\n useFactory: initializeNavigation,\n deps: [Router],\n multi: true\n }\n ]);\n};\n","/*\n * Public API Surface of ngssm-navigation\n */\n\nexport * from './lib/provide-ngssm-navigation';\nexport * from './lib/state';\nexport * from './lib/guards';\nexport * from './lib/actions';\nexport * from './lib/model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot, UrlTree } from '@angular/router';
|
|
2
1
|
import { Observable } from 'rxjs';
|
|
3
2
|
import { Store } from 'ngssm-store';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class NavigationLockedGuard
|
|
4
|
+
export declare class NavigationLockedGuard {
|
|
6
5
|
private store;
|
|
7
6
|
constructor(store: Store);
|
|
8
|
-
canDeactivate(
|
|
7
|
+
canDeactivate(): Observable<boolean>;
|
|
9
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<NavigationLockedGuard, never>;
|
|
10
9
|
static ɵprov: i0.ɵɵInjectableDeclaration<NavigationLockedGuard>;
|
|
11
10
|
}
|
|
11
|
+
export declare const isNavigationLocked: (store?: Store) => Observable<boolean>;
|
|
12
|
+
export declare const isNavigationUnLocked: (store?: Store) => Observable<boolean>;
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngssm-navigation",
|
|
3
|
-
"version": "15.
|
|
3
|
+
"version": "15.3.0",
|
|
4
4
|
"description": "NgSsm - Helpers to control angular navigation.",
|
|
5
5
|
"author": "Lion Marc",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"peerDependencies": {
|
|
8
8
|
"@angular/common": ">=15.0.0",
|
|
9
9
|
"@angular/core": ">=15.0.0",
|
|
10
|
-
"ngssm-store": "15.
|
|
10
|
+
"ngssm-store": "15.3.0"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"tslib": "^2.3.0"
|
package/public-api.d.ts
CHANGED
|
@@ -1,43 +0,0 @@
|
|
|
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: "15.1.5", ngImport: i0, type: NgssmNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
16
|
-
NgssmNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.5", ngImport: i0, type: NgssmNavigationModule });
|
|
17
|
-
NgssmNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.5", 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: "15.1.5", 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
|
|
@@ -1,6 +0,0 @@
|
|
|
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
|
-
}
|