@react-native-aria/interactions 0.2.7 → 0.2.9
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/lib/commonjs/index.js +63 -21
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +28 -0
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/useHover.js +8 -2
- package/lib/commonjs/useHover.js.map +1 -1
- package/lib/commonjs/useHover.web.js +1 -1
- package/lib/commonjs/useHover.web.js.map +1 -1
- package/lib/commonjs/useIsPressProps.js +22 -0
- package/lib/commonjs/useIsPressProps.js.map +1 -0
- package/lib/commonjs/useKeyboardDismisssable.js +81 -0
- package/lib/commonjs/useKeyboardDismisssable.js.map +1 -0
- package/lib/module/index.js +4 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +4 -2
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/useHover.js +7 -2
- package/lib/module/useHover.js.map +1 -1
- package/lib/module/useHover.web.js +1 -1
- package/lib/module/useHover.web.js.map +1 -1
- package/lib/module/useIsPressProps.js +12 -0
- package/lib/module/useIsPressProps.js.map +1 -0
- package/lib/module/useKeyboardDismisssable.js +62 -0
- package/lib/module/useKeyboardDismisssable.js.map +1 -0
- package/lib/typescript/index.d.ts +4 -2
- package/lib/typescript/index.web.d.ts +4 -2
- package/lib/typescript/useHover.d.ts +5 -2
- package/lib/typescript/useHover.web.d.ts +1 -1
- package/lib/typescript/useIsPressProps.d.ts +7 -0
- package/lib/typescript/useKeyboardDismisssable.d.ts +15 -0
- package/package.json +2 -2
- package/src/index.ts +14 -2
- package/src/index.web.ts +8 -2
- package/src/useHover.ts +8 -3
- package/src/useHover.web.ts +2 -2
- package/src/useIsPressProps.ts +12 -0
- package/src/useKeyboardDismisssable.ts +59 -0
- package/.DS_Store +0 -0
- package/src/.DS_Store +0 -0
package/lib/commonjs/index.js
CHANGED
@@ -3,30 +3,72 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
+
Object.defineProperty(exports, "useHover", {
|
7
|
+
enumerable: true,
|
8
|
+
get: function () {
|
9
|
+
return _useHover.useHover;
|
10
|
+
}
|
11
|
+
});
|
12
|
+
Object.defineProperty(exports, "usePress", {
|
13
|
+
enumerable: true,
|
14
|
+
get: function () {
|
15
|
+
return _usePress.usePress;
|
16
|
+
}
|
17
|
+
});
|
18
|
+
Object.defineProperty(exports, "PressEvents", {
|
19
|
+
enumerable: true,
|
20
|
+
get: function () {
|
21
|
+
return _usePress.PressEvents;
|
22
|
+
}
|
23
|
+
});
|
24
|
+
Object.defineProperty(exports, "PressHookProps", {
|
25
|
+
enumerable: true,
|
26
|
+
get: function () {
|
27
|
+
return _usePress.PressHookProps;
|
28
|
+
}
|
29
|
+
});
|
30
|
+
Object.defineProperty(exports, "PressProps", {
|
31
|
+
enumerable: true,
|
32
|
+
get: function () {
|
33
|
+
return _usePress.PressProps;
|
34
|
+
}
|
35
|
+
});
|
36
|
+
Object.defineProperty(exports, "PressResult", {
|
37
|
+
enumerable: true,
|
38
|
+
get: function () {
|
39
|
+
return _usePress.PressResult;
|
40
|
+
}
|
41
|
+
});
|
42
|
+
Object.defineProperty(exports, "useIsPressProps", {
|
43
|
+
enumerable: true,
|
44
|
+
get: function () {
|
45
|
+
return _useIsPressProps.useIsPressProps;
|
46
|
+
}
|
47
|
+
});
|
48
|
+
Object.defineProperty(exports, "keyboardDismissHandlerManager", {
|
49
|
+
enumerable: true,
|
50
|
+
get: function () {
|
51
|
+
return _useKeyboardDismisssable.keyboardDismissHandlerManager;
|
52
|
+
}
|
53
|
+
});
|
54
|
+
Object.defineProperty(exports, "useKeyboardDismissable", {
|
55
|
+
enumerable: true,
|
56
|
+
get: function () {
|
57
|
+
return _useKeyboardDismisssable.useKeyboardDismissable;
|
58
|
+
}
|
59
|
+
});
|
60
|
+
Object.defineProperty(exports, "useBackHandler", {
|
61
|
+
enumerable: true,
|
62
|
+
get: function () {
|
63
|
+
return _useKeyboardDismisssable.useBackHandler;
|
64
|
+
}
|
65
|
+
});
|
6
66
|
|
7
67
|
var _useHover = require("./useHover");
|
8
68
|
|
9
|
-
Object.keys(_useHover).forEach(function (key) {
|
10
|
-
if (key === "default" || key === "__esModule") return;
|
11
|
-
if (key in exports && exports[key] === _useHover[key]) return;
|
12
|
-
Object.defineProperty(exports, key, {
|
13
|
-
enumerable: true,
|
14
|
-
get: function () {
|
15
|
-
return _useHover[key];
|
16
|
-
}
|
17
|
-
});
|
18
|
-
});
|
19
|
-
|
20
69
|
var _usePress = require("./usePress");
|
21
70
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
Object.defineProperty(exports, key, {
|
26
|
-
enumerable: true,
|
27
|
-
get: function () {
|
28
|
-
return _usePress[key];
|
29
|
-
}
|
30
|
-
});
|
31
|
-
});
|
71
|
+
var _useIsPressProps = require("./useIsPressProps");
|
72
|
+
|
73
|
+
var _useKeyboardDismisssable = require("./useKeyboardDismisssable");
|
32
74
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAOA;;AACA","sourcesContent":["export { useHover } from './useHover';\nexport {\n usePress,\n PressEvents,\n PressHookProps,\n PressProps,\n PressResult,\n} from './usePress';\nexport { useIsPressProps } from './useIsPressProps';\nexport {\n keyboardDismissHandlerManager,\n useKeyboardDismissable,\n useBackHandler,\n} from './useKeyboardDismisssable';\n"]}
|
@@ -15,8 +15,36 @@ Object.defineProperty(exports, "usePress", {
|
|
15
15
|
return _usePress.usePress;
|
16
16
|
}
|
17
17
|
});
|
18
|
+
Object.defineProperty(exports, "useIsPressProps", {
|
19
|
+
enumerable: true,
|
20
|
+
get: function () {
|
21
|
+
return _useIsPressProps.useIsPressProps;
|
22
|
+
}
|
23
|
+
});
|
24
|
+
Object.defineProperty(exports, "keyboardDismissHandlerManager", {
|
25
|
+
enumerable: true,
|
26
|
+
get: function () {
|
27
|
+
return _useKeyboardDismisssable.keyboardDismissHandlerManager;
|
28
|
+
}
|
29
|
+
});
|
30
|
+
Object.defineProperty(exports, "useKeyboardDismissable", {
|
31
|
+
enumerable: true,
|
32
|
+
get: function () {
|
33
|
+
return _useKeyboardDismisssable.useKeyboardDismissable;
|
34
|
+
}
|
35
|
+
});
|
36
|
+
Object.defineProperty(exports, "useBackHandler", {
|
37
|
+
enumerable: true,
|
38
|
+
get: function () {
|
39
|
+
return _useKeyboardDismisssable.useBackHandler;
|
40
|
+
}
|
41
|
+
});
|
18
42
|
|
19
43
|
var _useHover = require("./useHover.web");
|
20
44
|
|
21
45
|
var _usePress = require("./usePress");
|
46
|
+
|
47
|
+
var _useIsPressProps = require("./useIsPressProps");
|
48
|
+
|
49
|
+
var _useKeyboardDismisssable = require("./useKeyboardDismisssable");
|
22
50
|
//# sourceMappingURL=index.web.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.web.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"sources":["index.web.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA","sourcesContent":["export { useHover } from './useHover.web';\nexport { usePress } from './usePress';\nexport { useIsPressProps } from './useIsPressProps';\nexport {\n keyboardDismissHandlerManager,\n useKeyboardDismissable,\n useBackHandler,\n} from './useKeyboardDismisssable';\n"]}
|
package/lib/commonjs/useHover.js
CHANGED
@@ -5,10 +5,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.useHover = void 0;
|
7
7
|
|
8
|
+
var _react = require("react");
|
9
|
+
|
8
10
|
const useHover = (_props, _ref) => {
|
11
|
+
const [isHovered, setHovered] = (0, _react.useState)(false);
|
9
12
|
let params = {
|
10
|
-
hoverProps: {
|
11
|
-
|
13
|
+
hoverProps: {
|
14
|
+
onHoverIn: () => setHovered(true),
|
15
|
+
onHoverOut: () => setHovered(false)
|
16
|
+
},
|
17
|
+
isHovered
|
12
18
|
};
|
13
19
|
return params;
|
14
20
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["useHover.ts"],"names":["useHover","_props","_ref","params","hoverProps","
|
1
|
+
{"version":3,"sources":["useHover.ts"],"names":["useHover","_props","_ref","isHovered","setHovered","params","hoverProps","onHoverIn","onHoverOut"],"mappings":";;;;;;;AACA;;AAEO,MAAMA,QAAQ,GAAG,CAACC,MAAD,EAAqBC,IAArB,KAAoC;AAC1D,QAAM,CAACC,SAAD,EAAYC,UAAZ,IAA0B,qBAAS,KAAT,CAAhC;AACA,MAAIC,MAAM,GAAG;AACXC,IAAAA,UAAU,EAAE;AACVC,MAAAA,SAAS,EAAE,MAAMH,UAAU,CAAC,IAAD,CADjB;AAEVI,MAAAA,UAAU,EAAE,MAAMJ,UAAU,CAAC,KAAD;AAFlB,KADD;AAKXD,IAAAA;AALW,GAAb;AAQA,SAAOE,MAAP;AACD,CAXM","sourcesContent":["import { HoverProps } from '@react-aria/interactions';\nimport { useState } from 'react';\n\nexport const useHover = (_props: HoverProps, _ref?: any) => {\n const [isHovered, setHovered] = useState(false);\n let params = {\n hoverProps: {\n onHoverIn: () => setHovered(true),\n onHoverOut: () => setHovered(false),\n },\n isHovered,\n };\n\n return params;\n};\n"]}
|
@@ -14,7 +14,7 @@ var _utils = require("@react-native-aria/utils");
|
|
14
14
|
const useHover = (props, ref) => {
|
15
15
|
let params = (0, _interactions.useHover)(props);
|
16
16
|
(0, _react.useEffect)(() => {
|
17
|
-
(0, _utils.attachEventHandlersOnRef)(params.hoverProps, ref);
|
17
|
+
ref && ref.current && (0, _utils.attachEventHandlersOnRef)(params.hoverProps, ref);
|
18
18
|
}, []);
|
19
19
|
return params;
|
20
20
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["useHover.web.ts"],"names":["useHover","props","ref","params","hoverProps"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEO,MAAMA,QAAQ,GAAG,CAACC,KAAD,EAAoBC,GAApB,
|
1
|
+
{"version":3,"sources":["useHover.web.ts"],"names":["useHover","props","ref","params","current","hoverProps"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEO,MAAMA,QAAQ,GAAG,CAACC,KAAD,EAAoBC,GAApB,KAAkC;AACxD,MAAIC,MAAM,GAAG,4BAAYF,KAAZ,CAAb;AACA,wBAAU,MAAM;AACdC,IAAAA,GAAG,IAAIA,GAAG,CAACE,OAAX,IAAsB,qCAAyBD,MAAM,CAACE,UAAhC,EAA4CH,GAA5C,CAAtB;AACD,GAFD,EAEG,EAFH;AAIA,SAAOC,MAAP;AACD,CAPM","sourcesContent":["import { useHover as useHoverWeb, HoverProps } from '@react-aria/interactions';\nimport { useEffect } from 'react';\nimport { attachEventHandlersOnRef } from '@react-native-aria/utils';\n\nexport const useHover = (props: HoverProps, ref?: any) => {\n let params = useHoverWeb(props);\n useEffect(() => {\n ref && ref.current && attachEventHandlersOnRef(params.hoverProps, ref);\n }, []);\n\n return params;\n};\n"]}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.useIsPressProps = void 0;
|
7
|
+
|
8
|
+
var _react = require("react");
|
9
|
+
|
10
|
+
const useIsPressProps = () => {
|
11
|
+
const [isPressed, setIsPressed] = (0, _react.useState)(false);
|
12
|
+
return {
|
13
|
+
pressableProps: {
|
14
|
+
onPressIn: () => setIsPressed(true),
|
15
|
+
onPressOut: () => setIsPressed(false)
|
16
|
+
},
|
17
|
+
isPressed
|
18
|
+
};
|
19
|
+
};
|
20
|
+
|
21
|
+
exports.useIsPressProps = useIsPressProps;
|
22
|
+
//# sourceMappingURL=useIsPressProps.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["useIsPressProps.ts"],"names":["useIsPressProps","isPressed","setIsPressed","pressableProps","onPressIn","onPressOut"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,eAAe,GAAG,MAAM;AACnC,QAAM,CAACC,SAAD,EAAYC,YAAZ,IAA4B,qBAAS,KAAT,CAAlC;AACA,SAAO;AACLC,IAAAA,cAAc,EAAE;AACdC,MAAAA,SAAS,EAAE,MAAMF,YAAY,CAAC,IAAD,CADf;AAEdG,MAAAA,UAAU,EAAE,MAAMH,YAAY,CAAC,KAAD;AAFhB,KADX;AAKLD,IAAAA;AALK,GAAP;AAOD,CATM","sourcesContent":["import { useState } from 'react';\n\nexport const useIsPressProps = () => {\n const [isPressed, setIsPressed] = useState(false);\n return {\n pressableProps: {\n onPressIn: () => setIsPressed(true),\n onPressOut: () => setIsPressed(false),\n },\n isPressed,\n };\n};\n"]}
|
@@ -0,0 +1,81 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.useBackHandler = useBackHandler;
|
7
|
+
exports.useKeyboardDismissable = exports.keyboardDismissHandlerManager = void 0;
|
8
|
+
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
10
|
+
|
11
|
+
var _reactNative = require("react-native");
|
12
|
+
|
13
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
14
|
+
|
15
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
16
|
+
|
17
|
+
let keyboardDismissHandlers = [];
|
18
|
+
const keyboardDismissHandlerManager = {
|
19
|
+
push: handler => {
|
20
|
+
keyboardDismissHandlers.push(handler);
|
21
|
+
return () => {
|
22
|
+
keyboardDismissHandlers = keyboardDismissHandlers.filter(h => h !== handler);
|
23
|
+
};
|
24
|
+
},
|
25
|
+
length: () => keyboardDismissHandlers.length,
|
26
|
+
pop: () => {
|
27
|
+
return keyboardDismissHandlers.pop();
|
28
|
+
}
|
29
|
+
};
|
30
|
+
/**
|
31
|
+
* Handles attaching callback for Escape key listener on web and Back button listener on Android
|
32
|
+
*/
|
33
|
+
|
34
|
+
exports.keyboardDismissHandlerManager = keyboardDismissHandlerManager;
|
35
|
+
|
36
|
+
const useKeyboardDismissable = ({
|
37
|
+
enabled,
|
38
|
+
callback
|
39
|
+
}) => {
|
40
|
+
_react.default.useEffect(() => {
|
41
|
+
let cleanupFn = () => {};
|
42
|
+
|
43
|
+
if (enabled) {
|
44
|
+
cleanupFn = keyboardDismissHandlerManager.push(callback);
|
45
|
+
} else {
|
46
|
+
cleanupFn();
|
47
|
+
}
|
48
|
+
|
49
|
+
return () => {
|
50
|
+
cleanupFn();
|
51
|
+
};
|
52
|
+
}, [enabled, callback]);
|
53
|
+
|
54
|
+
useBackHandler({
|
55
|
+
enabled,
|
56
|
+
callback
|
57
|
+
});
|
58
|
+
};
|
59
|
+
|
60
|
+
exports.useKeyboardDismissable = useKeyboardDismissable;
|
61
|
+
|
62
|
+
function useBackHandler({
|
63
|
+
enabled,
|
64
|
+
callback
|
65
|
+
}) {
|
66
|
+
(0, _react.useEffect)(() => {
|
67
|
+
let backHandler = () => {
|
68
|
+
callback();
|
69
|
+
return true;
|
70
|
+
};
|
71
|
+
|
72
|
+
if (enabled) {
|
73
|
+
_reactNative.BackHandler.addEventListener('hardwareBackPress', backHandler);
|
74
|
+
} else {
|
75
|
+
_reactNative.BackHandler.removeEventListener('hardwareBackPress', backHandler);
|
76
|
+
}
|
77
|
+
|
78
|
+
return () => _reactNative.BackHandler.removeEventListener('hardwareBackPress', backHandler);
|
79
|
+
}, [enabled, callback]);
|
80
|
+
}
|
81
|
+
//# sourceMappingURL=useKeyboardDismisssable.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["useKeyboardDismisssable.ts"],"names":["keyboardDismissHandlers","keyboardDismissHandlerManager","push","handler","filter","h","length","pop","useKeyboardDismissable","enabled","callback","React","useEffect","cleanupFn","useBackHandler","backHandler","BackHandler","addEventListener","removeEventListener"],"mappings":";;;;;;;;AAAA;;AAEA;;;;;;AAOA,IAAIA,uBAAyC,GAAG,EAAhD;AACO,MAAMC,6BAA6B,GAAG;AAC3CC,EAAAA,IAAI,EAAGC,OAAD,IAAwB;AAC5BH,IAAAA,uBAAuB,CAACE,IAAxB,CAA6BC,OAA7B;AACA,WAAO,MAAM;AACXH,MAAAA,uBAAuB,GAAGA,uBAAuB,CAACI,MAAxB,CACvBC,CAAD,IAAOA,CAAC,KAAKF,OADW,CAA1B;AAGD,KAJD;AAKD,GAR0C;AAS3CG,EAAAA,MAAM,EAAE,MAAMN,uBAAuB,CAACM,MATK;AAU3CC,EAAAA,GAAG,EAAE,MAAM;AACT,WAAOP,uBAAuB,CAACO,GAAxB,EAAP;AACD;AAZ0C,CAAtC;AAeP;AACA;AACA;;;;AACO,MAAMC,sBAAsB,GAAG,CAAC;AAAEC,EAAAA,OAAF;AAAWC,EAAAA;AAAX,CAAD,KAAoC;AACxEC,iBAAMC,SAAN,CAAgB,MAAM;AACpB,QAAIC,SAAS,GAAG,MAAM,CAAE,CAAxB;;AACA,QAAIJ,OAAJ,EAAa;AACXI,MAAAA,SAAS,GAAGZ,6BAA6B,CAACC,IAA9B,CAAmCQ,QAAnC,CAAZ;AACD,KAFD,MAEO;AACLG,MAAAA,SAAS;AACV;;AACD,WAAO,MAAM;AACXA,MAAAA,SAAS;AACV,KAFD;AAGD,GAVD,EAUG,CAACJ,OAAD,EAAUC,QAAV,CAVH;;AAYAI,EAAAA,cAAc,CAAC;AAAEL,IAAAA,OAAF;AAAWC,IAAAA;AAAX,GAAD,CAAd;AACD,CAdM;;;;AAgBA,SAASI,cAAT,CAAwB;AAAEL,EAAAA,OAAF;AAAWC,EAAAA;AAAX,CAAxB,EAAwD;AAC7D,wBAAU,MAAM;AACd,QAAIK,WAAW,GAAG,MAAM;AACtBL,MAAAA,QAAQ;AACR,aAAO,IAAP;AACD,KAHD;;AAIA,QAAID,OAAJ,EAAa;AACXO,+BAAYC,gBAAZ,CAA6B,mBAA7B,EAAkDF,WAAlD;AACD,KAFD,MAEO;AACLC,+BAAYE,mBAAZ,CAAgC,mBAAhC,EAAqDH,WAArD;AACD;;AACD,WAAO,MACLC,yBAAYE,mBAAZ,CAAgC,mBAAhC,EAAqDH,WAArD,CADF;AAED,GAZD,EAYG,CAACN,OAAD,EAAUC,QAAV,CAZH;AAaD","sourcesContent":["import React from 'react';\nimport { useEffect } from 'react';\nimport { BackHandler } from 'react-native';\n\ntype IParams = {\n enabled?: boolean;\n callback: () => any;\n};\n\nlet keyboardDismissHandlers: Array<() => any> = [];\nexport const keyboardDismissHandlerManager = {\n push: (handler: () => any) => {\n keyboardDismissHandlers.push(handler);\n return () => {\n keyboardDismissHandlers = keyboardDismissHandlers.filter(\n (h) => h !== handler\n );\n };\n },\n length: () => keyboardDismissHandlers.length,\n pop: () => {\n return keyboardDismissHandlers.pop();\n },\n};\n\n/**\n * Handles attaching callback for Escape key listener on web and Back button listener on Android\n */\nexport const useKeyboardDismissable = ({ enabled, callback }: IParams) => {\n React.useEffect(() => {\n let cleanupFn = () => {};\n if (enabled) {\n cleanupFn = keyboardDismissHandlerManager.push(callback);\n } else {\n cleanupFn();\n }\n return () => {\n cleanupFn();\n };\n }, [enabled, callback]);\n\n useBackHandler({ enabled, callback });\n};\n\nexport function useBackHandler({ enabled, callback }: IParams) {\n useEffect(() => {\n let backHandler = () => {\n callback();\n return true;\n };\n if (enabled) {\n BackHandler.addEventListener('hardwareBackPress', backHandler);\n } else {\n BackHandler.removeEventListener('hardwareBackPress', backHandler);\n }\n return () =>\n BackHandler.removeEventListener('hardwareBackPress', backHandler);\n }, [enabled, callback]);\n}\n"]}
|
package/lib/module/index.js
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
-
export
|
2
|
-
export
|
1
|
+
export { useHover } from './useHover';
|
2
|
+
export { usePress, PressEvents, PressHookProps, PressProps, PressResult } from './usePress';
|
3
|
+
export { useIsPressProps } from './useIsPressProps';
|
4
|
+
export { keyboardDismissHandlerManager, useKeyboardDismissable, useBackHandler } from './useKeyboardDismisssable';
|
3
5
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["useHover","usePress","PressEvents","PressHookProps","PressProps","PressResult","useIsPressProps","keyboardDismissHandlerManager","useKeyboardDismissable","useBackHandler"],"mappings":"AAAA,SAASA,QAAT,QAAyB,YAAzB;AACA,SACEC,QADF,EAEEC,WAFF,EAGEC,cAHF,EAIEC,UAJF,EAKEC,WALF,QAMO,YANP;AAOA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SACEC,6BADF,EAEEC,sBAFF,EAGEC,cAHF,QAIO,2BAJP","sourcesContent":["export { useHover } from './useHover';\nexport {\n usePress,\n PressEvents,\n PressHookProps,\n PressProps,\n PressResult,\n} from './usePress';\nexport { useIsPressProps } from './useIsPressProps';\nexport {\n keyboardDismissHandlerManager,\n useKeyboardDismissable,\n useBackHandler,\n} from './useKeyboardDismisssable';\n"]}
|
package/lib/module/index.web.js
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
-
export { useHover } from
|
2
|
-
export { usePress } from
|
1
|
+
export { useHover } from './useHover.web';
|
2
|
+
export { usePress } from './usePress';
|
3
|
+
export { useIsPressProps } from './useIsPressProps';
|
4
|
+
export { keyboardDismissHandlerManager, useKeyboardDismissable, useBackHandler } from './useKeyboardDismisssable';
|
3
5
|
//# sourceMappingURL=index.web.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.web.ts"],"names":["useHover","usePress"],"mappings":"AAAA,SAASA,QAAT,QAAyB,gBAAzB;AACA,SAASC,QAAT,QAAyB,YAAzB","sourcesContent":["export { useHover } from
|
1
|
+
{"version":3,"sources":["index.web.ts"],"names":["useHover","usePress","useIsPressProps","keyboardDismissHandlerManager","useKeyboardDismissable","useBackHandler"],"mappings":"AAAA,SAASA,QAAT,QAAyB,gBAAzB;AACA,SAASC,QAAT,QAAyB,YAAzB;AACA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SACEC,6BADF,EAEEC,sBAFF,EAGEC,cAHF,QAIO,2BAJP","sourcesContent":["export { useHover } from './useHover.web';\nexport { usePress } from './usePress';\nexport { useIsPressProps } from './useIsPressProps';\nexport {\n keyboardDismissHandlerManager,\n useKeyboardDismissable,\n useBackHandler,\n} from './useKeyboardDismisssable';\n"]}
|
package/lib/module/useHover.js
CHANGED
@@ -1,7 +1,12 @@
|
|
1
|
+
import { useState } from 'react';
|
1
2
|
export const useHover = (_props, _ref) => {
|
3
|
+
const [isHovered, setHovered] = useState(false);
|
2
4
|
let params = {
|
3
|
-
hoverProps: {
|
4
|
-
|
5
|
+
hoverProps: {
|
6
|
+
onHoverIn: () => setHovered(true),
|
7
|
+
onHoverOut: () => setHovered(false)
|
8
|
+
},
|
9
|
+
isHovered
|
5
10
|
};
|
6
11
|
return params;
|
7
12
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["useHover.ts"],"names":["useHover","_props","_ref","params","hoverProps","
|
1
|
+
{"version":3,"sources":["useHover.ts"],"names":["useState","useHover","_props","_ref","isHovered","setHovered","params","hoverProps","onHoverIn","onHoverOut"],"mappings":"AACA,SAASA,QAAT,QAAyB,OAAzB;AAEA,OAAO,MAAMC,QAAQ,GAAG,CAACC,MAAD,EAAqBC,IAArB,KAAoC;AAC1D,QAAM,CAACC,SAAD,EAAYC,UAAZ,IAA0BL,QAAQ,CAAC,KAAD,CAAxC;AACA,MAAIM,MAAM,GAAG;AACXC,IAAAA,UAAU,EAAE;AACVC,MAAAA,SAAS,EAAE,MAAMH,UAAU,CAAC,IAAD,CADjB;AAEVI,MAAAA,UAAU,EAAE,MAAMJ,UAAU,CAAC,KAAD;AAFlB,KADD;AAKXD,IAAAA;AALW,GAAb;AAQA,SAAOE,MAAP;AACD,CAXM","sourcesContent":["import { HoverProps } from '@react-aria/interactions';\nimport { useState } from 'react';\n\nexport const useHover = (_props: HoverProps, _ref?: any) => {\n const [isHovered, setHovered] = useState(false);\n let params = {\n hoverProps: {\n onHoverIn: () => setHovered(true),\n onHoverOut: () => setHovered(false),\n },\n isHovered,\n };\n\n return params;\n};\n"]}
|
@@ -4,7 +4,7 @@ import { attachEventHandlersOnRef } from '@react-native-aria/utils';
|
|
4
4
|
export const useHover = (props, ref) => {
|
5
5
|
let params = useHoverWeb(props);
|
6
6
|
useEffect(() => {
|
7
|
-
attachEventHandlersOnRef(params.hoverProps, ref);
|
7
|
+
ref && ref.current && attachEventHandlersOnRef(params.hoverProps, ref);
|
8
8
|
}, []);
|
9
9
|
return params;
|
10
10
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["useHover.web.ts"],"names":["useHover","useHoverWeb","useEffect","attachEventHandlersOnRef","props","ref","params","hoverProps"],"mappings":"AAAA,SAASA,QAAQ,IAAIC,WAArB,QAAoD,0BAApD;AACA,SAASC,SAAT,QAA0B,OAA1B;AACA,SAASC,wBAAT,QAAyC,0BAAzC;AAEA,OAAO,MAAMH,QAAQ,GAAG,CAACI,KAAD,EAAoBC,GAApB,
|
1
|
+
{"version":3,"sources":["useHover.web.ts"],"names":["useHover","useHoverWeb","useEffect","attachEventHandlersOnRef","props","ref","params","current","hoverProps"],"mappings":"AAAA,SAASA,QAAQ,IAAIC,WAArB,QAAoD,0BAApD;AACA,SAASC,SAAT,QAA0B,OAA1B;AACA,SAASC,wBAAT,QAAyC,0BAAzC;AAEA,OAAO,MAAMH,QAAQ,GAAG,CAACI,KAAD,EAAoBC,GAApB,KAAkC;AACxD,MAAIC,MAAM,GAAGL,WAAW,CAACG,KAAD,CAAxB;AACAF,EAAAA,SAAS,CAAC,MAAM;AACdG,IAAAA,GAAG,IAAIA,GAAG,CAACE,OAAX,IAAsBJ,wBAAwB,CAACG,MAAM,CAACE,UAAR,EAAoBH,GAApB,CAA9C;AACD,GAFQ,EAEN,EAFM,CAAT;AAIA,SAAOC,MAAP;AACD,CAPM","sourcesContent":["import { useHover as useHoverWeb, HoverProps } from '@react-aria/interactions';\nimport { useEffect } from 'react';\nimport { attachEventHandlersOnRef } from '@react-native-aria/utils';\n\nexport const useHover = (props: HoverProps, ref?: any) => {\n let params = useHoverWeb(props);\n useEffect(() => {\n ref && ref.current && attachEventHandlersOnRef(params.hoverProps, ref);\n }, []);\n\n return params;\n};\n"]}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { useState } from 'react';
|
2
|
+
export const useIsPressProps = () => {
|
3
|
+
const [isPressed, setIsPressed] = useState(false);
|
4
|
+
return {
|
5
|
+
pressableProps: {
|
6
|
+
onPressIn: () => setIsPressed(true),
|
7
|
+
onPressOut: () => setIsPressed(false)
|
8
|
+
},
|
9
|
+
isPressed
|
10
|
+
};
|
11
|
+
};
|
12
|
+
//# sourceMappingURL=useIsPressProps.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["useIsPressProps.ts"],"names":["useState","useIsPressProps","isPressed","setIsPressed","pressableProps","onPressIn","onPressOut"],"mappings":"AAAA,SAASA,QAAT,QAAyB,OAAzB;AAEA,OAAO,MAAMC,eAAe,GAAG,MAAM;AACnC,QAAM,CAACC,SAAD,EAAYC,YAAZ,IAA4BH,QAAQ,CAAC,KAAD,CAA1C;AACA,SAAO;AACLI,IAAAA,cAAc,EAAE;AACdC,MAAAA,SAAS,EAAE,MAAMF,YAAY,CAAC,IAAD,CADf;AAEdG,MAAAA,UAAU,EAAE,MAAMH,YAAY,CAAC,KAAD;AAFhB,KADX;AAKLD,IAAAA;AALK,GAAP;AAOD,CATM","sourcesContent":["import { useState } from 'react';\n\nexport const useIsPressProps = () => {\n const [isPressed, setIsPressed] = useState(false);\n return {\n pressableProps: {\n onPressIn: () => setIsPressed(true),\n onPressOut: () => setIsPressed(false),\n },\n isPressed,\n };\n};\n"]}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { useEffect } from 'react';
|
3
|
+
import { BackHandler } from 'react-native';
|
4
|
+
let keyboardDismissHandlers = [];
|
5
|
+
export const keyboardDismissHandlerManager = {
|
6
|
+
push: handler => {
|
7
|
+
keyboardDismissHandlers.push(handler);
|
8
|
+
return () => {
|
9
|
+
keyboardDismissHandlers = keyboardDismissHandlers.filter(h => h !== handler);
|
10
|
+
};
|
11
|
+
},
|
12
|
+
length: () => keyboardDismissHandlers.length,
|
13
|
+
pop: () => {
|
14
|
+
return keyboardDismissHandlers.pop();
|
15
|
+
}
|
16
|
+
};
|
17
|
+
/**
|
18
|
+
* Handles attaching callback for Escape key listener on web and Back button listener on Android
|
19
|
+
*/
|
20
|
+
|
21
|
+
export const useKeyboardDismissable = ({
|
22
|
+
enabled,
|
23
|
+
callback
|
24
|
+
}) => {
|
25
|
+
React.useEffect(() => {
|
26
|
+
let cleanupFn = () => {};
|
27
|
+
|
28
|
+
if (enabled) {
|
29
|
+
cleanupFn = keyboardDismissHandlerManager.push(callback);
|
30
|
+
} else {
|
31
|
+
cleanupFn();
|
32
|
+
}
|
33
|
+
|
34
|
+
return () => {
|
35
|
+
cleanupFn();
|
36
|
+
};
|
37
|
+
}, [enabled, callback]);
|
38
|
+
useBackHandler({
|
39
|
+
enabled,
|
40
|
+
callback
|
41
|
+
});
|
42
|
+
};
|
43
|
+
export function useBackHandler({
|
44
|
+
enabled,
|
45
|
+
callback
|
46
|
+
}) {
|
47
|
+
useEffect(() => {
|
48
|
+
let backHandler = () => {
|
49
|
+
callback();
|
50
|
+
return true;
|
51
|
+
};
|
52
|
+
|
53
|
+
if (enabled) {
|
54
|
+
BackHandler.addEventListener('hardwareBackPress', backHandler);
|
55
|
+
} else {
|
56
|
+
BackHandler.removeEventListener('hardwareBackPress', backHandler);
|
57
|
+
}
|
58
|
+
|
59
|
+
return () => BackHandler.removeEventListener('hardwareBackPress', backHandler);
|
60
|
+
}, [enabled, callback]);
|
61
|
+
}
|
62
|
+
//# sourceMappingURL=useKeyboardDismisssable.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["useKeyboardDismisssable.ts"],"names":["React","useEffect","BackHandler","keyboardDismissHandlers","keyboardDismissHandlerManager","push","handler","filter","h","length","pop","useKeyboardDismissable","enabled","callback","cleanupFn","useBackHandler","backHandler","addEventListener","removeEventListener"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,QAA0B,OAA1B;AACA,SAASC,WAAT,QAA4B,cAA5B;AAOA,IAAIC,uBAAyC,GAAG,EAAhD;AACA,OAAO,MAAMC,6BAA6B,GAAG;AAC3CC,EAAAA,IAAI,EAAGC,OAAD,IAAwB;AAC5BH,IAAAA,uBAAuB,CAACE,IAAxB,CAA6BC,OAA7B;AACA,WAAO,MAAM;AACXH,MAAAA,uBAAuB,GAAGA,uBAAuB,CAACI,MAAxB,CACvBC,CAAD,IAAOA,CAAC,KAAKF,OADW,CAA1B;AAGD,KAJD;AAKD,GAR0C;AAS3CG,EAAAA,MAAM,EAAE,MAAMN,uBAAuB,CAACM,MATK;AAU3CC,EAAAA,GAAG,EAAE,MAAM;AACT,WAAOP,uBAAuB,CAACO,GAAxB,EAAP;AACD;AAZ0C,CAAtC;AAeP;AACA;AACA;;AACA,OAAO,MAAMC,sBAAsB,GAAG,CAAC;AAAEC,EAAAA,OAAF;AAAWC,EAAAA;AAAX,CAAD,KAAoC;AACxEb,EAAAA,KAAK,CAACC,SAAN,CAAgB,MAAM;AACpB,QAAIa,SAAS,GAAG,MAAM,CAAE,CAAxB;;AACA,QAAIF,OAAJ,EAAa;AACXE,MAAAA,SAAS,GAAGV,6BAA6B,CAACC,IAA9B,CAAmCQ,QAAnC,CAAZ;AACD,KAFD,MAEO;AACLC,MAAAA,SAAS;AACV;;AACD,WAAO,MAAM;AACXA,MAAAA,SAAS;AACV,KAFD;AAGD,GAVD,EAUG,CAACF,OAAD,EAAUC,QAAV,CAVH;AAYAE,EAAAA,cAAc,CAAC;AAAEH,IAAAA,OAAF;AAAWC,IAAAA;AAAX,GAAD,CAAd;AACD,CAdM;AAgBP,OAAO,SAASE,cAAT,CAAwB;AAAEH,EAAAA,OAAF;AAAWC,EAAAA;AAAX,CAAxB,EAAwD;AAC7DZ,EAAAA,SAAS,CAAC,MAAM;AACd,QAAIe,WAAW,GAAG,MAAM;AACtBH,MAAAA,QAAQ;AACR,aAAO,IAAP;AACD,KAHD;;AAIA,QAAID,OAAJ,EAAa;AACXV,MAAAA,WAAW,CAACe,gBAAZ,CAA6B,mBAA7B,EAAkDD,WAAlD;AACD,KAFD,MAEO;AACLd,MAAAA,WAAW,CAACgB,mBAAZ,CAAgC,mBAAhC,EAAqDF,WAArD;AACD;;AACD,WAAO,MACLd,WAAW,CAACgB,mBAAZ,CAAgC,mBAAhC,EAAqDF,WAArD,CADF;AAED,GAZQ,EAYN,CAACJ,OAAD,EAAUC,QAAV,CAZM,CAAT;AAaD","sourcesContent":["import React from 'react';\nimport { useEffect } from 'react';\nimport { BackHandler } from 'react-native';\n\ntype IParams = {\n enabled?: boolean;\n callback: () => any;\n};\n\nlet keyboardDismissHandlers: Array<() => any> = [];\nexport const keyboardDismissHandlerManager = {\n push: (handler: () => any) => {\n keyboardDismissHandlers.push(handler);\n return () => {\n keyboardDismissHandlers = keyboardDismissHandlers.filter(\n (h) => h !== handler\n );\n };\n },\n length: () => keyboardDismissHandlers.length,\n pop: () => {\n return keyboardDismissHandlers.pop();\n },\n};\n\n/**\n * Handles attaching callback for Escape key listener on web and Back button listener on Android\n */\nexport const useKeyboardDismissable = ({ enabled, callback }: IParams) => {\n React.useEffect(() => {\n let cleanupFn = () => {};\n if (enabled) {\n cleanupFn = keyboardDismissHandlerManager.push(callback);\n } else {\n cleanupFn();\n }\n return () => {\n cleanupFn();\n };\n }, [enabled, callback]);\n\n useBackHandler({ enabled, callback });\n};\n\nexport function useBackHandler({ enabled, callback }: IParams) {\n useEffect(() => {\n let backHandler = () => {\n callback();\n return true;\n };\n if (enabled) {\n BackHandler.addEventListener('hardwareBackPress', backHandler);\n } else {\n BackHandler.removeEventListener('hardwareBackPress', backHandler);\n }\n return () =>\n BackHandler.removeEventListener('hardwareBackPress', backHandler);\n }, [enabled, callback]);\n}\n"]}
|
@@ -1,2 +1,4 @@
|
|
1
|
-
export
|
2
|
-
export
|
1
|
+
export { useHover } from './useHover';
|
2
|
+
export { usePress, PressEvents, PressHookProps, PressProps, PressResult, } from './usePress';
|
3
|
+
export { useIsPressProps } from './useIsPressProps';
|
4
|
+
export { keyboardDismissHandlerManager, useKeyboardDismissable, useBackHandler, } from './useKeyboardDismisssable';
|
@@ -1,2 +1,4 @@
|
|
1
|
-
export { useHover } from
|
2
|
-
export { usePress } from
|
1
|
+
export { useHover } from './useHover.web';
|
2
|
+
export { usePress } from './usePress';
|
3
|
+
export { useIsPressProps } from './useIsPressProps';
|
4
|
+
export { keyboardDismissHandlerManager, useKeyboardDismissable, useBackHandler, } from './useKeyboardDismisssable';
|
@@ -1,5 +1,8 @@
|
|
1
1
|
import { HoverProps } from '@react-aria/interactions';
|
2
|
-
export declare const useHover: (_props: HoverProps, _ref
|
3
|
-
hoverProps: {
|
2
|
+
export declare const useHover: (_props: HoverProps, _ref?: any) => {
|
3
|
+
hoverProps: {
|
4
|
+
onHoverIn: () => void;
|
5
|
+
onHoverOut: () => void;
|
6
|
+
};
|
4
7
|
isHovered: boolean;
|
5
8
|
};
|
@@ -1,2 +1,2 @@
|
|
1
1
|
import { HoverProps } from '@react-aria/interactions';
|
2
|
-
export declare const useHover: (props: HoverProps, ref
|
2
|
+
export declare const useHover: (props: HoverProps, ref?: any) => import("@react-aria/interactions").HoverResult;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
declare type IParams = {
|
2
|
+
enabled?: boolean;
|
3
|
+
callback: () => any;
|
4
|
+
};
|
5
|
+
export declare const keyboardDismissHandlerManager: {
|
6
|
+
push: (handler: () => any) => () => void;
|
7
|
+
length: () => number;
|
8
|
+
pop: () => () => any;
|
9
|
+
};
|
10
|
+
/**
|
11
|
+
* Handles attaching callback for Escape key listener on web and Back button listener on Android
|
12
|
+
*/
|
13
|
+
export declare const useKeyboardDismissable: ({ enabled, callback }: IParams) => void;
|
14
|
+
export declare function useBackHandler({ enabled, callback }: IParams): void;
|
15
|
+
export {};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@react-native-aria/interactions",
|
3
|
-
"version": "0.2.
|
3
|
+
"version": "0.2.9",
|
4
4
|
"description": "mono repo setup with bob",
|
5
5
|
"main": "lib/commonjs/index",
|
6
6
|
"module": "lib/module/index",
|
@@ -49,7 +49,7 @@
|
|
49
49
|
"dependencies": {
|
50
50
|
"@react-aria/interactions": "^3.3.2",
|
51
51
|
"@react-aria/utils": "^3.6.0",
|
52
|
-
"@react-native-aria/utils": "^0.2.
|
52
|
+
"@react-native-aria/utils": "^0.2.6"
|
53
53
|
},
|
54
54
|
"peerDependencies": {
|
55
55
|
"react": "*",
|
package/src/index.ts
CHANGED
@@ -1,2 +1,14 @@
|
|
1
|
-
export
|
2
|
-
export
|
1
|
+
export { useHover } from './useHover';
|
2
|
+
export {
|
3
|
+
usePress,
|
4
|
+
PressEvents,
|
5
|
+
PressHookProps,
|
6
|
+
PressProps,
|
7
|
+
PressResult,
|
8
|
+
} from './usePress';
|
9
|
+
export { useIsPressProps } from './useIsPressProps';
|
10
|
+
export {
|
11
|
+
keyboardDismissHandlerManager,
|
12
|
+
useKeyboardDismissable,
|
13
|
+
useBackHandler,
|
14
|
+
} from './useKeyboardDismisssable';
|
package/src/index.web.ts
CHANGED
@@ -1,2 +1,8 @@
|
|
1
|
-
export { useHover } from
|
2
|
-
export { usePress } from
|
1
|
+
export { useHover } from './useHover.web';
|
2
|
+
export { usePress } from './usePress';
|
3
|
+
export { useIsPressProps } from './useIsPressProps';
|
4
|
+
export {
|
5
|
+
keyboardDismissHandlerManager,
|
6
|
+
useKeyboardDismissable,
|
7
|
+
useBackHandler,
|
8
|
+
} from './useKeyboardDismisssable';
|
package/src/useHover.ts
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
import { HoverProps } from '@react-aria/interactions';
|
2
|
+
import { useState } from 'react';
|
2
3
|
|
3
|
-
export const useHover = (_props: HoverProps, _ref
|
4
|
+
export const useHover = (_props: HoverProps, _ref?: any) => {
|
5
|
+
const [isHovered, setHovered] = useState(false);
|
4
6
|
let params = {
|
5
|
-
hoverProps: {
|
6
|
-
|
7
|
+
hoverProps: {
|
8
|
+
onHoverIn: () => setHovered(true),
|
9
|
+
onHoverOut: () => setHovered(false),
|
10
|
+
},
|
11
|
+
isHovered,
|
7
12
|
};
|
8
13
|
|
9
14
|
return params;
|
package/src/useHover.web.ts
CHANGED
@@ -2,10 +2,10 @@ import { useHover as useHoverWeb, HoverProps } from '@react-aria/interactions';
|
|
2
2
|
import { useEffect } from 'react';
|
3
3
|
import { attachEventHandlersOnRef } from '@react-native-aria/utils';
|
4
4
|
|
5
|
-
export const useHover = (props: HoverProps, ref
|
5
|
+
export const useHover = (props: HoverProps, ref?: any) => {
|
6
6
|
let params = useHoverWeb(props);
|
7
7
|
useEffect(() => {
|
8
|
-
attachEventHandlersOnRef(params.hoverProps, ref);
|
8
|
+
ref && ref.current && attachEventHandlersOnRef(params.hoverProps, ref);
|
9
9
|
}, []);
|
10
10
|
|
11
11
|
return params;
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { useState } from 'react';
|
2
|
+
|
3
|
+
export const useIsPressProps = () => {
|
4
|
+
const [isPressed, setIsPressed] = useState(false);
|
5
|
+
return {
|
6
|
+
pressableProps: {
|
7
|
+
onPressIn: () => setIsPressed(true),
|
8
|
+
onPressOut: () => setIsPressed(false),
|
9
|
+
},
|
10
|
+
isPressed,
|
11
|
+
};
|
12
|
+
};
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { useEffect } from 'react';
|
3
|
+
import { BackHandler } from 'react-native';
|
4
|
+
|
5
|
+
type IParams = {
|
6
|
+
enabled?: boolean;
|
7
|
+
callback: () => any;
|
8
|
+
};
|
9
|
+
|
10
|
+
let keyboardDismissHandlers: Array<() => any> = [];
|
11
|
+
export const keyboardDismissHandlerManager = {
|
12
|
+
push: (handler: () => any) => {
|
13
|
+
keyboardDismissHandlers.push(handler);
|
14
|
+
return () => {
|
15
|
+
keyboardDismissHandlers = keyboardDismissHandlers.filter(
|
16
|
+
(h) => h !== handler
|
17
|
+
);
|
18
|
+
};
|
19
|
+
},
|
20
|
+
length: () => keyboardDismissHandlers.length,
|
21
|
+
pop: () => {
|
22
|
+
return keyboardDismissHandlers.pop();
|
23
|
+
},
|
24
|
+
};
|
25
|
+
|
26
|
+
/**
|
27
|
+
* Handles attaching callback for Escape key listener on web and Back button listener on Android
|
28
|
+
*/
|
29
|
+
export const useKeyboardDismissable = ({ enabled, callback }: IParams) => {
|
30
|
+
React.useEffect(() => {
|
31
|
+
let cleanupFn = () => {};
|
32
|
+
if (enabled) {
|
33
|
+
cleanupFn = keyboardDismissHandlerManager.push(callback);
|
34
|
+
} else {
|
35
|
+
cleanupFn();
|
36
|
+
}
|
37
|
+
return () => {
|
38
|
+
cleanupFn();
|
39
|
+
};
|
40
|
+
}, [enabled, callback]);
|
41
|
+
|
42
|
+
useBackHandler({ enabled, callback });
|
43
|
+
};
|
44
|
+
|
45
|
+
export function useBackHandler({ enabled, callback }: IParams) {
|
46
|
+
useEffect(() => {
|
47
|
+
let backHandler = () => {
|
48
|
+
callback();
|
49
|
+
return true;
|
50
|
+
};
|
51
|
+
if (enabled) {
|
52
|
+
BackHandler.addEventListener('hardwareBackPress', backHandler);
|
53
|
+
} else {
|
54
|
+
BackHandler.removeEventListener('hardwareBackPress', backHandler);
|
55
|
+
}
|
56
|
+
return () =>
|
57
|
+
BackHandler.removeEventListener('hardwareBackPress', backHandler);
|
58
|
+
}, [enabled, callback]);
|
59
|
+
}
|
package/.DS_Store
DELETED
Binary file
|
package/src/.DS_Store
DELETED
Binary file
|