UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

1 lines 1.63 kB
{"version":3,"file":"use-input-state.mjs","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;CACA,QAAQ,QAA6E;EACnF,IAAI,CAAC,KACH,SAAS,GAAQ;OACZ,IAAI,OAAO,QAAQ,YACxB,SAAS,GAAG;OACP,IAAI,OAAO,QAAQ,YAAY,iBAAiB,KAAK;GAC1D,MAAM,EAAE,kBAAkB;GAE1B,IAAI,cAAc,SAAS,YACzB,SAAU,cAAsB,OAAc;QAE9C,SAAS,cAAc,KAAY;EAEvC,OACE,SAAS,GAAG;CAEhB;AACF;AAOA,SAAgB,cAAiB,cAA8C;CAC7E,MAAM,CAAC,OAAO,YAAY,SAAY,YAAY;CAClD,OAAO,CAAC,OAAO,iBAAoB,QAAe,CAAC;AACrD"}