From ab0dce107d4b7715b2ea47eecb9613c706eb3cdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 15 Apr 2025 23:55:50 +0200 Subject: [PATCH] Form work --- packages/extension-form/src/internal/Form.ts | 26 +++---------------- .../extension-form/src/internal/FormField.ts | 25 ++++++++++++++++++ 2 files changed, 29 insertions(+), 22 deletions(-) create mode 100644 packages/extension-form/src/internal/FormField.ts diff --git a/packages/extension-form/src/internal/Form.ts b/packages/extension-form/src/internal/Form.ts index f5ad19d..1b8bed4 100644 --- a/packages/extension-form/src/internal/Form.ts +++ b/packages/extension-form/src/internal/Form.ts @@ -1,4 +1,5 @@ import { Schema } from "effect" +import type * as FormField from "./FormField.js" export interface Form { @@ -7,31 +8,12 @@ export interface Form { export type FormTree> = ( - S extends Schema.Array$ ? ArrayFormField : - S extends Schema.Struct ? StructFormField : - GenericFormField + S extends Schema.Array$ ? FormField.ArrayFormField : + S extends Schema.Struct ? FormField.StructFormField : + FormField.GenericFormField ) -export interface GenericFormField> { - readonly _tag: "GenericFormField" - readonly schema: S - readonly value: S["Type"] -} - -export interface ArrayFormField> { - readonly _tag: "ArrayFormField" - readonly schema: S - readonly elements: readonly FormTree[] -} - -export interface StructFormField> { - readonly _tag: "StructFormField" - readonly schema: S - readonly fields: { [K in keyof S["fields"]]: FormTree } -} - - const MySchema = Schema.Struct({ name: Schema.String, symbol: Schema.SymbolFromSelf, diff --git a/packages/extension-form/src/internal/FormField.ts b/packages/extension-form/src/internal/FormField.ts new file mode 100644 index 0000000..a07df9d --- /dev/null +++ b/packages/extension-form/src/internal/FormField.ts @@ -0,0 +1,25 @@ +import type { Schema } from "effect" +import type * as Form from "./Form.ts" + + +export interface FormField { + +} + +export interface GenericFormField extends FormField { + readonly _tag: "GenericFormField" + readonly schema: S + readonly value: S["Type"] +} + +export interface ArrayFormField> extends FormField { + readonly _tag: "ArrayFormField" + readonly schema: S + readonly elements: readonly Form.FormTree[] +} + +export interface StructFormField> extends FormField { + readonly _tag: "StructFormField" + readonly schema: S + readonly fields: { [K in keyof S["fields"]]: Form.FormTree } +}