import { DOMEvent } from "@/helpers"; type UpdatingEvent = "onBlur" | "onChange" | "onInput"; type FormFieldHelperOptions = { event: UpdatingEvent } export function formFieldProps(subject: T, update: (value: T) => void, options: Partial> = {}) { const { event = "onChange" } = options; return (field: keyof T) => ({ value: subject[field], [event]: (event: DOMEvent) => update({ ...subject, [field]: event.target.value, } as T) }) }