import React, { FocusEvent, InputHTMLAttributes } from 'react' import { useRecoilState } from 'recoil' import { appState } from '../../store/Atoms' const TextInput = React.forwardRef< HTMLInputElement, InputHTMLAttributes >((props: InputHTMLAttributes, forwardedRef) => { const { onFocus, onBlur, ...itemProps } = props const [_, setAppState] = useRecoilState(appState) const handleOnFocus = (evt: FocusEvent) => { setAppState(old => { return { ...old, disableShortCuts: true } }) onFocus?.(evt) } const handleOnBlur = (evt: FocusEvent) => { setAppState(old => { return { ...old, disableShortCuts: false } }) onBlur?.(evt) } return ( { if (e.key === 'Escape') { e.currentTarget.blur() } }} /> ) }) export default TextInput