diff --git a/packages/effect-fc/src/Form.ts b/packages/effect-fc/src/Form.ts index 564d8f4..b8206b6 100644 --- a/packages/effect-fc/src/Form.ts +++ b/packages/effect-fc/src/Form.ts @@ -298,6 +298,32 @@ export const focusArrayAt: { ) }) +export const focusTupleAt: { +

( + self: Form, + index: K, + ): Form +

( + index: K, + ): (self: Form) => Form +} = Function.dual(2,

( + self: Form, + index: K, +): Form => { + const form = self as FormImpl + const path = [...form.path, index] as const + + return new FormImpl( + path, + Subscribable.mapOption(form.value, Array.unsafeGet(index)), + Lens.focusTupleAt(form.encodedValue, index), + Subscribable.map(form.issues, issues => filterIssuesByPath(issues, path)), + form.isValidating, + form.canSubmit, + form.isSubmitting, + ) +}) + export namespace useInput { export interface Options {