@verisoft/store 18.7.0 → 18.8.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 +7 -56
- package/esm2022/index.mjs +11 -0
- package/esm2022/lib/binding-state/binding.actions.mjs +35 -0
- package/esm2022/lib/binding-state/binding.effects.mjs +124 -0
- package/esm2022/lib/detail-state/detail.actions.mjs +47 -0
- package/esm2022/lib/detail-state/detail.effects.mjs +116 -0
- package/esm2022/lib/detail-state/detail.models.mjs +12 -0
- package/esm2022/lib/detail-state/detail.reducer.mjs +87 -0
- package/esm2022/lib/table-state/actions.mjs +50 -0
- package/esm2022/lib/table-state/effects.mjs +49 -0
- package/esm2022/lib/table-state/models.mjs +12 -0
- package/esm2022/lib/table-state/reducers.mjs +80 -0
- package/esm2022/verisoft-store.mjs +5 -0
- package/fesm2022/verisoft-store.mjs +602 -0
- package/fesm2022/verisoft-store.mjs.map +1 -0
- package/{src/index.ts → index.d.ts} +10 -12
- package/lib/binding-state/binding.actions.d.ts +43 -0
- package/lib/binding-state/binding.effects.d.ts +45 -0
- package/lib/detail-state/detail.actions.d.ts +52 -0
- package/lib/detail-state/detail.effects.d.ts +52 -0
- package/lib/detail-state/detail.models.d.ts +27 -0
- package/lib/detail-state/detail.reducer.d.ts +4 -0
- package/lib/table-state/actions.d.ts +48 -0
- package/lib/table-state/effects.d.ts +25 -0
- package/lib/table-state/models.d.ts +9 -0
- package/lib/table-state/reducers.d.ts +3 -0
- package/package.json +28 -13
- package/.eslintrc.json +0 -43
- package/jest.config.ts +0 -22
- package/ng-package.json +0 -7
- package/project.json +0 -36
- package/src/lib/binding-state/binding.actions.ts +0 -76
- package/src/lib/binding-state/binding.effects.ts +0 -472
- package/src/lib/detail-state/detail.actions.ts +0 -89
- package/src/lib/detail-state/detail.effects.ts +0 -283
- package/src/lib/detail-state/detail.models.ts +0 -42
- package/src/lib/detail-state/detail.reducer.ts +0 -147
- package/src/lib/table-state/actions.ts +0 -93
- package/src/lib/table-state/effects.ts +0 -99
- package/src/lib/table-state/models.ts +0 -20
- package/src/lib/table-state/reducers.ts +0 -126
- package/src/test-setup.ts +0 -8
- package/tsconfig.json +0 -29
- package/tsconfig.lib.json +0 -17
- package/tsconfig.lib.prod.json +0 -9
- package/tsconfig.spec.json +0 -16
package/README.md
CHANGED
|
@@ -1,56 +1,7 @@
|
|
|
1
|
-
# store
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
- Shared selectors, actions, and reducers
|
|
9
|
-
- Utilities for working with NgRx or other state management solutions
|
|
10
|
-
|
|
11
|
-
## Installation
|
|
12
|
-
|
|
13
|
-
This package is intended for internal use within the monorepo. To use it in another library or app, add it as a dependency in your `project.json`:
|
|
14
|
-
|
|
15
|
-
```json
|
|
16
|
-
"dependencies": {
|
|
17
|
-
"store": "*"
|
|
18
|
-
}
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Usage
|
|
22
|
-
|
|
23
|
-
Import the required modules, services, or utilities from `store`:
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
import { StoreModule } from '@verisoft/store';
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Development
|
|
30
|
-
|
|
31
|
-
### Building
|
|
32
|
-
|
|
33
|
-
Run the following command to build the library:
|
|
34
|
-
|
|
35
|
-
```sh
|
|
36
|
-
nx build store
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Running Unit Tests
|
|
40
|
-
|
|
41
|
-
To execute the unit tests for this library:
|
|
42
|
-
|
|
43
|
-
```sh
|
|
44
|
-
nx test store
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Contributing
|
|
48
|
-
|
|
49
|
-
1. Fork the repository and create your branch from `master`.
|
|
50
|
-
2. Make your changes and add tests if needed.
|
|
51
|
-
3. Run `nx test store` to ensure all tests pass.
|
|
52
|
-
4. Submit a pull request.
|
|
53
|
-
|
|
54
|
-
## License
|
|
55
|
-
|
|
56
|
-
This project is licensed under the MIT License.
|
|
1
|
+
# store
|
|
2
|
+
|
|
3
|
+
This library was generated with [Nx](https://nx.dev).
|
|
4
|
+
|
|
5
|
+
## Running unit tests
|
|
6
|
+
|
|
7
|
+
Run `nx test store` to execute the unit tests.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './lib/detail-state/detail.actions';
|
|
2
|
+
export * from './lib/detail-state/detail.reducer';
|
|
3
|
+
export * from './lib/detail-state/detail.effects';
|
|
4
|
+
export * from './lib/detail-state/detail.models';
|
|
5
|
+
export * from './lib/table-state/actions';
|
|
6
|
+
export * from './lib/table-state/reducers';
|
|
7
|
+
export * from './lib/table-state/effects';
|
|
8
|
+
export * from './lib/table-state/models';
|
|
9
|
+
export * from './lib/binding-state/binding.actions';
|
|
10
|
+
export * from './lib/binding-state/binding.effects';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9zdG9yZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXRhaWwtc3RhdGUvZGV0YWlsLnJlZHVjZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGV0YWlsLXN0YXRlL2RldGFpbC5lZmZlY3RzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwubW9kZWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFibGUtc3RhdGUvYWN0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1zdGF0ZS9yZWR1Y2Vycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1zdGF0ZS9lZmZlY3RzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlLXN0YXRlL21vZGVscyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2JpbmRpbmctc3RhdGUvYmluZGluZy5hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2JpbmRpbmctc3RhdGUvYmluZGluZy5lZmZlY3RzJztcbiJdfQ==
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createAction, props } from '@ngrx/store';
|
|
2
|
+
export function createAddBindingAction(bindingsRepository) {
|
|
3
|
+
return createAction(`[${bindingsRepository}/API] Add bindings`, props());
|
|
4
|
+
}
|
|
5
|
+
export function createAddBindingsAction(bindingsRepository) {
|
|
6
|
+
return createAction(`[${bindingsRepository}/API] Add bindings`, props());
|
|
7
|
+
}
|
|
8
|
+
export function createAddBindingsFailureAction(bindingsRepository) {
|
|
9
|
+
return createAction(`[${bindingsRepository}/API] Add bindings failure`, props());
|
|
10
|
+
}
|
|
11
|
+
export function createAddBindingsSuccessAction(bindingsRepository) {
|
|
12
|
+
return createAction(`[${bindingsRepository}/API] Add bindings success`);
|
|
13
|
+
}
|
|
14
|
+
export function createEditBindingAction(bindingsRepository) {
|
|
15
|
+
return createAction(`[${bindingsRepository}/API] Edit binding`, props());
|
|
16
|
+
}
|
|
17
|
+
export function createEditBindingFailureAction(bindingsRepository) {
|
|
18
|
+
return createAction(`[${bindingsRepository}/API] Edit binding failure`, props());
|
|
19
|
+
}
|
|
20
|
+
export function createEditBindingSuccessAction(bindingsRepository) {
|
|
21
|
+
return createAction(`[${bindingsRepository}/API] Edit binding success`);
|
|
22
|
+
}
|
|
23
|
+
export function createDeleteBindingAction(bindingsRepository) {
|
|
24
|
+
return createAction(`[${bindingsRepository}/API] Delete binding`, props());
|
|
25
|
+
}
|
|
26
|
+
export function createDeleteBindingsAction(bindingsRepository) {
|
|
27
|
+
return createAction(`[${bindingsRepository}/API] Delete bindings`, props());
|
|
28
|
+
}
|
|
29
|
+
export function createDeleteBindingsFailureAction(bindingsRepository) {
|
|
30
|
+
return createAction(`[${bindingsRepository}/API] Delete bindings failure`, props());
|
|
31
|
+
}
|
|
32
|
+
export function createDeleteBindingsSuccessAction(bindingsRepository) {
|
|
33
|
+
return createAction(`[${bindingsRepository}/API] Delete bindings success`);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvc3RvcmUvc3JjL2xpYi9iaW5kaW5nLXN0YXRlL2JpbmRpbmcuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCxNQUFNLFVBQVUsc0JBQXNCLENBQVUsa0JBQTBCO0lBQ3hFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQixvQkFBb0IsRUFDMUMsS0FBSyxFQUF3QixDQUM5QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBVSxrQkFBMEI7SUFDekUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLG9CQUFvQixFQUMxQyxLQUFLLEVBQTJCLENBQ2pDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUFDLGtCQUEwQjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsNEJBQTRCLEVBQ2xELEtBQUssRUFBa0IsQ0FDeEIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsOEJBQThCLENBQUMsa0JBQTBCO0lBQ3ZFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQiw0QkFBNEIsQ0FDbkQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQVEsa0JBQTBCO0lBQ3ZFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQixvQkFBb0IsRUFDMUMsS0FBSyxFQUFzQixDQUM1QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxrQkFBMEI7SUFDdkUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLDRCQUE0QixFQUNsRCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUFDLGtCQUEwQjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsNEJBQTRCLENBQ25ELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLGtCQUEwQjtJQUNsRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0Isc0JBQXNCLEVBQzVDLEtBQUssRUFBMkIsQ0FDakMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsa0JBQTBCO0lBQ25FLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQix1QkFBdUIsRUFDN0MsS0FBSyxFQUE0QixDQUNsQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxrQkFBMEI7SUFDMUUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLCtCQUErQixFQUNyRCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLGtCQUEwQjtJQUMxRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsK0JBQStCLENBQ3RELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdBY3Rpb248VENyZWF0ZT4oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEFkZCBiaW5kaW5nc2AsXG4gICAgcHJvcHM8eyBiaW5kaW5nOiBUQ3JlYXRlIH0+KClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdzQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXG4gICAgYFske2JpbmRpbmdzUmVwb3NpdG9yeX0vQVBJXSBBZGQgYmluZGluZ3NgLFxuICAgIHByb3BzPHsgYmluZGluZ3M6IFRDcmVhdGVbXSB9PigpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBZGRCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEFkZCBiaW5kaW5ncyBmYWlsdXJlYCxcbiAgICBwcm9wczx7IGVycm9yOiBhbnkgfT4oKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWRkQmluZGluZ3NTdWNjZXNzQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXG4gICAgYFske2JpbmRpbmdzUmVwb3NpdG9yeX0vQVBJXSBBZGQgYmluZGluZ3Mgc3VjY2Vzc2BcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVkaXRCaW5kaW5nQWN0aW9uPFRFZGl0PihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRWRpdCBiaW5kaW5nYCxcbiAgICBwcm9wczx7IGJpbmRpbmc6IFRFZGl0IH0+KClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVkaXRCaW5kaW5nRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRWRpdCBiaW5kaW5nIGZhaWx1cmVgLFxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEVkaXQgYmluZGluZyBzdWNjZXNzYFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVsZXRlQmluZGluZ0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIGJpbmRpbmdgLFxuICAgIHByb3BzPHsgaWQ6IG51bWJlciB8IHN0cmluZyB9PigpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVCaW5kaW5nc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIGJpbmRpbmdzYCxcbiAgICBwcm9wczx7IGJpbmRpbmdJZHM6IG51bWJlcltdIH0+KClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIGJpbmRpbmdzIGZhaWx1cmVgLFxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIERlbGV0ZSBiaW5kaW5ncyBzdWNjZXNzYFxuICApO1xufVxuXG4iXX0=
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { createEffect, ofType } from '@ngrx/effects';
|
|
2
|
+
import { catchError, map, of, switchMap, tap, withLatestFrom, } from 'rxjs';
|
|
3
|
+
import { createAddBindingAction, createAddBindingsAction, createAddBindingsFailureAction, createAddBindingsSuccessAction, createDeleteBindingAction, createDeleteBindingsAction, createDeleteBindingsFailureAction, createDeleteBindingsSuccessAction, createEditBindingAction, createEditBindingFailureAction, createEditBindingSuccessAction, } from './binding.actions';
|
|
4
|
+
export function createSingleBindingEffectsWithEdit(bindingsRepository, actions$, detail$, bindingSingularName, bindingPluralName, addFunction, editFunction, deleteFunction, snackbar, translateService, tableService, overrideDetailWithBinding = false) {
|
|
5
|
+
const addEffect = createAddBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService);
|
|
6
|
+
const editEffect = createEditBindingEffect(bindingsRepository, actions$, detail$, bindingSingularName, editFunction, snackbar, translateService, overrideDetailWithBinding);
|
|
7
|
+
const deleteEffect = createDeleteBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService);
|
|
8
|
+
const modifiedSuccessEffect = createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService);
|
|
9
|
+
return { addEffect, editEffect, deleteEffect, modifiedSuccessEffect };
|
|
10
|
+
}
|
|
11
|
+
export function createBindingsEffectsWithEdit(bindingsRepository, actions$, detail$, bindingSingularName, bindingPluralName, addFunction, editFunction, deleteFunction, snackbar, translateService, tableService, overrideDetailWithBinding = false) {
|
|
12
|
+
const addEffect = createAddBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService);
|
|
13
|
+
const editEffect = createEditBindingEffect(bindingsRepository, actions$, detail$, bindingSingularName, editFunction, snackbar, translateService, overrideDetailWithBinding);
|
|
14
|
+
const deleteEffect = createDeleteBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService);
|
|
15
|
+
const modifiedSuccessEffect = createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService);
|
|
16
|
+
return { addEffect, editEffect, deleteEffect, modifiedSuccessEffect };
|
|
17
|
+
}
|
|
18
|
+
export function createBindingsEffects(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, deleteFunction, snackbar, translateService, tableService) {
|
|
19
|
+
const addEffect = createAddBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService);
|
|
20
|
+
const deleteEffect = createDeleteBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService);
|
|
21
|
+
const modifiedSuccessEffect = createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService);
|
|
22
|
+
return { addEffect, deleteEffect, modifiedSuccessEffect };
|
|
23
|
+
}
|
|
24
|
+
function createAddBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService) {
|
|
25
|
+
return createEffect(() => actions$.pipe(ofType(createAddBindingAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ binding }, detail]) => {
|
|
26
|
+
const translatedPluralName = translateService.instant(bindingPluralName);
|
|
27
|
+
const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_ADD')} ${translatedPluralName}!`;
|
|
28
|
+
const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_ADD')} ${translatedPluralName}!`;
|
|
29
|
+
return addFunction(binding).pipe(map(() => {
|
|
30
|
+
snackbar.showSuccess(successMessage);
|
|
31
|
+
return createAddBindingsSuccessAction(bindingsRepository)();
|
|
32
|
+
}), catchError((error) => {
|
|
33
|
+
snackbar.showError(failureMessage);
|
|
34
|
+
return of(createAddBindingsFailureAction(bindingsRepository)({ error }));
|
|
35
|
+
}));
|
|
36
|
+
})));
|
|
37
|
+
}
|
|
38
|
+
function createAddBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService) {
|
|
39
|
+
return createEffect(() => actions$.pipe(ofType(createAddBindingsAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ bindings }, detail]) => {
|
|
40
|
+
const translatedPluralName = translateService.instant(bindingPluralName);
|
|
41
|
+
const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_ADD')} ${translatedPluralName}!`;
|
|
42
|
+
const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_ADD')} ${translatedPluralName}!`;
|
|
43
|
+
if (!detail?.id) {
|
|
44
|
+
snackbar.showError(failureMessage);
|
|
45
|
+
return of(createAddBindingsFailureAction(bindingsRepository)({
|
|
46
|
+
error: failureMessage,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
return addFunction(bindings, detail.id).pipe(map(() => {
|
|
50
|
+
snackbar.showSuccess(successMessage);
|
|
51
|
+
return createAddBindingsSuccessAction(bindingsRepository)();
|
|
52
|
+
}), catchError((error) => {
|
|
53
|
+
snackbar.showError(failureMessage);
|
|
54
|
+
return of(createAddBindingsFailureAction(bindingsRepository)({ error }));
|
|
55
|
+
}));
|
|
56
|
+
})));
|
|
57
|
+
}
|
|
58
|
+
function createEditBindingEffect(bindingsRepository, actions$, detail$, bindingSingularName, editFunction, snackbar, translateService, overrideDetailWithBinding = false) {
|
|
59
|
+
return createEffect(() => actions$.pipe(ofType(createEditBindingAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ binding }, detail]) => {
|
|
60
|
+
const translatedPluralName = translateService.instant(bindingSingularName);
|
|
61
|
+
const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_EDIT')} ${translatedPluralName}!`;
|
|
62
|
+
const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_EDIT')} ${translatedPluralName}!`;
|
|
63
|
+
const id = overrideDetailWithBinding ? binding?.id : detail?.id;
|
|
64
|
+
if (!id) {
|
|
65
|
+
snackbar.showError(failureMessage);
|
|
66
|
+
return of(createEditBindingFailureAction(bindingsRepository)({
|
|
67
|
+
error: failureMessage,
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
return editFunction(binding, id).pipe(map(() => {
|
|
71
|
+
snackbar.showSuccess(successMessage);
|
|
72
|
+
return createEditBindingSuccessAction(bindingsRepository)();
|
|
73
|
+
}), catchError((error) => {
|
|
74
|
+
snackbar.showError(failureMessage);
|
|
75
|
+
return of(createEditBindingFailureAction(bindingsRepository)({ error }));
|
|
76
|
+
}));
|
|
77
|
+
})));
|
|
78
|
+
}
|
|
79
|
+
function createDeleteBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService) {
|
|
80
|
+
return createEffect(() => actions$.pipe(ofType(createDeleteBindingAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ id }, detail]) => {
|
|
81
|
+
const translatedPluralName = translateService.instant(bindingPluralName);
|
|
82
|
+
const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_DELETE')} ${translatedPluralName}!`;
|
|
83
|
+
const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_DELETE')} ${translatedPluralName}!`;
|
|
84
|
+
if (!id && !detail?.id) {
|
|
85
|
+
snackbar.showError(failureMessage);
|
|
86
|
+
return of(createDeleteBindingsFailureAction(bindingsRepository)({
|
|
87
|
+
error: failureMessage,
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
return deleteFunction(id, id ?? detail?.id).pipe(map(() => {
|
|
91
|
+
snackbar.showSuccess(successMessage);
|
|
92
|
+
return createDeleteBindingsSuccessAction(bindingsRepository)();
|
|
93
|
+
}), catchError((error) => {
|
|
94
|
+
snackbar.showError(failureMessage);
|
|
95
|
+
return of(createDeleteBindingsFailureAction(bindingsRepository)({ error }));
|
|
96
|
+
}));
|
|
97
|
+
})));
|
|
98
|
+
}
|
|
99
|
+
function createDeleteBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService) {
|
|
100
|
+
return createEffect(() => actions$.pipe(ofType(createDeleteBindingsAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ bindingIds }, detail]) => {
|
|
101
|
+
const translatedPluralName = translateService.instant(bindingPluralName);
|
|
102
|
+
const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_DELETE')} ${translatedPluralName}!`;
|
|
103
|
+
const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_DELETE')} ${translatedPluralName}!`;
|
|
104
|
+
if (!detail?.id) {
|
|
105
|
+
snackbar.showError(failureMessage);
|
|
106
|
+
return of(createDeleteBindingsFailureAction(bindingsRepository)({
|
|
107
|
+
error: failureMessage,
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
return deleteFunction(bindingIds, detail.id).pipe(map(() => {
|
|
111
|
+
snackbar.showSuccess(successMessage);
|
|
112
|
+
return createDeleteBindingsSuccessAction(bindingsRepository)();
|
|
113
|
+
}), catchError((error) => {
|
|
114
|
+
snackbar.showError(failureMessage);
|
|
115
|
+
return of(createDeleteBindingsFailureAction(bindingsRepository)({ error }));
|
|
116
|
+
}));
|
|
117
|
+
})));
|
|
118
|
+
}
|
|
119
|
+
function createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService) {
|
|
120
|
+
return createEffect(() => actions$.pipe(ofType(createAddBindingsSuccessAction(bindingsRepository), createEditBindingSuccessAction(bindingsRepository), createDeleteBindingsSuccessAction(bindingsRepository)), tap(() => {
|
|
121
|
+
tableService.forceReload();
|
|
122
|
+
})), { dispatch: false });
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvc3RvcmUvc3JjL2xpYi9iaW5kaW5nLXN0YXRlL2JpbmRpbmcuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLEdBQUcsRUFFSCxFQUFFLEVBQ0YsU0FBUyxFQUNULEdBQUcsRUFDSCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQyx1QkFBdUIsRUFDdkIsOEJBQThCLEVBQzlCLDhCQUE4QixHQUMvQixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE1BQU0sVUFBVSxrQ0FBa0MsQ0FLaEQsa0JBQTBCLEVBQzFCLFFBQWlCLEVBQ2pCLE9BQWtDLEVBQ2xDLG1CQUEyQixFQUMzQixpQkFBeUIsRUFDekIsV0FFb0IsRUFDcEIsWUFBNEUsRUFDNUUsY0FHb0IsRUFDcEIsUUFBYSxFQUNiLGdCQUFxQixFQUNyQixZQUFpQixFQUNqQix5QkFBeUIsR0FBRyxLQUFLO0lBRWpDLE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUN0QyxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLE9BQU8sRUFDUCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLFFBQVEsRUFDUixnQkFBZ0IsQ0FDakIsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLHVCQUF1QixDQUN4QyxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIseUJB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UCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQ0gsRUFDSCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDcEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUFkZEJpbmRpbmdBY3Rpb24sXG4gIGNyZWF0ZUFkZEJpbmRpbmdzQWN0aW9uLFxuICBjcmVhdGVBZGRCaW5kaW5nc0ZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUFkZEJpbmRpbmdzU3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlRGVsZXRlQmluZGluZ0FjdGlvbixcbiAgY3JlYXRlRGVsZXRlQmluZGluZ3NBY3Rpb24sXG4gIGNyZWF0ZURlbGV0ZUJpbmRpbmdzRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlRGVsZXRlQmluZGluZ3NTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVFZGl0QmluZGluZ0FjdGlvbixcbiAgY3JlYXRlRWRpdEJpbmRpbmdGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24sXG59IGZyb20gJy4vYmluZGluZy5hY3Rpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNpbmdsZUJpbmRpbmdFZmZlY3RzV2l0aEVkaXQ8XG4gIFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSxcbiAgVENyZWF0ZSxcbiAgVEVkaXQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyIHwgc3RyaW5nIH1cbj4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1Npbmd1bGFyTmFtZTogc3RyaW5nLFxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxuICBhZGRGdW5jdGlvbjogKFxuICAgIGJpbmRpbmdzOiBUQ3JlYXRlLFxuICApID0+IE9ic2VydmFibGU8YW55PixcbiAgZWRpdEZ1bmN0aW9uOiAoYmluZGluZzogVEVkaXQsIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmcpID0+IE9ic2VydmFibGU8YW55PixcbiAgZGVsZXRlRnVuY3Rpb246IChcbiAgICBiaW5kaW5nSWRzOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xuICApID0+IE9ic2VydmFibGU8YW55PixcbiAgc25hY2tiYXI6IGFueSxcbiAgdHJhbnNsYXRlU2VydmljZTogYW55LFxuICB0YWJsZVNlcnZpY2U6IGFueSxcbiAgb3ZlcnJpZGVEZXRhaWxXaXRoQmluZGluZyA9IGZhbHNlLFxuKSB7XG4gIGNvbnN0IGFkZEVmZmVjdCA9IGNyZWF0ZUFkZEJpbmRpbmdFZmZlY3QoXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxuICAgIGFjdGlvbnMkLFxuICAgIGRldGFpbCQsXG4gICAgYmluZGluZ1BsdXJhbE5hbWUsXG4gICAgYWRkRnVuY3Rpb24sXG4gICAgc25hY2tiYXIsXG4gICAgdHJhbnNsYXRlU2VydmljZSxcbiAgKTtcblxuICBjb25zdCBlZGl0RWZmZWN0ID0gY3JlYXRlRWRpdEJpbmRpbmdFZmZlY3QoXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxuICAgIGFjdGlvbnMkLFxuICAgIGRldGFpbCQsXG4gICAgYmluZGluZ1Npbmd1bGFyTmFtZSxcbiAgICBlZGl0RnVuY3Rpb24sXG4gICAgc25hY2tiYXIsXG4gICAgdHJhbnNsYXRlU2VydmljZSxcbiAgICBvdmVycmlkZURldGFpbFdpdGhCaW5kaW5nXG4gICk7XG5cbiAgY29uc3QgZGVsZXRlRWZmZWN0ID0gY3JlYXRlRGVsZXRlQmluZGluZ0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgZGV0YWlsJCxcbiAgICBiaW5kaW5nUGx1cmFsTmFtZSxcbiAgICBkZWxldGVGdW5jdGlvbixcbiAgICBzbmFja2JhcixcbiAgICB0cmFuc2xhdGVTZXJ2aWNlXG4gICk7XG5cbiAgY29uc3QgbW9kaWZpZWRTdWNjZXNzRWZmZWN0ID0gY3JlYXRlQmluZGluZ01vZGlmaWVkU3VjY2Vzc0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgdGFibGVTZXJ2aWNlXG4gICk7XG5cbiAgcmV0dXJuIHsgYWRkRWZmZWN0LCBlZGl0RWZmZWN0LCBkZWxldGVFZmZlY3QsIG1vZGlmaWVkU3VjY2Vzc0VmZmVjdCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmluZGluZ3NFZmZlY3RzV2l0aEVkaXQ8XG4gIFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSxcbiAgVENyZWF0ZSxcbiAgVEVkaXQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyIHwgc3RyaW5nIH1cbj4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1Npbmd1bGFyTmFtZTogc3RyaW5nLFxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxuICBhZGRGdW5jdGlvbjogKFxuICAgIGJpbmRpbmdzOiBUQ3JlYXRlW10sXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xuICApID0+IE9ic2VydmFibGU8YW55PixcbiAgZWRpdEZ1bmN0aW9uOiAoYmluZGluZzogVEVkaXQsIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmcpID0+IE9ic2VydmFibGU8YW55PixcbiAgZGVsZXRlRnVuY3Rpb246IChcbiAgICBiaW5kaW5nSWRzOiBudW1iZXJbXSxcbiAgICBkZXRhaWxJZDogbnVtYmVyIHwgc3RyaW5nXG4gICkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxuICBzbmFja2JhcjogYW55LFxuICB0cmFuc2xhdGVTZXJ2aWNlOiBhbnksXG4gIHRhYmxlU2VydmljZTogYW55LFxuICBvdmVycmlkZURldGFpbFdpdGhCaW5kaW5nID0gZmFsc2UsXG4pIHtcbiAgY29uc3QgYWRkRWZmZWN0ID0gY3JlYXRlQWRkQmluZGluZ3NFZmZlY3QoXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxuICAgIGFjdGlvbnMkLFxuICAgIGRldGFpbCQsXG4gICAgYmluZGluZ1BsdXJhbE5hbWUsXG4gICAgYWRkRnVuY3Rpb24sXG4gICAgc25hY2tiYXIsXG4gICAgdHJhbnNsYXRlU2VydmljZVxuICApO1xuXG4gIGNvbnN0IGVkaXRFZmZlY3QgPSBjcmVhdGVFZGl0QmluZGluZ0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgZGV0YWlsJCxcbiAgICBiaW5kaW5nU2luZ3VsYXJOYW1lLFxuICAgIGVkaXRGdW5jdGlvbixcbiAgICBzbmFja2JhcixcbiAgICB0cmFuc2xhdGVTZXJ2aWNlLFxuICAgIG92ZXJyaWRlRGV0YWlsV2l0aEJpbmRpbmdcbiAgKTtcblxuICBjb25zdCBkZWxldGVFZmZlY3QgPSBjcmVhdGVEZWxldGVCaW5kaW5nc0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgZGV0YWlsJCxcbiAgICBiaW5kaW5nUGx1cmFsTmFtZSxcbiAgICBkZWxldGVGdW5jdGlvbixcbiAgICBzbmFja2JhcixcbiAgICB0cmFuc2xhdGVTZXJ2aWNlXG4gICk7XG5cbiAgY29uc3QgbW9kaWZpZWRTdWNjZXNzRWZmZWN0ID0gY3JlYXRlQmluZGluZ01vZGlmaWVkU3VjY2Vzc0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgdGFibGVTZXJ2aWNlXG4gICk7XG5cbiAgcmV0dXJuIHsgYWRkRWZmZWN0LCBlZGl0RWZmZWN0LCBkZWxldGVFZmZlY3QsIG1vZGlmaWVkU3VjY2Vzc0VmZmVjdCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmluZGluZ3NFZmZlY3RzPFxuICBUIGV4dGVuZHMgeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0sXG4gIFRDcmVhdGVcbj4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1BsdXJhbE5hbWU6IHN0cmluZyxcbiAgYWRkRnVuY3Rpb246IChcbiAgICBiaW5kaW5nczogVENyZWF0ZVtdLFxuICAgIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmdcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gIGRlbGV0ZUZ1bmN0aW9uOiAoXG4gICAgYmluZGluZ0lkczogbnVtYmVyW10sXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xuICApID0+IE9ic2VydmFibGU8YW55PixcbiAgc25hY2tiYXI6IGFueSxcbiAgdHJhbnNsYXRlU2VydmljZTogYW55LFxuICB0YWJsZVNlcnZpY2U6IGFueVxuKSB7XG4gIGNvbnN0IGFkZEVmZmVjdCA9IGNyZWF0ZUFkZEJpbmRpbmdzRWZmZWN0KFxuICAgIGJpbmRpbmdzUmVwb3NpdG9yeSxcbiAgICBhY3Rpb25zJCxcbiAgICBkZXRhaWwkLFxuICAgIGJpbmRpbmdQbHVyYWxOYW1lLFxuICAgIGFkZEZ1bmN0aW9uLFxuICAgIHNuYWNrYmFyLFxuICAgIHRyYW5zbGF0ZVNlcnZpY2VcbiAgKTtcblxuICBjb25zdCBkZWxldGVFZmZlY3QgPSBjcmVhdGVEZWxldGVCaW5kaW5nc0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgZGV0YWlsJCxcbiAgICBiaW5kaW5nUGx1cmFsTmFtZSxcbiAgICBkZWxldGVGdW5jdGlvbixcbiAgICBzbmFja2JhcixcbiAgICB0cmFuc2xhdGVTZXJ2aWNlXG4gICk7XG5cbiAgY29uc3QgbW9kaWZpZWRTdWNjZXNzRWZmZWN0ID0gY3JlYXRlQmluZGluZ01vZGlmaWVkU3VjY2Vzc0VmZmVjdChcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXG4gICAgYWN0aW9ucyQsXG4gICAgdGFibGVTZXJ2aWNlXG4gICk7XG5cbiAgcmV0dXJuIHsgYWRkRWZmZWN0LCBkZWxldGVFZmZlY3QsIG1vZGlmaWVkU3VjY2Vzc0VmZmVjdCB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBZGRCaW5kaW5nRWZmZWN0PFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSwgVENyZWF0ZT4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1BsdXJhbE5hbWU6IHN0cmluZyxcbiAgYWRkRnVuY3Rpb246IChcbiAgICBiaW5kaW5nczogVENyZWF0ZSxcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gIHNuYWNrYmFyOiBhbnksXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueSxcbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVBZGRCaW5kaW5nQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeSkpLFxuICAgICAgd2l0aExhdGVzdEZyb20oZGV0YWlsJCksXG4gICAgICBzd2l0Y2hNYXAoKFt7IGJpbmRpbmcgfSwgZGV0YWlsXSkgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVkUGx1cmFsTmFtZSA9XG4gICAgICAgICAgdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGJpbmRpbmdQbHVyYWxOYW1lKTtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSBgJHt0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuU1VDQ0VTU19BREQnXG4gICAgICAgICl9ICR7dHJhbnNsYXRlZFBsdXJhbE5hbWV9IWA7XG4gICAgICAgIGNvbnN0IGZhaWx1cmVNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLkZBSUxVUkVfQUREJ1xuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xuXG4gICAgICAgIHJldHVybiBhZGRGdW5jdGlvbihiaW5kaW5nKS5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBzbmFja2Jhci5zaG93U3VjY2VzcyhzdWNjZXNzTWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQWRkQmluZGluZ3NTdWNjZXNzQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgICAgY3JlYXRlQWRkQmluZGluZ3NGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdzRWZmZWN0PFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSwgVENyZWF0ZT4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1BsdXJhbE5hbWU6IHN0cmluZyxcbiAgYWRkRnVuY3Rpb246IChcbiAgICBiaW5kaW5nczogVENyZWF0ZVtdLFxuICAgIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmdcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gIHNuYWNrYmFyOiBhbnksXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueVxuKSB7XG4gIHJldHVybiBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZUFkZEJpbmRpbmdzQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeSkpLFxuICAgICAgd2l0aExhdGVzdEZyb20oZGV0YWlsJCksXG4gICAgICBzd2l0Y2hNYXAoKFt7IGJpbmRpbmdzIH0sIGRldGFpbF0pID0+IHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZFBsdXJhbE5hbWUgPVxuICAgICAgICAgIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChiaW5kaW5nUGx1cmFsTmFtZSk7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLlNVQ0NFU1NfQUREJ1xuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xuICAgICAgICBjb25zdCBmYWlsdXJlTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnQklORElOR1NfRUZGRUNUUy5GQUlMVVJFX0FERCdcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcblxuICAgICAgICBpZiAoIWRldGFpbD8uaWQpIHtcbiAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xuICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgIGNyZWF0ZUFkZEJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKHtcbiAgICAgICAgICAgICAgZXJyb3I6IGZhaWx1cmVNZXNzYWdlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFkZEZ1bmN0aW9uKGJpbmRpbmdzLCBkZXRhaWwuaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIHNuYWNrYmFyLnNob3dTdWNjZXNzKHN1Y2Nlc3NNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVBZGRCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSgpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgICBjcmVhdGVBZGRCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7IGVycm9yIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRWRpdEJpbmRpbmdFZmZlY3Q8XG4gIFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfSxcbiAgVEVkaXQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyIHwgc3RyaW5nIH1cbj4oXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcbiAgYmluZGluZ1Npbmd1bGFyTmFtZTogc3RyaW5nLFxuICBlZGl0RnVuY3Rpb246IChiaW5kaW5nOiBURWRpdCwgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxhbnk+LFxuICBzbmFja2JhcjogYW55LFxuICB0cmFuc2xhdGVTZXJ2aWNlOiBhbnksXG4gIG92ZXJyaWRlRGV0YWlsV2l0aEJpbmRpbmcgPSBmYWxzZSxcbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVFZGl0QmluZGluZ0FjdGlvbjxURWRpdD4oYmluZGluZ3NSZXBvc2l0b3J5KSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShkZXRhaWwkKSxcbiAgICAgIHN3aXRjaE1hcCgoW3sgYmluZGluZyB9LCBkZXRhaWxdKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQbHVyYWxOYW1lID1cbiAgICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYmluZGluZ1Npbmd1bGFyTmFtZSk7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLlNVQ0NFU1NfRURJVCdcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcbiAgICAgICAgY29uc3QgZmFpbHVyZU1lc3NhZ2UgPSBgJHt0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuRkFJTFVSRV9FRElUJ1xuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xuXG4gICAgICAgIGNvbnN0IGlkID0gb3ZlcnJpZGVEZXRhaWxXaXRoQmluZGluZyA/IGJpbmRpbmc/LmlkIDogZGV0YWlsPy5pZDtcbiAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgIHNuYWNrYmFyLnNob3dFcnJvcihmYWlsdXJlTWVzc2FnZSk7XG4gICAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgY3JlYXRlRWRpdEJpbmRpbmdGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoe1xuICAgICAgICAgICAgICBlcnJvcjogZmFpbHVyZU1lc3NhZ2UsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWRpdEZ1bmN0aW9uKGJpbmRpbmcsIGlkKS5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBzbmFja2Jhci5zaG93U3VjY2VzcyhzdWNjZXNzTWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRWRpdEJpbmRpbmdTdWNjZXNzQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgICAgY3JlYXRlRWRpdEJpbmRpbmdGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdFZmZlY3Q8VCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9PihcbiAgYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcsXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+LFxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxuICBkZWxldGVGdW5jdGlvbjogKFxuICAgIGJpbmRpbmdJZHM6IHN0cmluZyB8IG51bWJlcixcbiAgICBkZXRhaWxJZDogc3RyaW5nIHwgbnVtYmVyXG4gICkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxuICBzbmFja2JhcjogYW55LFxuICB0cmFuc2xhdGVTZXJ2aWNlOiBhbnlcbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVEZWxldGVCaW5kaW5nQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkpLFxuICAgICAgd2l0aExhdGVzdEZyb20oZGV0YWlsJCksXG4gICAgICBzd2l0Y2hNYXAoKFt7IGlkIH0sIGRldGFpbF0pID0+IHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZFBsdXJhbE5hbWUgPVxuICAgICAgICAgIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChiaW5kaW5nUGx1cmFsTmFtZSk7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLlNVQ0NFU1NfREVMRVRFJ1xuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xuICAgICAgICBjb25zdCBmYWlsdXJlTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnQklORElOR1NfRUZGRUNUUy5GQUlMVVJFX0RFTEVURSdcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcblxuICAgICAgICBpZiAoIWlkICYmICFkZXRhaWw/LmlkKSB7XG4gICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgICBjcmVhdGVEZWxldGVCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7XG4gICAgICAgICAgICAgIGVycm9yOiBmYWlsdXJlTWVzc2FnZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxldGVGdW5jdGlvbihpZCwgaWQgPz8gZGV0YWlsPy5pZCkucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgc25hY2tiYXIuc2hvd1N1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZURlbGV0ZUJpbmRpbmdzU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHNuYWNrYmFyLnNob3dFcnJvcihmYWlsdXJlTWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgICAgIGNyZWF0ZURlbGV0ZUJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKHsgZXJyb3IgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWxldGVCaW5kaW5nc0VmZmVjdDxUIGV4dGVuZHMgeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0+KFxuICBiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZyxcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gIGRldGFpbCQ6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4sXG4gIGJpbmRpbmdQbHVyYWxOYW1lOiBzdHJpbmcsXG4gIGRlbGV0ZUZ1bmN0aW9uOiAoXG4gICAgYmluZGluZ0lkczogbnVtYmVyW10sXG4gICAgZGV0YWlsSWQ6IHN0cmluZyB8IG51bWJlclxuICApID0+IE9ic2VydmFibGU8YW55PixcbiAgc25hY2tiYXI6IGFueSxcbiAgdHJhbnNsYXRlU2VydmljZTogYW55XG4pIHtcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIGFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlQmluZGluZ3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShkZXRhaWwkKSxcbiAgICAgIHN3aXRjaE1hcCgoW3sgYmluZGluZ0lkcyB9LCBkZXRhaWxdKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQbHVyYWxOYW1lID1cbiAgICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYmluZGluZ1BsdXJhbE5hbWUpO1xuICAgICAgICBjb25zdCBzdWNjZXNzTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnQklORElOR1NfRUZGRUNUUy5TVUNDRVNTX0RFTEVURSdcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcbiAgICAgICAgY29uc3QgZmFpbHVyZU1lc3NhZ2UgPSBgJHt0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuRkFJTFVSRV9ERUxFVEUnXG4gICAgICAgICl9ICR7dHJhbnNsYXRlZFBsdXJhbE5hbWV9IWA7XG5cbiAgICAgICAgaWYgKCFkZXRhaWw/LmlkKSB7XG4gICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgICBjcmVhdGVEZWxldGVCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7XG4gICAgICAgICAgICAgIGVycm9yOiBmYWlsdXJlTWVzc2FnZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWxldGVGdW5jdGlvbihiaW5kaW5nSWRzLCBkZXRhaWwuaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIHNuYWNrYmFyLnNob3dTdWNjZXNzKHN1Y2Nlc3NNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEZWxldGVCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSgpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgICBjcmVhdGVEZWxldGVCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7IGVycm9yIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmluZGluZ01vZGlmaWVkU3VjY2Vzc0VmZmVjdChcbiAgYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcsXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxuICB0YWJsZVNlcnZpY2U6IGFueVxuKSB7XG4gIHJldHVybiBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShcbiAgICAgICAgICBjcmVhdGVBZGRCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSxcbiAgICAgICAgICBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSxcbiAgICAgICAgICBjcmVhdGVEZWxldGVCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KVxuICAgICAgICApLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRhYmxlU2VydmljZS5mb3JjZVJlbG9hZCgpO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG59XG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { createAction, props } from '@ngrx/store';
|
|
2
|
+
export function createInitDetailAction(detailsRepository) {
|
|
3
|
+
return createAction(`[${detailsRepository} Page] Init`, props());
|
|
4
|
+
}
|
|
5
|
+
export function createInitNewDetailAction(detailsRepository) {
|
|
6
|
+
return createAction(`[${detailsRepository} Page] Init New`);
|
|
7
|
+
}
|
|
8
|
+
export function createLoadDetailSuccessAction(detailsRepository) {
|
|
9
|
+
return createAction(`[${detailsRepository}/API] Load ${detailsRepository} Success`, props());
|
|
10
|
+
}
|
|
11
|
+
export function createLoadDetailFailureAction(detailsRepository) {
|
|
12
|
+
return createAction(`[${detailsRepository}/API] Load ${detailsRepository} Failure`, props());
|
|
13
|
+
}
|
|
14
|
+
export function createUpdateDetailAction(detailsRepository) {
|
|
15
|
+
return createAction(`[${detailsRepository}/API] Update ${detailsRepository}`, props());
|
|
16
|
+
}
|
|
17
|
+
export function createUpdateDetailSetErrorsAction(detailsRepository) {
|
|
18
|
+
return createAction(`[${detailsRepository}/API] Update Validation Errors ${detailsRepository}`, props());
|
|
19
|
+
}
|
|
20
|
+
export function createUpdateFormStateAction(detailsRepository) {
|
|
21
|
+
return createAction(`[${detailsRepository}/API] Update Form State`, props());
|
|
22
|
+
}
|
|
23
|
+
export function createSaveDetailAction(detailsRepository) {
|
|
24
|
+
return createAction(`[${detailsRepository}/API] Save Detail `);
|
|
25
|
+
}
|
|
26
|
+
export function createSaveDetailSuccessAction(detailsRepository) {
|
|
27
|
+
return createAction(`[${detailsRepository}/API] Save Detail Success`, props());
|
|
28
|
+
}
|
|
29
|
+
export function createSaveDetailFailureAction(detailsRepository) {
|
|
30
|
+
return createAction(`[${detailsRepository}/API] Save Detail Failure`, props());
|
|
31
|
+
}
|
|
32
|
+
export function createUpdateSaveDetailAction(detailsRepository) {
|
|
33
|
+
return createAction(`[${detailsRepository}/API] Update Detail `);
|
|
34
|
+
}
|
|
35
|
+
export function createResetStateAction(detailsRepository) {
|
|
36
|
+
return createAction(`[${detailsRepository}/API] Reset State`);
|
|
37
|
+
}
|
|
38
|
+
export function createDeleteDetailAction(detailsRepository) {
|
|
39
|
+
return createAction(`[${detailsRepository}/API] Delete Detail`);
|
|
40
|
+
}
|
|
41
|
+
export function createDeleteDetailSuccessAction(detailsRepository) {
|
|
42
|
+
return createAction(`[${detailsRepository}/API] Delete Detail Success`);
|
|
43
|
+
}
|
|
44
|
+
export function createDeleteDetailFailureAction(detailsRepository) {
|
|
45
|
+
return createAction(`[${detailsRepository}/API] Delete Detail Failure`, props());
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9zdG9yZS9zcmMvbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsaUJBQXlCO0lBQzlELE9BQU8sWUFBWSxDQUNqQixJQUFJLGlCQUFpQixhQUFhLEVBQ2xDLEtBQUssRUFBcUQsQ0FDM0QsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsaUJBQXlCO0lBQ2pFLE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLGlCQUFpQixDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBSSxpQkFBeUI7SUFDeEUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLGNBQWMsaUJBQWlCLFVBQVUsRUFDOUQsS0FBSyxFQUFlLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDZCQUE2QixDQUFDLGlCQUF5QjtJQUNyRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsY0FBYyxpQkFBaUIsVUFBVSxFQUM5RCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFJLGlCQUF5QjtJQUNuRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsZ0JBQWdCLGlCQUFpQixFQUFFLEVBQ3hELEtBQUssRUFBZSxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxpQkFBeUI7SUFDekUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLGtDQUFrQyxpQkFBaUIsRUFBRSxFQUMxRSxLQUFLLEVBQWtCLENBQ3hCLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLGlCQUF5QjtJQUNuRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIseUJBQXlCLEVBQzlDLEtBQUssRUFBNEIsQ0FDbEMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsaUJBQXlCO0lBQzlELE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLG9CQUFvQixDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBSSxpQkFBeUI7SUFDeEUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLDJCQUEyQixFQUNoRCxLQUFLLEVBQWUsQ0FDckIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsaUJBQXlCO0lBQ3JFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGlCQUFpQiwyQkFBMkIsRUFDaEQsS0FBSyxFQUFrQixDQUN4QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxpQkFBeUI7SUFDcEUsT0FBTyxZQUFZLENBQUMsSUFBSSxpQkFBaUIsc0JBQXNCLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLGlCQUF5QjtJQUM5RCxPQUFPLFlBQVksQ0FBQyxJQUFJLGlCQUFpQixtQkFBbUIsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsaUJBQXlCO0lBQ2hFLE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLHFCQUFxQixDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxpQkFBeUI7SUFDdkUsT0FBTyxZQUFZLENBQUMsSUFBSSxpQkFBaUIsNkJBQTZCLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLCtCQUErQixDQUFDLGlCQUF5QjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsNkJBQTZCLEVBQ2xELEtBQUssRUFBa0IsQ0FDeEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgRm9ybVN0YXRlIH0gZnJvbSAnLi9kZXRhaWwubW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluaXREZXRhaWxBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0gUGFnZV0gSW5pdGAsXG4gICAgcHJvcHM8eyBvYmo6IHN0cmluZyB8IG51bGwgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBhbnkgfT4oKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5pdE5ld0RldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oYFske2RldGFpbHNSZXBvc2l0b3J5fSBQYWdlXSBJbml0IE5ld2ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9hZERldGFpbFN1Y2Nlc3NBY3Rpb248VD4oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBMb2FkICR7ZGV0YWlsc1JlcG9zaXRvcnl9IFN1Y2Nlc3NgLFxuICAgIHByb3BzPHsgaXRlbTogVCB9PigpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2FkRGV0YWlsRmFpbHVyZUFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIExvYWQgJHtkZXRhaWxzUmVwb3NpdG9yeX0gRmFpbHVyZWAsXG4gICAgcHJvcHM8eyBlcnJvcjogYW55IH0+KClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVwZGF0ZURldGFpbEFjdGlvbjxUPihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFVwZGF0ZSAke2RldGFpbHNSZXBvc2l0b3J5fWAsXG4gICAgcHJvcHM8eyBpdGVtOiBUIH0+KClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVwZGF0ZURldGFpbFNldEVycm9yc0FjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFVwZGF0ZSBWYWxpZGF0aW9uIEVycm9ycyAke2RldGFpbHNSZXBvc2l0b3J5fWAsXG4gICAgcHJvcHM8eyBlcnJvcjogYW55IH0+KClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXBkYXRlRm9ybVN0YXRlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcbiAgICBgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gVXBkYXRlIEZvcm0gU3RhdGVgLFxuICAgIHByb3BzPHsgZm9ybVN0YXRlOiBGb3JtU3RhdGUgfT4oKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2F2ZURldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFNhdmUgRGV0YWlsIGApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2F2ZURldGFpbFN1Y2Nlc3NBY3Rpb248VD4oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBTYXZlIERldGFpbCBTdWNjZXNzYCxcbiAgICBwcm9wczx7IGl0ZW06IFQgfT4oKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2F2ZURldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBTYXZlIERldGFpbCBGYWlsdXJlYCxcbiAgICBwcm9wczx7IGVycm9yOiBhbnkgfT4oKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXBkYXRlU2F2ZURldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFVwZGF0ZSBEZXRhaWwgYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZXNldFN0YXRlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gUmVzZXQgU3RhdGVgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZURldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVBY3Rpb24oYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIERlbGV0ZSBEZXRhaWxgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZURldGFpbFN1Y2Nlc3NBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBEZWxldGUgRGV0YWlsIFN1Y2Nlc3NgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZURldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBEZWxldGUgRGV0YWlsIEZhaWx1cmVgLFxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXG4gICk7XG59XG4iXX0=
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { createEffect, ofType } from '@ngrx/effects';
|
|
2
|
+
import { catchError, EMPTY, map, of, switchMap, tap, withLatestFrom, } from 'rxjs';
|
|
3
|
+
import { createDeleteDetailAction, createDeleteDetailFailureAction, createDeleteDetailSuccessAction, createInitDetailAction, createInitNewDetailAction, createLoadDetailFailureAction, createLoadDetailSuccessAction, createSaveDetailAction, createSaveDetailFailureAction, createSaveDetailSuccessAction, } from './detail.actions';
|
|
4
|
+
export function createInitDetailEffect(detailsRepository, actions$, config) {
|
|
5
|
+
return createEffect(() => {
|
|
6
|
+
return actions$.pipe(ofType(createInitDetailAction(detailsRepository)), switchMap(({ obj }) => {
|
|
7
|
+
const get$ = (config?.service?.get(obj) ??
|
|
8
|
+
config?.get?.(obj));
|
|
9
|
+
if (!get$)
|
|
10
|
+
return EMPTY;
|
|
11
|
+
return get$?.pipe(map((item) => {
|
|
12
|
+
return createLoadDetailSuccessAction(detailsRepository)({ item });
|
|
13
|
+
}), catchError((error) => {
|
|
14
|
+
if (error.status === 404) {
|
|
15
|
+
config?.snackbar?.showError(config?.notFoundMessage ?? error);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
config?.snackbar?.showError(config?.errorMessage ?? error);
|
|
19
|
+
}
|
|
20
|
+
console.error('Error', error);
|
|
21
|
+
return of(createLoadDetailFailureAction(detailsRepository)({ error }));
|
|
22
|
+
}));
|
|
23
|
+
}));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
export function createInitNewDetailEffect(detailsRepository, actions$) {
|
|
27
|
+
return createEffect(() => actions$.pipe(ofType(createInitNewDetailAction(detailsRepository)), map(() => {
|
|
28
|
+
return createLoadDetailSuccessAction(detailsRepository)({ item: null });
|
|
29
|
+
})));
|
|
30
|
+
}
|
|
31
|
+
export function createSaveDetailEffect(detailsRepository, actions$, service, config) {
|
|
32
|
+
return createEffect(() => actions$.pipe(ofType(createSaveDetailAction(detailsRepository)), withLatestFrom(config.detail$), switchMap(([, savedItem]) => {
|
|
33
|
+
const isNew = !savedItem?.id;
|
|
34
|
+
const saveAction = isNew
|
|
35
|
+
? service.post(savedItem)
|
|
36
|
+
: service.put(savedItem.id, savedItem);
|
|
37
|
+
return saveAction.pipe(map((item) => {
|
|
38
|
+
if (isNew && config?.router && config?.redirectPath) {
|
|
39
|
+
const suffix = config?.useItemId ? '/' + item.id : '';
|
|
40
|
+
config.router.navigateByUrl(config.redirectPath + suffix);
|
|
41
|
+
}
|
|
42
|
+
if (isNew && config?.router && config?.navigationMap) {
|
|
43
|
+
const url = constructUrlFromNavigationMap(item, config.navigationMap);
|
|
44
|
+
config.router.navigateByUrl(url);
|
|
45
|
+
}
|
|
46
|
+
return createSaveDetailSuccessAction(detailsRepository)({
|
|
47
|
+
item: item,
|
|
48
|
+
});
|
|
49
|
+
}), catchError((error) => {
|
|
50
|
+
console.error('Error', error);
|
|
51
|
+
return of(createSaveDetailFailureAction(detailsRepository)({ error }));
|
|
52
|
+
}));
|
|
53
|
+
})));
|
|
54
|
+
}
|
|
55
|
+
export function createSaveDetailSuccessEffect(detailsRepository, actions$, config) {
|
|
56
|
+
return createEffect(() => actions$.pipe(ofType(createSaveDetailSuccessAction(detailsRepository)), map((data) => {
|
|
57
|
+
config?.snackbar?.showSuccess(config?.successMessge ?? `Item successfully saved.`);
|
|
58
|
+
return createInitDetailAction(detailsRepository)({ obj: data.item.id });
|
|
59
|
+
})));
|
|
60
|
+
}
|
|
61
|
+
export function createSaveDetailFailureEffect(detailsRepository, actions$, config) {
|
|
62
|
+
return createEffect(() => actions$.pipe(ofType(createSaveDetailFailureAction(detailsRepository)), tap(({ error }) => {
|
|
63
|
+
config?.snackbar?.showError(config.errorMessage ?? `Error saving item. ${error.message}`);
|
|
64
|
+
})), {
|
|
65
|
+
dispatch: false,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export function createDeleteDetailEffect(detailsRepository, actions$, service, config) {
|
|
69
|
+
return createEffect(() => actions$.pipe(ofType(createDeleteDetailAction(detailsRepository)), withLatestFrom(config.detail$), switchMap(([, savedItem]) => {
|
|
70
|
+
const id = savedItem?.id;
|
|
71
|
+
if (!id) {
|
|
72
|
+
return of(createSaveDetailFailureAction(detailsRepository)({
|
|
73
|
+
error: 'Item has no id',
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
return service.delete(id).pipe(map(() => {
|
|
77
|
+
if (config?.router && config?.redirectPath) {
|
|
78
|
+
config.router.navigateByUrl(`${config.redirectPath}`);
|
|
79
|
+
}
|
|
80
|
+
if (config?.router && config?.navigationMap) {
|
|
81
|
+
const url = constructUrlFromNavigationMap(savedItem, config.navigationMap);
|
|
82
|
+
config.router.navigateByUrl(url);
|
|
83
|
+
}
|
|
84
|
+
return createDeleteDetailSuccessAction(detailsRepository)();
|
|
85
|
+
}), catchError((error) => {
|
|
86
|
+
console.error('Error', error);
|
|
87
|
+
config.snackbar?.showError('Failed to delete item.');
|
|
88
|
+
return of(createDeleteDetailFailureAction(detailsRepository)({ error }));
|
|
89
|
+
}));
|
|
90
|
+
})));
|
|
91
|
+
}
|
|
92
|
+
export function createDeleteDetailSuccessEffect(detailsRepository, actions$, config) {
|
|
93
|
+
return createEffect(() => actions$.pipe(ofType(createDeleteDetailSuccessAction(detailsRepository)), tap(() => {
|
|
94
|
+
config?.snackbar?.showSuccess(config.successMessge ?? `Item successfully deleted.`);
|
|
95
|
+
})), {
|
|
96
|
+
dispatch: false,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
export function createDeleteDetailFailureEffect(detailsRepository, actions$, config) {
|
|
100
|
+
return createEffect(() => actions$.pipe(ofType(createDeleteDetailFailureAction(detailsRepository)), tap(({ error }) => {
|
|
101
|
+
config?.snackbar?.showError(config.errorMessage ?? `Error deleting item. ${error.message}`);
|
|
102
|
+
})), {
|
|
103
|
+
dispatch: false,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function constructUrlFromNavigationMap(item, navigationMap) {
|
|
107
|
+
let url = '';
|
|
108
|
+
navigationMap.forEach((urlPartValue, suffixPropertyKey) => {
|
|
109
|
+
const suffix = item[suffixPropertyKey];
|
|
110
|
+
if (suffix) {
|
|
111
|
+
url += `${urlPartValue}/${suffix}`;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
return url;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9zdG9yZS9zcmMvbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLEtBQUssRUFDTCxHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxHQUFHLEVBQ0gsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdEIsNkJBQTZCLEVBQzdCLDZCQUE2QixHQUM5QixNQUFNLGtCQUFrQixDQUFDO0FBb0IxQixNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLGlCQUF5QixFQUN6QixRQUFpQixFQUNqQixNQUErQjtJQUUvQixPQUFPLFlBQVksQ0FBQyxHQUFHLEVBQUU7UUFDdkIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNsQixNQUFNLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUNqRCxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEdBQW9CLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsR0FBVSxDQUFDO2dCQUM3RCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQW9CLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUk7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDeEIsT0FBTyxJQUFJLEVBQUUsSUFBSSxDQUNmLEdBQUcsQ0FBQyxDQUFDLElB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QyxJQUFJLENBQ1gsTUFBTSxDQUFDLCtCQUErQixDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFDMUQsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ2hCLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUN6QixNQUFNLENBQUMsWUFBWSxJQUFJLHdCQUF3QixLQUFLLENBQUMsT0FBTyxFQUFFLENBQy9ELENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxFQUNIO1FBQ0UsUUFBUSxFQUFFLEtBQUs7S0FDaEIsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsNkJBQTZCLENBQ3BDLElBQU8sRUFDUCxhQUFtQztJQUVuQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDYixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLEVBQUU7UUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLEdBQUcsSUFBSSxHQUFHLFlBQVksSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEJhc2VIdHRwU2VydmljZSB9IGZyb20gJ0B2ZXJpc29mdC9jb3JlJztcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIEVNUFRZLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlRGVsZXRlRGV0YWlsQWN0aW9uLFxuICBjcmVhdGVEZWxldGVEZXRhaWxGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVEZWxldGVEZXRhaWxTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVJbml0RGV0YWlsQWN0aW9uLFxuICBjcmVhdGVJbml0TmV3RGV0YWlsQWN0aW9uLFxuICBjcmVhdGVMb2FkRGV0YWlsRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlTG9hZERldGFpbFN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZVNhdmVEZXRhaWxBY3Rpb24sXG4gIGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVTYXZlRGV0YWlsU3VjY2Vzc0FjdGlvbixcbn0gZnJvbSAnLi9kZXRhaWwuYWN0aW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlSW5pdEZvcm1Db25maWc8VD4ge1xuICBzZXJ2aWNlPzogQmFzZUh0dHBTZXJ2aWNlPFQ+O1xuICBnZXQ/OiAob2JqOiBhbnkpID0+IE9ic2VydmFibGU8VD47XG4gIHNuYWNrYmFyPzogYW55O1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIG5vdEZvdW5kTWVzc2FnZT86IHN0cmluZztcbiAgc3VjY2Vzc01lc3NnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXRhaWxFZmZlY3RDb25maWc8VD4ge1xuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xuICBzbmFja2Jhcj86IGFueTtcbiAgcm91dGVyPzogUm91dGVyO1xuICByZWRpcmVjdFBhdGg/OiBzdHJpbmc7XG4gIHVzZUl0ZW1JZD86IGJvb2xlYW47XG4gIG5hdmlnYXRpb25NYXA/OiBNYXA8a2V5b2YgVCwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluaXREZXRhaWxFZmZlY3Q8VD4oXG4gIGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcsXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxuICBjb25maWc6IENyZWF0ZUluaXRGb3JtQ29uZmlnPFQ+XG4pIHtcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIGFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlSW5pdERldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkpLFxuICAgICAgc3dpdGNoTWFwKCh7IG9iaiB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGdldCQ6IE9ic2VydmFibGU8YW55PiA9IChjb25maWc/LnNlcnZpY2U/LmdldChvYmogYXMgYW55KSA/P1xuICAgICAgICAgIGNvbmZpZz8uZ2V0Py4ob2JqKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICAgICAgICBpZiAoIWdldCQpIHJldHVybiBFTVBUWTtcbiAgICAgICAgcmV0dXJuIGdldCQ/LnBpcGUoXG4gICAgICAgICAgbWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9hZERldGFpbFN1Y2Nlc3NBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHsgaXRlbSB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgIGNvbmZpZz8uc25hY2tiYXI/LnNob3dFcnJvcihjb25maWc/Lm5vdEZvdW5kTWVzc2FnZSA/PyBlcnJvcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25maWc/LnNuYWNrYmFyPy5zaG93RXJyb3IoY29uZmlnPy5lcnJvck1lc3NhZ2UgPz8gZXJyb3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcicsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgICAgY3JlYXRlTG9hZERldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHsgZXJyb3IgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbml0TmV3RGV0YWlsRWZmZWN0KFxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9uc1xuKSB7XG4gIHJldHVybiBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZUluaXROZXdEZXRhaWxBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKSxcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2FkRGV0YWlsU3VjY2Vzc0FjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkoeyBpdGVtOiBudWxsIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTYXZlRGV0YWlsRWZmZWN0PFxuICBUIGV4dGVuZHMgeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0sXG4gIFNFUlZJQ0UgZXh0ZW5kcyBCYXNlSHR0cFNlcnZpY2U8VD5cbj4oXG4gIGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcsXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxuICBzZXJ2aWNlOiBTRVJWSUNFLFxuICBjb25maWc6IERldGFpbEVmZmVjdENvbmZpZzxUPlxuKSB7XG4gIHJldHVybiBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZVNhdmVEZXRhaWxBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKGNvbmZpZy5kZXRhaWwkKSxcbiAgICAgIHN3aXRjaE1hcCgoWywgc2F2ZWRJdGVtXSkgPT4ge1xuICAgICAgICBjb25zdCBpc05ldyA9ICFzYXZlZEl0ZW0/LmlkO1xuICAgICAgICBjb25zdCBzYXZlQWN0aW9uID0gaXNOZXdcbiAgICAgICAgICA/IHNlcnZpY2UucG9zdChzYXZlZEl0ZW0gYXMgVClcbiAgICAgICAgICA6IHNlcnZpY2UucHV0KHNhdmVkSXRlbS5pZCwgc2F2ZWRJdGVtKTtcbiAgICAgICAgcmV0dXJuIHNhdmVBY3Rpb24ucGlwZShcbiAgICAgICAgICBtYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpc05ldyAmJiBjb25maWc/LnJvdXRlciAmJiBjb25maWc/LnJlZGlyZWN0UGF0aCkge1xuICAgICAgICAgICAgICBjb25zdCBzdWZmaXggPSBjb25maWc/LnVzZUl0ZW1JZCA/ICcvJyArIGl0ZW0uaWQgOiAnJztcbiAgICAgICAgICAgICAgY29uZmlnLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGNvbmZpZy5yZWRpcmVjdFBhdGggKyBzdWZmaXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNOZXcgJiYgY29uZmlnPy5yb3V0ZXIgJiYgY29uZmlnPy5uYXZpZ2F0aW9uTWFwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHVybCA9IGNvbnN0cnVjdFVybEZyb21OYXZpZ2F0aW9uTWFwKGl0ZW0sIGNvbmZpZy5uYXZpZ2F0aW9uTWFwKVxuICAgICAgICAgICAgICBjb25maWcucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVNhdmVEZXRhaWxTdWNjZXNzQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSh7XG4gICAgICAgICAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3InLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgICAgIGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSh7IGVycm9yIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNhdmVEZXRhaWxTdWNjZXNzRWZmZWN0KFxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgY29uZmlnPzogQ3JlYXRlSW5pdEZvcm1Db25maWc8dW5rbm93bj5cbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoY3JlYXRlU2F2ZURldGFpbFN1Y2Nlc3NBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKSxcbiAgICAgICAgbWFwKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25maWc/LnNuYWNrYmFyPy5zaG93U3VjY2VzcyhcbiAgICAgICAgICAgIGNvbmZpZz8uc3VjY2Vzc01lc3NnZSA/PyBgSXRlbSBzdWNjZXNzZnVsbHkgc2F2ZWQuYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUluaXREZXRhaWxBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHsgb2JqOiBkYXRhLml0ZW0uaWQgfSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTYXZlRGV0YWlsRmFpbHVyZUVmZmVjdChcbiAgZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZyxcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gIGNvbmZpZz86IENyZWF0ZUluaXRGb3JtQ29uZmlnPHVua25vd24+XG4pIHtcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKGNyZWF0ZVNhdmVEZXRhaWxGYWlsdXJlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSksXG4gICAgICAgIHRhcCgoeyBlcnJvciB9KSA9PiB7XG4gICAgICAgICAgY29uZmlnPy5zbmFja2Jhcj8uc2hvd0Vycm9yKFxuICAgICAgICAgICAgY29uZmlnLmVycm9yTWVzc2FnZSA/PyBgRXJyb3Igc2F2aW5nIGl0ZW0uICR7ZXJyb3IubWVzc2FnZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAge1xuICAgICAgZGlzcGF0Y2g6IGZhbHNlLFxuICAgIH1cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZURldGFpbEVmZmVjdDxcbiAgVCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9LFxuICBTRVJWSUNFIGV4dGVuZHMgQmFzZUh0dHBTZXJ2aWNlPFQ+XG4+KFxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgc2VydmljZTogU0VSVklDRSxcbiAgY29uZmlnOiBEZXRhaWxFZmZlY3RDb25maWc8VD4sXG4pIHtcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIGFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlRGV0YWlsQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5KSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShjb25maWcuZGV0YWlsJCksXG4gICAgICBzd2l0Y2hNYXAoKFssIHNhdmVkSXRlbV0pID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBzYXZlZEl0ZW0/LmlkO1xuICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgY3JlYXRlU2F2ZURldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKHtcbiAgICAgICAgICAgICAgZXJyb3I6ICdJdGVtIGhhcyBubyBpZCcsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VydmljZS5kZWxldGUoaWQpLnBpcGUoXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChjb25maWc/LnJvdXRlciAmJiBjb25maWc/LnJlZGlyZWN0UGF0aCkge1xuICAgICAgICAgICAgICBjb25maWcucm91dGVyLm5hdmlnYXRlQnlVcmwoYCR7Y29uZmlnLnJlZGlyZWN0UGF0aH1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbmZpZz8ucm91dGVyICYmIGNvbmZpZz8ubmF2aWdhdGlvbk1hcCkge1xuICAgICAgICAgICAgICBjb25zdCB1cmwgPSBjb25zdHJ1Y3RVcmxGcm9tTmF2aWdhdGlvbk1hcChzYXZlZEl0ZW0sIGNvbmZpZy5uYXZpZ2F0aW9uTWFwKVxuICAgICAgICAgICAgICBjb25maWcucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZURlbGV0ZURldGFpbFN1Y2Nlc3NBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnkpKCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgY29uZmlnLnNuYWNrYmFyPy5zaG93RXJyb3IoJ0ZhaWxlZCB0byBkZWxldGUgaXRlbS4nKTtcbiAgICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgICAgY3JlYXRlRGVsZXRlRGV0YWlsRmFpbHVyZUFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVEZXRhaWxTdWNjZXNzRWZmZWN0KFxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgY29uZmlnPzogQ3JlYXRlSW5pdEZvcm1Db25maWc8dW5rbm93bj5cbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlRGV0YWlsU3VjY2Vzc0FjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGNvbmZpZz8uc25hY2tiYXI/LnNob3dTdWNjZXNzKFxuICAgICAgICAgICAgY29uZmlnLnN1Y2Nlc3NNZXNzZ2UgPz8gYEl0ZW0gc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQuYFxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHtcbiAgICAgIGRpc3BhdGNoOiBmYWxzZSxcbiAgICB9XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVEZXRhaWxGYWlsdXJlRWZmZWN0KFxuICBkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nLFxuICBhY3Rpb25zJDogQWN0aW9ucyxcbiAgY29uZmlnPzogQ3JlYXRlSW5pdEZvcm1Db25maWc8dW5rbm93bj5cbikge1xuICByZXR1cm4gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBhY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlRGV0YWlsRmFpbHVyZUFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeSkpLFxuICAgICAgICB0YXAoKHsgZXJyb3IgfSkgPT4ge1xuICAgICAgICAgIGNvbmZpZz8uc25hY2tiYXI/LnNob3dFcnJvcihcbiAgICAgICAgICAgIGNvbmZpZy5lcnJvck1lc3NhZ2UgPz8gYEVycm9yIGRlbGV0aW5nIGl0ZW0uICR7ZXJyb3IubWVzc2FnZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAge1xuICAgICAgZGlzcGF0Y2g6IGZhbHNlLFxuICAgIH1cbiAgKTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0VXJsRnJvbU5hdmlnYXRpb25NYXA8VCBleHRlbmRzIG9iamVjdD4oXG4gIGl0ZW06IFQsXG4gIG5hdmlnYXRpb25NYXA6IE1hcDxrZXlvZiBULCBzdHJpbmc+KVxuICA6IHN0cmluZyB7XG4gIGxldCB1cmwgPSAnJztcbiAgbmF2aWdhdGlvbk1hcC5mb3JFYWNoKCh1cmxQYXJ0VmFsdWUsIHN1ZmZpeFByb3BlcnR5S2V5KSA9PiB7XG4gICAgY29uc3Qgc3VmZml4ID0gaXRlbVtzdWZmaXhQcm9wZXJ0eUtleV07XG4gICAgaWYgKHN1ZmZpeCkge1xuICAgICAgdXJsICs9IGAke3VybFBhcnRWYWx1ZX0vJHtzdWZmaXh9YDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB1cmw7XG59XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const INITIAL_SAVE_ITEM_STATE = {
|
|
2
|
+
saveInProgress: false,
|
|
3
|
+
};
|
|
4
|
+
export const INITIAL_CHOSEN_ROW_STATE = {
|
|
5
|
+
rows: []
|
|
6
|
+
};
|
|
7
|
+
export const INITIAL_DETAIL_STATE = {
|
|
8
|
+
loaded: false,
|
|
9
|
+
saveItemState: INITIAL_SAVE_ITEM_STATE,
|
|
10
|
+
backendValidationErrors: [],
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3N0b3JlL3NyYy9saWIvZGV0YWlsLXN0YXRlL2RldGFpbC5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0JBLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFrQjtJQUNwRCxjQUFjLEVBQUUsS0FBSztDQUN0QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXlCO0lBQzVELElBQUksRUFBRSxFQUFFO0NBQ1QsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFxQjtJQUNwRCxNQUFNLEVBQUUsS0FBSztJQUNiLGFBQWEsRUFBRSx1QkFBdUI7SUFDdEMsdUJBQXVCLEVBQUUsRUFBRTtDQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEZXRhaWxTdGF0ZTxUPiB7XG4gIGxvYWRlZDogYm9vbGVhbjtcbiAgaXRlbT86IFQ7XG4gIGZvcm1TdGF0ZT86IEZvcm1TdGF0ZTtcbiAgZXJyb3I/OiBzdHJpbmcgfCBudWxsO1xuICBzYXZlSXRlbVN0YXRlOiBTYXZlSXRlbVN0YXRlO1xuICBiYWNrZW5kVmFsaWRhdGlvbkVycm9yczogQmFja2VuZFZhbGlkYXRpb25FcnJvcltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tlbmRWYWxpZGF0aW9uRXJyb3Ige1xuICBjb2RlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcGFyYW1ldGVyczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENob3NlblJvd3NTdGF0ZTxUPiB7IFxuICByb3dzOiBBcnJheTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYXZlSXRlbVN0YXRlIHtcbiAgc2F2ZUluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIGVycm9yPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfU0FWRV9JVEVNX1NUQVRFOiBTYXZlSXRlbVN0YXRlID0ge1xuICBzYXZlSW5Qcm9ncmVzczogZmFsc2UsXG59O1xuXG5leHBvcnQgY29uc3QgSU5JVElBTF9DSE9TRU5fUk9XX1NUQVRFOiBDaG9zZW5Sb3dzU3RhdGU8YW55PiA9IHtcbiAgcm93czogW11cbn1cblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfREVUQUlMX1NUQVRFOiBEZXRhaWxTdGF0ZTxhbnk+ID0ge1xuICBsb2FkZWQ6IGZhbHNlLFxuICBzYXZlSXRlbVN0YXRlOiBJTklUSUFMX1NBVkVfSVRFTV9TVEFURSxcbiAgYmFja2VuZFZhbGlkYXRpb25FcnJvcnM6IFtdLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtU3RhdGUge1xuICBkaXJ0eTogYm9vbGVhbjtcbiAgdmFsaWQ6IGJvb2xlYW47XG59XG4iXX0=
|