@vlprojects-chat/chat 0.6.57 → 0.6.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","mappings":"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A,aAAmBqR,GACTA,EAAM0gB,SACPtoB,QAGN4H,EAAM5H,QAGR,ICZIuoB,GAAoB,WAC/B,IAAMC,EAAO,CACX,SACA,SACA,SACA,QACA,SACA,QACA,MACA,OACA,SACA,MACA,WACA,QACA,QACA,OACA,SACA,SACA,UACA,WACA,OACA,UACA,QACA,YACA,OACA,YACA,SACA,OACA,OACA,UACA,SACA,QACA,OACA,OACA,YACA,OACA,SACA,UACA,QACA,MACA,MACA,QACA,QACA,QACA,YACA,YACA,MACA,YACA,WACA,OACA,QACA,QACA,OACA,WACA,WACA,OACA,QACA,QACA,SACA,WACA,SACA,WACA,UACA,SACA,SACA,YAEIC,EAAQ,CACZ,YACA,QACA,SACA,OACA,OACA,OACA,MACA,UACA,OACA,OACA,SACA,OACA,SACA,OACA,OACA,UACA,SACA,OACA,QACA,SACA,MACA,QACA,OACA,QACA,YACA,OACA,MACA,OACA,QACA,OACA,SACA,UACA,UACA,QACA,OACA,WACA,QACA,OACA,WACA,YACA,UACA,QACA,MACA,QACA,OACA,UACA,SACA,QACA,aACA,OACA,QACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,QACA,QACA,QACA,OACA,QACA,QAIF,OACED,EAAK1uB,KAAKC,MAAMD,KAAK4uB,UAAYF,EAAK3uB,OAAS,KAAO,IAAM4uB,EAAM3uB,KAAKC,MAAMD,KAAK4uB,UAAYD,EAAM5uB,OAAS,MCtIjH,GAAe0a,IAAf,CACE,CACEyK,UAAW,CACThD,QAAS,OACT2M,cAAe,SACfC,YAAa,GACbC,aAAc,GACdtM,OAAQ,OACR4I,eAAgB,UAElB2D,MAAO,CACL1K,UAAW,GACX5K,aAAc,GACd,mBAAoB,CAClBA,aAAc,KAGlBuV,WAAY,CACVvV,aAAc,GAEhBwV,OAAQ,CACNhN,QAAS,OACT2M,cAAe,SACflK,WAAY,SACZ0G,eAAgB,SAChB,MAAO,CACL3R,aAAc,MAIpB,CAAE5P,KAAM,UCpBJqlB,IAAY5N,EAAAA,EAAAA,WAAS,WACzB,IAAM6N,GAAOC,E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","sources":["webpack://@vlprojects-chat/chat/webpack/bootstrap","webpack://@vlprojects-chat/chat/webpack/runtime/compat get default export","webpack://@vlprojects-chat/chat/webpack/runtime/define property getters","webpack://@vlprojects-chat/chat/webpack/runtime/hasOwnProperty shorthand","webpack://@vlprojects-chat/chat/webpack/startup","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/asyncToGenerator\"","webpack://@vlprojects-chat/chat/./src/api/Api.ts","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/slicedToArray\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/regenerator\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/CssBaseline\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/LinearProgress\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/StyledEngineProvider\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/styles/ThemeProvider\"","webpack://@vlprojects-chat/chat/external commonjs \"mobx-react-lite\"","webpack://@vlprojects-chat/chat/external commonjs \"react\"","webpack://@vlprojects-chat/chat/external commonjs \"react-intl\"","webpack://@vlprojects-chat/chat/external commonjs \"mobx-keystone\"","webpack://@vlprojects-chat/chat/external commonjs \"mobx\"","webpack://@vlprojects-chat/chat/external commonjs \"@sentry/react\"","webpack://@vlprojects-chat/chat/external commonjs \"@sentry/tracing\"","webpack://@vlprojects-chat/chat/external commonjs \"flat\"","webpack://@vlprojects-chat/chat/./src/utils/eventBus/eventBus.ts","webpack://@vlprojects-chat/chat/external commonjs \"events\"","webpack://@vlprojects-chat/chat/./src/hooks/useEventHook.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/classCallCheck\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/createClass\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/assertThisInitialized\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/inherits\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/possibleConstructorReturn\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/getPrototypeOf\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/defineProperty\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/applyDecoratedDescriptor\"","webpack://@vlprojects-chat/chat/external commonjs \"axios\"","webpack://@vlprojects-chat/chat/external commonjs \"qs\"","webpack://@vlprojects-chat/chat/./src/types/const.ts","webpack://@vlprojects-chat/chat/external commonjs \"js-cookie\"","webpack://@vlprojects-chat/chat/./src/theme/consts.ts","webpack://@vlprojects-chat/chat/./src/types/enums.ts","webpack://@vlprojects-chat/chat/./src/keystone/chat/user.ts","webpack://@vlprojects-chat/chat/./src/types/types.ts","webpack://@vlprojects-chat/chat/./src/keystone/auth.ts","webpack://@vlprojects-chat/chat/./src/utils/auth.ts","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/initializerDefineProperty\"","webpack://@vlprojects-chat/chat/./src/keystone/factory.ts","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/initializerWarningHelper\"","webpack://@vlprojects-chat/chat/external commonjs \"mobx-utils\"","webpack://@vlprojects-chat/chat/external commonjs \"mobx-event-bus2\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/toConsumableArray\"","webpack://@vlprojects-chat/chat/external commonjs \"date-fns\"","webpack://@vlprojects-chat/chat/./src/utils/helper.ts","webpack://@vlprojects-chat/chat/./src/keystone/chat/poll.ts","webpack://@vlprojects-chat/chat/./src/utils/common.ts","webpack://@vlprojects-chat/chat/./src/keystone/chat/message.ts","webpack://@vlprojects-chat/chat/./src/keystone/chat/pinnedMessage.ts","webpack://@vlprojects-chat/chat/./src/keystone/chat/channel.ts","webpack://@vlprojects-chat/chat/./src/keystone/chat/pub.ts","webpack://@vlprojects-chat/chat/./src/keystone/chat/index.ts","webpack://@vlprojects-chat/chat/./src/utils/eventBus/types.ts","webpack://@vlprojects-chat/chat/./src/keystone/settings.ts","webpack://@vlprojects-chat/chat/external commonjs \"centrifuge\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/typeof\"","webpack://@vlprojects-chat/chat/external commonjs \"serialize-error\"","webpack://@vlprojects-chat/chat/./src/utils/logger.ts","webpack://@vlprojects-chat/chat/./src/components/DirectList/service.ts","webpack://@vlprojects-chat/chat/./src/containers/ChannelPage/service.ts","webpack://@vlprojects-chat/chat/./src/types/socketEvents.ts","webpack://@vlprojects-chat/chat/./src/routes.ts","webpack://@vlprojects-chat/chat/./src/keystone/service.ts","webpack://@vlprojects-chat/chat/./src/utils/registry.ts","webpack://@vlprojects-chat/chat/./src/keystone/socket.ts","webpack://@vlprojects-chat/chat/external commonjs \"ua-parser-js\"","webpack://@vlprojects-chat/chat/./src/keystone/ui.ts","webpack://@vlprojects-chat/chat/./src/utils/browser.ts","webpack://@vlprojects-chat/chat/./src/keystone/index.ts","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/styles/createTheme\"","webpack://@vlprojects-chat/chat/./src/theme/muicssbaseline.ts","webpack://@vlprojects-chat/chat/./src/theme/fonts/PT-Root-UI_Medium.woff2","webpack://@vlprojects-chat/chat/./src/theme/fonts/PT-Root-UI_Regular.woff2","webpack://@vlprojects-chat/chat/./src/theme/fonts/PT-Root-UI_Bold.woff2","webpack://@vlprojects-chat/chat/./src/theme/light.ts","webpack://@vlprojects-chat/chat/./src/theme/dark.ts","webpack://@vlprojects-chat/chat/./src/theme/theme.ts","webpack://@vlprojects-chat/chat/external commonjs \"@mui/styles/makeStyles\"","webpack://@vlprojects-chat/chat/./src/components/LoadingStatus/styles.ts","webpack://@vlprojects-chat/chat/./src/components/LoadingStatus/LoadingStatus.tsx","webpack://@vlprojects-chat/chat/./src/locales/index.ts","webpack://@vlprojects-chat/chat/./src/locales/en.ts","webpack://@vlprojects-chat/chat/./src/locales/ru.ts","webpack://@vlprojects-chat/chat/./src/components/ErrorBoundary/index.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Grid\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Typography\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/extends\"","webpack://@vlprojects-chat/chat/external commonjs \"@babel/runtime/helpers/objectWithoutProperties\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/system/Box\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/system/colorManipulator\"","webpack://@vlprojects-chat/chat/./src/components/PollStatusBadge/PollStatusBadge.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/IconButton\"","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/ZoomInIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/InPageIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/ZoomOutIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/ChevronLeftIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/CloseRegularIcon.tsx","webpack://@vlprojects-chat/chat/./src/theme/styles.ts","webpack://@vlprojects-chat/chat/./src/components/SubHeader/styles.ts","webpack://@vlprojects-chat/chat/./src/components/SubHeader/styles.mobile.ts","webpack://@vlprojects-chat/chat/./src/components/SubHeader/SubHeader.tsx","webpack://@vlprojects-chat/chat/external commonjs \"classnames\"","webpack://@vlprojects-chat/chat/./src/ui-kit/HeaderTitle/styles.ts","webpack://@vlprojects-chat/chat/./src/ui-kit/HeaderTitle/styles.mobile.ts","webpack://@vlprojects-chat/chat/./src/ui-kit/components/Avatar/Avatar.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/HeaderTitle/HeaderTitle.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollListPage/services.ts","webpack://@vlprojects-chat/chat/./src/ui-kit/components/Button/styles.ts","webpack://@vlprojects-chat/chat/./src/ui-kit/components/Button/index.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollModeratorResultPage/components/ActionButton/ActionButton.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Divider\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Paper\"","webpack://@vlprojects-chat/chat/external commonjs \"date-fns/locale\"","webpack://@vlprojects-chat/chat/./src/utils/date.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollModeratorResultPage/components/OptionRowWrapper/OptionRowWrapper.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollModeratorResultPage/components/OptionRow/OptionRow.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Avatar\"","webpack://@vlprojects-chat/chat/./src/ui-kit/components/Avatar/styles.ts","webpack://@vlprojects-chat/chat/external commonjs \"@mui/base/InputUnstyled\"","webpack://@vlprojects-chat/chat/./src/ui-kit/components/Checkbox/styles.ts","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/InputAdornment\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/system\"","webpack://@vlprojects-chat/chat/./src/ui-kit/components/Input/StyledInput.ts","webpack://@vlprojects-chat/chat/./src/ui-kit/components/Input/Input.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/components/Loaders/WineLoader/styles.ts","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/PollMessageIcon.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollModeratorResultPage/components/OptionRowOpenEnded/OptionRowOpenEnded.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollModeratorResultPage/components/PollModeratorResultCard/PollModeratorResultCard.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollModeratorResultPage/PollModeratorResultPage.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollResultOpenEndedDetailPage/PollResultOpenEndedDetailPage.tsx","webpack://@vlprojects-chat/chat/external commonjs \"notistack\"","webpack://@vlprojects-chat/chat/external commonjs \"route-parser\"","webpack://@vlprojects-chat/chat/./src/components/Router/index.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/icons-material/ChevronLeft\"","webpack://@vlprojects-chat/chat/./src/components/Drawer/styles.ts","webpack://@vlprojects-chat/chat/./src/components/Drawer/index.tsx","webpack://@vlprojects-chat/chat/./src/containers/Auth/components/ActionBlock/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/Auth/components/ActionBlock/ActionBlock.tsx","webpack://@vlprojects-chat/chat/./src/utils/errors.ts","webpack://@vlprojects-chat/chat/./src/utils/users.ts","webpack://@vlprojects-chat/chat/./src/containers/Auth/components/Guest/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/Auth/components/Guest/Guest.tsx","webpack://@vlprojects-chat/chat/./src/containers/Auth/components/Signin/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/Auth/components/Signin/Signin.tsx","webpack://@vlprojects-chat/chat/./src/containers/Auth/const.ts","webpack://@vlprojects-chat/chat/./src/containers/Auth/components/Signup/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/Auth/components/Signup/Signup.tsx","webpack://@vlprojects-chat/chat/./src/containers/Auth/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/Auth/Auth.tsx","webpack://@vlprojects-chat/chat/./src/containers/AuthLayout/index.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/TextareaAutosize\"","webpack://@vlprojects-chat/chat/./src/components/MessageInput/styles.ts","webpack://@vlprojects-chat/chat/./src/components/MessageInput/styles.mobile.ts","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/ChatIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/CloseCircleIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/CloseIcon.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material\"","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/MenuIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/MoreVert.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/MutedIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/PinnedIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/PollOption1.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/PollOption2.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/PollOption3.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/SearchIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/SendIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/SendMessageIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/UpArrowIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/SettingsIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/TrashIcon.tsx","webpack://@vlprojects-chat/chat/./src/ui-kit/icons/CloseMiniIcon.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Collapse\"","webpack://@vlprojects-chat/chat/./src/components/ChatSettings/styles.ts","webpack://@vlprojects-chat/chat/./src/components/ChatSettings/index.tsx","webpack://@vlprojects-chat/chat/./src/hoc/MoreButtonHOC.tsx","webpack://@vlprojects-chat/chat/./src/components/MessageInput/components/SubmitDelayed/styles.ts","webpack://@vlprojects-chat/chat/./src/components/MessageInput/components/SubmitDelayed/index.tsx","webpack://@vlprojects-chat/chat/./src/components/MessageInput/MessageInput.tsx","webpack://@vlprojects-chat/chat/./src/hooks/useLandscapeOrientation.ts","webpack://@vlprojects-chat/chat/external commonjs \"react-virtuoso\"","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/SystemMessage/components/ChangedChannel/ChangedChannel.tsx","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/SystemMessage/components/UserChanged/UserChanged.tsx","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/SystemMessage/components/UserChangedChannel/UserChangedChannel.tsx","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/SystemMessage/components/UserJoined/UserJoined.tsx","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/SystemMessage/SystemMessage.tsx","webpack://@vlprojects-chat/chat/external commonjs \"linkify-react\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/icons-material/MoreHoriz\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Menu\"","webpack://@vlprojects-chat/chat/./src/ui-kit/components/DropMenu/styles.ts","webpack://@vlprojects-chat/chat/./src/ui-kit/components/DropMenu/DropMenu.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/MenuItem\"","webpack://@vlprojects-chat/chat/./src/ui-kit/components/DropMenu/DropMenuItem.tsx","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/MessageActions/MessageActions.tsx","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/UserMessage/components/UserMessageAvatar/UserMessageAvatar.tsx","webpack://@vlprojects-chat/chat/./src/containers/UsersListPage/services.ts","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/UserMessage/components/UserMessageDisplayName/styles.ts","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/UserMessage/components/UserMessageDisplayName/UserMessageDisplayName.tsx","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/UserMessage/styles.ts","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/UserMessage/styles.mobile.ts","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/UserMessage/UserMessage.tsx","webpack://@vlprojects-chat/chat/./src/components/MessageList/components/MessageRow/MessageRow.tsx","webpack://@vlprojects-chat/chat/./src/components/MessageList/styles.ts","webpack://@vlprojects-chat/chat/./src/components/MessageList/styles.mobile.ts","webpack://@vlprojects-chat/chat/./src/components/MessageList/MessageList.tsx","webpack://@vlprojects-chat/chat/./src/utils/consts.ts","webpack://@vlprojects-chat/chat/./src/components/PinnedMessageList/styles.ts","webpack://@vlprojects-chat/chat/./src/components/PinnedMessageList/styles.mobile.ts","webpack://@vlprojects-chat/chat/./src/components/PinnedMessageList/PinnedMessageList.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Box\"","webpack://@vlprojects-chat/chat/./src/containers/ChannelPage/components/ChannelPageHeader/ChannelPageHeader.tsx","webpack://@vlprojects-chat/chat/./src/containers/ChannelPage/ChannelPage.tsx","webpack://@vlprojects-chat/chat/./src/components/ChannelList/components/LastMessage/LastMessage.tsx","webpack://@vlprojects-chat/chat/./src/components/ChannelList/styles.ts","webpack://@vlprojects-chat/chat/./src/components/ChannelList/ChannelList.tsx","webpack://@vlprojects-chat/chat/./src/components/CreateChannelForm/styles.ts","webpack://@vlprojects-chat/chat/./src/components/CreateChannelForm/index.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Skeleton\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Stack\"","webpack://@vlprojects-chat/chat/./src/components/DirectList/components/DirectListRow/styles.ts","webpack://@vlprojects-chat/chat/./src/components/DirectList/components/DirectListRow/DirectListRow.tsx","webpack://@vlprojects-chat/chat/./src/components/DirectList/DirectList.tsx","webpack://@vlprojects-chat/chat/./src/containers/Channels/components/ChannelsHeader/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/Channels/components/ChannelsHeader/ChannelsHeader.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/icons-material/Group\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/icons-material/Person\"","webpack://@vlprojects-chat/chat/./src/containers/Channels/components/Footer/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/Channels/components/Footer/Footer.tsx","webpack://@vlprojects-chat/chat/./src/containers/Channels/Channels.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/SvgIcon\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Radio\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/FormGroup\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/FormControlLabel\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/FormControl\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Checkbox\"","webpack://@vlprojects-chat/chat/external commonjs \"final-form-arrays\"","webpack://@vlprojects-chat/chat/./src/hoc/FieldHOC.tsx","webpack://@vlprojects-chat/chat/external commonjs \"react-final-form\"","webpack://@vlprojects-chat/chat/external commonjs \"react-final-form-arrays\"","webpack://@vlprojects-chat/chat/./src/containers/CreatePollPage/services.ts","webpack://@vlprojects-chat/chat/./src/containers/CreatePollPage/types.ts","webpack://@vlprojects-chat/chat/./src/containers/CreatePollPage/components/SelectPollType/SelectPollType.tsx","webpack://@vlprojects-chat/chat/./src/containers/CreatePollPage/components/CreatePollForm/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/CreatePollPage/components/CreatePollForm/validate.tsx","webpack://@vlprojects-chat/chat/./src/containers/CreatePollPage/components/CreatePollForm/CreatePollForm.tsx","webpack://@vlprojects-chat/chat/./src/containers/CreatePollPage/CreatePollPage.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Card\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/CardContent\"","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/CardHeader\"","webpack://@vlprojects-chat/chat/./src/containers/PollListPage/components/PollAction/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/PollListPage/components/PollAction/PollAction.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollListPage/components/PollCard/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/PollListPage/components/PollCard/PollCard.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollListPage/components/TemplateList/TemplateList.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollListPage/PollListPage.tsx","webpack://@vlprojects-chat/chat/./src/containers/Profile/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/Profile/Profile.tsx","webpack://@vlprojects-chat/chat/./src/containers/SocketLayout/index.tsx","webpack://@vlprojects-chat/chat/./src/containers/UsersListPage/components/UserRow/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/UsersListPage/components/UserRow/UserRow.tsx","webpack://@vlprojects-chat/chat/./src/containers/UsersListPage/components/UserList/UserList.tsx","webpack://@vlprojects-chat/chat/./src/containers/UsersListPage/UsersListPage.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Portal\"","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/components/ClosePortalButton/ClosePortalButton.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/services.ts","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/components/OptionBox/OptionBox.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/components/SubmitPollButton/SubmitPollButton.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/components/CheckboxGroup/CheckboxGroup.tsx","webpack://@vlprojects-chat/chat/external commonjs \"@mui/material/Input\"","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/components/OpenEnded/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/components/OpenEnded/OpenEnded.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/components/RadioGroup/RadioGroup.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/components/PollVariant/PollVariant.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/components/ResultVariant/ResultVariant.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/styles.ts","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/PollPortal.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/useIosSheet.tsx","webpack://@vlprojects-chat/chat/./src/containers/PollPortal/PollPortalWrapper.tsx","webpack://@vlprojects-chat/chat/./src/App.tsx","webpack://@vlprojects-chat/chat/./src/Chat.tsx"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// startup\n// Load entry module and return exports\n// This entry module doesn't tell about it's top-level declarations so it can't be inlined\nvar __webpack_exports__ = {};\n__webpack_modules__[971](0, __webpack_exports__, __webpack_require__);\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/asyncToGenerator\");","import axios, { AxiosInstance, AxiosRequestConfig } from 'axios';\nimport qs from 'qs';\n\nenum Methods {\n Get = 'get',\n Put = 'put',\n Post = 'post',\n Patch = 'patch',\n Delete = 'delete',\n}\n\nlet api: AxiosInstance;\n\nconst caller = async (\n method: Methods,\n address: string,\n params: AxiosRequestConfig | FormData | Record<string, unknown> = {},\n config: AxiosRequestConfig = {},\n): Promise<{ data: unknown }> => {\n const response = await api[method](address, params, config);\n return response;\n}\n\nexport const GET = async (\n address: string,\n params: Record<string, unknown> = {},\n config: AxiosRequestConfig = {},\n): Promise<unknown> => {\n const response = await caller(Methods.Get, address, {\n params,\n paramsSerializer: qs.stringify,\n ...config,\n });\n return response.data;\n}\n\nexport const PUT = async (address: string, params: Record<string, unknown> = {}): Promise<unknown> => {\n const response = await caller(Methods.Put, address, params);\n return response.data;\n}\n\nexport const POST = async (\n address: string,\n params: FormData | Record<string, unknown> = {},\n config: AxiosRequestConfig = {},\n): Promise<unknown> => {\n const response = await caller(Methods.Post, address, params, config);\n return response.data;\n}\n\nexport const PATCH = async (address: string, params: Record<string, unknown> = {}): Promise<unknown> => {\n const response = await caller(Methods.Patch, address, params);\n return response.data;\n}\n\nexport const DELETE = async (address: string, params: Record<string, unknown> = {}): Promise<unknown> => {\n const response = await caller(Methods.Delete, address, params);\n return response.data;\n}\n\nexport const setToken = (token: string): void => {\n api.defaults.headers.common.Authorization = `Bearer ${token}`;\n}\n\nexport const initializeApi = (apiUrl: string): void => {\n api = axios.create({\n baseURL: apiUrl,\n timeout: 30000,\n headers: {\n 'Content-Type': 'application/json',\n },\n withCredentials: true,\n });\n};\n\nexport default (): AxiosInstance => api;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/slicedToArray\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/regenerator\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/CssBaseline\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/LinearProgress\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/StyledEngineProvider\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/styles/ThemeProvider\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mobx-react-lite\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-intl\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mobx-keystone\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mobx\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@sentry/react\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@sentry/tracing\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"flat\");","import { EventEmitter } from 'events';\n\nexport default new EventEmitter();\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"events\");","import { useEffect } from 'react';\nimport eventBus from '../utils/eventBus/eventBus';\nimport { IEvents } from '../utils/eventBus/types';\n\ntype Callback = (data: IEvents) => void;\n\nconst useEventHook = (listener: string, callback: Callback) => {\n useEffect(() => {\n eventBus.on(listener, callback);\n\n return () => {\n eventBus.off(listener, callback);\n };\n }, []);\n};\n\nexport default useEventHook;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/classCallCheck\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/createClass\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/assertThisInitialized\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/inherits\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/possibleConstructorReturn\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/getPrototypeOf\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/defineProperty\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/applyDecoratedDescriptor\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"axios\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"qs\");","// eslint-disable-next-line import/prefer-default-export\nexport enum Cookie {\n ACCESS_TOKEN = 'ldChatAccessToken',\n}\n\nexport const APP_ID = 'livedigital-chat';\nexport const rootDivAttrAppId = 'data-appId';\nexport const rootDivAttrChatId = 'data-chatid';\nexport const rootDivAttrApiUrl = 'data-apiUrl';\n\nexport const POLL_CONTAINER = 'poll-container';\nexport const MAIN_CONTAINER = 'main-container';\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"js-cookie\");","export const HEADER_HEIGHT = 80;\nexport const HEADER_MOBILE_HEIGHT = 52;\nexport const CHAT_MESSAGE_SUBMIT_FOOTER_HEIGHT = 60;\n\nexport const zINDEX = {\n HEADER: 10,\n TOOLTIP_POPPER: 9,\n POLL_PORTAL: 999999,\n POLL_PORTAL_DRAG_HOLDER: 999999 + 2,\n};\n\nexport enum AvatarColorEnum {\n AVATAR1_BURGUNDY = 'AVATAR1_BURGUNDY',\n AVATAR2_RED = 'AVATAR2_RED',\n AVATAR3_DARK_PINK = 'AVATAR3_DARK_PINK',\n AVATAR4_PINK = 'AVATAR4_PINK',\n AVATAR5_GOLD = 'AVATAR5_GOLD',\n AVATAR6_NAVY_GREEN = 'AVATAR6_NAVY_GREEN',\n AVATAR7_NAVY_BLUE = 'AVATAR7_NAVY_BLUE',\n AVATAR8_PURPLE = 'AVATAR8_PURPLE',\n}\n\nexport const COLOURS = {\n BLACK_01: '#060A2D',\n BLACK_02: '#1A2558',\n BLACK_03: '#999999',\n BLACK_06: '#7A7D98',\n WHITE: '#FFF',\n BLACK: '#000',\n GREY: '#A1A4BC',\n\n POLL_TEXT_PRIMARY: '#676767',\n POLL_TEXT_SECONDARY: '#A1B0BC',\n\n SURFACE_PRIMARY: '#FFF',\n SURFACE_SECONDARY: '#E8E8E9',\n\n MESSAGE_DATE_COLOR: '#A1A4BC',\n\n BG_FOR_SLOT: '#EEF1F3',\n\n LIGHT: '#F3F2F9',\n LIGHT_01: '#DEE3E7',\n LIGHT_02: '#A1A4BC',\n LIGHT_03: '#E2E2F0',\n LIGHT_04: '#F6F6FC',\n LIGHT_05: '#D2D2E4',\n\n BLUE_02: '#163498',\n BLUE: '#1399FA',\n GREEN: '#23BE33',\n ORANGE: '#EFA20B',\n ACTIVE: '#163498',\n\n [AvatarColorEnum.AVATAR1_BURGUNDY]: 'var(--ld-avatarBurgundy)',\n [AvatarColorEnum.AVATAR2_RED]: 'var(--ld-avatarRed)',\n [AvatarColorEnum.AVATAR3_DARK_PINK]: 'var(--ld-avatarDarkPink)',\n [AvatarColorEnum.AVATAR4_PINK]: 'var(--ld-avatarPink)',\n [AvatarColorEnum.AVATAR5_GOLD]: 'var(--ld-avatarGold)',\n [AvatarColorEnum.AVATAR6_NAVY_GREEN]: 'var(--ld-avatarNavyGreen)',\n [AvatarColorEnum.AVATAR7_NAVY_BLUE]: 'var(--ld-avatarNavyBlue)',\n [AvatarColorEnum.AVATAR8_PURPLE]: 'var(--ld-avatarPurple)',\n\n ['--']: '#6B0C22',\n\n ACCENT: 'var(--ld-accentBase)',\n ACCENT_01: 'var(--ld-accent01)',\n ACCENT_02: 'var(--ld-accent02)',\n ACCENT_03: 'var(--ld-accent03)',\n ACCENT_04: 'var(--ld-accent04)',\n ACCENT_05: 'var(--ld-accent05)',\n CONTRAST: 'var(--ld-contrast)',\n PRIMARY: 'var(--ld-primary)',\n SECONDARY: 'var(--ld-secondaryBase)',\n SECONDARY_01: 'var(--ld-secondary01)',\n SECONDARY_02: 'var(--ld-secondary02)',\n SECONDARY_03: 'var(--ld-secondary03)',\n ERROR: 'var(--ld-errorBase)',\n ERROR_02: 'var(--ld-error02)',\n ERROR_03: 'var(--ld-error03)',\n ERROR_04: 'var(--ld-error04)',\n BG: 'var(--ld-bg)',\n};\n","export enum MessageTypeEnum {\n System = 'system',\n User = 'user',\n}\n\nexport enum ChannelTypeEnum {\n Public = 'public',\n Private = 'private',\n Direct = 'direct',\n Blank = 'blank',\n}\n\nexport enum UserRoleEnum {\n User = 'user',\n Moderator = 'moderator',\n}\n\nexport enum AuthModeEnum {\n // All disabled\n Mode1 = 1,\n\n // Guest\n Mode2 = 2,\n\n // Unregistered users\n Mode3 = 3,\n\n // Unregistered users, guest\n Mode4 = 4,\n\n // Register\n Mode5 = 5,\n\n // Register, guest\n Mode6 = 6,\n\n // Register, unregistered users\n Mode7 = 7,\n\n // Register, unregistered users, guest\n Mode8 = 8,\n}\n\nexport enum ChatVisualState {\n Expand = 'expand',\n Collapse = 'collapse',\n Hidden = 'hidden',\n}","import { computed } from 'mobx';\nimport { detach, Model, model, prop, rootRef } from 'mobx-keystone';\nimport { AvatarColorEnum } from 'theme/consts';\nimport { UserRoleEnum } from '../../types/enums';\n\nexport const getColorFromString = (colors: string[], str?: string | null): keyof typeof AvatarColorEnum => {\n if (!str?.length || !colors.length) {\n return colors[0] as keyof typeof AvatarColorEnum;\n }\n\n const index =\n str.length <= colors.length\n ? str.length - 1\n : str.length % (colors.length * Math.floor(str.length / colors.length));\n\n return colors[index] as keyof typeof AvatarColorEnum;\n};\n\n@model('User')\nexport default class User extends Model({\n id: prop<string>(''),\n username: prop<string>(() => ''),\n displayName: prop<string>(() => ''),\n avatarUrl: prop<string | undefined>(() => ''),\n role: prop<UserRoleEnum>(() => UserRoleEnum.User),\n isMuted: prop<boolean>(() => false),\n}) {\n @computed\n get getAvatarColor(): AvatarColorEnum {\n const key = getColorFromString(Object.keys(AvatarColorEnum), this.displayName);\n return AvatarColorEnum[key];\n }\n}\n\nexport const userRef = rootRef<User>('User', {\n getId(maybeUser) {\n return maybeUser instanceof User ? maybeUser.id : undefined;\n },\n onResolvedValueChange(ref, newValue, oldValue) {\n if (oldValue && !newValue) {\n // if the todo value we were referencing disappeared then remove the reference\n // from its parent\n detach(ref)\n }\n },\n});\n","export enum IPollStatus {\n New = 'new',\n InProgress = 'in_progress',\n Done = 'done',\n}\n\nexport interface IChannelSettings {\n slowModeInSecs?: number,\n disallowLinks?: boolean,\n}\n\nexport enum AppTheme {\n light = 'light',\n dark = 'dark'\n}","import { setToken } from 'api';\nimport { model, Model, modelAction, prop } from 'mobx-keystone';\nimport { computed } from 'mobx';\nimport { IRUser } from '../types/serverResponses';\nimport { storeAccessToken } from '../utils/auth';\nimport User from './chat/user';\nimport { UserRoleEnum } from '../types/enums';\n\n@model('Auth')\nexport default class Auth extends Model({\n me: prop<User>(() => new User({})),\n accessToken: prop<string>(''),\n appId: prop<string>('').withSetter(),\n isAuthorized: prop<boolean>(false).withSetter(),\n isAnonymousAllowed: prop<boolean>(false).withSetter(),\n}) {\n @modelAction\n setAccessToken(token: string): void {\n setToken(token);\n this.accessToken = token;\n this.isAuthorized = true;\n storeAccessToken(token);\n }\n\n @computed\n get isModerator(): boolean {\n return this.me.role === UserRoleEnum.Moderator;\n }\n\n @modelAction\n setMe(user: IRUser): void {\n const userModel = new User({\n id: user.id,\n displayName: user.displayName,\n username: user.username,\n avatarUrl: user.avatarUrl,\n role: user.role,\n });\n\n this.me = userModel;\n }\n}\n","import cookies from 'js-cookie';\nimport { Cookie } from 'types/const';\n\nexport const getStoredAccessToken = (): string | undefined => cookies.get(Cookie.ACCESS_TOKEN);\n\nexport const storeAccessToken = (accessToken: string): void => {\n if (accessToken) {\n cookies.set(Cookie.ACCESS_TOKEN, accessToken, {\n expires: new Date(new Date().setFullYear(new Date().getFullYear() + 1)), // 1 year\n });\n }\n};\n\nexport default null;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/initializerDefineProperty\");","import { IRUser } from 'types/serverResponses';\n\nimport User from './chat/user';\n\nexport const createUserFactory = (user: IRUser) =>\n new User({\n id: String(user.id),\n username: user.username,\n displayName: user.displayName,\n avatarUrl: user.avatarUrl,\n role: user.role,\n isMuted: user.isMuted,\n });\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/initializerWarningHelper\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mobx-utils\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"mobx-event-bus2\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/toConsumableArray\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"date-fns\");","import Poll from 'keystone/chat/poll';\n\nexport const getLeadingLetters = (name: string, count = 2): string =>\n name\n .split(/(\\s+)/)\n .filter((word) => /\\S/.test(word))\n .slice(0, count)\n .map((word) => word[0])\n .join('');\n\nexport const getPollType = (poll?: Poll): 'poll' | 'test' | 'pollOpenEnded' | undefined => {\n if (poll?.withAnswer) return 'test';\n if (poll?.isOpenEnded) return 'pollOpenEnded';\n if (!poll?.withAnswer && !poll?.isOpenEnded) return 'poll';\n};\n\nexport const sortPollDesc = (a: Poll, b: Poll) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();\n","import { Model, model, modelAction, prop, rootRef } from 'mobx-keystone';\n\nimport { IServerPollOption, IServerPollVote } from '../../containers/CreatePollPage/types';\nimport { IPollStatus } from '../../types/types';\n\n@model('Poll')\nexport default class Poll extends Model({\n id: prop<string>(),\n question: prop<string>(''),\n isOpenEnded: prop<boolean>(() => false),\n withAnswer: prop<boolean>(() => false),\n isVoted: prop<boolean>(() => false),\n options: prop<IServerPollOption[]>(() => []),\n validOptions: prop<string[]>(() => []),\n templateId: prop<number | undefined | null>(),\n createdAt: prop<string>(),\n stoppedAt: prop<string>(),\n status: prop<IPollStatus>(() => IPollStatus.New).withSetter(),\n votes: prop<IServerPollVote[]>(() => []),\n updatedAt: prop<number | undefined>(),\n isMultiselect: prop<boolean>(),\n}) {\n @modelAction\n changeStatus(status: IPollStatus): void {\n this.setStatus(status);\n }\n\n @modelAction\n addVote(vote: IServerPollVote) {\n this.votes.push(vote);\n }\n}\n\nexport const pollRef = rootRef<Poll>('PollRef', {\n getId(maybePoll) {\n return maybePoll instanceof Poll ? maybePoll.id : undefined;\n },\n});\n","/* eslint-disable import/prefer-default-export */\nimport { IServerPoll, IServerPollOption } from '../containers/CreatePollPage/types';\nimport Poll from '../keystone/chat/poll';\nimport { APP_ID, rootDivAttrAppId, rootDivAttrChatId, rootDivAttrApiUrl } from '../types/const';\n\nexport const findAppInitialData = (): {\n channelIdFromAttr?: string | null;\n appIdFromAttr?: string | null;\n apiUrlFromAttr?: string | null;\n} => {\n const element = document.getElementById(APP_ID);\n\n const channelIdFromAttr = element?.getAttribute(rootDivAttrChatId);\n const appIdFromAttr = element?.getAttribute(rootDivAttrAppId);\n const apiUrlFromAttr = element?.getAttribute(rootDivAttrApiUrl);\n\n return {\n channelIdFromAttr,\n appIdFromAttr,\n apiUrlFromAttr,\n };\n};\n\n// TODO Refactor - we work only with model since it converted and created from server data only once\nexport const convertServerPollToModel = (poll: IServerPoll): Poll => {\n const options: IServerPollOption[] = [];\n const validOptions: string[] = [];\n let withAnswer = false;\n\n poll.options.forEach((option) => {\n options.push(option);\n if (option.valid) {\n validOptions.push(option.option);\n withAnswer = true;\n }\n });\n\n withAnswer = poll.withAnswer;\n const isMultiselect = poll.isMultiselect;\n\n return new Poll({ ...poll, id: `${poll.id}`, options, validOptions, withAnswer, isMultiselect });\n};\n","import { computed } from 'mobx';\nimport { model, Model, modelAction, prop, Ref } from 'mobx-keystone';\nimport { MessageTypeEnum } from '../../types/enums';\nimport User, { userRef } from './user';\nimport { Root } from '../index';\n\nexport enum SystemMessageEnum {\n UserJoinedEvent = 'user-joined',\n UserChangedEvent = 'user-changed',\n UserChangedChannelEvent = 'user-changed-channel',\n ChangedChannelEvent = 'changed-channel',\n}\n\nexport interface SystemData {\n event: SystemMessageEnum;\n whoJoined?: Ref<User>;\n whoRenamedChannel?: Ref<User>;\n oldDisplayName?: string;\n newDisplayName?: string;\n newName?: string;\n}\n\nexport interface UserJoinedPayload {\n userId: string;\n}\n\nexport interface UserChangedPayload {\n oldDisplayName: string;\n newDisplayName: string;\n}\n\nexport interface UserChangedChannelPayload {\n userId: string;\n newName: string;\n}\n\nexport interface ChangedChannelEventPayload {\n newName: string;\n}\n\n@model('Message')\nexport default class Message extends Model({\n id: prop<string>(),\n text: prop<string>(),\n type: prop<MessageTypeEnum>(),\n user: prop<Ref<User> | null>(),\n createdAt: prop<string>(),\n meta: prop<Record<string, unknown>>(),\n systemData: prop<SystemData | null>(),\n}) {\n @computed\n get getUser(): User | undefined {\n return this.user?.current;\n }\n\n @modelAction\n loadSystemData(root: Root, event: SystemMessageEnum, data: unknown): void {\n this.systemData = { event };\n switch (event) {\n case SystemMessageEnum.UserJoinedEvent: {\n const { userId } = data as UserJoinedPayload;\n this.systemData.whoJoined = root.chat.createUserRef(userId);\n break;\n }\n case SystemMessageEnum.UserChangedEvent: {\n const { oldDisplayName, newDisplayName } = data as UserChangedPayload;\n this.systemData.oldDisplayName = oldDisplayName;\n this.systemData.newDisplayName = newDisplayName;\n break;\n }\n case SystemMessageEnum.UserChangedChannelEvent: {\n const { userId, newName } = data as UserChangedChannelPayload;\n this.systemData.whoRenamedChannel = root.chat.createUserRef(userId);\n this.systemData.newName = newName;\n break;\n }\n case SystemMessageEnum.ChangedChannelEvent: {\n const { newName } = data as ChangedChannelEventPayload;\n this.systemData.newName = newName;\n break;\n }\n default:\n }\n }\n}\n","import { Model, model, prop, rootRef, Ref } from 'mobx-keystone';\nimport { IRChannelMessage } from 'types/serverResponses';\nimport User from './user';\n\n@model('PinnedMessage')\nexport default class PinnedMessage extends Model({\n id: prop<string>(),\n channelId: prop<number>(),\n messageId: prop<number>(),\n message: prop<IRChannelMessage>(),\n user: prop<Ref<User>>(),\n}) {}\n\nexport const pinnedMessageRef = rootRef<PinnedMessage>('PinnedMessageRef', {\n getId(maybePinnedMessage) {\n return maybePinnedMessage instanceof PinnedMessage ? maybePinnedMessage.id : undefined;\n },\n});\n","import { compareAsc } from 'date-fns';\nimport { computed } from 'mobx';\nimport { getRoot, model, Model, modelAction, objectMap, prop, Ref } from 'mobx-keystone';\nimport { sortPollDesc } from 'utils/helper';\nimport { eventBus, subscribe } from 'mobx-event-bus2';\n\nimport { IServerPoll, IServerPollOption } from '../../containers/CreatePollPage/types';\nimport { ChannelTypeEnum, MessageTypeEnum } from '../../types/enums';\nimport { IPollOptionsCount, IRChannelMessage, IRPinnedMessage } from '../../types/serverResponses';\nimport { IChannelSettings, IPollStatus } from '../../types/types';\nimport { convertServerPollToModel } from '../../utils/common';\nimport Message, { SystemMessageEnum } from './message';\nimport PinnedMessage from './pinnedMessage';\nimport Poll, { pollRef } from './poll';\nimport User from './user';\n\n@model('Channel')\nexport default class Channel extends Model({\n name: prop<string>(() => ''),\n id: prop<string>(),\n externalId: prop<string>(''),\n type: prop<ChannelTypeEnum>(ChannelTypeEnum.Public),\n messages: prop(() => objectMap<Message>()),\n directUsersOnly: prop<User[]>(() => []),\n polls: prop<Poll[]>(() => []),\n activePoll: prop<Ref<Poll> | undefined>(() => undefined).withSetter(),\n pinnedMessages: prop<PinnedMessage[]>(() => []),\n settings: prop<IChannelSettings>().withSetter(),\n timeLimit: prop<number>(-1),\n}) {\n onInit() {\n eventBus.register(this);\n }\n\n @subscribe('chat.messages')\n addMessagesFromEvent({ payload }: { payload: IRChannelMessage[] }) {\n this.addMessages(payload);\n const ids = payload.map((x) => x.id);\n eventBus.post('chat.messages.response', ids);\n }\n\n @subscribe('chat.setTimeLine')\n @modelAction\n onTimeLimitReceived({ payload }: { payload: number }) {\n this.timeLimit = payload;\n }\n\n @modelAction\n addMessages(messages: IRChannelMessage[]): number {\n let newMessages = 0;\n messages.forEach((message, index, array) => {\n // temporary fix\n // upd: TODO investigate and remove this fix\n if (!(message.type === MessageTypeEnum.System && !message.meta)) {\n if (!this.messages.has(message.id)) {\n newMessages += 1;\n }\n\n const messageModel = new Message({\n id: message.id,\n text: message.text,\n type: message.type,\n createdAt: message.createdAt,\n user: message.userId ? getRoot(this).chat.createUserRef(message.userId) : null,\n meta: message.meta,\n systemData: null,\n });\n\n if (message.type === MessageTypeEnum.System) {\n messageModel.loadSystemData(getRoot(this), message.meta.event as SystemMessageEnum, message.meta.data);\n }\n\n this.messages.set(message.id, messageModel);\n }\n });\n\n return newMessages;\n }\n\n @modelAction\n setPollList(items: IServerPoll[]): void {\n if (this.activePoll?.current.isVoted) {\n this.closePollPortal()\n }\n\n this.polls = items.map(convertServerPollToModel);\n }\n\n @modelAction\n addPoll(poll: IServerPoll): Poll {\n const pollModel = convertServerPollToModel(poll);\n this.polls = [...this.polls, pollModel];\n\n return pollModel;\n }\n\n @modelAction\n deletePoll(poll: Poll): void {\n if (poll.id === this.activePoll?.current.id) this.activePoll = undefined;\n this.polls = this.polls.filter((p) => p.id !== poll.id);\n }\n\n @modelAction\n startPoll(poll?: Poll): void {\n if (!poll) return;\n\n this.setActivePoll(pollRef(poll));\n }\n\n @modelAction\n setPollVoted(payload: string[], options: IServerPollOption[]): void {\n if (!this.activePoll) return;\n\n if (this.activePoll.current.isOpenEnded) {\n this.activePoll.current.isVoted = true;\n return;\n }\n this.activePoll.current.options = options;\n\n payload.forEach((voteId) => {\n this.activePoll?.current.options.forEach((option) => {\n if (+option.id === +voteId) {\n option.isVoted = true;\n if (this.activePoll?.current) {\n this.activePoll.current.isVoted = true;\n }\n }\n });\n });\n }\n\n @modelAction\n updateVotesCounter(pollId: number, options: IPollOptionsCount[], timestamp: number): void {\n const poll = this.polls.find((item) => Number(item.id) === pollId);\n\n if (poll) {\n // check if updated data is newer than ours\n if (poll.updatedAt && poll.updatedAt > timestamp) {\n return;\n }\n\n options.forEach(({ id, votesCount }) => {\n const option = poll.options.find((item) => Number(item.id) === id);\n if (option) {\n option.votesCount = votesCount;\n }\n });\n poll.updatedAt = timestamp;\n }\n }\n\n @modelAction\n stopPoll(poll?: Poll): void {\n if (!poll) return;\n this.activePoll = undefined;\n\n this.polls.forEach((p) => {\n if (p.id === poll.id) {\n p.status = IPollStatus.Done;\n }\n });\n }\n\n @modelAction\n closePollPortal(): void {\n this.activePoll = undefined;\n }\n\n @modelAction\n pollResult(poll: Poll): void {\n this.activePoll = poll ? pollRef(poll) : undefined;\n }\n\n @modelAction\n setPinnedMessages(items: IRPinnedMessage[]): void {\n this.pinnedMessages = items.map(\n (item) =>\n new PinnedMessage({\n ...item,\n id: `${item.id}`,\n user: getRoot(this).chat.createUserRef(item.message.userId),\n }),\n );\n }\n\n @modelAction\n cleanAllMessages(): void {\n this.messages.clear();\n }\n\n @modelAction\n deleteMessages(ids: number[]): void {\n ids.forEach((id) => {\n const messageToDelete = this.messages.get(`${id}`);\n if (messageToDelete) {\n this.messages.delete(messageToDelete.id);\n }\n });\n }\n\n getActiveOrLastPollByTemplateId(templateId?: string) {\n if (!templateId) return undefined;\n\n const polls = this.polls\n .filter((p) => p.templateId === +templateId)\n .sort(sortPollDesc);\n\n const firstInProgressPoll = polls?.find(({ status }) => status === IPollStatus.InProgress);\n\n return firstInProgressPoll || polls[0];\n }\n\n findPollById(pollId?: string) {\n if (!pollId) return undefined;\n return this.polls.find((p) => p.id === pollId);\n }\n\n getPollListByTemplateId(templateId?: string) {\n if (!templateId) return undefined;\n\n return this.polls\n .filter((p) => p.templateId === +templateId)\n .sort(sortPollDesc);\n }\n\n @computed\n get sortedMessages(): Message[] {\n const messages = Array.from(this.messages.values()).sort((a: Message, b: Message) =>\n compareAsc(new Date(a.createdAt), new Date(b.createdAt)),\n );\n\n const filterFn = this.timeLimit > 0\n ? (x: Message) => new Date(x.createdAt) <= new Date(this.timeLimit)\n : () => true\n\n return messages.filter(filterFn);\n }\n\n findLastMessageForUser(msgIdx: number): Message | undefined {\n return this.sortedMessages\n .slice(msgIdx)\n .find((msg, idx, arr) => arr[idx + 1]?.user?.current.id !== msg?.user?.current.id);\n }\n\n @computed\n get lastMessage(): Message | undefined {\n return [...this.sortedMessages].reverse().find((m) => m.type !== MessageTypeEnum.System);\n }\n\n @computed\n get messagesCount(): number {\n return this.messages.size;\n }\n\n @computed\n get getActivePoll(): Poll | undefined {\n return this.activePoll?.maybeCurrent;\n }\n\n @computed\n get isPollsInProgress(): boolean {\n return Boolean(this.polls.find(({ status }) => status === IPollStatus.InProgress));\n }\n\n @computed\n get getPinnedMessages(): PinnedMessage[] {\n return Array.from(this.pinnedMessages.values());\n }\n\n @computed\n get lastPinnedMessage(): PinnedMessage {\n const pinnedMessages = this.getPinnedMessages;\n return pinnedMessages[pinnedMessages.length - 1];\n }\n\n @computed\n get getPollTemplates(): Poll[] {\n return this.polls.filter((poll) => poll.templateId === null).sort(sortPollDesc);\n }\n\n @computed\n get getPollList(): Poll[] {\n return this.polls;\n }\n\n @modelAction\n findMessageIdx(messageId: number): number {\n return Array.from(this.messages.values()).findIndex((msg) => +msg.id === messageId);\n }\n}\n","import { Model, model, prop } from 'mobx-keystone';\n\n@model('Pub')\nexport default class Pub extends Model({\n id: prop<string>(''),\n name: prop<string>(''),\n}) {}\n","import { POST } from 'api';\nimport { createUserFactory } from 'keystone/factory';\nimport { computed, observable } from 'mobx';\nimport { model, Model, modelAction, objectMap, prop, Ref } from 'mobx-keystone';\nimport { chunkProcessor, IDisposer } from 'mobx-utils';\nimport { eventBus, subscribe } from 'mobx-event-bus2';\n\nimport { ChannelTypeEnum, UserRoleEnum } from '../../types/enums';\nimport { IRChannel, IRPub, IRUser } from '../../types/serverResponses';\nimport Channel from './channel';\nimport Pub from './pub';\nimport User, { userRef } from './user';\n\n@model('Chat')\nexport default class Chat extends Model({\n channels: prop(() => objectMap<Channel>()),\n pubs: prop(() => objectMap<Pub>()),\n users: prop(() => objectMap<User>()), // repository\n}) {\n onInit() {\n eventBus.register(this);\n }\n\n @observable fetchingQueueUser: string[] = [];\n\n private startFetching(): IDisposer {\n const fetchUsers = async (ids: string[]) => {\n const newUsers = (await POST('users/fetch', { ids })) as IRUser[];\n this.addUsers(newUsers);\n };\n\n return chunkProcessor(\n this.fetchingQueueUser,\n (chunk) => {\n fetchUsers(chunk);\n },\n 100, // ms\n 100, // size\n );\n }\n\n onAttachedToRootStore(): () => void {\n const disposer = this.startFetching();\n return () => disposer();\n }\n\n @computed\n get userList(): User[] {\n return Array.from(this.users.values());\n }\n\n @computed\n get channelsList(): Channel[] {\n return Array.from(this.channels.values());\n }\n\n @computed\n get publicChannelsList(): Channel[] {\n return Array.from(this.channels.values()).filter((ch) =>\n [ChannelTypeEnum.Public, ChannelTypeEnum.Blank].includes(ch.type),\n );\n }\n\n @computed\n get directChannelsList(): Channel[] {\n return Array.from(this.channels.values()).filter((ch) => ch.type === ChannelTypeEnum.Direct);\n }\n\n @computed\n get pubsList(): Pub[] {\n return Array.from(this.pubs.values());\n }\n\n @modelAction\n createUserRef(id: string): Ref<User> {\n const found = this.users.get(id);\n if (found) {\n return userRef(found);\n }\n\n const loadingUser = new User({\n id: String(id),\n displayName: 'Loading...',\n });\n this.fetchingQueueUser.push(id);\n this.users.set(id, loadingUser);\n\n return userRef(loadingUser);\n }\n\n @modelAction\n updateUser(payload: { userId: number; displayName?: string, avatarUrl?: string, role?: UserRoleEnum }): void {\n const { userId, displayName, avatarUrl, role } = payload;\n const user = this.users.get(`${userId}`);\n\n if (user && displayName) user.displayName = displayName;\n if (user) user.avatarUrl = avatarUrl;\n if (user && role) user.role = role;\n }\n\n @subscribe('chat.users')\n addUsersFromEvent({ payload }: { payload: IRUser[] }): void {\n this.addUsers(payload);\n const ids = payload.map((x) => x.id);\n eventBus.post('chat.users.response', ids);\n }\n\n @modelAction\n addUsers(users?: IRUser[]): void {\n if (!users) return;\n users.forEach((user) => {\n const userModel = createUserFactory(user);\n this.users.set(user.id, userModel);\n });\n }\n\n @modelAction\n addChannels(channels: IRChannel[]): void {\n channels.forEach((channel) => {\n const { polls } = channel;\n const channelModel = new Channel({\n id: String(channel.id),\n name: channel.name,\n type: channel.type,\n externalId: channel.externalId,\n directUsersOnly: channel.users?.map((user) => createUserFactory(user)) || [],\n settings: channel.settings,\n });\n\n this.channels.set(channel.id, channelModel);\n channelModel.addMessages(channel.messages);\n\n if (channel.type === ChannelTypeEnum.Direct) {\n this.addUsers(channel.users);\n }\n if (channel.type === ChannelTypeEnum.Public) {\n polls.forEach((poll) => {\n const pollModel = channelModel.addPoll(poll);\n channelModel.startPoll(pollModel);\n });\n }\n });\n }\n\n @modelAction\n addPubs(pubs: IRPub[]): void {\n pubs.forEach((pub: IRPub) => {\n const pubModel = new Pub({\n id: pub.id,\n name: pub.name,\n });\n\n this.pubs.set(pub.id, pubModel);\n });\n }\n\n @modelAction\n mute(userId: number): void {\n const user = this.users.get(`${userId}`);\n\n if (user) {\n user.isMuted = true;\n }\n }\n\n @modelAction\n unmute(userId: number): void {\n const user = this.users.get(`${userId}`);\n\n if (user) {\n user.isMuted = false;\n }\n }\n}\n","export enum ListenerEventEnum {\n App = 'app',\n}\n\nexport enum EventBusEventEnum {\n MessageSent = 'MessageSent',\n ChatLoaded = 'ChatLoaded',\n ChatClose = 'ChatClose',\n ChatExpand = 'ChatExpand',\n OpenInPopup = 'OpenInPopup',\n ChatLog = 'ChatLog',\n ChatError = 'ChatError',\n ChatInitError = 'ChatInitError',\n ChatIsReady = 'ChatIsReady',\n}\n\nexport interface IEvents {\n event: EventBusEventEnum;\n data: Record<string | number, unknown>;\n}\n\nexport enum ChatErrorCode {\n MissingParams = 'missing_params',\n SettingsFetchFailed = 'settings_fetch_failed',\n SocketConnectFailed = 'socket_connect_failed',\n UnhandledError = 'unhandled_error',\n}","import { model, Model, modelAction, prop } from 'mobx-keystone';\nimport { computed } from 'mobx';\nimport { AuthModeEnum } from 'types/enums';\n\n@model('Settings')\nexport default class Settings extends Model({\n createChannelAllowed: prop<boolean>(false).withSetter(),\n accessUnregisteredUsers: prop<boolean>(false).withSetter(),\n accessChatGuest: prop<boolean>(false).withSetter(),\n accessRegister: prop<boolean>(false).withSetter(),\n displayDirect: prop<boolean>(false).withSetter(),\n displayUserList: prop<boolean>(false).withSetter(),\n displayChannelList: prop<boolean>(false).withSetter(),\n displaySystemMessages: prop<boolean>(false).withSetter(),\n displayHeader: prop<boolean>(false).withSetter(),\n displayFooter: prop<boolean>(false).withSetter(),\n socketUrl: prop<string>('').withSetter(),\n showCloseButton: prop<boolean>(true).withSetter(),\n showHeader: prop<boolean>(true).withSetter(),\n showMessageInput: prop<boolean>(true).withSetter(),\n showOpenInPopupButton: prop<boolean>(false).withSetter(),\n showPolls: prop<boolean>(true).withSetter(),\n}) {\n @modelAction\n setAll({\n createChannelAllowed = false,\n accessUnregisteredUsers = false,\n accessChatGuest = false,\n accessRegister = false,\n displayDirect = false,\n displayUserList = false,\n displayChannelList = false,\n displaySystemMessages = false,\n displayHeader = false,\n displayFooter = false,\n socketUrl,\n }: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Record<string, any>): void {\n this.createChannelAllowed = createChannelAllowed;\n this.accessRegister = accessRegister;\n this.accessChatGuest = accessChatGuest;\n this.accessUnregisteredUsers = accessUnregisteredUsers;\n this.displayDirect = displayDirect;\n this.displayUserList = displayUserList;\n this.displayChannelList = displayChannelList;\n this.displaySystemMessages = displaySystemMessages;\n this.displayHeader = displayHeader;\n this.displayFooter = displayFooter;\n this.socketUrl = socketUrl;\n }\n\n @computed\n get authMode(): number {\n const modeTree = {\n 0: {\n // accessRegister === false\n 0: {\n // accessUnregisteredUsers === false\n 0: AuthModeEnum.Mode1,\n 1: AuthModeEnum.Mode2, // accessChatGuest === true\n },\n 1: {\n // accessUnregisteredUsers === true\n 0: AuthModeEnum.Mode3,\n 1: AuthModeEnum.Mode4, // accessChatGuest === true\n },\n },\n 1: {\n // accessRegister === true\n 0: {\n // accessUnregisteredUsers === false\n 0: AuthModeEnum.Mode5,\n 1: AuthModeEnum.Mode6, // accessChatGuest === true\n },\n 1: {\n // accessUnregisteredUsers === true\n 0: AuthModeEnum.Mode7,\n 1: AuthModeEnum.Mode8, // accessChatGuest === true\n },\n },\n };\n\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return modeTree[+this.accessRegister][+this.accessUnregisteredUsers][+this.accessChatGuest];\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"centrifuge\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/typeof\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"serialize-error\");","import eventBus from 'utils/eventBus';\nimport { serializeError } from 'serialize-error';\n\nimport { EventBusEventEnum, ListenerEventEnum } from 'utils/eventBus/types';\n\nimport { LogRecordMeta, LogToRemotePayload } from './types';\n\ntype LogLevel = 'error' | 'warn' | 'info' | 'debug';\n\nconst knownLogLevels = new Set<LogLevel>(['debug', 'info', 'warn', 'error']);\n\nexport const castToKnownLogLevel = (\n level: string,\n fallbackLevel: LogLevel = 'warn',\n): LogLevel => {\n if (knownLogLevels.has(level as LogLevel)) {\n return level as LogLevel;\n }\n\n return fallbackLevel;\n};\n\nclass Logger {\n\n constructor() {\n\n }\n\n debug(message: string, meta?: LogRecordMeta): void {\n this.sendLogEvent({ level: 'debug', message, meta });\n }\n\n info(message: string, meta?: LogRecordMeta): void {\n this.sendLogEvent({ level: 'info', message, meta });\n }\n\n warn(message: string, meta?: LogRecordMeta): void {\n this.sendLogEvent({ level: 'warn', message, meta });\n }\n\n error(message: string, meta?: LogRecordMeta): void {\n this.sendLogEvent({ level: 'error', message, meta });\n }\n\n sendLogEvent(payload: LogToRemotePayload) {\n const { meta } = payload;\n const { error } = meta || {};\n const data = {\n ...payload,\n meta: {\n ...payload.meta,\n ...(Boolean(error) && (\n typeof error === 'object' ? { error: serializeError(error) } : {}\n ))\n }\n }\n\n eventBus.emit(ListenerEventEnum.App, {\n event: EventBusEventEnum.ChatLog,\n data: payload,\n });\n }\n}\n\nconst logger = new Logger();\n\nexport default logger;\n","import { GET } from 'api';\nimport { Root } from 'keystone';\nimport User from 'keystone/chat/user';\nimport * as Sentry from '@sentry/react';\nimport { IRChannel } from 'types/serverResponses';\nimport logger from 'utils/logger';\n\nexport const getDirectsList = async (root: Root) => {\n try {\n const directs = (await GET('channels/directs')) as IRChannel[];\n root.chat.addChannels(directs);\n } catch (error) {\n logger.error('Failed to get directs list', {case: 'getDirectsList', error });\n Sentry.captureException(error, (scope) => scope.setTransactionName('get direct list'));\n }\n};\n\nexport const getDirectChannelName = (root: Root, channelId: string): string => {\n const ch = root.chat.channels.get(channelId);\n\n const meId = root.auth.me.id;\n\n const chatWithUser = ch?.directUsersOnly.find((u) => +u.id !== +meId);\n\n return chatWithUser?.displayName || chatWithUser?.username || '';\n};\n\nexport const getDirectChannelList = (root: Root): string[] =>\n root.chat.directChannelsList.map((ch) => getDirectChannelName(root, ch.id));\n\nexport const getChatWithUser = (root: Root, channelId: string): User | undefined => {\n const ch = root.chat.channels.get(channelId);\n const meId = root.auth.me.id;\n\n return ch?.directUsersOnly.find((u) => +u.id !== +meId);\n};\n","import * as Sentry from '@sentry/react';\nimport { DELETE, GET, POST, PATCH } from 'api';\nimport { Root } from 'keystone';\nimport { IRPinnedMessage } from 'types/serverResponses';\nimport { IChannelSettings } from 'types/types';\nimport logger from 'utils/logger';\n\nexport const getPinnedMessages = async (root: Root, channelId: string): Promise<void> => {\n const channel = root.chat.channels.get(channelId);\n try {\n const response = (await GET(`messages-pinned/channel/${channelId}`)) as IRPinnedMessage[];\n channel?.setPinnedMessages(response);\n } catch (error) {\n logger.error(\n 'Failed to get pinned messages',\n {\n case: 'getPinnedMessages',\n error,\n channelId\n }\n )\n\n Sentry.captureException(error, (scope) => scope.setTransactionName('getPinnedMessages'));\n channel?.setPinnedMessages([]);\n }\n};\n\nexport const pinMessage = (root: Root, messageId: number): void => {\n try {\n const channelId = Number(root.ui.params.id);\n\n POST(`messages-pinned`, { channelId, messageId });\n } catch (error) {\n logger.error(\n 'Failed to pin messages',\n {\n case: 'pinMessage',\n error,\n messageId\n }\n )\n\n Sentry.captureException(error, (scope) => scope.setTransactionName('pinMessage'));\n }\n};\n\nexport const deletePinnedMessage = (messageId: string): void => {\n try {\n DELETE(`messages-pinned/${+messageId}`);\n } catch (error) {\n logger.error(\n 'Failed to delete pinned message',\n {\n case: 'deletePinnedMessage',\n error,\n messageId\n }\n )\n\n Sentry.captureException(error, (scope) => scope.setTransactionName('deletePinnedMessage'));\n }\n};\n\nexport const deleteMessage = (messageId: number): void => {\n try {\n DELETE(`messages/${+messageId}`);\n } catch (error) {\n logger.error(\n 'Failed to delete message',\n {\n case: 'deleteMessage',\n error,\n messageId\n }\n )\n\n Sentry.captureException(error, (scope) => scope.setTransactionName('deleteMessage'));\n }\n};\n\nexport const deleteAllMessages = (root: Root): void => {\n try {\n const channelId = Number(root.ui.params.id);\n\n DELETE(`messages/channel/${channelId}`);\n } catch (error) {\n logger.error(\n 'Failed to delete all messages',\n {\n case: 'deleteAllMessage',\n error\n }\n )\n\n Sentry.captureException(error, (scope) => scope.setTransactionName('deleteAllMessage'));\n }\n};\n\nexport const muteUser = (userId: string) => {\n try {\n POST(`users/${userId}/mute`);\n } catch (error) {\n logger.error(\n 'Failed to mute user',\n {\n case: 'muteUser',\n error\n }\n )\n\n Sentry.captureException(error, (scope) => scope.setTransactionName('muteUser'));\n }\n}\n\n\nexport const unmuteUser = (userId: string) => {\n try {\n POST(`users/${userId}/unmute`);\n } catch (error) {\n logger.error(\n 'Failed to unmute user',\n {\n case: 'unmuteUser',\n error,\n userId\n }\n )\n\n Sentry.captureException(error, (scope) => scope.setTransactionName('unmuteUser'));\n }\n}\n\nexport const updateSettings = (channelId: string, payload: Partial<IChannelSettings>) => {\n try {\n PATCH(`/channels/${channelId}/settings`, {...payload});\n } catch (error) {\n logger.error(\n 'Failed to update settings',\n {\n case: 'updateSettings',\n error\n }\n )\n\n Sentry.captureException(error, (scope) => scope.setTransactionName('updateSettings'));\n }\n}\n\nexport default {};\n","enum SocketEventsEnum {\n Message = 'message',\n SystemMessage = 'system:message',\n NewPublic = 'new-public',\n NewChannelUser = 'new-channel-user',\n NewDirect = 'new-direct',\n PollStart = 'poll-start',\n PollStop = 'poll-stop',\n PollVoteOpenEnded = 'poll-vote-open-ended',\n PollVotesUpdate = 'poll-votes-update',\n UserUpdateProfile = 'user-update-profile',\n MessagePinned = 'message-pinned',\n DeleteMessages = 'delete-messages',\n CleanChannelMessages = 'clean-channel-messages',\n UserConnected = 'user-connected',\n UserMuted = 'user-muted',\n UserUnmuted = 'user-unmuted',\n UpdateChannelSettings = 'user-update-channel-settings',\n}\n\nexport default SocketEventsEnum;\n","enum Routes {\n Login = 'login',\n Signup = 'signup',\n Profile = 'profile',\n Channels = 'channels',\n Direct = 'direct',\n Users = 'users',\n Polls = 'polls',\n CreatePoll = 'create_poll',\n PollResultDetail = 'poll_result_detail',\n PollResultOpenEndedDetail = 'poll_result_open_ended_detail',\n}\n\nexport default Routes;\n","import { GET, PATCH, POST } from '../api';\nimport Routes from '../routes';\nimport { IRChannel, IRGetInitial, IRLogin, IRUser } from '../types/serverResponses';\nimport eventBus from '../utils/eventBus/eventBus';\nimport { EventBusEventEnum, ListenerEventEnum } from '../utils/eventBus/types';\nimport { Root } from './index';\nimport * as Sentry from '@sentry/react';\nimport logger from 'utils/logger';\n\nexport const getInitialData = async (root: Root): Promise<void> => {\n try {\n const initial = (await GET(`get-initial`)) as IRGetInitial;\n const { publics, user, channels } = initial;\n root.chat.addUsers([user]);\n root.chat.addChannels(channels);\n root.chat.addPubs(publics);\n root.auth.setMe(user);\n user.lang && root.ui.setLang(user.lang);\n } catch (error) {\n logger.error('Failed to get initial data', {case: 'getInitialData', error, appId: root.auth.appId });\n Sentry.captureException(error, (scope) => scope.setTransactionName('getInitialData'));\n throw(error);\n }\n};\n\nexport const login = async (root: Root, username: string, password?: string): Promise<void> => {\n try {\n const response = (await POST(`login`, {\n app_id: root.auth.appId,\n username,\n password,\n })) as IRLogin;\n root.auth.setAccessToken(response.access_token);\n } catch (error) {\n logger.error('Failed to login', {case: 'login', error, appId: root.auth.appId });\n Sentry.captureException(error, (scope) => scope.setTransactionName('login'));\n }\n};\n\nexport const signup = async (root: Root, username: string, password?: string): Promise<void> => {\n try {\n const response = (await POST(`signup`, {\n app_id: root.auth.appId,\n username,\n password,\n })) as IRLogin;\n root.auth.setAccessToken(response.access_token);\n } catch (error) {\n logger.error('Failed to signup', {case: 'signup', error, appId: root.auth.appId });\n Sentry.captureException(error, (scope) => scope.setTransactionName('signup'));\n }\n};\n\nexport const saveProfile = async (root: Root, displayName: string, avatar?: string): Promise<void> => {\n const sendData: { displayName?: string; avatarUrl?: string } = {};\n if (displayName) {\n sendData.displayName = displayName;\n }\n\n if (avatar) {\n sendData.avatarUrl = avatar;\n }\n try {\n const user = (await PATCH(`profile`, sendData)) as IRUser;\n root.auth.setMe(user);\n } catch (error) {\n logger.error('Failed to save profile', {case: 'saveProfile', error, displayName, avatar });\n Sentry.captureException(error, (scope) => scope.setTransactionName('save profile'));\n }\n};\n\nexport const joinChannel = async (root: Root, id: string): Promise<void> => {\n if (!root.chat.channels.has(id)) {\n try {\n const response = (await POST(`channels/join`, { id })) as IRChannel;\n if (root.chat.pubs.has(id)) {\n root.chat.pubs.delete(id);\n }\n\n root.chat.addChannels([response]);\n } catch (error) {\n logger.error('Failed to join channel', {case: 'joinChannel', error, channelId: id, appId: root.auth.appId });\n Sentry.captureException(error, (scope) => scope.setTransactionName('join channel'));\n }\n }\n};\n\nexport const joinChannelByExternalId = async (root: Root, externalId: string): Promise<void> => {\n const found = root.chat.channelsList.find((item) => item.externalId === externalId);\n\n if (found) {\n root.ui.setRoute(`${Routes.Channels}/${found.id}`);\n return;\n }\n\n try {\n const response = (await POST(`channels/join-external/${externalId}`)) as IRChannel;\n root.chat.pubs.delete(response.id);\n root.chat.addChannels([response]);\n root.ui.setRoute(`${Routes.Channels}/${response.id}`);\n\n } catch (error) {\n logger.error('Failed to join channel by external id', {\n case: 'joinChannelByExternalId',\n error,\n externalId,\n appId: root.auth.appId\n });\n Sentry.captureException(error, (scope) => scope.setTransactionName('joinChannelByExternalId'));\n throw(error);\n }\n};\n\nexport const fetchMessagesBefore = async (\n root: Root,\n channelId: number,\n messageId: number,\n options?: { limit?: number; until?: number },\n): Promise<number> => {\n const { limit, until } = options || {};\n try {\n const response = (await GET(`channels/${channelId}/messages`, {\n before: messageId,\n limit,\n until,\n })) as any;\n const channel = root.chat.channels.get(String(channelId));\n if (!channel) {\n logger.error('Failed to fetch messages, no channel', {case: 'fetchMessagesBefore', channelId, appId: root.auth.appId });\n return 0;\n }\n\n const message = channel.messages.get(String(messageId));\n if (message) {\n return channel.addMessages(response);\n }\n } catch (error) {\n logger.error('Failed to fetch messages', {case: 'fetchMessagesBefore', error, channelId, appId: root.auth.appId });\n Sentry.captureException(error, (scope) => scope.setTransactionName('fetch messages'));\n }\n\n return 0;\n};\n\nexport const redirectToInitial = (root: Root): Promise<void> | void => {\n if (root.ui.channelId) {\n return joinChannelByExternalId(root, root.ui.channelId);\n }\n\n return root.ui.setRoute(Routes.Channels);\n};\n\nconst parseForCommands = (root: Root, text: string) => {\n switch (text) {\n case '/reset': {\n root.reset();\n break;\n }\n default:\n return false;\n }\n\n return true;\n};\n\nexport const sendMessage = async (root: Root, channelId: string, text: string): Promise<void> => {\n if (parseForCommands(root, text)) {\n return;\n }\n\n try {\n await POST(`messages/send`, { channelId, text });\n eventBus.emit(ListenerEventEnum.App, {\n event: EventBusEventEnum.MessageSent,\n data: {\n message: text,\n },\n });\n } catch (error) {\n logger.error('Failed to send message', {case: 'sendMessage', error, channelId, appId: root.auth.appId });\n Sentry.captureException(error, (scope) => scope.setTransactionName('sendMessage'));\n }\n};\n\nexport const getSettings = async (root: Root, appId: string): Promise<Record<string, unknown> | null> => {\n try {\n const settings = (await GET(`applications/${appId}/settings`)) as Record<string, unknown>;\n root.settings.setAll(settings);\n return settings;\n } catch (error) {\n logger.error('Failed to get settings', {case: 'getSettings', error, appId });\n Sentry.captureException(error, (scope) => scope.setTransactionName('get settings'));\n root.scheduleReset();\n return null;\n }\n};\n\nexport default {};\n","let counter = 0;\n\nconst registry = new FinalizationRegistry((key) => {\n console.log(`${key} garbage collected`);\n});\n\nconst addWatcher = (object: any, key: string) => {\n counter += 1;\n registry.register(object, `${key}#${counter}`);\n}\n\nexport default addWatcher;","import { Centrifuge } from 'centrifuge';\nimport * as Sentry from '@sentry/react';\nimport { getDirectsList } from 'components/DirectList/service';\nimport { getPinnedMessages } from 'containers/ChannelPage/service';\nimport { observable, runInAction } from 'mobx';\nimport { getRoot, model, Model, prop } from 'mobx-keystone';\nimport { chunkProcessor, IDisposer } from 'mobx-utils';\nimport { IRChannel, IRChannelMessage, IRUser, ISEMessage, ISEPollVotesUpdate } from 'types/serverResponses';\nimport { IServerPoll, IServerPollVotesUser } from '../containers/CreatePollPage/types';\nimport { Root } from '.';\nimport SocketEventsEnum from '../types/socketEvents';\nimport { convertServerPollToModel } from '../utils/common';\nimport { joinChannel } from './service';\nimport { UserRoleEnum } from 'types/enums';\nimport addWatcher from 'utils/registry';\nimport { GET } from 'api';\nimport { IChannelSettings } from 'types/types';\nimport logger from 'utils/logger';\n\n// has \"Store\" in name to not confuse with Socket instance\n@model('SocketStore')\nexport default class SocketStore extends Model({\n isSocketConnected: prop<boolean>(false).withSetter(),\n}) {\n @observable messageChunk: { channelId: string; message: IRChannelMessage }[] = [];\n\n messageRate = 0;\n\n centrifuge?: Centrifuge;\n\n private startMessageProcessing(): IDisposer {\n const root: Root = getRoot(this);\n const processMessages = (chunk: { channelId: string; message: IRChannelMessage }[]) => {\n const messagesByChannels = new Map<string, IRChannelMessage[]>();\n\n chunk.forEach(({ channelId, message }) => {\n if (!messagesByChannels.has(channelId)) {\n messagesByChannels.set(channelId, []);\n }\n\n messagesByChannels.get(channelId)?.push(message);\n });\n\n messagesByChannels.forEach((messages, channelId) => {\n const channel = root.chat.channels.get(channelId);\n if (channel) {\n channel.addMessages(messages);\n }\n });\n };\n\n return chunkProcessor(\n this.messageChunk,\n (chunk) => {\n try {\n processMessages(chunk);\n } catch (error) {\n logger.error(\n 'Failed to process messages',\n {\n case: 'chunkProcessor',\n error\n }\n );\n\n Sentry.captureException(error, (scope) => scope.setTransactionName('chunkProcessor'));\n }\n },\n 300, // ms\n 1000, // size\n );\n }\n\n onAttachedToRootStore(): () => void {\n const messageProcessingDisposer = this.startMessageProcessing();\n\n const messageRateInterval = setInterval(() => {\n // TODO remove. for debug in production environments\n (window as any).chatRate = this.messageRate;\n\n this.messageRate = 0;\n }, 1000);\n\n return () => {\n messageProcessingDisposer();\n clearInterval(messageRateInterval);\n };\n }\n\n connect(socketUrl: string): void {\n const root: Root = getRoot(this);\n\n const onMessage = ({ channelId, message }: ISEMessage) => {\n this.messageRate += 1;\n runInAction(() => this.messageChunk.push({ channelId, message }));\n };\n\n const onNewDirect = async (channel: IRChannel): Promise<void> => {\n await joinChannel(root, channel.id);\n getDirectsList(root);\n };\n\n const onPollStart = (poll: IServerPoll & { channelId: number }) => {\n const channel = root.chat.channels.get(`${poll.channelId}`);\n if (!channel) {\n logger.error('Failed to start poll, no channel', {case: 'onPollStart' });\n return;\n };\n\n const pollModel = channel.addPoll(poll);\n channel.startPoll(pollModel);\n };\n\n const onPollStop = (poll: IServerPoll & { channelId: number }) => {\n const channel = root.chat.channels.get(`${poll.channelId}`);\n if (!channel) {\n logger.error('Failed to stop poll, no channel', {case: 'onPollStop' });\n return;\n };\n\n channel.stopPoll(convertServerPollToModel(poll));\n };\n\n const onPollVotesUpdate = (data: ISEPollVotesUpdate) => {\n const { channelId, options, pollId, timestamp } = data;\n const channel = root.chat.channels.get(`${channelId}`);\n if (!channel) {\n logger.error('Failed to update votes, no channel', {case: 'onPollVotesUpdate' });\n return;\n };\n\n channel.updateVotesCounter(pollId, options, timestamp);\n };\n\n const onPollVoteOpenEnded = (data: {\n id: number;\n channelId: number;\n pollId: number;\n answer: string;\n user: IServerPollVotesUser;\n }) => {\n const { id, answer, channelId, pollId, user } = data;\n const channel = root.chat.channels.get(`${channelId}`);\n if (!channel) {\n logger.error('Failed to update votes, no channel', {case: 'onPollVoteOpenEnded' });\n return;\n };\n\n const poll = channel.findPollById(String(pollId));\n if (!poll) {\n logger.error('Failed to update votes, no poll', {case: 'onPollVoteOpenEnded' });\n return;\n };\n\n poll.addVote({ id, answer, user });\n };\n\n const onMessagePinned = (data: { channelId: string }) => {\n const { channelId } = data;\n getPinnedMessages(root, channelId);\n };\n\n const onMessagesDelete = (data: { ids: number[]; channelId: number }) => {\n try {\n const { channelId, ids } = data;\n const channel = root.chat.channels.get(`${channelId}`);\n channel?.deleteMessages(ids);\n } catch (error) {\n logger.error('Failed to delete messages', {case: 'onMessagesDelete' });\n Sentry.captureException(error, (scope) => scope.setTransactionName('onMessagesDelete'));\n }\n };\n\n const onCleanChannelMessages = (data: { channelId: number }) => {\n const { channelId } = data;\n const channel = root.chat.channels.get(`${channelId}`);\n channel?.cleanAllMessages();\n };\n\n const onUpdateProfile = (payload: {\n displayName?: string;\n avatarUrl?: string;\n userId: number;\n lang?: string;\n role?: UserRoleEnum;\n }) => {\n const { displayName, avatarUrl, userId, lang, role } = payload;\n if (lang && +root.auth.me.id === +userId) {\n root.ui.setLang(lang);\n }\n role && root.auth.setMe({ ...root.auth.me, role });\n return root.chat.updateUser({ userId, displayName, avatarUrl, role });\n };\n\n const onUserConnected = (payload: { user: IRUser }) => {\n const { user } = payload;\n root.chat.addUsers([user]);\n };\n\n const onUserMuted = (payload: { userId: number }) => {\n const { userId } = payload;\n root.chat.mute(userId);\n };\n\n const onUserUnmuted = (payload: { userId: number }) => {\n const { userId } = payload;\n root.chat.unmute(userId);\n };\n\n const onUpdateChannelSettings = (payload: {channelId: number, settings: IChannelSettings}) => {\n const channel = root.chat.channels.get(`${payload.channelId}`);\n channel?.setSettings(payload.settings)\n }\n\n this.centrifuge = new Centrifuge(`${socketUrl}?cf_protocol_version=v2`, {\n getToken: async () => {\n try {\n const result = (await GET(`centrifuge-token`)) as { token: string };\n\n return result?.token || '';\n } catch (error) {\n logger.error('Failed to get centrifuge token', {case: 'getToken' });\n Sentry.captureException(error, (scope) => scope.setTransactionName('getToken'));\n throw(error)\n }\n },\n debug: true,\n });\n addWatcher(this.centrifuge, `centrifuge`);\n\n this.centrifuge.on('connected', () => {\n this.setIsSocketConnected(true);\n });\n\n this.centrifuge.on('disconnected', (ctx) => {\n this.setIsSocketConnected(false);\n });\n\n this.centrifuge.on('error', (ctx) => {\n logger.error(\n 'Chat centrifuge error',\n {\n case: 'chat centrifuge error handler',\n error: ctx.error,\n type: ctx.type\n }\n );\n })\n\n this.centrifuge.on('publication', (ctx) => {\n const { event, payload } = ctx.data;\n\n switch (event) {\n case SocketEventsEnum.SystemMessage:\n case SocketEventsEnum.Message:\n onMessage(payload);\n break;\n case SocketEventsEnum.NewDirect:\n onNewDirect(payload);\n break;\n case SocketEventsEnum.PollStart:\n onPollStart(payload);\n break;\n case SocketEventsEnum.PollStop:\n onPollStop(payload);\n break;\n case SocketEventsEnum.PollVoteOpenEnded:\n onPollVoteOpenEnded(payload);\n break;\n case SocketEventsEnum.PollVotesUpdate:\n onPollVotesUpdate(payload);\n break;\n case SocketEventsEnum.UserUpdateProfile:\n onUpdateProfile(payload);\n break;\n case SocketEventsEnum.MessagePinned:\n onMessagePinned(payload);\n break;\n case SocketEventsEnum.DeleteMessages:\n onMessagesDelete(payload);\n break;\n case SocketEventsEnum.CleanChannelMessages:\n onCleanChannelMessages(payload);\n break;\n case SocketEventsEnum.UserConnected:\n onUserConnected(payload);\n break;\n case SocketEventsEnum.UserMuted:\n onUserMuted(payload);\n break;\n case SocketEventsEnum.UserUnmuted:\n onUserUnmuted(payload);\n break;\n case SocketEventsEnum.UpdateChannelSettings:\n onUpdateChannelSettings(payload)\n break;\n default:\n }\n });\n\n this.centrifuge.connect();\n }\n}\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"ua-parser-js\");","import { Model, model, modelAction, prop } from 'mobx-keystone';\nimport { isMobile } from 'utils/browser';\nimport { ChatVisualState } from 'types/enums';\n\ninterface IParams {\n id?: string; // channel id - wrong place,\n pollId?: string; // poll id - wrong place,\n [key: string]: unknown;\n}\n\n@model('UI')\nexport default class UI extends Model({\n route: prop<string>(''),\n channelId: prop<string>('').withSetter(),\n lang: prop<string>(navigator.language.toLowerCase().includes('ru') ? 'ru' : 'en').withSetter(),\n params: prop<IParams>(() => ({})).withSetter(),\n isMobile: prop<boolean>(isMobile()),\n chatVisualState: prop<ChatVisualState>(ChatVisualState.Hidden).withSetter(),\n}) {\n jumpToMessage: (index: number) => void = () => undefined;\n\n setJumpToMessage(handler: (index: number) => void): void {\n this.jumpToMessage = handler;\n }\n\n routeHistory: string[] = [];\n\n @modelAction\n setRoute(route: string): void {\n this.route = route;\n this.routeHistory.unshift(route);\n }\n\n @modelAction\n back(): void {\n this.routeHistory.shift();\n [this.route] = this.routeHistory;\n }\n}\n","import UAParser from 'ua-parser-js';\n\nexport const isMobile = () => {\n const ua = new UAParser();\n return ua.getDevice().type === 'mobile';\n}","import { computed } from 'mobx';\nimport { isRootStore, model, Model, modelAction, prop, registerRootStore, unregisterRootStore } from 'mobx-keystone';\nimport { createContext, useContext } from 'react';\nimport Auth from './auth';\nimport Chat from './chat';\nimport Settings from './settings';\nimport SocketStore from './socket';\nimport UI from './ui';\n\n@model('Root')\nexport class Root extends Model({\n chat: prop<Chat>(() => new Chat({})),\n auth: prop<Auth>(() => new Auth({})),\n socket: prop<SocketStore>(() => new SocketStore({})),\n ui: prop<UI>(() => new UI({})),\n settings: prop<Settings>(() => new Settings({})),\n toggleReset: prop<boolean>(false),\n}) {\n resetCounter: number = 0;\n \n @computed\n get currentChannel() {\n return this.chat.channels.get(this.ui.params.id as string);\n }\n\n @modelAction\n reset() {\n this.toggleReset = !this.toggleReset;\n }\n\n @modelAction\n scheduleReset() {\n const timeout = this.resetCounter * 1000;\n this.resetCounter += 1;\n\n console.log(`Scheduling chat reset in ${timeout}ms`);\n setTimeout(() => {\n this.reset();\n }, timeout);\n }\n\n @modelAction\n init() {\n console.log('Chat initialization. Reseting stores');\n\n if (isRootStore(this)) {\n unregisterRootStore(this);\n }\n\n this.chat = new Chat({});\n this.auth = new Auth({});\n this.socket.centrifuge?.removeAllListeners();\n this.socket.centrifuge?.disconnect();\n this.socket = new SocketStore({});\n this.ui = new UI({});\n this.settings = new Settings({});\n registerRootStore(this);\n }\n}\n\nconst rootStore = new Root({});\nconst context = createContext(rootStore);\nconst useKeystone = (): Root => useContext(context);\n\nexport default useKeystone;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/styles/createTheme\");","import PTRootBoldWoff2 from './fonts/PT-Root-UI_Bold.woff2';\nimport PTRootMediumWoff2 from './fonts/PT-Root-UI_Medium.woff2';\nimport PTRootRegularWoff2 from './fonts/PT-Root-UI_Regular.woff2';\nimport { COLOURS } from './consts';\n\nexport default {\n styleOverrides: `\n @font-face {\n font-family: 'PTRootUIWebMedium';\n src: local('Raleway'),local('Raleway-Regular'),url(${PTRootMediumWoff2}) format('woff2');\n }\n @font-face {\n font-family: 'PTRootUIWebRegular';\n src:\n local('Raleway'),\n local('Raleway-Regular'),\n url(${PTRootRegularWoff2}) format('woff2');\n }\n @font-face {\n font-family: 'PTRootUIWebBold';\n src:\n local('Raleway'),\n local('Raleway-Regular'),\n url(${PTRootBoldWoff2}) format('woff2');\n }\n\n a {\n color: inherit\n }\n\n html {\n letter-spacing: 0.01em;\n * {\n box-sizing: border-box;\n }\n *:after { box-sizing: border-box };\n *:before { box-sizing: border-box };\n *:focus {\n outline: none;\n }\n }\n\n hr {\n width: inherit;\n margin: 16px 0;\n border: none;\n border-bottom: solid 1px;\n border-bottom-color: ${COLOURS.SECONDARY_02};\n }\n\n /* Works on Firefox */\n * {\n scrollbar-width: thin;\n scrollbar-color: #fff #DEE3E7;\n }\n\n /* Works on Chrome, Edge, and Safari */\n *::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n }\n\n *::-webkit-scrollbar-thumb {\n background-color: #DEE3E7;\n border-radius: 50px;\n\n }\n `,\n};\n","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,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\"","export default \"data:font/woff2;base64,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\"","export const Colors = {\n \"--ld-bg\": \"#FFFFFF\",\n \"--ld-primary\": \"#060A2D\",\n \"--ld-contrast\": \"#FFFFFF\",\n \"--ld-primaryTransparency\": \"#1d1d2cb3\",\n \"--ld-secondaryBase\": \"#5C5D6C\",\n \"--ld-secondary01\": \"#F1F1F4\",\n \"--ld-secondary02\": \"#D4D5DE\",\n \"--ld-secondary03\": \"#B7B9C9\",\n \"--ld-accentBase\": \"#163498\",\n \"--ld-accent01\": \"#E8EBF5\",\n \"--ld-accent02\": \"#D0D6EA\",\n \"--ld-accent03\": \"#8A99CB\",\n \"--ld-accent04\": \"#5C71B7\",\n \"--ld-accent05\": \"#1A2657\",\n \"--ld-tertiaryBase\": \"#1399FA\",\n \"--ld-tertiary01\": \"#E7F5FE\",\n \"--ld-errorBase\": \"#E11D08\",\n \"--ld-error01\": \"#FCE5E2\",\n \"--ld-error02\": \"#F07D70\",\n \"--ld-error03\": \"#921003\",\n \"--ld-error04\": \"#5F0A01\",\n \"--ld-successBase\": \"#06AA2A\",\n \"--ld-success01\": \"#CDEED4\",\n \"--ld-success02\": \"#9BDDAA\",\n \"--ld-success03\": \"#026F1A\",\n \"--ld-warningBase\": \"#FF9900\",\n \"--ld-warning01\": \"#FFF4E5\",\n \"--ld-warning02\": \"#FFD495\",\n \"--ld-warning03\": \"#765128\",\n \"--ld-purpleBase\": \"#C0437F\",\n \"--ld-purprle01\": \"#F2D9E5\",\n \"--ld-purprle02\": \"#DFA1BF\",\n \"--ld-purprle03\": \"#8C315D\",\n \"--ld-avatarBurgundy\": \"#6B0C22\",\n \"--ld-avatarRed\": \"#D9042B\",\n \"--ld-avatarDarkPink\": \"#C0437F\",\n \"--ld-avatarPink\": \"#D792D8\",\n \"--ld-avatarGold\": \"#E2B978\",\n \"--ld-avatarNavyGreen\": \"#588C8C\",\n \"--ld-avatarNavyBlue\": \"#66588C\",\n \"--ld-avatarPurple\": \"#5E0C6B\",\n}","export const Colors = {\n \"--ld-bg\": \"#1D1D2C\",\n \"--ld-primary\": \"#FFFFFF\",\n \"--ld-contrast\": \"#FFFFFF\",\n \"--ld-primaryTransparency\": \"#1d1d2cb3\",\n \"--ld-secondaryBase\": \"#F1F1F4\",\n \"--ld-secondary01\": \"#343643\",\n \"--ld-secondary02\": \"#525566\",\n \"--ld-secondary03\": \"#7F8290\",\n \"--ld-accentBase\": \"#1D51FE\",\n \"--ld-accent01\": \"#1A2657\",\n \"--ld-accent02\": \"#6185FE\",\n \"--ld-accent03\": \"#A5B9FF\",\n \"--ld-accent04\": \"#D2DCFF\",\n \"--ld-accent05\": \"#E8EEFF\",\n \"--ld-tertiaryBase\": \"#1399FA\",\n \"--ld-tertiary01\": \"#1B3655\",\n \"--ld-errorBase\": \"#E11D08\",\n \"--ld-error01\": \"#5F0A01\",\n \"--ld-error02\": \"#921003\",\n \"--ld-error03\": \"#F07D70\",\n \"--ld-error04\": \"#FCE5E2\",\n \"--ld-successBase\": \"#06AA2A\",\n \"--ld-success01\": \"#1F5D2F\",\n \"--ld-success02\": \"#9BDDAA\",\n \"--ld-success03\": \"#CDEED4\",\n \"--ld-warningBase\": \"#FC9E22\",\n \"--ld-warning01\": \"#765128\",\n \"--ld-warning02\": \"#FFD495\",\n \"--ld-warning03\": \"#FFF4E5\",\n \"--ld-purpleBase\": \"#C0437F\",\n \"--ld-purprle01\": \"#8C315D\",\n \"--ld-purprle02\": \"#DFA1BF\",\n \"--ld-purprle03\": \"#F2D9E5\",\n \"--ld-avatarBurgundy\": \"#991131\",\n \"--ld-avatarRed\": \"#D9042B\",\n \"--ld-avatarDarkPink\": \"#C0437F\",\n \"--ld-avatarPink\": \"#D792D8\",\n \"--ld-avatarGold\": \"#E2B978\",\n \"--ld-avatarNavyGreen\": \"#588C8C\",\n \"--ld-avatarNavyBlue\": \"#8875BA\",\n \"--ld-avatarPurple\": \"#871199\",\n};","import createTheme from '@mui/material/styles/createTheme';\n\nimport { COLOURS, zINDEX } from './consts';\nimport MuiCssBaseline from './muicssbaseline';\nimport { Colors as LightThemeColors } from './light'\nimport { Colors as DarkThemeColors } from './dark'\nimport { AppTheme } from 'types/types';\n\nconst palette = {\n text: {\n primary: COLOURS.PRIMARY,\n secondary01: COLOURS.SECONDARY_01,\n secondary03: COLOURS.SECONDARY_03,\n black02: COLOURS.BLACK_02,\n secondary: COLOURS.SECONDARY,\n light02: COLOURS.LIGHT_02,\n secondary6: COLOURS.BLACK_06,\n white: COLOURS.WHITE,\n black: COLOURS.BLACK,\n pollPrimary: COLOURS.POLL_TEXT_PRIMARY,\n pollSecondary: COLOURS.POLL_TEXT_SECONDARY,\n error: COLOURS.ERROR,\n },\n primary: {\n main: '#6185FE',\n },\n};\n\nconst typography = {\n fontFamily: 'PTRootUIWebMedium',\n h1: {\n fontFamily: 'PTRootUIWebBold',\n fontSize: 40,\n lineHeight: '50px',\n letterSpacing: '0.01em',\n margin: 0,\n },\n h2: {\n fontFamily: 'PTRootUIWebBold',\n fontSize: 22,\n lineHeight: '28px',\n fontWeight: 700,\n },\n h3: {\n fontFamily: 'PTRootUIWebBold',\n fontSize: 18,\n lineHeight: '20px',\n fontWeight: 700,\n },\n h4: {\n fontFamily: 'PTRootUIWebBold',\n fontSize: 16,\n lineHeight: '20px',\n },\n body1: {\n fontSize: 16,\n lineHeight: '20px',\n },\n body2: {\n fontSize: 14,\n lineHeight: '16px',\n },\n subtitle1: {\n fontFamily: 'PTRootUIWebBold',\n fontSize: 14,\n },\n subtitle2: {\n fontSize: 13,\n lineHeight: '16px',\n },\n};\nconst themeOptions = {\n palette,\n typography,\n spacing: 4,\n components: {\n MuiCheckbox: {\n styleOverrides: {\n root: {\n '&.Mui-checked': {\n color: 'unset',\n },\n },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n popper: {\n zIndex: zINDEX.TOOLTIP_POPPER,\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n rounded: {\n borderRadius: 10,\n },\n },\n },\n MuiCard: {\n styleOverrides: {\n root: {\n overflow: 'visible',\n },\n },\n },\n MuiCardHeader: {\n styleOverrides: {\n root: {\n wordBreak: 'break-word' as const,\n padding: 0,\n marginBottom: 12,\n },\n },\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: 0,\n '&:last-child': { paddingBottom: 0 },\n },\n },\n },\n MuiMenuItem: {\n styleOverrides: {\n root: {\n boxShadow: 'none!important',\n },\n },\n },\n MuiButtonBase: {\n defaultProps: {\n disableRipple: true,\n },\n },\n MuiSwitch: {\n styleOverrides: {\n switchBase: {\n // Controls default (unchecked) color for the thumb\n color: COLOURS.BG\n },\n colorPrimary: {\n \"&.Mui-checked\": {\n // Controls checked color for the thumb\n color: COLOURS.ACCENT\n }\n },\n }\n },\n MuiCssBaseline,\n },\n};\n\nexport const getThemeColors = (theme?: AppTheme) => {\n if (theme === 'light') {\n return LightThemeColors;\n }\n\n if (theme === 'dark') {\n return DarkThemeColors;\n }\n\n /* use ld colors if available, otherwise fallback to light theme */\n const primaryColor = getComputedStyle(document.documentElement)\n .getPropertyValue('--ld-primary');\n\n return primaryColor ? {} : LightThemeColors;\n}\n\nexport default createTheme(themeOptions);\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/styles/makeStyles\");","import makeStyles from '@mui/styles/makeStyles';\n\nexport default makeStyles(\n {\n root: {\n textAlign: 'center',\n fontSize: 10,\n opacity: .5,\n },\n },\n { name: 'LoadingStatus' },\n);\n","import React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport useStyles from './styles';\n\ninterface ILoadingStatus {\n intlId: string;\n}\n\nconst LoadingStatus: FC<ILoadingStatus> = (props) => {\n const { intlId } = props;\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n <FormattedMessage id={intlId} />\n </div>\n );\n};\n\nexport default LoadingStatus;\n","import en from './en';\nimport ru from './ru';\n\nexport default { en, ru }\n","export default {\n muteUser: \"Mute user\",\n unmuteUser: \"Unmute user\",\n loadingSocket: \"Connecting websocket...\",\n loadingInitial: \"Loading messages...\",\n loadingSettings: \"Loading global settings...\",\n globalError: \"Something went wrong\",\n messageInputPlaceholder: \"Enter your message\",\n channelName: \"Channel name\",\n newChannel: \"New channel\",\n create: \"Create\",\n send: \"Send\",\n loginAsGuest: \"Login as guest\",\n enter: \"Enter\",\n enterYourName: \"Enter your name\",\n enterTheChat: \"Enter the chat\",\n chat: \"Chat\",\n or: \"or\",\n login: \"Login\",\n signIn: \"Sign in\",\n signInTheChat: \"Sign in the chat\",\n dontHaveAccount: \"Don't have an account?\",\n signUp: \"Sign up\",\n enterPassword: \"Enter password\",\n signUpInTheChat: \"Sign up in the chat\",\n alreadyHaveAccount: \"Already have an account?\",\n name: \"Name\",\n password: \"Password\",\n createAccount: \"Create an account\",\n polls: \"Polls\",\n poll: \"Poll\",\n test: \"Test\",\n profile: \"Profile\",\n users: \"Users\",\n createNewChannel: \"Create a new channel\",\n pollQuestion: \"Poll question\",\n enterYourQuestion: \"Enter your question\",\n pollWithCorrectAnswer: \"Choice poll\",\n pollOptions: \"Poll options\",\n enterOption: \"Enter option\",\n createPoll: \"Create Poll\",\n addOption: \"+ Add option\",\n startPoll: \"Start poll\",\n completePoll: \"Complete poll\",\n seeResults: \"See results\",\n deletePoll: \"Delete poll\",\n newPoll: \"+ New poll\",\n reply: \"Reply\",\n username: \"Username\",\n avatar: \"Avatar\",\n avatarUrl: \"Avatar URL\",\n save: \"Save\",\n search: \"Search\",\n loading: \"Loading\",\n userList: \"User list\",\n channels: \"Channels\",\n direct: \"Direct\",\n questionNotBeEmpty: \"Question couldn't be empty\",\n questionValidateLongerLetters: \"Question must be longer than {length} letters\",\n questionValidateWriteLeastTwoAnswerOptions: \"Write at least two answer options\",\n questionValidateLeastOneCorrectAnswer: \"Choose at least one correct answer\",\n questionValidateCorrectAnswerNotEmpty: \"Correct answer couldn't be empty\",\n questionValidateNotLongerLetters: \"Question couldn't be longer then {length} letters\",\n joined: \"joined\",\n channelCreated: \"Channel created\",\n pinMessage: \"Pin message\",\n deleteMessage: \"Delete message\",\n deleteAllMessage: \"Delete all messages\",\n systemMessageChangedName: \"changed name to\",\n systemMessageUserChangedChannelName: \"changed channel name to\",\n selectPollType: \"Select poll type: \",\n multipleAnswerOptions: \"Multiple answer options\",\n pollOpenEnded: \"Open ended\",\n thanks: \"Thanks!\",\n answerAccepted: \"Your answer has been accepted\",\n listEmpty: \"The list is empty\",\n results: \"Results\",\n systemMessageChangedChannelName: \"changed channel name to\",\n menuDirect: \"Direct\",\n pollValidateAnswerLongerLetters: \"Answer must be longer than {length} letters\",\n pollValidateAnswerNotLongerLetters: \"Answer couldn't be longer then {length} letters\",\n restart: \"Restart\",\n edit: \"Edit\",\n delete: \"Delete\",\n templates: \"Templates\",\n join: \"Join\",\n addOptionsNumber: \"You can add {number} more options\",\n pollAnswers: \"{number, plural, =1 {# answer} other {# answers}}\",\n yourReply: \"Your reply\",\n pollResults: \"Result Poll\",\n done: \"Done\",\n in_progress: \"In Progress\",\n new: \"Template\",\n areYouSure: \"Are you sure?\",\n anotherPollInProgress: \"Another poll is still in progress. Start this one anyway?\",\n time: {\n dayBefore: \"The day before\",\n yesterday: \"Yesterday\",\n today: \"Today\",\n },\n settings: {\n settings: \"Settings\",\n slowMode: \"Limit messages rate\",\n slowModePeriod: \"Time between messages\",\n seconds: \"seconds\",\n forbidLinks: \"Forbid links in messages\",\n linkRemoved: \"Link removed\",\n timeLimit1: \"Time limit set by administrator\",\n timeLimit2: \"You can send a message in {countDown, plural, one {# second} other {# seconds}}\",\n },\n clearChat: \"Clear chat\",\n numberOfResponses: {\n title: \"Number of responses\",\n one: \"One\",\n several: \"Several\",\n },\n badge: {\n role: {\n admin: \"Administrator\",\n },\n },\n}\n","export default {\n muteUser: \"Заблокировать пользователя\",\n unmuteUser: \"Разблокировать пользователя\",\n loadingSocket: \"Подключение к вебсокету...\",\n loadingInitial: \"Загружаются сообщения...\",\n loadingSettings: \"Загружаются глобальные настройки...\",\n globalError: \"Что-то пошло не так\",\n messageInputPlaceholder: \"Введите сообщение\",\n channelName: \"Название канала\",\n newChannel: \"Новый канал\",\n create: \"Создать\",\n send: \"Отправить\",\n loginAsGuest: \"Войти как гость\",\n enter: \"Войти\",\n enterYourName: \"Введите свое имя\",\n enterTheChat: \"Войдите в чат\",\n or: \"или\",\n chat: \"Чат\",\n login: \"Вход в систему\",\n signIn: \"Войти\",\n signInTheChat: \"Войти чат\",\n dontHaveAccount: \"У вас нет аккаунта?\",\n signUp: \"Зарегистрироваться\",\n enterPassword: \"Введите пароль\",\n signUpInTheChat: \"Зарегистрироваться в чате\",\n alreadyHaveAccount: \"У вас уже есть аккаунт?\",\n name: \"Имя\",\n password: \"Пароль\",\n createAccount: \"Создать учетную запись\",\n polls: \"Опросы\",\n poll: \"Опрос\",\n profile: \"Профиль\",\n users: \"Пользователи\",\n createNewChannel: \"Создать новый канал\",\n pollQuestion: \"Вопрос для голосования\",\n enterYourQuestion: \"Введите вопрос\",\n pollWithCorrectAnswer: \"Один правильный ответ\",\n pollOptions: \"Варианты опроса\",\n enterOption: \"Введите вариант\",\n createPoll: \"Создать опрос\",\n addOption: \"+ Добавить вариант\",\n startPoll: \"Начать опрос\",\n completePoll: \"Завершить опрос\",\n seeResults: \"Посмотреть результаты\",\n newPoll: \"+ Новый опрос\",\n reply: \"Ответить\",\n username: \"Имя пользователя\",\n avatar: \"Аватар\",\n avatarUrl: \"URL-адрес аватара\",\n save: \"Сохранить\",\n search: \"Поиск\",\n loading: \"Загрузка\",\n userList: \"Список пользователей\",\n channels: \"Каналы\",\n direct: \"Директ\",\n questionNotBeEmpty: \"Вопрос не может быть пустым\",\n questionValidateLongerLetters: \"Вопрос должен быть длиннее {length} символов\",\n questionValidateWriteLeastTwoAnswerOptions: \"Напишите не менее двух вариантов ответа\",\n questionValidateLeastOneCorrectAnswer: \"Выберите хотя бы один правильный ответ\",\n questionValidateCorrectAnswerNotEmpty: \"Правильный ответ не может быть пустым\",\n questionValidateNotLongerLetters: \"Вопрос не может быть длиннее {length} символов\",\n joined: \"присоединился\",\n channelCreated: \"Канал создан\",\n pinMessage: \"Закрепить\",\n deleteMessage: \"Удалить сообщение\",\n deleteAllMessage: \"Удалить все сообщения\",\n systemMessageChangedName: \"изменил имя на\",\n systemMessageUserChangedChannelName: \"изменил название канала на\",\n selectPollType: \"Выберите тип опроса: \",\n multipleAnswerOptions: \"Несколько вариантов ответа\",\n pollOpenEnded: \"Свободный ответ\",\n test: \"Тест\",\n thanks: \"Спасибо!\",\n answerAccepted: \"Ваш ответ принят\",\n listEmpty: \"Список пуст\",\n results: \"Результаты\",\n systemMessageChangedChannelName: \"изменено название канала на\",\n menuDirect: \"Директ\",\n pollValidateAnswerLongerLetters: \"Минимальная длина ответа: {length}\",\n pollValidateAnswerNotLongerLetters: \"Максимальная длина ответа: {length}\",\n restart: \"Перезапустить\",\n edit: \"Редактировать\",\n delete: \"Удалить\",\n templates: \"Шаблоны\",\n join: \"Присоединиться\",\n addOptionsNumber: \"Вы можете добавить еще {number, plural, =5 {# опций} =4 {# опции} one {# опцию} other {# опции}}\",\n pollAnswers: \"{number, plural, =1 {# ответ} =2 {# ответа} =3 {# ответа} =4 {# ответа} other {# ответов}}\",\n yourReply: \"Ваш ответ\",\n pollResults: \"Результат голосования\",\n done: \"Завершен\",\n in_progress: \"Запущен\",\n new: \"Черновик\",\n areYouSure: \"Вы уверены?\",\n anotherPollInProgress: \"Другое голосование в этом канале сейчас запущено. Запустить это все равно?\",\n time: {\n dayBefore: \"Позавчера\",\n yesterday: \"Вчера\",\n today: \"Сегодня\",\n },\n settings: {\n settings: \"Настройки\",\n slowMode: \"Ограничение частоты сообщений\",\n slowModePeriod: \"Интервал времени между сообщениями\",\n seconds: \"секунд\",\n forbidLinks: \"Запрещение прикрепления ссылок для пользователя\",\n linkRemoved: \"Ссылка удалена\",\n timeLimit1: \"Отправка сообщений ограничена\",\n timeLimit2: \"Вы сможете отправить через {countDown, plural, one {# секунду} few {# секунды} many {# секунд} other {# секунд}}\",\n },\n clearChat: \"Очистить чат\",\n numberOfResponses: {\n title: \"Количество ответов\",\n one: \"Один\",\n several: \"Несколько\",\n },\n badge: {\n role: {\n admin: \"Администратор\",\n },\n },\n}\n","import React, { FunctionComponent } from 'react'\nimport * as Sentry from '@sentry/react';\nimport { observer } from 'mobx-react-lite';\n\nimport logger from 'utils/logger';\nimport eventBus from 'utils/eventBus/eventBus';\nimport { ChatErrorCode, EventBusEventEnum, ListenerEventEnum } from 'utils/eventBus/types';\n\n\nconst ErrorBoundary: FunctionComponent = observer(({children}) => {\n const handleBoundaryError = (error: unknown) => {\n logger.error('Chat Error', {error, case: 'Unhandled boundary error'})\n eventBus.emit(ListenerEventEnum.App, {\n event: EventBusEventEnum.ChatError,\n data: {\n message: 'Unhandled error',\n severity: 'critical',\n code: ChatErrorCode.UnhandledError\n }\n });\n }\n\n return (\n /* Error boundary must be at root, fallback is untranslated to catch errors from IntlProvider too */\n <Sentry.ErrorBoundary\n fallback={<span>Failed to load chat</span>}\n onError={handleBoundaryError}\n >\n {children}\n </Sentry.ErrorBoundary>\n )\n})\n\nexport default ErrorBoundary;","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Grid\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Typography\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/extends\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@babel/runtime/helpers/objectWithoutProperties\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/system/Box\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/system/colorManipulator\");","import Typography from '@mui/material/Typography';\nimport Box, { BoxProps } from '@mui/system/Box';\nimport { alpha } from '@mui/system/colorManipulator';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { COLOURS } from 'theme/consts';\nimport { IPollStatus } from 'types/types';\n\ninterface IProps extends BoxProps {\n status?: IPollStatus;\n}\n\nconst getBadgeColor = (status?: IPollStatus) => {\n switch (status) {\n case IPollStatus.New:\n return COLOURS.BLUE;\n case IPollStatus.InProgress:\n return COLOURS.ORANGE;\n case IPollStatus.Done:\n return COLOURS.GREEN;\n default:\n return '';\n }\n};\nconst PollStatusBadge: React.FC<IProps> = (props) => {\n const { status, ...rest } = props;\n const mainColor = getBadgeColor(status);\n return (\n <Box display=\"inline-block\" padding=\"4px 8px\" bgcolor={alpha(mainColor, 0.1)} borderRadius=\"2px\" {...rest}>\n <Typography variant=\"subtitle2\" color={mainColor}>\n <FormattedMessage id={status} />\n </Typography>\n </Box>\n );\n};\n\nexport default PollStatusBadge;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/IconButton\");","import React, { CSSProperties, ReactElement } from 'react';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = COLOURS.ACCENT_04, width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M3 8C2.44772 8 2 8.44772 2 9C2 9.55229 2.44772 10 3 10L9 10C9.13559 10 9.26488 9.97302 9.38278 9.92412C9.50073 9.87532 9.61123 9.80298 9.70711 9.70711C9.80298 9.61123 9.87532 9.50073 9.92412 9.38278C9.97302 9.26488 10 9.13559 10 9L10 3C10 2.44772 9.55228 2 9 2C8.44771 2 8 2.44772 8 3V6.58579L4.41421 3C4.02369 2.60948 3.39053 2.60948 3 3C2.60948 3.39053 2.60948 4.02369 3 4.41422L6.58578 8H3Z\" fill={fill} />\n <path d=\"M21 16C21.5523 16 22 15.5523 22 15C22 14.4477 21.5523 14 21 14L15 14C14.8644 14 14.7351 14.027 14.6172 14.0759C14.4993 14.1247 14.3888 14.197 14.2929 14.2929C14.197 14.3888 14.1247 14.4993 14.0759 14.6172C14.027 14.7351 14 14.8644 14 15L14 21C14 21.5523 14.4477 22 15 22C15.5523 22 16 21.5523 16 21V17.4142L19.5858 21C19.9763 21.3905 20.6095 21.3905 21 21C21.3905 20.6095 21.3905 19.9763 21 19.5858L17.4142 16H21Z\" fill={fill} />\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = COLOURS.ACCENT_04, width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M3 6C3 4.34315 4.34315 3 6 3L11 3C11.5523 3 12 3.44772 12 4C12 4.55228 11.5523 5 11 5L6 5C5.44772 5 5 5.44772 5 6L5 18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V13C19 12.4477 19.4477 12 20 12C20.5523 12 21 12.4477 21 13V18C21 19.6569 19.6569 21 18 21H6C4.34315 21 3 19.6569 3 18L3 6Z\" fill={fill} />\n <path d=\"M21 7.5C21 8.05228 20.5523 8.5 20 8.5C19.4477 8.5 19 8.05228 19 7.5V6.41424L11.4142 13.9477C11.0237 14.3382 10.3905 14.3382 10 13.9477C9.60948 13.5572 9.60948 12.924 10 12.5335L17.5858 5H16.5C15.9477 5 15.5 4.55229 15.5 4C15.5 3.44772 15.9477 3 16.5 3L20 3C20.5523 3 21 3.44772 21 4V7.5Z\" fill={fill} />\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = COLOURS.ACCENT_04, width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M10 3C10 3.55229 9.55228 4 9 4L5.41421 4L9 7.58579C9.39052 7.97631 9.39052 8.60948 9 9C8.60948 9.39053 7.97631 9.39053 7.58579 9L4 5.41422V9C4 9.55229 3.55229 10 3 10C2.44772 10 2 9.55229 2 9V3C2 2.86441 2.02699 2.73512 2.07588 2.61722C2.12468 2.49927 2.19702 2.38877 2.29289 2.29289C2.38877 2.19702 2.49927 2.12468 2.61722 2.07588C2.73512 2.02699 2.86441 2 3 2H9C9.55228 2 10 2.44772 10 3Z\" fill={fill}/>\n <path d=\"M14 21C14 20.4477 14.4477 20 15 20H18.5858L15 16.4142C14.6095 16.0237 14.6095 15.3905 15 15C15.3905 14.6095 16.0237 14.6095 16.4142 15L20 18.5858L20 15C20 14.4477 20.4477 14 21 14C21.5523 14 22 14.4477 22 15L22 20.998V21L21.9999 21.017L21.9992 21.0411C21.9943 21.1608 21.9684 21.2752 21.9251 21.3805C21.8774 21.4966 21.8069 21.6055 21.7137 21.7005L21.7071 21.7071L21.7005 21.7137C21.6055 21.8069 21.4966 21.8774 21.3805 21.9251C21.2818 21.9657 21.1752 21.991 21.0636 21.998L21.0515 21.9987C21.0395 21.9993 21.0275 21.9997 21.0154 21.9999L21 22H20.998H15C14.4477 22 14 21.5523 14 21Z\" fill={fill}/>\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = COLOURS.ACCENT_04, width = 8, height = 16, style } = props;\n\n return (\n <>\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 8 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.75924 14.3492C8.11866 14.7685 8.0701 15.3998 7.65077\n 15.7592C7.23145 16.1187 6.60015 16.0701 6.24073 15.6508L0.240743 8.65079C-0.0802476 8.2763\n -0.0802476 7.7237 0.240743 7.34921L6.24073 0.349226C6.60015 -0.0700989 7.23145 -0.11866 7.65077\n 0.240761C8.0701 0.600182 8.11866 1.23148 7.75924 1.65081L2.31707 8L7.75924 14.3492Z\"\n fill={fill}\n />\n </svg>\n </>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = COLOURS.ACCENT_04, width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M5.75249 4.30068C5.35158 3.89978 4.70159 3.89978 4.30069 4.30068C3.89978 4.70158 3.89978 5.35157 4.30069 5.75248L10.5482 12L4.30068 18.2475C3.89977 18.6484 3.89977 19.2984 4.30068 19.6993C4.70158 20.1002 5.35157 20.1002 5.75248 19.6993L12 13.4518L18.2475 19.6993C18.6484 20.1002 19.2984 20.1002 19.6993 19.6993C20.1002 19.2984 20.1002 18.6484 19.6993 18.2475L13.4518 12L19.6993 5.75248C20.1002 5.35157 20.1002 4.70158 19.6993 4.30068C19.2984 3.89977 18.6484 3.89977 18.2475 4.30068L12 10.5482L5.75249 4.30068Z\" fill={fill} />\n </svg>\n );\n};\n","import { COLOURS } from 'theme/consts';\n\nexport const button = {\n padding: '6px',\n borderRadius: '10px',\n backgroundColor: COLOURS.ACCENT_01,\n color: COLOURS.ACCENT_04,\n fontFamily: 'PTRootUIWebBold',\n fontSize: '16px',\n lineHeight: '20px',\n transition: 'opacity 0.3s, background-color 0.3s, color 0.1s',\n '&:hover': {\n backgroundColor: COLOURS.ACCENT_01,\n },\n '&:active': {\n backgroundColor: COLOURS.ACCENT_02,\n },\n '&:disabled': {\n backgroundColor: COLOURS.SECONDARY_01,\n color: COLOURS.SECONDARY_03,\n svg: {\n color: 'currentColor',\n }\n },\n '& > svg': {\n transition: 'color 0.1s',\n },\n '&:disabled > svg': {\n color: COLOURS.SECONDARY_03,\n },\n};\n\nexport const errorButton = {\n ...button,\n color: COLOURS.ERROR_04,\n '&:not(disabled) > svg': {\n color: COLOURS.ERROR,\n },\n '&:not(:disabled):hover': {\n backgroundColor: COLOURS.ERROR_02,\n '& > svg': {\n color: COLOURS.ERROR_03,\n }\n },\n '&:not(:disabled):hover:active': {\n color: COLOURS.CONTRAST,\n backgroundColor: COLOURS.ERROR,\n '& > svg': {\n color: COLOURS.CONTRAST,\n }\n },\n}\n\nexport const buttonPrimary = {\n ...button,\n color: COLOURS.CONTRAST,\n backgroundColor: COLOURS.ACCENT,\n '&:hover': {\n color: COLOURS.CONTRAST,\n backgroundColor: COLOURS.ACCENT_05,\n '& > svg': {\n color: COLOURS.ACCENT_01,\n }\n },\n '&:active': {\n color: COLOURS.CONTRAST,\n backgroundColor: COLOURS.ACCENT_03,\n },\n '& > svg': {\n color: COLOURS.CONTRAST,\n },\n '&:hover > svg': {\n color: COLOURS.CONTRAST,\n },\n '&:active > svg' : {\n color: COLOURS.CONTRAST,\n },\n}\n\nexport const buttonOutlined = {\n ...button,\n backgroundColor: 'inherit',\n}\n\nexport const buttonWithText = {\n ...button,\n '& > svg': {\n marginRight: 6,\n }\n}\n\nexport const input = {\n boxSizing: 'content-box' as const,\n fontFamily: 'PTRootUIWebMedium',\n fontSize: '16px',\n lineHeight: '20px',\n color: COLOURS.PRIMARY,\n backgroundColor: COLOURS.BG,\n borderColor: COLOURS.BG,\n transition: 'border-color 0.3s, color 0.3s',\n '&:hover': {\n borderColor: COLOURS.SECONDARY_01,\n },\n '&:focus': {\n borderColor: COLOURS.ACCENT,\n },\n '&::placeholder': {\n fontFamily: 'PTRootUIWebMedium',\n fontSize: '16px',\n lineHeight: '20px',\n transition: 'color 0.3s',\n color: COLOURS.SECONDARY_03,\n },\n '&:hover::placeholder': {\n color: COLOURS.SECONDARY\n },\n '&::-webkit-scrollbar-track': {\n margin: '10px 0',\n }\n}\n\nexport const label = {\n color: COLOURS.SECONDARY,\n '&.Mui-focused': {\n color: COLOURS.SECONDARY,\n }\n};\n\nexport const radio = {\n height: 24,\n margin: '4px 0',\n '&+.MuiFormControlLabel-label': {\n color: COLOURS.SECONDARY,\n },\n '&.Mui-checked': {\n color: COLOURS.ACCENT,\n }\n}\n\nexport const toggler = {\n width: 44,\n height: 24,\n padding: 0,\n borderRadius: 12,\n marginLeft: 'auto',\n marginRight: 12,\n '& .MuiSwitch-switchBase': {\n padding: 0,\n },\n '& .Mui-checked': {\n '& .MuiSwitch-thumb': {\n backgroundColor: COLOURS.BG,\n },\n '&+.MuiSwitch-track': {\n backgroundColor: COLOURS.ACCENT,\n opacity: 1,\n border: 0,\n },\n },\n '& .MuiSwitch-thumb': {\n boxSizing: 'border-box',\n width: 16,\n height: 16,\n marginLeft: 4,\n marginTop: 4,\n },\n '& .MuiSwitch-track': {\n backgroundColor: COLOURS.SECONDARY_03,\n opacity: 1,\n border: 0,\n },\n '&:hover .MuiSwitch-track': {\n backgroundColor: COLOURS.SECONDARY,\n },\n}\n","import makeStyles from '@mui/styles/makeStyles';\n\nimport { button } from 'theme/styles';\nimport { COLOURS, HEADER_HEIGHT } from 'theme/consts';\n\nexport const styles = {\n root: {\n flexWrap: 'nowrap',\n height: HEADER_HEIGHT,\n minHeight: HEADER_HEIGHT,\n padding: '16px',\n borderBottom: `1px solid ${COLOURS.SECONDARY_02}`,\n alignItems: 'center',\n },\n backButton: {\n width: '32px',\n height: '32px',\n borderRadius: '10px',\n marginRight:'8px',\n },\n button: {\n ...button,\n borderRadius: '10px',\n backgroundColor: 'inherit',\n },\n buttonsHolder: {\n marginLeft: 'auto',\n '& > button + button': {\n marginLeft: 4,\n },\n },\n buttons: {\n marginLeft: 'auto',\n }\n} as const;\n\nexport default makeStyles(styles);\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS, HEADER_MOBILE_HEIGHT } from 'theme/consts';\nimport { styles } from './styles';\n\nexport default makeStyles({\n ...styles,\n root: {\n ...styles.root,\n height: HEADER_MOBILE_HEIGHT,\n minHeight: HEADER_MOBILE_HEIGHT,\n padding: '8px 16px',\n },\n button: {\n ...styles.button,\n },\n buttonsHolder: {\n ...styles.buttonsHolder,\n },\n});\n","import React, { FC } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport IconButton from '@mui/material/IconButton';\nimport Grid from '@mui/material/Grid';\n\nimport useKeystone from 'keystone';\nimport eventBus from 'utils/eventBus';\nimport { ChatVisualState } from 'types/enums';\nimport ZoomInIcon from 'ui-kit/icons/ZoomInIcon';\nimport InPageIcon from 'ui-kit/icons/InPageIcon';\nimport ZoomOutIcon from 'ui-kit/icons/ZoomOutIcon';\nimport ChevronLeftIcon from 'ui-kit/icons/ChevronLeftIcon';\nimport CloseRegularIcon from 'ui-kit/icons/CloseRegularIcon';\nimport { EventBusEventEnum, ListenerEventEnum } from 'utils/eventBus/types';\n\nimport useStyles from './styles';\nimport useMobileStyles from './styles.mobile';\n\ninterface ISubHeader {\n onBack?: () => void;\n}\n\nconst SubHeader: FC<ISubHeader> = (props) => {\n const { children, onBack } = props;\n const { settings, ui: { isMobile, chatVisualState } } = useKeystone();\n\n const classes = isMobile ? useMobileStyles() : useStyles();\n\n const onClose = () => {\n eventBus.emit(ListenerEventEnum.App, {\n event: EventBusEventEnum.ChatClose,\n });\n };\n\n const onOpenInPopupButton = () => {\n eventBus.emit(ListenerEventEnum.App, {\n event: EventBusEventEnum.OpenInPopup,\n });\n };\n\n const onExpand = () => {\n eventBus.emit(ListenerEventEnum.App, {\n event: EventBusEventEnum.ChatExpand,\n });\n };\n\n if (!settings.showHeader) {\n return null;\n }\n\n\n return (\n <Grid\n container\n className={classes.root}\n data-qa=\"sub-header\"\n >\n {onBack && (\n <IconButton onClick={onBack} className={classes.backButton} >\n <ChevronLeftIcon />\n </IconButton>\n )}\n {children}\n <div className={classes.buttonsHolder}>\n {(isMobile && chatVisualState !== ChatVisualState.Hidden) && (\n <IconButton className={classes.button} onClick={onExpand} sx={{marginLeft: 'auto'}}>\n {chatVisualState === ChatVisualState.Expand ? <ZoomOutIcon /> : <ZoomInIcon />}\n </IconButton>)\n }\n {settings.showOpenInPopupButton && (\n <IconButton className={classes.button} onClick={onOpenInPopupButton} data-qa=\"open-in-popup-button\">\n <InPageIcon />\n </IconButton>\n )}\n {settings.showCloseButton && (\n <IconButton\n className={classes.button}\n onClick={onClose}\n data-qa=\"close-chat-button\"\n >\n <CloseRegularIcon />\n </IconButton>\n )}\n </div>\n </Grid>\n );\n};\n\nexport default observer(SubHeader);\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"classnames\");","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport const styles = {\n root: {\n color: COLOURS.PRIMARY,\n display: 'flex',\n alignItems: 'center',\n columnGap: 4,\n cursor: 'pointer',\n },\n active: {\n fontFamily: 'PTRootUIWebMedium',\n backgroundColor: COLOURS.ACCENT_05,\n padding: '12px 14px',\n borderRadius: '10px',\n color: COLOURS.ACCENT_01,\n },\n} as const;\n\nexport default makeStyles(styles);\n","import makeStyles from '@mui/styles/makeStyles';\nimport { styles } from './styles';\n\nexport default makeStyles({\n ...styles,\n active: {\n ...styles.active,\n padding: '6px 8px',\n }\n});\n","import Typography from '@mui/material/Typography';\nimport AvatarMUI from '@mui/material/Avatar';\nimport React, { FC } from 'react';\nimport { AvatarColorEnum, COLOURS } from 'theme/consts';\nimport { getLeadingLetters } from 'utils/helper';\nimport useStyles from './styles';\n\nexport enum Size {\n lg = 32,\n sm = 24,\n}\n\nexport interface IProps {\n src?: string;\n name?: string;\n size: keyof typeof Size;\n onClick?: () => void;\n avatarColor?: AvatarColorEnum;\n}\n\nconst Avatar: FC<IProps> = (props) => {\n const { src, onClick, name, avatarColor = AvatarColorEnum.AVATAR1_BURGUNDY } = props;\n const classes = useStyles(props);\n\n return (\n <AvatarMUI\n alt={name}\n src={src}\n className={classes.avatar}\n onClick={onClick}\n sx={{ bgcolor: src ? 'inherit' : COLOURS[avatarColor] }}\n >\n <Typography variant=\"h4\" sx={{ textTransform: 'uppercase' }}>\n {name && getLeadingLetters(name)}\n </Typography>\n </AvatarMUI>\n );\n};\n\nexport default Avatar;\n","import React, { FC } from 'react';\nimport cls from 'classnames';\nimport { observer } from 'mobx-react-lite';\nimport Typography from '@mui/material/Typography';\n\nimport useStyles from './styles';\nimport useKeystone from 'keystone';\nimport useMobileStyles from './styles.mobile';\n\ninterface IProps {\n title?: string | React.ReactNode;\n active?: boolean;\n color?: string;\n sx?: Record<string, string>;\n}\n\nconst HeaderTitle: FC<IProps> = (props) => {\n const { title, active, children, color } = props;\n const { ui: { isMobile }} = useKeystone();\n const classes = isMobile ? useMobileStyles() : useStyles();\n\n return (\n <Typography\n variant=\"h4\"\n color={color}\n noWrap\n className={cls(classes.root, {[classes.active]: active})}\n >\n {title || children}\n </Typography>\n );\n};\n\nexport default observer(HeaderTitle);\n","import { AxiosError } from 'axios';\nimport Channel from 'keystone/chat/channel';\nimport Poll from 'keystone/chat/poll';\nimport { DELETE, GET, POST } from '../../api';\nimport { IServerPoll } from '../CreatePollPage/types';\nimport * as Sentry from '@sentry/react';\nimport logger from 'utils/logger';\n\nexport const getPollListForChannel = async (channelId?: string): Promise<IServerPoll[] | undefined> => {\n try {\n return (await GET(`polls?channelId=${channelId}`)) as Promise<IServerPoll[]>;\n } catch (error) {\n logger.error('Failed to fetch polls', {case: 'getPollListForChannel', error, channelId})\n Sentry.captureException(error, (scope) => scope.setTransactionName('get poll list'));\n }\n};\n\nexport const getPollById = async (pollId: number): Promise<IServerPoll | undefined> => {\n try {\n return (await GET(`polls/${pollId}`)) as Promise<IServerPoll>;\n } catch (error) {\n logger.error('Failed to fetch poll', {case: 'getPollById', error, pollId})\n Sentry.captureException(error, (scope) => scope.setTransactionName('get poll by id'));\n }\n};\n\nexport const deletePoll = async (pollId: number): Promise<boolean> => {\n try {\n await DELETE(`polls/${pollId}`);\n return true;\n } catch (error) {\n logger.error('Failed to delete poll', {case: 'deletePoll', error, pollId})\n Sentry.captureException(error, (scope) => scope.setTransactionName('delete poll'));\n return false;\n }\n};\n\nexport const startPoll = async (pollId?: string): Promise<IServerPoll | undefined> => {\n try {\n if (!pollId) {\n throw new Error('No poll id');\n }\n\n return (await POST(`polls/${pollId}/start`)) as Promise<IServerPoll>;\n } catch (error) {\n logger.error('Failed to start poll', {case: 'startPoll', error, pollId})\n Sentry.captureException(error, (scope) => scope.setTransactionName('start poll'));\n }\n};\n\nexport const stopPoll = async (pollId?: string): Promise<IServerPoll | undefined> => {\n try {\n if (!pollId) {\n throw new Error('No poll id');\n }\n\n return (await POST(`polls/${pollId}/stop`)) as Promise<IServerPoll>;\n } catch (error) {\n logger.error('Failed to stop poll', {case: 'stopPoll', error, pollId})\n Sentry.captureException(error, (scope) => scope.setTransactionName('stop poll'));\n }\n};\n\ninterface IOnPollEnd {\n activePoll?: Poll;\n channel?: Channel;\n defaultErrorAction?: () => void;\n}\nexport const onPollEndHandler = async (props: IOnPollEnd) => {\n const { activePoll, channel, defaultErrorAction } = props;\n if (!activePoll || !channel) return;\n\n try {\n await stopPoll(activePoll?.id);\n channel?.stopPoll(activePoll);\n } catch (e) { /* TBD: this wont catch anything, since stopPoll is not rethrowing */\n const err = e as AxiosError;\n switch (err?.response?.status) {\n case 409:\n channel?.stopPoll(activePoll);\n break;\n default:\n defaultErrorAction && defaultErrorAction();\n break;\n }\n }\n};\n\ninterface IOnPollStart {\n templatePoll?: Poll;\n channel?: Channel;\n}\n\nexport const onPollStartHandler = (props: IOnPollStart) => {\n const { templatePoll, channel } = props;\n if (!templatePoll || !channel) return;\n\n startPoll(templatePoll?.id);\n};\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport default makeStyles({\n button: {\n display: 'block',\n fontStyle: 'normal',\n fontWeight: 500,\n textAlign: 'center',\n color: '#fff',\n cursor: 'pointer',\n border: 0,\n letterSpacing: '0.01em',\n backgroundColor: 'transparent',\n transition: 'all 0.1s ease-in-out',\n '&:hover': {\n background: COLOURS.LIGHT_03,\n color: COLOURS.BLACK_01,\n },\n },\n large: { height: 48, lineHeight: '48px' },\n medium: { fontSize: 14, lineHeight: '18px', padding: 15 },\n small: {\n fontSize: 10,\n fontWeight: 'bold',\n padding: '0 8px',\n height: 24,\n lineHeight: '24px',\n borderRadius: 4,\n },\n contained: {\n borderRadius: 10,\n background: COLOURS.LIGHT_04,\n color: COLOURS.BLACK_01,\n '&[disabled]': {\n color: COLOURS.LIGHT_02,\n },\n },\n outlined: {\n borderRadius: 10,\n color: COLOURS.BLACK_01,\n fontWeight: 700,\n boxShadow: '0px 0px 18px rgba(0, 0, 0, 0.07)',\n '&:hover': {\n color: COLOURS.BLACK_01,\n },\n '&:active': { transform: 'translateY(1px)', boxShadow: 'none' },\n },\n flatTransparent: {\n borderRadius: 10,\n border: '1px solid #B8B6C2',\n color: COLOURS.BLACK_01,\n '&:hover': {},\n '&:active': {},\n },\n text: {},\n fullWidth: { width: '100%' },\n submit: {\n background: 'radial-gradient(100% 167.95% at 0% 50%, #535FC4 0%, #7D40C8 52.98%, #A836AF 100%);',\n borderRadius: 10,\n fontSize: 14,\n lineHeight: '18px',\n padding: '6px 12px',\n letterSpacing: '0.01em',\n '&:hover': {\n background:\n 'radial-gradient(100% 167.95% at 0% 50%, #535FC4 0%, #535FC4 0.01%, #7D40C8 52.98%, #A836AF 100%);',\n boxShadow: '0px 2px 14px 2px #7918AA',\n },\n '&:active': {\n background:\n 'radial-gradient(100% 167.95% at 0% 50%, #535FC4 0%, #535FC4 0.01%, #7D40C8 52.98%, #A836AF 100%);',\n boxShadow: '0px 2px 14px 2px #7918AA',\n },\n '&[disabled]': {\n background: COLOURS.SURFACE_SECONDARY,\n color: COLOURS.POLL_TEXT_SECONDARY,\n boxShadow: 'none',\n },\n },\n link: {\n color: COLOURS.ACCENT_04,\n background: 'none',\n border: 0,\n padding: 0,\n\n '&:hover, &:focus, &:active, &:active:focus': {\n color: COLOURS.ACCENT_04,\n backgroundColor: 'inherit',\n textDecoration: 'underline',\n },\n\n '&:disabled': {\n color: COLOURS.BLACK_03,\n },\n },\n primary: {\n borderRadius: 10,\n backgroundColor: COLOURS.ACCENT,\n '&:hover': {\n color: COLOURS.ACCENT_01,\n backgroundColor: COLOURS.ACCENT_05,\n },\n '&:active': { transform: 'translateY(1px)', boxShadow: 'none' },\n },\n },\n { name: 'Button' },\n);\n","import cls from 'classnames';\nimport React, { FC, ReactNode } from 'react';\nimport useStyles from './styles';\n\ninterface ButtonProps {\n children: ReactNode;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n fullWidth?: boolean;\n disabled?: boolean;\n variant?: 'contained' | 'text' | 'submit' | 'outlined' | 'flatTransparent' | 'link' | 'primary';\n size?: 'large' | 'medium' | 'small';\n className?: string;\n [prop: string]: unknown;\n}\n\nconst Button: FC<ButtonProps> = (props) => {\n const {\n children,\n onClick,\n fullWidth = false,\n disabled = false,\n variant = 'text',\n size = 'medium',\n className,\n ...other\n } = props;\n const classes = useStyles();\n\n const classList = cls(classes.button, className, classes[variant], classes[size], { [classes.fullWidth]: fullWidth });\n\n return (\n <button type=\"button\" disabled={disabled} onClick={onClick} className={classList} {...other}>\n {children}\n </button>\n );\n};\n\nexport default Button;\n","import Box from '@mui/system/Box';\nimport { onPollEndHandler, onPollStartHandler } from 'containers/PollListPage/services';\nimport Channel from 'keystone/chat/channel';\nimport Poll from 'keystone/chat/poll';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { IPollStatus } from 'types/types';\nimport Button from 'ui-kit/components/Button';\n\ninterface IProps {\n currentChannel?: Channel;\n templatePoll?: Poll;\n activePoll: Poll;\n}\n\nconst ActionButton: React.FC<IProps> = (props) => {\n const {\n activePoll,\n templatePoll,\n currentChannel,\n } = props;\n\n const onPollStart = () => {\n onPollStartHandler({ channel: currentChannel, templatePoll });\n };\n\n const onPollEnd = () => {\n onPollEndHandler({\n activePoll,\n channel: currentChannel,\n });\n };\n\n switch (activePoll.status) {\n case IPollStatus.Done: {\n if (currentChannel?.isPollsInProgress) {\n return null;\n }\n\n return (\n <Box padding=\"12px\">\n <Button variant=\"contained\" fullWidth data-qa=\"startPoll\" onClick={onPollStart}>\n <FormattedMessage id=\"startPoll\" />\n </Button>\n </Box>\n );\n }\n\n case IPollStatus.InProgress:\n return (\n <Box padding=\"12px\">\n <Button variant=\"contained\" fullWidth onClick={onPollEnd} data-qa=\"completePoll\">\n <FormattedMessage id=\"completePoll\" />\n </Button>\n </Box>\n );\n\n default:\n return null;\n }\n};\n\nexport default observer(ActionButton);\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Divider\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Paper\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"date-fns/locale\");","import { differenceInDays, format, isThisYear, isToday, isYesterday, parseISO } from 'date-fns';\nimport { enGB, ru } from 'date-fns/locale';\nimport useKeystone from 'keystone';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport const formatDate = (date?: string | null, formatString: string = 'HH:mm') => {\n const root = useKeystone();\n const { ui } = root;\n\n if (!date) {\n return '';\n }\n\n return format(\n parseISO(date),\n formatString,\n {\n locale: ui.lang === 'ru' ? ru : enGB,\n },\n );\n};\n\nexport const checkDayInterval = (dateLeft: string, dateRight: string) =>\n differenceInDays(parseISO(dateLeft), parseISO(dateRight));\n\nexport const checkDateWhen = (date: string, when: 'today' | 'yesterday' | 'year') => {\n switch (when) {\n case 'today':\n return isToday(parseISO(date));\n case 'yesterday':\n return isYesterday(parseISO(date));\n case 'year':\n return isThisYear(parseISO(date));\n default:\n return false;\n }\n};\n\nexport const getPreparedDate = (date?: string, withToday?: boolean) => {\n if (!date) return null;\n\n if (checkDateWhen(date, 'today')) return withToday ? <FormattedMessage id=\"time.today\" /> : formatDate(date, 'HH:mm');\n if (!checkDateWhen(date, 'year')) return formatDate(date, 'dd MMMM yyyy');\n if (checkDateWhen(date, 'yesterday')) return <FormattedMessage id=\"time.yesterday\" />;\n\n const days = checkDayInterval(date, new Date().toISOString());\n if (days === -2) return <FormattedMessage id=\"time.dayBefore\" />;\n if (days < -2) return formatDate(date, 'dd MMMM');\n\n return formatDate(date, 'HH:mm');\n};\n","import Grid from '@mui/material/Grid';\nimport React from 'react';\n\nconst IOptionRowWrapper: React.FC = (props) => {\n return (\n <Grid container alignItems=\"center\">\n {props.children}\n </Grid>\n );\n};\n\nexport default IOptionRowWrapper;\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport { alpha } from '@mui/system/colorManipulator';\n\nimport { COLOURS } from 'theme/consts';\nimport { IServerPollOption } from 'containers/CreatePollPage/types';\n\nimport IOptionRowWrapper from '../OptionRowWrapper';\n\ninterface IOptionRowProps {\n option: IServerPollOption;\n}\n\nconst IOptionRow: React.FC<IOptionRowProps> = (props) => {\n const { option } = props;\n\n return (\n <IOptionRowWrapper>\n <Grid\n item\n xs\n component={Typography}\n variant=\"subtitle2\"\n color={option.valid ? COLOURS.GREEN : COLOURS.PRIMARY}\n sx={{ wordBreak: 'break-word' }}\n >\n {option.option}\n </Grid>\n <Grid\n item\n component={Typography}\n variant=\"subtitle2\"\n color={option.valid ? COLOURS.GREEN : COLOURS.PRIMARY}\n >\n {option.votesCount}\n </Grid>\n </IOptionRowWrapper>\n );\n};\n\nexport default observer(IOptionRow);\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Avatar\");","import makeStyles from '@mui/styles/makeStyles';\nimport { IProps, Size } from './Avatar';\n\nexport default makeStyles(\n {\n avatar: {\n width: (props: IProps) => Size[props.size],\n height: (props: IProps) => Size[props.size],\n cursor: 'pointer',\n fontSize: 16,\n },\n },\n { name: 'Avatar' },\n);\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/base/InputUnstyled\");","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport default makeStyles(\n {\n checkbox: {\n width: 20,\n height: 20,\n border: `2px solid ${COLOURS.BLACK_03}`,\n borderRadius: 4,\n },\n input: {\n position: 'absolute',\n left: -9999,\n width: 1,\n height: 1,\n '&:checked': {\n '&+ div': {\n backgroundImage: 'url(/ui-kit/assets/icons/icon-checkbox.svg)',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center center',\n border: '0',\n },\n },\n },\n },\n { name: 'Checkbox' },\n);\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/InputAdornment\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/system\");","import { styled, Theme } from '@mui/system';\nimport { COLOURS } from 'theme/consts';\n\nconst StyledInputElement = styled('input')((props: { theme: Theme; error: boolean }) => {\n return `\n padding: 0;\n border: 0;\n padding: 0;\n margin: 0;\n font-weight: 400;\n font-size: 15px;\n line-height: 19px;\n color: ${props.error ? COLOURS.ERROR : COLOURS.PRIMARY};\n background: ${COLOURS.BG};\n font-family: 'PTRootUIWebMedium';\n\n &::placeholder {\n color: ${COLOURS.LIGHT_02};\n }\n\n &:focus {\n border: none;\n outline: none;\n }\n\n &:disabled {\n background: none;\n color: ${COLOURS.LIGHT_02};\n }\n`;\n});\n\nconst textAreaLineHeight = 19;\n\nconst StyledTextareaElement = styled('textarea')((props: { theme: Theme; maxRows: number }) => {\n const { maxRows } = props;\n\n return `\n font-weight: 400;\n font-size: 15px;\n line-height: ${textAreaLineHeight}px;\n color: ${COLOURS.PRIMARY};\n background: ${COLOURS.BG};\n width: 100%;\n border: 0;\n height: ${maxRows ? textAreaLineHeight * maxRows + 'px' : 'auto'};\n resize: none;\n font-family: 'PTRootUIWebMedium';\n\n &::placeholder {\n color: ${COLOURS.LIGHT_02};\n }\n\n &:focus {\n border: none;\n outline: none;\n }\n`;\n});\n\nexport { StyledInputElement, StyledTextareaElement };\n","import InputUnstyled, { InputUnstyledProps } from '@mui/base/InputUnstyled';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport React, { FocusEvent, KeyboardEvent, SyntheticEvent, useMemo, useState } from 'react';\nimport { COLOURS } from 'theme/consts';\n\nimport { StyledInputElement, StyledTextareaElement } from './StyledInput';\n\ninterface IProps extends Omit<InputUnstyledProps, 'onChange'> {\n placeholder?: string;\n onChange?: (v: string) => void;\n onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void;\n className?: string;\n type?: string;\n value?: string;\n id?: string;\n variant?: 'text' | 'outlined';\n size?: 'medium' | 'large';\n fullWidth?: boolean;\n rightIcon?: React.ReactNode;\n inputProps?: Record<string, string | number>;\n errorText?: React.ReactNode | string;\n}\n\nconst CustomInput = React.forwardRef(function CustomInput(props: IProps, ref: React.ForwardedRef<HTMLDivElement>) {\n const {\n onChange,\n rightIcon = null,\n fullWidth,\n inputProps,\n disabled,\n onFocus,\n onBlur,\n error,\n errorText,\n ...rest\n } = props;\n const [focused, setFocused] = useState(false);\n const endAdornment = rightIcon && <InputAdornment position=\"end\">{rightIcon}</InputAdornment>;\n\n const changeHandler = (e: SyntheticEvent<HTMLInputElement> & { target: HTMLInputElement }) => {\n onChange && onChange(e.target.value);\n };\n const onFocusHandler = (e: FocusEvent<HTMLDivElement>) => {\n switch (e.type) {\n case 'focus':\n setFocused(true);\n onFocus && onFocus(e);\n break;\n case 'blur':\n setFocused(false);\n onBlur && onBlur(e);\n break;\n default:\n break;\n }\n };\n\n const padding = props.multiline ? '12px 16px' : '14px 16px';\n\n const borderColor = useMemo(() => {\n if (error) return COLOURS.ERROR;\n return focused ? COLOURS.ACTIVE : COLOURS.LIGHT_01;\n }, [focused]);\n\n return (\n <InputUnstyled\n style={{\n padding,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n border: `1px solid ${COLOURS.SECONDARY_03}`,\n borderRadius: '10px',\n ...(fullWidth && { width: '100%' }),\n background: disabled ? COLOURS.LIGHT_01 : COLOURS.BG,\n }}\n components={{ Input: StyledInputElement, Textarea: StyledTextareaElement }}\n // @ts-ignore\n componentsProps={{ input: { ...inputProps, error } }}\n onChange={changeHandler}\n onFocus={onFocusHandler}\n onBlur={onFocusHandler}\n endAdornment={endAdornment}\n disabled={disabled}\n {...rest}\n ref={ref}\n />\n );\n});\n\nexport default CustomInput;\n","import makeStyles from '@mui/styles/makeStyles';\n\nexport default makeStyles(\n {\n wineLoader: {\n margin: 'auto',\n },\n wineglass: {\n height: 36,\n position: 'relative',\n '&:after': {\n content: \"''\",\n position: 'absolute',\n top: '47px',\n left: '5px',\n width: '20px',\n height: '5px',\n background: 'rgb(65, 56, 56)',\n boxShadow: '0 0 1px white',\n },\n },\n top: {\n background: 'white',\n width: 30,\n height: 36,\n borderRadius: '0 0 36px 36px',\n boxShadow: '0 0 1px white',\n '&:before': {\n animation: 'rotate2 2s linear infinite',\n content: \"''\",\n position: 'absolute',\n left: 4,\n bottom: 4,\n width: 22,\n height: 22,\n borderRadius: '50%',\n background: 'linear-gradient(transparent 50%, #F36E3E 50%)',\n },\n '&:after': {\n content: \"''\",\n position: 'absolute',\n top: '35px',\n left: '12px',\n width: '6px',\n height: '13px',\n background: 'white',\n boxShadow: '0 0 1px white',\n },\n },\n left: {\n display: 'inline-block',\n marginRight: 10,\n animation: 'rotate1 2s cubic-bezier(.39,1.52,.46,.92) infinite',\n },\n right: {\n display: 'inline-block',\n animation: 'rotate2 2s cubic-bezier(.39,1.52,.46,.92) infinite',\n },\n ul: {\n listStyle: 'none',\n margin: 0,\n padding: 0,\n width: 70,\n height: 25,\n position: 'relative',\n opacity: 0,\n animation: '2s fadeInUp infinite linear 2s',\n },\n li: {\n width: 6,\n height: 15,\n background: 'white',\n position: 'absolute',\n boxShadow: '0 0 1px white',\n transformOrigin: 'bottom',\n '&:nth-child(1)': {\n left: '26px',\n bottom: '5px',\n transform: 'rotate(-35deg)',\n },\n '&:nth-child(2)': { left: 34, bottom: 8 },\n '&:nth-child(3)': { left: 42, bottom: 5, transform: 'rotate(35deg)' },\n },\n '@keyframes rotate1': {\n '0%': { transform: 'rotate(0deg)' },\n '50%': { transform: 'rotate(22deg)' },\n },\n '@keyframes rotate2': {\n '0%': { transform: 'rotate(0deg)' },\n '50%': { transform: 'rotate(-22deg)' },\n },\n '@keyframes fadeInUp': {\n '0%': { opacity: 0, transform: 'scaleY(1)' },\n '33%': { opacity: 1, transform: 'scaleY(1.4)' },\n '64%': { opacity: 0.1, transform: 'scaleY(1)' },\n '100%': { opacity: 0, transform: 'scaleY(.3)' },\n },\n },\n { name: 'WineLoader' },\n);\n","import React, { CSSProperties, ReactElement } from 'react';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = '#060A2D', width = 12, height = 12, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1.38462 0C0.623798 0 0 0.603664 0 1.33992V8.48619C0 9.22245 0.623798 9.82611 1.38462 9.82611H5.85937L9.23077 12V9.82611H10.6154C11.3762 9.82611 12 9.22245 12 8.48619V1.33992C12 0.603664 11.3762 0 10.6154 0H1.38462ZM1.38462 0.893283H10.6154C10.875 0.893283 11.0769 1.08869 11.0769 1.33992V8.48619C11.0769 8.73742 10.875 8.93283 10.6154 8.93283H8.30769V10.3321L6.14063 8.93283H1.38462C1.125 8.93283 0.923077 8.73742 0.923077 8.48619V1.33992C0.923077 1.08869 1.125 0.893283 1.38462 0.893283ZM2.76923 2.67985V3.57313H9.23077V2.67985H2.76923ZM2.76923 4.46641V5.3597H9.23077V4.46641H2.76923ZM2.76923 6.25298V7.14626H6.46154V6.25298H2.76923Z\"\n fill={fill}\n />\n </svg>\n );\n};\n","import Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport useKeystone from 'keystone';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport Routes from 'routes';\nimport { Button } from 'ui-kit';\nimport PollMessageIcon from 'ui-kit/icons/PollMessageIcon';\nimport IOptionRowWrapper from '../OptionRowWrapper';\n\ninterface IProps {\n length: number;\n pollId: string;\n}\nconst OptionRowOpenEnded: React.FC<IProps> = (props) => {\n const root = useKeystone();\n const { id } = root.ui.params;\n const { length, pollId } = props;\n\n const goOpenEndedPollDetail = () => {\n root.ui.setRoute(`${Routes.PollResultOpenEndedDetail}/${id}/${pollId}`);\n };\n const disabled = !!length;\n\n return (\n <IOptionRowWrapper>\n <Button variant=\"link\" onClick={goOpenEndedPollDetail} disabled={!disabled}>\n <Grid container wrap=\"nowrap\" alignItems=\"center\" columnGap=\"6px\">\n <PollMessageIcon />\n <Typography variant=\"subtitle2\">\n <FormattedMessage id=\"pollAnswers\" values={{ number: length }} />\n </Typography>\n </Grid>\n </Button>\n </IOptionRowWrapper>\n );\n};\n\nexport default OptionRowOpenEnded;\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport Divider from '@mui/material/Divider';\nimport Grid from '@mui/material/Grid';\nimport Paper from '@mui/material/Paper';\nimport Typography from '@mui/material/Typography';\nimport { alpha } from '@mui/system/colorManipulator';\n\nimport useKeystone from 'keystone';\nimport Poll from 'keystone/chat/poll';\nimport { COLOURS } from 'theme/consts';\nimport { formatDate, getPreparedDate } from 'utils/date';\n\nimport IOptionRow from '../OptionRow';\nimport OptionRowOpenEnded from '../OptionRowOpenEnded';\n\ninterface IProps {\n poll: Poll;\n}\n\nconst PollModeratorResultCard: React.FC<IProps> = (props) => {\n const { poll } = props;\n const root = useKeystone();\n\n /*\n эта бесполезная херь, заставляет тригерится компонент, когда клиент голосует, и мы получаем обновление в channel.polls[idx].votesCount\n я не понимаю как должен работать этот е*ый mobx\n */\n const myVar = root.currentChannel?.getPollList;\n\n return (\n <Grid item width=\"100%\">\n <Paper sx={{ backgroundColor: COLOURS.SECONDARY_01, margin: '0px 12px 13px' }} elevation={0}>\n <Grid container justifyContent=\"space-between\" padding=\"16px 12px\">\n <Typography variant=\"h4\">\n {getPreparedDate(poll.stoppedAt || poll.createdAt, true)}\n </Typography>\n <Typography variant=\"subtitle2\" color={COLOURS.SECONDARY}>\n {formatDate(poll.stoppedAt || poll.createdAt)}\n </Typography>\n </Grid>\n <Divider />\n <Grid item container padding=\"13px 14px\" rowGap={3}>\n {poll.options.map((option) => (\n <IOptionRow key={option.id} option={option} />\n ))}\n\n {poll.isOpenEnded && <OptionRowOpenEnded length={poll.votes?.length || 0} pollId={poll.id} />}\n </Grid>\n </Paper>\n </Grid>\n );\n};\n\nexport default observer(PollModeratorResultCard);\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { FormattedMessage } from 'react-intl';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\n\nimport PollStatusBadge from 'components/PollStatusBadge';\nimport SubHeader from 'components/SubHeader';\nimport useKeystone from 'keystone';\nimport { COLOURS } from 'theme/consts';\nimport HeaderTitle from 'ui-kit/HeaderTitle';\nimport { getPollType } from 'utils/helper';\n\nimport ActionButton from './components/ActionButton';\nimport PollModeratorResultCard from './components/PollModeratorResultCard';\n\nconst PollModeratorResultPage: React.FC = () => {\n const root = useKeystone();\n const { ui } = root;\n\n const currentChannel = root.currentChannel;\n const pollId = ui.params.pollId;\n\n const templatePoll = currentChannel?.findPollById(pollId);\n\n const polls = currentChannel?.getPollListByTemplateId(templatePoll?.id);\n\n const activeOrLastPoll = currentChannel?.getActiveOrLastPollByTemplateId(templatePoll?.id);\n\n if (!activeOrLastPoll) return null;\n\n const { question, status } = activeOrLastPoll;\n\n return (\n <>\n <SubHeader onBack={() => ui.back()}>\n <HeaderTitle>\n <FormattedMessage id=\"chat\" />\n </HeaderTitle>\n </SubHeader>\n <Grid\n container\n direction=\"column\"\n wrap=\"nowrap\"\n overflow=\"auto\"\n height=\"100%\"\n sx={{color: COLOURS.PRIMARY}}\n >\n <Typography variant=\"h2\" marginTop=\"24px\" textAlign=\"center\">\n <FormattedMessage id=\"pollResults\" />\n </Typography>\n <PollStatusBadge status={status} alignSelf=\"start\" marginTop=\"49px\" mb=\"12px\" marginLeft=\"16px\" />\n\n <Typography variant=\"h2\" alignSelf=\"start\" margin=\"0px 20px\" sx={{ wordBreak: 'break-word' }}>\n {question}\n </Typography>\n <Typography\n variant=\"body2\"\n alignSelf=\"start\"\n marginLeft=\"20px\"\n marginTop=\"6px\"\n marginBottom=\"20px\"\n color={COLOURS.SECONDARY}\n >\n <FormattedMessage id={getPollType(activeOrLastPoll)} />\n </Typography>\n\n {polls?.map((poll) => (\n <PollModeratorResultCard key={poll.id} poll={poll} />\n ))}\n </Grid>\n <ActionButton activePoll={activeOrLastPoll} currentChannel={currentChannel} templatePoll={templatePoll} />\n </>\n );\n};\n\nexport default observer(PollModeratorResultPage);\n","import Divider from '@mui/material/Divider';\nimport Grid from '@mui/material/Grid';\nimport Paper from '@mui/material/Paper';\nimport Typography from '@mui/material/Typography';\nimport { alpha } from '@mui/system/colorManipulator';\nimport PollStatusBadge from 'components/PollStatusBadge';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { COLOURS } from 'theme/consts';\nimport { formatDate } from 'utils/date';\nimport { getPollType } from 'utils/helper';\n\nimport SubHeader from '../../components/SubHeader';\nimport useKeystone from '../../keystone';\nimport HeaderTitle from '../../ui-kit/HeaderTitle';\n\nconst PollResultOpenEndedDetailPage: FC = () => {\n const root = useKeystone();\n const { ui } = root;\n\n const pollId = String(ui.params.pollId);\n const currentChannel = root.currentChannel;\n const poll = currentChannel?.findPollById(pollId);\n\n return (\n <>\n <SubHeader onBack={() => ui.back()}>\n <HeaderTitle>\n <FormattedMessage id=\"chat\" />\n </HeaderTitle>\n </SubHeader>\n <Grid container direction=\"column\" overflow=\"auto\" paddingTop=\"24px\" wrap=\"nowrap\">\n <Grid item component={Typography} variant=\"h2\" alignSelf=\"center\">\n <FormattedMessage id=\"pollAnswers\" values={{ number: poll?.votes.length }} />\n </Grid>\n <PollStatusBadge status={poll?.status} alignSelf=\"start\" marginTop=\"49px\" mb=\"12px\" marginLeft=\"16px\" />\n <Typography variant=\"h2\" alignSelf=\"start\" margin=\"0px 20px\" sx={{ wordBreak: 'break-word' }}>\n {poll?.question}\n </Typography>\n <Typography\n variant=\"body2\"\n alignSelf=\"start\"\n color={alpha(COLOURS.BLACK_02, 0.6)}\n marginLeft=\"20px\"\n marginTop=\"6px\"\n marginBottom=\"20px\"\n >\n <FormattedMessage id={getPollType(poll)} />\n </Typography>\n {poll?.votes.map((vote) => (\n <Paper key={vote.id} sx={{ backgroundColor: COLOURS.SECONDARY_01, margin: '0px 12px 13px' }} elevation={0}>\n <Grid container justifyContent=\"space-between\" padding=\"16px 12px\">\n <Typography variant=\"h4\">{vote.user.displayName}</Typography>\n <Typography variant=\"subtitle2\" color={alpha(COLOURS.BLACK_01, 0.5)}>\n {formatDate(poll.stoppedAt || poll.createdAt)}\n </Typography>\n </Grid>\n <Divider />\n <Typography margin=\"12px\" variant=\"subtitle2\">\n {vote.answer}\n </Typography>\n </Paper>\n ))}\n </Grid>\n </>\n );\n};\n\nexport default PollResultOpenEndedDetailPage;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"notistack\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"route-parser\");","import { autorun } from 'mobx';\nimport { observer } from 'mobx-react-lite';\nimport { FC, useEffect, useState } from 'react';\nimport Route from 'route-parser';\nimport useKeystone from '../../keystone';\n\nexport interface IRouterProps {\n route: string;\n children: JSX.Element;\n}\n\nexport const Router: FC<IRouterProps> = observer(({ route, children }) => {\n const { ui } = useKeystone();\n const [isSuccess, setIsSuccess] = useState(false);\n\n useEffect(() =>\n autorun(() => {\n const params = new Route(route).match(ui.route);\n\n if (params) {\n ui.setParams(params);\n setIsSuccess(true);\n } else {\n setIsSuccess(false);\n }\n }),\n );\n\n if (isSuccess) {\n return children;\n }\n\n return null;\n});\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/ChevronLeft\");","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport default makeStyles(\n {\n root: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'hidden',\n },\n content: {\n zIndex: 1000,\n background: COLOURS.SURFACE_PRIMARY,\n padding: 20,\n borderRadius: '20px 20px 0px 0px',\n },\n background: {\n background: 'black',\n width: '100%',\n height: '100%',\n position: 'absolute',\n opacity: '.1',\n },\n cancelButton: {\n width: 32,\n height: 34,\n backgroundColor: COLOURS.WHITE,\n borderRadius: 10,\n marginLeft: 16,\n marginBottom: 12,\n },\n },\n { name: 'Drawer' },\n);\n","import ChevronLeft from '@mui/icons-material/ChevronLeft';\nimport IconButton from '@mui/material/IconButton';\nimport cls from 'classnames';\nimport React, { FC, memo } from 'react';\nimport { COLOURS } from 'theme/consts';\nimport useStyles from './styles';\n\ninterface IDrawerProps {\n children?: React.ReactNode;\n open?: boolean;\n\n onClickClose?: () => void;\n}\n\nconst Drawer: FC<IDrawerProps> = (props) => {\n const { children, onClickClose, open } = props;\n const classes = useStyles();\n\n return (\n <>\n {open && (\n <>\n <div className={cls({ [classes.background]: open })} />\n <div\n className={cls({\n [classes.root]: true,\n })}\n >\n <IconButton className={classes.cancelButton} onClick={onClickClose}>\n <ChevronLeft fill={COLOURS.BLACK_01} />\n </IconButton>\n\n <div className={classes.content}>{children}</div>\n </div>\n </>\n )}\n </>\n );\n};\n\nexport default memo(Drawer);\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport default makeStyles(\n {\n footerActions: {\n '& > a': {\n color: COLOURS.BLUE,\n },\n },\n },\n { name: 'ActionBlock' },\n);\n","import Typography from '@mui/material/Typography';\nimport React, { FC, Fragment, memo } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Button } from 'ui-kit';\nimport useStyles from './styles';\n\ninterface IFooter {\n text: string;\n onClick: () => void;\n}\n\ninterface IProps {\n buttonText: string;\n onClickButton: () => void;\n footerActions?: IFooter[];\n}\n\nconst ActionBlock: FC<IProps> = (props) => {\n const { buttonText, onClickButton, footerActions } = props;\n const classes = useStyles();\n\n return (\n <>\n <Button variant=\"primary\" fullWidth size=\"large\" onClick={onClickButton}>\n {buttonText}\n </Button>\n\n <Typography variant=\"body2\" component=\"div\" className={classes.footerActions}>\n {footerActions?.map((action, index) => (\n <Fragment key={index}>\n <a href=\"#\" onClick={action.onClick}>\n {action.text}\n </a>\n {index + 1 !== footerActions.length && (\n <span>\n {' '}\n <FormattedMessage id=\"or\" />{' '}\n </span>\n )}\n </Fragment>\n ))}\n </Typography>\n </>\n );\n};\n\nexport default memo(ActionBlock);\n","import axios from 'axios';\n\nexport const getErrorMessage = (error: unknown): string => {\n if (error instanceof Error) {\n if (axios.isAxiosError(error)) {\n const err = error.toJSON() as { message: string };\n return err.message;\n }\n\n return error.message;\n }\n\n return '';\n};\n\nexport default {};\n","export const usernameGenerator = (): string => {\n const adjs = [\n 'autumn',\n 'hidden',\n 'bitter',\n 'misty',\n 'silent',\n 'empty',\n 'dry',\n 'dark',\n 'summer',\n 'icy',\n 'delicate',\n 'quiet',\n 'white',\n 'cool',\n 'spring',\n 'winter',\n 'patient',\n 'twilight',\n 'dawn',\n 'crimson',\n 'wispy',\n 'weathered',\n 'blue',\n 'billowing',\n 'broken',\n 'cold',\n 'damp',\n 'falling',\n 'frosty',\n 'green',\n 'long',\n 'late',\n 'lingering',\n 'bold',\n 'little',\n 'morning',\n 'muddy',\n 'old',\n 'red',\n 'rough',\n 'still',\n 'small',\n 'sparkling',\n 'throbbing',\n 'shy',\n 'wandering',\n 'withered',\n 'wild',\n 'black',\n 'young',\n 'holy',\n 'solitary',\n 'fragrant',\n 'aged',\n 'snowy',\n 'proud',\n 'floral',\n 'restless',\n 'divine',\n 'polished',\n 'ancient',\n 'purple',\n 'lively',\n 'nameless',\n ];\n const nouns = [\n 'waterfall',\n 'river',\n 'breeze',\n 'moon',\n 'rain',\n 'wind',\n 'sea',\n 'morning',\n 'snow',\n 'lake',\n 'sunset',\n 'pine',\n 'shadow',\n 'leaf',\n 'dawn',\n 'glitter',\n 'forest',\n 'hill',\n 'cloud',\n 'meadow',\n 'sun',\n 'glade',\n 'bird',\n 'brook',\n 'butterfly',\n 'bush',\n 'dew',\n 'dust',\n 'field',\n 'fire',\n 'flower',\n 'firefly',\n 'feather',\n 'grass',\n 'haze',\n 'mountain',\n 'night',\n 'pond',\n 'darkness',\n 'snowflake',\n 'silence',\n 'sound',\n 'sky',\n 'shape',\n 'surf',\n 'thunder',\n 'violet',\n 'water',\n 'wildflower',\n 'wave',\n 'water',\n 'resonance',\n 'sun',\n 'wood',\n 'dream',\n 'cherry',\n 'tree',\n 'fog',\n 'frost',\n 'voice',\n 'paper',\n 'frog',\n 'smoke',\n 'star',\n ];\n\n // eslint-disable-next-line\n return (\n adjs[Math.floor(Math.random() * (adjs.length - 1))] + '_' + nouns[Math.floor(Math.random() * (nouns.length - 1))]\n );\n};\n\nexport default {};\n","import makeStyles from '@mui/styles/makeStyles';\n\nexport default makeStyles(\n {\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingLeft: 16,\n paddingRight: 16,\n height: '100%',\n justifyContent: 'center',\n },\n field: {\n marginTop: 24,\n marginBottom: 21,\n '&:nth-of-type(2)': {\n marginBottom: 20,\n },\n },\n fieldLabel: {\n marginBottom: 4,\n },\n footer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n '&>*': {\n marginBottom: 24,\n },\n },\n },\n { name: 'Guest' },\n);\n","import Typography from '@mui/material/Typography';\nimport { observer } from 'mobx-react-lite';\nimport { useSnackbar } from 'notistack';\nimport React, { FC, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Button, Input } from 'ui-kit';\nimport useKeystone from 'keystone';\nimport { signup } from 'keystone/service';\nimport { getErrorMessage } from 'utils/errors';\nimport { usernameGenerator } from 'utils/users';\nimport useStyles from './styles';\n\nconst Guest: FC = observer(() => {\n const intl = useIntl();\n const classes = useStyles();\n const root = useKeystone();\n const { enqueueSnackbar } = useSnackbar();\n\n const [username, setUsername] = useState('');\n\n const onGuestEnter = async () => {\n let name = username;\n if (!name.length) {\n name = usernameGenerator();\n }\n\n try {\n await signup(root, name);\n } catch (error) {\n enqueueSnackbar(getErrorMessage(error));\n }\n };\n\n return (\n <>\n <div className={classes.container}>\n <Typography variant=\"h2\">\n <FormattedMessage id=\"loginAsGuest\" />\n </Typography>\n\n <div className={classes.field}>\n <Typography variant=\"body2\" className={classes.fieldLabel}>\n <FormattedMessage id=\"name\" />\n </Typography>\n <Input\n id=\"username\"\n type=\"text\"\n size=\"large\"\n variant=\"outlined\"\n fullWidth\n placeholder={intl.formatMessage({ id: 'enterYourName' })}\n onChange={setUsername}\n value={username}\n />\n </div>\n\n <div className={classes.footer}>\n <Button variant=\"primary\" fullWidth size=\"large\" onClick={onGuestEnter}>\n <FormattedMessage id=\"enterTheChat\" />\n </Button>\n </div>\n </div>\n </>\n );\n});\n\nexport default Guest;\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport default makeStyles(\n {\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingLeft: 16,\n paddingRight: 16,\n height: '100%',\n justifyContent: 'center',\n },\n field: {\n marginBottom: 21,\n '&:nth-of-type(2)': {\n marginBottom: 20,\n },\n },\n fieldLabel: {\n marginBottom: 4,\n },\n footer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n '&>*': {\n marginBottom: 24,\n },\n },\n formLabel: {\n marginTop: 10,\n marginBottom: 24,\n '& > a': {\n marginLeft: 4,\n color: COLOURS.BLUE,\n },\n },\n },\n { name: 'Signin' },\n);\n","import Typography from '@mui/material/Typography';\nimport { observer } from 'mobx-react-lite';\nimport { useSnackbar } from 'notistack';\nimport React, { FC, useMemo, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Button, Input } from 'ui-kit';\nimport useKeystone from 'keystone';\nimport { login } from 'keystone/service';\nimport { getErrorMessage } from 'utils/errors';\nimport { AUTH_PASSWORD_MIN_LENGTH, AUTH_USERNAME_MIN_LENGTH } from '../../const';\nimport useStyles from './styles';\n\ninterface ISigninProps {\n onClickSignUp: () => void;\n}\n\nconst Signin: FC<ISigninProps> = observer((props) => {\n const intl = useIntl();\n const { onClickSignUp } = props;\n\n const classes = useStyles();\n const root = useKeystone();\n const { enqueueSnackbar } = useSnackbar();\n\n const [username, setUsername] = useState('');\n const [password, setPassword] = useState('');\n\n const onLogin = async () => {\n if (username.length > 0) {\n try {\n await login(root, username, password);\n } catch (error) {\n enqueueSnackbar(getErrorMessage(error));\n }\n }\n };\n\n const isFilledForm = useMemo(\n () => username.length >= AUTH_USERNAME_MIN_LENGTH && password.length >= AUTH_PASSWORD_MIN_LENGTH,\n [username, password],\n );\n\n return (\n <>\n <div className={classes.container}>\n <Typography variant=\"h2\">\n <FormattedMessage id=\"signInTheChat\" />\n </Typography>\n <Typography\n variant=\"h4\"\n fontWeight={500}\n fontFamily=\"PTRootUIWebMedium\"\n component=\"div\"\n className={classes.formLabel}\n >\n <span>\n <FormattedMessage id=\"dontHaveAccount\" />\n </span>\n <a href=\"#\" onClick={onClickSignUp}>\n <FormattedMessage id=\"signUp\" />\n </a>\n </Typography>\n <div className={classes.field}>\n <Typography variant=\"body2\" className={classes.fieldLabel}>\n <FormattedMessage id=\"name\" />\n </Typography>\n <Input\n id=\"username\"\n type=\"text\"\n size=\"large\"\n variant=\"outlined\"\n fullWidth\n placeholder={intl.formatMessage({ id: 'enterYourName' })}\n onChange={setUsername}\n value={username}\n />\n </div>\n <div className={classes.field}>\n <Typography variant=\"body2\" className={classes.fieldLabel}>\n <FormattedMessage id=\"password\" />\n </Typography>\n <Input\n id=\"password\"\n size=\"large\"\n variant=\"outlined\"\n fullWidth\n type=\"password\"\n placeholder={intl.formatMessage({ id: 'enterPassword' })}\n onChange={setPassword}\n value={password}\n />\n </div>\n <div className={classes.footer}>\n <Button disabled={!isFilledForm} variant=\"primary\" fullWidth size=\"large\" onClick={onLogin}>\n <FormattedMessage id=\"enterTheChat\" />\n </Button>\n </div>\n </div>\n </>\n );\n});\n\nexport default Signin;\n","export const AUTH_USERNAME_MIN_LENGTH = 3;\nexport const AUTH_PASSWORD_MIN_LENGTH = 6;\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport default makeStyles(\n {\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingLeft: 16,\n paddingRight: 16,\n height: '100%',\n justifyContent: 'center',\n },\n field: {\n marginBottom: 21,\n '&:nth-of-type(2)': {\n marginBottom: 20,\n },\n },\n fieldLabel: {\n marginBottom: 4,\n },\n footer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n '&>*': {\n marginBottom: 24,\n },\n },\n formLabel: {\n marginTop: 10,\n marginBottom: 24,\n '& > a': {\n color: COLOURS.BLUE,\n },\n },\n },\n { name: 'Signup' },\n);\n","import Typography from '@mui/material/Typography';\nimport { observer } from 'mobx-react-lite';\nimport { useSnackbar } from 'notistack';\nimport React, { FC, useMemo, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Button, Input } from 'ui-kit';\nimport { getErrorMessage } from 'utils/errors';\nimport useKeystone from 'keystone';\nimport { signup } from 'keystone/service';\nimport { AUTH_PASSWORD_MIN_LENGTH, AUTH_USERNAME_MIN_LENGTH } from '../../const';\nimport useStyles from './styles';\n\ninterface ISignupProps {\n onClickSignIn: () => void;\n}\n\nconst Signup: FC<ISignupProps> = observer((props) => {\n const intl = useIntl();\n const { onClickSignIn } = props;\n\n const classes = useStyles();\n const root = useKeystone();\n const { enqueueSnackbar } = useSnackbar();\n\n const [username, setUsername] = useState('');\n const [password, setPassword] = useState('');\n\n const isFilledForm = useMemo(\n () => username.length >= AUTH_USERNAME_MIN_LENGTH && password.length >= AUTH_PASSWORD_MIN_LENGTH,\n [username, password],\n );\n\n const onSignup = async () => {\n if (isFilledForm) {\n try {\n await signup(root, username, password);\n } catch (error) {\n enqueueSnackbar(getErrorMessage(error));\n }\n }\n };\n\n return (\n <div className={classes.container}>\n <Typography variant=\"h2\">\n <FormattedMessage id=\"signUpInTheChat\" />\n </Typography>\n <div className={classes.formLabel}>\n <span>\n <FormattedMessage id=\"alreadyHaveAccount\" />{' '}\n </span>\n <a href=\"#\" onClick={onClickSignIn}>\n <FormattedMessage id=\"signIn\" />\n </a>\n </div>\n <div className={classes.field}>\n <Typography variant=\"body2\" className={classes.fieldLabel}>\n <FormattedMessage id=\"name\" />\n </Typography>\n <Input\n id=\"username\"\n type=\"text\"\n size=\"large\"\n variant=\"outlined\"\n fullWidth\n placeholder={intl.formatMessage({ id: 'enterYourName' })}\n onChange={setUsername}\n value={username}\n />\n </div>\n <div className={classes.field}>\n <Typography variant=\"body2\" className={classes.fieldLabel}>\n <FormattedMessage id=\"password\" />\n </Typography>\n <Input\n id=\"password\"\n size=\"large\"\n variant=\"outlined\"\n fullWidth\n type=\"password\"\n placeholder={intl.formatMessage({ id: 'enterPassword' })}\n onChange={setPassword}\n value={password}\n />\n </div>\n <div className={classes.footer}>\n <Button disabled={!isFilledForm} variant=\"primary\" fullWidth size=\"large\" onClick={onSignup}>\n <FormattedMessage id=\"createAccount\" />\n </Button>\n </div>\n </div>\n );\n});\n\nexport default Signup;\n","import makeStyles from '@mui/styles/makeStyles';\n\nexport default makeStyles(\n {\n container: {\n display: 'flex',\n flexDirection: 'column',\n paddingLeft: 16,\n paddingRight: 16,\n height: '100%',\n background: 'white',\n justifyContent: 'flex-end',\n },\n header: {\n fontWeight: 'bold',\n },\n field: {\n marginBottom: 21,\n '&:nth-of-type(2)': {\n marginBottom: 33,\n },\n },\n fieldLabel: {\n marginBottom: 4,\n },\n footer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n '&>*': {\n marginBottom: 24,\n },\n },\n },\n { name: 'Auth' },\n);\n","import { observer } from 'mobx-react-lite';\nimport React, { useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport Drawer from '../../components/Drawer';\nimport useKeystone from '../../keystone';\nimport { AuthModeEnum } from '../../types/enums';\nimport ActionBlock from './components/ActionBlock';\nimport Guest from './components/Guest';\nimport Signin from './components/Signin';\nimport Signup from './components/Signup';\nimport useStyles from './styles';\n\nconst Auth = () => {\n const intl = useIntl();\n const classes = useStyles();\n const root = useKeystone();\n const { settings } = root;\n\n const [openDrawerSignIn, setOpenDrawerSignIn] = useState(false);\n const [openDrawerSignUp, setOpenDrawerSignUp] = useState(false);\n const [openDrawerGuestEnter, setOpenDrawerGuestEnter] = useState(false);\n\n const onSignUp = () => {\n setOpenDrawerSignIn(false);\n setOpenDrawerSignUp(true);\n };\n\n const onSignIn = () => {\n setOpenDrawerSignUp(false);\n setOpenDrawerSignIn(true);\n };\n\n const onGuestEnter = () => {\n setOpenDrawerGuestEnter(true);\n };\n\n const renderMode = () => {\n switch (settings.authMode) {\n case AuthModeEnum.Mode1:\n return <ActionBlock buttonText={intl.formatMessage({ id: 'signIn' })} onClickButton={onSignIn} />;\n case AuthModeEnum.Mode2:\n case AuthModeEnum.Mode4:\n return (\n <ActionBlock\n buttonText={intl.formatMessage({ id: 'loginAsGuest' })}\n onClickButton={onGuestEnter}\n footerActions={[{ text: intl.formatMessage({ id: 'signIn' }), onClick: onSignIn }]}\n />\n );\n case AuthModeEnum.Mode5:\n case AuthModeEnum.Mode7:\n return (\n <ActionBlock\n buttonText={intl.formatMessage({ id: 'createAccount' })}\n onClickButton={onSignUp}\n footerActions={[{ text: intl.formatMessage({ id: 'signIn' }), onClick: onSignIn }]}\n />\n );\n case AuthModeEnum.Mode6:\n return (\n <ActionBlock\n buttonText={intl.formatMessage({ id: 'loginAsGuest' })}\n onClickButton={onGuestEnter}\n footerActions={[\n { text: intl.formatMessage({ id: 'createAccount' }), onClick: onSignUp },\n { text: intl.formatMessage({ id: 'signIn' }).toLocaleLowerCase(), onClick: onSignIn },\n ]}\n />\n );\n case AuthModeEnum.Mode8:\n return (\n <ActionBlock\n buttonText={intl.formatMessage({ id: 'loginAsGuest' })}\n onClickButton={onGuestEnter}\n footerActions={[\n { text: intl.formatMessage({ id: 'createAccount' }), onClick: onSignUp },\n {\n text: intl.formatMessage({ id: 'signIn' }).toLocaleLowerCase(),\n onClick: onSignIn,\n },\n ]}\n />\n );\n default:\n return null;\n }\n };\n\n return (\n <>\n <Drawer open={openDrawerSignUp} onClickClose={() => setOpenDrawerSignUp(false)}>\n <Signup onClickSignIn={onSignIn} />\n </Drawer>\n\n <Drawer open={openDrawerSignIn} onClickClose={() => setOpenDrawerSignIn(false)}>\n <Signin onClickSignUp={onSignUp} />\n </Drawer>\n\n <Drawer open={openDrawerGuestEnter} onClickClose={() => setOpenDrawerGuestEnter(false)}>\n <Guest />\n </Drawer>\n\n <div className={classes.container}>\n <div className={classes.footer}>{renderMode()}</div>\n </div>\n </>\n );\n};\n\nexport default observer(Auth);\n","import LinearProgress from '@mui/material/LinearProgress';\nimport Auth from 'containers/Auth';\nimport useKeystone from 'keystone';\nimport { signup } from 'keystone/service';\nimport { autorun } from 'mobx';\nimport { observer } from 'mobx-react-lite';\nimport React, { useEffect } from 'react';\nimport Routes from 'routes';\nimport { usernameGenerator } from 'utils/users';\n\ninterface Props {\n children: JSX.Element;\n}\n\nconst AuthLayout = observer(({ children }: Props): JSX.Element => {\n const root = useKeystone();\n\n useEffect(\n () =>\n autorun(async () => {\n if (!root.auth.isAuthorized) {\n if (root.auth.isAnonymousAllowed) {\n const generatedUsername = usernameGenerator();\n await signup(root, generatedUsername);\n } else {\n root.ui.setRoute(Routes.Login);\n }\n }\n }),\n [],\n );\n\n if (root.auth.isAuthorized) {\n return children;\n }\n\n // todo investigate use case of this and write results here\n if (root.auth.isAnonymousAllowed) {\n return (\n <>\n <LinearProgress color=\"secondary\" />\n </>\n )\n }\n\n return <Auth />;\n});\n\nexport default AuthLayout;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/TextareaAutosize\");","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\nimport { buttonPrimary, buttonOutlined, buttonWithText, input, errorButton } from 'theme/styles';\n\nexport const styles = {\n root: {\n width: '100%',\n borderTop: `1px solid ${COLOURS.SECONDARY_02}`\n },\n container: {\n width: '100%',\n padding: '16px 8px 8px',\n },\n moreButton: {\n ...buttonOutlined,\n },\n moreButtonExpanded: {\n ...buttonOutlined,\n },\n sendButton: {\n ...buttonPrimary,\n },\n clearChatButton: {\n ...buttonWithText,\n ...errorButton,\n backgroundColor: 'inherit',\n marginLeft: 'auto',\n },\n inputContainer: {\n padding: '0 8px 8px',\n },\n input: {\n ...input,\n borderRadius: 10,\n border: 'solid 2px white',\n resize: 'none',\n width: '100%',\n margin: '0 8px',\n padding: '6px 8px 8px',\n '&::-webkit-scrollbar-track': {\n margin: '10px 0',\n }\n },\n morePanel: {\n padding: '0 8px',\n height: '52px',\n borderRadius: '10px',\n background: COLOURS.SECONDARY_01\n },\n submitDelayed: {\n width: '100%',\n height: 36,\n padding: '0 16px',\n color: COLOURS.CONTRAST,\n background: COLOURS.SECONDARY,\n fontFamily: 'PTRootUIWebRegular',\n fontSize: '14px',\n lineHeight: '16px',\n }\n} as const;\n\nexport default makeStyles(styles, { name: 'MessageInput' });\n","import makeStyles from '@mui/styles/makeStyles';\nimport { styles } from './styles';\n\nexport default makeStyles({\n ...styles,\n input: {\n ...styles.input,\n appearance: 'none',\n '-moz-appearance': 'none',\n '-webkit-appearance': 'none',\n }\n});\n","import React, { CSSProperties, ReactElement } from 'react';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = 'currentColor', width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M22 11.985C22 6.65699 17.7 2 12.02 2C6.21 2 2 6.74712 2 12.015C2 13.6975 2.49 15.4301 3.35 17.0125C3.51 17.2729 3.53 17.6034 3.42 17.9139L2.75 20.1572C2.6 20.698 3.06 21.0986 3.57 20.9384L5.59 20.3375C6.14 20.1572 6.57 20.3876 7.08 20.698C8.54 21.5593 10.36 22 12 22C16.96 22 22 18.1642 22 11.985ZM7 13.5C7.82843 13.5 8.5 12.8284 8.5 12C8.5 11.1716 7.82843 10.5 7 10.5C6.17157 10.5 5.5 11.1716 5.5 12C5.5 12.8284 6.17157 13.5 7 13.5ZM13.5 12C13.5 12.8284 12.8284 13.5 12 13.5C11.1716 13.5 10.5 12.8284 10.5 12C10.5 11.1716 11.1716 10.5 12 10.5C12.8284 10.5 13.5 11.1716 13.5 12ZM17 13.5C17.8284 13.5 18.5 12.8284 18.5 12C18.5 11.1716 17.8284 10.5 17 10.5C16.1716 10.5 15.5 11.1716 15.5 12C15.5 12.8284 16.1716 13.5 17 13.5Z\" fill={fill}/>\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = '#A1B0BC', width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"12\" fill={fill} />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.1397 9.29397C15.2291 9.17274 15.2192 9.0007 15.1098 8.89075C14.9895 8.76981 14.7945 8.76981 14.6742 8.89075L12 11.5793L9.32587 8.89075L9.29133 8.86077C9.17075 8.77081 8.99962 8.78081 8.89027 8.89075L8.86044 8.92548C8.77097 9.04672 8.78091 9.21876 8.89027 9.3287L11.5472 12L8.89027 14.6714L8.86044 14.7061C8.77097 14.8274 8.78091 14.9994 8.89027 15.1093C9.01055 15.2303 9.20559 15.2303 9.32587 15.1093L12 12.4208L14.6742 15.1093L14.7088 15.1393C14.8294 15.2293 15.0005 15.2193 15.1098 15.1093L15.1397 15.0746C15.2291 14.9534 15.2192 14.7813 15.1098 14.6714L12.4529 12L15.1098 9.3287L15.1397 9.29397Z\"\n fill=\"white\"\n />\n <path\n d=\"M15.1098 8.89073L15.3934 8.60864L15.1098 8.89073ZM15.1396 9.29394L15.4431 9.55453L15.4527 9.54334L15.4614 9.53147L15.1396 9.29394ZM14.6742 8.89073L14.3906 8.60864L14.6742 8.89073ZM12 11.5793L11.7164 11.8614L12 12.1465L12.2836 11.8614L12 11.5793ZM9.32582 8.89073L9.60942 8.60864L9.59909 8.59825L9.58802 8.58864L9.32582 8.89073ZM9.29128 8.86074L9.55347 8.55866L9.5423 8.54896L9.53045 8.54012L9.29128 8.86074ZM8.89022 8.89073L8.60662 8.60864L8.59629 8.61903L8.58675 8.63014L8.89022 8.89073ZM8.86039 8.92546L8.55692 8.66488L8.54731 8.67607L8.53855 8.68794L8.86039 8.92546ZM8.89022 9.32868L9.17382 9.0466L9.17382 9.04659L8.89022 9.32868ZM11.5471 12L11.8307 12.2821L12.1113 12L11.8307 11.718L11.5471 12ZM8.89022 14.6714L8.60661 14.3893L8.59628 14.3997L8.58674 14.4108L8.89022 14.6714ZM8.86039 14.7061L8.55692 14.4455L8.54731 14.4567L8.53855 14.4686L8.86039 14.7061ZM8.89022 15.1093L8.60662 15.3914L8.89022 15.1093ZM9.32582 15.1093L9.60942 15.3914L9.32582 15.1093ZM12 12.4208L12.2836 12.1387L12 11.8536L11.7164 12.1387L12 12.4208ZM14.6742 15.1093L14.3906 15.3914L14.4009 15.4018L14.412 15.4114L14.6742 15.1093ZM14.7087 15.1393L14.4465 15.4414L14.4577 15.4511L14.4696 15.4599L14.7087 15.1393ZM15.1098 15.1093L15.3934 15.3914L15.4037 15.381L15.4133 15.3699L15.1098 15.1093ZM15.1396 15.0746L15.4431 15.3352L15.4527 15.324L15.4614 15.3121L15.1396 15.0746ZM15.1098 14.6714L14.8262 14.9534L14.8262 14.9535L15.1098 14.6714ZM12.4529 12L12.1693 11.7179L11.8887 12L12.1693 12.2821L12.4529 12ZM15.1098 9.32868L15.3934 9.61075L15.4037 9.60037L15.4133 9.58926L15.1098 9.32868ZM14.8262 9.17281C14.7941 9.14053 14.7918 9.09156 14.8178 9.05642L15.4614 9.53147C15.6663 9.25386 15.6442 8.86081 15.3934 8.60864L14.8262 9.17281ZM14.9578 9.17281C14.9217 9.2091 14.8623 9.2091 14.8262 9.17281L15.3934 8.60864C15.1167 8.33048 14.6672 8.33048 14.3906 8.60864L14.9578 9.17281ZM12.2836 11.8614L14.9578 9.17281L14.3906 8.60864L11.7164 11.2972L12.2836 11.8614ZM9.04222 9.17281L11.7164 11.8614L12.2836 11.2972L9.60942 8.60864L9.04222 9.17281ZM9.02909 9.16283L9.06363 9.19282L9.58802 8.58864L9.55347 8.55866L9.02909 9.16283ZM9.17382 9.17281C9.14088 9.20592 9.08892 9.20882 9.0521 9.18136L9.53045 8.54012C9.25246 8.33275 8.85826 8.35565 8.60662 8.60864L9.17382 9.17281ZM9.16386 9.18604L9.19369 9.15131L8.58675 8.63014L8.55692 8.66488L9.16386 9.18604ZM9.17382 9.04659C9.20593 9.07888 9.20817 9.12784 9.18223 9.16298L8.53855 8.68794C8.33367 8.96554 8.3558 9.35859 8.60662 9.61076L9.17382 9.04659ZM11.8307 11.718L9.17382 9.0466L8.60661 9.61075L11.2635 12.2821L11.8307 11.718ZM9.17382 14.9534L11.8307 12.2821L11.2635 11.718L8.60661 14.3893L9.17382 14.9534ZM9.16386 14.9667L9.19369 14.932L8.58674 14.4108L8.55692 14.4455L9.16386 14.9667ZM9.17382 14.8272C9.20593 14.8595 9.20817 14.9085 9.18223 14.9436L8.53855 14.4686C8.33367 14.7462 8.3558 15.1392 8.60662 15.3914L9.17382 14.8272ZM9.04222 14.8272C9.07832 14.791 9.13773 14.791 9.17382 14.8272L8.60662 15.3914C8.88329 15.6696 9.33275 15.6696 9.60942 15.3914L9.04222 14.8272ZM11.7164 12.1387L9.04222 14.8272L9.60942 15.3914L12.2836 12.7029L11.7164 12.1387ZM14.9578 14.8272L12.2836 12.1387L11.7164 12.7029L14.3906 15.3914L14.9578 14.8272ZM14.9709 14.8372L14.9364 14.8072L14.412 15.4114L14.4465 15.4414L14.9709 14.8372ZM14.8262 14.8272C14.8591 14.7941 14.9111 14.7912 14.9479 14.8187L14.4696 15.4599C14.7475 15.6673 15.1417 15.6444 15.3934 15.3914L14.8262 14.8272ZM14.8361 14.814L14.8063 14.8487L15.4133 15.3699L15.4431 15.3352L14.8361 14.814ZM14.8262 14.9535C14.7941 14.9212 14.7918 14.8722 14.8178 14.8371L15.4614 15.3121C15.6663 15.0345 15.6442 14.6415 15.3934 14.3893L14.8262 14.9535ZM12.1693 12.2821L14.8262 14.9534L15.3934 14.3893L12.7365 11.7179L12.1693 12.2821ZM14.8262 9.0466L12.1693 11.7179L12.7365 12.2821L15.3934 9.61075L14.8262 9.0466ZM14.8361 9.03336L14.8063 9.0681L15.4133 9.58926L15.4431 9.55453L14.8361 9.03336Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = COLOURS.ACCENT_04, width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M16.3399 2C19.7299 2 21.9999 4.38 21.9999 7.92V16.091C21.9999 19.621 19.7299 22 16.3399\n 22H7.66988C4.27988 22 1.99988 19.621 1.99988 16.091V7.92C1.99988 4.38 4.27988 2 7.66988\n 2H16.3399ZM15.0099 8.971C14.6699 8.63 14.1199 8.63 13.7699 8.971L11.9999 10.75L10.2199\n 8.971C9.86988 8.63 9.31988 8.63 8.97988 8.971C8.63988 9.311 8.63988 9.871 8.97988 10.21L10.7599\n 11.991L8.97988 13.761C8.63988 14.111 8.63988 14.661 8.97988 15C9.14988 15.17 9.37988 15.261 9.59988\n 15.261C9.82988 15.261 10.0499 15.17 10.2199 15L11.9999 13.231L13.7799 15C13.9499 15.181 14.1699\n 15.261 14.3899 15.261C14.6199 15.261 14.8399 15.17 15.0099 15C15.3499 14.661 15.3499 14.111\n 15.0099 13.771L13.2299 11.991L15.0099 10.21C15.3499 9.871 15.3499 9.311 15.0099 8.971Z\"\n fill={fill}\n />\n </svg>\n );\n};\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material\");","import React, { CSSProperties, ReactElement } from 'react';\nimport { SvgIcon } from '@mui/material';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = COLOURS.ACCENT_04, width = 24, height = 24, style } = props;\n\n return (\n <SvgIcon\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M4 4C4 3.44772 4.44772 3 5 3H19C19.5523 3 20 3.44772 20 4C20 4.55228 19.5523 5 19 5H5C4.44772 5 4 4.55228 4 4Z\" fill={fill}/>\n <path d=\"M4 12C4 11.4477 4.44772 11 5 11H19C19.5523 11 20 11.4477 20 12C20 12.5523 19.5523 13 19 13H5C4.44772 13 4 12.5523 4 12Z\" fill={fill}/>\n <path d=\"M4 20C4 19.4477 4.44772 19 5 19H19C19.5523 19 20 19.4477 20 20C20 20.5523 19.5523 21 19 21H5C4.44772 21 4 20.5523 4 20Z\" fill={fill}/>\n </SvgIcon>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = COLOURS.ACCENT_04, width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M14 5C14 6.10457 13.1046 7 12 7C10.8954 7 10 6.10457 10 5C10 3.89543 10.8954 3 12 3C13.1046 3 14 3.89543 14 5Z\" fill={fill}/>\n <path d=\"M14 12C14 13.1046 13.1046 14 12 14C10.8954 14 10 13.1046 10 12C10 10.8954 10.8954 10 12 10C13.1046 10 14 10.8954 14 12Z\" fill={fill}/>\n <path d=\"M12 21C13.1046 21 14 20.1046 14 19C14 17.8954 13.1046 17 12 17C10.8954 17 10 17.8954 10 19C10 20.1046 10.8954 21 12 21Z\" fill={fill}/>\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, width = 18, height = 12, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 18 12\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M0 3.58009C0 2.98357 0.462278 2.5 1.03253 2.5L3 2.5V9.49999L1.03253 9.49999C0.462278 9.49999 0 9.01642 0 8.41991V3.58009ZM10 10.9183C10 11.7476 9.14354 12.2676 8.4552 11.8561L4 9.49999V2.5L8.4552 0.143905C9.14354 -0.26755 10 0.252367 10 1.08168V10.9183Z\" fill=\"currentColor\"/>\n <path d=\"M13.818 3.20714C13.4148 2.78534 12.761 2.78534 12.3578 3.20714C11.9546 3.62894 11.9546 4.31281 12.3578 4.73461L13.5675 6.00001L12.3578 7.26541C11.9546 7.68721 11.9546 8.37108 12.3578 8.79288C12.761 9.21468 13.4148 9.21468 13.818 8.79288L15.0277 7.52748L16.2374 8.79288C16.6406 9.21468 17.2944 9.21468 17.6976 8.79288C18.1008 8.37108 18.1008 7.68721 17.6976 7.26541L16.4879 6.00001L17.6976 4.73461C18.1008 4.31281 18.1008 3.62894 17.6976 3.20714C17.2944 2.78534 16.6406 2.78534 16.2374 3.20714L15.0277 4.47254L13.818 3.20714Z\" fill=\"currentColor\"/>\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = COLOURS.ACCENT_04, width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M16.603 15.8599L20.0388 19.2958C20.4284 19.6853 20.4284 20.3169 20.0388 20.7065C19.6492 21.096 19.0177 21.096 18.6281 20.7065L3.29217 5.37057C2.90261 4.98101 2.90261 4.34942 3.29217 3.95986C3.68172 3.5703 4.31332 3.5703 4.70288 3.95986L8.13871 7.39569C9.30738 6.22702 11.2022 6.22703 12.3708 7.3957L15.2115 3.41879C15.5706 2.91596 16.2954 2.85598 16.7323 3.29292L20.7057 7.26634C21.1427 7.70329 21.0827 8.42801 20.5799 8.78718L16.603 11.6278C17.7716 12.7965 17.7716 14.6913 16.603 15.8599Z\" fill={fill} />\n <path d=\"M13.7816 17.2707L6.728 10.2171C6.33845 9.82755 5.70685 9.82755 5.31729 10.2171C4.92774 10.6067 4.92774 11.2383 5.31729 11.6278L8.13872 14.4492L3.29217 19.2958C2.90262 19.6853 2.90262 20.3169 3.29217 20.7065C3.68173 21.096 4.31332 21.096 4.70288 20.7065L9.54942 15.8599L12.3708 18.6814C12.7604 19.0709 13.392 19.0709 13.7815 18.6814C14.1711 18.2918 14.1711 17.6602 13.7816 17.2707Z\" fill={fill}/>\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = '', width = 136, height = 90, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 136 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect x=\"1\" y=\"1\" width=\"134\" height=\"88\" rx=\"10\" fill=\"#A4ADFF\" stroke={fill} strokeWidth=\"2\" />\n <rect x=\"12.75\" y=\"11.9004\" width=\"113.05\" height=\"18.7\" rx=\"9.35\" fill=\"white\" />\n <circle cx=\"110.499\" cy=\"21.2503\" r=\"7.08333\" fill=\"#163498\" />\n <path\n d=\"M109.251 24.0837C109.091 24.0837 108.931 24.02 108.809 23.8923L107.142 22.1486C106.898 21.8932 106.898 21.4795 107.142 21.2241C107.386 20.9686 107.782 20.9686 108.026 21.2241L109.251 22.5052L112.975 18.6086C113.22 18.3531 113.615 18.3531 113.859 18.6086C114.103 18.864 114.103 19.2777 113.859 19.5332L109.692 23.8923C109.571 24.02 109.411 24.0837 109.251 24.0837Z\"\n fill=\"white\"\n />\n <rect x=\"12.75\" y=\"34\" width=\"113.05\" height=\"18.7\" rx=\"9.35\" fill=\"white\" />\n <rect x=\"12.75\" y=\"56.0996\" width=\"113.05\" height=\"18.7\" rx=\"9.35\" fill=\"white\" />\n <circle cx=\"110.499\" cy=\"43.3499\" r=\"7.08333\" fill=\"#163498\" />\n <path\n d=\"M109.251 46.1833C109.091 46.1833 108.931 46.1196 108.809 45.9919L107.142 44.2482C106.898 43.9928 106.898 43.5791 107.142 43.3237C107.386 43.0682 107.782 43.0682 108.026 43.3237L109.251 44.6048L112.975 40.7082C113.22 40.4527 113.615 40.4527 113.859 40.7082C114.103 40.9636 114.103 41.3773 113.859 41.6328L109.692 45.9919C109.571 46.1196 109.411 46.1833 109.251 46.1833Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = '', width = 136, height = 90, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 136 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect x=\"1\" y=\"1\" width=\"134\" height=\"88\" rx=\"10\" fill=\"#A4ADFF\" stroke={fill} strokeWidth=\"2\" />\n <rect x=\"12.75\" y=\"11.8999\" width=\"113.05\" height=\"18.7\" rx=\"9.35\" fill=\"white\" />\n <rect x=\"12.75\" y=\"34\" width=\"113.05\" height=\"18.7\" rx=\"9.35\" fill=\"white\" />\n <rect x=\"12.75\" y=\"56.1001\" width=\"113.05\" height=\"18.7\" rx=\"9.35\" fill=\"white\" />\n <circle cx=\"111.349\" cy=\"21.2498\" r=\"7.08333\" fill=\"#23BE33\" />\n <path\n d=\"M110.101 24.0832C109.941 24.0832 109.781 24.0195 109.658 23.8918L107.992 22.1481C107.748 21.8927 107.748 21.479 107.992 21.2236C108.236 20.9681 108.631 20.9681 108.876 21.2236L110.1 22.5047L113.825 18.6081C114.069 18.3526 114.465 18.3526 114.709 18.6081C114.953 18.8635 114.953 19.2772 114.709 19.5327L110.542 23.8918C110.421 24.0195 110.261 24.0832 110.101 24.0832Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = '', width = 136, height = 90, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 136 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect x=\"1\" y=\"1\" width=\"134\" height=\"88\" rx=\"10\" fill=\"#A4ADFF\" stroke={fill} strokeWidth=\"2\" />\n <rect x=\"13\" y=\"39\" width=\"113\" height=\"19\" rx=\"4\" fill=\"white\" />\n <g opacity=\"0.4\">\n <path d=\"M21 45H21.8814V51.9209H21V45Z\" fill=\"#060A2D\" />\n <path\n d=\"M25.1871 46.9774H26.031V45.5932H26.8749V46.9774H28.0939V47.7881H26.8749V50.3686C26.8749 50.863 27.0937 51.1102 27.5313 51.1102H28.1876V51.9209H27.4094C26.9655 51.9209 26.6248 51.7957 26.3873 51.5452C26.1497 51.2947 26.031 50.9355 26.031 50.4675V47.7881H25.1871V46.9774Z\"\n fill=\"#060A2D\"\n />\n <path\n d=\"M29.1286 45H29.9725V47.5607C30.1288 47.3498 30.3257 47.1883 30.5633 47.0763C30.8008 46.9576 31.0728 46.8983 31.3791 46.8983C31.9229 46.8983 32.3543 47.0796 32.6731 47.4421C32.9981 47.798 33.1607 48.3187 33.1607 49.0042V51.9209H32.3167V49.0042C32.3167 48.5824 32.223 48.2693 32.0354 48.065C31.8479 47.854 31.5822 47.7486 31.2384 47.7486C30.8571 47.7486 30.5539 47.8606 30.3289 48.0847C30.1038 48.3089 29.985 48.5989 29.9725 48.9548V51.9209H29.1286V45Z\"\n fill=\"#060A2D\"\n />\n <path\n d=\"M34.5971 46.9774H35.4411V51.9209H34.5971V46.9774ZM35.0191 46.226C34.8566 46.226 34.7222 46.17 34.6159 46.0579C34.5096 45.9459 34.4565 45.8041 34.4565 45.6328C34.4565 45.4614 34.5096 45.3197 34.6159 45.2076C34.7222 45.0956 34.8566 45.0395 35.0191 45.0395C35.1816 45.0395 35.316 45.0956 35.4223 45.2076C35.5286 45.3197 35.5817 45.4614 35.5817 45.6328C35.5817 45.8041 35.5286 45.9459 35.4223 46.0579C35.316 46.17 35.1816 46.226 35.0191 46.226Z\"\n fill=\"#060A2D\"\n />\n <path\n d=\"M36.9213 46.9774H37.5777L37.6621 47.6596C37.8246 47.4157 38.034 47.2279 38.2903 47.096C38.5466 46.9642 38.8404 46.8983 39.1717 46.8983C39.7156 46.8983 40.1469 47.0796 40.4657 47.4421C40.7908 47.798 40.9533 48.3187 40.9533 49.0042V51.9209H40.1094V49.0042C40.1094 48.5824 40.0156 48.2693 39.8281 48.065C39.6406 47.854 39.3749 47.7486 39.0311 47.7486C38.6497 47.7486 38.3466 47.8606 38.1215 48.0847C37.8965 48.3089 37.7777 48.5989 37.7652 48.9548V51.9209H36.9213V46.9774Z\"\n fill=\"#060A2D\"\n />\n <path\n d=\"M43.8901 49.7952L43.1587 50.7443V51.9209H42.3148V45H43.1587V49.5184L45.0528 46.9774H46.0655L44.4433 49.1427L46.2531 51.9209H45.2216L43.8901 49.7952Z\"\n fill=\"#060A2D\"\n />\n <path\n d=\"M47.6552 52C47.4614 52 47.302 51.9341 47.177 51.8023C47.0582 51.6638 46.9988 51.4991 46.9988 51.3079C46.9988 51.1168 47.0582 50.9553 47.177 50.8234C47.302 50.685 47.4614 50.6158 47.6552 50.6158C47.849 50.6158 48.0053 50.685 48.124 50.8234C48.2491 50.9553 48.3116 51.1168 48.3116 51.3079C48.3116 51.4991 48.2491 51.6638 48.124 51.8023C48.0053 51.9341 47.849 52 47.6552 52Z\"\n fill=\"#060A2D\"\n />\n <path\n d=\"M49.9994 52C49.8056 52 49.6462 51.9341 49.5212 51.8023C49.4024 51.6638 49.343 51.4991 49.343 51.3079C49.343 51.1168 49.4024 50.9553 49.5212 50.8234C49.6462 50.685 49.8056 50.6158 49.9994 50.6158C50.1932 50.6158 50.3495 50.685 50.4683 50.8234C50.5933 50.9553 50.6558 51.1168 50.6558 51.3079C50.6558 51.4991 50.5933 51.6638 50.4683 51.8023C50.3495 51.9341 50.1932 52 49.9994 52Z\"\n fill=\"#060A2D\"\n />\n <path\n d=\"M52.3436 52C52.1498 52 51.9904 51.9341 51.8654 51.8023C51.7466 51.6638 51.6872 51.4991 51.6872 51.3079C51.6872 51.1168 51.7466 50.9553 51.8654 50.8234C51.9904 50.685 52.1498 50.6158 52.3436 50.6158C52.5374 50.6158 52.6937 50.685 52.8125 50.8234C52.9375 50.9553 53 51.1168 53 51.3079C53 51.4991 52.9375 51.6638 52.8125 51.8023C52.6937 51.9341 52.5374 52 52.3436 52Z\"\n fill=\"#060A2D\"\n />\n </g>\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = '#fff', width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M20.8536 20.1464L16.9994 16.2923C18.2445 14.882 19 13.0292 19 11C19\n 6.58172 15.4183 3 11 3C6.58172 3 3 6.58172 3 11C3 15.4183 6.58172 19 11 19C13.0292 19\n 14.882 18.2445 16.2923 16.9994L20.1464 20.8536C20.3417 21.0488 20.6583 21.0488 20.8536\n 20.8536C21.0488 20.6583 21.0488 20.3417 20.8536 20.1464ZM17.9997 11.0004C17.9997\n 14.8664 14.8657 18.0004 10.9997 18.0004C7.13368 18.0004 3.99967 14.8664 3.99967\n 11.0004C3.99967 7.13439 7.13368 4.00038 10.9997 4.00038C14.8657 4.00038 17.9997 7.13439 17.9997 11.0004Z\"\n fill={fill}\n />\n </svg>\n );\n};\n","import React, { ReactElement } from 'react';\n\nimport { IIconProps } from './types';\n\nexport default (props: IIconProps): ReactElement => {\n const { className, fill = 'currentColor', width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M7.39097 5.58531L19.405 11.0799C20.1983 11.4309 20.1983 12.5691 19.405 12.9201L7.39097 18.4147C6.73492 18.705 6 18.2188 6 17.4946L6 14.3714C6 13.8742 6.35959 13.4519 6.84567 13.3782L15.9297 12L6.84567 10.6218C6.35959 10.5481 6 10.1258 6 9.62862L6 6.50541C6 5.78115 6.73493 5.29501 7.39097 5.58531Z\" fill={fill}/>\n </svg>\n );\n};\n","import React, { CSSProperties, ReactElement } from 'react';\n\ninterface IProps {\n className?: string;\n width?: number;\n height?: number;\n fill?: string;\n style?: CSSProperties;\n}\n\nexport default (props: IProps): ReactElement => {\n const { className, fill = '#000', width = 16, height = 18, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 16 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0.0257921 0.660726C-0.11223 0.228766 0.330535 -0.155041 0.715904\n 0.0630638L15.748 8.56064C16.0842 8.75042 16.0835 9.24965 15.7487\n 9.43943L0.716587 17.937C0.331217 18.1551 -0.11223 17.7706 0.0264753\n 17.3393L2.70903 9.00039L0.0257921 0.660726ZM1.33154 1.55085L13.6217\n 8.49974L3.56586 8.49903L1.33154 1.55085ZM1.33154 16.4485L3.56586\n 9.50033L13.6217 9.50104L1.33154 16.4485Z\"\n fill={fill}\n />\n </svg>\n );\n};\n","import React, { ReactElement } from 'react';\n\nimport { IIconProps } from './types';\nimport { COLOURS } from 'theme/consts';\n\nexport default (props: IIconProps): ReactElement => {\n const { className, fill = COLOURS.ACCENT_04, width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M20.7071 15.7071C20.3166 16.0976 19.6834 16.0976 19.2929 15.7071L12 8.41421L4.70711 15.7071C4.31658 16.0976 3.68342 16.0976 3.29289 15.7071C2.90237 15.3166 2.90237 14.6834 3.29289 14.2929L11.2929 6.29289C11.6834 5.90237 12.3166 5.90237 12.7071 6.29289L20.7071 14.2929C21.0976 14.6834 21.0976 15.3166 20.7071 15.7071Z\" fill={fill}/>\n </svg>\n );\n};\n","import React, { ReactElement } from 'react';\n\nimport { IIconProps } from './types';\n\nexport default (props: IIconProps): ReactElement => {\n const { className, fill = 'currentColor', width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M12 8.50009C10.0318 8.50009 8.40315 10.0624 8.40315 12.0471C8.40315 14.0364 10.0365 15.5851 12 15.5851C13.9775 15.5851 15.5694 14.0226 15.5694 12.0471C15.5694 10.0761 13.9822 8.50009 12 8.50009ZM10.4032 12.0471C10.4032 11.2058 11.0971 10.5001 12 10.5001C12.889 10.5001 13.5694 11.192 13.5694 12.0471C13.5694 12.8975 12.8936 13.5851 12 13.5851C11.0924 13.5851 10.4032 12.8838 10.4032 12.0471Z\" fill={fill}/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15.1136 3.45563C14.6082 2.62205 13.6837 2.03809 12.6309 2.03809H11.3282L11.3147 2.03845C10.3119 2.06549 9.39096 2.60195 8.87493 3.44439C8.60025 3.87619 8.43883 4.41041 8.46851 4.98012L8.46892 4.98789L8.46945 4.99566C8.47073 5.01469 8.46795 5.08383 8.39769 5.20813C8.20362 5.5155 7.76321 5.63364 7.44528 5.46569C6.05099 4.6783 4.32559 5.16653 3.52381 6.51357L2.90569 7.58507C2.11307 8.94365 2.55254 10.7024 3.94389 11.4982C4.2498 11.6827 4.34545 12.0796 4.1878 12.3628C4.0719 12.5412 4.03004 12.5601 4.02392 12.5629L4.00349 12.5729L3.98354 12.5839C3.53154 12.8325 3.116 13.2247 2.86679 13.6728C2.33259 14.5712 2.38874 15.6559 2.8866 16.5167L3.51973 17.6005L3.52093 17.6025C4.03799 18.4829 4.99617 19.0321 6.01079 19.0321C6.4892 19.0321 7.03956 18.8995 7.504 18.6138L7.52033 18.6038L7.53625 18.5931C7.53995 18.5907 7.59321 18.5551 7.78469 18.5551C8.14591 18.5551 8.4562 18.8653 8.46719 19.2068C8.47463 20.8178 9.79162 22.0381 11.3691 22.0381H12.6126C14.1819 22.0381 15.4942 20.8182 15.5053 19.2136C15.522 18.8634 15.839 18.5551 16.197 18.5551C16.3708 18.5551 16.4362 18.5874 16.4605 18.603L16.469 18.6085L16.4777 18.6138C16.9402 18.8983 17.4809 19.0321 17.9709 19.0321C18.9784 19.0321 19.9346 18.4813 20.4505 17.6045L20.4516 17.6025L21.0987 16.5107L21.1072 16.4952C21.576 15.6364 21.6573 14.5671 21.1028 13.6526L21.0959 13.6412L21.0887 13.63C20.8525 13.2629 20.4906 12.8518 19.9783 12.5781L19.9636 12.5702L19.9484 12.5628C19.9451 12.5614 19.9028 12.5442 19.7967 12.368C19.6278 12.0876 19.718 11.6865 20.0274 11.499C21.4273 10.7045 21.8711 8.94389 21.0651 7.58201L20.4556 6.52539L20.4525 6.52017C19.6605 5.16616 17.9225 4.67877 16.5378 5.46485C16.2061 5.6364 15.7665 5.5116 15.5749 5.20811C15.5046 5.08382 15.5018 5.01469 15.5031 4.99566L15.5024 5.006C15.5498 4.39848 15.3602 3.8602 15.1136 3.45563ZM11.3575 4.03809C11.0341 4.0506 10.7384 4.22846 10.5783 4.49254L10.5714 4.50397L10.5641 4.5152C10.4966 4.6201 10.4601 4.74564 10.4656 4.87132C10.4979 5.38746 10.337 5.85127 10.1217 6.22217L10.1163 6.23144L10.1107 6.24059C9.37054 7.45481 7.75425 7.90939 6.48453 7.21987L6.4752 7.2148L6.46597 7.20954C6.03525 6.96365 5.50306 7.10447 5.24539 7.53172L4.63676 8.58677L4.63372 8.592C4.38822 9.01169 4.5302 9.53171 4.94023 9.76408L4.94801 9.76848L4.95571 9.77303C6.19551 10.5052 6.64827 12.1302 5.90256 13.3927L5.89352 13.408L5.88394 13.423C5.70509 13.7025 5.42547 14.0928 4.93444 14.3436C4.77826 14.433 4.65686 14.5669 4.6132 14.6475L4.60165 14.6688L4.58908 14.6895C4.45977 14.9028 4.44292 15.2116 4.61699 15.5138L4.61792 15.5155L5.24545 16.5896C5.40515 16.8609 5.70898 17.0321 6.01079 17.0321C6.15029 17.0321 6.32554 16.9872 6.44615 16.9163C6.89353 16.6252 7.37944 16.5551 7.78469 16.5551C9.23156 16.5551 10.4374 17.7347 10.4669 19.1726L10.4672 19.1828V19.1931C10.4672 19.6453 10.8296 20.0381 11.3691 20.0381H12.6126C13.1397 20.0381 13.5054 19.6484 13.5054 19.1931V19.1777L13.5059 19.1623C13.5498 17.7347 14.7481 16.5551 16.197 16.5551C16.6049 16.5551 17.0833 16.6295 17.5311 16.9137C17.6534 16.9872 17.8231 17.0321 17.9709 17.0321C18.2612 17.0321 18.5662 16.8636 18.7271 16.5896L18.7291 16.5862L19.359 15.5235C19.5374 15.1878 19.5141 14.8985 19.3987 14.6998C19.2918 14.5371 19.1668 14.4148 19.0449 14.347C18.5471 14.0951 18.2647 13.7008 18.0836 13.4002C17.3213 12.1345 17.7771 10.5052 19.0169 9.77303L19.0264 9.76739L19.0361 9.76196C19.4527 9.52825 19.5898 9.01367 19.3427 8.59856L19.3358 8.58677L18.725 7.52788C18.4774 7.10721 17.9418 6.96388 17.5195 7.20738L17.5064 7.21496L17.493 7.22214C16.2195 7.90584 14.604 7.45809 13.8619 6.24059L13.8563 6.23144L13.8509 6.22217C13.6341 5.84869 13.4724 5.38098 13.5077 4.86051L13.5084 4.85017C13.5158 4.75569 13.4872 4.63002 13.4047 4.49459L13.4034 4.49254C13.2322 4.21012 12.9315 4.03809 12.6309 4.03809H11.3575Z\" fill={fill}/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M8.40315 12.0471C8.40315 10.0624 10.0318 8.50009 12 8.50009C13.9822 8.50009 15.5694 10.0761 15.5694 12.0471C15.5694 14.0226 13.9775 15.5851 12 15.5851C10.0365 15.5851 8.40315 14.0364 8.40315 12.0471ZM12 10.5001C11.0971 10.5001 10.4032 11.2058 10.4032 12.0471C10.4032 12.8838 11.0924 13.5851 12 13.5851C12.8936 13.5851 13.5694 12.8975 13.5694 12.0471C13.5694 11.192 12.889 10.5001 12 10.5001Z\" fill={fill}/>\n </svg>\n );\n};\n","import React, { ReactElement } from 'react';\n\nimport { IIconProps } from './types';\n\nexport default (props: IIconProps): ReactElement => {\n const { className, fill = 'currentColor', width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10 2C8.89543 2 8 2.89543 8 4V6H5C4.44772 6 4 6.44772 4 7C4 7.55228 4.44772 8 5 8H19C19.5523 8 20 7.55228 20 7C20 6.44772 19.5523 6 19 6H16V4C16 2.89543 15.1046 2 14 2H10ZM14 6V4H10V6H14Z\" fill={fill}/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M5 10C5 9.44772 5.44772 9 6 9H18C18.5523 9 19 9.44772 19 10L18 21C18 21.5523 17.5523 22 17 22H7C6.44772 22 6 21.5523 6 21L5 10ZM9.5 12.5C9.5 12.2239 9.72386 12 10 12C10.2761 12 10.5 12.2239 10.5 12.5V18.5C10.5 18.7761 10.2761 19 10 19C9.72386 19 9.5 18.7761 9.5 18.5V12.5ZM14 12C13.7239 12 13.5 12.2239 13.5 12.5V18.5C13.5 18.7761 13.7239 19 14 19C14.2761 19 14.5 18.7761 14.5 18.5V12.5C14.5 12.2239 14.2761 12 14 12Z\" fill={fill}/>\n </svg>\n );\n};\n","import React, { ReactElement } from 'react';\n\nimport { IIconProps } from './types';\n\nexport default (props: IIconProps): ReactElement => {\n const { className, fill = 'currentColor', width = 24, height = 24, style } = props;\n\n return (\n <svg\n style={{ ...style, width, height }}\n width={width}\n height={height}\n className={className}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M7.8127 6.31103C7.39802 5.89635 6.7257 5.89635 6.31102 6.31103C5.89634 6.72571 5.89634 7.39803 6.31102 7.81271L10.4983 12L6.31101 16.1873C5.89633 16.602 5.89633 17.2743 6.31101 17.689C6.72569 18.1037 7.39801 18.1037 7.81269 17.689L12 13.5017L16.1873 17.689C16.602 18.1037 17.2743 18.1037 17.689 17.689C18.1036 17.2743 18.1036 16.602 17.689 16.1873L13.5017 12L17.689 7.8127C18.1037 7.39803 18.1037 6.7257 17.689 6.31102C17.2743 5.89634 16.602 5.89634 16.1873 6.31102L12 10.4983L7.8127 6.31103Z\" fill={fill}/>\n </svg>\n );\n};\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Collapse\");","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\nimport { buttonOutlined, label, radio, toggler } from 'theme/styles';\n\nexport const styles = {\n root: {\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n background: 'rgba(29, 29, 44, 0.7)',\n },\n content: {\n position: 'relative',\n flexDirection: 'column',\n width: '100%',\n padding: 16,\n background: COLOURS.BG,\n },\n closeButton: {\n ...buttonOutlined,\n position: 'absolute',\n right: 8,\n top: 8,\n },\n throttlePeriods: {\n backgroundColor: COLOURS.SECONDARY_01,\n padding: 8,\n margin: '8px 0 16px',\n borderRadius: 10,\n },\n label,\n radio,\n switch: {\n ...toggler\n },\n title: {\n margin: 0,\n }\n\n} as const;\n\nexport default makeStyles(styles, { name: 'ChatSettings' });\n","import React, { FunctionComponent, useEffect, useState } from 'react';\nimport {\n Grid,\n IconButton,\n Portal,\n Switch,\n FormGroup,\n FormControl,\n FormLabel,\n FormControlLabel,\n RadioGroup,\n Radio,\n} from '@mui/material';\nimport { observer } from 'mobx-react-lite';\nimport useKeystone from 'keystone';\nimport { useIntl } from 'react-intl';\nimport Collapse from '@mui/material/Collapse';\nimport Typography from '@mui/material/Typography';\n\nimport { MAIN_CONTAINER } from 'types/const';\nimport { IChannelSettings } from 'types/types';\nimport { CloseMiniIcon } from 'ui-kit/icons';\n\nimport makeStyles from './styles';\n\ninterface ChatSettingsProps {\n onClose(settings: IChannelSettings): void;\n}\n\nconst DEFAULT_DELAY_IN_SEC = 10;\n\nconst ChatSettings: FunctionComponent<ChatSettingsProps> = observer(({ onClose }) => {\n const [isMessageThrottlingEnabled, setIsMessageThrottlingEnabled] = useState(false);\n const [collapseIn, setCollapseIn] = useState(false);\n const intl = useIntl();\n const root = useKeystone();\n\n const { settings } = root.currentChannel || {};\n const [messageThrottlePeriod, setMessagThrottlePeriod] = useState(settings?.slowModeInSecs || DEFAULT_DELAY_IN_SEC);\n const [currentSettings, setCUrrentSettings] = React.useState({\n throttleMessages: Boolean(settings?.slowModeInSecs),\n linksDisabled: Boolean(settings?.disallowLinks),\n });\n\n const classes = makeStyles();\n const portalEl = document.querySelector(`#${MAIN_CONTAINER}`);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setCUrrentSettings({\n ...currentSettings,\n [event.target.name]: event.target.checked,\n });\n };\n\n const handleChangeMessageThrottle = (event: React.ChangeEvent<HTMLInputElement>) => {\n const val = Number(event.target.value);\n setMessagThrottlePeriod(val);\n }\n\n const handleClose = () => {\n const channelSettings: IChannelSettings = {\n disallowLinks: currentSettings.linksDisabled,\n slowModeInSecs: isMessageThrottlingEnabled ? messageThrottlePeriod : 0,\n }\n\n onClose(channelSettings);\n }\n\n useEffect(() => {\n setIsMessageThrottlingEnabled(currentSettings.throttleMessages);\n }, [currentSettings])\n\n useEffect(() => {\n setTimeout(() => {\n setCollapseIn(true);\n }, 0)\n }, [])\n\n if (!portalEl) {\n return null;\n }\n\n return (\n <Portal container={portalEl} >\n <Grid container className={classes.root}>\n <Collapse in={collapseIn} sx={{marginTop: 'auto', width: '100%'}}>\n <Grid container className={classes.content}>\n <Typography variant=\"h4\" className={classes.title}>{intl.formatMessage({ id: 'settings.settings' })}</Typography>\n <IconButton className={classes.closeButton} onClick={handleClose}>\n <CloseMiniIcon />\n </IconButton>\n <hr />\n <FormGroup>\n <FormControlLabel\n className={classes.label}\n control={\n <Switch\n checked={currentSettings.throttleMessages}\n className={classes.switch}\n onChange={handleChange}\n name=\"throttleMessages\"\n />\n }\n label={intl.formatMessage({ id: 'settings.slowMode' })}\n labelPlacement=\"start\"\n sx={{marginLeft: 0}}\n />\n <Collapse in={isMessageThrottlingEnabled} >\n <FormControl className={classes.throttlePeriods}>\n <FormLabel id=\"throttle-label\" className={classes.label} >{intl.formatMessage({ id: 'settings.slowModePeriod' })}</FormLabel>\n <RadioGroup\n aria-labelledby=\"throttle-label\"\n defaultValue={settings?.slowModeInSecs || DEFAULT_DELAY_IN_SEC}\n name=\"throttle-period\"\n >\n {\n [10, 20, 30, 40, 50].map((period) => (\n <FormControlLabel\n key={period}\n value={period}\n control={<Radio onChange={handleChangeMessageThrottle} className={classes.radio} />}\n label={`${period} ${intl.formatMessage({ id: 'settings.seconds' })}`}\n />\n ))\n }\n </RadioGroup>\n </FormControl>\n </Collapse>\n {!isMessageThrottlingEnabled && <hr />}\n <FormControlLabel\n className={classes.label}\n control={\n <Switch\n checked={currentSettings.linksDisabled}\n className={classes.switch}\n onChange={handleChange}\n name=\"linksDisabled\"\n />\n }\n label={intl.formatMessage({ id: 'settings.forbidLinks' })}\n labelPlacement=\"start\"\n sx={{marginLeft: 0}}\n />\n </FormGroup>\n </Grid>\n </Collapse>\n </Grid>\n </Portal>\n )\n})\n\nexport default ChatSettings;\n","import MoreHoriz from '@mui/icons-material/MoreHoriz';\nimport IconButton from '@mui/material/IconButton';\n\nimport React, { FC } from 'react';\nimport { DropMenu } from 'ui-kit/components/DropMenu';\n\ntype IMoreButtonHOCProps<T> = T & {\n icon?: React.ReactNode;\n style?: React.CSSProperties;\n onClose?: () => void;\n};\n\ntype IInjected = {\n onClose?: () => void;\n};\n\nfunction MoreButton<T>(DropMenuItems: FC<T & IInjected>): FC<IMoreButtonHOCProps<T>> {\n return (props) => {\n const { icon, style, onClose, ...rest } = props;\n\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\n const open = Boolean(anchorEl);\n\n const closeMenu = () => {\n setAnchorEl(null);\n if (onClose) {\n onClose();\n }\n };\n\n const openMenu = (e: React.MouseEvent<HTMLElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setAnchorEl(e.currentTarget);\n };\n\n return (\n <>\n <IconButton\n id=\"more-button\"\n onClick={openMenu}\n disableRipple\n sx={{zIndex: 1, padding: 0, borderRadius:'10px'}}\n style={style} \n >\n {icon || <MoreHoriz style={{ fill: '#7D7D80' }} />}\n </IconButton>\n\n <DropMenu onClose={closeMenu} anchorEl={anchorEl} open={open}>\n <DropMenuItems {...(rest as T)} onClose={closeMenu} />\n </DropMenu>\n </>\n );\n };\n}\n\nexport default MoreButton;\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport const styles = {\n root: {\n width: '100%',\n height: 36,\n padding: '0 16px',\n color: COLOURS.BG,\n backgroundColor: COLOURS.SECONDARY,\n fontFamily: 'PTRootUIWebRegular',\n fontSize: '14px',\n lineHeight: '16px',\n transition: 'background-color 0.5s',\n '&[data-submit=\"1\"]': {\n backgroundColor: COLOURS.PRIMARY,\n }\n },\n submitAttempt: {\n transition: 'background-color 1s',\n color: COLOURS.PRIMARY,\n }\n} as const;\n\nexport default makeStyles(styles, { name: 'SubmitDelayed' });\n","import React, { FunctionComponent, useEffect, useState, useRef } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport Grid from '@mui/material/Grid';\nimport useKeystone from 'keystone';\nimport { useIntl } from 'react-intl';\n\nimport makeStyles from './styles';\n\ninterface SubmitDelayedProps {\n onTimeout(): void;\n submitAttemptTime: number;\n}\n\nconst SubmitDelayed: FunctionComponent<SubmitDelayedProps> = observer(({ onTimeout, submitAttemptTime }) => {\n const root = useKeystone();\n const intl = useIntl();\n const classes = makeStyles();\n\n const [countDown, setCountDown] = useState(root.currentChannel?.settings.slowModeInSecs ?? 0);\n const [submitAttempt, setSubmitAttempt] = useState(false);\n const resetAttemptTimer = useRef<NodeJS.Timeout | null>(null);\n\n useEffect(() => {\n const { settings } = root.currentChannel || {};\n if (!settings?.slowModeInSecs) {\n return;\n }\n\n const timerHandle = setInterval(() => {\n setCountDown((prev) => {\n const val = --prev;\n if (!val) {\n clearInterval(timerHandle);\n /* cant call onTimeout here, will trigger parent render during our render */\n }\n\n return val;\n })\n }, 1000)\n\n return () => clearTimeout(timerHandle);\n }, [])\n\n useEffect(() => {\n if (countDown === 0) {\n onTimeout();\n }\n }, [countDown, onTimeout])\n\n useEffect(() => {\n if (resetAttemptTimer.current) {\n return;\n }\n\n setSubmitAttempt(true);\n resetAttemptTimer.current = setTimeout(() => {\n setSubmitAttempt(false);\n resetAttemptTimer.current = null;\n }, 1000)\n\n return () => {\n if (resetAttemptTimer.current) {\n clearTimeout(resetAttemptTimer.current)\n }\n }\n }, [submitAttemptTime])\n\n return (\n <Grid\n container\n data-submit={Number(submitAttempt)}\n className={classes.root}\n flexDirection=\"column\"\n justifyContent=\"center\"\n >\n <span>{intl.formatMessage({ id: 'settings.timeLimit1' })}</span>\n <span>{intl.formatMessage({ id: 'settings.timeLimit2'}, { countDown })}</span>\n </Grid>\n )\n\n})\n\nexport default SubmitDelayed;\n","import TextareaAutosize from '@mui/material/TextareaAutosize';\nimport Grid from '@mui/material/Grid';\nimport IconButton from '@mui/material/IconButton';\nimport { observer } from 'mobx-react-lite';\nimport { useSnackbar } from 'notistack';\nimport React, { ChangeEvent, FC, KeyboardEvent, MutableRefObject, useRef, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport * as Sentry from '@sentry/react';\nimport useKeystone from 'keystone';\nimport { sendMessage } from 'keystone/service';\nimport { getErrorMessage } from 'utils/errors';\nimport useStyles from './styles';\nimport useMobileStyles from './styles.mobile';\nimport useLandscapeOrientation from 'hooks/useLandscapeOrientation';\nimport { MenuIcon, SendIcon, UpArrowIcon, SettingsIcon, TrashIcon } from 'ui-kit/icons';\nimport { COLOURS } from 'theme/consts';\nimport ChatSettings from 'components/ChatSettings';\nimport { deleteAllMessages, updateSettings } from 'containers/ChannelPage/service';\nimport { IChannelSettings } from 'types/types';\nimport Collapse from '@mui/material/Collapse';\nimport axios from 'axios';\nimport SubmitDelayed from './components/SubmitDelayed';\n\n\ninterface IMessageInput {\n channelId: string;\n isModerator: boolean;\n isPublic: boolean;\n}\n\nconst MessageInput: FC<IMessageInput> = (props) => {\n const intl = useIntl();\n const root = useKeystone();\n const { channelId, isModerator, isPublic } = props;\n const classes = root.ui.isMobile ? useMobileStyles() : useStyles();\n\n const [message, setMessage] = useState('');\n const [loading, setLoading] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n const [isSettingsOpen, setIsSettingsOpen] = useState(false);\n const [isSubmitDelayed, setIsSubmitDelayed] = useState(false);\n const [submitAttemptTime, setSubmitAttemptTime] = useState(0);\n\n const { enqueueSnackbar } = useSnackbar();\n const inputRef = useRef() as MutableRefObject<HTMLTextAreaElement>;\n\n const onInputChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n setMessage(e.target.value);\n };\n\n const handleSendError = (error: unknown) => {\n if (axios.isAxiosError(error)) {\n const err = error.toJSON() as { status: number };\n if (err.status === 429) { // Send rate limit\n setIsSubmitDelayed(true);\n return;\n }\n }\n\n Sentry.captureException(error, (scope) => scope.setTransactionName('send message'));\n enqueueSnackbar(getErrorMessage(error as Error));\n }\n\n const onMessageSubmit = async () => {\n if(!message.trim().length) {\n return;\n }\n\n if (isSubmitDelayed) {\n setSubmitAttemptTime(Date.now())\n return;\n }\n\n const { settings } = root.currentChannel || {};\n\n try {\n setLoading(true);\n await sendMessage(root, channelId, message);\n setIsSubmitDelayed(!isModerator && Boolean(settings?.slowModeInSecs))\n setMessage('');\n } catch (error) {\n handleSendError(error)\n } finally {\n setLoading(false);\n inputRef?.current?.focus();\n }\n };\n\n const handleMoreButtonClick = () => {\n setIsExpanded((val) => !val);\n }\n\n const handleSettingsClose = (settings: IChannelSettings) => {\n setIsSettingsOpen(false);\n setIsExpanded(false);\n updateSettings(channelId, settings);\n }\n\n const handleClearChat = () => {\n deleteAllMessages(root);\n }\n\n const handleOpenSettings = () => {\n setIsSettingsOpen((val) => !val);\n }\n\n const handleSubmitDelayExpired = () => {\n setIsSubmitDelayed(false);\n }\n\n const onKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n onMessageSubmit();\n }\n };\n\n const isLandscapeOrientation = useLandscapeOrientation();\n const isMessageEmpty = !message.trim().length;\n\n return (\n <Grid\n container\n className={classes.root}\n data-qa=\"message-input\"\n >\n {isSubmitDelayed && <SubmitDelayed onTimeout={handleSubmitDelayExpired} submitAttemptTime={submitAttemptTime} />}\n <div className={classes.container}>\n <Grid\n container\n wrap=\"nowrap\"\n alignItems=\"end\"\n className={classes.inputContainer}\n >\n {isModerator && isPublic && (\n <IconButton\n className={isExpanded ? classes.moreButtonExpanded : classes.moreButton}\n data-qa=\"more-button\"\n onClick={handleMoreButtonClick}\n >\n { isExpanded ? <UpArrowIcon /> : <MenuIcon /> }\n </IconButton>\n )}\n <TextareaAutosize\n className={classes.input}\n onKeyDown={onKeyDown}\n placeholder={intl.formatMessage({ id: 'messageInputPlaceholder' })}\n value={message}\n maxRows={isLandscapeOrientation && root.ui.isMobile ? 1 : 5}\n onChange={onInputChange}\n disabled={loading}\n data-qa=\"input-message\"\n ref={inputRef}\n />\n <IconButton\n className={classes.sendButton}\n data-qa=\"send-button\"\n onClick={onMessageSubmit}\n disabled={loading || isMessageEmpty}\n disableRipple\n >\n <SendIcon />\n </IconButton>\n </Grid>\n <Collapse in={isExpanded}>\n <Grid\n container\n wrap=\"nowrap\"\n alignItems=\"center\"\n className={classes.morePanel}\n >\n <IconButton\n className={isExpanded ? classes.moreButtonExpanded : classes.moreButton}\n data-qa=\"settings-button\"\n onClick={handleOpenSettings}\n >\n <SettingsIcon />\n </IconButton>\n <IconButton\n className={classes.clearChatButton}\n data-qa=\"delet-chat-button\"\n onClick={handleClearChat}\n >\n <TrashIcon />\n {intl.formatMessage({ id: 'clearChat' })}\n </IconButton>\n </Grid>\n </Collapse>\n {isSettingsOpen && (\n <ChatSettings onClose={handleSettingsClose} />\n )}\n </div>\n </Grid>\n );\n};\n\nexport default observer(MessageInput);\n","import { useEffect, useState } from 'react';\n\nconst useLandscapeOrientation = () => {\n const [isLandscape, setIsLandscape] = useState(window.matchMedia('(orientation: landscape)').matches);\n\n useEffect(() => {\n const handleOrientationChange = (mqList: MediaQueryListEvent) => { setIsLandscape(mqList.matches) };\n const mqList = window.matchMedia('(orientation: landscape)');\n mqList.addEventListener('change', handleOrientationChange);\n\n return () => { mqList.removeEventListener('change', handleOrientationChange)};\n }, [])\n\n return isLandscape;\n}\n\nexport default useLandscapeOrientation;","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-virtuoso\");","import Typography from '@mui/material/Typography';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport Message from 'keystone/chat/message';\n\ninterface IChangedChannel {\n message: Message;\n}\n\nconst ChangedChannel: FC<IChangedChannel> = (props) => {\n const {\n message: { systemData },\n } = props;\n\n return (\n <>\n <Typography variant=\"body2\" noWrap>\n <FormattedMessage id=\"systemMessageChangedChannelName\" />\n </Typography>\n <Typography variant=\"body2\" fontWeight={600} noWrap>\n {systemData?.newName}\n </Typography>\n </>\n );\n};\n\nexport default ChangedChannel;\n","import Typography from '@mui/material/Typography';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport Message from 'keystone/chat/message';\n\ninterface IUserChanged {\n message: Message;\n}\n\nconst UserChanged: FC<IUserChanged> = (props) => {\n const {\n message: { systemData },\n } = props;\n\n return (\n <>\n <Typography variant=\"body2\" fontWeight={600} noWrap>\n {systemData?.oldDisplayName}\n </Typography>\n <Typography variant=\"body2\" noWrap>\n <FormattedMessage id=\"systemMessageChangedName\" />\n </Typography>\n <Typography variant=\"body2\" fontWeight={600} noWrap>\n {systemData?.newDisplayName}\n </Typography>\n </>\n );\n};\n\nexport default UserChanged;\n","import Typography from '@mui/material/Typography';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport Message from 'keystone/chat/message';\n\ninterface IUserChangedChannel {\n message: Message;\n}\n\nconst UserChangedChannel: FC<IUserChangedChannel> = (props) => {\n const {\n message: { systemData },\n } = props;\n\n return (\n <>\n <Typography variant=\"body2\" fontWeight={600} noWrap>\n {systemData?.whoRenamedChannel?.maybeCurrent?.displayName}\n </Typography>\n <Typography variant=\"body2\" noWrap>\n <FormattedMessage id=\"systemMessageUserChangedChannelName\" />\n </Typography>\n <Typography variant=\"body2\" fontWeight={600} noWrap>\n {systemData?.newName}\n </Typography>\n </>\n );\n};\n\nexport default UserChangedChannel;\n","import Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport Message from 'keystone/chat/message';\n\ninterface IUserJoined {\n message: Message;\n}\n\nconst UserJoined: FC<IUserJoined> = (props) => {\n const {\n message: { systemData },\n } = props;\n\n return (\n <>\n <Grid item zeroMinWidth>\n <Typography variant=\"body2\" fontWeight={600} noWrap>\n {systemData?.whoJoined?.maybeCurrent?.displayName}\n </Typography>\n </Grid>\n <Typography variant=\"body2\" noWrap>\n <FormattedMessage id=\"joined\" />\n </Typography>\n </>\n );\n};\n\nexport default observer(UserJoined);\n","import Grid from '@mui/material/Grid';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC } from 'react';\nimport Message, { SystemMessageEnum } from 'keystone/chat/message';\nimport ChangedChannel from './components/ChangedChannel';\nimport UserChanged from './components/UserChanged';\nimport UserChangedChannel from './components/UserChangedChannel';\nimport UserJoined from './components/UserJoined';\n\ninterface ISystemMessageProps {\n message: Message;\n}\n\nconst SystemMessage: FC<ISystemMessageProps> = (props) => {\n const { message } = props;\n const {\n meta: { event },\n } = message;\n\n const renderMessage = () => {\n switch (event) {\n case SystemMessageEnum.UserJoinedEvent:\n return <UserJoined message={message} />;\n case SystemMessageEnum.UserChangedEvent:\n return <UserChanged message={message} />;\n case SystemMessageEnum.UserChangedChannelEvent:\n return <UserChangedChannel message={message} />;\n case SystemMessageEnum.ChangedChannelEvent:\n return <ChangedChannel message={message} />;\n default:\n return null;\n }\n };\n\n return (\n <Grid container justifyContent=\"center\" alignItems=\"center\" wrap=\"nowrap\" columnGap={1}>\n {renderMessage()}\n </Grid>\n );\n};\n\nexport default observer(SystemMessage);\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"linkify-react\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/MoreHoriz\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Menu\");","import makeStyles from '@mui/styles/makeStyles';\nimport { Theme } from '@mui/system/createTheme';\nimport { COLOURS } from 'theme/consts';\n\nconst minWidth = 130;\n\nconst ICON_SIZE = {\n XS: 15,\n};\n\nexport default makeStyles((theme: Theme) => ({\n paper: {\n padding: 8,\n border: `solid 2px ${COLOURS.SECONDARY_02}`,\n overflow: 'auto',\n boxShadow: '0px 4px 20px rgba(0, 0, 0, 0.07)',\n '& ul': {\n padding: 0,\n width: 'fit-content!important',\n minWidth,\n },\n backgroundColor: COLOURS.BG\n },\n menuItem: {\n padding: 6,\n minHeight: 'initial',\n lineHeight: '24px',\n borderRadius: 5,\n color: COLOURS.ACCENT_05,\n '&:hover': {\n backgroundColor: COLOURS.ACCENT_05,\n color: COLOURS.ACCENT_01\n }\n },\n icon: {\n color: theme.palette.grey[400],\n marginRight: 12,\n fontSize: ICON_SIZE.XS,\n },\n}));\n","import React from 'react';\nimport MenuMUI, { MenuProps } from '@mui/material/Menu';\n\nimport useStyles from './styles';\n\nexport const DropMenu: React.FC<MenuProps> = (props) => {\n const { open, onClose, anchorEl, children, ...restProps } = props;\n const classes = useStyles();\n\n return (\n <MenuMUI\n disableAutoFocusItem\n open={open}\n classes={{ paper: classes.paper }}\n anchorEl={anchorEl}\n onClose={onClose}\n {...restProps}\n >\n {children}\n </MenuMUI>\n );\n};\n\nexport default DropMenu;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/MenuItem\");","import MenuItem, { MenuItemProps } from '@mui/material/MenuItem';\n\nimport cls from 'classnames';\nimport React from 'react';\nimport useStyles from './styles';\n\ninterface IProps {\n onClose?: () => void;\n href?: string;\n action?: (e: React.SyntheticEvent) => void;\n className?: string;\n}\n\nexport const DropMenuItem: React.FC<IProps & MenuItemProps> = (props) => {\n const { disabled, selected, children, divider, href, action, onClose, className } = props;\n const classes = useStyles();\n\n const onClick = (e: React.SyntheticEvent) => {\n if (href) {\n window.open(href, '_target');\n return;\n }\n if (action) {\n e.preventDefault();\n e.stopPropagation();\n action(e);\n }\n if (onClose) {\n onClose();\n }\n };\n\n return (\n <MenuItem\n onClick={onClick}\n disableRipple\n divider={divider}\n disabled={disabled}\n selected={selected}\n classes={{ root: cls(classes.menuItem, className) }}\n >\n {children}\n </MenuItem>\n );\n};\n\nexport default DropMenuItem;\n","import { deleteMessage, muteUser, unmuteUser, pinMessage } from 'containers/ChannelPage/service';\nimport MoreButton from 'hoc/MoreButtonHOC';\nimport Message from 'keystone/chat/message';\nimport useKeystone from 'keystone';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { DropMenuItem } from 'ui-kit/components/DropMenu';\nimport User from 'keystone/chat/user';\n\ninterface IProps {\n message: Message;\n user: User;\n onClose?: () => void;\n}\n\nconst MessageActions: FC<IProps> = (props) => {\n const { onClose, user, message } = props;\n\n const root = useKeystone();\n\n const onPinMessage = () => {\n pinMessage(root, Number(message.id));\n if (onClose) onClose();\n };\n\n const onDeleteMessage = () => {\n deleteMessage(Number(message.id));\n if (onClose) onClose();\n };\n\n const onMuteUser = () => {\n muteUser(user.id);\n if (onClose) {\n onClose();\n }\n };\n\n const onUnmuteUser = () => {\n unmuteUser(user.id);\n if (onClose) {\n onClose();\n }\n };\n\n return (\n <>\n <DropMenuItem action={onPinMessage}>\n <FormattedMessage id=\"pinMessage\" />\n </DropMenuItem>\n <DropMenuItem action={onDeleteMessage}>\n <FormattedMessage id=\"deleteMessage\" />\n </DropMenuItem>\n {user.isMuted ? (\n <DropMenuItem action={onUnmuteUser}>\n <FormattedMessage id=\"unmuteUser\" />\n </DropMenuItem>\n ) : (\n <DropMenuItem action={onMuteUser}>\n <FormattedMessage id=\"muteUser\" />\n </DropMenuItem>\n )}\n </>\n );\n};\n\nexport default MoreButton(MessageActions);\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport Grid from '@mui/material/Grid';\n\nimport { Avatar } from 'ui-kit';\nimport User from 'keystone/chat/user';\n\ninterface IProps {\n user: User;\n}\nconst UserMessageAvatar: React.FC<IProps> = (props) => {\n const { user } = props;\n\n return (\n <Grid\n item\n component={Avatar}\n name={user.displayName}\n src={user.avatarUrl}\n size=\"lg\"\n avatarColor={user?.getAvatarColor}\n />\n );\n};\n\nexport default observer(UserMessageAvatar);\n","import { getDirectsList } from 'components/DirectList/service';\nimport { Root } from 'keystone';\nimport * as Sentry from '@sentry/react';\n\nimport { POST } from '../../api';\nimport Channel from '../../keystone/chat/channel';\nimport User from '../../keystone/chat/user';\nimport { joinChannel } from '../../keystone/service';\nimport Routes from '../../routes';\nimport { IRChannel } from '../../types/serverResponses';\nimport logger from 'utils/logger';\n\nexport const createNewDirectChannel = async (root: Root, chatWithUser: User): Promise<IRChannel | undefined> => {\n try {\n const channel = (await POST(`channels/create-direct`, {\n userId: chatWithUser.id,\n })) as IRChannel;\n await getDirectsList(root);\n\n return channel;\n } catch (error) {\n logger.error('Failed to create direct channel', {\n case: 'createNewDirectChannel',\n error,\n chatWithUserId: chatWithUser.id\n })\n Sentry.captureException(error, (scope) => scope.setTransactionName('create direct'));\n }\n};\nexport const searchDirectChannelWithUser = (root: Root, chatWithUser: User): Channel | undefined => {\n const directChannels = root.chat.directChannelsList;\n return directChannels.find((channel) => channel.directUsersOnly.find((u) => u.id === chatWithUser.id));\n};\n\nexport const createOrOpenDirectChat = async (root: Root, chatWithUser: User): Promise<void> => {\n const channel = searchDirectChannelWithUser(root, chatWithUser);\n if (channel?.id) return root.ui.setRoute(`${Routes.Channels}/${channel.id}`);\n\n const newChannel = await createNewDirectChannel(root, chatWithUser);\n if (newChannel) {\n await joinChannel(root, newChannel.id);\n return root.ui.setRoute(`${Routes.Channels}/${newChannel.id}`);\n }\n};\n","import makeStyles from '@mui/styles/makeStyles';\n\nexport default makeStyles(\n {\n link: {\n '&:hover': {\n cursor: 'pointer',\n textDecoration: 'underline',\n },\n },\n },\n {\n name: 'UserMessageDisplayName',\n },\n);\n","import React, { FC } from 'react';\nimport cls from 'classnames';\nimport { observer } from 'mobx-react-lite';\nimport { Grid } from '@mui/material';\nimport Typography from '@mui/material/Typography';\nimport { FormattedMessage } from 'react-intl';\n\nimport useKeystone from 'keystone';\nimport User from 'keystone/chat/user';\nimport { ChannelTypeEnum, UserRoleEnum } from 'types/enums';\nimport MutedIcon from 'ui-kit/icons/MutedIcon';\nimport { createOrOpenDirectChat } from 'containers/UsersListPage/services';\nimport { Size } from 'ui-kit/components/Avatar/Avatar';\n\nimport useStyles from './styles';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n user: User;\n own: boolean;\n}\n\nconst UserMessageDisplayName: FC<IProps> = (props) => {\n const { user, own } = props;\n const classes = useStyles();\n\n const root = useKeystone();\n const { ui, chat, settings } = root;\n const channelId = String(ui.params.id);\n const currentChannel = chat.channels.get(channelId);\n\n const directAllowed = settings.displayDirect;\n const publicChannel = currentChannel?.type === ChannelTypeEnum.Public;\n\n const directMessageConditions = directAllowed && publicChannel && !own;\n\n const openNewChat = () => {\n if (directMessageConditions) {\n createOrOpenDirectChat(root, user);\n }\n };\n\n return (\n <Grid\n container\n marginLeft={own ? '5px' : \"8px\"}\n marginRight={own ? \"8px\" : '5px'}\n alignItems=\"center\"\n direction={own ? 'row-reverse' : 'row'}\n wrap=\"nowrap\"\n width={`calc(100% - ${Size.lg + 8 + 5}px)`}\n gap=\"8px\"\n justifyContent=\"flex-start\"\n >\n <Grid\n container\n flexWrap=\"nowrap\"\n overflow=\"hidden\"\n direction={own ? 'row-reverse' : 'row'}\n width=\"auto\"\n >\n <Typography\n component=\"div\"\n variant=\"body2\"\n fontWeight={600}\n onClick={openNewChat}\n className={cls({ [classes.link]: directMessageConditions })}\n overflow=\"hidden\"\n textOverflow=\"ellipsis\"\n whiteSpace=\"nowrap\"\n color={COLOURS.PRIMARY}\n >\n {user.displayName}\n </Typography>\n {user.isMuted && (\n <Grid\n container\n width=\"auto\"\n alignItems=\"center\"\n marginLeft={own ? undefined : '2px'}\n marginRight={own ? '2px' : undefined}\n >\n <MutedIcon style={{ color: COLOURS.SECONDARY_03 }} />\n </Grid>\n )}\n </Grid>\n {user.role === UserRoleEnum.Moderator && (\n <Typography\n component=\"div\"\n variant=\"body2\"\n fontWeight={500}\n color={COLOURS.SECONDARY_03}\n whiteSpace=\"nowrap\"\n >\n <FormattedMessage id=\"badge.role.admin\" />\n </Typography>\n )}\n </Grid>\n );\n};\n\nexport default observer(UserMessageDisplayName);\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\nimport { button } from 'theme/styles';\nimport { IProps } from './types';\n\nexport const styles = {\n message: {\n backgroundColor: COLOURS.SECONDARY_01,\n color: COLOURS.PRIMARY,\n padding: '6px 8px',\n margin: '0 0 0 64px',\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n wordBreak: 'break-word',\n borderRadius: (props: IProps) => (props?.short ? 10 : '0 10px 10px 10px'),\n },\n messageOwn: {\n backgroundColor: (props: IProps) => COLOURS[props?.user?.getAvatarColor || 'AVATAR2_RED'],\n color: COLOURS.CONTRAST,\n margin: '0 64px 0 0',\n borderRadius: (props: IProps) => (props?.short ? 10 : '10px 0 10px 10px'),\n },\n messageBlock: {\n display: 'flex',\n alignItems: 'flex-start',\n flexWrap: 'nowrap',\n '@media (hover: hover)': {\n '&:hover > #chat-message-block': {\n transition: 'background-color 0.3s',\n backgroundColor: COLOURS.SECONDARY_02,\n },\n '&:hover > #chat-message-block::before': {\n transition: 'border-color 0.3s',\n borderRightColor: COLOURS.SECONDARY_02,\n },\n },\n '& > #more-container': {\n flexShrink: 0,\n margin: '0 4px',\n width: '32px',\n height: '32px',\n visibility: (props: IProps) => props.open ? 'visible' : 'hidden',\n },\n '& > #more-container > button': {\n ...button,\n padding: 0,\n width: '32px',\n height: '32px',\n }\n },\n messageBlockOwn: {\n '@media (hover: hover)': {\n '&:hover > #chat-message-block': {\n backgroundColor: (props: IProps) => COLOURS[props?.user?.getAvatarColor || 'AVATAR2_RED'],\n },\n }\n },\n tooltip: {\n backgroundColor: 'transparent',\n boxShadow: 'none',\n borderRadius: 'none',\n marginLeft: '-10px!important',\n marginRight: '-5px!important',\n maxWidth: 'none',\n },\n messageTip: {\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n left: 1,\n top: 5,\n width: 0,\n height: 0,\n border: '10px solid transparent',\n borderRightColor: COLOURS.SECONDARY_01,\n borderLeft: 0,\n borderTop: 0,\n marginTop: '-5px',\n marginLeft: '-10px',\n },\n },\n messageTipOwn: {\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n right: 1,\n top: 5,\n width: 0,\n height: 0,\n border: '10px solid transparent',\n borderLeftColor: (props: IProps) => COLOURS[props?.user?.getAvatarColor || 'AVATAR2_RED'],\n borderRight: 0,\n borderTop: 0,\n marginTop: '-5px',\n marginRight: '-10px',\n }\n },\n removedLink: {\n color: COLOURS.SECONDARY_02,\n }\n} as const;\n\nexport default makeStyles(styles, { name: 'Message' });\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\nimport { styles } from './styles';\nimport { IProps } from './types';\n\nexport default makeStyles({\n ...styles,\n message: {\n ...styles.message,\n transition: 'background-color 0.3s',\n backgroundColor: (props: IProps) => props.open ? COLOURS.SECONDARY_01 : COLOURS.SECONDARY_02,\n padding: '2px 8px',\n },\n messageTip: {\n ...styles.messageTip,\n '&::before': {\n ...styles.messageTip['&::before'],\n transition: 'border-color 0.3s',\n borderRightColor: (props: IProps) => props.open ? COLOURS.SECONDARY_01 : COLOURS.SECONDARY_02,\n }\n },\n messageBlock: {\n ...styles.messageBlock,\n '& > #more-container > button': {\n visibility: 'hidden',\n }\n }\n})","import cls from 'classnames';\nimport Linkify from 'linkify-react';\nimport Message from 'keystone/chat/message';\nimport MessageActions from '../MessageActions';\nimport React, { FC, useState } from 'react';\nimport useKeystone from 'keystone';\nimport User from 'keystone/chat/user';\nimport UserMessageAvatar from './components/UserMessageAvatar';\nimport UserMessageDisplayName from './components/UserMessageDisplayName';\nimport useStyles from './styles';\nimport useMobileStyles from './styles.mobile';\nimport { Box, Grid, Typography } from '@mui/material';\nimport { ChannelTypeEnum } from 'types/enums';\nimport { COLOURS } from 'theme/consts';\nimport { formatDate, getPreparedDate } from 'utils/date';\nimport MoreVert from 'ui-kit/icons/MoreVert';\nimport { observer } from 'mobx-react-lite';\nimport { useIntl } from 'react-intl';\n\nexport interface IProps {\n message: Message;\n user?: User;\n short?: boolean;\n showLineTime: boolean;\n}\n\nconst UserMessage: FC<IProps> = (props) => {\n const { message, short, showLineTime, user } = props;\n const { auth, chat, ui } = useKeystone();\n const intl = useIntl();\n const [open, setOpen] = useState(false);\n\n const own = user?.id === `${auth.me.id}`;\n\n const channelId = String(ui.params.id);\n\n const currentChannel = chat.channels.get(channelId);\n const isPublic = currentChannel?.type === ChannelTypeEnum.Public;\n\n const styleProps = {user, short, open};\n const classes = ui.isMobile ? useMobileStyles(styleProps) : useStyles(styleProps);\n const showActionButtons = auth.isModerator && isPublic;\n\n const filterMessage = (message: string) => {\n const allowedText = message.split('{{system.linkRemoved}}');\n const messageText = allowedText.length === 1 ? message : allowedText.flatMap(\n (text, idx) => [text, <span key={idx} className={classes.removedLink}>{intl.formatMessage({ id: 'linkRemoved' })}</span>]).slice(0, -1);\n\n return messageText;\n }\n\n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (!ui.isMobile) {\n return;\n }\n\n const target = e.target as HTMLElement;\n\n if (!target.closest('#chat-message-container')) {\n return;\n }\n\n /* workaround MoreButtonHOC, to avoid big refactoring */\n const moreButton = e.currentTarget.querySelector('#more-container > button')\n moreButton?.dispatchEvent(new MouseEvent('click', { view: window, bubbles: true, buttons: 1 }));\n setOpen(true);\n }\n\n if (!user) return null;\n\n const messageText = filterMessage(message.text);\n\n return (\n <>\n {showLineTime && (\n <Grid container height=\"36px\" paddingTop=\"8px\" alignItems=\"center\" justifyContent=\"center\">\n <Typography color={COLOURS.SECONDARY} variant=\"body2\" textAlign=\"center\">\n {getPreparedDate(message.createdAt, true)}\n </Typography>\n </Grid>\n )}\n {!short && (\n <Grid\n container\n alignItems=\"center\"\n direction={own ? 'row-reverse' : 'row'}\n paddingTop={showLineTime ? '8px' : '16px'}\n paddingLeft=\"16px\"\n paddingRight=\"16px\"\n wrap=\"nowrap\"\n >\n <UserMessageAvatar user={user} />\n <UserMessageDisplayName user={user} own={own} />\n </Grid>\n )}\n <Grid\n id=\"chat-message-container\"\n container\n alignItems=\"center\"\n direction={own ? 'row-reverse' : 'row'}\n paddingTop={short ? '2px' : 0}\n onMouseEnter={() => setOpen(true)}\n onMouseLeave={() => setOpen(false)}\n className={cls(classes.messageBlock, {[classes.messageBlockOwn]: own})}\n onClick={handleClick}\n >\n <Grid\n id=\"chat-message-block\"\n item\n container\n className={cls(classes.message, {\n [classes.messageTip]: !short && !own,\n [classes.messageTipOwn]: !short && own,\n [classes.messageOwn]: own,\n })}\n position=\"relative\"\n width=\"auto\"\n alignItems=\"center\"\n columnGap={0.8}\n wrap=\"nowrap\"\n >\n <Grid item component={Typography} xs data-qa=\"chat-msg\">\n <Linkify options={{ target: '_blank' }}>{messageText}</Linkify>\n </Grid>\n <Typography\n alignSelf=\"end\"\n variant=\"subtitle2\"\n fontFamily=\"PTRootUIWebRegular\"\n lineHeight=\"18px\"\n pl={0.5}\n component=\"span\"\n sx={{ color: own ? COLOURS.SECONDARY_02 : COLOURS.SECONDARY_03 }}\n >\n {formatDate(message.createdAt)}\n </Typography>\n </Grid>\n <Box\n position=\"relative\"\n id=\"more-container\"\n >\n {showActionButtons && (\n <MessageActions\n message={message}\n user={user}\n icon={<MoreVert />}\n onClose={() => { setOpen(false) }}\n />\n )}\n </Box>\n </Grid>\n </>\n );\n};\n\nexport default observer(UserMessage);\n","import { Box } from '@mui/system';\nimport Message from 'keystone/chat/message';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { MessageTypeEnum } from 'types/enums';\nimport SystemMessage from '../SystemMessage';\nimport UserMessage from '../UserMessage';\n\ninterface IProps {\n message: Message;\n short: boolean;\n last: boolean;\n showLineTime: boolean;\n index: number;\n}\n\nconst MessageRow: React.FC<IProps> = (props) => {\n const { message, short, last, index, showLineTime } = props;\n const style = { paddingBottom: last ? '35px' : '0' };\n\n const user = message.user?.current;\n\n switch (message.type) {\n case MessageTypeEnum.User:\n return (\n <Box sx={style}>\n <UserMessage short={short} user={user} message={message} showLineTime={showLineTime} />\n </Box>\n );\n case MessageTypeEnum.System:\n return (\n <div style={{ paddingTop: index ? '30px' : 0 }}>\n <SystemMessage message={message} />\n </div>\n );\n default:\n return null;\n }\n};\n\nexport default observer(MessageRow);\n","import makeStyles from '@mui/styles/makeStyles';\n\nexport const styles = {\n virtListWrapper: {\n flex: '1 1 auto',\n overflow: 'hidden',\n },\n} as const;\n\nexport default makeStyles(styles, { name: 'MessageList' });\n","import makeStyles from '@mui/styles/makeStyles';\nimport { styles } from './styles';\nimport { COLOURS } from 'theme/consts';\n\nexport default makeStyles({\n ...styles,\n virtListWrapper: {\n ...styles.virtListWrapper,\n backgroundColor: COLOURS.SECONDARY_01,\n }\n\n}, { name: 'MessageList' });","import useKeystone from 'keystone';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC, useCallback, useEffect, useRef, useState } from 'react';\nimport { Virtuoso, VirtuosoHandle } from 'react-virtuoso';\nimport { MAX_CHANNEL_MESSAGES } from 'utils/consts';\nimport { checkDateWhen, checkDayInterval } from 'utils/date';\nimport { fetchMessagesBefore } from '../../keystone/service';\nimport MessageRow from './components/MessageRow';\nimport useStyles from './styles';\nimport useMobileStyles from './styles.mobile';\nimport useEventHook from '../../hooks/useEventHook';\nimport { EventBusEventEnum, ListenerEventEnum } from '../../utils/eventBus/types';\nimport { eventBus } from 'mobx-event-bus2';\nimport eventEmitter from 'utils/eventBus';\n\ninterface MessageListProps {\n channelId: string;\n}\n\nconst MessageList: FC<MessageListProps> = (props) => {\n const { channelId } = props;\n const virtuosoRef = useRef<VirtuosoHandle | null>(null);\n const { ui, chat } = useKeystone();\n const classes = ui.isMobile ? useMobileStyles() : useStyles();\n const root = useKeystone();\n const [firstItemIndex, setFirstItemIndex] = useState(MAX_CHANNEL_MESSAGES);\n const [prevMessagesLength, setPrevMessagesLength] = useState(0);\n const [isFullyFetched, setIsFullyFetched] = useState(false);\n\n const channel = chat.channels.get(channelId);\n\n useEffect(() => {\n if (channel) {\n eventEmitter.emit(ListenerEventEnum.App, {\n event: EventBusEventEnum.ChatIsReady,\n });\n eventBus.post('chat.isReady', true);\n }\n }, [channel]);\n\n if (!channel) {\n return <>Channel not found</>;\n }\n\n const sortedMessages = channel.sortedMessages;\n\n // watching for messages length changes to prevent scroll when more messages are being loaded\n // https://virtuoso.dev/prepend-items/\n useEffect(() => {\n const diff = sortedMessages.length - prevMessagesLength;\n setPrevMessagesLength(sortedMessages.length);\n if (diff > 1) { // to avoid chat flickering when user sends a message\n setFirstItemIndex(firstItemIndex - diff);\n }\n }, [channel.sortedMessages.length]);\n\n useEventHook(ListenerEventEnum.App, ({ event }) => {\n if (event === EventBusEventEnum.MessageSent) {\n virtuosoRef.current?.scrollToIndex({ index: channel.sortedMessages.length - 1, behavior: 'smooth' });\n }\n });\n\n useEffect(() => {\n ui.setJumpToMessage((index) => {\n virtuosoRef.current?.scrollToIndex({ index, behavior: 'smooth' });\n });\n }, []);\n\n const fetchMore = useCallback(async () => {\n if (!isFullyFetched) {\n const newMessages = await fetchMessagesBefore(root, Number(channelId), Number(sortedMessages[0]?.id));\n if (!newMessages) {\n setIsFullyFetched(true);\n }\n }\n }, [sortedMessages[0]?.id, isFullyFetched]);\n\n return (\n <div className={classes.virtListWrapper} data-qa=\"message-list\">\n {/* do not use vertical margins in children, that will break calc of size height */}\n <Virtuoso\n style={{ overflow: 'hidden auto' }}\n ref={virtuosoRef}\n firstItemIndex={firstItemIndex}\n overscan={100}\n startReached={fetchMore}\n initialTopMostItemIndex={Math.max(sortedMessages.length - 1, 0)}\n totalCount={sortedMessages.length}\n data={sortedMessages}\n itemContent={(virtuosoIndex, message) => {\n const index = virtuosoIndex - firstItemIndex;\n let short = false;\n let prevMessage = null;\n if (index > 0) {\n prevMessage = sortedMessages[index - 1];\n short = message?.user?.current.id === prevMessage?.user?.current.id;\n }\n\n const last = index === sortedMessages.length - 1;\n\n const showLineTime = prevMessage && checkDayInterval(message.createdAt, prevMessage?.createdAt || '0') >= 1;\n const showLineTimeInTheBeginning = index === 0 && !checkDateWhen(message.createdAt, 'today');\n\n return (\n <MessageRow\n key={message.id}\n message={message}\n index={index}\n short={short}\n last={last}\n showLineTime={showLineTime || showLineTimeInTheBeginning}\n />\n );\n }}\n followOutput={(isAtBottom: boolean) => {\n if (isAtBottom) {\n return 'smooth';\n } else {\n return false;\n }\n }}\n />\n </div>\n );\n};\n\nexport default observer(MessageList);\n","export const MIN_SOCKET_RECONNECT_TIME = 1500;\nexport const MAX_CHANNEL_MESSAGES = 150000;","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\nimport { button } from 'theme/styles';\n\nexport const styles = {\n root: {\n padding: '10px 16px',\n flexWrap: 'nowrap',\n background: COLOURS.ACCENT_01,\n alignItems: 'center',\n },\n pinButton: {\n ...button,\n backgroundColor: 'inherit',\n marginLeft: 'auto',\n },\n pinnedMessage: {\n color: COLOURS.ACCENT,\n marginTop: 4,\n flexBasis: '100%',\n },\n pinDate: {\n fontFamily: \"PTRootUIWebRegular\",\n color: COLOURS.SECONDARY_03,\n lineHeight: '16px',\n },\n pinContainer: {\n color: COLOURS.PRIMARY,\n cursor: 'pointer',\n marginRight: '8px',\n overflow: 'hidden',\n }\n} as const;\n\nexport default makeStyles(styles);\n","import makeStyles from '@mui/styles/makeStyles';\nimport { styles } from './styles';\nimport { COLOURS, zINDEX } from 'theme/consts';\n\n\nexport default makeStyles({\n ...styles,\n root: {\n ...styles.root,\n padding: '8px 16px',\n borderBottom: 'none',\n boxShadow: '0px 2px 16px rgba(29, 29, 44, 0.12)',\n zIndex: zINDEX.HEADER,\n }\n});\n","import Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport { deletePinnedMessage } from 'containers/ChannelPage/service';\nimport { format } from 'date-fns';\nimport useKeystone from 'keystone';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { UserRoleEnum } from 'types/enums';\nimport PinnedIcon from 'ui-kit/icons/PinnedIcon';\nimport { checkDateWhen, formatDate } from 'utils/date';\nimport { fetchMessagesBefore } from 'keystone/service';\nimport useStyles from './styles';\nimport useMobileStyles from './styles.mobile';\n\nconst PinnedMessageList: React.FC = () => {\n const root = useKeystone();\n const { ui, chat, auth } = root;\n const classes = ui.isMobile ? useMobileStyles() : useStyles();\n const channelId = String(ui.params.id);\n const currentChannel = chat.channels.get(channelId);\n\n const pinnedMessage = currentChannel?.lastPinnedMessage;\n if (!pinnedMessage) return null;\n\n const user = pinnedMessage.user.current;\n const date = new Date(pinnedMessage.message.createdAt);\n\n const onDeletePinnedMessage = () => deletePinnedMessage(pinnedMessage.id);\n\n const scrollToPinnedMessage = async () => {\n const msgIdx = currentChannel.findMessageIdx(pinnedMessage.messageId);\n\n if (msgIdx > -1) {\n ui.jumpToMessage(msgIdx);\n } else {\n await fetchMessagesBefore(root, Number(channelId), Number(currentChannel.sortedMessages[0].id), {\n until: Number(pinnedMessage.messageId),\n });\n setTimeout(() => {ui.jumpToMessage(0);}, 1000);\n }\n };\n\n /* FIXME: formatDate is actually a hook, this is a conditional use of hook */\n const pinDate = formatDate(\n pinnedMessage.message.createdAt,\n `dd MMMM ${!checkDateWhen(pinnedMessage.message.createdAt, 'year') ? 'yyyy' : ''} HH:mm`,\n )\n\n return (\n <Grid\n container\n className={classes.root}\n >\n <Grid item className={classes.pinContainer} container onClick={scrollToPinnedMessage}>\n <Typography noWrap variant=\"body2\" fontWeight=\"bold\" marginRight=\"8px\">\n {user.displayName}\n </Typography>\n <Typography\n className={classes.pinDate}\n variant=\"body2\"\n title={format(date, 'MM/dd/yyyy, HH:mm')}\n >\n {pinDate}\n </Typography>\n <Typography noWrap className={classes.pinnedMessage} >{pinnedMessage.message.text}</Typography>\n </Grid>\n {auth.me.role === UserRoleEnum.Moderator && (\n <IconButton onClick={onDeletePinnedMessage} className={classes.pinButton}>\n <PinnedIcon />\n </IconButton>\n )}\n </Grid>\n );\n};\n\nexport default observer(PinnedMessageList);\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Box\");","import Box from '@mui/material/Box';\nimport { getDirectChannelName } from 'components/DirectList/service';\nimport SubHeader from 'components/SubHeader';\nimport useKeystone from 'keystone';\nimport Channel from 'keystone/chat/channel';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC, useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport Routes from 'routes';\nimport { ChannelTypeEnum } from 'types/enums';\nimport { Button } from 'ui-kit';\nimport HeaderTitle from 'ui-kit/HeaderTitle';\nimport ChatIcon from 'ui-kit/icons/ChatIcon';\n\ninterface IProps {\n currentChannel: Channel;\n isModerator: boolean;\n}\nconst ChannelPageHeader: FC<IProps> = (props) => {\n const { currentChannel, isModerator } = props;\n const root = useKeystone();\n const { ui, settings } = root;\n const isPublic = currentChannel?.type === ChannelTypeEnum.Public;\n const isDirect = currentChannel?.type === ChannelTypeEnum.Direct;\n\n const { displayChannelList, displayDirect } = settings;\n const showBackForDirect = !displayChannelList && isDirect;\n\n const onPollsClick = useCallback(() => {\n ui.setRoute(`${Routes.Polls}/${currentChannel.id}`);\n }, []);\n const onDirectClick = useCallback(() => {\n ui.setRoute(`${Routes.Direct}`);\n }, []);\n\n const channelName =\n currentChannel.type === ChannelTypeEnum.Direct\n ? getDirectChannelName(root, currentChannel.id)\n : <FormattedMessage id=\"chat\" />;\n\n const goBack = useCallback(() => {\n ui.back();\n }, []);\n\n return (\n <SubHeader\n onBack={displayChannelList || showBackForDirect ? goBack : undefined}\n >\n <span data-channel-id={currentChannel.id} data-channel-ext-id={currentChannel.externalId} />\n <HeaderTitle\n active={isModerator}\n >\n {isModerator && <ChatIcon />}\n <span>{channelName}</span>\n </HeaderTitle>\n\n {isModerator && isPublic && (\n <Box ml={4}>\n <Button\n data-qa=\"pollStart\"\n variant=\"link\"\n onClick={onPollsClick}\n >\n <HeaderTitle>\n <FormattedMessage id=\"polls\" />\n </HeaderTitle>\n </Button>\n </Box>\n )}\n {displayDirect && isPublic && (\n <Box ml={4}>\n <Button\n data-qa=\"onDirectClick\"\n variant=\"link\"\n onClick={onDirectClick}>\n <HeaderTitle>\n <FormattedMessage id=\"menuDirect\" />\n </HeaderTitle>\n </Button>\n </Box>\n )}\n </SubHeader>\n );\n};\n\nexport default observer(ChannelPageHeader);\n","import MessageInput from 'components/MessageInput';\nimport MessageList from 'components/MessageList';\nimport PinnedMessageList from 'components/PinnedMessageList';\nimport useKeystone from 'keystone';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC, useEffect } from 'react';\n\nimport { ChannelTypeEnum, UserRoleEnum } from 'types/enums';\nimport ChannelPageHeader from './components/ChannelPageHeader';\nimport { getPinnedMessages } from './service';\n\nconst ChannelPage: FC = () => {\n const root = useKeystone();\n const { auth } = root;\n\n const currentChannel = root.currentChannel;\n\n useEffect(() => {\n currentChannel?.id && getPinnedMessages(root, currentChannel?.id);\n }, []);\n\n if (!currentChannel) {\n return null;\n }\n\n const isModerator = auth.me.role === UserRoleEnum.Moderator;\n const isPublic = currentChannel.type === ChannelTypeEnum.Public;\n\n return (\n <>\n <ChannelPageHeader\n currentChannel={currentChannel}\n isModerator={isModerator}\n />\n {isPublic && <PinnedMessageList />}\n <MessageList channelId={currentChannel?.id} />\n\n {root.settings.showMessageInput && (\n <MessageInput channelId={currentChannel?.id} isModerator={isModerator} isPublic={isPublic} />\n )}\n </>\n );\n};\n\nexport default observer(ChannelPage);\n","import Typography from '@mui/material/Typography';\nimport Grid from '@mui/material/Grid';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useKeystone from 'keystone';\nimport Channel from 'keystone/chat/channel';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport Routes from 'routes';\nimport { COLOURS } from 'theme/consts';\nimport { Avatar } from 'ui-kit';\nimport { getPreparedDate } from 'utils/date';\n\ninterface IProps {\n channel: Channel;\n}\n\nconst useStyles = makeStyles({\n channelRow: {\n padding: '12px 16px',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: COLOURS.LIGHT_04,\n },\n },\n badge: {\n marginRight: 10,\n },\n});\n\nconst LastMessage: FC<IProps> = (props) => {\n const { channel } = props;\n const classes = useStyles();\n const { ui } = useKeystone();\n\n const lastMessage = channel.lastMessage;\n\n const onChannelClick = () => ui.setRoute(`${Routes.Channels}/${channel.id}`);\n\n return (\n <Grid container className={classes.channelRow} onClick={onChannelClick} alignItems=\"center\">\n <Grid item xs={6}>\n <Typography marginBottom=\"6px\">{channel.name}</Typography>\n </Grid>\n <Grid item xs={6} textAlign=\"right\">\n <Typography\n variant=\"body2\"\n fontFamily=\"PTRootUIWebRegular\"\n letterSpacing=\"0.01em\"\n color=\"textSecondary\"\n component=\"span\"\n >\n {getPreparedDate(lastMessage?.createdAt)}\n </Typography>\n </Grid>\n <Grid item container alignItems=\"center\" spacing={1} xs={12} wrap=\"nowrap\">\n {lastMessage && (\n <Grid item>\n <Avatar\n name={lastMessage.getUser?.displayName}\n src={lastMessage.getUser?.avatarUrl}\n size=\"lg\"\n avatarColor={lastMessage.getUser?.getAvatarColor}\n />\n </Grid>\n )}\n\n <Grid item xs zeroMinWidth>\n <Typography pl={1} variant=\"subtitle2\" color=\"textSecondary\" noWrap>\n {lastMessage?.text || <FormattedMessage id=\"channelCreated\" />}\n </Typography>\n </Grid>\n {/* {lastMessage && <Badge badgeContent={channel.messagesCount} color=\"primary\" className={classes.badge} />} */}\n </Grid>\n </Grid>\n );\n};\n\nexport default observer(LastMessage);\n","import makeStyles from '@mui/styles/makeStyles';\n\nexport default makeStyles(\n {\n channelsList: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n },\n },\n\n { name: 'ChannelList' },\n);\n","import Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Button } from 'ui-kit';\nimport useKeystone from 'keystone';\nimport { joinChannel } from 'keystone/service';\nimport Routes from 'routes';\nimport LastMessage from './components/LastMessage';\nimport useStyles from './styles';\n\nconst ChannelList: FC = () => {\n const root = useKeystone();\n const classes = useStyles();\n\n const goToChannel = (id: string) => root.ui.setRoute(`${Routes.Channels}/${id}`);\n\n const onPubClick = (id: string) => async () => {\n await joinChannel(root, id);\n goToChannel(id);\n };\n\n return (\n <div className={classes.channelsList}>\n {root.chat.publicChannelsList.map((item) => (\n <LastMessage key={item.id} channel={item} />\n ))}\n {root.chat.pubsList.map((item) => (\n <Grid container key={item.id} alignItems=\"center\" justifyContent=\"space-between\" sx={{ padding: '12px 16px' }}>\n <Typography variant=\"subtitle2\">{item.name}</Typography>\n <Button onClick={onPubClick(item.id)} variant=\"contained\" size=\"small\">\n <FormattedMessage id=\"join\" />\n </Button>\n </Grid>\n ))}\n </div>\n );\n};\n\nexport default observer(ChannelList);\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport default makeStyles(\n {\n createChannelForm: {\n position: 'absolute',\n zIndex: 10,\n left: '0',\n right: '0',\n bottom: '0',\n },\n wrapper: {\n width: '100%',\n padding: '20px',\n boxSizing: 'border-box',\n animationDuration: '.2s',\n animationName: 'slidein',\n backgroundColor: COLOURS.SURFACE_PRIMARY,\n boxShadow: 'var(--shadow-main-totop)',\n },\n closeButton: {\n width: '42px',\n height: '42px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#aaa',\n position: 'absolute',\n zIndex: 1,\n right: '10px',\n top: '10px',\n transition: 'color .2s ease-in-out',\n '&:hover': { color: 'var(--color-white)' },\n },\n field: {\n margin: '0 0 40px',\n },\n input: {\n border: '1px solid rgba(255,255,255,.2)',\n boxSizing: 'border-box',\n borderRadius: '5px',\n padding: '0 12px',\n height: '48px',\n lineHeight: '48px',\n transition: 'border .2s ease-in-out',\n '&:hover, &:focus': { borderColor: 'rgba(255,255,255,.5)' },\n },\n '@keyframes slidein': {\n from: { transform: 'translateY(100%)', height: '80%' },\n to: { transform: 'translateY(0)', height: '100%' },\n },\n },\n { name: 'CreateChannelForm' },\n);\n","import { observer } from 'mobx-react-lite';\nimport React, { FC, useCallback, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Button, Input } from 'ui-kit';\nimport useStyles from './styles';\n\ninterface ICreateChannelForm {\n onClose: () => void;\n}\n\nconst CreateChannelForm: FC<ICreateChannelForm> = observer((props) => {\n const { onClose } = props;\n const classes = useStyles();\n const intl = useIntl();\n\n const [channelName, setChannelName] = useState('');\n\n const onCreateChannel = useCallback(() => {}, [channelName, setChannelName]);\n\n return (\n <div className={classes.createChannelForm}>\n <div className={classes.wrapper}>\n <button type=\"button\" className={classes.closeButton} onClick={onClose}>\n ✕\n </button>\n <div>\n <h2>\n <FormattedMessage id=\"newChannel\" />\n </h2>\n <div className={classes.field}>\n <Input\n fullWidth\n placeholder={intl.formatMessage({ id: 'channelName' })}\n onChange={setChannelName}\n value={channelName}\n />\n </div>\n <div>\n <Button fullWidth variant=\"submit\" onClick={onCreateChannel}>\n <FormattedMessage id=\"create\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n});\n\nexport default CreateChannelForm;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Skeleton\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Stack\");","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport default makeStyles(\n {\n row: {\n padding: '12px 16px',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: COLOURS.LIGHT_04,\n },\n },\n badge: {\n marginRight: 10,\n },\n },\n { name: 'DirectListRow' },\n);\n","import Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport Channel from 'keystone/chat/channel';\nimport User from 'keystone/chat/user';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Avatar } from 'ui-kit';\nimport { getPreparedDate } from 'utils/date';\nimport useStyles from './styles';\n\ninterface IProps {\n channel: Channel;\n user: User;\n clickRowHandler: (id: string) => void;\n directChannelName: string;\n}\n\nconst DirectListRow: FC<IProps> = (props) => {\n const { channel, user, clickRowHandler, directChannelName } = props;\n const classes = useStyles();\n const lastMessage = channel.lastMessage;\n\n const onClick = () => clickRowHandler(channel.id);\n\n return (\n <Grid item container wrap=\"nowrap\" columnGap={1} className={classes.row} onClick={onClick} alignItems=\"center\">\n <Grid\n item\n xs\n component={Avatar}\n src={user?.avatarUrl}\n avatarColor={user.getAvatarColor}\n size=\"lg\"\n name={user.displayName}\n />\n <Grid item container direction=\"column\">\n <Grid item container alignItems=\"center\" wrap=\"nowrap\">\n <Grid item xs={6} component={Typography}>\n {directChannelName}\n </Grid>\n <Grid item xs={6} textAlign=\"right\">\n <Typography\n variant=\"body2\"\n fontFamily=\"PTRootUIWebRegular\"\n letterSpacing=\"0.01em\"\n color=\"textSecondary\"\n component=\"span\"\n >\n {getPreparedDate(lastMessage?.createdAt)}\n </Typography>\n </Grid>\n </Grid>\n <Grid item container alignItems=\"center\" wrap=\"nowrap\">\n <Grid item xs zeroMinWidth>\n <Typography variant=\"subtitle2\" color=\"textSecondary\" noWrap>\n {lastMessage?.text || <FormattedMessage id=\"channelCreated\" />}\n </Typography>\n </Grid>\n\n {/* {lastMessage && (\n <Grid item>\n <Badge badgeContent={channel.messagesCount} color=\"primary\" className={classes.badge} />\n </Grid>\n )} */}\n </Grid>\n </Grid>\n </Grid>\n );\n};\nexport default observer(DirectListRow);\n","import Grid from '@mui/material/Grid';\nimport Skeleton from '@mui/material/Skeleton';\nimport Stack from '@mui/material/Stack';\nimport useKeystone from 'keystone';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC, useCallback, useEffect, useState } from 'react';\nimport Routes from 'routes';\n\nimport DirectListRow from './components/DirectListRow';\nimport { getChatWithUser, getDirectChannelName, getDirectsList } from './service';\n\nconst SkeletonPage: React.FC = () => {\n return (\n <Stack spacing={1} flexGrow={1} padding=\"20px 12px\" rowGap={2}>\n <Grid item container wrap=\"nowrap\" columnGap={1}>\n <Skeleton variant=\"circular\" width={40} height={40} />\n <Skeleton variant=\"text\" width=\"200px\" />\n </Grid>\n <Grid item container wrap=\"nowrap\" columnGap={1}>\n <Skeleton variant=\"circular\" width={40} height={40} />\n <Skeleton variant=\"text\" width=\"200px\" />\n </Grid>\n <Grid item container wrap=\"nowrap\" columnGap={1}>\n <Skeleton variant=\"circular\" width={40} height={40} />\n <Skeleton variant=\"text\" width=\"200px\" />\n </Grid>\n <Grid item container wrap=\"nowrap\" columnGap={1}>\n <Skeleton variant=\"circular\" width={40} height={40} />\n <Skeleton variant=\"text\" width=\"200px\" />\n </Grid>\n </Stack>\n );\n};\n\nconst DirectList: FC = () => {\n const root = useKeystone();\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n const load = async () => {\n try {\n setLoading(true);\n await getDirectsList(root);\n } finally {\n setLoading(false);\n }\n };\n\n load();\n }, []);\n\n const clickRowHandler = useCallback((channelId: string) => root.ui.setRoute(`${Routes.Channels}/${channelId}`), []);\n const channels = root.chat.directChannelsList;\n\n if (loading && !channels.length) return <SkeletonPage />;\n\n return (\n <Grid container direction=\"column\" flexGrow={1}>\n {channels.map((channel) => {\n const user = getChatWithUser(root, channel.id);\n const directChannelName = getDirectChannelName(root, channel.id);\n\n if (!user) return null;\n\n return (\n <DirectListRow\n key={channel.id}\n channel={channel}\n user={user}\n clickRowHandler={clickRowHandler}\n directChannelName={directChannelName}\n />\n );\n })}\n </Grid>\n );\n};\n\nexport default observer(DirectList);\n","import makeStyles from '@mui/styles/makeStyles';\n\nexport default makeStyles(\n {\n button: {\n '&:nth-of-type(2)': {\n marginLeft: 32,\n },\n },\n },\n { name: 'Channels' },\n);\n","import SubHeader from 'components/SubHeader';\nimport useKeystone from 'keystone';\nimport React from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport Routes from 'routes';\nimport { Button } from 'ui-kit';\nimport HeaderTitle from 'ui-kit/HeaderTitle';\nimport { IProps as IParentProps } from '../../Channels';\nimport useStyles from './styles';\n\ninterface IProps extends IParentProps {}\n\nconst ChannelsHeader: React.FC<IProps> = (props) => {\n const { channelTabType } = props;\n const classes = useStyles();\n\n const { ui, settings } = useKeystone();\n\n const showBackButton = channelTabType === Routes.Direct && !settings.displayChannelList;\n\n const onTabClick = (tabId: string) => () => {\n ui.setRoute(`${tabId}`);\n };\n\n const onBack = () => {\n if (channelTabType === Routes.Direct) {\n ui.back();\n }\n };\n\n return (\n <SubHeader onBack={showBackButton ? onBack : undefined}>\n {settings.displayChannelList && (\n <Button variant=\"link\" onClick={onTabClick(Routes.Channels)} className={classes.button}>\n <HeaderTitle title={<FormattedMessage id='channels' />} active={channelTabType === Routes.Channels} />\n </Button>\n )}\n {settings.displayDirect && (\n <Button variant=\"link\" onClick={onTabClick(Routes.Direct)} className={classes.button}>\n <HeaderTitle title={<FormattedMessage id='direct' />} active={channelTabType === Routes.Direct} />\n </Button>\n )}\n\n </SubHeader>\n );\n};\n\nexport default ChannelsHeader;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Group\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Person\");","import makeStyles from '@mui/styles/makeStyles';\nimport { HEADER_HEIGHT } from 'theme/consts';\n\nexport default makeStyles(\n {\n root: {\n display: 'flex',\n flexWrap: 'nowrap',\n justifyContent: 'center',\n alignItems: 'center',\n height: HEADER_HEIGHT,\n boxShadow: '0px 0px 18px rgba(0, 0, 0, 0.07)',\n width: '100%',\n },\n buttonWrapper: {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'nowrap',\n cursor: 'pointer',\n '& > *': {\n marginRight: 13,\n },\n '&:first-of-type': {\n marginRight: 82,\n },\n },\n },\n { name: 'Footer' },\n);\n","import GroupIcon from '@mui/icons-material/Group';\nimport PersonIcon from '@mui/icons-material/Person';\nimport Typography from '@mui/material/Typography';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport useKeystone from 'keystone';\nimport Routes from 'routes';\nimport useStyles from './styles';\n\nconst Footer: FC = () => {\n const classes = useStyles();\n const root = useKeystone();\n\n return (\n <div className={classes.root}>\n <div className={classes.buttonWrapper} onClick={() => root.ui.setRoute(Routes.Profile)}>\n <PersonIcon />\n <Typography variant=\"body2\">\n <FormattedMessage id=\"profile\" />\n </Typography>\n </div>\n\n <div className={classes.buttonWrapper} onClick={() => root.ui.setRoute(Routes.Users)}>\n <GroupIcon />\n <Typography variant=\"body2\">\n <FormattedMessage id=\"users\" />\n </Typography>\n </div>\n </div>\n );\n};\n\nexport default Footer;\n","import ChannelsList from 'components/ChannelList';\nimport CreateChannelForm from 'components/CreateChannelForm';\nimport DirectList from 'components/DirectList';\nimport useKeystone from 'keystone';\nimport { observer } from 'mobx-react-lite';\nimport React, { useState } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport Routes from 'routes';\nimport { Button } from 'ui-kit';\nimport ChannelsHeader from './components/ChannelsHeader';\nimport Footer from './components/Footer';\n\nexport interface IProps {\n channelTabType: Routes.Channels | Routes.Direct;\n}\n\nconst Channels: React.FC<IProps> = (props) => {\n const { channelTabType } = props;\n const { settings, auth } = useKeystone();\n\n const [isShowCreateChannel, setIsShowCreateChannel] = useState(false);\n\n return (\n <>\n {(settings.displayHeader || auth.isModerator) && <ChannelsHeader channelTabType={channelTabType} />}\n\n {channelTabType === Routes.Channels && (\n <>\n <ChannelsList />\n {settings.createChannelAllowed && (\n <Button size=\"medium\" variant=\"primary\" onClick={() => setIsShowCreateChannel(true)}>\n <FormattedMessage id=\"createNewChannel\" />\n </Button>\n )}\n\n {isShowCreateChannel && <CreateChannelForm onClose={() => setIsShowCreateChannel(false)} />}\n </>\n )}\n\n {channelTabType === Routes.Direct && <DirectList />}\n {settings.displayFooter && channelTabType !== Routes.Direct && <Footer />}\n </>\n );\n};\n\nexport default observer(Channels);\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/SvgIcon\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Radio\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/FormGroup\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/FormControlLabel\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/FormControl\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Checkbox\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"final-form-arrays\");","import React, { ComponentType } from 'react';\nimport { FieldInputProps, FieldRenderProps } from 'react-final-form';\n\ntype IFieldHOCProps<T> = T & {\n helperText?: string;\n margin?: 'normal' | 'none';\n};\n\nfunction FieldHOC<T>(\n Field: ComponentType<IFieldHOCProps<T>>,\n): React.FC<IFieldHOCProps<T> & FieldRenderProps<FieldInputProps<T>>> {\n return (props) => {\n const {\n input,\n meta,\n // meta: { touched, error },\n helperText,\n margin,\n ...rest\n } = props;\n\n return (\n <Field\n {...(rest as T)}\n value={input.value}\n // checked={!!input.value}\n onChange={input.onChange}\n onBlur={input.onBlur}\n error={meta.error}\n // error={touched && !!error}\n />\n );\n };\n}\n\nexport default FieldHOC;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-final-form\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-final-form-arrays\");","import { POST } from '../../api';\nimport { ICreatePollForm, IServerPoll } from './types';\n\nexport const createPoll = (payload: ICreatePollForm, channelId: number): Promise<IServerPoll> =>\n POST(`polls/create`, {\n ...payload,\n channelId,\n options: payload.options.map((option, idx) => ({ option, valid: payload.validOptions[idx] })),\n }) as Promise<IServerPoll>;\n","import { IPollStatus } from '../../types/types';\n\nexport interface ICreatePollForm {\n channelId?: string;\n question: string;\n withAnswer: boolean;\n isOpenEnded: boolean;\n options: string[];\n validOptions: boolean[];\n templateId?: number | null;\n isMultiselect: boolean;\n}\n\nexport interface IServerPollVote {\n id: number;\n userId?: number;\n answer?: string;\n user: IServerPollVotesUser;\n}\n\nexport interface IServerPollOption {\n id: number;\n option: string;\n valid: boolean;\n votesCount: number;\n pollVotes?: IServerPollVote[];\n isVoted?: boolean;\n}\n\nexport interface IServerPoll {\n id: number;\n channelId: number;\n question: string;\n isVoted: boolean | null;\n withAnswer: boolean;\n isOpenEnded: boolean;\n status: IPollStatus;\n options: IServerPollOption[];\n votes: IServerPollVote[];\n templateId?: number | null;\n createdAt: string;\n stoppedAt: string;\n isMultiselect: boolean;\n}\n\nexport interface IServerPollVotesUser {\n id: number;\n username: string;\n displayName: string;\n}\n\nexport enum PollTypeEnum {\n OneAnswer = 'one_answer',\n MultipleAnswer = 'multiple_answer',\n OpenEndedAnswer = 'open_ended_answer',\n}\n","import Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport { ICreatePollForm, PollTypeEnum } from 'containers/CreatePollPage/types';\nimport { FormApi } from 'final-form';\nimport React, { FC, useRef } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { COLOURS } from 'theme/consts';\nimport PollOption1 from 'ui-kit/icons/PollOption1';\nimport PollOption2 from 'ui-kit/icons/PollOption2';\nimport PollOption3 from 'ui-kit/icons/PollOption3';\n\ninterface IPropsCard {\n title: string;\n onClick: () => void;\n active: boolean;\n icon: React.ReactNode;\n}\n\nconst PollTypeCard: React.FC<IPropsCard> = (props) => {\n const { title, onClick: onClickFromProps, active, icon } = props;\n const ref = useRef<HTMLDivElement>(null);\n\n const clickHandler = () => {\n ref.current?.scrollIntoView({ block: 'end', inline: 'start' });\n onClickFromProps();\n };\n const opacity = active ? '1' : '0.5';\n\n return (\n <Grid\n item\n xs\n minWidth=\"139px\"\n onClick={clickHandler}\n ref={ref}\n data-qa={title}\n sx={{\n '& > svg': { opacity },\n '& > svg:hover': {\n opacity: 1,\n },\n }}\n >\n {icon}\n <Typography mb={1} color={active ? COLOURS.PRIMARY : COLOURS.SECONDARY_03}>\n <FormattedMessage id={title} />\n </Typography>\n </Grid>\n );\n};\n\ninterface IProps {\n form: FormApi<ICreatePollForm>;\n selectedPollType: PollTypeEnum;\n}\n\nconst SelectPollType: FC<IProps> = (props) => {\n const { form, selectedPollType } = props;\n\n const clickHandler = (name: 'withAnswer' | 'isOpenEnded', value: boolean) => () => {\n form.batch(() => {\n form.reset();\n form.change(name, value);\n });\n };\n\n return (\n <>\n <Typography mb={3} mt={6}>\n <FormattedMessage id=\"selectPollType\" />\n </Typography>\n <Grid container wrap=\"nowrap\" columnGap={3} mb={5} overflow=\"auto\" paddingRight=\"24px\">\n <PollTypeCard\n title=\"poll\"\n onClick={clickHandler('withAnswer', false)}\n active={selectedPollType === PollTypeEnum.MultipleAnswer}\n icon={<PollOption1 fill={selectedPollType === PollTypeEnum.MultipleAnswer ? COLOURS.ACCENT : ''} />}\n />\n <PollTypeCard\n title=\"test\"\n onClick={clickHandler('withAnswer', true)}\n active={selectedPollType === PollTypeEnum.OneAnswer}\n icon={<PollOption2 fill={selectedPollType === PollTypeEnum.OneAnswer ? COLOURS.ACCENT : ''} />}\n />\n <PollTypeCard\n title=\"pollOpenEnded\"\n onClick={clickHandler('isOpenEnded', true)}\n active={selectedPollType === PollTypeEnum.OpenEndedAnswer}\n icon={<PollOption3 fill={selectedPollType === PollTypeEnum.OpenEndedAnswer ? COLOURS.ACCENT : ''} />}\n />\n </Grid>\n </>\n );\n};\n\nexport default SelectPollType;\n","import makeStyles from '@mui/styles/makeStyles';\n\nexport default makeStyles({\n form: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n },\n});\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { ICreatePollForm } from '../../types';\n\nconst MIN_NUMBER_OF_VALID_OPTIONS = 1;\nconst MIN_NUMBER_OF_WRITTEN_OPTIONS = 2;\nconst MIN_NUMBER_OF_QUESTION_LENGTH = 1;\nexport const MAX_NUMBER_OF_QUESTION_LENGTH = 250;\n\n// https://stackoverflow.com/questions/36144406/how-to-early-break-reduce-method\nfunction findNumberOfFilledOptions<T>(options: T[], min_number: number): number {\n return options.slice(0).reduce(\n (acc, curr, i, arr) =>\n // @ts-ignore\n acc === min_number ? arr.splice(1) : (acc += curr ? 1 : 0),\n 0,\n ) as unknown as number;\n}\n\nfunction checkValidOptionsIsNotEmpty<T>(validOptions: T[], options: string[]) {\n let result = true;\n validOptions.forEach((item, idx) => {\n if (item && !options[idx]) {\n result = false;\n }\n });\n\n return result;\n}\n\ninterface IReturnProps {\n all: React.ReactNode[];\n}\n\nexport default (values: ICreatePollForm): IReturnProps => {\n const errors: IReturnProps = {\n all: [],\n };\n\n if (!values.question?.trim()) {\n errors.all.push(<FormattedMessage id=\"questionNotBeEmpty\" />);\n }\n\n if (values?.question?.trim().length < MIN_NUMBER_OF_QUESTION_LENGTH) {\n errors.all.push(\n <FormattedMessage id=\"questionValidateLongerLetters\" values={{ length: MIN_NUMBER_OF_QUESTION_LENGTH }} />,\n );\n }\n\n if (values?.question?.trim().length > MAX_NUMBER_OF_QUESTION_LENGTH) {\n errors.all.push(\n <FormattedMessage id=\"questionValidateNotLongerLetters\" values={{ length: MAX_NUMBER_OF_QUESTION_LENGTH }} />,\n );\n }\n\n if (\n !values?.isOpenEnded &&\n findNumberOfFilledOptions(values.options, MIN_NUMBER_OF_WRITTEN_OPTIONS) < MIN_NUMBER_OF_WRITTEN_OPTIONS\n ) {\n errors.all.push(<FormattedMessage id=\"questionValidateWriteLeastTwoAnswerOptions\" />);\n }\n\n if (\n values.withAnswer &&\n findNumberOfFilledOptions(values.validOptions, MIN_NUMBER_OF_VALID_OPTIONS) < MIN_NUMBER_OF_VALID_OPTIONS\n ) {\n errors.all.push(<FormattedMessage id=\"questionValidateLeastOneCorrectAnswer\" />);\n }\n\n if (values.withAnswer && !checkValidOptionsIsNotEmpty(values.validOptions, values.options)) {\n errors.all.push(<FormattedMessage id=\"questionValidateCorrectAnswerNotEmpty\" />);\n }\n return errors;\n};\n","import Typography from '@mui/material/Typography';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport Radio from '@mui/material/Radio';\nimport Grid from '@mui/material/Grid';\nimport FormGroup from '@mui/material/FormGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport Checkbox from '@mui/material/Checkbox';\nimport Box from '@mui/material/Box';\nimport arrayMutators from 'final-form-arrays';\nimport FieldHOC from 'hoc/FieldHOC';\nimport useKeystone from 'keystone';\nimport Channel from 'keystone/chat/channel';\nimport React, { FC } from 'react';\nimport { Field, Form } from 'react-final-form';\nimport { FieldArray } from 'react-final-form-arrays';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Button, Input } from 'ui-kit';\nimport CloseIcon from 'ui-kit/icons/CloseIcon';\n\nimport { createPoll } from '../../services';\nimport { ICreatePollForm, PollTypeEnum } from '../../types';\nimport SelectPollType from '../SelectPollType';\nimport useStyles from './styles';\nimport validate, { MAX_NUMBER_OF_QUESTION_LENGTH } from './validate';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n channel: Channel;\n}\n\nconst InputField = FieldHOC(Input);\nconst CheckboxField = FieldHOC(Checkbox);\n\nconst MAX_ADDED_OPTIONS = 8;\n\nconst initialValues: ICreatePollForm = {\n withAnswer: false,\n isOpenEnded: false,\n question: '',\n options: ['', '', ''],\n validOptions: [],\n isMultiselect: false,\n};\n\nconst CreatePollForm: FC<IProps> = (props) => {\n const intl = useIntl();\n const { channel } = props;\n const { ui } = useKeystone();\n const classes = useStyles();\n\n const [isMultiselect, setMultiselect] = React.useState(initialValues.isMultiselect);\n\n const handleMultiselectChange = (event: React.SyntheticEvent) => {\n const { value } = event.target as HTMLInputElement;\n setMultiselect(Boolean(+value));\n };\n\n const onSubmit = async (values: ICreatePollForm) => {\n try {\n if (values?.options) {\n values.options = values.options.filter((option) => option);\n }\n\n values.isMultiselect = isMultiselect;\n\n const response = await createPoll(values, +channel.id);\n channel.addPoll(response);\n ui.back();\n } catch {\n // show error\n }\n };\n\n return (\n <Form onSubmit={onSubmit} initialValues={initialValues} mutators={{ ...arrayMutators }} validate={validate}>\n {({ handleSubmit, values, errors, form }) => {\n /*\n multipleAnswer: withAnswer = false, isOpenEnded = false;\n oneAnswer: withAnswer = true;\n OpenEndedAnswer: isOpenEnded = true;\n */\n const selectedPollType = values.withAnswer\n ? PollTypeEnum.OneAnswer\n : values.isOpenEnded\n ? PollTypeEnum.OpenEndedAnswer\n : PollTypeEnum.MultipleAnswer;\n\n return (\n <form onSubmit={handleSubmit} className={classes.form}>\n <SelectPollType form={form} selectedPollType={selectedPollType} />\n <Box paddingRight=\"24px\">\n <FormControl component=\"fieldset\" fullWidth>\n <Typography marginBottom={3}>\n <FormattedMessage id=\"pollQuestion\" />\n </Typography>\n\n <FormGroup>\n <FormControlLabel\n sx={{ m: 0 }}\n control={\n <Field\n name=\"question\"\n component={InputField}\n rows={5}\n multiline\n fullWidth\n data-qa=\"enterYourQuestion\"\n placeholder={intl.formatMessage({ id: 'enterYourQuestion' })}\n inputProps={{ maxLength: MAX_NUMBER_OF_QUESTION_LENGTH }}\n />\n }\n label=\"\"\n />\n </FormGroup>\n\n <Typography variant=\"body2\" mt={1} color=\"text.light02\">\n {values.question?.length || 0} / {MAX_NUMBER_OF_QUESTION_LENGTH}\n </Typography>\n </FormControl>\n\n {selectedPollType === PollTypeEnum.MultipleAnswer && values.options.length > 2 && (\n <FormControl component=\"fieldset\" fullWidth>\n <Typography marginBottom={3} marginTop={5}>\n <FormattedMessage id=\"numberOfResponses.title\" />\n </Typography>\n <Grid container flexDirection=\"row\">\n <FormControlLabel\n checked={!isMultiselect}\n value=\"0\"\n name=\"isMultiselect\"\n onChange={handleMultiselectChange}\n control={<Radio />}\n label={intl.formatMessage({ id: 'numberOfResponses.one' })}\n />\n <FormControlLabel\n checked={isMultiselect}\n value=\"1\"\n name=\"isMultiselect\"\n onChange={handleMultiselectChange}\n control={<Radio />}\n label={intl.formatMessage({ id: 'numberOfResponses.several' })}\n />\n </Grid>\n </FormControl>\n )}\n\n {selectedPollType !== PollTypeEnum.OpenEndedAnswer && (\n <>\n <Box sx={{ mt: 5, mb: 3 }}>\n <Typography>\n <FormattedMessage id=\"pollOptions\" />\n </Typography>\n </Box>\n\n <FieldArray name=\"options\">\n {({ fields }) => (\n <>\n <Grid container rowGap={2} justifyContent=\"center\">\n {fields.map((field, idx) => (\n <Grid item xs={12} container wrap=\"nowrap\" alignItems=\"center\" key={idx}>\n {selectedPollType === PollTypeEnum.OneAnswer && (\n <Radio\n checked={!!values.validOptions[idx]}\n onChange={() =>\n form.change(\n 'validOptions',\n values.options.map((_, arrIdx) => arrIdx === idx),\n )\n }\n />\n )}\n {/* temporarily removed option to propose multiple correct answers */}\n {/* {selectedPollType === PollTypeEnum.MultipleAnswer && (\n <Field name={`validOptions.${idx}`} type=\"checkbox\" component={CheckboxField} />\n )} */}\n\n <Field\n name={`${field}`}\n component={InputField}\n data-qa={`enterOption-${idx}`}\n placeholder={intl.formatMessage({ id: 'enterOption' })}\n fullWidth\n inputProps={{\n maxLength: MAX_NUMBER_OF_QUESTION_LENGTH,\n }}\n rightIcon={\n values.options.length > 2 && (\n <SvgIcon onClick={() => fields.remove(idx)}>\n <CloseIcon />\n </SvgIcon>\n )\n }\n />\n </Grid>\n ))}\n {MAX_ADDED_OPTIONS - values.options.length !== 0 && (\n <Typography color=\"text.light02\" variant=\"body2\" textAlign=\"center\">\n <FormattedMessage\n id=\"addOptionsNumber\"\n values={{ number: MAX_ADDED_OPTIONS - values.options.length }}\n />\n </Typography>\n )}\n <Button\n variant=\"link\"\n fullWidth\n data-qa=\"addOption\"\n onClick={() => fields.value.length < MAX_ADDED_OPTIONS && fields.push('')}\n >\n <Typography>\n <FormattedMessage id=\"addOption\" />\n </Typography>\n </Button>\n </Grid>\n </>\n )}\n </FieldArray>\n </>\n )}\n\n <Typography color=\"text.light02\" variant=\"body2\" textAlign=\"center\" mt={3} mb={3}>\n {errors?.all[0]}\n </Typography>\n <Button\n data-qa=\"createPoll\"\n type=\"submit\"\n variant=\"primary\"\n fullWidth\n size=\"large\"\n disabled={errors?.all[0]}\n >\n <Typography>\n <FormattedMessage id=\"createPoll\" />\n </Typography>\n </Button>\n </Box>\n </form>\n );\n }}\n </Form>\n );\n};\n\nexport default CreatePollForm;\n","import Typography from '@mui/material/Typography';\nimport Grid from '@mui/material/Grid';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport HeaderTitle from 'ui-kit/HeaderTitle';\n\nimport SubHeader from 'components/SubHeader';\nimport useKeystone from 'keystone';\nimport CreatePollForm from './components/CreatePollForm';\nimport { COLOURS } from 'theme/consts';\n\nconst CreatePollPage: FC = () => {\n const root = useKeystone();\n const { ui } = root;\n\n const currentChannel = root.currentChannel;\n\n if (!currentChannel) {\n return null;\n }\n\n return (\n <>\n <SubHeader onBack={() => ui.back()}>\n <HeaderTitle>\n <FormattedMessage id=\"chat\" />\n </HeaderTitle>\n </SubHeader>\n <Grid\n container\n padding=\"24px 0px 24px 24px \"\n overflow=\"auto\"\n direction=\"column\"\n wrap=\"nowrap\"\n color={COLOURS.PRIMARY}\n >\n <Typography variant=\"h2\" alignSelf=\"center\">\n <FormattedMessage id=\"createPoll\" />\n </Typography>\n\n <CreatePollForm channel={currentChannel} />\n </Grid>\n </>\n );\n};\n\nexport default CreatePollPage;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Card\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/CardContent\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/CardHeader\");","import makeStyles from '@mui/styles/makeStyles';\n\nexport default makeStyles({\n actionButton: {\n borderRadius: '0 0 10px 10px',\n },\n});\n","import useKeystone from 'keystone';\nimport Poll from 'keystone/chat/poll';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport Routes from 'routes';\nimport { IPollStatus } from 'types/types';\nimport { Button } from 'ui-kit';\nimport { onPollEndHandler, onPollStartHandler } from '../../services';\nimport useStyles from './styles';\n\ninterface IProps {\n templatePoll: Poll;\n lastActivePoll?: Poll;\n}\n\nconst PollAction: FC<IProps> = (props) => {\n const { templatePoll, lastActivePoll } = props;\n\n const root = useKeystone();\n const { ui } = root;\n const classes = useStyles();\n\n const currentChannel = root.currentChannel;\n\n const pollStatus = lastActivePoll ? lastActivePoll.status : templatePoll.status;\n\n const goRoutePollDetail = () => {\n ui.setRoute(`${Routes.PollResultDetail}/${currentChannel?.id}/${templatePoll?.id}`);\n };\n\n const onPollStart = () => {\n onPollStartHandler({ channel: currentChannel, templatePoll });\n };\n\n const onPollEnd = () => {\n onPollEndHandler({\n activePoll: lastActivePoll,\n channel: currentChannel,\n defaultErrorAction: () => ui.setRoute(`/${Routes.Polls}`),\n });\n };\n\n switch (pollStatus) {\n case IPollStatus.New: {\n if (currentChannel?.isPollsInProgress) {\n return null;\n }\n\n return (\n <Button\n variant=\"primary\"\n disabled={currentChannel?.isPollsInProgress}\n fullWidth\n className={classes.actionButton}\n onClick={onPollStart}\n data-qa=\"startPoll\"\n >\n <FormattedMessage id=\"startPoll\" />\n </Button>\n );\n }\n case IPollStatus.InProgress:\n return (\n <Button\n variant=\"contained\"\n fullWidth\n className={classes.actionButton}\n onClick={onPollEnd}\n data-qa=\"completePoll\"\n >\n <FormattedMessage id=\"completePoll\" />\n </Button>\n );\n case IPollStatus.Done:\n return (\n <Button\n variant=\"contained\"\n fullWidth\n className={classes.actionButton}\n onClick={goRoutePollDetail}\n data-qa=\"seeResults\"\n >\n <FormattedMessage id=\"seeResults\" />\n </Button>\n );\n default:\n return null;\n }\n};\n\nexport default observer(PollAction);\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport default makeStyles({\n root: {\n color: COLOURS.PRIMARY,\n background: COLOURS.BG,\n borderRadius: '10px',\n border: 'solid 1px',\n borderColor: COLOURS.SECONDARY_01,\n boxShadow: 'none'\n },\n});\n","import React, { FC, useState } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { FormattedMessage } from 'react-intl';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport CardHeader from '@mui/material/CardHeader';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/system/Box';\n\nimport useKeystone from 'keystone';\nimport Poll from 'keystone/chat/poll';\nimport { COLOURS } from 'theme/consts';\nimport { IPollStatus } from 'types/types';\nimport { getPollType } from 'utils/helper';\nimport PollStatusBadge from 'components/PollStatusBadge';\n\nimport PollAction from '../PollAction';\nimport useStyles from './styles';\nimport { MoreVert } from 'ui-kit/icons';\nimport { DropMenu, DropMenuItem } from 'ui-kit/components/DropMenu';\n\ninterface IProps {\n templatePoll: Poll;\n onDelete: (poll: Poll) => void;\n}\n\nconst PollCard: FC<IProps> = (props) => {\n const { templatePoll, onDelete: onDeleteFromProps } = props;\n const root = useKeystone();\n\n const [anchorMenu, setAnchorMenu] = useState<null | HTMLElement>(null);\n const handleMenuActionClick = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorMenu(event.currentTarget);\n };\n\n const handleMenuActionClose = () => setAnchorMenu(null);\n\n const onDelete = () => {\n onDeleteFromProps(templatePoll);\n handleMenuActionClose();\n };\n\n const classes = useStyles();\n\n const currentChannel = root.currentChannel;\n const activeOrLastPoll = currentChannel?.getActiveOrLastPollByTemplateId(templatePoll?.id);\n\n return (\n <Box>\n <Card classes={{ root: classes.root }}>\n <Box sx={{padding: '12px'}}>\n <CardHeader\n action={\n <IconButton aria-label=\"settings\" onClick={handleMenuActionClick}>\n <MoreVert />\n </IconButton>\n }\n title={<PollStatusBadge status={activeOrLastPoll?.status || templatePoll.status} />}\n />\n <DropMenu\n id=\"poll-menu\"\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n anchorEl={anchorMenu}\n open={Boolean(anchorMenu)}\n onClose={handleMenuActionClose}\n >\n <DropMenuItem\n action={onDelete}\n disabled={activeOrLastPoll?.status === IPollStatus.InProgress}\n >\n <Typography color={COLOURS.ERROR}>\n <FormattedMessage id=\"delete\" />\n </Typography>\n </DropMenuItem>\n </DropMenu>\n <CardContent>\n <Typography variant=\"h4\" sx={{ wordBreak: 'break-word' }}>\n {templatePoll.question}\n </Typography>\n <Typography variant=\"body2\" color={COLOURS.SECONDARY} marginTop=\"9px\" marginBottom=\"23px\">\n <FormattedMessage id={getPollType(templatePoll)} />\n </Typography>\n </CardContent>\n </Box>\n <PollAction templatePoll={templatePoll} lastActivePoll={activeOrLastPoll} />\n </Card>\n </Box>\n );\n};\n\nexport default observer(PollCard);\n","import React from 'react';\nimport { useIntl } from 'react-intl';\nimport { observer } from 'mobx-react-lite';\n\nimport useKeystone from 'keystone';\nimport Poll from 'keystone/chat/poll';\nimport { deletePoll } from 'containers/PollListPage/services';\n\nimport PollCard from '../PollCard';\n\nconst TemplateList: React.FC = () => {\n const root = useKeystone();\n const intl = useIntl();\n\n const currentChannel = root.currentChannel;\n const pollTemplates = currentChannel?.getPollTemplates;\n\n const onDeletePoll = async (poll: Poll) => {\n if (confirm(intl.formatMessage({ id: 'areYouSure' }))) {\n if (await deletePoll(+poll.id)) {\n currentChannel?.deletePoll(poll);\n }\n }\n };\n\n return (\n <>\n {pollTemplates?.map((poll) => (\n <PollCard key={`${poll.question}-${poll.id}`} templatePoll={poll} onDelete={onDeletePoll} />\n ))}\n </>\n );\n};\n\nexport default observer(TemplateList);\n","import React, { FC, useEffect } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport Typography from '@mui/material/Typography';\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport { FormattedMessage } from 'react-intl';\n\nimport HeaderTitle from 'ui-kit/HeaderTitle';\nimport SubHeader from 'components/SubHeader';\nimport useKeystone from 'keystone';\nimport Routes from 'routes';\nimport { Button } from 'ui-kit';\n\nimport TemplateList from './components/TemplateList';\n\nimport { getPollListForChannel } from './services';\n\nconst PollListPage: FC = () => {\n const root = useKeystone();\n const { ui } = root;\n\n const currentChannel = root.currentChannel;\n\n useEffect(() => {\n async function getList() {\n const response = await getPollListForChannel(currentChannel?.id);\n if (response) {\n currentChannel?.setPollList(response);\n }\n }\n\n getList();\n }, []);\n\n const onCreatePoll = () => {\n ui.setRoute(`${Routes.CreatePoll}/${currentChannel?.id}/${undefined}`);\n };\n\n return (\n <>\n <SubHeader onBack={() => ui.back()}>\n <HeaderTitle>\n <FormattedMessage id=\"chat\" />\n </HeaderTitle>\n </SubHeader>\n <Grid container direction=\"column\" wrap=\"nowrap\" overflow=\"auto\" padding=\"20px 24px\" rowGap=\"23px\">\n <TemplateList />\n </Grid>\n <Box padding=\"12px 24px\">\n <Button variant=\"contained\" fullWidth size=\"large\" data-qa=\"newPoll\" onClick={onCreatePoll}>\n <Typography variant=\"body1\">\n <FormattedMessage id=\"newPoll\" />\n </Typography>\n </Button>\n </Box>\n </>\n );\n};\n\nexport default observer(PollListPage);\n","import makeStyles from '@mui/styles/makeStyles';\n\nexport default makeStyles(\n {\n container: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n padding: '24px',\n },\n\n error: {\n display: 'inline-block',\n borderRadius: 4,\n background: 'red',\n color: '#fff',\n padding: '4px 8px',\n },\n },\n { name: 'Profile' },\n);\n","import Typography from '@mui/material/Typography';\nimport SubHeader from 'components/SubHeader';\nimport useKeystone from 'keystone';\nimport { saveProfile } from 'keystone/service';\nimport { observer } from 'mobx-react-lite';\nimport { useSnackbar } from 'notistack';\nimport React, { useEffect, useState } from 'react';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { Button, Input } from 'ui-kit';\nimport HeaderTitle from 'ui-kit/HeaderTitle';\nimport { getErrorMessage } from '../../utils/errors';\nimport useStyles from './styles';\n\nconst Profile = observer(() => {\n const intl = useIntl();\n const classes = useStyles();\n const { auth, ui } = useKeystone();\n const root = useKeystone();\n const { enqueueSnackbar } = useSnackbar();\n\n const [displayName, setDisplayName] = useState('');\n const [avatar, setAvatar] = useState<string | undefined>(undefined);\n\n useEffect(() => {\n setDisplayName(auth.me.displayName);\n setAvatar(auth.me.avatarUrl);\n }, [auth.me]);\n\n const onSaveProfile = async () => {\n try {\n await saveProfile(root, displayName, avatar);\n ui.back();\n } catch (error) {\n enqueueSnackbar(getErrorMessage(error as Error));\n }\n };\n\n return (\n <>\n <SubHeader onBack={() => ui.back()}>\n <HeaderTitle>\n <FormattedMessage id=\"profile\" />\n </HeaderTitle>\n </SubHeader>\n <div className={classes.container}>\n <Typography\n component=\"label\"\n htmlFor=\"username\"\n variant=\"body2\"\n fontFamily=\"PTRootUIWebBold\"\n >\n <FormattedMessage id=\"username\" />\n </Typography>\n <Input\n id=\"username\"\n fullWidth\n variant=\"outlined\"\n size=\"large\"\n placeholder={intl.formatMessage({ id: 'username' })}\n value={displayName}\n onChange={setDisplayName}\n />\n\n <Typography\n component=\"label\"\n htmlFor=\"avatar\"\n variant=\"body2\"\n marginTop=\"20px\"\n fontFamily=\"PTRootUIWebBold\"\n >\n <FormattedMessage id=\"avatar\" />\n </Typography>\n <Input\n id=\"avatar\"\n fullWidth\n variant=\"outlined\"\n size=\"large\"\n placeholder={intl.formatMessage({ id: 'avatarUrl' })}\n value={avatar}\n onChange={setAvatar}\n />\n\n <Button\n fullWidth\n size=\"large\"\n variant=\"primary\"\n onClick={onSaveProfile}\n style={{ marginTop: 'auto' }}\n >\n <FormattedMessage id=\"save\" />\n </Button>\n </div>\n </>\n );\n});\n\nexport default Profile;\n","import LinearProgress from '@mui/material/LinearProgress';\nimport { autorun, reaction } from 'mobx';\nimport { observer } from 'mobx-react-lite';\nimport { useSnackbar } from 'notistack';\nimport * as Sentry from '@sentry/react';\nimport React, { ReactNode, useEffect, useState } from 'react';\nimport LoadingStatus from 'components/LoadingStatus';\nimport useKeystone from 'keystone';\nimport { getInitialData, redirectToInitial } from 'keystone/service';\nimport { getErrorMessage } from '../../utils/errors';\nimport logger from 'utils/logger';\n\ninterface Props {\n children: ReactNode;\n}\n\nconst SocketLayout = ({ children }: Props): JSX.Element => {\n const { socket } = useKeystone();\n const root = useKeystone();\n const { enqueueSnackbar } = useSnackbar();\n const [initialDataReady, setInitialDataReady] = useState(false);\n\n\n useEffect(() =>\n autorun(async () => {\n if (!socket.isSocketConnected) {\n try {\n if (root.settings.socketUrl) {\n socket.connect(root.settings.socketUrl);\n }\n } catch (error) {\n enqueueSnackbar(getErrorMessage(error));\n }\n }\n }),\n );\n\n useEffect(() =>\n reaction(\n () => socket.isSocketConnected,\n (isSocketConnected) => {\n if (isSocketConnected) {\n (async () => {\n try {\n await getInitialData(root);\n // when all initial data is ready we can place user on his entrypoint route\n // await here if there any extra API join channel calls\n await redirectToInitial(root);\n // now we got everything to start render\n setInitialDataReady(true);\n } catch (error) {\n enqueueSnackbar(getErrorMessage(error));\n logger.error('Failed to initialize', {case: 'isSocketConnected', error })\n Sentry.captureException(error, (scope) => scope.setTransactionName('initialize'));\n root.scheduleReset();\n }\n })();\n }\n },\n ),\n );\n\n if (!socket.isSocketConnected) {\n return (\n <>\n <LinearProgress color=\"secondary\" />\n <LoadingStatus intlId=\"loadingSocket\" />\n </>\n );\n }\n\n if (!initialDataReady) {\n return (\n <>\n <LinearProgress color=\"secondary\" />\n <LoadingStatus intlId=\"loadingInitial\" />\n </>\n );\n }\n\n return <>{children}</>;\n};\n\nexport default observer(SocketLayout);\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS } from 'theme/consts';\n\nexport default makeStyles(\n {\n userRow: {\n padding: '12px 16px',\n '&:hover': {\n backgroundColor: COLOURS.LIGHT_04,\n },\n '&:hover > #sendMessageBtn': {\n display: 'block',\n },\n '& > #sendMessageBtn': {\n display: 'none',\n },\n },\n sendMessageBtn: {\n cursor: 'pointer',\n marginLeft: 'auto',\n },\n },\n { name: 'UserRow' },\n);\n","import Typography from '@mui/material/Typography';\nimport Grid from '@mui/material/Grid';\nimport React, { useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport { Avatar } from 'ui-kit';\nimport SendMessageIcon from 'ui-kit/icons/SendMessageIcon';\nimport User from 'keystone/chat/user';\nimport useStyles from './styles';\n\ninterface IProps {\n user: User;\n displayDirect: boolean;\n openNewChat: (user: User) => Promise<void>;\n}\nconst UserRow: React.FC<IProps> = (props) => {\n const intl = useIntl();\n const { user, displayDirect, openNewChat } = props;\n const classes = useStyles();\n const [loading, setLoading] = useState(false);\n\n const clickHandler = async () => {\n try {\n setLoading(true);\n await openNewChat(user);\n } finally {\n setLoading(false);\n }\n };\n if (!user) return null;\n\n return (\n <Grid container className={classes.userRow} alignItems=\"center\">\n <Grid\n item\n component={Avatar}\n name={user?.displayName}\n size=\"lg\"\n src={user.avatarUrl}\n avatarColor={user.getAvatarColor}\n />\n <Grid item component={Typography} style={{ marginLeft: 9 }}>\n {user.displayName}\n </Grid>\n {displayDirect && (\n <Grid item className={classes.sendMessageBtn} id=\"sendMessageBtn\" onClick={clickHandler}>\n {loading ? intl.formatMessage({ id: 'loading' }) : <SendMessageIcon />}\n </Grid>\n )}\n </Grid>\n );\n};\n\nexport default UserRow;\n","import PersonIcon from '@mui/icons-material/Person';\nimport Typography from '@mui/material/Typography';\nimport Grid from '@mui/material/Grid';\nimport useKeystone from 'keystone';\nimport User from 'keystone/chat/user';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC, useMemo, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport { COLOURS } from 'theme/consts';\nimport { Input } from 'ui-kit';\nimport SearchIcon from 'ui-kit/icons/SearchIcon';\n\nimport { createOrOpenDirectChat } from '../../services';\nimport UserRow from '../UserRow';\n\ntype Props = {\n users: User[];\n};\n\nconst UserList: FC<Props> = (props) => {\n const intl = useIntl();\n\n const root = useKeystone();\n const { settings } = root;\n\n const [search, setSearch] = useState('');\n\n const { users } = props;\n\n const filteredUsers = useMemo(\n () => (search ? users.filter((user) => user.displayName.includes(search)) : users),\n [search],\n );\n\n const openNewChat = (chatWithUser: User) => createOrOpenDirectChat(root, chatWithUser);\n\n return (\n <Grid container wrap=\"nowrap\" direction=\"column\" marginTop=\"20px\" marginBottom=\"20px\" overflow=\"hidden\">\n <Grid item padding=\"0 12px\">\n <Input\n placeholder={intl.formatMessage({ id: 'search' })}\n onChange={setSearch}\n value={search}\n rightIcon={<SearchIcon fill={COLOURS.BLACK_01} />}\n />\n </Grid>\n <Grid item container marginTop=\"20px\" marginBottom=\"20px\" padding=\"0 12px\">\n <PersonIcon fill={COLOURS.BLACK_01} />\n <Typography style={{ marginLeft: 8 }}>{filteredUsers.length}</Typography>\n </Grid>\n <Grid item container wrap=\"nowrap\" direction=\"column\" overflow=\"auto\">\n {filteredUsers.map((user) => (\n <UserRow key={user.id} user={user} displayDirect={settings.displayDirect} openNewChat={openNewChat} />\n ))}\n </Grid>\n </Grid>\n );\n};\n\nexport default observer(UserList);\n","import { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport HeaderTitle from 'ui-kit/HeaderTitle';\n\nimport SubHeader from '../../components/SubHeader';\nimport useKeystone from '../../keystone';\nimport User from '../../keystone/chat/user';\nimport UserList from './components/UserList';\n\nconst UsersListPage = () => {\n const { ui, chat } = useKeystone();\n\n let users: User[];\n\n const channelId = String(ui.params.id);\n const currentChannel = chat.channels.get(channelId);\n if (currentChannel) {\n users = Array.from(chat.users.values());\n } else {\n users = chat.userList;\n }\n\n return (\n <>\n <SubHeader onBack={() => ui.back()}>\n <HeaderTitle>\n <FormattedMessage id=\"userList\" />\n </HeaderTitle>\n </SubHeader>\n <UserList users={users} />\n </>\n );\n};\n\nexport default observer(UsersListPage);\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Portal\");","import IconButton from '@mui/material/IconButton';\nimport React from 'react';\nimport CloseCircleIcon from 'ui-kit/icons/CloseCircleIcon';\n\ninterface IProps {\n onClose: () => void;\n}\n\nconst ClosePortalButton: React.FC<IProps> = ({\n onClose,\n}) => {\n const style = {\n top: 0,\n right: 0,\n position: 'absolute',\n };\n\n return (\n <IconButton onClick={onClose} sx={style}>\n <CloseCircleIcon />\n </IconButton>\n );\n};\n\nexport default ClosePortalButton;\n","import { POST } from '../../api';\nimport Poll from '../../keystone/chat/poll';\nimport { IServerPollOption } from '../CreatePollPage/types';\n\nexport const doVote = async (poll: Poll, payload: string[]) => {\n const data = poll.isOpenEnded ? { answer: payload[0].trim(), poll_id: +poll.id } : { ids: payload.map(Number) };\n\n return (await POST(`polls/vote`, data)) as unknown as IServerPollOption[];\n};\n","import Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport { IServerPollOption } from 'containers/CreatePollPage/types';\nimport React from 'react';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n onChange: () => void;\n option: IServerPollOption;\n checked?: boolean;\n dataQA?: string;\n}\n\nconst OptionBox: React.FC<IProps> = (props) => {\n const { onChange, option, checked, dataQA } = props;\n\n return (\n <Grid\n item\n xs\n data-qa={dataQA}\n padding=\"8px 12px\"\n borderRadius=\"10px\"\n border={`1px solid ${COLOURS.SECONDARY_03}`}\n color={COLOURS.ACCENT_05}\n sx={{\n '&:hover': { backgroundColor: COLOURS.ACCENT_01 },\n backgroundColor: checked ? COLOURS.ACCENT_02 : '',\n wordBreak: 'break-word',\n }}\n onClick={onChange}\n >\n <Typography variant=\"body2\">{option.option}</Typography>\n </Grid>\n );\n};\nexport default OptionBox;\n","import Box from '@mui/material/Box';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { Button } from 'ui-kit';\n\ninterface IProps {\n dataQA?: string;\n onSubmit: () => void;\n disabled: boolean;\n}\n\nconst SubmitPollButton: React.FC<IProps> = (props) => {\n const { dataQA, onSubmit, disabled } = props;\n return (\n <Box\n component={Button}\n marginTop=\"16px\"\n variant=\"contained\"\n fullWidth\n disabled={disabled}\n // Used by Automation tests\n data-qa={dataQA}\n onClick={onSubmit}\n >\n <FormattedMessage id=\"reply\" />\n </Box>\n );\n};\n\nexport default SubmitPollButton;\n","import React, { FC, useState } from 'react';\nimport Grid from '@mui/material/Grid';\n\nimport Poll from 'keystone/chat/poll';\nimport { COLOURS } from 'theme/consts';\n\nimport OptionBox from '../OptionBox';\nimport SubmitPollButton from '../SubmitPollButton';\n\ninterface IProps {\n poll: Poll;\n voteHandler: (payload: string[]) => void;\n}\nconst CheckboxGroup: FC<IProps> = (props) => {\n const { poll, voteHandler } = props;\n const [checked, setChecked] = useState<Record<string, boolean>>(\n poll.options.reduce((acc, option) => ({ ...acc, [option.id]: false }), {}),\n );\n const disabled = !Object.values(checked).find((value) => value);\n\n const handleChange = (name: string) => () => {\n if (!checked[name] && !poll.isMultiselect && Object.values(checked).filter(Boolean).length > 0) {\n return;\n }\n\n setChecked((state) => ({ ...state, [name]: !state[name] }));\n };\n\n return (\n <>\n <Grid container direction=\"column\" rowGap={2}>\n {poll.options.map((option) => (\n <OptionBox\n key={option.id}\n onChange={handleChange(`${option.id}`)}\n checked={checked[option.id]}\n option={option}\n dataQA={`poll-pick-${option.option}`}\n />\n ))}\n </Grid>\n <Grid>\n <SubmitPollButton\n disabled={disabled}\n onSubmit={() => voteHandler(Object.keys(checked).filter((key) => checked[key]))}\n dataQA=\"submitPollAnswer\"\n />\n </Grid>\n </>\n );\n};\n\nexport default CheckboxGroup;\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/Input\");","import makeStyles from '@mui/styles/makeStyles';\n\nexport default makeStyles(\n {\n input: {\n border: '1px solid #B8B6C2',\n borderRadius: 10,\n marginTop: 10,\n padding: 10,\n width: '100%',\n },\n },\n { name: 'Textarea' },\n);\n","import Typography from '@mui/material/Typography';\nimport Input from '@mui/material/Input';\nimport React, { ChangeEvent, FC, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport SubmitPollButton from '../SubmitPollButton';\nimport useStyles from './styles';\nimport { Grid } from '@mui/material';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n voteHandler: (payload: string[]) => void;\n}\n\nconst MIN_INPUT_LENGTH = 1;\nconst MAX_INPUT_LENGTH = 200;\n\nconst OpenEnded: FC<IProps> = (props) => {\n const { voteHandler } = props;\n const classes = useStyles();\n const intl = useIntl();\n const [value, setValue] = useState('');\n const [isValidInput, setIsValidInput] = useState<boolean>(false);\n const [validationErrorText, setValidationErrorText] = useState('');\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const val = (event.target as HTMLInputElement).value;\n\n if (val.trim().length < MIN_INPUT_LENGTH) {\n setValidationErrorText(\n intl.formatMessage({ id: 'pollValidateAnswerLongerLetters' }, { length: MIN_INPUT_LENGTH }),\n );\n setIsValidInput(false);\n } else if (val.trim().length > MAX_INPUT_LENGTH) {\n setValidationErrorText(\n intl.formatMessage({ id: 'pollValidateAnswerNotLongerLetters' }, { length: MAX_INPUT_LENGTH }),\n );\n setIsValidInput(false);\n } else {\n setValidationErrorText('');\n setIsValidInput(true);\n }\n\n setValue(val);\n };\n\n return (\n <>\n <Input\n type=\"text\"\n className={classes.input}\n fullWidth\n disableUnderline\n rows={3}\n onChange={handleChange}\n multiline\n data-qa=\"poll-pick-textarea\"\n placeholder={intl.formatMessage({ id: 'yourReply' })}\n />\n\n {validationErrorText && (\n <Typography textAlign=\"center\" py={1.5}>\n {validationErrorText}\n </Typography>\n )}\n <Grid>\n <SubmitPollButton disabled={!isValidInput} onSubmit={() => voteHandler([value])} dataQA=\"deployReply\" />\n </Grid>\n </>\n );\n};\n\nexport default OpenEnded;\n","import Grid from '@mui/material/Grid';\nimport React, { FC } from 'react';\nimport Poll from 'keystone/chat/poll';\nimport OptionBox from '../OptionBox';\n\ninterface IProps {\n poll: Poll;\n voteHandler: (payload: string[]) => void;\n}\nconst RadioButtonsGroup: FC<IProps> = (props) => {\n const { poll, voteHandler } = props;\n\n const handleChange = (id: string) => () => {\n voteHandler([id]);\n };\n\n return (\n <>\n <Grid container direction=\"column\" rowGap={2}>\n {poll.options.map((option) => (\n <OptionBox\n key={option.id}\n dataQA={`poll-pick-${option.option}`}\n onChange={handleChange(`${option.id}`)}\n option={option}\n />\n ))}\n </Grid>\n </>\n );\n};\n\nexport default RadioButtonsGroup;\n","import Channel from 'keystone/chat/channel';\nimport Poll from 'keystone/chat/poll';\nimport React, { FC } from 'react';\nimport { doVote } from '../../services';\nimport CheckboxGroup from '../CheckboxGroup';\nimport OpenEnded from '../OpenEnded';\nimport RadioGroup from '../RadioGroup';\nimport * as Sentry from '@sentry/react';\nimport logger from 'utils/logger';\n\ninterface IProps {\n poll: Poll;\n channel: Channel;\n}\n\nconst PollVariant: FC<IProps> = (props) => {\n const { poll, channel } = props;\n\n const voteHandler = async (payload: string[]) => {\n try {\n const responseOptions = await doVote(poll, payload);\n channel.setPollVoted(payload, responseOptions);\n } catch (error) {\n logger.error('Failed to vote', {case: 'voteHandler', error, pollId: poll.id})\n Sentry.captureException(error, (scope) => scope.setTransactionName('poll vote'));\n }\n };\n\n if (poll.isOpenEnded) {\n return <OpenEnded voteHandler={voteHandler} />;\n }\n\n if (poll.withAnswer) {\n return <RadioGroup poll={poll} voteHandler={voteHandler} />;\n }\n\n return <CheckboxGroup poll={poll} voteHandler={voteHandler} />;\n};\n\nexport default PollVariant;\n","import React, { FC } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { FormattedMessage } from 'react-intl';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Box from '@mui/system/Box';\nimport { lighten } from '@mui/system/colorManipulator';\n\nimport useKeystone from 'keystone';\nimport Poll from 'keystone/chat/poll';\nimport { COLOURS } from 'theme/consts';\n\ninterface IProps {\n poll: Poll;\n}\n\nconst useStyles = makeStyles({\n progress: {\n border: `1px solid #F3F2F9`,\n borderRadius: 10,\n\n padding: 0,\n margin: 0,\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n },\n progressLine: {\n borderRadius: 10,\n },\n});\n\nconst getStyleColor = (color: string) => {\n const style = getComputedStyle(document.body);\n const match = color.match(/var\\((.+)\\)/);\n if (!match || match.length < 2) {\n return '#000';\n }\n\n const cssProp = match[1];\n const styleColor = style.getPropertyValue(cssProp);\n\n return styleColor;\n}\n\nconst PollVariant: FC<IProps> = () => {\n const root = useKeystone();\n const { auth } = root;\n\n const currentChannel = root.currentChannel;\n const poll = currentChannel?.getActivePoll;\n\n const classes = useStyles();\n\n if (!poll) return null;\n\n const countTotal = poll.options.reduce((acc, curr) => acc + curr.votesCount, 0);\n\n if (poll.isOpenEnded) {\n return (\n <Grid mt={4} container alignItems=\"center\" direction=\"column\" rowGap={2}>\n <Typography variant=\"h2\">\n <FormattedMessage id=\"thanks\" />\n </Typography>\n <Typography variant=\"body1\">\n <FormattedMessage id=\"answerAccepted\" />\n </Typography>\n </Grid>\n );\n }\n\n return (\n <>\n <Grid container direction=\"column\" rowGap={2}>\n {poll.options.map((option) => {\n const bgColorOfScale = () => {\n if (option.valid) {\n return COLOURS.GREEN;\n } else if (option.isVoted) {\n const color = COLOURS[auth.me.getAvatarColor];\n /* MUI lighten() do not support css variables */\n return getStyleColor(color)\n } else if (option.votesCount > 0) {\n return COLOURS.LIGHT;\n } else {\n return COLOURS.WHITE;\n }\n };\n\n const getMainBgColor = (color: string) => {\n return color === COLOURS.LIGHT ? COLOURS.WHITE : lighten(color, 0.5);\n };\n\n return (\n <Grid\n item\n xs\n key={option.id}\n className={classes.progress}\n data-qa-votes={option.votesCount}\n data-qa-option={option.option}\n bgcolor={getMainBgColor(bgColorOfScale())}\n >\n <Typography\n component=\"span\"\n color={option.isVoted || option.valid ? COLOURS.WHITE : COLOURS.BLACK_01}\n fontWeight={500}\n padding=\"8px 25px 8px 12px\"\n zIndex=\"10\"\n >\n {option.option}\n </Typography>\n <Box\n width={option.votesCount ? `${(option.votesCount / countTotal) * 100}%` : '100%'}\n bgcolor={bgColorOfScale()}\n position=\"absolute\"\n minHeight=\"100%\"\n borderRadius=\"10px\"\n />\n <Typography\n component=\"span\"\n variant=\"body2\"\n position=\"absolute\"\n right=\"10px\"\n color={option.isVoted || option.valid ? lighten(COLOURS.WHITE, 0.5) : COLOURS.BLACK_01}\n >\n {option.votesCount}\n </Typography>\n </Grid>\n );\n })}\n </Grid>\n </>\n );\n};\n\nexport default observer(PollVariant);\n","import makeStyles from '@mui/styles/makeStyles';\nimport { COLOURS, zINDEX } from 'theme/consts';\n\nexport default makeStyles(\n {\n root: {\n display: 'flex',\n flexDirection: 'column',\n maxWidth: 432,\n width: '100%',\n position: 'absolute',\n left: 0,\n bottom: 0,\n backgroundColor: COLOURS.BG,\n color: COLOURS.PRIMARY,\n boxShadow: '0px 0px 25px rgba(0, 0, 0, 0.15)',\n borderRadius: 10,\n padding: 24,\n zIndex: zINDEX.POLL_PORTAL,\n overflow: 'hidden',\n maxHeight: 'calc(100vh - 50px)',\n '&:not(.dragging)': {\n transition: 'height 0.3s, transform 0.3s',\n },\n },\n pollDragHolder: {\n position: 'absolute',\n zIndex: zINDEX.POLL_PORTAL_DRAG_HOLDER,\n left: '50%',\n transform: 'translate(-50%)',\n width: 'auto',\n top: 0,\n },\n pollDrag: {\n padding: 14,\n cursor: 'grab',\n userSelect: 'none',\n '&:before': {\n content: '\"\"',\n display: 'block',\n width: 40,\n height: 4,\n background: '#B7B9C9',\n borderRadius: 16,\n },\n },\n pollBackCover: {\n background: 'rgba(29, 29, 44, 0.7)',\n position: 'fixed',\n inset: 0,\n },\n },\n {\n name: 'PollPortal',\n },\n);\n","import React, { FC, useCallback, useMemo, useEffect, useState, useRef } from 'react';\nimport Portal from '@mui/material/Portal';\nimport Typography from '@mui/material/Typography';\nimport { Grid } from '@mui/material';\nimport Box from '@mui/system/Box';\nimport { observer } from 'mobx-react-lite';\nimport { FormattedMessage } from 'react-intl';\n\nimport { COLOURS } from 'theme/consts';\nimport { isMobile } from 'utils/browser';\nimport { getPollType } from 'utils/helper';\n\nimport useKeystone from '../../keystone';\nimport { POLL_CONTAINER } from '../../types/const';\nimport { IPollStatus } from '../../types/types';\n\nimport ClosePortalButton from './components/ClosePortalButton';\nimport PollVariant from './components/PollVariant';\nimport ResultVariant from './components/ResultVariant';\nimport useStyles from './styles';\nimport useIosSheet from './useIosSheet';\nimport Channel from 'keystone/chat/channel';\nimport Poll from 'keystone/chat/poll';\n\nconst getPortalElement = () => {\n let element = document.getElementById(POLL_CONTAINER);\n\n if (!element) {\n element = document.createElement('div');\n element.id = POLL_CONTAINER;\n document.body.appendChild(element);\n }\n\n return element;\n};\n\nconst PollPortal: FC<{ currentChannel: Channel, poll: Poll }> = ({ currentChannel, poll }) => {\n const {\n auth,\n ui: { isMobile },\n } = useKeystone();\n\n const classes = useStyles();\n\n const onClose = useCallback(() => {\n currentChannel.closePollPortal();\n }, [currentChannel]);\n\n const { dragRef, setInitialHeight } = useIosSheet(onClose);\n\n const isVoted = poll?.options.find((option) => option.isVoted) || poll?.isVoted;\n\n return (\n <Portal container={getPortalElement()}>\n {isMobile && (\n <div\n onClick={onClose}\n id=\"poll-back-cover\"\n className={classes.pollBackCover}\n />\n )}\n <div className={classes.root} id=\"poll\" ref={setInitialHeight}>\n <Box position=\"relative\">\n <Grid>\n <Typography variant=\"h2\" sx={{ wordBreak: 'break-word', marginRight: '5px' }}>\n {poll?.question}\n </Typography>\n <Typography color={COLOURS.SECONDARY} marginBottom=\"16px\">\n <FormattedMessage id={getPollType(poll)} />\n </Typography>\n </Grid>\n {isVoted || (auth.isModerator && poll?.status === IPollStatus.Done) ? (\n <ResultVariant poll={poll} />\n ) : (\n <PollVariant poll={poll} channel={currentChannel} />\n )}\n </Box>\n {isMobile && (\n <div className={classes.pollDragHolder}>\n <div className={classes.pollDrag} ref={dragRef} />\n </div>\n )}\n {!isMobile && (\n <ClosePortalButton onClose={onClose} />\n )}\n </div>\n </Portal>\n );\n};\n\nexport default observer(PollPortal);\n","import React, { useState, useEffect, useRef } from 'react';\n\nconst useIosSheet = (onClose: VoidFunction | undefined) => {\n const sheetRef = useRef<HTMLDivElement | null>(null);\n const [dragRef, setDragRef] = useState<HTMLDivElement | null>(null);\n\n const initialHeight = useRef<number | null>(0);\n const currentHeight = useRef<number>(100);\n\n const dragPosition = useRef<number | null | undefined>(undefined);\n\n const setInitialHeight = (value: HTMLDivElement | null) => {\n if (!sheetRef.current) {\n sheetRef.current = value;\n }\n\n const h = sheetRef.current?.getBoundingClientRect().height;\n if (h) {\n initialHeight.current = (h / window.innerHeight) * 100;\n setCurrentHeight(initialHeight.current);\n }\n };\n\n const setCurrentHeight = (percent: number) => {\n if (!sheetRef.current) {\n return;\n }\n\n currentHeight.current = Math.max(0, Math.min(100, percent));\n sheetRef.current.style.height = `${currentHeight.current}vh`;\n\n if (currentHeight.current === 0) {\n sheetRef.current.style.transform = 'translateY(100%)';\n\n const onTransitionend = () => {\n sheetRef.current?.removeEventListener('transitionend', onTransitionend);\n onClose?.();\n };\n\n sheetRef.current.addEventListener('transitionend', onTransitionend);\n }\n };\n\n const getPageY = (event: MouseEvent | TouchEvent) => {\n if (event instanceof TouchEvent) {\n return event.touches[0].pageY;\n }\n\n return event.pageY;\n };\n\n const onDragStart = (event: MouseEvent | TouchEvent) => {\n dragPosition.current = getPageY(event);\n if (sheetRef.current) {\n sheetRef.current.classList.add('dragging');\n }\n };\n\n const onDragMove = (event: MouseEvent | TouchEvent) => {\n if (!dragPosition.current) {\n return;\n }\n\n const y = getPageY(event);\n const deltaY = dragPosition.current - y;\n const deltaHeight = (deltaY / window.innerHeight) * 100;\n\n dragPosition.current = y;\n\n setCurrentHeight(currentHeight.current + deltaHeight);\n };\n\n const onDragEnd = () => {\n if (!initialHeight.current) {\n return;\n }\n\n if (dragPosition.current === undefined) {\n return;\n }\n\n dragPosition.current = undefined;\n\n if (sheetRef.current) {\n sheetRef.current.classList.remove('dragging');\n }\n\n if (currentHeight.current > 75) {\n setCurrentHeight(100);\n return;\n }\n\n if (currentHeight.current < 50) {\n setCurrentHeight(0);\n return;\n }\n\n setCurrentHeight(initialHeight.current);\n };\n\n useEffect(() => {\n dragRef?.addEventListener('mousedown', onDragStart);\n dragRef?.addEventListener('touchstart', onDragStart);\n\n window.addEventListener('mousemove', onDragMove);\n window.addEventListener('touchmove', onDragMove);\n window.addEventListener('mouseup', onDragEnd);\n window.addEventListener('touchend', onDragEnd);\n\n return () => {\n dragRef?.addEventListener('mousedown', onDragStart);\n dragRef?.addEventListener('touchstart', onDragStart);\n\n window.addEventListener('mousemove', onDragMove);\n window.addEventListener('touchmove', onDragMove);\n window.addEventListener('mouseup', onDragEnd);\n window.addEventListener('touchend', onDragEnd);\n };\n }, [dragRef]);\n\n return {\n dragRef: setDragRef,\n setInitialHeight,\n };\n};\n\nexport default useIosSheet;\n","import React, { FC } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport useKeystone from '../../keystone';\nimport PollPortal from './PollPortal';\n\nconst PollPortalWrapper: FC = () => {\n const {\n settings,\n chat,\n ui,\n } = useKeystone();\n\n const currentChannel = chat.channels.get(ui.params.id as string);\n\n if (!settings.showPolls || !currentChannel) {\n return null;\n }\n\n const poll = currentChannel.getActivePoll;\n\n if (!poll) {\n return null;\n }\n\n return (\n <PollPortal currentChannel={currentChannel} poll={poll} />\n );\n};\n\nexport default observer(PollPortalWrapper);\n","import React, { FC } from 'react';\nimport Grid from '@mui/material/Grid';\nimport makeStyles from '@mui/styles/makeStyles';\nimport PollModeratorResultPage from 'containers/PollModeratorResultPage';\nimport PollResultOpenEndedDetailPage from 'containers/PollResultOpenEndedDetailPage';\nimport { SnackbarProvider } from 'notistack';\nimport { Router } from './components/Router';\nimport AuthLayout from './containers/AuthLayout';\nimport ChannelPage from './containers/ChannelPage';\nimport Channels from './containers/Channels';\nimport CreatePollPage from './containers/CreatePollPage';\nimport PollListPage from './containers/PollListPage';\nimport Profile from './containers/Profile';\nimport SocketLayout from './containers/SocketLayout';\nimport UsersListPage from './containers/UsersListPage';\nimport Routes from './routes';\nimport packageJson from '../package.json';\nimport PollPortal from 'containers/PollPortal';\nimport { MAIN_CONTAINER } from 'types/const';\nimport { getThemeColors } from 'theme/theme';\nimport { COLOURS } from 'theme/consts';\nimport { GlobalStyles } from '@mui/material';\nimport { AppTheme } from 'types/types';\n\nconst useStyles = makeStyles(\n {\n snackbar: {\n maxWidth: 310,\n },\n },\n {\n name: 'Snackbar',\n },\n);\n\nconst mainContainer = {\n width: '100%',\n height: '100%',\n background: COLOURS.BG,\n overflow: 'hidden',\n position: 'relative',\n boxShadow: '0px 2px 16px rgba(29, 29, 44, 0.12)',\n borderRadius: '10px',\n};\n\nconst App: FC<{theme?: AppTheme}> = ({theme}) => {\n const classes = useStyles();\n const colors = getThemeColors(theme)\n\n return (\n <>\n <Grid\n flex={1}\n container\n wrap=\"nowrap\"\n sx={mainContainer}\n direction=\"column\"\n data-version={packageJson.version}\n id={MAIN_CONTAINER}\n >\n <GlobalStyles styles={{html: colors}} />\n <SnackbarProvider\n dense\n maxSnack={3}\n autoHideDuration={3000}\n classes={{ root: classes.snackbar }}\n >\n <AuthLayout>\n <SocketLayout>\n <Router route={Routes.Profile}>\n <Profile />\n </Router>\n <Router route={`${Routes.Users}/:id`}>\n <UsersListPage />\n </Router>\n <Router route={Routes.Users}>\n <UsersListPage />\n </Router>\n <Router route={Routes.Channels}>\n <Channels channelTabType={Routes.Channels} />\n </Router>\n <Router route={Routes.Direct}>\n <Channels channelTabType={Routes.Direct} />\n </Router>\n <Router route={`${Routes.Channels}/:id`}>\n <ChannelPage />\n </Router>\n <Router route={`${Routes.Polls}/:id`}>\n <PollListPage />\n </Router>\n <Router route={`${Routes.CreatePoll}/:id/:pollId`}>\n <CreatePollPage />\n </Router>\n <Router route={`${Routes.PollResultDetail}/:id/:pollId`}>\n <PollModeratorResultPage />\n </Router>\n <Router route={`${Routes.PollResultOpenEndedDetail}/:id/:pollId`}>\n <PollResultOpenEndedDetailPage />\n </Router>\n </SocketLayout>\n </AuthLayout>\n </SnackbarProvider>\n </Grid>\n <PollPortal />\n </>\n );\n};\n\nexport default App;\n","import CssBaseline from '@mui/material/CssBaseline';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport StyledEngineProvider from '@mui/material/StyledEngineProvider';\nimport ThemeProvider from '@mui/material/styles/ThemeProvider';\nimport { observer } from 'mobx-react-lite';\nimport React, { FC, useEffect, useState } from 'react';\nimport { IntlProvider } from 'react-intl';\nimport { onSnapshot } from 'mobx-keystone';\nimport { reaction } from 'mobx';\nimport * as Sentry from \"@sentry/react\";\nimport { BrowserTracing } from '@sentry/tracing';\nimport flatten from 'flat';\n\nimport useEventHook from 'hooks/useEventHook';\nimport useKeystone from 'keystone';\nimport muiTheme from 'theme/theme';\nimport { getStoredAccessToken } from 'utils/auth';\nimport { findAppInitialData } from 'utils/common';\nimport {\n ChatErrorCode,\n EventBusEventEnum,\n IEvents,\n ListenerEventEnum\n} from 'utils/eventBus/types';\nimport { initializeApi } from 'api';\nimport { getSettings } from 'keystone/service';\nimport LoadingStatus from 'components/LoadingStatus';\nimport eventBus from 'utils/eventBus';\nimport locale from 'locales';\nimport { ChatVisualState } from 'types/enums';\nimport { AppTheme } from 'types/types';\nimport ErrorBoundary from 'components/ErrorBoundary';\n\nimport packageJson from '../package.json';\nimport App from './App';\nimport logger from 'utils/logger';\n\ninterface IChatProps {\n apiUrl?: string;\n appId?: string;\n channelId?: string;\n userToken?: string;\n onEvent?: (data: IEvents) => void;\n debug?: boolean;\n showCloseButton?: boolean;\n showHeader?: boolean;\n showMessageInput?: boolean;\n showOpenInPopupButton?: boolean;\n showPolls?: boolean;\n chatVisualState?: ChatVisualState;\n theme?: AppTheme;\n lang?: string;\n}\n\nconst handleInitError = (errorInfo: unknown) => {\n logger.error('Chat init error', {case: 'handleInitError', errorInfo})\n eventBus.emit(ListenerEventEnum.App, {\n event: EventBusEventEnum.ChatInitError,\n data: errorInfo,\n });\n}\n\nconst Chat: FC<IChatProps> = ({\n appId: appIdFromProps,\n apiUrl: apiUrlFromProps,\n channelId: channelIdFromProps,\n userToken: userTokenFromProps,\n onEvent,\n debug = false,\n showCloseButton = true,\n showHeader = true,\n showMessageInput = true,\n showOpenInPopupButton = false,\n showPolls = true,\n chatVisualState = ChatVisualState.Hidden,\n theme,\n lang,\n}) => {\n const [isReady, setIsReady] = useState(false);\n\n const root = useKeystone();\n\n useEventHook(ListenerEventEnum.App, onEvent || (() => {}));\n\n const resetChat = async () => {\n setIsReady(false);\n\n /* TBD: should be moved outside, since resetChat might be called multiple times due reconnect attempts */\n if (process.env.REACT_APP_SENTRY_DSN) {\n Sentry.init({\n dsn: process.env.REACT_APP_SENTRY_DSN,\n release: packageJson.version || 'unknown',\n environment: process.env.NODE_ENV || 'unknown',\n ignoreErrors: [\n 'ResizeObserver loop',\n 'invalid spatialLayer',\n 'AbortError:',\n ],\n integrations: [new BrowserTracing()],\n tracesSampleRate: 1.0,\n });\n }\n\n root.init();\n\n if (debug) {\n // eslint-disable-next-line no-console\n onSnapshot(root, (newSnapshot) => console.log('snapshot', newSnapshot));\n }\n\n const appInitialDataFromAttr = findAppInitialData();\n\n const appId = appInitialDataFromAttr.appIdFromAttr || appIdFromProps || process.env.DEFAULT_APP_ID;\n const apiUrl = appInitialDataFromAttr.apiUrlFromAttr || apiUrlFromProps || process.env.REACT_APP_API_BASEURL;\n const channelId = appInitialDataFromAttr.channelIdFromAttr || channelIdFromProps || process.env.DEFAULT_CHANNEL_ID;\n const userToken = userTokenFromProps || getStoredAccessToken();\n\n if (!appId || !apiUrl || !channelId || !userToken) {\n const errors = [\n ['No app id', !appId],\n ['No API url', !apiUrl],\n ['No user token', !userToken],\n ['No channel id', !channelId],\n ];\n\n const message = errors\n .filter((x) => x[1])\n .map((x) => x[0])\n .join(', ');\n\n handleInitError({\n message,\n code: ChatErrorCode.MissingParams,\n severity: 'critical',\n })\n\n throw new Error(message);\n }\n\n initializeApi(apiUrl);\n\n root.ui.setChannelId(channelId);\n root.auth.setAccessToken(userToken);\n root.auth.setAppId(appId);\n\n const settings = await getSettings(root, appId);\n if (!settings) {\n handleInitError({\n message: 'Settings fetch failed',\n code: ChatErrorCode.SettingsFetchFailed,\n severity: 'error',\n })\n }\n\n setIsReady(true);\n\n eventBus.emit(ListenerEventEnum.App, {\n event: EventBusEventEnum.ChatLoaded,\n });\n\n /* reaction triggers after effect, need to set manually */\n root.ui.setChatVisualState(chatVisualState);\n };\n\n useEffect(() => reaction(\n () => root.toggleReset,\n () => {\n resetChat();\n },\n ), []);\n\n useEffect(() => {\n if (isReady && root.ui.isMobile) {\n root.ui.setChatVisualState(chatVisualState);\n }\n }, [chatVisualState, isReady]);\n\n useEffect(() => {\n // Load global app settings first\n resetChat();\n\n return () => {\n console.log('Chat unmount');\n }\n }, [\n channelIdFromProps,\n appIdFromProps,\n apiUrlFromProps,\n userTokenFromProps,\n debug,\n ]);\n\n useEffect(() => {\n root.settings.setShowCloseButton(showCloseButton);\n root.settings.setShowHeader(showHeader);\n root.settings.setShowMessageInput(showMessageInput);\n root.settings.setShowOpenInPopupButton(showOpenInPopupButton);\n root.settings.setShowPolls(showPolls);\n },[\n showCloseButton,\n showHeader,\n showMessageInput,\n showOpenInPopupButton,\n showPolls,\n ]);\n\n const currentLang = lang || root.ui.lang;\n\n return (\n <ErrorBoundary>\n <IntlProvider\n locale={currentLang}\n messages={flatten(locale[currentLang as 'en' | 'ru'])}\n defaultLocale=\"en\"\n >\n <StyledEngineProvider injectFirst>\n <ThemeProvider theme={muiTheme}>\n <CssBaseline />\n {isReady ? (\n <App theme={theme} />\n ) : (\n <>\n <LinearProgress color=\"secondary\" />\n <LoadingStatus intlId=\"loadingSettings\" />\n </>\n )}\n </ThemeProvider>\n </StyledEngineProvider>\n </IntlProvider>\n </ErrorBoundary>\n );\n};\n\nexport default observer(Chat);\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","__webpack_exports__","Methods","api","require","EventEmitter","listener","callback","useEffect","eventBus","on","off","Cookie","caller","method","address","params","config","response","GET","Get","paramsSerializer","qs","data","POST","Post","PATCH","Patch","DELETE","Delete","initializeApi","apiUrl","axios","baseURL","timeout","headers","withCredentials","AvatarColorEnum","POLL_CONTAINER","MAIN_CONTAINER","zINDEX","MessageTypeEnum","ChannelTypeEnum","UserRoleEnum","AuthModeEnum","ChatVisualState","COLOURS","BLACK_01","BLACK_02","BLACK_03","BLACK_06","WHITE","BLACK","GREY","POLL_TEXT_PRIMARY","POLL_TEXT_SECONDARY","SURFACE_PRIMARY","SURFACE_SECONDARY","MESSAGE_DATE_COLOR","BG_FOR_SLOT","LIGHT","LIGHT_01","LIGHT_02","LIGHT_03","LIGHT_04","LIGHT_05","BLUE_02","BLUE","GREEN","ORANGE","ACTIVE","AVATAR1_BURGUNDY","AVATAR2_RED","AVATAR3_DARK_PINK","AVATAR4_PINK","AVATAR5_GOLD","AVATAR6_NAVY_GREEN","AVATAR7_NAVY_BLUE","AVATAR8_PURPLE","User","model","colors","str","keys","this","displayName","length","Math","floor","Model","id","username","avatarUrl","role","isMuted","computed","userRef","rootRef","getId","maybeUser","undefined","onResolvedValueChange","ref","newValue","oldValue","detach","IPollStatus","AppTheme","Auth","token","accessToken","defaults","common","Authorization","setToken","isAuthorized","cookies","ACCESS_TOKEN","expires","Date","setFullYear","getFullYear","me","Moderator","user","userModel","appId","withSetter","isAnonymousAllowed","modelAction","createUserFactory","String","getPollType","poll","withAnswer","isOpenEnded","sortPollDesc","b","createdAt","getTime","Poll","status","setStatus","vote","votes","push","question","isVoted","options","validOptions","templateId","stoppedAt","New","updatedAt","isMultiselect","pollRef","maybePoll","SystemMessageEnum","convertServerPollToModel","forEach","option","valid","Message","current","root","event","systemData","UserJoinedEvent","userId","whoJoined","chat","createUserRef","UserChangedEvent","oldDisplayName","newDisplayName","UserChangedChannelEvent","newName","whoRenamedChannel","ChangedChannelEvent","text","type","meta","PinnedMessage","channelId","messageId","message","maybePinnedMessage","Channel","subscribe","payload","addMessages","ids","map","x","timeLimit","messages","newMessages","index","array","System","has","messageModel","getRoot","loadSystemData","set","items","activePoll","closePollPortal","polls","pollModel","filter","p","setActivePoll","voteId","pollId","timestamp","find","item","Number","votesCount","Done","pinnedMessages","clear","messageToDelete","delete","sort","InProgress","Array","from","values","compareAsc","filterFn","msgIdx","sortedMessages","slice","msg","idx","arr","reverse","m","size","maybeCurrent","Boolean","getPinnedMessages","findIndex","name","externalId","Public","objectMap","directUsersOnly","settings","Pub","Chat","fetchUsers","newUsers","addUsers","chunkProcessor","fetchingQueueUser","chunk","disposer","startFetching","users","channels","ch","Blank","includes","Direct","pubs","found","loadingUser","channel","channelModel","addPoll","startPoll","pub","pubModel","observable","ListenerEventEnum","EventBusEventEnum","ChatErrorCode","Settings","createChannelAllowed","accessUnregisteredUsers","accessChatGuest","accessRegister","displayDirect","displayUserList","displayChannelList","displaySystemMessages","displayHeader","displayFooter","socketUrl","Mode1","Mode2","Mode3","Mode4","Mode5","Mode6","Mode7","Mode8","showCloseButton","showHeader","showMessageInput","showOpenInPopupButton","showPolls","Set","Logger","sendLogEvent","level","error","serializeError","emit","App","ChatLog","getDirectsList","directs","addChannels","logger","case","Sentry","scope","setTransactionName","getDirectChannelName","meId","auth","chatWithUser","u","SocketEventsEnum","setPinnedMessages","Routes","getInitialData","initial","publics","addPubs","setMe","lang","ui","setLang","login","password","app_id","setAccessToken","access_token","signup","saveProfile","avatar","sendData","joinChannel","joinChannelByExternalId","channelsList","setRoute","fetchMessagesBefore","limit","until","before","redirectToInitial","parseForCommands","reset","sendMessage","MessageSent","getSettings","setAll","scheduleReset","counter","registry","FinalizationRegistry","console","log","SocketStore","messageChunk","messagesByChannels","Map","processMessages","messageProcessingDisposer","startMessageProcessing","messageRateInterval","setInterval","window","chatRate","messageRate","clearInterval","object","onNewDirect","centrifuge","Centrifuge","getToken","result","debug","register","setIsSocketConnected","ctx","runInAction","onPollStart","stopPoll","answer","findPollById","addVote","onPollVoteOpenEnded","updateVotesCounter","onPollVotesUpdate","updateUser","onUpdateProfile","onMessagePinned","deleteMessages","onMessagesDelete","cleanAllMessages","onCleanChannelMessages","onUserConnected","mute","onUserMuted","unmute","onUserUnmuted","setSettings","onUpdateChannelSettings","connect","isSocketConnected","UI","handler","jumpToMessage","route","routeHistory","unshift","shift","navigator","language","toLowerCase","isMobile","UAParser","getDevice","chatVisualState","Hidden","Root","toggleReset","resetCounter","setTimeout","isRootStore","unregisterRootStore","socket","removeAllListeners","disconnect","registerRootStore","rootStore","context","createContext","useContext","styleOverrides","SECONDARY_02","Colors","themeOptions","palette","primary","PRIMARY","secondary01","SECONDARY_01","secondary03","SECONDARY_03","black02","secondary","SECONDARY","light02","secondary6","white","black","pollPrimary","pollSecondary","ERROR","main","typography","fontFamily","h1","fontSize","lineHeight","letterSpacing","margin","h2","fontWeight","h3","h4","body1","body2","subtitle1","subtitle2","spacing","components","MuiCheckbox","color","MuiTooltip","popper","zIndex","MuiPaper","rounded","borderRadius","MuiCard","overflow","MuiCardHeader","wordBreak","padding","marginBottom","MuiCardContent","paddingBottom","MuiMenuItem","boxShadow","MuiButtonBase","defaultProps","disableRipple","MuiSwitch","switchBase","BG","colorPrimary","ACCENT","MuiCssBaseline","createTheme","makeStyles","textAlign","opacity","props","intlId","classes","useStyles","className","FormattedMessage","en","muteUser","unmuteUser","loadingSocket","loadingInitial","loadingSettings","globalError","messageInputPlaceholder","channelName","newChannel","create","send","loginAsGuest","enter","enterYourName","enterTheChat","or","signIn","signInTheChat","dontHaveAccount","signUp","enterPassword","signUpInTheChat","alreadyHaveAccount","createAccount","test","profile","createNewChannel","pollQuestion","enterYourQuestion","pollWithCorrectAnswer","pollOptions","enterOption","createPoll","addOption","completePoll","seeResults","deletePoll","newPoll","reply","save","search","loading","userList","direct","questionNotBeEmpty","questionValidateLongerLetters","questionValidateWriteLeastTwoAnswerOptions","questionValidateLeastOneCorrectAnswer","questionValidateCorrectAnswerNotEmpty","questionValidateNotLongerLetters","joined","channelCreated","pinMessage","deleteMessage","deleteAllMessage","systemMessageChangedName","systemMessageUserChangedChannelName","selectPollType","multipleAnswerOptions","pollOpenEnded","thanks","answerAccepted","listEmpty","results","systemMessageChangedChannelName","menuDirect","pollValidateAnswerLongerLetters","pollValidateAnswerNotLongerLetters","restart","edit","templates","join","addOptionsNumber","pollAnswers","yourReply","pollResults","done","in_progress","new","areYouSure","anotherPollInProgress","time","dayBefore","yesterday","today","slowMode","slowModePeriod","seconds","forbidLinks","linkRemoved","timeLimit1","timeLimit2","clearChat","numberOfResponses","title","one","several","badge","admin","ru","observer","children","fallback","onError","ChatError","severity","code","UnhandledError","rest","mainColor","getBadgeColor","display","bgcolor","alpha","variant","fill","ACCENT_04","width","height","style","xmlns","viewBox","button","backgroundColor","ACCENT_01","transition","ACCENT_02","svg","errorButton","ERROR_04","ERROR_02","ERROR_03","CONTRAST","buttonPrimary","ACCENT_05","ACCENT_03","buttonOutlined","buttonWithText","marginRight","input","boxSizing","borderColor","label","radio","toggler","marginLeft","border","marginTop","styles","flexWrap","minHeight","borderBottom","alignItems","backButton","buttonsHolder","buttons","onBack","useKeystone","useMobileStyles","container","onClick","ChevronLeftIcon","ChatExpand","sx","Expand","ZoomOutIcon","ZoomInIcon","OpenInPopup","InPageIcon","ChatClose","CloseRegularIcon","columnGap","cursor","active","Size","noWrap","cls","getPollListForChannel","Error","onPollEndHandler","defaultErrorAction","err","onPollStartHandler","templatePoll","fontStyle","background","large","medium","small","contained","outlined","transform","flatTransparent","fullWidth","submit","link","textDecoration","disabled","other","classList","currentChannel","isPollsInProgress","formatDate","date","formatString","format","parseISO","locale","enGB","checkDayInterval","dateLeft","dateRight","differenceInDays","checkDateWhen","when","isToday","isYesterday","isThisYear","getPreparedDate","withToday","days","toISOString","xs","component","Typography","src","avatarColor","alt","textTransform","count","split","word","getLeadingLetters","checkbox","position","left","backgroundImage","backgroundRepeat","backgroundPosition","StyledInputElement","styled","StyledTextareaElement","maxRows","React","onChange","rightIcon","inputProps","onFocus","onBlur","errorText","useState","focused","setFocused","endAdornment","onFocusHandler","e","multiline","useMemo","justifyContent","Input","Textarea","componentsProps","target","value","wineLoader","wineglass","content","top","animation","bottom","right","ul","listStyle","li","transformOrigin","wrap","PollMessageIcon","number","getPollList","elevation","rowGap","getPollListByTemplateId","activeOrLastPoll","getActiveOrLastPollByTemplateId","back","direction","alignSelf","mb","paddingTop","Router","isSuccess","setIsSuccess","autorun","Route","match","setParams","cancelButton","Drawer","onClickClose","open","memo","footerActions","ActionBlock","buttonText","onClickButton","action","Fragment","href","getErrorMessage","toJSON","usernameGenerator","adjs","nouns","random","flexDirection","paddingLeft","paddingRight","field","fieldLabel","footer","Guest","intl","useIntl","enqueueSnackbar","useSnackbar","setUsername","onGuestEnter","placeholder","formatMessage","formLabel","Signin","onClickSignUp","setPassword","onLogin","isFilledForm","Signup","onClickSignIn","onSignup","header","openDrawerSignIn","setOpenDrawerSignIn","openDrawerSignUp","setOpenDrawerSignUp","openDrawerGuestEnter","setOpenDrawerGuestEnter","onSignUp","onSignIn","authMode","toLocaleLowerCase","renderMode","generatedUsername","borderTop","moreButton","moreButtonExpanded","sendButton","clearChatButton","inputContainer","resize","morePanel","submitDelayed","appearance","fillRule","clipRule","cx","cy","r","SvgIcon","y","rx","stroke","strokeWidth","closeButton","throttlePeriods","switch","DropMenuItems","onClose","isMessageThrottlingEnabled","setIsMessageThrottlingEnabled","collapseIn","setCollapseIn","slowModeInSecs","messageThrottlePeriod","setMessagThrottlePeriod","throttleMessages","linksDisabled","disallowLinks","currentSettings","setCUrrentSettings","portalEl","document","querySelector","handleChange","checked","handleChangeMessageThrottle","val","Portal","Grid","in","IconButton","channelSettings","CloseMiniIcon","FormGroup","FormControlLabel","control","Switch","labelPlacement","FormControl","FormLabel","RadioGroup","defaultValue","period","Radio","submitAttempt","onTimeout","submitAttemptTime","countDown","setCountDown","setSubmitAttempt","resetAttemptTimer","useRef","timerHandle","prev","clearTimeout","isModerator","isPublic","setMessage","setLoading","isExpanded","setIsExpanded","isSettingsOpen","setIsSettingsOpen","isSubmitDelayed","setIsSubmitDelayed","setSubmitAttemptTime","inputRef","onMessageSubmit","trim","now","focus","isLandscapeOrientation","matchMedia","matches","isLandscape","setIsLandscape","handleOrientationChange","mqList","addEventListener","removeEventListener","useLandscapeOrientation","isMessageEmpty","UpArrowIcon","MenuIcon","onKeyDown","shiftKey","preventDefault","stopPropagation","SendIcon","SettingsIcon","deleteAllMessages","TrashIcon","updateSettings","zeroMinWidth","renderMessage","theme","paper","minWidth","menuItem","icon","grey","anchorEl","restProps","disableAutoFocusItem","selected","divider","setAnchorEl","closeMenu","currentTarget","Avatar","getAvatarColor","createNewDirectChannel","chatWithUserId","searchDirectChannelWithUser","directChannelsList","createOrOpenDirectChat","own","directAllowed","publicChannel","directMessageConditions","lg","gap","textOverflow","whiteSpace","MutedIcon","wordWrap","short","messageOwn","messageBlock","borderRightColor","flexShrink","visibility","messageBlockOwn","tooltip","maxWidth","messageTip","borderLeft","messageTipOwn","borderLeftColor","borderRight","removedLink","showLineTime","setOpen","styleProps","showActionButtons","messageText","allowedText","flatMap","filterMessage","onMouseEnter","onMouseLeave","closest","dispatchEvent","MouseEvent","view","bubbles","pl","Box","MoreVert","last","virtListWrapper","flex","virtuosoRef","firstItemIndex","setFirstItemIndex","prevMessagesLength","setPrevMessagesLength","isFullyFetched","setIsFullyFetched","eventEmitter","ChatIsReady","diff","useEventHook","scrollToIndex","behavior","setJumpToMessage","fetchMore","useCallback","Virtuoso","overscan","startReached","initialTopMostItemIndex","max","totalCount","itemContent","virtuosoIndex","prevMessage","showLineTimeInTheBeginning","followOutput","isAtBottom","pinButton","pinnedMessage","flexBasis","pinDate","pinContainer","lastPinnedMessage","scrollToPinnedMessage","findMessageIdx","deletePinnedMessage","PinnedIcon","isDirect","showBackForDirect","onPollsClick","onDirectClick","goBack","ChatIcon","ml","channelRow","lastMessage","getUser","flexGrow","goToChannel","publicChannelsList","pubsList","createChannelForm","wrapper","animationDuration","animationName","to","setChannelName","onCreateChannel","row","clickRowHandler","directChannelName","SkeletonPage","load","getChatWithUser","channelTabType","showBackButton","onTabClick","tabId","buttonWrapper","isShowCreateChannel","setIsShowCreateChannel","Field","helperText","PollTypeEnum","PollTypeCard","onClickFromProps","scrollIntoView","block","inline","form","selectedPollType","clickHandler","batch","change","mt","MultipleAnswer","PollOption1","OneAnswer","PollOption2","OpenEndedAnswer","PollOption3","MAX_NUMBER_OF_QUESTION_LENGTH","findNumberOfFilledOptions","min_number","reduce","acc","curr","i","splice","errors","all","InputField","FieldHOC","initialValues","Checkbox","setMultiselect","handleMultiselectChange","onSubmit","Form","mutators","arrayMutators","validate","handleSubmit","rows","maxLength","FieldArray","fields","_","arrIdx","remove","CloseIcon","actionButton","lastActivePoll","onDeleteFromProps","onDelete","anchorMenu","setAnchorMenu","handleMenuActionClose","anchorOrigin","vertical","horizontal","pollTemplates","getPollTemplates","onDeletePoll","confirm","setPollList","getList","Profile","setDisplayName","setAvatar","onSaveProfile","htmlFor","initialDataReady","setInitialDataReady","reaction","userRow","sendMessageBtn","openNewChat","SendMessageIcon","setSearch","filteredUsers","SearchIcon","CloseCircleIcon","doVote","poll_id","dataQA","Button","voteHandler","setChecked","state","setValue","isValidInput","setIsValidInput","validationErrorText","setValidationErrorText","disableUnderline","py","responseOptions","setPollVoted","progress","progressLine","getActivePoll","countTotal","bgColorOfScale","getComputedStyle","body","cssProp","getPropertyValue","getStyleColor","lighten","maxHeight","pollDragHolder","pollDrag","userSelect","pollBackCover","inset","element","sheetRef","dragRef","setDragRef","initialHeight","currentHeight","dragPosition","setCurrentHeight","percent","min","onTransitionend","getPageY","TouchEvent","touches","pageY","onDragStart","add","onDragMove","deltaHeight","innerHeight","onDragEnd","setInitialHeight","h","getBoundingClientRect","useIosSheet","getElementById","createElement","appendChild","ResultVariant","snackbar","mainContainer","LightThemeColors","DarkThemeColors","documentElement","getThemeColors","packageJson","GlobalStyles","html","SnackbarProvider","dense","maxSnack","autoHideDuration","handleInitError","errorInfo","ChatInitError","appIdFromProps","apiUrlFromProps","channelIdFromProps","userTokenFromProps","userToken","onEvent","isReady","setIsReady","resetChat","dsn","process","release","environment","ignoreErrors","integrations","BrowserTracing","tracesSampleRate","init","onSnapshot","newSnapshot","appInitialDataFromAttr","channelIdFromAttr","getAttribute","appIdFromAttr","apiUrlFromAttr","DEFAULT_APP_ID","DEFAULT_CHANNEL_ID","MissingParams","setChannelId","setAppId","SettingsFetchFailed","ChatLoaded","setChatVisualState","setShowCloseButton","setShowHeader","setShowMessageInput","setShowOpenInPopupButton","setShowPolls","currentLang","IntlProvider","flatten","defaultLocale","injectFirst","muiTheme","__webpack_modules__"],"sourceRoot":""}