UNPKG

react-native-a11y

Version:

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

42 lines 1.32 kB
import { useRef, useCallback, useMemo } from "react"; import { A11yModule } from "../../../modules"; import { debounce } from "../../../utils"; const SECONDS_PER_FRAME = 16; const COUNT_OF_FRAMES = 1; const DEBOUNCE_DELAY = SECONDS_PER_FRAME * COUNT_OF_FRAMES; export const useA11yOrderManager = orderRef => { const currentRef = useRef([]); const registeredRefs = useRef([]); const refWasUpdated = useRef(false); const setOrder = useCallback(() => { A11yModule.setA11yElementsOrder({ tag: orderRef, views: registeredRefs.current }); }, [orderRef]); const debounceOrder = useMemo(() => debounce(setOrder, DEBOUNCE_DELAY), [setOrder]); const registerOrderRef = useCallback(order => ref => { refWasUpdated.current = true; registeredRefs.current[order] = ref; }, []); const updateRefList = useCallback(() => { if (!refWasUpdated.current) { return; } refWasUpdated.current = false; currentRef.current = registeredRefs.current.filter(v => v); debounceOrder(); }, [debounceOrder]); const reset = useCallback(() => { currentRef.current = []; registeredRefs.current = []; refWasUpdated.current = false; }, []); return { registerOrderRef, updateRefList, reset, setOrder }; }; //# sourceMappingURL=useA11yOrderManager.js.map