ngx-form-signal 1.18.1 → 1.18.3
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/esm2022/lib/deep-form-signal.mjs +27 -0
- package/esm2022/lib/form-signal.mjs +3 -4
- package/esm2022/lib/types/deep-form-signal-type.mjs +2 -0
- package/esm2022/lib/types/form-signal-options.mjs +2 -3
- package/esm2022/lib/types/form-signal-type.mjs +1 -1
- package/esm2022/lib/types/form-type.mjs +1 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ngx-form-signal.mjs +28 -7
- package/fesm2022/ngx-form-signal.mjs.map +1 -1
- package/lib/deep-form-signal.d.ts +5 -0
- package/lib/form-signal.d.ts +1 -1
- package/lib/types/deep-form-signal-type.d.ts +17 -0
- package/lib/types/form-signal-options.d.ts +4 -1
- package/lib/types/form-signal-type.d.ts +2 -1
- package/lib/types/form-type.d.ts +2 -4
- package/package.json +4 -4
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { isSignal } from '@angular/core';
|
|
2
|
+
import { FormArray, FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import { formSignal } from './form-signal';
|
|
4
|
+
import { buildDefaultFormSignalOptions, } from './types/form-signal-options';
|
|
5
|
+
export function deepFormSignal(form, options = buildDefaultFormSignalOptions()) {
|
|
6
|
+
const root = formSignal(form, options);
|
|
7
|
+
const formVal = isSignal(form) ? form() : form;
|
|
8
|
+
if (formVal && !(formVal instanceof FormControl)) {
|
|
9
|
+
let children = null;
|
|
10
|
+
if (formVal instanceof FormArray) {
|
|
11
|
+
// @ts-ignore
|
|
12
|
+
children = formVal.controls.map((c) => deepFormSignal(c, options));
|
|
13
|
+
}
|
|
14
|
+
else if (formVal instanceof FormGroup) {
|
|
15
|
+
const controls = formVal.controls;
|
|
16
|
+
const keys = Object.keys(controls);
|
|
17
|
+
children = keys.reduce((acc, cKey) => {
|
|
18
|
+
// @ts-ignore
|
|
19
|
+
acc[cKey] = deepFormSignal(controls[cKey], options);
|
|
20
|
+
return acc;
|
|
21
|
+
}, {});
|
|
22
|
+
}
|
|
23
|
+
root.children = children;
|
|
24
|
+
}
|
|
25
|
+
return root;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcC1mb3JtLXNpZ25hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtLXNpZ25hbC9zcmMvbGliL2RlZXAtZm9ybS1zaWduYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFDSiw2QkFBNkIsR0FFL0IsTUFBTSw2QkFBNkIsQ0FBQztBQUdyQyxNQUFNLFVBQVUsY0FBYyxDQUMzQixJQUErRCxFQUMvRCxVQUFvQyw2QkFBNkIsRUFBSztJQUV0RSxNQUFNLElBQUksR0FBc0IsVUFBVSxDQUN2QyxJQUFJLEVBQ0osT0FBTyxDQUNZLENBQUM7SUFFdkIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQy9DLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLFlBQVksV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxJQUFJLFFBQVEsR0FBeUMsSUFBSSxDQUFDO1FBRTFELElBQUksT0FBTyxZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLGFBQWE7WUFDYixRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN0RSxDQUFDO2FBQU0sSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFLENBQUM7WUFDdkMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUNsQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUNuQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDWCxhQUFhO2dCQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNwRCxPQUFPLEdBQUcsQ0FBQztZQUNkLENBQUMsRUFDRCxFQUFtQyxDQUNyQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1NpZ25hbCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZm9ybVNpZ25hbCB9IGZyb20gJy4vZm9ybS1zaWduYWwnO1xyXG5pbXBvcnQgeyBEZWVwRm9ybVNpZ25hbCB9IGZyb20gJy4vdHlwZXMvZGVlcC1mb3JtLXNpZ25hbC10eXBlJztcclxuaW1wb3J0IHtcclxuICAgYnVpbGREZWZhdWx0Rm9ybVNpZ25hbE9wdGlvbnMsXHJcbiAgIERlZXBGb3JtU2lnbmFsT3B0aW9ucyxcclxufSBmcm9tICcuL3R5cGVzL2Zvcm0tc2lnbmFsLW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBPcHRpb25hbEZvcm1Gcm9tVHlwZSB9IGZyb20gJy4vdHlwZXMvZm9ybS10eXBlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWVwRm9ybVNpZ25hbDxUID0gYW55PihcclxuICAgZm9ybTogU2lnbmFsPE9wdGlvbmFsRm9ybUZyb21UeXBlPFQ+PiB8IE9wdGlvbmFsRm9ybUZyb21UeXBlPFQ+LFxyXG4gICBvcHRpb25zOiBEZWVwRm9ybVNpZ25hbE9wdGlvbnM8VD4gPSBidWlsZERlZmF1bHRGb3JtU2lnbmFsT3B0aW9uczxUPigpXHJcbik6IERlZXBGb3JtU2lnbmFsPFQ+IHtcclxuICAgY29uc3Qgcm9vdDogRGVlcEZvcm1TaWduYWw8VD4gPSBmb3JtU2lnbmFsPFQ+KFxyXG4gICAgICBmb3JtLFxyXG4gICAgICBvcHRpb25zXHJcbiAgICkgYXMgRGVlcEZvcm1TaWduYWw8VD47XHJcblxyXG4gICBjb25zdCBmb3JtVmFsID0gaXNTaWduYWwoZm9ybSkgPyBmb3JtKCkgOiBmb3JtO1xyXG4gICBpZiAoZm9ybVZhbCAmJiAhKGZvcm1WYWwgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkpIHtcclxuICAgICAgbGV0IGNoaWxkcmVuOiBEZWVwRm9ybVNpZ25hbDxUPlsnY2hpbGRyZW4nXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKGZvcm1WYWwgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICBjaGlsZHJlbiA9IGZvcm1WYWwuY29udHJvbHMubWFwKChjKSA9PiBkZWVwRm9ybVNpZ25hbChjLCBvcHRpb25zKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZm9ybVZhbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICAgICBjb25zdCBjb250cm9scyA9IGZvcm1WYWwuY29udHJvbHM7XHJcbiAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjb250cm9scyk7XHJcbiAgICAgICAgIGNoaWxkcmVuID0ga2V5cy5yZWR1Y2UoXHJcbiAgICAgICAgICAgIChhY2MsIGNLZXkpID0+IHtcclxuICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICBhY2NbY0tleV0gPSBkZWVwRm9ybVNpZ25hbChjb250cm9sc1tjS2V5XSwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHt9IGFzIERlZXBGb3JtU2lnbmFsPFQ+WydjaGlsZHJlbiddXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJvb3QuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgfVxyXG5cclxuICAgcmV0dXJuIHJvb3Q7XHJcbn1cclxuIl19
|
|
@@ -38,8 +38,7 @@ export function formSignal(form, options = buildDefaultFormSignalOptions()) {
|
|
|
38
38
|
},
|
|
39
39
|
};
|
|
40
40
|
const snapshot$ = buildFormSnapshotSignal(formSignals);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return formSignalObj;
|
|
41
|
+
Object.setPrototypeOf(snapshot$, formSignals);
|
|
42
|
+
return snapshot$;
|
|
44
43
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zaWduYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybS1zaWduYWwvc3JjL2xpYi9mb3JtLXNpZ25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0osd0JBQXdCLEVBQ3hCLFFBQVEsRUFFUixNQUFNLEdBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUNKLDZCQUE2QixHQUUvQixNQUFNLDZCQUE2QixDQUFDO0FBSXJDLE1BQU0sVUFBVSxVQUFVLENBQ3ZCLElBQStELEVBQy9ELFVBQWdDLDZCQUE2QixFQUFLO0lBRWxFLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQix3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUUsR0FDbEQsb0JBQW9CLENBQUksWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sRUFDSCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsRUFDUixRQUFRLEVBQ1IsU0FBUyxFQUNULFFBQVEsRUFDUix5QkFBeUIsR0FDM0IsR0FBRyxxQkFBcUIsQ0FBSSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsMEJBQTBCLEVBQUUsR0FDdkQsc0JBQXNCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLEdBQUcsb0JBQW9CLENBQ3pFLFlBQVksRUFDWixPQUFPLENBQ1QsQ0FBQztJQUNGLE1BQU0sT0FBTyxHQUFHLG9CQUFvQixDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTdFLE1BQU0sV0FBVyxHQUF1QjtRQUNyQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRTtRQUM1QixLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUMxQixRQUFRLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRTtRQUNoQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRTtRQUM5QixTQUFTLEVBQUUsVUFBVTtRQUNyQixLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUMxQixRQUFRLEVBQUUsU0FBUztRQUNuQixLQUFLLEVBQUUsTUFBTTtRQUNiLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLE1BQU0sRUFBRSxPQUFPO1FBQ2YsYUFBYSxFQUFFO1lBQ1osdUJBQXVCLEVBQUUsd0JBQXdCLENBQUMsVUFBVSxFQUFFO1lBQzlELHdCQUF3QixFQUFFLHlCQUF5QixDQUFDLFVBQVUsRUFBRTtZQUNoRSx5QkFBeUIsRUFBRSwwQkFBMEIsQ0FBQyxVQUFVLEVBQUU7WUFDbEUsdUJBQXVCLEVBQUUsd0JBQXdCLENBQUMsVUFBVSxFQUFFO1NBQ2hFO0tBQ0gsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUFHLHVCQUF1QixDQUFDLFdBQVcsQ0FBa0IsQ0FBQztJQUV4RSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUU5QyxPQUFPLFNBQVMsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LFxyXG4gICBpc1NpZ25hbCxcclxuICAgU2lnbmFsLFxyXG4gICBzaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGJ1aWxkRm9ybURpcnR5U2lnbmFsIH0gZnJvbSAnLi9oZWxwZXJzL2Zvcm0tZGlydHktc2lnbmFsJztcclxuaW1wb3J0IHsgYnVpbGRGb3JtRXJyb3JTaWduYWwgfSBmcm9tICcuL2hlbHBlcnMvZm9ybS1lcnJvci1zaWduYWwnO1xyXG5pbXBvcnQgeyBidWlsZEZvcm1TbmFwc2hvdFNpZ25hbCB9IGZyb20gJy4vaGVscGVycy9mb3JtLXNuYXBzaG90LXNpZ25hbCc7XHJcbmltcG9ydCB7IGJ1aWxkRm9ybVN0YXR1c1NpZ25hbCB9IGZyb20gJy4vaGVscGVycy9mb3JtLXN0YXR1cy1zaWduYWwnO1xyXG5pbXBvcnQgeyBidWlsZEZvcm1Ub3VjaGVkU2lnbmFsIH0gZnJvbSAnLi9oZWxwZXJzL2Zvcm0tdG91Y2hlZC1zaWduYWwnO1xyXG5pbXBvcnQgeyBidWlsZEZvcm1WYWx1ZVNpZ25hbCB9IGZyb20gJy4vaGVscGVycy9mb3JtLXZhbHVlLXNpZ25hbCc7XHJcbmltcG9ydCB7XHJcbiAgIGJ1aWxkRGVmYXVsdEZvcm1TaWduYWxPcHRpb25zLFxyXG4gICBGb3JtU2lnbmFsT3B0aW9ucyxcclxufSBmcm9tICcuL3R5cGVzL2Zvcm0tc2lnbmFsLW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBGb3JtU2lnbmFsLCBGb3JtU2lnbmFsU3RhdGUgfSBmcm9tICcuL3R5cGVzL2Zvcm0tc2lnbmFsLXR5cGUnO1xyXG5pbXBvcnQgeyBPcHRpb25hbEZvcm1Gcm9tVHlwZSB9IGZyb20gJy4vdHlwZXMvZm9ybS10eXBlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtU2lnbmFsPFQgPSBhbnk+KFxyXG4gICBmb3JtOiBTaWduYWw8T3B0aW9uYWxGb3JtRnJvbVR5cGU8VD4+IHwgT3B0aW9uYWxGb3JtRnJvbVR5cGU8VD4sXHJcbiAgIG9wdGlvbnM6IEZvcm1TaWduYWxPcHRpb25zPFQ+ID0gYnVpbGREZWZhdWx0Rm9ybVNpZ25hbE9wdGlvbnM8VD4oKVxyXG4pOiBGb3JtU2lnbmFsPFQ+IHtcclxuICAgY29uc3QgZm9ybUFzU2lnbmFsID0gaXNTaWduYWwoZm9ybSkgPyBmb3JtIDogc2lnbmFsKGZvcm0pO1xyXG4gICBpZiAoIW9wdGlvbnMuaW5qZWN0b3IpIHtcclxuICAgICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KCgpID0+IHt9KTtcclxuICAgfVxyXG4gICBjb25zdCB7IHZhbHVlJCwgcmF3VmFsdWUkLCB2YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbiQgfSA9XHJcbiAgICAgIGJ1aWxkRm9ybVZhbHVlU2lnbmFsPFQ+KGZvcm1Bc1NpZ25hbCwgb3B0aW9ucyk7XHJcbiAgIGNvbnN0IHtcclxuICAgICAgc3RhdHVzJCxcclxuICAgICAgdmFsaWQkLFxyXG4gICAgICBpbnZhbGlkJCxcclxuICAgICAgcGVuZGluZyQsXHJcbiAgICAgIGRpc2FibGVkJCxcclxuICAgICAgZW5hYmxlZCQsXHJcbiAgICAgIHN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbiQsXHJcbiAgIH0gPSBidWlsZEZvcm1TdGF0dXNTaWduYWw8VD4oZm9ybUFzU2lnbmFsLCBvcHRpb25zKTtcclxuICAgY29uc3QgeyB0b3VjaGVkJCwgdW50b3VjaGVkJCwgdG91Y2hlZENoYW5nZVN1YnNjcmlwdGlvbiQgfSA9XHJcbiAgICAgIGJ1aWxkRm9ybVRvdWNoZWRTaWduYWwoZm9ybUFzU2lnbmFsLCBvcHRpb25zKTtcclxuICAgY29uc3QgeyBkaXJ0eSQsIHByaXN0aW5lJCwgZGlydHlDaGFuZ2VTdWJzY3JpcHRpb24kIH0gPSBidWlsZEZvcm1EaXJ0eVNpZ25hbChcclxuICAgICAgZm9ybUFzU2lnbmFsLFxyXG4gICAgICBvcHRpb25zXHJcbiAgICk7XHJcbiAgIGNvbnN0IGVycm9ycyQgPSBidWlsZEZvcm1FcnJvclNpZ25hbChmb3JtQXNTaWduYWwsIHZhbHVlJCwgc3RhdHVzJCwgb3B0aW9ucyk7XHJcblxyXG4gICBjb25zdCBmb3JtU2lnbmFsczogRm9ybVNpZ25hbFN0YXRlPFQ+ID0ge1xyXG4gICAgICBzdGF0dXM6IHN0YXR1cyQuYXNSZWFkb25seSgpLFxyXG4gICAgICB2YWx1ZTogdmFsdWUkLmFzUmVhZG9ubHkoKSxcclxuICAgICAgcmF3VmFsdWU6IHJhd1ZhbHVlJC5hc1JlYWRvbmx5KCksXHJcbiAgICAgIHRvdWNoZWQ6IHRvdWNoZWQkLmFzUmVhZG9ubHkoKSxcclxuICAgICAgdW50b3VjaGVkOiB1bnRvdWNoZWQkLFxyXG4gICAgICBkaXJ0eTogZGlydHkkLmFzUmVhZG9ubHkoKSxcclxuICAgICAgcHJpc3RpbmU6IHByaXN0aW5lJCxcclxuICAgICAgdmFsaWQ6IHZhbGlkJCxcclxuICAgICAgaW52YWxpZDogaW52YWxpZCQsXHJcbiAgICAgIHBlbmRpbmc6IHBlbmRpbmckLFxyXG4gICAgICBkaXNhYmxlZDogZGlzYWJsZWQkLFxyXG4gICAgICBlbmFibGVkOiBlbmFibGVkJCxcclxuICAgICAgZXJyb3JzOiBlcnJvcnMkLFxyXG4gICAgICBzdWJzY3JpcHRpb25zOiB7XHJcbiAgICAgICAgIHZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uOiB2YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbiQuYXNSZWFkb25seSgpLFxyXG4gICAgICAgICBzdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb246IHN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbiQuYXNSZWFkb25seSgpLFxyXG4gICAgICAgICB0b3VjaGVkQ2hhbmdlU3Vic2NyaXB0aW9uOiB0b3VjaGVkQ2hhbmdlU3Vic2NyaXB0aW9uJC5hc1JlYWRvbmx5KCksXHJcbiAgICAgICAgIGRpcnR5Q2hhbmdlU3Vic2NyaXB0aW9uOiBkaXJ0eUNoYW5nZVN1YnNjcmlwdGlvbiQuYXNSZWFkb25seSgpLFxyXG4gICAgICB9LFxyXG4gICB9O1xyXG5cclxuICAgY29uc3Qgc25hcHNob3QkID0gYnVpbGRGb3JtU25hcHNob3RTaWduYWwoZm9ybVNpZ25hbHMpIGFzIEZvcm1TaWduYWw8VD47XHJcblxyXG4gICBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc25hcHNob3QkLCBmb3JtU2lnbmFscyk7XHJcblxyXG4gICByZXR1cm4gc25hcHNob3QkO1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcC1mb3JtLXNpZ25hbC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm0tc2lnbmFsL3NyYy9saWIvdHlwZXMvZGVlcC1mb3JtLXNpZ25hbC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1TaWduYWwgfSBmcm9tICcuL2Zvcm0tc2lnbmFsLXR5cGUnO1xyXG5pbXBvcnQgeyBGb3JtRnJvbVR5cGUgfSBmcm9tICcuL2Zvcm0tdHlwZSc7XHJcblxyXG50eXBlIERlZXBGb3JtU2lnbmFsTmVzdGVkSGVscGVyPFQsIEs+ID0gRm9ybUZyb21UeXBlPFQ+IGV4dGVuZHNcclxuICAgfCBGb3JtR3JvdXBcclxuICAgfCBGb3JtQXJyYXlcclxuICAgPyBLIGV4dGVuZHMga2V5b2YgRm9ybUZyb21UeXBlPFQ+Wydjb250cm9scyddXHJcbiAgICAgID8gRm9ybUZyb21UeXBlPFQ+Wydjb250cm9scyddW0tdIGV4dGVuZHMgRm9ybUNvbnRyb2xcclxuICAgICAgICAgPyBGb3JtU2lnbmFsPEZvcm1Gcm9tVHlwZTxUPlsnY29udHJvbHMnXVtLXVsndmFsdWUnXT5cclxuICAgICAgICAgOiBGb3JtRnJvbVR5cGU8VD5bJ2NvbnRyb2xzJ11bS10gZXh0ZW5kcyBGb3JtR3JvdXBcclxuICAgICAgICAgICA/IERlZXBGb3JtU2lnbmFsPEZvcm1Gcm9tVHlwZTxUPlsnY29udHJvbHMnXVtLXVsnY29udHJvbHMnXT5cclxuICAgICAgICAgICA6IEZvcm1Gcm9tVHlwZTxUPlsnY29udHJvbHMnXVtLXSBleHRlbmRzIEZvcm1BcnJheVxyXG4gICAgICAgICAgICAgPyBEZWVwRm9ybVNpZ25hbDxGb3JtRnJvbVR5cGU8VD5bJ2NvbnRyb2xzJ11bS11bJ2NvbnRyb2xzJ10+XHJcbiAgICAgICAgICAgICA6IG5ldmVyXHJcbiAgICAgIDogbmV2ZXJcclxuICAgOiBuZXZlcjtcclxuXHJcbmV4cG9ydCB0eXBlIERlZXBGb3JtU2lnbmFsQ2hpbGRyZW48VCA9IGFueT4gPVxyXG4gICBGb3JtRnJvbVR5cGU8VD4gZXh0ZW5kcyBGb3JtQ29udHJvbFxyXG4gICAgICA/IEZvcm1TaWduYWw8VD5cclxuICAgICAgOiBGb3JtRnJvbVR5cGU8VD4gZXh0ZW5kcyBGb3JtR3JvdXBcclxuICAgICAgICA/IEZvcm1Gcm9tVHlwZTxUPlsnY29udHJvbHMnXSBleHRlbmRzIEFycmF5PGFueT5cclxuICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIFtLOiBudW1iZXJdOiBEZWVwRm9ybVNpZ25hbE5lc3RlZEhlbHBlcjxULCBudW1iZXI+O1xyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgW0sgaW4ga2V5b2YgRm9ybUZyb21UeXBlPFQ+Wydjb250cm9scyddXTogRGVlcEZvcm1TaWduYWxOZXN0ZWRIZWxwZXI8XHJcbiAgICAgICAgICAgICAgICAgICBULFxyXG4gICAgICAgICAgICAgICAgICAgS1xyXG4gICAgICAgICAgICAgICAgPjtcclxuICAgICAgICAgICAgIH1cclxuICAgICAgICA6IEZvcm1Gcm9tVHlwZTxUPiBleHRlbmRzIEZvcm1BcnJheVxyXG4gICAgICAgICAgPyB7XHJcbiAgICAgICAgICAgICAgIFtLOiBudW1iZXJdOiBEZWVwRm9ybVNpZ25hbE5lc3RlZEhlbHBlcjxULCBudW1iZXI+O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA6IG51bGw7XHJcblxyXG5leHBvcnQgdHlwZSBEZWVwRm9ybVNpZ25hbDxUID0gYW55PiA9IEZvcm1TaWduYWw8VD4gJlxyXG4gICAoRm9ybUZyb21UeXBlPFQ+IGV4dGVuZHMgRm9ybUNvbnRyb2xcclxuICAgICAgPyB7IGNoaWxkcmVuOiBudWxsIH1cclxuICAgICAgOiB7XHJcbiAgICAgICAgICAgY2hpbGRyZW46IERlZXBGb3JtU2lnbmFsQ2hpbGRyZW48VD47XHJcbiAgICAgICAgfSk7XHJcbiJdfQ==
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export const defaultFormSignalOptions = {};
|
|
2
1
|
export function buildDefaultFormSignalOptions() {
|
|
3
|
-
return
|
|
2
|
+
return {};
|
|
4
3
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zaWduYWwtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtLXNpZ25hbC9zcmMvbGliL3R5cGVzL2Zvcm0tc2lnbmFsLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JBLE1BQU0sVUFBVSw2QkFBNkI7SUFDMUMsT0FBTyxFQUFFLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFZhbHVlRXF1YWxpdHlGbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbFN0YXR1cywgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9ybUZyb21UeXBlIH0gZnJvbSAnLi9mb3JtLXR5cGUnO1xyXG5cclxuZXhwb3J0IHR5cGUgRm9ybVNpZ25hbEVxdWFsaXR5T3B0aW9uczxUID0gYW55PiA9IHtcclxuICAgZGlydHlFcXVhbGl0eTogVmFsdWVFcXVhbGl0eUZuPGJvb2xlYW4+O1xyXG4gICB0b3VjaGVkRXF1YWxpdHk6IFZhbHVlRXF1YWxpdHlGbjxib29sZWFuPjtcclxuICAgdmFsdWVFcXVhbGl0eTogVmFsdWVFcXVhbGl0eUZuPEZvcm1Gcm9tVHlwZTxUPlsndmFsdWUnXSB8IG51bGw+O1xyXG4gICBzdGF0dXNFcXVhbGl0eTogVmFsdWVFcXVhbGl0eUZuPEZvcm1Db250cm9sU3RhdHVzIHwgbnVsbD47XHJcbiAgIGVycm9yc0VxdWFsaXR5OiBWYWx1ZUVxdWFsaXR5Rm48VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+O1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgRm9ybVNpZ25hbE9wdGlvbnM8VCA9IGFueT4gPSB7XHJcbiAgIGluamVjdG9yPzogSW5qZWN0b3I7XHJcbiAgIGVxdWFsaXR5Rm5zPzogUGFydGlhbDxGb3JtU2lnbmFsRXF1YWxpdHlPcHRpb25zPFQ+PjtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIERlZXBGb3JtU2lnbmFsT3B0aW9uczxUID0gYW55PiA9IHtcclxuICAgaW5qZWN0b3I/OiBJbmplY3RvcjtcclxuICAgZXF1YWxpdHlGbnM/OiBQYXJ0aWFsPE9taXQ8Rm9ybVNpZ25hbEVxdWFsaXR5T3B0aW9uczxUPiwgJ3ZhbHVlRXF1YWxpdHknPj47XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGREZWZhdWx0Rm9ybVNpZ25hbE9wdGlvbnM8VCA9IGFueT4oKTogRm9ybVNpZ25hbE9wdGlvbnM8VD4ge1xyXG4gICByZXR1cm4ge307XHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zaWduYWwtdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtLXNpZ25hbC9zcmMvbGliL3R5cGVzL2Zvcm0tc2lnbmFsLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBidWlsZEZvcm1EaXJ0eVNpZ25hbCB9IGZyb20gJy4uL2hlbHBlcnMvZm9ybS1kaXJ0eS1zaWduYWwnO1xyXG5pbXBvcnQgeyBidWlsZEZvcm1FcnJvclNpZ25hbCB9IGZyb20gJy4uL2hlbHBlcnMvZm9ybS1lcnJvci1zaWduYWwnO1xyXG5pbXBvcnQgeyBidWlsZEZvcm1TdGF0dXNTaWduYWwgfSBmcm9tICcuLi9oZWxwZXJzL2Zvcm0tc3RhdHVzLXNpZ25hbCc7XHJcbmltcG9ydCB7IGJ1aWxkRm9ybVRvdWNoZWRTaWduYWwgfSBmcm9tICcuLi9oZWxwZXJzL2Zvcm0tdG91Y2hlZC1zaWduYWwnO1xyXG5pbXBvcnQgeyBidWlsZEZvcm1WYWx1ZVNpZ25hbCB9IGZyb20gJy4uL2hlbHBlcnMvZm9ybS12YWx1ZS1zaWduYWwnO1xyXG5cclxuZXhwb3J0IHR5cGUgRm9ybVNpZ25hbFN1YnNjcmlwdGlvbnNTdGF0ZTxUID0gYW55PiA9IHtcclxuICAgdmFsdWVDaGFuZ2VTdWJzY3JpcHRpb246IFJldHVyblR5cGU8XHJcbiAgICAgIFJldHVyblR5cGU8XHJcbiAgICAgICAgIHR5cGVvZiBidWlsZEZvcm1WYWx1ZVNpZ25hbDxUPlxyXG4gICAgICA+Wyd2YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbiQnXVsnYXNSZWFkb25seSddXHJcbiAgID47XHJcbiAgIHN0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbjogUmV0dXJuVHlwZTxcclxuICAgICAgUmV0dXJuVHlwZTxcclxuICAgICAgICAgdHlwZW9mIGJ1aWxkRm9ybVN0YXR1c1NpZ25hbFxyXG4gICAgICA+WydzdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb24kJ11bJ2FzUmVhZG9ubHknXVxyXG4gICA+O1xyXG4gICB0b3VjaGVkQ2hhbmdlU3Vic2NyaXB0aW9uOiBSZXR1cm5UeXBlPFxyXG4gICAgICBSZXR1cm5UeXBlPFxyXG4gICAgICAgICB0eXBlb2YgYnVpbGRGb3JtVG91Y2hlZFNpZ25hbFxyXG4gICAgICA+Wyd0b3VjaGVkQ2hhbmdlU3Vic2NyaXB0aW9uJCddWydhc1JlYWRvbmx5J11cclxuICAgPjtcclxuICAgZGlydHlDaGFuZ2VTdWJzY3JpcHRpb246IFJldHVyblR5cGU8XHJcbiAgICAgIFJldHVyblR5cGU8XHJcbiAgICAgICAgIHR5cGVvZiBidWlsZEZvcm1EaXJ0eVNpZ25hbFxyXG4gICAgICA+WydkaXJ0eUNoYW5nZVN1YnNjcmlwdGlvbiQnXVsnYXNSZWFkb25seSddXHJcbiAgID47XHJcbn07XHJcbmV4cG9ydCB0eXBlIEZvcm1TaWduYWxTdGF0ZTxUID0gYW55PiA9IHtcclxuICAgc3RhdHVzOiBSZXR1cm5UeXBlPFxyXG4gICAgICBSZXR1cm5UeXBlPHR5cGVvZiBidWlsZEZvcm1TdGF0dXNTaWduYWw+WydzdGF0dXMkJ11bJ2FzUmVhZG9ubHknXVxyXG4gICA+O1xyXG4gICB2YWx1ZTogUmV0dXJuVHlwZTxcclxuICAgICAgUmV0dXJuVHlwZTx0eXBlb2YgYnVpbGRGb3JtVmFsdWVTaWduYWw8VD4+Wyd2YWx1ZSQnXVsnYXNSZWFkb25seSddXHJcbiAgID47XHJcbiAgIHJhd1ZhbHVlOiBSZXR1cm5UeXBlPFxyXG4gICAgICBSZXR1cm5UeXBlPHR5cGVvZiBidWlsZEZvcm1WYWx1ZVNpZ25hbDxUPj5bJ3Jhd1ZhbHVlJCddWydhc1JlYWRvbmx5J11cclxuICAgPjtcclxuICAgdG91Y2hlZDogUmV0dXJuVHlwZTxcclxuICAgICAgUmV0dXJuVHlwZTx0eXBlb2YgYnVpbGRGb3JtVG91Y2hlZFNpZ25hbD5bJ3RvdWNoZWQkJ11bJ2FzUmVhZG9ubHknXVxyXG4gICA+O1xyXG4gICB1bnRvdWNoZWQ6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkRm9ybVRvdWNoZWRTaWduYWw+Wyd1bnRvdWNoZWQkJ107XHJcbiAgIGRpcnR5OiBSZXR1cm5UeXBlPFxyXG4gICAgICBSZXR1cm5UeXBlPHR5cGVvZiBidWlsZEZvcm1EaXJ0eVNpZ25hbD5bJ2RpcnR5JCddWydhc1JlYWRvbmx5J11cclxuICAgPjtcclxuICAgcHJpc3RpbmU6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkRm9ybURpcnR5U2lnbmFsPlsncHJpc3RpbmUkJ107XHJcbiAgIHZhbGlkOiBSZXR1cm5UeXBlPHR5cGVvZiBidWlsZEZvcm1TdGF0dXNTaWduYWw+Wyd2YWxpZCQnXTtcclxuICAgaW52YWxpZDogUmV0dXJuVHlwZTx0eXBlb2YgYnVpbGRGb3JtU3RhdHVzU2lnbmFsPlsnaW52YWxpZCQnXTtcclxuICAgcGVuZGluZzogUmV0dXJuVHlwZTx0eXBlb2YgYnVpbGRGb3JtU3RhdHVzU2lnbmFsPlsncGVuZGluZyQnXTtcclxuICAgZGlzYWJsZWQ6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkRm9ybVN0YXR1c1NpZ25hbD5bJ2Rpc2FibGVkJCddO1xyXG4gICBlbmFibGVkOiBSZXR1cm5UeXBlPHR5cGVvZiBidWlsZEZvcm1TdGF0dXNTaWduYWw+WydlbmFibGVkJCddO1xyXG4gICBlcnJvcnM6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkRm9ybUVycm9yU2lnbmFsPjtcclxuICAgc3Vic2NyaXB0aW9uczogRm9ybVNpZ25hbFN1YnNjcmlwdGlvbnNTdGF0ZTxUPjtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIEZvcm1TbmFwc2hvdFNpZ25hbFN1YnNjcmlwdGlvbnNTdGF0ZTxUID0gYW55PiA9IHtcclxuICAgW3ggaW4ga2V5b2YgRm9ybVNpZ25hbFN1YnNjcmlwdGlvbnNTdGF0ZTxUPl06IFJldHVyblR5cGU8XHJcbiAgICAgIEZvcm1TaWduYWxTdWJzY3JpcHRpb25zU3RhdGU8VD5beF1cclxuICAgPjtcclxufTtcclxuZXhwb3J0IHR5cGUgRm9ybVNuYXBzaG90U2lnbmFsU3RhdGU8VCA9IGFueT4gPSB7XHJcbiAgIFt4IGluIGtleW9mIE9taXQ8Rm9ybVNpZ25hbFN0YXRlPFQ+LCAnc3Vic2NyaXB0aW9ucyc+XTogUmV0dXJuVHlwZTxcclxuICAgICAgRm9ybVNpZ25hbFN0YXRlPFQ+W3hdXHJcbiAgID47XHJcbn0gJiB7IHN1YnNjcmlwdGlvbnM6IEZvcm1TbmFwc2hvdFNpZ25hbFN1YnNjcmlwdGlvbnNTdGF0ZTxUPiB9O1xyXG5cclxuZXhwb3J0IHR5cGUgRm9ybVNpZ25hbDxUID0gYW55PiA9IEZvcm1TaWduYWxTdGF0ZTxUPiAmXHJcbiAgIFNpZ25hbDxGb3JtU25hcHNob3RTaWduYWxTdGF0ZTxUPj47XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm0tc2lnbmFsL3NyYy9saWIvdHlwZXMvZm9ybS10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgIEZvcm1BcnJheSxcclxuICAgRm9ybUNvbnRyb2wsXHJcbiAgIEZvcm1Hcm91cCxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtRnJvbVR5cGU8VD4gPSBUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sPGFueT4gfVxyXG4gICA/IEZvcm1Hcm91cDxUPlxyXG4gICA6IFQgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2w8YW55PlxyXG4gICAgID8gRm9ybUFycmF5PFQ+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm0tc2lnbmFsL3NyYy9saWIvdHlwZXMvZm9ybS10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgIEZvcm1BcnJheSxcclxuICAgRm9ybUNvbnRyb2wsXHJcbiAgIEZvcm1Hcm91cCxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtRnJvbVR5cGU8VD4gPSBUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sPGFueT4gfVxyXG4gICA/IEZvcm1Hcm91cDxUPlxyXG4gICA6IFQgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2w8YW55PlxyXG4gICAgID8gRm9ybUFycmF5PFQ+XHJcbiAgICAgOiBUIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPGFueT5bXVxyXG4gICAgICAgPyBGb3JtQXJyYXk8VFswXT5cclxuICAgICAgIDogRm9ybUNvbnRyb2w8VD47XHJcblxyXG5leHBvcnQgdHlwZSBPcHRpb25hbEZvcm1Gcm9tVHlwZTxUID0gYW55PiA9XHJcbiAgIHwgRm9ybUZyb21UeXBlPFQ+XHJcbiAgIHwgRm9ybUNvbnRyb2w8VD5cclxuICAgfCBudWxsO1xyXG4iXX0=
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Public API Surface of ngx-form-signal
|
|
3
3
|
*/
|
|
4
|
+
export * from './lib/deep-form-signal';
|
|
4
5
|
export * from './lib/form-signal';
|
|
6
|
+
export * from './lib/types/deep-form-signal-type';
|
|
5
7
|
export * from './lib/types/form-signal-options';
|
|
6
8
|
export * from './lib/types/form-signal-type';
|
|
7
9
|
export * from './lib/types/form-type';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtLXNpZ25hbC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5neC1mb3JtLXNpZ25hbFxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RlZXAtZm9ybS1zaWduYWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtLXNpZ25hbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzL2RlZXAtZm9ybS1zaWduYWwtdHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzL2Zvcm0tc2lnbmFsLW9wdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90eXBlcy9mb3JtLXNpZ25hbC10eXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMvZm9ybS10eXBlJztcclxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { signal, effect, untracked, computed, isSignal, assertInInjectionContext } from '@angular/core';
|
|
2
|
-
import { PristineChangeEvent, TouchedChangeEvent } from '@angular/forms';
|
|
2
|
+
import { PristineChangeEvent, TouchedChangeEvent, FormControl, FormArray, FormGroup } from '@angular/forms';
|
|
3
3
|
import { filter } from 'rxjs';
|
|
4
4
|
|
|
5
5
|
function buildFormDirtySignal(formAsSignal, options) {
|
|
@@ -155,9 +155,8 @@ function buildFormValueSignal(formAsSignal, options) {
|
|
|
155
155
|
return { value$, rawValue$, valueChangeSubscription$ };
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
const defaultFormSignalOptions = {};
|
|
159
158
|
function buildDefaultFormSignalOptions() {
|
|
160
|
-
return
|
|
159
|
+
return {};
|
|
161
160
|
}
|
|
162
161
|
|
|
163
162
|
function formSignal(form, options = buildDefaultFormSignalOptions()) {
|
|
@@ -192,9 +191,31 @@ function formSignal(form, options = buildDefaultFormSignalOptions()) {
|
|
|
192
191
|
},
|
|
193
192
|
};
|
|
194
193
|
const snapshot$ = buildFormSnapshotSignal(formSignals);
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
194
|
+
Object.setPrototypeOf(snapshot$, formSignals);
|
|
195
|
+
return snapshot$;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function deepFormSignal(form, options = buildDefaultFormSignalOptions()) {
|
|
199
|
+
const root = formSignal(form, options);
|
|
200
|
+
const formVal = isSignal(form) ? form() : form;
|
|
201
|
+
if (formVal && !(formVal instanceof FormControl)) {
|
|
202
|
+
let children = null;
|
|
203
|
+
if (formVal instanceof FormArray) {
|
|
204
|
+
// @ts-ignore
|
|
205
|
+
children = formVal.controls.map((c) => deepFormSignal(c, options));
|
|
206
|
+
}
|
|
207
|
+
else if (formVal instanceof FormGroup) {
|
|
208
|
+
const controls = formVal.controls;
|
|
209
|
+
const keys = Object.keys(controls);
|
|
210
|
+
children = keys.reduce((acc, cKey) => {
|
|
211
|
+
// @ts-ignore
|
|
212
|
+
acc[cKey] = deepFormSignal(controls[cKey], options);
|
|
213
|
+
return acc;
|
|
214
|
+
}, {});
|
|
215
|
+
}
|
|
216
|
+
root.children = children;
|
|
217
|
+
}
|
|
218
|
+
return root;
|
|
198
219
|
}
|
|
199
220
|
|
|
200
221
|
/*
|
|
@@ -205,5 +226,5 @@ function formSignal(form, options = buildDefaultFormSignalOptions()) {
|
|
|
205
226
|
* Generated bundle index. Do not edit.
|
|
206
227
|
*/
|
|
207
228
|
|
|
208
|
-
export { buildDefaultFormSignalOptions,
|
|
229
|
+
export { buildDefaultFormSignalOptions, deepFormSignal, formSignal };
|
|
209
230
|
//# sourceMappingURL=ngx-form-signal.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-form-signal.mjs","sources":["../../../projects/ngx-form-signal/src/lib/helpers/form-dirty-signal.ts","../../../projects/ngx-form-signal/src/lib/helpers/form-error-signal.ts","../../../projects/ngx-form-signal/src/lib/helpers/form-snapshot-signal.ts","../../../projects/ngx-form-signal/src/lib/helpers/form-status-signal.ts","../../../projects/ngx-form-signal/src/lib/helpers/form-touched-signal.ts","../../../projects/ngx-form-signal/src/lib/helpers/form-value-signal.ts","../../../projects/ngx-form-signal/src/lib/types/form-signal-options.ts","../../../projects/ngx-form-signal/src/lib/form-signal.ts","../../../projects/ngx-form-signal/src/public-api.ts","../../../projects/ngx-form-signal/src/ngx-form-signal.ts"],"sourcesContent":["import { computed, effect, Signal, signal, untracked } from '@angular/core';\r\nimport { PristineChangeEvent } from '@angular/forms';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { FormSignalOptions } from '../types/form-signal-options';\r\nimport { OptionalFormFromType } from '../types/form-type';\r\n\r\nexport function buildFormDirtySignal(\r\n formAsSignal: Signal<OptionalFormFromType<any>>,\r\n options: FormSignalOptions\r\n) {\r\n const dirty$ = signal<boolean>(!!formAsSignal()?.dirty, {\r\n equal: options.equalityFns?.dirtyEquality,\r\n });\r\n const dirtyChangeSubscription$ = signal<Subscription | null>(null);\r\n\r\n const formDirtyChangeEffect = effect(\r\n (onCleanup: Function) => {\r\n const form = formAsSignal();\r\n untracked(() => {\r\n const setDirty = () => {\r\n untracked(() => {\r\n dirty$.set(!!form?.dirty);\r\n });\r\n };\r\n\r\n dirtyChangeSubscription$()?.unsubscribe();\r\n dirtyChangeSubscription$.set(\r\n form?.events\r\n .pipe(filter((e) => e instanceof PristineChangeEvent))\r\n .subscribe((e) => {\r\n setDirty();\r\n }) ?? null\r\n );\r\n setDirty();\r\n });\r\n onCleanup(\r\n () => untracked(() => dirtyChangeSubscription$())?.unsubscribe()\r\n );\r\n },\r\n { injector: options.injector }\r\n );\r\n\r\n const pristine$ = computed(() => !dirty$());\r\n\r\n return { dirty$, pristine$, dirtyChangeSubscription$ };\r\n}\r\n","import {\r\n Signal,\r\n WritableSignal,\r\n computed,\r\n isSignal,\r\n signal,\r\n} from '@angular/core';\r\nimport { FormControlStatus } from '@angular/forms';\r\nimport { FormSignalOptions } from '../types/form-signal-options';\r\nimport { FormFromType, OptionalFormFromType } from '../types/form-type';\r\n\r\nexport function buildFormErrorSignal<T = any>(\r\n form: Signal<OptionalFormFromType<T>> | OptionalFormFromType<T>,\r\n valueSignal: WritableSignal<FormFromType<T>['value'] | null>,\r\n statusSignal: WritableSignal<FormControlStatus | null>,\r\n options: FormSignalOptions<T>\r\n) {\r\n const formAsSignal = isSignal(form) ? form : signal(form);\r\n\r\n return computed(\r\n () => {\r\n const v = valueSignal();\r\n const s = statusSignal();\r\n return formAsSignal()?.errors ?? null;\r\n },\r\n { equal: options.equalityFns?.errorsEquality }\r\n );\r\n}\r\n","import { computed } from '@angular/core';\r\nimport {\r\n FormSignalState,\r\n FormSnapshotSignalState,\r\n} from '../types/form-signal-type';\r\n\r\nexport function buildFormSnapshotSignal<T = any>(\r\n formSignalState: FormSignalState<T>\r\n) {\r\n return computed<FormSnapshotSignalState<T>>(() => {\r\n return {\r\n status: formSignalState.status(),\r\n value: formSignalState.value(),\r\n rawValue: formSignalState.rawValue(),\r\n touched: formSignalState.touched(),\r\n untouched: formSignalState.untouched(),\r\n dirty: formSignalState.dirty(),\r\n pristine: formSignalState.pristine(),\r\n valid: formSignalState.valid(),\r\n invalid: formSignalState.invalid(),\r\n pending: formSignalState.pending(),\r\n disabled: formSignalState.disabled(),\r\n enabled: formSignalState.enabled(),\r\n errors: formSignalState.errors(),\r\n subscriptions: {\r\n valueChangeSubscription:\r\n formSignalState.subscriptions.valueChangeSubscription(),\r\n statusChangeSubscription:\r\n formSignalState.subscriptions.statusChangeSubscription(),\r\n touchedChangeSubscription:\r\n formSignalState.subscriptions.touchedChangeSubscription(),\r\n dirtyChangeSubscription:\r\n formSignalState.subscriptions.dirtyChangeSubscription(),\r\n },\r\n };\r\n });\r\n}\r\n","import { computed, effect, Signal, signal, untracked } from '@angular/core';\r\nimport { FormControlStatus } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormSignalOptions } from '../types/form-signal-options';\r\nimport { OptionalFormFromType } from '../types/form-type';\r\n\r\nexport function buildFormStatusSignal<T = any>(\r\n formAsSignal: Signal<OptionalFormFromType<T>>,\r\n options: FormSignalOptions<T>\r\n) {\r\n const equal = options.equalityFns?.statusEquality ?? (() => false);\r\n const status$ = signal<FormControlStatus | null>(\r\n formAsSignal()?.status ?? null,\r\n { equal }\r\n );\r\n const statusChangeSubscription$ = signal<Subscription | null>(null);\r\n const formStatusChangeEffect = effect(\r\n (onCleanup: Function) => {\r\n const form = formAsSignal();\r\n untracked(() => {\r\n const setStatus = () => {\r\n untracked(() => {\r\n status$.set(form?.status ?? null);\r\n });\r\n };\r\n\r\n statusChangeSubscription$()?.unsubscribe();\r\n statusChangeSubscription$.set(\r\n form?.statusChanges.subscribe(() => {\r\n setStatus();\r\n }) ?? null\r\n );\r\n setStatus();\r\n });\r\n onCleanup(\r\n () => untracked(() => statusChangeSubscription$())?.unsubscribe()\r\n );\r\n },\r\n { injector: options.injector }\r\n );\r\n\r\n const valid$ = computed(() => status$() === 'VALID');\r\n const invalid$ = computed(() => status$() === 'INVALID');\r\n const pending$ = computed(() => status$() == 'PENDING');\r\n const disabled$ = computed(() => status$() === 'DISABLED');\r\n const enabled$ = computed(() => status$() !== 'DISABLED');\r\n\r\n return {\r\n status$,\r\n valid$,\r\n invalid$,\r\n pending$,\r\n disabled$,\r\n enabled$,\r\n statusChangeSubscription$,\r\n };\r\n}\r\n","import { computed, effect, Signal, signal, untracked } from '@angular/core';\r\nimport { TouchedChangeEvent } from '@angular/forms';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { FormSignalOptions } from '../types/form-signal-options';\r\nimport { OptionalFormFromType } from '../types/form-type';\r\n\r\nexport function buildFormTouchedSignal(\r\n formAsSignal: Signal<OptionalFormFromType<any>>,\r\n options: FormSignalOptions\r\n) {\r\n const touched$ = signal<boolean>(!!formAsSignal()?.touched, {\r\n equal: options.equalityFns?.touchedEquality,\r\n });\r\n const touchedChangeSubscription$ = signal<Subscription | null>(null);\r\n\r\n const formTouchedChangeEffect = effect(\r\n (onCleanup: Function) => {\r\n const form = formAsSignal();\r\n untracked(() => {\r\n const setTouched = () => {\r\n untracked(() => {\r\n touched$.set(!!form?.touched);\r\n });\r\n };\r\n\r\n touchedChangeSubscription$()?.unsubscribe();\r\n touchedChangeSubscription$.set(\r\n form?.events\r\n .pipe(filter((e) => e instanceof TouchedChangeEvent))\r\n .subscribe((e) => {\r\n setTouched();\r\n }) ?? null\r\n );\r\n setTouched();\r\n });\r\n onCleanup(\r\n () => untracked(() => touchedChangeSubscription$())?.unsubscribe()\r\n );\r\n },\r\n { injector: options.injector }\r\n );\r\n\r\n const untouched$ = computed(() => !touched$(), {\r\n equal: options.equalityFns?.touchedEquality,\r\n });\r\n\r\n return { touched$, untouched$, touchedChangeSubscription$ };\r\n}\r\n","import { effect, Signal, signal, untracked } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormSignalOptions } from '../types/form-signal-options';\r\nimport { FormFromType, OptionalFormFromType } from '../types/form-type';\r\n\r\nexport function buildFormValueSignal<T = any>(\r\n formAsSignal: Signal<OptionalFormFromType<T>>,\r\n options: FormSignalOptions<T>\r\n) {\r\n const value$ = signal<FormFromType<T>['value'] | null>(\r\n formAsSignal()?.value ?? null,\r\n { equal: options.equalityFns?.valueEquality ?? (() => false) }\r\n );\r\n const rawValue$ = signal<FormFromType<T>['value'] | null>(\r\n formAsSignal()?.getRawValue() ?? null,\r\n {\r\n equal: options.equalityFns?.valueEquality ?? (() => false),\r\n }\r\n );\r\n const valueChangeSubscription$ = signal<Subscription | null>(null);\r\n const formValueChangeEffect = effect(\r\n (onCleanup: Function) => {\r\n const form = formAsSignal() as AbstractControl<T> | null;\r\n untracked(() => {\r\n const setValue = () => {\r\n untracked(() => {\r\n value$.set(form?.value ?? null);\r\n rawValue$.set(form?.getRawValue() ?? null);\r\n });\r\n };\r\n\r\n valueChangeSubscription$()?.unsubscribe();\r\n valueChangeSubscription$.set(\r\n form?.valueChanges.subscribe(() => {\r\n setValue();\r\n }) ?? null\r\n );\r\n setValue();\r\n });\r\n onCleanup(\r\n () => untracked(() => valueChangeSubscription$())?.unsubscribe()\r\n );\r\n },\r\n { injector: options.injector }\r\n );\r\n return { value$, rawValue$, valueChangeSubscription$ };\r\n}\r\n","import { Injector, ValueEqualityFn } from '@angular/core';\r\nimport { FormControlStatus, ValidationErrors } from '@angular/forms';\r\nimport { FormFromType } from './form-type';\r\n\r\nexport type FormSignalEqualityOptions<T = any> = {\r\n dirtyEquality: ValueEqualityFn<boolean>;\r\n touchedEquality: ValueEqualityFn<boolean>;\r\n valueEquality: ValueEqualityFn<FormFromType<T>['value'] | null>;\r\n statusEquality: ValueEqualityFn<FormControlStatus | null>;\r\n errorsEquality: ValueEqualityFn<ValidationErrors | null>;\r\n};\r\nexport type FormSignalOptions<T = any> = {\r\n injector?: Injector;\r\n equalityFns?: Partial<FormSignalEqualityOptions<T>>;\r\n};\r\n\r\nexport const defaultFormSignalOptions: FormSignalOptions = {};\r\nexport function buildDefaultFormSignalOptions<T = any>(): FormSignalOptions<T> {\r\n return structuredClone(defaultFormSignalOptions);\r\n}\r\n","import {\r\n assertInInjectionContext,\r\n isSignal,\r\n Signal,\r\n signal,\r\n} from '@angular/core';\r\nimport { buildFormDirtySignal } from './helpers/form-dirty-signal';\r\nimport { buildFormErrorSignal } from './helpers/form-error-signal';\r\nimport { buildFormSnapshotSignal } from './helpers/form-snapshot-signal';\r\nimport { buildFormStatusSignal } from './helpers/form-status-signal';\r\nimport { buildFormTouchedSignal } from './helpers/form-touched-signal';\r\nimport { buildFormValueSignal } from './helpers/form-value-signal';\r\nimport {\r\n buildDefaultFormSignalOptions,\r\n FormSignalOptions,\r\n} from './types/form-signal-options';\r\nimport { FormSignal, FormSignalState } from './types/form-signal-type';\r\nimport { OptionalFormFromType } from './types/form-type';\r\n\r\nexport function formSignal<T = any>(\r\n form: Signal<OptionalFormFromType<T>> | OptionalFormFromType<T>,\r\n options: FormSignalOptions = buildDefaultFormSignalOptions<T>()\r\n): FormSignal<T> {\r\n const formAsSignal = isSignal(form) ? form : signal(form);\r\n if (!options.injector) {\r\n assertInInjectionContext(() => {});\r\n }\r\n const { value$, rawValue$, valueChangeSubscription$ } =\r\n buildFormValueSignal<T>(formAsSignal, options);\r\n const {\r\n status$,\r\n valid$,\r\n invalid$,\r\n pending$,\r\n disabled$,\r\n enabled$,\r\n statusChangeSubscription$,\r\n } = buildFormStatusSignal<T>(formAsSignal, options);\r\n const { touched$, untouched$, touchedChangeSubscription$ } =\r\n buildFormTouchedSignal(formAsSignal, options);\r\n const { dirty$, pristine$, dirtyChangeSubscription$ } = buildFormDirtySignal(\r\n formAsSignal,\r\n options\r\n );\r\n const errors$ = buildFormErrorSignal(formAsSignal, value$, status$, options);\r\n\r\n const formSignals: FormSignalState<T> = {\r\n status: status$.asReadonly(),\r\n value: value$.asReadonly(),\r\n rawValue: rawValue$.asReadonly(),\r\n touched: touched$.asReadonly(),\r\n untouched: untouched$,\r\n dirty: dirty$.asReadonly(),\r\n pristine: pristine$,\r\n valid: valid$,\r\n invalid: invalid$,\r\n pending: pending$,\r\n disabled: disabled$,\r\n enabled: enabled$,\r\n errors: errors$,\r\n subscriptions: {\r\n valueChangeSubscription: valueChangeSubscription$.asReadonly(),\r\n statusChangeSubscription: statusChangeSubscription$.asReadonly(),\r\n touchedChangeSubscription: touchedChangeSubscription$.asReadonly(),\r\n dirtyChangeSubscription: dirtyChangeSubscription$.asReadonly(),\r\n },\r\n };\r\n\r\n const snapshot$ = buildFormSnapshotSignal(formSignals);\r\n const formSignalObj = (() => snapshot$()) as FormSignal<T>;\r\n\r\n Object.setPrototypeOf(formSignalObj, formSignals);\r\n\r\n return formSignalObj;\r\n}\r\n","/*\r\n * Public API Surface of ngx-form-signal\r\n */\r\n\r\nexport * from './lib/form-signal';\r\nexport * from './lib/types/form-signal-options';\r\nexport * from './lib/types/form-signal-type';\r\nexport * from './lib/types/form-type';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-form-signal.mjs","sources":["../../../projects/ngx-form-signal/src/lib/helpers/form-dirty-signal.ts","../../../projects/ngx-form-signal/src/lib/helpers/form-error-signal.ts","../../../projects/ngx-form-signal/src/lib/helpers/form-snapshot-signal.ts","../../../projects/ngx-form-signal/src/lib/helpers/form-status-signal.ts","../../../projects/ngx-form-signal/src/lib/helpers/form-touched-signal.ts","../../../projects/ngx-form-signal/src/lib/helpers/form-value-signal.ts","../../../projects/ngx-form-signal/src/lib/types/form-signal-options.ts","../../../projects/ngx-form-signal/src/lib/form-signal.ts","../../../projects/ngx-form-signal/src/lib/deep-form-signal.ts","../../../projects/ngx-form-signal/src/public-api.ts","../../../projects/ngx-form-signal/src/ngx-form-signal.ts"],"sourcesContent":["import { computed, effect, Signal, signal, untracked } from '@angular/core';\r\nimport { PristineChangeEvent } from '@angular/forms';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { FormSignalOptions } from '../types/form-signal-options';\r\nimport { OptionalFormFromType } from '../types/form-type';\r\n\r\nexport function buildFormDirtySignal(\r\n formAsSignal: Signal<OptionalFormFromType<any>>,\r\n options: FormSignalOptions\r\n) {\r\n const dirty$ = signal<boolean>(!!formAsSignal()?.dirty, {\r\n equal: options.equalityFns?.dirtyEquality,\r\n });\r\n const dirtyChangeSubscription$ = signal<Subscription | null>(null);\r\n\r\n const formDirtyChangeEffect = effect(\r\n (onCleanup: Function) => {\r\n const form = formAsSignal();\r\n untracked(() => {\r\n const setDirty = () => {\r\n untracked(() => {\r\n dirty$.set(!!form?.dirty);\r\n });\r\n };\r\n\r\n dirtyChangeSubscription$()?.unsubscribe();\r\n dirtyChangeSubscription$.set(\r\n form?.events\r\n .pipe(filter((e) => e instanceof PristineChangeEvent))\r\n .subscribe((e) => {\r\n setDirty();\r\n }) ?? null\r\n );\r\n setDirty();\r\n });\r\n onCleanup(\r\n () => untracked(() => dirtyChangeSubscription$())?.unsubscribe()\r\n );\r\n },\r\n { injector: options.injector }\r\n );\r\n\r\n const pristine$ = computed(() => !dirty$());\r\n\r\n return { dirty$, pristine$, dirtyChangeSubscription$ };\r\n}\r\n","import {\r\n Signal,\r\n WritableSignal,\r\n computed,\r\n isSignal,\r\n signal,\r\n} from '@angular/core';\r\nimport { FormControlStatus } from '@angular/forms';\r\nimport { FormSignalOptions } from '../types/form-signal-options';\r\nimport { FormFromType, OptionalFormFromType } from '../types/form-type';\r\n\r\nexport function buildFormErrorSignal<T = any>(\r\n form: Signal<OptionalFormFromType<T>> | OptionalFormFromType<T>,\r\n valueSignal: WritableSignal<FormFromType<T>['value'] | null>,\r\n statusSignal: WritableSignal<FormControlStatus | null>,\r\n options: FormSignalOptions<T>\r\n) {\r\n const formAsSignal = isSignal(form) ? form : signal(form);\r\n\r\n return computed(\r\n () => {\r\n const v = valueSignal();\r\n const s = statusSignal();\r\n return formAsSignal()?.errors ?? null;\r\n },\r\n { equal: options.equalityFns?.errorsEquality }\r\n );\r\n}\r\n","import { computed } from '@angular/core';\r\nimport {\r\n FormSignalState,\r\n FormSnapshotSignalState,\r\n} from '../types/form-signal-type';\r\n\r\nexport function buildFormSnapshotSignal<T = any>(\r\n formSignalState: FormSignalState<T>\r\n) {\r\n return computed<FormSnapshotSignalState<T>>(() => {\r\n return {\r\n status: formSignalState.status(),\r\n value: formSignalState.value(),\r\n rawValue: formSignalState.rawValue(),\r\n touched: formSignalState.touched(),\r\n untouched: formSignalState.untouched(),\r\n dirty: formSignalState.dirty(),\r\n pristine: formSignalState.pristine(),\r\n valid: formSignalState.valid(),\r\n invalid: formSignalState.invalid(),\r\n pending: formSignalState.pending(),\r\n disabled: formSignalState.disabled(),\r\n enabled: formSignalState.enabled(),\r\n errors: formSignalState.errors(),\r\n subscriptions: {\r\n valueChangeSubscription:\r\n formSignalState.subscriptions.valueChangeSubscription(),\r\n statusChangeSubscription:\r\n formSignalState.subscriptions.statusChangeSubscription(),\r\n touchedChangeSubscription:\r\n formSignalState.subscriptions.touchedChangeSubscription(),\r\n dirtyChangeSubscription:\r\n formSignalState.subscriptions.dirtyChangeSubscription(),\r\n },\r\n };\r\n });\r\n}\r\n","import { computed, effect, Signal, signal, untracked } from '@angular/core';\r\nimport { FormControlStatus } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormSignalOptions } from '../types/form-signal-options';\r\nimport { OptionalFormFromType } from '../types/form-type';\r\n\r\nexport function buildFormStatusSignal<T = any>(\r\n formAsSignal: Signal<OptionalFormFromType<T>>,\r\n options: FormSignalOptions<T>\r\n) {\r\n const equal = options.equalityFns?.statusEquality ?? (() => false);\r\n const status$ = signal<FormControlStatus | null>(\r\n formAsSignal()?.status ?? null,\r\n { equal }\r\n );\r\n const statusChangeSubscription$ = signal<Subscription | null>(null);\r\n const formStatusChangeEffect = effect(\r\n (onCleanup: Function) => {\r\n const form = formAsSignal();\r\n untracked(() => {\r\n const setStatus = () => {\r\n untracked(() => {\r\n status$.set(form?.status ?? null);\r\n });\r\n };\r\n\r\n statusChangeSubscription$()?.unsubscribe();\r\n statusChangeSubscription$.set(\r\n form?.statusChanges.subscribe(() => {\r\n setStatus();\r\n }) ?? null\r\n );\r\n setStatus();\r\n });\r\n onCleanup(\r\n () => untracked(() => statusChangeSubscription$())?.unsubscribe()\r\n );\r\n },\r\n { injector: options.injector }\r\n );\r\n\r\n const valid$ = computed(() => status$() === 'VALID');\r\n const invalid$ = computed(() => status$() === 'INVALID');\r\n const pending$ = computed(() => status$() == 'PENDING');\r\n const disabled$ = computed(() => status$() === 'DISABLED');\r\n const enabled$ = computed(() => status$() !== 'DISABLED');\r\n\r\n return {\r\n status$,\r\n valid$,\r\n invalid$,\r\n pending$,\r\n disabled$,\r\n enabled$,\r\n statusChangeSubscription$,\r\n };\r\n}\r\n","import { computed, effect, Signal, signal, untracked } from '@angular/core';\r\nimport { TouchedChangeEvent } from '@angular/forms';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { FormSignalOptions } from '../types/form-signal-options';\r\nimport { OptionalFormFromType } from '../types/form-type';\r\n\r\nexport function buildFormTouchedSignal(\r\n formAsSignal: Signal<OptionalFormFromType<any>>,\r\n options: FormSignalOptions\r\n) {\r\n const touched$ = signal<boolean>(!!formAsSignal()?.touched, {\r\n equal: options.equalityFns?.touchedEquality,\r\n });\r\n const touchedChangeSubscription$ = signal<Subscription | null>(null);\r\n\r\n const formTouchedChangeEffect = effect(\r\n (onCleanup: Function) => {\r\n const form = formAsSignal();\r\n untracked(() => {\r\n const setTouched = () => {\r\n untracked(() => {\r\n touched$.set(!!form?.touched);\r\n });\r\n };\r\n\r\n touchedChangeSubscription$()?.unsubscribe();\r\n touchedChangeSubscription$.set(\r\n form?.events\r\n .pipe(filter((e) => e instanceof TouchedChangeEvent))\r\n .subscribe((e) => {\r\n setTouched();\r\n }) ?? null\r\n );\r\n setTouched();\r\n });\r\n onCleanup(\r\n () => untracked(() => touchedChangeSubscription$())?.unsubscribe()\r\n );\r\n },\r\n { injector: options.injector }\r\n );\r\n\r\n const untouched$ = computed(() => !touched$(), {\r\n equal: options.equalityFns?.touchedEquality,\r\n });\r\n\r\n return { touched$, untouched$, touchedChangeSubscription$ };\r\n}\r\n","import { effect, Signal, signal, untracked } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormSignalOptions } from '../types/form-signal-options';\r\nimport { FormFromType, OptionalFormFromType } from '../types/form-type';\r\n\r\nexport function buildFormValueSignal<T = any>(\r\n formAsSignal: Signal<OptionalFormFromType<T>>,\r\n options: FormSignalOptions<T>\r\n) {\r\n const value$ = signal<FormFromType<T>['value'] | null>(\r\n formAsSignal()?.value ?? null,\r\n { equal: options.equalityFns?.valueEquality ?? (() => false) }\r\n );\r\n const rawValue$ = signal<FormFromType<T>['value'] | null>(\r\n formAsSignal()?.getRawValue() ?? null,\r\n {\r\n equal: options.equalityFns?.valueEquality ?? (() => false),\r\n }\r\n );\r\n const valueChangeSubscription$ = signal<Subscription | null>(null);\r\n const formValueChangeEffect = effect(\r\n (onCleanup: Function) => {\r\n const form = formAsSignal() as AbstractControl<T> | null;\r\n untracked(() => {\r\n const setValue = () => {\r\n untracked(() => {\r\n value$.set(form?.value ?? null);\r\n rawValue$.set(form?.getRawValue() ?? null);\r\n });\r\n };\r\n\r\n valueChangeSubscription$()?.unsubscribe();\r\n valueChangeSubscription$.set(\r\n form?.valueChanges.subscribe(() => {\r\n setValue();\r\n }) ?? null\r\n );\r\n setValue();\r\n });\r\n onCleanup(\r\n () => untracked(() => valueChangeSubscription$())?.unsubscribe()\r\n );\r\n },\r\n { injector: options.injector }\r\n );\r\n return { value$, rawValue$, valueChangeSubscription$ };\r\n}\r\n","import { Injector, ValueEqualityFn } from '@angular/core';\r\nimport { FormControlStatus, ValidationErrors } from '@angular/forms';\r\nimport { FormFromType } from './form-type';\r\n\r\nexport type FormSignalEqualityOptions<T = any> = {\r\n dirtyEquality: ValueEqualityFn<boolean>;\r\n touchedEquality: ValueEqualityFn<boolean>;\r\n valueEquality: ValueEqualityFn<FormFromType<T>['value'] | null>;\r\n statusEquality: ValueEqualityFn<FormControlStatus | null>;\r\n errorsEquality: ValueEqualityFn<ValidationErrors | null>;\r\n};\r\n\r\nexport type FormSignalOptions<T = any> = {\r\n injector?: Injector;\r\n equalityFns?: Partial<FormSignalEqualityOptions<T>>;\r\n};\r\n\r\nexport type DeepFormSignalOptions<T = any> = {\r\n injector?: Injector;\r\n equalityFns?: Partial<Omit<FormSignalEqualityOptions<T>, 'valueEquality'>>;\r\n};\r\n\r\nexport function buildDefaultFormSignalOptions<T = any>(): FormSignalOptions<T> {\r\n return {};\r\n}\r\n","import {\r\n assertInInjectionContext,\r\n isSignal,\r\n Signal,\r\n signal,\r\n} from '@angular/core';\r\nimport { buildFormDirtySignal } from './helpers/form-dirty-signal';\r\nimport { buildFormErrorSignal } from './helpers/form-error-signal';\r\nimport { buildFormSnapshotSignal } from './helpers/form-snapshot-signal';\r\nimport { buildFormStatusSignal } from './helpers/form-status-signal';\r\nimport { buildFormTouchedSignal } from './helpers/form-touched-signal';\r\nimport { buildFormValueSignal } from './helpers/form-value-signal';\r\nimport {\r\n buildDefaultFormSignalOptions,\r\n FormSignalOptions,\r\n} from './types/form-signal-options';\r\nimport { FormSignal, FormSignalState } from './types/form-signal-type';\r\nimport { OptionalFormFromType } from './types/form-type';\r\n\r\nexport function formSignal<T = any>(\r\n form: Signal<OptionalFormFromType<T>> | OptionalFormFromType<T>,\r\n options: FormSignalOptions<T> = buildDefaultFormSignalOptions<T>()\r\n): FormSignal<T> {\r\n const formAsSignal = isSignal(form) ? form : signal(form);\r\n if (!options.injector) {\r\n assertInInjectionContext(() => {});\r\n }\r\n const { value$, rawValue$, valueChangeSubscription$ } =\r\n buildFormValueSignal<T>(formAsSignal, options);\r\n const {\r\n status$,\r\n valid$,\r\n invalid$,\r\n pending$,\r\n disabled$,\r\n enabled$,\r\n statusChangeSubscription$,\r\n } = buildFormStatusSignal<T>(formAsSignal, options);\r\n const { touched$, untouched$, touchedChangeSubscription$ } =\r\n buildFormTouchedSignal(formAsSignal, options);\r\n const { dirty$, pristine$, dirtyChangeSubscription$ } = buildFormDirtySignal(\r\n formAsSignal,\r\n options\r\n );\r\n const errors$ = buildFormErrorSignal(formAsSignal, value$, status$, options);\r\n\r\n const formSignals: FormSignalState<T> = {\r\n status: status$.asReadonly(),\r\n value: value$.asReadonly(),\r\n rawValue: rawValue$.asReadonly(),\r\n touched: touched$.asReadonly(),\r\n untouched: untouched$,\r\n dirty: dirty$.asReadonly(),\r\n pristine: pristine$,\r\n valid: valid$,\r\n invalid: invalid$,\r\n pending: pending$,\r\n disabled: disabled$,\r\n enabled: enabled$,\r\n errors: errors$,\r\n subscriptions: {\r\n valueChangeSubscription: valueChangeSubscription$.asReadonly(),\r\n statusChangeSubscription: statusChangeSubscription$.asReadonly(),\r\n touchedChangeSubscription: touchedChangeSubscription$.asReadonly(),\r\n dirtyChangeSubscription: dirtyChangeSubscription$.asReadonly(),\r\n },\r\n };\r\n\r\n const snapshot$ = buildFormSnapshotSignal(formSignals) as FormSignal<T>;\r\n\r\n Object.setPrototypeOf(snapshot$, formSignals);\r\n\r\n return snapshot$;\r\n}\r\n","import { isSignal, Signal } from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\r\nimport { formSignal } from './form-signal';\r\nimport { DeepFormSignal } from './types/deep-form-signal-type';\r\nimport {\r\n buildDefaultFormSignalOptions,\r\n DeepFormSignalOptions,\r\n} from './types/form-signal-options';\r\nimport { OptionalFormFromType } from './types/form-type';\r\n\r\nexport function deepFormSignal<T = any>(\r\n form: Signal<OptionalFormFromType<T>> | OptionalFormFromType<T>,\r\n options: DeepFormSignalOptions<T> = buildDefaultFormSignalOptions<T>()\r\n): DeepFormSignal<T> {\r\n const root: DeepFormSignal<T> = formSignal<T>(\r\n form,\r\n options\r\n ) as DeepFormSignal<T>;\r\n\r\n const formVal = isSignal(form) ? form() : form;\r\n if (formVal && !(formVal instanceof FormControl)) {\r\n let children: DeepFormSignal<T>['children'] | null = null;\r\n\r\n if (formVal instanceof FormArray) {\r\n // @ts-ignore\r\n children = formVal.controls.map((c) => deepFormSignal(c, options));\r\n } else if (formVal instanceof FormGroup) {\r\n const controls = formVal.controls;\r\n const keys = Object.keys(controls);\r\n children = keys.reduce(\r\n (acc, cKey) => {\r\n // @ts-ignore\r\n acc[cKey] = deepFormSignal(controls[cKey], options);\r\n return acc;\r\n },\r\n {} as DeepFormSignal<T>['children']\r\n );\r\n }\r\n\r\n root.children = children;\r\n }\r\n\r\n return root;\r\n}\r\n","/*\r\n * Public API Surface of ngx-form-signal\r\n */\r\n\r\nexport * from './lib/deep-form-signal';\r\nexport * from './lib/form-signal';\r\nexport * from './lib/types/deep-form-signal-type';\r\nexport * from './lib/types/form-signal-options';\r\nexport * from './lib/types/form-signal-type';\r\nexport * from './lib/types/form-type';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
2
|
+
import { DeepFormSignal } from './types/deep-form-signal-type';
|
|
3
|
+
import { DeepFormSignalOptions } from './types/form-signal-options';
|
|
4
|
+
import { OptionalFormFromType } from './types/form-type';
|
|
5
|
+
export declare function deepFormSignal<T = any>(form: Signal<OptionalFormFromType<T>> | OptionalFormFromType<T>, options?: DeepFormSignalOptions<T>): DeepFormSignal<T>;
|
package/lib/form-signal.d.ts
CHANGED
|
@@ -2,4 +2,4 @@ import { Signal } from '@angular/core';
|
|
|
2
2
|
import { FormSignalOptions } from './types/form-signal-options';
|
|
3
3
|
import { FormSignal } from './types/form-signal-type';
|
|
4
4
|
import { OptionalFormFromType } from './types/form-type';
|
|
5
|
-
export declare function formSignal<T = any>(form: Signal<OptionalFormFromType<T>> | OptionalFormFromType<T>, options?: FormSignalOptions): FormSignal<T>;
|
|
5
|
+
export declare function formSignal<T = any>(form: Signal<OptionalFormFromType<T>> | OptionalFormFromType<T>, options?: FormSignalOptions<T>): FormSignal<T>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FormArray, FormControl, FormGroup } from '@angular/forms';
|
|
2
|
+
import { FormSignal } from './form-signal-type';
|
|
3
|
+
import { FormFromType } from './form-type';
|
|
4
|
+
type DeepFormSignalNestedHelper<T, K> = FormFromType<T> extends FormGroup | FormArray ? K extends keyof FormFromType<T>['controls'] ? FormFromType<T>['controls'][K] extends FormControl ? FormSignal<FormFromType<T>['controls'][K]['value']> : FormFromType<T>['controls'][K] extends FormGroup ? DeepFormSignal<FormFromType<T>['controls'][K]['controls']> : FormFromType<T>['controls'][K] extends FormArray ? DeepFormSignal<FormFromType<T>['controls'][K]['controls']> : never : never : never;
|
|
5
|
+
export type DeepFormSignalChildren<T = any> = FormFromType<T> extends FormControl ? FormSignal<T> : FormFromType<T> extends FormGroup ? FormFromType<T>['controls'] extends Array<any> ? {
|
|
6
|
+
[K: number]: DeepFormSignalNestedHelper<T, number>;
|
|
7
|
+
} : {
|
|
8
|
+
[K in keyof FormFromType<T>['controls']]: DeepFormSignalNestedHelper<T, K>;
|
|
9
|
+
} : FormFromType<T> extends FormArray ? {
|
|
10
|
+
[K: number]: DeepFormSignalNestedHelper<T, number>;
|
|
11
|
+
} : null;
|
|
12
|
+
export type DeepFormSignal<T = any> = FormSignal<T> & (FormFromType<T> extends FormControl ? {
|
|
13
|
+
children: null;
|
|
14
|
+
} : {
|
|
15
|
+
children: DeepFormSignalChildren<T>;
|
|
16
|
+
});
|
|
17
|
+
export {};
|
|
@@ -12,5 +12,8 @@ export type FormSignalOptions<T = any> = {
|
|
|
12
12
|
injector?: Injector;
|
|
13
13
|
equalityFns?: Partial<FormSignalEqualityOptions<T>>;
|
|
14
14
|
};
|
|
15
|
-
export
|
|
15
|
+
export type DeepFormSignalOptions<T = any> = {
|
|
16
|
+
injector?: Injector;
|
|
17
|
+
equalityFns?: Partial<Omit<FormSignalEqualityOptions<T>, 'valueEquality'>>;
|
|
18
|
+
};
|
|
16
19
|
export declare function buildDefaultFormSignalOptions<T = any>(): FormSignalOptions<T>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Signal } from '@angular/core';
|
|
1
2
|
import { buildFormDirtySignal } from '../helpers/form-dirty-signal';
|
|
2
3
|
import { buildFormErrorSignal } from '../helpers/form-error-signal';
|
|
3
4
|
import { buildFormStatusSignal } from '../helpers/form-status-signal';
|
|
@@ -33,4 +34,4 @@ export type FormSnapshotSignalState<T = any> = {
|
|
|
33
34
|
} & {
|
|
34
35
|
subscriptions: FormSnapshotSignalSubscriptionsState<T>;
|
|
35
36
|
};
|
|
36
|
-
export type FormSignal<T = any> = FormSignalState<T> &
|
|
37
|
+
export type FormSignal<T = any> = FormSignalState<T> & Signal<FormSnapshotSignalState<T>>;
|
package/lib/types/form-type.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
|
|
2
2
|
export type FormFromType<T> = T extends {
|
|
3
3
|
[K in keyof T]: AbstractControl<any>;
|
|
4
|
-
} ? FormGroup<T> : T extends AbstractControl<any> ? FormArray<T> : FormControl<T>;
|
|
5
|
-
export type OptionalFormFromType<T = any> =
|
|
6
|
-
[K in keyof T]: AbstractControl<any>;
|
|
7
|
-
} ? FormGroup<T> : never) | FormControl<T> | (T extends AbstractControl<any> ? FormArray<T> : never) | null;
|
|
4
|
+
} ? FormGroup<T> : T extends AbstractControl<any> ? FormArray<T> : T extends AbstractControl<any>[] ? FormArray<T[0]> : FormControl<T>;
|
|
5
|
+
export type OptionalFormFromType<T = any> = FormFromType<T> | FormControl<T> | null;
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-form-signal",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.3",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "
|
|
6
|
-
"@angular/core": "
|
|
7
|
-
"@angular/forms": "
|
|
5
|
+
"@angular/common": ">=18.0.0",
|
|
6
|
+
"@angular/core": ">=18.0.0",
|
|
7
|
+
"@angular/forms": ">=18.0.0"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"tslib": "^2.3.0"
|
package/public-api.d.ts
CHANGED