From 6c31b39ddb128e87a59378628cd385bdfe6d231e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 31 Mar 2026 20:22:58 +0200 Subject: [PATCH] Add Form.focusChunkAt --- 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 b8206b6..c19f782 100644 --- a/packages/effect-fc/src/Form.ts +++ b/packages/effect-fc/src/Form.ts @@ -324,6 +324,32 @@ export const focusTupleAt: { ) }) +export const focusChunkAt: { +

( + self: Form, Chunk.Chunk, ER, EW>, + index: number, + ): Form +

( + index: number, + ): (self: Form, Chunk.Chunk, ER, EW>) => Form +} = Function.dual(2,

( + self: Form, Chunk.Chunk, ER, EW>, + index: number, +): Form => { + const form = self as FormImpl, Chunk.Chunk, ER, EW> + const path = [...form.path, index] as const + + return new FormImpl( + path, + Subscribable.mapOptionEffect(form.value, Chunk.get(index)), + Lens.focusChunkAt(form.encodedValue, index), + Subscribable.map(form.issues, issues => filterIssuesByPath(issues, path)), + form.isValidating, + form.canSubmit, + form.isSubmitting, + ) +}) + export namespace useInput { export interface Options {