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.
@@ -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
- const formSignalObj = (() => snapshot$());
42
- Object.setPrototypeOf(formSignalObj, formSignals);
43
- return formSignalObj;
41
+ Object.setPrototypeOf(snapshot$, formSignals);
42
+ return snapshot$;
44
43
  }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zaWduYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybS1zaWduYWwvc3JjL2xpYi9mb3JtLXNpZ25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0osd0JBQXdCLEVBQ3hCLFFBQVEsRUFFUixNQUFNLEdBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUNKLDZCQUE2QixHQUUvQixNQUFNLDZCQUE2QixDQUFDO0FBSXJDLE1BQU0sVUFBVSxVQUFVLENBQ3ZCLElBQStELEVBQy9ELFVBQTZCLDZCQUE2QixFQUFLO0lBRS9ELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQix3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUUsR0FDbEQsb0JBQW9CLENBQUksWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sRUFDSCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsRUFDUixRQUFRLEVBQ1IsU0FBUyxFQUNULFFBQVEsRUFDUix5QkFBeUIsR0FDM0IsR0FBRyxxQkFBcUIsQ0FBSSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsMEJBQTBCLEVBQUUsR0FDdkQsc0JBQXNCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLEdBQUcsb0JBQW9CLENBQ3pFLFlBQVksRUFDWixPQUFPLENBQ1QsQ0FBQztJQUNGLE1BQU0sT0FBTyxHQUFHLG9CQUFvQixDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTdFLE1BQU0sV0FBVyxHQUF1QjtRQUNyQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRTtRQUM1QixLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUMxQixRQUFRLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRTtRQUNoQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRTtRQUM5QixTQUFTLEVBQUUsVUFBVTtRQUNyQixLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUMxQixRQUFRLEVBQUUsU0FBUztRQUNuQixLQUFLLEVBQUUsTUFBTTtRQUNiLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLE1BQU0sRUFBRSxPQUFPO1FBQ2YsYUFBYSxFQUFFO1lBQ1osdUJBQXVCLEVBQUUsd0JBQXdCLENBQUMsVUFBVSxFQUFFO1lBQzlELHdCQUF3QixFQUFFLHlCQUF5QixDQUFDLFVBQVUsRUFBRTtZQUNoRSx5QkFBeUIsRUFBRSwwQkFBMEIsQ0FBQyxVQUFVLEVBQUU7WUFDbEUsdUJBQXVCLEVBQUUsd0JBQXdCLENBQUMsVUFBVSxFQUFFO1NBQ2hFO0tBQ0gsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUFHLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQWtCLENBQUM7SUFFM0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFbEQsT0FBTyxhQUFhLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCxcclxuICAgaXNTaWduYWwsXHJcbiAgIFNpZ25hbCxcclxuICAgc2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBidWlsZEZvcm1EaXJ0eVNpZ25hbCB9IGZyb20gJy4vaGVscGVycy9mb3JtLWRpcnR5LXNpZ25hbCc7XHJcbmltcG9ydCB7IGJ1aWxkRm9ybUVycm9yU2lnbmFsIH0gZnJvbSAnLi9oZWxwZXJzL2Zvcm0tZXJyb3Itc2lnbmFsJztcclxuaW1wb3J0IHsgYnVpbGRGb3JtU25hcHNob3RTaWduYWwgfSBmcm9tICcuL2hlbHBlcnMvZm9ybS1zbmFwc2hvdC1zaWduYWwnO1xyXG5pbXBvcnQgeyBidWlsZEZvcm1TdGF0dXNTaWduYWwgfSBmcm9tICcuL2hlbHBlcnMvZm9ybS1zdGF0dXMtc2lnbmFsJztcclxuaW1wb3J0IHsgYnVpbGRGb3JtVG91Y2hlZFNpZ25hbCB9IGZyb20gJy4vaGVscGVycy9mb3JtLXRvdWNoZWQtc2lnbmFsJztcclxuaW1wb3J0IHsgYnVpbGRGb3JtVmFsdWVTaWduYWwgfSBmcm9tICcuL2hlbHBlcnMvZm9ybS12YWx1ZS1zaWduYWwnO1xyXG5pbXBvcnQge1xyXG4gICBidWlsZERlZmF1bHRGb3JtU2lnbmFsT3B0aW9ucyxcclxuICAgRm9ybVNpZ25hbE9wdGlvbnMsXHJcbn0gZnJvbSAnLi90eXBlcy9mb3JtLXNpZ25hbC1vcHRpb25zJztcclxuaW1wb3J0IHsgRm9ybVNpZ25hbCwgRm9ybVNpZ25hbFN0YXRlIH0gZnJvbSAnLi90eXBlcy9mb3JtLXNpZ25hbC10eXBlJztcclxuaW1wb3J0IHsgT3B0aW9uYWxGb3JtRnJvbVR5cGUgfSBmcm9tICcuL3R5cGVzL2Zvcm0tdHlwZSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9ybVNpZ25hbDxUID0gYW55PihcclxuICAgZm9ybTogU2lnbmFsPE9wdGlvbmFsRm9ybUZyb21UeXBlPFQ+PiB8IE9wdGlvbmFsRm9ybUZyb21UeXBlPFQ+LFxyXG4gICBvcHRpb25zOiBGb3JtU2lnbmFsT3B0aW9ucyA9IGJ1aWxkRGVmYXVsdEZvcm1TaWduYWxPcHRpb25zPFQ+KClcclxuKTogRm9ybVNpZ25hbDxUPiB7XHJcbiAgIGNvbnN0IGZvcm1Bc1NpZ25hbCA9IGlzU2lnbmFsKGZvcm0pID8gZm9ybSA6IHNpZ25hbChmb3JtKTtcclxuICAgaWYgKCFvcHRpb25zLmluamVjdG9yKSB7XHJcbiAgICAgIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCgoKSA9PiB7fSk7XHJcbiAgIH1cclxuICAgY29uc3QgeyB2YWx1ZSQsIHJhd1ZhbHVlJCwgdmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24kIH0gPVxyXG4gICAgICBidWlsZEZvcm1WYWx1ZVNpZ25hbDxUPihmb3JtQXNTaWduYWwsIG9wdGlvbnMpO1xyXG4gICBjb25zdCB7XHJcbiAgICAgIHN0YXR1cyQsXHJcbiAgICAgIHZhbGlkJCxcclxuICAgICAgaW52YWxpZCQsXHJcbiAgICAgIHBlbmRpbmckLFxyXG4gICAgICBkaXNhYmxlZCQsXHJcbiAgICAgIGVuYWJsZWQkLFxyXG4gICAgICBzdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb24kLFxyXG4gICB9ID0gYnVpbGRGb3JtU3RhdHVzU2lnbmFsPFQ+KGZvcm1Bc1NpZ25hbCwgb3B0aW9ucyk7XHJcbiAgIGNvbnN0IHsgdG91Y2hlZCQsIHVudG91Y2hlZCQsIHRvdWNoZWRDaGFuZ2VTdWJzY3JpcHRpb24kIH0gPVxyXG4gICAgICBidWlsZEZvcm1Ub3VjaGVkU2lnbmFsKGZvcm1Bc1NpZ25hbCwgb3B0aW9ucyk7XHJcbiAgIGNvbnN0IHsgZGlydHkkLCBwcmlzdGluZSQsIGRpcnR5Q2hhbmdlU3Vic2NyaXB0aW9uJCB9ID0gYnVpbGRGb3JtRGlydHlTaWduYWwoXHJcbiAgICAgIGZvcm1Bc1NpZ25hbCxcclxuICAgICAgb3B0aW9uc1xyXG4gICApO1xyXG4gICBjb25zdCBlcnJvcnMkID0gYnVpbGRGb3JtRXJyb3JTaWduYWwoZm9ybUFzU2lnbmFsLCB2YWx1ZSQsIHN0YXR1cyQsIG9wdGlvbnMpO1xyXG5cclxuICAgY29uc3QgZm9ybVNpZ25hbHM6IEZvcm1TaWduYWxTdGF0ZTxUPiA9IHtcclxuICAgICAgc3RhdHVzOiBzdGF0dXMkLmFzUmVhZG9ubHkoKSxcclxuICAgICAgdmFsdWU6IHZhbHVlJC5hc1JlYWRvbmx5KCksXHJcbiAgICAgIHJhd1ZhbHVlOiByYXdWYWx1ZSQuYXNSZWFkb25seSgpLFxyXG4gICAgICB0b3VjaGVkOiB0b3VjaGVkJC5hc1JlYWRvbmx5KCksXHJcbiAgICAgIHVudG91Y2hlZDogdW50b3VjaGVkJCxcclxuICAgICAgZGlydHk6IGRpcnR5JC5hc1JlYWRvbmx5KCksXHJcbiAgICAgIHByaXN0aW5lOiBwcmlzdGluZSQsXHJcbiAgICAgIHZhbGlkOiB2YWxpZCQsXHJcbiAgICAgIGludmFsaWQ6IGludmFsaWQkLFxyXG4gICAgICBwZW5kaW5nOiBwZW5kaW5nJCxcclxuICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkJCxcclxuICAgICAgZW5hYmxlZDogZW5hYmxlZCQsXHJcbiAgICAgIGVycm9yczogZXJyb3JzJCxcclxuICAgICAgc3Vic2NyaXB0aW9uczoge1xyXG4gICAgICAgICB2YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbjogdmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24kLmFzUmVhZG9ubHkoKSxcclxuICAgICAgICAgc3RhdHVzQ2hhbmdlU3Vic2NyaXB0aW9uOiBzdGF0dXNDaGFuZ2VTdWJzY3JpcHRpb24kLmFzUmVhZG9ubHkoKSxcclxuICAgICAgICAgdG91Y2hlZENoYW5nZVN1YnNjcmlwdGlvbjogdG91Y2hlZENoYW5nZVN1YnNjcmlwdGlvbiQuYXNSZWFkb25seSgpLFxyXG4gICAgICAgICBkaXJ0eUNoYW5nZVN1YnNjcmlwdGlvbjogZGlydHlDaGFuZ2VTdWJzY3JpcHRpb24kLmFzUmVhZG9ubHkoKSxcclxuICAgICAgfSxcclxuICAgfTtcclxuXHJcbiAgIGNvbnN0IHNuYXBzaG90JCA9IGJ1aWxkRm9ybVNuYXBzaG90U2lnbmFsKGZvcm1TaWduYWxzKTtcclxuICAgY29uc3QgZm9ybVNpZ25hbE9iaiA9ICgoKSA9PiBzbmFwc2hvdCQoKSkgYXMgRm9ybVNpZ25hbDxUPjtcclxuXHJcbiAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihmb3JtU2lnbmFsT2JqLCBmb3JtU2lnbmFscyk7XHJcblxyXG4gICByZXR1cm4gZm9ybVNpZ25hbE9iajtcclxufVxyXG4iXX0=
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 structuredClone(defaultFormSignalOptions);
2
+ return {};
4
3
  }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zaWduYWwtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtLXNpZ25hbC9zcmMvbGliL3R5cGVzL2Zvcm0tc2lnbmFsLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFzQixFQUFFLENBQUM7QUFDOUQsTUFBTSxVQUFVLDZCQUE2QjtJQUMxQyxPQUFPLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgVmFsdWVFcXVhbGl0eUZuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sU3RhdHVzLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtRnJvbVR5cGUgfSBmcm9tICcuL2Zvcm0tdHlwZSc7XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtU2lnbmFsRXF1YWxpdHlPcHRpb25zPFQgPSBhbnk+ID0ge1xyXG4gICBkaXJ0eUVxdWFsaXR5OiBWYWx1ZUVxdWFsaXR5Rm48Ym9vbGVhbj47XHJcbiAgIHRvdWNoZWRFcXVhbGl0eTogVmFsdWVFcXVhbGl0eUZuPGJvb2xlYW4+O1xyXG4gICB2YWx1ZUVxdWFsaXR5OiBWYWx1ZUVxdWFsaXR5Rm48Rm9ybUZyb21UeXBlPFQ+Wyd2YWx1ZSddIHwgbnVsbD47XHJcbiAgIHN0YXR1c0VxdWFsaXR5OiBWYWx1ZUVxdWFsaXR5Rm48Rm9ybUNvbnRyb2xTdGF0dXMgfCBudWxsPjtcclxuICAgZXJyb3JzRXF1YWxpdHk6IFZhbHVlRXF1YWxpdHlGbjxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD47XHJcbn07XHJcbmV4cG9ydCB0eXBlIEZvcm1TaWduYWxPcHRpb25zPFQgPSBhbnk+ID0ge1xyXG4gICBpbmplY3Rvcj86IEluamVjdG9yO1xyXG4gICBlcXVhbGl0eUZucz86IFBhcnRpYWw8Rm9ybVNpZ25hbEVxdWFsaXR5T3B0aW9uczxUPj47XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZGVmYXVsdEZvcm1TaWduYWxPcHRpb25zOiBGb3JtU2lnbmFsT3B0aW9ucyA9IHt9O1xyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGREZWZhdWx0Rm9ybVNpZ25hbE9wdGlvbnM8VCA9IGFueT4oKTogRm9ybVNpZ25hbE9wdGlvbnM8VD4ge1xyXG4gICByZXR1cm4gc3RydWN0dXJlZENsb25lKGRlZmF1bHRGb3JtU2lnbmFsT3B0aW9ucyk7XHJcbn1cclxuIl19
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zaWduYWwtdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtLXNpZ25hbC9zcmMvbGliL3R5cGVzL2Zvcm0tc2lnbmFsLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJ1aWxkRm9ybURpcnR5U2lnbmFsIH0gZnJvbSAnLi4vaGVscGVycy9mb3JtLWRpcnR5LXNpZ25hbCc7XHJcbmltcG9ydCB7IGJ1aWxkRm9ybUVycm9yU2lnbmFsIH0gZnJvbSAnLi4vaGVscGVycy9mb3JtLWVycm9yLXNpZ25hbCc7XHJcbmltcG9ydCB7IGJ1aWxkRm9ybVN0YXR1c1NpZ25hbCB9IGZyb20gJy4uL2hlbHBlcnMvZm9ybS1zdGF0dXMtc2lnbmFsJztcclxuaW1wb3J0IHsgYnVpbGRGb3JtVG91Y2hlZFNpZ25hbCB9IGZyb20gJy4uL2hlbHBlcnMvZm9ybS10b3VjaGVkLXNpZ25hbCc7XHJcbmltcG9ydCB7IGJ1aWxkRm9ybVZhbHVlU2lnbmFsIH0gZnJvbSAnLi4vaGVscGVycy9mb3JtLXZhbHVlLXNpZ25hbCc7XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtU2lnbmFsU3Vic2NyaXB0aW9uc1N0YXRlPFQgPSBhbnk+ID0ge1xyXG4gICB2YWx1ZUNoYW5nZVN1YnNjcmlwdGlvbjogUmV0dXJuVHlwZTxcclxuICAgICAgUmV0dXJuVHlwZTxcclxuICAgICAgICAgdHlwZW9mIGJ1aWxkRm9ybVZhbHVlU2lnbmFsPFQ+XHJcbiAgICAgID5bJ3ZhbHVlQ2hhbmdlU3Vic2NyaXB0aW9uJCddWydhc1JlYWRvbmx5J11cclxuICAgPjtcclxuICAgc3RhdHVzQ2hhbmdlU3Vic2NyaXB0aW9uOiBSZXR1cm5UeXBlPFxyXG4gICAgICBSZXR1cm5UeXBlPFxyXG4gICAgICAgICB0eXBlb2YgYnVpbGRGb3JtU3RhdHVzU2lnbmFsXHJcbiAgICAgID5bJ3N0YXR1c0NoYW5nZVN1YnNjcmlwdGlvbiQnXVsnYXNSZWFkb25seSddXHJcbiAgID47XHJcbiAgIHRvdWNoZWRDaGFuZ2VTdWJzY3JpcHRpb246IFJldHVyblR5cGU8XHJcbiAgICAgIFJldHVyblR5cGU8XHJcbiAgICAgICAgIHR5cGVvZiBidWlsZEZvcm1Ub3VjaGVkU2lnbmFsXHJcbiAgICAgID5bJ3RvdWNoZWRDaGFuZ2VTdWJzY3JpcHRpb24kJ11bJ2FzUmVhZG9ubHknXVxyXG4gICA+O1xyXG4gICBkaXJ0eUNoYW5nZVN1YnNjcmlwdGlvbjogUmV0dXJuVHlwZTxcclxuICAgICAgUmV0dXJuVHlwZTxcclxuICAgICAgICAgdHlwZW9mIGJ1aWxkRm9ybURpcnR5U2lnbmFsXHJcbiAgICAgID5bJ2RpcnR5Q2hhbmdlU3Vic2NyaXB0aW9uJCddWydhc1JlYWRvbmx5J11cclxuICAgPjtcclxufTtcclxuZXhwb3J0IHR5cGUgRm9ybVNpZ25hbFN0YXRlPFQgPSBhbnk+ID0ge1xyXG4gICBzdGF0dXM6IFJldHVyblR5cGU8XHJcbiAgICAgIFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkRm9ybVN0YXR1c1NpZ25hbD5bJ3N0YXR1cyQnXVsnYXNSZWFkb25seSddXHJcbiAgID47XHJcbiAgIHZhbHVlOiBSZXR1cm5UeXBlPFxyXG4gICAgICBSZXR1cm5UeXBlPHR5cGVvZiBidWlsZEZvcm1WYWx1ZVNpZ25hbDxUPj5bJ3ZhbHVlJCddWydhc1JlYWRvbmx5J11cclxuICAgPjtcclxuICAgcmF3VmFsdWU6IFJldHVyblR5cGU8XHJcbiAgICAgIFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkRm9ybVZhbHVlU2lnbmFsPFQ+PlsncmF3VmFsdWUkJ11bJ2FzUmVhZG9ubHknXVxyXG4gICA+O1xyXG4gICB0b3VjaGVkOiBSZXR1cm5UeXBlPFxyXG4gICAgICBSZXR1cm5UeXBlPHR5cGVvZiBidWlsZEZvcm1Ub3VjaGVkU2lnbmFsPlsndG91Y2hlZCQnXVsnYXNSZWFkb25seSddXHJcbiAgID47XHJcbiAgIHVudG91Y2hlZDogUmV0dXJuVHlwZTx0eXBlb2YgYnVpbGRGb3JtVG91Y2hlZFNpZ25hbD5bJ3VudG91Y2hlZCQnXTtcclxuICAgZGlydHk6IFJldHVyblR5cGU8XHJcbiAgICAgIFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkRm9ybURpcnR5U2lnbmFsPlsnZGlydHkkJ11bJ2FzUmVhZG9ubHknXVxyXG4gICA+O1xyXG4gICBwcmlzdGluZTogUmV0dXJuVHlwZTx0eXBlb2YgYnVpbGRGb3JtRGlydHlTaWduYWw+WydwcmlzdGluZSQnXTtcclxuICAgdmFsaWQ6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkRm9ybVN0YXR1c1NpZ25hbD5bJ3ZhbGlkJCddO1xyXG4gICBpbnZhbGlkOiBSZXR1cm5UeXBlPHR5cGVvZiBidWlsZEZvcm1TdGF0dXNTaWduYWw+WydpbnZhbGlkJCddO1xyXG4gICBwZW5kaW5nOiBSZXR1cm5UeXBlPHR5cGVvZiBidWlsZEZvcm1TdGF0dXNTaWduYWw+WydwZW5kaW5nJCddO1xyXG4gICBkaXNhYmxlZDogUmV0dXJuVHlwZTx0eXBlb2YgYnVpbGRGb3JtU3RhdHVzU2lnbmFsPlsnZGlzYWJsZWQkJ107XHJcbiAgIGVuYWJsZWQ6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkRm9ybVN0YXR1c1NpZ25hbD5bJ2VuYWJsZWQkJ107XHJcbiAgIGVycm9yczogUmV0dXJuVHlwZTx0eXBlb2YgYnVpbGRGb3JtRXJyb3JTaWduYWw+O1xyXG4gICBzdWJzY3JpcHRpb25zOiBGb3JtU2lnbmFsU3Vic2NyaXB0aW9uc1N0YXRlPFQ+O1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgRm9ybVNuYXBzaG90U2lnbmFsU3Vic2NyaXB0aW9uc1N0YXRlPFQgPSBhbnk+ID0ge1xyXG4gICBbeCBpbiBrZXlvZiBGb3JtU2lnbmFsU3Vic2NyaXB0aW9uc1N0YXRlPFQ+XTogUmV0dXJuVHlwZTxcclxuICAgICAgRm9ybVNpZ25hbFN1YnNjcmlwdGlvbnNTdGF0ZTxUPlt4XVxyXG4gICA+O1xyXG59O1xyXG5leHBvcnQgdHlwZSBGb3JtU25hcHNob3RTaWduYWxTdGF0ZTxUID0gYW55PiA9IHtcclxuICAgW3ggaW4ga2V5b2YgT21pdDxGb3JtU2lnbmFsU3RhdGU8VD4sICdzdWJzY3JpcHRpb25zJz5dOiBSZXR1cm5UeXBlPFxyXG4gICAgICBGb3JtU2lnbmFsU3RhdGU8VD5beF1cclxuICAgPjtcclxufSAmIHsgc3Vic2NyaXB0aW9uczogRm9ybVNuYXBzaG90U2lnbmFsU3Vic2NyaXB0aW9uc1N0YXRlPFQ+IH07XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtU2lnbmFsPFQgPSBhbnk+ID0gRm9ybVNpZ25hbFN0YXRlPFQ+ICZcclxuICAgKCgpID0+IEZvcm1TbmFwc2hvdFNpZ25hbFN0YXRlPFQ+KTtcclxuIl19
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+XHJcbiAgICAgOiBGb3JtQ29udHJvbDxUPjtcclxuXHJcbmV4cG9ydCB0eXBlIE9wdGlvbmFsRm9ybUZyb21UeXBlPFQgPSBhbnk+ID1cclxuICAgfCAoVCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnk+IH0gPyBGb3JtR3JvdXA8VD4gOiBuZXZlcilcclxuICAgfCBGb3JtQ29udHJvbDxUPlxyXG4gICB8IChUIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPGFueT4gPyBGb3JtQXJyYXk8VD4gOiBuZXZlcilcclxuICAgfCBudWxsO1xyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm0tc2lnbmFsL3NyYy9saWIvdHlwZXMvZm9ybS10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgIEZvcm1BcnJheSxcclxuICAgRm9ybUNvbnRyb2wsXHJcbiAgIEZvcm1Hcm91cCxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgdHlwZSBGb3JtRnJvbVR5cGU8VD4gPSBUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sPGFueT4gfVxyXG4gICA/IEZvcm1Hcm91cDxUPlxyXG4gICA6IFQgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2w8YW55PlxyXG4gICAgID8gRm9ybUFycmF5PFQ+XHJcbiAgICAgOiBUIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPGFueT5bXVxyXG4gICAgICAgPyBGb3JtQXJyYXk8VFswXT5cclxuICAgICAgIDogRm9ybUNvbnRyb2w8VD47XHJcblxyXG5leHBvcnQgdHlwZSBPcHRpb25hbEZvcm1Gcm9tVHlwZTxUID0gYW55PiA9XHJcbiAgIHwgRm9ybUZyb21UeXBlPFQ+XHJcbiAgIHwgRm9ybUNvbnRyb2w8VD5cclxuICAgfCBudWxsO1xyXG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtLXNpZ25hbC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LWZvcm0tc2lnbmFsXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS1zaWduYWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90eXBlcy9mb3JtLXNpZ25hbC1vcHRpb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMvZm9ybS1zaWduYWwtdHlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzL2Zvcm0tdHlwZSc7XHJcbiJdfQ==
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 structuredClone(defaultFormSignalOptions);
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
- const formSignalObj = (() => snapshot$());
196
- Object.setPrototypeOf(formSignalObj, formSignals);
197
- return formSignalObj;
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, defaultFormSignalOptions, formSignal };
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>;
@@ -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 declare const defaultFormSignalOptions: FormSignalOptions;
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> & (() => FormSnapshotSignalState<T>);
37
+ export type FormSignal<T = any> = FormSignalState<T> & Signal<FormSnapshotSignalState<T>>;
@@ -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> = (T extends {
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.1",
3
+ "version": "1.18.3",
4
4
  "peerDependencies": {
5
- "@angular/common": "^18.2.0",
6
- "@angular/core": "^18.2.0",
7
- "@angular/forms": "^18.2.0"
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
@@ -1,4 +1,6 @@
1
+ export * from './lib/deep-form-signal';
1
2
  export * from './lib/form-signal';
3
+ export * from './lib/types/deep-form-signal-type';
2
4
  export * from './lib/types/form-signal-options';
3
5
  export * from './lib/types/form-signal-type';
4
6
  export * from './lib/types/form-type';