@mantine/hooks
Version:
A collection of 50+ hooks for state and UI management
1 lines • 1.16 kB
Source Map (JSON)
{"version":3,"file":"use-set-state.mjs","names":[],"sources":["../../src/use-set-state/use-set-state.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nexport type UseSetStateCallback<T> = (\n state: Partial<T> | ((currentState: T) => Partial<T>)\n) => void;\n\nexport type UseSetStateReturnValue<T> = [T, UseSetStateCallback<T>];\n\nexport function useSetState<T extends Record<string, any>>(\n initialState: T\n): UseSetStateReturnValue<T> {\n const [state, setState] = useState(initialState);\n\n const _setState: UseSetStateCallback<T> = useCallback(\n (statePartial) =>\n setState((current) => ({\n ...current,\n ...(typeof statePartial === 'function' ? statePartial(current) : statePartial),\n })),\n []\n );\n\n return [state, _setState];\n}\n\nexport namespace useSetState {\n export type Callback<T> = UseSetStateCallback<T>;\n export type ReturnValue<T> = UseSetStateReturnValue<T>;\n}\n"],"mappings":";;;AAQA,SAAgB,YACd,cAC2B;CAC3B,MAAM,CAAC,OAAO,YAAY,SAAS,aAAa;AAWhD,QAAO,CAAC,OATkC,aACvC,iBACC,UAAU,aAAa;EACrB,GAAG;EACH,GAAI,OAAO,iBAAiB,aAAa,aAAa,QAAQ,GAAG;EAClE,EAAE,EACL,EAAE,CACH,CAEwB"}