stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
46 lines • 1.47 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useSetAccessibilityFocus = void 0;
var _react = require("react");
var _reactNative = require("react-native");
var _useScreenReaderEnabled = require("./useScreenReaderEnabled");
var resolveNode = target => {
if (target == null) {
return null;
}
if (typeof target === 'number') {
return target;
}
var current = target.current;
return current == null ? null : (0, _reactNative.findNodeHandle)(current);
};
var useSetAccessibilityFocus = () => {
var screenReaderEnabled = (0, _useScreenReaderEnabled.useScreenReaderEnabled)();
var screenReaderEnabledRef = (0, _react.useRef)(screenReaderEnabled);
screenReaderEnabledRef.current = screenReaderEnabled;
var rafRef = (0, _react.useRef)(null);
(0, _react.useEffect)(() => () => {
if (rafRef.current != null) {
cancelAnimationFrame(rafRef.current);
}
}, []);
return (0, _react.useCallback)(target => {
if (!screenReaderEnabledRef.current) {
return;
}
var node = resolveNode(target);
if (node == null) {
return;
}
if (rafRef.current != null) {
cancelAnimationFrame(rafRef.current);
}
rafRef.current = requestAnimationFrame(() => {
rafRef.current = null;
_reactNative.AccessibilityInfo.setAccessibilityFocus(node);
});
}, []);
};
exports.useSetAccessibilityFocus = useSetAccessibilityFocus;
//# sourceMappingURL=useSetAccessibilityFocus.js.map