@ngdux/form 1.4.0 → 3.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.
@@ -1,19 +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<DTO, E, CREATE_DTO = DTO> {
5
- protected readonly store: Store;
6
- private readonly formActions;
7
- private readonly formSelectors;
8
- readonly resource$: import("rxjs").Observable<DTO | undefined>;
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 | undefined>;
12
- readonly isReady$: import("rxjs").Observable<boolean>;
13
- constructor(store: Store, formActions: FormActions<DTO, E, CREATE_DTO>, formSelectors: FormSelectors<DTO, E>);
14
- create(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['create']>): void;
15
- load(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['load']>): void;
16
- save(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['save']>): void;
17
- delete(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['delete']>): void;
18
- reset(): void;
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<DTO, E, CREATE_DTO = DTO> {
5
+ protected readonly store: Store;
6
+ private readonly formActions;
7
+ private readonly formSelectors;
8
+ readonly resource$: import("rxjs").Observable<DTO | undefined>;
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 | undefined>;
12
+ readonly isReady$: import("rxjs").Observable<boolean>;
13
+ constructor(store: Store, formActions: FormActions<DTO, E, CREATE_DTO>, formSelectors: FormSelectors<DTO, E>);
14
+ create(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['create']>): void;
15
+ load(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['load']>): void;
16
+ save(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['save']>): void;
17
+ delete(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['delete']>): void;
18
+ reset(): void;
19
+ }
@@ -1,2 +1,2 @@
1
- import { FormActions } from '../models/form.model';
2
- export declare function createFormActions<DTO, ERROR, CREATE_DTO = DTO>(featureName: string): FormActions<DTO, ERROR, CREATE_DTO>;
1
+ import { FormActions } from '../models/form.model';
2
+ export declare function createFormActions<DTO, ERROR, CREATE_DTO = DTO>(featureName: string): FormActions<DTO, ERROR, CREATE_DTO>;
@@ -1,3 +1,3 @@
1
- import { ActionCreator, ActionReducer, ReducerTypes } from '@ngrx/store';
2
- import { FormActions, FormState } from '../models/form.model';
3
- export declare function createFormReducer<DTO, ERROR, CREATE_DTO = DTO>(actions: FormActions<DTO, ERROR, CREATE_DTO>, actionHandlers?: ReducerTypes<FormState<DTO, ERROR>, ActionCreator[]>[], initialFormState?: Record<string, any>): ActionReducer<FormState<DTO, ERROR>>;
1
+ import { ActionCreator, ActionReducer, ReducerTypes } from '@ngrx/store';
2
+ import { FormActions, FormState } from '../models/form.model';
3
+ export declare function createFormReducer<DTO, ERROR, CREATE_DTO = DTO>(actions: FormActions<DTO, ERROR, CREATE_DTO>, actionHandlers?: ReducerTypes<FormState<DTO, ERROR>, ActionCreator[]>[], initialFormState?: Record<string, any>): ActionReducer<FormState<DTO, ERROR>>;
@@ -1,3 +1,3 @@
1
- import { DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';
2
- import { FormSelectors, FormState } from '../models/form.model';
3
- export declare function createFormSelectors<T, E>(getFormState: MemoizedSelector<object, FormState<T, E>, DefaultProjectorFn<FormState<T, E>>>): FormSelectors<T, E>;
1
+ import { DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';
2
+ import { FormSelectors, FormState } from '../models/form.model';
3
+ export declare function createFormSelectors<T, E>(getFormState: MemoizedSelector<object, FormState<T, E>, DefaultProjectorFn<FormState<T, E>>>): FormSelectors<T, E>;
@@ -1,7 +1,7 @@
1
- import { Action } from '@ngrx/store';
2
- import { FormState } from '../models/form.model';
3
- export declare function createFormState<DTO, ERROR, CREATE_DTO = DTO>(featureName: string): {
4
- actions: import("../models/form.model").FormActions<DTO, ERROR, CREATE_DTO>;
5
- reducer: (state: FormState<DTO, ERROR>, action: Action) => FormState<DTO, ERROR>;
6
- selectors: import("../models/form.model").FormSelectors<DTO, ERROR>;
7
- };
1
+ import { Action } from '@ngrx/store';
2
+ import { FormState } from '../models/form.model';
3
+ export declare function createFormState<DTO, ERROR, CREATE_DTO = DTO>(featureName: string): {
4
+ actions: import("../models/form.model").FormActions<DTO, ERROR, CREATE_DTO>;
5
+ reducer: (state: FormState<DTO, ERROR>, action: Action) => FormState<DTO, ERROR>;
6
+ selectors: import("../models/form.model").FormSelectors<DTO, ERROR>;
7
+ };
@@ -1,79 +1,79 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { RequestState } from '@ngdux/data-model-common';
3
- import { ApiRequestState, LoadingState } from '@ngdux/store-common';
4
- import { ActionCreator, MemoizedSelector } from '@ngrx/store';
5
- import { TypedAction } from '@ngrx/store/src/models';
6
- export declare const FORM_FEATURE_KEY: InjectionToken<string>;
7
- export interface FormState<T, E> extends ApiRequestState<E>, LoadingState {
8
- resource?: T;
9
- }
10
- export interface FormSelectors<T, E> {
11
- getRequestState: MemoizedSelector<object, RequestState>;
12
- getLoadingState: MemoizedSelector<object, RequestState>;
13
- getErrors: MemoizedSelector<object, E | undefined>;
14
- getResource: MemoizedSelector<object, T | undefined>;
15
- isReady: MemoizedSelector<object, boolean>;
16
- }
17
- export interface FormActions<DTO, ERROR, CREATE_DTO = DTO> {
18
- load: ActionCreator<string, (props: {
19
- id: string;
20
- }) => {
21
- id: string;
22
- } & TypedAction<string>>;
23
- loadSuccess: ActionCreator<string, (props: {
24
- resource: DTO;
25
- }) => {
26
- resource: DTO;
27
- } & TypedAction<string>>;
28
- loadFailure: ActionCreator<string, (props: {
29
- errors: ERROR;
30
- }) => {
31
- errors: ERROR;
32
- } & TypedAction<string>>;
33
- save: ActionCreator<string, (props: {
34
- resource: DTO;
35
- }) => {
36
- resource: DTO;
37
- } & TypedAction<string>>;
38
- saveSuccess: ActionCreator<string, (props: {
39
- resource: DTO;
40
- }) => {
41
- resource: DTO;
42
- } & TypedAction<string>>;
43
- saveFailure: ActionCreator<string, (props: {
44
- errors: ERROR;
45
- }) => {
46
- errors: ERROR;
47
- } & TypedAction<string>>;
48
- delete: ActionCreator<string, (props: {
49
- id: string;
50
- }) => {
51
- id: string;
52
- } & TypedAction<string>>;
53
- deleteSuccess: ActionCreator<string, (props: {
54
- id: string;
55
- }) => {
56
- id: string;
57
- } & TypedAction<string>>;
58
- deleteFailure: ActionCreator<string, (props: {
59
- errors: ERROR;
60
- }) => {
61
- errors: ERROR;
62
- } & TypedAction<string>>;
63
- create: ActionCreator<string, (props: {
64
- resource: CREATE_DTO;
65
- }) => {
66
- resource: CREATE_DTO;
67
- } & TypedAction<string>>;
68
- createSuccess: ActionCreator<string, (props: {
69
- resource: DTO;
70
- }) => {
71
- resource: DTO;
72
- } & TypedAction<string>>;
73
- createFailure: ActionCreator<string, (props: {
74
- errors: ERROR;
75
- }) => {
76
- errors: ERROR;
77
- } & TypedAction<string>>;
78
- reset: ActionCreator<string, () => TypedAction<string>>;
79
- }
1
+ import { InjectionToken } from '@angular/core';
2
+ import { RequestState } from '@ngdux/data-model-common';
3
+ import { ApiRequestState, LoadingState } from '@ngdux/store-common';
4
+ import { ActionCreator, MemoizedSelector } from '@ngrx/store';
5
+ import { TypedAction } from '@ngrx/store/src/models';
6
+ export declare const FORM_FEATURE_KEY: InjectionToken<string>;
7
+ export interface FormState<T, E> extends ApiRequestState<E>, LoadingState {
8
+ resource?: T;
9
+ }
10
+ export interface FormSelectors<T, E> {
11
+ getRequestState: MemoizedSelector<object, RequestState>;
12
+ getLoadingState: MemoizedSelector<object, RequestState>;
13
+ getErrors: MemoizedSelector<object, E | undefined>;
14
+ getResource: MemoizedSelector<object, T | undefined>;
15
+ isReady: MemoizedSelector<object, boolean>;
16
+ }
17
+ export interface FormActions<DTO, ERROR, CREATE_DTO = DTO> {
18
+ load: ActionCreator<string, (props: {
19
+ id: string;
20
+ }) => {
21
+ id: string;
22
+ } & TypedAction<string>>;
23
+ loadSuccess: ActionCreator<string, (props: {
24
+ resource: DTO;
25
+ }) => {
26
+ resource: DTO;
27
+ } & TypedAction<string>>;
28
+ loadFailure: ActionCreator<string, (props: {
29
+ errors: ERROR;
30
+ }) => {
31
+ errors: ERROR;
32
+ } & TypedAction<string>>;
33
+ save: ActionCreator<string, (props: {
34
+ resource: DTO;
35
+ }) => {
36
+ resource: DTO;
37
+ } & TypedAction<string>>;
38
+ saveSuccess: ActionCreator<string, (props: {
39
+ resource: DTO;
40
+ }) => {
41
+ resource: DTO;
42
+ } & TypedAction<string>>;
43
+ saveFailure: ActionCreator<string, (props: {
44
+ errors: ERROR;
45
+ }) => {
46
+ errors: ERROR;
47
+ } & TypedAction<string>>;
48
+ delete: ActionCreator<string, (props: {
49
+ id: string;
50
+ }) => {
51
+ id: string;
52
+ } & TypedAction<string>>;
53
+ deleteSuccess: ActionCreator<string, (props: {
54
+ id: string;
55
+ }) => {
56
+ id: string;
57
+ } & TypedAction<string>>;
58
+ deleteFailure: ActionCreator<string, (props: {
59
+ errors: ERROR;
60
+ }) => {
61
+ errors: ERROR;
62
+ } & TypedAction<string>>;
63
+ create: ActionCreator<string, (props: {
64
+ resource: CREATE_DTO;
65
+ }) => {
66
+ resource: CREATE_DTO;
67
+ } & TypedAction<string>>;
68
+ createSuccess: ActionCreator<string, (props: {
69
+ resource: DTO;
70
+ }) => {
71
+ resource: DTO;
72
+ } & TypedAction<string>>;
73
+ createFailure: ActionCreator<string, (props: {
74
+ errors: ERROR;
75
+ }) => {
76
+ errors: ERROR;
77
+ } & TypedAction<string>>;
78
+ reset: ActionCreator<string, () => TypedAction<string>>;
79
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngdux/form",
3
- "version": "1.4.0",
3
+ "version": "3.0.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git@github.com:allanartuso/ngdux.git",
@@ -8,114 +8,13 @@
8
8
  },
9
9
  "homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngdux/util/store/form#readme",
10
10
  "peerDependencies": {
11
- "@ngdux/data-model-common": "^1.0.0",
12
- "@angular/core": "^15.0.0",
13
- "@ngdux/store-common": "^1.0.0"
11
+ "@ngdux/data-model-common": "^3.0.0",
12
+ "@angular/core": "^17.0.0",
13
+ "@ngdux/store-common": "^3.0.0",
14
+ "@ngrx/store": "^17.0.0",
15
+ "@ngrx/effects": "^17.0.0"
14
16
  },
15
- "default": {
16
- "name": "@ngdux/form",
17
- "version": "1.3.2",
18
- "repository": {
19
- "type": "git",
20
- "url": "git@github.com:allanartuso/ngdux.git",
21
- "directory": "/libs/ngdux/util/store/form"
22
- },
23
- "homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngdux/util/store/form#readme",
24
- "peerDependencies": {
25
- "@ngdux/data-model-common": "^1.0.0",
26
- "@angular/core": "^15.0.0",
27
- "@ngdux/store-common": "^1.0.0"
28
- },
29
- "default": {
30
- "name": "@ngdux/form",
31
- "version": "1.3.1",
32
- "repository": {
33
- "type": "git",
34
- "url": "git@github.com:allanartuso/ngdux.git",
35
- "directory": "/libs/ngdux/util/store/form"
36
- },
37
- "homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngdux/util/store/form#readme",
38
- "peerDependencies": {
39
- "@ngdux/data-model-common": "^1.0.0",
40
- "@angular/core": "^15.0.0",
41
- "@ngdux/store-common": "^1.0.0"
42
- },
43
- "default": {
44
- "name": "@ngdux/form",
45
- "version": "1.3.0",
46
- "repository": {
47
- "type": "git",
48
- "url": "git@github.com:allanartuso/ngdux.git",
49
- "directory": "/libs/ngdux/util/store/form"
50
- },
51
- "homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngdux/util/store/form#readme",
52
- "peerDependencies": {
53
- "@ngdux/data-model-common": "^1.0.0",
54
- "@angular/core": "^15.0.0",
55
- "@ngdux/store-common": "^1.0.0"
56
- },
57
- "default": {
58
- "name": "@ngdux/form",
59
- "version": "1.2.1",
60
- "repository": {
61
- "type": "git",
62
- "url": "git@github.com:allanartuso/ngdux.git",
63
- "directory": "/libs/ngdux/util/store/form"
64
- },
65
- "homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngdux/util/store/form#readme",
66
- "peerDependencies": {
67
- "@ngdux/data-model-common": "^1.0.0",
68
- "@angular/core": "^15.0.0",
69
- "@ngdux/store-common": "^1.0.0"
70
- },
71
- "default": {
72
- "name": "@ngdux/form",
73
- "version": "1.2.0",
74
- "repository": {
75
- "type": "git",
76
- "url": "git@github.com:allanartuso/ngdux.git",
77
- "directory": "/libs/ngdux/util/store/form"
78
- },
79
- "homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngdux/util/store/form#readme",
80
- "peerDependencies": {
81
- "@ngdux/data-model-common": "^1.0.0",
82
- "@angular/core": "^15.0.0",
83
- "@ngdux/store-common": "^1.0.0"
84
- },
85
- "default": {
86
- "name": "@ngdux/form",
87
- "version": "1.1.1",
88
- "repository": {
89
- "type": "git",
90
- "url": "git@github.com:allanartuso/ngdux.git",
91
- "directory": "/libs/ngdux/util/store/form"
92
- },
93
- "homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngdux/util/store/form#readme",
94
- "default": {
95
- "name": "@ngdux/form",
96
- "repository": {
97
- "type": "git",
98
- "url": "git@github.com:allanartuso/ngdux.git",
99
- "directory": "/libs/ngdux/util/store/form"
100
- },
101
- "homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngdux/util/store/form#readme"
102
- },
103
- "peerDependencies": {
104
- "@ngdux/data-model-common": "^1.0.0",
105
- "@angular/core": "^15.0.0",
106
- "@ngdux/store-common": "^1.0.0"
107
- }
108
- }
109
- }
110
- }
111
- }
112
- }
113
- },
114
- "module": "fesm2015/ngdux-form.mjs",
115
- "es2020": "fesm2020/ngdux-form.mjs",
116
- "esm2020": "esm2020/ngdux-form.mjs",
117
- "fesm2020": "fesm2020/ngdux-form.mjs",
118
- "fesm2015": "fesm2015/ngdux-form.mjs",
17
+ "module": "fesm2022/ngdux-form.mjs",
119
18
  "typings": "index.d.ts",
120
19
  "exports": {
121
20
  "./package.json": {
@@ -123,11 +22,9 @@
123
22
  },
124
23
  ".": {
125
24
  "types": "./index.d.ts",
126
- "esm2020": "./esm2020/ngdux-form.mjs",
127
- "es2020": "./fesm2020/ngdux-form.mjs",
128
- "es2015": "./fesm2015/ngdux-form.mjs",
129
- "node": "./fesm2015/ngdux-form.mjs",
130
- "default": "./fesm2020/ngdux-form.mjs"
25
+ "esm2022": "./esm2022/ngdux-form.mjs",
26
+ "esm": "./esm2022/ngdux-form.mjs",
27
+ "default": "./fesm2022/ngdux-form.mjs"
131
28
  }
132
29
  },
133
30
  "sideEffects": false,
@@ -1,35 +0,0 @@
1
- import { createEffect, ofType } from '@ngrx/effects';
2
- import { of } from 'rxjs';
3
- import { catchError, exhaustMap, map, switchMap, tap } from 'rxjs/operators';
4
- export class AbstractFormEffects {
5
- constructor(actions$, store, service, formActions, notificationService) {
6
- this.actions$ = actions$;
7
- this.store = store;
8
- this.service = service;
9
- this.formActions = formActions;
10
- this.notificationService = notificationService;
11
- this.load$ = createEffect(() => this.actions$.pipe(ofType(this.formActions.load), switchMap(({ id }) => this.service.loadResource(id).pipe(map(resource => this.formActions.loadSuccess({ resource })), catchError((errors) => of(this.formActions.loadFailure({ errors })))))));
12
- this.create$ = createEffect(() => this.actions$.pipe(ofType(this.formActions.create), switchMap(action => {
13
- if (!this.service.createResource) {
14
- throw new Error('createResource not implement in the ListService');
15
- }
16
- return this.service.createResource(action.resource).pipe(map(resource => this.formActions.createSuccess({ resource })), catchError((errors) => of(this.formActions.createFailure({ errors }))));
17
- })));
18
- this.update$ = createEffect(() => this.actions$.pipe(ofType(this.formActions.save), switchMap(({ resource }) => {
19
- if (!this.service.saveResource) {
20
- throw new Error('saveResource not implement in the ListService');
21
- }
22
- return this.service.saveResource(resource).pipe(map(response => this.formActions.saveSuccess({ resource: response })), catchError((errors) => of(this.formActions.saveFailure({ errors }))));
23
- })));
24
- this.delete$ = createEffect(() => this.actions$.pipe(ofType(this.formActions.delete), exhaustMap(action => {
25
- if (!this.service.deleteResource) {
26
- throw new Error('deleteResource not implement in the ListService');
27
- }
28
- return this.service.deleteResource(action.id).pipe(map(() => this.formActions.deleteSuccess({ id: action.id })), catchError((errors) => of(this.formActions.deleteFailure({ errors }))));
29
- })));
30
- this.errorsHandler$ = createEffect(() => this.actions$.pipe(ofType(this.formActions.saveFailure, this.formActions.loadFailure, this.formActions.deleteFailure, this.formActions.createFailure), tap(({ errors }) => {
31
- this.notificationService.onFormErrors(errors);
32
- })), { dispatch: false });
33
- }
34
- }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtZm9ybS1lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3RSxNQUFNLE9BQWdCLG1CQUFtQjtJQTZFdkMsWUFDcUIsUUFBaUIsRUFDakIsS0FBWSxFQUNkLE9BQXFDLEVBQ3JDLFdBQWdELEVBQ2hELG1CQUFtRDtRQUpqRCxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUE4QjtRQUNyQyxnQkFBVyxHQUFYLFdBQVcsQ0FBcUM7UUFDaEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFnQztRQWpGdEUsVUFBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNoQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENB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LENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztRQUVGLG1CQUFjLEdBQUcsWUFBWSxDQUMzQixHQUFHLEVBQUUsQ0FDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUMvQixFQUNELEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUNILEVBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3BCLENBQUM7SUFRQyxDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtTm90aWZpY2F0aW9uU2VydmljZSwgRm9ybVNlcnZpY2UgfSBmcm9tICdAbmdkdXgvZGF0YS1tb2RlbC1jb21tb24nO1xyXG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZXhoYXVzdE1hcCwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRm9ybUFjdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGb3JtRWZmZWN0czxEVE8sIEVSUk9SLCBDUkVBVEVfRFRPID0gRFRPPiB7XHJcbiAgbG9hZCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMuZm9ybUFjdGlvbnMubG9hZCksXHJcbiAgICAgIHN3aXRjaE1hcCgoeyBpZCB9KSA9PlxyXG4gICAgICAgIHRoaXMuc2VydmljZS5sb2FkUmVzb3VyY2UoaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAocmVzb3VyY2UgPT4gdGhpcy5mb3JtQWN0aW9ucy5sb2FkU3VjY2Vzcyh7IHJlc291cmNlIH0pKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRVJST1IpID0+IG9mKHRoaXMuZm9ybUFjdGlvbnMubG9hZEZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGNyZWF0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMuZm9ybUFjdGlvbnMuY3JlYXRlKSxcclxuICAgICAgc3dpdGNoTWFwKGFjdGlvbiA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UuY3JlYXRlUmVzb3VyY2UpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY3JlYXRlUmVzb3VyY2Ugbm90IGltcGxlbWVudCBpbiB0aGUgTGlzdFNlcnZpY2UnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuY3JlYXRlUmVzb3VyY2UoYWN0aW9uLnJlc291cmNlKS5waXBlKFxyXG4gICAgICAgICAgbWFwKHJlc291cmNlID0+IHRoaXMuZm9ybUFjdGlvbnMuY3JlYXRlU3VjY2Vzcyh7IHJlc291cmNlIH0pKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRVJST1IpID0+IG9mKHRoaXMuZm9ybUFjdGlvbnMuY3JlYXRlRmFpbHVyZSh7IGVycm9ycyB9KSkpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgIClcclxuICApO1xyXG5cclxuICB1cGRhdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmZvcm1BY3Rpb25zLnNhdmUpLFxyXG4gICAgICBzd2l0Y2hNYXAoKHsgcmVzb3VyY2UgfSkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlLnNhdmVSZXNvdXJjZSkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzYXZlUmVzb3VyY2Ugbm90IGltcGxlbWVudCBpbiB0aGUgTGlzdFNlcnZpY2UnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2Uuc2F2ZVJlc291cmNlKHJlc291cmNlKS5waXBlKFxyXG4gICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHRoaXMuZm9ybUFjdGlvbnMuc2F2ZVN1Y2Nlc3MoeyByZXNvdXJjZTogcmVzcG9uc2UgfSkpLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JzOiBFUlJPUikgPT4gb2YodGhpcy5mb3JtQWN0aW9ucy5zYXZlRmFpbHVyZSh7IGVycm9ycyB9KSkpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgIClcclxuICApO1xyXG5cclxuICBkZWxldGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmZvcm1BY3Rpb25zLmRlbGV0ZSksXHJcbiAgICAgIGV4aGF1c3RNYXAoYWN0aW9uID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZSkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZWxldGVSZXNvdXJjZSBub3QgaW1wbGVtZW50IGluIHRoZSBMaXN0U2VydmljZScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZShhY3Rpb24uaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtQWN0aW9ucy5kZWxldGVTdWNjZXNzKHsgaWQ6IGFjdGlvbi5pZCB9KSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcnM6IEVSUk9SKSA9PiBvZih0aGlzLmZvcm1BY3Rpb25zLmRlbGV0ZUZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgZXJyb3JzSGFuZGxlciQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKFxyXG4gICAgICAgICAgdGhpcy5mb3JtQWN0aW9ucy5zYXZlRmFpbHVyZSxcclxuICAgICAgICAgIHRoaXMuZm9ybUFjdGlvbnMubG9hZEZhaWx1cmUsXHJcbiAgICAgICAgICB0aGlzLmZvcm1BY3Rpb25zLmRlbGV0ZUZhaWx1cmUsXHJcbiAgICAgICAgICB0aGlzLmZvcm1BY3Rpb25zLmNyZWF0ZUZhaWx1cmVcclxuICAgICAgICApLFxyXG4gICAgICAgIHRhcCgoeyBlcnJvcnMgfSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLm9uRm9ybUVycm9ycyhlcnJvcnMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XHJcbiAgKTtcclxuXHJcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGlvbnMkOiBBY3Rpb25zLFxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0b3JlOiBTdG9yZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogRm9ybVNlcnZpY2U8RFRPLCBDUkVBVEVfRFRPPixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUFjdGlvbnM6IEZvcm1BY3Rpb25zPERUTywgRVJST1IsIENSRUFURV9EVE8+LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25TZXJ2aWNlOiBGb3JtTm90aWZpY2F0aW9uU2VydmljZTxFUlJPUj5cclxuICApIHt9XHJcbn1cclxuIl19
@@ -1,39 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { ReducerManager, createFeatureSelector } 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.actions = this.getActions();
14
- this.addReducer();
15
- this.selectors = this.getSelectors();
16
- }
17
- getActions() {
18
- return createFormActions(this.featureKey);
19
- }
20
- addReducer() {
21
- if (!this.reducerManager.currentReducers[this.featureKey]) {
22
- const reducer = createFormReducer(this.actions);
23
- this.reducerManager.addReducer(this.featureKey, reducer);
24
- }
25
- }
26
- getSelectors() {
27
- const getState = createFeatureSelector(this.featureKey);
28
- return createFormSelectors(getState);
29
- }
30
- }
31
- AbstractFormReducerManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbstractFormReducerManager, deps: [{ token: i1.ReducerManager }, { token: FORM_FEATURE_KEY }], target: i0.ɵɵFactoryTarget.Injectable });
32
- AbstractFormReducerManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbstractFormReducerManager });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbstractFormReducerManager, decorators: [{
34
- type: Injectable
35
- }], ctorParameters: function () { return [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
36
- type: Inject,
37
- args: [FORM_FEATURE_KEY]
38
- }] }]; } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtZm9ybS1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUF5QyxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFHdkQsTUFBTSxPQUFnQiwwQkFBMEI7SUFJOUMsWUFDbUIsY0FBOEIsRUFDSixVQUFrQjtRQUQ1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDSixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRTdELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRVMsVUFBVTtRQUNsQixPQUFPLGlCQUFpQixDQUF5QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVTLFVBQVU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN6RCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFFUyxZQUFZO1FBQ3BCLE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUF3QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0UsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDOzt1SEEzQm1CLDBCQUEwQixnREFNcEMsZ0JBQWdCOzJIQU5OLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUQvQyxVQUFVOzswQkFPTixNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWR1Y2VyTWFuYWdlciwgY3JlYXRlRmVhdHVyZVNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBGT1JNX0ZFQVRVUkVfS0VZLCBGb3JtQWN0aW9ucywgRm9ybVNlbGVjdG9ycywgRm9ybVN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBjcmVhdGVGb3JtQWN0aW9ucyB9IGZyb20gJy4vZm9ybS1hY3Rpb25zJztcclxuaW1wb3J0IHsgY3JlYXRlRm9ybVJlZHVjZXIgfSBmcm9tICcuL2Zvcm0tcmVkdWNlcic7XHJcbmltcG9ydCB7IGNyZWF0ZUZvcm1TZWxlY3RvcnMgfSBmcm9tICcuL2Zvcm0tc2VsZWN0b3JzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Rm9ybVJlZHVjZXJNYW5hZ2VyPERUTywgRVJST1IsIENSRUFURV9EVE8gPSBEVE8+IHtcclxuICBhY3Rpb25zOiBGb3JtQWN0aW9uczxEVE8sIEVSUk9SLCBDUkVBVEVfRFRPPjtcclxuICBzZWxlY3RvcnM6IEZvcm1TZWxlY3RvcnM8RFRPLCBFUlJPUj47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWR1Y2VyTWFuYWdlcjogUmVkdWNlck1hbmFnZXIsXHJcbiAgICBASW5qZWN0KEZPUk1fRkVBVFVSRV9LRVkpIHByaXZhdGUgcmVhZG9ubHkgZmVhdHVyZUtleTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICB0aGlzLmFjdGlvbnMgPSB0aGlzLmdldEFjdGlvbnMoKTtcclxuICAgIHRoaXMuYWRkUmVkdWNlcigpO1xyXG4gICAgdGhpcy5zZWxlY3RvcnMgPSB0aGlzLmdldFNlbGVjdG9ycygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEFjdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlRm9ybUFjdGlvbnM8RFRPLCBFUlJPUiwgQ1JFQVRFX0RUTz4odGhpcy5mZWF0dXJlS2V5KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhZGRSZWR1Y2VyKCkge1xyXG4gICAgaWYgKCF0aGlzLnJlZHVjZXJNYW5hZ2VyLmN1cnJlbnRSZWR1Y2Vyc1t0aGlzLmZlYXR1cmVLZXldKSB7XHJcbiAgICAgIGNvbnN0IHJlZHVjZXIgPSBjcmVhdGVGb3JtUmVkdWNlcih0aGlzLmFjdGlvbnMpO1xyXG4gICAgICB0aGlzLnJlZHVjZXJNYW5hZ2VyLmFkZFJlZHVjZXIodGhpcy5mZWF0dXJlS2V5LCByZWR1Y2VyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRTZWxlY3RvcnMoKSB7XHJcbiAgICBjb25zdCBnZXRTdGF0ZSA9IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxGb3JtU3RhdGU8RFRPLCBFUlJPUj4+KHRoaXMuZmVhdHVyZUtleSk7XHJcbiAgICByZXR1cm4gY3JlYXRlRm9ybVNlbGVjdG9ycyhnZXRTdGF0ZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==