{"version":3,"sources":["../../src/use-set-state/index.ts"],"sourcesContent":["import { useSafeState } from '../use-safe-state'\nimport { useStableFn } from '../use-stable-fn'\nimport { isFunction } from '../utils/basic'\n\nimport type { UseSafeStateOptions } from '../use-safe-state'\nimport type { Gettable, PureObject } from '../utils/basic'\n\nexport type UseSetStateSetMergedState<T extends PureObject> = <K extends keyof T>(\n  state: Partial<Pick<T, K>> | null | ((pre: Readonly<T>) => Partial<Pick<T, K>> | T | null),\n) => void\n\nexport interface UseSetStateOptions extends UseSafeStateOptions {}\n\nexport type UseSetStateReturns<T extends PureObject> = readonly [T, UseSetStateSetMergedState<T>]\n\n/**\n * A React Hook that uses the React Class Component's `this.setState` method for state management.\n */\nexport function useSetState<T extends PureObject>(\n  initialState: Gettable<T>,\n  options: UseSetStateOptions = {},\n): UseSetStateReturns<T> {\n  const [state, _setState] = useSafeState<T>(initialState, options)\n\n  const setState: UseSetStateSetMergedState<T> = useStableFn((patch) => {\n    return _setState((prevState) => {\n      const newState = isFunction(patch) ? patch(prevState) : patch\n      const isChanged = Boolean(newState && Object.keys(newState).length)\n      return isChanged ? Object.assign({}, prevState, newState) : prevState\n    })\n  })\n\n  return [state, setState] as const\n}\n"],"names":["useSetState","initialState","options","useSafeState","state","_setState","setState","useStableFn","patch","prevState","newState","isFunction","isChanged","Boolean","Object","keys","length","assign"],"mappings":";;;;+BAkBgBA;;;eAAAA;;;4BAlBa;2BACD;qBACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBpB,SAASA,YACdC,YAAyB;QACzBC,UAAAA,iEAA8B,CAAC;IAE/B,IAA2BC,iCAAAA,IAAAA,0BAAY,EAAIF,cAAcC,cAAlDE,QAAoBD,kBAAbE,YAAaF;IAE3B,IAAMG,WAAyCC,IAAAA,wBAAW,EAAC,SAACC;QAC1D,OAAOH,UAAU,SAACI;YAChB,IAAMC,WAAWC,IAAAA,iBAAU,EAACH,SAASA,MAAMC,aAAaD;YACxD,IAAMI,YAAYC,QAAQH,YAAYI,OAAOC,IAAI,CAACL,UAAUM,MAAM;YAClE,OAAOJ,YAAYE,OAAOG,MAAM,CAAC,CAAC,GAAGR,WAAWC,YAAYD;QAC9D;IACF;IAEA,OAAO;QAACL;QAAOE;KAAS;AAC1B"}