UNPKG

2.33 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7var slicedToArray = require('./slicedToArray-0711941d.js');
8require('./unsupportedIterableToArray-68db1d3b.js');
9var React = require('react');
10var React__default = _interopDefault(React);
11require('./_commonjsHelpers-72d386ba.js');
12require('./toConsumableArray-d8a4a2c3.js');
13require('./getPrototypeOf-2a661a20.js');
14require('./color.js');
15require('./components.js');
16require('./contains-component.js');
17require('./css.js');
18require('./dayjs.min-e07657bf.js');
19require('./date.js');
20require('./miscellaneous.js');
21require('./environment.js');
22require('./font.js');
23require('./math-f4029164.js');
24require('./characters.js');
25require('./format.js');
26var keycodes = require('./keycodes.js');
27require('./url.js');
28require('./web3.js');
29
30function useArrowKeysFocus(refs) {
31 var _useState = React.useState(-1),
32 _useState2 = slicedToArray._slicedToArray(_useState, 2),
33 highlightedIndex = _useState2[0],
34 setHighlightedIndex = _useState2[1];
35
36 var cycleFocus = React.useCallback(function (e, change) {
37 e.preventDefault();
38 var next = highlightedIndex + change;
39
40 if (next > refs.length - 1) {
41 next = 0;
42 }
43
44 if (next < 0) {
45 next = refs.length - 1;
46 }
47
48 setHighlightedIndex(next);
49 }, [highlightedIndex, refs.length]);
50 var handleKeyDown = React.useCallback(function (event) {
51 var keyCode = event.keyCode;
52
53 if (keyCode === keycodes.KEY_UP || keyCode === keycodes.KEY_DOWN) {
54 cycleFocus(event, keyCode === keycodes.KEY_UP ? -1 : 1);
55 }
56 }, [cycleFocus]);
57 React.useEffect(function () {
58 document.addEventListener('keydown', handleKeyDown);
59 return function () {
60 return document.removeEventListener('keydown', handleKeyDown);
61 };
62 }, [handleKeyDown]);
63 React.useEffect(function () {
64 if (highlightedIndex === -1) {
65 return;
66 }
67
68 if (!refs[highlightedIndex]) {
69 return;
70 }
71
72 refs[highlightedIndex].focus();
73 }, [highlightedIndex, refs]);
74 return {
75 highlightedIndex: highlightedIndex,
76 setHighlightedIndex: setHighlightedIndex
77 };
78}
79
80exports.useArrowKeysFocus = useArrowKeysFocus;
81//# sourceMappingURL=useArrowKeysFocus.js.map