/// import { Cell, Default, handler, recipe, str } from "commontools"; interface ResetCounterArgs { value: Default; baseline: Default; } const applyDelta = handler( ( event: { amount?: number } | undefined, context: { value: Cell }, ) => { const amount = typeof event?.amount === "number" ? event.amount : 1; const next = (context.value.get() ?? 0) + amount; context.value.set(next); }, ); const resetCounter = handler( ( _event: unknown, context: { value: Cell; baseline: Cell }, ) => { const target = context.baseline.get() ?? 0; context.value.set(target); }, ); export const counterWithReset = recipe( "Counter With Reset", ({ value, baseline }) => { return { value, baseline, label: str`Value ${value}`, increment: applyDelta({ value }), reset: resetCounter({ value, baseline }), }; }, );