UNPKG

@heycar-uikit/core

Version:
52 lines (48 loc) 1.76 kB
Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); var CLOSE_TIMEOUT = 300; var useLangList = function () { var timer = React.useRef(undefined); var _a = React.useState(undefined), isHovering = _a[0], setIsHovering = _a[1]; var _b = React.useState(undefined), isFocused = _b[0], setIsFocused = _b[1]; var _c = React.useState(false), isKeyboardToggle = _c[0], setIsKeyboardToggle = _c[1]; var _d = React.useState(false), isLangListOpen = _d[0], setIsLangListOpen = _d[1]; React.useEffect(function () { if (isHovering === false || isFocused === false) { timer.current = setTimeout(function () { setIsLangListOpen(false); }, CLOSE_TIMEOUT); } if (isHovering) { setIsLangListOpen(true); if (timer.current) clearTimeout(timer.current); } if (isFocused && timer.current) { clearTimeout(timer.current); } return function () { if (timer.current) clearTimeout(timer.current); }; }, [isFocused, isHovering]); React.useEffect(function () { if (timer.current) clearTimeout(timer.current); setIsLangListOpen(isKeyboardToggle); }, [isKeyboardToggle]); var keyboardOpen = function (e) { if (e.code === 'Space') { e.preventDefault(); setIsKeyboardToggle(!isKeyboardToggle); } }; return { isLangListOpen: isLangListOpen, keyboardOpen: keyboardOpen, setIsHovering: setIsHovering, setIsFocused: setIsFocused, setIsLangListOpen: setIsLangListOpen, }; }; exports.useLangList = useLangList;