UNPKG

stream-chat-react-native-core

Version:

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

128 lines 5.56 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.PollHeader = exports.PollContent = exports.Poll = void 0; var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _components = require("./components"); var _PollUIStateContext = require("./contexts/PollUIStateContext"); var _usePollState3 = require("./hooks/usePollState"); var _contexts = require("../../contexts"); var _ComponentsContext = require("../../contexts/componentsContext/ComponentsContext"); var _theme = require("../../theme"); var _constants = require("../../utils/constants"); var _jsxRuntime = require("react/jsx-runtime"); var _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Poll/Poll.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 PollHeader = () => { var styles = useStyles(); var _useTranslationContex = (0, _contexts.useTranslationContext)(), t = _useTranslationContex.t; var _usePollState = (0, _usePollState3.usePollState)(), enforceUniqueVote = _usePollState.enforceUniqueVote, isClosed = _usePollState.isClosed, maxVotesAllowed = _usePollState.maxVotesAllowed, name = _usePollState.name; var subtitle = (0, _react.useMemo)(() => { if (isClosed) { return t('Poll has ended'); } if (enforceUniqueVote) { return t('Select one'); } if (maxVotesAllowed) { return t('Select up to {{count}}', { count: maxVotesAllowed }); } return t('Select one or more'); }, [isClosed, t, enforceUniqueVote, maxVotesAllowed]); var _useTheme = (0, _contexts.useTheme)(), header = _useTheme.theme.poll.message.header; return (0, _jsxRuntime.jsxs)(_reactNative.View, { accessible: true, accessibilityRole: "text", style: styles.headerContainer, children: [(0, _jsxRuntime.jsx)(_reactNative.Text, { style: [styles.headerTitle, header.title], children: name }), (0, _jsxRuntime.jsx)(_reactNative.Text, { style: [styles.headerSubtitle, header.subtitle], children: subtitle })] }); }; exports.PollHeader = PollHeader; var PollContent = () => { var _usePollState2 = (0, _usePollState3.usePollState)(), options = _usePollState2.options; var styles = useStyles(); var _useComponentsContext = (0, _ComponentsContext.useComponentsContext)(), PollButtonsComponent = _useComponentsContext.PollButtons, PollHeaderComponent = _useComponentsContext.PollHeader; var _useTheme2 = (0, _contexts.useTheme)(), _useTheme2$theme$poll = _useTheme2.theme.poll.message, container = _useTheme2$theme$poll.container, optionsWrapper = _useTheme2$theme$poll.optionsWrapper; return (0, _jsxRuntime.jsxs)(_reactNative.View, { style: [styles.container, container], children: [(0, _jsxRuntime.jsx)(PollHeaderComponent, {}), (0, _jsxRuntime.jsxs)(_reactNative.View, { style: [styles.optionsWrapper, optionsWrapper], children: [options?.slice(0, _constants.defaultPollOptionCount)?.map(option => (0, _jsxRuntime.jsx)(_components.PollOption, { option: option }, `message_poll_option_${option.id}`)), (0, _jsxRuntime.jsx)(_components.ShowAllOptionsButton, {})] }), (0, _jsxRuntime.jsx)(PollButtonsComponent, {})] }); }; exports.PollContent = PollContent; var Poll = ({ message, poll }) => { var _useComponentsContext2 = (0, _ComponentsContext.useComponentsContext)(), PollContentOverride = _useComponentsContext2.PollContent; return (0, _jsxRuntime.jsx)(_contexts.PollContextProvider, { value: { message, poll }, children: (0, _jsxRuntime.jsx)(_PollUIStateContext.PollUIStateProvider, { children: PollContentOverride ? (0, _jsxRuntime.jsx)(PollContentOverride, {}) : (0, _jsxRuntime.jsx)(PollContent, {}) }) }); }; exports.Poll = Poll; var useStyles = () => { var _useTheme3 = (0, _contexts.useTheme)(), semantics = _useTheme3.theme.semantics; return (0, _react.useMemo)(() => { return _reactNative.StyleSheet.create({ container: { width: 256, padding: _theme.primitives.spacingMd, gap: _theme.primitives.spacingLg }, headerContainer: { gap: _theme.primitives.spacingXxs }, headerSubtitle: { color: semantics.chatTextIncoming, fontSize: _theme.primitives.typographyFontSizeSm, fontWeight: _theme.primitives.typographyFontWeightRegular, lineHeight: _theme.primitives.typographyLineHeightTight, textAlign: 'left' }, headerTitle: { color: semantics.chatTextIncoming, fontSize: _theme.primitives.typographyFontSizeMd, fontWeight: _theme.primitives.typographyFontWeightSemiBold, lineHeight: _theme.primitives.typographyLineHeightNormal, textAlign: 'left' }, optionsWrapper: { gap: _theme.primitives.spacingMd } }); }, [semantics]); }; //# sourceMappingURL=Poll.js.map