UNPKG

@modern-kit/react

Version:
45 lines (41 loc) 1.12 kB
'use strict'; var hooksUsePreservedCallback = require('../usePreservedCallback/index.cjs'); var React = require('react'); var utils = require('@modern-kit/utils'); function useKeyDown({ enabled = true, keyDownCallbackMap = {}, allKeyDownCallback }) { const targetRef = React.useRef(null); const onKeyDown = hooksUsePreservedCallback.usePreservedCallback((event) => { event.stopPropagation(); if (allKeyDownCallback) { allKeyDownCallback(event); return; } const key = event.key; const keyDownCallback = keyDownCallbackMap[key]; if (utils.isFunction(keyDownCallback)) { keyDownCallback(event); } }); React.useEffect(() => { if (!enabled) return; if (!targetRef.current) { targetRef.current = window; } const targetElement = targetRef.current; targetElement.addEventListener( "keydown", onKeyDown ); return () => targetElement.removeEventListener( "keydown", onKeyDown ); }, [enabled, onKeyDown]); return { ref: targetRef }; } exports.useKeyDown = useKeyDown; //# sourceMappingURL=index.cjs.map