From 6bef41b2ee7d8c77a47261e72f3efe2c19776d90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 6 Jul 2025 18:29:07 +0200 Subject: [PATCH] Example work --- packages/example/src/todo/Todo.tsx | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/example/src/todo/Todo.tsx b/packages/example/src/todo/Todo.tsx index 0b78b4d..7f7ba08 100644 --- a/packages/example/src/todo/Todo.tsx +++ b/packages/example/src/todo/Todo.tsx @@ -57,11 +57,37 @@ export const Todo = Component.make(function* Todo(props: TodoProps) { {props._tag === "edit" && Runtime.runSync(runtime)( + Ref.updateSome(state.ref, todos => Option.gen(function*() { + if (props.index <= 0) + return yield* Option.none() + + const toSwapIndex = props.index - 1 + const toSwap = yield* Chunk.get(todos, toSwapIndex) + return todos.pipe( + Chunk.replace(props.index, toSwap), + Chunk.replace(toSwapIndex, todo), + ) + })) + )} > Runtime.runSync(runtime)( + Ref.updateSome(state.ref, todos => Option.gen(function*() { + if (props.index >= Chunk.size(todos)) + return yield* Option.none() + + const toSwapIndex = props.index + 1 + const toSwap = yield* Chunk.get(todos, toSwapIndex) + return todos.pipe( + Chunk.replace(props.index, toSwap), + Chunk.replace(toSwapIndex, todo), + ) + })) + )} >