@mantine/hooks
Version:
A collection of 50+ hooks for state and UI management
1 lines • 1.61 kB
Source Map (JSON)
{"version":3,"file":"use-input-state.cjs","names":[],"sources":["../../src/use-input-state/use-input-state.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport function getInputOnChange<T>(\n setValue: (value: null | undefined | T | ((current: T) => T)) => void\n) {\n return (val: null | undefined | T | React.ChangeEvent<any> | ((current: T) => T)) => {\n if (!val) {\n setValue(val as T);\n } else if (typeof val === 'function') {\n setValue(val);\n } else if (typeof val === 'object' && 'nativeEvent' in val) {\n const { currentTarget } = val;\n\n if (currentTarget.type === 'checkbox') {\n setValue((currentTarget as any).checked as any);\n } else {\n setValue(currentTarget.value as any);\n }\n } else {\n setValue(val);\n }\n };\n}\n\nexport type UseInputStateReturnValue<T> = [\n T,\n (value: null | undefined | T | React.ChangeEvent<any>) => void,\n];\n\nexport function useInputState<T>(initialState: T): UseInputStateReturnValue<T> {\n const [value, setValue] = useState<T>(initialState);\n return [value, getInputOnChange<T>(setValue as any)];\n}\n\nexport namespace useInputState {\n export type ReturnValue<T> = UseInputStateReturnValue<T>;\n}\n"],"mappings":";;;AAEA,SAAgB,iBACd,UACA;AACA,SAAQ,QAA6E;AACnF,MAAI,CAAC,IACH,UAAS,IAAS;WACT,OAAO,QAAQ,WACxB,UAAS,IAAI;WACJ,OAAO,QAAQ,YAAY,iBAAiB,KAAK;GAC1D,MAAM,EAAE,kBAAkB;AAE1B,OAAI,cAAc,SAAS,WACzB,UAAU,cAAsB,QAAe;OAE/C,UAAS,cAAc,MAAa;QAGtC,UAAS,IAAI;;;AAUnB,SAAgB,cAAiB,cAA8C;CAC7E,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAAwB,aAAa;AACnD,QAAO,CAAC,OAAO,iBAAoB,SAAgB,CAAC"}