import { useState } from "react"; export function useMergeState(initState: S): [S, (arg: Partial | ((s: S) => S)) => void] { const [state, setState] = useState(initState); const setMergeState = (arg: Partial | ((s: S) => S)) => { if (typeof arg === "function") { setState(arg); return; } setState((draft) => { return { ...draft, ...arg }; }); }; return [state, setMergeState]; }