@tethys/cdk 16.0.5 → 16.1.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/behaviors/action-behavior.d.ts +2 -1
- package/behaviors/async-behavior.d.ts +6 -5
- package/esm2022/behaviors/action-behavior.mjs +14 -10
- package/esm2022/behaviors/async-behavior.mjs +21 -16
- package/esm2022/behaviors/behavior.mjs +2 -2
- package/fesm2022/tethys-cdk-behaviors.mjs +32 -25
- package/fesm2022/tethys-cdk-behaviors.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
1
2
|
import { Observable } from 'rxjs';
|
|
2
3
|
import { Behavior, BehaviorContext } from './behavior';
|
|
3
4
|
import { ErrorFn, ExtractObservableValue, SuccessFn } from './types';
|
|
4
5
|
interface ActionBehavior<R> {
|
|
5
|
-
saving: boolean
|
|
6
|
+
saving: Signal<boolean>;
|
|
6
7
|
execute(success?: SuccessFn<R>, error?: ErrorFn): void;
|
|
7
8
|
execute(context: BehaviorContext<R>): void;
|
|
8
9
|
execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): void;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { Behavior, BehaviorContext } from './behavior';
|
|
3
3
|
import { ErrorFn, ExtractObservableValue, SuccessFn } from './types';
|
|
4
|
+
import { Signal } from '@angular/core';
|
|
4
5
|
export interface AsyncBehavior<R> {
|
|
5
|
-
loadingDone: boolean
|
|
6
|
-
loading: boolean
|
|
7
|
-
state: 'pending' | 'loading' | 'success' | 'error'
|
|
8
|
-
error?: Error
|
|
9
|
-
value?: R
|
|
6
|
+
loadingDone: Signal<boolean>;
|
|
7
|
+
loading: Signal<boolean>;
|
|
8
|
+
state: Signal<'pending' | 'loading' | 'success' | 'error'>;
|
|
9
|
+
error?: Signal<Error>;
|
|
10
|
+
value?: Signal<R>;
|
|
10
11
|
execute(success?: SuccessFn<R>, error?: ErrorFn): void;
|
|
11
12
|
execute(context: BehaviorContext<R>): void;
|
|
12
13
|
execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): void;
|
|
@@ -1,37 +1,40 @@
|
|
|
1
|
+
import { signal } from '@angular/core';
|
|
2
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
1
3
|
import { finalize, tap } from 'rxjs/operators';
|
|
2
4
|
import { createBehaviorFromFunction, handleBehaviorError, pickBehaviorCallbacks } from './behavior';
|
|
3
5
|
class ActionBehaviorImpl {
|
|
4
6
|
constructor(action, context) {
|
|
5
7
|
this.action = action;
|
|
6
8
|
this.context = context;
|
|
7
|
-
this.saving = false;
|
|
9
|
+
this.saving = signal(false);
|
|
10
|
+
this.takeUntilDestroyed = takeUntilDestroyed();
|
|
8
11
|
}
|
|
9
12
|
execute(successOrContext, error) {
|
|
10
|
-
if (this.saving) {
|
|
13
|
+
if (this.saving()) {
|
|
11
14
|
return;
|
|
12
15
|
}
|
|
13
|
-
this.saving
|
|
16
|
+
this.saving.set(true);
|
|
14
17
|
const callbacks = pickBehaviorCallbacks(this.context, successOrContext, error);
|
|
15
18
|
try {
|
|
16
19
|
return this.action
|
|
17
20
|
.apply(undefined, this.executeParams)
|
|
18
|
-
.pipe(finalize(() => {
|
|
19
|
-
this.saving
|
|
21
|
+
.pipe(this.takeUntilDestroyed, finalize(() => {
|
|
22
|
+
this.saving.set(false);
|
|
20
23
|
this.executeParams = undefined;
|
|
21
24
|
}), tap(value => {
|
|
22
|
-
this.saving
|
|
25
|
+
this.saving.set(false);
|
|
23
26
|
this.executeParams = undefined;
|
|
24
27
|
}))
|
|
25
28
|
.subscribe({
|
|
26
29
|
next: callbacks?.success,
|
|
27
30
|
error: (error) => {
|
|
28
|
-
this.saving
|
|
31
|
+
this.saving.set(false);
|
|
29
32
|
handleBehaviorError(error, callbacks.error);
|
|
30
33
|
}
|
|
31
34
|
});
|
|
32
35
|
}
|
|
33
36
|
catch (error) {
|
|
34
|
-
this.saving
|
|
37
|
+
this.saving.set(false);
|
|
35
38
|
handleBehaviorError(error, callbacks.error);
|
|
36
39
|
}
|
|
37
40
|
}
|
|
@@ -45,8 +48,9 @@ export function useAction(action, context = {}) {
|
|
|
45
48
|
return createBehaviorFromFunction(fn, {
|
|
46
49
|
context: context,
|
|
47
50
|
action: action,
|
|
48
|
-
|
|
51
|
+
takeUntilDestroyed: behavior.takeUntilDestroyed,
|
|
52
|
+
execute: behavior.execute.bind(fn),
|
|
49
53
|
saving: behavior.saving
|
|
50
54
|
});
|
|
51
55
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJlaGF2aW9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY2RrL2JlaGF2aW9ycy9hY3Rpb24tYmVoYXZpb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBNkIsMEJBQTBCLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFXL0gsTUFBTSxrQkFBa0I7SUFPcEIsWUFBb0IsTUFBUyxFQUFVLE9BQTJCO1FBQTlDLFdBQU0sR0FBTixNQUFNLENBQUc7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQU5sRSxXQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSXZCLHVCQUFrQixHQUFHLGtCQUFrQixFQUFFLENBQUM7SUFFMkIsQ0FBQztJQUl0RSxPQUFPLENBQUMsZ0JBQW1ELEVBQUUsS0FBZTtRQUN4RSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNmLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0UsSUFBSTtZQUNBLE9BQU8sSUFBSSxDQUFDLE1BQU07aUJBQ2IsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO2lCQUNwQyxJQUFJLENBQ0QsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixRQUFRLENBQUMsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztZQUNuQyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUNMO2lCQUNBLFNBQVMsQ0FBQztnQkFDUCxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU87Z0JBQ3hCLEtBQUssRUFBRSxDQUFDLEtBQVksRUFBRSxFQUFFO29CQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdkIsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEQsQ0FBQzthQUNKLENBQUMsQ0FBQztTQUNWO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9DO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FDckIsTUFBUyxFQUNULFVBQWtFLEVBQUU7SUFFcEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFekQsTUFBTSxFQUFFLEdBQUcsVUFBVSxHQUFHLE1BQXFCO1FBQ3pDLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDN0IsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDLENBQUM7SUFDRixPQUFPLDBCQUEwQixDQUFDLEVBQUUsRUFBRTtRQUNsQyxPQUFPLEVBQUUsT0FBTztRQUNoQixNQUFNLEVBQUUsTUFBTTtRQUNkLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7UUFDL0MsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQyxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07S0FDMUIsQ0FDd0QsQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCZWhhdmlvciwgQmVoYXZpb3JDb250ZXh0LCBjcmVhdGVCZWhhdmlvckZyb21GdW5jdGlvbiwgaGFuZGxlQmVoYXZpb3JFcnJvciwgcGlja0JlaGF2aW9yQ2FsbGJhY2tzIH0gZnJvbSAnLi9iZWhhdmlvcic7XG5pbXBvcnQgeyBFcnJvckZuLCBFeHRyYWN0T2JzZXJ2YWJsZVZhbHVlLCBTdWNjZXNzRm4gfSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIEFjdGlvbkJlaGF2aW9yPFI+IHtcbiAgICBzYXZpbmc6IFNpZ25hbDxib29sZWFuPjtcblxuICAgIGV4ZWN1dGUoc3VjY2Vzcz86IFN1Y2Nlc3NGbjxSPiwgZXJyb3I/OiBFcnJvckZuKTogdm9pZDtcbiAgICBleGVjdXRlKGNvbnRleHQ6IEJlaGF2aW9yQ29udGV4dDxSPik6IHZvaWQ7XG4gICAgZXhlY3V0ZShzdWNjZXNzT3JDb250ZXh0OiBTdWNjZXNzRm48Uj4gfCBCZWhhdmlvckNvbnRleHQ8Uj4sIGVycm9yPzogRXJyb3JGbik6IHZvaWQ7XG59XG5cbmNsYXNzIEFjdGlvbkJlaGF2aW9ySW1wbDxSLCBBIGV4dGVuZHMgKC4uLmFyZ3M6IGFueSkgPT4gT2JzZXJ2YWJsZTxSPj4gaW1wbGVtZW50cyBBY3Rpb25CZWhhdmlvcjxSPiB7XG4gICAgc2F2aW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIGV4ZWN1dGVQYXJhbXM6IFBhcmFtZXRlcnM8QT47XG5cbiAgICB0YWtlVW50aWxEZXN0cm95ZWQgPSB0YWtlVW50aWxEZXN0cm95ZWQoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBBLCBwcml2YXRlIGNvbnRleHQ6IEJlaGF2aW9yQ29udGV4dDxSPikge31cblxuICAgIGV4ZWN1dGUoc3VjY2Vzcz86IFN1Y2Nlc3NGbjxSPiwgZXJyb3I/OiBFcnJvckZuKTogdm9pZDtcbiAgICBleGVjdXRlKGNvbnRleHQ6IEJlaGF2aW9yQ29udGV4dDxSPik6IHZvaWQ7XG4gICAgZXhlY3V0ZShzdWNjZXNzT3JDb250ZXh0OiBTdWNjZXNzRm48Uj4gfCBCZWhhdmlvckNvbnRleHQ8Uj4sIGVycm9yPzogRXJyb3JGbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zYXZpbmcoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2F2aW5nLnNldCh0cnVlKTtcbiAgICAgICAgY29uc3QgY2FsbGJhY2tzID0gcGlja0JlaGF2aW9yQ2FsbGJhY2tzKHRoaXMuY29udGV4dCwgc3VjY2Vzc09yQ29udGV4dCwgZXJyb3IpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uXG4gICAgICAgICAgICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgdGhpcy5leGVjdXRlUGFyYW1zKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRha2VVbnRpbERlc3Ryb3llZCxcbiAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZVBhcmFtcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHRhcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlUGFyYW1zID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogY2FsbGJhY2tzPy5zdWNjZXNzLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zYXZpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUJlaGF2aW9yRXJyb3IoZXJyb3IsIGNhbGxiYWNrcy5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2aW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICBoYW5kbGVCZWhhdmlvckVycm9yKGVycm9yLCBjYWxsYmFja3MuZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQWN0aW9uPEEgZXh0ZW5kcyAoLi4uYXJnczogYW55KSA9PiBPYnNlcnZhYmxlPGFueT4gPSAoLi4uYXJnczogYW55KSA9PiBPYnNlcnZhYmxlPGFueT4+KFxuICAgIGFjdGlvbjogQSxcbiAgICBjb250ZXh0OiBCZWhhdmlvckNvbnRleHQ8RXh0cmFjdE9ic2VydmFibGVWYWx1ZTxSZXR1cm5UeXBlPEE+Pj4gPSB7fVxuKSB7XG4gICAgY29uc3QgYmVoYXZpb3IgPSBuZXcgQWN0aW9uQmVoYXZpb3JJbXBsKGFjdGlvbiwgY29udGV4dCk7XG5cbiAgICBjb25zdCBmbiA9IGZ1bmN0aW9uICguLi5wYXJhbXM6IFBhcmFtZXRlcnM8QT4pIHtcbiAgICAgICAgZm5bJ2V4ZWN1dGVQYXJhbXMnXSA9IHBhcmFtcztcbiAgICAgICAgcmV0dXJuIGZuO1xuICAgIH07XG4gICAgcmV0dXJuIGNyZWF0ZUJlaGF2aW9yRnJvbUZ1bmN0aW9uKGZuLCB7XG4gICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQ6IGJlaGF2aW9yLnRha2VVbnRpbERlc3Ryb3llZCxcbiAgICAgICAgZXhlY3V0ZTogYmVoYXZpb3IuZXhlY3V0ZS5iaW5kKGZuKSxcbiAgICAgICAgc2F2aW5nOiBiZWhhdmlvci5zYXZpbmdcbiAgICB9KSBhcyB1bmtub3duIGFzIEJlaGF2aW9yPFBhcmFtZXRlcnM8QT4sIEFjdGlvbkJlaGF2aW9yPEV4dHJhY3RPYnNlcnZhYmxlVmFsdWU8UmV0dXJuVHlwZTxBPj4+PiAmXG4gICAgICAgIEFjdGlvbkJlaGF2aW9yPEV4dHJhY3RPYnNlcnZhYmxlVmFsdWU8UmV0dXJuVHlwZTxBPj4+O1xufVxuIl19
|
|
@@ -1,46 +1,50 @@
|
|
|
1
1
|
import { finalize, tap } from 'rxjs/operators';
|
|
2
2
|
import { createBehaviorFromFunction, handleBehaviorError, pickBehaviorCallbacks } from './behavior';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { computed, signal } from '@angular/core';
|
|
3
5
|
class AsyncBehaviorImpl {
|
|
4
6
|
constructor(action, context) {
|
|
5
7
|
this.action = action;
|
|
6
8
|
this.context = context;
|
|
7
|
-
this.
|
|
8
|
-
this.
|
|
9
|
-
this.
|
|
9
|
+
this.loading = signal(false);
|
|
10
|
+
this.loadingDone = computed(() => !this.loading());
|
|
11
|
+
this.value = signal(null);
|
|
12
|
+
this.state = signal('pending');
|
|
13
|
+
this.error = signal(null);
|
|
14
|
+
this.takeUntilDestroyed = takeUntilDestroyed();
|
|
10
15
|
}
|
|
11
16
|
execute(successOrContext, error) {
|
|
12
17
|
this.setLoadingState(true);
|
|
13
|
-
this.state
|
|
18
|
+
this.state.set('loading');
|
|
14
19
|
const callbacks = pickBehaviorCallbacks(this.context, successOrContext, error);
|
|
15
20
|
try {
|
|
16
21
|
return this.action
|
|
17
22
|
.apply(undefined, this.executeParams)
|
|
18
|
-
.pipe(finalize(() => {
|
|
23
|
+
.pipe(this.takeUntilDestroyed, finalize(() => {
|
|
19
24
|
this.setLoadingState(false);
|
|
20
25
|
}), tap(value => {
|
|
21
|
-
this.value
|
|
22
|
-
this.state
|
|
26
|
+
this.value.set(value);
|
|
27
|
+
this.state.set('success');
|
|
23
28
|
this.setLoadingState(false);
|
|
24
29
|
}))
|
|
25
30
|
.subscribe({
|
|
26
31
|
next: callbacks.success,
|
|
27
32
|
error: error => {
|
|
28
|
-
this.state
|
|
29
|
-
this.error
|
|
33
|
+
this.state.set('error');
|
|
34
|
+
this.error.set(error);
|
|
30
35
|
handleBehaviorError(error, callbacks.error);
|
|
31
36
|
}
|
|
32
37
|
});
|
|
33
38
|
}
|
|
34
39
|
catch (error) {
|
|
35
|
-
this.state
|
|
36
|
-
this.error
|
|
40
|
+
this.state.set('error');
|
|
41
|
+
this.error.set(error);
|
|
37
42
|
this.setLoadingState(false);
|
|
38
43
|
handleBehaviorError(error, callbacks.error);
|
|
39
44
|
}
|
|
40
45
|
}
|
|
41
46
|
setLoadingState(loading) {
|
|
42
|
-
this.loading
|
|
43
|
-
this.loadingDone = !loading;
|
|
47
|
+
this.loading.set(loading);
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
export function useAsync(action, context = {}) {
|
|
@@ -52,8 +56,9 @@ export function useAsync(action, context = {}) {
|
|
|
52
56
|
return createBehaviorFromFunction(fn, {
|
|
53
57
|
context: context,
|
|
54
58
|
action: action,
|
|
55
|
-
|
|
56
|
-
|
|
59
|
+
takeUntilDestroyed: behavior.takeUntilDestroyed,
|
|
60
|
+
execute: behavior.execute.bind(fn),
|
|
61
|
+
setLoadingState: behavior.setLoadingState.bind(fn),
|
|
57
62
|
loadingDone: behavior.loadingDone,
|
|
58
63
|
loading: behavior.loading,
|
|
59
64
|
state: behavior.state,
|
|
@@ -61,4 +66,4 @@ export function useAsync(action, context = {}) {
|
|
|
61
66
|
value: behavior.value
|
|
62
67
|
});
|
|
63
68
|
}
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtYmVoYXZpb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jZGsvYmVoYXZpb3JzL2FzeW5jLWJlaGF2aW9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUE2QiwwQkFBMEIsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUcvSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQTBCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFhekUsTUFBTSxpQkFBaUI7SUFlbkIsWUFBb0IsTUFBUyxFQUFVLE9BQTJCO1FBQTlDLFdBQU0sR0FBTixNQUFNLENBQUc7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQWRsRSxZQUFPLEdBQTRCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRCxnQkFBVyxHQUFvQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUUvRCxVQUFLLEdBQXNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4QyxVQUFLLEdBQWdFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2RixVQUFLLEdBQTJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUk3Qyx1QkFBa0IsR0FBRyxrQkFBa0IsRUFBRSxDQUFDO0lBRTJCLENBQUM7SUFJdEUsT0FBTyxDQUFDLGdCQUFtRCxFQUFFLEtBQWU7UUFDeEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQixNQUFNLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9FLElBQUk7WUFDQSxPQUFPLElBQUksQ0FBQyxNQUFNO2lCQUNiLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztpQkFDcEMsSUFBSSxDQUNELElBQUksQ0FBQyxrQkFBa0IsRUFDdkIsUUFBUSxDQUFDLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDUixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFVLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQ0w7aUJBQ0EsU0FBUyxDQUFDO2dCQUNQLElBQUksRUFBRSxTQUFTLENBQUMsT0FBTztnQkFDdkIsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdEIsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEQsQ0FBQzthQUNKLENBQUMsQ0FBQztTQUNWO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLG1CQUFtQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0M7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQWdCO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDSjtBQUVELE1BQU0sVUFBVSxRQUFRLENBQ3BCLE1BQVMsRUFDVCxVQUFrRSxFQUFFO0lBRXBFLE1BQU0sUUFBUSxHQUFHLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXhELE1BQU0sRUFBRSxHQUFHLFVBQVUsR0FBRyxNQUFxQjtRQUN6QyxFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBQ0YsT0FBTywwQkFBMEIsQ0FBQyxFQUFFLEVBQUU7UUFDbEMsT0FBTyxFQUFFLE9BQU87UUFDaEIsTUFBTSxFQUFFLE1BQU07UUFDZCxrQkFBa0IsRUFBRSxRQUFRLENBQUMsa0JBQWtCO1FBQy9DLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsRCxXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7UUFDakMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO1FBQ3pCLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztRQUNyQixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7UUFDckIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO0tBQ3hCLENBQ3VELENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCZWhhdmlvciwgQmVoYXZpb3JDb250ZXh0LCBjcmVhdGVCZWhhdmlvckZyb21GdW5jdGlvbiwgaGFuZGxlQmVoYXZpb3JFcnJvciwgcGlja0JlaGF2aW9yQ2FsbGJhY2tzIH0gZnJvbSAnLi9iZWhhdmlvcic7XG5cbmltcG9ydCB7IEVycm9yRm4sIEV4dHJhY3RPYnNlcnZhYmxlVmFsdWUsIFN1Y2Nlc3NGbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgU2lnbmFsLCBXcml0YWJsZVNpZ25hbCwgY29tcHV0ZWQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzeW5jQmVoYXZpb3I8Uj4ge1xuICAgIGxvYWRpbmdEb25lOiBTaWduYWw8Ym9vbGVhbj47XG4gICAgbG9hZGluZzogU2lnbmFsPGJvb2xlYW4+O1xuICAgIHN0YXRlOiBTaWduYWw8J3BlbmRpbmcnIHwgJ2xvYWRpbmcnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJz47XG4gICAgZXJyb3I/OiBTaWduYWw8RXJyb3I+O1xuICAgIHZhbHVlPzogU2lnbmFsPFI+O1xuICAgIGV4ZWN1dGUoc3VjY2Vzcz86IFN1Y2Nlc3NGbjxSPiwgZXJyb3I/OiBFcnJvckZuKTogdm9pZDtcbiAgICBleGVjdXRlKGNvbnRleHQ6IEJlaGF2aW9yQ29udGV4dDxSPik6IHZvaWQ7XG4gICAgZXhlY3V0ZShzdWNjZXNzT3JDb250ZXh0OiBTdWNjZXNzRm48Uj4gfCBCZWhhdmlvckNvbnRleHQ8Uj4sIGVycm9yPzogRXJyb3JGbik6IHZvaWQ7XG59XG5cbmNsYXNzIEFzeW5jQmVoYXZpb3JJbXBsPFQsIEEgZXh0ZW5kcyAoLi4uYXJnczogYW55KSA9PiBPYnNlcnZhYmxlPFQ+PiBpbXBsZW1lbnRzIEFzeW5jQmVoYXZpb3I8VD4ge1xuICAgIGxvYWRpbmc6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIGxvYWRpbmdEb25lOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiAhdGhpcy5sb2FkaW5nKCkpO1xuXG4gICAgdmFsdWU6IFdyaXRhYmxlU2lnbmFsPFQ+ID0gc2lnbmFsKG51bGwpO1xuXG4gICAgc3RhdGU6IFdyaXRhYmxlU2lnbmFsPCdwZW5kaW5nJyB8ICdsb2FkaW5nJyB8ICdzdWNjZXNzJyB8ICdlcnJvcic+ID0gc2lnbmFsKCdwZW5kaW5nJyk7XG5cbiAgICBlcnJvcj86IFdyaXRhYmxlU2lnbmFsPEVycm9yPiA9IHNpZ25hbChudWxsKTtcblxuICAgIGV4ZWN1dGVQYXJhbXM6IFBhcmFtZXRlcnM8QT47XG5cbiAgICB0YWtlVW50aWxEZXN0cm95ZWQgPSB0YWtlVW50aWxEZXN0cm95ZWQoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBBLCBwcml2YXRlIGNvbnRleHQ6IEJlaGF2aW9yQ29udGV4dDxUPikge31cblxuICAgIGV4ZWN1dGUoc3VjY2Vzcz86IFN1Y2Nlc3NGbjxUPiwgZXJyb3I/OiBFcnJvckZuKTogdm9pZDtcbiAgICBleGVjdXRlKGNvbnRleHQ6IEJlaGF2aW9yQ29udGV4dDxUPik6IHZvaWQ7XG4gICAgZXhlY3V0ZShzdWNjZXNzT3JDb250ZXh0OiBTdWNjZXNzRm48VD4gfCBCZWhhdmlvckNvbnRleHQ8VD4sIGVycm9yPzogRXJyb3JGbik6IHZvaWQge1xuICAgICAgICB0aGlzLnNldExvYWRpbmdTdGF0ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5zdGF0ZS5zZXQoJ2xvYWRpbmcnKTtcbiAgICAgICAgY29uc3QgY2FsbGJhY2tzID0gcGlja0JlaGF2aW9yQ2FsbGJhY2tzKHRoaXMuY29udGV4dCwgc3VjY2Vzc09yQ29udGV4dCwgZXJyb3IpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9uXG4gICAgICAgICAgICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgdGhpcy5leGVjdXRlUGFyYW1zKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRha2VVbnRpbERlc3Ryb3llZCxcbiAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nU3RhdGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgdGFwKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlIGFzIFQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zZXQoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZ1N0YXRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IGNhbGxiYWNrcy5zdWNjZXNzLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zZXQoJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yLnNldChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVCZWhhdmlvckVycm9yKGVycm9yLCBjYWxsYmFja3MuZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnNldCgnZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3Iuc2V0KGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZ1N0YXRlKGZhbHNlKTtcbiAgICAgICAgICAgIGhhbmRsZUJlaGF2aW9yRXJyb3IoZXJyb3IsIGNhbGxiYWNrcy5lcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRMb2FkaW5nU3RhdGUobG9hZGluZzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGxvYWRpbmcpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFzeW5jPEEgZXh0ZW5kcyAoLi4uYXJnczogYW55KSA9PiBPYnNlcnZhYmxlPGFueT4gPSAoLi4uYXJnczogYW55KSA9PiBPYnNlcnZhYmxlPGFueT4+KFxuICAgIGFjdGlvbjogQSxcbiAgICBjb250ZXh0OiBCZWhhdmlvckNvbnRleHQ8RXh0cmFjdE9ic2VydmFibGVWYWx1ZTxSZXR1cm5UeXBlPEE+Pj4gPSB7fVxuKSB7XG4gICAgY29uc3QgYmVoYXZpb3IgPSBuZXcgQXN5bmNCZWhhdmlvckltcGwoYWN0aW9uLCBjb250ZXh0KTtcblxuICAgIGNvbnN0IGZuID0gZnVuY3Rpb24gKC4uLnBhcmFtczogUGFyYW1ldGVyczxBPikge1xuICAgICAgICBmblsnZXhlY3V0ZVBhcmFtcyddID0gcGFyYW1zO1xuICAgICAgICByZXR1cm4gZm47XG4gICAgfTtcbiAgICByZXR1cm4gY3JlYXRlQmVoYXZpb3JGcm9tRnVuY3Rpb24oZm4sIHtcbiAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZDogYmVoYXZpb3IudGFrZVVudGlsRGVzdHJveWVkLFxuICAgICAgICBleGVjdXRlOiBiZWhhdmlvci5leGVjdXRlLmJpbmQoZm4pLFxuICAgICAgICBzZXRMb2FkaW5nU3RhdGU6IGJlaGF2aW9yLnNldExvYWRpbmdTdGF0ZS5iaW5kKGZuKSxcbiAgICAgICAgbG9hZGluZ0RvbmU6IGJlaGF2aW9yLmxvYWRpbmdEb25lLFxuICAgICAgICBsb2FkaW5nOiBiZWhhdmlvci5sb2FkaW5nLFxuICAgICAgICBzdGF0ZTogYmVoYXZpb3Iuc3RhdGUsXG4gICAgICAgIGVycm9yOiBiZWhhdmlvci5lcnJvcixcbiAgICAgICAgdmFsdWU6IGJlaGF2aW9yLnZhbHVlXG4gICAgfSkgYXMgdW5rbm93biBhcyBCZWhhdmlvcjxQYXJhbWV0ZXJzPEE+LCBBc3luY0JlaGF2aW9yPEV4dHJhY3RPYnNlcnZhYmxlVmFsdWU8UmV0dXJuVHlwZTxBPj4+PiAmXG4gICAgICAgIEFzeW5jQmVoYXZpb3I8RXh0cmFjdE9ic2VydmFibGVWYWx1ZTxSZXR1cm5UeXBlPEE+Pj47XG59XG4iXX0=
|
|
@@ -5,7 +5,7 @@ export function createBehaviorFromFunction(fn, extraApi = {}) {
|
|
|
5
5
|
fn[BEHAVIOR] = true;
|
|
6
6
|
Object.keys(extraApi).forEach(key => {
|
|
7
7
|
const value = extraApi[key];
|
|
8
|
-
Object.assign(fn, { [key]:
|
|
8
|
+
Object.assign(fn, { [key]: value });
|
|
9
9
|
});
|
|
10
10
|
return fn;
|
|
11
11
|
}
|
|
@@ -39,4 +39,4 @@ export function handleBehaviorError(error, errorFn) {
|
|
|
39
39
|
defaultErrorHandler && defaultErrorHandler(error);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoYXZpb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jZGsvYmVoYXZpb3JzL2JlaGF2aW9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd6RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFnQnBDLE1BQU0sVUFBVSwwQkFBMEIsQ0FDdEMsRUFBVyxFQUNYLFdBQWMsRUFBTztJQUVwQixFQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sRUFBd0IsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUNqQyxhQUFpQyxFQUNqQyxnQkFBbUQsRUFDbkQsS0FBZTtJQUVmLElBQUksU0FBdUIsQ0FBQztJQUM1QixJQUFJLE9BQWdCLENBQUM7SUFDckIsSUFBSSxnQkFBZ0IsRUFBRTtRQUNsQixJQUFJLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQzlCLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztZQUM3QixPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ25CO2FBQU07WUFDSCxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQ3JDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7U0FDcEM7S0FDSjtTQUFNO1FBQ0gsT0FBTyxHQUFHLEtBQUssQ0FBQztLQUNuQjtJQUNELE9BQU87UUFDSCxPQUFPLEVBQUUsU0FBUyxJQUFJLGFBQWEsRUFBRSxPQUFPO1FBQzVDLEtBQUssRUFBRSxPQUFPLElBQUksYUFBYSxFQUFFLEtBQUs7S0FDekMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsS0FBWSxFQUFFLE9BQWdCO0lBQzlELElBQUksT0FBTyxFQUFFO1FBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2xCO1NBQU07UUFDSCxNQUFNLG1CQUFtQixHQUFHLHNCQUFzQixFQUFFLENBQUM7UUFDckQsbUJBQW1CLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDckQ7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJ0B0ZXRoeXMvY2RrL2lzJztcbmltcG9ydCB7IGdldERlZmF1bHRFcnJvckhhbmRsZXIgfSBmcm9tICcuL2Vycm9yLWhhbmRsZXInO1xuaW1wb3J0IHsgRXJyb3JGbiwgU3VjY2Vzc0ZuIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEJFSEFWSU9SID0gU3ltYm9sKCdCRUhBVklPUicpO1xuXG5leHBvcnQgdHlwZSBCZWhhdmlvcjxQIGV4dGVuZHMgQXJyYXk8YW55PiwgUj4gPSAoLi4uYXJnczogUCkgPT4gUiAmIHtcbiAgICBbQkVIQVZJT1JdOiB0cnVlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBCZWhhdmlvckNvbnRleHQ8Uj4ge1xuICAgIHN1Y2Nlc3M/OiBTdWNjZXNzRm48Uj47XG4gICAgZXJyb3I/OiBFcnJvckZuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmVoYXZpb3JGcm9tRnVuY3Rpb248UCBleHRlbmRzIGFueVtdLCBSPihmbjogKCkgPT4gUik6IEJlaGF2aW9yPFAsIFI+O1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJlaGF2aW9yRnJvbUZ1bmN0aW9uPFAgZXh0ZW5kcyBhbnlbXSwgUiwgVSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgICBmbjogKCkgPT4gUixcbiAgICBleHRyYUFwaTogVVxuKTogQmVoYXZpb3I8UCwgUj4gJiBVO1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJlaGF2aW9yRnJvbUZ1bmN0aW9uPFAgZXh0ZW5kcyBhbnlbXSwgUiwgVSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30+KFxuICAgIGZuOiAoKSA9PiBSLFxuICAgIGV4dHJhQXBpOiBVID0ge30gYXMgVVxuKTogQmVoYXZpb3I8UCwgUj4gJiBVIHtcbiAgICAoZm4gYXMgYW55KVtCRUhBVklPUl0gPSB0cnVlO1xuICAgIE9iamVjdC5rZXlzKGV4dHJhQXBpKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZXh0cmFBcGlba2V5XTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihmbiwgeyBba2V5XTogdmFsdWUgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZuIGFzIEJlaGF2aW9yPFAsIFI+ICYgVTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2tCZWhhdmlvckNhbGxiYWNrczxSPihcbiAgICBiZWZvcmVDb250ZXh0OiBCZWhhdmlvckNvbnRleHQ8Uj4sXG4gICAgc3VjY2Vzc09yQ29udGV4dDogU3VjY2Vzc0ZuPFI+IHwgQmVoYXZpb3JDb250ZXh0PFI+LFxuICAgIGVycm9yPzogRXJyb3JGblxuKSB7XG4gICAgbGV0IHN1Y2Nlc3NGbjogU3VjY2Vzc0ZuPFI+O1xuICAgIGxldCBlcnJvckZuOiBFcnJvckZuO1xuICAgIGlmIChzdWNjZXNzT3JDb250ZXh0KSB7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHN1Y2Nlc3NPckNvbnRleHQpKSB7XG4gICAgICAgICAgICBzdWNjZXNzRm4gPSBzdWNjZXNzT3JDb250ZXh0O1xuICAgICAgICAgICAgZXJyb3JGbiA9IGVycm9yO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VjY2Vzc0ZuID0gc3VjY2Vzc09yQ29udGV4dC5zdWNjZXNzO1xuICAgICAgICAgICAgZXJyb3JGbiA9IHN1Y2Nlc3NPckNvbnRleHQuZXJyb3I7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvckZuID0gZXJyb3I7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IHN1Y2Nlc3NGbiB8fCBiZWZvcmVDb250ZXh0Py5zdWNjZXNzLFxuICAgICAgICBlcnJvcjogZXJyb3JGbiB8fCBiZWZvcmVDb250ZXh0Py5lcnJvclxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVCZWhhdmlvckVycm9yKGVycm9yOiBFcnJvciwgZXJyb3JGbjogRXJyb3JGbikge1xuICAgIGlmIChlcnJvckZuKSB7XG4gICAgICAgIGVycm9yRm4oZXJyb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRFcnJvckhhbmRsZXIgPSBnZXREZWZhdWx0RXJyb3JIYW5kbGVyKCk7XG4gICAgICAgIGRlZmF1bHRFcnJvckhhbmRsZXIgJiYgZGVmYXVsdEVycm9ySGFuZGxlcihlcnJvcik7XG4gICAgfVxufVxuIl19
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { finalize, tap } from 'rxjs/operators';
|
|
3
3
|
import { isFunction } from '@tethys/cdk/is';
|
|
4
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { signal, computed } from '@angular/core';
|
|
4
6
|
|
|
5
7
|
function runInZone(zone) {
|
|
6
8
|
return source => {
|
|
@@ -30,7 +32,7 @@ function createBehaviorFromFunction(fn, extraApi = {}) {
|
|
|
30
32
|
fn[BEHAVIOR] = true;
|
|
31
33
|
Object.keys(extraApi).forEach(key => {
|
|
32
34
|
const value = extraApi[key];
|
|
33
|
-
Object.assign(fn, { [key]:
|
|
35
|
+
Object.assign(fn, { [key]: value });
|
|
34
36
|
});
|
|
35
37
|
return fn;
|
|
36
38
|
}
|
|
@@ -69,43 +71,45 @@ class AsyncBehaviorImpl {
|
|
|
69
71
|
constructor(action, context) {
|
|
70
72
|
this.action = action;
|
|
71
73
|
this.context = context;
|
|
72
|
-
this.
|
|
73
|
-
this.
|
|
74
|
-
this.
|
|
74
|
+
this.loading = signal(false);
|
|
75
|
+
this.loadingDone = computed(() => !this.loading());
|
|
76
|
+
this.value = signal(null);
|
|
77
|
+
this.state = signal('pending');
|
|
78
|
+
this.error = signal(null);
|
|
79
|
+
this.takeUntilDestroyed = takeUntilDestroyed();
|
|
75
80
|
}
|
|
76
81
|
execute(successOrContext, error) {
|
|
77
82
|
this.setLoadingState(true);
|
|
78
|
-
this.state
|
|
83
|
+
this.state.set('loading');
|
|
79
84
|
const callbacks = pickBehaviorCallbacks(this.context, successOrContext, error);
|
|
80
85
|
try {
|
|
81
86
|
return this.action
|
|
82
87
|
.apply(undefined, this.executeParams)
|
|
83
|
-
.pipe(finalize(() => {
|
|
88
|
+
.pipe(this.takeUntilDestroyed, finalize(() => {
|
|
84
89
|
this.setLoadingState(false);
|
|
85
90
|
}), tap(value => {
|
|
86
|
-
this.value
|
|
87
|
-
this.state
|
|
91
|
+
this.value.set(value);
|
|
92
|
+
this.state.set('success');
|
|
88
93
|
this.setLoadingState(false);
|
|
89
94
|
}))
|
|
90
95
|
.subscribe({
|
|
91
96
|
next: callbacks.success,
|
|
92
97
|
error: error => {
|
|
93
|
-
this.state
|
|
94
|
-
this.error
|
|
98
|
+
this.state.set('error');
|
|
99
|
+
this.error.set(error);
|
|
95
100
|
handleBehaviorError(error, callbacks.error);
|
|
96
101
|
}
|
|
97
102
|
});
|
|
98
103
|
}
|
|
99
104
|
catch (error) {
|
|
100
|
-
this.state
|
|
101
|
-
this.error
|
|
105
|
+
this.state.set('error');
|
|
106
|
+
this.error.set(error);
|
|
102
107
|
this.setLoadingState(false);
|
|
103
108
|
handleBehaviorError(error, callbacks.error);
|
|
104
109
|
}
|
|
105
110
|
}
|
|
106
111
|
setLoadingState(loading) {
|
|
107
|
-
this.loading
|
|
108
|
-
this.loadingDone = !loading;
|
|
112
|
+
this.loading.set(loading);
|
|
109
113
|
}
|
|
110
114
|
}
|
|
111
115
|
function useAsync(action, context = {}) {
|
|
@@ -117,8 +121,9 @@ function useAsync(action, context = {}) {
|
|
|
117
121
|
return createBehaviorFromFunction(fn, {
|
|
118
122
|
context: context,
|
|
119
123
|
action: action,
|
|
120
|
-
|
|
121
|
-
|
|
124
|
+
takeUntilDestroyed: behavior.takeUntilDestroyed,
|
|
125
|
+
execute: behavior.execute.bind(fn),
|
|
126
|
+
setLoadingState: behavior.setLoadingState.bind(fn),
|
|
122
127
|
loadingDone: behavior.loadingDone,
|
|
123
128
|
loading: behavior.loading,
|
|
124
129
|
state: behavior.state,
|
|
@@ -131,34 +136,35 @@ class ActionBehaviorImpl {
|
|
|
131
136
|
constructor(action, context) {
|
|
132
137
|
this.action = action;
|
|
133
138
|
this.context = context;
|
|
134
|
-
this.saving = false;
|
|
139
|
+
this.saving = signal(false);
|
|
140
|
+
this.takeUntilDestroyed = takeUntilDestroyed();
|
|
135
141
|
}
|
|
136
142
|
execute(successOrContext, error) {
|
|
137
|
-
if (this.saving) {
|
|
143
|
+
if (this.saving()) {
|
|
138
144
|
return;
|
|
139
145
|
}
|
|
140
|
-
this.saving
|
|
146
|
+
this.saving.set(true);
|
|
141
147
|
const callbacks = pickBehaviorCallbacks(this.context, successOrContext, error);
|
|
142
148
|
try {
|
|
143
149
|
return this.action
|
|
144
150
|
.apply(undefined, this.executeParams)
|
|
145
|
-
.pipe(finalize(() => {
|
|
146
|
-
this.saving
|
|
151
|
+
.pipe(this.takeUntilDestroyed, finalize(() => {
|
|
152
|
+
this.saving.set(false);
|
|
147
153
|
this.executeParams = undefined;
|
|
148
154
|
}), tap(value => {
|
|
149
|
-
this.saving
|
|
155
|
+
this.saving.set(false);
|
|
150
156
|
this.executeParams = undefined;
|
|
151
157
|
}))
|
|
152
158
|
.subscribe({
|
|
153
159
|
next: callbacks?.success,
|
|
154
160
|
error: (error) => {
|
|
155
|
-
this.saving
|
|
161
|
+
this.saving.set(false);
|
|
156
162
|
handleBehaviorError(error, callbacks.error);
|
|
157
163
|
}
|
|
158
164
|
});
|
|
159
165
|
}
|
|
160
166
|
catch (error) {
|
|
161
|
-
this.saving
|
|
167
|
+
this.saving.set(false);
|
|
162
168
|
handleBehaviorError(error, callbacks.error);
|
|
163
169
|
}
|
|
164
170
|
}
|
|
@@ -172,7 +178,8 @@ function useAction(action, context = {}) {
|
|
|
172
178
|
return createBehaviorFromFunction(fn, {
|
|
173
179
|
context: context,
|
|
174
180
|
action: action,
|
|
175
|
-
|
|
181
|
+
takeUntilDestroyed: behavior.takeUntilDestroyed,
|
|
182
|
+
execute: behavior.execute.bind(fn),
|
|
176
183
|
saving: behavior.saving
|
|
177
184
|
});
|
|
178
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tethys-cdk-behaviors.mjs","sources":["../../../cdk/behaviors/run-in-zone.ts","../../../cdk/behaviors/error-handler.ts","../../../cdk/behaviors/behavior.ts","../../../cdk/behaviors/async-behavior.ts","../../../cdk/behaviors/action-behavior.ts","../../../cdk/behaviors/tethys-cdk-behaviors.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\nimport { Observable, OperatorFunction } from 'rxjs';\n\nexport function runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: Error) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe({\n next: onNext,\n error: onError,\n complete: onComplete\n });\n });\n };\n}\n","export type DefaultErrorHandler = (error: Error) => void;\n\nlet _defaultErrorHandler: DefaultErrorHandler = (error: Error) => {};\n\nexport function setDefaultErrorHandler(defaultErrorHandler: DefaultErrorHandler) {\n _defaultErrorHandler = defaultErrorHandler;\n}\n\nexport function getDefaultErrorHandler() {\n return _defaultErrorHandler;\n}\n","import { isFunction } from '@tethys/cdk/is';\nimport { getDefaultErrorHandler } from './error-handler';\nimport { ErrorFn, SuccessFn } from './types';\n\nconst BEHAVIOR = Symbol('BEHAVIOR');\n\nexport type Behavior<P extends Array<any>, R> = (...args: P) => R & {\n [BEHAVIOR]: true;\n};\n\nexport interface BehaviorContext<R> {\n success?: SuccessFn<R>;\n error?: ErrorFn;\n}\n\nexport function createBehaviorFromFunction<P extends any[], R>(fn: () => R): Behavior<P, R>;\nexport function createBehaviorFromFunction<P extends any[], R, U extends Record<string, unknown>>(\n fn: () => R,\n extraApi: U\n): Behavior<P, R> & U;\nexport function createBehaviorFromFunction<P extends any[], R, U extends Record<string, unknown> = {}>(\n fn: () => R,\n extraApi: U = {} as U\n): Behavior<P, R> & U {\n (fn as any)[BEHAVIOR] = true;\n Object.keys(extraApi).forEach(key => {\n const value = extraApi[key];\n Object.assign(fn, { [key]: isFunction(value) ? value.bind(fn) : value });\n });\n return fn as Behavior<P, R> & U;\n}\n\nexport function pickBehaviorCallbacks<R>(\n beforeContext: BehaviorContext<R>,\n successOrContext: SuccessFn<R> | BehaviorContext<R>,\n error?: ErrorFn\n) {\n let successFn: SuccessFn<R>;\n let errorFn: ErrorFn;\n if (successOrContext) {\n if (isFunction(successOrContext)) {\n successFn = successOrContext;\n errorFn = error;\n } else {\n successFn = successOrContext.success;\n errorFn = successOrContext.error;\n }\n } else {\n errorFn = error;\n }\n return {\n success: successFn || beforeContext?.success,\n error: errorFn || beforeContext?.error\n };\n}\n\nexport function handleBehaviorError(error: Error, errorFn: ErrorFn) {\n if (errorFn) {\n errorFn(error);\n } else {\n const defaultErrorHandler = getDefaultErrorHandler();\n defaultErrorHandler && defaultErrorHandler(error);\n }\n}\n","import { Observable, of } from 'rxjs';\nimport { finalize, tap, catchError } from 'rxjs/operators';\nimport { Behavior, BehaviorContext, createBehaviorFromFunction, handleBehaviorError, pickBehaviorCallbacks } from './behavior';\nimport { getDefaultErrorHandler } from './error-handler';\nimport { ErrorFn, ExtractObservableValue, SuccessFn } from './types';\n\nexport interface AsyncBehavior<R> {\n loadingDone: boolean;\n loading: boolean;\n state: 'pending' | 'loading' | 'success' | 'error';\n error?: Error;\n value?: R;\n execute(success?: SuccessFn<R>, error?: ErrorFn): void;\n execute(context: BehaviorContext<R>): void;\n execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): void;\n}\n\nclass AsyncBehaviorImpl<T, A extends (...args: any) => Observable<T>> implements AsyncBehavior<T> {\n loadingDone = true;\n\n loading = false;\n\n value: T;\n\n state: 'pending' | 'loading' | 'success' | 'error' = 'pending';\n\n error?: Error;\n\n private executeParams: Parameters<A>;\n\n constructor(private action: A, private context: BehaviorContext<T>) {}\n\n execute(success?: SuccessFn<T>, error?: ErrorFn): void;\n execute(context: BehaviorContext<T>): void;\n execute(successOrContext: SuccessFn<T> | BehaviorContext<T>, error?: ErrorFn): void {\n this.setLoadingState(true);\n this.state = 'loading';\n const callbacks = pickBehaviorCallbacks(this.context, successOrContext, error);\n try {\n return this.action\n .apply(undefined, this.executeParams)\n .pipe(\n finalize(() => {\n this.setLoadingState(false);\n }),\n tap(value => {\n this.value = value as T;\n this.state = 'success';\n this.setLoadingState(false);\n })\n )\n .subscribe({\n next: callbacks.success,\n error: error => {\n this.state = 'error';\n this.error = error;\n handleBehaviorError(error, callbacks.error);\n }\n });\n } catch (error) {\n this.state = 'error';\n this.error = error;\n this.setLoadingState(false);\n handleBehaviorError(error, callbacks.error);\n }\n }\n\n setLoadingState(loading: boolean) {\n this.loading = loading;\n this.loadingDone = !loading;\n }\n}\n\nexport function useAsync<A extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(\n action: A,\n context: BehaviorContext<ExtractObservableValue<ReturnType<A>>> = {}\n) {\n const behavior = new AsyncBehaviorImpl(action, context);\n\n const fn = function (...params: Parameters<A>) {\n fn['executeParams'] = params;\n return fn;\n };\n return createBehaviorFromFunction(fn, {\n context: context,\n action: action,\n execute: behavior.execute,\n setLoadingState: behavior.setLoadingState,\n loadingDone: behavior.loadingDone,\n loading: behavior.loading,\n state: behavior.state,\n error: behavior.error,\n value: behavior.value\n }) as unknown as Behavior<Parameters<A>, AsyncBehavior<ExtractObservableValue<ReturnType<A>>>> &\n AsyncBehavior<ExtractObservableValue<ReturnType<A>>>;\n}\n","import { Observable, of, throwError } from 'rxjs';\nimport { catchError, finalize, tap } from 'rxjs/operators';\nimport { Behavior, BehaviorContext, createBehaviorFromFunction, handleBehaviorError, pickBehaviorCallbacks } from './behavior';\nimport { getDefaultErrorHandler } from './error-handler';\nimport { ErrorFn, ExtractObservableValue, SuccessFn } from './types';\n\ninterface ActionBehavior<R> {\n saving: boolean;\n\n execute(success?: SuccessFn<R>, error?: ErrorFn): void;\n execute(context: BehaviorContext<R>): void;\n execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): void;\n}\n\nclass ActionBehaviorImpl<R, A extends (...args: any) => Observable<R>> implements ActionBehavior<R> {\n saving = false;\n\n private executeParams: Parameters<A>;\n constructor(private action: A, private context: BehaviorContext<R>) {}\n\n execute(success?: SuccessFn<R>, error?: ErrorFn): void;\n execute(context: BehaviorContext<R>): void;\n execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): void {\n if (this.saving) {\n return;\n }\n this.saving = true;\n const callbacks = pickBehaviorCallbacks(this.context, successOrContext, error);\n try {\n return this.action\n .apply(undefined, this.executeParams)\n .pipe(\n finalize(() => {\n this.saving = false;\n this.executeParams = undefined;\n }),\n tap(value => {\n this.saving = false;\n this.executeParams = undefined;\n })\n )\n .subscribe({\n next: callbacks?.success,\n error: (error: Error) => {\n this.saving = false;\n handleBehaviorError(error, callbacks.error);\n }\n });\n } catch (error) {\n this.saving = false;\n handleBehaviorError(error, callbacks.error);\n }\n }\n}\n\nexport function useAction<A extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(\n action: A,\n context: BehaviorContext<ExtractObservableValue<ReturnType<A>>> = {}\n) {\n const behavior = new ActionBehaviorImpl(action, context);\n\n const fn = function (...params: Parameters<A>) {\n fn['executeParams'] = params;\n return fn;\n };\n return createBehaviorFromFunction(fn, {\n context: context,\n action: action,\n execute: behavior.execute,\n saving: behavior.saving\n }) as unknown as Behavior<Parameters<A>, ActionBehavior<ExtractObservableValue<ReturnType<A>>>> &\n ActionBehavior<ExtractObservableValue<ReturnType<A>>>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tethys-cdk-behaviors.mjs","sources":["../../../cdk/behaviors/run-in-zone.ts","../../../cdk/behaviors/error-handler.ts","../../../cdk/behaviors/behavior.ts","../../../cdk/behaviors/async-behavior.ts","../../../cdk/behaviors/action-behavior.ts","../../../cdk/behaviors/tethys-cdk-behaviors.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\nimport { Observable, OperatorFunction } from 'rxjs';\n\nexport function runInZone<T>(zone: NgZone): OperatorFunction<T, T> {\n return source => {\n return new Observable(observer => {\n const onNext = (value: T) => zone.run(() => observer.next(value));\n const onError = (e: Error) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe({\n next: onNext,\n error: onError,\n complete: onComplete\n });\n });\n };\n}\n","export type DefaultErrorHandler = (error: Error) => void;\n\nlet _defaultErrorHandler: DefaultErrorHandler = (error: Error) => {};\n\nexport function setDefaultErrorHandler(defaultErrorHandler: DefaultErrorHandler) {\n _defaultErrorHandler = defaultErrorHandler;\n}\n\nexport function getDefaultErrorHandler() {\n return _defaultErrorHandler;\n}\n","import { isFunction } from '@tethys/cdk/is';\nimport { getDefaultErrorHandler } from './error-handler';\nimport { ErrorFn, SuccessFn } from './types';\n\nconst BEHAVIOR = Symbol('BEHAVIOR');\n\nexport type Behavior<P extends Array<any>, R> = (...args: P) => R & {\n [BEHAVIOR]: true;\n};\n\nexport interface BehaviorContext<R> {\n success?: SuccessFn<R>;\n error?: ErrorFn;\n}\n\nexport function createBehaviorFromFunction<P extends any[], R>(fn: () => R): Behavior<P, R>;\nexport function createBehaviorFromFunction<P extends any[], R, U extends Record<string, unknown>>(\n fn: () => R,\n extraApi: U\n): Behavior<P, R> & U;\nexport function createBehaviorFromFunction<P extends any[], R, U extends Record<string, unknown> = {}>(\n fn: () => R,\n extraApi: U = {} as U\n): Behavior<P, R> & U {\n (fn as any)[BEHAVIOR] = true;\n Object.keys(extraApi).forEach(key => {\n const value = extraApi[key];\n Object.assign(fn, { [key]: value });\n });\n return fn as Behavior<P, R> & U;\n}\n\nexport function pickBehaviorCallbacks<R>(\n beforeContext: BehaviorContext<R>,\n successOrContext: SuccessFn<R> | BehaviorContext<R>,\n error?: ErrorFn\n) {\n let successFn: SuccessFn<R>;\n let errorFn: ErrorFn;\n if (successOrContext) {\n if (isFunction(successOrContext)) {\n successFn = successOrContext;\n errorFn = error;\n } else {\n successFn = successOrContext.success;\n errorFn = successOrContext.error;\n }\n } else {\n errorFn = error;\n }\n return {\n success: successFn || beforeContext?.success,\n error: errorFn || beforeContext?.error\n };\n}\n\nexport function handleBehaviorError(error: Error, errorFn: ErrorFn) {\n if (errorFn) {\n errorFn(error);\n } else {\n const defaultErrorHandler = getDefaultErrorHandler();\n defaultErrorHandler && defaultErrorHandler(error);\n }\n}\n","import { Observable } from 'rxjs';\nimport { finalize, tap } from 'rxjs/operators';\nimport { Behavior, BehaviorContext, createBehaviorFromFunction, handleBehaviorError, pickBehaviorCallbacks } from './behavior';\n\nimport { ErrorFn, ExtractObservableValue, SuccessFn } from './types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Signal, WritableSignal, computed, signal } from '@angular/core';\n\nexport interface AsyncBehavior<R> {\n loadingDone: Signal<boolean>;\n loading: Signal<boolean>;\n state: Signal<'pending' | 'loading' | 'success' | 'error'>;\n error?: Signal<Error>;\n value?: Signal<R>;\n execute(success?: SuccessFn<R>, error?: ErrorFn): void;\n execute(context: BehaviorContext<R>): void;\n execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): void;\n}\n\nclass AsyncBehaviorImpl<T, A extends (...args: any) => Observable<T>> implements AsyncBehavior<T> {\n loading: WritableSignal<boolean> = signal(false);\n\n loadingDone: Signal<boolean> = computed(() => !this.loading());\n\n value: WritableSignal<T> = signal(null);\n\n state: WritableSignal<'pending' | 'loading' | 'success' | 'error'> = signal('pending');\n\n error?: WritableSignal<Error> = signal(null);\n\n executeParams: Parameters<A>;\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n constructor(private action: A, private context: BehaviorContext<T>) {}\n\n execute(success?: SuccessFn<T>, error?: ErrorFn): void;\n execute(context: BehaviorContext<T>): void;\n execute(successOrContext: SuccessFn<T> | BehaviorContext<T>, error?: ErrorFn): void {\n this.setLoadingState(true);\n this.state.set('loading');\n const callbacks = pickBehaviorCallbacks(this.context, successOrContext, error);\n try {\n return this.action\n .apply(undefined, this.executeParams)\n .pipe(\n this.takeUntilDestroyed,\n finalize(() => {\n this.setLoadingState(false);\n }),\n tap(value => {\n this.value.set(value as T);\n this.state.set('success');\n this.setLoadingState(false);\n })\n )\n .subscribe({\n next: callbacks.success,\n error: error => {\n this.state.set('error');\n this.error.set(error);\n handleBehaviorError(error, callbacks.error);\n }\n });\n } catch (error) {\n this.state.set('error');\n this.error.set(error);\n this.setLoadingState(false);\n handleBehaviorError(error, callbacks.error);\n }\n }\n\n setLoadingState(loading: boolean) {\n this.loading.set(loading);\n }\n}\n\nexport function useAsync<A extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(\n action: A,\n context: BehaviorContext<ExtractObservableValue<ReturnType<A>>> = {}\n) {\n const behavior = new AsyncBehaviorImpl(action, context);\n\n const fn = function (...params: Parameters<A>) {\n fn['executeParams'] = params;\n return fn;\n };\n return createBehaviorFromFunction(fn, {\n context: context,\n action: action,\n takeUntilDestroyed: behavior.takeUntilDestroyed,\n execute: behavior.execute.bind(fn),\n setLoadingState: behavior.setLoadingState.bind(fn),\n loadingDone: behavior.loadingDone,\n loading: behavior.loading,\n state: behavior.state,\n error: behavior.error,\n value: behavior.value\n }) as unknown as Behavior<Parameters<A>, AsyncBehavior<ExtractObservableValue<ReturnType<A>>>> &\n AsyncBehavior<ExtractObservableValue<ReturnType<A>>>;\n}\n","import { Signal, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable } from 'rxjs';\nimport { finalize, tap } from 'rxjs/operators';\nimport { Behavior, BehaviorContext, createBehaviorFromFunction, handleBehaviorError, pickBehaviorCallbacks } from './behavior';\nimport { ErrorFn, ExtractObservableValue, SuccessFn } from './types';\n\ninterface ActionBehavior<R> {\n saving: Signal<boolean>;\n\n execute(success?: SuccessFn<R>, error?: ErrorFn): void;\n execute(context: BehaviorContext<R>): void;\n execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): void;\n}\n\nclass ActionBehaviorImpl<R, A extends (...args: any) => Observable<R>> implements ActionBehavior<R> {\n saving = signal(false);\n\n executeParams: Parameters<A>;\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n constructor(private action: A, private context: BehaviorContext<R>) {}\n\n execute(success?: SuccessFn<R>, error?: ErrorFn): void;\n execute(context: BehaviorContext<R>): void;\n execute(successOrContext: SuccessFn<R> | BehaviorContext<R>, error?: ErrorFn): void {\n if (this.saving()) {\n return;\n }\n this.saving.set(true);\n const callbacks = pickBehaviorCallbacks(this.context, successOrContext, error);\n try {\n return this.action\n .apply(undefined, this.executeParams)\n .pipe(\n this.takeUntilDestroyed,\n finalize(() => {\n this.saving.set(false);\n this.executeParams = undefined;\n }),\n tap(value => {\n this.saving.set(false);\n this.executeParams = undefined;\n })\n )\n .subscribe({\n next: callbacks?.success,\n error: (error: Error) => {\n this.saving.set(false);\n handleBehaviorError(error, callbacks.error);\n }\n });\n } catch (error) {\n this.saving.set(false);\n handleBehaviorError(error, callbacks.error);\n }\n }\n}\n\nexport function useAction<A extends (...args: any) => Observable<any> = (...args: any) => Observable<any>>(\n action: A,\n context: BehaviorContext<ExtractObservableValue<ReturnType<A>>> = {}\n) {\n const behavior = new ActionBehaviorImpl(action, context);\n\n const fn = function (...params: Parameters<A>) {\n fn['executeParams'] = params;\n return fn;\n };\n return createBehaviorFromFunction(fn, {\n context: context,\n action: action,\n takeUntilDestroyed: behavior.takeUntilDestroyed,\n execute: behavior.execute.bind(fn),\n saving: behavior.saving\n }) as unknown as Behavior<Parameters<A>, ActionBehavior<ExtractObservableValue<ReturnType<A>>>> &\n ActionBehavior<ExtractObservableValue<ReturnType<A>>>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|