@ngdux/form 0.1.9 → 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,144 +1,144 @@
1
- # @ngdux/form
2
-
3
- The @ngdux/form gives yo a full state to make easy to create, load, save and delete a resource.
4
-
5
- Example:
6
-
7
- ## Option 1
8
-
9
- ### Full state
10
-
11
- ```
12
- import { User, Error } from '.../models';
13
- import { createFormState } from '@ngdux/form';
14
-
15
- export const USER_FEATURE_KEY = 'user';
16
- export const {
17
- actions: userActions,
18
- selectors: userSelectors,
19
- reducer: userReducer
20
- } = createFormState<User, Error>(USER_FEATURE_KEY);
21
- ```
22
-
23
- ## Option 2
24
-
25
- ### Actions
26
-
27
- ```
28
- import { createFormActions } from '@ngdux/form';
29
- import { User, Error } from '.../models';
30
-
31
- export const formActions = createFormActions<User, Error>('User');
32
- ```
33
-
34
- ### Reducer
35
-
36
- ```
37
- import { createFormReducer, FormState } from '@ngdux/form';
38
- import { Action } from '@ngrx/store';
39
- import { User, Error } from '.../models';
40
- import { formActions } from './user.actions';
41
-
42
- export const USER_FEATURE_KEY = 'user';
43
- const reducer = createFormReducer(formActions);
44
-
45
- export function userReducer(state: FormState<User, Error>, action: Action): FormState<User, Error> {
46
- return reducer(state, action);
47
- }
48
- ```
49
-
50
- ### Selectors
51
-
52
- ```
53
- import { createFormSelectors, FormState } from '@ngdux/form';
54
- import { createFeatureSelector } from '@ngrx/store';
55
- import { User, Error } from '.../models';
56
- import { USER_FEATURE_KEY } from './user.reducer';
57
-
58
- const getState = createFeatureSelector<FormState<User, Error>>(USER_FEATURE_KEY);
59
-
60
- export const formSelectors = createFormSelectors(getState);
61
- ```
62
-
63
- ## Effects
64
-
65
- ```
66
- import { Injectable } from '@angular/core';
67
- import { AbstractFormEffects } from '@ngdux/form';
68
- import { Actions } from '@ngrx/effects';
69
- import { Store } from '@ngrx/store';
70
- import { User, Error } from '.../models';
71
- import { FormNotificationService } from '../notification';
72
- import { UserService } from '../../services/user.service';
73
- import { formActions } from './user.actions';
74
-
75
- @Injectable()
76
- export class UserEffects extends AbstractFormEffects<User, Error> {
77
- constructor(
78
- actions$: Actions,
79
- store: Store,
80
- userService: UserService,
81
- formNotificationService: FormNotificationService
82
- ) {
83
- super(actions$, store, userService, formActions, formNotificationService);
84
- }
85
- }
86
- ```
87
-
88
- ## Service
89
-
90
- ```
91
- import { HttpClient } from '@angular/common/http';
92
- import { Injectable } from '@angular/core';
93
- import { FormService } from '@ngdux/form';
94
- import { User, USERS_RESOURCE_BASE_PATH } from '../models';
95
- import { Observable } from 'rxjs';
96
-
97
- @Injectable({
98
- providedIn: 'root'
99
- })
100
- export class UserService implements FormService<User> {
101
- constructor(private httpClient: HttpClient) {}
102
-
103
- loadResource(id: string): Observable<User> {
104
- return this.httpClient.get<User>(`${USERS_RESOURCE_BASE_PATH}/${id}`);
105
- }
106
-
107
- createResource(user: User): Observable<User> {
108
- return this.httpClient.post<User>(USERS_RESOURCE_BASE_PATH, user);
109
- }
110
-
111
- saveResource(user: User): Observable<User> {
112
- return this.httpClient.put<User>(`${USERS_RESOURCE_BASE_PATH}/${user.id}`, user);
113
- }
114
-
115
- deleteResource(id: string): Observable<User> {
116
- return this.httpClient.delete<User>(`${USERS_RESOURCE_BASE_PATH}/${id}`);
117
- }
118
- }
119
-
120
- ```
121
-
122
- ## Notification Service
123
-
124
- ```
125
- import { Injectable } from '@angular/core';
126
- import { MatSnackBar } from '@angular/material/snack-bar';
127
- import { FormNotificationService } from '@demo/ngdux/util/store/form';
128
- import { Error } from '.../models';
129
-
130
- @Injectable({
131
- providedIn: 'root'
132
- })
133
- export class FormNotificationService implements FormNotificationService<Error> {
134
- constructor(private readonly snackBar: MatSnackBar) {}
135
-
136
- onFormErrors(errors: Error): void {
137
- this.snackBar.open(errors.message);
138
- }
139
-
140
- onFormDelete(id: string): void {
141
- this.snackBar.open(`Resource ${id} has been deleted.`);
142
- }
143
- }
144
- ```
1
+ # @ngdux/form
2
+
3
+ The @ngdux/form gives yo a full state to make easy to create, load, save and delete a resource.
4
+
5
+ Example:
6
+
7
+ ## Option 1
8
+
9
+ ### Full state
10
+
11
+ ```
12
+ import { User, Error } from '.../models';
13
+ import { createFormState } from '@ngdux/form';
14
+
15
+ export const USER_FEATURE_KEY = 'user';
16
+ export const {
17
+ actions: userActions,
18
+ selectors: userSelectors,
19
+ reducer: userReducer
20
+ } = createFormState<User, Error>(USER_FEATURE_KEY);
21
+ ```
22
+
23
+ ## Option 2
24
+
25
+ ### Actions
26
+
27
+ ```
28
+ import { createFormActions } from '@ngdux/form';
29
+ import { User, Error } from '.../models';
30
+
31
+ export const formActions = createFormActions<User, Error>('User');
32
+ ```
33
+
34
+ ### Reducer
35
+
36
+ ```
37
+ import { createFormReducer, FormState } from '@ngdux/form';
38
+ import { Action } from '@ngrx/store';
39
+ import { User, Error } from '.../models';
40
+ import { formActions } from './user.actions';
41
+
42
+ export const USER_FEATURE_KEY = 'user';
43
+ const reducer = createFormReducer(formActions);
44
+
45
+ export function userReducer(state: FormState<User, Error>, action: Action): FormState<User, Error> {
46
+ return reducer(state, action);
47
+ }
48
+ ```
49
+
50
+ ### Selectors
51
+
52
+ ```
53
+ import { createFormSelectors, FormState } from '@ngdux/form';
54
+ import { createFeatureSelector } from '@ngrx/store';
55
+ import { User, Error } from '.../models';
56
+ import { USER_FEATURE_KEY } from './user.reducer';
57
+
58
+ const getState = createFeatureSelector<FormState<User, Error>>(USER_FEATURE_KEY);
59
+
60
+ export const formSelectors = createFormSelectors(getState);
61
+ ```
62
+
63
+ ## Effects
64
+
65
+ ```
66
+ import { Injectable } from '@angular/core';
67
+ import { AbstractFormEffects } from '@ngdux/form';
68
+ import { Actions } from '@ngrx/effects';
69
+ import { Store } from '@ngrx/store';
70
+ import { User, Error } from '.../models';
71
+ import { FormNotificationService } from '../notification';
72
+ import { UserService } from '../../services/user.service';
73
+ import { formActions } from './user.actions';
74
+
75
+ @Injectable()
76
+ export class UserEffects extends AbstractFormEffects<User, Error> {
77
+ constructor(
78
+ actions$: Actions,
79
+ store: Store,
80
+ userService: UserService,
81
+ formNotificationService: FormNotificationService
82
+ ) {
83
+ super(actions$, store, userService, formActions, formNotificationService);
84
+ }
85
+ }
86
+ ```
87
+
88
+ ## Service
89
+
90
+ ```
91
+ import { HttpClient } from '@angular/common/http';
92
+ import { Injectable } from '@angular/core';
93
+ import { FormService } from '@ngdux/form';
94
+ import { User, USERS_RESOURCE_BASE_PATH } from '../models';
95
+ import { Observable } from 'rxjs';
96
+
97
+ @Injectable({
98
+ providedIn: 'root'
99
+ })
100
+ export class UserService implements FormService<User> {
101
+ constructor(private httpClient: HttpClient) {}
102
+
103
+ loadResource(id: string): Observable<User> {
104
+ return this.httpClient.get<User>(`${USERS_RESOURCE_BASE_PATH}/${id}`);
105
+ }
106
+
107
+ createResource(user: User): Observable<User> {
108
+ return this.httpClient.post<User>(USERS_RESOURCE_BASE_PATH, user);
109
+ }
110
+
111
+ saveResource(user: User): Observable<User> {
112
+ return this.httpClient.put<User>(`${USERS_RESOURCE_BASE_PATH}/${user.id}`, user);
113
+ }
114
+
115
+ deleteResource(id: string): Observable<User> {
116
+ return this.httpClient.delete<User>(`${USERS_RESOURCE_BASE_PATH}/${id}`);
117
+ }
118
+ }
119
+
120
+ ```
121
+
122
+ ## Notification Service
123
+
124
+ ```
125
+ import { Injectable } from '@angular/core';
126
+ import { MatSnackBar } from '@angular/material/snack-bar';
127
+ import { FormNotificationService } from '@demo/ngdux/util/store/form';
128
+ import { Error } from '.../models';
129
+
130
+ @Injectable({
131
+ providedIn: 'root'
132
+ })
133
+ export class FormNotificationService implements FormNotificationService<Error> {
134
+ constructor(private readonly snackBar: MatSnackBar) {}
135
+
136
+ onFormErrors(errors: Error): void {
137
+ this.snackBar.open(errors.message);
138
+ }
139
+
140
+ onFormDelete(id: string): void {
141
+ this.snackBar.open(`Resource ${id} has been deleted.`);
142
+ }
143
+ }
144
+ ```
package/esm2020/index.mjs CHANGED
@@ -1,8 +1,10 @@
1
1
  export { RequestState } from '@ngdux/data-model-common';
2
2
  export * from './lib/+state/abstract-form-effects';
3
+ export * from './lib/+state/abstract-form-state.service';
4
+ export * from './lib/+state/abstract-form.facade';
3
5
  export * from './lib/+state/form-actions';
4
6
  export * from './lib/+state/form-reducer';
5
7
  export * from './lib/+state/form-selectors';
6
8
  export * from './lib/+state/form-state';
7
9
  export * from './lib/models/form.model';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvZm9ybS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QyxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RixjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEZvcm1Ob3RpZmljYXRpb25TZXJ2aWNlLCBGb3JtU2VydmljZSwgUmVxdWVzdFN0YXRlIH0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzdGF0ZS9hYnN0cmFjdC1mb3JtLWVmZmVjdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2Zvcm0tYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvZm9ybS1yZWR1Y2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzdGF0ZS9mb3JtLXNlbGVjdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvZm9ybS1zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZm9ybS5tb2RlbCc7XG4iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvZm9ybS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QyxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RixjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBGb3JtTm90aWZpY2F0aW9uU2VydmljZSwgRm9ybVNlcnZpY2UsIFJlcXVlc3RTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzdGF0ZS9hYnN0cmFjdC1mb3JtLWVmZmVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvYWJzdHJhY3QtZm9ybS1zdGF0ZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2Fic3RyYWN0LWZvcm0uZmFjYWRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2Zvcm0tYWN0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzdGF0ZS9mb3JtLXJlZHVjZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvZm9ybS1zZWxlY3RvcnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvZm9ybS1zdGF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9mb3JtLm1vZGVsJztcclxuIl19
@@ -17,4 +17,4 @@ export class AbstractFormEffects {
17
17
  })), { dispatch: false });
18
18
  }
19
19
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtZm9ybS1lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3RSxNQUFNLE9BQWdCLG1CQUFtQjtJQWlFdkMsWUFDcUIsUUFBaUIsRUFDakIsS0FBWSxFQUNkLE9BQXVCLEVBQ3ZCLFdBQThCLEVBQzlCLG1CQUErQztRQUo3QyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUE0QjtRQXJFbEUsVUFBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNoQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENB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QyxDQUNILEVBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3BCLENBQUM7SUFRQyxDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtTm90aWZpY2F0aW9uU2VydmljZSwgRm9ybVNlcnZpY2UgfSBmcm9tICdAbmdkdXgvZGF0YS1tb2RlbC1jb21tb24nO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGV4aGF1c3RNYXAsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb3JtQWN0aW9ucyB9IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Rm9ybUVmZmVjdHM8VCwgRT4ge1xuICBsb2FkJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZSh0aGlzLmZvcm1BY3Rpb25zLmxvYWQpLFxuICAgICAgc3dpdGNoTWFwKCh7IGlkIH0pID0+XG4gICAgICAgIHRoaXMuc2VydmljZS5sb2FkUmVzb3VyY2UoaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKHJlc291cmNlID0+IHRoaXMuZm9ybUFjdGlvbnMubG9hZFN1Y2Nlc3MoeyByZXNvdXJjZSB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JzOiBFKSA9PiBvZih0aGlzLmZvcm1BY3Rpb25zLmxvYWRGYWlsdXJlKHsgZXJyb3JzIH0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKHRoaXMuZm9ybUFjdGlvbnMuY3JlYXRlKSxcbiAgICAgIHN3aXRjaE1hcChhY3Rpb24gPT5cbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZVJlc291cmNlKGFjdGlvbi5yZXNvdXJjZSkucGlwZShcbiAgICAgICAgICBtYXAocmVzb3VyY2UgPT4gdGhpcy5mb3JtQWN0aW9ucy5jcmVhdGVTdWNjZXNzKHsgcmVzb3VyY2UgfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRSkgPT4gb2YodGhpcy5mb3JtQWN0aW9ucy5jcmVhdGVGYWlsdXJlKHsgZXJyb3JzIH0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKHRoaXMuZm9ybUFjdGlvbnMuc2F2ZSksXG4gICAgICBzd2l0Y2hNYXAoKHsgcmVzb3VyY2UgfSkgPT5cbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNhdmVSZXNvdXJjZShyZXNvdXJjZSkucGlwZShcbiAgICAgICAgICBtYXAocmVzcG9uc2UgPT4gdGhpcy5mb3JtQWN0aW9ucy5zYXZlU3VjY2Vzcyh7IHJlc291cmNlOiByZXNwb25zZSB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JzOiBFKSA9PiBvZih0aGlzLmZvcm1BY3Rpb25zLnNhdmVGYWlsdXJlKHsgZXJyb3JzIH0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBkZWxldGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKHRoaXMuZm9ybUFjdGlvbnMuZGVsZXRlKSxcbiAgICAgIGV4aGF1c3RNYXAoYWN0aW9uID0+XG4gICAgICAgIHRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZShhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHRoaXMuZm9ybUFjdGlvbnMuZGVsZXRlU3VjY2Vzcyh7IGlkOiBhY3Rpb24uaWQgfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRSkgPT4gb2YodGhpcy5mb3JtQWN0aW9ucy5kZWxldGVGYWlsdXJlKHsgZXJyb3JzIH0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBlcnJvcnNIYW5kbGVyJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoXG4gICAgICAgICAgdGhpcy5mb3JtQWN0aW9ucy5zYXZlRmFpbHVyZSxcbiAgICAgICAgICB0aGlzLmZvcm1BY3Rpb25zLmxvYWRGYWlsdXJlLFxuICAgICAgICAgIHRoaXMuZm9ybUFjdGlvbnMuZGVsZXRlRmFpbHVyZSxcbiAgICAgICAgICB0aGlzLmZvcm1BY3Rpb25zLmNyZWF0ZUZhaWx1cmVcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKCh7IGVycm9ycyB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLm9uRm9ybUVycm9ycyhlcnJvcnMpO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogRm9ybVNlcnZpY2U8VD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQWN0aW9uczogRm9ybUFjdGlvbnM8VCwgRT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25TZXJ2aWNlOiBGb3JtTm90aWZpY2F0aW9uU2VydmljZTxFPlxuICApIHt9XG59XG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtZm9ybS1lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3RSxNQUFNLE9BQWdCLG1CQUFtQjtJQWlFdkMsWUFDcUIsUUFBaUIsRUFDakIsS0FBWSxFQUNkLE9BQXVCLEVBQ3ZCLFdBQThCLEVBQzlCLG1CQUErQztRQUo3QyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDOUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUE0QjtRQXJFbEUsVUFBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNoQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENB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QyxDQUNILEVBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3BCLENBQUM7SUFRQyxDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtTm90aWZpY2F0aW9uU2VydmljZSwgRm9ybVNlcnZpY2UgfSBmcm9tICdAbmdkdXgvZGF0YS1tb2RlbC1jb21tb24nO1xyXG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZXhoYXVzdE1hcCwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRm9ybUFjdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGb3JtRWZmZWN0czxULCBFPiB7XHJcbiAgbG9hZCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMuZm9ybUFjdGlvbnMubG9hZCksXHJcbiAgICAgIHN3aXRjaE1hcCgoeyBpZCB9KSA9PlxyXG4gICAgICAgIHRoaXMuc2VydmljZS5sb2FkUmVzb3VyY2UoaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAocmVzb3VyY2UgPT4gdGhpcy5mb3JtQWN0aW9ucy5sb2FkU3VjY2Vzcyh7IHJlc291cmNlIH0pKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRSkgPT4gb2YodGhpcy5mb3JtQWN0aW9ucy5sb2FkRmFpbHVyZSh7IGVycm9ycyB9KSkpXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgY3JlYXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5mb3JtQWN0aW9ucy5jcmVhdGUpLFxyXG4gICAgICBzd2l0Y2hNYXAoYWN0aW9uID0+XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZVJlc291cmNlKGFjdGlvbi5yZXNvdXJjZSkucGlwZShcclxuICAgICAgICAgIG1hcChyZXNvdXJjZSA9PiB0aGlzLmZvcm1BY3Rpb25zLmNyZWF0ZVN1Y2Nlc3MoeyByZXNvdXJjZSB9KSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcnM6IEUpID0+IG9mKHRoaXMuZm9ybUFjdGlvbnMuY3JlYXRlRmFpbHVyZSh7IGVycm9ycyB9KSkpXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgdXBkYXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5mb3JtQWN0aW9ucy5zYXZlKSxcclxuICAgICAgc3dpdGNoTWFwKCh7IHJlc291cmNlIH0pID0+XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNhdmVSZXNvdXJjZShyZXNvdXJjZSkucGlwZShcclxuICAgICAgICAgIG1hcChyZXNwb25zZSA9PiB0aGlzLmZvcm1BY3Rpb25zLnNhdmVTdWNjZXNzKHsgcmVzb3VyY2U6IHJlc3BvbnNlIH0pKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRSkgPT4gb2YodGhpcy5mb3JtQWN0aW9ucy5zYXZlRmFpbHVyZSh7IGVycm9ycyB9KSkpXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgZGVsZXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxyXG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUodGhpcy5mb3JtQWN0aW9ucy5kZWxldGUpLFxyXG4gICAgICBleGhhdXN0TWFwKGFjdGlvbiA9PlxyXG4gICAgICAgIHRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZShhY3Rpb24uaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtQWN0aW9ucy5kZWxldGVTdWNjZXNzKHsgaWQ6IGFjdGlvbi5pZCB9KSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcnM6IEUpID0+IG9mKHRoaXMuZm9ybUFjdGlvbnMuZGVsZXRlRmFpbHVyZSh7IGVycm9ycyB9KSkpXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgZXJyb3JzSGFuZGxlciQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKFxyXG4gICAgICAgICAgdGhpcy5mb3JtQWN0aW9ucy5zYXZlRmFpbHVyZSxcclxuICAgICAgICAgIHRoaXMuZm9ybUFjdGlvbnMubG9hZEZhaWx1cmUsXHJcbiAgICAgICAgICB0aGlzLmZvcm1BY3Rpb25zLmRlbGV0ZUZhaWx1cmUsXHJcbiAgICAgICAgICB0aGlzLmZvcm1BY3Rpb25zLmNyZWF0ZUZhaWx1cmVcclxuICAgICAgICApLFxyXG4gICAgICAgIHRhcCgoeyBlcnJvcnMgfSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLm9uRm9ybUVycm9ycyhlcnJvcnMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XHJcbiAgKTtcclxuXHJcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGlvbnMkOiBBY3Rpb25zLFxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0b3JlOiBTdG9yZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogRm9ybVNlcnZpY2U8VD4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1BY3Rpb25zOiBGb3JtQWN0aW9uczxULCBFPixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uU2VydmljZTogRm9ybU5vdGlmaWNhdGlvblNlcnZpY2U8RT5cclxuICApIHt9XHJcbn1cclxuIl19
@@ -0,0 +1,40 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { createFeatureSelector, ReducerManager } from '@ngrx/store';
3
+ import { FORM_FEATURE_KEY } from '../models/form.model';
4
+ import { createFormActions } from './form-actions';
5
+ import { createFormReducer } from './form-reducer';
6
+ import { createFormSelectors } from './form-selectors';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@ngrx/store";
9
+ export class AbstractFormReducerManager {
10
+ constructor(reducerManager, featureKey) {
11
+ this.reducerManager = reducerManager;
12
+ this.featureKey = featureKey;
13
+ this.setActions();
14
+ this.addReducer();
15
+ this.setSelectors();
16
+ }
17
+ setActions() {
18
+ this.actions = createFormActions(this.featureKey);
19
+ }
20
+ addReducer() {
21
+ const currentReducers = Object.keys(this.reducerManager.currentReducers || {});
22
+ if (!currentReducers.includes(this.featureKey)) {
23
+ const reducer = createFormReducer(this.actions);
24
+ this.reducerManager.addReducer(this.featureKey, reducer);
25
+ }
26
+ }
27
+ setSelectors() {
28
+ const getState = createFeatureSelector(this.featureKey);
29
+ this.selectors = createFormSelectors(getState);
30
+ }
31
+ }
32
+ AbstractFormReducerManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AbstractFormReducerManager, deps: [{ token: i1.ReducerManager }, { token: FORM_FEATURE_KEY }], target: i0.ɵɵFactoryTarget.Injectable });
33
+ AbstractFormReducerManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AbstractFormReducerManager });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AbstractFormReducerManager, decorators: [{
35
+ type: Injectable
36
+ }], ctorParameters: function () { return [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
37
+ type: Inject,
38
+ args: [FORM_FEATURE_KEY]
39
+ }] }]; } });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtZm9ybS1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUF5QyxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFHdkQsTUFBTSxPQUFnQiwwQkFBMEI7SUFJOUMsWUFDbUIsY0FBOEIsRUFDSixVQUFrQjtRQUQ1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDSixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRTdELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFUyxVQUFVO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFUyxVQUFVO1FBQ2xCLE1BQU0sZUFBZSxHQUFhLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzlDLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzFEO0lBQ0gsQ0FBQztJQUVTLFlBQVk7UUFDcEIsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQWtCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7O3VIQTVCbUIsMEJBQTBCLGdEQU1wQyxnQkFBZ0I7MkhBTk4sMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBRC9DLFVBQVU7OzBCQU9OLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNyZWF0ZUZlYXR1cmVTZWxlY3RvciwgUmVkdWNlck1hbmFnZXIgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IEZvcm1BY3Rpb25zLCBGb3JtU2VsZWN0b3JzLCBGb3JtU3RhdGUsIEZPUk1fRkVBVFVSRV9LRVkgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IGNyZWF0ZUZvcm1BY3Rpb25zIH0gZnJvbSAnLi9mb3JtLWFjdGlvbnMnO1xyXG5pbXBvcnQgeyBjcmVhdGVGb3JtUmVkdWNlciB9IGZyb20gJy4vZm9ybS1yZWR1Y2VyJztcclxuaW1wb3J0IHsgY3JlYXRlRm9ybVNlbGVjdG9ycyB9IGZyb20gJy4vZm9ybS1zZWxlY3RvcnMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGb3JtUmVkdWNlck1hbmFnZXI8VCwgRT4ge1xyXG4gIGFjdGlvbnM6IEZvcm1BY3Rpb25zPFQsIEU+O1xyXG4gIHNlbGVjdG9yczogRm9ybVNlbGVjdG9yczxULCBFPjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZHVjZXJNYW5hZ2VyOiBSZWR1Y2VyTWFuYWdlcixcclxuICAgIEBJbmplY3QoRk9STV9GRUFUVVJFX0tFWSkgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlS2V5OiBzdHJpbmdcclxuICApIHtcclxuICAgIHRoaXMuc2V0QWN0aW9ucygpO1xyXG4gICAgdGhpcy5hZGRSZWR1Y2VyKCk7XHJcbiAgICB0aGlzLnNldFNlbGVjdG9ycygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldEFjdGlvbnMoKSB7XHJcbiAgICB0aGlzLmFjdGlvbnMgPSBjcmVhdGVGb3JtQWN0aW9uczxULCBFPih0aGlzLmZlYXR1cmVLZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFkZFJlZHVjZXIoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50UmVkdWNlcnM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXModGhpcy5yZWR1Y2VyTWFuYWdlci5jdXJyZW50UmVkdWNlcnMgfHwge30pO1xyXG4gICAgaWYgKCFjdXJyZW50UmVkdWNlcnMuaW5jbHVkZXModGhpcy5mZWF0dXJlS2V5KSkge1xyXG4gICAgICBjb25zdCByZWR1Y2VyID0gY3JlYXRlRm9ybVJlZHVjZXIodGhpcy5hY3Rpb25zKTtcclxuICAgICAgdGhpcy5yZWR1Y2VyTWFuYWdlci5hZGRSZWR1Y2VyKHRoaXMuZmVhdHVyZUtleSwgcmVkdWNlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2V0U2VsZWN0b3JzKCkge1xyXG4gICAgY29uc3QgZ2V0U3RhdGUgPSBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8Rm9ybVN0YXRlPFQsIEU+Pih0aGlzLmZlYXR1cmVLZXkpO1xyXG4gICAgdGhpcy5zZWxlY3RvcnMgPSBjcmVhdGVGb3JtU2VsZWN0b3JzKGdldFN0YXRlKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,29 @@
1
+ import { select } from '@ngrx/store';
2
+ export class AbstractFormFacade {
3
+ constructor(store, formActions, formSelectors) {
4
+ this.store = store;
5
+ this.formActions = formActions;
6
+ this.formSelectors = formSelectors;
7
+ this.resource$ = this.store.pipe(select(this.formSelectors.getResource));
8
+ this.loadingState$ = this.store.pipe(select(this.formSelectors.getLoadingState));
9
+ this.requestState$ = this.store.pipe(select(this.formSelectors.getRequestState));
10
+ this.errors$ = this.store.pipe(select(this.formSelectors.getErrors));
11
+ this.isReady$ = this.store.pipe(select(this.formSelectors.isReady));
12
+ }
13
+ create(props) {
14
+ this.store.dispatch(this.formActions.create(props));
15
+ }
16
+ load(props) {
17
+ this.store.dispatch(this.formActions.load(props));
18
+ }
19
+ save(props) {
20
+ this.store.dispatch(this.formActions.save(props));
21
+ }
22
+ delete(props) {
23
+ this.store.dispatch(this.formActions.delete(props));
24
+ }
25
+ reset() {
26
+ this.store.dispatch(this.formActions.reset());
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS5mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvZm9ybS9zcmMvbGliLytzdGF0ZS9hYnN0cmFjdC1mb3JtLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE1BQU0sT0FBZ0Isa0JBQWtCO0lBT3RDLFlBQ3FCLEtBQVksRUFDZCxXQUE4QixFQUM5QixhQUFrQztRQUZoQyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQVQ1QyxjQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwRSxrQkFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsa0JBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQzVFLFlBQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLGFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBTXJFLENBQUM7SUFFSixNQUFNLENBQUMsS0FBaUQ7UUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQStDO1FBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksQ0FBQyxLQUErQztRQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBaUQ7UUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25QYXlsb2FkIH0gZnJvbSAnQG5nZHV4L3N0b3JlLWNvbW1vbic7XHJcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IEZvcm1BY3Rpb25zLCBGb3JtU2VsZWN0b3JzIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Rm9ybUZhY2FkZTxULCBFPiB7XHJcbiAgcmVhZG9ubHkgcmVzb3VyY2UkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmZvcm1TZWxlY3RvcnMuZ2V0UmVzb3VyY2UpKTtcclxuICByZWFkb25seSBsb2FkaW5nU3RhdGUkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmZvcm1TZWxlY3RvcnMuZ2V0TG9hZGluZ1N0YXRlKSk7XHJcbiAgcmVhZG9ubHkgcmVxdWVzdFN0YXRlJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5mb3JtU2VsZWN0b3JzLmdldFJlcXVlc3RTdGF0ZSkpO1xyXG4gIHJlYWRvbmx5IGVycm9ycyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMuZm9ybVNlbGVjdG9ycy5nZXRFcnJvcnMpKTtcclxuICByZWFkb25seSBpc1JlYWR5JCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5mb3JtU2VsZWN0b3JzLmlzUmVhZHkpKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmU6IFN0b3JlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQWN0aW9uczogRm9ybUFjdGlvbnM8VCwgRT4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1TZWxlY3RvcnM6IEZvcm1TZWxlY3RvcnM8VCwgRT5cclxuICApIHt9XHJcblxyXG4gIGNyZWF0ZShwcm9wczogQWN0aW9uUGF5bG9hZDxGb3JtQWN0aW9uczxULCBFPlsnY3JlYXRlJ10+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMuZm9ybUFjdGlvbnMuY3JlYXRlKHByb3BzKSk7XHJcbiAgfVxyXG5cclxuICBsb2FkKHByb3BzOiBBY3Rpb25QYXlsb2FkPEZvcm1BY3Rpb25zPFQsIEU+Wydsb2FkJ10+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMuZm9ybUFjdGlvbnMubG9hZChwcm9wcykpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZShwcm9wczogQWN0aW9uUGF5bG9hZDxGb3JtQWN0aW9uczxULCBFPlsnc2F2ZSddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmZvcm1BY3Rpb25zLnNhdmUocHJvcHMpKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZShwcm9wczogQWN0aW9uUGF5bG9hZDxGb3JtQWN0aW9uczxULCBFPlsnZGVsZXRlJ10+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHRoaXMuZm9ybUFjdGlvbnMuZGVsZXRlKHByb3BzKSk7XHJcbiAgfVxyXG5cclxuICByZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5mb3JtQWN0aW9ucy5yZXNldCgpKTtcclxuICB9XHJcbn1cclxuIl19
@@ -29,4 +29,4 @@ export function createFormActions(featureName) {
29
29
  reset
30
30
  };
31
31
  }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvZm9ybS1hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2xELE1BQU0sVUFBVSxpQkFBaUIsQ0FBTyxXQUFtQjtJQUN6RCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGNBQWMsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFrQixDQUFDLENBQUM7SUFDL0YsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxjQUFjLFdBQVcsVUFBVSxFQUFFLEtBQUssRUFBbUIsQ0FBQyxDQUFDO0lBQy9HLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsY0FBYyxXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQWlCLENBQUMsQ0FBQztJQUU3RyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGNBQWMsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFtQixDQUFDLENBQUM7SUFDaEcsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxjQUFjLFdBQVcsVUFBVSxFQUFFLEtBQUssRUFBbUIsQ0FBQyxDQUFDO0lBQy9HLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsY0FBYyxXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQWlCLENBQUMsQ0FBQztJQUU3RyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQWtCLENBQUMsQ0FBQztJQUN6RyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQWtCLENBQUMsQ0FBQztJQUNsSCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQWlCLENBQUMsQ0FBQztJQUVqSCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQW1CLENBQUMsQ0FBQztJQUNwRyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQW1CLENBQUMsQ0FBQztJQUNuSCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQWlCLENBQUMsQ0FBQztJQUVqSCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGVBQWUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUV4RSxPQUFPO1FBQ0wsSUFBSTtRQUNKLFdBQVc7UUFDWCxXQUFXO1FBQ1gsSUFBSTtRQUNKLFdBQVc7UUFDWCxXQUFXO1FBQ1gsTUFBTSxFQUFFLFlBQVk7UUFDcEIsYUFBYTtRQUNiLGFBQWE7UUFDYixNQUFNO1FBQ04sYUFBYTtRQUNiLGFBQWE7UUFDYixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgRm9ybUFjdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtQWN0aW9uczxULCBFPihmZWF0dXJlTmFtZTogc3RyaW5nKTogRm9ybUFjdGlvbnM8VCwgRT4ge1xuICBjb25zdCBsb2FkID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBMb2FkICR7ZmVhdHVyZU5hbWV9YCwgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpO1xuICBjb25zdCBsb2FkU3VjY2VzcyA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gTG9hZCAke2ZlYXR1cmVOYW1lfSBTdWNjZXNzYCwgcHJvcHM8eyByZXNvdXJjZTogVCB9PigpKTtcbiAgY29uc3QgbG9hZEZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIExvYWQgJHtmZWF0dXJlTmFtZX0gRmFpbHVyZWAsIHByb3BzPHsgZXJyb3JzOiBFIH0+KCkpO1xuXG4gIGNvbnN0IHNhdmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIFNhdmUgJHtmZWF0dXJlTmFtZX1gLCBwcm9wczx7IHJlc291cmNlOiBUIH0+KCkpO1xuICBjb25zdCBzYXZlU3VjY2VzcyA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gU2F2ZSAke2ZlYXR1cmVOYW1lfSBTdWNjZXNzYCwgcHJvcHM8eyByZXNvdXJjZTogVCB9PigpKTtcbiAgY29uc3Qgc2F2ZUZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIFNhdmUgJHtmZWF0dXJlTmFtZX0gRmFpbHVyZWAsIHByb3BzPHsgZXJyb3JzOiBFIH0+KCkpO1xuXG4gIGNvbnN0IGRlbGV0ZUFjdGlvbiA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gRGVsZXRlICR7ZmVhdHVyZU5hbWV9YCwgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpO1xuICBjb25zdCBkZWxldGVTdWNjZXNzID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBEZWxldGUgJHtmZWF0dXJlTmFtZX0gU3VjY2Vzc2AsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKTtcbiAgY29uc3QgZGVsZXRlRmFpbHVyZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gRGVsZXRlICR7ZmVhdHVyZU5hbWV9IEZhaWx1cmVgLCBwcm9wczx7IGVycm9yczogRSB9PigpKTtcblxuICBjb25zdCBjcmVhdGUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIENyZWF0ZSAke2ZlYXR1cmVOYW1lfWAsIHByb3BzPHsgcmVzb3VyY2U6IFQgfT4oKSk7XG4gIGNvbnN0IGNyZWF0ZVN1Y2Nlc3MgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIENyZWF0ZSAke2ZlYXR1cmVOYW1lfSBTdWNjZXNzYCwgcHJvcHM8eyByZXNvdXJjZTogVCB9PigpKTtcbiAgY29uc3QgY3JlYXRlRmFpbHVyZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gQ3JlYXRlICR7ZmVhdHVyZU5hbWV9IEZhaWx1cmVgLCBwcm9wczx7IGVycm9yczogRSB9PigpKTtcblxuICBjb25zdCByZXNldCA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gUmVzZXQgJHtmZWF0dXJlTmFtZX1gKTtcblxuICByZXR1cm4ge1xuICAgIGxvYWQsXG4gICAgbG9hZFN1Y2Nlc3MsXG4gICAgbG9hZEZhaWx1cmUsXG4gICAgc2F2ZSxcbiAgICBzYXZlU3VjY2VzcyxcbiAgICBzYXZlRmFpbHVyZSxcbiAgICBkZWxldGU6IGRlbGV0ZUFjdGlvbixcbiAgICBkZWxldGVTdWNjZXNzLFxuICAgIGRlbGV0ZUZhaWx1cmUsXG4gICAgY3JlYXRlLFxuICAgIGNyZWF0ZVN1Y2Nlc3MsXG4gICAgY3JlYXRlRmFpbHVyZSxcbiAgICByZXNldFxuICB9O1xufVxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvZm9ybS1hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2xELE1BQU0sVUFBVSxpQkFBaUIsQ0FBTyxXQUFtQjtJQUN6RCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGNBQWMsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFrQixDQUFDLENBQUM7SUFDL0YsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxjQUFjLFdBQVcsVUFBVSxFQUFFLEtBQUssRUFBbUIsQ0FBQyxDQUFDO0lBQy9HLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsY0FBYyxXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQWlCLENBQUMsQ0FBQztJQUU3RyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGNBQWMsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFtQixDQUFDLENBQUM7SUFDaEcsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxjQUFjLFdBQVcsVUFBVSxFQUFFLEtBQUssRUFBbUIsQ0FBQyxDQUFDO0lBQy9HLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsY0FBYyxXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQWlCLENBQUMsQ0FBQztJQUU3RyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQWtCLENBQUMsQ0FBQztJQUN6RyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQWtCLENBQUMsQ0FBQztJQUNsSCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQWlCLENBQUMsQ0FBQztJQUVqSCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQW1CLENBQUMsQ0FBQztJQUNwRyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQW1CLENBQUMsQ0FBQztJQUNuSCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGdCQUFnQixXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQWlCLENBQUMsQ0FBQztJQUVqSCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGVBQWUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUV4RSxPQUFPO1FBQ0wsSUFBSTtRQUNKLFdBQVc7UUFDWCxXQUFXO1FBQ1gsSUFBSTtRQUNKLFdBQVc7UUFDWCxXQUFXO1FBQ1gsTUFBTSxFQUFFLFlBQVk7UUFDcEIsYUFBYTtRQUNiLGFBQWE7UUFDYixNQUFNO1FBQ04sYUFBYTtRQUNiLGFBQWE7UUFDYixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQWN0aW9ucyB9IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtQWN0aW9uczxULCBFPihmZWF0dXJlTmFtZTogc3RyaW5nKTogRm9ybUFjdGlvbnM8VCwgRT4ge1xyXG4gIGNvbnN0IGxvYWQgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIExvYWQgJHtmZWF0dXJlTmFtZX1gLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSk7XHJcbiAgY29uc3QgbG9hZFN1Y2Nlc3MgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIExvYWQgJHtmZWF0dXJlTmFtZX0gU3VjY2Vzc2AsIHByb3BzPHsgcmVzb3VyY2U6IFQgfT4oKSk7XHJcbiAgY29uc3QgbG9hZEZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIExvYWQgJHtmZWF0dXJlTmFtZX0gRmFpbHVyZWAsIHByb3BzPHsgZXJyb3JzOiBFIH0+KCkpO1xyXG5cclxuICBjb25zdCBzYXZlID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBTYXZlICR7ZmVhdHVyZU5hbWV9YCwgcHJvcHM8eyByZXNvdXJjZTogVCB9PigpKTtcclxuICBjb25zdCBzYXZlU3VjY2VzcyA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gU2F2ZSAke2ZlYXR1cmVOYW1lfSBTdWNjZXNzYCwgcHJvcHM8eyByZXNvdXJjZTogVCB9PigpKTtcclxuICBjb25zdCBzYXZlRmFpbHVyZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gU2F2ZSAke2ZlYXR1cmVOYW1lfSBGYWlsdXJlYCwgcHJvcHM8eyBlcnJvcnM6IEUgfT4oKSk7XHJcblxyXG4gIGNvbnN0IGRlbGV0ZUFjdGlvbiA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gRGVsZXRlICR7ZmVhdHVyZU5hbWV9YCwgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpO1xyXG4gIGNvbnN0IGRlbGV0ZVN1Y2Nlc3MgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIERlbGV0ZSAke2ZlYXR1cmVOYW1lfSBTdWNjZXNzYCwgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpO1xyXG4gIGNvbnN0IGRlbGV0ZUZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIERlbGV0ZSAke2ZlYXR1cmVOYW1lfSBGYWlsdXJlYCwgcHJvcHM8eyBlcnJvcnM6IEUgfT4oKSk7XHJcblxyXG4gIGNvbnN0IGNyZWF0ZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gQ3JlYXRlICR7ZmVhdHVyZU5hbWV9YCwgcHJvcHM8eyByZXNvdXJjZTogVCB9PigpKTtcclxuICBjb25zdCBjcmVhdGVTdWNjZXNzID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBDcmVhdGUgJHtmZWF0dXJlTmFtZX0gU3VjY2Vzc2AsIHByb3BzPHsgcmVzb3VyY2U6IFQgfT4oKSk7XHJcbiAgY29uc3QgY3JlYXRlRmFpbHVyZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gQ3JlYXRlICR7ZmVhdHVyZU5hbWV9IEZhaWx1cmVgLCBwcm9wczx7IGVycm9yczogRSB9PigpKTtcclxuXHJcbiAgY29uc3QgcmVzZXQgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIFJlc2V0ICR7ZmVhdHVyZU5hbWV9YCk7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBsb2FkLFxyXG4gICAgbG9hZFN1Y2Nlc3MsXHJcbiAgICBsb2FkRmFpbHVyZSxcclxuICAgIHNhdmUsXHJcbiAgICBzYXZlU3VjY2VzcyxcclxuICAgIHNhdmVGYWlsdXJlLFxyXG4gICAgZGVsZXRlOiBkZWxldGVBY3Rpb24sXHJcbiAgICBkZWxldGVTdWNjZXNzLFxyXG4gICAgZGVsZXRlRmFpbHVyZSxcclxuICAgIGNyZWF0ZSxcclxuICAgIGNyZWF0ZVN1Y2Nlc3MsXHJcbiAgICBjcmVhdGVGYWlsdXJlLFxyXG4gICAgcmVzZXRcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -27,4 +27,4 @@ function createFormActionHandlers(initialFormState, actions) {
27
27
  ...createLoadingStateActionHandlers(actions.load, actions.loadSuccess, actions.loadFailure)
28
28
  ];
29
29
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvZm9ybS1yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RyxPQUFPLEVBQWdDLGFBQWEsRUFBVyxFQUFFLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBR3JHLE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsT0FBMEIsRUFDMUIsY0FBaUUsRUFDakUsZ0JBQXlCO0lBRXpCLE1BQU0sWUFBWSxHQUFvQixFQUFFLEdBQUcsc0JBQXNCLEVBQVEsRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDakcsT0FBTyxhQUFhLENBQ2xCLFlBQVksRUFDWixHQUFHLHdCQUF3QixDQUFPLFlBQVksRUFBRSxPQUFPLENBQUMsRUFDeEQsR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FDMUIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHNCQUFzQjtJQUM3QixPQUFPO1FBQ0wsUUFBUSxFQUFFLFNBQVM7UUFDbkIsWUFBWSxFQUFFLFlBQVksQ0FBQyxJQUFJO1FBQy9CLFlBQVksRUFBRSxZQUFZLENBQUMsSUFBSTtRQUMvQixNQUFNLEVBQUUsU0FBUztLQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQy9CLGdCQUFpQyxFQUNqQyxPQUEwQjtJQUUxQixPQUFPO1FBQ0wsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBb0IsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQzFELEVBQUUsQ0FDQSxPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsYUFBYSxFQUNyQixPQUFPLENBQUMsV0FBVyxFQUNuQixDQUFDLEtBQXNCLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBbUIsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUNwRjtRQUNELEVBQUUsQ0FDQSxPQUFPLENBQUMsYUFBYSxFQUNyQixDQUFDLEtBQXNCLEVBQW1CLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLEdBQUcsS0FBSztZQUNSLFFBQVEsRUFBRSxTQUFTO1NBQ3BCLENBQUMsQ0FDSDtRQUNELEdBQUcsZ0NBQWdDLENBQ2pDLE9BQU8sQ0FBQyxJQUFJLEVBQ1osT0FBTyxDQUFDLElBQUksRUFDWixPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsV0FBVyxDQUNwQjtRQUNELEdBQUcsZ0NBQWdDLENBQ2pDLFNBQVMsRUFDVCxPQUFPLENBQUMsTUFBTSxFQUNkLE9BQU8sQ0FBQyxhQUFhLEVBQ3JCLE9BQU8sQ0FBQyxhQUFhLENBQ3RCO1FBQ0QsR0FBRyxnQ0FBZ0MsQ0FDakMsU0FBUyxFQUNULE9BQU8sQ0FBQyxNQUFNLEVBQ2QsT0FBTyxDQUFDLGFBQWEsRUFDckIsT0FBTyxDQUFDLGFBQWEsQ0FDdEI7UUFDRCxHQUFHLGdDQUFnQyxDQUFrQixPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQztLQUM3RyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3RTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XG5pbXBvcnQgeyBjcmVhdGVMb2FkaW5nU3RhdGVBY3Rpb25IYW5kbGVycywgY3JlYXRlUmVxdWVzdFN0YXRlQWN0aW9uSGFuZGxlcnMgfSBmcm9tICdAbmdkdXgvc3RvcmUtY29tbW9uJztcbmltcG9ydCB7IEFjdGlvbkNyZWF0b3IsIEFjdGlvblJlZHVjZXIsIGNyZWF0ZVJlZHVjZXIsIENyZWF0b3IsIG9uLCBSZWR1Y2VyVHlwZXMgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBGb3JtQWN0aW9ucywgRm9ybVN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybVJlZHVjZXI8VCwgRT4oXG4gIGFjdGlvbnM6IEZvcm1BY3Rpb25zPFQsIEU+LFxuICBhY3Rpb25IYW5kbGVycz86IFJlZHVjZXJUeXBlczxGb3JtU3RhdGU8VCwgRT4sIEFjdGlvbkNyZWF0b3JbXT5bXSxcbiAgaW5pdGlhbEZvcm1TdGF0ZT86IG9iamVjdFxuKTogQWN0aW9uUmVkdWNlcjxGb3JtU3RhdGU8VCwgRT4+IHtcbiAgY29uc3QgaW5pdGlhbFN0YXRlOiBGb3JtU3RhdGU8VCwgRT4gPSB7IC4uLmNyZWF0ZUluaXRpYWxGb3JtU3RhdGU8VCwgRT4oKSwgLi4uaW5pdGlhbEZvcm1TdGF0ZSB9O1xuICByZXR1cm4gY3JlYXRlUmVkdWNlcjxGb3JtU3RhdGU8VCwgRT4+KFxuICAgIGluaXRpYWxTdGF0ZSxcbiAgICAuLi5jcmVhdGVGb3JtQWN0aW9uSGFuZGxlcnM8VCwgRT4oaW5pdGlhbFN0YXRlLCBhY3Rpb25zKSxcbiAgICAuLi4oYWN0aW9uSGFuZGxlcnMgfHwgW10pXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxGb3JtU3RhdGU8VCwgRT4oKTogRm9ybVN0YXRlPFQsIEU+IHtcbiAgcmV0dXJuIHtcbiAgICByZXNvdXJjZTogdW5kZWZpbmVkLFxuICAgIGxvYWRpbmdTdGF0ZTogUmVxdWVzdFN0YXRlLklETEUsXG4gICAgcmVxdWVzdFN0YXRlOiBSZXF1ZXN0U3RhdGUuSURMRSxcbiAgICBlcnJvcnM6IHVuZGVmaW5lZFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVGb3JtQWN0aW9uSGFuZGxlcnM8VCwgRT4oXG4gIGluaXRpYWxGb3JtU3RhdGU6IEZvcm1TdGF0ZTxULCBFPixcbiAgYWN0aW9uczogRm9ybUFjdGlvbnM8VCwgRT5cbik6IFJlZHVjZXJUeXBlczxGb3JtU3RhdGU8VCwgRT4sIEFjdGlvbkNyZWF0b3I8c3RyaW5nLCBDcmVhdG9yPGFueVtdLCBvYmplY3Q+PltdPltdIHtcbiAgcmV0dXJuIFtcbiAgICBvbihhY3Rpb25zLnJlc2V0LCAoKTogRm9ybVN0YXRlPFQsIEU+ID0+IGluaXRpYWxGb3JtU3RhdGUpLFxuICAgIG9uKFxuICAgICAgYWN0aW9ucy5sb2FkU3VjY2VzcyxcbiAgICAgIGFjdGlvbnMuY3JlYXRlU3VjY2VzcyxcbiAgICAgIGFjdGlvbnMuc2F2ZVN1Y2Nlc3MsXG4gICAgICAoc3RhdGU6IEZvcm1TdGF0ZTxULCBFPiwgeyByZXNvdXJjZSB9KTogRm9ybVN0YXRlPFQsIEU+ID0+ICh7IC4uLnN0YXRlLCByZXNvdXJjZSB9KVxuICAgICksXG4gICAgb24oXG4gICAgICBhY3Rpb25zLmRlbGV0ZVN1Y2Nlc3MsXG4gICAgICAoc3RhdGU6IEZvcm1TdGF0ZTxULCBFPik6IEZvcm1TdGF0ZTxULCBFPiA9PiAoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgcmVzb3VyY2U6IHVuZGVmaW5lZFxuICAgICAgfSlcbiAgICApLFxuICAgIC4uLmNyZWF0ZVJlcXVlc3RTdGF0ZUFjdGlvbkhhbmRsZXJzPEZvcm1TdGF0ZTxULCBFPiwgRT4oXG4gICAgICBhY3Rpb25zLmxvYWQsXG4gICAgICBhY3Rpb25zLnNhdmUsXG4gICAgICBhY3Rpb25zLnNhdmVTdWNjZXNzLFxuICAgICAgYWN0aW9ucy5zYXZlRmFpbHVyZVxuICAgICksXG4gICAgLi4uY3JlYXRlUmVxdWVzdFN0YXRlQWN0aW9uSGFuZGxlcnM8Rm9ybVN0YXRlPFQsIEU+LCBFPihcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGFjdGlvbnMuY3JlYXRlLFxuICAgICAgYWN0aW9ucy5jcmVhdGVTdWNjZXNzLFxuICAgICAgYWN0aW9ucy5jcmVhdGVGYWlsdXJlXG4gICAgKSxcbiAgICAuLi5jcmVhdGVSZXF1ZXN0U3RhdGVBY3Rpb25IYW5kbGVyczxGb3JtU3RhdGU8VCwgRT4sIEU+KFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYWN0aW9ucy5kZWxldGUsXG4gICAgICBhY3Rpb25zLmRlbGV0ZVN1Y2Nlc3MsXG4gICAgICBhY3Rpb25zLmRlbGV0ZUZhaWx1cmVcbiAgICApLFxuICAgIC4uLmNyZWF0ZUxvYWRpbmdTdGF0ZUFjdGlvbkhhbmRsZXJzPEZvcm1TdGF0ZTxULCBFPj4oYWN0aW9ucy5sb2FkLCBhY3Rpb25zLmxvYWRTdWNjZXNzLCBhY3Rpb25zLmxvYWRGYWlsdXJlKVxuICBdO1xufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvZm9ybS1yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RyxPQUFPLEVBQWdDLGFBQWEsRUFBVyxFQUFFLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBR3JHLE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsT0FBMEIsRUFDMUIsY0FBaUUsRUFDakUsZ0JBQXlCO0lBRXpCLE1BQU0sWUFBWSxHQUFvQixFQUFFLEdBQUcsc0JBQXNCLEVBQVEsRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDakcsT0FBTyxhQUFhLENBQ2xCLFlBQVksRUFDWixHQUFHLHdCQUF3QixDQUFPLFlBQVksRUFBRSxPQUFPLENBQUMsRUFDeEQsR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FDMUIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHNCQUFzQjtJQUM3QixPQUFPO1FBQ0wsUUFBUSxFQUFFLFNBQVM7UUFDbkIsWUFBWSxFQUFFLFlBQVksQ0FBQyxJQUFJO1FBQy9CLFlBQVksRUFBRSxZQUFZLENBQUMsSUFBSTtRQUMvQixNQUFNLEVBQUUsU0FBUztLQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQy9CLGdCQUFpQyxFQUNqQyxPQUEwQjtJQUUxQixPQUFPO1FBQ0wsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBb0IsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQzFELEVBQUUsQ0FDQSxPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsYUFBYSxFQUNyQixPQUFPLENBQUMsV0FBVyxFQUNuQixDQUFDLEtBQXNCLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBbUIsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUNwRjtRQUNELEVBQUUsQ0FDQSxPQUFPLENBQUMsYUFBYSxFQUNyQixDQUFDLEtBQXNCLEVBQW1CLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLEdBQUcsS0FBSztZQUNSLFFBQVEsRUFBRSxTQUFTO1NBQ3BCLENBQUMsQ0FDSDtRQUNELEdBQUcsZ0NBQWdDLENBQ2pDLE9BQU8sQ0FBQyxJQUFJLEVBQ1osT0FBTyxDQUFDLElBQUksRUFDWixPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsV0FBVyxDQUNwQjtRQUNELEdBQUcsZ0NBQWdDLENBQ2pDLFNBQVMsRUFDVCxPQUFPLENBQUMsTUFBTSxFQUNkLE9BQU8sQ0FBQyxhQUFhLEVBQ3JCLE9BQU8sQ0FBQyxhQUFhLENBQ3RCO1FBQ0QsR0FBRyxnQ0FBZ0MsQ0FDakMsU0FBUyxFQUNULE9BQU8sQ0FBQyxNQUFNLEVBQ2QsT0FBTyxDQUFDLGFBQWEsRUFDckIsT0FBTyxDQUFDLGFBQWEsQ0FDdEI7UUFDRCxHQUFHLGdDQUFnQyxDQUFrQixPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQztLQUM3RyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3RTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmltcG9ydCB7IGNyZWF0ZUxvYWRpbmdTdGF0ZUFjdGlvbkhhbmRsZXJzLCBjcmVhdGVSZXF1ZXN0U3RhdGVBY3Rpb25IYW5kbGVycyB9IGZyb20gJ0BuZ2R1eC9zdG9yZS1jb21tb24nO1xyXG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yLCBBY3Rpb25SZWR1Y2VyLCBjcmVhdGVSZWR1Y2VyLCBDcmVhdG9yLCBvbiwgUmVkdWNlclR5cGVzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQWN0aW9ucywgRm9ybVN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1SZWR1Y2VyPFQsIEU+KFxyXG4gIGFjdGlvbnM6IEZvcm1BY3Rpb25zPFQsIEU+LFxyXG4gIGFjdGlvbkhhbmRsZXJzPzogUmVkdWNlclR5cGVzPEZvcm1TdGF0ZTxULCBFPiwgQWN0aW9uQ3JlYXRvcltdPltdLFxyXG4gIGluaXRpYWxGb3JtU3RhdGU/OiBvYmplY3RcclxuKTogQWN0aW9uUmVkdWNlcjxGb3JtU3RhdGU8VCwgRT4+IHtcclxuICBjb25zdCBpbml0aWFsU3RhdGU6IEZvcm1TdGF0ZTxULCBFPiA9IHsgLi4uY3JlYXRlSW5pdGlhbEZvcm1TdGF0ZTxULCBFPigpLCAuLi5pbml0aWFsRm9ybVN0YXRlIH07XHJcbiAgcmV0dXJuIGNyZWF0ZVJlZHVjZXI8Rm9ybVN0YXRlPFQsIEU+PihcclxuICAgIGluaXRpYWxTdGF0ZSxcclxuICAgIC4uLmNyZWF0ZUZvcm1BY3Rpb25IYW5kbGVyczxULCBFPihpbml0aWFsU3RhdGUsIGFjdGlvbnMpLFxyXG4gICAgLi4uKGFjdGlvbkhhbmRsZXJzIHx8IFtdKVxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxGb3JtU3RhdGU8VCwgRT4oKTogRm9ybVN0YXRlPFQsIEU+IHtcclxuICByZXR1cm4ge1xyXG4gICAgcmVzb3VyY2U6IHVuZGVmaW5lZCxcclxuICAgIGxvYWRpbmdTdGF0ZTogUmVxdWVzdFN0YXRlLklETEUsXHJcbiAgICByZXF1ZXN0U3RhdGU6IFJlcXVlc3RTdGF0ZS5JRExFLFxyXG4gICAgZXJyb3JzOiB1bmRlZmluZWRcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVGb3JtQWN0aW9uSGFuZGxlcnM8VCwgRT4oXHJcbiAgaW5pdGlhbEZvcm1TdGF0ZTogRm9ybVN0YXRlPFQsIEU+LFxyXG4gIGFjdGlvbnM6IEZvcm1BY3Rpb25zPFQsIEU+XHJcbik6IFJlZHVjZXJUeXBlczxGb3JtU3RhdGU8VCwgRT4sIEFjdGlvbkNyZWF0b3I8c3RyaW5nLCBDcmVhdG9yPGFueVtdLCBvYmplY3Q+PltdPltdIHtcclxuICByZXR1cm4gW1xyXG4gICAgb24oYWN0aW9ucy5yZXNldCwgKCk6IEZvcm1TdGF0ZTxULCBFPiA9PiBpbml0aWFsRm9ybVN0YXRlKSxcclxuICAgIG9uKFxyXG4gICAgICBhY3Rpb25zLmxvYWRTdWNjZXNzLFxyXG4gICAgICBhY3Rpb25zLmNyZWF0ZVN1Y2Nlc3MsXHJcbiAgICAgIGFjdGlvbnMuc2F2ZVN1Y2Nlc3MsXHJcbiAgICAgIChzdGF0ZTogRm9ybVN0YXRlPFQsIEU+LCB7IHJlc291cmNlIH0pOiBGb3JtU3RhdGU8VCwgRT4gPT4gKHsgLi4uc3RhdGUsIHJlc291cmNlIH0pXHJcbiAgICApLFxyXG4gICAgb24oXHJcbiAgICAgIGFjdGlvbnMuZGVsZXRlU3VjY2VzcyxcclxuICAgICAgKHN0YXRlOiBGb3JtU3RhdGU8VCwgRT4pOiBGb3JtU3RhdGU8VCwgRT4gPT4gKHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICByZXNvdXJjZTogdW5kZWZpbmVkXHJcbiAgICAgIH0pXHJcbiAgICApLFxyXG4gICAgLi4uY3JlYXRlUmVxdWVzdFN0YXRlQWN0aW9uSGFuZGxlcnM8Rm9ybVN0YXRlPFQsIEU+LCBFPihcclxuICAgICAgYWN0aW9ucy5sb2FkLFxyXG4gICAgICBhY3Rpb25zLnNhdmUsXHJcbiAgICAgIGFjdGlvbnMuc2F2ZVN1Y2Nlc3MsXHJcbiAgICAgIGFjdGlvbnMuc2F2ZUZhaWx1cmVcclxuICAgICksXHJcbiAgICAuLi5jcmVhdGVSZXF1ZXN0U3RhdGVBY3Rpb25IYW5kbGVyczxGb3JtU3RhdGU8VCwgRT4sIEU+KFxyXG4gICAgICB1bmRlZmluZWQsXHJcbiAgICAgIGFjdGlvbnMuY3JlYXRlLFxyXG4gICAgICBhY3Rpb25zLmNyZWF0ZVN1Y2Nlc3MsXHJcbiAgICAgIGFjdGlvbnMuY3JlYXRlRmFpbHVyZVxyXG4gICAgKSxcclxuICAgIC4uLmNyZWF0ZVJlcXVlc3RTdGF0ZUFjdGlvbkhhbmRsZXJzPEZvcm1TdGF0ZTxULCBFPiwgRT4oXHJcbiAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgYWN0aW9ucy5kZWxldGUsXHJcbiAgICAgIGFjdGlvbnMuZGVsZXRlU3VjY2VzcyxcclxuICAgICAgYWN0aW9ucy5kZWxldGVGYWlsdXJlXHJcbiAgICApLFxyXG4gICAgLi4uY3JlYXRlTG9hZGluZ1N0YXRlQWN0aW9uSGFuZGxlcnM8Rm9ybVN0YXRlPFQsIEU+PihhY3Rpb25zLmxvYWQsIGFjdGlvbnMubG9hZFN1Y2Nlc3MsIGFjdGlvbnMubG9hZEZhaWx1cmUpXHJcbiAgXTtcclxufVxyXG4iXX0=
@@ -14,4 +14,4 @@ export function createFormSelectors(getFormState) {
14
14
  isReady
15
15
  };
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvZm9ybS9zcmMvbGliLytzdGF0ZS9mb3JtLXNlbGVjdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBd0MsTUFBTSxhQUFhLENBQUM7QUFHbkYsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxZQUE0RjtJQUU1RixNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xGLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEYsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RSxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTFFLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FDNUIsV0FBVyxFQUNYLGVBQWUsRUFDZixDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksWUFBWSxLQUFLLFlBQVksQ0FBQyxPQUFPLENBQ2hGLENBQUM7SUFFRixPQUFPO1FBQ0wsZUFBZTtRQUNmLGVBQWU7UUFDZixTQUFTO1FBQ1QsV0FBVztRQUNYLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3RTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciwgRGVmYXVsdFByb2plY3RvckZuLCBNZW1vaXplZFNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgRm9ybVNlbGVjdG9ycywgRm9ybVN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybVNlbGVjdG9yczxULCBFPihcbiAgZ2V0Rm9ybVN0YXRlOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgRm9ybVN0YXRlPFQsIEU+LCBEZWZhdWx0UHJvamVjdG9yRm48Rm9ybVN0YXRlPFQsIEU+Pj5cbik6IEZvcm1TZWxlY3RvcnM8VCwgRT4ge1xuICBjb25zdCBnZXRSZXF1ZXN0U3RhdGUgPSBjcmVhdGVTZWxlY3RvcihnZXRGb3JtU3RhdGUsIHN0YXRlID0+IHN0YXRlLnJlcXVlc3RTdGF0ZSk7XG4gIGNvbnN0IGdldExvYWRpbmdTdGF0ZSA9IGNyZWF0ZVNlbGVjdG9yKGdldEZvcm1TdGF0ZSwgc3RhdGUgPT4gc3RhdGUubG9hZGluZ1N0YXRlKTtcbiAgY29uc3QgZ2V0RXJyb3JzID0gY3JlYXRlU2VsZWN0b3IoZ2V0Rm9ybVN0YXRlLCBzdGF0ZSA9PiBzdGF0ZS5lcnJvcnMpO1xuICBjb25zdCBnZXRSZXNvdXJjZSA9IGNyZWF0ZVNlbGVjdG9yKGdldEZvcm1TdGF0ZSwgc3RhdGUgPT4gc3RhdGUucmVzb3VyY2UpO1xuXG4gIGNvbnN0IGlzUmVhZHkgPSBjcmVhdGVTZWxlY3RvcihcbiAgICBnZXRSZXNvdXJjZSxcbiAgICBnZXRMb2FkaW5nU3RhdGUsXG4gICAgKHJlc291cmNlLCBsb2FkaW5nU3RhdGUpID0+ICEhcmVzb3VyY2UgJiYgbG9hZGluZ1N0YXRlID09PSBSZXF1ZXN0U3RhdGUuU1VDQ0VTU1xuICApO1xuXG4gIHJldHVybiB7XG4gICAgZ2V0UmVxdWVzdFN0YXRlLFxuICAgIGdldExvYWRpbmdTdGF0ZSxcbiAgICBnZXRFcnJvcnMsXG4gICAgZ2V0UmVzb3VyY2UsXG4gICAgaXNSZWFkeVxuICB9O1xufVxuIl19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvZm9ybS9zcmMvbGliLytzdGF0ZS9mb3JtLXNlbGVjdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBd0MsTUFBTSxhQUFhLENBQUM7QUFHbkYsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxZQUE0RjtJQUU1RixNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xGLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEYsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RSxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTFFLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FDNUIsV0FBVyxFQUNYLGVBQWUsRUFDZixDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksWUFBWSxLQUFLLFlBQVksQ0FBQyxPQUFPLENBQ2hGLENBQUM7SUFFRixPQUFPO1FBQ0wsZUFBZTtRQUNmLGVBQWU7UUFDZixTQUFTO1FBQ1QsV0FBVztRQUNYLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3RTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmltcG9ydCB7IGNyZWF0ZVNlbGVjdG9yLCBEZWZhdWx0UHJvamVjdG9yRm4sIE1lbW9pemVkU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IEZvcm1TZWxlY3RvcnMsIEZvcm1TdGF0ZSB9IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtU2VsZWN0b3JzPFQsIEU+KFxyXG4gIGdldEZvcm1TdGF0ZTogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIEZvcm1TdGF0ZTxULCBFPiwgRGVmYXVsdFByb2plY3RvckZuPEZvcm1TdGF0ZTxULCBFPj4+XHJcbik6IEZvcm1TZWxlY3RvcnM8VCwgRT4ge1xyXG4gIGNvbnN0IGdldFJlcXVlc3RTdGF0ZSA9IGNyZWF0ZVNlbGVjdG9yKGdldEZvcm1TdGF0ZSwgc3RhdGUgPT4gc3RhdGUucmVxdWVzdFN0YXRlKTtcclxuICBjb25zdCBnZXRMb2FkaW5nU3RhdGUgPSBjcmVhdGVTZWxlY3RvcihnZXRGb3JtU3RhdGUsIHN0YXRlID0+IHN0YXRlLmxvYWRpbmdTdGF0ZSk7XHJcbiAgY29uc3QgZ2V0RXJyb3JzID0gY3JlYXRlU2VsZWN0b3IoZ2V0Rm9ybVN0YXRlLCBzdGF0ZSA9PiBzdGF0ZS5lcnJvcnMpO1xyXG4gIGNvbnN0IGdldFJlc291cmNlID0gY3JlYXRlU2VsZWN0b3IoZ2V0Rm9ybVN0YXRlLCBzdGF0ZSA9PiBzdGF0ZS5yZXNvdXJjZSk7XHJcblxyXG4gIGNvbnN0IGlzUmVhZHkgPSBjcmVhdGVTZWxlY3RvcihcclxuICAgIGdldFJlc291cmNlLFxyXG4gICAgZ2V0TG9hZGluZ1N0YXRlLFxyXG4gICAgKHJlc291cmNlLCBsb2FkaW5nU3RhdGUpID0+ICEhcmVzb3VyY2UgJiYgbG9hZGluZ1N0YXRlID09PSBSZXF1ZXN0U3RhdGUuU1VDQ0VTU1xyXG4gICk7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBnZXRSZXF1ZXN0U3RhdGUsXHJcbiAgICBnZXRMb2FkaW5nU3RhdGUsXHJcbiAgICBnZXRFcnJvcnMsXHJcbiAgICBnZXRSZXNvdXJjZSxcclxuICAgIGlzUmVhZHlcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -13,4 +13,4 @@ export function createFormState(featureName) {
13
13
  selectors
14
14
  };
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9mb3JtL3NyYy9saWIvK3N0YXRlL2Zvcm0tc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXZELE1BQU0sVUFBVSxlQUFlLENBQU8sV0FBbUI7SUFDdkQsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQU8sV0FBVyxDQUFDLENBQUM7SUFDckQsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQWtCLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWhELE9BQU87UUFDTCxPQUFPO1FBQ1AsT0FBTyxFQUFFLENBQUMsS0FBc0IsRUFBRSxNQUFjLEVBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUM1RixTQUFTO0tBQ1YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24sIGNyZWF0ZUZlYXR1cmVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEZvcm1TdGF0ZSB9IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcbmltcG9ydCB7IGNyZWF0ZUZvcm1BY3Rpb25zIH0gZnJvbSAnLi9mb3JtLWFjdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlRm9ybVJlZHVjZXIgfSBmcm9tICcuL2Zvcm0tcmVkdWNlcic7XG5pbXBvcnQgeyBjcmVhdGVGb3JtU2VsZWN0b3JzIH0gZnJvbSAnLi9mb3JtLXNlbGVjdG9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtU3RhdGU8VCwgRT4oZmVhdHVyZU5hbWU6IHN0cmluZykge1xuICBjb25zdCBhY3Rpb25zID0gY3JlYXRlRm9ybUFjdGlvbnM8VCwgRT4oZmVhdHVyZU5hbWUpO1xuICBjb25zdCByZWR1Y2VyID0gY3JlYXRlRm9ybVJlZHVjZXIoYWN0aW9ucyk7XG4gIGNvbnN0IGdldFN0YXRlID0gY3JlYXRlRmVhdHVyZVNlbGVjdG9yPEZvcm1TdGF0ZTxULCBFPj4oZmVhdHVyZU5hbWUpO1xuICBjb25zdCBzZWxlY3RvcnMgPSBjcmVhdGVGb3JtU2VsZWN0b3JzKGdldFN0YXRlKTtcblxuICByZXR1cm4ge1xuICAgIGFjdGlvbnMsXG4gICAgcmVkdWNlcjogKHN0YXRlOiBGb3JtU3RhdGU8VCwgRT4sIGFjdGlvbjogQWN0aW9uKTogRm9ybVN0YXRlPFQsIEU+ID0+IHJlZHVjZXIoc3RhdGUsIGFjdGlvbiksXG4gICAgc2VsZWN0b3JzXG4gIH07XG59XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9mb3JtL3NyYy9saWIvK3N0YXRlL2Zvcm0tc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXZELE1BQU0sVUFBVSxlQUFlLENBQU8sV0FBbUI7SUFDdkQsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQU8sV0FBVyxDQUFDLENBQUM7SUFDckQsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQWtCLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWhELE9BQU87UUFDTCxPQUFPO1FBQ1AsT0FBTyxFQUFFLENBQUMsS0FBc0IsRUFBRSxNQUFjLEVBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUM1RixTQUFTO0tBQ1YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24sIGNyZWF0ZUZlYXR1cmVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBjcmVhdGVGb3JtQWN0aW9ucyB9IGZyb20gJy4vZm9ybS1hY3Rpb25zJztcclxuaW1wb3J0IHsgY3JlYXRlRm9ybVJlZHVjZXIgfSBmcm9tICcuL2Zvcm0tcmVkdWNlcic7XHJcbmltcG9ydCB7IGNyZWF0ZUZvcm1TZWxlY3RvcnMgfSBmcm9tICcuL2Zvcm0tc2VsZWN0b3JzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtU3RhdGU8VCwgRT4oZmVhdHVyZU5hbWU6IHN0cmluZykge1xyXG4gIGNvbnN0IGFjdGlvbnMgPSBjcmVhdGVGb3JtQWN0aW9uczxULCBFPihmZWF0dXJlTmFtZSk7XHJcbiAgY29uc3QgcmVkdWNlciA9IGNyZWF0ZUZvcm1SZWR1Y2VyKGFjdGlvbnMpO1xyXG4gIGNvbnN0IGdldFN0YXRlID0gY3JlYXRlRmVhdHVyZVNlbGVjdG9yPEZvcm1TdGF0ZTxULCBFPj4oZmVhdHVyZU5hbWUpO1xyXG4gIGNvbnN0IHNlbGVjdG9ycyA9IGNyZWF0ZUZvcm1TZWxlY3RvcnMoZ2V0U3RhdGUpO1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgYWN0aW9ucyxcclxuICAgIHJlZHVjZXI6IChzdGF0ZTogRm9ybVN0YXRlPFQsIEU+LCBhY3Rpb246IEFjdGlvbik6IEZvcm1TdGF0ZTxULCBFPiA9PiByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pLFxyXG4gICAgc2VsZWN0b3JzXHJcbiAgfTtcclxufVxyXG4iXX0=
@@ -1,2 +1,3 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9mb3JtL3NyYy9saWIvbW9kZWxzL2Zvcm0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3RTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XG5pbXBvcnQgeyBBcGlSZXF1ZXN0U3RhdGUsIExvYWRpbmdTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9zdG9yZS1jb21tb24nO1xuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciwgTWVtb2l6ZWRTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFR5cGVkQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUvc3JjL21vZGVscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVN0YXRlPFQsIEU+IGV4dGVuZHMgQXBpUmVxdWVzdFN0YXRlPEU+LCBMb2FkaW5nU3RhdGUge1xuICByZXNvdXJjZTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VsZWN0b3JzPFQsIEU+IHtcbiAgZ2V0UmVxdWVzdFN0YXRlOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgUmVxdWVzdFN0YXRlPjtcbiAgZ2V0TG9hZGluZ1N0YXRlOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgUmVxdWVzdFN0YXRlPjtcbiAgZ2V0RXJyb3JzOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgRT47XG4gIGdldFJlc291cmNlOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgVD47XG4gIGlzUmVhZHk6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtQWN0aW9uczxULCBFPiB7XG4gIGxvYWQ6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgaWQ6IHN0cmluZyB9KSA9PiB7IGlkOiBzdHJpbmcgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICBsb2FkU3VjY2VzczogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyByZXNvdXJjZTogVCB9KSA9PiB7IHJlc291cmNlOiBUIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgbG9hZEZhaWx1cmU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3JzOiBFIH0pID0+IHsgZXJyb3JzOiBFIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcblxuICBzYXZlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IHJlc291cmNlOiBUIH0pID0+IHsgcmVzb3VyY2U6IFQgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICBzYXZlU3VjY2VzczogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyByZXNvdXJjZTogVCB9KSA9PiB7IHJlc291cmNlOiBUIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgc2F2ZUZhaWx1cmU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3JzOiBFIH0pID0+IHsgZXJyb3JzOiBFIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcblxuICBkZWxldGU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgaWQ6IHN0cmluZyB9KSA9PiB7IGlkOiBzdHJpbmcgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICBkZWxldGVTdWNjZXNzOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGlkOiBzdHJpbmcgfSkgPT4geyBpZDogc3RyaW5nIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgZGVsZXRlRmFpbHVyZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcnM6IEUgfSkgPT4geyBlcnJvcnM6IEUgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuXG4gIGNyZWF0ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyByZXNvdXJjZTogVCB9KSA9PiB7IHJlc291cmNlOiBUIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgY3JlYXRlU3VjY2VzczogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyByZXNvdXJjZTogVCB9KSA9PiB7IHJlc291cmNlOiBUIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgY3JlYXRlRmFpbHVyZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcnM6IEUgfSkgPT4geyBlcnJvcnM6IEUgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuXG4gIHJlc2V0OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4gVHlwZWRBY3Rpb248c3RyaW5nPj47XG59XG4iXX0=
1
+ import { InjectionToken } from '@angular/core';
2
+ export const FORM_FEATURE_KEY = new InjectionToken('FORM_FEATURE_KEY');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9mb3JtL3NyYy9saWIvbW9kZWxzL2Zvcm0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0vQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBUyxrQkFBa0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVxdWVzdFN0YXRlIH0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcclxuaW1wb3J0IHsgQXBpUmVxdWVzdFN0YXRlLCBMb2FkaW5nU3RhdGUgfSBmcm9tICdAbmdkdXgvc3RvcmUtY29tbW9uJztcclxuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciwgTWVtb2l6ZWRTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgVHlwZWRBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZS9zcmMvbW9kZWxzJztcclxuXHJcbmV4cG9ydCBjb25zdCBGT1JNX0ZFQVRVUkVfS0VZID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0ZPUk1fRkVBVFVSRV9LRVknKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVN0YXRlPFQsIEU+IGV4dGVuZHMgQXBpUmVxdWVzdFN0YXRlPEU+LCBMb2FkaW5nU3RhdGUge1xyXG4gIHJlc291cmNlOiBUO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TZWxlY3RvcnM8VCwgRT4ge1xyXG4gIGdldFJlcXVlc3RTdGF0ZTogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFJlcXVlc3RTdGF0ZT47XHJcbiAgZ2V0TG9hZGluZ1N0YXRlOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgUmVxdWVzdFN0YXRlPjtcclxuICBnZXRFcnJvcnM6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBFPjtcclxuICBnZXRSZXNvdXJjZTogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFQ+O1xyXG4gIGlzUmVhZHk6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBib29sZWFuPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtQWN0aW9uczxULCBFPiB7XHJcbiAgbG9hZDogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBpZDogc3RyaW5nIH0pID0+IHsgaWQ6IHN0cmluZyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgbG9hZFN1Y2Nlc3M6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgcmVzb3VyY2U6IFQgfSkgPT4geyByZXNvdXJjZTogVCB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgbG9hZEZhaWx1cmU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3JzOiBFIH0pID0+IHsgZXJyb3JzOiBFIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuXHJcbiAgc2F2ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyByZXNvdXJjZTogVCB9KSA9PiB7IHJlc291cmNlOiBUIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBzYXZlU3VjY2VzczogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyByZXNvdXJjZTogVCB9KSA9PiB7IHJlc291cmNlOiBUIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBzYXZlRmFpbHVyZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcnM6IEUgfSkgPT4geyBlcnJvcnM6IEUgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG5cclxuICBkZWxldGU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgaWQ6IHN0cmluZyB9KSA9PiB7IGlkOiBzdHJpbmcgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGRlbGV0ZVN1Y2Nlc3M6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgaWQ6IHN0cmluZyB9KSA9PiB7IGlkOiBzdHJpbmcgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGRlbGV0ZUZhaWx1cmU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3JzOiBFIH0pID0+IHsgZXJyb3JzOiBFIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuXHJcbiAgY3JlYXRlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IHJlc291cmNlOiBUIH0pID0+IHsgcmVzb3VyY2U6IFQgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGNyZWF0ZVN1Y2Nlc3M6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgcmVzb3VyY2U6IFQgfSkgPT4geyByZXNvdXJjZTogVCB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgY3JlYXRlRmFpbHVyZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcnM6IEUgfSkgPT4geyBlcnJvcnM6IEUgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG5cclxuICByZXNldDogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG59XHJcbiJdfQ==
@@ -3,7 +3,10 @@ export { RequestState } from '@ngdux/data-model-common';
3
3
  import { createEffect, ofType } from '@ngrx/effects';
4
4
  import { of } from 'rxjs';
5
5
  import { switchMap, map, catchError, exhaustMap, tap } from 'rxjs/operators';
6
- import { createAction, props, createReducer, on, createSelector, createFeatureSelector } from '@ngrx/store';
6
+ import * as i0 from '@angular/core';
7
+ import { InjectionToken, Injectable, Inject } from '@angular/core';
8
+ import * as i1 from '@ngrx/store';
9
+ import { createAction, props, createReducer, on, createSelector, createFeatureSelector, select } from '@ngrx/store';
7
10
  import { createRequestStateActionHandlers, createLoadingStateActionHandlers } from '@ngdux/store-common';
8
11
 
9
12
  class AbstractFormEffects {
@@ -23,6 +26,8 @@ class AbstractFormEffects {
23
26
  }
24
27
  }
25
28
 
29
+ const FORM_FEATURE_KEY = new InjectionToken('FORM_FEATURE_KEY');
30
+
26
31
  function createFormActions(featureName) {
27
32
  const load = createAction(`[${featureName} API] Load ${featureName}`, props());
28
33
  const loadSuccess = createAction(`[${featureName} API] Load ${featureName} Success`, props());
@@ -93,6 +98,68 @@ function createFormSelectors(getFormState) {
93
98
  };
94
99
  }
95
100
 
101
+ class AbstractFormReducerManager {
102
+ constructor(reducerManager, featureKey) {
103
+ this.reducerManager = reducerManager;
104
+ this.featureKey = featureKey;
105
+ this.setActions();
106
+ this.addReducer();
107
+ this.setSelectors();
108
+ }
109
+ setActions() {
110
+ this.actions = createFormActions(this.featureKey);
111
+ }
112
+ addReducer() {
113
+ const currentReducers = Object.keys(this.reducerManager.currentReducers || {});
114
+ if (!currentReducers.includes(this.featureKey)) {
115
+ const reducer = createFormReducer(this.actions);
116
+ this.reducerManager.addReducer(this.featureKey, reducer);
117
+ }
118
+ }
119
+ setSelectors() {
120
+ const getState = createFeatureSelector(this.featureKey);
121
+ this.selectors = createFormSelectors(getState);
122
+ }
123
+ }
124
+ AbstractFormReducerManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AbstractFormReducerManager, deps: [{ token: i1.ReducerManager }, { token: FORM_FEATURE_KEY }], target: i0.ɵɵFactoryTarget.Injectable });
125
+ AbstractFormReducerManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AbstractFormReducerManager });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AbstractFormReducerManager, decorators: [{
127
+ type: Injectable
128
+ }], ctorParameters: function () {
129
+ return [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
130
+ type: Inject,
131
+ args: [FORM_FEATURE_KEY]
132
+ }] }];
133
+ } });
134
+
135
+ class AbstractFormFacade {
136
+ constructor(store, formActions, formSelectors) {
137
+ this.store = store;
138
+ this.formActions = formActions;
139
+ this.formSelectors = formSelectors;
140
+ this.resource$ = this.store.pipe(select(this.formSelectors.getResource));
141
+ this.loadingState$ = this.store.pipe(select(this.formSelectors.getLoadingState));
142
+ this.requestState$ = this.store.pipe(select(this.formSelectors.getRequestState));
143
+ this.errors$ = this.store.pipe(select(this.formSelectors.getErrors));
144
+ this.isReady$ = this.store.pipe(select(this.formSelectors.isReady));
145
+ }
146
+ create(props) {
147
+ this.store.dispatch(this.formActions.create(props));
148
+ }
149
+ load(props) {
150
+ this.store.dispatch(this.formActions.load(props));
151
+ }
152
+ save(props) {
153
+ this.store.dispatch(this.formActions.save(props));
154
+ }
155
+ delete(props) {
156
+ this.store.dispatch(this.formActions.delete(props));
157
+ }
158
+ reset() {
159
+ this.store.dispatch(this.formActions.reset());
160
+ }
161
+ }
162
+
96
163
  function createFormState(featureName) {
97
164
  const actions = createFormActions(featureName);
98
165
  const reducer = createFormReducer(actions);
@@ -109,5 +176,5 @@ function createFormState(featureName) {
109
176
  * Generated bundle index. Do not edit.
110
177
  */
111
178
 
112
- export { AbstractFormEffects, createFormActions, createFormReducer, createFormSelectors, createFormState };
179
+ export { AbstractFormEffects, AbstractFormFacade, AbstractFormReducerManager, FORM_FEATURE_KEY, createFormActions, createFormReducer, createFormSelectors, createFormState };
113
180
  //# sourceMappingURL=ngdux-form.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngdux-form.mjs","sources":["../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form-effects.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-actions.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-reducer.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-selectors.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-state.ts","../../../../../../../libs/ngdux/util/store/form/src/ngdux-form.ts"],"sourcesContent":["import { FormNotificationService, FormService } from '@ngdux/data-model-common';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { of } from 'rxjs';\nimport { catchError, exhaustMap, map, switchMap, tap } from 'rxjs/operators';\nimport { FormActions } from '../models/form.model';\n\nexport abstract class AbstractFormEffects<T, E> {\n load$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.formActions.load),\n switchMap(({ id }) =>\n this.service.loadResource(id).pipe(\n map(resource => this.formActions.loadSuccess({ resource })),\n catchError((errors: E) => of(this.formActions.loadFailure({ errors })))\n )\n )\n )\n );\n\n create$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.formActions.create),\n switchMap(action =>\n this.service.createResource(action.resource).pipe(\n map(resource => this.formActions.createSuccess({ resource })),\n catchError((errors: E) => of(this.formActions.createFailure({ errors })))\n )\n )\n )\n );\n\n update$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.formActions.save),\n switchMap(({ resource }) =>\n this.service.saveResource(resource).pipe(\n map(response => this.formActions.saveSuccess({ resource: response })),\n catchError((errors: E) => of(this.formActions.saveFailure({ errors })))\n )\n )\n )\n );\n\n delete$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.formActions.delete),\n exhaustMap(action =>\n this.service.deleteResource(action.id).pipe(\n map(() => this.formActions.deleteSuccess({ id: action.id })),\n catchError((errors: E) => of(this.formActions.deleteFailure({ errors })))\n )\n )\n )\n );\n\n errorsHandler$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(\n this.formActions.saveFailure,\n this.formActions.loadFailure,\n this.formActions.deleteFailure,\n this.formActions.createFailure\n ),\n tap(({ errors }) => {\n this.notificationService.onFormErrors(errors);\n })\n ),\n { dispatch: false }\n );\n\n protected constructor(\n protected readonly actions$: Actions,\n protected readonly store: Store,\n private readonly service: FormService<T>,\n private readonly formActions: FormActions<T, E>,\n private readonly notificationService: FormNotificationService<E>\n ) {}\n}\n","import { createAction, props } from '@ngrx/store';\nimport { FormActions } from '../models/form.model';\n\nexport function createFormActions<T, E>(featureName: string): FormActions<T, E> {\n const load = createAction(`[${featureName} API] Load ${featureName}`, props<{ id: string }>());\n const loadSuccess = createAction(`[${featureName} API] Load ${featureName} Success`, props<{ resource: T }>());\n const loadFailure = createAction(`[${featureName} API] Load ${featureName} Failure`, props<{ errors: E }>());\n\n const save = createAction(`[${featureName} API] Save ${featureName}`, props<{ resource: T }>());\n const saveSuccess = createAction(`[${featureName} API] Save ${featureName} Success`, props<{ resource: T }>());\n const saveFailure = createAction(`[${featureName} API] Save ${featureName} Failure`, props<{ errors: E }>());\n\n const deleteAction = createAction(`[${featureName} API] Delete ${featureName}`, props<{ id: string }>());\n const deleteSuccess = createAction(`[${featureName} API] Delete ${featureName} Success`, props<{ id: string }>());\n const deleteFailure = createAction(`[${featureName} API] Delete ${featureName} Failure`, props<{ errors: E }>());\n\n const create = createAction(`[${featureName} API] Create ${featureName}`, props<{ resource: T }>());\n const createSuccess = createAction(`[${featureName} API] Create ${featureName} Success`, props<{ resource: T }>());\n const createFailure = createAction(`[${featureName} API] Create ${featureName} Failure`, props<{ errors: E }>());\n\n const reset = createAction(`[${featureName} API] Reset ${featureName}`);\n\n return {\n load,\n loadSuccess,\n loadFailure,\n save,\n saveSuccess,\n saveFailure,\n delete: deleteAction,\n deleteSuccess,\n deleteFailure,\n create,\n createSuccess,\n createFailure,\n reset\n };\n}\n","import { RequestState } from '@ngdux/data-model-common';\nimport { createLoadingStateActionHandlers, createRequestStateActionHandlers } from '@ngdux/store-common';\nimport { ActionCreator, ActionReducer, createReducer, Creator, on, ReducerTypes } from '@ngrx/store';\nimport { FormActions, FormState } from '../models/form.model';\n\nexport function createFormReducer<T, E>(\n actions: FormActions<T, E>,\n actionHandlers?: ReducerTypes<FormState<T, E>, ActionCreator[]>[],\n initialFormState?: object\n): ActionReducer<FormState<T, E>> {\n const initialState: FormState<T, E> = { ...createInitialFormState<T, E>(), ...initialFormState };\n return createReducer<FormState<T, E>>(\n initialState,\n ...createFormActionHandlers<T, E>(initialState, actions),\n ...(actionHandlers || [])\n );\n}\n\nfunction createInitialFormState<T, E>(): FormState<T, E> {\n return {\n resource: undefined,\n loadingState: RequestState.IDLE,\n requestState: RequestState.IDLE,\n errors: undefined\n };\n}\n\nfunction createFormActionHandlers<T, E>(\n initialFormState: FormState<T, E>,\n actions: FormActions<T, E>\n): ReducerTypes<FormState<T, E>, ActionCreator<string, Creator<any[], object>>[]>[] {\n return [\n on(actions.reset, (): FormState<T, E> => initialFormState),\n on(\n actions.loadSuccess,\n actions.createSuccess,\n actions.saveSuccess,\n (state: FormState<T, E>, { resource }): FormState<T, E> => ({ ...state, resource })\n ),\n on(\n actions.deleteSuccess,\n (state: FormState<T, E>): FormState<T, E> => ({\n ...state,\n resource: undefined\n })\n ),\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\n actions.load,\n actions.save,\n actions.saveSuccess,\n actions.saveFailure\n ),\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\n undefined,\n actions.create,\n actions.createSuccess,\n actions.createFailure\n ),\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\n undefined,\n actions.delete,\n actions.deleteSuccess,\n actions.deleteFailure\n ),\n ...createLoadingStateActionHandlers<FormState<T, E>>(actions.load, actions.loadSuccess, actions.loadFailure)\n ];\n}\n","import { RequestState } from '@ngdux/data-model-common';\nimport { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\nimport { FormSelectors, FormState } from '../models/form.model';\n\nexport function createFormSelectors<T, E>(\n getFormState: MemoizedSelector<object, FormState<T, E>, DefaultProjectorFn<FormState<T, E>>>\n): FormSelectors<T, E> {\n const getRequestState = createSelector(getFormState, state => state.requestState);\n const getLoadingState = createSelector(getFormState, state => state.loadingState);\n const getErrors = createSelector(getFormState, state => state.errors);\n const getResource = createSelector(getFormState, state => state.resource);\n\n const isReady = createSelector(\n getResource,\n getLoadingState,\n (resource, loadingState) => !!resource && loadingState === RequestState.SUCCESS\n );\n\n return {\n getRequestState,\n getLoadingState,\n getErrors,\n getResource,\n isReady\n };\n}\n","import { Action, createFeatureSelector } from '@ngrx/store';\nimport { FormState } from '../models/form.model';\nimport { createFormActions } from './form-actions';\nimport { createFormReducer } from './form-reducer';\nimport { createFormSelectors } from './form-selectors';\n\nexport function createFormState<T, E>(featureName: string) {\n const actions = createFormActions<T, E>(featureName);\n const reducer = createFormReducer(actions);\n const getState = createFeatureSelector<FormState<T, E>>(featureName);\n const selectors = createFormSelectors(getState);\n\n return {\n actions,\n reducer: (state: FormState<T, E>, action: Action): FormState<T, E> => reducer(state, action),\n selectors\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAOsB,mBAAmB,CAAA;IAiEvC,WACqB,CAAA,QAAiB,EACjB,KAAY,EACd,OAAuB,EACvB,WAA8B,EAC9B,mBAA+C,EAAA;AAJ7C,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AACjB,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;AACd,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;AACvB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAmB;AAC9B,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAA4B;AArElE,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAAC,MACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAC7B,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,KACf,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAChC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAC3D,UAAU,CAAC,CAAC,MAAS,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CACxE,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAG,YAAY,CAAC,MACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAC/B,SAAS,CAAC,MAAM,IACd,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC/C,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAC7D,UAAU,CAAC,CAAC,MAAS,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAC1E,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAG,YAAY,CAAC,MACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAC7B,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,KACrB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,EACrE,UAAU,CAAC,CAAC,MAAS,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CACxE,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAG,YAAY,CAAC,MACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAC/B,UAAU,CAAC,MAAM,IACf,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CACzC,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAC5D,UAAU,CAAC,CAAC,MAAS,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAC1E,CACF,CACF,CACF,CAAC;QAEF,IAAc,CAAA,cAAA,GAAG,YAAY,CAC3B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CACJ,IAAI,CAAC,WAAW,CAAC,WAAW,EAC5B,IAAI,CAAC,WAAW,CAAC,WAAW,EAC5B,IAAI,CAAC,WAAW,CAAC,aAAa,EAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,CAC/B,EACD,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAI;AACjB,YAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC/C,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;KAQE;AACL;;AC5EK,SAAU,iBAAiB,CAAO,WAAmB,EAAA;AACzD,IAAA,MAAM,IAAI,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAc,WAAA,EAAA,WAAW,CAAE,CAAA,EAAE,KAAK,EAAkB,CAAC,CAAC;AAC/F,IAAA,MAAM,WAAW,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAc,WAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EAAE,KAAK,EAAmB,CAAC,CAAC;AAC/G,IAAA,MAAM,WAAW,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAc,WAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EAAE,KAAK,EAAiB,CAAC,CAAC;AAE7G,IAAA,MAAM,IAAI,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAc,WAAA,EAAA,WAAW,CAAE,CAAA,EAAE,KAAK,EAAmB,CAAC,CAAC;AAChG,IAAA,MAAM,WAAW,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAc,WAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EAAE,KAAK,EAAmB,CAAC,CAAC;AAC/G,IAAA,MAAM,WAAW,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAc,WAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EAAE,KAAK,EAAiB,CAAC,CAAC;AAE7G,IAAA,MAAM,YAAY,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAgB,aAAA,EAAA,WAAW,CAAE,CAAA,EAAE,KAAK,EAAkB,CAAC,CAAC;AACzG,IAAA,MAAM,aAAa,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAgB,aAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EAAE,KAAK,EAAkB,CAAC,CAAC;AAClH,IAAA,MAAM,aAAa,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAgB,aAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EAAE,KAAK,EAAiB,CAAC,CAAC;AAEjH,IAAA,MAAM,MAAM,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAgB,aAAA,EAAA,WAAW,CAAE,CAAA,EAAE,KAAK,EAAmB,CAAC,CAAC;AACpG,IAAA,MAAM,aAAa,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAgB,aAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EAAE,KAAK,EAAmB,CAAC,CAAC;AACnH,IAAA,MAAM,aAAa,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAgB,aAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EAAE,KAAK,EAAiB,CAAC,CAAC;IAEjH,MAAM,KAAK,GAAG,YAAY,CAAC,CAAA,CAAA,EAAI,WAAW,CAAe,YAAA,EAAA,WAAW,CAAE,CAAA,CAAC,CAAC;IAExE,OAAO;QACL,IAAI;QACJ,WAAW;QACX,WAAW;QACX,IAAI;QACJ,WAAW;QACX,WAAW;AACX,QAAA,MAAM,EAAE,YAAY;QACpB,aAAa;QACb,aAAa;QACb,MAAM;QACN,aAAa;QACb,aAAa;QACb,KAAK;KACN,CAAC;AACJ;;SChCgB,iBAAiB,CAC/B,OAA0B,EAC1B,cAAiE,EACjE,gBAAyB,EAAA;AAEzB,IAAA,MAAM,YAAY,GAAyB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,sBAAsB,EAAQ,CAAK,EAAA,gBAAgB,CAAE,CAAC;AACjG,IAAA,OAAO,aAAa,CAClB,YAAY,EACZ,GAAG,wBAAwB,CAAO,YAAY,EAAE,OAAO,CAAC,EACxD,IAAI,cAAc,IAAI,EAAE,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,GAAA;IAC7B,OAAO;AACL,QAAA,QAAQ,EAAE,SAAS;QACnB,YAAY,EAAE,YAAY,CAAC,IAAI;QAC/B,YAAY,EAAE,YAAY,CAAC,IAAI;AAC/B,QAAA,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,gBAAiC,EACjC,OAA0B,EAAA;IAE1B,OAAO;QACL,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAuB,gBAAgB,CAAC;QAC1D,EAAE,CACA,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,WAAW,EACnB,CAAC,KAAsB,EAAE,EAAE,QAAQ,EAAE,MAAsB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,KAAK,CAAA,EAAA,EAAE,QAAQ,EAAA,CAAA,CAAG,CACpF;AACD,QAAA,EAAE,CACA,OAAO,CAAC,aAAa,EACrB,CAAC,KAAsB,sCAClB,KAAK,CAAA,EAAA,EACR,QAAQ,EAAE,SAAS,IACnB,CACH;AACD,QAAA,GAAG,gCAAgC,CACjC,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,WAAW,CACpB;AACD,QAAA,GAAG,gCAAgC,CACjC,SAAS,EACT,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,aAAa,CACtB;AACD,QAAA,GAAG,gCAAgC,CACjC,SAAS,EACT,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,aAAa,CACtB;AACD,QAAA,GAAG,gCAAgC,CAAkB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC;KAC7G,CAAC;AACJ;;AC9DM,SAAU,mBAAmB,CACjC,YAA4F,EAAA;AAE5F,IAAA,MAAM,eAAe,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAClF,IAAA,MAAM,eAAe,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAClF,IAAA,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AACtE,IAAA,MAAM,WAAW,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE1E,MAAM,OAAO,GAAG,cAAc,CAC5B,WAAW,EACX,eAAe,EACf,CAAC,QAAQ,EAAE,YAAY,KAAK,CAAC,CAAC,QAAQ,IAAI,YAAY,KAAK,YAAY,CAAC,OAAO,CAChF,CAAC;IAEF,OAAO;QACL,eAAe;QACf,eAAe;QACf,SAAS;QACT,WAAW;QACX,OAAO;KACR,CAAC;AACJ;;ACnBM,SAAU,eAAe,CAAO,WAAmB,EAAA;AACvD,IAAA,MAAM,OAAO,GAAG,iBAAiB,CAAO,WAAW,CAAC,CAAC;AACrD,IAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3C,IAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAkB,WAAW,CAAC,CAAC;AACrE,IAAA,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAEhD,OAAO;QACL,OAAO;AACP,QAAA,OAAO,EAAE,CAAC,KAAsB,EAAE,MAAc,KAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;QAC5F,SAAS;KACV,CAAC;AACJ;;ACjBA;;AAEG;;;;"}
1
+ {"version":3,"file":"ngdux-form.mjs","sources":["../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form-effects.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/models/form.model.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-actions.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-reducer.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-selectors.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form-state.service.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form.facade.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-state.ts","../../../../../../../libs/ngdux/util/store/form/src/ngdux-form.ts"],"sourcesContent":["import { FormNotificationService, FormService } from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, exhaustMap, map, switchMap, tap } from 'rxjs/operators';\r\nimport { FormActions } from '../models/form.model';\r\n\r\nexport abstract class AbstractFormEffects<T, E> {\r\n load$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.load),\r\n switchMap(({ id }) =>\r\n this.service.loadResource(id).pipe(\r\n map(resource => this.formActions.loadSuccess({ resource })),\r\n catchError((errors: E) => of(this.formActions.loadFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n create$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.create),\r\n switchMap(action =>\r\n this.service.createResource(action.resource).pipe(\r\n map(resource => this.formActions.createSuccess({ resource })),\r\n catchError((errors: E) => of(this.formActions.createFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n update$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.save),\r\n switchMap(({ resource }) =>\r\n this.service.saveResource(resource).pipe(\r\n map(response => this.formActions.saveSuccess({ resource: response })),\r\n catchError((errors: E) => of(this.formActions.saveFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n delete$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.delete),\r\n exhaustMap(action =>\r\n this.service.deleteResource(action.id).pipe(\r\n map(() => this.formActions.deleteSuccess({ id: action.id })),\r\n catchError((errors: E) => of(this.formActions.deleteFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n errorsHandler$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(\r\n this.formActions.saveFailure,\r\n this.formActions.loadFailure,\r\n this.formActions.deleteFailure,\r\n this.formActions.createFailure\r\n ),\r\n tap(({ errors }) => {\r\n this.notificationService.onFormErrors(errors);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n protected constructor(\r\n protected readonly actions$: Actions,\r\n protected readonly store: Store,\r\n private readonly service: FormService<T>,\r\n private readonly formActions: FormActions<T, E>,\r\n private readonly notificationService: FormNotificationService<E>\r\n ) {}\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { RequestState } from '@ngdux/data-model-common';\r\nimport { ApiRequestState, LoadingState } from '@ngdux/store-common';\r\nimport { ActionCreator, MemoizedSelector } from '@ngrx/store';\r\nimport { TypedAction } from '@ngrx/store/src/models';\r\n\r\nexport const FORM_FEATURE_KEY = new InjectionToken<string>('FORM_FEATURE_KEY');\r\n\r\nexport interface FormState<T, E> extends ApiRequestState<E>, LoadingState {\r\n resource: T;\r\n}\r\n\r\nexport interface FormSelectors<T, E> {\r\n getRequestState: MemoizedSelector<object, RequestState>;\r\n getLoadingState: MemoizedSelector<object, RequestState>;\r\n getErrors: MemoizedSelector<object, E>;\r\n getResource: MemoizedSelector<object, T>;\r\n isReady: MemoizedSelector<object, boolean>;\r\n}\r\n\r\nexport interface FormActions<T, E> {\r\n load: ActionCreator<string, (props: { id: string }) => { id: string } & TypedAction<string>>;\r\n loadSuccess: ActionCreator<string, (props: { resource: T }) => { resource: T } & TypedAction<string>>;\r\n loadFailure: ActionCreator<string, (props: { errors: E }) => { errors: E } & TypedAction<string>>;\r\n\r\n save: ActionCreator<string, (props: { resource: T }) => { resource: T } & TypedAction<string>>;\r\n saveSuccess: ActionCreator<string, (props: { resource: T }) => { resource: T } & TypedAction<string>>;\r\n saveFailure: ActionCreator<string, (props: { errors: E }) => { errors: E } & TypedAction<string>>;\r\n\r\n delete: ActionCreator<string, (props: { id: string }) => { id: string } & TypedAction<string>>;\r\n deleteSuccess: ActionCreator<string, (props: { id: string }) => { id: string } & TypedAction<string>>;\r\n deleteFailure: ActionCreator<string, (props: { errors: E }) => { errors: E } & TypedAction<string>>;\r\n\r\n create: ActionCreator<string, (props: { resource: T }) => { resource: T } & TypedAction<string>>;\r\n createSuccess: ActionCreator<string, (props: { resource: T }) => { resource: T } & TypedAction<string>>;\r\n createFailure: ActionCreator<string, (props: { errors: E }) => { errors: E } & TypedAction<string>>;\r\n\r\n reset: ActionCreator<string, () => TypedAction<string>>;\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { FormActions } from '../models/form.model';\r\n\r\nexport function createFormActions<T, E>(featureName: string): FormActions<T, E> {\r\n const load = createAction(`[${featureName} API] Load ${featureName}`, props<{ id: string }>());\r\n const loadSuccess = createAction(`[${featureName} API] Load ${featureName} Success`, props<{ resource: T }>());\r\n const loadFailure = createAction(`[${featureName} API] Load ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const save = createAction(`[${featureName} API] Save ${featureName}`, props<{ resource: T }>());\r\n const saveSuccess = createAction(`[${featureName} API] Save ${featureName} Success`, props<{ resource: T }>());\r\n const saveFailure = createAction(`[${featureName} API] Save ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const deleteAction = createAction(`[${featureName} API] Delete ${featureName}`, props<{ id: string }>());\r\n const deleteSuccess = createAction(`[${featureName} API] Delete ${featureName} Success`, props<{ id: string }>());\r\n const deleteFailure = createAction(`[${featureName} API] Delete ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const create = createAction(`[${featureName} API] Create ${featureName}`, props<{ resource: T }>());\r\n const createSuccess = createAction(`[${featureName} API] Create ${featureName} Success`, props<{ resource: T }>());\r\n const createFailure = createAction(`[${featureName} API] Create ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const reset = createAction(`[${featureName} API] Reset ${featureName}`);\r\n\r\n return {\r\n load,\r\n loadSuccess,\r\n loadFailure,\r\n save,\r\n saveSuccess,\r\n saveFailure,\r\n delete: deleteAction,\r\n deleteSuccess,\r\n deleteFailure,\r\n create,\r\n createSuccess,\r\n createFailure,\r\n reset\r\n };\r\n}\r\n","import { RequestState } from '@ngdux/data-model-common';\r\nimport { createLoadingStateActionHandlers, createRequestStateActionHandlers } from '@ngdux/store-common';\r\nimport { ActionCreator, ActionReducer, createReducer, Creator, on, ReducerTypes } from '@ngrx/store';\r\nimport { FormActions, FormState } from '../models/form.model';\r\n\r\nexport function createFormReducer<T, E>(\r\n actions: FormActions<T, E>,\r\n actionHandlers?: ReducerTypes<FormState<T, E>, ActionCreator[]>[],\r\n initialFormState?: object\r\n): ActionReducer<FormState<T, E>> {\r\n const initialState: FormState<T, E> = { ...createInitialFormState<T, E>(), ...initialFormState };\r\n return createReducer<FormState<T, E>>(\r\n initialState,\r\n ...createFormActionHandlers<T, E>(initialState, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialFormState<T, E>(): FormState<T, E> {\r\n return {\r\n resource: undefined,\r\n loadingState: RequestState.IDLE,\r\n requestState: RequestState.IDLE,\r\n errors: undefined\r\n };\r\n}\r\n\r\nfunction createFormActionHandlers<T, E>(\r\n initialFormState: FormState<T, E>,\r\n actions: FormActions<T, E>\r\n): ReducerTypes<FormState<T, E>, ActionCreator<string, Creator<any[], object>>[]>[] {\r\n return [\r\n on(actions.reset, (): FormState<T, E> => initialFormState),\r\n on(\r\n actions.loadSuccess,\r\n actions.createSuccess,\r\n actions.saveSuccess,\r\n (state: FormState<T, E>, { resource }): FormState<T, E> => ({ ...state, resource })\r\n ),\r\n on(\r\n actions.deleteSuccess,\r\n (state: FormState<T, E>): FormState<T, E> => ({\r\n ...state,\r\n resource: undefined\r\n })\r\n ),\r\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\r\n actions.load,\r\n actions.save,\r\n actions.saveSuccess,\r\n actions.saveFailure\r\n ),\r\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\r\n undefined,\r\n actions.create,\r\n actions.createSuccess,\r\n actions.createFailure\r\n ),\r\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createLoadingStateActionHandlers<FormState<T, E>>(actions.load, actions.loadSuccess, actions.loadFailure)\r\n ];\r\n}\r\n","import { RequestState } from '@ngdux/data-model-common';\r\nimport { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\r\nimport { FormSelectors, FormState } from '../models/form.model';\r\n\r\nexport function createFormSelectors<T, E>(\r\n getFormState: MemoizedSelector<object, FormState<T, E>, DefaultProjectorFn<FormState<T, E>>>\r\n): FormSelectors<T, E> {\r\n const getRequestState = createSelector(getFormState, state => state.requestState);\r\n const getLoadingState = createSelector(getFormState, state => state.loadingState);\r\n const getErrors = createSelector(getFormState, state => state.errors);\r\n const getResource = createSelector(getFormState, state => state.resource);\r\n\r\n const isReady = createSelector(\r\n getResource,\r\n getLoadingState,\r\n (resource, loadingState) => !!resource && loadingState === RequestState.SUCCESS\r\n );\r\n\r\n return {\r\n getRequestState,\r\n getLoadingState,\r\n getErrors,\r\n getResource,\r\n isReady\r\n };\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { createFeatureSelector, ReducerManager } from '@ngrx/store';\r\nimport { FormActions, FormSelectors, FormState, FORM_FEATURE_KEY } from '../models/form.model';\r\nimport { createFormActions } from './form-actions';\r\nimport { createFormReducer } from './form-reducer';\r\nimport { createFormSelectors } from './form-selectors';\r\n\r\n@Injectable()\r\nexport abstract class AbstractFormReducerManager<T, E> {\r\n actions: FormActions<T, E>;\r\n selectors: FormSelectors<T, E>;\r\n\r\n constructor(\r\n private readonly reducerManager: ReducerManager,\r\n @Inject(FORM_FEATURE_KEY) private readonly featureKey: string\r\n ) {\r\n this.setActions();\r\n this.addReducer();\r\n this.setSelectors();\r\n }\r\n\r\n protected setActions() {\r\n this.actions = createFormActions<T, E>(this.featureKey);\r\n }\r\n\r\n protected addReducer() {\r\n const currentReducers: string[] = Object.keys(this.reducerManager.currentReducers || {});\r\n if (!currentReducers.includes(this.featureKey)) {\r\n const reducer = createFormReducer(this.actions);\r\n this.reducerManager.addReducer(this.featureKey, reducer);\r\n }\r\n }\r\n\r\n protected setSelectors() {\r\n const getState = createFeatureSelector<FormState<T, E>>(this.featureKey);\r\n this.selectors = createFormSelectors(getState);\r\n }\r\n}\r\n","import { ActionPayload } from '@ngdux/store-common';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { FormActions, FormSelectors } from '../models/form.model';\r\n\r\nexport abstract class AbstractFormFacade<T, E> {\r\n readonly resource$ = this.store.pipe(select(this.formSelectors.getResource));\r\n readonly loadingState$ = this.store.pipe(select(this.formSelectors.getLoadingState));\r\n readonly requestState$ = this.store.pipe(select(this.formSelectors.getRequestState));\r\n readonly errors$ = this.store.pipe(select(this.formSelectors.getErrors));\r\n readonly isReady$ = this.store.pipe(select(this.formSelectors.isReady));\r\n\r\n constructor(\r\n protected readonly store: Store,\r\n private readonly formActions: FormActions<T, E>,\r\n private readonly formSelectors: FormSelectors<T, E>\r\n ) {}\r\n\r\n create(props: ActionPayload<FormActions<T, E>['create']>): void {\r\n this.store.dispatch(this.formActions.create(props));\r\n }\r\n\r\n load(props: ActionPayload<FormActions<T, E>['load']>): void {\r\n this.store.dispatch(this.formActions.load(props));\r\n }\r\n\r\n save(props: ActionPayload<FormActions<T, E>['save']>): void {\r\n this.store.dispatch(this.formActions.save(props));\r\n }\r\n\r\n delete(props: ActionPayload<FormActions<T, E>['delete']>): void {\r\n this.store.dispatch(this.formActions.delete(props));\r\n }\r\n\r\n reset(): void {\r\n this.store.dispatch(this.formActions.reset());\r\n }\r\n}\r\n","import { Action, createFeatureSelector } from '@ngrx/store';\r\nimport { FormState } from '../models/form.model';\r\nimport { createFormActions } from './form-actions';\r\nimport { createFormReducer } from './form-reducer';\r\nimport { createFormSelectors } from './form-selectors';\r\n\r\nexport function createFormState<T, E>(featureName: string) {\r\n const actions = createFormActions<T, E>(featureName);\r\n const reducer = createFormReducer(actions);\r\n const getState = createFeatureSelector<FormState<T, E>>(featureName);\r\n const selectors = createFormSelectors(getState);\r\n\r\n return {\r\n actions,\r\n reducer: (state: FormState<T, E>, action: Action): FormState<T, E> => reducer(state, action),\r\n selectors\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,10 @@ export { RequestState } from '@ngdux/data-model-common';
3
3
  import { createEffect, ofType } from '@ngrx/effects';
4
4
  import { of } from 'rxjs';
5
5
  import { switchMap, map, catchError, exhaustMap, tap } from 'rxjs/operators';
6
- import { createAction, props, createReducer, on, createSelector, createFeatureSelector } from '@ngrx/store';
6
+ import * as i0 from '@angular/core';
7
+ import { InjectionToken, Injectable, Inject } from '@angular/core';
8
+ import * as i1 from '@ngrx/store';
9
+ import { createAction, props, createReducer, on, createSelector, createFeatureSelector, select } from '@ngrx/store';
7
10
  import { createRequestStateActionHandlers, createLoadingStateActionHandlers } from '@ngdux/store-common';
8
11
 
9
12
  class AbstractFormEffects {
@@ -23,6 +26,8 @@ class AbstractFormEffects {
23
26
  }
24
27
  }
25
28
 
29
+ const FORM_FEATURE_KEY = new InjectionToken('FORM_FEATURE_KEY');
30
+
26
31
  function createFormActions(featureName) {
27
32
  const load = createAction(`[${featureName} API] Load ${featureName}`, props());
28
33
  const loadSuccess = createAction(`[${featureName} API] Load ${featureName} Success`, props());
@@ -96,6 +101,66 @@ function createFormSelectors(getFormState) {
96
101
  };
97
102
  }
98
103
 
104
+ class AbstractFormReducerManager {
105
+ constructor(reducerManager, featureKey) {
106
+ this.reducerManager = reducerManager;
107
+ this.featureKey = featureKey;
108
+ this.setActions();
109
+ this.addReducer();
110
+ this.setSelectors();
111
+ }
112
+ setActions() {
113
+ this.actions = createFormActions(this.featureKey);
114
+ }
115
+ addReducer() {
116
+ const currentReducers = Object.keys(this.reducerManager.currentReducers || {});
117
+ if (!currentReducers.includes(this.featureKey)) {
118
+ const reducer = createFormReducer(this.actions);
119
+ this.reducerManager.addReducer(this.featureKey, reducer);
120
+ }
121
+ }
122
+ setSelectors() {
123
+ const getState = createFeatureSelector(this.featureKey);
124
+ this.selectors = createFormSelectors(getState);
125
+ }
126
+ }
127
+ AbstractFormReducerManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AbstractFormReducerManager, deps: [{ token: i1.ReducerManager }, { token: FORM_FEATURE_KEY }], target: i0.ɵɵFactoryTarget.Injectable });
128
+ AbstractFormReducerManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AbstractFormReducerManager });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AbstractFormReducerManager, decorators: [{
130
+ type: Injectable
131
+ }], ctorParameters: function () { return [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
132
+ type: Inject,
133
+ args: [FORM_FEATURE_KEY]
134
+ }] }]; } });
135
+
136
+ class AbstractFormFacade {
137
+ constructor(store, formActions, formSelectors) {
138
+ this.store = store;
139
+ this.formActions = formActions;
140
+ this.formSelectors = formSelectors;
141
+ this.resource$ = this.store.pipe(select(this.formSelectors.getResource));
142
+ this.loadingState$ = this.store.pipe(select(this.formSelectors.getLoadingState));
143
+ this.requestState$ = this.store.pipe(select(this.formSelectors.getRequestState));
144
+ this.errors$ = this.store.pipe(select(this.formSelectors.getErrors));
145
+ this.isReady$ = this.store.pipe(select(this.formSelectors.isReady));
146
+ }
147
+ create(props) {
148
+ this.store.dispatch(this.formActions.create(props));
149
+ }
150
+ load(props) {
151
+ this.store.dispatch(this.formActions.load(props));
152
+ }
153
+ save(props) {
154
+ this.store.dispatch(this.formActions.save(props));
155
+ }
156
+ delete(props) {
157
+ this.store.dispatch(this.formActions.delete(props));
158
+ }
159
+ reset() {
160
+ this.store.dispatch(this.formActions.reset());
161
+ }
162
+ }
163
+
99
164
  function createFormState(featureName) {
100
165
  const actions = createFormActions(featureName);
101
166
  const reducer = createFormReducer(actions);
@@ -112,5 +177,5 @@ function createFormState(featureName) {
112
177
  * Generated bundle index. Do not edit.
113
178
  */
114
179
 
115
- export { AbstractFormEffects, createFormActions, createFormReducer, createFormSelectors, createFormState };
180
+ export { AbstractFormEffects, AbstractFormFacade, AbstractFormReducerManager, FORM_FEATURE_KEY, createFormActions, createFormReducer, createFormSelectors, createFormState };
116
181
  //# sourceMappingURL=ngdux-form.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngdux-form.mjs","sources":["../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form-effects.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-actions.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-reducer.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-selectors.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-state.ts","../../../../../../../libs/ngdux/util/store/form/src/ngdux-form.ts"],"sourcesContent":["import { FormNotificationService, FormService } from '@ngdux/data-model-common';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { of } from 'rxjs';\nimport { catchError, exhaustMap, map, switchMap, tap } from 'rxjs/operators';\nimport { FormActions } from '../models/form.model';\n\nexport abstract class AbstractFormEffects<T, E> {\n load$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.formActions.load),\n switchMap(({ id }) =>\n this.service.loadResource(id).pipe(\n map(resource => this.formActions.loadSuccess({ resource })),\n catchError((errors: E) => of(this.formActions.loadFailure({ errors })))\n )\n )\n )\n );\n\n create$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.formActions.create),\n switchMap(action =>\n this.service.createResource(action.resource).pipe(\n map(resource => this.formActions.createSuccess({ resource })),\n catchError((errors: E) => of(this.formActions.createFailure({ errors })))\n )\n )\n )\n );\n\n update$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.formActions.save),\n switchMap(({ resource }) =>\n this.service.saveResource(resource).pipe(\n map(response => this.formActions.saveSuccess({ resource: response })),\n catchError((errors: E) => of(this.formActions.saveFailure({ errors })))\n )\n )\n )\n );\n\n delete$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.formActions.delete),\n exhaustMap(action =>\n this.service.deleteResource(action.id).pipe(\n map(() => this.formActions.deleteSuccess({ id: action.id })),\n catchError((errors: E) => of(this.formActions.deleteFailure({ errors })))\n )\n )\n )\n );\n\n errorsHandler$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(\n this.formActions.saveFailure,\n this.formActions.loadFailure,\n this.formActions.deleteFailure,\n this.formActions.createFailure\n ),\n tap(({ errors }) => {\n this.notificationService.onFormErrors(errors);\n })\n ),\n { dispatch: false }\n );\n\n protected constructor(\n protected readonly actions$: Actions,\n protected readonly store: Store,\n private readonly service: FormService<T>,\n private readonly formActions: FormActions<T, E>,\n private readonly notificationService: FormNotificationService<E>\n ) {}\n}\n","import { createAction, props } from '@ngrx/store';\nimport { FormActions } from '../models/form.model';\n\nexport function createFormActions<T, E>(featureName: string): FormActions<T, E> {\n const load = createAction(`[${featureName} API] Load ${featureName}`, props<{ id: string }>());\n const loadSuccess = createAction(`[${featureName} API] Load ${featureName} Success`, props<{ resource: T }>());\n const loadFailure = createAction(`[${featureName} API] Load ${featureName} Failure`, props<{ errors: E }>());\n\n const save = createAction(`[${featureName} API] Save ${featureName}`, props<{ resource: T }>());\n const saveSuccess = createAction(`[${featureName} API] Save ${featureName} Success`, props<{ resource: T }>());\n const saveFailure = createAction(`[${featureName} API] Save ${featureName} Failure`, props<{ errors: E }>());\n\n const deleteAction = createAction(`[${featureName} API] Delete ${featureName}`, props<{ id: string }>());\n const deleteSuccess = createAction(`[${featureName} API] Delete ${featureName} Success`, props<{ id: string }>());\n const deleteFailure = createAction(`[${featureName} API] Delete ${featureName} Failure`, props<{ errors: E }>());\n\n const create = createAction(`[${featureName} API] Create ${featureName}`, props<{ resource: T }>());\n const createSuccess = createAction(`[${featureName} API] Create ${featureName} Success`, props<{ resource: T }>());\n const createFailure = createAction(`[${featureName} API] Create ${featureName} Failure`, props<{ errors: E }>());\n\n const reset = createAction(`[${featureName} API] Reset ${featureName}`);\n\n return {\n load,\n loadSuccess,\n loadFailure,\n save,\n saveSuccess,\n saveFailure,\n delete: deleteAction,\n deleteSuccess,\n deleteFailure,\n create,\n createSuccess,\n createFailure,\n reset\n };\n}\n","import { RequestState } from '@ngdux/data-model-common';\nimport { createLoadingStateActionHandlers, createRequestStateActionHandlers } from '@ngdux/store-common';\nimport { ActionCreator, ActionReducer, createReducer, Creator, on, ReducerTypes } from '@ngrx/store';\nimport { FormActions, FormState } from '../models/form.model';\n\nexport function createFormReducer<T, E>(\n actions: FormActions<T, E>,\n actionHandlers?: ReducerTypes<FormState<T, E>, ActionCreator[]>[],\n initialFormState?: object\n): ActionReducer<FormState<T, E>> {\n const initialState: FormState<T, E> = { ...createInitialFormState<T, E>(), ...initialFormState };\n return createReducer<FormState<T, E>>(\n initialState,\n ...createFormActionHandlers<T, E>(initialState, actions),\n ...(actionHandlers || [])\n );\n}\n\nfunction createInitialFormState<T, E>(): FormState<T, E> {\n return {\n resource: undefined,\n loadingState: RequestState.IDLE,\n requestState: RequestState.IDLE,\n errors: undefined\n };\n}\n\nfunction createFormActionHandlers<T, E>(\n initialFormState: FormState<T, E>,\n actions: FormActions<T, E>\n): ReducerTypes<FormState<T, E>, ActionCreator<string, Creator<any[], object>>[]>[] {\n return [\n on(actions.reset, (): FormState<T, E> => initialFormState),\n on(\n actions.loadSuccess,\n actions.createSuccess,\n actions.saveSuccess,\n (state: FormState<T, E>, { resource }): FormState<T, E> => ({ ...state, resource })\n ),\n on(\n actions.deleteSuccess,\n (state: FormState<T, E>): FormState<T, E> => ({\n ...state,\n resource: undefined\n })\n ),\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\n actions.load,\n actions.save,\n actions.saveSuccess,\n actions.saveFailure\n ),\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\n undefined,\n actions.create,\n actions.createSuccess,\n actions.createFailure\n ),\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\n undefined,\n actions.delete,\n actions.deleteSuccess,\n actions.deleteFailure\n ),\n ...createLoadingStateActionHandlers<FormState<T, E>>(actions.load, actions.loadSuccess, actions.loadFailure)\n ];\n}\n","import { RequestState } from '@ngdux/data-model-common';\nimport { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\nimport { FormSelectors, FormState } from '../models/form.model';\n\nexport function createFormSelectors<T, E>(\n getFormState: MemoizedSelector<object, FormState<T, E>, DefaultProjectorFn<FormState<T, E>>>\n): FormSelectors<T, E> {\n const getRequestState = createSelector(getFormState, state => state.requestState);\n const getLoadingState = createSelector(getFormState, state => state.loadingState);\n const getErrors = createSelector(getFormState, state => state.errors);\n const getResource = createSelector(getFormState, state => state.resource);\n\n const isReady = createSelector(\n getResource,\n getLoadingState,\n (resource, loadingState) => !!resource && loadingState === RequestState.SUCCESS\n );\n\n return {\n getRequestState,\n getLoadingState,\n getErrors,\n getResource,\n isReady\n };\n}\n","import { Action, createFeatureSelector } from '@ngrx/store';\nimport { FormState } from '../models/form.model';\nimport { createFormActions } from './form-actions';\nimport { createFormReducer } from './form-reducer';\nimport { createFormSelectors } from './form-selectors';\n\nexport function createFormState<T, E>(featureName: string) {\n const actions = createFormActions<T, E>(featureName);\n const reducer = createFormReducer(actions);\n const getState = createFeatureSelector<FormState<T, E>>(featureName);\n const selectors = createFormSelectors(getState);\n\n return {\n actions,\n reducer: (state: FormState<T, E>, action: Action): FormState<T, E> => reducer(state, action),\n selectors\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngdux-form.mjs","sources":["../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form-effects.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/models/form.model.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-actions.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-reducer.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-selectors.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form-state.service.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form.facade.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-state.ts","../../../../../../../libs/ngdux/util/store/form/src/ngdux-form.ts"],"sourcesContent":["import { FormNotificationService, FormService } from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, exhaustMap, map, switchMap, tap } from 'rxjs/operators';\r\nimport { FormActions } from '../models/form.model';\r\n\r\nexport abstract class AbstractFormEffects<T, E> {\r\n load$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.load),\r\n switchMap(({ id }) =>\r\n this.service.loadResource(id).pipe(\r\n map(resource => this.formActions.loadSuccess({ resource })),\r\n catchError((errors: E) => of(this.formActions.loadFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n create$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.create),\r\n switchMap(action =>\r\n this.service.createResource(action.resource).pipe(\r\n map(resource => this.formActions.createSuccess({ resource })),\r\n catchError((errors: E) => of(this.formActions.createFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n update$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.save),\r\n switchMap(({ resource }) =>\r\n this.service.saveResource(resource).pipe(\r\n map(response => this.formActions.saveSuccess({ resource: response })),\r\n catchError((errors: E) => of(this.formActions.saveFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n delete$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.delete),\r\n exhaustMap(action =>\r\n this.service.deleteResource(action.id).pipe(\r\n map(() => this.formActions.deleteSuccess({ id: action.id })),\r\n catchError((errors: E) => of(this.formActions.deleteFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n errorsHandler$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(\r\n this.formActions.saveFailure,\r\n this.formActions.loadFailure,\r\n this.formActions.deleteFailure,\r\n this.formActions.createFailure\r\n ),\r\n tap(({ errors }) => {\r\n this.notificationService.onFormErrors(errors);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n protected constructor(\r\n protected readonly actions$: Actions,\r\n protected readonly store: Store,\r\n private readonly service: FormService<T>,\r\n private readonly formActions: FormActions<T, E>,\r\n private readonly notificationService: FormNotificationService<E>\r\n ) {}\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { RequestState } from '@ngdux/data-model-common';\r\nimport { ApiRequestState, LoadingState } from '@ngdux/store-common';\r\nimport { ActionCreator, MemoizedSelector } from '@ngrx/store';\r\nimport { TypedAction } from '@ngrx/store/src/models';\r\n\r\nexport const FORM_FEATURE_KEY = new InjectionToken<string>('FORM_FEATURE_KEY');\r\n\r\nexport interface FormState<T, E> extends ApiRequestState<E>, LoadingState {\r\n resource: T;\r\n}\r\n\r\nexport interface FormSelectors<T, E> {\r\n getRequestState: MemoizedSelector<object, RequestState>;\r\n getLoadingState: MemoizedSelector<object, RequestState>;\r\n getErrors: MemoizedSelector<object, E>;\r\n getResource: MemoizedSelector<object, T>;\r\n isReady: MemoizedSelector<object, boolean>;\r\n}\r\n\r\nexport interface FormActions<T, E> {\r\n load: ActionCreator<string, (props: { id: string }) => { id: string } & TypedAction<string>>;\r\n loadSuccess: ActionCreator<string, (props: { resource: T }) => { resource: T } & TypedAction<string>>;\r\n loadFailure: ActionCreator<string, (props: { errors: E }) => { errors: E } & TypedAction<string>>;\r\n\r\n save: ActionCreator<string, (props: { resource: T }) => { resource: T } & TypedAction<string>>;\r\n saveSuccess: ActionCreator<string, (props: { resource: T }) => { resource: T } & TypedAction<string>>;\r\n saveFailure: ActionCreator<string, (props: { errors: E }) => { errors: E } & TypedAction<string>>;\r\n\r\n delete: ActionCreator<string, (props: { id: string }) => { id: string } & TypedAction<string>>;\r\n deleteSuccess: ActionCreator<string, (props: { id: string }) => { id: string } & TypedAction<string>>;\r\n deleteFailure: ActionCreator<string, (props: { errors: E }) => { errors: E } & TypedAction<string>>;\r\n\r\n create: ActionCreator<string, (props: { resource: T }) => { resource: T } & TypedAction<string>>;\r\n createSuccess: ActionCreator<string, (props: { resource: T }) => { resource: T } & TypedAction<string>>;\r\n createFailure: ActionCreator<string, (props: { errors: E }) => { errors: E } & TypedAction<string>>;\r\n\r\n reset: ActionCreator<string, () => TypedAction<string>>;\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { FormActions } from '../models/form.model';\r\n\r\nexport function createFormActions<T, E>(featureName: string): FormActions<T, E> {\r\n const load = createAction(`[${featureName} API] Load ${featureName}`, props<{ id: string }>());\r\n const loadSuccess = createAction(`[${featureName} API] Load ${featureName} Success`, props<{ resource: T }>());\r\n const loadFailure = createAction(`[${featureName} API] Load ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const save = createAction(`[${featureName} API] Save ${featureName}`, props<{ resource: T }>());\r\n const saveSuccess = createAction(`[${featureName} API] Save ${featureName} Success`, props<{ resource: T }>());\r\n const saveFailure = createAction(`[${featureName} API] Save ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const deleteAction = createAction(`[${featureName} API] Delete ${featureName}`, props<{ id: string }>());\r\n const deleteSuccess = createAction(`[${featureName} API] Delete ${featureName} Success`, props<{ id: string }>());\r\n const deleteFailure = createAction(`[${featureName} API] Delete ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const create = createAction(`[${featureName} API] Create ${featureName}`, props<{ resource: T }>());\r\n const createSuccess = createAction(`[${featureName} API] Create ${featureName} Success`, props<{ resource: T }>());\r\n const createFailure = createAction(`[${featureName} API] Create ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const reset = createAction(`[${featureName} API] Reset ${featureName}`);\r\n\r\n return {\r\n load,\r\n loadSuccess,\r\n loadFailure,\r\n save,\r\n saveSuccess,\r\n saveFailure,\r\n delete: deleteAction,\r\n deleteSuccess,\r\n deleteFailure,\r\n create,\r\n createSuccess,\r\n createFailure,\r\n reset\r\n };\r\n}\r\n","import { RequestState } from '@ngdux/data-model-common';\r\nimport { createLoadingStateActionHandlers, createRequestStateActionHandlers } from '@ngdux/store-common';\r\nimport { ActionCreator, ActionReducer, createReducer, Creator, on, ReducerTypes } from '@ngrx/store';\r\nimport { FormActions, FormState } from '../models/form.model';\r\n\r\nexport function createFormReducer<T, E>(\r\n actions: FormActions<T, E>,\r\n actionHandlers?: ReducerTypes<FormState<T, E>, ActionCreator[]>[],\r\n initialFormState?: object\r\n): ActionReducer<FormState<T, E>> {\r\n const initialState: FormState<T, E> = { ...createInitialFormState<T, E>(), ...initialFormState };\r\n return createReducer<FormState<T, E>>(\r\n initialState,\r\n ...createFormActionHandlers<T, E>(initialState, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialFormState<T, E>(): FormState<T, E> {\r\n return {\r\n resource: undefined,\r\n loadingState: RequestState.IDLE,\r\n requestState: RequestState.IDLE,\r\n errors: undefined\r\n };\r\n}\r\n\r\nfunction createFormActionHandlers<T, E>(\r\n initialFormState: FormState<T, E>,\r\n actions: FormActions<T, E>\r\n): ReducerTypes<FormState<T, E>, ActionCreator<string, Creator<any[], object>>[]>[] {\r\n return [\r\n on(actions.reset, (): FormState<T, E> => initialFormState),\r\n on(\r\n actions.loadSuccess,\r\n actions.createSuccess,\r\n actions.saveSuccess,\r\n (state: FormState<T, E>, { resource }): FormState<T, E> => ({ ...state, resource })\r\n ),\r\n on(\r\n actions.deleteSuccess,\r\n (state: FormState<T, E>): FormState<T, E> => ({\r\n ...state,\r\n resource: undefined\r\n })\r\n ),\r\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\r\n actions.load,\r\n actions.save,\r\n actions.saveSuccess,\r\n actions.saveFailure\r\n ),\r\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\r\n undefined,\r\n actions.create,\r\n actions.createSuccess,\r\n actions.createFailure\r\n ),\r\n ...createRequestStateActionHandlers<FormState<T, E>, E>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createLoadingStateActionHandlers<FormState<T, E>>(actions.load, actions.loadSuccess, actions.loadFailure)\r\n ];\r\n}\r\n","import { RequestState } from '@ngdux/data-model-common';\r\nimport { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\r\nimport { FormSelectors, FormState } from '../models/form.model';\r\n\r\nexport function createFormSelectors<T, E>(\r\n getFormState: MemoizedSelector<object, FormState<T, E>, DefaultProjectorFn<FormState<T, E>>>\r\n): FormSelectors<T, E> {\r\n const getRequestState = createSelector(getFormState, state => state.requestState);\r\n const getLoadingState = createSelector(getFormState, state => state.loadingState);\r\n const getErrors = createSelector(getFormState, state => state.errors);\r\n const getResource = createSelector(getFormState, state => state.resource);\r\n\r\n const isReady = createSelector(\r\n getResource,\r\n getLoadingState,\r\n (resource, loadingState) => !!resource && loadingState === RequestState.SUCCESS\r\n );\r\n\r\n return {\r\n getRequestState,\r\n getLoadingState,\r\n getErrors,\r\n getResource,\r\n isReady\r\n };\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { createFeatureSelector, ReducerManager } from '@ngrx/store';\r\nimport { FormActions, FormSelectors, FormState, FORM_FEATURE_KEY } from '../models/form.model';\r\nimport { createFormActions } from './form-actions';\r\nimport { createFormReducer } from './form-reducer';\r\nimport { createFormSelectors } from './form-selectors';\r\n\r\n@Injectable()\r\nexport abstract class AbstractFormReducerManager<T, E> {\r\n actions: FormActions<T, E>;\r\n selectors: FormSelectors<T, E>;\r\n\r\n constructor(\r\n private readonly reducerManager: ReducerManager,\r\n @Inject(FORM_FEATURE_KEY) private readonly featureKey: string\r\n ) {\r\n this.setActions();\r\n this.addReducer();\r\n this.setSelectors();\r\n }\r\n\r\n protected setActions() {\r\n this.actions = createFormActions<T, E>(this.featureKey);\r\n }\r\n\r\n protected addReducer() {\r\n const currentReducers: string[] = Object.keys(this.reducerManager.currentReducers || {});\r\n if (!currentReducers.includes(this.featureKey)) {\r\n const reducer = createFormReducer(this.actions);\r\n this.reducerManager.addReducer(this.featureKey, reducer);\r\n }\r\n }\r\n\r\n protected setSelectors() {\r\n const getState = createFeatureSelector<FormState<T, E>>(this.featureKey);\r\n this.selectors = createFormSelectors(getState);\r\n }\r\n}\r\n","import { ActionPayload } from '@ngdux/store-common';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { FormActions, FormSelectors } from '../models/form.model';\r\n\r\nexport abstract class AbstractFormFacade<T, E> {\r\n readonly resource$ = this.store.pipe(select(this.formSelectors.getResource));\r\n readonly loadingState$ = this.store.pipe(select(this.formSelectors.getLoadingState));\r\n readonly requestState$ = this.store.pipe(select(this.formSelectors.getRequestState));\r\n readonly errors$ = this.store.pipe(select(this.formSelectors.getErrors));\r\n readonly isReady$ = this.store.pipe(select(this.formSelectors.isReady));\r\n\r\n constructor(\r\n protected readonly store: Store,\r\n private readonly formActions: FormActions<T, E>,\r\n private readonly formSelectors: FormSelectors<T, E>\r\n ) {}\r\n\r\n create(props: ActionPayload<FormActions<T, E>['create']>): void {\r\n this.store.dispatch(this.formActions.create(props));\r\n }\r\n\r\n load(props: ActionPayload<FormActions<T, E>['load']>): void {\r\n this.store.dispatch(this.formActions.load(props));\r\n }\r\n\r\n save(props: ActionPayload<FormActions<T, E>['save']>): void {\r\n this.store.dispatch(this.formActions.save(props));\r\n }\r\n\r\n delete(props: ActionPayload<FormActions<T, E>['delete']>): void {\r\n this.store.dispatch(this.formActions.delete(props));\r\n }\r\n\r\n reset(): void {\r\n this.store.dispatch(this.formActions.reset());\r\n }\r\n}\r\n","import { Action, createFeatureSelector } from '@ngrx/store';\r\nimport { FormState } from '../models/form.model';\r\nimport { createFormActions } from './form-actions';\r\nimport { createFormReducer } from './form-reducer';\r\nimport { createFormSelectors } from './form-selectors';\r\n\r\nexport function createFormState<T, E>(featureName: string) {\r\n const actions = createFormActions<T, E>(featureName);\r\n const reducer = createFormReducer(actions);\r\n const getState = createFeatureSelector<FormState<T, E>>(featureName);\r\n const selectors = createFormSelectors(getState);\r\n\r\n return {\r\n actions,\r\n reducer: (state: FormState<T, E>, action: Action): FormState<T, E> => reducer(state, action),\r\n selectors\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export { FormNotificationService, FormService, RequestState } from '@ngdux/data-model-common';
2
2
  export * from './lib/+state/abstract-form-effects';
3
+ export * from './lib/+state/abstract-form-state.service';
4
+ export * from './lib/+state/abstract-form.facade';
3
5
  export * from './lib/+state/form-actions';
4
6
  export * from './lib/+state/form-reducer';
5
7
  export * from './lib/+state/form-selectors';
@@ -0,0 +1,15 @@
1
+ import { ReducerManager } from '@ngrx/store';
2
+ import { FormActions, FormSelectors } from '../models/form.model';
3
+ import * as i0 from "@angular/core";
4
+ export declare abstract class AbstractFormReducerManager<T, E> {
5
+ private readonly reducerManager;
6
+ private readonly featureKey;
7
+ actions: FormActions<T, E>;
8
+ selectors: FormSelectors<T, E>;
9
+ constructor(reducerManager: ReducerManager, featureKey: string);
10
+ protected setActions(): void;
11
+ protected addReducer(): void;
12
+ protected setSelectors(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<AbstractFormReducerManager<any, any>, never>;
14
+ static ɵprov: i0.ɵɵInjectableDeclaration<AbstractFormReducerManager<any, any>>;
15
+ }
@@ -0,0 +1,19 @@
1
+ import { ActionPayload } from '@ngdux/store-common';
2
+ import { Store } from '@ngrx/store';
3
+ import { FormActions, FormSelectors } from '../models/form.model';
4
+ export declare abstract class AbstractFormFacade<T, E> {
5
+ protected readonly store: Store;
6
+ private readonly formActions;
7
+ private readonly formSelectors;
8
+ readonly resource$: import("rxjs").Observable<T>;
9
+ readonly loadingState$: import("rxjs").Observable<import("@ngdux/data-model-common").RequestState>;
10
+ readonly requestState$: import("rxjs").Observable<import("@ngdux/data-model-common").RequestState>;
11
+ readonly errors$: import("rxjs").Observable<E>;
12
+ readonly isReady$: import("rxjs").Observable<boolean>;
13
+ constructor(store: Store, formActions: FormActions<T, E>, formSelectors: FormSelectors<T, E>);
14
+ create(props: ActionPayload<FormActions<T, E>['create']>): void;
15
+ load(props: ActionPayload<FormActions<T, E>['load']>): void;
16
+ save(props: ActionPayload<FormActions<T, E>['save']>): void;
17
+ delete(props: ActionPayload<FormActions<T, E>['delete']>): void;
18
+ reset(): void;
19
+ }
@@ -1,7 +1,9 @@
1
+ import { InjectionToken } from '@angular/core';
1
2
  import { RequestState } from '@ngdux/data-model-common';
2
3
  import { ApiRequestState, LoadingState } from '@ngdux/store-common';
3
4
  import { ActionCreator, MemoizedSelector } from '@ngrx/store';
4
5
  import { TypedAction } from '@ngrx/store/src/models';
6
+ export declare const FORM_FEATURE_KEY: InjectionToken<string>;
5
7
  export interface FormState<T, E> extends ApiRequestState<E>, LoadingState {
6
8
  resource: T;
7
9
  }
package/package.json CHANGED
@@ -1,16 +1,6 @@
1
1
  {
2
2
  "name": "@ngdux/form",
3
- "version": "0.1.9",
4
- "peerDependencies": {
5
- "@angular/common": "^14.2.0",
6
- "@angular/core": "^14.2.0",
7
- "@ngdux/data-model-common": "0.1.8",
8
- "@ngdux/store-common": "0.1.8",
9
- "@ngrx/effects": "14.0.2"
10
- },
11
- "dependencies": {
12
- "tslib": "^2.3.0"
13
- },
3
+ "version": "1.0.0",
14
4
  "repository": {
15
5
  "type": "git",
16
6
  "url": "git@github.com:allanartuso/ngdux.git",
@@ -36,5 +26,14 @@
36
26
  "default": "./fesm2020/ngdux-form.mjs"
37
27
  }
38
28
  },
39
- "sideEffects": false
29
+ "sideEffects": false,
30
+ "dependencies": {
31
+ "tslib": "^2.3.0"
32
+ },
33
+ "peerDependencies": {
34
+ "@ngdux/data-model-common": "1.0.0",
35
+ "@angular/core": "15.1.4",
36
+ "@ngdux/store-common": "1.0.0",
37
+ "@ngrx/effects": "15.3.0"
38
+ }
40
39
  }