UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

133 lines 6.3 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.ReactionListBottom = void 0; var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _ComponentsContext = require("../../../../contexts/componentsContext/ComponentsContext"); var _MessageContext = require("../../../../contexts/messageContext/MessageContext"); var _MessagesContext = require("../../../../contexts/messagesContext/MessagesContext"); var _ThemeContext = require("../../../../contexts/themeContext/ThemeContext"); var _theme = require("../../../../theme"); var _jsxRuntime = require("react/jsx-runtime"); var _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Message/MessageItemView/ReactionList/ReactionListBottom.tsx"; function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var ItemSeparatorComponent = () => { var styles = useStyles({}); return (0, _jsxRuntime.jsx)(_reactNative.View, { style: styles.itemSeparator }); }; var ReactionListBottom = props => { var propAlignment = props.alignment, propHasReactions = props.hasReactions, propOnLongPress = props.onLongPress, propOnPress = props.onPress, propOnPressIn = props.onPressIn, propPreventPress = props.preventPress, propReactions = props.reactions, propShowReactionsOverlay = props.showReactionsOverlay, propSupportedReactions = props.supportedReactions, type = props.type, _props$showCount = props.showCount, showCount = _props$showCount === void 0 ? true : _props$showCount; var _useMessageContext = (0, _MessageContext.useMessageContext)(), contextAlignment = _useMessageContext.alignment, contextHasReactions = _useMessageContext.hasReactions, contextOnLongPress = _useMessageContext.onLongPress, contextOnPress = _useMessageContext.onPress, contextOnPressIn = _useMessageContext.onPressIn, contextPreventPress = _useMessageContext.preventPress, contextReactions = _useMessageContext.reactions, contextShowReactionsOverlay = _useMessageContext.showReactionsOverlay; var _useComponentsContext = (0, _ComponentsContext.useComponentsContext)(), ReactionListClustered = _useComponentsContext.ReactionListClustered, ReactionListItem = _useComponentsContext.ReactionListItem; var _useMessagesContext = (0, _MessagesContext.useMessagesContext)(), contextSupportedReactions = _useMessagesContext.supportedReactions; var alignment = propAlignment || contextAlignment; var hasReactions = propHasReactions || contextHasReactions; var onLongPress = propOnLongPress || contextOnLongPress; var onPress = propOnPress || contextOnPress; var onPressIn = propOnPressIn || contextOnPressIn; var preventPress = propPreventPress || contextPreventPress; var reactions = propReactions || contextReactions; var showReactionsOverlay = propShowReactionsOverlay || contextShowReactionsOverlay; var supportedReactions = propSupportedReactions || contextSupportedReactions; var renderItem = (0, _react.useCallback)(({ index, item }) => (0, _jsxRuntime.jsx)(ReactionListItem, { onLongPress: item.onLongPress, onPress: item.onPress, onPressIn: item.onPressIn, preventPress: item.preventPress, reaction: item.reaction, showReactionsOverlay: item.showReactionsOverlay, supportedReactions: item.supportedReactions, selected: item.reaction.own, showCount: item.showCount }, index), [ReactionListItem]); var styles = useStyles({ messageAlignment: alignment }); var supportedReactionTypes = supportedReactions == null ? void 0 : supportedReactions.map(supportedReaction => supportedReaction.type); var hasSupportedReactions = reactions.some(reaction => supportedReactionTypes == null ? void 0 : supportedReactionTypes.includes(reaction.type)); if (!hasSupportedReactions || !hasReactions) { return null; } var reactionListBottomItemData = reactions.map(reaction => ({ onLongPress, onPress, onPressIn, preventPress, reaction, showReactionsOverlay, supportedReactions, showCount })); if (type === 'segmented') { return (0, _jsxRuntime.jsx)(_reactNative.FlatList, { numColumns: showCount ? 5 : 6, accessibilityLabel: "Reaction List Bottom", contentContainerStyle: styles.contentContainer, columnWrapperStyle: styles.columnWrapper, data: reactionListBottomItemData, keyExtractor: item => item.reaction.type, ItemSeparatorComponent: ItemSeparatorComponent, renderItem: renderItem, showsHorizontalScrollIndicator: false, showsVerticalScrollIndicator: false }); } else { return (0, _jsxRuntime.jsx)(ReactionListClustered, { accessibilityLabel: "Reaction List Bottom", ...props }); } }; exports.ReactionListBottom = ReactionListBottom; var useStyles = ({ messageAlignment }) => { var _useTheme = (0, _ThemeContext.useTheme)(), _useTheme$theme$messa = _useTheme.theme.messageItemView.reactionListBottom, contentContainer = _useTheme$theme$messa.contentContainer, columnWrapper = _useTheme$theme$messa.columnWrapper, rowSeparator = _useTheme$theme$messa.rowSeparator; return (0, _react.useMemo)(() => _reactNative.StyleSheet.create({ columnWrapper: { gap: _theme.primitives.spacingXxs, justifyContent: messageAlignment === 'right' ? 'flex-end' : 'flex-start', ...columnWrapper }, contentContainer: { ...contentContainer }, itemSeparator: { height: _theme.primitives.spacingXxs, ...rowSeparator } }), [contentContainer, columnWrapper, rowSeparator, messageAlignment]); }; //# sourceMappingURL=ReactionListBottom.js.map