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 +3 -3
- package/lib/commonjs/utils/useKeyboardPress/useKeyboardPress.android.js +22 -22
- package/lib/commonjs/utils/useKeyboardPress/useKeyboardPress.android.js.map +1 -1
- package/lib/module/utils/useKeyboardPress/useKeyboardPress.android.js +22 -22
- package/lib/module/utils/useKeyboardPress/useKeyboardPress.android.js.map +1 -1
- package/lib/typescript/src/utils/useKeyboardPress/useKeyboardPress.android.d.ts +2 -2
- package/lib/typescript/src/utils/useKeyboardPress/useKeyboardPress.android.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/utils/useKeyboardPress/useKeyboardPress.android.ts +28 -28
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
39
|
-
|
|
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
|
-
|
|
56
|
+
onPressHandler: onPress && onLongPress ? onPressHandler : onPress,
|
|
57
57
|
onKeyDownPressHandler,
|
|
58
|
-
|
|
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","
|
|
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
|
|
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
|
-
|
|
33
|
-
|
|
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
|
-
|
|
50
|
+
onPressHandler: onPress && onLongPress ? onPressHandler : onPress,
|
|
51
51
|
onKeyDownPressHandler,
|
|
52
|
-
|
|
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","
|
|
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;
|
|
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.
|
|
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": "^
|
|
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": "^
|
|
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
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
30
|
+
const onPressHandler = useCallback(
|
|
31
|
+
(event: GestureResponderEvent) => {
|
|
32
|
+
if (!onLongPress || !pressInRef.current) {
|
|
33
|
+
onPress?.(event);
|
|
45
34
|
}
|
|
46
35
|
},
|
|
47
|
-
[
|
|
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
|
|
61
|
-
(
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
72
|
+
onPressHandler: onPress && onLongPress ? onPressHandler : onPress,
|
|
73
73
|
onKeyDownPressHandler,
|
|
74
|
-
|
|
74
|
+
onKeyUpPressHandler,
|
|
75
75
|
};
|
|
76
76
|
};
|