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
JavaScript
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