UNPKG

react-native-a11y

Version:

Improvements of a11y for ReactNative, this library improve work with reader and keyboard focus and reader in general.

49 lines (48 loc) 1.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useA11yOrderManager = void 0; var _react = require("react"); var _modules = require("../../../modules"); var _utils = require("../../../utils"); const SECONDS_PER_FRAME = 16; const COUNT_OF_FRAMES = 1; const DEBOUNCE_DELAY = SECONDS_PER_FRAME * COUNT_OF_FRAMES; const useA11yOrderManager = orderRef => { const currentRef = (0, _react.useRef)([]); const registeredRefs = (0, _react.useRef)([]); const refWasUpdated = (0, _react.useRef)(false); const setOrder = (0, _react.useCallback)(() => { _modules.A11yModule.setA11yElementsOrder({ tag: orderRef, views: registeredRefs.current }); }, [orderRef]); const debounceOrder = (0, _react.useMemo)(() => (0, _utils.debounce)(setOrder, DEBOUNCE_DELAY), [setOrder]); const registerOrderRef = (0, _react.useCallback)(order => ref => { refWasUpdated.current = true; registeredRefs.current[order] = ref; }, []); const updateRefList = (0, _react.useCallback)(() => { if (!refWasUpdated.current) { return; } refWasUpdated.current = false; currentRef.current = registeredRefs.current.filter(v => v); debounceOrder(); }, [debounceOrder]); const reset = (0, _react.useCallback)(() => { currentRef.current = []; registeredRefs.current = []; refWasUpdated.current = false; }, []); return { registerOrderRef, updateRefList, reset, setOrder }; }; exports.useA11yOrderManager = useA11yOrderManager; //# sourceMappingURL=useA11yOrderManager.js.map