UNPKG

stream-chat-react-native-core

Version:

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

121 lines 5.76 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.OpenChannelDetailsButton = exports.ChannelSwipableWrapper = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _ComponentsContext = require("../../contexts/componentsContext/ComponentsContext"); var _SwipeRegistryContext = require("../../contexts/swipeableContext/SwipeRegistryContext"); var _ThemeContext = require("../../contexts/themeContext/ThemeContext"); var _useChannelActionItems = require("../../hooks/actions/useChannelActionItems"); var _BottomSheetModal = require("../UIComponents/BottomSheetModal"); var _SwipableWrapper = require("../UIComponents/SwipableWrapper"); var _jsxRuntime = require("react/jsx-runtime"); var _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/ChannelPreview/ChannelSwipableWrapper.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 OpenChannelDetailsButton = () => { var _useTheme = (0, _ThemeContext.useTheme)(), semantics = _useTheme.theme.semantics; var _useComponentsContext = (0, _ComponentsContext.useComponentsContext)(), icons = _useComponentsContext.icons; return (0, _jsxRuntime.jsx)(icons.MenuPointHorizontal, { stroke: semantics.textPrimary }); }; exports.OpenChannelDetailsButton = OpenChannelDetailsButton; var ChannelSwipableWrapper = ({ channel, getChannelActionItems, swipableProps: _swipableProps, children }) => { var _useComponentsContext2 = (0, _ComponentsContext.useComponentsContext)(), ChannelDetailsBottomSheetComponent = _useComponentsContext2.ChannelDetailsBottomSheet; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), channelDetailSheetOpen = _useState2[0], setChannelDetailSheetOpen = _useState2[1]; var channelActionItems = (0, _useChannelActionItems.useChannelActionItems)({ channel, getChannelActionItems, surface: 'list' }); var sheetItems = (0, _react.useMemo)(() => channelActionItems.filter(item => item.placement !== 'swipe'), [channelActionItems]); var swipeItems = (0, _react.useMemo)(() => channelActionItems.filter(item => item.placement !== 'sheet'), [channelActionItems]); var swipableRegistry = (0, _SwipeRegistryContext.useSwipeRegistryContext)(); var _useTheme2 = (0, _ThemeContext.useTheme)(), semantics = _useTheme2.theme.semantics; var styles = useStyles(); var swipableActions = (0, _react.useMemo)(() => { var items = [{ id: 'openSheet', action: () => setChannelDetailSheetOpen(true), contentContainerStyle: [styles.contentContainerStyle, styles.elipsis], Content: OpenChannelDetailsButton }]; swipeItems.forEach(item => { items.push({ id: item.id, action: () => { item.action(); swipableRegistry == null || swipableRegistry.closeAll(); }, Content: createSwipeContent(item, semantics.textOnAccent), contentContainerStyle: [styles.contentContainerStyle, styles.standard] }); }); return items; }, [styles.contentContainerStyle, styles.elipsis, styles.standard, swipeItems, swipableRegistry, semantics.textOnAccent]); var renderRightActions = (0, _react.useCallback)((_progress, translation) => (0, _jsxRuntime.jsx)(_SwipableWrapper.RightActions, { items: swipableActions, translation: translation }), [swipableActions]); var swipableProps = (0, _react.useMemo)(() => ({ renderRightActions, ..._swipableProps }), [_swipableProps, renderRightActions]); return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [(0, _jsxRuntime.jsx)(_SwipableWrapper.SwipableWrapper, { swipeableId: channel.cid, swipableProps: swipableProps, children: children }), (0, _jsxRuntime.jsx)(_BottomSheetModal.BottomSheetModal, { enableDynamicSizing: true, onClose: () => setChannelDetailSheetOpen(false), visible: channelDetailSheetOpen, height: 424, children: (0, _jsxRuntime.jsx)(ChannelDetailsBottomSheetComponent, { channel: channel, items: sheetItems }) })] }); }; exports.ChannelSwipableWrapper = ChannelSwipableWrapper; var createSwipeContent = (item, color) => { var SwipeContent = () => (0, _jsxRuntime.jsx)(item.Icon, { fill: color, stroke: color }); return SwipeContent; }; var useStyles = () => { var _useTheme3 = (0, _ThemeContext.useTheme)(), semantics = _useTheme3.theme.semantics; return (0, _react.useMemo)(() => _reactNative.StyleSheet.create({ contentContainerStyle: { alignItems: 'center', flex: 1, justifyContent: 'center' }, elipsis: { backgroundColor: semantics.backgroundCoreSurfaceDefault }, standard: { backgroundColor: semantics.accentPrimary } }), [semantics.accentPrimary, semantics.backgroundCoreSurfaceDefault]); }; //# sourceMappingURL=ChannelSwipableWrapper.js.map