1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
6 |
|
7 | var slicedToArray = require('./slicedToArray-0711941d.js');
|
8 | require('./unsupportedIterableToArray-68db1d3b.js');
|
9 | var React = require('react');
|
10 | var React__default = _interopDefault(React);
|
11 | require('./_commonjsHelpers-72d386ba.js');
|
12 | require('./toConsumableArray-d8a4a2c3.js');
|
13 | require('./getPrototypeOf-2a661a20.js');
|
14 | require('./color.js');
|
15 | require('./components.js');
|
16 | require('./contains-component.js');
|
17 | require('./css.js');
|
18 | require('./dayjs.min-e07657bf.js');
|
19 | require('./date.js');
|
20 | require('./miscellaneous.js');
|
21 | require('./environment.js');
|
22 | require('./font.js');
|
23 | require('./math-f4029164.js');
|
24 | require('./characters.js');
|
25 | require('./format.js');
|
26 | var keycodes = require('./keycodes.js');
|
27 | require('./url.js');
|
28 | require('./web3.js');
|
29 |
|
30 | function 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 |
|
80 | exports.useArrowKeysFocus = useArrowKeysFocus;
|
81 |
|