@ngdux/list 0.1.8 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,162 +1,162 @@
1
- # @ngdux/list
2
-
3
- The @ngdux/list gives yo a full state to make easy to load, save and delete resources. It gives also support to paging, filtering and sorting.
4
-
5
- Example:
6
-
7
- ## Option 1
8
-
9
- ### Full state
10
-
11
- ```
12
- import { UserDto } from '@demo/demo/data-model/users';
13
- import { ErrorDto } from '@ngdux/data-model-common';
14
- import { createListState } from '@ngdux/list';
15
-
16
- export const USERS_FEATURE_KEY = 'users';
17
- export const {
18
- actions: usesActions,
19
- selectors: usersSelectors,
20
- reducer: usersReducer,
21
- entityAdapter: usersEntityAdapter
22
- } = createListState<UserDto, ErrorDto>(USERS_FEATURE_KEY);
23
- ```
24
-
25
- ## Option 2
26
-
27
- ### Actions
28
-
29
- ```
30
- import { createListActions } from '@ngdux/list';
31
- import { User, Error } from './models';
32
-
33
- export const listActions = createListActions<User, Error>('Users');
34
- ```
35
-
36
- ### Reducer
37
-
38
- ```
39
- import { createListEntityAdapter, createListReducer, ListState } from '@ngdux/list';
40
- import { Action } from '@ngrx/store';
41
- import { User, Error } from './models';
42
- import { listActions } from './users.actions';
43
-
44
- export const USERS_FEATURE_KEY = 'users';
45
- export const entityAdapter = createListEntityAdapter<User>();
46
-
47
- const reducer = createListReducer<User, Error>(entityAdapter, listActions);
48
-
49
- export function usersReducer(state: ListState<User, Error>, action: Action): ListState<User, Error> {
50
- return reducer(state, action);
51
- }
52
- ```
53
-
54
- ### Selectors
55
-
56
- ```
57
- import { createListSelectors, ListState } from '@ngdux/list';
58
- import { createFeatureSelector } from '@ngrx/store';
59
- import { User, Error } from './models';
60
- import { entityAdapter, USERS_FEATURE_KEY } from './users.reducer';
61
-
62
- const getState = createFeatureSelector<ListState<User, Error>>(USERS_FEATURE_KEY);
63
-
64
- export const listSelectors = createListSelectors(entityAdapter, getState);
65
- ```
66
-
67
- ## Effects
68
-
69
- ```
70
- import { Injectable } from '@angular/core';
71
- import { NotificationService } from '@demo/shared/util-notification';
72
- import { AbstractListEffects } from '@ngdux/list';
73
- import { Actions } from '@ngrx/effects';
74
- import { Store } from '@ngrx/store';
75
- import { UserService } from '../../services/user.service';
76
- import { listActions } from './users.actions';
77
- import { listSelectors } from './users.selectors';
78
- import { User, Error } from './models';
79
-
80
- @Injectable()
81
- export class UsersEffects extends AbstractListEffects<User, Error> {
82
- override texts = {
83
- deleteConfirmationTitle: 'Delete users',
84
- deleteConfirmationMessage: 'Are you sure to delete the selected users?',
85
- deletedMessage: 'The users were deleted successfully.'
86
- };
87
-
88
- constructor(
89
- actions$: Actions,
90
- store: Store,
91
- usersService: UserService,
92
- notificationService: NotificationService
93
- ) {
94
- super(actions$, store, usersService, listActions, listSelectors, notificationService);
95
- }
96
- }
97
- ```
98
-
99
- ## Service
100
-
101
- ```
102
- import { HttpClient } from '@angular/common/http';
103
- import { Injectable } from '@angular/core';
104
- import { ListService, RequestOptions } from '@ngdux/list';
105
- import { Observable } from 'rxjs';
106
- import { Error, User, USERS_RESOURCE_BASE_PATH } from './models';
107
- import { createRequestParameters } from './utils';
108
-
109
- @Injectable({
110
- providedIn: 'root'
111
- })
112
- export class UserService implements ListService<User, Error> {
113
- constructor(private httpClient: HttpClient) {}
114
-
115
- loadResources(options: RequestOptions): Observable<User[]> {
116
- const params = new HttpParams({ fromObject: createRequestParameters(options) });
117
- return this.httpClient.get<User[]>(USERS_RESOURCE_BASE_PATH, { params });
118
- }
119
-
120
- deleteResources(ids: string[]): Observable<User[]> {
121
- return this.httpClient.delete<User[]>(USERS_RESOURCE_BASE_PATH, { body: ids });
122
- }
123
-
124
- patchResources?(ids: string[], resource: Partial<User>): Observable<Array<User>> {
125
- return this.httpClient.patch<Array<User>>(
126
- USERS_RESOURCE_BASE_PATH,
127
- ids.map(id => ({ id, resource }))
128
- );
129
- }
130
- }
131
- ```
132
-
133
- ## Notification Service
134
-
135
- ```
136
- import { Injectable } from '@angular/core';
137
- import { MatDialog } from '@angular/material/dialog';
138
- import { MatSnackBar } from '@angular/material/snack-bar';
139
- import { ListNotificationService } from '@ngdux/list';
140
- import { Observable } from 'rxjs';
141
- import { ConfirmationDialogComponent } from '../components/confirmation-dialog/confirmation-dialog.component';
142
- import { Error } from './models';
143
-
144
- @Injectable()
145
- export class NotificationService implements ListNotificationService<Error> {
146
- constructor(private readonly snackBar: MatSnackBar, private readonly dialog: MatDialog) {}
147
-
148
- onListErrors(errors: Error): void {
149
- this.snackBar.open(errors.message);
150
- }
151
-
152
- onListDelete(ids: string[]): void {
153
- this.snackBar.open(`Resources ${ids.join(', ')} have been deleted.`);
154
- }
155
-
156
- openConfirmationDialog(data: { message: string; title: string }): Observable<boolean> {
157
- const dialog = this.dialog.open(ConfirmationDialogComponent, { data });
158
-
159
- return dialog.afterClosed();
160
- }
161
- }
162
- ```
1
+ # @ngdux/list
2
+
3
+ The @ngdux/list gives yo a full state to make easy to load, save and delete resources. It gives also support to paging, filtering and sorting.
4
+
5
+ Example:
6
+
7
+ ## Option 1
8
+
9
+ ### Full state
10
+
11
+ ```
12
+ import { UserDto } from '@demo/demo/data-model/users';
13
+ import { ErrorDto } from '@ngdux/data-model-common';
14
+ import { createListState } from '@ngdux/list';
15
+
16
+ export const USERS_FEATURE_KEY = 'users';
17
+ export const {
18
+ actions: usesActions,
19
+ selectors: usersSelectors,
20
+ reducer: usersReducer,
21
+ entityAdapter: usersEntityAdapter
22
+ } = createListState<UserDto, ErrorDto>(USERS_FEATURE_KEY);
23
+ ```
24
+
25
+ ## Option 2
26
+
27
+ ### Actions
28
+
29
+ ```
30
+ import { createListActions } from '@ngdux/list';
31
+ import { User, Error } from './models';
32
+
33
+ export const listActions = createListActions<User, Error>('Users');
34
+ ```
35
+
36
+ ### Reducer
37
+
38
+ ```
39
+ import { createListEntityAdapter, createListReducer, ListState } from '@ngdux/list';
40
+ import { Action } from '@ngrx/store';
41
+ import { User, Error } from './models';
42
+ import { listActions } from './users.actions';
43
+
44
+ export const USERS_FEATURE_KEY = 'users';
45
+ export const entityAdapter = createListEntityAdapter<User>();
46
+
47
+ const reducer = createListReducer<User, Error>(entityAdapter, listActions);
48
+
49
+ export function usersReducer(state: ListState<User, Error>, action: Action): ListState<User, Error> {
50
+ return reducer(state, action);
51
+ }
52
+ ```
53
+
54
+ ### Selectors
55
+
56
+ ```
57
+ import { createListSelectors, ListState } from '@ngdux/list';
58
+ import { createFeatureSelector } from '@ngrx/store';
59
+ import { User, Error } from './models';
60
+ import { entityAdapter, USERS_FEATURE_KEY } from './users.reducer';
61
+
62
+ const getState = createFeatureSelector<ListState<User, Error>>(USERS_FEATURE_KEY);
63
+
64
+ export const listSelectors = createListSelectors(entityAdapter, getState);
65
+ ```
66
+
67
+ ## Effects
68
+
69
+ ```
70
+ import { Injectable } from '@angular/core';
71
+ import { NotificationService } from '@demo/shared/util-notification';
72
+ import { AbstractListEffects } from '@ngdux/list';
73
+ import { Actions } from '@ngrx/effects';
74
+ import { Store } from '@ngrx/store';
75
+ import { UserService } from '../../services/user.service';
76
+ import { listActions } from './users.actions';
77
+ import { listSelectors } from './users.selectors';
78
+ import { User, Error } from './models';
79
+
80
+ @Injectable()
81
+ export class UsersEffects extends AbstractListEffects<User, Error> {
82
+ override texts = {
83
+ deleteConfirmationTitle: 'Delete users',
84
+ deleteConfirmationMessage: 'Are you sure to delete the selected users?',
85
+ deletedMessage: 'The users were deleted successfully.'
86
+ };
87
+
88
+ constructor(
89
+ actions$: Actions,
90
+ store: Store,
91
+ usersService: UserService,
92
+ notificationService: NotificationService
93
+ ) {
94
+ super(actions$, store, usersService, listActions, listSelectors, notificationService);
95
+ }
96
+ }
97
+ ```
98
+
99
+ ## Service
100
+
101
+ ```
102
+ import { HttpClient } from '@angular/common/http';
103
+ import { Injectable } from '@angular/core';
104
+ import { ListService, RequestOptions } from '@ngdux/list';
105
+ import { Observable } from 'rxjs';
106
+ import { Error, User, USERS_RESOURCE_BASE_PATH } from './models';
107
+ import { createRequestParameters } from './utils';
108
+
109
+ @Injectable({
110
+ providedIn: 'root'
111
+ })
112
+ export class UserService implements ListService<User, Error> {
113
+ constructor(private httpClient: HttpClient) {}
114
+
115
+ loadResources(options: RequestOptions): Observable<User[]> {
116
+ const params = new HttpParams({ fromObject: createRequestParameters(options) });
117
+ return this.httpClient.get<User[]>(USERS_RESOURCE_BASE_PATH, { params });
118
+ }
119
+
120
+ deleteResources(ids: string[]): Observable<User[]> {
121
+ return this.httpClient.delete<User[]>(USERS_RESOURCE_BASE_PATH, { body: ids });
122
+ }
123
+
124
+ patchResources?(ids: string[], resource: Partial<User>): Observable<Array<User>> {
125
+ return this.httpClient.patch<Array<User>>(
126
+ USERS_RESOURCE_BASE_PATH,
127
+ ids.map(id => ({ id, resource }))
128
+ );
129
+ }
130
+ }
131
+ ```
132
+
133
+ ## Notification Service
134
+
135
+ ```
136
+ import { Injectable } from '@angular/core';
137
+ import { MatDialog } from '@angular/material/dialog';
138
+ import { MatSnackBar } from '@angular/material/snack-bar';
139
+ import { ListNotificationService } from '@ngdux/list';
140
+ import { Observable } from 'rxjs';
141
+ import { ConfirmationDialogComponent } from '../components/confirmation-dialog/confirmation-dialog.component';
142
+ import { Error } from './models';
143
+
144
+ @Injectable()
145
+ export class NotificationService implements ListNotificationService<Error> {
146
+ constructor(private readonly snackBar: MatSnackBar, private readonly dialog: MatDialog) {}
147
+
148
+ onListErrors(errors: Error): void {
149
+ this.snackBar.open(errors.message);
150
+ }
151
+
152
+ onListDelete(ids: string[]): void {
153
+ this.snackBar.open(`Resources ${ids.join(', ')} have been deleted.`);
154
+ }
155
+
156
+ openConfirmationDialog(data: { message: string; title: string }): Observable<boolean> {
157
+ const dialog = this.dialog.open(ConfirmationDialogComponent, { data });
158
+
159
+ return dialog.afterClosed();
160
+ }
161
+ }
162
+ ```
package/esm2020/index.mjs CHANGED
@@ -1,8 +1,9 @@
1
1
  export { RequestState } from '@ngdux/data-model-common';
2
2
  export * from './lib/+state/abstract-list-effects';
3
+ export * from './lib/+state/abstract-list.facade';
3
4
  export * from './lib/+state/list-actions';
4
5
  export * from './lib/+state/list-reducer';
5
6
  export * from './lib/+state/list-selectors';
6
7
  export * from './lib/+state/list-state';
7
8
  export * from './lib/models/list.model';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvbGlzdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3RCxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IExpc3ROb3RpZmljYXRpb25TZXJ2aWNlLCBMaXN0U2VydmljZSwgUmVxdWVzdE9wdGlvbnMsIFJlcXVlc3RTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvYWJzdHJhY3QtbGlzdC1lZmZlY3RzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzdGF0ZS9saXN0LWFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2xpc3QtcmVkdWNlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvbGlzdC1zZWxlY3RvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2xpc3Qtc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2xpc3QubW9kZWwnO1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvbGlzdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3RCxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTGlzdE5vdGlmaWNhdGlvblNlcnZpY2UsIExpc3RTZXJ2aWNlLCBSZXF1ZXN0T3B0aW9ucywgUmVxdWVzdFN0YXRlIH0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2Fic3RyYWN0LWxpc3QtZWZmZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzdGF0ZS9hYnN0cmFjdC1saXN0LmZhY2FkZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzdGF0ZS9saXN0LWFjdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvbGlzdC1yZWR1Y2VyJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2xpc3Qtc2VsZWN0b3JzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2xpc3Qtc3RhdGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvbGlzdC5tb2RlbCc7XHJcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { createEffect, ofType } from '@ngrx/effects';
2
- import { createAction, select } from '@ngrx/store';
2
+ import { 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 {
@@ -14,36 +14,19 @@ export class AbstractListEffects {
14
14
  deleteConfirmationTitle: 'Delete resources',
15
15
  deleteConfirmationMessage: 'Are you sure to delete the selected resources?'
16
16
  };
17
- this.initialize$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.initialize, this.listActions.reinitialize), switchMap(() => {
18
- return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];
19
- })));
20
- 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 }))));
21
- 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 }))));
22
- this.refresh$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.refresh), withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), switchMap(([, currentPageNumber]) => [
23
- this.listActions.loadPage({ pageNumber: currentPageNumber }),
24
- this.listActions.loadPage({ pageNumber: currentPageNumber + 1 })
25
- ])));
17
+ this.reload$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.changePageSize, this.listActions.changeSorting, this.listActions.changeFiltering, this.listActions.initialize, this.listActions.reset, this.listActions.changePageNumber, this.listActions.patchSuccess, this.listActions.deleteSuccess), map(() => this.listActions.loadPage())));
18
+ this.loadFirstPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadFirstPage), map(() => this.listActions.changePageNumber({ pageNumber: 1 }))));
19
+ 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.changePageNumber({ pageNumber: currentPageNumber - 1 }))));
20
+ 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.changePageNumber({ pageNumber: currentPageNumber + 1 }))));
26
21
  this.changePagingOptions$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.changePagingOptions), withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions))), map(([action, pagingOptions]) => {
27
22
  if (action.pagingOptions.pageSize !== pagingOptions.pageSize) {
28
23
  return this.listActions.changePageSize({ pageSize: action.pagingOptions.pageSize });
29
24
  }
30
- else if (action.pagingOptions.page === pagingOptions.page + 1) {
31
- return this.listActions.loadNextPage();
32
- }
33
- else if (action.pagingOptions.page === pagingOptions.page - 1) {
34
- return this.listActions.loadPreviousPage();
35
- }
36
- else if (action.pagingOptions.page === 1) {
37
- return this.listActions.loadFirstPage();
25
+ else {
26
+ return this.listActions.changePageNumber({ pageNumber: action.pagingOptions.page });
38
27
  }
39
- return createAction('Not implement page options action');
40
28
  })));
41
- this.changeRequestOptions$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.changePageSize, this.listActions.changeSorting, this.listActions.changeFiltering, this.listActions.loadFirstPage), map(() => this.listActions.initialize())));
42
- 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]) => {
43
- pagingOptions = {
44
- page: pageNumber,
45
- pageSize: pagingOptions.pageSize
46
- };
29
+ 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(([, pagingOptions, sortingOptions, filteringOptions]) => {
47
30
  return this.service
48
31
  .loadResources({
49
32
  pagingOptions,
@@ -55,14 +38,14 @@ export class AbstractListEffects {
55
38
  pagingOptions
56
39
  })), catchError((errors) => of(this.listActions.loadPageFailure({ errors }))));
57
40
  })));
58
- 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 })))))));
41
+ this.patch$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.patch), exhaustMap(action => this.service.patchResources(action.resourceIds, action.resource).pipe(map(resources => this.listActions.patchSuccess({ resources })), catchError((errors) => of(this.listActions.patchFailure({ errors })))))));
59
42
  this.showRemovalsDialog$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.showRemovalsConfirmation), switchMap(() => {
60
43
  return this.notificationService.openConfirmationDialog({
61
44
  message: this.texts.deleteConfirmationMessage,
62
45
  title: this.texts.deleteConfirmationTitle
63
46
  });
64
47
  }), filter(confirmed => confirmed), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), map(([, resourceIds]) => this.listActions.delete({ resourceIds }))));
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 })))))));
48
+ this.delete$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.delete), exhaustMap(({ resourceIds }) => this.service.deleteResources(resourceIds).pipe(map(() => this.listActions.deleteSuccess({ resourceIds })), catchError((errors) => of(this.listActions.deleteFailure({ errors })))))));
66
49
  this.deleteUsersSuccess$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.deleteSuccess), tap(({ resourceIds }) => {
67
50
  this.notificationService.onListDelete(resourceIds);
68
51
  })), { dispatch: false });
@@ -71,4 +54,4 @@ export class AbstractListEffects {
71
54
  })), { dispatch: false });
72
55
  }
73
56
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGlzdC1lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtbGlzdC1lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUloSCxNQUFNLE9BQWdCLG1CQUFtQjtJQW9MdkMsWUFDcUIsUUFBaUIsRUFDakIsS0FBWSxFQUNkLE9BQTBCLEVBQzFCLFdBQWlDLEVBQ2pDLGFBQWtDLEVBQ2xDLG1CQUErQztRQUw3QyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFDakMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBNEI7UUF6TGxFLFVBQUssR0FBRztZQUNOLHVCQUF1QixFQUFFLGtCQUFrQjtZQUMzQyx5QkFBeUIsRUFBRSxnREFBZ0Q7U0FDNUUsQ0FBQztRQUVGLGdCQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFB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QUFFLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUNILEVBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3BCLENBQUM7UUFFRixtQkFBYyxHQUFHLFlBQVksQ0FDM0IsR0FBRyxFQUFFLENBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUN2RyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FDSCxFQUNILEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUNwQixDQUFDO0lBU0MsQ0FBQztDQUNMIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBGaWx0ZXJpbmdPcHRpb25zLFxyXG4gIExpc3ROb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gIExpc3RTZXJ2aWNlLFxyXG4gIFBhZ2luZ09wdGlvbnMsXHJcbiAgU29ydGluZ09wdGlvbnNcclxufSBmcm9tICdAbmdkdXgvZGF0YS1tb2RlbC1jb21tb24nO1xyXG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgZXhoYXVzdE1hcCwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IExpc3RBY3Rpb25zLCBMaXN0U2VsZWN0b3JzIH0gZnJvbSAnLi4vbW9kZWxzL2xpc3QubW9kZWwnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TGlzdEVmZmVjdHM8VCwgRSwgUyA9IFQ+IHtcclxuICB0ZXh0cyA9IHtcclxuICAgIGRlbGV0ZUNvbmZpcm1hdGlvblRpdGxlOiAnRGVsZXRlIHJlc291cmNlcycsXHJcbiAgICBkZWxldGVDb25maXJtYXRpb25NZXNzYWdlOiAnQXJlIHlvdSBzdXJlIHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgcmVzb3VyY2VzPydcclxuICB9O1xyXG5cclxuICBpbml0aWFsaXplJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5pbml0aWFsaXplLCB0aGlzLmxpc3RBY3Rpb25zLnJlaW5pdGlhbGl6ZSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIFt0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogMSB9KSwgdGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSh7IHBhZ2VOdW1iZXI6IDIgfSldO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGxvYWRQcmV2aW91c1BhZ2UkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmxvYWRQcmV2aW91c1BhZ2UpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRDdXJyZW50UGFnZU51bWJlcikpKSxcclxuICAgICAgZmlsdGVyKChbLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IGN1cnJlbnRQYWdlTnVtYmVyID4gMSksXHJcbiAgICAgIG1hcCgoWywgY3VycmVudFBhZ2VOdW1iZXJdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2VOdW1iZXIgLSAxIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGxvYWROZXh0UGFnZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZE5leHRQYWdlKSxcclxuICAgICAgd2l0aExhdGVzdEZyb20oXHJcbiAgICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuaXNMYXN0UGFnZSkpLFxyXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEN1cnJlbnRQYWdlTnVtYmVyKSlcclxuICAgICAgKSxcclxuICAgICAgZmlsdGVyKChbLCBpc0xhc3RQYWdlXSkgPT4gIWlzTGFzdFBhZ2UpLFxyXG4gICAgICBtYXAoKFssICwgY3VycmVudFBhZ2VOdW1iZXJdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2VOdW1iZXIgKyAxIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIHJlZnJlc2gkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLnJlZnJlc2gpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRDdXJyZW50UGFnZU51bWJlcikpKSxcclxuICAgICAgc3dpdGNoTWFwKChbLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IFtcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2VOdW1iZXIgfSksXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSh7IHBhZ2VOdW1iZXI6IGN1cnJlbnRQYWdlTnVtYmVyICsgMSB9KVxyXG4gICAgICBdKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGNoYW5nZVBhZ2luZ09wdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2luZ09wdGlvbnMpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRQYWdpbmdPcHRpb25zKSkpLFxyXG4gICAgICBtYXAoKFthY3Rpb24sIHBhZ2luZ09wdGlvbnNdKSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGlvbi5wYWdpbmdPcHRpb25zLnBhZ2VTaXplICE9PSBwYWdpbmdPcHRpb25zLnBhZ2VTaXplKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5saXN0QWN0aW9ucy5jaGFuZ2VQYWdlU2l6ZSh7IHBhZ2VTaXplOiBhY3Rpb24ucGFnaW5nT3B0aW9ucy5wYWdlU2l6ZSB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5wYWdpbmdPcHRpb25zLnBhZ2UgPT09IHBhZ2luZ09wdGlvbnMucGFnZSArIDEpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmxpc3RBY3Rpb25zLmxvYWROZXh0UGFnZSgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBhZ2luZ09wdGlvbnMucGFnZSA9PT0gcGFnaW5nT3B0aW9ucy5wYWdlIC0gMSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubGlzdEFjdGlvbnMubG9hZFByZXZpb3VzUGFnZSgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnBhZ2luZ09wdGlvbnMucGFnZSA9PT0gMSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubGlzdEFjdGlvbnMubG9hZEZpcnN0UGFnZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFjdGlvbignTm90IGltcGxlbWVudCBwYWdlIG9wdGlvbnMgYWN0aW9uJyk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgY2hhbmdlUmVxdWVzdE9wdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZShcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VTaXplLFxyXG4gICAgICAgIHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlU29ydGluZyxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZUZpbHRlcmluZyxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRGaXJzdFBhZ2VcclxuICAgICAgKSxcclxuICAgICAgbWFwKCgpID0+IHRoaXMubGlzdEFjdGlvbnMuaW5pdGlhbGl6ZSgpKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGxvYWRQYWdlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZSksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxyXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFBhZ2luZ09wdGlvbnMpKSxcclxuICAgICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRTb3J0aW5nT3B0aW9ucykpLFxyXG4gICAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEZpbHRlcmluZ09wdGlvbnMpKVxyXG4gICAgICApLFxyXG4gICAgICBjb25jYXRNYXAoXHJcbiAgICAgICAgKFt7IHBhZ2VOdW1iZXIgfSwgcGFnaW5nT3B0aW9ucywgc29ydGluZ09wdGlvbnMsIGZpbHRlcmluZ09wdGlvbnNdOiBbXHJcbiAgICAgICAgICB7IHBhZ2VOdW1iZXI6IG51bWJlciB9LFxyXG4gICAgICAgICAgUGFnaW5nT3B0aW9ucyxcclxuICAgICAgICAgIFNvcnRpbmdPcHRpb25zLFxyXG4gICAgICAgICAgRmlsdGVyaW5nT3B0aW9uc1xyXG4gICAgICAgIF0pID0+IHtcclxuICAgICAgICAgIHBhZ2luZ09wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIHBhZ2U6IHBhZ2VOdW1iZXIsXHJcbiAgICAgICAgICAgIHBhZ2VTaXplOiBwYWdpbmdPcHRpb25zLnBhZ2VTaXplXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VcclxuICAgICAgICAgICAgLmxvYWRSZXNvdXJjZXMoe1xyXG4gICAgICAgICAgICAgIHBhZ2luZ09wdGlvbnMsXHJcbiAgICAgICAgICAgICAgc29ydGluZ09wdGlvbnMsXHJcbiAgICAgICAgICAgICAgZmlsdGVyaW5nT3B0aW9uc1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICBtYXAocmVzb3VyY2VzID0+XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlU3VjY2Vzcyh7XHJcbiAgICAgICAgICAgICAgICAgIHJlc291cmNlcyxcclxuICAgICAgICAgICAgICAgICAgcGFnaW5nT3B0aW9uc1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRSkgPT4gb2YodGhpcy5saXN0QWN0aW9ucy5sb2FkUGFnZUZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIHBhdGNoJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5wYXRjaCksXHJcbiAgICAgIGV4aGF1c3RNYXAoYWN0aW9uID0+XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnBhdGNoUmVzb3VyY2VzKGFjdGlvbi5yZXNvdXJjZUlkcywgYWN0aW9uLnJlc291cmNlKS5waXBlKFxyXG4gICAgICAgICAgc3dpdGNoTWFwKHJlc291cmNlcyA9PiBbdGhpcy5saXN0QWN0aW9ucy5wYXRjaFN1Y2Nlc3MoeyByZXNvdXJjZXMgfSksIHRoaXMubGlzdEFjdGlvbnMucmVmcmVzaCgpXSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcnM6IEUpID0+IG9mKHRoaXMubGlzdEFjdGlvbnMucGF0Y2hGYWlsdXJlKHsgZXJyb3JzIH0pKSlcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgIClcclxuICApO1xyXG5cclxuICBzaG93UmVtb3ZhbHNEaWFsb2ckID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLnNob3dSZW1vdmFsc0NvbmZpcm1hdGlvbiksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vcGVuQ29uZmlybWF0aW9uRGlhbG9nKHtcclxuICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudGV4dHMuZGVsZXRlQ29uZmlybWF0aW9uTWVzc2FnZSxcclxuICAgICAgICAgIHRpdGxlOiB0aGlzLnRleHRzLmRlbGV0ZUNvbmZpcm1hdGlvblRpdGxlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaWx0ZXIoY29uZmlybWVkID0+IGNvbmZpcm1lZCksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFNlbGVjdGVkUmVzb3VyY2VJZHMpKSksXHJcbiAgICAgIG1hcCgoWywgcmVzb3VyY2VJZHNdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZSh7IHJlc291cmNlSWRzIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGRlbGV0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMuZGVsZXRlKSxcclxuICAgICAgZXhoYXVzdE1hcCgoeyByZXNvdXJjZUlkcyB9KSA9PlxyXG4gICAgICAgIHRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZXMocmVzb3VyY2VJZHMpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gW3RoaXMubGlzdEFjdGlvbnMuZGVsZXRlU3VjY2Vzcyh7IHJlc291cmNlSWRzIH0pLCB0aGlzLmxpc3RBY3Rpb25zLnJlZnJlc2goKV0pLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JzOiBFKSA9PiBvZih0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZUZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGRlbGV0ZVVzZXJzU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMuZGVsZXRlU3VjY2VzcyksXHJcbiAgICAgICAgdGFwKCh7IHJlc291cmNlSWRzIH0pID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vbkxpc3REZWxldGUocmVzb3VyY2VJZHMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XHJcbiAgKTtcclxuXHJcbiAgZXJyb3JzSGFuZGxlciQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZFBhZ2VGYWlsdXJlLCB0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZUZhaWx1cmUsIHRoaXMubGlzdEFjdGlvbnMucGF0Y2hGYWlsdXJlKSxcclxuICAgICAgICB0YXAoKHsgZXJyb3JzIH0pID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vbkxpc3RFcnJvcnMoZXJyb3JzKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxyXG4gICk7XHJcblxyXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBhY3Rpb25zJDogQWN0aW9ucyxcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBzdG9yZTogU3RvcmUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2U6IExpc3RTZXJ2aWNlPFQsIFM+LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0QWN0aW9uczogTGlzdEFjdGlvbnM8VCwgRSwgUz4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RTZWxlY3RvcnM6IExpc3RTZWxlY3RvcnM8UywgRT4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IExpc3ROb3RpZmljYXRpb25TZXJ2aWNlPEU+XHJcbiAgKSB7fVxyXG59XHJcbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGlzdC1lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtbGlzdC1lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWhILE1BQU0sT0FBZ0IsbUJBQW1CO0lBeUp2QyxZQUNxQixRQUFpQixFQUNqQixLQUFZLEVBQ2QsT0FBMEIsRUFDMUIsV0FBaUMsRUFDakMsYUFBa0MsRUFDbEMsbUJBQStDO1FBTDdDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNkLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUE0QjtRQTlKbEUsVUFBSyxHQUFHO1lBQ04sdUJBQXVCLEVBQUUsa0JBQWtCO1lBQzNDLHlCQUF5QixFQUFFLGdEQUFnRDtTQUM1RSxDQUFDO1FBRUYsWUFBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FDSixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFDL0IsSUFB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QUU7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FDSCxFQUNILEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUNwQixDQUFDO1FBRUYsbUJBQWMsR0FBRyxZQUFZLENBQzNCLEdBQUcsRUFBRSxDQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFDdkcsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQ0gsRUFDSCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDcEIsQ0FBQztJQVNDLENBQUM7Q0FDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3ROb3RpZmljYXRpb25TZXJ2aWNlLCBMaXN0U2VydmljZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XHJcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgZXhoYXVzdE1hcCwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IExpc3RBY3Rpb25zLCBMaXN0U2VsZWN0b3JzIH0gZnJvbSAnLi4vbW9kZWxzL2xpc3QubW9kZWwnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TGlzdEVmZmVjdHM8VCwgRSwgUyA9IFQ+IHtcclxuICB0ZXh0cyA9IHtcclxuICAgIGRlbGV0ZUNvbmZpcm1hdGlvblRpdGxlOiAnRGVsZXRlIHJlc291cmNlcycsXHJcbiAgICBkZWxldGVDb25maXJtYXRpb25NZXNzYWdlOiAnQXJlIHlvdSBzdXJlIHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgcmVzb3VyY2VzPydcclxuICB9O1xyXG5cclxuICByZWxvYWQkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZShcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VTaXplLFxyXG4gICAgICAgIHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlU29ydGluZyxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZUZpbHRlcmluZyxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmluaXRpYWxpemUsXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5yZXNldCxcclxuICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VOdW1iZXIsXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5wYXRjaFN1Y2Nlc3MsXHJcbiAgICAgICAgdGhpcy5saXN0QWN0aW9ucy5kZWxldGVTdWNjZXNzXHJcbiAgICAgICksXHJcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKCkpXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgbG9hZEZpcnN0UGFnZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZEZpcnN0UGFnZSksXHJcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VOdW1iZXIoeyBwYWdlTnVtYmVyOiAxIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGxvYWRQcmV2aW91c1BhZ2UkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLmxvYWRQcmV2aW91c1BhZ2UpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRDdXJyZW50UGFnZU51bWJlcikpKSxcclxuICAgICAgZmlsdGVyKChbLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IGN1cnJlbnRQYWdlTnVtYmVyID4gMSksXHJcbiAgICAgIG1hcCgoWywgY3VycmVudFBhZ2VOdW1iZXJdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VOdW1iZXIoeyBwYWdlTnVtYmVyOiBjdXJyZW50UGFnZU51bWJlciAtIDEgfSkpXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgbG9hZE5leHRQYWdlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5sb2FkTmV4dFBhZ2UpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcclxuICAgICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5pc0xhc3RQYWdlKSksXHJcbiAgICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIpKVxyXG4gICAgICApLFxyXG4gICAgICBmaWx0ZXIoKFssIGlzTGFzdFBhZ2VdKSA9PiAhaXNMYXN0UGFnZSksXHJcbiAgICAgIG1hcCgoWywgLCBjdXJyZW50UGFnZU51bWJlcl0pID0+IHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlUGFnZU51bWJlcih7IHBhZ2VOdW1iZXI6IGN1cnJlbnRQYWdlTnVtYmVyICsgMSB9KSlcclxuICAgIClcclxuICApO1xyXG5cclxuICBjaGFuZ2VQYWdpbmdPcHRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5jaGFuZ2VQYWdpbmdPcHRpb25zKSxcclxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0UGFnaW5nT3B0aW9ucykpKSxcclxuICAgICAgbWFwKChbYWN0aW9uLCBwYWdpbmdPcHRpb25zXSkgPT4ge1xyXG4gICAgICAgIGlmIChhY3Rpb24ucGFnaW5nT3B0aW9ucy5wYWdlU2l6ZSAhPT0gcGFnaW5nT3B0aW9ucy5wYWdlU2l6ZSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlUGFnZVNpemUoeyBwYWdlU2l6ZTogYWN0aW9uLnBhZ2luZ09wdGlvbnMucGFnZVNpemUgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVBhZ2VOdW1iZXIoeyBwYWdlTnVtYmVyOiBhY3Rpb24ucGFnaW5nT3B0aW9ucy5wYWdlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICApO1xyXG5cclxuICBsb2FkUGFnZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZFBhZ2UpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcclxuICAgICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRQYWdpbmdPcHRpb25zKSksXHJcbiAgICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0U29ydGluZ09wdGlvbnMpKSxcclxuICAgICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRGaWx0ZXJpbmdPcHRpb25zKSlcclxuICAgICAgKSxcclxuICAgICAgY29uY2F0TWFwKChbLCBwYWdpbmdPcHRpb25zLCBzb3J0aW5nT3B0aW9ucywgZmlsdGVyaW5nT3B0aW9uc10pID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlXHJcbiAgICAgICAgICAubG9hZFJlc291cmNlcyh7XHJcbiAgICAgICAgICAgIHBhZ2luZ09wdGlvbnMsXHJcbiAgICAgICAgICAgIHNvcnRpbmdPcHRpb25zLFxyXG4gICAgICAgICAgICBmaWx0ZXJpbmdPcHRpb25zXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNvdXJjZXMgPT5cclxuICAgICAgICAgICAgICB0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlU3VjY2Vzcyh7XHJcbiAgICAgICAgICAgICAgICByZXNvdXJjZXMsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmdPcHRpb25zXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JzOiBFKSA9PiBvZih0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlRmFpbHVyZSh7IGVycm9ycyB9KSkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIHBhdGNoJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5saXN0QWN0aW9ucy5wYXRjaCksXHJcbiAgICAgIGV4aGF1c3RNYXAoYWN0aW9uID0+XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnBhdGNoUmVzb3VyY2VzKGFjdGlvbi5yZXNvdXJjZUlkcywgYWN0aW9uLnJlc291cmNlKS5waXBlKFxyXG4gICAgICAgICAgbWFwKHJlc291cmNlcyA9PiB0aGlzLmxpc3RBY3Rpb25zLnBhdGNoU3VjY2Vzcyh7IHJlc291cmNlcyB9KSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcnM6IEUpID0+IG9mKHRoaXMubGlzdEFjdGlvbnMucGF0Y2hGYWlsdXJlKHsgZXJyb3JzIH0pKSlcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgIClcclxuICApO1xyXG5cclxuICBzaG93UmVtb3ZhbHNEaWFsb2ckID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmxpc3RBY3Rpb25zLnNob3dSZW1vdmFsc0NvbmZpcm1hdGlvbiksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vcGVuQ29uZmlybWF0aW9uRGlhbG9nKHtcclxuICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudGV4dHMuZGVsZXRlQ29uZmlybWF0aW9uTWVzc2FnZSxcclxuICAgICAgICAgIHRpdGxlOiB0aGlzLnRleHRzLmRlbGV0ZUNvbmZpcm1hdGlvblRpdGxlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaWx0ZXIoY29uZmlybWVkID0+IGNvbmZpcm1lZCksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFNlbGVjdGVkUmVzb3VyY2VJZHMpKSksXHJcbiAgICAgIG1hcCgoWywgcmVzb3VyY2VJZHNdKSA9PiB0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZSh7IHJlc291cmNlSWRzIH0pKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGRlbGV0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMuZGVsZXRlKSxcclxuICAgICAgZXhoYXVzdE1hcCgoeyByZXNvdXJjZUlkcyB9KSA9PlxyXG4gICAgICAgIHRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZXMocmVzb3VyY2VJZHMpLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5saXN0QWN0aW9ucy5kZWxldGVTdWNjZXNzKHsgcmVzb3VyY2VJZHMgfSkpLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JzOiBFKSA9PiBvZih0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZUZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGRlbGV0ZVVzZXJzU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMuZGVsZXRlU3VjY2VzcyksXHJcbiAgICAgICAgdGFwKCh7IHJlc291cmNlSWRzIH0pID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vbkxpc3REZWxldGUocmVzb3VyY2VJZHMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XHJcbiAgKTtcclxuXHJcbiAgZXJyb3JzSGFuZGxlciQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKHRoaXMubGlzdEFjdGlvbnMubG9hZFBhZ2VGYWlsdXJlLCB0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZUZhaWx1cmUsIHRoaXMubGlzdEFjdGlvbnMucGF0Y2hGYWlsdXJlKSxcclxuICAgICAgICB0YXAoKHsgZXJyb3JzIH0pID0+IHtcclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vbkxpc3RFcnJvcnMoZXJyb3JzKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxyXG4gICk7XHJcblxyXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBhY3Rpb25zJDogQWN0aW9ucyxcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBzdG9yZTogU3RvcmUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2U6IExpc3RTZXJ2aWNlPFQsIFM+LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0QWN0aW9uczogTGlzdEFjdGlvbnM8VCwgRSwgUz4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RTZWxlY3RvcnM6IExpc3RTZWxlY3RvcnM8UywgRT4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IExpc3ROb3RpZmljYXRpb25TZXJ2aWNlPEU+XHJcbiAgKSB7fVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,81 @@
1
+ import { select } from '@ngrx/store';
2
+ export class AbstractListFacade {
3
+ constructor(store, listActions, listSelectors) {
4
+ this.store = store;
5
+ this.listActions = listActions;
6
+ this.listSelectors = listSelectors;
7
+ this.resources$ = this.store.pipe(select(this.listSelectors.getAll));
8
+ this.loadingState$ = this.store.pipe(select(this.listSelectors.getLoadingState));
9
+ this.requestState$ = this.store.pipe(select(this.listSelectors.getRequestState));
10
+ this.errors$ = this.store.pipe(select(this.listSelectors.getErrors));
11
+ this.isReady$ = this.store.pipe(select(this.listSelectors.isReady));
12
+ this.areSelectedReady$ = this.store.pipe(select(this.listSelectors.areSelectedReady));
13
+ this.currentPageData$ = this.store.pipe(select(this.listSelectors.getCurrentPageData));
14
+ this.currentPageNumber$ = this.store.pipe(select(this.listSelectors.getCurrentPageNumber));
15
+ this.filteringOptions$ = this.store.pipe(select(this.listSelectors.getFilteringOptions));
16
+ this.lastPageNumber$ = this.store.pipe(select(this.listSelectors.getLastPageNumber));
17
+ this.pagingOptions$ = this.store.pipe(select(this.listSelectors.getPagingOptions));
18
+ this.requestOptions$ = this.store.pipe(select(this.listSelectors.getRequestOptions));
19
+ this.sortingOptions$ = this.store.pipe(select(this.listSelectors.getSortingOptions));
20
+ this.selectedItems$ = this.store.pipe(select(this.listSelectors.getSelectedItems));
21
+ this.totalCount$ = this.store.pipe(select(this.listSelectors.getTotalCount));
22
+ }
23
+ setPageSize(props) {
24
+ this.store.dispatch(this.listActions.setPageSize(props));
25
+ }
26
+ setFiltering(props) {
27
+ this.store.dispatch(this.listActions.setFiltering(props));
28
+ }
29
+ setSorting(props) {
30
+ this.store.dispatch(this.listActions.setSorting(props));
31
+ }
32
+ changeFiltering(props) {
33
+ this.store.dispatch(this.listActions.changeFiltering(props));
34
+ }
35
+ changePagingOptions(props) {
36
+ this.store.dispatch(this.listActions.changePagingOptions(props));
37
+ }
38
+ changePageSize(props) {
39
+ this.store.dispatch(this.listActions.changePageSize(props));
40
+ }
41
+ changePageNumber(props) {
42
+ this.store.dispatch(this.listActions.changePageNumber(props));
43
+ }
44
+ changeSelectedResources(props) {
45
+ this.store.dispatch(this.listActions.changeSelectedResources(props));
46
+ }
47
+ changeSorting(props) {
48
+ this.store.dispatch(this.listActions.changeSorting(props));
49
+ }
50
+ loadPage() {
51
+ this.store.dispatch(this.listActions.loadPage());
52
+ }
53
+ loadFirstPage() {
54
+ this.store.dispatch(this.listActions.loadFirstPage());
55
+ }
56
+ loadNextPage() {
57
+ this.store.dispatch(this.listActions.loadNextPage());
58
+ }
59
+ loadPreviousPage() {
60
+ this.store.dispatch(this.listActions.loadPreviousPage());
61
+ }
62
+ patch(props) {
63
+ this.store.dispatch(this.listActions.patch(props));
64
+ }
65
+ delete(props) {
66
+ this.store.dispatch(this.listActions.delete(props));
67
+ }
68
+ initialize() {
69
+ this.store.dispatch(this.listActions.initialize());
70
+ }
71
+ reinitialize() {
72
+ this.store.dispatch(this.listActions.reset());
73
+ }
74
+ resetRequestState() {
75
+ this.store.dispatch(this.listActions.resetRequestState());
76
+ }
77
+ showRemovalsConfirmation() {
78
+ this.store.dispatch(this.listActions.showRemovalsConfirmation());
79
+ }
80
+ }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbGlzdC5mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvbGlzdC9zcmMvbGliLytzdGF0ZS9hYnN0cmFjdC1saXN0LmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE1BQU0sT0FBZ0Isa0JBQWtCO0lBaUJ0QyxZQUNxQixLQUFZLEVBQ2QsV0FBaUMsRUFDakMsYUFBa0M7UUFGaEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFuQjVDLGVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLGtCQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUM1RSxrQkFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsWUFBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsYUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDL0Qsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJ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USxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25QYXlsb2FkIH0gZnJvbSAnQG5nZHV4L3N0b3JlLWNvbW1vbic7XHJcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IExpc3RBY3Rpb25zLCBMaXN0U2VsZWN0b3JzIH0gZnJvbSAnLi4vbW9kZWxzL2xpc3QubW9kZWwnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TGlzdEZhY2FkZTxULCBFLCBTID0gVD4ge1xyXG4gIHJlYWRvbmx5IHJlc291cmNlcyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRBbGwpKTtcclxuICByZWFkb25seSBsb2FkaW5nU3RhdGUkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0TG9hZGluZ1N0YXRlKSk7XHJcbiAgcmVhZG9ubHkgcmVxdWVzdFN0YXRlJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFJlcXVlc3RTdGF0ZSkpO1xyXG4gIHJlYWRvbmx5IGVycm9ycyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRFcnJvcnMpKTtcclxuICByZWFkb25seSBpc1JlYWR5JCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmlzUmVhZHkpKTtcclxuICByZWFkb25seSBhcmVTZWxlY3RlZFJlYWR5JCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmFyZVNlbGVjdGVkUmVhZHkpKTtcclxuICByZWFkb25seSBjdXJyZW50UGFnZURhdGEkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0Q3VycmVudFBhZ2VEYXRhKSk7XHJcbiAgcmVhZG9ubHkgY3VycmVudFBhZ2VOdW1iZXIkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIpKTtcclxuICByZWFkb25seSBmaWx0ZXJpbmdPcHRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldEZpbHRlcmluZ09wdGlvbnMpKTtcclxuICByZWFkb25seSBsYXN0UGFnZU51bWJlciQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMubGlzdFNlbGVjdG9ycy5nZXRMYXN0UGFnZU51bWJlcikpO1xyXG4gIHJlYWRvbmx5IHBhZ2luZ09wdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0UGFnaW5nT3B0aW9ucykpO1xyXG4gIHJlYWRvbmx5IHJlcXVlc3RPcHRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFJlcXVlc3RPcHRpb25zKSk7XHJcbiAgcmVhZG9ubHkgc29ydGluZ09wdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmxpc3RTZWxlY3RvcnMuZ2V0U29ydGluZ09wdGlvbnMpKTtcclxuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFNlbGVjdGVkSXRlbXMpKTtcclxuICByZWFkb25seSB0b3RhbENvdW50JCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5saXN0U2VsZWN0b3JzLmdldFRvdGFsQ291bnQpKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmU6IFN0b3JlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0QWN0aW9uczogTGlzdEFjdGlvbnM8VCwgRSwgUz4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RTZWxlY3RvcnM6IExpc3RTZWxlY3RvcnM8UywgRT5cclxuICApIHt9XHJcblxyXG4gIHNldFBhZ2VTaXplKHByb3BzOiBBY3Rpb25QYXlsb2FkPExpc3RBY3Rpb25zPFQsIEU+WydzZXRQYWdlU2l6ZSddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLnNldFBhZ2VTaXplKHByb3BzKSk7XHJcbiAgfVxyXG5cclxuICBzZXRGaWx0ZXJpbmcocHJvcHM6IEFjdGlvblBheWxvYWQ8TGlzdEFjdGlvbnM8VCwgRT5bJ3NldEZpbHRlcmluZyddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLnNldEZpbHRlcmluZyhwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgc2V0U29ydGluZyhwcm9wczogQWN0aW9uUGF5bG9hZDxMaXN0QWN0aW9uczxULCBFPlsnc2V0U29ydGluZyddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLnNldFNvcnRpbmcocHJvcHMpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUZpbHRlcmluZyhwcm9wczogQWN0aW9uUGF5bG9hZDxMaXN0QWN0aW9uczxULCBFPlsnY2hhbmdlRmlsdGVyaW5nJ10+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlRmlsdGVyaW5nKHByb3BzKSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQYWdpbmdPcHRpb25zKHByb3BzOiBBY3Rpb25QYXlsb2FkPExpc3RBY3Rpb25zPFQsIEU+WydjaGFuZ2VQYWdpbmdPcHRpb25zJ10+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlUGFnaW5nT3B0aW9ucyhwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnZVNpemUocHJvcHM6IEFjdGlvblBheWxvYWQ8TGlzdEFjdGlvbnM8VCwgRT5bJ2NoYW5nZVBhZ2VTaXplJ10+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMuY2hhbmdlUGFnZVNpemUocHJvcHMpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVBhZ2VOdW1iZXIocHJvcHM6IEFjdGlvblBheWxvYWQ8TGlzdEFjdGlvbnM8VCwgRT5bJ2NoYW5nZVBhZ2VOdW1iZXInXT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5saXN0QWN0aW9ucy5jaGFuZ2VQYWdlTnVtYmVyKHByb3BzKSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTZWxlY3RlZFJlc291cmNlcyhwcm9wczogQWN0aW9uUGF5bG9hZDxMaXN0QWN0aW9uczxULCBFPlsnY2hhbmdlU2VsZWN0ZWRSZXNvdXJjZXMnXT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5saXN0QWN0aW9ucy5jaGFuZ2VTZWxlY3RlZFJlc291cmNlcyhwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU29ydGluZyhwcm9wczogQWN0aW9uUGF5bG9hZDxMaXN0QWN0aW9uczxULCBFPlsnY2hhbmdlU29ydGluZyddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLmNoYW5nZVNvcnRpbmcocHJvcHMpKTtcclxuICB9XHJcblxyXG4gIGxvYWRQYWdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLmxvYWRQYWdlKCkpO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpcnN0UGFnZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5saXN0QWN0aW9ucy5sb2FkRmlyc3RQYWdlKCkpO1xyXG4gIH1cclxuXHJcbiAgbG9hZE5leHRQYWdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLmxvYWROZXh0UGFnZSgpKTtcclxuICB9XHJcblxyXG4gIGxvYWRQcmV2aW91c1BhZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMubG9hZFByZXZpb3VzUGFnZSgpKTtcclxuICB9XHJcblxyXG4gIHBhdGNoKHByb3BzOiBBY3Rpb25QYXlsb2FkPExpc3RBY3Rpb25zPFQsIEU+WydwYXRjaCddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLnBhdGNoKHByb3BzKSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUocHJvcHM6IEFjdGlvblBheWxvYWQ8TGlzdEFjdGlvbnM8VCwgRT5bJ2RlbGV0ZSddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLmRlbGV0ZShwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5saXN0QWN0aW9ucy5pbml0aWFsaXplKCkpO1xyXG4gIH1cclxuXHJcbiAgcmVpbml0aWFsaXplKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmxpc3RBY3Rpb25zLnJlc2V0KCkpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRSZXF1ZXN0U3RhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMucmVzZXRSZXF1ZXN0U3RhdGUoKSk7XHJcbiAgfVxyXG5cclxuICBzaG93UmVtb3ZhbHNDb25maXJtYXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMubGlzdEFjdGlvbnMuc2hvd1JlbW92YWxzQ29uZmlybWF0aW9uKCkpO1xyXG4gIH1cclxufVxyXG4iXX0=