@ngdux/list 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/esm2020/lib/+state/abstract-list-effects.mjs +5 -14
- package/esm2020/lib/+state/list-actions.mjs +1 -5
- package/esm2020/lib/+state/list-reducer.mjs +1 -5
- package/esm2020/lib/models/list.model.mjs +1 -1
- package/fesm2015/ngdux-list.mjs +4 -18
- package/fesm2015/ngdux-list.mjs.map +1 -1
- package/fesm2020/ngdux-list.mjs +4 -21
- package/fesm2020/ngdux-list.mjs.map +1 -1
- package/lib/+state/abstract-list-effects.d.ts +1 -10
- package/lib/models/list.model.d.ts +0 -6
- package/package.json +5 -6
package/README.md
CHANGED
|
@@ -68,8 +68,6 @@ export const listSelectors = createListSelectors(entityAdapter, getState);
|
|
|
68
68
|
|
|
69
69
|
```
|
|
70
70
|
import { Injectable } from '@angular/core';
|
|
71
|
-
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
72
|
-
import { Router } from '@angular/router';
|
|
73
71
|
import { NotificationService } from '@demo/shared/util-notification';
|
|
74
72
|
import { AbstractListEffects } from '@ngdux/list';
|
|
75
73
|
import { Actions } from '@ngrx/effects';
|
|
@@ -88,14 +86,12 @@ export class UsersEffects extends AbstractListEffects<User, Error> {
|
|
|
88
86
|
};
|
|
89
87
|
|
|
90
88
|
constructor(
|
|
91
|
-
router: Router,
|
|
92
89
|
actions$: Actions,
|
|
93
90
|
store: Store,
|
|
94
|
-
snackBar: MatSnackBar,
|
|
95
91
|
usersService: UserService,
|
|
96
92
|
notificationService: NotificationService
|
|
97
93
|
) {
|
|
98
|
-
super(
|
|
94
|
+
super(actions$, store, usersService, listActions, listSelectors, notificationService);
|
|
99
95
|
}
|
|
100
96
|
}
|
|
101
97
|
```
|
|
@@ -153,6 +149,10 @@ export class NotificationService implements ListNotificationService<Error> {
|
|
|
153
149
|
this.snackBar.open(errors.message);
|
|
154
150
|
}
|
|
155
151
|
|
|
152
|
+
onListDelete(ids: string[]): void {
|
|
153
|
+
this.snackBar.open(`Resources ${ids.join(', ')} have been deleted.`);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
156
|
openConfirmationDialog(data: { message: string; title: string }): Observable<boolean> {
|
|
157
157
|
const dialog = this.dialog.open(ConfirmationDialogComponent, { data });
|
|
158
158
|
|
|
@@ -3,19 +3,16 @@ import { createAction, select } from '@ngrx/store';
|
|
|
3
3
|
import { of } from 'rxjs';
|
|
4
4
|
import { catchError, concatMap, exhaustMap, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';
|
|
5
5
|
export class AbstractListEffects {
|
|
6
|
-
constructor(
|
|
7
|
-
this.router = router;
|
|
6
|
+
constructor(actions$, store, service, listActions, listSelectors, notificationService) {
|
|
8
7
|
this.actions$ = actions$;
|
|
9
8
|
this.store = store;
|
|
10
|
-
this.snackBar = snackBar;
|
|
11
9
|
this.service = service;
|
|
12
10
|
this.listActions = listActions;
|
|
13
11
|
this.listSelectors = listSelectors;
|
|
14
12
|
this.notificationService = notificationService;
|
|
15
13
|
this.texts = {
|
|
16
14
|
deleteConfirmationTitle: 'Delete resources',
|
|
17
|
-
deleteConfirmationMessage: 'Are you sure to delete the selected resources?'
|
|
18
|
-
deletedMessage: 'The resources were deleted successfully.'
|
|
15
|
+
deleteConfirmationMessage: 'Are you sure to delete the selected resources?'
|
|
19
16
|
};
|
|
20
17
|
this.initialize$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.initialize, this.listActions.reinitialize), switchMap(() => {
|
|
21
18
|
return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];
|
|
@@ -66,18 +63,12 @@ export class AbstractListEffects {
|
|
|
66
63
|
});
|
|
67
64
|
}), filter(confirmed => confirmed), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), map(([, resourceIds]) => this.listActions.delete({ resourceIds }))));
|
|
68
65
|
this.delete$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.delete), exhaustMap(({ resourceIds }) => this.service.deleteResources(resourceIds).pipe(switchMap(() => [this.listActions.deleteSuccess({ resourceIds }), this.listActions.refresh()]), catchError((errors) => of(this.listActions.deleteFailure({ errors })))))));
|
|
69
|
-
this.deleteUsersSuccess$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.deleteSuccess), tap(() => {
|
|
70
|
-
this.
|
|
71
|
-
})), { dispatch: false });
|
|
72
|
-
this.copySelected$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.copySelected), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), tap(([, resourceIds]) => {
|
|
73
|
-
this.router.navigate([resourceIds[0]], { state: { selectedResourceId: resourceIds[0] } });
|
|
74
|
-
})), { dispatch: false });
|
|
75
|
-
this.navigateToSelected$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.navigateToSelected), tap(action => {
|
|
76
|
-
this.router.navigate([action.resourceId]);
|
|
66
|
+
this.deleteUsersSuccess$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.deleteSuccess), tap(({ resourceIds }) => {
|
|
67
|
+
this.notificationService.onListDelete(resourceIds);
|
|
77
68
|
})), { dispatch: false });
|
|
78
69
|
this.errorsHandler$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure), tap(({ errors }) => {
|
|
79
70
|
this.notificationService.onListErrors(errors);
|
|
80
71
|
})), { dispatch: false });
|
|
81
72
|
}
|
|
82
73
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGlzdC1lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtbGlzdC1lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUloSCxNQUFNLE9BQWdCLG1CQUFtQjtJQTRNdkMsWUFDcUIsTUFBYyxFQUNkLFFBQWlCLEVBQ2pCLEtBQVksRUFDWixRQUFxQixFQUN2QixPQUEwQixFQUMxQixXQUFpQyxFQUNqQyxhQUFrQyxFQUNsQyxtQkFBK0M7UUFQN0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDdkIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQXNCO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTRCO1FBbk5sRSxVQUFLLEdBQUc7WUFDTix1QkFBdUIsRUFBRSxrQkFBa0I7WUFDM0MseUJBQXlCLEVBQUUsZ0RBQWdEO1lBQzNFLGNBQWMsRUFBRSwwQ0FBMEM7U0FDM0QsQ0FBQztRQUVGLGdCQUFX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LENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUNILEVBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3BCLENBQUM7UUFFRixtQkFBYyxHQUFHLFlBQVksQ0FDM0IsR0FBRyxFQUFFLENBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUN2RyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FDSCxFQUNILEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUNwQixDQUFDO0lBV0MsQ0FBQztDQUNMIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge1xyXG4gIEZpbHRlcmluZ09wdGlvbnMsXHJcbiAgTGlzdE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgTGlzdFNlcnZpY2UsXHJcbiAgUGFnaW5nT3B0aW9ucyxcclxuICBTb3J0aW5nT3B0aW9uc1xyXG59IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGlvbiwgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29uY2F0TWFwLCBleGhhdXN0TWFwLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgTGlzdEFjdGlvbnMsIExpc3RTZWxlY3RvcnMgfSBmcm9tICcuLi9tb2RlbHMvbGlzdC5tb2RlbCc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RMaXN0RWZmZWN0czxULCBFLCBTID0gVD4ge1xyXG4gIHRleHRzID0ge1xyXG4gICAgZGVsZXRlQ29uZmlybWF0aW9uVGl0bGU6ICdEZWxldGUgcmVzb3VyY2VzJyxcclxuICAgIGRlbGV0ZUNvbmZpcm1hdGlvbk1lc3NhZ2U6ICdBcmUgeW91IHN1cmUgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCByZXNvdXJjZXM/JyxcclxuICAgIGRlbGV0ZWRNZXNzYWdlOiAnVGhlIHJlc291cmNlcyB3ZXJlIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5LidcclxuICB9O1xyXG5cclxuICBpbml0aWFsaXplJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5pbml0aWFsaXplLCB0aGlzLmxpc3RBY3Rpb25zLnJlaW5pdGlhbGl6ZSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIFt0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogMSB9KSwgdGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSh7IHBhZ2VOdW1iZXI6IDIgfSldO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGxvYWRQcmV2aW91c1BhZ2UkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmxvYWRQcmV2aW91c1BhZ2UpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRDdXJyZW50UGFnZU51bWJlcikpKSxcclxuICAgICAgZmlsdGVyKChbLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IGN1cnJlbnRQYWdlTnVtYmVyID4gMSksXHJcbiAgICAgIG1hcCgoWywgY3VycmVudFBhZ2VOdW1iZXJdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2VOdW1iZXIgLSAxIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGxvYWROZXh0UGFnZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZE5leHRQYWdlKSxcclxuICAgICAgd2l0aExhdGVzdEZyb20oXHJcbiAgICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuaXNMYXN0UGFnZSkpLFxyXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEN1cnJlbnRQYWdlTnVtYmVyKSlcclxuICAgICAgKSxcclxuICAgICAgZmlsdGVyKChbLCBpc0xhc3RQYWdlXSkgPT4gIWlzTGFzdFBhZ2UpLFxyXG4gICAgICBtYXAoKFssICwgY3VycmVudFBhZ2VOdW1iZXJdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2VOdW1iZXIgKyAxIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIHJlZnJlc2gkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLnJlZnJlc2gpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRDdXJyZW50UGFnZU51bWJlcikpKSxcclxuICAgICAgc3dpdGNoTWFwKChbLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IFtcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2VOdW1iZXIgfSksXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSh7IHBhZ2VOdW1iZXI6IGN1cnJlbnRQYWdlTnVtYmVyICsgMSB9KVxyXG4gICAgICBdKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGNoYW5nZVBhZ2luZ09wdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2luZ09wdGlvbnMpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRQYWdpbmdPcHRpb25zKSkpLFxyXG4gICAgICBtYXAoKFthY3Rpb24sIHBhZ2luZ09wdGlvbnNdKSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGlvbi5wYWdpbmdPcHRpb25zLnBhZ2VTaXplICE9PSBwYWdpbmdPcHRpb25zLnBhZ2VTaXplKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5saXN0QWN0aW9ucy5jaGFuZ2VQYWdlU2l6ZSh7IHBhZ2VTaXplOiBhY3Rpb24ucGFnaW5nT3B0aW9ucy5wYWdlU2l6ZSB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5wYWdpbmdPcHRpb25zLnBhZ2UgPT09IHBhZ2luZ09wdGlvbnMucGFnZSArIDEpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmxpc3RBY3Rpb25zLmxvYWROZXh0UGFnZSgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBhZ2luZ09wdGlvbnMucGFnZSA9PT0gcGFnaW5nT3B0aW9ucy5wYWdlIC0gMSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubGlzdEFjdGlvbnMubG9hZFByZXZpb3VzUGFnZSgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBhZ2luZ09wdGlvbnMucGFnZSA9PT0gMSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubGlzdEFjdGlvbnMubG9hZEZpcnN0UGFnZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFjdGlvbignTm90IGltcGxlbWVudCBwYWdlIG9wdGlvbnMgYWN0aW9uJyk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgY2hhbmdlUmVxdWVzdE9wdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZShcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VTaXplLFxyXG4gICAgICAgIHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlU29ydGluZyxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZUZpbHRlcmluZyxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRGaXJzdFBhZ2VcclxuICAgICAgKSxcclxuICAgICAgbWFwKCgpID0+IHRoaXMubGlzdEFjdGlvbnMuaW5pdGlhbGl6ZSgpKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGxvYWRQYWdlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxyXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFBhZ2luZ09wdGlvbnMpKSxcclxuICAgICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRTb3J0aW5nT3B0aW9ucykpLFxyXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEZpbHRlcmluZ09wdGlvbnMpKVxyXG4gICAgICApLFxyXG4gICAgICBjb25jYXRNYXAoXHJcbiAgICAgICAgKFt7IHBhZ2VOdW1iZXIgfSwgcGFnaW5nT3B0aW9ucywgc29ydGluZ09wdGlvbnMsIGZpbHRlcmluZ09wdGlvbnNdOiBbXHJcbiAgICAgICAgICB7IHBhZ2VOdW1iZXI6IG51bWJlciB9LFxyXG4gICAgICAgICAgUGFnaW5nT3B0aW9ucyxcclxuICAgICAgICAgIFNvcnRpbmdPcHRpb25zLFxyXG4gICAgICAgICAgRmlsdGVyaW5nT3B0aW9uc1xyXG4gICAgICAgIF0pID0+IHtcclxuICAgICAgICAgIHBhZ2luZ09wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIHBhZ2U6IHBhZ2VOdW1iZXIsXHJcbiAgICAgICAgICAgIHBhZ2VTaXplOiBwYWdpbmdPcHRpb25zLnBhZ2VTaXplXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VcclxuICAgICAgICAgICAgLmxvYWRSZXNvdXJjZXMoe1xyXG4gICAgICAgICAgICAgIHBhZ2luZ09wdGlvbnMsXHJcbiAgICAgICAgICAgICAgc29ydGluZ09wdGlvbnMsXHJcbiAgICAgICAgICAgICAgZmlsdGVyaW5nT3B0aW9uc1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICBtYXAocmVzb3VyY2VzID0+XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlU3VjY2Vzcyh7XHJcbiAgICAgICAgICAgICAgICAgIHJlc291cmNlcyxcclxuICAgICAgICAgICAgICAgICAgcGFnaW5nT3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRSkgPT4gb2YodGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZUZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIHBhdGNoJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5wYXRjaCksXHJcbiAgICAgIGV4aGF1c3RNYXAoYWN0aW9uID0+XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnBhdGNoUmVzb3VyY2VzKGFjdGlvbi5yZXNvdXJjZUlkcywgYWN0aW9uLnJlc291cmNlKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKHJlc291cmNlcyA9PiBbdGhpcy5saXN0QWN0aW9ucy5wYXRjaFN1Y2Nlc3MoeyByZXNvdXJjZXMgfSksIHRoaXMubGlzdEFjdGlvbnMucmVmcmVzaCgpXSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcnM6IEUpID0+IG9mKHRoaXMubGlzdEFjdGlvbnMucGF0Y2hGYWlsdXJlKHsgZXJyb3JzIH0pKSlcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgIClcclxuICApO1xyXG5cclxuICBzaG93UmVtb3ZhbHNEaWFsb2ckID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLnNob3dSZW1vdmFsc0NvbmZpcm1hdGlvbiksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vcGVuQ29uZmlybWF0aW9uRGlhbG9nKHtcclxuICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudGV4dHMuZGVsZXRlQ29uZmlybWF0aW9uTWVzc2FnZSxcclxuICAgICAgICAgIHRpdGxlOiB0aGlzLnRleHRzLmRlbGV0ZUNvbmZpcm1hdGlvblRpdGxlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaWx0ZXIoY29uZmlybWVkID0+IGNvbmZpcm1lZCksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFNlbGVjdGVkUmVzb3VyY2VJZHMpKSksXHJcbiAgICAgIG1hcCgoWywgcmVzb3VyY2VJZHNdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZSh7IHJlc291cmNlSWRzIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGRlbGV0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMuZGVsZXRlKSxcclxuICAgICAgZXhoYXVzdE1hcCgoeyByZXNvdXJjZUlkcyB9KSA9PlxyXG4gICAgICAgIHRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZXMocmVzb3VyY2VJZHMpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gW3RoaXMubGlzdEFjdGlvbnMuZGVsZXRlU3VjY2Vzcyh7IHJlc291cmNlSWRzIH0pLCB0aGlzLmxpc3RBY3Rpb25zLnJlZnJlc2goKV0pLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JzOiBFKSA9PiBvZih0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZUZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGRlbGV0ZVVzZXJzU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMuZGVsZXRlU3VjY2VzcyksXHJcbiAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih0aGlzLnRleHRzLmRlbGV0ZWRNZXNzYWdlLCAnT2snKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxyXG4gICk7XHJcblxyXG4gIGNvcHlTZWxlY3RlZCQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMuY29weVNlbGVjdGVkKSxcclxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRTZWxlY3RlZFJlc291cmNlSWRzKSkpLFxyXG4gICAgICAgIHRhcCgoWywgcmVzb3VyY2VJZHNdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVzb3VyY2VJZHNbMF1dLCB7IHN0YXRlOiB7IHNlbGVjdGVkUmVzb3VyY2VJZDogcmVzb3VyY2VJZHNbMF0gfSB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxyXG4gICk7XHJcblxyXG4gIG5hdmlnYXRlVG9TZWxlY3RlZCQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubmF2aWdhdGVUb1NlbGVjdGVkKSxcclxuICAgICAgICB0YXAoYWN0aW9uID0+IHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFthY3Rpb24ucmVzb3VyY2VJZF0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XHJcbiAgKTtcclxuXHJcbiAgZXJyb3JzSGFuZGxlciQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZFBhZ2VGYWlsdXJlLCB0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZUZhaWx1cmUsIHRoaXMubGlzdEFjdGlvbnMucGF0Y2hGYWlsdXJlKSxcclxuICAgICAgICB0YXAoKHsgZXJyb3JzIH0pID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vbkxpc3RFcnJvcnMoZXJyb3JzKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxyXG4gICk7XHJcblxyXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBhY3Rpb25zJDogQWN0aW9ucyxcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBzdG9yZTogU3RvcmUsXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBMaXN0U2VydmljZTxULCBTPixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlzdEFjdGlvbnM6IExpc3RBY3Rpb25zPFQsIEUsIFM+LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0U2VsZWN0b3JzOiBMaXN0U2VsZWN0b3JzPFMsIEU+LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25TZXJ2aWNlOiBMaXN0Tm90aWZpY2F0aW9uU2VydmljZTxFPlxyXG4gICkge31cclxufVxyXG4iXX0=
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGlzdC1lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtbGlzdC1lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUloSCxNQUFNLE9BQWdCLG1CQUFtQjtJQW9MdkMsWUFDcUIsUUFBaUIsRUFDakIsS0FBWSxFQUNkLE9BQTBCLEVBQzFCLFdBQWlDLEVBQ2pDLGFBQWtDLEVBQ2xDLG1CQUErQztRQUw3QyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFDakMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBNEI7UUF6TGxFLFVBQUssR0FBRztZQUNOLHVCQUF1QixFQUFFLGtCQUFrQjtZQUMzQyx5QkFBeUIsRUFBRSxnREFBZ0Q7U0FDNUUsQ0FBQztRQUVGLGdCQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQ2xFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEcsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO1FBRUYsc0JBQWlCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsRUFDekMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUNoRixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEVBQ3hELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ2pHLENBQ0YsQ0FBQztRQUVGLGtCQUFhLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQ3JDLGNBQWMsQ0FDWixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQ2pFLEVBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUN2QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQUFBRCxFQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDbkcsQ0FDRixDQUFDO1FBRUYsYUFBUSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUNoQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQ2hGLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixHQUFHLENBQUMsRUFBRSxDQUFDO1NBQ2pFLENBQUMsQ0FDSCxDQUNGLENBQUM7UUFFRix5QkFBb0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUM1QyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQzVFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFO2dCQUM1RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzthQUNyRjtpQkFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO2dCQUMvRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDeEM7aUJBQU0sSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtnQkFDL0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDNUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN6QztZQUVELE9BQU8sWUFBWSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUFDO1FBRUYsMEJBQXFCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUMvQixFQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQ3pDLENBQ0YsQ0FBQztRQUVGLGNBQVMsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFDakMsY0FBYyxDQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUM3RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQ2hFLEVBQ0QsU0FBUyxDQUNQLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLENBS2hFLEVBQUUsRUFBRTtZQUNILGFBQWEsR0FBRztnQkFDZCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRO2FBQ2pDLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQyxPQUFPO2lCQUNoQixhQUFhLENBQUM7Z0JBQ2IsYUFBYTtnQkFDYixjQUFjO2dCQUNkLGdCQUFnQjthQUNqQixDQUFDO2lCQUNELElBQUksQ0FDSCxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FDZCxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQztnQkFDL0IsU0FBUztnQkFDVCxhQUFhO2FBQ2QsQ0FBQyxDQUNILEVBQ0QsVUFBVSxDQUFDLENBQUMsTUFBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDNUUsQ0FBQztRQUNOLENBQUMsQ0FDRixDQUNGLENBQ0YsQ0FBQztRQUVGLFdBQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDOUIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDbkUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQ2xHLFVBQVUsQ0FBQyxDQUFDLE1BQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3pFLENBQ0YsQ0FDRixDQUNGLENBQUM7UUFFRix3QkFBbUIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxFQUNqRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3JELE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QjtnQkFDN0MsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCO2FBQzFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUM5QixjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEVBQ2xGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQ25FLENBQ0YsQ0FBQztRQUVGLFlBQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFDL0IsVUFBVSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDNUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUM5RixVQUFVLENBQUMsQ0FBQyxNQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUMxRSxDQUNGLENBQ0YsQ0FDRixDQUFDO1FBRUYsd0JBQW1CLEdBQUcsWUFBWSxDQUNoQyxHQUFHLEVBQUUsQ0FDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQ3RDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUNILEVBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3BCLENBQUM7UUFFRixtQkFBYyxHQUFHLFlBQVksQ0FDM0IsR0FBRyxFQUFFLENBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUN2RyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FDSCxFQUNILEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUNwQixDQUFDO0lBU0MsQ0FBQztDQUNMIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBGaWx0ZXJpbmdPcHRpb25zLFxyXG4gIExpc3ROb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gIExpc3RTZXJ2aWNlLFxyXG4gIFBhZ2luZ09wdGlvbnMsXHJcbiAgU29ydGluZ09wdGlvbnNcclxufSBmcm9tICdAbmdkdXgvZGF0YS1tb2RlbC1jb21tb24nO1xyXG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgZXhoYXVzdE1hcCwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IExpc3RBY3Rpb25zLCBMaXN0U2VsZWN0b3JzIH0gZnJvbSAnLi4vbW9kZWxzL2xpc3QubW9kZWwnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TGlzdEVmZmVjdHM8VCwgRSwgUyA9IFQ+IHtcclxuICB0ZXh0cyA9IHtcclxuICAgIGRlbGV0ZUNvbmZpcm1hdGlvblRpdGxlOiAnRGVsZXRlIHJlc291cmNlcycsXHJcbiAgICBkZWxldGVDb25maXJtYXRpb25NZXNzYWdlOiAnQXJlIHlvdSBzdXJlIHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgcmVzb3VyY2VzPydcclxuICB9O1xyXG5cclxuICBpbml0aWFsaXplJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5pbml0aWFsaXplLCB0aGlzLmxpc3RBY3Rpb25zLnJlaW5pdGlhbGl6ZSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIFt0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogMSB9KSwgdGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSh7IHBhZ2VOdW1iZXI6IDIgfSldO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGxvYWRQcmV2aW91c1BhZ2UkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmxvYWRQcmV2aW91c1BhZ2UpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRDdXJyZW50UGFnZU51bWJlcikpKSxcclxuICAgICAgZmlsdGVyKChbLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IGN1cnJlbnRQYWdlTnVtYmVyID4gMSksXHJcbiAgICAgIG1hcCgoWywgY3VycmVudFBhZ2VOdW1iZXJdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2VOdW1iZXIgLSAxIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGxvYWROZXh0UGFnZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZE5leHRQYWdlKSxcclxuICAgICAgd2l0aExhdGVzdEZyb20oXHJcbiAgICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuaXNMYXN0UGFnZSkpLFxyXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEN1cnJlbnRQYWdlTnVtYmVyKSlcclxuICAgICAgKSxcclxuICAgICAgZmlsdGVyKChbLCBpc0xhc3RQYWdlXSkgPT4gIWlzTGFzdFBhZ2UpLFxyXG4gICAgICBtYXAoKFssICwgY3VycmVudFBhZ2VOdW1iZXJdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2VOdW1iZXIgKyAxIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIHJlZnJlc2gkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLnJlZnJlc2gpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRDdXJyZW50UGFnZU51bWJlcikpKSxcclxuICAgICAgc3dpdGNoTWFwKChbLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IFtcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2VOdW1iZXIgfSksXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSh7IHBhZ2VOdW1iZXI6IGN1cnJlbnRQYWdlTnVtYmVyICsgMSB9KVxyXG4gICAgICBdKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGNoYW5nZVBhZ2luZ09wdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2luZ09wdGlvbnMpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRQYWdpbmdPcHRpb25zKSkpLFxyXG4gICAgICBtYXAoKFthY3Rpb24sIHBhZ2luZ09wdGlvbnNdKSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGlvbi5wYWdpbmdPcHRpb25zLnBhZ2VTaXplICE9PSBwYWdpbmdPcHRpb25zLnBhZ2VTaXplKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5saXN0QWN0aW9ucy5jaGFuZ2VQYWdlU2l6ZSh7IHBhZ2VTaXplOiBhY3Rpb24ucGFnaW5nT3B0aW9ucy5wYWdlU2l6ZSB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5wYWdpbmdPcHRpb25zLnBhZ2UgPT09IHBhZ2luZ09wdGlvbnMucGFnZSArIDEpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmxpc3RBY3Rpb25zLmxvYWROZXh0UGFnZSgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBhZ2luZ09wdGlvbnMucGFnZSA9PT0gcGFnaW5nT3B0aW9ucy5wYWdlIC0gMSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubGlzdEFjdGlvbnMubG9hZFByZXZpb3VzUGFnZSgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBhZ2luZ09wdGlvbnMucGFnZSA9PT0gMSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubGlzdEFjdGlvbnMubG9hZEZpcnN0UGFnZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFjdGlvbignTm90IGltcGxlbWVudCBwYWdlIG9wdGlvbnMgYWN0aW9uJyk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgY2hhbmdlUmVxdWVzdE9wdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZShcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VTaXplLFxyXG4gICAgICAgIHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlU29ydGluZyxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZUZpbHRlcmluZyxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRGaXJzdFBhZ2VcclxuICAgICAgKSxcclxuICAgICAgbWFwKCgpID0+IHRoaXMubGlzdEFjdGlvbnMuaW5pdGlhbGl6ZSgpKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGxvYWRQYWdlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxyXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFBhZ2luZ09wdGlvbnMpKSxcclxuICAgICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRTb3J0aW5nT3B0aW9ucykpLFxyXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEZpbHRlcmluZ09wdGlvbnMpKVxyXG4gICAgICApLFxyXG4gICAgICBjb25jYXRNYXAoXHJcbiAgICAgICAgKFt7IHBhZ2VOdW1iZXIgfSwgcGFnaW5nT3B0aW9ucywgc29ydGluZ09wdGlvbnMsIGZpbHRlcmluZ09wdGlvbnNdOiBbXHJcbiAgICAgICAgICB7IHBhZ2VOdW1iZXI6IG51bWJlciB9LFxyXG4gICAgICAgICAgUGFnaW5nT3B0aW9ucyxcclxuICAgICAgICAgIFNvcnRpbmdPcHRpb25zLFxyXG4gICAgICAgICAgRmlsdGVyaW5nT3B0aW9uc1xyXG4gICAgICAgIF0pID0+IHtcclxuICAgICAgICAgIHBhZ2luZ09wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIHBhZ2U6IHBhZ2VOdW1iZXIsXHJcbiAgICAgICAgICAgIHBhZ2VTaXplOiBwYWdpbmdPcHRpb25zLnBhZ2VTaXplXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VcclxuICAgICAgICAgICAgLmxvYWRSZXNvdXJjZXMoe1xyXG4gICAgICAgICAgICAgIHBhZ2luZ09wdGlvbnMsXHJcbiAgICAgICAgICAgICAgc29ydGluZ09wdGlvbnMsXHJcbiAgICAgICAgICAgICAgZmlsdGVyaW5nT3B0aW9uc1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICBtYXAocmVzb3VyY2VzID0+XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlU3VjY2Vzcyh7XHJcbiAgICAgICAgICAgICAgICAgIHJlc291cmNlcyxcclxuICAgICAgICAgICAgICAgICAgcGFnaW5nT3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRSkgPT4gb2YodGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZUZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIHBhdGNoJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5wYXRjaCksXHJcbiAgICAgIGV4aGF1c3RNYXAoYWN0aW9uID0+XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnBhdGNoUmVzb3VyY2VzKGFjdGlvbi5yZXNvdXJjZUlkcywgYWN0aW9uLnJlc291cmNlKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKHJlc291cmNlcyA9PiBbdGhpcy5saXN0QWN0aW9ucy5wYXRjaFN1Y2Nlc3MoeyByZXNvdXJjZXMgfSksIHRoaXMubGlzdEFjdGlvbnMucmVmcmVzaCgpXSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcnM6IEUpID0+IG9mKHRoaXMubGlzdEFjdGlvbnMucGF0Y2hGYWlsdXJlKHsgZXJyb3JzIH0pKSlcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgIClcclxuICApO1xyXG5cclxuICBzaG93UmVtb3ZhbHNEaWFsb2ckID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLnNob3dSZW1vdmFsc0NvbmZpcm1hdGlvbiksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vcGVuQ29uZmlybWF0aW9uRGlhbG9nKHtcclxuICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudGV4dHMuZGVsZXRlQ29uZmlybWF0aW9uTWVzc2FnZSxcclxuICAgICAgICAgIHRpdGxlOiB0aGlzLnRleHRzLmRlbGV0ZUNvbmZpcm1hdGlvblRpdGxlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaWx0ZXIoY29uZmlybWVkID0+IGNvbmZpcm1lZCksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFNlbGVjdGVkUmVzb3VyY2VJZHMpKSksXHJcbiAgICAgIG1hcCgoWywgcmVzb3VyY2VJZHNdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZSh7IHJlc291cmNlSWRzIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGRlbGV0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMuZGVsZXRlKSxcclxuICAgICAgZXhoYXVzdE1hcCgoeyByZXNvdXJjZUlkcyB9KSA9PlxyXG4gICAgICAgIHRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZXMocmVzb3VyY2VJZHMpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gW3RoaXMubGlzdEFjdGlvbnMuZGVsZXRlU3VjY2Vzcyh7IHJlc291cmNlSWRzIH0pLCB0aGlzLmxpc3RBY3Rpb25zLnJlZnJlc2goKV0pLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JzOiBFKSA9PiBvZih0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZUZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGRlbGV0ZVVzZXJzU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMuZGVsZXRlU3VjY2VzcyksXHJcbiAgICAgICAgdGFwKCh7IHJlc291cmNlSWRzIH0pID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vbkxpc3REZWxldGUocmVzb3VyY2VJZHMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XHJcbiAgKTtcclxuXHJcbiAgZXJyb3JzSGFuZGxlciQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZFBhZ2VGYWlsdXJlLCB0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZUZhaWx1cmUsIHRoaXMubGlzdEFjdGlvbnMucGF0Y2hGYWlsdXJlKSxcclxuICAgICAgICB0YXAoKHsgZXJyb3JzIH0pID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vbkxpc3RFcnJvcnMoZXJyb3JzKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxyXG4gICk7XHJcblxyXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBhY3Rpb25zJDogQWN0aW9ucyxcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBzdG9yZTogU3RvcmUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2U6IExpc3RTZXJ2aWNlPFQsIFM+LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0QWN0aW9uczogTGlzdEFjdGlvbnM8VCwgRSwgUz4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RTZWxlY3RvcnM6IExpc3RTZWxlY3RvcnM8UywgRT4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IExpc3ROb3RpZmljYXRpb25TZXJ2aWNlPEU+XHJcbiAgKSB7fVxyXG59XHJcbiJdfQ==
|
|
@@ -22,8 +22,6 @@ export function createListActions(featureName) {
|
|
|
22
22
|
const patchSuccess = createAction(`[${featureName} Page] Patch ${featureName} Success`, props());
|
|
23
23
|
const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props());
|
|
24
24
|
const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);
|
|
25
|
-
const copySelected = createAction(`[${featureName} Page] Copy Selected ${featureName}`);
|
|
26
|
-
const navigateToSelected = createAction(`[${featureName} Page] Navigate to selected ${featureName}`, props());
|
|
27
25
|
const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);
|
|
28
26
|
return {
|
|
29
27
|
initializeRequestOptions,
|
|
@@ -47,10 +45,8 @@ export function createListActions(featureName) {
|
|
|
47
45
|
patchSuccess,
|
|
48
46
|
patchFailure,
|
|
49
47
|
resetRequestState,
|
|
50
|
-
copySelected,
|
|
51
|
-
navigateToSelected,
|
|
52
48
|
changePagingOptions,
|
|
53
49
|
showRemovalsConfirmation
|
|
54
50
|
};
|
|
55
51
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi8rc3RhdGUvbGlzdC1hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2xELE1BQU0sVUFBVSxpQkFBaUIsQ0FBYyxXQUFtQjtJQUNoRSxNQUFNLHdCQUF3QixHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcscUJBQXFCLFdBQVcsa0JBQWtCLENBQUMsQ0FBQztJQUNqSCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGtCQUFrQixXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcscUJBQXFCLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbkYsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixXQUFXLHVCQUF1QixXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBRXBHLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsb0JBQW9CLFdBQVcsT0FBTyxDQUFDLENBQUM7SUFDekYsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLHdCQUF3QixXQUFXLE9BQU8sQ0FBQyxDQUFDO0lBQ2pHLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcscUJBQXFCLFdBQVcsT0FBTyxDQUFDLENBQUM7SUFFM0YsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUNqQyxJQUFJLFdBQVcsaUJBQWlCLFdBQVcsWUFBWSxFQUN2RCxLQUFLLEVBQXdCLENBQzlCLENBQUM7SUFFRixNQUFNLG1CQUFtQixHQUFHLFlBQVksQ0FDdEMsSUFBSSxXQUFXLGlCQUFpQixXQUFXLGVBQWUsRUFDMUQsS0FBSyxFQUFvQyxDQUMxQyxDQUFDO0lBQ0YsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUNoQyxJQUFJLFdBQVcsaUJBQWlCLFdBQVcsVUFBVSxFQUNyRCxLQUFLLEVBQWtDLENBQ3hDLENBQUM7SUFDRixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQ2xDLElBQUksV0FBVyxpQkFBaUIsV0FBVyxZQUFZLEVBQ3ZELEtBQUssRUFBMEMsQ0FDaEQsQ0FBQztJQUNGLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FDakMsSUFBSSxXQUFXLDBCQUEwQixXQUFXLEVBQUUsRUFDdEQsS0FBSyxFQUFxQyxDQUMzQyxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxlQUFlLFdBQVcsT0FBTyxFQUFFLEtBQUssRUFBMEIsQ0FBQyxDQUFDO0lBQ2pILE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FDbEMsSUFBSSxXQUFXLGVBQWUsV0FBVyxlQUFlLEVBQ3hELEtBQUssRUFBb0QsQ0FDMUQsQ0FBQztJQUNGLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FDbEMsSUFBSSxXQUFXLGVBQWUsV0FBVyxlQUFlLEVBQ3hELEtBQUssRUFBaUIsQ0FDdkIsQ0FBQztJQUVGLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsaUJBQWlCLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBNkIsQ0FBQyxDQUFDO0lBQ3JILE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FDaEMsSUFBSSxXQUFXLGlCQUFpQixXQUFXLFVBQVUsRUFDckQsS0FBSyxFQUE2QixDQUNuQyxDQUFDO0lBQ0YsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxpQkFBaUIsV0FBVyxVQUFVLEVBQUUsS0FBSyxFQUFpQixDQUFDLENBQUM7SUFFbEgsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUN4QixJQUFJLFdBQVcsZ0JBQWdCLFdBQVcsRUFBRSxFQUM1QyxLQUFLLEVBQW1ELENBQ3pELENBQUM7SUFDRixNQUFNLFlBQVksR0FBRyxZQUFZLENBQy9CLElBQUksV0FBVyxnQkFBZ0IsV0FBVyxVQUFVLEVBQ3BELEtBQUssRUFBbUMsQ0FDekMsQ0FBQztJQUNGLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsZ0JBQWdCLFdBQVcsVUFBVSxFQUFFLEtBQUssRUFBaUIsQ0FBQyxDQUFDO0lBQ2hILE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxnQkFBZ0IsV0FBVyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRW5HLE1BQU0sd0JBQXdCLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxlQUFlLFdBQVcsdUJBQXVCLENBQUMsQ0FBQztJQUVoSCxPQUFPO1FBQ0wsd0JBQXdCO1FBQ3hCLGNBQWM7UUFDZCxhQUFhO1FBQ2IsZUFBZTtRQUNmLFlBQVk7UUFDWixRQUFRO1FBQ1IsT0FBTztRQUNQLFVBQVU7UUFDVixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixjQUFjO1FBQ2QsZUFBZTtRQUNmLGVBQWU7UUFDZixNQUFNLEVBQUUsWUFBWTtRQUNwQixhQUFhO1FBQ2IsYUFBYTtRQUNiLEtBQUs7UUFDTCxZQUFZO1FBQ1osWUFBWTtRQUNaLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFDbkIsd0JBQXdCO0tBQ3pCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JEdG8sIEZpbHRlcmluZ09wdGlvbnMsIFBhZ2luZ09wdGlvbnMsIFNvcnRpbmdGaWVsZCB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGlvbiwgcHJvcHMgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IExpc3RBY3Rpb25zIH0gZnJvbSAnLi4vbW9kZWxzL2xpc3QubW9kZWwnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RBY3Rpb25zPFQsIEUsIFMgPSBUPihmZWF0dXJlTmFtZTogc3RyaW5nKTogTGlzdEFjdGlvbnM8VCwgRSwgUz4ge1xyXG4gIGNvbnN0IGluaXRpYWxpemVSZXF1ZXN0T3B0aW9ucyA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIEluaXRpYWxpemUgJHtmZWF0dXJlTmFtZX0gUmVxdWVzdCBPcHRpb25zYCk7XHJcbiAgY29uc3QgcmVmcmVzaCA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIFJlZnJlc2ggJHtmZWF0dXJlTmFtZX1gKTtcclxuICBjb25zdCBpbml0aWFsaXplID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gSW5pdGlhbGl6ZSAke2ZlYXR1cmVOYW1lfWApO1xyXG4gIGNvbnN0IHJlaW5pdGlhbGl6ZSA9IGNyZWF0ZUFjdGlvbihgW09yZ2FuaXphdGlvbiAke2ZlYXR1cmVOYW1lfSBQYWdlXSBSZWluaXRpYWxpemUgJHtmZWF0dXJlTmFtZX1gKTtcclxuXHJcbiAgY29uc3QgbG9hZE5leHRQYWdlID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gTG9hZCBOZXh0ICR7ZmVhdHVyZU5hbWV9IFBhZ2VgKTtcclxuICBjb25zdCBsb2FkUHJldmlvdXNQYWdlID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gTG9hZCBQcmV2aW91cyAke2ZlYXR1cmVOYW1lfSBQYWdlYCk7XHJcbiAgY29uc3QgbG9hZEZpcnN0UGFnZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIExvYWQgRmlyc3QgJHtmZWF0dXJlTmFtZX0gUGFnZWApO1xyXG5cclxuICBjb25zdCBjaGFuZ2VQYWdlU2l6ZSA9IGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gQ2hhbmdlICR7ZmVhdHVyZU5hbWV9IFBhZ2UgU2l6ZWAsXHJcbiAgICBwcm9wczx7IHBhZ2VTaXplOiBudW1iZXIgfT4oKVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGNoYW5nZVBhZ2luZ09wdGlvbnMgPSBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIENoYW5nZSAke2ZlYXR1cmVOYW1lfSBQYWdlIE9wdGlvbnNgLFxyXG4gICAgcHJvcHM8eyBwYWdpbmdPcHRpb25zOiBQYWdpbmdPcHRpb25zIH0+KClcclxuICApO1xyXG4gIGNvbnN0IGNoYW5nZVNvcnRpbmcgPSBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIENoYW5nZSAke2ZlYXR1cmVOYW1lfSBTb3J0aW5nYCxcclxuICAgIHByb3BzPHsgc29ydGluZ0ZpZWxkOiBTb3J0aW5nRmllbGQgfT4oKVxyXG4gICk7XHJcbiAgY29uc3QgY2hhbmdlRmlsdGVyaW5nID0gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBDaGFuZ2UgJHtmZWF0dXJlTmFtZX0gRmlsdGVyaW5nYCxcclxuICAgIHByb3BzPHsgZmlsdGVyaW5nT3B0aW9uczogRmlsdGVyaW5nT3B0aW9ucyB9PigpXHJcbiAgKTtcclxuICBjb25zdCBjaGFuZ2VTZWxlY3RlZCA9IGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gQ2hhbmdlIFNlbGVjdGVkICR7ZmVhdHVyZU5hbWV9YCxcclxuICAgIHByb3BzPHsgc2VsZWN0ZWRSZXNvdXJjZUlkczogc3RyaW5nW10gfT4oKVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGxvYWRQYWdlID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gTG9hZCAke2ZlYXR1cmVOYW1lfSBQYWdlYCwgcHJvcHM8eyBwYWdlTnVtYmVyOiBudW1iZXIgfT4oKSk7XHJcbiAgY29uc3QgbG9hZFBhZ2VTdWNjZXNzID0gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBMb2FkICR7ZmVhdHVyZU5hbWV9IFBhZ2UgU3VjY2Vzc2AsXHJcbiAgICBwcm9wczx7IHJlc291cmNlczogU1tdOyBwYWdpbmdPcHRpb25zOiBQYWdpbmdPcHRpb25zIH0+KClcclxuICApO1xyXG4gIGNvbnN0IGxvYWRQYWdlRmFpbHVyZSA9IGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gTG9hZCAke2ZlYXR1cmVOYW1lfSBQYWdlIEZhaWx1cmVgLFxyXG4gICAgcHJvcHM8eyBlcnJvcnM6IEUgfT4oKVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGRlbGV0ZUFjdGlvbiA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIERlbGV0ZSAke2ZlYXR1cmVOYW1lfWAsIHByb3BzPHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0+KCkpO1xyXG4gIGNvbnN0IGRlbGV0ZVN1Y2Nlc3MgPSBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIERlbGV0ZSAke2ZlYXR1cmVOYW1lfSBTdWNjZXNzYCxcclxuICAgIHByb3BzPHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0+KClcclxuICApO1xyXG4gIGNvbnN0IGRlbGV0ZUZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBEZWxldGUgJHtmZWF0dXJlTmFtZX0gRmFpbHVyZWAsIHByb3BzPHsgZXJyb3JzOiBFIH0+KCkpO1xyXG5cclxuICBjb25zdCBwYXRjaCA9IGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gUGF0Y2ggJHtmZWF0dXJlTmFtZX1gLFxyXG4gICAgcHJvcHM8eyByZXNvdXJjZUlkczogc3RyaW5nW107IHJlc291cmNlOiBQYXJ0aWFsPFQ+IH0+KClcclxuICApO1xyXG4gIGNvbnN0IHBhdGNoU3VjY2VzcyA9IGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gUGF0Y2ggJHtmZWF0dXJlTmFtZX0gU3VjY2Vzc2AsXHJcbiAgICBwcm9wczx7IHJlc291cmNlczogKFQgfCBFcnJvckR0bylbXSB9PigpXHJcbiAgKTtcclxuICBjb25zdCBwYXRjaEZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBQYXRjaCAke2ZlYXR1cmVOYW1lfSBGYWlsdXJlYCwgcHJvcHM8eyBlcnJvcnM6IEUgfT4oKSk7XHJcbiAgY29uc3QgcmVzZXRSZXF1ZXN0U3RhdGUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBSZXNldCAke2ZlYXR1cmVOYW1lfSBSZXF1ZXN0IFN0YXRlYCk7XHJcblxyXG4gIGNvbnN0IHNob3dSZW1vdmFsc0NvbmZpcm1hdGlvbiA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIFNob3cgJHtmZWF0dXJlTmFtZX0gUmVtb3ZhbCBDb25maXJtYXRpb25gKTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGluaXRpYWxpemVSZXF1ZXN0T3B0aW9ucyxcclxuICAgIGNoYW5nZVBhZ2VTaXplLFxyXG4gICAgY2hhbmdlU29ydGluZyxcclxuICAgIGNoYW5nZUZpbHRlcmluZyxcclxuICAgIGxvYWROZXh0UGFnZSxcclxuICAgIGxvYWRQYWdlLFxyXG4gICAgcmVmcmVzaCxcclxuICAgIGluaXRpYWxpemUsXHJcbiAgICByZWluaXRpYWxpemUsXHJcbiAgICBsb2FkUHJldmlvdXNQYWdlLFxyXG4gICAgbG9hZEZpcnN0UGFnZSxcclxuICAgIGNoYW5nZVNlbGVjdGVkLFxyXG4gICAgbG9hZFBhZ2VTdWNjZXNzLFxyXG4gICAgbG9hZFBhZ2VGYWlsdXJlLFxyXG4gICAgZGVsZXRlOiBkZWxldGVBY3Rpb24sXHJcbiAgICBkZWxldGVTdWNjZXNzLFxyXG4gICAgZGVsZXRlRmFpbHVyZSxcclxuICAgIHBhdGNoLFxyXG4gICAgcGF0Y2hTdWNjZXNzLFxyXG4gICAgcGF0Y2hGYWlsdXJlLFxyXG4gICAgcmVzZXRSZXF1ZXN0U3RhdGUsXHJcbiAgICBjaGFuZ2VQYWdpbmdPcHRpb25zLFxyXG4gICAgc2hvd1JlbW92YWxzQ29uZmlybWF0aW9uXHJcbiAgfTtcclxufVxyXG4iXX0=
|
|
@@ -107,10 +107,6 @@ function createListActionHandlers(initialListState, entityAdapter, actions) {
|
|
|
107
107
|
...state,
|
|
108
108
|
selectedResourceIds: []
|
|
109
109
|
})),
|
|
110
|
-
on(actions.navigateToSelected, (state, { resourceId }) => ({
|
|
111
|
-
...state,
|
|
112
|
-
currentResourceId: resourceId
|
|
113
|
-
})),
|
|
114
110
|
...createLoadingStateActionHandlers(actions.loadPage, actions.loadPageSuccess, actions.loadPageFailure),
|
|
115
111
|
...createRequestStateActionHandlers(undefined, actions.delete, actions.deleteSuccess, actions.deleteFailure),
|
|
116
112
|
...createRequestStateActionHandlers(actions.resetRequestState, actions.patch, actions.patchSuccess, actions.patchFailure)
|
|
@@ -136,4 +132,4 @@ function createNextPageSuccessState(entityAdapter, state, pagingOptions, resourc
|
|
|
136
132
|
selectedResourceIds: []
|
|
137
133
|
});
|
|
138
134
|
}
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi8rc3RhdGUvbGlzdC1yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsb0JBQW9CLEVBRXBCLFlBQVksRUFDWixnQkFBZ0IsRUFDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsbUJBQW1CLEVBQWlCLE1BQU0sY0FBYyxDQUFDO0FBQ2xFLE9BQU8sRUFBaUIsYUFBYSxFQUFFLEVBQUUsRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFLN0UsTUFBTSxVQUFVLHVCQUF1QixDQUFtQyxLQUFLLEdBQUcsSUFBSTtJQUNwRixPQUFPLG1CQUFtQixDQUFDO1FBQ3pCLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7S0FDdEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsYUFBK0IsRUFDL0IsT0FBNkIsRUFDN0IsY0FBaUUsRUFDakUsZ0JBQTZDO0lBRTdDLE1BQU0sWUFBWSxHQUFvQixFQUFFLEdBQUcsc0JBQXNCLENBQU8sYUFBYSxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzlHLE9BQU8sYUFBYSxDQUNsQixZQUFZLEVBQ1osR0FBRyx3QkFBd0IsQ0FBVSxZQUFZLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxFQUMxRSxHQUFHLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQyxDQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQU8sYUFBK0I7SUFDbkUsT0FB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Q3RDLEdBQUcsS0FBSztRQUNSLGNBQWM7UUFDZCxtQkFBbUIsRUFBRSxFQUFFO0tBQ3hCLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERFRkFVTFRfUkVRVUVTVF9PUFRJT05TLFxyXG4gIERFRkFVTFRfU1RPUkVEX1BBR0VTLFxyXG4gIFBhZ2luZ09wdGlvbnMsXHJcbiAgUmVxdWVzdFN0YXRlLFxyXG4gIFNvcnRpbmdEaXJlY3Rpb25cclxufSBmcm9tICdAbmdkdXgvZGF0YS1tb2RlbC1jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIGNyZWF0ZUxvYWRpbmdTdGF0ZUFjdGlvbkhhbmRsZXJzLFxyXG4gIGNyZWF0ZVJlcXVlc3RTdGF0ZUFjdGlvbkhhbmRsZXJzLFxyXG4gIGdldExhc3RQYWdlTnVtYmVyXHJcbn0gZnJvbSAnQG5nZHV4L3N0b3JlLWNvbW1vbic7XHJcbmltcG9ydCB7IGNyZWF0ZUVudGl0eUFkYXB0ZXIsIEVudGl0eUFkYXB0ZXIgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xyXG5pbXBvcnQgeyBBY3Rpb25SZWR1Y2VyLCBjcmVhdGVSZWR1Y2VyLCBvbiwgUmVkdWNlclR5cGVzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUvc3JjL21vZGVscyc7XHJcblxyXG5pbXBvcnQgeyBMaXN0QWN0aW9ucywgTGlzdFN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2xpc3QubW9kZWwnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RFbnRpdHlBZGFwdGVyPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihpZEtleSA9ICdpZCcpOiBFbnRpdHlBZGFwdGVyPFQ+IHtcclxuICByZXR1cm4gY3JlYXRlRW50aXR5QWRhcHRlcih7XHJcbiAgICBzZWxlY3RJZDogcmVzb3VyY2UgPT4gcmVzb3VyY2VbaWRLZXldXHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaXN0UmVkdWNlcjxULCBFLCBTID0gVD4oXHJcbiAgZW50aXR5QWRhcHRlcjogRW50aXR5QWRhcHRlcjxTPixcclxuICBhY3Rpb25zOiBMaXN0QWN0aW9uczxULCBFLCBTPixcclxuICBhY3Rpb25IYW5kbGVycz86IFJlZHVjZXJUeXBlczxMaXN0U3RhdGU8UywgRT4sIEFjdGlvbkNyZWF0b3JbXT5bXSxcclxuICBpbml0aWFsTGlzdFN0YXRlPzogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH1cclxuKTogQWN0aW9uUmVkdWNlcjxMaXN0U3RhdGU8UywgRT4+IHtcclxuICBjb25zdCBpbml0aWFsU3RhdGU6IExpc3RTdGF0ZTxTLCBFPiA9IHsgLi4uY3JlYXRlSW5pdGlhbExpc3RTdGF0ZTxTLCBFPihlbnRpdHlBZGFwdGVyKSwgLi4uaW5pdGlhbExpc3RTdGF0ZSB9O1xyXG4gIHJldHVybiBjcmVhdGVSZWR1Y2VyPExpc3RTdGF0ZTxTLCBFPj4oXHJcbiAgICBpbml0aWFsU3RhdGUsXHJcbiAgICAuLi5jcmVhdGVMaXN0QWN0aW9uSGFuZGxlcnM8VCwgRSwgUz4oaW5pdGlhbFN0YXRlLCBlbnRpdHlBZGFwdGVyLCBhY3Rpb25zKSxcclxuICAgIC4uLihhY3Rpb25IYW5kbGVycyB8fCBbXSlcclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVJbml0aWFsTGlzdFN0YXRlPFQsIEU+KGVudGl0eUFkYXB0ZXI6IEVudGl0eUFkYXB0ZXI8VD4pOiBMaXN0U3RhdGU8VCwgRT4ge1xyXG4gIHJldHVybiBlbnRpdHlBZGFwdGVyLmdldEluaXRpYWxTdGF0ZSh7XHJcbiAgICAuLi5ERUZBVUxUX1JFUVVFU1RfT1BUSU9OUyxcclxuICAgIGxhc3RQYWdlTnVtYmVyOiB1bmRlZmluZWQsXHJcbiAgICBzZWxlY3RlZFJlc291cmNlSWRzOiBbXSxcclxuICAgIGxvYWRpbmdTdGF0ZTogUmVxdWVzdFN0YXRlLklETEUsXHJcbiAgICByZXF1ZXN0U3RhdGU6IFJlcXVlc3RTdGF0ZS5JRExFLFxyXG4gICAgZXJyb3JzOiB1bmRlZmluZWRcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlTGlzdEFjdGlvbkhhbmRsZXJzPFQsIEUsIFM+KFxyXG4gIGluaXRpYWxMaXN0U3RhdGU6IExpc3RTdGF0ZTxTLCBFPixcclxuICBlbnRpdHlBZGFwdGVyOiBFbnRpdHlBZGFwdGVyPFM+LFxyXG4gIGFjdGlvbnM6IExpc3RBY3Rpb25zPFQsIEUsIFM+XHJcbik6IFJlZHVjZXJUeXBlczxMaXN0U3RhdGU8UywgRT4sIEFjdGlvbkNyZWF0b3JbXT5bXSB7XHJcbiAgcmV0dXJuIFtcclxuICAgIG9uKGFjdGlvbnMucmVpbml0aWFsaXplLCAoKSA9PiBpbml0aWFsTGlzdFN0YXRlKSxcclxuICAgIG9uKGFjdGlvbnMuaW5pdGlhbGl6ZSwgKHN0YXRlOiBMaXN0U3RhdGU8UywgRT4pID0+XHJcbiAgICAgIGVudGl0eUFkYXB0ZXIucmVtb3ZlQWxsKHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBzZWxlY3RlZFJlc291cmNlSWRzOiBbXSxcclxuICAgICAgICBwYWdpbmdPcHRpb25zOiB7XHJcbiAgICAgICAgICAuLi5zdGF0ZS5wYWdpbmdPcHRpb25zLFxyXG4gICAgICAgICAgcGFnZTogMVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICksXHJcbiAgICBvbihhY3Rpb25zLnJlZnJlc2gsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+KSA9PiB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRQYWdlU3RhcnRJbmRleCA9IChzdGF0ZS5wYWdpbmdPcHRpb25zLnBhZ2UgLSAxKSAqIHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZVNpemU7XHJcbiAgICAgIGNvbnN0IHJlc291cmNlSWRzID0gc3RhdGUuaWRzLnNsaWNlKGN1cnJlbnRQYWdlU3RhcnRJbmRleCkgYXMgc3RyaW5nW107XHJcblxyXG4gICAgICByZXR1cm4gZW50aXR5QWRhcHRlci5yZW1vdmVNYW55KHJlc291cmNlSWRzLCBzdGF0ZSk7XHJcbiAgICB9KSxcclxuXHJcbiAgICBvbihhY3Rpb25zLmNoYW5nZVBhZ2VTaXplLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFPiwgeyBwYWdlU2l6ZSB9KSA9PiAoe1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgcGFnaW5nT3B0aW9uczogeyAuLi5zdGF0ZS5wYWdpbmdPcHRpb25zLCBwYWdlU2l6ZSB9LFxyXG4gICAgICBsYXN0UGFnZU51bWJlcjogdW5kZWZpbmVkXHJcbiAgICB9KSksXHJcbiAgICBvbihhY3Rpb25zLmNoYW5nZVNvcnRpbmcsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+LCB7IHNvcnRpbmdGaWVsZCB9KSA9PiB7XHJcbiAgICAgIGNvbnN0IHNvcnRpbmdPcHRpb25zID0geyAuLi5zdGF0ZS5zb3J0aW5nT3B0aW9ucyB9O1xyXG4gICAgICBpZiAoc29ydGluZ0ZpZWxkLmRpcmVjdGlvbiA9PT0gU29ydGluZ0RpcmVjdGlvbi5OT05FKSB7XHJcbiAgICAgICAgZGVsZXRlIHNvcnRpbmdPcHRpb25zW3NvcnRpbmdGaWVsZC5maWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc29ydGluZ09wdGlvbnNbc29ydGluZ0ZpZWxkLmZpZWxkXSA9IHNvcnRpbmdGaWVsZDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgIHNvcnRpbmdPcHRpb25zXHJcbiAgICAgIH07XHJcbiAgICB9KSxcclxuICAgIG9uKGFjdGlvbnMuY2hhbmdlRmlsdGVyaW5nLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFPiwgeyBmaWx0ZXJpbmdPcHRpb25zIH0pID0+ICh7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBmaWx0ZXJpbmdPcHRpb25zLFxyXG4gICAgICBsYXN0UGFnZU51bWJlcjogdW5kZWZpbmVkXHJcbiAgICB9KSksXHJcbiAgICBvbihhY3Rpb25zLmNoYW5nZVNlbGVjdGVkLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFPiwgeyBzZWxlY3RlZFJlc291cmNlSWRzIH0pID0+ICh7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBzZWxlY3RlZFJlc291cmNlSWRzXHJcbiAgICB9KSksXHJcbiAgICBvbihhY3Rpb25zLmxvYWRGaXJzdFBhZ2UsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+KSA9PiAoe1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgcGFnaW5nT3B0aW9uczogeyAuLi5zdGF0ZS5wYWdpbmdPcHRpb25zLCBwYWdlOiAxIH1cclxuICAgIH0pKSxcclxuICAgIG9uKGFjdGlvbnMubG9hZE5leHRQYWdlLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFPikgPT4ge1xyXG4gICAgICBpZiAoc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlID09PSBzdGF0ZS5sYXN0UGFnZU51bWJlcikge1xyXG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBzdGF0ZS5wYWdpbmdPcHRpb25zLnBhZ2UgKyAxID09PSBzdGF0ZS5sYXN0UGFnZU51bWJlciAmJlxyXG4gICAgICAgIHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZSArIDEgPiAoREVGQVVMVF9TVE9SRURfUEFHRVMgKyAxKSAvIDJcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgcmVzb3VyY2VJZHMgPSBzdGF0ZS5pZHMuc2xpY2UoMCwgc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlU2l6ZSkgYXMgc3RyaW5nW107XHJcbiAgICAgICAgc3RhdGUgPSBlbnRpdHlBZGFwdGVyLnJlbW92ZU1hbnkocmVzb3VyY2VJZHMsIHsgLi4uc3RhdGUgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgcGFnaW5nT3B0aW9uczoge1xyXG4gICAgICAgICAgLi4uc3RhdGUucGFnaW5nT3B0aW9ucyxcclxuICAgICAgICAgIHBhZ2U6IHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZSArIDFcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9KSxcclxuICAgIG9uKGFjdGlvbnMubG9hZFByZXZpb3VzUGFnZSwgKHN0YXRlOiBMaXN0U3RhdGU8UywgRT4pID0+IHtcclxuICAgICAgaWYgKHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZSA9PT0gMSkge1xyXG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgcGFnaW5nT3B0aW9uczoge1xyXG4gICAgICAgICAgLi4uc3RhdGUucGFnaW5nT3B0aW9ucyxcclxuICAgICAgICAgIHBhZ2U6IHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZSAtIDFcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9KSxcclxuICAgIG9uKGFjdGlvbnMubG9hZFBhZ2VTdWNjZXNzLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFPiwgeyByZXNvdXJjZXMsIHBhZ2luZ09wdGlvbnMgfSkgPT4ge1xyXG4gICAgICBpZiAocGFnaW5nT3B0aW9ucy5wYWdlIDwgc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVByZXZpb3VzUGFnZVN1Y2Nlc3NTdGF0ZShlbnRpdHlBZGFwdGVyLCBzdGF0ZSwgcmVzb3VyY2VzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGNyZWF0ZU5leHRQYWdlU3VjY2Vzc1N0YXRlKGVudGl0eUFkYXB0ZXIsIHN0YXRlLCBwYWdpbmdPcHRpb25zLCByZXNvdXJjZXMpO1xyXG4gICAgfSksXHJcbiAgICBvbihhY3Rpb25zLmRlbGV0ZVN1Y2Nlc3MsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+KSA9PiAoe1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgc2VsZWN0ZWRSZXNvdXJjZUlkczogW10gYXMgc3RyaW5nW11cclxuICAgIH0pKSxcclxuICAgIG9uKGFjdGlvbnMubmF2aWdhdGVUb1NlbGVjdGVkLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFPiwgeyByZXNvdXJjZUlkIH0pID0+ICh7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBjdXJyZW50UmVzb3VyY2VJZDogcmVzb3VyY2VJZFxyXG4gICAgfSkpLFxyXG5cclxuICAgIC4uLmNyZWF0ZUxvYWRpbmdTdGF0ZUFjdGlvbkhhbmRsZXJzPExpc3RTdGF0ZTxTLCBFPj4oXHJcbiAgICAgIGFjdGlvbnMubG9hZFBhZ2UsXHJcbiAgICAgIGFjdGlvbnMubG9hZFBhZ2VTdWNjZXNzLFxyXG4gICAgICBhY3Rpb25zLmxvYWRQYWdlRmFpbHVyZVxyXG4gICAgKSxcclxuICAgIC4uLmNyZWF0ZVJlcXVlc3RTdGF0ZUFjdGlvbkhhbmRsZXJzPExpc3RTdGF0ZTxTLCBFPiwgRT4oXHJcbiAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgYWN0aW9ucy5kZWxldGUsXHJcbiAgICAgIGFjdGlvbnMuZGVsZXRlU3VjY2VzcyxcclxuICAgICAgYWN0aW9ucy5kZWxldGVGYWlsdXJlXHJcbiAgICApLFxyXG4gICAgLi4uY3JlYXRlUmVxdWVzdFN0YXRlQWN0aW9uSGFuZGxlcnM8TGlzdFN0YXRlPFMsIEU+LCBFPihcclxuICAgICAgYWN0aW9ucy5yZXNldFJlcXVlc3RTdGF0ZSxcclxuICAgICAgYWN0aW9ucy5wYXRjaCxcclxuICAgICAgYWN0aW9ucy5wYXRjaFN1Y2Nlc3MsXHJcbiAgICAgIGFjdGlvbnMucGF0Y2hGYWlsdXJlXHJcbiAgICApXHJcbiAgXTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlUHJldmlvdXNQYWdlU3VjY2Vzc1N0YXRlPFQsIEU+KFxyXG4gIGVudGl0eUFkYXB0ZXI6IEVudGl0eUFkYXB0ZXI8VD4sXHJcbiAgc3RhdGU6IExpc3RTdGF0ZTxULCBFPixcclxuICByZXNvdXJjZXM6IFRbXVxyXG4pOiBMaXN0U3RhdGU8VCwgRT4ge1xyXG4gIGNvbnN0IHJlc291cmNlSWRzOiBzdHJpbmdbXSA9IHN0YXRlLmlkcy5zbGljZShcclxuICAgIDAsXHJcbiAgICAoREVGQVVMVF9TVE9SRURfUEFHRVMgLSAxKSAqIHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZVNpemVcclxuICApIGFzIHN0cmluZ1tdO1xyXG5cclxuICByZXR1cm4gZW50aXR5QWRhcHRlci5zZXRBbGwoWy4uLnJlc291cmNlcywgLi4ucmVzb3VyY2VJZHMubWFwKHJlc291cmNlSWQgPT4gc3RhdGUuZW50aXRpZXNbcmVzb3VyY2VJZF0pXSwge1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBzZWxlY3RlZFJlc291cmNlSWRzOiBbXVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVOZXh0UGFnZVN1Y2Nlc3NTdGF0ZTxULCBFPihcclxuICBlbnRpdHlBZGFwdGVyOiBFbnRpdHlBZGFwdGVyPFQ+LFxyXG4gIHN0YXRlOiBMaXN0U3RhdGU8VCwgRT4sXHJcbiAgcGFnaW5nT3B0aW9uczogUGFnaW5nT3B0aW9ucyxcclxuICByZXNvdXJjZXM6IFRbXVxyXG4pOiBMaXN0U3RhdGU8VCwgRT4ge1xyXG4gIGxldCByZXNvdXJjZUlkczogc3RyaW5nW10gPSBbXTtcclxuICBjb25zdCBsYXN0UGFnZU51bWJlciA9IGdldExhc3RQYWdlTnVtYmVyKHJlc291cmNlcywgcGFnaW5nT3B0aW9ucykgfHwgc3RhdGUubGFzdFBhZ2VOdW1iZXI7XHJcblxyXG4gIGlmIChwYWdpbmdPcHRpb25zLnBhZ2UgPiBERUZBVUxUX1NUT1JFRF9QQUdFUyAmJiBsYXN0UGFnZU51bWJlciAhPT0gc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlKSB7XHJcbiAgICByZXNvdXJjZUlkcyA9IHN0YXRlLmlkcy5zbGljZSgwLCBzdGF0ZS5wYWdpbmdPcHRpb25zLnBhZ2VTaXplKSBhcyBzdHJpbmdbXTtcclxuICAgIHN0YXRlID0gZW50aXR5QWRhcHRlci5yZW1vdmVNYW55KHJlc291cmNlSWRzLCB7IC4uLnN0YXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGVudGl0eUFkYXB0ZXIuYWRkTWFueShyZXNvdXJjZXMsIHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgbGFzdFBhZ2VOdW1iZXIsXHJcbiAgICBzZWxlY3RlZFJlc291cmNlSWRzOiBbXVxyXG4gIH0pO1xyXG59XHJcbiJdfQ==
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi8rc3RhdGUvbGlzdC1yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsb0JBQW9CLEVBRXBCLFlBQVksRUFDWixnQkFBZ0IsRUFDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsbUJBQW1CLEVBQWlCLE1BQU0sY0FBYyxDQUFDO0FBQ2xFLE9BQU8sRUFBaUIsYUFBYSxFQUFFLEVBQUUsRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFLN0UsTUFBTSxVQUFVLHVCQUF1QixDQUFtQyxLQUFLLEdBQUcsSUFBSTtJQUNwRixPQUFPLG1CQUFtQixDQUFDO1FBQ3pCLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7S0FDdEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsYUFBK0IsRUFDL0IsT0FBNkIsRUFDN0IsY0FBaUUsRUFDakUsZ0JBQTZDO0lBRTdDLE1BQU0sWUFBWSxHQUFvQixFQUFFLEdBQUcsc0JBQXNCLENBQU8sYUFBYSxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzlHLE9BQU8sYUFBYSxDQUNsQixZQUFZLEVBQ1osR0FBRyx3QkFBd0IsQ0FBVSxZQUFZLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxFQUMxRSxHQUFHLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQyxDQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQU8sYUFBK0I7SUFDbkUsT0FB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VF9TVE9SRURfUEFHRVMsXHJcbiAgUGFnaW5nT3B0aW9ucyxcclxuICBSZXF1ZXN0U3RhdGUsXHJcbiAgU29ydGluZ0RpcmVjdGlvblxyXG59IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgY3JlYXRlTG9hZGluZ1N0YXRlQWN0aW9uSGFuZGxlcnMsXHJcbiAgY3JlYXRlUmVxdWVzdFN0YXRlQWN0aW9uSGFuZGxlcnMsXHJcbiAgZ2V0TGFzdFBhZ2VOdW1iZXJcclxufSBmcm9tICdAbmdkdXgvc3RvcmUtY29tbW9uJztcclxuaW1wb3J0IHsgY3JlYXRlRW50aXR5QWRhcHRlciwgRW50aXR5QWRhcHRlciB9IGZyb20gJ0BuZ3J4L2VudGl0eSc7XHJcbmltcG9ydCB7IEFjdGlvblJlZHVjZXIsIGNyZWF0ZVJlZHVjZXIsIG9uLCBSZWR1Y2VyVHlwZXMgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IEFjdGlvbkNyZWF0b3IgfSBmcm9tICdAbmdyeC9zdG9yZS9zcmMvbW9kZWxzJztcclxuXHJcbmltcG9ydCB7IExpc3RBY3Rpb25zLCBMaXN0U3RhdGUgfSBmcm9tICcuLi9tb2RlbHMvbGlzdC5tb2RlbCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlzdEVudGl0eUFkYXB0ZXI8VCBleHRlbmRzIHsgW2tleTogc3RyaW5nXTogYW55IH0+KGlkS2V5ID0gJ2lkJyk6IEVudGl0eUFkYXB0ZXI8VD4ge1xyXG4gIHJldHVybiBjcmVhdGVFbnRpdHlBZGFwdGVyKHtcclxuICAgIHNlbGVjdElkOiByZXNvdXJjZSA9PiByZXNvdXJjZVtpZEtleV1cclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RSZWR1Y2VyPFQsIEUsIFMgPSBUPihcclxuICBlbnRpdHlBZGFwdGVyOiBFbnRpdHlBZGFwdGVyPFM+LFxyXG4gIGFjdGlvbnM6IExpc3RBY3Rpb25zPFQsIEUsIFM+LFxyXG4gIGFjdGlvbkhhbmRsZXJzPzogUmVkdWNlclR5cGVzPExpc3RTdGF0ZTxTLCBFPiwgQWN0aW9uQ3JlYXRvcltdPltdLFxyXG4gIGluaXRpYWxMaXN0U3RhdGU/OiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfVxyXG4pOiBBY3Rpb25SZWR1Y2VyPExpc3RTdGF0ZTxTLCBFPj4ge1xyXG4gIGNvbnN0IGluaXRpYWxTdGF0ZTogTGlzdFN0YXRlPFMsIEU+ID0geyAuLi5jcmVhdGVJbml0aWFsTGlzdFN0YXRlPFMsIEU+KGVudGl0eUFkYXB0ZXIpLCAuLi5pbml0aWFsTGlzdFN0YXRlIH07XHJcbiAgcmV0dXJuIGNyZWF0ZVJlZHVjZXI8TGlzdFN0YXRlPFMsIEU+PihcclxuICAgIGluaXRpYWxTdGF0ZSxcclxuICAgIC4uLmNyZWF0ZUxpc3RBY3Rpb25IYW5kbGVyczxULCBFLCBTPihpbml0aWFsU3RhdGUsIGVudGl0eUFkYXB0ZXIsIGFjdGlvbnMpLFxyXG4gICAgLi4uKGFjdGlvbkhhbmRsZXJzIHx8IFtdKVxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxMaXN0U3RhdGU8VCwgRT4oZW50aXR5QWRhcHRlcjogRW50aXR5QWRhcHRlcjxUPik6IExpc3RTdGF0ZTxULCBFPiB7XHJcbiAgcmV0dXJuIGVudGl0eUFkYXB0ZXIuZ2V0SW5pdGlhbFN0YXRlKHtcclxuICAgIC4uLkRFRkFVTFRfUkVRVUVTVF9PUFRJT05TLFxyXG4gICAgbGFzdFBhZ2VOdW1iZXI6IHVuZGVmaW5lZCxcclxuICAgIHNlbGVjdGVkUmVzb3VyY2VJZHM6IFtdLFxyXG4gICAgbG9hZGluZ1N0YXRlOiBSZXF1ZXN0U3RhdGUuSURMRSxcclxuICAgIHJlcXVlc3RTdGF0ZTogUmVxdWVzdFN0YXRlLklETEUsXHJcbiAgICBlcnJvcnM6IHVuZGVmaW5lZFxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVMaXN0QWN0aW9uSGFuZGxlcnM8VCwgRSwgUz4oXHJcbiAgaW5pdGlhbExpc3RTdGF0ZTogTGlzdFN0YXRlPFMsIEU+LFxyXG4gIGVudGl0eUFkYXB0ZXI6IEVudGl0eUFkYXB0ZXI8Uz4sXHJcbiAgYWN0aW9uczogTGlzdEFjdGlvbnM8VCwgRSwgUz5cclxuKTogUmVkdWNlclR5cGVzPExpc3RTdGF0ZTxTLCBFPiwgQWN0aW9uQ3JlYXRvcltdPltdIHtcclxuICByZXR1cm4gW1xyXG4gICAgb24oYWN0aW9ucy5yZWluaXRpYWxpemUsICgpID0+IGluaXRpYWxMaXN0U3RhdGUpLFxyXG4gICAgb24oYWN0aW9ucy5pbml0aWFsaXplLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFPikgPT5cclxuICAgICAgZW50aXR5QWRhcHRlci5yZW1vdmVBbGwoe1xyXG4gICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgIHNlbGVjdGVkUmVzb3VyY2VJZHM6IFtdLFxyXG4gICAgICAgIHBhZ2luZ09wdGlvbnM6IHtcclxuICAgICAgICAgIC4uLnN0YXRlLnBhZ2luZ09wdGlvbnMsXHJcbiAgICAgICAgICBwYWdlOiAxXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKSxcclxuICAgIG9uKGFjdGlvbnMucmVmcmVzaCwgKHN0YXRlOiBMaXN0U3RhdGU8UywgRT4pID0+IHtcclxuICAgICAgY29uc3QgY3VycmVudFBhZ2VTdGFydEluZGV4ID0gKHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZSAtIDEpICogc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlU2l6ZTtcclxuICAgICAgY29uc3QgcmVzb3VyY2VJZHMgPSBzdGF0ZS5pZHMuc2xpY2UoY3VycmVudFBhZ2VTdGFydEluZGV4KSBhcyBzdHJpbmdbXTtcclxuXHJcbiAgICAgIHJldHVybiBlbnRpdHlBZGFwdGVyLnJlbW92ZU1hbnkocmVzb3VyY2VJZHMsIHN0YXRlKTtcclxuICAgIH0pLFxyXG5cclxuICAgIG9uKGFjdGlvbnMuY2hhbmdlUGFnZVNpemUsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+LCB7IHBhZ2VTaXplIH0pID0+ICh7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBwYWdpbmdPcHRpb25zOiB7IC4uLnN0YXRlLnBhZ2luZ09wdGlvbnMsIHBhZ2VTaXplIH0sXHJcbiAgICAgIGxhc3RQYWdlTnVtYmVyOiB1bmRlZmluZWRcclxuICAgIH0pKSxcclxuICAgIG9uKGFjdGlvbnMuY2hhbmdlU29ydGluZywgKHN0YXRlOiBMaXN0U3RhdGU8UywgRT4sIHsgc29ydGluZ0ZpZWxkIH0pID0+IHtcclxuICAgICAgY29uc3Qgc29ydGluZ09wdGlvbnMgPSB7IC4uLnN0YXRlLnNvcnRpbmdPcHRpb25zIH07XHJcbiAgICAgIGlmIChzb3J0aW5nRmllbGQuZGlyZWN0aW9uID09PSBTb3J0aW5nRGlyZWN0aW9uLk5PTkUpIHtcclxuICAgICAgICBkZWxldGUgc29ydGluZ09wdGlvbnNbc29ydGluZ0ZpZWxkLmZpZWxkXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzb3J0aW5nT3B0aW9uc1tzb3J0aW5nRmllbGQuZmllbGRdID0gc29ydGluZ0ZpZWxkO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgc29ydGluZ09wdGlvbnNcclxuICAgICAgfTtcclxuICAgIH0pLFxyXG4gICAgb24oYWN0aW9ucy5jaGFuZ2VGaWx0ZXJpbmcsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+LCB7IGZpbHRlcmluZ09wdGlvbnMgfSkgPT4gKHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIGZpbHRlcmluZ09wdGlvbnMsXHJcbiAgICAgIGxhc3RQYWdlTnVtYmVyOiB1bmRlZmluZWRcclxuICAgIH0pKSxcclxuICAgIG9uKGFjdGlvbnMuY2hhbmdlU2VsZWN0ZWQsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+LCB7IHNlbGVjdGVkUmVzb3VyY2VJZHMgfSkgPT4gKHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIHNlbGVjdGVkUmVzb3VyY2VJZHNcclxuICAgIH0pKSxcclxuICAgIG9uKGFjdGlvbnMubG9hZEZpcnN0UGFnZSwgKHN0YXRlOiBMaXN0U3RhdGU8UywgRT4pID0+ICh7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBwYWdpbmdPcHRpb25zOiB7IC4uLnN0YXRlLnBhZ2luZ09wdGlvbnMsIHBhZ2U6IDEgfVxyXG4gICAgfSkpLFxyXG4gICAgb24oYWN0aW9ucy5sb2FkTmV4dFBhZ2UsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+KSA9PiB7XHJcbiAgICAgIGlmIChzdGF0ZS5wYWdpbmdPcHRpb25zLnBhZ2UgPT09IHN0YXRlLmxhc3RQYWdlTnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZSArIDEgPT09IHN0YXRlLmxhc3RQYWdlTnVtYmVyICYmXHJcbiAgICAgICAgc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlICsgMSA+IChERUZBVUxUX1NUT1JFRF9QQUdFUyArIDEpIC8gMlxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCByZXNvdXJjZUlkcyA9IHN0YXRlLmlkcy5zbGljZSgwLCBzdGF0ZS5wYWdpbmdPcHRpb25zLnBhZ2VTaXplKSBhcyBzdHJpbmdbXTtcclxuICAgICAgICBzdGF0ZSA9IGVudGl0eUFkYXB0ZXIucmVtb3ZlTWFueShyZXNvdXJjZUlkcywgeyAuLi5zdGF0ZSB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBwYWdpbmdPcHRpb25zOiB7XHJcbiAgICAgICAgICAuLi5zdGF0ZS5wYWdpbmdPcHRpb25zLFxyXG4gICAgICAgICAgcGFnZTogc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlICsgMVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0pLFxyXG4gICAgb24oYWN0aW9ucy5sb2FkUHJldmlvdXNQYWdlLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFPikgPT4ge1xyXG4gICAgICBpZiAoc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlID09PSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBwYWdpbmdPcHRpb25zOiB7XHJcbiAgICAgICAgICAuLi5zdGF0ZS5wYWdpbmdPcHRpb25zLFxyXG4gICAgICAgICAgcGFnZTogc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlIC0gMVxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0pLFxyXG4gICAgb24oYWN0aW9ucy5sb2FkUGFnZVN1Y2Nlc3MsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+LCB7IHJlc291cmNlcywgcGFnaW5nT3B0aW9ucyB9KSA9PiB7XHJcbiAgICAgIGlmIChwYWdpbmdPcHRpb25zLnBhZ2UgPCBzdGF0ZS5wYWdpbmdPcHRpb25zLnBhZ2UpIHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlUHJldmlvdXNQYWdlU3VjY2Vzc1N0YXRlKGVudGl0eUFkYXB0ZXIsIHN0YXRlLCByZXNvdXJjZXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gY3JlYXRlTmV4dFBhZ2VTdWNjZXNzU3RhdGUoZW50aXR5QWRhcHRlciwgc3RhdGUsIHBhZ2luZ09wdGlvbnMsIHJlc291cmNlcyk7XHJcbiAgICB9KSxcclxuICAgIG9uKGFjdGlvbnMuZGVsZXRlU3VjY2VzcywgKHN0YXRlOiBMaXN0U3RhdGU8UywgRT4pID0+ICh7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBzZWxlY3RlZFJlc291cmNlSWRzOiBbXSBhcyBzdHJpbmdbXVxyXG4gICAgfSkpLFxyXG4gICAgLi4uY3JlYXRlTG9hZGluZ1N0YXRlQWN0aW9uSGFuZGxlcnM8TGlzdFN0YXRlPFMsIEU+PihcclxuICAgICAgYWN0aW9ucy5sb2FkUGFnZSxcclxuICAgICAgYWN0aW9ucy5sb2FkUGFnZVN1Y2Nlc3MsXHJcbiAgICAgIGFjdGlvbnMubG9hZFBhZ2VGYWlsdXJlXHJcbiAgICApLFxyXG4gICAgLi4uY3JlYXRlUmVxdWVzdFN0YXRlQWN0aW9uSGFuZGxlcnM8TGlzdFN0YXRlPFMsIEU+LCBFPihcclxuICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICBhY3Rpb25zLmRlbGV0ZSxcclxuICAgICAgYWN0aW9ucy5kZWxldGVTdWNjZXNzLFxyXG4gICAgICBhY3Rpb25zLmRlbGV0ZUZhaWx1cmVcclxuICAgICksXHJcbiAgICAuLi5jcmVhdGVSZXF1ZXN0U3RhdGVBY3Rpb25IYW5kbGVyczxMaXN0U3RhdGU8UywgRT4sIEU+KFxyXG4gICAgICBhY3Rpb25zLnJlc2V0UmVxdWVzdFN0YXRlLFxyXG4gICAgICBhY3Rpb25zLnBhdGNoLFxyXG4gICAgICBhY3Rpb25zLnBhdGNoU3VjY2VzcyxcclxuICAgICAgYWN0aW9ucy5wYXRjaEZhaWx1cmVcclxuICAgIClcclxuICBdO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVQcmV2aW91c1BhZ2VTdWNjZXNzU3RhdGU8VCwgRT4oXHJcbiAgZW50aXR5QWRhcHRlcjogRW50aXR5QWRhcHRlcjxUPixcclxuICBzdGF0ZTogTGlzdFN0YXRlPFQsIEU+LFxyXG4gIHJlc291cmNlczogVFtdXHJcbik6IExpc3RTdGF0ZTxULCBFPiB7XHJcbiAgY29uc3QgcmVzb3VyY2VJZHM6IHN0cmluZ1tdID0gc3RhdGUuaWRzLnNsaWNlKFxyXG4gICAgMCxcclxuICAgIChERUZBVUxUX1NUT1JFRF9QQUdFUyAtIDEpICogc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlU2l6ZVxyXG4gICkgYXMgc3RyaW5nW107XHJcblxyXG4gIHJldHVybiBlbnRpdHlBZGFwdGVyLnNldEFsbChbLi4ucmVzb3VyY2VzLCAuLi5yZXNvdXJjZUlkcy5tYXAocmVzb3VyY2VJZCA9PiBzdGF0ZS5lbnRpdGllc1tyZXNvdXJjZUlkXSldLCB7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIHNlbGVjdGVkUmVzb3VyY2VJZHM6IFtdXHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZU5leHRQYWdlU3VjY2Vzc1N0YXRlPFQsIEU+KFxyXG4gIGVudGl0eUFkYXB0ZXI6IEVudGl0eUFkYXB0ZXI8VD4sXHJcbiAgc3RhdGU6IExpc3RTdGF0ZTxULCBFPixcclxuICBwYWdpbmdPcHRpb25zOiBQYWdpbmdPcHRpb25zLFxyXG4gIHJlc291cmNlczogVFtdXHJcbik6IExpc3RTdGF0ZTxULCBFPiB7XHJcbiAgbGV0IHJlc291cmNlSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNvbnN0IGxhc3RQYWdlTnVtYmVyID0gZ2V0TGFzdFBhZ2VOdW1iZXIocmVzb3VyY2VzLCBwYWdpbmdPcHRpb25zKSB8fCBzdGF0ZS5sYXN0UGFnZU51bWJlcjtcclxuXHJcbiAgaWYgKHBhZ2luZ09wdGlvbnMucGFnZSA+IERFRkFVTFRfU1RPUkVEX1BBR0VTICYmIGxhc3RQYWdlTnVtYmVyICE9PSBzdGF0ZS5wYWdpbmdPcHRpb25zLnBhZ2UpIHtcclxuICAgIHJlc291cmNlSWRzID0gc3RhdGUuaWRzLnNsaWNlKDAsIHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZVNpemUpIGFzIHN0cmluZ1tdO1xyXG4gICAgc3RhdGUgPSBlbnRpdHlBZGFwdGVyLnJlbW92ZU1hbnkocmVzb3VyY2VJZHMsIHsgLi4uc3RhdGUgfSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZW50aXR5QWRhcHRlci5hZGRNYW55KHJlc291cmNlcywge1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBsYXN0UGFnZU51bWJlcixcclxuICAgIHNlbGVjdGVkUmVzb3VyY2VJZHM6IFtdXHJcbiAgfSk7XHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9saXN0L3NyYy9saWIvbW9kZWxzL2xpc3QubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXMgKi9cclxuaW1wb3J0IHtcclxuICBFcnJvckR0byxcclxuICBGaWx0ZXJpbmdPcHRpb25zLFxyXG4gIFBhZ2luZ09wdGlvbnMsXHJcbiAgUmVxdWVzdE9wdGlvbnMsXHJcbiAgUmVxdWVzdFN0YXRlLFxyXG4gIFNvcnRpbmdGaWVsZCxcclxuICBTb3J0aW5nT3B0aW9uc1xyXG59IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmltcG9ydCB7IEFwaVJlcXVlc3RTdGF0ZSwgTG9hZGluZ1N0YXRlIH0gZnJvbSAnQG5nZHV4L3N0b3JlLWNvbW1vbic7XHJcbmltcG9ydCB7IEVudGl0eVN0YXRlIH0gZnJvbSAnQG5ncngvZW50aXR5JztcclxuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciwgTWVtb2l6ZWRTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgVHlwZWRBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZS9zcmMvbW9kZWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFN0YXRlPFQsIEU+IGV4dGVuZHMgRW50aXR5U3RhdGU8VD4sIFJlcXVlc3RPcHRpb25zLCBBcGlSZXF1ZXN0U3RhdGU8RT4sIExvYWRpbmdTdGF0ZSB7XHJcbiAgc2VsZWN0ZWRSZXNvdXJjZUlkczogc3RyaW5nW107XHJcbiAgbGFzdFBhZ2VOdW1iZXI6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMaXN0U2VsZWN0b3JzPFQsIEU+IHtcclxuICBnZXRBbGw6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBUW10+O1xyXG4gIGdldFJlcXVlc3RPcHRpb25zOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgUmVxdWVzdE9wdGlvbnM+O1xyXG4gIGlzTGFzdFBhZ2U6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBib29sZWFuPjtcclxuICBnZXRDdXJyZW50UGFnZURhdGE6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBUW10+O1xyXG4gIGdldFBhZ2luZ09wdGlvbnM6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBQYWdpbmdPcHRpb25zPjtcclxuICBnZXRTb3J0aW5nT3B0aW9uczogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFNvcnRpbmdPcHRpb25zPjtcclxuICBnZXRGaWx0ZXJpbmdPcHRpb25zOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgRmlsdGVyaW5nT3B0aW9ucz47XHJcbiAgZ2V0Q3VycmVudFBhZ2VOdW1iZXI6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBudW1iZXI+O1xyXG4gIGdldExhc3RQYWdlTnVtYmVyOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgbnVtYmVyPjtcclxuICBnZXRMb2FkaW5nU3RhdGU6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBSZXF1ZXN0U3RhdGU+O1xyXG4gIGdldFNlbGVjdGVkUmVzb3VyY2VJZHM6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBzdHJpbmdbXT47XHJcbiAgZ2V0U2VsZWN0ZWQ6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBUW10+O1xyXG4gIGdldFNlbGVjdGlvblJlY29yZDogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFJlY29yZDxzdHJpbmcsIFQ+PjtcclxuICBnZXRSZXF1ZXN0U3RhdGU6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBSZXF1ZXN0U3RhdGU+O1xyXG4gIGdldEVycm9yczogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIEU+O1xyXG4gIGFyZVNlbGVjdGVkUmVhZHk6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBib29sZWFuPjtcclxuICBpc1JlYWR5OiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgYm9vbGVhbj47XHJcbiAgaXNEZWxldGVEaXNhYmxlZDogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIGJvb2xlYW4+O1xyXG4gIGlzQ29weURpc2FibGVkOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgYm9vbGVhbj47XHJcbiAgZ2V0VG90YWxDb3VudDogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIG51bWJlcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEFjdGlvbnM8VCwgRSwgUyA9IFQ+IHtcclxuICBpbml0aWFsaXplUmVxdWVzdE9wdGlvbnM6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBjaGFuZ2VQYWdpbmdPcHRpb25zOiBBY3Rpb25DcmVhdG9yPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgKHByb3BzOiB7IHBhZ2luZ09wdGlvbnM6IFBhZ2luZ09wdGlvbnMgfSkgPT4geyBwYWdpbmdPcHRpb25zOiBQYWdpbmdPcHRpb25zIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuICBjaGFuZ2VQYWdlU2l6ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBwYWdlU2l6ZTogbnVtYmVyIH0pID0+IHsgcGFnZVNpemU6IG51bWJlciB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgY2hhbmdlU29ydGluZzogQWN0aW9uQ3JlYXRvcjxcclxuICAgIHN0cmluZyxcclxuICAgIChwcm9wczogeyBzb3J0aW5nRmllbGQ6IFNvcnRpbmdGaWVsZCB9KSA9PiB7IHNvcnRpbmdGaWVsZDogU29ydGluZ0ZpZWxkIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuICBjaGFuZ2VGaWx0ZXJpbmc6IEFjdGlvbkNyZWF0b3I8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAocHJvcHM6IHsgZmlsdGVyaW5nT3B0aW9uczogRmlsdGVyaW5nT3B0aW9ucyB9KSA9PiB7IGZpbHRlcmluZ09wdGlvbnM6IEZpbHRlcmluZ09wdGlvbnMgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cclxuICA+O1xyXG5cclxuICBjaGFuZ2VTZWxlY3RlZDogQWN0aW9uQ3JlYXRvcjxcclxuICAgIHN0cmluZyxcclxuICAgIChwcm9wczogeyBzZWxlY3RlZFJlc291cmNlSWRzOiBzdHJpbmdbXSB9KSA9PiB7IHNlbGVjdGVkUmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuICBsb2FkUGFnZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBwYWdlTnVtYmVyOiBudW1iZXIgfSkgPT4geyBwYWdlTnVtYmVyOiBudW1iZXIgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGxvYWRQYWdlU3VjY2VzczogQWN0aW9uQ3JlYXRvcjxcclxuICAgIHN0cmluZyxcclxuICAgIChwcm9wczoge1xyXG4gICAgICByZXNvdXJjZXM6IFNbXTtcclxuICAgICAgcGFnaW5nT3B0aW9uczogUGFnaW5nT3B0aW9ucztcclxuICAgIH0pID0+IHsgcmVzb3VyY2VzOiBTW107IHBhZ2luZ09wdGlvbnM6IFBhZ2luZ09wdGlvbnMgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cclxuICA+O1xyXG4gIGxvYWRQYWdlRmFpbHVyZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcnM6IEUgfSkgPT4geyBlcnJvcnM6IEUgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGRlbGV0ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyByZXNvdXJjZUlkczogc3RyaW5nW10gfSkgPT4geyByZXNvdXJjZUlkczogc3RyaW5nW10gfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGRlbGV0ZVN1Y2Nlc3M6IEFjdGlvbkNyZWF0b3I8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAocHJvcHM6IHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0pID0+IHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuICBkZWxldGVGYWlsdXJlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGVycm9yczogRSB9KSA9PiB7IGVycm9yczogRSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgcGF0Y2g6IEFjdGlvbkNyZWF0b3I8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAocHJvcHM6IHtcclxuICAgICAgcmVzb3VyY2VJZHM6IHN0cmluZ1tdO1xyXG4gICAgICByZXNvdXJjZTogUGFydGlhbDxUPjtcclxuICAgIH0pID0+IHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdOyByZXNvdXJjZTogUGFydGlhbDxUPiB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxyXG4gID47XHJcbiAgcGF0Y2hTdWNjZXNzOiBBY3Rpb25DcmVhdG9yPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgKHByb3BzOiB7IHJlc291cmNlczogKFQgfCBFcnJvckR0bylbXSB9KSA9PiB7IHJlc291cmNlczogKFQgfCBFcnJvckR0bylbXSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxyXG4gID47XHJcbiAgcGF0Y2hGYWlsdXJlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGVycm9yczogRSB9KSA9PiB7IGVycm9yczogRSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgbG9hZE5leHRQYWdlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgcmVmcmVzaDogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGluaXRpYWxpemU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICByZWluaXRpYWxpemU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBsb2FkUHJldmlvdXNQYWdlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgbG9hZEZpcnN0UGFnZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9saXN0L3NyYy9saWIvbW9kZWxzL2xpc3QubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXMgKi9cclxuaW1wb3J0IHtcclxuICBFcnJvckR0byxcclxuICBGaWx0ZXJpbmdPcHRpb25zLFxyXG4gIFBhZ2luZ09wdGlvbnMsXHJcbiAgUmVxdWVzdE9wdGlvbnMsXHJcbiAgUmVxdWVzdFN0YXRlLFxyXG4gIFNvcnRpbmdGaWVsZCxcclxuICBTb3J0aW5nT3B0aW9uc1xyXG59IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmltcG9ydCB7IEFwaVJlcXVlc3RTdGF0ZSwgTG9hZGluZ1N0YXRlIH0gZnJvbSAnQG5nZHV4L3N0b3JlLWNvbW1vbic7XHJcbmltcG9ydCB7IEVudGl0eVN0YXRlIH0gZnJvbSAnQG5ncngvZW50aXR5JztcclxuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciwgTWVtb2l6ZWRTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgVHlwZWRBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZS9zcmMvbW9kZWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFN0YXRlPFQsIEU+IGV4dGVuZHMgRW50aXR5U3RhdGU8VD4sIFJlcXVlc3RPcHRpb25zLCBBcGlSZXF1ZXN0U3RhdGU8RT4sIExvYWRpbmdTdGF0ZSB7XHJcbiAgc2VsZWN0ZWRSZXNvdXJjZUlkczogc3RyaW5nW107XHJcbiAgbGFzdFBhZ2VOdW1iZXI6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMaXN0U2VsZWN0b3JzPFQsIEU+IHtcclxuICBnZXRBbGw6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBUW10+O1xyXG4gIGdldFJlcXVlc3RPcHRpb25zOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgUmVxdWVzdE9wdGlvbnM+O1xyXG4gIGlzTGFzdFBhZ2U6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBib29sZWFuPjtcclxuICBnZXRDdXJyZW50UGFnZURhdGE6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBUW10+O1xyXG4gIGdldFBhZ2luZ09wdGlvbnM6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBQYWdpbmdPcHRpb25zPjtcclxuICBnZXRTb3J0aW5nT3B0aW9uczogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFNvcnRpbmdPcHRpb25zPjtcclxuICBnZXRGaWx0ZXJpbmdPcHRpb25zOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgRmlsdGVyaW5nT3B0aW9ucz47XHJcbiAgZ2V0Q3VycmVudFBhZ2VOdW1iZXI6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBudW1iZXI+O1xyXG4gIGdldExhc3RQYWdlTnVtYmVyOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgbnVtYmVyPjtcclxuICBnZXRMb2FkaW5nU3RhdGU6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBSZXF1ZXN0U3RhdGU+O1xyXG4gIGdldFNlbGVjdGVkUmVzb3VyY2VJZHM6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBzdHJpbmdbXT47XHJcbiAgZ2V0U2VsZWN0ZWQ6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBUW10+O1xyXG4gIGdldFNlbGVjdGlvblJlY29yZDogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFJlY29yZDxzdHJpbmcsIFQ+PjtcclxuICBnZXRSZXF1ZXN0U3RhdGU6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBSZXF1ZXN0U3RhdGU+O1xyXG4gIGdldEVycm9yczogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIEU+O1xyXG4gIGFyZVNlbGVjdGVkUmVhZHk6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBib29sZWFuPjtcclxuICBpc1JlYWR5OiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgYm9vbGVhbj47XHJcbiAgaXNEZWxldGVEaXNhYmxlZDogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIGJvb2xlYW4+O1xyXG4gIGlzQ29weURpc2FibGVkOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgYm9vbGVhbj47XHJcbiAgZ2V0VG90YWxDb3VudDogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIG51bWJlcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEFjdGlvbnM8VCwgRSwgUyA9IFQ+IHtcclxuICBpbml0aWFsaXplUmVxdWVzdE9wdGlvbnM6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBjaGFuZ2VQYWdpbmdPcHRpb25zOiBBY3Rpb25DcmVhdG9yPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgKHByb3BzOiB7IHBhZ2luZ09wdGlvbnM6IFBhZ2luZ09wdGlvbnMgfSkgPT4geyBwYWdpbmdPcHRpb25zOiBQYWdpbmdPcHRpb25zIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuICBjaGFuZ2VQYWdlU2l6ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBwYWdlU2l6ZTogbnVtYmVyIH0pID0+IHsgcGFnZVNpemU6IG51bWJlciB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgY2hhbmdlU29ydGluZzogQWN0aW9uQ3JlYXRvcjxcclxuICAgIHN0cmluZyxcclxuICAgIChwcm9wczogeyBzb3J0aW5nRmllbGQ6IFNvcnRpbmdGaWVsZCB9KSA9PiB7IHNvcnRpbmdGaWVsZDogU29ydGluZ0ZpZWxkIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuICBjaGFuZ2VGaWx0ZXJpbmc6IEFjdGlvbkNyZWF0b3I8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAocHJvcHM6IHsgZmlsdGVyaW5nT3B0aW9uczogRmlsdGVyaW5nT3B0aW9ucyB9KSA9PiB7IGZpbHRlcmluZ09wdGlvbnM6IEZpbHRlcmluZ09wdGlvbnMgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cclxuICA+O1xyXG5cclxuICBjaGFuZ2VTZWxlY3RlZDogQWN0aW9uQ3JlYXRvcjxcclxuICAgIHN0cmluZyxcclxuICAgIChwcm9wczogeyBzZWxlY3RlZFJlc291cmNlSWRzOiBzdHJpbmdbXSB9KSA9PiB7IHNlbGVjdGVkUmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuICBsb2FkUGFnZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBwYWdlTnVtYmVyOiBudW1iZXIgfSkgPT4geyBwYWdlTnVtYmVyOiBudW1iZXIgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGxvYWRQYWdlU3VjY2VzczogQWN0aW9uQ3JlYXRvcjxcclxuICAgIHN0cmluZyxcclxuICAgIChwcm9wczoge1xyXG4gICAgICByZXNvdXJjZXM6IFNbXTtcclxuICAgICAgcGFnaW5nT3B0aW9uczogUGFnaW5nT3B0aW9ucztcclxuICAgIH0pID0+IHsgcmVzb3VyY2VzOiBTW107IHBhZ2luZ09wdGlvbnM6IFBhZ2luZ09wdGlvbnMgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cclxuICA+O1xyXG4gIGxvYWRQYWdlRmFpbHVyZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcnM6IEUgfSkgPT4geyBlcnJvcnM6IEUgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGRlbGV0ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyByZXNvdXJjZUlkczogc3RyaW5nW10gfSkgPT4geyByZXNvdXJjZUlkczogc3RyaW5nW10gfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGRlbGV0ZVN1Y2Nlc3M6IEFjdGlvbkNyZWF0b3I8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAocHJvcHM6IHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0pID0+IHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XHJcbiAgPjtcclxuICBkZWxldGVGYWlsdXJlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGVycm9yczogRSB9KSA9PiB7IGVycm9yczogRSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgcGF0Y2g6IEFjdGlvbkNyZWF0b3I8XHJcbiAgICBzdHJpbmcsXHJcbiAgICAocHJvcHM6IHtcclxuICAgICAgcmVzb3VyY2VJZHM6IHN0cmluZ1tdO1xyXG4gICAgICByZXNvdXJjZTogUGFydGlhbDxUPjtcclxuICAgIH0pID0+IHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdOyByZXNvdXJjZTogUGFydGlhbDxUPiB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxyXG4gID47XHJcbiAgcGF0Y2hTdWNjZXNzOiBBY3Rpb25DcmVhdG9yPFxyXG4gICAgc3RyaW5nLFxyXG4gICAgKHByb3BzOiB7IHJlc291cmNlczogKFQgfCBFcnJvckR0bylbXSB9KSA9PiB7IHJlc291cmNlczogKFQgfCBFcnJvckR0bylbXSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxyXG4gID47XHJcbiAgcGF0Y2hGYWlsdXJlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGVycm9yczogRSB9KSA9PiB7IGVycm9yczogRSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgbG9hZE5leHRQYWdlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgcmVmcmVzaDogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGluaXRpYWxpemU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICByZWluaXRpYWxpemU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBsb2FkUHJldmlvdXNQYWdlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgbG9hZEZpcnN0UGFnZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIHJlc2V0UmVxdWVzdFN0YXRlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgc2hvd1JlbW92YWxzQ29uZmlybWF0aW9uOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbn1cclxuIl19
|
package/fesm2015/ngdux-list.mjs
CHANGED
|
@@ -8,19 +8,16 @@ import { createLoadingStateActionHandlers, createRequestStateActionHandlers, get
|
|
|
8
8
|
import { createEntityAdapter } from '@ngrx/entity';
|
|
9
9
|
|
|
10
10
|
class AbstractListEffects {
|
|
11
|
-
constructor(
|
|
12
|
-
this.router = router;
|
|
11
|
+
constructor(actions$, store, service, listActions, listSelectors, notificationService) {
|
|
13
12
|
this.actions$ = actions$;
|
|
14
13
|
this.store = store;
|
|
15
|
-
this.snackBar = snackBar;
|
|
16
14
|
this.service = service;
|
|
17
15
|
this.listActions = listActions;
|
|
18
16
|
this.listSelectors = listSelectors;
|
|
19
17
|
this.notificationService = notificationService;
|
|
20
18
|
this.texts = {
|
|
21
19
|
deleteConfirmationTitle: 'Delete resources',
|
|
22
|
-
deleteConfirmationMessage: 'Are you sure to delete the selected resources?'
|
|
23
|
-
deletedMessage: 'The resources were deleted successfully.'
|
|
20
|
+
deleteConfirmationMessage: 'Are you sure to delete the selected resources?'
|
|
24
21
|
};
|
|
25
22
|
this.initialize$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.initialize, this.listActions.reinitialize), switchMap(() => {
|
|
26
23
|
return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];
|
|
@@ -71,14 +68,8 @@ class AbstractListEffects {
|
|
|
71
68
|
});
|
|
72
69
|
}), filter(confirmed => confirmed), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), map(([, resourceIds]) => this.listActions.delete({ resourceIds }))));
|
|
73
70
|
this.delete$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.delete), exhaustMap(({ resourceIds }) => this.service.deleteResources(resourceIds).pipe(switchMap(() => [this.listActions.deleteSuccess({ resourceIds }), this.listActions.refresh()]), catchError((errors) => of(this.listActions.deleteFailure({ errors })))))));
|
|
74
|
-
this.deleteUsersSuccess$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.deleteSuccess), tap(() => {
|
|
75
|
-
this.
|
|
76
|
-
})), { dispatch: false });
|
|
77
|
-
this.copySelected$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.copySelected), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), tap(([, resourceIds]) => {
|
|
78
|
-
this.router.navigate([resourceIds[0]], { state: { selectedResourceId: resourceIds[0] } });
|
|
79
|
-
})), { dispatch: false });
|
|
80
|
-
this.navigateToSelected$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.navigateToSelected), tap(action => {
|
|
81
|
-
this.router.navigate([action.resourceId]);
|
|
71
|
+
this.deleteUsersSuccess$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.deleteSuccess), tap(({ resourceIds }) => {
|
|
72
|
+
this.notificationService.onListDelete(resourceIds);
|
|
82
73
|
})), { dispatch: false });
|
|
83
74
|
this.errorsHandler$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure), tap(({ errors }) => {
|
|
84
75
|
this.notificationService.onListErrors(errors);
|
|
@@ -109,8 +100,6 @@ function createListActions(featureName) {
|
|
|
109
100
|
const patchSuccess = createAction(`[${featureName} Page] Patch ${featureName} Success`, props());
|
|
110
101
|
const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props());
|
|
111
102
|
const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);
|
|
112
|
-
const copySelected = createAction(`[${featureName} Page] Copy Selected ${featureName}`);
|
|
113
|
-
const navigateToSelected = createAction(`[${featureName} Page] Navigate to selected ${featureName}`, props());
|
|
114
103
|
const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);
|
|
115
104
|
return {
|
|
116
105
|
initializeRequestOptions,
|
|
@@ -134,8 +123,6 @@ function createListActions(featureName) {
|
|
|
134
123
|
patchSuccess,
|
|
135
124
|
patchFailure,
|
|
136
125
|
resetRequestState,
|
|
137
|
-
copySelected,
|
|
138
|
-
navigateToSelected,
|
|
139
126
|
changePagingOptions,
|
|
140
127
|
showRemovalsConfirmation
|
|
141
128
|
};
|
|
@@ -200,7 +187,6 @@ function createListActionHandlers(initialListState, entityAdapter, actions) {
|
|
|
200
187
|
return createNextPageSuccessState(entityAdapter, state, pagingOptions, resources);
|
|
201
188
|
}),
|
|
202
189
|
on(actions.deleteSuccess, (state) => (Object.assign(Object.assign({}, state), { selectedResourceIds: [] }))),
|
|
203
|
-
on(actions.navigateToSelected, (state, { resourceId }) => (Object.assign(Object.assign({}, state), { currentResourceId: resourceId }))),
|
|
204
190
|
...createLoadingStateActionHandlers(actions.loadPage, actions.loadPageSuccess, actions.loadPageFailure),
|
|
205
191
|
...createRequestStateActionHandlers(undefined, actions.delete, actions.deleteSuccess, actions.deleteFailure),
|
|
206
192
|
...createRequestStateActionHandlers(actions.resetRequestState, actions.patch, actions.patchSuccess, actions.patchFailure)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngdux-list.mjs","sources":["../../../../../../../libs/ngdux/util/store/list/src/lib/+state/abstract-list-effects.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-actions.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-reducer.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-selectors.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-state.ts","../../../../../../../libs/ngdux/util/store/list/src/ngdux-list.ts"],"sourcesContent":["import { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { Router } from '@angular/router';\r\nimport {\r\n FilteringOptions,\r\n ListNotificationService,\r\n ListService,\r\n PagingOptions,\r\n SortingOptions\r\n} from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { createAction, select, Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, concatMap, exhaustMap, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';\r\n\r\nimport { ListActions, ListSelectors } from '../models/list.model';\r\n\r\nexport abstract class AbstractListEffects<T, E, S = T> {\r\n texts = {\r\n deleteConfirmationTitle: 'Delete resources',\r\n deleteConfirmationMessage: 'Are you sure to delete the selected resources?',\r\n deletedMessage: 'The resources were deleted successfully.'\r\n };\r\n\r\n initialize$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.initialize, this.listActions.reinitialize),\r\n switchMap(() => {\r\n return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];\r\n })\r\n )\r\n );\r\n\r\n loadPreviousPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPreviousPage),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\r\n filter(([, currentPageNumber]) => currentPageNumber > 1),\r\n map(([, currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber - 1 }))\r\n )\r\n );\r\n\r\n loadNextPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadNextPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.isLastPage)),\r\n this.store.pipe(select(this.listSelectors.getCurrentPageNumber))\r\n ),\r\n filter(([, isLastPage]) => !isLastPage),\r\n map(([, , currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber + 1 }))\r\n )\r\n );\r\n\r\n refresh$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.refresh),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\r\n switchMap(([, currentPageNumber]) => [\r\n this.listActions.loadPage({ pageNumber: currentPageNumber }),\r\n this.listActions.loadPage({ pageNumber: currentPageNumber + 1 })\r\n ])\r\n )\r\n );\r\n\r\n changePagingOptions$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.changePagingOptions),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions))),\r\n map(([action, pagingOptions]) => {\r\n if (action.pagingOptions.pageSize !== pagingOptions.pageSize) {\r\n return this.listActions.changePageSize({ pageSize: action.pagingOptions.pageSize });\r\n } else if (action.pagingOptions.page === pagingOptions.page + 1) {\r\n return this.listActions.loadNextPage();\r\n } else if (action.pagingOptions.page === pagingOptions.page - 1) {\r\n return this.listActions.loadPreviousPage();\r\n } else if (action.pagingOptions.page === 1) {\r\n return this.listActions.loadFirstPage();\r\n }\r\n\r\n return createAction('Not implement page options action');\r\n })\r\n )\r\n );\r\n\r\n changeRequestOptions$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(\r\n this.listActions.changePageSize,\r\n this.listActions.changeSorting,\r\n this.listActions.changeFiltering,\r\n this.listActions.loadFirstPage\r\n ),\r\n map(() => this.listActions.initialize())\r\n )\r\n );\r\n\r\n loadPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.getPagingOptions)),\r\n this.store.pipe(select(this.listSelectors.getSortingOptions)),\r\n this.store.pipe(select(this.listSelectors.getFilteringOptions))\r\n ),\r\n concatMap(\r\n ([{ pageNumber }, pagingOptions, sortingOptions, filteringOptions]: [\r\n { pageNumber: number },\r\n PagingOptions,\r\n SortingOptions,\r\n FilteringOptions\r\n ]) => {\r\n pagingOptions = {\r\n page: pageNumber,\r\n pageSize: pagingOptions.pageSize\r\n };\r\n\r\n return this.service\r\n .loadResources({\r\n pagingOptions,\r\n sortingOptions,\r\n filteringOptions\r\n })\r\n .pipe(\r\n map(resources =>\r\n this.listActions.loadPageSuccess({\r\n resources,\r\n pagingOptions\r\n })\r\n ),\r\n catchError((errors: E) => of(this.listActions.loadPageFailure({ errors })))\r\n );\r\n }\r\n )\r\n )\r\n );\r\n\r\n patch$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.patch),\r\n exhaustMap(action =>\r\n this.service.patchResources(action.resourceIds, action.resource).pipe(\r\n switchMap(resources => [this.listActions.patchSuccess({ resources }), this.listActions.refresh()]),\r\n catchError((errors: E) => of(this.listActions.patchFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n showRemovalsDialog$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.showRemovalsConfirmation),\r\n switchMap(() => {\r\n return this.notificationService.openConfirmationDialog({\r\n message: this.texts.deleteConfirmationMessage,\r\n title: this.texts.deleteConfirmationTitle\r\n });\r\n }),\r\n filter(confirmed => confirmed),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))),\r\n map(([, resourceIds]) => this.listActions.delete({ resourceIds }))\r\n )\r\n );\r\n\r\n delete$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.delete),\r\n exhaustMap(({ resourceIds }) =>\r\n this.service.deleteResources(resourceIds).pipe(\r\n switchMap(() => [this.listActions.deleteSuccess({ resourceIds }), this.listActions.refresh()]),\r\n catchError((errors: E) => of(this.listActions.deleteFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n deleteUsersSuccess$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.deleteSuccess),\r\n tap(() => {\r\n this.snackBar.open(this.texts.deletedMessage, 'Ok');\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n copySelected$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.copySelected),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))),\r\n tap(([, resourceIds]) => {\r\n this.router.navigate([resourceIds[0]], { state: { selectedResourceId: resourceIds[0] } });\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n navigateToSelected$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.navigateToSelected),\r\n tap(action => {\r\n this.router.navigate([action.resourceId]);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n errorsHandler$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure),\r\n tap(({ errors }) => {\r\n this.notificationService.onListErrors(errors);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n protected constructor(\r\n protected readonly router: Router,\r\n protected readonly actions$: Actions,\r\n protected readonly store: Store,\r\n protected readonly snackBar: MatSnackBar,\r\n private readonly service: ListService<T, S>,\r\n private readonly listActions: ListActions<T, E, S>,\r\n private readonly listSelectors: ListSelectors<S, E>,\r\n private readonly notificationService: ListNotificationService<E>\r\n ) {}\r\n}\r\n","import { ErrorDto, FilteringOptions, PagingOptions, SortingField } from '@ngdux/data-model-common';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { ListActions } from '../models/list.model';\r\n\r\nexport function createListActions<T, E, S = T>(featureName: string): ListActions<T, E, S> {\r\n const initializeRequestOptions = createAction(`[${featureName} Page] Initialize ${featureName} Request Options`);\r\n const refresh = createAction(`[${featureName} Page] Refresh ${featureName}`);\r\n const initialize = createAction(`[${featureName} Page] Initialize ${featureName}`);\r\n const reinitialize = createAction(`[Organization ${featureName} Page] Reinitialize ${featureName}`);\r\n\r\n const loadNextPage = createAction(`[${featureName} Page] Load Next ${featureName} Page`);\r\n const loadPreviousPage = createAction(`[${featureName} Page] Load Previous ${featureName} Page`);\r\n const loadFirstPage = createAction(`[${featureName} Page] Load First ${featureName} Page`);\r\n\r\n const changePageSize = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Size`,\r\n props<{ pageSize: number }>()\r\n );\r\n\r\n const changePagingOptions = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Options`,\r\n props<{ pagingOptions: PagingOptions }>()\r\n );\r\n const changeSorting = createAction(\r\n `[${featureName} Page] Change ${featureName} Sorting`,\r\n props<{ sortingField: SortingField }>()\r\n );\r\n const changeFiltering = createAction(\r\n `[${featureName} Page] Change ${featureName} Filtering`,\r\n props<{ filteringOptions: FilteringOptions }>()\r\n );\r\n const changeSelected = createAction(\r\n `[${featureName} Page] Change Selected ${featureName}`,\r\n props<{ selectedResourceIds: string[] }>()\r\n );\r\n\r\n const loadPage = createAction(`[${featureName} Page] Load ${featureName} Page`, props<{ pageNumber: number }>());\r\n const loadPageSuccess = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Success`,\r\n props<{ resources: S[]; pagingOptions: PagingOptions }>()\r\n );\r\n const loadPageFailure = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Failure`,\r\n props<{ errors: E }>()\r\n );\r\n\r\n const deleteAction = createAction(`[${featureName} Page] Delete ${featureName}`, props<{ resourceIds: string[] }>());\r\n const deleteSuccess = createAction(\r\n `[${featureName} Page] Delete ${featureName} Success`,\r\n props<{ resourceIds: string[] }>()\r\n );\r\n const deleteFailure = createAction(`[${featureName} Page] Delete ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const patch = createAction(\r\n `[${featureName} Page] Patch ${featureName}`,\r\n props<{ resourceIds: string[]; resource: Partial<T> }>()\r\n );\r\n const patchSuccess = createAction(\r\n `[${featureName} Page] Patch ${featureName} Success`,\r\n props<{ resources: (T | ErrorDto)[] }>()\r\n );\r\n const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props<{ errors: E }>());\r\n const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);\r\n const copySelected = createAction(`[${featureName} Page] Copy Selected ${featureName}`);\r\n const navigateToSelected = createAction(\r\n `[${featureName} Page] Navigate to selected ${featureName}`,\r\n props<{ resourceId: string }>()\r\n );\r\n\r\n const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);\r\n\r\n return {\r\n initializeRequestOptions,\r\n changePageSize,\r\n changeSorting,\r\n changeFiltering,\r\n loadNextPage,\r\n loadPage,\r\n refresh,\r\n initialize,\r\n reinitialize,\r\n loadPreviousPage,\r\n loadFirstPage,\r\n changeSelected,\r\n loadPageSuccess,\r\n loadPageFailure,\r\n delete: deleteAction,\r\n deleteSuccess,\r\n deleteFailure,\r\n patch,\r\n patchSuccess,\r\n patchFailure,\r\n resetRequestState,\r\n copySelected,\r\n navigateToSelected,\r\n changePagingOptions,\r\n showRemovalsConfirmation\r\n };\r\n}\r\n","import {\r\n DEFAULT_REQUEST_OPTIONS,\r\n DEFAULT_STORED_PAGES,\r\n PagingOptions,\r\n RequestState,\r\n SortingDirection\r\n} from '@ngdux/data-model-common';\r\nimport {\r\n createLoadingStateActionHandlers,\r\n createRequestStateActionHandlers,\r\n getLastPageNumber\r\n} from '@ngdux/store-common';\r\nimport { createEntityAdapter, EntityAdapter } from '@ngrx/entity';\r\nimport { ActionReducer, createReducer, on, ReducerTypes } from '@ngrx/store';\r\nimport { ActionCreator } from '@ngrx/store/src/models';\r\n\r\nimport { ListActions, ListState } from '../models/list.model';\r\n\r\nexport function createListEntityAdapter<T extends { [key: string]: any }>(idKey = 'id'): EntityAdapter<T> {\r\n return createEntityAdapter({\r\n selectId: resource => resource[idKey]\r\n });\r\n}\r\n\r\nexport function createListReducer<T, E, S = T>(\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>,\r\n actionHandlers?: ReducerTypes<ListState<S, E>, ActionCreator[]>[],\r\n initialListState?: { [key: string]: unknown }\r\n): ActionReducer<ListState<S, E>> {\r\n const initialState: ListState<S, E> = { ...createInitialListState<S, E>(entityAdapter), ...initialListState };\r\n return createReducer<ListState<S, E>>(\r\n initialState,\r\n ...createListActionHandlers<T, E, S>(initialState, entityAdapter, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialListState<T, E>(entityAdapter: EntityAdapter<T>): ListState<T, E> {\r\n return entityAdapter.getInitialState({\r\n ...DEFAULT_REQUEST_OPTIONS,\r\n lastPageNumber: undefined,\r\n selectedResourceIds: [],\r\n loadingState: RequestState.IDLE,\r\n requestState: RequestState.IDLE,\r\n errors: undefined\r\n });\r\n}\r\n\r\nfunction createListActionHandlers<T, E, S>(\r\n initialListState: ListState<S, E>,\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>\r\n): ReducerTypes<ListState<S, E>, ActionCreator[]>[] {\r\n return [\r\n on(actions.reinitialize, () => initialListState),\r\n on(actions.initialize, (state: ListState<S, E>) =>\r\n entityAdapter.removeAll({\r\n ...state,\r\n selectedResourceIds: [],\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: 1\r\n }\r\n })\r\n ),\r\n on(actions.refresh, (state: ListState<S, E>) => {\r\n const currentPageStartIndex = (state.pagingOptions.page - 1) * state.pagingOptions.pageSize;\r\n const resourceIds = state.ids.slice(currentPageStartIndex) as string[];\r\n\r\n return entityAdapter.removeMany(resourceIds, state);\r\n }),\r\n\r\n on(actions.changePageSize, (state: ListState<S, E>, { pageSize }) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, pageSize },\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changeSorting, (state: ListState<S, E>, { sortingField }) => {\r\n const sortingOptions = { ...state.sortingOptions };\r\n if (sortingField.direction === SortingDirection.NONE) {\r\n delete sortingOptions[sortingField.field];\r\n } else {\r\n sortingOptions[sortingField.field] = sortingField;\r\n }\r\n return {\r\n ...state,\r\n sortingOptions\r\n };\r\n }),\r\n on(actions.changeFiltering, (state: ListState<S, E>, { filteringOptions }) => ({\r\n ...state,\r\n filteringOptions,\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changeSelected, (state: ListState<S, E>, { selectedResourceIds }) => ({\r\n ...state,\r\n selectedResourceIds\r\n })),\r\n on(actions.loadFirstPage, (state: ListState<S, E>) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, page: 1 }\r\n })),\r\n on(actions.loadNextPage, (state: ListState<S, E>) => {\r\n if (state.pagingOptions.page === state.lastPageNumber) {\r\n return { ...state };\r\n }\r\n\r\n if (\r\n state.pagingOptions.page + 1 === state.lastPageNumber &&\r\n state.pagingOptions.page + 1 > (DEFAULT_STORED_PAGES + 1) / 2\r\n ) {\r\n const resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\r\n state = entityAdapter.removeMany(resourceIds, { ...state });\r\n }\r\n\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: state.pagingOptions.page + 1\r\n }\r\n };\r\n }),\r\n on(actions.loadPreviousPage, (state: ListState<S, E>) => {\r\n if (state.pagingOptions.page === 1) {\r\n return { ...state };\r\n }\r\n\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: state.pagingOptions.page - 1\r\n }\r\n };\r\n }),\r\n on(actions.loadPageSuccess, (state: ListState<S, E>, { resources, pagingOptions }) => {\r\n if (pagingOptions.page < state.pagingOptions.page) {\r\n return createPreviousPageSuccessState(entityAdapter, state, resources);\r\n }\r\n\r\n return createNextPageSuccessState(entityAdapter, state, pagingOptions, resources);\r\n }),\r\n on(actions.deleteSuccess, (state: ListState<S, E>) => ({\r\n ...state,\r\n selectedResourceIds: [] as string[]\r\n })),\r\n on(actions.navigateToSelected, (state: ListState<S, E>, { resourceId }) => ({\r\n ...state,\r\n currentResourceId: resourceId\r\n })),\r\n\r\n ...createLoadingStateActionHandlers<ListState<S, E>>(\r\n actions.loadPage,\r\n actions.loadPageSuccess,\r\n actions.loadPageFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\r\n actions.resetRequestState,\r\n actions.patch,\r\n actions.patchSuccess,\r\n actions.patchFailure\r\n )\r\n ];\r\n}\r\n\r\nfunction createPreviousPageSuccessState<T, E>(\r\n entityAdapter: EntityAdapter<T>,\r\n state: ListState<T, E>,\r\n resources: T[]\r\n): ListState<T, E> {\r\n const resourceIds: string[] = state.ids.slice(\r\n 0,\r\n (DEFAULT_STORED_PAGES - 1) * state.pagingOptions.pageSize\r\n ) as string[];\r\n\r\n return entityAdapter.setAll([...resources, ...resourceIds.map(resourceId => state.entities[resourceId])], {\r\n ...state,\r\n selectedResourceIds: []\r\n });\r\n}\r\n\r\nfunction createNextPageSuccessState<T, E>(\r\n entityAdapter: EntityAdapter<T>,\r\n state: ListState<T, E>,\r\n pagingOptions: PagingOptions,\r\n resources: T[]\r\n): ListState<T, E> {\r\n let resourceIds: string[] = [];\r\n const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;\r\n\r\n if (pagingOptions.page > DEFAULT_STORED_PAGES && lastPageNumber !== state.pagingOptions.page) {\r\n resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\r\n state = entityAdapter.removeMany(resourceIds, { ...state });\r\n }\r\n\r\n return entityAdapter.addMany(resources, {\r\n ...state,\r\n lastPageNumber,\r\n selectedResourceIds: []\r\n });\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\nimport { DEFAULT_STORED_PAGES, RequestOptions, RequestState } from '@ngdux/data-model-common';\nimport { EntityAdapter } from '@ngrx/entity';\nimport { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\nimport { ListSelectors, ListState } from '../models/list.model';\n\nexport function createListSelectors<T, E>(\n entityAdapter: EntityAdapter<T>,\n getListState: MemoizedSelector<object, ListState<T, E>, DefaultProjectorFn<ListState<T, E>>>\n): ListSelectors<T, E> {\n const getAll = createSelector(getListState, entityAdapter.getSelectors().selectAll);\n\n const getPagingOptions = createSelector(getListState, state => state.pagingOptions);\n\n const getRequestOptions = createSelector(\n getListState,\n (state): RequestOptions => ({\n pagingOptions: state.pagingOptions,\n sortingOptions: state.sortingOptions,\n filteringOptions: state.filteringOptions\n })\n );\n\n const getLastPageNumber = createSelector(getListState, state => state.lastPageNumber);\n\n const isLastPage = createSelector(getPagingOptions, getLastPageNumber, ({ page }, lastPageNumber) => {\n return lastPageNumber <= page;\n });\n\n const getCurrentPageData = createSelector(getPagingOptions, getAll, ({ page, pageSize }, resources) => {\n const defaultStoredPageIndex = (DEFAULT_STORED_PAGES + 1) / 2;\n\n if (page < defaultStoredPageIndex) {\n return resources.slice((page - 1) * pageSize, page * pageSize);\n }\n\n return resources.slice((defaultStoredPageIndex - 1) * pageSize, defaultStoredPageIndex * pageSize);\n });\n\n const getSortingOptions = createSelector(getListState, state => state.sortingOptions);\n\n const getFilteringOptions = createSelector(getListState, state => state.filteringOptions);\n\n const getCurrentPageNumber = createSelector(getPagingOptions, options => options.page);\n\n const getSelectedResourceIds = createSelector(getListState, state => state.selectedResourceIds);\n\n const getLoadingState = createSelector(getListState, state => state.loadingState);\n\n const getSelected = createSelector(\n getSelectedResourceIds,\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\n (selectedResourceIds, resources): T[] =>\n selectedResourceIds.map(selectedResourceId => resources[selectedResourceId])\n );\n\n const getSelectionRecord = createSelector(\n getSelectedResourceIds,\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\n (selectedResourceIds, resources): Record<string, T> =>\n selectedResourceIds.reduce((selected, selectedResourceId) => {\n selected[selectedResourceId] = resources[selectedResourceId];\n return selected;\n }, {} as Record<string, T>)\n );\n\n const getRequestState = createSelector(getListState, state => state.requestState);\n\n const getErrors = createSelector(getListState, state => state.errors);\n\n const isReady = createSelector(\n getAll,\n getLoadingState,\n (users, loadingState) => !!users && loadingState === RequestState.SUCCESS\n );\n\n const areSelectedReady = createSelector(\n getSelectedResourceIds,\n getSelectionRecord,\n getLoadingState,\n (selectedResourceIds, resources, loadingState) => {\n return selectedResourceIds.every(resourceId => !!resources[resourceId]) && loadingState === RequestState.SUCCESS;\n }\n );\n\n const isDeleteDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => !selectedResourceIds.length);\n\n const isCopyDisabled = createSelector(\n getSelectedResourceIds,\n selectedResourceIds => selectedResourceIds.length !== 1\n );\n\n const getTotalCount = createSelector(\n getPagingOptions,\n isLastPage,\n getCurrentPageData,\n (pagingOptions, isLastPage, currentPageData) => {\n if (isLastPage) {\n return (pagingOptions.page - 1) * pagingOptions.pageSize + currentPageData.length;\n }\n return (pagingOptions.page + 1) * pagingOptions.pageSize;\n }\n );\n\n return {\n getAll,\n getRequestOptions,\n isLastPage,\n getCurrentPageData,\n getPagingOptions,\n getSortingOptions,\n getFilteringOptions,\n getCurrentPageNumber,\n getLastPageNumber,\n getLoadingState,\n getSelectedResourceIds,\n getSelected,\n getSelectionRecord,\n getRequestState,\n getErrors,\n areSelectedReady,\n isReady,\n isDeleteDisabled,\n isCopyDisabled,\n getTotalCount\n };\n}\n","import { Action, createFeatureSelector } from '@ngrx/store';\nimport { ListState } from '../models/list.model';\nimport { createListActions } from './list-actions';\nimport { createListEntityAdapter, createListReducer } from './list-reducer';\nimport { createListSelectors } from './list-selectors';\n\nexport function createListState<T, E, S = T>(featureName: string) {\n const actions = createListActions<T, E, S>(featureName);\n const entityAdapter = createListEntityAdapter<S>();\n const reducer = createListReducer<T, E, S>(entityAdapter, actions);\n const getState = createFeatureSelector<ListState<S, E>>(featureName);\n const selectors = createListSelectors<S, E>(entityAdapter, getState);\n\n return {\n actions,\n reducer: (state: ListState<S, E>, action: Action): ListState<S, E> => reducer(state, action),\n selectors,\n entityAdapter\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngdux-list.mjs","sources":["../../../../../../../libs/ngdux/util/store/list/src/lib/+state/abstract-list-effects.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-actions.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-reducer.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-selectors.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-state.ts","../../../../../../../libs/ngdux/util/store/list/src/ngdux-list.ts"],"sourcesContent":["import {\r\n FilteringOptions,\r\n ListNotificationService,\r\n ListService,\r\n PagingOptions,\r\n SortingOptions\r\n} from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { createAction, select, Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, concatMap, exhaustMap, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';\r\n\r\nimport { ListActions, ListSelectors } from '../models/list.model';\r\n\r\nexport abstract class AbstractListEffects<T, E, S = T> {\r\n texts = {\r\n deleteConfirmationTitle: 'Delete resources',\r\n deleteConfirmationMessage: 'Are you sure to delete the selected resources?'\r\n };\r\n\r\n initialize$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.initialize, this.listActions.reinitialize),\r\n switchMap(() => {\r\n return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];\r\n })\r\n )\r\n );\r\n\r\n loadPreviousPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPreviousPage),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\r\n filter(([, currentPageNumber]) => currentPageNumber > 1),\r\n map(([, currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber - 1 }))\r\n )\r\n );\r\n\r\n loadNextPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadNextPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.isLastPage)),\r\n this.store.pipe(select(this.listSelectors.getCurrentPageNumber))\r\n ),\r\n filter(([, isLastPage]) => !isLastPage),\r\n map(([, , currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber + 1 }))\r\n )\r\n );\r\n\r\n refresh$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.refresh),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\r\n switchMap(([, currentPageNumber]) => [\r\n this.listActions.loadPage({ pageNumber: currentPageNumber }),\r\n this.listActions.loadPage({ pageNumber: currentPageNumber + 1 })\r\n ])\r\n )\r\n );\r\n\r\n changePagingOptions$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.changePagingOptions),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions))),\r\n map(([action, pagingOptions]) => {\r\n if (action.pagingOptions.pageSize !== pagingOptions.pageSize) {\r\n return this.listActions.changePageSize({ pageSize: action.pagingOptions.pageSize });\r\n } else if (action.pagingOptions.page === pagingOptions.page + 1) {\r\n return this.listActions.loadNextPage();\r\n } else if (action.pagingOptions.page === pagingOptions.page - 1) {\r\n return this.listActions.loadPreviousPage();\r\n } else if (action.pagingOptions.page === 1) {\r\n return this.listActions.loadFirstPage();\r\n }\r\n\r\n return createAction('Not implement page options action');\r\n })\r\n )\r\n );\r\n\r\n changeRequestOptions$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(\r\n this.listActions.changePageSize,\r\n this.listActions.changeSorting,\r\n this.listActions.changeFiltering,\r\n this.listActions.loadFirstPage\r\n ),\r\n map(() => this.listActions.initialize())\r\n )\r\n );\r\n\r\n loadPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.getPagingOptions)),\r\n this.store.pipe(select(this.listSelectors.getSortingOptions)),\r\n this.store.pipe(select(this.listSelectors.getFilteringOptions))\r\n ),\r\n concatMap(\r\n ([{ pageNumber }, pagingOptions, sortingOptions, filteringOptions]: [\r\n { pageNumber: number },\r\n PagingOptions,\r\n SortingOptions,\r\n FilteringOptions\r\n ]) => {\r\n pagingOptions = {\r\n page: pageNumber,\r\n pageSize: pagingOptions.pageSize\r\n };\r\n\r\n return this.service\r\n .loadResources({\r\n pagingOptions,\r\n sortingOptions,\r\n filteringOptions\r\n })\r\n .pipe(\r\n map(resources =>\r\n this.listActions.loadPageSuccess({\r\n resources,\r\n pagingOptions\r\n })\r\n ),\r\n catchError((errors: E) => of(this.listActions.loadPageFailure({ errors })))\r\n );\r\n }\r\n )\r\n )\r\n );\r\n\r\n patch$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.patch),\r\n exhaustMap(action =>\r\n this.service.patchResources(action.resourceIds, action.resource).pipe(\r\n switchMap(resources => [this.listActions.patchSuccess({ resources }), this.listActions.refresh()]),\r\n catchError((errors: E) => of(this.listActions.patchFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n showRemovalsDialog$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.showRemovalsConfirmation),\r\n switchMap(() => {\r\n return this.notificationService.openConfirmationDialog({\r\n message: this.texts.deleteConfirmationMessage,\r\n title: this.texts.deleteConfirmationTitle\r\n });\r\n }),\r\n filter(confirmed => confirmed),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))),\r\n map(([, resourceIds]) => this.listActions.delete({ resourceIds }))\r\n )\r\n );\r\n\r\n delete$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.delete),\r\n exhaustMap(({ resourceIds }) =>\r\n this.service.deleteResources(resourceIds).pipe(\r\n switchMap(() => [this.listActions.deleteSuccess({ resourceIds }), this.listActions.refresh()]),\r\n catchError((errors: E) => of(this.listActions.deleteFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n deleteUsersSuccess$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.deleteSuccess),\r\n tap(({ resourceIds }) => {\r\n this.notificationService.onListDelete(resourceIds);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n errorsHandler$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure),\r\n tap(({ errors }) => {\r\n this.notificationService.onListErrors(errors);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n protected constructor(\r\n protected readonly actions$: Actions,\r\n protected readonly store: Store,\r\n private readonly service: ListService<T, S>,\r\n private readonly listActions: ListActions<T, E, S>,\r\n private readonly listSelectors: ListSelectors<S, E>,\r\n private readonly notificationService: ListNotificationService<E>\r\n ) {}\r\n}\r\n","import { ErrorDto, FilteringOptions, PagingOptions, SortingField } from '@ngdux/data-model-common';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { ListActions } from '../models/list.model';\r\n\r\nexport function createListActions<T, E, S = T>(featureName: string): ListActions<T, E, S> {\r\n const initializeRequestOptions = createAction(`[${featureName} Page] Initialize ${featureName} Request Options`);\r\n const refresh = createAction(`[${featureName} Page] Refresh ${featureName}`);\r\n const initialize = createAction(`[${featureName} Page] Initialize ${featureName}`);\r\n const reinitialize = createAction(`[Organization ${featureName} Page] Reinitialize ${featureName}`);\r\n\r\n const loadNextPage = createAction(`[${featureName} Page] Load Next ${featureName} Page`);\r\n const loadPreviousPage = createAction(`[${featureName} Page] Load Previous ${featureName} Page`);\r\n const loadFirstPage = createAction(`[${featureName} Page] Load First ${featureName} Page`);\r\n\r\n const changePageSize = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Size`,\r\n props<{ pageSize: number }>()\r\n );\r\n\r\n const changePagingOptions = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Options`,\r\n props<{ pagingOptions: PagingOptions }>()\r\n );\r\n const changeSorting = createAction(\r\n `[${featureName} Page] Change ${featureName} Sorting`,\r\n props<{ sortingField: SortingField }>()\r\n );\r\n const changeFiltering = createAction(\r\n `[${featureName} Page] Change ${featureName} Filtering`,\r\n props<{ filteringOptions: FilteringOptions }>()\r\n );\r\n const changeSelected = createAction(\r\n `[${featureName} Page] Change Selected ${featureName}`,\r\n props<{ selectedResourceIds: string[] }>()\r\n );\r\n\r\n const loadPage = createAction(`[${featureName} Page] Load ${featureName} Page`, props<{ pageNumber: number }>());\r\n const loadPageSuccess = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Success`,\r\n props<{ resources: S[]; pagingOptions: PagingOptions }>()\r\n );\r\n const loadPageFailure = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Failure`,\r\n props<{ errors: E }>()\r\n );\r\n\r\n const deleteAction = createAction(`[${featureName} Page] Delete ${featureName}`, props<{ resourceIds: string[] }>());\r\n const deleteSuccess = createAction(\r\n `[${featureName} Page] Delete ${featureName} Success`,\r\n props<{ resourceIds: string[] }>()\r\n );\r\n const deleteFailure = createAction(`[${featureName} Page] Delete ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const patch = createAction(\r\n `[${featureName} Page] Patch ${featureName}`,\r\n props<{ resourceIds: string[]; resource: Partial<T> }>()\r\n );\r\n const patchSuccess = createAction(\r\n `[${featureName} Page] Patch ${featureName} Success`,\r\n props<{ resources: (T | ErrorDto)[] }>()\r\n );\r\n const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props<{ errors: E }>());\r\n const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);\r\n\r\n const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);\r\n\r\n return {\r\n initializeRequestOptions,\r\n changePageSize,\r\n changeSorting,\r\n changeFiltering,\r\n loadNextPage,\r\n loadPage,\r\n refresh,\r\n initialize,\r\n reinitialize,\r\n loadPreviousPage,\r\n loadFirstPage,\r\n changeSelected,\r\n loadPageSuccess,\r\n loadPageFailure,\r\n delete: deleteAction,\r\n deleteSuccess,\r\n deleteFailure,\r\n patch,\r\n patchSuccess,\r\n patchFailure,\r\n resetRequestState,\r\n changePagingOptions,\r\n showRemovalsConfirmation\r\n };\r\n}\r\n","import {\r\n DEFAULT_REQUEST_OPTIONS,\r\n DEFAULT_STORED_PAGES,\r\n PagingOptions,\r\n RequestState,\r\n SortingDirection\r\n} from '@ngdux/data-model-common';\r\nimport {\r\n createLoadingStateActionHandlers,\r\n createRequestStateActionHandlers,\r\n getLastPageNumber\r\n} from '@ngdux/store-common';\r\nimport { createEntityAdapter, EntityAdapter } from '@ngrx/entity';\r\nimport { ActionReducer, createReducer, on, ReducerTypes } from '@ngrx/store';\r\nimport { ActionCreator } from '@ngrx/store/src/models';\r\n\r\nimport { ListActions, ListState } from '../models/list.model';\r\n\r\nexport function createListEntityAdapter<T extends { [key: string]: any }>(idKey = 'id'): EntityAdapter<T> {\r\n return createEntityAdapter({\r\n selectId: resource => resource[idKey]\r\n });\r\n}\r\n\r\nexport function createListReducer<T, E, S = T>(\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>,\r\n actionHandlers?: ReducerTypes<ListState<S, E>, ActionCreator[]>[],\r\n initialListState?: { [key: string]: unknown }\r\n): ActionReducer<ListState<S, E>> {\r\n const initialState: ListState<S, E> = { ...createInitialListState<S, E>(entityAdapter), ...initialListState };\r\n return createReducer<ListState<S, E>>(\r\n initialState,\r\n ...createListActionHandlers<T, E, S>(initialState, entityAdapter, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialListState<T, E>(entityAdapter: EntityAdapter<T>): ListState<T, E> {\r\n return entityAdapter.getInitialState({\r\n ...DEFAULT_REQUEST_OPTIONS,\r\n lastPageNumber: undefined,\r\n selectedResourceIds: [],\r\n loadingState: RequestState.IDLE,\r\n requestState: RequestState.IDLE,\r\n errors: undefined\r\n });\r\n}\r\n\r\nfunction createListActionHandlers<T, E, S>(\r\n initialListState: ListState<S, E>,\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>\r\n): ReducerTypes<ListState<S, E>, ActionCreator[]>[] {\r\n return [\r\n on(actions.reinitialize, () => initialListState),\r\n on(actions.initialize, (state: ListState<S, E>) =>\r\n entityAdapter.removeAll({\r\n ...state,\r\n selectedResourceIds: [],\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: 1\r\n }\r\n })\r\n ),\r\n on(actions.refresh, (state: ListState<S, E>) => {\r\n const currentPageStartIndex = (state.pagingOptions.page - 1) * state.pagingOptions.pageSize;\r\n const resourceIds = state.ids.slice(currentPageStartIndex) as string[];\r\n\r\n return entityAdapter.removeMany(resourceIds, state);\r\n }),\r\n\r\n on(actions.changePageSize, (state: ListState<S, E>, { pageSize }) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, pageSize },\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changeSorting, (state: ListState<S, E>, { sortingField }) => {\r\n const sortingOptions = { ...state.sortingOptions };\r\n if (sortingField.direction === SortingDirection.NONE) {\r\n delete sortingOptions[sortingField.field];\r\n } else {\r\n sortingOptions[sortingField.field] = sortingField;\r\n }\r\n return {\r\n ...state,\r\n sortingOptions\r\n };\r\n }),\r\n on(actions.changeFiltering, (state: ListState<S, E>, { filteringOptions }) => ({\r\n ...state,\r\n filteringOptions,\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changeSelected, (state: ListState<S, E>, { selectedResourceIds }) => ({\r\n ...state,\r\n selectedResourceIds\r\n })),\r\n on(actions.loadFirstPage, (state: ListState<S, E>) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, page: 1 }\r\n })),\r\n on(actions.loadNextPage, (state: ListState<S, E>) => {\r\n if (state.pagingOptions.page === state.lastPageNumber) {\r\n return { ...state };\r\n }\r\n\r\n if (\r\n state.pagingOptions.page + 1 === state.lastPageNumber &&\r\n state.pagingOptions.page + 1 > (DEFAULT_STORED_PAGES + 1) / 2\r\n ) {\r\n const resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\r\n state = entityAdapter.removeMany(resourceIds, { ...state });\r\n }\r\n\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: state.pagingOptions.page + 1\r\n }\r\n };\r\n }),\r\n on(actions.loadPreviousPage, (state: ListState<S, E>) => {\r\n if (state.pagingOptions.page === 1) {\r\n return { ...state };\r\n }\r\n\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: state.pagingOptions.page - 1\r\n }\r\n };\r\n }),\r\n on(actions.loadPageSuccess, (state: ListState<S, E>, { resources, pagingOptions }) => {\r\n if (pagingOptions.page < state.pagingOptions.page) {\r\n return createPreviousPageSuccessState(entityAdapter, state, resources);\r\n }\r\n\r\n return createNextPageSuccessState(entityAdapter, state, pagingOptions, resources);\r\n }),\r\n on(actions.deleteSuccess, (state: ListState<S, E>) => ({\r\n ...state,\r\n selectedResourceIds: [] as string[]\r\n })),\r\n ...createLoadingStateActionHandlers<ListState<S, E>>(\r\n actions.loadPage,\r\n actions.loadPageSuccess,\r\n actions.loadPageFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\r\n actions.resetRequestState,\r\n actions.patch,\r\n actions.patchSuccess,\r\n actions.patchFailure\r\n )\r\n ];\r\n}\r\n\r\nfunction createPreviousPageSuccessState<T, E>(\r\n entityAdapter: EntityAdapter<T>,\r\n state: ListState<T, E>,\r\n resources: T[]\r\n): ListState<T, E> {\r\n const resourceIds: string[] = state.ids.slice(\r\n 0,\r\n (DEFAULT_STORED_PAGES - 1) * state.pagingOptions.pageSize\r\n ) as string[];\r\n\r\n return entityAdapter.setAll([...resources, ...resourceIds.map(resourceId => state.entities[resourceId])], {\r\n ...state,\r\n selectedResourceIds: []\r\n });\r\n}\r\n\r\nfunction createNextPageSuccessState<T, E>(\r\n entityAdapter: EntityAdapter<T>,\r\n state: ListState<T, E>,\r\n pagingOptions: PagingOptions,\r\n resources: T[]\r\n): ListState<T, E> {\r\n let resourceIds: string[] = [];\r\n const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;\r\n\r\n if (pagingOptions.page > DEFAULT_STORED_PAGES && lastPageNumber !== state.pagingOptions.page) {\r\n resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\r\n state = entityAdapter.removeMany(resourceIds, { ...state });\r\n }\r\n\r\n return entityAdapter.addMany(resources, {\r\n ...state,\r\n lastPageNumber,\r\n selectedResourceIds: []\r\n });\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\nimport { DEFAULT_STORED_PAGES, RequestOptions, RequestState } from '@ngdux/data-model-common';\nimport { EntityAdapter } from '@ngrx/entity';\nimport { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\nimport { ListSelectors, ListState } from '../models/list.model';\n\nexport function createListSelectors<T, E>(\n entityAdapter: EntityAdapter<T>,\n getListState: MemoizedSelector<object, ListState<T, E>, DefaultProjectorFn<ListState<T, E>>>\n): ListSelectors<T, E> {\n const getAll = createSelector(getListState, entityAdapter.getSelectors().selectAll);\n\n const getPagingOptions = createSelector(getListState, state => state.pagingOptions);\n\n const getRequestOptions = createSelector(\n getListState,\n (state): RequestOptions => ({\n pagingOptions: state.pagingOptions,\n sortingOptions: state.sortingOptions,\n filteringOptions: state.filteringOptions\n })\n );\n\n const getLastPageNumber = createSelector(getListState, state => state.lastPageNumber);\n\n const isLastPage = createSelector(getPagingOptions, getLastPageNumber, ({ page }, lastPageNumber) => {\n return lastPageNumber <= page;\n });\n\n const getCurrentPageData = createSelector(getPagingOptions, getAll, ({ page, pageSize }, resources) => {\n const defaultStoredPageIndex = (DEFAULT_STORED_PAGES + 1) / 2;\n\n if (page < defaultStoredPageIndex) {\n return resources.slice((page - 1) * pageSize, page * pageSize);\n }\n\n return resources.slice((defaultStoredPageIndex - 1) * pageSize, defaultStoredPageIndex * pageSize);\n });\n\n const getSortingOptions = createSelector(getListState, state => state.sortingOptions);\n\n const getFilteringOptions = createSelector(getListState, state => state.filteringOptions);\n\n const getCurrentPageNumber = createSelector(getPagingOptions, options => options.page);\n\n const getSelectedResourceIds = createSelector(getListState, state => state.selectedResourceIds);\n\n const getLoadingState = createSelector(getListState, state => state.loadingState);\n\n const getSelected = createSelector(\n getSelectedResourceIds,\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\n (selectedResourceIds, resources): T[] =>\n selectedResourceIds.map(selectedResourceId => resources[selectedResourceId])\n );\n\n const getSelectionRecord = createSelector(\n getSelectedResourceIds,\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\n (selectedResourceIds, resources): Record<string, T> =>\n selectedResourceIds.reduce((selected, selectedResourceId) => {\n selected[selectedResourceId] = resources[selectedResourceId];\n return selected;\n }, {} as Record<string, T>)\n );\n\n const getRequestState = createSelector(getListState, state => state.requestState);\n\n const getErrors = createSelector(getListState, state => state.errors);\n\n const isReady = createSelector(\n getAll,\n getLoadingState,\n (users, loadingState) => !!users && loadingState === RequestState.SUCCESS\n );\n\n const areSelectedReady = createSelector(\n getSelectedResourceIds,\n getSelectionRecord,\n getLoadingState,\n (selectedResourceIds, resources, loadingState) => {\n return selectedResourceIds.every(resourceId => !!resources[resourceId]) && loadingState === RequestState.SUCCESS;\n }\n );\n\n const isDeleteDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => !selectedResourceIds.length);\n\n const isCopyDisabled = createSelector(\n getSelectedResourceIds,\n selectedResourceIds => selectedResourceIds.length !== 1\n );\n\n const getTotalCount = createSelector(\n getPagingOptions,\n isLastPage,\n getCurrentPageData,\n (pagingOptions, isLastPage, currentPageData) => {\n if (isLastPage) {\n return (pagingOptions.page - 1) * pagingOptions.pageSize + currentPageData.length;\n }\n return (pagingOptions.page + 1) * pagingOptions.pageSize;\n }\n );\n\n return {\n getAll,\n getRequestOptions,\n isLastPage,\n getCurrentPageData,\n getPagingOptions,\n getSortingOptions,\n getFilteringOptions,\n getCurrentPageNumber,\n getLastPageNumber,\n getLoadingState,\n getSelectedResourceIds,\n getSelected,\n getSelectionRecord,\n getRequestState,\n getErrors,\n areSelectedReady,\n isReady,\n isDeleteDisabled,\n isCopyDisabled,\n getTotalCount\n };\n}\n","import { Action, createFeatureSelector } from '@ngrx/store';\nimport { ListState } from '../models/list.model';\nimport { createListActions } from './list-actions';\nimport { createListEntityAdapter, createListReducer } from './list-reducer';\nimport { createListSelectors } from './list-selectors';\n\nexport function createListState<T, E, S = T>(featureName: string) {\n const actions = createListActions<T, E, S>(featureName);\n const entityAdapter = createListEntityAdapter<S>();\n const reducer = createListReducer<T, E, S>(entityAdapter, actions);\n const getState = createFeatureSelector<ListState<S, E>>(featureName);\n const selectors = createListSelectors<S, E>(entityAdapter, getState);\n\n return {\n actions,\n reducer: (state: ListState<S, E>, action: Action): ListState<S, E> => reducer(state, action),\n selectors,\n entityAdapter\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/fesm2020/ngdux-list.mjs
CHANGED
|
@@ -8,19 +8,16 @@ import { createLoadingStateActionHandlers, createRequestStateActionHandlers, get
|
|
|
8
8
|
import { createEntityAdapter } from '@ngrx/entity';
|
|
9
9
|
|
|
10
10
|
class AbstractListEffects {
|
|
11
|
-
constructor(
|
|
12
|
-
this.router = router;
|
|
11
|
+
constructor(actions$, store, service, listActions, listSelectors, notificationService) {
|
|
13
12
|
this.actions$ = actions$;
|
|
14
13
|
this.store = store;
|
|
15
|
-
this.snackBar = snackBar;
|
|
16
14
|
this.service = service;
|
|
17
15
|
this.listActions = listActions;
|
|
18
16
|
this.listSelectors = listSelectors;
|
|
19
17
|
this.notificationService = notificationService;
|
|
20
18
|
this.texts = {
|
|
21
19
|
deleteConfirmationTitle: 'Delete resources',
|
|
22
|
-
deleteConfirmationMessage: 'Are you sure to delete the selected resources?'
|
|
23
|
-
deletedMessage: 'The resources were deleted successfully.'
|
|
20
|
+
deleteConfirmationMessage: 'Are you sure to delete the selected resources?'
|
|
24
21
|
};
|
|
25
22
|
this.initialize$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.initialize, this.listActions.reinitialize), switchMap(() => {
|
|
26
23
|
return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];
|
|
@@ -71,14 +68,8 @@ class AbstractListEffects {
|
|
|
71
68
|
});
|
|
72
69
|
}), filter(confirmed => confirmed), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), map(([, resourceIds]) => this.listActions.delete({ resourceIds }))));
|
|
73
70
|
this.delete$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.delete), exhaustMap(({ resourceIds }) => this.service.deleteResources(resourceIds).pipe(switchMap(() => [this.listActions.deleteSuccess({ resourceIds }), this.listActions.refresh()]), catchError((errors) => of(this.listActions.deleteFailure({ errors })))))));
|
|
74
|
-
this.deleteUsersSuccess$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.deleteSuccess), tap(() => {
|
|
75
|
-
this.
|
|
76
|
-
})), { dispatch: false });
|
|
77
|
-
this.copySelected$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.copySelected), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), tap(([, resourceIds]) => {
|
|
78
|
-
this.router.navigate([resourceIds[0]], { state: { selectedResourceId: resourceIds[0] } });
|
|
79
|
-
})), { dispatch: false });
|
|
80
|
-
this.navigateToSelected$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.navigateToSelected), tap(action => {
|
|
81
|
-
this.router.navigate([action.resourceId]);
|
|
71
|
+
this.deleteUsersSuccess$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.deleteSuccess), tap(({ resourceIds }) => {
|
|
72
|
+
this.notificationService.onListDelete(resourceIds);
|
|
82
73
|
})), { dispatch: false });
|
|
83
74
|
this.errorsHandler$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure), tap(({ errors }) => {
|
|
84
75
|
this.notificationService.onListErrors(errors);
|
|
@@ -109,8 +100,6 @@ function createListActions(featureName) {
|
|
|
109
100
|
const patchSuccess = createAction(`[${featureName} Page] Patch ${featureName} Success`, props());
|
|
110
101
|
const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props());
|
|
111
102
|
const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);
|
|
112
|
-
const copySelected = createAction(`[${featureName} Page] Copy Selected ${featureName}`);
|
|
113
|
-
const navigateToSelected = createAction(`[${featureName} Page] Navigate to selected ${featureName}`, props());
|
|
114
103
|
const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);
|
|
115
104
|
return {
|
|
116
105
|
initializeRequestOptions,
|
|
@@ -134,8 +123,6 @@ function createListActions(featureName) {
|
|
|
134
123
|
patchSuccess,
|
|
135
124
|
patchFailure,
|
|
136
125
|
resetRequestState,
|
|
137
|
-
copySelected,
|
|
138
|
-
navigateToSelected,
|
|
139
126
|
changePagingOptions,
|
|
140
127
|
showRemovalsConfirmation
|
|
141
128
|
};
|
|
@@ -246,10 +233,6 @@ function createListActionHandlers(initialListState, entityAdapter, actions) {
|
|
|
246
233
|
...state,
|
|
247
234
|
selectedResourceIds: []
|
|
248
235
|
})),
|
|
249
|
-
on(actions.navigateToSelected, (state, { resourceId }) => ({
|
|
250
|
-
...state,
|
|
251
|
-
currentResourceId: resourceId
|
|
252
|
-
})),
|
|
253
236
|
...createLoadingStateActionHandlers(actions.loadPage, actions.loadPageSuccess, actions.loadPageFailure),
|
|
254
237
|
...createRequestStateActionHandlers(undefined, actions.delete, actions.deleteSuccess, actions.deleteFailure),
|
|
255
238
|
...createRequestStateActionHandlers(actions.resetRequestState, actions.patch, actions.patchSuccess, actions.patchFailure)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngdux-list.mjs","sources":["../../../../../../../libs/ngdux/util/store/list/src/lib/+state/abstract-list-effects.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-actions.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-reducer.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-selectors.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-state.ts","../../../../../../../libs/ngdux/util/store/list/src/ngdux-list.ts"],"sourcesContent":["import { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { Router } from '@angular/router';\r\nimport {\r\n FilteringOptions,\r\n ListNotificationService,\r\n ListService,\r\n PagingOptions,\r\n SortingOptions\r\n} from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { createAction, select, Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, concatMap, exhaustMap, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';\r\n\r\nimport { ListActions, ListSelectors } from '../models/list.model';\r\n\r\nexport abstract class AbstractListEffects<T, E, S = T> {\r\n texts = {\r\n deleteConfirmationTitle: 'Delete resources',\r\n deleteConfirmationMessage: 'Are you sure to delete the selected resources?',\r\n deletedMessage: 'The resources were deleted successfully.'\r\n };\r\n\r\n initialize$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.initialize, this.listActions.reinitialize),\r\n switchMap(() => {\r\n return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];\r\n })\r\n )\r\n );\r\n\r\n loadPreviousPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPreviousPage),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\r\n filter(([, currentPageNumber]) => currentPageNumber > 1),\r\n map(([, currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber - 1 }))\r\n )\r\n );\r\n\r\n loadNextPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadNextPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.isLastPage)),\r\n this.store.pipe(select(this.listSelectors.getCurrentPageNumber))\r\n ),\r\n filter(([, isLastPage]) => !isLastPage),\r\n map(([, , currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber + 1 }))\r\n )\r\n );\r\n\r\n refresh$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.refresh),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\r\n switchMap(([, currentPageNumber]) => [\r\n this.listActions.loadPage({ pageNumber: currentPageNumber }),\r\n this.listActions.loadPage({ pageNumber: currentPageNumber + 1 })\r\n ])\r\n )\r\n );\r\n\r\n changePagingOptions$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.changePagingOptions),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions))),\r\n map(([action, pagingOptions]) => {\r\n if (action.pagingOptions.pageSize !== pagingOptions.pageSize) {\r\n return this.listActions.changePageSize({ pageSize: action.pagingOptions.pageSize });\r\n } else if (action.pagingOptions.page === pagingOptions.page + 1) {\r\n return this.listActions.loadNextPage();\r\n } else if (action.pagingOptions.page === pagingOptions.page - 1) {\r\n return this.listActions.loadPreviousPage();\r\n } else if (action.pagingOptions.page === 1) {\r\n return this.listActions.loadFirstPage();\r\n }\r\n\r\n return createAction('Not implement page options action');\r\n })\r\n )\r\n );\r\n\r\n changeRequestOptions$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(\r\n this.listActions.changePageSize,\r\n this.listActions.changeSorting,\r\n this.listActions.changeFiltering,\r\n this.listActions.loadFirstPage\r\n ),\r\n map(() => this.listActions.initialize())\r\n )\r\n );\r\n\r\n loadPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.getPagingOptions)),\r\n this.store.pipe(select(this.listSelectors.getSortingOptions)),\r\n this.store.pipe(select(this.listSelectors.getFilteringOptions))\r\n ),\r\n concatMap(\r\n ([{ pageNumber }, pagingOptions, sortingOptions, filteringOptions]: [\r\n { pageNumber: number },\r\n PagingOptions,\r\n SortingOptions,\r\n FilteringOptions\r\n ]) => {\r\n pagingOptions = {\r\n page: pageNumber,\r\n pageSize: pagingOptions.pageSize\r\n };\r\n\r\n return this.service\r\n .loadResources({\r\n pagingOptions,\r\n sortingOptions,\r\n filteringOptions\r\n })\r\n .pipe(\r\n map(resources =>\r\n this.listActions.loadPageSuccess({\r\n resources,\r\n pagingOptions\r\n })\r\n ),\r\n catchError((errors: E) => of(this.listActions.loadPageFailure({ errors })))\r\n );\r\n }\r\n )\r\n )\r\n );\r\n\r\n patch$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.patch),\r\n exhaustMap(action =>\r\n this.service.patchResources(action.resourceIds, action.resource).pipe(\r\n switchMap(resources => [this.listActions.patchSuccess({ resources }), this.listActions.refresh()]),\r\n catchError((errors: E) => of(this.listActions.patchFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n showRemovalsDialog$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.showRemovalsConfirmation),\r\n switchMap(() => {\r\n return this.notificationService.openConfirmationDialog({\r\n message: this.texts.deleteConfirmationMessage,\r\n title: this.texts.deleteConfirmationTitle\r\n });\r\n }),\r\n filter(confirmed => confirmed),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))),\r\n map(([, resourceIds]) => this.listActions.delete({ resourceIds }))\r\n )\r\n );\r\n\r\n delete$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.delete),\r\n exhaustMap(({ resourceIds }) =>\r\n this.service.deleteResources(resourceIds).pipe(\r\n switchMap(() => [this.listActions.deleteSuccess({ resourceIds }), this.listActions.refresh()]),\r\n catchError((errors: E) => of(this.listActions.deleteFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n deleteUsersSuccess$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.deleteSuccess),\r\n tap(() => {\r\n this.snackBar.open(this.texts.deletedMessage, 'Ok');\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n copySelected$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.copySelected),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))),\r\n tap(([, resourceIds]) => {\r\n this.router.navigate([resourceIds[0]], { state: { selectedResourceId: resourceIds[0] } });\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n navigateToSelected$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.navigateToSelected),\r\n tap(action => {\r\n this.router.navigate([action.resourceId]);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n errorsHandler$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure),\r\n tap(({ errors }) => {\r\n this.notificationService.onListErrors(errors);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n protected constructor(\r\n protected readonly router: Router,\r\n protected readonly actions$: Actions,\r\n protected readonly store: Store,\r\n protected readonly snackBar: MatSnackBar,\r\n private readonly service: ListService<T, S>,\r\n private readonly listActions: ListActions<T, E, S>,\r\n private readonly listSelectors: ListSelectors<S, E>,\r\n private readonly notificationService: ListNotificationService<E>\r\n ) {}\r\n}\r\n","import { ErrorDto, FilteringOptions, PagingOptions, SortingField } from '@ngdux/data-model-common';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { ListActions } from '../models/list.model';\r\n\r\nexport function createListActions<T, E, S = T>(featureName: string): ListActions<T, E, S> {\r\n const initializeRequestOptions = createAction(`[${featureName} Page] Initialize ${featureName} Request Options`);\r\n const refresh = createAction(`[${featureName} Page] Refresh ${featureName}`);\r\n const initialize = createAction(`[${featureName} Page] Initialize ${featureName}`);\r\n const reinitialize = createAction(`[Organization ${featureName} Page] Reinitialize ${featureName}`);\r\n\r\n const loadNextPage = createAction(`[${featureName} Page] Load Next ${featureName} Page`);\r\n const loadPreviousPage = createAction(`[${featureName} Page] Load Previous ${featureName} Page`);\r\n const loadFirstPage = createAction(`[${featureName} Page] Load First ${featureName} Page`);\r\n\r\n const changePageSize = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Size`,\r\n props<{ pageSize: number }>()\r\n );\r\n\r\n const changePagingOptions = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Options`,\r\n props<{ pagingOptions: PagingOptions }>()\r\n );\r\n const changeSorting = createAction(\r\n `[${featureName} Page] Change ${featureName} Sorting`,\r\n props<{ sortingField: SortingField }>()\r\n );\r\n const changeFiltering = createAction(\r\n `[${featureName} Page] Change ${featureName} Filtering`,\r\n props<{ filteringOptions: FilteringOptions }>()\r\n );\r\n const changeSelected = createAction(\r\n `[${featureName} Page] Change Selected ${featureName}`,\r\n props<{ selectedResourceIds: string[] }>()\r\n );\r\n\r\n const loadPage = createAction(`[${featureName} Page] Load ${featureName} Page`, props<{ pageNumber: number }>());\r\n const loadPageSuccess = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Success`,\r\n props<{ resources: S[]; pagingOptions: PagingOptions }>()\r\n );\r\n const loadPageFailure = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Failure`,\r\n props<{ errors: E }>()\r\n );\r\n\r\n const deleteAction = createAction(`[${featureName} Page] Delete ${featureName}`, props<{ resourceIds: string[] }>());\r\n const deleteSuccess = createAction(\r\n `[${featureName} Page] Delete ${featureName} Success`,\r\n props<{ resourceIds: string[] }>()\r\n );\r\n const deleteFailure = createAction(`[${featureName} Page] Delete ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const patch = createAction(\r\n `[${featureName} Page] Patch ${featureName}`,\r\n props<{ resourceIds: string[]; resource: Partial<T> }>()\r\n );\r\n const patchSuccess = createAction(\r\n `[${featureName} Page] Patch ${featureName} Success`,\r\n props<{ resources: (T | ErrorDto)[] }>()\r\n );\r\n const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props<{ errors: E }>());\r\n const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);\r\n const copySelected = createAction(`[${featureName} Page] Copy Selected ${featureName}`);\r\n const navigateToSelected = createAction(\r\n `[${featureName} Page] Navigate to selected ${featureName}`,\r\n props<{ resourceId: string }>()\r\n );\r\n\r\n const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);\r\n\r\n return {\r\n initializeRequestOptions,\r\n changePageSize,\r\n changeSorting,\r\n changeFiltering,\r\n loadNextPage,\r\n loadPage,\r\n refresh,\r\n initialize,\r\n reinitialize,\r\n loadPreviousPage,\r\n loadFirstPage,\r\n changeSelected,\r\n loadPageSuccess,\r\n loadPageFailure,\r\n delete: deleteAction,\r\n deleteSuccess,\r\n deleteFailure,\r\n patch,\r\n patchSuccess,\r\n patchFailure,\r\n resetRequestState,\r\n copySelected,\r\n navigateToSelected,\r\n changePagingOptions,\r\n showRemovalsConfirmation\r\n };\r\n}\r\n","import {\r\n DEFAULT_REQUEST_OPTIONS,\r\n DEFAULT_STORED_PAGES,\r\n PagingOptions,\r\n RequestState,\r\n SortingDirection\r\n} from '@ngdux/data-model-common';\r\nimport {\r\n createLoadingStateActionHandlers,\r\n createRequestStateActionHandlers,\r\n getLastPageNumber\r\n} from '@ngdux/store-common';\r\nimport { createEntityAdapter, EntityAdapter } from '@ngrx/entity';\r\nimport { ActionReducer, createReducer, on, ReducerTypes } from '@ngrx/store';\r\nimport { ActionCreator } from '@ngrx/store/src/models';\r\n\r\nimport { ListActions, ListState } from '../models/list.model';\r\n\r\nexport function createListEntityAdapter<T extends { [key: string]: any }>(idKey = 'id'): EntityAdapter<T> {\r\n return createEntityAdapter({\r\n selectId: resource => resource[idKey]\r\n });\r\n}\r\n\r\nexport function createListReducer<T, E, S = T>(\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>,\r\n actionHandlers?: ReducerTypes<ListState<S, E>, ActionCreator[]>[],\r\n initialListState?: { [key: string]: unknown }\r\n): ActionReducer<ListState<S, E>> {\r\n const initialState: ListState<S, E> = { ...createInitialListState<S, E>(entityAdapter), ...initialListState };\r\n return createReducer<ListState<S, E>>(\r\n initialState,\r\n ...createListActionHandlers<T, E, S>(initialState, entityAdapter, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialListState<T, E>(entityAdapter: EntityAdapter<T>): ListState<T, E> {\r\n return entityAdapter.getInitialState({\r\n ...DEFAULT_REQUEST_OPTIONS,\r\n lastPageNumber: undefined,\r\n selectedResourceIds: [],\r\n loadingState: RequestState.IDLE,\r\n requestState: RequestState.IDLE,\r\n errors: undefined\r\n });\r\n}\r\n\r\nfunction createListActionHandlers<T, E, S>(\r\n initialListState: ListState<S, E>,\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>\r\n): ReducerTypes<ListState<S, E>, ActionCreator[]>[] {\r\n return [\r\n on(actions.reinitialize, () => initialListState),\r\n on(actions.initialize, (state: ListState<S, E>) =>\r\n entityAdapter.removeAll({\r\n ...state,\r\n selectedResourceIds: [],\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: 1\r\n }\r\n })\r\n ),\r\n on(actions.refresh, (state: ListState<S, E>) => {\r\n const currentPageStartIndex = (state.pagingOptions.page - 1) * state.pagingOptions.pageSize;\r\n const resourceIds = state.ids.slice(currentPageStartIndex) as string[];\r\n\r\n return entityAdapter.removeMany(resourceIds, state);\r\n }),\r\n\r\n on(actions.changePageSize, (state: ListState<S, E>, { pageSize }) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, pageSize },\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changeSorting, (state: ListState<S, E>, { sortingField }) => {\r\n const sortingOptions = { ...state.sortingOptions };\r\n if (sortingField.direction === SortingDirection.NONE) {\r\n delete sortingOptions[sortingField.field];\r\n } else {\r\n sortingOptions[sortingField.field] = sortingField;\r\n }\r\n return {\r\n ...state,\r\n sortingOptions\r\n };\r\n }),\r\n on(actions.changeFiltering, (state: ListState<S, E>, { filteringOptions }) => ({\r\n ...state,\r\n filteringOptions,\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changeSelected, (state: ListState<S, E>, { selectedResourceIds }) => ({\r\n ...state,\r\n selectedResourceIds\r\n })),\r\n on(actions.loadFirstPage, (state: ListState<S, E>) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, page: 1 }\r\n })),\r\n on(actions.loadNextPage, (state: ListState<S, E>) => {\r\n if (state.pagingOptions.page === state.lastPageNumber) {\r\n return { ...state };\r\n }\r\n\r\n if (\r\n state.pagingOptions.page + 1 === state.lastPageNumber &&\r\n state.pagingOptions.page + 1 > (DEFAULT_STORED_PAGES + 1) / 2\r\n ) {\r\n const resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\r\n state = entityAdapter.removeMany(resourceIds, { ...state });\r\n }\r\n\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: state.pagingOptions.page + 1\r\n }\r\n };\r\n }),\r\n on(actions.loadPreviousPage, (state: ListState<S, E>) => {\r\n if (state.pagingOptions.page === 1) {\r\n return { ...state };\r\n }\r\n\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: state.pagingOptions.page - 1\r\n }\r\n };\r\n }),\r\n on(actions.loadPageSuccess, (state: ListState<S, E>, { resources, pagingOptions }) => {\r\n if (pagingOptions.page < state.pagingOptions.page) {\r\n return createPreviousPageSuccessState(entityAdapter, state, resources);\r\n }\r\n\r\n return createNextPageSuccessState(entityAdapter, state, pagingOptions, resources);\r\n }),\r\n on(actions.deleteSuccess, (state: ListState<S, E>) => ({\r\n ...state,\r\n selectedResourceIds: [] as string[]\r\n })),\r\n on(actions.navigateToSelected, (state: ListState<S, E>, { resourceId }) => ({\r\n ...state,\r\n currentResourceId: resourceId\r\n })),\r\n\r\n ...createLoadingStateActionHandlers<ListState<S, E>>(\r\n actions.loadPage,\r\n actions.loadPageSuccess,\r\n actions.loadPageFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\r\n actions.resetRequestState,\r\n actions.patch,\r\n actions.patchSuccess,\r\n actions.patchFailure\r\n )\r\n ];\r\n}\r\n\r\nfunction createPreviousPageSuccessState<T, E>(\r\n entityAdapter: EntityAdapter<T>,\r\n state: ListState<T, E>,\r\n resources: T[]\r\n): ListState<T, E> {\r\n const resourceIds: string[] = state.ids.slice(\r\n 0,\r\n (DEFAULT_STORED_PAGES - 1) * state.pagingOptions.pageSize\r\n ) as string[];\r\n\r\n return entityAdapter.setAll([...resources, ...resourceIds.map(resourceId => state.entities[resourceId])], {\r\n ...state,\r\n selectedResourceIds: []\r\n });\r\n}\r\n\r\nfunction createNextPageSuccessState<T, E>(\r\n entityAdapter: EntityAdapter<T>,\r\n state: ListState<T, E>,\r\n pagingOptions: PagingOptions,\r\n resources: T[]\r\n): ListState<T, E> {\r\n let resourceIds: string[] = [];\r\n const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;\r\n\r\n if (pagingOptions.page > DEFAULT_STORED_PAGES && lastPageNumber !== state.pagingOptions.page) {\r\n resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\r\n state = entityAdapter.removeMany(resourceIds, { ...state });\r\n }\r\n\r\n return entityAdapter.addMany(resources, {\r\n ...state,\r\n lastPageNumber,\r\n selectedResourceIds: []\r\n });\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\nimport { DEFAULT_STORED_PAGES, RequestOptions, RequestState } from '@ngdux/data-model-common';\nimport { EntityAdapter } from '@ngrx/entity';\nimport { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\nimport { ListSelectors, ListState } from '../models/list.model';\n\nexport function createListSelectors<T, E>(\n entityAdapter: EntityAdapter<T>,\n getListState: MemoizedSelector<object, ListState<T, E>, DefaultProjectorFn<ListState<T, E>>>\n): ListSelectors<T, E> {\n const getAll = createSelector(getListState, entityAdapter.getSelectors().selectAll);\n\n const getPagingOptions = createSelector(getListState, state => state.pagingOptions);\n\n const getRequestOptions = createSelector(\n getListState,\n (state): RequestOptions => ({\n pagingOptions: state.pagingOptions,\n sortingOptions: state.sortingOptions,\n filteringOptions: state.filteringOptions\n })\n );\n\n const getLastPageNumber = createSelector(getListState, state => state.lastPageNumber);\n\n const isLastPage = createSelector(getPagingOptions, getLastPageNumber, ({ page }, lastPageNumber) => {\n return lastPageNumber <= page;\n });\n\n const getCurrentPageData = createSelector(getPagingOptions, getAll, ({ page, pageSize }, resources) => {\n const defaultStoredPageIndex = (DEFAULT_STORED_PAGES + 1) / 2;\n\n if (page < defaultStoredPageIndex) {\n return resources.slice((page - 1) * pageSize, page * pageSize);\n }\n\n return resources.slice((defaultStoredPageIndex - 1) * pageSize, defaultStoredPageIndex * pageSize);\n });\n\n const getSortingOptions = createSelector(getListState, state => state.sortingOptions);\n\n const getFilteringOptions = createSelector(getListState, state => state.filteringOptions);\n\n const getCurrentPageNumber = createSelector(getPagingOptions, options => options.page);\n\n const getSelectedResourceIds = createSelector(getListState, state => state.selectedResourceIds);\n\n const getLoadingState = createSelector(getListState, state => state.loadingState);\n\n const getSelected = createSelector(\n getSelectedResourceIds,\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\n (selectedResourceIds, resources): T[] =>\n selectedResourceIds.map(selectedResourceId => resources[selectedResourceId])\n );\n\n const getSelectionRecord = createSelector(\n getSelectedResourceIds,\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\n (selectedResourceIds, resources): Record<string, T> =>\n selectedResourceIds.reduce((selected, selectedResourceId) => {\n selected[selectedResourceId] = resources[selectedResourceId];\n return selected;\n }, {} as Record<string, T>)\n );\n\n const getRequestState = createSelector(getListState, state => state.requestState);\n\n const getErrors = createSelector(getListState, state => state.errors);\n\n const isReady = createSelector(\n getAll,\n getLoadingState,\n (users, loadingState) => !!users && loadingState === RequestState.SUCCESS\n );\n\n const areSelectedReady = createSelector(\n getSelectedResourceIds,\n getSelectionRecord,\n getLoadingState,\n (selectedResourceIds, resources, loadingState) => {\n return selectedResourceIds.every(resourceId => !!resources[resourceId]) && loadingState === RequestState.SUCCESS;\n }\n );\n\n const isDeleteDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => !selectedResourceIds.length);\n\n const isCopyDisabled = createSelector(\n getSelectedResourceIds,\n selectedResourceIds => selectedResourceIds.length !== 1\n );\n\n const getTotalCount = createSelector(\n getPagingOptions,\n isLastPage,\n getCurrentPageData,\n (pagingOptions, isLastPage, currentPageData) => {\n if (isLastPage) {\n return (pagingOptions.page - 1) * pagingOptions.pageSize + currentPageData.length;\n }\n return (pagingOptions.page + 1) * pagingOptions.pageSize;\n }\n );\n\n return {\n getAll,\n getRequestOptions,\n isLastPage,\n getCurrentPageData,\n getPagingOptions,\n getSortingOptions,\n getFilteringOptions,\n getCurrentPageNumber,\n getLastPageNumber,\n getLoadingState,\n getSelectedResourceIds,\n getSelected,\n getSelectionRecord,\n getRequestState,\n getErrors,\n areSelectedReady,\n isReady,\n isDeleteDisabled,\n isCopyDisabled,\n getTotalCount\n };\n}\n","import { Action, createFeatureSelector } from '@ngrx/store';\nimport { ListState } from '../models/list.model';\nimport { createListActions } from './list-actions';\nimport { createListEntityAdapter, createListReducer } from './list-reducer';\nimport { createListSelectors } from './list-selectors';\n\nexport function createListState<T, E, S = T>(featureName: string) {\n const actions = createListActions<T, E, S>(featureName);\n const entityAdapter = createListEntityAdapter<S>();\n const reducer = createListReducer<T, E, S>(entityAdapter, actions);\n const getState = createFeatureSelector<ListState<S, E>>(featureName);\n const selectors = createListSelectors<S, E>(entityAdapter, getState);\n\n return {\n actions,\n reducer: (state: ListState<S, E>, action: Action): ListState<S, E> => reducer(state, action),\n selectors,\n entityAdapter\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngdux-list.mjs","sources":["../../../../../../../libs/ngdux/util/store/list/src/lib/+state/abstract-list-effects.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-actions.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-reducer.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-selectors.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-state.ts","../../../../../../../libs/ngdux/util/store/list/src/ngdux-list.ts"],"sourcesContent":["import {\r\n FilteringOptions,\r\n ListNotificationService,\r\n ListService,\r\n PagingOptions,\r\n SortingOptions\r\n} from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { createAction, select, Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, concatMap, exhaustMap, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';\r\n\r\nimport { ListActions, ListSelectors } from '../models/list.model';\r\n\r\nexport abstract class AbstractListEffects<T, E, S = T> {\r\n texts = {\r\n deleteConfirmationTitle: 'Delete resources',\r\n deleteConfirmationMessage: 'Are you sure to delete the selected resources?'\r\n };\r\n\r\n initialize$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.initialize, this.listActions.reinitialize),\r\n switchMap(() => {\r\n return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];\r\n })\r\n )\r\n );\r\n\r\n loadPreviousPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPreviousPage),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\r\n filter(([, currentPageNumber]) => currentPageNumber > 1),\r\n map(([, currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber - 1 }))\r\n )\r\n );\r\n\r\n loadNextPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadNextPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.isLastPage)),\r\n this.store.pipe(select(this.listSelectors.getCurrentPageNumber))\r\n ),\r\n filter(([, isLastPage]) => !isLastPage),\r\n map(([, , currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber + 1 }))\r\n )\r\n );\r\n\r\n refresh$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.refresh),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\r\n switchMap(([, currentPageNumber]) => [\r\n this.listActions.loadPage({ pageNumber: currentPageNumber }),\r\n this.listActions.loadPage({ pageNumber: currentPageNumber + 1 })\r\n ])\r\n )\r\n );\r\n\r\n changePagingOptions$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.changePagingOptions),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions))),\r\n map(([action, pagingOptions]) => {\r\n if (action.pagingOptions.pageSize !== pagingOptions.pageSize) {\r\n return this.listActions.changePageSize({ pageSize: action.pagingOptions.pageSize });\r\n } else if (action.pagingOptions.page === pagingOptions.page + 1) {\r\n return this.listActions.loadNextPage();\r\n } else if (action.pagingOptions.page === pagingOptions.page - 1) {\r\n return this.listActions.loadPreviousPage();\r\n } else if (action.pagingOptions.page === 1) {\r\n return this.listActions.loadFirstPage();\r\n }\r\n\r\n return createAction('Not implement page options action');\r\n })\r\n )\r\n );\r\n\r\n changeRequestOptions$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(\r\n this.listActions.changePageSize,\r\n this.listActions.changeSorting,\r\n this.listActions.changeFiltering,\r\n this.listActions.loadFirstPage\r\n ),\r\n map(() => this.listActions.initialize())\r\n )\r\n );\r\n\r\n loadPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.getPagingOptions)),\r\n this.store.pipe(select(this.listSelectors.getSortingOptions)),\r\n this.store.pipe(select(this.listSelectors.getFilteringOptions))\r\n ),\r\n concatMap(\r\n ([{ pageNumber }, pagingOptions, sortingOptions, filteringOptions]: [\r\n { pageNumber: number },\r\n PagingOptions,\r\n SortingOptions,\r\n FilteringOptions\r\n ]) => {\r\n pagingOptions = {\r\n page: pageNumber,\r\n pageSize: pagingOptions.pageSize\r\n };\r\n\r\n return this.service\r\n .loadResources({\r\n pagingOptions,\r\n sortingOptions,\r\n filteringOptions\r\n })\r\n .pipe(\r\n map(resources =>\r\n this.listActions.loadPageSuccess({\r\n resources,\r\n pagingOptions\r\n })\r\n ),\r\n catchError((errors: E) => of(this.listActions.loadPageFailure({ errors })))\r\n );\r\n }\r\n )\r\n )\r\n );\r\n\r\n patch$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.patch),\r\n exhaustMap(action =>\r\n this.service.patchResources(action.resourceIds, action.resource).pipe(\r\n switchMap(resources => [this.listActions.patchSuccess({ resources }), this.listActions.refresh()]),\r\n catchError((errors: E) => of(this.listActions.patchFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n showRemovalsDialog$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.showRemovalsConfirmation),\r\n switchMap(() => {\r\n return this.notificationService.openConfirmationDialog({\r\n message: this.texts.deleteConfirmationMessage,\r\n title: this.texts.deleteConfirmationTitle\r\n });\r\n }),\r\n filter(confirmed => confirmed),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))),\r\n map(([, resourceIds]) => this.listActions.delete({ resourceIds }))\r\n )\r\n );\r\n\r\n delete$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.delete),\r\n exhaustMap(({ resourceIds }) =>\r\n this.service.deleteResources(resourceIds).pipe(\r\n switchMap(() => [this.listActions.deleteSuccess({ resourceIds }), this.listActions.refresh()]),\r\n catchError((errors: E) => of(this.listActions.deleteFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n deleteUsersSuccess$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.deleteSuccess),\r\n tap(({ resourceIds }) => {\r\n this.notificationService.onListDelete(resourceIds);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n errorsHandler$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure),\r\n tap(({ errors }) => {\r\n this.notificationService.onListErrors(errors);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n protected constructor(\r\n protected readonly actions$: Actions,\r\n protected readonly store: Store,\r\n private readonly service: ListService<T, S>,\r\n private readonly listActions: ListActions<T, E, S>,\r\n private readonly listSelectors: ListSelectors<S, E>,\r\n private readonly notificationService: ListNotificationService<E>\r\n ) {}\r\n}\r\n","import { ErrorDto, FilteringOptions, PagingOptions, SortingField } from '@ngdux/data-model-common';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { ListActions } from '../models/list.model';\r\n\r\nexport function createListActions<T, E, S = T>(featureName: string): ListActions<T, E, S> {\r\n const initializeRequestOptions = createAction(`[${featureName} Page] Initialize ${featureName} Request Options`);\r\n const refresh = createAction(`[${featureName} Page] Refresh ${featureName}`);\r\n const initialize = createAction(`[${featureName} Page] Initialize ${featureName}`);\r\n const reinitialize = createAction(`[Organization ${featureName} Page] Reinitialize ${featureName}`);\r\n\r\n const loadNextPage = createAction(`[${featureName} Page] Load Next ${featureName} Page`);\r\n const loadPreviousPage = createAction(`[${featureName} Page] Load Previous ${featureName} Page`);\r\n const loadFirstPage = createAction(`[${featureName} Page] Load First ${featureName} Page`);\r\n\r\n const changePageSize = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Size`,\r\n props<{ pageSize: number }>()\r\n );\r\n\r\n const changePagingOptions = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Options`,\r\n props<{ pagingOptions: PagingOptions }>()\r\n );\r\n const changeSorting = createAction(\r\n `[${featureName} Page] Change ${featureName} Sorting`,\r\n props<{ sortingField: SortingField }>()\r\n );\r\n const changeFiltering = createAction(\r\n `[${featureName} Page] Change ${featureName} Filtering`,\r\n props<{ filteringOptions: FilteringOptions }>()\r\n );\r\n const changeSelected = createAction(\r\n `[${featureName} Page] Change Selected ${featureName}`,\r\n props<{ selectedResourceIds: string[] }>()\r\n );\r\n\r\n const loadPage = createAction(`[${featureName} Page] Load ${featureName} Page`, props<{ pageNumber: number }>());\r\n const loadPageSuccess = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Success`,\r\n props<{ resources: S[]; pagingOptions: PagingOptions }>()\r\n );\r\n const loadPageFailure = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Failure`,\r\n props<{ errors: E }>()\r\n );\r\n\r\n const deleteAction = createAction(`[${featureName} Page] Delete ${featureName}`, props<{ resourceIds: string[] }>());\r\n const deleteSuccess = createAction(\r\n `[${featureName} Page] Delete ${featureName} Success`,\r\n props<{ resourceIds: string[] }>()\r\n );\r\n const deleteFailure = createAction(`[${featureName} Page] Delete ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const patch = createAction(\r\n `[${featureName} Page] Patch ${featureName}`,\r\n props<{ resourceIds: string[]; resource: Partial<T> }>()\r\n );\r\n const patchSuccess = createAction(\r\n `[${featureName} Page] Patch ${featureName} Success`,\r\n props<{ resources: (T | ErrorDto)[] }>()\r\n );\r\n const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props<{ errors: E }>());\r\n const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);\r\n\r\n const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);\r\n\r\n return {\r\n initializeRequestOptions,\r\n changePageSize,\r\n changeSorting,\r\n changeFiltering,\r\n loadNextPage,\r\n loadPage,\r\n refresh,\r\n initialize,\r\n reinitialize,\r\n loadPreviousPage,\r\n loadFirstPage,\r\n changeSelected,\r\n loadPageSuccess,\r\n loadPageFailure,\r\n delete: deleteAction,\r\n deleteSuccess,\r\n deleteFailure,\r\n patch,\r\n patchSuccess,\r\n patchFailure,\r\n resetRequestState,\r\n changePagingOptions,\r\n showRemovalsConfirmation\r\n };\r\n}\r\n","import {\r\n DEFAULT_REQUEST_OPTIONS,\r\n DEFAULT_STORED_PAGES,\r\n PagingOptions,\r\n RequestState,\r\n SortingDirection\r\n} from '@ngdux/data-model-common';\r\nimport {\r\n createLoadingStateActionHandlers,\r\n createRequestStateActionHandlers,\r\n getLastPageNumber\r\n} from '@ngdux/store-common';\r\nimport { createEntityAdapter, EntityAdapter } from '@ngrx/entity';\r\nimport { ActionReducer, createReducer, on, ReducerTypes } from '@ngrx/store';\r\nimport { ActionCreator } from '@ngrx/store/src/models';\r\n\r\nimport { ListActions, ListState } from '../models/list.model';\r\n\r\nexport function createListEntityAdapter<T extends { [key: string]: any }>(idKey = 'id'): EntityAdapter<T> {\r\n return createEntityAdapter({\r\n selectId: resource => resource[idKey]\r\n });\r\n}\r\n\r\nexport function createListReducer<T, E, S = T>(\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>,\r\n actionHandlers?: ReducerTypes<ListState<S, E>, ActionCreator[]>[],\r\n initialListState?: { [key: string]: unknown }\r\n): ActionReducer<ListState<S, E>> {\r\n const initialState: ListState<S, E> = { ...createInitialListState<S, E>(entityAdapter), ...initialListState };\r\n return createReducer<ListState<S, E>>(\r\n initialState,\r\n ...createListActionHandlers<T, E, S>(initialState, entityAdapter, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialListState<T, E>(entityAdapter: EntityAdapter<T>): ListState<T, E> {\r\n return entityAdapter.getInitialState({\r\n ...DEFAULT_REQUEST_OPTIONS,\r\n lastPageNumber: undefined,\r\n selectedResourceIds: [],\r\n loadingState: RequestState.IDLE,\r\n requestState: RequestState.IDLE,\r\n errors: undefined\r\n });\r\n}\r\n\r\nfunction createListActionHandlers<T, E, S>(\r\n initialListState: ListState<S, E>,\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>\r\n): ReducerTypes<ListState<S, E>, ActionCreator[]>[] {\r\n return [\r\n on(actions.reinitialize, () => initialListState),\r\n on(actions.initialize, (state: ListState<S, E>) =>\r\n entityAdapter.removeAll({\r\n ...state,\r\n selectedResourceIds: [],\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: 1\r\n }\r\n })\r\n ),\r\n on(actions.refresh, (state: ListState<S, E>) => {\r\n const currentPageStartIndex = (state.pagingOptions.page - 1) * state.pagingOptions.pageSize;\r\n const resourceIds = state.ids.slice(currentPageStartIndex) as string[];\r\n\r\n return entityAdapter.removeMany(resourceIds, state);\r\n }),\r\n\r\n on(actions.changePageSize, (state: ListState<S, E>, { pageSize }) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, pageSize },\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changeSorting, (state: ListState<S, E>, { sortingField }) => {\r\n const sortingOptions = { ...state.sortingOptions };\r\n if (sortingField.direction === SortingDirection.NONE) {\r\n delete sortingOptions[sortingField.field];\r\n } else {\r\n sortingOptions[sortingField.field] = sortingField;\r\n }\r\n return {\r\n ...state,\r\n sortingOptions\r\n };\r\n }),\r\n on(actions.changeFiltering, (state: ListState<S, E>, { filteringOptions }) => ({\r\n ...state,\r\n filteringOptions,\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changeSelected, (state: ListState<S, E>, { selectedResourceIds }) => ({\r\n ...state,\r\n selectedResourceIds\r\n })),\r\n on(actions.loadFirstPage, (state: ListState<S, E>) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, page: 1 }\r\n })),\r\n on(actions.loadNextPage, (state: ListState<S, E>) => {\r\n if (state.pagingOptions.page === state.lastPageNumber) {\r\n return { ...state };\r\n }\r\n\r\n if (\r\n state.pagingOptions.page + 1 === state.lastPageNumber &&\r\n state.pagingOptions.page + 1 > (DEFAULT_STORED_PAGES + 1) / 2\r\n ) {\r\n const resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\r\n state = entityAdapter.removeMany(resourceIds, { ...state });\r\n }\r\n\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: state.pagingOptions.page + 1\r\n }\r\n };\r\n }),\r\n on(actions.loadPreviousPage, (state: ListState<S, E>) => {\r\n if (state.pagingOptions.page === 1) {\r\n return { ...state };\r\n }\r\n\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: state.pagingOptions.page - 1\r\n }\r\n };\r\n }),\r\n on(actions.loadPageSuccess, (state: ListState<S, E>, { resources, pagingOptions }) => {\r\n if (pagingOptions.page < state.pagingOptions.page) {\r\n return createPreviousPageSuccessState(entityAdapter, state, resources);\r\n }\r\n\r\n return createNextPageSuccessState(entityAdapter, state, pagingOptions, resources);\r\n }),\r\n on(actions.deleteSuccess, (state: ListState<S, E>) => ({\r\n ...state,\r\n selectedResourceIds: [] as string[]\r\n })),\r\n ...createLoadingStateActionHandlers<ListState<S, E>>(\r\n actions.loadPage,\r\n actions.loadPageSuccess,\r\n actions.loadPageFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\r\n actions.resetRequestState,\r\n actions.patch,\r\n actions.patchSuccess,\r\n actions.patchFailure\r\n )\r\n ];\r\n}\r\n\r\nfunction createPreviousPageSuccessState<T, E>(\r\n entityAdapter: EntityAdapter<T>,\r\n state: ListState<T, E>,\r\n resources: T[]\r\n): ListState<T, E> {\r\n const resourceIds: string[] = state.ids.slice(\r\n 0,\r\n (DEFAULT_STORED_PAGES - 1) * state.pagingOptions.pageSize\r\n ) as string[];\r\n\r\n return entityAdapter.setAll([...resources, ...resourceIds.map(resourceId => state.entities[resourceId])], {\r\n ...state,\r\n selectedResourceIds: []\r\n });\r\n}\r\n\r\nfunction createNextPageSuccessState<T, E>(\r\n entityAdapter: EntityAdapter<T>,\r\n state: ListState<T, E>,\r\n pagingOptions: PagingOptions,\r\n resources: T[]\r\n): ListState<T, E> {\r\n let resourceIds: string[] = [];\r\n const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;\r\n\r\n if (pagingOptions.page > DEFAULT_STORED_PAGES && lastPageNumber !== state.pagingOptions.page) {\r\n resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\r\n state = entityAdapter.removeMany(resourceIds, { ...state });\r\n }\r\n\r\n return entityAdapter.addMany(resources, {\r\n ...state,\r\n lastPageNumber,\r\n selectedResourceIds: []\r\n });\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\nimport { DEFAULT_STORED_PAGES, RequestOptions, RequestState } from '@ngdux/data-model-common';\nimport { EntityAdapter } from '@ngrx/entity';\nimport { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\nimport { ListSelectors, ListState } from '../models/list.model';\n\nexport function createListSelectors<T, E>(\n entityAdapter: EntityAdapter<T>,\n getListState: MemoizedSelector<object, ListState<T, E>, DefaultProjectorFn<ListState<T, E>>>\n): ListSelectors<T, E> {\n const getAll = createSelector(getListState, entityAdapter.getSelectors().selectAll);\n\n const getPagingOptions = createSelector(getListState, state => state.pagingOptions);\n\n const getRequestOptions = createSelector(\n getListState,\n (state): RequestOptions => ({\n pagingOptions: state.pagingOptions,\n sortingOptions: state.sortingOptions,\n filteringOptions: state.filteringOptions\n })\n );\n\n const getLastPageNumber = createSelector(getListState, state => state.lastPageNumber);\n\n const isLastPage = createSelector(getPagingOptions, getLastPageNumber, ({ page }, lastPageNumber) => {\n return lastPageNumber <= page;\n });\n\n const getCurrentPageData = createSelector(getPagingOptions, getAll, ({ page, pageSize }, resources) => {\n const defaultStoredPageIndex = (DEFAULT_STORED_PAGES + 1) / 2;\n\n if (page < defaultStoredPageIndex) {\n return resources.slice((page - 1) * pageSize, page * pageSize);\n }\n\n return resources.slice((defaultStoredPageIndex - 1) * pageSize, defaultStoredPageIndex * pageSize);\n });\n\n const getSortingOptions = createSelector(getListState, state => state.sortingOptions);\n\n const getFilteringOptions = createSelector(getListState, state => state.filteringOptions);\n\n const getCurrentPageNumber = createSelector(getPagingOptions, options => options.page);\n\n const getSelectedResourceIds = createSelector(getListState, state => state.selectedResourceIds);\n\n const getLoadingState = createSelector(getListState, state => state.loadingState);\n\n const getSelected = createSelector(\n getSelectedResourceIds,\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\n (selectedResourceIds, resources): T[] =>\n selectedResourceIds.map(selectedResourceId => resources[selectedResourceId])\n );\n\n const getSelectionRecord = createSelector(\n getSelectedResourceIds,\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\n (selectedResourceIds, resources): Record<string, T> =>\n selectedResourceIds.reduce((selected, selectedResourceId) => {\n selected[selectedResourceId] = resources[selectedResourceId];\n return selected;\n }, {} as Record<string, T>)\n );\n\n const getRequestState = createSelector(getListState, state => state.requestState);\n\n const getErrors = createSelector(getListState, state => state.errors);\n\n const isReady = createSelector(\n getAll,\n getLoadingState,\n (users, loadingState) => !!users && loadingState === RequestState.SUCCESS\n );\n\n const areSelectedReady = createSelector(\n getSelectedResourceIds,\n getSelectionRecord,\n getLoadingState,\n (selectedResourceIds, resources, loadingState) => {\n return selectedResourceIds.every(resourceId => !!resources[resourceId]) && loadingState === RequestState.SUCCESS;\n }\n );\n\n const isDeleteDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => !selectedResourceIds.length);\n\n const isCopyDisabled = createSelector(\n getSelectedResourceIds,\n selectedResourceIds => selectedResourceIds.length !== 1\n );\n\n const getTotalCount = createSelector(\n getPagingOptions,\n isLastPage,\n getCurrentPageData,\n (pagingOptions, isLastPage, currentPageData) => {\n if (isLastPage) {\n return (pagingOptions.page - 1) * pagingOptions.pageSize + currentPageData.length;\n }\n return (pagingOptions.page + 1) * pagingOptions.pageSize;\n }\n );\n\n return {\n getAll,\n getRequestOptions,\n isLastPage,\n getCurrentPageData,\n getPagingOptions,\n getSortingOptions,\n getFilteringOptions,\n getCurrentPageNumber,\n getLastPageNumber,\n getLoadingState,\n getSelectedResourceIds,\n getSelected,\n getSelectionRecord,\n getRequestState,\n getErrors,\n areSelectedReady,\n isReady,\n isDeleteDisabled,\n isCopyDisabled,\n getTotalCount\n };\n}\n","import { Action, createFeatureSelector } from '@ngrx/store';\nimport { ListState } from '../models/list.model';\nimport { createListActions } from './list-actions';\nimport { createListEntityAdapter, createListReducer } from './list-reducer';\nimport { createListSelectors } from './list-selectors';\n\nexport function createListState<T, E, S = T>(featureName: string) {\n const actions = createListActions<T, E, S>(featureName);\n const entityAdapter = createListEntityAdapter<S>();\n const reducer = createListReducer<T, E, S>(entityAdapter, actions);\n const getState = createFeatureSelector<ListState<S, E>>(featureName);\n const selectors = createListSelectors<S, E>(entityAdapter, getState);\n\n return {\n actions,\n reducer: (state: ListState<S, E>, action: Action): ListState<S, E> => reducer(state, action),\n selectors,\n entityAdapter\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
1
|
import { ListNotificationService, ListService, PagingOptions } from '@ngdux/data-model-common';
|
|
4
2
|
import { Actions } from '@ngrx/effects';
|
|
5
3
|
import { Store } from '@ngrx/store';
|
|
6
4
|
import { ListActions, ListSelectors } from '../models/list.model';
|
|
7
5
|
export declare abstract class AbstractListEffects<T, E, S = T> {
|
|
8
|
-
protected readonly router: Router;
|
|
9
6
|
protected readonly actions$: Actions;
|
|
10
7
|
protected readonly store: Store;
|
|
11
|
-
protected readonly snackBar: MatSnackBar;
|
|
12
8
|
private readonly service;
|
|
13
9
|
private readonly listActions;
|
|
14
10
|
private readonly listSelectors;
|
|
@@ -16,7 +12,6 @@ export declare abstract class AbstractListEffects<T, E, S = T> {
|
|
|
16
12
|
texts: {
|
|
17
13
|
deleteConfirmationTitle: string;
|
|
18
14
|
deleteConfirmationMessage: string;
|
|
19
|
-
deletedMessage: string;
|
|
20
15
|
};
|
|
21
16
|
initialize$: import("rxjs").Observable<{
|
|
22
17
|
pageNumber: number;
|
|
@@ -50,10 +45,6 @@ export declare abstract class AbstractListEffects<T, E, S = T> {
|
|
|
50
45
|
deleteUsersSuccess$: import("rxjs").Observable<{
|
|
51
46
|
resourceIds: string[];
|
|
52
47
|
} & import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/effects").CreateEffectMetadata;
|
|
53
|
-
copySelected$: import("rxjs").Observable<[import("@ngrx/store/src/models").TypedAction<string>, string[]]> & import("@ngrx/effects").CreateEffectMetadata;
|
|
54
|
-
navigateToSelected$: import("rxjs").Observable<{
|
|
55
|
-
resourceId: string;
|
|
56
|
-
} & import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/effects").CreateEffectMetadata;
|
|
57
48
|
errorsHandler$: import("rxjs").Observable<({
|
|
58
49
|
errors: E;
|
|
59
50
|
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
@@ -61,5 +52,5 @@ export declare abstract class AbstractListEffects<T, E, S = T> {
|
|
|
61
52
|
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
62
53
|
errors: E;
|
|
63
54
|
} & import("@ngrx/store/src/models").TypedAction<string>)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
64
|
-
protected constructor(
|
|
55
|
+
protected constructor(actions$: Actions, store: Store, service: ListService<T, S>, listActions: ListActions<T, E, S>, listSelectors: ListSelectors<S, E>, notificationService: ListNotificationService<E>);
|
|
65
56
|
}
|
|
@@ -112,11 +112,5 @@ export interface ListActions<T, E, S = T> {
|
|
|
112
112
|
loadPreviousPage: ActionCreator<string, () => TypedAction<string>>;
|
|
113
113
|
loadFirstPage: ActionCreator<string, () => TypedAction<string>>;
|
|
114
114
|
resetRequestState: ActionCreator<string, () => TypedAction<string>>;
|
|
115
|
-
copySelected: ActionCreator<string, () => TypedAction<string>>;
|
|
116
|
-
navigateToSelected: ActionCreator<string, (props: {
|
|
117
|
-
resourceId: string;
|
|
118
|
-
}) => {
|
|
119
|
-
resourceId: string;
|
|
120
|
-
} & TypedAction<string>>;
|
|
121
115
|
showRemovalsConfirmation: ActionCreator<string, () => TypedAction<string>>;
|
|
122
116
|
}
|
package/package.json
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngdux/list",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^14.2.0",
|
|
6
6
|
"@angular/core": "^14.2.0",
|
|
7
|
-
"@ngdux/data-model-common": "0.1.
|
|
8
|
-
"@
|
|
9
|
-
"@ngdux/store-common": "0.1.7",
|
|
7
|
+
"@ngdux/data-model-common": "0.1.8",
|
|
8
|
+
"@ngdux/store-common": "0.1.8",
|
|
10
9
|
"@ngrx/effects": "14.0.2",
|
|
11
|
-
"@
|
|
12
|
-
"@
|
|
10
|
+
"@ngrx/entity": "14.0.2",
|
|
11
|
+
"@angular/router": "14.2.6"
|
|
13
12
|
},
|
|
14
13
|
"dependencies": {
|
|
15
14
|
"tslib": "^2.3.0"
|