react-native-external-keyboard 0.6.7 → 0.6.8-rc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -97,7 +97,7 @@ Linking is one of the best ways to set up focus order. However, there may be cas
97
97
  </View>
98
98
  </KeyboardOrderFocusGroup>
99
99
  ```
100
- Indexing requres `orderGroup` param for proper order set, you can use `KeyboardOrderFocusGroup` or provide `orderGroup` to the component.
100
+ Indexing requires `orderGroup` param for proper order set, you can use `KeyboardOrderFocusGroup` or provide `orderGroup` to the component.
101
101
 
102
102
  ```tsx
103
103
  <Pressable
@@ -324,7 +324,7 @@ containerStyle | Style for the container | StyleProp<ViewStyle>
324
324
  containerFocusStyle?: | Style applied to the container when focused | `FocusStyle`
325
325
  tintType?: | Tint behavior type | `'default' \\| 'hover' \\| 'background' \\| 'none'`
326
326
  FocusHoverComponent?: | Component displayed on focus | `\\| ReactElement  \\| FunctionComponent  \\| (() => ReactElement);`
327
- onSubmitEditing?: | Extended `onSubmitEditing` for mulitline input | `(e: NativeSyntheticEvent<TextInputSubmitEditingEventData>) => void)`
327
+ onSubmitEditing?: | Extended `onSubmitEditing` for multiline input | `(e: NativeSyntheticEvent<TextInputSubmitEditingEventData>) => void)`
328
328
  ...rest | Remaining TextInput props  | `TextInputProps`
329
329
 
330
330
 
@@ -336,7 +336,7 @@ import { KeyboardExtendedBaseView } from 'react-native-external-keyboard';
336
336
  <KeyboardExtendedBaseView
337
337
  onKeyDownPress={...}
338
338
  onKeyUpPress={...}
339
- focussable
339
+ focusable
340
340
  >
341
341
  <Text>Content</Text>
342
342
  </KeyboardExtendedBaseView>
@@ -9,7 +9,6 @@ const ANDROID_SPACE_KEY_CODE = exports.ANDROID_SPACE_KEY_CODE = 62;
9
9
  const ANDROID_DPAD_CENTER_CODE = exports.ANDROID_DPAD_CENTER_CODE = 23;
10
10
  const ANDROID_ENTER_CODE = exports.ANDROID_ENTER_CODE = 66;
11
11
  const ANDROID_TRIGGER_CODES = exports.ANDROID_TRIGGER_CODES = [ANDROID_SPACE_KEY_CODE, ANDROID_DPAD_CENTER_CODE, ANDROID_ENTER_CODE];
12
- const MILLISECOND_THRESHOLD = 20;
13
12
  const useKeyboardPress = ({
14
13
  onKeyUpPress,
15
14
  onKeyDownPress,
@@ -19,7 +18,22 @@ const useKeyboardPress = ({
19
18
  onLongPress,
20
19
  triggerCodes = ANDROID_TRIGGER_CODES
21
20
  }) => {
22
- const thresholdTime = (0, _react.useRef)(0);
21
+ const pressInRef = (0, _react.useRef)(undefined);
22
+ const onPressHandler = (0, _react.useCallback)(event => {
23
+ if (!onLongPress || !pressInRef.current) {
24
+ onPress === null || onPress === void 0 || onPress(event);
25
+ }
26
+ }, [onLongPress, onPress]);
27
+ const onKeyDownPressHandler = (0, _react.useMemo)(() => {
28
+ if (!onPressIn && !onLongPress) return onKeyDownPress;
29
+ return e => {
30
+ pressInRef.current = new Date().getTime();
31
+ onKeyDownPress === null || onKeyDownPress === void 0 || onKeyDownPress(e);
32
+ if (triggerCodes.includes(e.nativeEvent.keyCode)) {
33
+ onPressIn === null || onPressIn === void 0 || onPressIn(e);
34
+ }
35
+ };
36
+ }, [onKeyDownPress, onLongPress, onPressIn, triggerCodes]);
23
37
  const onKeyUpPressHandler = (0, _react.useCallback)(e => {
24
38
  const {
25
39
  nativeEvent: {
@@ -31,31 +45,17 @@ const useKeyboardPress = ({
31
45
  onKeyUpPress === null || onKeyUpPress === void 0 || onKeyUpPress(e);
32
46
  if (triggerCodes.includes(keyCode)) {
33
47
  if (isLongPress) {
34
- thresholdTime.current = e === null || e === void 0 ? void 0 : e.timeStamp;
35
48
  onLongPress === null || onLongPress === void 0 || onLongPress({});
49
+ } else {
50
+ onPress === null || onPress === void 0 || onPress();
36
51
  }
37
52
  }
38
- }, [onPressOut, onKeyUpPress, triggerCodes, onLongPress]);
39
- const onKeyDownPressHandler = (0, _react.useMemo)(() => {
40
- if (!onPressIn) return onKeyDownPress;
41
- return e => {
42
- onKeyDownPress === null || onKeyDownPress === void 0 || onKeyDownPress(e);
43
- if (triggerCodes.includes(e.nativeEvent.keyCode)) {
44
- onPressIn === null || onPressIn === void 0 || onPressIn(e);
45
- }
46
- };
47
- }, [onKeyDownPress, onPressIn, triggerCodes]);
48
- const onPressHandler = (0, _react.useCallback)(event => {
49
- const pressThreshold = ((event === null || event === void 0 ? void 0 : event.timeStamp) ?? 0) - thresholdTime.current;
50
- if (pressThreshold > MILLISECOND_THRESHOLD) {
51
- onPress === null || onPress === void 0 || onPress(event);
52
- }
53
- }, [onPress]);
54
- const hasHandler = onPressOut || onKeyUpPress || onLongPress || onPress;
53
+ pressInRef.current = undefined;
54
+ }, [onPressOut, onKeyUpPress, triggerCodes, onLongPress, onPress]);
55
55
  return {
56
- onKeyUpPressHandler: hasHandler && onKeyUpPressHandler,
56
+ onPressHandler: onPress && onLongPress ? onPressHandler : onPress,
57
57
  onKeyDownPressHandler,
58
- onPressHandler: onPress && onPressHandler
58
+ onKeyUpPressHandler
59
59
  };
60
60
  };
61
61
  exports.useKeyboardPress = useKeyboardPress;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","ANDROID_SPACE_KEY_CODE","exports","ANDROID_DPAD_CENTER_CODE","ANDROID_ENTER_CODE","ANDROID_TRIGGER_CODES","MILLISECOND_THRESHOLD","useKeyboardPress","onKeyUpPress","onKeyDownPress","onPressIn","onPressOut","onPress","onLongPress","triggerCodes","thresholdTime","useRef","onKeyUpPressHandler","useCallback","e","nativeEvent","keyCode","isLongPress","includes","current","timeStamp","onKeyDownPressHandler","useMemo","onPressHandler","event","pressThreshold","hasHandler"],"sourceRoot":"../../../../src","sources":["utils/useKeyboardPress/useKeyboardPress.android.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAKO,MAAMC,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA,GAAG,EAAE;AACjC,MAAME,wBAAwB,GAAAD,OAAA,CAAAC,wBAAA,GAAG,EAAE;AACnC,MAAMC,kBAAkB,GAAAF,OAAA,CAAAE,kBAAA,GAAG,EAAE;AAE7B,MAAMC,qBAAqB,GAAAH,OAAA,CAAAG,qBAAA,GAAG,CACnCJ,sBAAsB,EACtBE,wBAAwB,EACxBC,kBAAkB,CACnB;AAED,MAAME,qBAAqB,GAAG,EAAE;AAEzB,MAAMC,gBAAgB,GAAGA,CAG9B;EACAC,YAAY;EACZC,cAAc;EACdC,SAAS;EACTC,UAAU;EACVC,OAAO;EACPC,WAAW;EACXC,YAAY,GAAGT;AACY,CAAC,KAAK;EACjC,MAAMU,aAAa,GAAG,IAAAC,aAAM,EAAC,CAAC,CAAC;EAC/B,MAAMC,mBAAmB,GAAG,IAAAC,kBAAW,EACpCC,CAAC,IAAK;IACL,MAAM;MACJC,WAAW,EAAE;QAAEC,OAAO;QAAEC;MAAY;IACtC,CAAC,GAAGH,CAAC;IAELR,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAGQ,CAAqC,CAAC;IACnDX,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGW,CAAC,CAAC;IAEjB,IAAIL,YAAY,CAACS,QAAQ,CAACF,OAAO,CAAC,EAAE;MAClC,IAAIC,WAAW,EAAE;QACfP,aAAa,CAACS,OAAO,GAAGL,CAAC,aAADA,CAAC,uBAADA,CAAC,CAAEM,SAAS;QACpCZ,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAG,CAAC,CAA0B,CAAC;MAC5C;IACF;EACF,CAAC,EACD,CAACF,UAAU,EAAEH,YAAY,EAAEM,YAAY,EAAED,WAAW,CACtD,CAAC;EAED,MAAMa,qBAAqB,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC1C,IAAI,CAACjB,SAAS,EAAE,OAAOD,cAAc;IACrC,OAAQU,CAAa,IAAK;MACxBV,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAGU,CAAC,CAAC;MACnB,IAAIL,YAAY,CAACS,QAAQ,CAACJ,CAAC,CAACC,WAAW,CAACC,OAAO,CAAC,EAAE;QAChDX,SAAS,aAATA,SAAS,eAATA,SAAS,CAAGS,CAAqC,CAAC;MACpD;IACF,CAAC;EACH,CAAC,EAAE,CAACV,cAAc,EAAEC,SAAS,EAAEI,YAAY,CAAC,CAAC;EAE7C,MAAMc,cAAc,GAAG,IAAAV,kBAAW,EAC/BW,KAA4B,IAAK;IAChC,MAAMC,cAAc,GAAG,CAAC,CAAAD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEJ,SAAS,KAAI,CAAC,IAAIV,aAAa,CAACS,OAAO;IACtE,IAAIM,cAAc,GAAGxB,qBAAqB,EAAE;MAC1CM,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAGiB,KAAK,CAAC;IAClB;EACF,CAAC,EACD,CAACjB,OAAO,CACV,CAAC;EAED,MAAMmB,UAAU,GAAGpB,UAAU,IAAIH,YAAY,IAAIK,WAAW,IAAID,OAAO;EACvE,OAAO;IACLK,mBAAmB,EAAEc,UAAU,IAAId,mBAAmB;IACtDS,qBAAqB;IACrBE,cAAc,EAAEhB,OAAO,IAAIgB;EAC7B,CAAC;AACH,CAAC;AAAC1B,OAAA,CAAAK,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","ANDROID_SPACE_KEY_CODE","exports","ANDROID_DPAD_CENTER_CODE","ANDROID_ENTER_CODE","ANDROID_TRIGGER_CODES","useKeyboardPress","onKeyUpPress","onKeyDownPress","onPressIn","onPressOut","onPress","onLongPress","triggerCodes","pressInRef","useRef","undefined","onPressHandler","useCallback","event","current","onKeyDownPressHandler","useMemo","e","Date","getTime","includes","nativeEvent","keyCode","onKeyUpPressHandler","isLongPress"],"sourceRoot":"../../../../src","sources":["utils/useKeyboardPress/useKeyboardPress.android.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAKO,MAAMC,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA,GAAG,EAAE;AACjC,MAAME,wBAAwB,GAAAD,OAAA,CAAAC,wBAAA,GAAG,EAAE;AACnC,MAAMC,kBAAkB,GAAAF,OAAA,CAAAE,kBAAA,GAAG,EAAE;AAE7B,MAAMC,qBAAqB,GAAAH,OAAA,CAAAG,qBAAA,GAAG,CACnCJ,sBAAsB,EACtBE,wBAAwB,EACxBC,kBAAkB,CACnB;AAEM,MAAME,gBAAgB,GAAGA,CAG9B;EACAC,YAAY;EACZC,cAAc;EACdC,SAAS;EACTC,UAAU;EACVC,OAAO;EACPC,WAAW;EACXC,YAAY,GAAGR;AACY,CAAC,KAAK;EACjC,MAAMS,UAAU,GAAG,IAAAC,aAAM,EAAqBC,SAAS,CAAC;EAExD,MAAMC,cAAc,GAAG,IAAAC,kBAAW,EAC/BC,KAA4B,IAAK;IAChC,IAAI,CAACP,WAAW,IAAI,CAACE,UAAU,CAACM,OAAO,EAAE;MACvCT,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAGQ,KAAK,CAAC;IAClB;EACF,CAAC,EACD,CAACP,WAAW,EAAED,OAAO,CACvB,CAAC;EAED,MAAMU,qBAAqB,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC1C,IAAI,CAACb,SAAS,IAAI,CAACG,WAAW,EAAE,OAAOJ,cAAc;IACrD,OAAQe,CAAa,IAAK;MACxBT,UAAU,CAACM,OAAO,GAAG,IAAII,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC;MACzCjB,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAGe,CAAC,CAAC;MACnB,IAAIV,YAAY,CAACa,QAAQ,CAACH,CAAC,CAACI,WAAW,CAACC,OAAO,CAAC,EAAE;QAChDnB,SAAS,aAATA,SAAS,eAATA,SAAS,CAAGc,CAAqC,CAAC;MACpD;IACF,CAAC;EACH,CAAC,EAAE,CAACf,cAAc,EAAEI,WAAW,EAAEH,SAAS,EAAEI,YAAY,CAAC,CAAC;EAE1D,MAAMgB,mBAAmB,GAAG,IAAAX,kBAAW,EACpCK,CAAC,IAAK;IACL,MAAM;MACJI,WAAW,EAAE;QAAEC,OAAO;QAAEE;MAAY;IACtC,CAAC,GAAGP,CAAC;IAELb,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAGa,CAAqC,CAAC;IACnDhB,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGgB,CAAC,CAAC;IAEjB,IAAIV,YAAY,CAACa,QAAQ,CAACE,OAAO,CAAC,EAAE;MAClC,IAAIE,WAAW,EAAE;QACflB,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAG,CAAC,CAA0B,CAAC;MAC5C,CAAC,MAAM;QACLD,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAG,CAAC;MACb;IACF;IACAG,UAAU,CAACM,OAAO,GAAGJ,SAAS;EAChC,CAAC,EACD,CAACN,UAAU,EAAEH,YAAY,EAAEM,YAAY,EAAED,WAAW,EAAED,OAAO,CAC/D,CAAC;EAED,OAAO;IACLM,cAAc,EAAEN,OAAO,IAAIC,WAAW,GAAGK,cAAc,GAAGN,OAAO;IACjEU,qBAAqB;IACrBQ;EACF,CAAC;AACH,CAAC;AAAC3B,OAAA,CAAAI,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -3,7 +3,6 @@ export const ANDROID_SPACE_KEY_CODE = 62;
3
3
  export const ANDROID_DPAD_CENTER_CODE = 23;
4
4
  export const ANDROID_ENTER_CODE = 66;
5
5
  export const ANDROID_TRIGGER_CODES = [ANDROID_SPACE_KEY_CODE, ANDROID_DPAD_CENTER_CODE, ANDROID_ENTER_CODE];
6
- const MILLISECOND_THRESHOLD = 20;
7
6
  export const useKeyboardPress = ({
8
7
  onKeyUpPress,
9
8
  onKeyDownPress,
@@ -13,7 +12,22 @@ export const useKeyboardPress = ({
13
12
  onLongPress,
14
13
  triggerCodes = ANDROID_TRIGGER_CODES
15
14
  }) => {
16
- const thresholdTime = useRef(0);
15
+ const pressInRef = useRef(undefined);
16
+ const onPressHandler = useCallback(event => {
17
+ if (!onLongPress || !pressInRef.current) {
18
+ onPress === null || onPress === void 0 || onPress(event);
19
+ }
20
+ }, [onLongPress, onPress]);
21
+ const onKeyDownPressHandler = useMemo(() => {
22
+ if (!onPressIn && !onLongPress) return onKeyDownPress;
23
+ return e => {
24
+ pressInRef.current = new Date().getTime();
25
+ onKeyDownPress === null || onKeyDownPress === void 0 || onKeyDownPress(e);
26
+ if (triggerCodes.includes(e.nativeEvent.keyCode)) {
27
+ onPressIn === null || onPressIn === void 0 || onPressIn(e);
28
+ }
29
+ };
30
+ }, [onKeyDownPress, onLongPress, onPressIn, triggerCodes]);
17
31
  const onKeyUpPressHandler = useCallback(e => {
18
32
  const {
19
33
  nativeEvent: {
@@ -25,31 +39,17 @@ export const useKeyboardPress = ({
25
39
  onKeyUpPress === null || onKeyUpPress === void 0 || onKeyUpPress(e);
26
40
  if (triggerCodes.includes(keyCode)) {
27
41
  if (isLongPress) {
28
- thresholdTime.current = e === null || e === void 0 ? void 0 : e.timeStamp;
29
42
  onLongPress === null || onLongPress === void 0 || onLongPress({});
43
+ } else {
44
+ onPress === null || onPress === void 0 || onPress();
30
45
  }
31
46
  }
32
- }, [onPressOut, onKeyUpPress, triggerCodes, onLongPress]);
33
- const onKeyDownPressHandler = useMemo(() => {
34
- if (!onPressIn) return onKeyDownPress;
35
- return e => {
36
- onKeyDownPress === null || onKeyDownPress === void 0 || onKeyDownPress(e);
37
- if (triggerCodes.includes(e.nativeEvent.keyCode)) {
38
- onPressIn === null || onPressIn === void 0 || onPressIn(e);
39
- }
40
- };
41
- }, [onKeyDownPress, onPressIn, triggerCodes]);
42
- const onPressHandler = useCallback(event => {
43
- const pressThreshold = ((event === null || event === void 0 ? void 0 : event.timeStamp) ?? 0) - thresholdTime.current;
44
- if (pressThreshold > MILLISECOND_THRESHOLD) {
45
- onPress === null || onPress === void 0 || onPress(event);
46
- }
47
- }, [onPress]);
48
- const hasHandler = onPressOut || onKeyUpPress || onLongPress || onPress;
47
+ pressInRef.current = undefined;
48
+ }, [onPressOut, onKeyUpPress, triggerCodes, onLongPress, onPress]);
49
49
  return {
50
- onKeyUpPressHandler: hasHandler && onKeyUpPressHandler,
50
+ onPressHandler: onPress && onLongPress ? onPressHandler : onPress,
51
51
  onKeyDownPressHandler,
52
- onPressHandler: onPress && onPressHandler
52
+ onKeyUpPressHandler
53
53
  };
54
54
  };
55
55
  //# sourceMappingURL=useKeyboardPress.android.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useMemo","useRef","ANDROID_SPACE_KEY_CODE","ANDROID_DPAD_CENTER_CODE","ANDROID_ENTER_CODE","ANDROID_TRIGGER_CODES","MILLISECOND_THRESHOLD","useKeyboardPress","onKeyUpPress","onKeyDownPress","onPressIn","onPressOut","onPress","onLongPress","triggerCodes","thresholdTime","onKeyUpPressHandler","e","nativeEvent","keyCode","isLongPress","includes","current","timeStamp","onKeyDownPressHandler","onPressHandler","event","pressThreshold","hasHandler"],"sourceRoot":"../../../../src","sources":["utils/useKeyboardPress/useKeyboardPress.android.ts"],"mappings":"AAAA,SAASA,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAKpD,OAAO,MAAMC,sBAAsB,GAAG,EAAE;AACxC,OAAO,MAAMC,wBAAwB,GAAG,EAAE;AAC1C,OAAO,MAAMC,kBAAkB,GAAG,EAAE;AAEpC,OAAO,MAAMC,qBAAqB,GAAG,CACnCH,sBAAsB,EACtBC,wBAAwB,EACxBC,kBAAkB,CACnB;AAED,MAAME,qBAAqB,GAAG,EAAE;AAEhC,OAAO,MAAMC,gBAAgB,GAAGA,CAG9B;EACAC,YAAY;EACZC,cAAc;EACdC,SAAS;EACTC,UAAU;EACVC,OAAO;EACPC,WAAW;EACXC,YAAY,GAAGT;AACY,CAAC,KAAK;EACjC,MAAMU,aAAa,GAAGd,MAAM,CAAC,CAAC,CAAC;EAC/B,MAAMe,mBAAmB,GAAGjB,WAAW,CACpCkB,CAAC,IAAK;IACL,MAAM;MACJC,WAAW,EAAE;QAAEC,OAAO;QAAEC;MAAY;IACtC,CAAC,GAAGH,CAAC;IAELN,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAGM,CAAqC,CAAC;IACnDT,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGS,CAAC,CAAC;IAEjB,IAAIH,YAAY,CAACO,QAAQ,CAACF,OAAO,CAAC,EAAE;MAClC,IAAIC,WAAW,EAAE;QACfL,aAAa,CAACO,OAAO,GAAGL,CAAC,aAADA,CAAC,uBAADA,CAAC,CAAEM,SAAS;QACpCV,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAG,CAAC,CAA0B,CAAC;MAC5C;IACF;EACF,CAAC,EACD,CAACF,UAAU,EAAEH,YAAY,EAAEM,YAAY,EAAED,WAAW,CACtD,CAAC;EAED,MAAMW,qBAAqB,GAAGxB,OAAO,CAAC,MAAM;IAC1C,IAAI,CAACU,SAAS,EAAE,OAAOD,cAAc;IACrC,OAAQQ,CAAa,IAAK;MACxBR,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAGQ,CAAC,CAAC;MACnB,IAAIH,YAAY,CAACO,QAAQ,CAACJ,CAAC,CAACC,WAAW,CAACC,OAAO,CAAC,EAAE;QAChDT,SAAS,aAATA,SAAS,eAATA,SAAS,CAAGO,CAAqC,CAAC;MACpD;IACF,CAAC;EACH,CAAC,EAAE,CAACR,cAAc,EAAEC,SAAS,EAAEI,YAAY,CAAC,CAAC;EAE7C,MAAMW,cAAc,GAAG1B,WAAW,CAC/B2B,KAA4B,IAAK;IAChC,MAAMC,cAAc,GAAG,CAAC,CAAAD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEH,SAAS,KAAI,CAAC,IAAIR,aAAa,CAACO,OAAO;IACtE,IAAIK,cAAc,GAAGrB,qBAAqB,EAAE;MAC1CM,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAGc,KAAK,CAAC;IAClB;EACF,CAAC,EACD,CAACd,OAAO,CACV,CAAC;EAED,MAAMgB,UAAU,GAAGjB,UAAU,IAAIH,YAAY,IAAIK,WAAW,IAAID,OAAO;EACvE,OAAO;IACLI,mBAAmB,EAAEY,UAAU,IAAIZ,mBAAmB;IACtDQ,qBAAqB;IACrBC,cAAc,EAAEb,OAAO,IAAIa;EAC7B,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useMemo","useRef","ANDROID_SPACE_KEY_CODE","ANDROID_DPAD_CENTER_CODE","ANDROID_ENTER_CODE","ANDROID_TRIGGER_CODES","useKeyboardPress","onKeyUpPress","onKeyDownPress","onPressIn","onPressOut","onPress","onLongPress","triggerCodes","pressInRef","undefined","onPressHandler","event","current","onKeyDownPressHandler","e","Date","getTime","includes","nativeEvent","keyCode","onKeyUpPressHandler","isLongPress"],"sourceRoot":"../../../../src","sources":["utils/useKeyboardPress/useKeyboardPress.android.ts"],"mappings":"AAAA,SAASA,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAKpD,OAAO,MAAMC,sBAAsB,GAAG,EAAE;AACxC,OAAO,MAAMC,wBAAwB,GAAG,EAAE;AAC1C,OAAO,MAAMC,kBAAkB,GAAG,EAAE;AAEpC,OAAO,MAAMC,qBAAqB,GAAG,CACnCH,sBAAsB,EACtBC,wBAAwB,EACxBC,kBAAkB,CACnB;AAED,OAAO,MAAME,gBAAgB,GAAGA,CAG9B;EACAC,YAAY;EACZC,cAAc;EACdC,SAAS;EACTC,UAAU;EACVC,OAAO;EACPC,WAAW;EACXC,YAAY,GAAGR;AACY,CAAC,KAAK;EACjC,MAAMS,UAAU,GAAGb,MAAM,CAAqBc,SAAS,CAAC;EAExD,MAAMC,cAAc,GAAGjB,WAAW,CAC/BkB,KAA4B,IAAK;IAChC,IAAI,CAACL,WAAW,IAAI,CAACE,UAAU,CAACI,OAAO,EAAE;MACvCP,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAGM,KAAK,CAAC;IAClB;EACF,CAAC,EACD,CAACL,WAAW,EAAED,OAAO,CACvB,CAAC;EAED,MAAMQ,qBAAqB,GAAGnB,OAAO,CAAC,MAAM;IAC1C,IAAI,CAACS,SAAS,IAAI,CAACG,WAAW,EAAE,OAAOJ,cAAc;IACrD,OAAQY,CAAa,IAAK;MACxBN,UAAU,CAACI,OAAO,GAAG,IAAIG,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC;MACzCd,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAGY,CAAC,CAAC;MACnB,IAAIP,YAAY,CAACU,QAAQ,CAACH,CAAC,CAACI,WAAW,CAACC,OAAO,CAAC,EAAE;QAChDhB,SAAS,aAATA,SAAS,eAATA,SAAS,CAAGW,CAAqC,CAAC;MACpD;IACF,CAAC;EACH,CAAC,EAAE,CAACZ,cAAc,EAAEI,WAAW,EAAEH,SAAS,EAAEI,YAAY,CAAC,CAAC;EAE1D,MAAMa,mBAAmB,GAAG3B,WAAW,CACpCqB,CAAC,IAAK;IACL,MAAM;MACJI,WAAW,EAAE;QAAEC,OAAO;QAAEE;MAAY;IACtC,CAAC,GAAGP,CAAC;IAELV,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAGU,CAAqC,CAAC;IACnDb,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAGa,CAAC,CAAC;IAEjB,IAAIP,YAAY,CAACU,QAAQ,CAACE,OAAO,CAAC,EAAE;MAClC,IAAIE,WAAW,EAAE;QACff,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAG,CAAC,CAA0B,CAAC;MAC5C,CAAC,MAAM;QACLD,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAG,CAAC;MACb;IACF;IACAG,UAAU,CAACI,OAAO,GAAGH,SAAS;EAChC,CAAC,EACD,CAACL,UAAU,EAAEH,YAAY,EAAEM,YAAY,EAAED,WAAW,EAAED,OAAO,CAC/D,CAAC;EAED,OAAO;IACLK,cAAc,EAAEL,OAAO,IAAIC,WAAW,GAAGI,cAAc,GAAGL,OAAO;IACjEQ,qBAAqB;IACrBO;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -6,8 +6,8 @@ export declare const ANDROID_DPAD_CENTER_CODE = 23;
6
6
  export declare const ANDROID_ENTER_CODE = 66;
7
7
  export declare const ANDROID_TRIGGER_CODES: number[];
8
8
  export declare const useKeyboardPress: <T extends (event?: any) => void, K extends (event?: any) => void>({ onKeyUpPress, onKeyDownPress, onPressIn, onPressOut, onPress, onLongPress, triggerCodes, }: UseKeyboardPressProps<T, K>) => {
9
- onKeyUpPressHandler: OnKeyPressFn | undefined;
10
- onKeyDownPressHandler: OnKeyPressFn | undefined;
11
9
  onPressHandler: ((event: GestureResponderEvent) => void) | undefined;
10
+ onKeyDownPressHandler: OnKeyPressFn | undefined;
11
+ onKeyUpPressHandler: OnKeyPressFn;
12
12
  };
13
13
  //# sourceMappingURL=useKeyboardPress.android.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyboardPress.android.d.ts","sourceRoot":"","sources":["../../../../../src/utils/useKeyboardPress/useKeyboardPress.android.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE7E,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,eAAO,MAAM,qBAAqB,UAIjC,CAAC;AAIF,eAAO,MAAM,gBAAgB,GAC3B,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,EAC/B,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,EAC/B,8FAQC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC;;;6BAgClB,qBAAqB;CAehC,CAAC"}
1
+ {"version":3,"file":"useKeyboardPress.android.d.ts","sourceRoot":"","sources":["../../../../../src/utils/useKeyboardPress/useKeyboardPress.android.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE7E,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,eAAO,MAAM,qBAAqB,UAIjC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,EAC/B,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,EAC/B,8FAQC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC;6BAIlB,qBAAqB;;;CA6ChC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-external-keyboard",
3
- "version": "0.6.7",
3
+ "version": "0.6.8-rc",
4
4
  "description": "Toolkit for improving physical keyboard support in React Native",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -62,7 +62,7 @@
62
62
  "@evilmartians/lefthook": "^1.5.0",
63
63
  "@react-native-community/cli": "15.0.1",
64
64
  "@react-native/eslint-config": "^0.73.1",
65
- "@release-it/conventional-changelog": "^9.0.2",
65
+ "@release-it/conventional-changelog": "^10.0.1",
66
66
  "@types/jest": "^29.5.5",
67
67
  "@types/react": "^18.2.44",
68
68
  "commitlint": "^17.0.2",
@@ -75,7 +75,7 @@
75
75
  "react": "18.3.1",
76
76
  "react-native": "0.76.5",
77
77
  "react-native-builder-bob": "^0.20.4",
78
- "release-it": "^17.10.0",
78
+ "release-it": "^19.0.5",
79
79
  "turbo": "^1.10.7",
80
80
  "typescript": "^5.2.2"
81
81
  },
@@ -13,8 +13,6 @@ export const ANDROID_TRIGGER_CODES = [
13
13
  ANDROID_ENTER_CODE,
14
14
  ];
15
15
 
16
- const MILLISECOND_THRESHOLD = 20;
17
-
18
16
  export const useKeyboardPress = <
19
17
  T extends (event?: any) => void,
20
18
  K extends (event?: any) => void,
@@ -27,50 +25,52 @@ export const useKeyboardPress = <
27
25
  onLongPress,
28
26
  triggerCodes = ANDROID_TRIGGER_CODES,
29
27
  }: UseKeyboardPressProps<T, K>) => {
30
- const thresholdTime = useRef(0);
31
- const onKeyUpPressHandler = useCallback<OnKeyPressFn>(
32
- (e) => {
33
- const {
34
- nativeEvent: { keyCode, isLongPress },
35
- } = e;
36
-
37
- onPressOut?.(e as unknown as GestureResponderEvent);
38
- onKeyUpPress?.(e);
28
+ const pressInRef = useRef<number | undefined>(undefined);
39
29
 
40
- if (triggerCodes.includes(keyCode)) {
41
- if (isLongPress) {
42
- thresholdTime.current = e?.timeStamp;
43
- onLongPress?.({} as GestureResponderEvent);
44
- }
30
+ const onPressHandler = useCallback(
31
+ (event: GestureResponderEvent) => {
32
+ if (!onLongPress || !pressInRef.current) {
33
+ onPress?.(event);
45
34
  }
46
35
  },
47
- [onPressOut, onKeyUpPress, triggerCodes, onLongPress]
36
+ [onLongPress, onPress]
48
37
  );
49
38
 
50
39
  const onKeyDownPressHandler = useMemo(() => {
51
- if (!onPressIn) return onKeyDownPress;
40
+ if (!onPressIn && !onLongPress) return onKeyDownPress;
52
41
  return (e: OnKeyPress) => {
42
+ pressInRef.current = new Date().getTime();
53
43
  onKeyDownPress?.(e);
54
44
  if (triggerCodes.includes(e.nativeEvent.keyCode)) {
55
45
  onPressIn?.(e as unknown as GestureResponderEvent);
56
46
  }
57
47
  };
58
- }, [onKeyDownPress, onPressIn, triggerCodes]);
48
+ }, [onKeyDownPress, onLongPress, onPressIn, triggerCodes]);
59
49
 
60
- const onPressHandler = useCallback(
61
- (event: GestureResponderEvent) => {
62
- const pressThreshold = (event?.timeStamp ?? 0) - thresholdTime.current;
63
- if (pressThreshold > MILLISECOND_THRESHOLD) {
64
- onPress?.(event);
50
+ const onKeyUpPressHandler = useCallback<OnKeyPressFn>(
51
+ (e) => {
52
+ const {
53
+ nativeEvent: { keyCode, isLongPress },
54
+ } = e;
55
+
56
+ onPressOut?.(e as unknown as GestureResponderEvent);
57
+ onKeyUpPress?.(e);
58
+
59
+ if (triggerCodes.includes(keyCode)) {
60
+ if (isLongPress) {
61
+ onLongPress?.({} as GestureResponderEvent);
62
+ } else {
63
+ onPress?.();
64
+ }
65
65
  }
66
+ pressInRef.current = undefined;
66
67
  },
67
- [onPress]
68
+ [onPressOut, onKeyUpPress, triggerCodes, onLongPress, onPress]
68
69
  );
69
70
 
70
- const hasHandler = onPressOut || onKeyUpPress || onLongPress || onPress;
71
71
  return {
72
- onKeyUpPressHandler: hasHandler && onKeyUpPressHandler,
72
+ onPressHandler: onPress && onLongPress ? onPressHandler : onPress,
73
73
  onKeyDownPressHandler,
74
- onPressHandler: onPress && onPressHandler,
74
+ onKeyUpPressHandler,
75
75
  };
76
76
  };