stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
47 lines • 2.43 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useScrollToBottomAccessibilityAction = exports.SCROLL_TO_BOTTOM_ACCESSIBILITY_ACTION_NAME = void 0;
var _react = require("react");
var _a11yUtils = require("../../../a11y/a11yUtils");
var _AccessibilityContext = require("../../../contexts/accessibilityContext/AccessibilityContext");
var _TranslationContext = require("../../../contexts/translationContext/TranslationContext");
var _hooks = require("../../../hooks");
var _ScrollToBottomButton = require("../ScrollToBottomButton");
var SCROLL_TO_BOTTOM_ACCESSIBILITY_ACTION_NAME = exports.SCROLL_TO_BOTTOM_ACCESSIBILITY_ACTION_NAME = 'streamScrollToBottom';
var useScrollToBottomAccessibilityAction = ({
accessibilityActions,
onAccessibilityAction,
onScrollToBottom,
unreadCount,
visible
}) => {
var _useAccessibilityCont = (0, _AccessibilityContext.useAccessibilityContext)(),
enabled = _useAccessibilityCont.enabled;
var _useContext = (0, _react.useContext)(_TranslationContext.TranslationContext),
t = _useContext.t;
var scrollToBottomAccessibilityAction = (0, _react.useMemo)(() => {
if (!enabled || !visible) {
return undefined;
}
return [{
name: SCROLL_TO_BOTTOM_ACCESSIBILITY_ACTION_NAME,
label: unreadCount ? t(_ScrollToBottomButton.SCROLL_TO_BOTTOM_WITH_COUNT_ACCESSIBILITY_LABEL_KEY, {
count: unreadCount
}) : t(_ScrollToBottomButton.SCROLL_TO_BOTTOM_ACCESSIBILITY_LABEL_KEY)
}];
}, [enabled, t, unreadCount, visible]);
var mergedAccessibilityActions = (0, _react.useMemo)(() => (0, _a11yUtils.mergeAccessibilityActions)(accessibilityActions, scrollToBottomAccessibilityAction), [accessibilityActions, scrollToBottomAccessibilityAction]);
var handleAccessibilityAction = (0, _hooks.useStableCallback)(event => {
if (event.nativeEvent.actionName === SCROLL_TO_BOTTOM_ACCESSIBILITY_ACTION_NAME) {
return onScrollToBottom();
}
return onAccessibilityAction == null ? void 0 : onAccessibilityAction(event);
});
return {
accessibilityActions: mergedAccessibilityActions.length ? mergedAccessibilityActions : undefined,
onAccessibilityAction: enabled && visible || onAccessibilityAction ? handleAccessibilityAction : onAccessibilityAction
};
};
exports.useScrollToBottomAccessibilityAction = useScrollToBottomAccessibilityAction;
//# sourceMappingURL=useScrollToBottomAccessibilityAction.js.map