UNPKG

stream-chat-react-native-core

Version:

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

129 lines 6.24 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.ReactionListTop = void 0; var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _contexts = require("../../../../contexts"); var _ComponentsContext = require("../../../../contexts/componentsContext/ComponentsContext"); var _MessageContext = require("../../../../contexts/messageContext/MessageContext"); var _MessagesContext = require("../../../../contexts/messagesContext/MessagesContext"); 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/ReactionListTop.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 ReactionListTop = 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, propHandleReaction = props.handleReaction, 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, contextHandleReaction = _useMessageContext.handleReaction; var _useComponentsContext = (0, _ComponentsContext.useComponentsContext)(), ReactionListClustered = _useComponentsContext.ReactionListClustered, ReactionListCountItem = _useComponentsContext.ReactionListCountItem, 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 handleReaction = propHandleReaction || contextHandleReaction; var styles = useStyles({ alignment }); var supportedReactionTypes = supportedReactions?.map(supportedReaction => supportedReaction.type); var hasSupportedReactions = reactions.some(reaction => supportedReactionTypes?.includes(reaction.type)); if (!hasSupportedReactions || !hasReactions) { return null; } var moreReactionsCount = reactions.slice(4).length; if (type === 'clustered') { return (0, _jsxRuntime.jsx)(_reactNative.View, { style: styles.container, accessibilityLabel: "Reaction List Top", children: (0, _jsxRuntime.jsx)(ReactionListClustered, { ...props }) }); } return (0, _jsxRuntime.jsxs)(_reactNative.ScrollView, { accessibilityLabel: "Reaction List Top", contentContainerStyle: styles.contentContainer, horizontal: true, showsHorizontalScrollIndicator: false, showsVerticalScrollIndicator: false, style: [styles.container, styles.list], children: [reactions.slice(0, 4).map(reaction => (0, _jsxRuntime.jsx)(ReactionListItem, { reaction: reaction, handleReaction: handleReaction, onLongPress: onLongPress, onPress: onPress, onPressIn: onPressIn, preventPress: preventPress, showReactionsOverlay: showReactionsOverlay, supportedReactions: supportedReactions, showCount: showCount, selected: reaction.own }, reaction.type)), (0, _jsxRuntime.jsx)(ReactionListCountItem, { count: moreReactionsCount, onLongPress: onLongPress, onPress: onPress, onPressIn: onPressIn, preventPress: preventPress, showReactionsOverlay: showReactionsOverlay })] }); }; exports.ReactionListTop = ReactionListTop; var useStyles = ({ alignment }) => { var _useTheme = (0, _contexts.useTheme)(), _useTheme$theme$messa = _useTheme.theme.messageItemView.reactionListTop, container = _useTheme$theme$messa.container, position = _useTheme$theme$messa.position, contentContainer = _useTheme$theme$messa.contentContainer, list = _useTheme$theme$messa.list; return (0, _react.useMemo)(() => _reactNative.StyleSheet.create({ contentContainer: { gap: _theme.primitives.spacingXxs, ...contentContainer }, container: { marginBottom: -position, zIndex: 1, right: alignment === 'right' ? position : undefined, left: alignment === 'left' ? position : undefined, ...container }, list: { flexGrow: 0, ...list } }), [alignment, container, contentContainer, list, position]); }; //# sourceMappingURL=ReactionListTop.js.map