UNPKG

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.39 kB
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?.(event); }); return { accessibilityActions: mergedAccessibilityActions.length ? mergedAccessibilityActions : undefined, onAccessibilityAction: enabled && visible || onAccessibilityAction ? handleAccessibilityAction : onAccessibilityAction }; }; exports.useScrollToBottomAccessibilityAction = useScrollToBottomAccessibilityAction; //# sourceMappingURL=useScrollToBottomAccessibilityAction.js.map