@zod-to-form/react 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +142 -0
- package/dist/FieldRenderer.d.ts +11 -2
- package/dist/FieldRenderer.d.ts.map +1 -1
- package/dist/FieldRenderer.js +131 -27
- package/dist/FieldRenderer.js.map +1 -1
- package/dist/ZodForm.d.ts +7 -3
- package/dist/ZodForm.d.ts.map +1 -1
- package/dist/ZodForm.js +8 -4
- package/dist/ZodForm.js.map +1 -1
- package/dist/components/Checkbox.d.ts +1 -1
- package/dist/components/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox.js +3 -2
- package/dist/components/Checkbox.js.map +1 -1
- package/dist/components/Combobox.d.ts +1 -1
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +3 -2
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/DatePicker.d.ts +1 -1
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker.js +3 -2
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/FileInput.d.ts +1 -1
- package/dist/components/FileInput.d.ts.map +1 -1
- package/dist/components/FileInput.js +3 -2
- package/dist/components/FileInput.js.map +1 -1
- package/dist/components/Input.d.ts +1 -1
- package/dist/components/Input.d.ts.map +1 -1
- package/dist/components/Input.js +3 -2
- package/dist/components/Input.js.map +1 -1
- package/dist/components/RadioGroup.d.ts +1 -1
- package/dist/components/RadioGroup.d.ts.map +1 -1
- package/dist/components/RadioGroup.js +3 -2
- package/dist/components/RadioGroup.js.map +1 -1
- package/dist/components/Select.d.ts +1 -1
- package/dist/components/Select.d.ts.map +1 -1
- package/dist/components/Select.js +3 -2
- package/dist/components/Select.js.map +1 -1
- package/dist/components/Switch.d.ts +1 -1
- package/dist/components/Switch.d.ts.map +1 -1
- package/dist/components/Switch.js +3 -2
- package/dist/components/Switch.js.map +1 -1
- package/dist/components/Textarea.d.ts +1 -1
- package/dist/components/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea.js +3 -2
- package/dist/components/Textarea.js.map +1 -1
- package/dist/components/index.d.ts +24 -26
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +8 -8
- package/dist/components/index.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/shadcn/index.d.ts +22 -17
- package/dist/shadcn/index.d.ts.map +1 -1
- package/dist/shadcn/index.js +16 -16
- package/dist/shadcn/index.js.map +1 -1
- package/dist/useZodForm.d.ts +5 -3
- package/dist/useZodForm.d.ts.map +1 -1
- package/dist/useZodForm.js +21 -3
- package/dist/useZodForm.js.map +1 -1
- package/package.json +4 -4
package/README.md
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/pradeepmouli/zod-to-form/master/attached_assets/banner.svg" alt="zod-to-form banner" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# @zod-to-form/react
|
|
6
|
+
|
|
7
|
+
Runtime React renderer for Zod v4 schemas.
|
|
8
|
+
|
|
9
|
+
`@zod-to-form/react` integrates `@zod-to-form/core` with React Hook Form and renders schema-driven forms using `ZodForm` and `useZodForm`.
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pnpm add @zod-to-form/react @zod-to-form/core zod react react-hook-form @hookform/resolvers
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Requirements
|
|
18
|
+
|
|
19
|
+
- React 18+ (React 19 supported)
|
|
20
|
+
- React Hook Form 7+
|
|
21
|
+
- Zod v4
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
```tsx
|
|
26
|
+
import { z } from 'zod';
|
|
27
|
+
import { ZodForm } from '@zod-to-form/react';
|
|
28
|
+
|
|
29
|
+
const userSchema = z.object({
|
|
30
|
+
name: z.string().min(1),
|
|
31
|
+
email: z.string().email(),
|
|
32
|
+
subscribe: z.boolean().default(false)
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export function UserForm() {
|
|
36
|
+
return (
|
|
37
|
+
<ZodForm
|
|
38
|
+
schema={userSchema}
|
|
39
|
+
mode='onSubmit'
|
|
40
|
+
onSubmit={(data) => {
|
|
41
|
+
console.log('submitted', data);
|
|
42
|
+
}}
|
|
43
|
+
>
|
|
44
|
+
<button type='submit'>Save</button>
|
|
45
|
+
</ZodForm>
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## API
|
|
51
|
+
|
|
52
|
+
### `ZodForm`
|
|
53
|
+
|
|
54
|
+
Props:
|
|
55
|
+
|
|
56
|
+
- `schema`: Zod object schema (required)
|
|
57
|
+
- `onSubmit`: submit handler with parsed schema output
|
|
58
|
+
- `onValueChange`: called with parsed output on valid field updates
|
|
59
|
+
- `mode`: `'onSubmit' | 'onChange' | 'onBlur'`
|
|
60
|
+
- `defaultValues`: partial initial values
|
|
61
|
+
- `components`: partial override map for default components
|
|
62
|
+
- `componentConfig`: runtime component mapping/field overrides
|
|
63
|
+
- `formRegistry`: metadata registry from `@zod-to-form/core`
|
|
64
|
+
- `processors`: custom/override processors from `@zod-to-form/core`
|
|
65
|
+
- `className`: class passed to `<form>`
|
|
66
|
+
- `children`: rendered inside the `<form>` (typically actions)
|
|
67
|
+
|
|
68
|
+
### `useZodForm`
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
|
|
72
|
+
- `form`: React Hook Form instance
|
|
73
|
+
- `fields`: walked `FormField[]` descriptors from schema
|
|
74
|
+
|
|
75
|
+
```tsx
|
|
76
|
+
import { z } from 'zod';
|
|
77
|
+
import { useZodForm } from '@zod-to-form/react';
|
|
78
|
+
|
|
79
|
+
const schema = z.object({ title: z.string().min(1) });
|
|
80
|
+
|
|
81
|
+
export function Example() {
|
|
82
|
+
const { form, fields } = useZodForm(schema, {
|
|
83
|
+
mode: 'onChange',
|
|
84
|
+
onValueChange: (values) => {
|
|
85
|
+
console.log(values);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
return <pre>{JSON.stringify({ fieldCount: fields.length, dirty: form.formState.isDirty })}</pre>;
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Components
|
|
94
|
+
|
|
95
|
+
### `defaultComponentMap`
|
|
96
|
+
|
|
97
|
+
Built-in default component map used by `ZodForm`.
|
|
98
|
+
|
|
99
|
+
### `shadcnComponentMap`
|
|
100
|
+
|
|
101
|
+
Shadcn-oriented component map export.
|
|
102
|
+
|
|
103
|
+
## Runtime Component Config
|
|
104
|
+
|
|
105
|
+
Use `componentConfig` to map field types and specific field paths to custom components at runtime.
|
|
106
|
+
|
|
107
|
+
```tsx
|
|
108
|
+
import { ZodForm } from '@zod-to-form/react';
|
|
109
|
+
import type { RuntimeComponentConfig } from '@zod-to-form/react';
|
|
110
|
+
|
|
111
|
+
const componentConfig: RuntimeComponentConfig = {
|
|
112
|
+
components: '@/components/form-components',
|
|
113
|
+
fieldTypes: {
|
|
114
|
+
Input: { component: 'TextInput' },
|
|
115
|
+
textarea: { component: 'TextareaInput' }
|
|
116
|
+
},
|
|
117
|
+
fields: {
|
|
118
|
+
'profile.bio': {
|
|
119
|
+
fieldType: 'textarea',
|
|
120
|
+
props: { rows: 6 }
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// <ZodForm schema={schema} componentConfig={componentConfig} />
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Accessibility
|
|
129
|
+
|
|
130
|
+
- Uses native form semantics (`<form>`, labels, fieldsets/legends where applicable)
|
|
131
|
+
- Supports error propagation from React Hook Form state into rendered fields
|
|
132
|
+
- Includes accessibility-focused integration tests in this package
|
|
133
|
+
|
|
134
|
+
## Development
|
|
135
|
+
|
|
136
|
+
From repository root:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
pnpm --filter @zod-to-form/react run build
|
|
140
|
+
pnpm --filter @zod-to-form/react run test
|
|
141
|
+
pnpm --filter @zod-to-form/react run type-check
|
|
142
|
+
```
|
package/dist/FieldRenderer.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import type { FormField } from '@zod-to-form/core';
|
|
1
|
+
import type { FormField, FieldConfig, ComponentEntry } from '@zod-to-form/core';
|
|
2
2
|
import { defaultComponentMap } from './components/index.js';
|
|
3
3
|
type ComponentMap = typeof defaultComponentMap;
|
|
4
|
+
export type RuntimeComponentEntry = ComponentEntry;
|
|
5
|
+
/** @deprecated Use FieldConfig instead */
|
|
6
|
+
export type RuntimeFieldOverride = FieldConfig;
|
|
7
|
+
export type RuntimeComponentConfig = {
|
|
8
|
+
components: string;
|
|
9
|
+
fieldTypes: Record<string, RuntimeComponentEntry>;
|
|
10
|
+
fields?: Record<string, FieldConfig>;
|
|
11
|
+
};
|
|
4
12
|
type FieldRendererProps = {
|
|
5
13
|
field: FormField;
|
|
6
14
|
components?: Partial<ComponentMap>;
|
|
15
|
+
componentConfig?: RuntimeComponentConfig;
|
|
7
16
|
};
|
|
8
|
-
export declare
|
|
17
|
+
export declare const FieldRenderer: import("react").MemoExoticComponent<({ field, components, componentConfig }: FieldRendererProps) => import("react/jsx-runtime").JSX.Element | null>;
|
|
9
18
|
export {};
|
|
10
19
|
//# sourceMappingURL=FieldRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldRenderer.d.ts","sourceRoot":"","sources":["../src/FieldRenderer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FieldRenderer.d.ts","sourceRoot":"","sources":["../src/FieldRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,KAAK,YAAY,GAAG,OAAO,mBAAmB,CAAC;AAE/C,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAEnD,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACtC,CAAC;AAkJF,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACnC,eAAe,CAAC,EAAE,sBAAsB,CAAC;CAC1C,CAAC;AAqIF,eAAO,MAAM,aAAa,qJAwHxB,CAAC"}
|
package/dist/FieldRenderer.js
CHANGED
|
@@ -1,6 +1,78 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, memo, useState } from 'react';
|
|
2
3
|
import { useFieldArray, useFormContext } from 'react-hook-form';
|
|
3
4
|
import { defaultComponentMap } from './components/index.js';
|
|
5
|
+
const moduleCache = new Map();
|
|
6
|
+
const resolvedComponentCache = new Map();
|
|
7
|
+
const resolvingComponentCache = new Map();
|
|
8
|
+
function getModule(path) {
|
|
9
|
+
const cached = moduleCache.get(path);
|
|
10
|
+
if (cached) {
|
|
11
|
+
return cached;
|
|
12
|
+
}
|
|
13
|
+
const loader = import(/* @vite-ignore */ path).then((mod) => mod);
|
|
14
|
+
moduleCache.set(path, loader);
|
|
15
|
+
return loader;
|
|
16
|
+
}
|
|
17
|
+
function resolveFieldOverride(field, componentConfig) {
|
|
18
|
+
if (!componentConfig) {
|
|
19
|
+
return {};
|
|
20
|
+
}
|
|
21
|
+
const override = componentConfig.fields?.[field.key];
|
|
22
|
+
if (override) {
|
|
23
|
+
return {
|
|
24
|
+
entry: override.fieldType ? componentConfig.fieldTypes[override.fieldType] : undefined,
|
|
25
|
+
override
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
entry: componentConfig.fieldTypes[field.component]
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function asComponentType(value, errorMessage) {
|
|
33
|
+
if (typeof value !== 'function') {
|
|
34
|
+
throw new Error(errorMessage);
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
async function resolveConfiguredComponent(field, componentConfig, entry) {
|
|
39
|
+
const cacheKey = `${componentConfig.components}::${entry.component}`;
|
|
40
|
+
const cached = resolvedComponentCache.get(cacheKey);
|
|
41
|
+
if (cached) {
|
|
42
|
+
return cached;
|
|
43
|
+
}
|
|
44
|
+
const resolving = resolvingComponentCache.get(cacheKey);
|
|
45
|
+
if (resolving) {
|
|
46
|
+
return resolving;
|
|
47
|
+
}
|
|
48
|
+
const resolvePromise = (async () => {
|
|
49
|
+
let resolved;
|
|
50
|
+
if (entry.render) {
|
|
51
|
+
resolved = asComponentType(await entry.render(), `INVALID_COMPONENT_ENTRY: field "${field.key}" render override must resolve to a function.`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
let mod;
|
|
55
|
+
try {
|
|
56
|
+
mod = await getModule(componentConfig.components);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
60
|
+
throw new Error(`INVALID_RUNTIME_COMPONENT: failed to import "${componentConfig.components}" for field "${field.key}" (${message}).`);
|
|
61
|
+
}
|
|
62
|
+
const candidate = mod[entry.component];
|
|
63
|
+
resolved = asComponentType(candidate, `INVALID_RUNTIME_COMPONENT: component "${entry.component}" in "${componentConfig.components}" is not a function.`);
|
|
64
|
+
}
|
|
65
|
+
resolvedComponentCache.set(cacheKey, resolved);
|
|
66
|
+
return resolved;
|
|
67
|
+
})();
|
|
68
|
+
resolvingComponentCache.set(cacheKey, resolvePromise);
|
|
69
|
+
try {
|
|
70
|
+
return await resolvePromise;
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
resolvingComponentCache.delete(cacheKey);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
4
76
|
function getErrorAtPath(errors, path) {
|
|
5
77
|
const segments = path.split('.');
|
|
6
78
|
let current = errors;
|
|
@@ -36,16 +108,16 @@ function getRegisterOptions(field) {
|
|
|
36
108
|
return {};
|
|
37
109
|
}
|
|
38
110
|
// ─── T088: Fieldset block for nested object fields ────────────────────
|
|
39
|
-
function FieldsetBlock({ field, components }) {
|
|
111
|
+
const FieldsetBlock = memo(function FieldsetBlock({ field, components, componentConfig }) {
|
|
40
112
|
const componentMap = { ...defaultComponentMap, ...components };
|
|
41
|
-
const
|
|
113
|
+
const FieldComponent = componentMap.Field;
|
|
42
114
|
const wrapperProps = {};
|
|
43
115
|
if (field.gridColumn) {
|
|
44
116
|
wrapperProps['style'] = { gridColumn: field.gridColumn };
|
|
45
117
|
}
|
|
46
|
-
return (_jsx(
|
|
47
|
-
_jsx("legend", { children: field.label }), field.children?.map((child) => (_jsx(FieldRenderer, { field: child, components: componentMap }, child.key)))] }) }));
|
|
48
|
-
}
|
|
118
|
+
return (_jsx(FieldComponent, { ...wrapperProps, children: _jsxs("fieldset", { children: [
|
|
119
|
+
_jsx("legend", { children: field.label }), field.children?.map((child) => (_jsx(FieldRenderer, { field: child, components: componentMap, componentConfig: componentConfig }, child.key)))] }) }));
|
|
120
|
+
});
|
|
49
121
|
// ─── T089: Array block with useFieldArray ─────────────────────────────
|
|
50
122
|
function getDefaultAppendValue(arrayItem) {
|
|
51
123
|
if (!arrayItem)
|
|
@@ -56,7 +128,7 @@ function getDefaultAppendValue(arrayItem) {
|
|
|
56
128
|
return 0;
|
|
57
129
|
return '';
|
|
58
130
|
}
|
|
59
|
-
function ArrayBlock({ field, components }) {
|
|
131
|
+
const ArrayBlock = memo(function ArrayBlock({ field, components, componentConfig }) {
|
|
60
132
|
const componentMap = { ...defaultComponentMap, ...components };
|
|
61
133
|
const { control } = useFormContext();
|
|
62
134
|
const { fields: items, append, remove } = useFieldArray({ control, name: field.key });
|
|
@@ -71,13 +143,13 @@ function ArrayBlock({ field, components }) {
|
|
|
71
143
|
return null;
|
|
72
144
|
const itemField = { ...field.arrayItem, key: `${field.key}.${index}` };
|
|
73
145
|
return (_jsxs("div", { children: [
|
|
74
|
-
_jsx(FieldRenderer, { field: itemField, components: componentMap }), _jsx("button", { type: "button", onClick: () => remove(index), disabled: items.length <= minLength, children: "Remove" })
|
|
146
|
+
_jsx(FieldRenderer, { field: itemField, components: componentMap, componentConfig: componentConfig }), _jsx("button", { type: "button", onClick: () => remove(index), disabled: items.length <= minLength, children: "Remove" })
|
|
75
147
|
] }, item.id));
|
|
76
148
|
}), _jsx("button", { type: "button", onClick: () => append(getDefaultAppendValue(field.arrayItem)), children: "Add" })
|
|
77
149
|
] }));
|
|
78
|
-
}
|
|
150
|
+
});
|
|
79
151
|
// ─── T090: Discriminated union block with watch ───────────────────────
|
|
80
|
-
function DiscriminatedUnionBlock({ field, components }) {
|
|
152
|
+
const DiscriminatedUnionBlock = memo(function DiscriminatedUnionBlock({ field, components, componentConfig }) {
|
|
81
153
|
const componentMap = { ...defaultComponentMap, ...components };
|
|
82
154
|
const { register, watch } = useFormContext();
|
|
83
155
|
const discriminator = field.props['_discriminator'];
|
|
@@ -85,38 +157,69 @@ function DiscriminatedUnionBlock({ field, components }) {
|
|
|
85
157
|
const currentValue = watch(discKey);
|
|
86
158
|
const variants = field.props['_variants'];
|
|
87
159
|
const variantFields = currentValue ? (variants?.[currentValue] ?? []) : [];
|
|
88
|
-
const
|
|
89
|
-
const
|
|
160
|
+
const FieldComponent = componentMap.Field;
|
|
161
|
+
const FieldLabelComponent = componentMap.FieldLabel;
|
|
90
162
|
const wrapperProps = {};
|
|
91
163
|
if (field.gridColumn) {
|
|
92
164
|
wrapperProps['style'] = { gridColumn: field.gridColumn };
|
|
93
165
|
}
|
|
94
|
-
return (_jsxs(
|
|
95
|
-
_jsx(
|
|
96
|
-
_jsx("option", { value: "", children: "Select\u2026" }), field.options?.map((opt) => (_jsx("option", { value: String(opt.value), children: opt.label }, String(opt.value))))] }), variantFields.map((child) => (_jsx(FieldRenderer, { field: child, components: componentMap }, child.key)))] }));
|
|
97
|
-
}
|
|
98
|
-
export function FieldRenderer({ field, components }) {
|
|
166
|
+
return (_jsxs(FieldComponent, { ...wrapperProps, children: [
|
|
167
|
+
_jsx(FieldLabelComponent, { htmlFor: discKey, children: field.label }), _jsxs("select", { id: discKey, ...register(discKey), children: [
|
|
168
|
+
_jsx("option", { value: "", children: "Select\u2026" }), field.options?.map((opt) => (_jsx("option", { value: String(opt.value), children: opt.label }, String(opt.value))))] }), variantFields.map((child) => (_jsx(FieldRenderer, { field: child, components: componentMap, componentConfig: componentConfig }, child.key)))] }));
|
|
169
|
+
});
|
|
170
|
+
export const FieldRenderer = memo(function FieldRenderer({ field, components, componentConfig }) {
|
|
99
171
|
// Always call hooks first (React hooks rule — no conditional hook calls)
|
|
100
172
|
const { register, formState } = useFormContext();
|
|
101
173
|
const componentMap = { ...defaultComponentMap, ...components };
|
|
174
|
+
const mapping = useMemo(() => resolveFieldOverride(field, componentConfig), [field, componentConfig]);
|
|
175
|
+
const [configuredComponent, setConfiguredComponent] = useState(null);
|
|
176
|
+
const [resolveError, setResolveError] = useState(null);
|
|
177
|
+
useEffect(() => {
|
|
178
|
+
if (!componentConfig || !mapping.entry) {
|
|
179
|
+
setConfiguredComponent(null);
|
|
180
|
+
setResolveError(null);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
let cancelled = false;
|
|
184
|
+
resolveConfiguredComponent(field, componentConfig, mapping.entry)
|
|
185
|
+
.then((component) => {
|
|
186
|
+
if (!cancelled) {
|
|
187
|
+
setConfiguredComponent(() => component);
|
|
188
|
+
setResolveError(null);
|
|
189
|
+
}
|
|
190
|
+
})
|
|
191
|
+
.catch((error) => {
|
|
192
|
+
if (!cancelled) {
|
|
193
|
+
setConfiguredComponent(null);
|
|
194
|
+
setResolveError(error instanceof Error ? error : new Error(String(error)));
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
return () => {
|
|
198
|
+
cancelled = true;
|
|
199
|
+
};
|
|
200
|
+
}, [field, componentConfig, mapping.entry]);
|
|
201
|
+
if (resolveError) {
|
|
202
|
+
throw resolveError;
|
|
203
|
+
}
|
|
102
204
|
// T088: dispatch nested object fields to FieldsetBlock
|
|
103
205
|
if (field.component === 'Fieldset') {
|
|
104
|
-
return _jsx(FieldsetBlock, { field: field, components: componentMap });
|
|
206
|
+
return (_jsx(FieldsetBlock, { field: field, components: componentMap, componentConfig: componentConfig }));
|
|
105
207
|
}
|
|
106
208
|
// T089: dispatch array fields to ArrayBlock
|
|
107
209
|
if (field.component === 'ArrayField') {
|
|
108
|
-
return _jsx(ArrayBlock, { field: field, components: componentMap });
|
|
210
|
+
return _jsx(ArrayBlock, { field: field, components: componentMap, componentConfig: componentConfig });
|
|
109
211
|
}
|
|
110
212
|
// T090: dispatch discriminated union to DiscriminatedUnionBlock
|
|
111
213
|
if (field.component === 'Select' && field.props['_discriminator']) {
|
|
112
|
-
return _jsx(DiscriminatedUnionBlock, { field: field, components: componentMap });
|
|
214
|
+
return (_jsx(DiscriminatedUnionBlock, { field: field, components: componentMap, componentConfig: componentConfig }));
|
|
113
215
|
}
|
|
114
|
-
const Component = (
|
|
216
|
+
const Component = (configuredComponent ??
|
|
217
|
+
componentMap[field.component] ??
|
|
115
218
|
componentMap.Input);
|
|
116
|
-
const
|
|
117
|
-
const
|
|
118
|
-
const
|
|
119
|
-
const
|
|
219
|
+
const FieldComponent = componentMap.Field;
|
|
220
|
+
const FieldLabelComponent = componentMap.FieldLabel;
|
|
221
|
+
const FieldDescriptionComponent = componentMap.FieldDescription;
|
|
222
|
+
const FieldMessageComponent = componentMap.FieldMessage;
|
|
120
223
|
const errorMessage = getErrorAtPath(formState.errors, field.key);
|
|
121
224
|
if (field.hidden) {
|
|
122
225
|
return null;
|
|
@@ -128,6 +231,7 @@ export function FieldRenderer({ field, components }) {
|
|
|
128
231
|
required: field.required,
|
|
129
232
|
readOnly: field.readOnly,
|
|
130
233
|
...field.props,
|
|
234
|
+
...mapping.override?.props,
|
|
131
235
|
...registration
|
|
132
236
|
};
|
|
133
237
|
if ('options' in field && field['options']) {
|
|
@@ -138,7 +242,7 @@ export function FieldRenderer({ field, components }) {
|
|
|
138
242
|
wrapperProps['style'] = { gridColumn: field.gridColumn };
|
|
139
243
|
}
|
|
140
244
|
const fieldContent = field.render ? field.render(field, componentProps) : (_jsx(Component, { ...componentProps }));
|
|
141
|
-
return (_jsxs(
|
|
142
|
-
_jsx(
|
|
143
|
-
}
|
|
245
|
+
return (_jsxs(FieldComponent, { ...wrapperProps, children: [
|
|
246
|
+
_jsx(FieldLabelComponent, { htmlFor: field.key, children: field.label }), fieldContent, field.description ? (_jsx(FieldDescriptionComponent, { children: field.description })) : null, errorMessage ? _jsx(FieldMessageComponent, { children: errorMessage }) : null] }));
|
|
247
|
+
});
|
|
144
248
|
//# sourceMappingURL=FieldRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldRenderer.js","sourceRoot":"","sources":["../src/FieldRenderer.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FieldRenderer.js","sourceRoot":"","sources":["../src/FieldRenderer.tsx"],"names":[],"mappings":"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"}
|
package/dist/ZodForm.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
import type { ZodObject } from 'zod';
|
|
2
|
+
import type { output, ZodObject } from 'zod';
|
|
3
3
|
import type { FormProcessor, ZodFormRegistry } from '@zod-to-form/core';
|
|
4
4
|
import { defaultComponentMap } from './components/index.js';
|
|
5
|
+
import type { RuntimeComponentConfig } from './FieldRenderer.js';
|
|
5
6
|
type ZodFormProps<TSchema extends ZodObject> = {
|
|
6
7
|
schema: TSchema;
|
|
7
|
-
onSubmit
|
|
8
|
-
|
|
8
|
+
onSubmit?: (data: output<TSchema>) => unknown;
|
|
9
|
+
onValueChange?: (data: output<TSchema>) => void;
|
|
10
|
+
mode?: 'onSubmit' | 'onChange' | 'onBlur';
|
|
11
|
+
defaultValues?: Partial<output<TSchema>>;
|
|
9
12
|
components?: Partial<typeof defaultComponentMap>;
|
|
13
|
+
componentConfig?: RuntimeComponentConfig;
|
|
10
14
|
formRegistry?: ZodFormRegistry;
|
|
11
15
|
processors?: Record<string, FormProcessor>;
|
|
12
16
|
className?: string;
|
package/dist/ZodForm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZodForm.d.ts","sourceRoot":"","sources":["../src/ZodForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ZodForm.d.ts","sourceRoot":"","sources":["../src/ZodForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGjE,KAAK,YAAY,CAAC,OAAO,SAAS,SAAS,IAAI;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;IAC9C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAChD,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACjD,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,OAAO,CAAC,OAAO,SAAS,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,SAAS,CAyC1F"}
|
package/dist/ZodForm.js
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
2
3
|
import { FormProvider } from 'react-hook-form';
|
|
3
4
|
import { FieldRenderer } from './FieldRenderer.js';
|
|
4
5
|
import { defaultComponentMap } from './components/index.js';
|
|
5
6
|
import { useZodForm } from './useZodForm.js';
|
|
6
7
|
export function ZodForm(props) {
|
|
7
|
-
const { schema, onSubmit, defaultValues, components, formRegistry, processors, className, children } = props;
|
|
8
|
-
const mergedComponents = { ...defaultComponentMap, ...components };
|
|
8
|
+
const { schema, onSubmit, onValueChange, mode, defaultValues, components, componentConfig, formRegistry, processors, className, children } = props;
|
|
9
|
+
const mergedComponents = useMemo(() => ({ ...defaultComponentMap, ...components }), [components]);
|
|
9
10
|
const { form, fields } = useZodForm(schema, {
|
|
10
11
|
defaultValues,
|
|
11
12
|
formRegistry,
|
|
12
|
-
processors
|
|
13
|
+
processors,
|
|
14
|
+
mode,
|
|
15
|
+
onValueChange
|
|
13
16
|
});
|
|
14
|
-
|
|
17
|
+
const submitHandler = onSubmit ?? (() => undefined);
|
|
18
|
+
return (_jsx(FormProvider, { ...form, children: _jsxs("form", { onSubmit: form.handleSubmit(submitHandler), className: className, noValidate: true, children: [fields.map((field) => (_jsx(FieldRenderer, { field: field, components: mergedComponents, componentConfig: componentConfig }, field.key))), children] }) }));
|
|
15
19
|
}
|
|
16
20
|
//# sourceMappingURL=ZodForm.js.map
|
package/dist/ZodForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZodForm.js","sourceRoot":"","sources":["../src/ZodForm.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ZodForm.js","sourceRoot":"","sources":["../src/ZodForm.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAgB7C,MAAM,UAAU,OAAO,CAA4B,KAA4B,EAAa;IAC1F,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,aAAa,EACb,UAAU,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EACV,SAAS,EACT,QAAQ,EACT,GAAG,KAAK,CAAC;IACV,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,mBAAmB,EAAE,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAElG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE;QAC1C,aAAa;QACb,YAAY;QACZ,UAAU;QACV,IAAI;QACJ,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAEpD,OAAO,CACL,KAAC,YAAY,OAAK,IAAI,YACpB,gBAAM,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,mBAC/E,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,aAAa,IAEZ,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,gBAAgB,EAC5B,eAAe,EAAE,eAAe,IAH3B,KAAK,CAAC,GAAG,CAId,CACH,CAAC,EACD,QAAQ,IACJ,GACM,CAChB,CAAC;AAAA,CACH"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { InputHTMLAttributes } from 'react';
|
|
2
|
-
export declare
|
|
2
|
+
export declare const Checkbox: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
|
|
3
3
|
//# sourceMappingURL=Checkbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,eAAO,MAAM,QAAQ,gIAEnB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
|
|
2
|
+
import { memo } from 'react';
|
|
3
|
+
export const Checkbox = memo(function Checkbox(props) {
|
|
3
4
|
return _jsx("input", { type: "checkbox", ...props });
|
|
4
|
-
}
|
|
5
|
+
});
|
|
5
6
|
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/components/Checkbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAG7B,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,QAAQ,CAAC,KAA4C,EAAE;IAC3F,OAAO,gBAAO,IAAI,EAAC,UAAU,KAAK,KAAK,GAAI,CAAC;AAAA,CAC7C,CAAC,CAAC"}
|
|
@@ -7,6 +7,6 @@ type ComboboxProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'list'> & {
|
|
|
7
7
|
* Unstyled native combobox using `<datalist>` + `<input list>`.
|
|
8
8
|
* Provides browser-native autocomplete from the options list.
|
|
9
9
|
*/
|
|
10
|
-
export declare
|
|
10
|
+
export declare const ComboboxFallback: import("react").MemoExoticComponent<({ options, id, ...props }: ComboboxProps) => import("react/jsx-runtime").JSX.Element>;
|
|
11
11
|
export {};
|
|
12
12
|
//# sourceMappingURL=Combobox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../src/components/Combobox.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../src/components/Combobox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG;IACzE,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,4HAmB3B,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from 'react';
|
|
2
3
|
/**
|
|
3
4
|
* Unstyled native combobox using `<datalist>` + `<input list>`.
|
|
4
5
|
* Provides browser-native autocomplete from the options list.
|
|
5
6
|
*/
|
|
6
|
-
export function ComboboxFallback({ options, id, ...props }) {
|
|
7
|
+
export const ComboboxFallback = memo(function ComboboxFallback({ options, id, ...props }) {
|
|
7
8
|
const listId = id ? `${id}-list` : undefined;
|
|
8
9
|
return (_jsxs(_Fragment, { children: [
|
|
9
10
|
_jsx("input", { ...props, id: id, list: listId, type: "text" }), _jsx("datalist", { id: listId, children: options?.map((option) => (_jsx("option", { value: `${option.value}`, children: option.label }, `${option.value}`))) })
|
|
10
11
|
] }));
|
|
11
|
-
}
|
|
12
|
+
});
|
|
12
13
|
//# sourceMappingURL=Combobox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../../src/components/Combobox.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Combobox.js","sourceRoot":"","sources":["../../src/components/Combobox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAQ7B;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,gBAAgB,CAAC,EAC7D,OAAO,EACP,EAAE,EACF,GAAG,KAAK,EACM,EAAE;IAChB,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7C,OAAO,CACL;YACE,mBAAW,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,GAAG,EACtD,mBAAU,EAAE,EAAE,MAAM,YACjB,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACxB,iBAAgC,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,YACrD,MAAM,CAAC,KAAK,IADF,GAAG,MAAM,CAAC,KAAK,EAAE,CAErB,CACV,CAAC,GACO;YACV,CACJ,CAAC;AAAA,CACH,CAAC,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { InputHTMLAttributes } from 'react';
|
|
2
|
-
export declare
|
|
2
|
+
export declare const DatePicker: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
|
|
3
3
|
//# sourceMappingURL=DatePicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/components/DatePicker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/components/DatePicker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,eAAO,MAAM,UAAU,gIAErB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
|
|
2
|
+
import { memo } from 'react';
|
|
3
|
+
export const DatePicker = memo(function DatePicker(props) {
|
|
3
4
|
return _jsx("input", { type: "date", ...props });
|
|
4
|
-
}
|
|
5
|
+
});
|
|
5
6
|
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../src/components/DatePicker.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../src/components/DatePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAG7B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,UAAU,CAAC,KAA4C,EAAE;IAC/F,OAAO,gBAAO,IAAI,EAAC,MAAM,KAAK,KAAK,GAAI,CAAC;AAAA,CACzC,CAAC,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { InputHTMLAttributes } from 'react';
|
|
2
|
-
export declare
|
|
2
|
+
export declare const FileInput: import("react").MemoExoticComponent<(props: InputHTMLAttributes<HTMLInputElement>) => import("react/jsx-runtime").JSX.Element>;
|
|
3
3
|
//# sourceMappingURL=FileInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileInput.d.ts","sourceRoot":"","sources":["../../src/components/FileInput.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FileInput.d.ts","sourceRoot":"","sources":["../../src/components/FileInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,eAAO,MAAM,SAAS,gIAEpB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
|
|
2
|
+
import { memo } from 'react';
|
|
3
|
+
export const FileInput = memo(function FileInput(props) {
|
|
3
4
|
return _jsx("input", { type: "file", ...props });
|
|
4
|
-
}
|
|
5
|
+
});
|
|
5
6
|
//# sourceMappingURL=FileInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileInput.js","sourceRoot":"","sources":["../../src/components/FileInput.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"FileInput.js","sourceRoot":"","sources":["../../src/components/FileInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAG7B,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,SAAS,CAAC,KAA4C,EAAE;IAC7F,OAAO,gBAAO,IAAI,EAAC,MAAM,KAAK,KAAK,GAAI,CAAC;AAAA,CACzC,CAAC,CAAC"}
|