@ngdux/list 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # ngdux-util-store-list
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Running unit tests
6
+
7
+ Run `nx test ngdux-util-store-list` to execute the unit tests.
@@ -0,0 +1,6 @@
1
+ export * from './lib/+state/abstract-list-effects';
2
+ export * from './lib/+state/list-actions';
3
+ export * from './lib/+state/list-reducer';
4
+ export * from './lib/+state/list-selectors';
5
+ export * from './lib/models/list.model';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvbGlzdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2Fic3RyYWN0LWxpc3QtZWZmZWN0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvbGlzdC1hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzdGF0ZS9saXN0LXJlZHVjZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2xpc3Qtc2VsZWN0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9saXN0Lm1vZGVsJztcbiJdfQ==
@@ -0,0 +1,83 @@
1
+ import { createEffect, ofType } from '@ngrx/effects';
2
+ import { createAction, select } from '@ngrx/store';
3
+ import { of } from 'rxjs';
4
+ import { catchError, concatMap, exhaustMap, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';
5
+ export class AbstractListEffects {
6
+ constructor(router, actions$, store, snackBar, service, listActions, listSelectors, notificationService) {
7
+ this.router = router;
8
+ this.actions$ = actions$;
9
+ this.store = store;
10
+ this.snackBar = snackBar;
11
+ this.service = service;
12
+ this.listActions = listActions;
13
+ this.listSelectors = listSelectors;
14
+ this.notificationService = notificationService;
15
+ this.texts = {
16
+ deleteConfirmationTitle: 'Delete resources',
17
+ deleteConfirmationMessage: 'Are you sure to delete the selected resources?',
18
+ deletedMessage: 'The resources were deleted successfully.'
19
+ };
20
+ this.initialize$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.initialize, this.listActions.reinitialize), switchMap(() => {
21
+ return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];
22
+ })));
23
+ this.loadPreviousPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPreviousPage), withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), filter(([, currentPageNumber]) => currentPageNumber > 1), map(([, currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber - 1 }))));
24
+ this.loadNextPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadNextPage), withLatestFrom(this.store.pipe(select(this.listSelectors.isLastPage)), this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), filter(([, isLastPage]) => !isLastPage), map(([, , currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber + 1 }))));
25
+ this.refresh$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.refresh), withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), switchMap(([, currentPageNumber]) => [
26
+ this.listActions.loadPage({ pageNumber: currentPageNumber }),
27
+ this.listActions.loadPage({ pageNumber: currentPageNumber + 1 })
28
+ ])));
29
+ this.changePagingOptions$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.changePagingOptions), withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions))), map(([action, pagingOptions]) => {
30
+ if (action.pagingOptions.pageSize !== pagingOptions.pageSize) {
31
+ return this.listActions.changePageSize({ pageSize: action.pagingOptions.pageSize });
32
+ }
33
+ else if (action.pagingOptions.page === pagingOptions.page + 1) {
34
+ return this.listActions.loadNextPage();
35
+ }
36
+ else if (action.pagingOptions.page === pagingOptions.page - 1) {
37
+ return this.listActions.loadPreviousPage();
38
+ }
39
+ else if (action.pagingOptions.page === 1) {
40
+ return this.listActions.loadFirstPage();
41
+ }
42
+ return createAction('Not implement page options action');
43
+ })));
44
+ this.changeRequestOptions$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.changePageSize, this.listActions.changeSorting, this.listActions.changeFiltering, this.listActions.loadFirstPage), map(() => this.listActions.initialize())));
45
+ this.loadPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPage), withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions)), this.store.pipe(select(this.listSelectors.getSortingOptions)), this.store.pipe(select(this.listSelectors.getFilteringOptions))), concatMap(([{ pageNumber }, pagingOptions, sortingOptions, filteringOptions]) => {
46
+ pagingOptions = {
47
+ page: pageNumber,
48
+ pageSize: pagingOptions.pageSize
49
+ };
50
+ return this.service
51
+ .queryResources({
52
+ pagingOptions,
53
+ sortingOptions,
54
+ filteringOptions
55
+ })
56
+ .pipe(map(resources => this.listActions.loadPageSuccess({
57
+ resources,
58
+ pagingOptions
59
+ })), catchError((errors) => of(this.listActions.loadPageFailure({ errors }))));
60
+ })));
61
+ this.patch$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.patch), exhaustMap(action => this.service.patchResources(action.resourceIds, action.resource).pipe(switchMap(resources => [this.listActions.patchSuccess({ resources }), this.listActions.refresh()]), catchError((errors) => of(this.listActions.patchFailure({ errors })))))));
62
+ this.showRemovalsDialog$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.showRemovalsConfirmation), switchMap(() => {
63
+ return this.notificationService.openConfirmationDialog({
64
+ message: this.texts.deleteConfirmationMessage,
65
+ title: this.texts.deleteConfirmationTitle
66
+ });
67
+ }), filter(confirmed => confirmed), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), map(([, resourceIds]) => this.listActions.delete({ resourceIds }))));
68
+ 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.snackBar.open(this.texts.deletedMessage, 'Ok');
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]);
77
+ })), { dispatch: false });
78
+ this.errorsHandler$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure), tap(({ errors }) => {
79
+ this.notificationService.onListErrors(errors);
80
+ })), { dispatch: false });
81
+ }
82
+ }
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGlzdC1lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtbGlzdC1lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUloSCxNQUFNLE9BQWdCLG1CQUFtQjtJQTRNdkMsWUFDcUIsTUFBYyxFQUNkLFFBQWlCLEVBQ2pCLEtBQVksRUFDWixRQUFxQixFQUN2QixPQUEwQixFQUMxQixXQUFpQyxFQUNqQyxhQUFrQyxFQUNsQyxtQkFBK0M7UUFQN0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDdkIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQXNCO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTRCO1FBbk5sRSxVQUFLLEdBQUc7WUFDTix1QkFBdUIsRUFBRSxrQkFBa0I7WUFDM0MseUJBQXlCLEVBQUUsZ0RBQWdEO1lBQzNFLGNBQWMsRUFBRSwwQ0FBMEM7U0FDM0QsQ0FBQztRQUVGLGdCQUFX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LENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUNILEVBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3BCLENBQUM7UUFFRixtQkFBYyxHQUFHLFlBQVksQ0FDM0IsR0FBRyxFQUFFLENBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUN2RyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FDSCxFQUNILEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUNwQixDQUFDO0lBV0MsQ0FBQztDQUNMIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEZpbHRlcmluZ09wdGlvbnMsXG4gIExpc3ROb3RpZmljYXRpb25TZXJ2aWNlLFxuICBMaXN0U2VydmljZSxcbiAgUGFnaW5nT3B0aW9ucyxcbiAgU29ydGluZ09wdGlvbnNcbn0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29uY2F0TWFwLCBleGhhdXN0TWFwLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBMaXN0QWN0aW9ucywgTGlzdFNlbGVjdG9ycyB9IGZyb20gJy4uL21vZGVscy9saXN0Lm1vZGVsJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TGlzdEVmZmVjdHM8VCwgRSwgUyA9IFQ+IHtcbiAgdGV4dHMgPSB7XG4gICAgZGVsZXRlQ29uZmlybWF0aW9uVGl0bGU6ICdEZWxldGUgcmVzb3VyY2VzJyxcbiAgICBkZWxldGVDb25maXJtYXRpb25NZXNzYWdlOiAnQXJlIHlvdSBzdXJlIHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgcmVzb3VyY2VzPycsXG4gICAgZGVsZXRlZE1lc3NhZ2U6ICdUaGUgcmVzb3VyY2VzIHdlcmUgZGVsZXRlZCBzdWNjZXNzZnVsbHkuJ1xuICB9O1xuXG4gIGluaXRpYWxpemUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMuaW5pdGlhbGl6ZSwgdGhpcy5saXN0QWN0aW9ucy5yZWluaXRpYWxpemUpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogMSB9KSwgdGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSh7IHBhZ2VOdW1iZXI6IDIgfSldO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgbG9hZFByZXZpb3VzUGFnZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5sb2FkUHJldmlvdXNQYWdlKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEN1cnJlbnRQYWdlTnVtYmVyKSkpLFxuICAgICAgZmlsdGVyKChbLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IGN1cnJlbnRQYWdlTnVtYmVyID4gMSksXG4gICAgICBtYXAoKFssIGN1cnJlbnRQYWdlTnVtYmVyXSkgPT4gdGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSh7IHBhZ2VOdW1iZXI6IGN1cnJlbnRQYWdlTnVtYmVyIC0gMSB9KSlcbiAgICApXG4gICk7XG5cbiAgbG9hZE5leHRQYWdlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmxvYWROZXh0UGFnZSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuaXNMYXN0UGFnZSkpLFxuICAgICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRDdXJyZW50UGFnZU51bWJlcikpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChbLCBpc0xhc3RQYWdlXSkgPT4gIWlzTGFzdFBhZ2UpLFxuICAgICAgbWFwKChbLCAsIGN1cnJlbnRQYWdlTnVtYmVyXSkgPT4gdGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSh7IHBhZ2VOdW1iZXI6IGN1cnJlbnRQYWdlTnVtYmVyICsgMSB9KSlcbiAgICApXG4gICk7XG5cbiAgcmVmcmVzaCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5yZWZyZXNoKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEN1cnJlbnRQYWdlTnVtYmVyKSkpLFxuICAgICAgc3dpdGNoTWFwKChbLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IFtcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSh7IHBhZ2VOdW1iZXI6IGN1cnJlbnRQYWdlTnVtYmVyIH0pLFxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2VOdW1iZXIgKyAxIH0pXG4gICAgICBdKVxuICAgIClcbiAgKTtcblxuICBjaGFuZ2VQYWdpbmdPcHRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2luZ09wdGlvbnMpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0UGFnaW5nT3B0aW9ucykpKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgcGFnaW5nT3B0aW9uc10pID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbi5wYWdpbmdPcHRpb25zLnBhZ2VTaXplICE9PSBwYWdpbmdPcHRpb25zLnBhZ2VTaXplKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlUGFnZVNpemUoeyBwYWdlU2l6ZTogYWN0aW9uLnBhZ2luZ09wdGlvbnMucGFnZVNpemUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBhZ2luZ09wdGlvbnMucGFnZSA9PT0gcGFnaW5nT3B0aW9ucy5wYWdlICsgMSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxpc3RBY3Rpb25zLmxvYWROZXh0UGFnZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5wYWdpbmdPcHRpb25zLnBhZ2UgPT09IHBhZ2luZ09wdGlvbnMucGFnZSAtIDEpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5saXN0QWN0aW9ucy5sb2FkUHJldmlvdXNQYWdlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBhZ2luZ09wdGlvbnMucGFnZSA9PT0gMSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxpc3RBY3Rpb25zLmxvYWRGaXJzdFBhZ2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjcmVhdGVBY3Rpb24oJ05vdCBpbXBsZW1lbnQgcGFnZSBvcHRpb25zIGFjdGlvbicpO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgY2hhbmdlUmVxdWVzdE9wdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKFxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VTaXplLFxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVNvcnRpbmcsXG4gICAgICAgIHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlRmlsdGVyaW5nLFxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRGaXJzdFBhZ2VcbiAgICAgICksXG4gICAgICBtYXAoKCkgPT4gdGhpcy5saXN0QWN0aW9ucy5pbml0aWFsaXplKCkpXG4gICAgKVxuICApO1xuXG4gIGxvYWRQYWdlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRQYWdpbmdPcHRpb25zKSksXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFNvcnRpbmdPcHRpb25zKSksXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEZpbHRlcmluZ09wdGlvbnMpKVxuICAgICAgKSxcbiAgICAgIGNvbmNhdE1hcChcbiAgICAgICAgKFt7IHBhZ2VOdW1iZXIgfSwgcGFnaW5nT3B0aW9ucywgc29ydGluZ09wdGlvbnMsIGZpbHRlcmluZ09wdGlvbnNdOiBbXG4gICAgICAgICAgeyBwYWdlTnVtYmVyOiBudW1iZXIgfSxcbiAgICAgICAgICBQYWdpbmdPcHRpb25zLFxuICAgICAgICAgIFNvcnRpbmdPcHRpb25zLFxuICAgICAgICAgIEZpbHRlcmluZ09wdGlvbnNcbiAgICAgICAgXSkgPT4ge1xuICAgICAgICAgIHBhZ2luZ09wdGlvbnMgPSB7XG4gICAgICAgICAgICBwYWdlOiBwYWdlTnVtYmVyLFxuICAgICAgICAgICAgcGFnZVNpemU6IHBhZ2luZ09wdGlvbnMucGFnZVNpemVcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgICAgICAgLnF1ZXJ5UmVzb3VyY2VzKHtcbiAgICAgICAgICAgICAgcGFnaW5nT3B0aW9ucyxcbiAgICAgICAgICAgICAgc29ydGluZ09wdGlvbnMsXG4gICAgICAgICAgICAgIGZpbHRlcmluZ09wdGlvbnNcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgbWFwKHJlc291cmNlcyA9PlxuICAgICAgICAgICAgICAgIHRoaXMubGlzdEFjdGlvbnMubG9hZFBhZ2VTdWNjZXNzKHtcbiAgICAgICAgICAgICAgICAgIHJlc291cmNlcyxcbiAgICAgICAgICAgICAgICAgIHBhZ2luZ09wdGlvbnNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcnM6IEUpID0+IG9mKHRoaXMubGlzdEFjdGlvbnMubG9hZFBhZ2VGYWlsdXJlKHsgZXJyb3JzIH0pKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcGF0Y2gkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMucGF0Y2gpLFxuICAgICAgZXhoYXVzdE1hcChhY3Rpb24gPT5cbiAgICAgICAgdGhpcy5zZXJ2aWNlLnBhdGNoUmVzb3VyY2VzKGFjdGlvbi5yZXNvdXJjZUlkcywgYWN0aW9uLnJlc291cmNlKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChyZXNvdXJjZXMgPT4gW3RoaXMubGlzdEFjdGlvbnMucGF0Y2hTdWNjZXNzKHsgcmVzb3VyY2VzIH0pLCB0aGlzLmxpc3RBY3Rpb25zLnJlZnJlc2goKV0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRSkgPT4gb2YodGhpcy5saXN0QWN0aW9ucy5wYXRjaEZhaWx1cmUoeyBlcnJvcnMgfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNob3dSZW1vdmFsc0RpYWxvZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5zaG93UmVtb3ZhbHNDb25maXJtYXRpb24pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vcGVuQ29uZmlybWF0aW9uRGlhbG9nKHtcbiAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRleHRzLmRlbGV0ZUNvbmZpcm1hdGlvbk1lc3NhZ2UsXG4gICAgICAgICAgdGl0bGU6IHRoaXMudGV4dHMuZGVsZXRlQ29uZmlybWF0aW9uVGl0bGVcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGZpbHRlcihjb25maXJtZWQgPT4gY29uZmlybWVkKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFNlbGVjdGVkUmVzb3VyY2VJZHMpKSksXG4gICAgICBtYXAoKFssIHJlc291cmNlSWRzXSkgPT4gdGhpcy5saXN0QWN0aW9ucy5kZWxldGUoeyByZXNvdXJjZUlkcyB9KSlcbiAgICApXG4gICk7XG5cbiAgZGVsZXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZSksXG4gICAgICBleGhhdXN0TWFwKCh7IHJlc291cmNlSWRzIH0pID0+XG4gICAgICAgIHRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZXMocmVzb3VyY2VJZHMpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IFt0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZVN1Y2Nlc3MoeyByZXNvdXJjZUlkcyB9KSwgdGhpcy5saXN0QWN0aW9ucy5yZWZyZXNoKCldKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcnM6IEUpID0+IG9mKHRoaXMubGlzdEFjdGlvbnMuZGVsZXRlRmFpbHVyZSh7IGVycm9ycyB9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZGVsZXRlVXNlcnNTdWNjZXNzJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5kZWxldGVTdWNjZXNzKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4odGhpcy50ZXh0cy5kZWxldGVkTWVzc2FnZSwgJ09rJyk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBjb3B5U2VsZWN0ZWQkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmNvcHlTZWxlY3RlZCksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFNlbGVjdGVkUmVzb3VyY2VJZHMpKSksXG4gICAgICAgIHRhcCgoWywgcmVzb3VyY2VJZHNdKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3Jlc291cmNlSWRzWzBdXSwgeyBzdGF0ZTogeyBzZWxlY3RlZFJlc291cmNlSWQ6IHJlc291cmNlSWRzWzBdIH0gfSk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBuYXZpZ2F0ZVRvU2VsZWN0ZWQkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLm5hdmlnYXRlVG9TZWxlY3RlZCksXG4gICAgICAgIHRhcChhY3Rpb24gPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFthY3Rpb24ucmVzb3VyY2VJZF0pO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgZXJyb3JzSGFuZGxlciQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZFBhZ2VGYWlsdXJlLCB0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZUZhaWx1cmUsIHRoaXMubGlzdEFjdGlvbnMucGF0Y2hGYWlsdXJlKSxcbiAgICAgICAgdGFwKCh7IGVycm9ycyB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLm9uTGlzdEVycm9ycyhlcnJvcnMpO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0b3JlOiBTdG9yZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogTGlzdFNlcnZpY2U8VCwgUz4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0QWN0aW9uczogTGlzdEFjdGlvbnM8VCwgRSwgUz4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0U2VsZWN0b3JzOiBMaXN0U2VsZWN0b3JzPFMsIEU+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uU2VydmljZTogTGlzdE5vdGlmaWNhdGlvblNlcnZpY2U8RT5cbiAgKSB7fVxufVxuIl19
@@ -0,0 +1,56 @@
1
+ import { createAction, props } from '@ngrx/store';
2
+ export function createListActions(featureName) {
3
+ const initializeRequestOptions = createAction(`[${featureName} Page] Initialize ${featureName} Request Options`);
4
+ const refresh = createAction(`[${featureName} Page] Refresh ${featureName}`);
5
+ const initialize = createAction(`[${featureName} Page] Initialize ${featureName}`);
6
+ const reinitialize = createAction(`[Organization ${featureName} Page] Reinitialize ${featureName}`);
7
+ const loadNextPage = createAction(`[${featureName} Page] Load Next ${featureName} Page`);
8
+ const loadPreviousPage = createAction(`[${featureName} Page] Load Previous ${featureName} Page`);
9
+ const loadFirstPage = createAction(`[${featureName} Page] Load First ${featureName} Page`);
10
+ const changePageSize = createAction(`[${featureName} Page] Change ${featureName} Page Size`, props());
11
+ const changePagingOptions = createAction(`[${featureName} Page] Change ${featureName} Page Options`, props());
12
+ const changeSorting = createAction(`[${featureName} Page] Change ${featureName} Sorting`, props());
13
+ const changeFiltering = createAction(`[${featureName} Page] Change ${featureName} Filtering`, props());
14
+ const changeSelected = createAction(`[${featureName} Page] Change Selected ${featureName}`, props());
15
+ const loadPage = createAction(`[${featureName} Page] Load ${featureName} Page`, props());
16
+ const loadPageSuccess = createAction(`[${featureName} Page] Load ${featureName} Page Success`, props());
17
+ const loadPageFailure = createAction(`[${featureName} Page] Load ${featureName} Page Failure`, props());
18
+ const deleteAction = createAction(`[${featureName} Page] Delete ${featureName}`, props());
19
+ const deleteSuccess = createAction(`[${featureName} Page] Delete ${featureName} Success`, props());
20
+ const deleteFailure = createAction(`[${featureName} Page] Delete ${featureName} Failure`, props());
21
+ const patch = createAction(`[${featureName} Page] Patch ${featureName}`, props());
22
+ const patchSuccess = createAction(`[${featureName} Page] Patch ${featureName} Success`, props());
23
+ const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props());
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
+ const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);
28
+ return {
29
+ initializeRequestOptions,
30
+ changePageSize,
31
+ changeSorting,
32
+ changeFiltering,
33
+ loadNextPage,
34
+ loadPage,
35
+ refresh,
36
+ initialize,
37
+ reinitialize,
38
+ loadPreviousPage,
39
+ loadFirstPage,
40
+ changeSelected,
41
+ loadPageSuccess,
42
+ loadPageFailure,
43
+ delete: deleteAction,
44
+ deleteSuccess,
45
+ deleteFailure,
46
+ patch,
47
+ patchSuccess,
48
+ patchFailure,
49
+ resetRequestState,
50
+ copySelected,
51
+ navigateToSelected,
52
+ changePagingOptions,
53
+ showRemovalsConfirmation
54
+ };
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi8rc3RhdGUvbGlzdC1hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2xELE1BQU0sVUFBVSxpQkFBaUIsQ0FBYyxXQUFtQjtJQUNoRSxNQUFNLHdCQUF3QixHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcscUJBQXFCLFdBQVcsa0JBQWtCLENBQUMsQ0FBQztJQUNqSCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGtCQUFrQixXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcscUJBQXFCLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbkYsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixXQUFXLHVCQUF1QixXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBRXBHLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsb0JBQW9CLFdBQVcsT0FBTyxDQUFDLENBQUM7SUFDekYsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLHdCQUF3QixXQUFXLE9BQU8sQ0FBQyxDQUFDO0lBQ2pHLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcscUJBQXFCLFdBQVcsT0FBTyxDQUFDLENBQUM7SUFFM0YsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUNqQyxJQUFJLFdBQVcsaUJBQWlCLFdBQVcsWUFBWSxFQUN2RCxLQUFLLEVBQXdCLENBQzlCLENBQUM7SUFFRixNQUFNLG1CQUFtQixHQUFHLFlBQVksQ0FDdEMsSUFBSSxXQUFXLGlCQUFpQixXQUFXLGVBQWUsRUFDMUQsS0FBSyxFQUFvQyxDQUMxQyxDQUFDO0lBQ0YsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUNoQyxJQUFJLFdBQVcsaUJBQWlCLFdBQVcsVUFBVSxFQUNyRCxLQUFLLEVBQWtDLENBQ3hDLENBQUM7SUFDRixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQ2xDLElBQUksV0FBVyxpQkFBaUIsV0FBVyxZQUFZLEVBQ3ZELEtBQUssRUFBMEMsQ0FDaEQsQ0FBQztJQUNGLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FDakMsSUFBSSxXQUFXLDBCQUEwQixXQUFXLEVBQUUsRUFDdEQsS0FBSyxFQUFxQyxDQUMzQyxDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxlQUFlLFdBQVcsT0FBTyxFQUFFLEtBQUssRUFBMEIsQ0FBQyxDQUFDO0lBQ2pILE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FDbEMsSUFBSSxXQUFXLGVBQWUsV0FBVyxlQUFlLEVBQ3hELEtBQUssRUFBb0QsQ0FDMUQsQ0FBQztJQUNGLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FDbEMsSUFBSSxXQUFXLGVBQWUsV0FBVyxlQUFlLEVBQ3hELEtBQUssRUFBaUIsQ0FDdkIsQ0FBQztJQUVGLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsaUJBQWlCLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBNkIsQ0FBQyxDQUFDO0lBQ3JILE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FDaEMsSUFBSSxXQUFXLGlCQUFpQixXQUFXLFVBQVUsRUFDckQsS0FBSyxFQUE2QixDQUNuQyxDQUFDO0lBQ0YsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxpQkFBaUIsV0FBVyxVQUFVLEVBQUUsS0FBSyxFQUFpQixDQUFDLENBQUM7SUFFbEgsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUN4QixJQUFJLFdBQVcsZ0JBQWdCLFdBQVcsRUFBRSxFQUM1QyxLQUFLLEVBQW1ELENBQ3pELENBQUM7SUFDRixNQUFNLFlBQVksR0FBRyxZQUFZLENBQy9CLElBQUksV0FBVyxnQkFBZ0IsV0FBVyxVQUFVLEVBQ3BELEtBQUssRUFBbUMsQ0FDekMsQ0FBQztJQUNGLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsZ0JBQWdCLFdBQVcsVUFBVSxFQUFFLEtBQUssRUFBaUIsQ0FBQyxDQUFDO0lBQ2hILE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxnQkFBZ0IsV0FBVyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25HLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsd0JBQXdCLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDeEYsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQ3JDLElBQUksV0FBVywrQkFBK0IsV0FBVyxFQUFFLEVBQzNELEtBQUssRUFBMEIsQ0FDaEMsQ0FBQztJQUVGLE1BQU0sd0JBQXdCLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxlQUFlLFdBQVcsdUJBQXVCLENBQUMsQ0FBQztJQUVoSCxPQUFPO1FBQ0wsd0JBQXdCO1FBQ3hCLGNBQWM7UUFDZCxhQUFhO1FBQ2IsZUFBZTtRQUNmLFlBQVk7UUFDWixRQUFRO1FBQ1IsT0FBTztRQUNQLFVBQVU7UUFDVixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixjQUFjO1FBQ2QsZUFBZTtRQUNmLGVBQWU7UUFDZixNQUFNLEVBQUUsWUFBWTtRQUNwQixhQUFhO1FBQ2IsYUFBYTtRQUNiLEtBQUs7UUFDTCxZQUFZO1FBQ1osWUFBWTtRQUNaLGlCQUFpQjtRQUNqQixZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQix3QkFBd0I7S0FDekIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFcnJvckR0bywgRmlsdGVyaW5nT3B0aW9ucywgUGFnaW5nT3B0aW9ucywgU29ydGluZ0ZpZWxkIH0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcbmltcG9ydCB7IGNyZWF0ZUFjdGlvbiwgcHJvcHMgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBMaXN0QWN0aW9ucyB9IGZyb20gJy4uL21vZGVscy9saXN0Lm1vZGVsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RBY3Rpb25zPFQsIEUsIFMgPSBUPihmZWF0dXJlTmFtZTogc3RyaW5nKTogTGlzdEFjdGlvbnM8VCwgRSwgUz4ge1xuICBjb25zdCBpbml0aWFsaXplUmVxdWVzdE9wdGlvbnMgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBJbml0aWFsaXplICR7ZmVhdHVyZU5hbWV9IFJlcXVlc3QgT3B0aW9uc2ApO1xuICBjb25zdCByZWZyZXNoID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gUmVmcmVzaCAke2ZlYXR1cmVOYW1lfWApO1xuICBjb25zdCBpbml0aWFsaXplID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gSW5pdGlhbGl6ZSAke2ZlYXR1cmVOYW1lfWApO1xuICBjb25zdCByZWluaXRpYWxpemUgPSBjcmVhdGVBY3Rpb24oYFtPcmdhbml6YXRpb24gJHtmZWF0dXJlTmFtZX0gUGFnZV0gUmVpbml0aWFsaXplICR7ZmVhdHVyZU5hbWV9YCk7XG5cbiAgY29uc3QgbG9hZE5leHRQYWdlID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gTG9hZCBOZXh0ICR7ZmVhdHVyZU5hbWV9IFBhZ2VgKTtcbiAgY29uc3QgbG9hZFByZXZpb3VzUGFnZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIExvYWQgUHJldmlvdXMgJHtmZWF0dXJlTmFtZX0gUGFnZWApO1xuICBjb25zdCBsb2FkRmlyc3RQYWdlID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gTG9hZCBGaXJzdCAke2ZlYXR1cmVOYW1lfSBQYWdlYCk7XG5cbiAgY29uc3QgY2hhbmdlUGFnZVNpemUgPSBjcmVhdGVBY3Rpb24oXG4gICAgYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBDaGFuZ2UgJHtmZWF0dXJlTmFtZX0gUGFnZSBTaXplYCxcbiAgICBwcm9wczx7IHBhZ2VTaXplOiBudW1iZXIgfT4oKVxuICApO1xuXG4gIGNvbnN0IGNoYW5nZVBhZ2luZ09wdGlvbnMgPSBjcmVhdGVBY3Rpb24oXG4gICAgYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBDaGFuZ2UgJHtmZWF0dXJlTmFtZX0gUGFnZSBPcHRpb25zYCxcbiAgICBwcm9wczx7IHBhZ2luZ09wdGlvbnM6IFBhZ2luZ09wdGlvbnMgfT4oKVxuICApO1xuICBjb25zdCBjaGFuZ2VTb3J0aW5nID0gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gQ2hhbmdlICR7ZmVhdHVyZU5hbWV9IFNvcnRpbmdgLFxuICAgIHByb3BzPHsgc29ydGluZ0ZpZWxkOiBTb3J0aW5nRmllbGQgfT4oKVxuICApO1xuICBjb25zdCBjaGFuZ2VGaWx0ZXJpbmcgPSBjcmVhdGVBY3Rpb24oXG4gICAgYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBDaGFuZ2UgJHtmZWF0dXJlTmFtZX0gRmlsdGVyaW5nYCxcbiAgICBwcm9wczx7IGZpbHRlcmluZ09wdGlvbnM6IEZpbHRlcmluZ09wdGlvbnMgfT4oKVxuICApO1xuICBjb25zdCBjaGFuZ2VTZWxlY3RlZCA9IGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIENoYW5nZSBTZWxlY3RlZCAke2ZlYXR1cmVOYW1lfWAsXG4gICAgcHJvcHM8eyBzZWxlY3RlZFJlc291cmNlSWRzOiBzdHJpbmdbXSB9PigpXG4gICk7XG5cbiAgY29uc3QgbG9hZFBhZ2UgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBMb2FkICR7ZmVhdHVyZU5hbWV9IFBhZ2VgLCBwcm9wczx7IHBhZ2VOdW1iZXI6IG51bWJlciB9PigpKTtcbiAgY29uc3QgbG9hZFBhZ2VTdWNjZXNzID0gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gTG9hZCAke2ZlYXR1cmVOYW1lfSBQYWdlIFN1Y2Nlc3NgLFxuICAgIHByb3BzPHsgcmVzb3VyY2VzOiBTW107IHBhZ2luZ09wdGlvbnM6IFBhZ2luZ09wdGlvbnMgfT4oKVxuICApO1xuICBjb25zdCBsb2FkUGFnZUZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oXG4gICAgYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBMb2FkICR7ZmVhdHVyZU5hbWV9IFBhZ2UgRmFpbHVyZWAsXG4gICAgcHJvcHM8eyBlcnJvcnM6IEUgfT4oKVxuICApO1xuXG4gIGNvbnN0IGRlbGV0ZUFjdGlvbiA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIERlbGV0ZSAke2ZlYXR1cmVOYW1lfWAsIHByb3BzPHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0+KCkpO1xuICBjb25zdCBkZWxldGVTdWNjZXNzID0gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gRGVsZXRlICR7ZmVhdHVyZU5hbWV9IFN1Y2Nlc3NgLFxuICAgIHByb3BzPHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0+KClcbiAgKTtcbiAgY29uc3QgZGVsZXRlRmFpbHVyZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIERlbGV0ZSAke2ZlYXR1cmVOYW1lfSBGYWlsdXJlYCwgcHJvcHM8eyBlcnJvcnM6IEUgfT4oKSk7XG5cbiAgY29uc3QgcGF0Y2ggPSBjcmVhdGVBY3Rpb24oXG4gICAgYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBQYXRjaCAke2ZlYXR1cmVOYW1lfWAsXG4gICAgcHJvcHM8eyByZXNvdXJjZUlkczogc3RyaW5nW107IHJlc291cmNlOiBQYXJ0aWFsPFQ+IH0+KClcbiAgKTtcbiAgY29uc3QgcGF0Y2hTdWNjZXNzID0gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gUGF0Y2ggJHtmZWF0dXJlTmFtZX0gU3VjY2Vzc2AsXG4gICAgcHJvcHM8eyByZXNvdXJjZXM6IChUIHwgRXJyb3JEdG8pW10gfT4oKVxuICApO1xuICBjb25zdCBwYXRjaEZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBQYXRjaCAke2ZlYXR1cmVOYW1lfSBGYWlsdXJlYCwgcHJvcHM8eyBlcnJvcnM6IEUgfT4oKSk7XG4gIGNvbnN0IHJlc2V0UmVxdWVzdFN0YXRlID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gUmVzZXQgJHtmZWF0dXJlTmFtZX0gUmVxdWVzdCBTdGF0ZWApO1xuICBjb25zdCBjb3B5U2VsZWN0ZWQgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBQYWdlXSBDb3B5IFNlbGVjdGVkICR7ZmVhdHVyZU5hbWV9YCk7XG4gIGNvbnN0IG5hdmlnYXRlVG9TZWxlY3RlZCA9IGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7ZmVhdHVyZU5hbWV9IFBhZ2VdIE5hdmlnYXRlIHRvIHNlbGVjdGVkICR7ZmVhdHVyZU5hbWV9YCxcbiAgICBwcm9wczx7IHJlc291cmNlSWQ6IHN0cmluZyB9PigpXG4gICk7XG5cbiAgY29uc3Qgc2hvd1JlbW92YWxzQ29uZmlybWF0aW9uID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gUGFnZV0gU2hvdyAke2ZlYXR1cmVOYW1lfSBSZW1vdmFsIENvbmZpcm1hdGlvbmApO1xuXG4gIHJldHVybiB7XG4gICAgaW5pdGlhbGl6ZVJlcXVlc3RPcHRpb25zLFxuICAgIGNoYW5nZVBhZ2VTaXplLFxuICAgIGNoYW5nZVNvcnRpbmcsXG4gICAgY2hhbmdlRmlsdGVyaW5nLFxuICAgIGxvYWROZXh0UGFnZSxcbiAgICBsb2FkUGFnZSxcbiAgICByZWZyZXNoLFxuICAgIGluaXRpYWxpemUsXG4gICAgcmVpbml0aWFsaXplLFxuICAgIGxvYWRQcmV2aW91c1BhZ2UsXG4gICAgbG9hZEZpcnN0UGFnZSxcbiAgICBjaGFuZ2VTZWxlY3RlZCxcbiAgICBsb2FkUGFnZVN1Y2Nlc3MsXG4gICAgbG9hZFBhZ2VGYWlsdXJlLFxuICAgIGRlbGV0ZTogZGVsZXRlQWN0aW9uLFxuICAgIGRlbGV0ZVN1Y2Nlc3MsXG4gICAgZGVsZXRlRmFpbHVyZSxcbiAgICBwYXRjaCxcbiAgICBwYXRjaFN1Y2Nlc3MsXG4gICAgcGF0Y2hGYWlsdXJlLFxuICAgIHJlc2V0UmVxdWVzdFN0YXRlLFxuICAgIGNvcHlTZWxlY3RlZCxcbiAgICBuYXZpZ2F0ZVRvU2VsZWN0ZWQsXG4gICAgY2hhbmdlUGFnaW5nT3B0aW9ucyxcbiAgICBzaG93UmVtb3ZhbHNDb25maXJtYXRpb25cbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,139 @@
1
+ import { DEFAULT_REQUEST_OPTIONS, DEFAULT_STORED_PAGES, RequestState, SortingDirection } from '@ngdux/data-model-common';
2
+ import { createLoadingStateActionHandlers, createRequestStateActionHandlers, getLastPageNumber } from '@ngdux/store-common';
3
+ import { createEntityAdapter } from '@ngrx/entity';
4
+ import { createReducer, on } from '@ngrx/store';
5
+ export function createListEntityAdapter(idKey = 'id') {
6
+ return createEntityAdapter({
7
+ selectId: resource => resource[idKey]
8
+ });
9
+ }
10
+ export function createListReducer(entityAdapter, actions, actionHandlers, initialListState) {
11
+ const initialState = { ...createInitialListState(entityAdapter), ...initialListState };
12
+ return createReducer(initialState, ...createListActionHandlers(initialState, entityAdapter, actions), ...(actionHandlers || []));
13
+ }
14
+ function createInitialListState(entityAdapter) {
15
+ return entityAdapter.getInitialState({
16
+ ...DEFAULT_REQUEST_OPTIONS,
17
+ lastPageNumber: undefined,
18
+ selectedResourceIds: [],
19
+ loadingState: RequestState.IDLE,
20
+ requestState: RequestState.IDLE,
21
+ errors: undefined
22
+ });
23
+ }
24
+ function createListActionHandlers(initialListState, entityAdapter, actions) {
25
+ return [
26
+ on(actions.reinitialize, () => initialListState),
27
+ on(actions.initialize, (state) => entityAdapter.removeAll({
28
+ ...state,
29
+ selectedResourceIds: [],
30
+ pagingOptions: {
31
+ ...state.pagingOptions,
32
+ page: 1
33
+ }
34
+ })),
35
+ on(actions.refresh, (state) => {
36
+ const currentPageStartIndex = (state.pagingOptions.page - 1) * state.pagingOptions.pageSize;
37
+ const resourceIds = state.ids.slice(currentPageStartIndex);
38
+ return entityAdapter.removeMany(resourceIds, state);
39
+ }),
40
+ on(actions.changePageSize, (state, { pageSize }) => ({
41
+ ...state,
42
+ pagingOptions: { ...state.pagingOptions, pageSize },
43
+ lastPageNumber: undefined
44
+ })),
45
+ on(actions.changeSorting, (state, { sortingField }) => {
46
+ const sortingOptions = { ...state.sortingOptions };
47
+ if (sortingField.direction === SortingDirection.NONE) {
48
+ delete sortingOptions[sortingField.field];
49
+ }
50
+ else {
51
+ sortingOptions[sortingField.field] = sortingField;
52
+ }
53
+ return {
54
+ ...state,
55
+ sortingOptions
56
+ };
57
+ }),
58
+ on(actions.changeFiltering, (state, { filteringOptions }) => ({
59
+ ...state,
60
+ filteringOptions,
61
+ lastPageNumber: undefined
62
+ })),
63
+ on(actions.changeSelected, (state, { selectedResourceIds }) => ({
64
+ ...state,
65
+ selectedResourceIds
66
+ })),
67
+ on(actions.loadFirstPage, (state) => ({
68
+ ...state,
69
+ pagingOptions: { ...state.pagingOptions, page: 1 }
70
+ })),
71
+ on(actions.loadNextPage, (state) => {
72
+ if (state.pagingOptions.page === state.lastPageNumber) {
73
+ return { ...state };
74
+ }
75
+ if (state.pagingOptions.page + 1 === state.lastPageNumber &&
76
+ state.pagingOptions.page + 1 > (DEFAULT_STORED_PAGES + 1) / 2) {
77
+ const resourceIds = state.ids.slice(0, state.pagingOptions.pageSize);
78
+ state = entityAdapter.removeMany(resourceIds, { ...state });
79
+ }
80
+ return {
81
+ ...state,
82
+ pagingOptions: {
83
+ ...state.pagingOptions,
84
+ page: state.pagingOptions.page + 1
85
+ }
86
+ };
87
+ }),
88
+ on(actions.loadPreviousPage, (state) => {
89
+ if (state.pagingOptions.page === 1) {
90
+ return { ...state };
91
+ }
92
+ return {
93
+ ...state,
94
+ pagingOptions: {
95
+ ...state.pagingOptions,
96
+ page: state.pagingOptions.page - 1
97
+ }
98
+ };
99
+ }),
100
+ on(actions.loadPageSuccess, (state, { resources, pagingOptions }) => {
101
+ if (pagingOptions.page < state.pagingOptions.page) {
102
+ return createPreviousPageSuccessState(entityAdapter, state, resources);
103
+ }
104
+ return createNextPageSuccessState(entityAdapter, state, pagingOptions, resources);
105
+ }),
106
+ on(actions.deleteSuccess, (state) => ({
107
+ ...state,
108
+ selectedResourceIds: []
109
+ })),
110
+ on(actions.navigateToSelected, (state, { resourceId }) => ({
111
+ ...state,
112
+ currentResourceId: resourceId
113
+ })),
114
+ ...createLoadingStateActionHandlers(actions.loadPage, actions.loadPageSuccess, actions.loadPageFailure),
115
+ ...createRequestStateActionHandlers(undefined, actions.delete, actions.deleteSuccess, actions.deleteFailure),
116
+ ...createRequestStateActionHandlers(actions.resetRequestState, actions.patch, actions.patchSuccess, actions.patchFailure)
117
+ ];
118
+ }
119
+ function createPreviousPageSuccessState(entityAdapter, state, resources) {
120
+ const resourceIds = state.ids.slice(0, (DEFAULT_STORED_PAGES - 1) * state.pagingOptions.pageSize);
121
+ return entityAdapter.setAll([...resources, ...resourceIds.map(resourceId => state.entities[resourceId])], {
122
+ ...state,
123
+ selectedResourceIds: []
124
+ });
125
+ }
126
+ function createNextPageSuccessState(entityAdapter, state, pagingOptions, resources) {
127
+ let resourceIds = [];
128
+ const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;
129
+ if (pagingOptions.page > DEFAULT_STORED_PAGES && lastPageNumber !== state.pagingOptions.page) {
130
+ resourceIds = state.ids.slice(0, state.pagingOptions.pageSize);
131
+ state = entityAdapter.removeMany(resourceIds, { ...state });
132
+ }
133
+ return entityAdapter.addMany(resources, {
134
+ ...state,
135
+ lastPageNumber,
136
+ selectedResourceIds: []
137
+ });
138
+ }
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi8rc3RhdGUvbGlzdC1yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsb0JBQW9CLEVBRXBCLFlBQVksRUFDWixnQkFBZ0IsRUFDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsbUJBQW1CLEVBQWlCLE1BQU0sY0FBYyxDQUFDO0FBQ2xFLE9BQU8sRUFBaUIsYUFBYSxFQUFFLEVBQUUsRUFBZ0IsTUFBTSxhQUFhLENBQUM7QUFLN0UsTUFBTSxVQUFVLHVCQUF1QixDQUFtQyxLQUFLLEdBQUcsSUFBSTtJQUNwRixPQUFPLG1CQUFtQixDQUFDO1FBQ3pCLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7S0FDdEMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsYUFBK0IsRUFDL0IsT0FBNkIsRUFDN0IsY0FBaUUsRUFDakUsZ0JBQTZDO0lBRTdDLE1BQU0sWUFBWSxHQUFvQixFQUFFLEdBQUcsc0JBQXNCLENBQU8sYUFBYSxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzlHLE9BQU8sYUFBYSxDQUNsQixZQUFZLEVBQ1osR0FBRyx3QkFBd0IsQ0FBVSxZQUFZLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxFQUMxRSxHQUFHLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQyxDQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQU8sYUFBK0I7SUFDbkUsT0FBTyxhQUFhLENBQUMsZUFBZSxDQUFDO1FBQ25DLEdBQUcsdUJBQXVCO1FBQzFCLGNBQWMsRUFBRSxTQUFTO1FBQ3pCLG1CQUFtQixFQUFFLEVBQUU7UUFDdkIsWUFBWSxFQUFFLFlBQVksQ0FBQyxJQUFJO1FBQy9CLFlBQVksRUFBRSxZQUFZLENBQUMsSUFBSTtRQUMvQixNQUFNLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FDL0IsZ0JBQWlDLEVBQ2pDLGFBQStCLEVBQy9CLE9BQTZCO0lBRTdCLE9BQU87UUFDTCxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNoRCxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLEtBQXNCLEVBQUUsRUFBRSxDQUNoRCxhQUFhLENBQUMsU0FBUyxDQUFDO1lBQ3RCLEdBQUcsS0FBSztZQUNSLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsYUFBYSxFQUFFO2dCQUNiLEdBQUcsS0FBSyxDQUFDLGFBQWE7Z0JBQ3RCLElBQUksRUFBRSxDQUFDO2FBQ1I7U0FDRixDQUFDLENBQ0g7UUFDRCxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQXNCLEVBQUUsRUFBRTtZQUM3QyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7WUFDNUYsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQWEsQ0FBQztZQUV2RSxPQUFPLGFBQWEsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQztRQUVGLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBc0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLEdBQUcsS0FBSztZQUNSLGFBQWEsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUU7WUFDbkQsY0FBYyxFQUFFLFNBQVM7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFzQixFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtZQUNyRSxNQUFNLGNBQWMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25ELElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3BELE9BQU8sY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMzQztpQkFBTTtnQkFDTCxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLFlBQVksQ0FBQzthQUNuRDtZQUNELE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLGNBQWM7YUFDZixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFzQixFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3RSxHQUFHLEtBQUs7WUFDUixnQkFBZ0I7WUFDaEIsY0FBYyxFQUFFLFNBQVM7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFzQixFQUFFLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvRSxHQUFHLEtBQUs7WUFDUixtQkFBbUI7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELEdBQUcsS0FBSztZQUNSLGFBQWEsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1NBQ25ELENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBc0IsRUFBRSxFQUFFO1lBQ2xELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLGNBQWMsRUFBRTtnQkFDckQsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7YUFDckI7WUFFRCxJQUNFLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsY0FBYztnQkFDckQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUM3RDtnQkFDQSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQWEsQ0FBQztnQkFDakYsS0FBSyxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQzdEO1lBRUQsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsYUFBYSxFQUFFO29CQUNiLEdBQUcsS0FBSyxDQUFDLGFBQWE7b0JBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxDQUFDO2lCQUNuQzthQUNGLENBQUM7UUFDSixDQUFDLENBQUM7UUFDRixFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBc0IsRUFBRSxFQUFFO1lBQ3RELElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUNsQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQzthQUNyQjtZQUVELE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLGFBQWEsRUFBRTtvQkFDYixHQUFHLEtBQUssQ0FBQyxhQUFhO29CQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQztpQkFDbkM7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0YsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFzQixFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUU7WUFDbkYsSUFBSSxhQUFhLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO2dCQUNqRCxPQUFPLDhCQUE4QixDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDeEU7WUFFRCxPQUFPLDBCQUEwQixDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BGLENBQUMsQ0FBQztRQUNGLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRCxHQUFHLEtBQUs7WUFDUixtQkFBbUIsRUFBRSxFQUFjO1NBQ3BDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxLQUFzQixFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUUsR0FBRyxLQUFLO1lBQ1IsaUJBQWlCLEVBQUUsVUFBVTtTQUM5QixDQUFDLENBQUM7UUFFSCxHQUFHLGdDQUFnQyxDQUNqQyxPQUFPLENBQUMsUUFBUSxFQUNoQixPQUFPLENBQUMsZUFBZSxFQUN2QixPQUFPLENBQUMsZUFBZSxDQUN4QjtRQUNELEdBQUcsZ0NBQWdDLENBQ2pDLFNBQVMsRUFDVCxPQUFPLENBQUMsTUFBTSxFQUNkLE9BQU8sQ0FBQyxhQUFhLEVBQ3JCLE9BQU8sQ0FBQyxhQUFhLENBQ3RCO1FBQ0QsR0FBRyxnQ0FBZ0MsQ0FDakMsT0FBTyxDQUFDLGlCQUFpQixFQUN6QixPQUFPLENBQUMsS0FBSyxFQUNiLE9BQU8sQ0FBQyxZQUFZLEVBQ3BCLE9BQU8sQ0FBQyxZQUFZLENBQ3JCO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLDhCQUE4QixDQUNyQyxhQUErQixFQUMvQixLQUFzQixFQUN0QixTQUFjO0lBRWQsTUFBTSxXQUFXLEdBQWEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQzNDLENBQUMsRUFDRCxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUM5QyxDQUFDO0lBRWQsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDeEcsR0FBRyxLQUFLO1FBQ1IsbUJBQW1CLEVBQUUsRUFBRTtLQUN4QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FDakMsYUFBK0IsRUFDL0IsS0FBc0IsRUFDdEIsYUFBNEIsRUFDNUIsU0FBYztJQUVkLElBQUksV0FBVyxHQUFhLEVBQUUsQ0FBQztJQUMvQixNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUUzRixJQUFJLGFBQWEsQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLElBQUksY0FBYyxLQUFLLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO1FBQzVGLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQWEsQ0FBQztRQUMzRSxLQUFLLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDN0Q7SUFFRCxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1FBQ3RDLEdBQUcsS0FBSztRQUNSLGNBQWM7UUFDZCxtQkFBbUIsRUFBRSxFQUFFO0tBQ3hCLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBERUZBVUxUX1JFUVVFU1RfT1BUSU9OUyxcbiAgREVGQVVMVF9TVE9SRURfUEFHRVMsXG4gIFBhZ2luZ09wdGlvbnMsXG4gIFJlcXVlc3RTdGF0ZSxcbiAgU29ydGluZ0RpcmVjdGlvblxufSBmcm9tICdAbmdkdXgvZGF0YS1tb2RlbC1jb21tb24nO1xuaW1wb3J0IHtcbiAgY3JlYXRlTG9hZGluZ1N0YXRlQWN0aW9uSGFuZGxlcnMsXG4gIGNyZWF0ZVJlcXVlc3RTdGF0ZUFjdGlvbkhhbmRsZXJzLFxuICBnZXRMYXN0UGFnZU51bWJlclxufSBmcm9tICdAbmdkdXgvc3RvcmUtY29tbW9uJztcbmltcG9ydCB7IGNyZWF0ZUVudGl0eUFkYXB0ZXIsIEVudGl0eUFkYXB0ZXIgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xuaW1wb3J0IHsgQWN0aW9uUmVkdWNlciwgY3JlYXRlUmVkdWNlciwgb24sIFJlZHVjZXJUeXBlcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEFjdGlvbkNyZWF0b3IgfSBmcm9tICdAbmdyeC9zdG9yZS9zcmMvbW9kZWxzJztcblxuaW1wb3J0IHsgTGlzdEFjdGlvbnMsIExpc3RTdGF0ZSB9IGZyb20gJy4uL21vZGVscy9saXN0Lm1vZGVsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RFbnRpdHlBZGFwdGVyPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihpZEtleSA9ICdpZCcpOiBFbnRpdHlBZGFwdGVyPFQ+IHtcbiAgcmV0dXJuIGNyZWF0ZUVudGl0eUFkYXB0ZXIoe1xuICAgIHNlbGVjdElkOiByZXNvdXJjZSA9PiByZXNvdXJjZVtpZEtleV1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaXN0UmVkdWNlcjxULCBFLCBTID0gVD4oXG4gIGVudGl0eUFkYXB0ZXI6IEVudGl0eUFkYXB0ZXI8Uz4sXG4gIGFjdGlvbnM6IExpc3RBY3Rpb25zPFQsIEUsIFM+LFxuICBhY3Rpb25IYW5kbGVycz86IFJlZHVjZXJUeXBlczxMaXN0U3RhdGU8UywgRT4sIEFjdGlvbkNyZWF0b3JbXT5bXSxcbiAgaW5pdGlhbExpc3RTdGF0ZT86IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9XG4pOiBBY3Rpb25SZWR1Y2VyPExpc3RTdGF0ZTxTLCBFPj4ge1xuICBjb25zdCBpbml0aWFsU3RhdGU6IExpc3RTdGF0ZTxTLCBFPiA9IHsgLi4uY3JlYXRlSW5pdGlhbExpc3RTdGF0ZTxTLCBFPihlbnRpdHlBZGFwdGVyKSwgLi4uaW5pdGlhbExpc3RTdGF0ZSB9O1xuICByZXR1cm4gY3JlYXRlUmVkdWNlcjxMaXN0U3RhdGU8UywgRT4+KFxuICAgIGluaXRpYWxTdGF0ZSxcbiAgICAuLi5jcmVhdGVMaXN0QWN0aW9uSGFuZGxlcnM8VCwgRSwgUz4oaW5pdGlhbFN0YXRlLCBlbnRpdHlBZGFwdGVyLCBhY3Rpb25zKSxcbiAgICAuLi4oYWN0aW9uSGFuZGxlcnMgfHwgW10pXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxMaXN0U3RhdGU8VCwgRT4oZW50aXR5QWRhcHRlcjogRW50aXR5QWRhcHRlcjxUPik6IExpc3RTdGF0ZTxULCBFPiB7XG4gIHJldHVybiBlbnRpdHlBZGFwdGVyLmdldEluaXRpYWxTdGF0ZSh7XG4gICAgLi4uREVGQVVMVF9SRVFVRVNUX09QVElPTlMsXG4gICAgbGFzdFBhZ2VOdW1iZXI6IHVuZGVmaW5lZCxcbiAgICBzZWxlY3RlZFJlc291cmNlSWRzOiBbXSxcbiAgICBsb2FkaW5nU3RhdGU6IFJlcXVlc3RTdGF0ZS5JRExFLFxuICAgIHJlcXVlc3RTdGF0ZTogUmVxdWVzdFN0YXRlLklETEUsXG4gICAgZXJyb3JzOiB1bmRlZmluZWRcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpc3RBY3Rpb25IYW5kbGVyczxULCBFLCBTPihcbiAgaW5pdGlhbExpc3RTdGF0ZTogTGlzdFN0YXRlPFMsIEU+LFxuICBlbnRpdHlBZGFwdGVyOiBFbnRpdHlBZGFwdGVyPFM+LFxuICBhY3Rpb25zOiBMaXN0QWN0aW9uczxULCBFLCBTPlxuKTogUmVkdWNlclR5cGVzPExpc3RTdGF0ZTxTLCBFPiwgQWN0aW9uQ3JlYXRvcltdPltdIHtcbiAgcmV0dXJuIFtcbiAgICBvbihhY3Rpb25zLnJlaW5pdGlhbGl6ZSwgKCkgPT4gaW5pdGlhbExpc3RTdGF0ZSksXG4gICAgb24oYWN0aW9ucy5pbml0aWFsaXplLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFPikgPT5cbiAgICAgIGVudGl0eUFkYXB0ZXIucmVtb3ZlQWxsKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzb3VyY2VJZHM6IFtdLFxuICAgICAgICBwYWdpbmdPcHRpb25zOiB7XG4gICAgICAgICAgLi4uc3RhdGUucGFnaW5nT3B0aW9ucyxcbiAgICAgICAgICBwYWdlOiAxXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKSxcbiAgICBvbihhY3Rpb25zLnJlZnJlc2gsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+KSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50UGFnZVN0YXJ0SW5kZXggPSAoc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlIC0gMSkgKiBzdGF0ZS5wYWdpbmdPcHRpb25zLnBhZ2VTaXplO1xuICAgICAgY29uc3QgcmVzb3VyY2VJZHMgPSBzdGF0ZS5pZHMuc2xpY2UoY3VycmVudFBhZ2VTdGFydEluZGV4KSBhcyBzdHJpbmdbXTtcblxuICAgICAgcmV0dXJuIGVudGl0eUFkYXB0ZXIucmVtb3ZlTWFueShyZXNvdXJjZUlkcywgc3RhdGUpO1xuICAgIH0pLFxuXG4gICAgb24oYWN0aW9ucy5jaGFuZ2VQYWdlU2l6ZSwgKHN0YXRlOiBMaXN0U3RhdGU8UywgRT4sIHsgcGFnZVNpemUgfSkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgcGFnaW5nT3B0aW9uczogeyAuLi5zdGF0ZS5wYWdpbmdPcHRpb25zLCBwYWdlU2l6ZSB9LFxuICAgICAgbGFzdFBhZ2VOdW1iZXI6IHVuZGVmaW5lZFxuICAgIH0pKSxcbiAgICBvbihhY3Rpb25zLmNoYW5nZVNvcnRpbmcsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+LCB7IHNvcnRpbmdGaWVsZCB9KSA9PiB7XG4gICAgICBjb25zdCBzb3J0aW5nT3B0aW9ucyA9IHsgLi4uc3RhdGUuc29ydGluZ09wdGlvbnMgfTtcbiAgICAgIGlmIChzb3J0aW5nRmllbGQuZGlyZWN0aW9uID09PSBTb3J0aW5nRGlyZWN0aW9uLk5PTkUpIHtcbiAgICAgICAgZGVsZXRlIHNvcnRpbmdPcHRpb25zW3NvcnRpbmdGaWVsZC5maWVsZF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzb3J0aW5nT3B0aW9uc1tzb3J0aW5nRmllbGQuZmllbGRdID0gc29ydGluZ0ZpZWxkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNvcnRpbmdPcHRpb25zXG4gICAgICB9O1xuICAgIH0pLFxuICAgIG9uKGFjdGlvbnMuY2hhbmdlRmlsdGVyaW5nLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFPiwgeyBmaWx0ZXJpbmdPcHRpb25zIH0pID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGZpbHRlcmluZ09wdGlvbnMsXG4gICAgICBsYXN0UGFnZU51bWJlcjogdW5kZWZpbmVkXG4gICAgfSkpLFxuICAgIG9uKGFjdGlvbnMuY2hhbmdlU2VsZWN0ZWQsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+LCB7IHNlbGVjdGVkUmVzb3VyY2VJZHMgfSkgPT4gKHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2VsZWN0ZWRSZXNvdXJjZUlkc1xuICAgIH0pKSxcbiAgICBvbihhY3Rpb25zLmxvYWRGaXJzdFBhZ2UsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+KSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBwYWdpbmdPcHRpb25zOiB7IC4uLnN0YXRlLnBhZ2luZ09wdGlvbnMsIHBhZ2U6IDEgfVxuICAgIH0pKSxcbiAgICBvbihhY3Rpb25zLmxvYWROZXh0UGFnZSwgKHN0YXRlOiBMaXN0U3RhdGU8UywgRT4pID0+IHtcbiAgICAgIGlmIChzdGF0ZS5wYWdpbmdPcHRpb25zLnBhZ2UgPT09IHN0YXRlLmxhc3RQYWdlTnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlICsgMSA9PT0gc3RhdGUubGFzdFBhZ2VOdW1iZXIgJiZcbiAgICAgICAgc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlICsgMSA+IChERUZBVUxUX1NUT1JFRF9QQUdFUyArIDEpIC8gMlxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHJlc291cmNlSWRzID0gc3RhdGUuaWRzLnNsaWNlKDAsIHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZVNpemUpIGFzIHN0cmluZ1tdO1xuICAgICAgICBzdGF0ZSA9IGVudGl0eUFkYXB0ZXIucmVtb3ZlTWFueShyZXNvdXJjZUlkcywgeyAuLi5zdGF0ZSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBhZ2luZ09wdGlvbnM6IHtcbiAgICAgICAgICAuLi5zdGF0ZS5wYWdpbmdPcHRpb25zLFxuICAgICAgICAgIHBhZ2U6IHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZSArIDFcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KSxcbiAgICBvbihhY3Rpb25zLmxvYWRQcmV2aW91c1BhZ2UsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+KSA9PiB7XG4gICAgICBpZiAoc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlID09PSAxKSB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBwYWdpbmdPcHRpb25zOiB7XG4gICAgICAgICAgLi4uc3RhdGUucGFnaW5nT3B0aW9ucyxcbiAgICAgICAgICBwYWdlOiBzdGF0ZS5wYWdpbmdPcHRpb25zLnBhZ2UgLSAxXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSksXG4gICAgb24oYWN0aW9ucy5sb2FkUGFnZVN1Y2Nlc3MsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+LCB7IHJlc291cmNlcywgcGFnaW5nT3B0aW9ucyB9KSA9PiB7XG4gICAgICBpZiAocGFnaW5nT3B0aW9ucy5wYWdlIDwgc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVQcmV2aW91c1BhZ2VTdWNjZXNzU3RhdGUoZW50aXR5QWRhcHRlciwgc3RhdGUsIHJlc291cmNlcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjcmVhdGVOZXh0UGFnZVN1Y2Nlc3NTdGF0ZShlbnRpdHlBZGFwdGVyLCBzdGF0ZSwgcGFnaW5nT3B0aW9ucywgcmVzb3VyY2VzKTtcbiAgICB9KSxcbiAgICBvbihhY3Rpb25zLmRlbGV0ZVN1Y2Nlc3MsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEU+KSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzZWxlY3RlZFJlc291cmNlSWRzOiBbXSBhcyBzdHJpbmdbXVxuICAgIH0pKSxcbiAgICBvbihhY3Rpb25zLm5hdmlnYXRlVG9TZWxlY3RlZCwgKHN0YXRlOiBMaXN0U3RhdGU8UywgRT4sIHsgcmVzb3VyY2VJZCB9KSA9PiAoe1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBjdXJyZW50UmVzb3VyY2VJZDogcmVzb3VyY2VJZFxuICAgIH0pKSxcblxuICAgIC4uLmNyZWF0ZUxvYWRpbmdTdGF0ZUFjdGlvbkhhbmRsZXJzPExpc3RTdGF0ZTxTLCBFPj4oXG4gICAgICBhY3Rpb25zLmxvYWRQYWdlLFxuICAgICAgYWN0aW9ucy5sb2FkUGFnZVN1Y2Nlc3MsXG4gICAgICBhY3Rpb25zLmxvYWRQYWdlRmFpbHVyZVxuICAgICksXG4gICAgLi4uY3JlYXRlUmVxdWVzdFN0YXRlQWN0aW9uSGFuZGxlcnM8TGlzdFN0YXRlPFMsIEU+LCBFPihcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGFjdGlvbnMuZGVsZXRlLFxuICAgICAgYWN0aW9ucy5kZWxldGVTdWNjZXNzLFxuICAgICAgYWN0aW9ucy5kZWxldGVGYWlsdXJlXG4gICAgKSxcbiAgICAuLi5jcmVhdGVSZXF1ZXN0U3RhdGVBY3Rpb25IYW5kbGVyczxMaXN0U3RhdGU8UywgRT4sIEU+KFxuICAgICAgYWN0aW9ucy5yZXNldFJlcXVlc3RTdGF0ZSxcbiAgICAgIGFjdGlvbnMucGF0Y2gsXG4gICAgICBhY3Rpb25zLnBhdGNoU3VjY2VzcyxcbiAgICAgIGFjdGlvbnMucGF0Y2hGYWlsdXJlXG4gICAgKVxuICBdO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQcmV2aW91c1BhZ2VTdWNjZXNzU3RhdGU8VCwgRT4oXG4gIGVudGl0eUFkYXB0ZXI6IEVudGl0eUFkYXB0ZXI8VD4sXG4gIHN0YXRlOiBMaXN0U3RhdGU8VCwgRT4sXG4gIHJlc291cmNlczogVFtdXG4pOiBMaXN0U3RhdGU8VCwgRT4ge1xuICBjb25zdCByZXNvdXJjZUlkczogc3RyaW5nW10gPSBzdGF0ZS5pZHMuc2xpY2UoXG4gICAgMCxcbiAgICAoREVGQVVMVF9TVE9SRURfUEFHRVMgLSAxKSAqIHN0YXRlLnBhZ2luZ09wdGlvbnMucGFnZVNpemVcbiAgKSBhcyBzdHJpbmdbXTtcblxuICByZXR1cm4gZW50aXR5QWRhcHRlci5zZXRBbGwoWy4uLnJlc291cmNlcywgLi4ucmVzb3VyY2VJZHMubWFwKHJlc291cmNlSWQgPT4gc3RhdGUuZW50aXRpZXNbcmVzb3VyY2VJZF0pXSwge1xuICAgIC4uLnN0YXRlLFxuICAgIHNlbGVjdGVkUmVzb3VyY2VJZHM6IFtdXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVOZXh0UGFnZVN1Y2Nlc3NTdGF0ZTxULCBFPihcbiAgZW50aXR5QWRhcHRlcjogRW50aXR5QWRhcHRlcjxUPixcbiAgc3RhdGU6IExpc3RTdGF0ZTxULCBFPixcbiAgcGFnaW5nT3B0aW9uczogUGFnaW5nT3B0aW9ucyxcbiAgcmVzb3VyY2VzOiBUW11cbik6IExpc3RTdGF0ZTxULCBFPiB7XG4gIGxldCByZXNvdXJjZUlkczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgbGFzdFBhZ2VOdW1iZXIgPSBnZXRMYXN0UGFnZU51bWJlcihyZXNvdXJjZXMsIHBhZ2luZ09wdGlvbnMpIHx8IHN0YXRlLmxhc3RQYWdlTnVtYmVyO1xuXG4gIGlmIChwYWdpbmdPcHRpb25zLnBhZ2UgPiBERUZBVUxUX1NUT1JFRF9QQUdFUyAmJiBsYXN0UGFnZU51bWJlciAhPT0gc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlKSB7XG4gICAgcmVzb3VyY2VJZHMgPSBzdGF0ZS5pZHMuc2xpY2UoMCwgc3RhdGUucGFnaW5nT3B0aW9ucy5wYWdlU2l6ZSkgYXMgc3RyaW5nW107XG4gICAgc3RhdGUgPSBlbnRpdHlBZGFwdGVyLnJlbW92ZU1hbnkocmVzb3VyY2VJZHMsIHsgLi4uc3RhdGUgfSk7XG4gIH1cblxuICByZXR1cm4gZW50aXR5QWRhcHRlci5hZGRNYW55KHJlc291cmNlcywge1xuICAgIC4uLnN0YXRlLFxuICAgIGxhc3RQYWdlTnVtYmVyLFxuICAgIHNlbGVjdGVkUmVzb3VyY2VJZHM6IFtdXG4gIH0pO1xufVxuIl19
@@ -0,0 +1,70 @@
1
+ /* eslint-disable @typescript-eslint/ban-types */
2
+ import { DEFAULT_STORED_PAGES, RequestState } from '@ngdux/data-model-common';
3
+ import { createSelector } from '@ngrx/store';
4
+ export function createListSelectors(entityAdapter, getListState) {
5
+ const getAll = createSelector(getListState, entityAdapter.getSelectors().selectAll);
6
+ const getPagingOptions = createSelector(getListState, state => state.pagingOptions);
7
+ const getRequestOptions = createSelector(getListState, (state) => ({
8
+ pagingOptions: state.pagingOptions,
9
+ sortingOptions: state.sortingOptions,
10
+ filteringOptions: state.filteringOptions
11
+ }));
12
+ const getLastPageNumber = createSelector(getListState, state => state.lastPageNumber);
13
+ const isLastPage = createSelector(getPagingOptions, getLastPageNumber, ({ page }, lastPageNumber) => {
14
+ return lastPageNumber <= page;
15
+ });
16
+ const getCurrentPageData = createSelector(getPagingOptions, getAll, ({ page, pageSize }, resources) => {
17
+ const defaultStoredPageIndex = (DEFAULT_STORED_PAGES + 1) / 2;
18
+ if (page < defaultStoredPageIndex) {
19
+ return resources.slice((page - 1) * pageSize, page * pageSize);
20
+ }
21
+ return resources.slice((defaultStoredPageIndex - 1) * pageSize, defaultStoredPageIndex * pageSize);
22
+ });
23
+ const getSortingOptions = createSelector(getListState, state => state.sortingOptions);
24
+ const getFilteringOptions = createSelector(getListState, state => state.filteringOptions);
25
+ const getCurrentPageNumber = createSelector(getPagingOptions, options => options.page);
26
+ const getSelectedResourceIds = createSelector(getListState, state => state.selectedResourceIds);
27
+ const getLoadingState = createSelector(getListState, state => state.loadingState);
28
+ const getSelected = createSelector(getSelectedResourceIds, createSelector(getListState, entityAdapter.getSelectors().selectEntities), (selectedResourceIds, resources) => selectedResourceIds.map(selectedResourceId => resources[selectedResourceId]));
29
+ const getSelectionRecord = createSelector(getSelectedResourceIds, createSelector(getListState, entityAdapter.getSelectors().selectEntities), (selectedResourceIds, resources) => selectedResourceIds.reduce((selected, selectedResourceId) => {
30
+ selected[selectedResourceId] = resources[selectedResourceId];
31
+ return selected;
32
+ }, {}));
33
+ const getRequestState = createSelector(getListState, state => state.requestState);
34
+ const getErrors = createSelector(getListState, state => state.errors);
35
+ const isReady = createSelector(getAll, getLoadingState, (users, loadingState) => !!users && loadingState === RequestState.SUCCESS);
36
+ const areSelectedReady = createSelector(getSelectedResourceIds, getSelectionRecord, getLoadingState, (selectedResourceIds, resources, loadingState) => {
37
+ return selectedResourceIds.every(resourceId => !!resources[resourceId]) && loadingState === RequestState.SUCCESS;
38
+ });
39
+ const isDeleteDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => !selectedResourceIds.length);
40
+ const isCopyDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => selectedResourceIds.length !== 1);
41
+ const getTotalCount = createSelector(getPagingOptions, isLastPage, getCurrentPageData, (pagingOptions, isLastPage, currentPageData) => {
42
+ if (isLastPage) {
43
+ return (pagingOptions.page - 1) * pagingOptions.pageSize + currentPageData.length;
44
+ }
45
+ return (pagingOptions.page + 1) * pagingOptions.pageSize;
46
+ });
47
+ return {
48
+ getAll,
49
+ getRequestOptions,
50
+ isLastPage,
51
+ getCurrentPageData,
52
+ getPagingOptions,
53
+ getSortingOptions,
54
+ getFilteringOptions,
55
+ getCurrentPageNumber,
56
+ getLastPageNumber,
57
+ getLoadingState,
58
+ getSelectedResourceIds,
59
+ getSelected,
60
+ getSelectionRecord,
61
+ getRequestState,
62
+ getErrors,
63
+ areSelectedReady,
64
+ isReady,
65
+ isDeleteDisabled,
66
+ isCopyDisabled,
67
+ getTotalCount
68
+ };
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvbGlzdC9zcmMvbGliLytzdGF0ZS9saXN0LXNlbGVjdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpREFBaUQ7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFrQixZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5RixPQUFPLEVBQUUsY0FBYyxFQUF3QyxNQUFNLGFBQWEsQ0FBQztBQUduRixNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLGFBQStCLEVBQy9CLFlBQTRGO0lBRTVGLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXBGLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVwRixNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FDdEMsWUFBWSxFQUNaLENBQUMsS0FBSyxFQUFrQixFQUFFLENBQUMsQ0FBQztRQUMxQixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7UUFDbEMsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1FBQ3BDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7S0FDekMsQ0FBQyxDQUNILENBQUM7SUFFRixNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFdEYsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRTtRQUNsRyxPQUFPLGNBQWMsSUFB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Q2xCLGVBQWU7UUFDZixTQUFTO1FBQ1QsZ0JBQWdCO1FBQ2hCLE9BQU87UUFDUCxnQkFBZ0I7UUFDaEIsY0FBYztRQUNkLGFBQWE7S0FDZCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXMgKi9cbmltcG9ydCB7IERFRkFVTFRfU1RPUkVEX1BBR0VTLCBSZXF1ZXN0T3B0aW9ucywgUmVxdWVzdFN0YXRlIH0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcbmltcG9ydCB7IEVudGl0eUFkYXB0ZXIgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xuaW1wb3J0IHsgY3JlYXRlU2VsZWN0b3IsIERlZmF1bHRQcm9qZWN0b3JGbiwgTWVtb2l6ZWRTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IExpc3RTZWxlY3RvcnMsIExpc3RTdGF0ZSB9IGZyb20gJy4uL21vZGVscy9saXN0Lm1vZGVsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RTZWxlY3RvcnM8VCwgRT4oXG4gIGVudGl0eUFkYXB0ZXI6IEVudGl0eUFkYXB0ZXI8VD4sXG4gIGdldExpc3RTdGF0ZTogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIExpc3RTdGF0ZTxULCBFPiwgRGVmYXVsdFByb2plY3RvckZuPExpc3RTdGF0ZTxULCBFPj4+XG4pOiBMaXN0U2VsZWN0b3JzPFQsIEU+IHtcbiAgY29uc3QgZ2V0QWxsID0gY3JlYXRlU2VsZWN0b3IoZ2V0TGlzdFN0YXRlLCBlbnRpdHlBZGFwdGVyLmdldFNlbGVjdG9ycygpLnNlbGVjdEFsbCk7XG5cbiAgY29uc3QgZ2V0UGFnaW5nT3B0aW9ucyA9IGNyZWF0ZVNlbGVjdG9yKGdldExpc3RTdGF0ZSwgc3RhdGUgPT4gc3RhdGUucGFnaW5nT3B0aW9ucyk7XG5cbiAgY29uc3QgZ2V0UmVxdWVzdE9wdGlvbnMgPSBjcmVhdGVTZWxlY3RvcihcbiAgICBnZXRMaXN0U3RhdGUsXG4gICAgKHN0YXRlKTogUmVxdWVzdE9wdGlvbnMgPT4gKHtcbiAgICAgIHBhZ2luZ09wdGlvbnM6IHN0YXRlLnBhZ2luZ09wdGlvbnMsXG4gICAgICBzb3J0aW5nT3B0aW9uczogc3RhdGUuc29ydGluZ09wdGlvbnMsXG4gICAgICBmaWx0ZXJpbmdPcHRpb25zOiBzdGF0ZS5maWx0ZXJpbmdPcHRpb25zXG4gICAgfSlcbiAgKTtcblxuICBjb25zdCBnZXRMYXN0UGFnZU51bWJlciA9IGNyZWF0ZVNlbGVjdG9yKGdldExpc3RTdGF0ZSwgc3RhdGUgPT4gc3RhdGUubGFzdFBhZ2VOdW1iZXIpO1xuXG4gIGNvbnN0IGlzTGFzdFBhZ2UgPSBjcmVhdGVTZWxlY3RvcihnZXRQYWdpbmdPcHRpb25zLCBnZXRMYXN0UGFnZU51bWJlciwgKHsgcGFnZSB9LCBsYXN0UGFnZU51bWJlcikgPT4ge1xuICAgIHJldHVybiBsYXN0UGFnZU51bWJlciA8PSBwYWdlO1xuICB9KTtcblxuICBjb25zdCBnZXRDdXJyZW50UGFnZURhdGEgPSBjcmVhdGVTZWxlY3RvcihnZXRQYWdpbmdPcHRpb25zLCBnZXRBbGwsICh7IHBhZ2UsIHBhZ2VTaXplIH0sIHJlc291cmNlcykgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRTdG9yZWRQYWdlSW5kZXggPSAoREVGQVVMVF9TVE9SRURfUEFHRVMgKyAxKSAvIDI7XG5cbiAgICBpZiAocGFnZSA8IGRlZmF1bHRTdG9yZWRQYWdlSW5kZXgpIHtcbiAgICAgIHJldHVybiByZXNvdXJjZXMuc2xpY2UoKHBhZ2UgLSAxKSAqIHBhZ2VTaXplLCBwYWdlICogcGFnZVNpemUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvdXJjZXMuc2xpY2UoKGRlZmF1bHRTdG9yZWRQYWdlSW5kZXggLSAxKSAqIHBhZ2VTaXplLCBkZWZhdWx0U3RvcmVkUGFnZUluZGV4ICogcGFnZVNpemUpO1xuICB9KTtcblxuICBjb25zdCBnZXRTb3J0aW5nT3B0aW9ucyA9IGNyZWF0ZVNlbGVjdG9yKGdldExpc3RTdGF0ZSwgc3RhdGUgPT4gc3RhdGUuc29ydGluZ09wdGlvbnMpO1xuXG4gIGNvbnN0IGdldEZpbHRlcmluZ09wdGlvbnMgPSBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIHN0YXRlID0+IHN0YXRlLmZpbHRlcmluZ09wdGlvbnMpO1xuXG4gIGNvbnN0IGdldEN1cnJlbnRQYWdlTnVtYmVyID0gY3JlYXRlU2VsZWN0b3IoZ2V0UGFnaW5nT3B0aW9ucywgb3B0aW9ucyA9PiBvcHRpb25zLnBhZ2UpO1xuXG4gIGNvbnN0IGdldFNlbGVjdGVkUmVzb3VyY2VJZHMgPSBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIHN0YXRlID0+IHN0YXRlLnNlbGVjdGVkUmVzb3VyY2VJZHMpO1xuXG4gIGNvbnN0IGdldExvYWRpbmdTdGF0ZSA9IGNyZWF0ZVNlbGVjdG9yKGdldExpc3RTdGF0ZSwgc3RhdGUgPT4gc3RhdGUubG9hZGluZ1N0YXRlKTtcblxuICBjb25zdCBnZXRTZWxlY3RlZCA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIGdldFNlbGVjdGVkUmVzb3VyY2VJZHMsXG4gICAgY3JlYXRlU2VsZWN0b3IoZ2V0TGlzdFN0YXRlLCBlbnRpdHlBZGFwdGVyLmdldFNlbGVjdG9ycygpLnNlbGVjdEVudGl0aWVzKSxcbiAgICAoc2VsZWN0ZWRSZXNvdXJjZUlkcywgcmVzb3VyY2VzKTogVFtdID0+XG4gICAgICBzZWxlY3RlZFJlc291cmNlSWRzLm1hcChzZWxlY3RlZFJlc291cmNlSWQgPT4gcmVzb3VyY2VzW3NlbGVjdGVkUmVzb3VyY2VJZF0pXG4gICk7XG5cbiAgY29uc3QgZ2V0U2VsZWN0aW9uUmVjb3JkID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgZ2V0U2VsZWN0ZWRSZXNvdXJjZUlkcyxcbiAgICBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIGVudGl0eUFkYXB0ZXIuZ2V0U2VsZWN0b3JzKCkuc2VsZWN0RW50aXRpZXMpLFxuICAgIChzZWxlY3RlZFJlc291cmNlSWRzLCByZXNvdXJjZXMpOiBSZWNvcmQ8c3RyaW5nLCBUPiA9PlxuICAgICAgc2VsZWN0ZWRSZXNvdXJjZUlkcy5yZWR1Y2UoKHNlbGVjdGVkLCBzZWxlY3RlZFJlc291cmNlSWQpID0+IHtcbiAgICAgICAgc2VsZWN0ZWRbc2VsZWN0ZWRSZXNvdXJjZUlkXSA9IHJlc291cmNlc1tzZWxlY3RlZFJlc291cmNlSWRdO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBUPilcbiAgKTtcblxuICBjb25zdCBnZXRSZXF1ZXN0U3RhdGUgPSBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIHN0YXRlID0+IHN0YXRlLnJlcXVlc3RTdGF0ZSk7XG5cbiAgY29uc3QgZ2V0RXJyb3JzID0gY3JlYXRlU2VsZWN0b3IoZ2V0TGlzdFN0YXRlLCBzdGF0ZSA9PiBzdGF0ZS5lcnJvcnMpO1xuXG4gIGNvbnN0IGlzUmVhZHkgPSBjcmVhdGVTZWxlY3RvcihcbiAgICBnZXRBbGwsXG4gICAgZ2V0TG9hZGluZ1N0YXRlLFxuICAgICh1c2VycywgbG9hZGluZ1N0YXRlKSA9PiAhIXVzZXJzICYmIGxvYWRpbmdTdGF0ZSA9PT0gUmVxdWVzdFN0YXRlLlNVQ0NFU1NcbiAgKTtcblxuICBjb25zdCBhcmVTZWxlY3RlZFJlYWR5ID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgZ2V0U2VsZWN0ZWRSZXNvdXJjZUlkcyxcbiAgICBnZXRTZWxlY3Rpb25SZWNvcmQsXG4gICAgZ2V0TG9hZGluZ1N0YXRlLFxuICAgIChzZWxlY3RlZFJlc291cmNlSWRzLCByZXNvdXJjZXMsIGxvYWRpbmdTdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHNlbGVjdGVkUmVzb3VyY2VJZHMuZXZlcnkocmVzb3VyY2VJZCA9PiAhIXJlc291cmNlc1tyZXNvdXJjZUlkXSkgJiYgbG9hZGluZ1N0YXRlID09PSBSZXF1ZXN0U3RhdGUuU1VDQ0VTUztcbiAgICB9XG4gICk7XG5cbiAgY29uc3QgaXNEZWxldGVEaXNhYmxlZCA9IGNyZWF0ZVNlbGVjdG9yKGdldFNlbGVjdGVkUmVzb3VyY2VJZHMsIHNlbGVjdGVkUmVzb3VyY2VJZHMgPT4gIXNlbGVjdGVkUmVzb3VyY2VJZHMubGVuZ3RoKTtcblxuICBjb25zdCBpc0NvcHlEaXNhYmxlZCA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgIGdldFNlbGVjdGVkUmVzb3VyY2VJZHMsXG4gICAgc2VsZWN0ZWRSZXNvdXJjZUlkcyA9PiBzZWxlY3RlZFJlc291cmNlSWRzLmxlbmd0aCAhPT0gMVxuICApO1xuXG4gIGNvbnN0IGdldFRvdGFsQ291bnQgPSBjcmVhdGVTZWxlY3RvcihcbiAgICBnZXRQYWdpbmdPcHRpb25zLFxuICAgIGlzTGFzdFBhZ2UsXG4gICAgZ2V0Q3VycmVudFBhZ2VEYXRhLFxuICAgIChwYWdpbmdPcHRpb25zLCBpc0xhc3RQYWdlLCBjdXJyZW50UGFnZURhdGEpID0+IHtcbiAgICAgIGlmIChpc0xhc3RQYWdlKSB7XG4gICAgICAgIHJldHVybiAocGFnaW5nT3B0aW9ucy5wYWdlIC0gMSkgKiBwYWdpbmdPcHRpb25zLnBhZ2VTaXplICsgY3VycmVudFBhZ2VEYXRhLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAocGFnaW5nT3B0aW9ucy5wYWdlICsgMSkgKiBwYWdpbmdPcHRpb25zLnBhZ2VTaXplO1xuICAgIH1cbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGdldEFsbCxcbiAgICBnZXRSZXF1ZXN0T3B0aW9ucyxcbiAgICBpc0xhc3RQYWdlLFxuICAgIGdldEN1cnJlbnRQYWdlRGF0YSxcbiAgICBnZXRQYWdpbmdPcHRpb25zLFxuICAgIGdldFNvcnRpbmdPcHRpb25zLFxuICAgIGdldEZpbHRlcmluZ09wdGlvbnMsXG4gICAgZ2V0Q3VycmVudFBhZ2VOdW1iZXIsXG4gICAgZ2V0TGFzdFBhZ2VOdW1iZXIsXG4gICAgZ2V0TG9hZGluZ1N0YXRlLFxuICAgIGdldFNlbGVjdGVkUmVzb3VyY2VJZHMsXG4gICAgZ2V0U2VsZWN0ZWQsXG4gICAgZ2V0U2VsZWN0aW9uUmVjb3JkLFxuICAgIGdldFJlcXVlc3RTdGF0ZSxcbiAgICBnZXRFcnJvcnMsXG4gICAgYXJlU2VsZWN0ZWRSZWFkeSxcbiAgICBpc1JlYWR5LFxuICAgIGlzRGVsZXRlRGlzYWJsZWQsXG4gICAgaXNDb3B5RGlzYWJsZWQsXG4gICAgZ2V0VG90YWxDb3VudFxuICB9O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9saXN0L3NyYy9saWIvbW9kZWxzL2xpc3QubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXMgKi9cbmltcG9ydCB7XG4gIEVycm9yRHRvLFxuICBGaWx0ZXJpbmdPcHRpb25zLFxuICBQYWdpbmdPcHRpb25zLFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgUmVxdWVzdFN0YXRlLFxuICBTb3J0aW5nRmllbGQsXG4gIFNvcnRpbmdPcHRpb25zXG59IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XG5pbXBvcnQgeyBBcGlSZXF1ZXN0U3RhdGUsIExvYWRpbmdTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9zdG9yZS1jb21tb24nO1xuaW1wb3J0IHsgRW50aXR5U3RhdGUgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciwgTWVtb2l6ZWRTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFR5cGVkQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUvc3JjL21vZGVscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFN0YXRlPFQsIEU+IGV4dGVuZHMgRW50aXR5U3RhdGU8VD4sIFJlcXVlc3RPcHRpb25zLCBBcGlSZXF1ZXN0U3RhdGU8RT4sIExvYWRpbmdTdGF0ZSB7XG4gIHNlbGVjdGVkUmVzb3VyY2VJZHM6IHN0cmluZ1tdO1xuICBsYXN0UGFnZU51bWJlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RTZWxlY3RvcnM8VCwgRT4ge1xuICBnZXRBbGw6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBUW10+O1xuICBnZXRSZXF1ZXN0T3B0aW9uczogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFJlcXVlc3RPcHRpb25zPjtcbiAgaXNMYXN0UGFnZTogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIGJvb2xlYW4+O1xuICBnZXRDdXJyZW50UGFnZURhdGE6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBUW10+O1xuICBnZXRQYWdpbmdPcHRpb25zOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgUGFnaW5nT3B0aW9ucz47XG4gIGdldFNvcnRpbmdPcHRpb25zOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgU29ydGluZ09wdGlvbnM+O1xuICBnZXRGaWx0ZXJpbmdPcHRpb25zOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgRmlsdGVyaW5nT3B0aW9ucz47XG4gIGdldEN1cnJlbnRQYWdlTnVtYmVyOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgbnVtYmVyPjtcbiAgZ2V0TGFzdFBhZ2VOdW1iZXI6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBudW1iZXI+O1xuICBnZXRMb2FkaW5nU3RhdGU6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBSZXF1ZXN0U3RhdGU+O1xuICBnZXRTZWxlY3RlZFJlc291cmNlSWRzOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgc3RyaW5nW10+O1xuICBnZXRTZWxlY3RlZDogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFRbXT47XG4gIGdldFNlbGVjdGlvblJlY29yZDogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFJlY29yZDxzdHJpbmcsIFQ+PjtcbiAgZ2V0UmVxdWVzdFN0YXRlOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgUmVxdWVzdFN0YXRlPjtcbiAgZ2V0RXJyb3JzOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgRT47XG4gIGFyZVNlbGVjdGVkUmVhZHk6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBib29sZWFuPjtcbiAgaXNSZWFkeTogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIGJvb2xlYW4+O1xuICBpc0RlbGV0ZURpc2FibGVkOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgYm9vbGVhbj47XG4gIGlzQ29weURpc2FibGVkOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgYm9vbGVhbj47XG4gIGdldFRvdGFsQ291bnQ6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBudW1iZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RBY3Rpb25zPFQsIEUsIFMgPSBUPiB7XG4gIGluaXRpYWxpemVSZXF1ZXN0T3B0aW9uczogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICBjaGFuZ2VQYWdpbmdPcHRpb25zOiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAocHJvcHM6IHsgcGFnaW5nT3B0aW9uczogUGFnaW5nT3B0aW9ucyB9KSA9PiB7IHBhZ2luZ09wdGlvbnM6IFBhZ2luZ09wdGlvbnMgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cbiAgPjtcbiAgY2hhbmdlUGFnZVNpemU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgcGFnZVNpemU6IG51bWJlciB9KSA9PiB7IHBhZ2VTaXplOiBudW1iZXIgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICBjaGFuZ2VTb3J0aW5nOiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAocHJvcHM6IHsgc29ydGluZ0ZpZWxkOiBTb3J0aW5nRmllbGQgfSkgPT4geyBzb3J0aW5nRmllbGQ6IFNvcnRpbmdGaWVsZCB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxuICA+O1xuICBjaGFuZ2VGaWx0ZXJpbmc6IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgIChwcm9wczogeyBmaWx0ZXJpbmdPcHRpb25zOiBGaWx0ZXJpbmdPcHRpb25zIH0pID0+IHsgZmlsdGVyaW5nT3B0aW9uczogRmlsdGVyaW5nT3B0aW9ucyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxuICA+O1xuXG4gIGNoYW5nZVNlbGVjdGVkOiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAocHJvcHM6IHsgc2VsZWN0ZWRSZXNvdXJjZUlkczogc3RyaW5nW10gfSkgPT4geyBzZWxlY3RlZFJlc291cmNlSWRzOiBzdHJpbmdbXSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxuICA+O1xuICBsb2FkUGFnZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBwYWdlTnVtYmVyOiBudW1iZXIgfSkgPT4geyBwYWdlTnVtYmVyOiBudW1iZXIgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICBsb2FkUGFnZVN1Y2Nlc3M6IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgIChwcm9wczoge1xuICAgICAgcmVzb3VyY2VzOiBTW107XG4gICAgICBwYWdpbmdPcHRpb25zOiBQYWdpbmdPcHRpb25zO1xuICAgIH0pID0+IHsgcmVzb3VyY2VzOiBTW107IHBhZ2luZ09wdGlvbnM6IFBhZ2luZ09wdGlvbnMgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cbiAgPjtcbiAgbG9hZFBhZ2VGYWlsdXJlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGVycm9yczogRSB9KSA9PiB7IGVycm9yczogRSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIGRlbGV0ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyByZXNvdXJjZUlkczogc3RyaW5nW10gfSkgPT4geyByZXNvdXJjZUlkczogc3RyaW5nW10gfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICBkZWxldGVTdWNjZXNzOiBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAocHJvcHM6IHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0pID0+IHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XG4gID47XG4gIGRlbGV0ZUZhaWx1cmU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3JzOiBFIH0pID0+IHsgZXJyb3JzOiBFIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgcGF0Y2g6IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgIChwcm9wczoge1xuICAgICAgcmVzb3VyY2VJZHM6IHN0cmluZ1tdO1xuICAgICAgcmVzb3VyY2U6IFBhcnRpYWw8VD47XG4gICAgfSkgPT4geyByZXNvdXJjZUlkczogc3RyaW5nW107IHJlc291cmNlOiBQYXJ0aWFsPFQ+IH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+XG4gID47XG4gIHBhdGNoU3VjY2VzczogQWN0aW9uQ3JlYXRvcjxcbiAgICBzdHJpbmcsXG4gICAgKHByb3BzOiB7IHJlc291cmNlczogKFQgfCBFcnJvckR0bylbXSB9KSA9PiB7IHJlc291cmNlczogKFQgfCBFcnJvckR0bylbXSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPlxuICA+O1xuICBwYXRjaEZhaWx1cmU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3JzOiBFIH0pID0+IHsgZXJyb3JzOiBFIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgbG9hZE5leHRQYWdlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIHJlZnJlc2g6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgaW5pdGlhbGl6ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICByZWluaXRpYWxpemU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgbG9hZFByZXZpb3VzUGFnZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICBsb2FkRmlyc3RQYWdlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIHJlc2V0UmVxdWVzdFN0YXRlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIGNvcHlTZWxlY3RlZDogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICBuYXZpZ2F0ZVRvU2VsZWN0ZWQ6IEFjdGlvbkNyZWF0b3I8XG4gICAgc3RyaW5nLFxuICAgIChwcm9wczogeyByZXNvdXJjZUlkOiBzdHJpbmcgfSkgPT4geyByZXNvdXJjZUlkOiBzdHJpbmcgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz5cbiAgPjtcbiAgc2hvd1JlbW92YWxzQ29uZmlybWF0aW9uOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdkdXgtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9saXN0L3NyYy9uZ2R1eC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19