From 22672c98dce5f97a0eaeb63a2d5610a73954cb98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 31 Mar 2026 18:47:51 +0200 Subject: [PATCH] Add Form.focusTupleAt --- packages/effect-fc/src/Form.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) 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 {