UNPKG

react-native-external-keyboard

Version:
62 lines (61 loc) 2.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useKeyboardPress = exports.ANDROID_TRIGGER_CODES = exports.ANDROID_SPACE_KEY_CODE = exports.ANDROID_ENTER_CODE = exports.ANDROID_DPAD_CENTER_CODE = void 0; var _react = require("react"); const ANDROID_SPACE_KEY_CODE = exports.ANDROID_SPACE_KEY_CODE = 62; const ANDROID_DPAD_CENTER_CODE = exports.ANDROID_DPAD_CENTER_CODE = 23; const ANDROID_ENTER_CODE = exports.ANDROID_ENTER_CODE = 66; const ANDROID_TRIGGER_CODES = exports.ANDROID_TRIGGER_CODES = [ANDROID_SPACE_KEY_CODE, ANDROID_DPAD_CENTER_CODE, ANDROID_ENTER_CODE]; const MILLISECOND_THRESHOLD = 20; const useKeyboardPress = ({ onKeyUpPress, onKeyDownPress, onPressIn, onPressOut, onPress, onLongPress, triggerCodes = ANDROID_TRIGGER_CODES }) => { const thresholdTime = (0, _react.useRef)(0); const onKeyUpPressHandler = (0, _react.useCallback)(e => { const { nativeEvent: { keyCode, isLongPress } } = e; onPressOut === null || onPressOut === void 0 || onPressOut(e); onKeyUpPress === null || onKeyUpPress === void 0 || onKeyUpPress(e); if (triggerCodes.includes(keyCode)) { if (isLongPress) { thresholdTime.current = e === null || e === void 0 ? void 0 : e.timeStamp; onLongPress === null || onLongPress === void 0 || onLongPress({}); } } }, [onPressOut, onKeyUpPress, triggerCodes, onLongPress]); const onKeyDownPressHandler = (0, _react.useMemo)(() => { if (!onPressIn) return onKeyDownPress; return e => { onKeyDownPress === null || onKeyDownPress === void 0 || onKeyDownPress(e); if (triggerCodes.includes(e.nativeEvent.keyCode)) { onPressIn === null || onPressIn === void 0 || onPressIn(e); } }; }, [onKeyDownPress, onPressIn, triggerCodes]); const onPressHandler = (0, _react.useCallback)(event => { const pressThreshold = ((event === null || event === void 0 ? void 0 : event.timeStamp) ?? 0) - thresholdTime.current; if (pressThreshold > MILLISECOND_THRESHOLD) { onPress === null || onPress === void 0 || onPress(event); } }, [onPress]); const hasHandler = onPressOut || onKeyUpPress || onLongPress || onPress; return { onKeyUpPressHandler: hasHandler && onKeyUpPressHandler, onKeyDownPressHandler, onPressHandler: onPress && onPressHandler }; }; exports.useKeyboardPress = useKeyboardPress; //# sourceMappingURL=useKeyboardPress.android.js.map