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