{"version":3,"sources":["tabs/settings/components/hours/workingHours.png","helpers/index.js","tabs/authorization/actions/security.js","configs.js","tabs/authorization/component/Input.js","tabs/authorization/component/PasswordInput.js","tabs/authorization/component/Button.js","helpers/isStringEmpty.js","tabs/authorization/component/LoginForm.js","tabs/authorization/api/admin.js","uiKit/loaders/loaderSmall/index.js","uiKit/loaders/loaderOverlay/index.js","tabs/authorization/component/FormMessage.js","helpers/emailValidation.js","tabs/authorization/component/ForgotPasswordForm.js","tabs/authorization/component/UnavailableSmall.js","tabs/authorization/component/ResetPasswordForm.js","tabs/authorization/component/SignUpForm.js","tabs/home/actions/snackBar.js","api/index.js","tabs/authorization/component/Login.js","tabs/authorization/api/login.js","security.js","tabs/authorization/actions/adminUser.js","tabs/home/actions/activeBot.js","tabs/home/api/bots.js","tabs/home/actions/bots.js","tabs/support/api/support.js","tabs/support/actions/supportRequest.js","uiKit/icons/Icons.js","uiKit/loaders/loader/index.js","tabs/dashboard/components/usersChart/DateRange.js","tabs/dashboard/components/ButtonCSV.js","tabs/dashboard/components/usersChart/HeaderStats.js","tabs/dashboard/components/usersChart/DateControl.js","tabs/dashboard/components/NoChartData.js","tabs/dashboard/api/dashboard.js","tabs/dashboard/actions/usersStatistics.js","tabs/dashboard/actions/supportStatistics.js","tabs/dashboard/actions/popularHoursStatistics.js","constants/totalUsersHeaders.js","tabs/dashboard/components/usersChart/AreaChart.js","constants/covertHeaders.js","tabs/dashboard/components/CircleChart.js","tabs/dashboard/components/hourlyChart/daysModel.js","tabs/dashboard/components/hourlyChart/DayModel.js","tabs/dashboard/components/hourlyChart/GridChart.js","tabs/dashboard/components/hourlyChart/GradientBar.js","constants/byTimeOfDayHeaders.js","tabs/dashboard/components/hourlyChart/index.js","uiKit/texts/Headline.js","tabs/dashboard/Dashboard.js","tabs/dashboard/components/Dashboard-styles.js","uiKit/icons/TextIcon.js","uiKit/icons/ListIcon.js","uiKit/icons/GalleryIcon.js","uiKit/icons/AttachmentMessageIcon.js","uiKit/icons/TypingIcon.js","tabs/flowBuilder/components/messages/AvailableMessages.js","tabs/flowBuilder/constants/messageTypes.js","uiKit/Modal.js","uiKit/icons/SetAttributeIcon.js","uiKit/icons/SaveUserInputIcon.js","uiKit/icons/TagIcon.js","uiKit/icons/RedirectToAtomIcon.js","uiKit/icons/RandomRedirectIcon.js","tabs/flowBuilder/components/ActionModalItem/ActionModalItem.js","tabs/flowBuilder/components/ActionModalItem/styles.js","helpers/deepCopyFunction.js","tabs/flowBuilder/components/AddActionModal/AddActionModal.js","tabs/flowBuilder/components/AddActionModal/styles.js","tabs/flowBuilder/components/NewMessage/NewMessage.js","tabs/flowBuilder/components/NewMessage/styles.js","tabs/flowBuilder/actions/atom.js","tabs/flowBuilder/api/flow.js","tabs/flowBuilder/actions/flows.js","tabs/flowBuilder/api/atom.js","tabs/flowBuilder/actions/searchAtoms.js","tabs/flowBuilder/components/messages/NewMessage.js","tabs/nlp/actions/contexts.js","tabs/nlp/api/context.js","tabs/nlp/actions/contextSize.js","tabs/flowBuilder/components/States.js","tabs/nlp/components/DeleteTrigger.js","tabs/nlp/actions/nlpRequests.js","tabs/nlp/actions/intents.js","tabs/nlp/api/nlp.js","tabs/nlp/actions/intentsSize.js","tabs/nlp/components/IntentsSelect.js","tabs/nlp/components/TriggerItem.js","tabs/nlp/components/AtomNLPModal.js","tabs/flowBuilder/api/tag.js","tabs/flowBuilder/actions/tags.js","uiKit/inputs/InputHolder.js","uiKit/buttons/SubmitButton.js","tabs/flowBuilder/components/messages/TagModal.js","tabs/flowBuilder/components/messages/Tags.js","tabs/flowBuilder/components/messages/TagAction.js","tabs/settings/api/settings.js","tabs/settings/actions/botAccessors.js","tabs/flowBuilder/components/RandomAtoms/RandomAtomsStyles.js","uiKit/icons/InfoButton.js","uiKit/tooltip/Tooltip.js","uiKit/tooltip/TooltipStyles.js","tabs/flowBuilder/components/RandomAtoms/RandomAtomConfig.js","uiKit/AtomSelect/styles.js","uiKit/AtomSelect/AtomSelect.js","tabs/flowBuilder/components/RandomAtoms/RandomAtoms.js","helpers/urlValidation.js","uiKit/icons/SearchIcon.js","uiKit/Search/Search.js","uiKit/Search/styles.js","uiKit/LaguageSelector/styles.js","uiKit/LaguageSelector/LaguageSelector.js","uiKit/SecondaryButton/SecondaryButton.js","uiKit/SecondaryButton/styles.js","uiKit/icons/PlusIcon.js","uiKit/icons/TrashIcon.js","uiKit/AttributeSelectItem/AttributeSelectItem.js","uiKit/AttributeSelectItem/styles.js","tabs/settings/components/general/AttributesModalList/AttributesModalList.js","tabs/settings/components/general/AttributesModalList/styles.js","tabs/settings/actions/attributes.js","tabs/settings/api/attributes.js","tabs/settings/components/general/AttributesModal/styles.js","tabs/settings/components/general/AttributesModal/AttributesModal.js","helpers/getModifiedObject.js","uiKit/InputAutosuggest/InputAutosuggest.js","uiKit/InputAutosuggest/styles.js","constants/keyCodes.js","constants/attributeTypes.js","helpers/getAttributeColor.js","helpers/formatOption.js","uiKit/AttributeSelect/styles.js","uiKit/AttributeSelect/AttributeSelect.js","tabs/flowBuilder/components/PostbackAttributes/PostbackAttributes.js","tabs/flowBuilder/components/PostbackAttributes/styles.js","tabs/flowBuilder/components/messages/MessageButton.js","tabs/flowBuilder/components/messages/QuickReply.js","tabs/flowBuilder/components/messages/MessageQuickReplies.js","uiKit/AttributeItem/AttributeItem.js","uiKit/AttributeItem/styles.js","uiKit/AttributesList/config.js","uiKit/AttributesList/AttributesList.js","uiKit/AttributesList/styles.js","uiKit/icons/AttributeIcon.js","uiKit/InputWithParams/config.js","hooks/usePrevious.js","helpers/regexIndexOf.js","uiKit/InputWithParams/InputWithParams.js","uiKit/InputWithParams/styles.js","tabs/flowBuilder/components/TextMessage/TextMessage.js","tabs/flowBuilder/components/TextMessage/styles.js","uiKit/inputs/FileDropzone.js","tabs/flowBuilder/components/messages/GenericTemplate.js","tabs/flowBuilder/components/messages/ListTemplate.js","tabs/flowBuilder/components/messages/Template.js","tabs/flowBuilder/components/messages/Attachment.js","tabs/flowBuilder/components/messages/RandomTextMessage.js","tabs/flowBuilder/components/messages/RandomAttachment.js","tabs/flowBuilder/components/messages/Typing.js","tabs/flowBuilder/components/messages/UserInput.js","tabs/flowBuilder/components/SetAttribute/SetAttribute.js","tabs/flowBuilder/components/SetAttribute/styles.js","tabs/flowBuilder/components/ValidationSelect/styles.js","tabs/flowBuilder/components/ValidationSelect/ValidationSelect.js","tabs/flowBuilder/components/SaveUserInput/SaveUserInput.js","tabs/flowBuilder/components/SaveUserInput/styles.js","tabs/flowBuilder/components/OperatorSelect/styles.js","tabs/flowBuilder/components/OperatorSelect/OperatorSelect.js","tabs/flowBuilder/components/ConjunctionSelect/styles.js","tabs/flowBuilder/components/ConjunctionSelect/ConjunctionSelect.js","tabs/flowBuilder/components/ConditionExpression/ConditionExpression.js","tabs/flowBuilder/components/ConditionExpression/styles.js","helpers/generateId.js","tabs/flowBuilder/components/ConditionGroup/ConditionGroup.js","tabs/flowBuilder/components/ConditionGroup/styles.js","tabs/flowBuilder/components/SmartRedirect/SmartRedirect.js","tabs/flowBuilder/components/SmartRedirect/styles.js","tabs/flowBuilder/components/MessagesWrap/MessagesWrap.js","tabs/flowBuilder/components/MessagesWrap/styles.js","helpers/formatAtom.js","tabs/flowBuilder/components/AtomEditor.js","tabs/flowBuilder/components/NewAtom.js","tabs/flowBuilder/components/DeleteFlow.js","tabs/flowBuilder/components/NewFlow.js","tabs/flowBuilder/components/DeleteAtom.js","constants/time.js","tabs/settings/api/twilioCredetials.js","tabs/settings/actions/twilioCredentials.js","tabs/flowBuilder/components/FeedbackModal/FeedbackModalStyles.js","tabs/flowBuilder/components/FeedbackModal/VotesLine/VotesLineStyles.js","tabs/flowBuilder/components/FeedbackModal/VotesLine/VotesLine.js","tabs/analytics/components/CommentsFilter/CommentsFilterConfig.js","uiKit/icons/TreeDots.js","tabs/analytics/components/PopoverSupport/PopoverSupport.js","tabs/analytics/components/PopoverSupport/PopoverSupportStyles.js","tabs/analytics/components/Comment/Comment.js","tabs/analytics/components/Comment/CommentStyles.js","tabs/flowBuilder/components/FeedbackModal/FeedbackModal.js","constants/supportMessagesSize.js","tabs/flowBuilder/Builder.js","tabs/nlp/components/DeleteIntent.js","tabs/nlp/components/NoNlpData.js","uiKit/table/TablePaginationActionsWrapped.js","uiKit/table/Pagination.js","tabs/nlp/components/IntentModal/IntentModalStyles.js","tabs/widget/components/TabTemplate.js","tabs/nlp/components/UserSays.js","tabs/nlp/components/IntentModal/IntentModal.js","tabs/nlp/components/Intents.js","tabs/nlp/components/Triggers.js","tabs/nlp/components/training/Training-styles.js","tabs/nlp/components/training/TrainButton.js","tabs/nlp/components/training/TrainingRequest-view.js","helpers/getNestedProps.js","tabs/nlp/components/training/Training-config.js","tabs/nlp/components/training/Training-requests-view.js","tabs/nlp/components/training/TrainingHeader-view.js","tabs/nlp/components/training/Training-container.js","routes/nlpRoutes.js","uiKit/submenu/Submenu.js","uiKit/texts/Heading.js","tabs/nlp/components/EmptyNlp.js","tabs/nlp/NLP.js","tabs/support/components/TabsWrap/TabsWrap.js","tabs/support/components/TabsWrap/styles.js","tabs/support/components/TabsWrap/config.js","uiKit/icons/Search.js","tabs/support/components/Search/Search.js","tabs/support/components/Search/styles.js","tabs/support/components/UserDialogPreview/config.js","tabs/support/actions/activeUser.js","uiKit/Badge/Badge.js","uiKit/Badge/BadgeStyles.js","helpers/getMinutesLeft.js","tabs/support/components/InteractionTimer/config.js","tabs/support/components/InteractionTimer/InteractionTimer.js","tabs/support/components/InteractionTimer/styles.js","hooks/useTimer.js","constants/chatPlatform.js","tabs/support/components/UserNameBlock/UserNameBlock.js","tabs/support/components/UserNameBlock/styles.js","tabs/support/components/UserDialogPreview/UserDialogPreview.js","tabs/support/components/UserDialogPreview/styles.js","tabs/support/components/DialogsSection/DialogsSection.js","tabs/support/components/DialogsSection/styles.js","tabs/support/api/users.js","constants/userSize.js","tabs/support/actions/users.js","hooks/useDebounce.js","helpers/getUrlEnd.js","helpers/isElementBottom.js","helpers/isUrlEndsWithSupport.js","tabs/support/components/OpenRequests/OpenRequests.js","tabs/support/components/OpenRequests/styles.js","tabs/support/components/SolvedRequests/SolvedRequests.js","tabs/support/components/SolvedRequests/styles.js","tabs/support/components/DialogsContainer/DialogsContainer.js","tabs/support/components/DialogsContainer/styles.js","uiKit/icons/TreeDotsIcon.js","tabs/support/api/user.js","constants/messagesSize.js","tabs/support/components/CloseRequestButton/styles.js","tabs/support/components/CloseRequestButton/CloseRequestButton.js","tabs/support/components/AssignToMeButton/AssignToMeButton.js","tabs/support/components/AssignToMeButton/styles.js","tabs/support/components/AssignToPopover/AssignToPopover.js","tabs/support/components/AssignToPopover/styles.js","tabs/support/components/UserWebsite/UserWebsite.js","tabs/support/components/UserWebsite/styles.js","helpers/shortenUrl.js","helpers/copyValueToClipboard.js","tabs/support/components/UserName/UserName.js","tabs/support/components/UserName/styles.js","constants/suportStatuses.js","constants/chatStatus.js","tabs/support/components/ChatHeader/ChatHeader.js","tabs/support/components/ChatHeader/styles.js","tabs/support/components/MessageWrap/MessageWrap.js","tabs/support/components/MessageWrap/styles.js","tabs/support/components/TextMessage/TextMessage.js","tabs/support/components/TextMessage/styles.js","tabs/support/components/ImageMessage/ImageMessage.js","tabs/support/components/ImageMessage/styles.js","tabs/support/components/AudioMessage/AudioMessage.js","tabs/support/components/VideoMessage/VideoMessage.js","tabs/support/components/Buttons/Buttons.js","tabs/support/components/Buttons/styles.js","tabs/support/components/GenericMessage/GenericMessage.js","tabs/support/components/GenericMessage/styles.js","uiKit/slider/ArrowIconsStyles.js","uiKit/slider/Next.js","uiKit/icons/NextIcon.js","uiKit/slider/Prev.js","uiKit/icons/PrevIcon.js","uiKit/slider/Slider.js","uiKit/slider/SliderStyles.js","tabs/support/components/CarouselMessage/CarouselMessage.js","tabs/support/components/CarouselMessage/styles.js","tabs/support/components/Message/Message.js","tabs/support/components/Message/styles.js","helpers/getUrlHash.js","tabs/support/components/MessageGroup/MessageGroup.js","tabs/support/components/MessageGroup/styles.js","tabs/support/components/MessagesWrap/MessagesWrap.js","tabs/support/components/MessagesWrap/styles.js","tabs/support/components/MessagesWrap/config.js","helpers/isElementTop.js","uiKit/icons/SendIcon.js","constants/notificationsPermissions.js","services/notificationService.js","contexts/webSockets.js","helpers/isOpenBot.js","helpers/isSupportTab.js","uiKit/icons/AttachmentIcon.js","tabs/support/components/UploadButton/styles.js","tabs/support/components/UploadButton/UploadButton.js","tabs/flowBuilder/api/fileService.js","tabs/support/components/ChatInput/ChatInput.js","tabs/support/components/ChatInput/styles.js","tabs/support/components/ChatContainer/ChatContainer.js","tabs/support/components/ChatContainer/styles.js","tabs/support/components/NoChatScreen/NoChatScreen.js","tabs/support/components/NoChatScreen/styles.js","tabs/support/SupportContainer.js","tabs/support/styles.js","tabs/broadcast/actions/broadcasts.js","tabs/broadcast/api/broadcast.js","tabs/broadcast/components/ConfirmModal.js","tabs/broadcast/components/NewBroadcastsList.js","tabs/broadcast/components/BroadcastModal.js","tabs/broadcast/Broadcasts.js","uiKit/inputs/Input.js","tabs/settings/components/general/NameBlock/NameBlock.js","tabs/settings/components/general/NameBlock/styles.js","uiKit/texts/Paragraph.js","tabs/settings/components/general/AttributeBlock/AttributeBlock.js","tabs/settings/components/general/AttributeBlock/styles.js","uiKit/icons/DownloadIcon.js","uiKit/icons/UploadIcon.js","uiKit/ImportButton/ImportButton.js","uiKit/ImportButton/styles.js","tabs/settings/components/general/UpdateBotModal/styles.js","tabs/settings/components/general/UpdateBotModal/UpdateBotModal.js","tabs/settings/api/export.js","tabs/settings/components/general/VersionBlock/VersionBlock.js","tabs/settings/components/general/VersionBlock/styles.js","tabs/settings/components/general/DeleteBotModal/DeleteBotModal.js","tabs/settings/components/general/DeleteBotModal/styles.js","tabs/settings/components/general/DeleteBotBlock/DeleteBotBlock.js","tabs/settings/components/general/DeleteBotBlock/styles.js","tabs/settings/components/general/General/General.js","tabs/settings/components/general/General/styles.js","tabs/settings/components/hours/HoursSpecification.js","tabs/settings/components/hours/hoursOptions.js","tabs/settings/components/hours/Hours.js","helpers/isObjectEmpty.js","tabs/settings/components/persistentMenu/CustomPopover.js","tabs/settings/components/persistentMenu/MenuItem.js","tabs/settings/components/persistentMenu/Level.js","tabs/settings/components/persistentMenu/PersistentMenu.js","uiKit/icons/FacebookIcon.js","uiKit/inputs/ParamsList.js","uiKit/inputs/Params.js","tabs/settings/components/integrations/greeting/GreetingText.js","tabs/settings/components/integrations/greeting/Greeting.js","tabs/settings/api/facebook.js","tabs/settings/actions/settingsPages.js","tabs/settings/components/integrations/facebook/FacebookPage.js","tabs/settings/components/integrations/facebook/Facebook.js","tabs/settings/actions/facebookToken.js","tabs/settings/components/integrations/facebook/FacebookConfig.js","tabs/settings/components/integrations/ChatbaseIntegrationTemplate.js","tabs/settings/api/chatbase.js","tabs/settings/components/integrations/DialogflowIntegrationTemplate.js","tabs/settings/api/dialogflow.js","uiKit/icons/WhatAppIcon.js","tabs/settings/components/integrations/whatsApp/WhatsAppTabTemplateView.js","tabs/settings/components/integrations/whatsApp/style.js","tabs/settings/components/integrations/whatsApp/config.js","tabs/settings/components/integrations/whatsApp/Field.js","tabs/settings/components/integrations/whatsApp/WhatsApp.js","tabs/settings/api/whatsApp.js","helpers/phoneNumberValidation.js","tabs/settings/components/integrations/twilioIntegration/TwilioIntegration.js","tabs/settings/components/integrations/WitAiIntegrationTemplate.js","tabs/settings/components/integrations/NewIntegrations.js","uiKit/table/TableRow.js","uiKit/table/TableCell.js","uiKit/table/Table.js","uiKit/UI/Dialog/Dialog.js","uiKit/UI/DialogTitle/DialogTitle.js","uiKit/UI/DialogActions/DialogActions.js","uiKit/UI/DialogActions/styles.js","tabs/settings/components/users/DeleteAccess.js","tabs/home/components/ShareModal.js","tabs/settings/components/users/Users.js","tabs/settings/components/languages/languagesStyles.js","tabs/settings/components/languages/HeaderView.js","tabs/settings/components/languages/ActiveLanguagesListView.js","tabs/settings/components/languages/RowView.js","tabs/settings/components/languages/NewLanguageModal.js","tabs/settings/components/languages/config.js","tabs/settings/components/languages/Languages.js","routes/settingsRoutes.js","tabs/settings/Settings.js","tabs/widget/actions/botWidget.js","tabs/widget/api/widget.js","tabs/widget/components/DropzoneWidget.js","uiKit/inputs/InputContent.js","tabs/widget/components/tabs/Customization.js","uiKit/inputs/InputNumber.js","tabs/widget/components/tabs/Delay.js","tabs/widget/components/tabs/WelcomeScreen.js","tabs/widget/components/Url.js","tabs/widget/components/Urls.js","tabs/widget/components/tabs/WidgetConnection.js","tabs/widget/components/Widget.js","tabs/analytics/components/AnalyticsHeader/AnalyticsHeader.js","tabs/analytics/components/AnalyticsHeader/AnalyticsHeaderStyles.js","tabs/analytics/components/Chart/ChartConfig.js","tabs/analytics/components/Chart/Chart.js","tabs/analytics/components/Chart/ChartStyles.js","tabs/analytics/api/index.js","tabs/analytics/components/AnalyticsStyles.js","uiKit/icons/CheckIcon.js","tabs/analytics/components/PopoverItem/PopoverItem.js","tabs/analytics/components/PopoverItem/PopoverItemStyles.js","tabs/analytics/components/CommentsFilter/CommentsFilter.js","tabs/analytics/components/CommentsFilter/CommentsFilterStyles.js","tabs/analytics/components/CommentsList/CommentsList.js","tabs/analytics/components/CommentsList/CommentsListStyles.js","tabs/analytics/components/CommentsList/CommentsListConfig.js","tabs/analytics/Analytics.js","constants/componentNames.js","routes/mainRoutes.js","containers/404/404.js","containers/404/styles.js","uiKit/icons/Robot.js","containers/ErrorScreen/ErrorScreen.js","containers/ErrorScreen/styles.js","containers/ErrorBoundary/ErrorBoundary.js","tabs/account/actions/account.js","tabs/account/api/account.js","tabs/account/components/UserMenu/UserMenu.js","tabs/account/components/UserMenu/index.js","tabs/account/components/UserMenu/styles.js","containers/Menu/Menu.js","tabs/home/components/NewBotModal.js","tabs/home/components/BotPlate.js","tabs/home/components/CreateNewBot.js","tabs/account/components/HomeHeader/index.js","tabs/account/components/HomeHeader/styles.js","tabs/account/components/HomeHeader/HomeHeader.js","tabs/home/components/Bots.js","tabs/home/Home.js","uiKit/Notification/Notification.js","containers/Unavailable/Unavailable.js","tabs/home/components/MobileSupport.js","tabs/authorization/component/EmailConfirmation.js","tabs/authorization/component/AfterSignUp.js","tabs/widget/components/StyledToastContainer.js","tabs/account/components/UserImageDropzone/index.js","tabs/account/components/UserImageDropzone/styles.js","tabs/account/components/UserImageDropzone/UserImageDropzone.js","tabs/account/components/UserImageDropzone/config.js","tabs/account/components/AccountSettingsForm/index.js","tabs/account/components/AccountSettingsForm/styles.js","tabs/account/components/AccountSettingsForm/AccountSettingsForm.js","tabs/account/AccountContainer.js","containers/App.js","tabs/analytics/reducers/analytics.js","tabs/analytics/actions/index.js","tabs/authorization/reducers/security.js","tabs/authorization/reducers/adminUser.js","tabs/broadcast/reducers/broadcasts.js","tabs/dashboard/reducers/supportStatistics.js","tabs/dashboard/reducers/usersStatistics.js","tabs/dashboard/reducers/popularHoursStatistics.js","tabs/flowBuilder/reducers/flows.js","tabs/flowBuilder/reducers/atom.js","tabs/flowBuilder/reducers/atoms.js","tabs/flowBuilder/actions/atoms.js","tabs/flowBuilder/reducers/tags.js","tabs/flowBuilder/reducers/searchAtoms.js","tabs/home/reducers/bots.js","tabs/home/reducers/activeBot.js","tabs/home/reducers/snackBar.js","tabs/nlp/reducers/intents.js","tabs/nlp/reducers/intentsSize.js","tabs/nlp/reducers/contextSize.js","tabs/nlp/reducers/contexts.js","tabs/nlp/reducers/nlpRequests.js","tabs/settings/reducers/botAccessors.js","tabs/settings/reducers/facebookToken.js","tabs/settings/reducers/settingsPages.js","tabs/settings/reducers/twilioCredentials.js","tabs/support/reducers/supportRequests.js","tabs/support/reducers/users.js","tabs/support/reducers/activeUser.js","tabs/widget/reducers/botWidget.js","tabs/account/reducers/account.js","tabs/settings/reducers/attributes.js","reducers/index.js","index.js","tabs/nlp/components/discuss.png"],"names":["module","exports","String","prototype","addQueryStringParameter","key","value","this","indexOf","authenticate","token","store","dispatch","type","security","authenticated","logout","cookie","path","isLocalhost","window","location","hostname","SERVER_URL","process","REACT_APP_SERVER_URL","protocol","BACKEND_URL","REACT_APP_BACKEND_URL","BASE_URL","REACT_APP_BASE_URL","HOME_PATH","REACT_APP_HOME_PATH","USE_MESSAGE_KEYS","REACT_APP_USE_MESSAGE_KEYS","withStyles","theme","inputContainer","position","display","flexDirection","width","textAlign","input","height","margin","padding","border","borderRadius","fontFamily","boxSizing","webkitBoxSizing","outline","borderColor","color","fontSize","fontWeight","backgroundColor","label","errorLabel","right","withTheme","id","name","required","placeholder","hasError","onChange","onBlur","defaultValue","disabled","minLength","pressEnterCallback","classes","className","onKeyPress","e","passwordInputContainer","showPasswordButton","top","cursor","maxWidth","maxHeight","eyeIcon","otherProps","useState","hidePassword","setHidePassword","inputType","useMemo","iconType","onClick","preventDefault","tabIndex","button","lineHeight","background","palette","primary","main","boxShadow","transform","transition","title","isStringEmpty","text","trim","length","LoginForm","props","handleChangeUsername","setState","username","target","handleChangePassword","password","trowError","customErrorMessage","errorMessage","state","error","handleSubmitLogin","user","fetch","method","credentials","login","base64","encode","then","response","ok","headers","get","save","from","pathname","authenticateWithReferrer","status","json","message","catch","styles","isSignUpEnable","demoForm","formTitle","demoDiv","Link","forgotPasswordLink","to","bottomText","React","Component","withRouter","LoaderSmall","showLoader","src","alt","loaderOverlayContainer","justifyContent","alignItems","bottom","left","zIndex","subtitle","marginTop","marginBottom","buttonTitle","buttonUrl","history","push","emailValidation","email","test","ForgotPasswordForm","handleChangeEmail","emailError","handleRequestPasswordReset","processingForgotPassword","Headers","append","body","JSON","stringify","requestPasswordReset","submitFormSuccessfully","renderForgotPasswordForm","forgotPasswordForm","forgotPasswordNoteText","imageNotFound","titleClass","paragraphClass","ResetPasswordForm","handlePasswordChange","passwordError","passwordConfirmError","passwordConfirm","handlePasswordConfirmChange","handleHidePasswordToggle","processingPasswordChange","newPassword","changeAdminPasswordWithResetToken","resetPasswordToken","passwordChangedSuccessfully","resetPasswordFormContent","resetTokenValidationFinished","failToValidateResetToken","resetTokenIsValid","resetPasswordFormWrapper","linkExpired","queryString","parse","search","t","sessionStorage","getItem","replace","setItem","validateResetPasswordToken","valid","flexBasis","SignUpForm","handleChange","event","checkValidity","validatePasswordConfirm","inputPasswordConfirmError","inputEmailIsRegisteredError","inputEmailError","togglePassword","handleSubmitRegister","checkIfEmailIsRegistered","submitRegister","invited","isFormValid","encodedPassword","signUpInvitedUser","signUpUser","callback","emailIsRegistered","checkEmptyString","inputNameError","inputPasswordError","errorState","redirectToLogin","redirectToError","redirectToUsedLink","redirectToConfirmEmail","hidePasswordConfirm","processInviteCode","code","match","params","getBotInviteInfo","Redirect","showSnackBar","snackBar","createJsonHeaders","load","logoutOnRequestOrResponseJson","redirected","alertSuccess","duration","open","success","alertError","Login","redirectToReferrer","subTitle","imagePath","element","style","backgroundSize","Switch","Route","component","exact","PrivateRoute","rest","render","flex","ROLE","ROLE_OPTIONS","features","access","userRole","botAccesses","loadRole","adminUser","hasPermissionForBot","botId","featureName","botAccess","filter","ba","Number","find","role","includes","setActiveBot","activeBot","getBots","bots","getBot","updateBot","bot","getBotPersistentMenu","language","href","url","updateGreetingText","greetingText","successCallback","errorCallback","err","getSupportRequests","requests","NoChartDataIcon","viewBox","fill","d","BroadcastIcon","stroke","strokeWidth","strokeLinecap","strokeLinejoin","fillRule","clipRule","Chevron","rotate","DashboardIcon","FlowsIcon","NlpIcon","SupportIcon","WidgetIcon","SettingsIcon","AnalyticsIcon","PlusIcon","CloseIcon","SearchIcon","TrashIcon","OtherIcon","DoneIcon","LeftArrowIcon","DownArrowIcon","xmlns","EditIcon","OvalIcon","CalendarIcon","PenIcon","PhotoIcon","EnterIcon","fillOpacity","UpIcon","DownIcon","Icon404","x","y","filterUnits","colorInterpolationFilters","floodOpacity","result","in","values","dy","stdDeviation","mode","in2","x1","y1","x2","y2","gradientUnits","stopColor","offset","ThreeIcon","LinkIcon","WelcomeIcon","DelayIcon","CustomizationIcon","CopyIcon","Loader","DateRange","setDate","startDate","endDate","onApply","picker","format","addTimeInterval","start","end","hourly","moment","data","fileName","filename","textDecoration","container","flexFlow","verticalAlign","titleWrapper","flexWrap","marginRight","number","marginLeft","stats","tooltip","opacity","tooltipText","users","usersTitle","totalUsers","headerStats","headersCsv","dataCsv","data-tip","data-for","place","effect","buildTooltip","FREQUENCIES","DateControl","updateDate","pickerOpen","frequency","loadData","setCustomDate","setActiveFrequency","subtract","add","custom","dataTitle","finalUsersTitle","loadUsersStatistics","loadDataUrl","responseJson","loadSupportStatistics","loadPopularHoursStatistics","totalUsersHeaders","connect","usersStatistics","chartData","minHeight","usersBetweenDates","Object","keys","points","map","k","date","min","covertHeaders","colors","CircleChartContent","byChatBot","byCustomerSupport","supportStatistics","days","dayModel","time","amount","gridItem","day","getDayData","model","dayToAmount","dayOfWeek","colorOpacity","gridItemStyle","r","g","b","grid","contrastText","gridColumn","gridItemTransp","gridItemText","textCenter","valuesArr","maxPerHour","dayName","dayHours","index","findIndex","daysData","averageConversationByTimeOfDay","dayShort","substr","toLowerCase","charAt","toUpperCase","slice","gradientBarWrapper","gradientBar","gradientBarColumn","gradientBarItem","gradientBarItemText","step","gridItemsCount","i","uuid","ByTimeOfDayHeaders","popularHoursStatistics","total","Headline","topContainer","dashboard","overflowX","overflowY","paddingRight","charts","chart","chartFull","chartsRow","flexGrow","TextIcon","ListIcon","GalleryIcon","clipPath","AttachmentMessageIcon","TypingIcon","availableDefaultMessages","icon","iconLarge","description","newMessage","texts","attachment","payload","template_type","elements","image_url","buttons","iconName","senderAction","availableOtherMessages","parameter","next_atom","randomRedirectInitialState","randomRedirect","randomAtoms","atomName","sendFirstAtomOnlyOnce","setAttributeMessage","attributes","saveUserInput","validation","customValidationRegex","onValidationSuccessAtomId","onValidationFailAtomId","saveAsAttribute","smartRedirect","conditionalRedirect","conditionGroups","defaultRedirect","conditionGroup","expressions","attribute","operator","conjunction","redirectTo","getModalStyle","CustomizedModal","aria-labelledby","aria-describedby","disableBackdropClick","disableClose","onClose","paper","btnClose","children","shadows","headerText","root","menuButton","loader","buttonHolder","SetAttributeIcon","SaveUserInputIcon","TagIcon","RedirectToAtomIcon","RandomRedirectIcon","item","messageName","messageDescription","deepCopyFunction","inObject","outObject","Array","isArray","titleWrap","gap","section","atom","updateAtom","header","newAtom","messages","uuidv1","handleCreateNewMessage","some","tags","listItem","borderBottomLeftRadius","borderTopLeftRadius","borderBottomRightRadius","borderTopRightRadius","setOpen","editAtom","getFlows","showFeedback","flows","createNewFlow","flow","addNewFlow","getAtom","atomId","deleteAtom","searchAtomsByContent","searchQuery","searchAtoms","setSearchAtoms","_","NewMessage","anchorEl","selectedIndex","handleOpen","handleClose","quickReplies","createNewMessage","addRedirect","addTags","addRandomRedirect","addSetAttribute","addSaveUserInput","listBoxContainer","listBox","borderLeft","otherItem","closeAndAddMessage","variant","size","float","saveContexts","spacing","unit","fab","contexts","getContextsPages","page","contextSize","contextDTOList","createNewContext","context","addContextsSize","addContext","updateContext","updateExistedContext","deleteContext","contextId","deleteOldContexstSize","removeContext","States","states","showHardcoded","option","selectedOption","undefined","timezone","forEach","atoms","nextProps","isHardCoded","selectValue","holderStyle","isBackToBot","positionValue","select","ReactDOM","getBoundingClientRect","onSelectResetsInput","options","ref","node","simpleValue","menuPlacement","clearable","isCurrent","handleChangeState","searchable","Transition","direction","DeleteTrigger","newContext","changeNewContext","triggerId","aria-label","PaperProps","keepMounted","deleteTrigger","saveNlpRequests","clearNlpRequests","saveIntents","intents","getIntents","faq","getPagingIntents","query","intentsSize","intentDTOList","getAllPagingIntents","getAllPagingIntentsForTriggers","getTrainingData","shortName","getHistoryData","createNewIntent","intent","addIntent","addIntentsSize","trainIntent","request","updateTrainedNlpRequest","updateIntent","updateExistedIntent","deleteIntent","intentId","deleteOldIntent","deleteOldIntentsSize","IntentsSelect","action","intentsModified","onBlurResetsInput","onInputChange","handleInputChange","TriggerItem","triggerAtomId","modalTriggerId","currentAtom","customSeartch","mainSelected","selectItem","desc","previousAtom","closeTriggerModal","closeTrigger","prevState","borderRight","AtomNLPModal","rowsPerPage","triggerAtom","handleChangePage","handleChangeRowsPerPage","minWidth","createIntentButton","createTrigger","textTransform","table","loadTags","createTag","tag","addNewTag","InputHolder","inputStyle","maxLength","rtl","inputHolder","handleKeyPress","dir","red","SubmitButton","classButton","empty","buttonSizeClass","sizeSm","sizeLg","light","secondary","default","gray","noStyle","cancel","TagModal","changeName","tagValue","allTags","closeTagModal","Tags","handleChangeTags","handleDelete","tagsSelected","chipToDelete","splice","openCreateTagModal","openTagModal","closeCreateTagModal","isMulti","convertValuesToOptions","sort","tag1","tag2","disableNew","createNewTagLink","flowBuilderTags","TagAction","styleSelect","onDelete","loadBotAccessors","botAccessors","removeBotAccessor","accessorId","inviteAccessId","getBotLanguages","botLanguages","defaultLanguage","activeLanguages","isDefault","unshift","console","log","SwitchStyles","checked","InfoButton","dataTip","dataFor","tooltipWrap","tooltipId","InitialState","customStyles","control","provided","hasValue","isFocused","selectProps","touched","indicatorSeparator","singleValue","menu","overflow","onFocus","setOptions","useEffect","getValue","maxMenuHeight","minMenuHeight","borderBottom","switcherWrap","addButton","atomWrap","deleteRandomAtomWrap","updateMessage","randomAtomsDisplay","handleRandomAtoms","newRandomAtoms","elem","firstTimeRedirect","assign","shift","handleDeleteRandomAtom","messageCopy","newRandomAtom","urlValidation","str","onKeyDown","dropdownIndicator","activeBotId","setActiveLanguages","selectedLanguageOption","setSelectedLanguageOption","fullName","isRtl","languageOptions","attributeWrap","attributeNameWrap","inputWrap","warning","attributeName","textOverflow","whiteSpace","iconWrap","handleUpdateAttributeName","handleUpdateAttributeValue","handleEnterAttributeName","handleFocus","handleDeleteAttribute","focus","isExtraWidth","setIsExtraWidth","currentAttribute","useRef","attributeContainer","current","offsetWidth","isNew","scrollHide","isValid","autoFocus","labels","searchValue","setAttributes","setShowError","setFocus","attributeId","attributesUpdate","getAttributes","lang","createAttribute","addAttribute","searchWrap","footer","borderTop","buttonsWrap","noAttribute","setSearchValue","attributesCopy","setAttributesCopy","setLanguage","chatbotAttributes","handleValidate","every","newAttribute","Math","random","object","entries","toString","updateAttributes","containerStyle","menuStyle","suggestions","setAutoSuggest","upward","setUpward","autocompleteRef","getAttribute","menuPos","firstChild","childNodes","innerHeight","handleKeyUp","keyCode","charCode","handleBlur","onClickAway","getItemValue","suggestion","items","onSelect","wrapperStyle","renderInput","onKeyUp","renderItem","isHighlighted","renderMenu","DEFAULT","CHATBOT","WIDGET","FACEBOOK","WHATSAPP","TWILIO","getAttributeColor","FormatOption","allowedAttributes","groupHeading","base","menuList","noOptionsMessage","clearIndicator","addAttibute","optionTitle","customOption","twilioCredentials","isClearable","displayOptions","defaultAttributes","setTouched","isFacebookConnected","messengerConfigs","accessToken","isWhatsappConnected","amioWhatsAppConfigs","isTwilioConnected","connected","attributeContainerPosition","handleCreateAttribute","inputValue","currentValue","openMenuOnFocus","components","Menu","NoOptionsMessage","Option","isSearchable","onMenuClose","bottomScrollElem","clear","atomAttributes","handleUpdateAttributes","callBack","buttonName","showPlusAttribute","atomAttributesCopy","handleUpdateAttribute","innerText","TabContainer","MessageButton","anchorOriginVertical","anchorOriginHorizontal","transformOriginVertical","transformOriginHorizontal","positionTop","positionLeft","anchorReference","btn","messengerExtensions","onUpdate","updatePopoverPosition","fieldName","errorTitle","onMouseEnter","showDelete","onMouseLeave","readOnly","textShadow","last","anchorPosition","anchorOrigin","vertical","horizontal","transformOrigin","popover","popoverButton","unicodeBidi","handleChangeButton","tabs","indicator","tabIndicator","tab","handleChangeButtonUrl","typography","addParametersBtn","QuickReply","handleClickButton","reply","show","content_type","hideDelete","titlePopover","selectWrap","resize","titles","maxHeigth","view","threeIcon","replyItems","replyItem","qrWrap","MessageQuickReplies","replyIndex","quick_replies","deleteReply","addNewReply","category","optionWrap","selectedAttribute","onMouseMove","CHATBOT_TITLE","WIDGET_TITLE","FACEBOOK_TITLE","WHATSAPP_TITLE","TWILIO_TITLE","attributesContainer","addParam","showSearch","listRef","updateSelectedAttribute","isMatch","getAttributeList","widgetAttributes","facebookAttributes","whatsappAttributes","twilioAttributes","titleObject","filterOptions","Boolean","AttributeIcon","ATTRIBUTE_REGEX","ATTRIBUTE_REGEX_OR_OPEN_BRACKETS","ATTRIBUTE_REGEX_INCLUDE","OPEN_BRACKET","CLOSE_BRACKET","ASTERISK","usePrevious","regexIndexOf","string","regex","startpos","substring","visibility","backdrop","pointerEvents","highlights","wordWrap","textarea","caretColor","disableBorderRadius","scrollBlock","setShow","setShowSearch","setCurrentValue","setSelectAttribute","caretPosition","setCaretPosition","prevShow","attributeIcon","attributeList","innerHTML","applyHighlights","updateCursorPosition","handleSearch","selectionStart","noAttributesText","arrowIndex","textStart","noAttributeTextStartLength","newSearchValue","prevChar","handleSpace","updateAttributeListScroll","handleArrowDown","handleArrowUp","handleEnter","closestBracketsIndex","lastIndexOf","handleLeftArrow","nextChar","stringStart","handleRightArrow","selectedChildNodeIndex","directionStep","childNodesLength","nodeName","scrollIntoView","behavior","block","inline","lastBracketIndex","handleShowAttributes","removeExtraBrackets","endsWith","selectionEnd","onReplaceAttribute","matchCopy","openBracketsStyle","attributeStyle","closeBracketsStyle","onScroll","scrollTop","scrollLeft","onInput","subString","isNewAttribute","exec","lastIndex","setTimeout","updatedValue","replaceAll","endText","split","join","buttonPos","highlightsPos","isEnoughSpace","topFromButton","leftFromButton","topFromTextarea","leftTextarea","getPopupPosition","textFieldsWrap","deleteTemplate","deleteIcon","keyInput","buttonsContainer","textWrap","deleteText","plusIconWrap","deleteIconWrap","handleChangeText","placement","handleChangeName","btnIndex","updateBtn","deleteButton","handleDeleteText","FileDropzone","handleDrop","bind","files","self","file","FormData","Authorization","containerEmpty","onDrop","image","paddingBottom","addElement","Template","elemIndex","elementsNum","addNewButtonToElem","onDeleteElem","isEnoughElements","addNewButton","isList","ListTemplate","isGeneric","GenericTemplate","Attachment","fileUrl","RandomTextMessage","renderView","onDeleteItem","addItem","handleChangeUrl","Typing","max","onChangeStart","handleChangeStart","UserInput","handleName","selectedAtomName","getAtomNameByAtomId","infoIcon","optionDescription","initialTouched","smallInputWrap","flexContainer","saveTime","prevSaveTime","updateTouched","field","isTouched","touchedCopy","memo","expression","onUpdateConjunction","isLast","onAdd","isOne","expressionCopy","generateId","c","condition","updateCondition","handleUpdateConjunction","conditionCopy","handleAddExpression","handleDeleteExpression","handleUpdateExpression","paddingTop","priority","addIdToArrayAtConditionalRedirect","setConditionalRedirect","isConditionGroups","handleAddConditionGroup","newConditionGroup","getMaxPriority","reduce","prev","a","handleUpdateCondition","handleDeleteCondition","deleteMessage","RandomAttachment","formatAtom","atomCopy","_formatConditionRedirect","_formatCondition","_formatConditionExpression","AtomEditor","isNameOk","handleOpenAtomNLPModal","openNlp","handleCloseAtomNLPModal","setLanguageOptions","validateAttribute","acc","validateSaveUserInput","validateSmartRedirect","handleSelectedLanguage","languageOption","onSaveAtom","Date","saveAtom","createRef","getAtomNames","names","send","textValidation","setAttributeValidation","saveUserInputValidation","saveSmartRedirectValidation","qrItem","validateMessages","randomAtom","oldIndex","newIndex","move","propsAtom","stateAtom","deleteTextsField","msg","nameBorder","Prompt","when","checkAtomForEditing","headerBlock","checkEnterPress","headerSelectorAndButton","headerButton","closeAtomNLP","tempId","moveToTop","moveToBottom","updateTags","NewFlow","usedNames","saveNewAtom","flowId","nameInput","addNew","NewFlowExport","DeleteFlow","selectAtom","buttonsHolder","deleteFlow","saveNewFLow","newFLow","addFlow","newFlowButton","formControl","htmlFor","DeleteAtom","handleAtomDelete","selectWelcomeAtom","freeze","defaultBackTime","getTwilioCredentials","getWidth","votesWrap","votesContainer","noVotes","votesLineUp","votesLineDown","votesWrapLine","upvotes","downvotes","votesLineUpWidth","votesLineDownWidth","ANCHOR_ORIGIN","TRANSFORM_ORIGIN","SORT_DATE","SORT_SCORE","DIRECTION_ASC","DIRECTION_DESK","filterItem","userId","messageId","setTarget","isOpenPopover","setOpenPopover","link","nameContainer","nameWrap","score","comment","firstName","lastName","repeat","loaderWrap","pickerContainer","commentsWrap","noDataWrap","noData","isOpen","selectedFlow","setLoader","setStartDate","setEndDate","setUpvotes","setDownvotes","comments","setComments","hasNext","setHasNext","setPage","clearState","commentsRequest","commentsAmountRequest","fromDate","toDate","getFlowCommentsList","res","getFlowCommentsAmount","scrollHeight","clientHeight","Builder","searchText","redirect","redirectId","isOpenFeedbackModal","selectedFeedbackFlow","checkTextExists","searchFlow","handleOpenFeedbackModal","stopPropagation","handleCloseFeedbackModal","getSearchAtoms","debounce","prevProps","deleteAccess","checkAtom","reverse","defaultExpanded","checkAccessToDelete","mainWrap","expandIcon","feedbackButton","NewAtom","chip","NavLink","renderRedirect","searchIcon","atomsSearch","activeChip","flowLabel","DeleteIntent","deleteInt","NoData","wrap","img","TablePaginationActions","handleFirstPageButtonClick","onChangePage","handleBackButtonClick","handleNextButtonClick","handleLastPageButtonClick","ceil","count","flexShrink","Pagination","rowsPerPageOptions","caption","ActionsComponent","TablePaginationActionsWrapped","SelectProps","labelDisplayedRows","HolderStyles","TabTemplateStyles","wrapHeader","wrapNameAndPhrases","flowExp","expanded","detailsStyle","phrasesNumber","alignSelf","UserSays","handleOnBlur","editUserPhrase","emptySay","setEmptySay","modifyInput","deleteUserPhrase","focused","says","modify","userSays","flexAlign","focusTextInput","textInput","editInput","none","IntentModal","convert","back","converted","isEdited","phrases","createUserSays","languages","handleIntentName","intentName","handleChangeExpansion","handleChangeInput","handleChangeAtom","answerAtom","addUserSays","languageCode","newUserSays","currentUserSays","found","notValue","showNotification","getTabInfo","createIntent","isFaqModal","unique","modalIntentId","closeIntent","loading","botActiveLanguagesList","modalName","heading","modalHeading","enter","alert","userSaysWrapper","statesModal","textField","progress","tableWrapper","modalHeadingQuestions","Intents","isFaq","searchIntent","closeIntentModal","getRowStyle","getContent","tableHeader","noDataContainerText","noDataContainerButton","encodeURI","displayTable","tableContent","tableTitle","openIntentModal","addTitle","handleSearchIntent","intentItem","answer","n","userPhrase","editInt","Triggers","defaultProps","createTriggerButton","menuItem","selectIcon","trainedIcon","tabsTrain","leftTab","rightTab","trainButton","headerWrapper","activeNlp","defaultNlp","filterWrapper","filterText","selectWrapper","userSay","obj","def","handleChangeIntent","trainRequest","triggeredIntent","trained","LEFT","nlpRequests","Wrap","totalCount","TrainingHeaderView","getTabClasses","selectedTab","classnames","changeTab","handleLanguageChange","Training","setLanguagesOptions","defaultSelectedLanguageOption","tabName","selected","newRequests","handleLanguageChanged","nlpRoutes","createButton","Submenu","navigation","rootLink","routes","route","activeClassName","activeLink","pathLink","pathRoute","Heading","EmptyNlp","NLP","botHasNlp","nlpEnabled","activeTab","setSelectedTab","PLATFORM_IMAGE","WEBSITE","FB_MESSENGER","AMIO_WHATSAPP","SUPPORT_STATUSES","saveActiveUser","activeUser","saveSupportUserMessages","saveSupportUserMoreMessages","badge","alignContent","badgeWrap","badgeContent","getMinutesLeft","now","utcDate","utc","diff","timeLeftContent","fontStyle","timeLeftContentRed","timeExpiredIcon","timerTime","minutesLeft","setCount","secondsLeft","setInterval","clearInterval","useTimer","lastInteractionDate","formattedTime","minutes","floor","buildTimeLeft","CHAT_PLATFORM","userMainInfo","userNameWrapper","supportIcon","lastMsgTime","isAssigned","isAssignedToCurrentAdmin","lastMessageDate","messageDatetime","isSame","isFromWhatsApp","platform","userMessageDatetime","profileImage","backgroundPosition","backgroundRepeat","channelIcon","userInfo","lastMsgTextWrap","lastMsgText","lastMsgTextUnread","supportRequest","support","adminId","isUnread","unreadMessages","boldLastMessage","lastMessage","postback","getLastMessage","backgroundImage","profilePic","chevron","dialogsContainer","collapsed","setCollapsed","chatId","getAssignedSupportUsers","searchName","getNewRequestSupportUsers","getExpiredRequestSupportUsers","getAllSupportUsers","getClosedSupports","updateSupportUser","saveSupportUsers","supportUsers","adminUserId","saveClosedSupportUsers","saveMoreClosedSupportUsers","updateSupportUserList","updateUserUnreadMessages","useDebounce","delay","debouncedValue","setDebouncedValue","handler","clearTimeout","getUrlEnd","pop","isElementBottom","el","offsetHeight","isUrlEndsWithSupport","sectionWrap","searchContainer","assignedToMeUsers","supportUsersNew","newRequestsUsers","expiredRequestsUsers","assignedRequestsUsers","allUsers","setSearch","setLoading","debouncedSearchTerm","Promise","all","flat","currentUser","saveMoreSupportUsers","closedRequestsUsers","TreeDotsIcon","getMoreMessages","assignSupportRequest","setMessageRead","closeButton","iconWrapDisabled","popoverHeader","atomItem","isDisconnectedUser","atomsList","setAtomsList","handleCloseRequest","backToBot","userCopy","elevation","supportRequestId","adminItem","adminsList","setAdminsList","admins","filteredAdmins","admin","handleAssign","copyIcon","linkWrap","rel","maximumCharactersInUrl","URL","shortenUrl","navigator","clipboard","writeText","userName","userNameWrap","userWebsiteLocation","m","websiteLocation","CHAT_STATUS","assignedStatus","assignedStatusWrap","notification","blockWrap","isAdmin","isAssignedToMe","isExpired","chatStatus","statusNotification","containerReceived","containerSend","timeZone","isReceived","chatBubbleReceived","chatBubbleSend","objectFit","imgUrl","AudioMessage","controls","VideoMessage","lastButton","textButtons","subtitleButtons","imageUrl","Next","Prev","randomWrap","scrollBehavior","itemLength","activeIndex","setActiveIndex","scrollEl","genericContainer","postBack","timestamp","isTextMessage","isImageMessage","attachments","isAudioMessage","isVideoMessage","isTemplateMessage","isEcho","getUrlHash","hash","messageIntoView","chatDate","scrollPosition","setScrollPosition","dates","setDates","scrollToTop","serScrollToTop","scrollContainer","messagesEnd","prevUserMessagesLength","round","SUPPORT_MESSAGES_SIZE","getMessagesById","scrollToMessage","scrollToBottom","Set","unreadMessage","lastMessageId","formatDate","displayCustom","toast","info","displayNative","Notification","permission","onclick","requestPermission","document","hidden","SharedWebsocketContext","createContext","WebSockets","setupSocketClient","sockJS","SockJS","client","Stomp","heartbeat","incoming","outgoing","onConnectSuccess","onConnectError","onclose","reconnect","interval","subscribe","reconnectCount","reconnectInterval","newInterval","closeConnection","subscribeNewMessages","subscribeUserChatStatuses","isSelectedBot","isCurrentAdmin","NotificationService","saveMessage","copyUser","sendMessage","unsubscribe","disconnect","Provider","AttachmentIcon","strokeOpacity","svgAttachmentHolder","uploadInput","useContext","formData","selectedFile","recipient","textMessage","setTextMessage","disableInput","handleSendMessage","onSendMessage","noChatWrap","noChat","SupportContainer","tryToSaveActiveUser","vars","saveBroadcasts","broadcasts","loadBroadcasts","cancelBroadcast","broadcastId","ConfirmModal","itemId","itemTitle","confirmAction","closeModal","btnContainer","confirm","outlineColor","webkitBoxShadow","NewBroadcastsList","closeConfirmModal","modalBroadcastId","modalBroadcastTitle","getRowStyles","getTimezone","broadcast","formatDatetime","localDateTime","utcOffset","getTimezoneLabel","timeFunc","getStatusColor","date1","date2","broadcastDatetime","read","delivered","toFixed","headerWrap","headerWrapItem","broadcastsHeader","handleBroadcastModalOpen","handleChangeOption","broadcastItem","broadcastTableHeader","sortData","calculateRead","openConfirmModal","animationDuration","animationName","titleFont","pieChartColors","chatbot","BroadcastModal","sendBroadcast","ifTimezone","sendNow","selectedDate","selectedTags","allOfTags","createBroadcast","handleCheck","toggleSendNow","currentIfTimezone","toggleTimezone","handleDateChange","botTimezoneSet","loaded","getOwnPropertyNames","headerAddBroadcast","newBroadcast","leftTabItem","autofocus","handleEnterPress","logicBlock","handleTagsChanged","creatable","showSwitcher","titleRadio","group","whiteInput","disablePast","leftArrowIcon","rightArrowIcon","submitButton","tagsStyle","simpleFont","rightIcon","content","Broadcasts","closeBroadcastModal","openedBroadcastModal","openBroadcastModal","shownDate","broadcastsList","paperModal","Input","inputTitleStyles","inputTitle","alerts","botName","setBotName","Paragraph","paragraph","openAttributeModal","setOpenAttributeModal","handleOpenAttributeModal","DownloadIcon","stroke-width","stroke-linecap","stroke-linejoin","UploadIcon","accept","subText","loaderContainer","userImage","objectPosition","userNameContainer","openUpdateBotModal","setOpenUpdateBotModal","setFormData","contentVersion","blob","createObjectURL","createElement","download","appendChild","click","revokeObjectURL","updatedAt","updatedByName","updatedByImageUrl","handleUpdateBotModal","btnDelete","openDeleteBotModal","setOpenDeleteBotModal","handleOpenDeleteBotModal","HoursSpecification","timeList","dateContainer","handleSet","startTime","endTime","tomezoneList","Hours","supportSettings","weekdays","weekends","enabled","weekdaysValue","weekendsValue","hoursConverter","dateCopy","settings","radio","rootRadio","opt","updateTimezone","updateTime","saveHours","grayParagraph","modal","iconsGray","CustomPopover","functionValidURL","toggle","submitItem","invalidUrl","callToActions","tabContainer","enableMessengerExtensions","levelItem","submenu","MenuItem","hasOwnProperty","itemRef","deleteItem","defaultOpen","setDefault","Level","updateItem","updateMenu","addMenuitem","webViewHeightRatio","levelHide","level","callToAction","addSubmenu","PersistentMenu","updatePersistentMenu","persistentMenu","handleUpdatePersistentMenu","addMenuItem","onUpdatePersistentMenu","locale","updateBotPersistentMenu","containerLevels","FacebookIcon","patternContentUnits","ParamsList","handleClick","currentTarget","pos","aria-owns","aria-haspopup","ITEM_HEIGHT","getTopPosition","getLeftPosition","Params","ua","userAgent","isIE","isIOS","css","param","div","ifGreeting","handleScroll","paramList","Greeting","changed","handleChangeGreetingText","handleUpdate","imgHolder","getFacebookPages","facebookPages","accounts","FacebookPage","updateFacebookData","newBot","pageId","access_token","handleRequest","pageToken","pageName","offLoader","subscribePage","handleLoader","unsubscribePage","pageItem","pageInfo","picture","pageImg","is_webhooks_subscribed","connectedStatus","connectedAnother","settingsPages","Facebook","processFacebookCredentialsAndGetFacebookPages","userFacebookAccessToken","loggedIn","localStorage","facebookAppId","exchangeShortLiveUserTokenToLongLive","facebookLoggedIn","appId","derivedClasses","wrapPagination","tabInner","autoLoad","processUserAccessToken","scope","renderProps","ChatbaseIntegrationTemplate","onSubmit","chatbaseConfig","chatBaseConfigs","checkInputFields","toggleLoader","botError","apiKey","isError","buttonStyles","mb32","errorAlert","tabInnerContainer","mb16","DialogflowIntegrationTemplate","projectId","dialogflowConfigs","clientId","tokenSet","loginParams","shareBot","WhatAppIcon","WhatAppTabTemplateView","tabExpanded","mb34","fieldsList","Fragment","placeHolder","WhatsApp","saveCredentials","secret","channelId","phoneNumberValidation","TwilioIntegration","submitCredentials","accountSIDError","accountSID","authTokenError","authToken","phoneError","phone","connection","statusBlock","statusContent","showConnectionText","popupBtnBlock","connectionBtn","instructionBtn","WitAiIntegrationTemplate","isConnected","witAiConfigs","newIsConnected","NewIntegrations","itemContainer","tabIcon","box","circle","btnWhite","btnSimple","itemDisabled","itemImg","itemBtn","itemBtnDisabled","TableRow","tableRow","TableCell","tableCell","Table","titleContainer","paddingLeft","paginationComponent","tableCellText","Dialog","DialogTitle","DialogActions","DeleteAccess","submit","disableTypography","DeleteAccessExport","ShareModal","isCorrect","testArrBegPos","testArr","checkEmail","receiverRole","receiverEmail","updateRole","closeContainer","Users","searchUser","removeAccess","closeShareModal","newRole","updateBotAccessorRole","supportRequestNotify","updateBotAccessorSupportRequestNotifying","handleSearchUser","submitButtonText","isInvited","accessor","userImageContainer","userStatus","active","tableCellData","o","updateSupportNotifying","wrapper","addNewLanguageBtn","evenRow","notEvenRow","deleteLanguageBtn","newLanguageModalHeader","newLanguageModalLabel","languageError","deleteModalHeader","onButtonClick","availableLanguagesLength","onLanguageDelete","deleteModal","setDeleteModal","isEven","NewLanguageModal","selectedLanguage","isLanguageSelected","checkWhetherLanguageSelected","setActiveLoader","updateSelectedLanguage","closeAddLanguageModal","availableLanguages","handleLanguageSubmit","Languages","activeLoader","setAddLanguageModal","addLanguageModal","setDeleteLanguageModal","deleteLanguageModal","deleteLanguage","newBotActiveLanguagesList","addLanguageToBot","lan","botDefaultLanguage","botAvailableLanguagesList","settingsRoutes","General","Integrations","NewPersistentMenu","Settings","setBotWidget","botWidget","getWidget","updateWidget","widget","downloadWidget","DropzoneWidget","svgWrap","upload","InputContent","Customization","ifWidget","hex","InputNumber","validity","pattern","defaultValues","Delay","valueRadio","popupDelay","WelcomeScreen","inputEmail","inputName","popupText","inputPlaceholder","startButton","startLabel","emailPlaceholder","namePlaceholder","rootCheckbox","Url","deleteWebUrl","webUrls","editWebUrl","handleText","invalidValue","dark","iconsHolder","editUrl","Urls","uniqueFind","checkIfUrlUnique","addUrl","checkUnique","showInvalid","pushUrl","errorIndex","websiteUrl","newWebsiteUrl","urls","grayColor","WidgetConnection","handleWidgetDownload","scriptChatbotUrl","scriptSnipped","onCopy","copied","zipText","WidgetGenerator","newWidget","isNaN","leftContainer","rateWrap","rateContainer","ratingDistribution","averageScore","totalFeedbacks","initialColors","initialDataSet","datasets","borderWidth","hoverBackgroundColor","hoverBorderColor","chartOptions","maintainAspectRatio","animation","hover","responsiveAnimationDuration","legend","scales","xAxes","gridLines","ticks","beginAtZero","handleSelectedBar","selectedBar","dataSet","setDataSet","evt","copyDataSet","formedIndex","abs","_index","getRatingDistribution","CheckIcon","showCheck","selectButton","divider","sortDirection","setSortDirection","sortBy","setSortBy","sortLabel","commentsContainer","sortDirectionSaved","sortBySaved","commentsList","setCommentsList","handleRequests","getComments","feedbacks","saveSortDirection","saveSortBy","Analytics","handleUpdateDate","isData","distribution","chartWrap","ComponentNames","Flows","Dashboard","Support","Widget","BotSettings","mainRoutes","ChatContainer","PermissionDenied","RobotIcon","ErrorBoundary","saveAccountSettings","accountSettings","getAccountSettings","updateAccountSettings","dropImage","imgContainerStyles","statusStyles","UserMenu","popper","userImg","list","account","setAdminId","anchorRef","getImage","activeColor","isLoader","handleLogout","handleChangeStatus","handleListKeyDown","prevOpen","aria-controls","disablePortal","TransitionProps","autoFocusItem","inputProps","redirectToAccountSettings","MainMenu","redirectToBots","ifCreateSocket","supportRequests","BrowserRouter","appFrame","appBar","Toolbar","disableGutters","menuWrap","supportAmount","transitions","create","easing","sharp","leavingScreen","appBarShift","enteringScreen","hide","mixins","toolbar","NewBotModal","botErrorType","botErrorText","clientToken","developerToken","checkBotName","withDialogFlow","errorHandler","dialogflowDevToken","dialogflowClientToken","new","callbackError","createNewBotAPI","newState","borderLine","BotPlate","openModal","openModalClone","newUserToday","switchBot","CreateNewBot","itemText","HomeHeader","headerInner","titleCenter","backButton","backUrl","Bots","Home","reason","bodyProps","autoHideDuration","ContentProps","Unavailable","handleGoDashboard","redirectToAdmin","backToDashboardButton","MobileSupport","html","write","EmailConfirmation","confirmed","invalidLink","getConfirmationStatus","parseQueryParams","Map","AfterSignUp","innerContainer","font","emailText","StyledToastContainer","styled","ToastContainer","attrs","Slide","draggable","newestOnTop","hideProgressBar","UserImageDropzone","dropzone","hoverBlock","attachmentImage","setAttachmentImage","isLoading","setIsLoading","getImg","setFormValue","handleDropImage","handleDisableBtn","AccountSettingsForm","form","formImgItem","formItem","btnHolder","useForm","register","handleSubmit","errors","isDisabledBtn","setIsDisabledBtn","prevData","AccountContainer","App","askForNotification","app","isAuthenticated","analytics","convertSearchAtoms","flowsMap","initialState","_filterAssignedToMeUsers","_filterNewRequestsUsers","_filterExpiredRequestsUsers","_filterAssignedRequestsUsers","_filterAllUsers","_updateUserAssignedToMe","rule","_updateUser","_updateUserExpired","_updateUserAssigned","_updateUserNew","_updateAllUser","isNewUser","_updateUserUnreadMessages","botActive","openedAt","_handleSaveMoreMessages","Reducers","combineReducers","createStore","reducer","createMuiTheme","medium","azure","semiAzure","utils","DateFnsUtils","getElementById"],"mappings":"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QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,WACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,QAASoD,MAAO,YACzB,CAAEpD,MAAO,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","file":"static/js/main.c09c7278.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/workingHours.012b0167.png\";","String.prototype.addQueryStringParameter = function(key, value) {\n const separator = this.indexOf('?') !== -1 ? '&' : '?'\n return this + separator + key + '=' + value\n}\n","import * as cookie from 'react-cookies'\nimport { store } from '../../../index'\n\nexport const IS_AUTHENTICATED = 'IS_AUTHENTICATED'\nexport const IS_NOT_AUTHENTICATED = 'IS_NOT_AUTHENTICATED'\n\nexport const authenticate = token =>\n store.dispatch({\n type: IS_AUTHENTICATED,\n security: {\n token: token,\n authenticated: true,\n },\n })\n\nexport const logout = () => {\n cookie.remove('YWxpYWFkbWlu', { path: '/' })\n store.dispatch({\n type: IS_NOT_AUTHENTICATED,\n security: {\n token: null,\n authenticated: false,\n },\n })\n}\n","const isLocalhost = window.location.hostname === 'localhost'\n\nexport const SERVER_URL =\n process.env.REACT_APP_SERVER_URL || isLocalhost\n ? 'http://localhost:8080'\n : window.location.protocol + '//' + window.location.hostname\n\n// Url of backend on a server (server url + nginx prefix for requests to tomcat)\nexport const BACKEND_URL =\n process.env.REACT_APP_BACKEND_URL || SERVER_URL + '/api'\n\nexport const BASE_URL =\n process.env.REACT_APP_BASE_URL || BACKEND_URL + '/private'\n\nexport const HOME_PATH = process.env.REACT_APP_HOME_PATH || '/admin'\n\nexport const USE_MESSAGE_KEYS = process.env.REACT_APP_USE_MESSAGE_KEYS !== '0'\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\n\nconst styles = theme => ({\n inputContainer: {\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n textAlign: 'left',\n },\n input: {\n width: '100%',\n height: '46px',\n margin: '4px 0 24px',\n padding: '0 24px',\n border: '1px solid #D7D8DF',\n borderRadius: '10px',\n fontFamily: 'Lato, sans-serif',\n boxSizing: 'border-box',\n webkitBoxSizing: 'border-box',\n '&:focus': {\n outline: 'none',\n borderColor: '#1658F3',\n },\n '&.error': {\n borderColor: 'red',\n },\n '&::placeholder': {\n color: '#B0B2C0',\n fontSize: '14px',\n fontWeight: '300',\n },\n '&:disabled': {\n backgroundColor: '#EBEBEF',\n },\n },\n label: {\n fontSize: '14px',\n color: '#616581',\n margin: '0',\n fontWeight: '300',\n },\n errorLabel: {\n position: 'absolute',\n right: 0,\n color: '#FF624C',\n fontSize: 14,\n textAlign: 'center',\n },\n})\n\nconst Input = ({\n id,\n name,\n type,\n required,\n placeholder,\n label,\n errorLabel,\n hasError,\n onChange,\n onBlur,\n defaultValue,\n disabled,\n minLength,\n pressEnterCallback,\n classes,\n}) => {\n const handleKeyPress = e => {\n if (e.key === 'Enter') {\n if (pressEnterCallback) {\n pressEnterCallback()\n }\n }\n }\n\n return (\n
\n \n \n {hasError &&

{errorLabel}

}\n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(Input)\n","import React, { useMemo, useState } from 'react'\nimport { withStyles } from '@material-ui/core/styles'\n\nimport Input from './Input'\n\nconst styles = () => ({\n passwordInputContainer: { position: 'relative' },\n showPasswordButton: {\n backgroundColor: 'transparent',\n border: 'none',\n position: 'absolute',\n top: '37px',\n right: '24px',\n padding: 0,\n height: '12px',\n width: '20px',\n cursor: 'pointer',\n '&>img': {\n maxWidth: '100%',\n maxHeight: '100%',\n },\n },\n eyeIcon: { color: '#1658F3' },\n})\n\nconst PasswordInput = ({ classes, ...otherProps }) => {\n const [hidePassword, setHidePassword] = useState(true)\n\n const inputType = useMemo(\n () => (hidePassword ? 'password' : 'text'),\n [hidePassword],\n )\n const iconType = useMemo(\n () => (hidePassword ? 'visibility' : 'visibility_off'),\n [hidePassword],\n )\n\n const handleHidePasswordToggle = e => {\n e.preventDefault()\n setHidePassword(!hidePassword)\n }\n\n return (\n
\n \n \n {iconType}\n \n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(PasswordInput)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\n\nconst styles = theme => ({\n button: {\n height: '48px',\n borderRadius: '10px',\n border: 'none',\n fontWeight: 400,\n lineHeight: 'normal',\n fontSize: '17px',\n textAlign: 'center',\n padding: '0 25px',\n color: '#FFF',\n cursor: 'pointer',\n background: theme.palette.primary.main,\n boxShadow: '0 3px 9px rgba(19, 69, 186, 0.206267)',\n '&:hover': {\n transform: 'scale(1.05)',\n transition: '.1s ease-in-out',\n },\n },\n})\n\nconst Button = ({ type, title, onClick, classes }) => {\n return (\n \n )\n}\n\nexport default withStyles(styles, { withTheme: true })(Button)\n","export const isStringEmpty = text => {\n if (text == null) return true\n text = text.trim()\n return text.length === 0 && !text.trim() && text.trim() !== ' '\n}\n","import React from 'react'\nimport { Link, withRouter } from 'react-router-dom'\nimport base64 from 'base-64'\nimport { login } from '../api/admin'\nimport cookie from 'react-cookies'\nimport Input from './Input'\nimport PasswordInput from './PasswordInput'\nimport Button from './Button'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\nimport { HOME_PATH } from '../../../configs'\n\nconst defaultErrorMessage = 'Invalid email or password'\n\nclass LoginForm extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n username: '',\n password: '',\n error: false,\n errorMessage: '',\n }\n }\n\n handleChangeUsername = e => {\n this.setState({ username: e.target.value })\n }\n\n handleChangePassword = e => {\n this.setState({ password: e.target.value })\n }\n\n trowError = customErrorMessage =>\n this.setState({\n errorMessage: customErrorMessage\n ? customErrorMessage\n : this.state.errorMessage,\n error: true,\n })\n\n handleSubmitLogin = () => {\n const { username, password } = this.state\n if (!username || !password) {\n this.trowError(defaultErrorMessage)\n return\n }\n\n const user = {\n username,\n password: base64.encode(password),\n }\n login(user)\n .then(response => {\n if (response.ok) {\n const token = response.headers.get('Authorization')\n if (token !== null) {\n cookie.save('YWxpYWFkbWlu', token, { path: '/' })\n const from = { pathname: HOME_PATH + '/' }\n this.props.authenticateWithReferrer(token, from)\n }\n } else {\n if (response.status >= 400) {\n response.json().then(text => this.trowError(text.message))\n }\n }\n })\n .catch(this.trowError)\n }\n\n render() {\n const { styles: classes, isSignUpEnable } = this.props\n const { error, errorMessage } = this.state\n\n return (\n
\n
\n

Sign in

\n\n
\n \n\n \n\n {error ? (\n
\n {!isStringEmpty(errorMessage)\n ? errorMessage\n : defaultErrorMessage}\n
\n ) : (\n
\n )}\n
\n \n \n Forgot your password?\n \n
\n
\n {isSignUpEnable && (\n \n Don't have an account yet? Sign up\n \n )}\n
\n )\n }\n}\n\nexport default withRouter(LoginForm)\n","import { BACKEND_URL } from '../../../configs'\n\nexport function signUpInvitedUser(user) {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n return fetch(BACKEND_URL + '/invite/user', {\n method: 'POST',\n headers: headers,\n credentials: 'same-origin',\n body: JSON.stringify(user),\n })\n}\n\nexport function signUpUser(user) {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n return fetch(BACKEND_URL + '/signUp/user', {\n method: 'POST',\n headers: headers,\n credentials: 'same-origin',\n body: JSON.stringify(user),\n })\n}\n\nexport function requestPasswordReset(email) {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n return fetch(BACKEND_URL + '/resetPassword/requestReset', {\n method: 'POST',\n headers: headers,\n credentials: 'same-origin',\n body: JSON.stringify({ email }),\n })\n}\n\nexport function validateResetPasswordToken(token) {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n return fetch(BACKEND_URL + '/resetPassword/validateToken', {\n method: 'POST',\n headers: headers,\n credentials: 'same-origin',\n body: JSON.stringify({ token }),\n })\n}\n\nexport function changeAdminPasswordWithResetToken(token, newPassword) {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n return fetch(BACKEND_URL + '/resetPassword/changePassword', {\n method: 'POST',\n headers: headers,\n credentials: 'same-origin',\n body: JSON.stringify({ token, newPassword }),\n })\n}\n\nexport function getBotInviteInfo(code) {\n return fetch(BACKEND_URL + '/invite/' + code, {\n method: 'GET',\n credentials: 'same-origin',\n })\n}\n\nexport function checkIfEmailIsRegistered(email) {\n return fetch(BACKEND_URL + '/signUp/checkEmail?email=' + email, {\n method: 'POST',\n credentials: 'same-origin',\n })\n}\n\nexport function login(user) {\n return fetch(\n BACKEND_URL +\n '/login?email=' +\n user.username +\n '&password=' +\n user.password,\n {\n method: 'POST',\n credentials: 'same-origin',\n },\n )\n}\n","import React from 'react'\nimport './Loader-small.css'\n\nconst LoaderSmall = props => {\n return props.showLoader ? (\n
\n \"loader\"\n
\n ) : (\n
\n )\n}\n\nexport default LoaderSmall\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\nimport LoaderSmall from '../loaderSmall'\n\nconst styles = theme => ({\n loaderOverlayContainer: {\n position: 'absolute',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n top: '0',\n bottom: '0',\n left: '0',\n right: '0',\n background: 'rgba(255, 255, 255, 0.6)',\n zIndex: '10000',\n },\n})\n\nconst LoaderOverlay = ({ classes }) => {\n return (\n
\n \n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(LoaderOverlay)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport Button from './Button'\n\nconst styles = theme => ({\n title: {\n fontSize: '18px',\n fontWeight: '500',\n margin: 0,\n color: '#3A3F62',\n },\n subtitle: {\n fontSize: '16px',\n color: '#616581',\n marginTop: '10px',\n marginBottom: '30px',\n fontWeight: '300',\n },\n})\n\nconst FormMessage = ({\n classes,\n title,\n subtitle,\n buttonTitle,\n buttonUrl,\n history,\n}) => {\n const handleButtonClick = () => {\n history.push(buttonUrl)\n }\n\n return (\n
\n

{title}

\n
{subtitle}
\n
\n )\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(FormMessage))\n","export const emailValidation = email =>\n /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(email)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\nimport { Link } from 'react-router-dom'\nimport { requestPasswordReset } from '../api/admin'\nimport LoaderOverlay from '../../../uiKit/loaders/loaderOverlay'\nimport FormMessage from './FormMessage'\nimport Input from './Input'\nimport Button from './Button'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\nimport { emailValidation } from '../../../helpers/emailValidation'\n\nconst styles = theme => ({\n forgotPasswordForm: {\n position: 'relative',\n },\n errorMessage: {\n marginBottom: '20px',\n },\n})\n\nclass ForgotPasswordForm extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n email: '',\n emailError: false,\n error: false,\n processingForgotPassword: false,\n submitFormSuccessfully: false,\n }\n }\n\n handleChangeEmail = e => {\n this.setState({\n email: e.target.value,\n emailError: !emailValidation(e.target.value),\n })\n }\n\n handleRequestPasswordReset = () => {\n if(!this.state.email){\n this.setState({\n emailError: true\n })\n return\n }\n\n if (this.state.emailError) {\n return\n }\n\n this.setState({\n processingForgotPassword: true,\n })\n\n requestPasswordReset(this.state.email).then(response => {\n if (response.ok) {\n this.setState({\n submitFormSuccessfully: true,\n processingForgotPassword: false,\n })\n } else {\n if (response.status === 400) {\n response.json().then(text => {\n this.setState({\n error: true,\n errorMessage: text.message,\n processingForgotPassword: false,\n })\n })\n } else {\n this.setState({\n error: true,\n processingForgotPassword: false,\n })\n }\n }\n })\n }\n\n renderForgotPasswordForm = classes => {\n if (this.state.submitFormSuccessfully) {\n return (\n
\n
\n \n
\n
\n )\n }\n\n return (\n
\n
\n {this.state.processingForgotPassword && }\n\n

Reset your password

\n
\n \n\n {this.state.error ? (\n
\n {!isStringEmpty(this.state.errorMessage)\n ? this.state.errorMessage\n : 'Something went wrong, try one more time'}\n
\n ) : (\n
\n )}\n
\n
\n We will send you a link to change your password.\n
\n \n
\n
\n )\n }\n\n render() {\n const classes = { ...this.props.styles, ...this.props.classes }\n\n return (\n
\n {this.renderForgotPasswordForm(classes)}\n
\n \n Remembered your password? Sign in\n \n
\n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(ForgotPasswordForm)\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\n\nconst styles = () => ({\n main: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '32px',\n backgroundColor: 'white',\n textAlign: 'center',\n },\n imageNotFound: {\n width: '80px',\n height: '80px',\n },\n titleClass: {\n fontSize: '18px',\n lineHeight: 1,\n color: '#3A3F62',\n margin: '64px 0 16px',\n },\n paragraphClass: {\n fontSize: '14px',\n lineHeight: '20px',\n fontWeight: 'normal',\n margin: 0,\n color: '#616581',\n },\n button: {\n height: '54px',\n borderRadius: '10px',\n border: 'none',\n fontWeight: 300,\n lineHeight: 'normal',\n fontSize: '16px',\n textAlign: 'center',\n padding: '0 25px',\n color: '#FFF',\n cursor: 'pointer',\n background: '#1658F3',\n boxShadow: '0 3px 9px rgba(19, 69, 186, 0.206267)',\n margin: '32px 0 0',\n '&:hover': {\n transform: 'scale(1.05)',\n transition: '.1s ease-in-out',\n },\n },\n})\n\nconst UnavailableSmall = ({\n classes,\n buttonTitle,\n buttonUrl,\n title,\n subtitle,\n history,\n}) => {\n const handleButtonClick = () => {\n history.push(buttonUrl)\n }\n\n return (\n
\n \n\n

{title}

\n\n {subtitle &&

{subtitle}

}\n\n \n
\n )\n}\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(UnavailableSmall),\n)\n","import React from 'react'\nimport { Link, withRouter } from 'react-router-dom'\nimport {\n validateResetPasswordToken,\n changeAdminPasswordWithResetToken,\n} from '../api/admin'\nimport { withStyles } from '@material-ui/core/styles'\nimport base64 from 'base-64'\nimport queryString from 'query-string'\nimport LoaderSmall from '../../../uiKit/loaders/loaderSmall'\nimport UnavailableSmall from './UnavailableSmall'\nimport LoaderOverlay from '../../../uiKit/loaders/loaderOverlay'\nimport FormMessage from './FormMessage'\nimport PasswordInput from './PasswordInput'\nimport Button from './Button'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n resetPasswordFormWrapper: {\n position: 'relative',\n },\n '@global': {\n '@media (max-width: 575px)': {\n demoForm: {\n textAlign: 'center',\n maxWidth: 'unset',\n flexBasis: '90%',\n margin: 'auto',\n },\n },\n },\n})\n\nclass ResetPasswordForm extends React.Component {\n constructor(props) {\n super(props)\n\n const urlParams = queryString.parse(this.props.location.search)\n let resetPasswordToken = urlParams.t\n let resetTokenValidationFinished = false\n if (!isStringEmpty(resetPasswordToken)) {\n resetTokenValidationFinished = true\n this.props.history.replace(this.props.history.location.pathname)\n sessionStorage.setItem('resetPasswordToken', resetPasswordToken)\n } else {\n resetPasswordToken = sessionStorage.getItem('resetPasswordToken')\n if (isStringEmpty(resetPasswordToken)) {\n resetTokenValidationFinished = true\n }\n }\n\n this.state = {\n password: '',\n passwordConfirm: '',\n passwordError: false,\n passwordConfirmError: false,\n error: false,\n errorMessage: '',\n hidePassword: true,\n resetPasswordToken,\n resetTokenValidationFinished,\n resetTokenIsValid: false,\n failToValidateResetToken: false,\n processingPasswordChange: false,\n passwordChangedSuccessfully: false,\n }\n }\n\n componentDidMount() {\n if (this.state.resetTokenValidationFinished) {\n return\n }\n\n validateResetPasswordToken(this.state.resetPasswordToken).then(response => {\n if (response.ok) {\n response.json().then(response => {\n this.setState({\n resetTokenValidationFinished: true,\n resetTokenIsValid: response.valid === true,\n })\n })\n } else {\n this.setState({\n resetTokenValidationFinished: true,\n failToValidateResetToken: true,\n })\n // TODO: print error that was not able to validate resetToken.\n // Probably some internal error, maybe internet loss.\n }\n })\n }\n\n handlePasswordChange = e => {\n this.setState({\n password: e.target.value,\n passwordError: e.target.value.length < 8,\n passwordConfirmError:\n this.state.passwordConfirm.length > 0 &&\n e.target.value !== this.state.passwordConfirm,\n })\n }\n handlePasswordConfirmChange = e => {\n this.setState({\n passwordConfirm: e.target.value,\n passwordConfirmError: this.state.password !== e.target.value,\n })\n }\n\n handleRequestPasswordReset = e => {\n if (!this.state.passwordConfirm || !this.state.password) {\n if (!this.state.passwordConfirm)\n this.setState({\n passwordConfirmError: true,\n })\n if (!this.state.password)\n this.setState({\n passwordError: true,\n })\n return\n }\n if (\n this.state.passwordError ||\n this.state.passwordConfirmError ||\n isStringEmpty(this.state.password)\n ) {\n return\n }\n }\n\n handleHidePasswordToggle = e => {\n e.preventDefault()\n this.setState({\n hidePassword: !this.state.hidePassword,\n })\n }\n\n handleRequestPasswordReset = e => {\n if (!this.state.passwordConfirm || !this.state.password) {\n if (!this.state.passwordConfirm)\n this.setState({\n passwordConfirmError: true,\n })\n if (!this.state.password)\n this.setState({\n passwordError: true,\n })\n return\n }\n if (\n this.state.passwordError ||\n this.state.passwordConfirmError ||\n isStringEmpty(this.state.password)\n ) {\n return\n }\n\n this.setState({\n processingPasswordChange: true,\n })\n\n changeAdminPasswordWithResetToken(\n this.state.resetPasswordToken,\n base64.encode(this.state.password),\n ).then(response => {\n if (response.ok) {\n this.setState({\n passwordChangedSuccessfully: true,\n processingPasswordChange: false,\n })\n } else {\n if (response.status === 400) {\n response.json().then(text => {\n this.setState({ errorMessage: text.message })\n })\n }\n this.setState({\n error: true,\n processingPasswordChange: false,\n })\n }\n })\n }\n\n resetPasswordFormContent = classes => {\n const {\n resetTokenValidationFinished,\n failToValidateResetToken,\n resetTokenIsValid,\n processingPasswordChange,\n passwordChangedSuccessfully,\n } = this.state\n\n // TODO: add some error message when connection to server lost\n if (!resetTokenValidationFinished || failToValidateResetToken) {\n return \n }\n if (!resetTokenIsValid) {\n return (\n \n )\n }\n\n if (passwordChangedSuccessfully) {\n return (\n \n )\n }\n\n return (\n
\n {processingPasswordChange && }\n

Reset your password

\n
\n \n\n \n\n {this.state.error ? (\n
\n {!isStringEmpty(this.state.errorMessage)\n ? this.state.errorMessage\n : 'Something went wrong, try one more time'}\n
\n ) : (\n
\n )}\n
\n \n
\n )\n }\n\n render() {\n const classes = { ...this.props.classes, ...this.props.styles }\n\n return (\n
\n
\n {this.resetPasswordFormContent(classes)}\n
\n
\n \n Remembered your password? Sign in\n \n
\n )\n }\n}\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(ResetPasswordForm),\n)\n","import React, { Component } from 'react'\nimport { Link, Redirect } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\nimport {\n checkIfEmailIsRegistered,\n getBotInviteInfo,\n signUpInvitedUser,\n signUpUser,\n} from '../api/admin'\nimport base64 from 'base-64'\nimport Button from './Button'\nimport Input from './Input'\nimport PasswordInput from './PasswordInput'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\nimport { emailValidation } from '../../../helpers/emailValidation'\n\nconst styles = theme => ({\n '@global': {\n '@media (max-width: 575px)': {\n demoForm: {\n textAlign: 'center',\n maxWidth: 'unset',\n flexBasis: '90%',\n margin: 'auto',\n },\n },\n },\n})\n\nclass SignUpForm extends Component {\n constructor(props) {\n super(props)\n this.state = {\n username: '',\n email: '',\n password: '',\n passwordConfirm: '',\n redirectToLogin: false,\n redirectToError: false,\n redirectToUsedLink: false,\n redirectToConfirmEmail: false,\n inputNameError: false,\n inputEmailError: false,\n inputEmailIsRegisteredError: false,\n inputPasswordError: false,\n inputPasswordConfirmError: false,\n hidePassword: true,\n hidePasswordConfirm: true,\n }\n }\n\n componentDidMount() {\n if (this.props.invited) {\n this.processInviteCode()\n }\n }\n\n handleChange = (event, state, error) => {\n this.setState({ [state]: event.target.value })\n this.setState({ [error]: !event.target.checkValidity() })\n }\n\n validatePasswordConfirm = (password, passwordConfirm) => {\n if (!isStringEmpty(passwordConfirm)) {\n this.setState({\n passwordConfirm: passwordConfirm,\n inputPasswordConfirmError: password !== passwordConfirm,\n })\n }\n }\n\n handleChangeEmail = e => {\n const email = e.target.value\n this.setState({\n email: email,\n inputEmailIsRegisteredError: false,\n inputEmailError: !emailValidation(email),\n })\n }\n\n togglePassword = (e, state) => {\n e.preventDefault()\n this.setState({ [state]: !this.state[state] })\n }\n\n handleSubmitRegister = () => {\n // Check whether this email isn't already registered\n this.checkIfEmailIsRegistered(() => this.submitRegister())\n }\n\n submitRegister = () => {\n const invited = this.props.invited\n if (!this.isFormValid()) {\n return\n }\n\n const encodedPassword = base64.encode(this.state.password)\n const user = {\n name: this.state.username,\n password: encodedPassword,\n }\n\n if (invited) {\n this.signUpInvitedUser(user)\n } else {\n this.signUpUser(user)\n }\n }\n\n checkIfEmailIsRegistered = callback => {\n checkIfEmailIsRegistered(this.state.email)\n .then(response => {\n return response.json().then(body => {\n this.setState({ inputEmailIsRegisteredError: body.emailIsRegistered })\n return body\n })\n })\n .then(body => {\n if (!body.emailIsRegistered) {\n callback()\n }\n })\n }\n\n // Check whether inputs aren't empty and there's no any error\n isFormValid = () => {\n this.checkEmptyString('inputNameError', 'username')\n this.checkEmptyString('inputEmailError', 'email')\n this.checkEmptyString('inputPasswordError', 'password')\n this.checkEmptyString('inputPasswordConfirmError', 'passwordConfirm')\n return !(\n this.state.inputNameError ||\n this.state.inputEmailError ||\n this.state.inputEmailIsRegisteredError ||\n this.state.inputPasswordError ||\n this.state.inputPasswordConfirmError\n )\n }\n\n checkEmptyString = (errorState, state) => {\n // If there's no any other error with this input, check if it's not empty\n if (!this.state[errorState]) {\n this.setState({ [errorState]: isStringEmpty(this.state[state]) })\n }\n }\n\n signUpInvitedUser(user) {\n user.code = this.props.match.params.code // When a user is invited, add `code` to the request body\n signUpInvitedUser(user).then(response => {\n if (response.ok) {\n this.setState({ redirectToLogin: true })\n }\n })\n }\n\n signUpUser(user) {\n user.email = this.state.email // When a user isn't invited, add `email` to the request body\n signUpUser(user).then(response => {\n if (response.ok) {\n this.setState({ redirectToConfirmEmail: true })\n }\n })\n }\n\n processInviteCode() {\n const code = this.props.match.params.code\n getBotInviteInfo(code)\n .then(response => {\n if (response.status === 400) {\n this.setState({ redirectToError: true })\n } else if (response.status === 404) {\n this.setState({ redirectToUsedLink: true })\n } else if (response.ok) {\n return response.json()\n }\n })\n .then(json => {\n this.setState({ email: json.email })\n })\n }\n\n render() {\n const invited = this.props.invited\n const classes = { ...this.props.classes, ...this.props.styles } // Use styles from this file and styles from props\n const {\n redirectToLogin,\n redirectToError,\n redirectToUsedLink,\n redirectToConfirmEmail,\n } = this.state\n if (redirectToLogin) {\n return \n }\n if (redirectToError || redirectToUsedLink) {\n return \n }\n // After signing up, redirect to \"confirm your email\" page\n if (redirectToConfirmEmail) {\n return (\n \n )\n }\n return (\n
\n
\n

Sign up

\n
\n this.handleChange(e, 'username', 'inputNameError')}\n />\n\n \n\n {\n this.handleChange(e, 'password', 'inputPasswordError')\n this.validatePasswordConfirm(\n e.target.value,\n this.state.passwordConfirm,\n )\n }}\n hasError={this.state.inputPasswordError}\n />\n\n \n this.validatePasswordConfirm(\n this.state.password,\n e.target.value,\n )\n }\n hasError={this.state.inputPasswordConfirmError}\n />\n
\n \n
\n
\n \n Already have an account? Sign in\n \n
\n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(SignUpForm)\n","import { store } from '../../../index'\n\nexport const SHOW_SNACKBAR = 'SHOW_SNACKBAR'\n\nexport const showSnackBar = snackBar => {\n store.dispatch({\n type: SHOW_SNACKBAR,\n snackBar,\n })\n}\n","import cookie from 'react-cookies'\n\nimport { showSnackBar } from '../tabs/home/actions/snackBar'\nimport { logout } from '../tabs/authorization/actions/security'\n\nexport function createJsonHeaders() {\n const headers = new Headers()\n headers.append('Content-Type', 'application/json;charset=UTF-8')\n headers.append('Authorization', 'Bearer ' + cookie.load('YWxpYWFkbWlu'))\n return headers\n}\n\nexport function logoutOnRequestOrResponseJson(response) {\n if (response.ok) {\n return response.redirected ? logout() : response.json()\n }\n}\n\nexport function alertSuccess(message, duration) {\n showSnackBar({\n open: true,\n text: message,\n success: true,\n duration,\n })\n}\n\nexport function alertError(message) {\n showSnackBar({\n open: true,\n text: message,\n success: false,\n })\n}\n","import React, { Component } from 'react'\nimport cookie from 'react-cookies'\nimport { Redirect, Route, Switch } from 'react-router-dom'\nimport { authenticate } from '../actions/security'\nimport LoginForm from './LoginForm'\nimport ForgotPasswordForm from './ForgotPasswordForm'\nimport ResetPasswordForm from './ResetPasswordForm'\nimport SignUp from './SignUpForm'\nimport { getLoginPageElement } from '../api/login'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nconst formStyles = () => ({\n main: {\n flex: '0 0 50%',\n maxWidth: '50%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-evenly',\n alignItems: 'center',\n padding: '40px',\n position: 'relative',\n },\n '@media (min-width: 320px) and (max-width: 480px)': {\n main: {\n flex: '0 0 100%',\n maxWidth: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-evenly',\n alignItems: 'center',\n padding: '15px',\n position: 'relative',\n },\n },\n formTitle: {\n fontSize: '18px',\n fontWeight: '500',\n margin: 0,\n color: '#3A3F62',\n },\n demoForm: {\n width: '60%',\n margin: '0 0 32px',\n textAlign: 'center',\n },\n demoDiv: {\n margin: '32px 0 8px',\n textAlign: 'left',\n },\n bottomText: {\n position: 'absolute',\n bottom: '60px',\n },\n forgotPasswordLink: {\n fontSize: '13px',\n color: 'gray',\n display: 'block',\n textAlign: 'center',\n marginTop: '30px',\n },\n forgotPasswordNoteText: {\n fontSize: '14px',\n color: '#616581',\n marginTop: '-10px',\n marginBottom: '25px',\n fontWeight: '300',\n },\n})\n\nclass Login extends Component {\n constructor(props) {\n super(props)\n this.state = {\n from: null,\n title: null,\n subTitle: null,\n imagePath: null,\n isSignUpEnable: false,\n redirectToReferrer: false,\n }\n }\n\n componentDidMount() {\n getLoginPageElement(element => {\n this.setState({\n title: element.title,\n subTitle: element.subTitle,\n imagePath: element.imagePath,\n isSignUpEnable: element.isSignUpEnable,\n })\n })\n\n const token = cookie.load('YWxpYWFkbWlu')\n\n const from = this.props?.location?.state?.from?.pathname\n\n if (token) {\n this.authenticateWithReferrer(token, from)\n }\n }\n\n authenticateWithReferrer = (token, from) => {\n authenticate(token)\n this.setState({ redirectToReferrer: true, from })\n }\n\n render() {\n const { classes } = this.props\n const {\n redirectToReferrer,\n title,\n subTitle,\n imagePath,\n isSignUpEnable,\n from,\n } = this.state\n\n if (redirectToReferrer && from) {\n return \n }\n\n return (\n
\n {title && subTitle && imagePath && (\n
\n \n
\n

{title}

\n

{subTitle}

\n
\n \n \n (\n \n )}\n />\n }\n />\n (\n \n )}\n />\n }\n />\n }\n />\n \n
\n )}\n
\n )\n }\n}\n\nconst PrivateRoute = ({ component: Component, isSignUpEnable, ...rest }) => (\n \n (isSignUpEnable ? (\n \n ) : (\n \n ))\n }\n />\n)\nLogin.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(formStyles, { withTheme: true })(Login)\n","import { createJsonHeaders } from '../../../api'\nimport { BACKEND_URL } from '../../../configs'\n\nexport function getLoginPageElement(callback) {\n fetch(`${BACKEND_URL}/login/page/element`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.ok) {\n return response.json()\n }\n })\n .then(json => {\n callback(json)\n })\n}\n","/**\n * Created by Admin on 08.05.2018.\n */\n\nimport {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from './api'\nimport { saveAdminUser } from './tabs/authorization/actions/adminUser'\nimport { BASE_URL } from './configs'\n\nexport const ROLE = {\n ADMIN: 'ROLE_ADMIN',\n SUPPORT: 'ROLE_SUPPORT',\n}\n\nexport const ROLE_OPTIONS = [\n {\n value: ROLE.ADMIN,\n label: 'Admin',\n features: [\n 'support',\n 'dashboard',\n 'flows',\n 'atomBuilder',\n 'settings',\n 'nlp',\n 'broadcast',\n 'widget',\n 'createBot',\n 'shareBot',\n 'analytics',\n ],\n },\n {\n value: ROLE.SUPPORT,\n label: 'Support',\n features: ['support', 'dashboard', 'analytics'],\n },\n]\n\nexport const access = {\n userRole: null,\n botAccesses: [],\n\n loadRole() {\n fetch(BASE_URL + '/getAdminUser', {\n credentials: 'same-origin',\n method: 'GET',\n headers: createJsonHeaders(),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n // access.userRole = json.role;\n access.botAccesses = json.botAccesses\n saveAdminUser(json)\n return json\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n },\n}\n\nexport function hasPermissionForBot(botId, featureName) {\n const botAccess = access?.botAccesses?.filter(\n ba => ba.botId === Number(botId),\n )[0]\n\n return (\n botAccess &&\n ROLE_OPTIONS?.find(\n role => role.value === botAccess.role,\n )?.features?.includes(featureName)\n )\n}\n\nexport function hasPermissionForFeature(featureName) {\n const userRole = access?.botAccesses[0]?.role\n\n return ROLE_OPTIONS?.find(\n role => role.value === userRole,\n )?.features?.includes(featureName)\n}\n","import { store } from '../../../index'\n\nexport const SAVE_ADMIN_USER = ' SAVE_ADMIN_USER'\n\nexport const saveAdminUser = adminUser => {\n store.dispatch({\n type: SAVE_ADMIN_USER,\n adminUser,\n })\n}\n","import { store } from '../../../index'\n\nexport const CLEAR_STATE = 'CLEAR_STATE'\nexport const SET_ACTIVE_BOT = 'SET_ACTIVE_BOT'\nexport const SET_DIALOG_FLOW = 'SET_DIALOG_FLOW'\n\nexport const clearOldBot = () => {\n store.dispatch({\n type: CLEAR_STATE,\n })\n}\n\nexport const setActiveBot = activeBot => {\n store.dispatch({\n type: SET_ACTIVE_BOT,\n activeBot,\n })\n}\n\nexport const updateDialogFlowConfigs = dialogFlowConfigs => {\n store.dispatch({\n type: SET_DIALOG_FLOW,\n dialogFlowConfigs,\n })\n}\n","import {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL, HOME_PATH } from '../../../configs'\nimport { access } from '../../../security'\nimport { updateDialogFlowConfigs } from '../actions/activeBot'\nimport { setActiveBot } from '../actions/activeBot'\nimport { saveBots } from '../actions/bots'\n\nexport function getBots(callback) {\n fetch(BASE_URL + '/bot', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveBots(json)\n if (callback) callback()\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function getBotConfigs(botId) {\n fetch(BASE_URL + '/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setActiveBot(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function getBot(botId) {\n return fetch(BASE_URL + '/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setActiveBot(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function getDashboard(botId, state) {\n fetch(BASE_URL + '/bot/' + botId + '/dashboard', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n state.setState({ ...json })\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function deleteBot(botId) {\n fetch(BASE_URL + '/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n .then(response => {\n window.location.href = HOME_PATH\n return response\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function createNewBotAPI(bot, callback, callbackError) {\n fetch(BASE_URL + '/bot', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(bot),\n }).then(response => {\n logoutOnRequestOrResponseJson(response)\n if (response.ok) {\n alertSuccess('Bot is created successfully.')\n getBots()\n access.loadRole()\n if (callback) callback()\n } else if (response.status === 400 || response.status === 500) {\n response.json().then(text => callbackError(text.message))\n }\n return response.redirected\n ? (window.location.href = response.url)\n : response\n })\n}\n\nexport function shareBot(botId, json, callback) {\n fetch(BASE_URL + '/bot/' + botId + '/shareBot', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(json),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(() => {\n if (callback) callback()\n alertSuccess('Bot is shared successfully.')\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function cloneBot(botId, json, callback) {\n fetch(BASE_URL + '/bot/' + botId + '/clone', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(json),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(responseJson => {\n alertSuccess('Bot is cloned successfully.')\n access.loadRole()\n getBots()\n if (callback) {\n callback()\n }\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateBot(bot, callback) {\n fetch(BASE_URL + '/bot', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(bot),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setActiveBot(json)\n if (callback) callback()\n alertSuccess('Bot is updated successfully.')\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function getBotPersistentMenu(botId, language, callback) {\n fetch(BASE_URL + '/bot/' + botId + '/persistentMenu?language=' + language, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n return response.redirected\n ? (window.location.href = response.url)\n : response.json()\n })\n .then(json => {\n if (callback) callback(json)\n })\n .catch(function(error) {\n alertError('Failed to get the persistent menu.')\n })\n}\n\nexport function updateBotPersistentMenu(botId, language, persistentMenu) {\n persistentMenu.locale = 'default' //todo check logic on persistent component\n fetch(BASE_URL + '/bot/' + botId + '/persistentMenu?language=' + language, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(persistentMenu),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Bot is updated successfully.')\n setActiveBot(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateDialogflowConfigs(\n botId,\n dialogFlowConfigs,\n successCallback,\n errorCallback,\n) {\n fetch(BASE_URL + '/bot/' + botId + '/updateDialogflowConfigs', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PATCH',\n body: JSON.stringify(dialogFlowConfigs),\n })\n .then(response => {\n if (response.ok) {\n response.redirected\n ? (window.location.href = response.url)\n : alertSuccess('Bot is updated successfully.')\n updateDialogFlowConfigs(dialogFlowConfigs)\n if (successCallback) successCallback()\n } else if (errorCallback) {\n response.json().then(err => errorCallback(err.message))\n }\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateWitAiConfigsRequest(\n botId,\n successCallback,\n errorCallback,\n) {\n fetch(BASE_URL + '/bot/' + botId + '/witAiConfigs', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n })\n .then(response => {\n if (response.ok) {\n response.redirected\n ? (window.location.href = response.url)\n : alertSuccess('Bot is updated successfully.')\n if (successCallback) successCallback()\n } else if (errorCallback) {\n response.json().then(err => errorCallback(err.message))\n }\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateGreetingText(\n botId,\n greetingText,\n successCallback,\n errorCallback,\n) {\n fetch(BASE_URL + '/bot/' + botId + '/greetingText', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PATCH',\n body: JSON.stringify({ greetingText }),\n })\n .then(response => {\n if (response.ok) {\n response.redirected\n ? (window.location.href = response.url)\n : alertSuccess('Greeting text is updated successfully.')\n if (successCallback) successCallback()\n } else if (errorCallback) {\n response.json().then(err => errorCallback(err.message))\n }\n })\n .catch(function(error) {\n alertError('Failed. Try it later')\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_BOTS = 'SAVE_BOTS'\n\nexport const saveBots = bots => {\n store.dispatch({\n type: SAVE_BOTS,\n bots,\n })\n}\n","import {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL } from '../../../configs'\nimport { saveSupportRequests } from '../actions/supportRequest'\n\nexport function getSupportRequests(botId) {\n return fetch(`${BASE_URL}/support/status/support/${botId}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveSupportRequests(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support')\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_SUPPORT_REQUESTS = 'SAVE_SUPPORT_REQUESTS'\n\nexport const saveSupportRequests = requests =>\n store.dispatch({\n type: SAVE_SUPPORT_REQUESTS,\n requests,\n })\n","/* eslint-disable */\nimport React from 'react'\n\nexport const NoChartDataIcon = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n)\n\nexport class BroadcastIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class Chevron extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class DashboardIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class FlowsIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n \n )\n }\n}\n\nexport class NlpIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class SupportIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class WidgetIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class SettingsIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport const AnalyticsIcon = props => {\n return (\n \n \n \n \n )\n}\n\nexport class PlusIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class CloseIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class SearchIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class TrashIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class TextIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n )\n }\n}\n\nexport class ListIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class GalleryIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class AttachmentIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class ReplyIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class OtherIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class DoneIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class LeftArrowIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class RightArrowIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class DownArrowIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class EditIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class OvalIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class CalendarIcon extends React.Component {\n render() {\n const { width, height } = this.props\n return (\n \n \n \n \n \n \n )\n }\n}\n\nexport class PenIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class PhotoIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class EnterIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n )\n }\n}\n\nexport class UpIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class DownIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class Icon404 extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport class ThreeIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nexport class BackIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class EditMenuIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport class LinkIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class WelcomeIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n )\n }\n}\n\nexport class DelayIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class CustomizationIcon extends React.Component {\n render() {\n return (\n \n \n \n \n )\n }\n}\n\nexport class HelloIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport const CopyIcon = props => {\n const { width, height, color } = props\n return (\n \n \n \n \n )\n}\n\nexport const TrashDarkIcon = () => (\n \n \n \n \n \n \n)\n","import React from 'react'\n\nimport './Loader.css'\n\nconst Loader = () => (\n
\n
\n
\n)\n\nexport default Loader\n","import React from 'react'\nimport DateRangePicker from 'react-bootstrap-daterangepicker'\n\nimport 'bootstrap/dist/css/bootstrap.css'\nimport 'bootstrap-daterangepicker/daterangepicker.css'\nimport './DateRange.css'\n\nconst DateRange = ({ setDate, startDate, endDate }) => {\n const saveChanges = (event, picker) => {\n setDate(picker.startDate, picker.endDate)\n }\n\n return (\n \n \n \n )\n}\nexport default DateRange\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { CSVLink } from 'react-csv'\nimport moment from 'moment'\nimport { withStyles } from '@material-ui/core'\n\nconst styles = theme => ({\n button: {\n fontFamily: 'Lato, sans-serif',\n padding: 0,\n margin: 0,\n cursor: 'pointer',\n fontWeight: 400,\n color: '#1658F3',\n },\n})\n\nconst addTimeInterval = (start, end, hourly, name) => {\n const startDate = moment(start).format('DD-MM-YYYY')\n const endDate = moment(end).format('DD-MM-YYYY')\n\n return hourly && name === 'total_users'\n ? 'for_last_24h'\n : `${startDate}_${endDate}`\n}\n\nconst ButtonCsv = ({\n classes,\n data,\n fileName,\n headers,\n startDate,\n endDate,\n hourly,\n}) => (\n \n Download\n \n)\n\nButtonCsv.propTypes = {\n classes: PropTypes.object,\n styles: PropTypes.object,\n disabled: PropTypes.bool,\n headers: PropTypes.array,\n data: PropTypes.array,\n}\n\nexport default withStyles(styles, { withTheme: true })(ButtonCsv)\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\nimport ReactTooltip from 'react-tooltip'\n\nimport './DateControl.css'\nimport ButtonCsv from '../ButtonCSV'\n\nconst styles = theme => ({\n container: {\n display: 'flex',\n flexFlow: 'row nowrap',\n justifyContent: 'space-between',\n alignItems: 'center',\n '&span': {\n verticalAlign: 'middle',\n },\n },\n text: {\n fontSize: 12,\n lineHeight: 1,\n fontFamily: 'Lato, sans-serif',\n margin: '0',\n color: '#3A3F62',\n },\n titleWrapper: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n },\n title: {\n fontSize: 18,\n fontWeight: 700,\n marginRight: 16,\n },\n number: {\n fontSize: 18,\n lineHeight: 1,\n color: '#1658F3',\n fontWeight: 700,\n marginLeft: 8,\n },\n stats: {\n textAlign: 'right',\n verticalAlign: 'middle',\n '&>p': {\n display: 'inline-flex',\n alignItems: 'center',\n margin: 0,\n '&:first-child': {\n marginRight: 16,\n },\n },\n },\n tooltip: {\n maxWidth: '80%',\n width: '400px',\n border: '1px solid #EBEBEF',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n },\n})\n\nexport const buildTooltip = (classes, title, tooltipText) => (\n \n {tooltipText}\n \n)\n\nconst HeaderStats = ({\n classes,\n title,\n tooltipText,\n users,\n usersTitle,\n totalUsers,\n headerStats,\n fileName,\n headersCsv,\n dataCsv,\n hourly,\n startDate,\n endDate,\n}) => (\n
\n \n

\n {title}\n \n  \n \n \n

\n {dataCsv && (\n \n )}\n
\n {buildTooltip(classes, title, tooltipText)}\n {headerStats && (\n
\n

\n {usersTitle}\n {users}\n

\n

\n Total users{totalUsers}\n

\n
\n )}\n
\n)\n\nHeaderStats.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(HeaderStats))\n","import React from 'react'\nimport moment from 'moment'\nimport { withRouter } from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\n\nimport './DateControl.css'\nimport DateRange from './DateRange'\nimport HeaderStats from './HeaderStats'\n\nconst FREQUENCIES = {\n week: 'week',\n month: 'month',\n custom: 'custom',\n hourly: 'hourly',\n}\n\nconst styles = theme => ({\n tooltip: {\n maxWidth: '80%',\n width: '400px',\n border: '1px solid #EBEBEF',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n },\n})\n\nclass DateControl extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n frequency: FREQUENCIES.week,\n startDate: moment().subtract(1, 'week').add(1, 'day'),\n endDate: moment(),\n hourly: false,\n pickerOpen: false,\n custom: false,\n usersTitle: 'Last 7 days',\n }\n }\n\n componentDidMount() {\n this.setActiveFrequency(this.state.frequency)\n }\n\n static getDerivedStateFromProps(props) {\n const { custom } = props\n\n return custom ? { custom, pickerOpen: true } : { custom: !!custom }\n }\n\n updateDate = (startDate, endDate, pickerOpen, usersTitle, frequency) => {\n this.setState({\n startDate,\n endDate,\n pickerOpen,\n usersTitle,\n frequency: frequency || this.state.frequency,\n })\n }\n\n setDate = (startDate, endDate, hourly, callback) => {\n const { botId, loadData } = this.props\n loadData(\n botId,\n startDate.format('YYYY-MM-DD'),\n endDate.format('YYYY-MM-DD'),\n hourly,\n callback,\n )\n }\n\n setCustomDate = (startDate, endDate) => {\n const usersTitle = 'Custom'\n this.setState({ startDate, endDate, usersTitle }, () => {\n this.setActiveFrequency(FREQUENCIES.custom)\n })\n }\n\n setActiveFrequency = frequency => {\n let { startDate, endDate, hourly } = this.state\n let usersTitle, pickerOpen\n\n switch (frequency) {\n case FREQUENCIES.hourly:\n startDate = moment().subtract(1, 'day')\n endDate = moment()\n hourly = true\n this.setState({ hourly })\n usersTitle = 'Last 24h'\n break\n case FREQUENCIES.week:\n startDate = moment().subtract(1, 'week').add(1, 'day')\n endDate = moment()\n hourly = false\n this.setState({ hourly })\n usersTitle = 'Last 7 days'\n break\n case FREQUENCIES.month:\n startDate = moment().subtract(1, 'month').add(1, 'day')\n endDate = moment()\n hourly = false\n this.setState({ hourly })\n usersTitle = 'Last 30 days'\n break\n case FREQUENCIES.custom:\n pickerOpen = true\n usersTitle = 'Custom'\n hourly = false\n this.setState({ hourly })\n break\n default:\n hourly = false\n this.setState({ hourly })\n pickerOpen = false\n usersTitle = 'Last 7 days'\n }\n\n this.setState({ pickerOpen, frequency }, () => {\n this.setDate(startDate, endDate, hourly, () => {\n if (frequency !== FREQUENCIES.custom) {\n this.updateDate(startDate, endDate, pickerOpen, usersTitle, frequency)\n }\n })\n })\n }\n\n render() {\n const {\n title,\n custom,\n tooltip,\n tooltipText,\n users,\n totalUsers,\n headerStats,\n dataCsv,\n headersCsv,\n fileName,\n dataTitle,\n } = this.props\n const { startDate, endDate, pickerOpen, usersTitle, frequency, hourly } =\n this.state\n\n const finalUsersTitle = dataTitle ? dataTitle : usersTitle\n return (\n
\n \n
\n this.setActiveFrequency(FREQUENCIES.hourly)}>\n Last 24h\n \n this.setActiveFrequency(FREQUENCIES.week)}>\n Last 7 days\n \n this.setActiveFrequency(FREQUENCIES.month)}>\n Last 30 days\n \n this.setActiveFrequency(FREQUENCIES.custom)}>\n Custom\n \n
\n {pickerOpen && (\n \n )}\n
\n )\n }\n}\n\nDateControl.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(DateControl))\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport { NoChartDataIcon } from '../../../uiKit/icons/Icons'\n\nconst NoChartData = ({ text }) => (\n \n \n \n {text}\n

\n
\n)\n\nNoChartData.propTypes = {\n text: PropTypes.string.isRequired,\n}\n\nexport default withRouter(NoChartData)\n","import {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL } from '../../../configs'\nimport { savePopularHoursStatistics } from '../actions/popularHoursStatistics'\nimport { saveSupportStatistics } from '../actions/supportStatistics'\nimport { saveUsersStatistics } from '../actions/usersStatistics'\n\nexport const loadUsersStatistics = (\n botId,\n startDate,\n endDate,\n hourly,\n callback,\n) => {\n const loadDataUrl = !hourly\n ? `${BASE_URL}/chart/users/${botId}?from=${startDate}&to=${endDate}`\n : `${BASE_URL}/chart/users/${botId}/last24hours`\n\n return fetch(loadDataUrl, {\n method: 'GET',\n headers: createJsonHeaders(),\n credentials: 'same-origin',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(responseJson => {\n saveUsersStatistics(responseJson)\n callback()\n })\n .catch(err => {\n alertError('Not able to load user statistics data!')\n })\n}\n\nexport const loadSupportStatistics = (botId, startDate, endDate) => {\n fetch(\n `${BASE_URL}/chart/conversationCovering/${botId}?from=${startDate}&to=${endDate}`,\n {\n method: 'GET',\n headers: createJsonHeaders(),\n credentials: 'same-origin',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(responseJson => {\n saveSupportStatistics(responseJson)\n })\n .catch(() => {\n alertError('Not able to load chatbot/support statistics data!')\n })\n}\n\nexport const loadPopularHoursStatistics = (botId, startDate, endDate) => {\n fetch(\n `${BASE_URL}/chart/hourlyConversation/${botId}?from=${startDate}&to=${endDate}`,\n {\n method: 'GET',\n headers: createJsonHeaders(),\n credentials: 'same-origin',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(responseJson => {\n savePopularHoursStatistics(responseJson)\n })\n .catch(() => {\n alertError('Not able to load popular hours statistics data!')\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_USERS_STATISTICS = 'SAVE_USERS_STATISTICS'\n\nexport const saveUsersStatistics = stats => {\n store.dispatch({\n type: SAVE_USERS_STATISTICS,\n stats,\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_SUPPORT_STATISTICS = 'SAVE_SUPPORT_STATISTICS'\n\nexport const saveSupportStatistics = stats => {\n store.dispatch({\n type: SAVE_SUPPORT_STATISTICS,\n stats,\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_POPULAR_HOURS_STATISTICS = 'SAVE_POPULAR_HOURS_STATISTICS'\n\nexport const savePopularHoursStatistics = stats => {\n store.dispatch({\n type: SAVE_POPULAR_HOURS_STATISTICS,\n stats,\n })\n}\n","export const totalUsersHeaders = [\n { label: 'Date', key: 'date' },\n { label: 'Users', key: 'users' },\n]\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { LineChart } from 'react-chartkick'\n\nimport Loader from '../../../../uiKit/loaders/loader'\nimport DateControl from './DateControl'\nimport NoChartData from '../NoChartData'\nimport { loadUsersStatistics } from '../../api/dashboard'\nimport { totalUsersHeaders } from '../../../../constants/totalUsersHeaders'\n\nconst noDataText =\n 'You have no statistics yet. It will appear here after your chatbot will get first users'\nconst tooltipText = `This chart shows the number of daily\n active users for the selected period. For a given day,\n Daily Users is the number of unique users who were\n chatting with the bot that day.`\n\nconst convertDataCsv = data => {\n return Object.keys(data.points).map(k => {\n return {\n date: k,\n users: data.points[k],\n }\n })\n}\n\nconst AreaChart = ({ botId, usersStatistics: chartData, className }) => (\n
\n \n {!chartData ? (\n \n \n
\n ) : chartData.points && Object.keys(chartData.points).length ? (\n \n ) : (\n \n )}\n
\n)\n\nconst mapStateToProps = state => ({\n usersStatistics: state.usersStatistics,\n})\n\nexport default connect(mapStateToProps)(AreaChart)\n","export const covertHeaders = [\n { label: 'By chat bot', key: 'byChatBot' },\n { label: 'By customer support', key: 'byCustomerSupport' },\n]\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { PieChart } from 'react-chartkick'\nimport Loader from '../../../uiKit/loaders/loader'\nimport DateControl from './usersChart/DateControl'\nimport NoChartData from './NoChartData'\nimport { loadSupportStatistics } from '../api/dashboard'\nimport { covertHeaders } from '../../../constants/covertHeaders'\n\nconst colors = ['#1658F3', '#F3B116']\nconst noDataText =\n 'You have no conversations yet. They will appear here after your chatbot will get first users'\nconst tooltipText =\n// eslint-disable-next-line max-len\n 'This chart shows the ratio of conversations covered only by the bot and conversations in which a user asked for human support.'\n\nconst convertDataCsv = data => {\n return [...[], data]\n}\n\nconst CircleChart = ({ supportStatistics: chartData, botId, className }) => (\n
\n \n {CircleChartContent(chartData)}\n
\n)\n\nconst CircleChartContent = chartData => {\n if (chartData) {\n const { byChatBot, byCustomerSupport } = chartData\n const data = [\n ['By chatbot', byChatBot],\n ['By customer support', byCustomerSupport],\n ]\n\n return byChatBot || byCustomerSupport ? (\n \n ) : (\n \n )\n } else {\n return \n }\n}\n\nconst mapStateToProps = state => ({\n supportStatistics: state.supportStatistics,\n})\n\nexport default connect(mapStateToProps)(CircleChart)\n","export const days = [\n 'SUNDAY',\n 'MONDAY',\n 'TUESDAY',\n 'WEDNESDAY',\n 'THURSDAY',\n 'FRIDAY',\n 'SATURDAY',\n]\n\nexport const dayModel = [\n {\n time: '12AM',\n amount: 0,\n },\n {\n time: '1AM',\n amount: 0,\n },\n {\n time: '2AM',\n amount: 0,\n },\n {\n time: '3AM',\n amount: 0,\n },\n {\n time: '4AM',\n amount: 0,\n },\n {\n time: '5AM',\n amount: 0,\n },\n {\n time: '6AM',\n amount: 0,\n },\n {\n time: '7AM',\n amount: 0,\n },\n {\n time: '8AM',\n amount: 0,\n },\n {\n time: '9AM',\n amount: 0,\n },\n {\n time: '10AM',\n amount: 0,\n },\n {\n time: '11AM',\n amount: 0,\n },\n {\n time: '12PM',\n amount: 0,\n },\n {\n time: '1PM',\n amount: 0,\n },\n {\n time: '2PM',\n amount: 0,\n },\n {\n time: '3PM',\n amount: 0,\n },\n {\n time: '4PM',\n amount: 0,\n },\n {\n time: '5PM',\n amount: 0,\n },\n {\n time: '6PM',\n amount: 0,\n },\n {\n time: '7PM',\n amount: 0,\n },\n {\n time: '8PM',\n amount: 0,\n },\n {\n time: '9PM',\n amount: 0,\n },\n {\n time: '10PM',\n amount: 0,\n },\n {\n time: '11PM',\n amount: 0,\n },\n]\n","import React from 'react'\nimport ReactTooltip from 'react-tooltip'\nimport { withStyles } from '@material-ui/core'\n\nconst styles = theme => ({\n gridItem: {\n height: 10,\n width: '100%',\n marginBottom: 5,\n },\n tooltip: {\n border: '1px solid #EBEBEF',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n background: '#ffffff',\n },\n})\n\nconst DayModel = ({ classes, dayModel, color, day, getDayData }) =>\n dayModel.map(model => {\n const { opacity: colorOpacity, amount } = getDayData(\n day.dayToAmount,\n day.dayOfWeek,\n model.time,\n )\n const gridItemStyle = color\n ? {\n backgroundColor: `rgba(${color.r}, ${color.g}, ${color.b}, ${\n colorOpacity / 100\n })`,\n }\n : {}\n\n return (\n \n \n {amount}\n \n
\n )\n })\n\nexport default withStyles(styles, { withTheme: true })(DayModel)\n","import React from 'react'\nimport Loader from '../../../../uiKit/loaders/loader'\nimport { withStyles } from '@material-ui/core'\n\nimport { days, dayModel } from './daysModel'\nimport DayModel from './DayModel'\n\nconst styles = theme => ({\n grid: {\n display: 'flex',\n flexFlow: 'row nowrap',\n backgroundColor: theme.palette.primary.contrastText,\n '&>:first-child': {\n marginRight: 16,\n },\n '&:last-child': {\n marginRight: 0,\n },\n },\n gridColumn: {\n width: 'calc(100% / 8)',\n marginRight: 5,\n },\n gridItem: {\n height: 10,\n width: '100%',\n marginBottom: 5,\n },\n gridItemTransp: {\n backgroundColor: theme.palette.primary.contrastText,\n textAlign: 'right',\n },\n gridItemText: {\n color: theme.palette.primary.text,\n fontSize: 12,\n lineHeight: 1,\n fontFamily: 'Lato, sans-serif',\n textAlign: 'right',\n width: '100%',\n verticalAlign: 'top',\n },\n textCenter: {\n textAlign: 'center',\n },\n})\n\nconst GridChart = ({ classes, chartData, color, maxPerHour }) => {\n const getDayData = (dayToAmount, dayName, time) => {\n let opacity = 3\n let amount = 0\n\n const dayHours = [...dayToAmount]\n const index = dayHours.findIndex(x => x.time === time)\n\n if (index !== -1 && dayHours[index] && dayHours[index].amount) {\n opacity = (dayHours[index].amount / maxPerHour) * 100\n amount = dayHours[index].amount\n }\n\n return { opacity, amount }\n }\n\n const groupByDays = (valuesArr, days) =>\n days.map(day => {\n const dayToAmount = valuesArr.filter(x => x.dayOfWeek === day)\n\n return {\n dayOfWeek: day,\n dayToAmount: [...dayToAmount],\n }\n })\n\n if (chartData) {\n const daysData = chartData.averageConversationByTimeOfDay\n\n return (\n
\n
\n
\n {dayModel.map((model, index) => (\n \n {index % 2 === 0 && (\n {model.time}\n )}\n
\n ))}\n
\n {groupByDays(daysData, days).map(day => {\n const dayShort = day.dayOfWeek.substr(0, 3).toLowerCase()\n\n return (\n
\n {\n \n }\n \n \n {dayShort.charAt(0).toUpperCase() + dayShort.slice(1)}\n
\n
\n
\n )\n })}\n \n \n )\n }\n\n return (\n
\n \n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(GridChart)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport uuid from 'uuid'\n\nconst styles = theme => ({\n gradientBarWrapper: {\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n },\n gradientBar: {\n display: 'flex',\n flexFlow: 'row nowrap',\n width: '100%',\n maxWidth: '340px',\n marginTop: 30,\n },\n gradientBarColumn: {\n width: '20%',\n marginRight: 5,\n '&:last-child': {\n marginRight: 0,\n },\n },\n gradientBarItem: {\n height: 10,\n width: '100%',\n marginBottom: 8,\n },\n gradientBarItemText: {\n color: '#616581',\n fontSize: 12,\n lineHeight: 1,\n fontFamily: 'Lato, sans-serif',\n textAlign: 'right',\n },\n})\n\nconst GradientBar = ({ color, step, classes, gridItemsCount }) => {\n if (!color) {\n return
\n }\n\n const { r, g, b } = color\n const colors = []\n\n for (let i = 0; i < gridItemsCount; i++) {\n colors.push({\n start: `rgba(${r}, ${g}, ${b}, ${0.2 * i})`,\n end: `rgba(${r}, ${g}, ${b}, ${0.2 * (i + 1)})`,\n })\n }\n\n return (\n
\n
\n {colors.map((color, index) => {\n return (\n
\n \n
\n {(index + 1) * step}\n
\n
\n )\n })}\n
\n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(GradientBar)\n","export const ByTimeOfDayHeaders = [\n { label: 'Day of week', key: 'dayOfWeek' },\n { label: 'Time', key: 'time' },\n { label: 'Amount', key: 'amount' },\n]\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport Loader from '../../../../uiKit/loaders/loader'\nimport DateControl from '../usersChart/DateControl'\nimport GridChart from './GridChart'\nimport GradientBar from './GradientBar'\nimport NoChartData from '../NoChartData'\nimport { loadPopularHoursStatistics } from '../../api/dashboard'\nimport { ByTimeOfDayHeaders } from '../../../../constants/byTimeOfDayHeaders'\n\nconst noDataText =\n 'You have no conversations yet. They will appear here after your chatbot will get first users'\nconst tooltipText = `This chart shows the average amount of users per hour\n who were interacting with the bot for the selected period.`\n\nconst color = { r: 22, g: 88, b: 243 }\nconst gridItemsCount = 5\n\nconst convertDataCsv = data => {\n const { averageConversationByTimeOfDay } = data\n return averageConversationByTimeOfDay\n}\n\nconst HourlyChart = ({\n botId,\n popularHoursStatistics: chartData,\n className,\n}) => (\n
\n \n {!chartData ? (\n \n \n
\n ) : chartData.averageConversationByTimeOfDay &&\n chartData.averageConversationByTimeOfDay.length ? (\n
\n \n \n
\n ) : (\n \n )}\n
\n)\n\nconst mapStateToProps = state => ({\n popularHoursStatistics: state.popularHoursStatistics,\n})\n\nexport default connect(mapStateToProps)(HourlyChart)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n topContainer: {\n fontSize: 36,\n color: '#3A3F62',\n margin: '40px 0 30px',\n fontWeight: 'bold',\n fontFamily: 'Lato, sans-serif',\n },\n})\n\nclass Headline extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n const { classes } = this.props\n return
{this.props.title}
\n }\n}\n\nHeadline.propTypes = {\n classes: PropTypes.object.isRequired,\n title: PropTypes.string.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(Headline))\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { withRouter } from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport 'react-chartjs-2'\nimport AreaChart from './components/usersChart/AreaChart'\nimport CircleChart from './components/CircleChart'\nimport HourlyChart from './components/hourlyChart'\nimport Headline from '../../uiKit/texts/Headline'\n\nimport { styles } from './components/Dashboard-styles'\n\nconst Dashboard = ({ classes, match }) => {\n const { botId } = match.params\n\n return (\n
\n \n
\n
\n \n
\n\n
\n \n \n
\n
\n
\n )\n}\n\nDashboard.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(Dashboard))\n","export const styles = theme => ({\n dashboard: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n minHeight: 'calc(100vh - 80px)',\n overflowX: 'hidden',\n overflowY: 'auto',\n paddingRight: 28,\n },\n charts: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n },\n chart: {\n padding: 40,\n backgroundColor: '#ffffff',\n borderRadius: '10px',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n width: '49%',\n justifyContent: 'flex-start',\n maxHeight: '100%',\n display: 'flex',\n flexDirection: 'column',\n '&:not(:first-child)': {\n marginLeft: 40,\n },\n '&>div:not(.DateControl)': {\n minHeight: 'calc(100% - 80px - 70px)',\n marginTop: '40px',\n },\n },\n chartFull: {\n width: '100%',\n },\n chartsRow: {\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n flexGrow: 1,\n margin: 'auto 0 40px',\n },\n '@global': {\n '.chartjs-size-monitor': {\n position: 'relative',\n maxHeight: '100%',\n },\n '.chartjs-render-monitor': {\n margin: '0 auto',\n maxWidth: '100%',\n },\n },\n})\n","import React from 'react'\n\nexport const TextIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n \n \n \n )\n}\n","import React from 'react'\n\nexport const ListIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n \n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const GalleryIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const AttachmentMessageIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const TypingIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n )\n}\n","/**\n * Created by Admin on 17.04.2018.\n */\nimport React from 'react'\n\nimport { TextIcon } from '../../../../uiKit/icons/TextIcon'\nimport { ListIcon } from '../../../../uiKit/icons/ListIcon'\nimport { GalleryIcon } from '../../../../uiKit/icons/GalleryIcon'\nimport { AttachmentMessageIcon } from '../../../../uiKit/icons/AttachmentMessageIcon'\nimport { TypingIcon } from '../../../../uiKit/icons/TypingIcon'\n\nimport {\n CONDITIONAL_REDIRECT_TYPE,\n RANDOM_REDIRECT_TYPE,\n SAVE_USER_INPUT_TYPE,\n SET_ATTRIBUTE_TYPE,\n TEXT_TYPE,\n USER_INPUT_TYPE,\n} from '../../constants/messageTypes'\n\nexport const availableDefaultMessages = [\n {\n name: 'Text',\n icon: ,\n iconLarge: ,\n description: 'Send a text in chat',\n newMessage: {\n texts: [''],\n type: TEXT_TYPE,\n },\n },\n {\n name: 'List',\n icon: ,\n iconLarge: ,\n type: 'list',\n description: 'Send a list of options in chat',\n newMessage: {\n attachment: {\n type: 'template',\n payload: {\n template_type: 'list',\n elements: [\n {\n title: '',\n subtitle: '',\n image_url: '',\n buttons: [],\n },\n {\n title: '',\n subtitle: '',\n image_url: '',\n buttons: [],\n },\n ],\n },\n },\n },\n iconName: 'TextIcon',\n },\n {\n name: 'Gallery',\n icon: ,\n iconLarge: ,\n type: 'gallery',\n description: 'Send a carousel of options in chat',\n newMessage: {\n attachment: {\n type: 'template',\n payload: {\n template_type: 'generic',\n elements: [\n {\n title: '',\n subtitle: '',\n image_url: '',\n buttons: [],\n },\n ],\n },\n },\n },\n iconName: 'TextIcon',\n },\n {\n name: 'Attachment',\n icon: ,\n iconLarge: ,\n type: 'attachment',\n description: 'Send an image, video or GIF in chat',\n newMessage: {\n attachment: {\n type: 'image',\n payload: {\n url: '',\n },\n },\n },\n iconName: 'TextIcon',\n },\n {\n name: 'Typing',\n type: 'typing',\n icon: ,\n iconLarge: ,\n description: 'Send typing indicator',\n newMessage: {\n senderAction: 'typing_on',\n time: 3,\n },\n iconName: 'TextIcon',\n },\n]\n\nexport const availableOtherMessages = [\n {\n name: 'Media template',\n newMessage: {\n attachment: {\n type: 'image',\n payload: {\n url: '',\n },\n },\n },\n },\n {\n name: 'User Input',\n type: USER_INPUT_TYPE,\n newMessage: {\n type: USER_INPUT_TYPE,\n parameter: '',\n next_atom: '',\n },\n },\n]\n\nexport const randomRedirectInitialState = {\n type: RANDOM_REDIRECT_TYPE,\n randomRedirect: {\n randomAtoms: [\n {\n atomName: '',\n number: 1,\n },\n ],\n sendFirstAtomOnlyOnce: false,\n },\n}\n\nexport const setAttributeMessage = {\n type: SET_ATTRIBUTE_TYPE,\n attributes: [\n {\n id: '',\n value: '',\n name: '',\n },\n ],\n}\n\nexport const saveUserInput = {\n type: SAVE_USER_INPUT_TYPE,\n saveUserInput: {\n validation: 'NONE',\n customValidationRegex: null,\n onValidationSuccessAtomId: null,\n onValidationFailAtomId: null,\n saveAsAttribute: null,\n },\n}\n\nexport const smartRedirect = {\n type: CONDITIONAL_REDIRECT_TYPE,\n conditionalRedirect: {\n conditionGroups: null,\n defaultRedirect: null,\n },\n}\n\nexport const conditionGroup = {\n expressions: [\n {\n attribute: null,\n operator: 'IS',\n value: null,\n },\n ],\n conjunction: 'AND',\n redirectTo: null,\n}\n","export const USER_INPUT_TYPE = 'USER_INPUT'\nexport const SET_ATTRIBUTE_TYPE = 'SET_ATTRIBUTE'\nexport const TEXT_TYPE = 'TEXT'\nexport const SAVE_USER_INPUT_TYPE = 'SAVE_USER_INPUT'\nexport const CONDITIONAL_REDIRECT_TYPE = 'CONDITIONAL_REDIRECT'\nexport const RANDOM_REDIRECT_TYPE = 'RANDOM_REDIRECT'\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport Modal from '@material-ui/core/Modal'\nimport Close from '@material-ui/icons/Close'\n\nexport function getModalStyle(style) {\n let top, left, overflowY\n\n if (style) {\n top = style.top || 50\n left = style.left || 50\n overflowY = style.overflowY || 'auto'\n } else {\n top = 50\n left = 50\n overflowY = 'auto'\n }\n\n return {\n top: `${top}%`,\n left: `${left}%`,\n transform: `translate(-${top}%, -${left}%)`,\n overflowY: `${overflowY}`,\n maxHeight: '90%',\n }\n}\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: '30px 50px 24px',\n outline: 'none',\n width: 600,\n borderRadius: 10,\n },\n title: {\n lineHeight: 'normal',\n fontSize: 18,\n color: theme.palette.primary.headerText,\n textAlign: 'center',\n },\n root: {\n width: '100%',\n backgroundColor: theme.palette.background.paper,\n },\n bot: {\n color: '#b0b0b0!important',\n },\n flex: {},\n container: {},\n menuButton: {},\n loader: {\n position: 'absolute',\n left: '50%',\n marginLeft: '-35px',\n top: '40%',\n zIndex: 9999,\n },\n buttonHolder: {\n marginTop: 40,\n display: 'flex',\n justifyContent: 'flex-end',\n },\n btnClose: {\n position: 'absolute',\n right: '24px',\n top: '24px',\n color: '#B0B2C0',\n cursor: 'pointer',\n },\n})\n\nclass CustomizedModal extends React.Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n render() {\n const { classes, style } = this.props\n return (\n
\n \n
\n \n {this.props.title && (\n

{this.props.title}

\n )}\n {this.props.children}\n
\n \n
\n )\n }\n}\n\nCustomizedModal.propTypes = {\n classes: PropTypes.object.isRequired,\n onClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n title: PropTypes.string,\n}\n\nexport default withStyles(styles)(CustomizedModal)\n","/* eslint-disable */\nimport React from 'react'\n\nexport const SetAttributeIcon = () => {\n\n return (\n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const SaveUserInputIcon = () => {\n\n return (\n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const TagIcon = () => {\n\n return (\n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const RedirectToAtomIcon = () => {\n\n return (\n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const RandomRedirectIcon = () => {\n\n return (\n \n \n \n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\n\nconst ActionModalItem = props => {\n const { classes, icon, name, description, onClick } = props\n\n return (\n
\n {icon}\n
\n

{name}

\n

{description}

\n
\n
\n )\n}\nActionModalItem.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(ActionModalItem)\n","export const styles = () => ({\n item: {\n display: 'flex',\n height: 80,\n padding: 10,\n cursor: 'pointer',\n borderRadius: 8,\n lineHeight: '14px',\n '&:hover': {\n backgroundColor: 'rgba(90, 152, 247, 0.04)',\n },\n },\n text: {\n marginLeft: 8,\n },\n messageName: {\n fontSize: 14,\n color: 'rgba(43, 44, 54, 1)',\n marginBottom: 4,\n },\n messageDescription: {\n color: 'rgba(97, 101, 129, 1)',\n margin: 0,\n fontSize: 14,\n lineHeight: '17px',\n },\n})\n","export const deepCopyFunction = inObject => {\n let value, key\n\n if (typeof inObject !== 'object' || inObject === null) {\n return inObject // Return the value if inObject is not an object\n }\n\n // Create an array or object to hold the values\n const outObject = Array.isArray(inObject) ? [] : {}\n\n for (key in inObject) {\n value = inObject[key]\n\n // Recursively (deep) copy for nested objects, including arrays\n outObject[key] = deepCopyFunction(value)\n }\n\n return outObject\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport Modal from '@material-ui/core/Modal'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport { getModalStyle } from '../../../../uiKit/Modal'\nimport Close from '@material-ui/icons/Close'\nimport {\n availableDefaultMessages,\n randomRedirectInitialState,\n saveUserInput,\n setAttributeMessage,\n smartRedirect,\n} from '../messages/AvailableMessages'\nimport uuidv1 from 'uuid/v1'\nimport { SetAttributeIcon } from '../../../../uiKit/icons/SetAttributeIcon'\nimport { SaveUserInputIcon } from '../../../../uiKit/icons/SaveUserInputIcon'\nimport { TagIcon } from '../../../../uiKit/icons/TagIcon'\nimport { RedirectToAtomIcon } from '../../../../uiKit/icons/RedirectToAtomIcon'\nimport { RandomRedirectIcon } from '../../../../uiKit/icons/RandomRedirectIcon'\nimport ActionModalItem from '../ActionModalItem/ActionModalItem'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport { alertError } from '../../../../api'\nimport {\n CONDITIONAL_REDIRECT_TYPE,\n RANDOM_REDIRECT_TYPE,\n SAVE_USER_INPUT_TYPE,\n SET_ATTRIBUTE_TYPE,\n} from '../../constants/messageTypes'\n\nconst AddActionModal = props => {\n const { classes, open, atom, updateAtom, onClose } = props\n\n const handleCreateNewMessage = newMessage => {\n const newAtom = { ...atom }\n if (!newAtom.messages) newAtom.messages = []\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push({ ...newMessage })\n updateAtom(newAtom)\n onClose()\n }\n\n const addSetAttribute = () => {\n const newAtom = { ...atom }\n if (!newAtom.messages) newAtom.messages = []\n if (\n !newAtom.messages.some(message => message.type === SET_ATTRIBUTE_TYPE)\n ) {\n const newMessage = deepCopyFunction(setAttributeMessage)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push({ ...newMessage })\n updateAtom(newAtom)\n }\n onClose()\n }\n\n const addSaveUserInput = () => {\n const newAtom = { ...atom }\n if (!newAtom.messages) newAtom.messages = []\n if (\n !newAtom.messages.some(message => message.type === SAVE_USER_INPUT_TYPE)\n ) {\n const newMessage = deepCopyFunction(saveUserInput)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push(JSON.parse(JSON.stringify(newMessage)))\n updateAtom(newAtom)\n }\n onClose()\n }\n\n const addTags = () => {\n const newAtom = { ...atom }\n newAtom.tags = []\n updateAtom(newAtom)\n onClose()\n }\n\n const addSmartRedirect = () => {\n const newAtom = { ...atom }\n if (!newAtom.messages) newAtom.messages = []\n if (\n !newAtom.messages.some(\n message => message.type === CONDITIONAL_REDIRECT_TYPE,\n )\n ) {\n const newMessage = deepCopyFunction(smartRedirect)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push(JSON.parse(JSON.stringify(newMessage)))\n updateAtom(newAtom)\n }\n onClose()\n }\n\n const addRandomRedirect = () => {\n const newAtom = deepCopyFunction(atom)\n\n if (!newAtom.messages) newAtom.messages = []\n if (\n !newAtom.messages.some(\n message =>\n message.type === RANDOM_REDIRECT_TYPE ||\n message.type === CONDITIONAL_REDIRECT_TYPE ||\n message.type === SAVE_USER_INPUT_TYPE,\n )\n ) {\n const newMessage = deepCopyFunction(randomRedirectInitialState)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push(deepCopyFunction(newMessage))\n updateAtom(newAtom)\n } else {\n alertError(\n 'Atom can contain only one of these elements: Smart Redirect atom, Random redirect or Save User Input',\n )\n }\n onClose()\n }\n\n return (\n \n
\n
\n \n

Add an action

\n
\n
\n
\n {availableDefaultMessages.map((message, index) => (\n handleCreateNewMessage(message.newMessage)}\n />\n ))}\n
\n
\n }\n name={'Set attribute'}\n description={'Set a value for an attribute'}\n onClick={addSetAttribute}\n />\n }\n name={'Save user input'}\n description={\n 'Set validation and save users responses to user attributes'\n }\n onClick={addSaveUserInput}\n />\n }\n name={'Add tags'}\n description={'Add tags to users'}\n onClick={addTags}\n />\n }\n name={'Smart redirect'}\n description={'Redirects user to another atom'}\n onClick={addSmartRedirect}\n />\n }\n name={'Random redirect'}\n description={'Randomly redirect user to another atom'}\n onClick={addRandomRedirect}\n />\n
\n
\n
\n \n )\n}\nAddActionModal.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(AddActionModal)\n","export const styles = theme => ({\n paper: {\n position: 'absolute',\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n outline: 'none',\n width: 600,\n borderRadius: 10,\n padding: 40,\n },\n titleWrap: {\n display: 'flex',\n },\n title: {\n lineHeight: 'normal',\n fontSize: 24,\n color: theme.palette.primary.headerText,\n margin: '0px 8px 32px 0px',\n },\n btnClose: {\n position: 'absolute',\n right: '24px',\n top: '24px',\n color: '#B0B2C0',\n cursor: 'pointer',\n },\n body: {\n display: 'flex',\n gap: '32px',\n },\n section: {\n width: '50%',\n display: 'block',\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport uuidv1 from 'uuid/v1'\n\nimport { availableDefaultMessages } from '../messages/AvailableMessages'\nimport { OtherIcon } from '../../../../uiKit/icons/Icons'\nimport AddActionModal from '../AddActionModal/AddActionModal'\n\nimport { styles } from './styles'\n\nconst NewMessage = props => {\n const { classes, atom, updateAtom } = props\n const [open, setOpen] = useState(false)\n\n const handleCreateNewMessage = newMessage => {\n const newAtom = { ...atom }\n\n if (!newAtom.messages) newAtom.messages = []\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push({ ...newMessage })\n\n updateAtom(newAtom)\n }\n\n return (\n <>\n
\n {availableDefaultMessages.map((message, index) => (\n handleCreateNewMessage(message.newMessage)}>\n {message.icon}\n
{message.name}
\n
\n ))}\n\n
setOpen(true)}>\n \n
Other
\n
\n \n\n setOpen(false)}\n />\n \n )\n}\nNewMessage.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(NewMessage)\n","export const styles = () => ({\n container: {\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n },\n listItem: {\n border: '1px solid #f3f3f3',\n width: 94,\n margin: 0,\n padding: '18px 10px 14px',\n boxSizing: 'border-box',\n textAlign: 'center',\n cursor: 'pointer',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'space-between',\n color: '#3A3F62',\n fontSize: 12,\n '&:hover': {\n background: '#5A98F7',\n color: 'white',\n border: '1px solid #5A98F7',\n },\n '&:hover svg path': {\n stroke: 'white',\n },\n '&:first-child': {\n borderBottomLeftRadius: 10,\n borderTopLeftRadius: 10,\n },\n '&:last-child': {\n borderBottomRightRadius: 10,\n borderTopRightRadius: 10,\n },\n },\n})\n","import { store } from '../../../index'\n\nexport const CLEAR_ATOM = 'CLEAR_ATOM'\nexport const SAVE_ATOM = 'SAVE_ATOM'\n\nexport const clearAtom = atom => {\n store.dispatch({\n type: CLEAR_ATOM,\n atom,\n })\n}\n\nexport const editAtom = atom => {\n store.dispatch({\n type: SAVE_ATOM,\n atom,\n })\n}\n","import { addNewFlow, saveFlows } from '../actions/flows'\nimport {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL } from '../../../configs'\nimport {FLOW_COMMENTS_SIZE} from \"../../../constants/supportMessagesSize\"\n\nexport function getFlows(botId, showFeedback) {\n const url = showFeedback\n ? BASE_URL + '/bot/' + botId + '/flow'.addQueryStringParameter('showFeedback', showFeedback)\n : BASE_URL + '/bot/' + botId + '/flow';\n fetch(url, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveFlows(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function createNewFlow(botId, flow) {\n fetch(BASE_URL + '/bot/' + botId + '/flow', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(flow),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Flow is created successfully.')\n addNewFlow(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function deleteFlow(flowId, botId, callback) {\n fetch(BASE_URL + '/bot/' + botId + '/flow/' + flowId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Flow is deleted successfully.')\n getFlows(botId)\n callback()\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function changeFlowStatus(flowId, botId, disable) {\n fetch(BASE_URL + '/flow/' + flowId + '?disable=' + disable, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Flow status is changed successfully.')\n getFlows(botId)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function getFlowCommentsAmount(botId, flowId, fromDate, toDate) {\n return fetch(`${BASE_URL}/bot/${botId}/flow/${flowId}/feedback?from=${fromDate.format('YYYY-MM-DD')}&to=${toDate.format('YYYY-MM-DD')}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: \"GET\"\n }).then((response) => logoutOnRequestOrResponseJson(response))\n .catch(() => alertError(\"Fail. Try it later\"));\n}\n\nexport function getFlowCommentsList(botId, flowId, fromDate, toDate, page) {\n return fetch(`${BASE_URL}/bot/${botId}/flow/${flowId}/feedback/comments?page=${page}&size=${FLOW_COMMENTS_SIZE}&from=${fromDate.format('YYYY-MM-DD')}&to=${toDate.format('YYYY-MM-DD')}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: \"GET\"\n }).then((response) => logoutOnRequestOrResponseJson(response))\n .catch(() => alertError(\"Fail. Try it later\"));\n}\n","import { store } from '../../../index'\n\nexport const SAVE_FLOWS = 'SAVE_FLOWS'\nexport const ADD_NEW_FLOW = 'ADD_NEW_FLOW'\n\nexport const saveFlows = flows => {\n store.dispatch({\n type: SAVE_FLOWS,\n flows,\n })\n}\n\nexport const addNewFlow = flow => {\n store.dispatch({\n type: ADD_NEW_FLOW,\n flow,\n })\n}\n","import {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { setSearchAtoms } from '../actions/searchAtoms'\nimport { editAtom } from '../actions/atom'\nimport { saveAtoms } from '../actions/atoms'\nimport { getFlows } from './flow'\nimport { BASE_URL } from '../../../configs'\n\nexport function createNewAtom(atom, botId, selectFunction) {\n fetch(BASE_URL + '/atom', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(atom),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Atom is created successfully.')\n getFlows(botId)\n // selectFunction(json.id);\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function saveAtom(atom, botId, language, callback) {\n fetch(BASE_URL + '/atom?language=' + language, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(atom),\n })\n .then(response => {\n if (response.status === 400) {\n response.text().then(text => {\n const res = JSON.parse(text)\n alertError(res.message)\n })\n return\n }\n logoutOnRequestOrResponseJson(response).then(json => {\n alertSuccess('Atom is updated successfully.')\n editAtom(json)\n getFlows(botId)\n callback(json)\n })\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function getAtom(atomId, language, callback) {\n fetch(BASE_URL + '/atom/' + atomId + '?language=' + language, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n if (callback) callback(json)\n editAtom(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function getAtoms(botId) {\n fetch(BASE_URL + '/atom/all/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveAtoms(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function deleteAtom(atomId, botId, callback) {\n fetch(BASE_URL + '/atom/' + atomId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n getFlows(botId)\n alertSuccess('Atom is deleted succesfully')\n callback()\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport const searchAtomsByContent = searchQuery => {\n fetch(BASE_URL + `/atom/search?query=${searchQuery}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(logoutOnRequestOrResponseJson)\n .then(result => {\n setSearchAtoms(result)\n })\n .catch(_ => alertError('Fail. Try later'))\n}\n","import { store } from '../../../index'\n\nexport const SET_SEARCH_ATOMS = 'SET_SEARCH_ATOMS'\n\nexport const setSearchAtoms = (searchAtoms = []) => {\n store.dispatch({\n type: SET_SEARCH_ATOMS,\n searchAtoms,\n })\n}\n","/**\n * Created by Admin on 05.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Modal from '@material-ui/core/Modal'\nimport Button from '@material-ui/core/Button'\nimport {\n availableDefaultMessages,\n availableOtherMessages,\n} from './AvailableMessages'\nimport { OtherIcon } from '../../../../uiKit/icons/Icons.js'\nimport AddActionModal from '../AddActionModal/AddActionModal'\nimport {\n SAVE_USER_INPUT_TYPE,\n SET_ATTRIBUTE_TYPE,\n} from '../../constants/messageTypes'\n\nexport function getModalStyle() {\n const top = 50\n const left = 50\n\n return {\n maxHeight: '95%',\n maxWidth: '95%',\n top: `${top}%`,\n left: `${left}%`,\n transform: `translate(-${top}%, -${left}%)`,\n overflowY: 'auto',\n width: '600px',\n padding: '40px 24px',\n color: '#3A3F62',\n }\n}\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: theme.spacing.unit * 60,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n fab: {\n position: 'absolute',\n bottom: 25,\n right: 50,\n backgroundColor: '#2196f3',\n color: '#fff',\n },\n root: {\n width: '100%',\n maxWidth: 360,\n },\n listBoxContainer: {\n width: '100%',\n overflowX: 'auto',\n },\n listBox: {\n display: 'flex',\n borderRadius: 10,\n width: 'max-content',\n color: '#7f7f7f',\n fontSize: 12,\n margin: '0 20px 45px',\n },\n listItem: {\n border: '1px solid #f3f3f3',\n width: 94,\n margin: 0,\n padding: '18px 10px 14px',\n boxSizing: 'border-box',\n textAlign: 'center',\n cursor: 'pointer',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'space-between',\n color: '#3A3F62',\n },\n '@global': {\n '.itemAtom:hover': {\n background: '#5A98F7',\n color: 'white',\n border: '1px solid #5A98F7',\n },\n '.itemAtom:hover svg path': {\n stroke: 'white',\n },\n '.itemAtom:first-child': {\n borderBottomLeftRadius: 10,\n borderTopLeftRadius: 10,\n },\n '.itemAtom:last-child': {\n borderBottomRightRadius: 10,\n borderTopRightRadius: 10,\n },\n },\n otherItem: {\n padding: '8px 11px',\n fontSize: 12,\n margin: 10,\n cursor: 'pointer',\n },\n})\n\nclass NewMessage extends React.Component {\n state = {\n open: false,\n anchorEl: null,\n selectedIndex: 0,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({\n open: false,\n quickReplies: [],\n })\n }\n\n closeAndAddMessage(newMessage) {\n this.props.createNewMessage(newMessage)\n this.setState({\n open: false,\n })\n }\n\n addRedirect() {\n this.props.addRedirect()\n this.setState({\n open: false,\n })\n }\n\n addTags() {\n this.props.addTags()\n this.setState({\n open: false,\n })\n }\n\n addRandomRedirect() {\n this.props.addRandomRedirect()\n this.setState({\n open: false,\n })\n }\n\n addSetAttribute() {\n this.props.addSetAttribute()\n this.setState({\n open: false,\n })\n }\n\n addSaveUserInput() {\n this.props.addSaveUserInput()\n this.setState({\n open: false,\n })\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n
\n {availableDefaultMessages.map((message, index) => (\n this.props.createNewMessage(message.newMessage)}>\n {message.icon}\n
{message.name}
\n
\n ))}\n \n \n
Other
\n
\n \n \n \n
\n
\n {availableOtherMessages.map((message, index) => (\n this.closeAndAddMessage(message.newMessage)}>\n
{message.name}
\n
\n ))}\n this.addSetAttribute()}>\n
Set attribute
\n
\n this.addRedirect()}>\n
Redirect to atom
\n \n this.addTags()}>\n
Tags
\n \n this.addRandomRedirect()}>\n
Random Redirect
\n \n this.addSaveUserInput()}>\n
Save User Input
\n \n \n\n \n Close\n \n \n \n \n )\n }\n}\n\nNewMessage.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst NewMessageExport = withStyles(styles)(NewMessage)\n\nexport default NewMessageExport\n","import { store } from '../../../index'\n\nexport const ADD_CONTEXT = 'ADD_CONTEXT'\nexport const DELETE_CONTEXT = 'DELETE_CONTEXT'\nexport const SAVE_CONTEXTS = 'SAVE_CONTEXTS'\nexport const UPDATE_CONTEXT = 'UPDATE_CONTEXT'\nexport const CLEAR_CONTEXTS = 'CLEAR_CONTEXTS'\n\nexport const addContext = context => {\n store.dispatch({\n type: ADD_CONTEXT,\n context,\n })\n}\n\nexport const removeContext = contextId => {\n store.dispatch({\n type: DELETE_CONTEXT,\n contextId,\n })\n}\n\nexport const saveContexts = contexts => {\n store.dispatch({\n type: SAVE_CONTEXTS,\n contexts,\n })\n}\n\nexport const updateExistedContext = context => {\n store.dispatch({\n type: UPDATE_CONTEXT,\n context,\n })\n}\n\nexport const clearContexts = () => {\n store.dispatch({\n type: CLEAR_CONTEXTS,\n })\n}\n","import {\n saveContextsSize,\n addContextsSize,\n deleteOldContexstSize,\n} from '../actions/contextSize'\nimport { BASE_URL } from '../../../configs'\nimport {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api/index'\nimport {\n addContext,\n removeContext,\n saveContexts,\n updateExistedContext,\n} from '../actions/contexts'\n\nexport function getContextsPages(botId, page) {\n return fetch(BASE_URL + '/context/bot/' + botId + '?page=' + page, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveContextsSize(json.contextSize)\n saveContexts(json.contextDTOList)\n return json.contextDTOList\n })\n }\n response.text().then(alertSuccess)\n })\n .catch(e => {\n alertError(\n 'Sorry but something going wrong at getting triggers please ping support!',\n )\n })\n}\n\nexport function getAtomContexts(atomId, self) {\n fetch(BASE_URL + '/context/atom/' + atomId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(logoutOnRequestOrResponseJson)\n .then(saveContexts)\n .catch(function(e) {\n alertError(\n 'Sorry but something going wrong at getting triggers please ping support!',\n )\n })\n}\n\nexport function getIntentContexts(intentId) {\n fetch(BASE_URL + '/context/intent/' + intentId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveContexts(json)\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting triggers please ping support!',\n )\n })\n}\n\nexport function getContext(contextId, self) {\n fetch(BASE_URL + '/context/' + contextId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n self.setState({\n context: json,\n })\n return json\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting trigger please ping support!',\n )\n })\n}\n\nexport function createNewContext(context, botId, contextSize) {\n fetch(BASE_URL + '/context/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(context),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Trigger is created successfully.')\n addContextsSize(contextSize)\n addContext(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateContext(context, botId) {\n fetch(BASE_URL + '/context/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(context),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Trigger is updated successfully.')\n updateExistedContext(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function deleteContext(contextId, contextSize) {\n fetch(BASE_URL + '/context/' + contextId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Trigger is deleted successfully.')\n // todo: check json response\n deleteOldContexstSize(contextSize)\n removeContext(contextId)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_CONTEXTS_SIZE = 'SAVE_CONTEXTS_SIZE'\nexport const ADD_CONTEXTS_SIZE = 'ADD_CONTEXTS_SIZE'\nexport const UPDATE_CONTEXTS_SIZE = 'UPDATE_CONTEXTS_SIZE'\n\nexport const saveContextsSize = contextSize => {\n store.dispatch({\n type: SAVE_CONTEXTS_SIZE,\n contextSize,\n })\n}\n\nexport const addContextsSize = contextSize => {\n store.dispatch({\n type: ADD_CONTEXTS_SIZE,\n contextSize,\n })\n}\n\nexport const deleteOldContexstSize = contextSize => {\n store.dispatch({\n type: UPDATE_CONTEXTS_SIZE,\n contextSize,\n })\n}\n","/**\n * Created by Admin on 08.02.2018.\n */\nimport React, { Component } from 'react'\nimport Select from 'react-select'\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\nimport * as ReactDOM from 'react-dom'\n\nconst styles = theme => ({\n '@global': {\n '.drop-up .Select-menu-outer': {\n bottom: '100% !important',\n top: 'auto',\n marginTop: 0,\n marginBottom: -1,\n },\n },\n})\n\nclass States extends Component {\n state = {\n states: [],\n showHardcoded: true,\n }\n\n handleChangeState(option) {\n this.setState({\n selectedOption: option.value,\n })\n let id = this.state.states.find(item => item.value === option.value)\n\n if (option != null && id !== undefined) {\n id = this.state.states.find(item => item.value === option.value).id\n } else {\n id = null\n }\n\n this.props.payload(option.value, id)\n }\n\n componentDidMount() {\n const states = []\n if (this.props.timezone != true) {\n this.props.flows &&\n this.props.flows.forEach(flow => {\n flow.atoms != null &&\n flow.atoms.forEach(atom => {\n states.push({\n label: atom.name,\n value: atom.name,\n id: atom.id,\n })\n })\n })\n }\n\n this.setState({\n states,\n selectedOption: this.props.value\n ? { value: this.props.value, label: this.props.value }\n : undefined,\n })\n\n if (this.props.showHardcoded != null) {\n this.setState({ showHardcoded: this.props.showHardcoded })\n }\n }\n\n componentWillReceiveProps(nextProps) {\n const states = []\n nextProps.flows &&\n nextProps.flows.forEach(flow => {\n flow.atoms != null &&\n flow.atoms.forEach(atom => {\n if (!atom.isHardCoded || this.state.showHardcoded)\n states.push({\n label: atom.name,\n value: atom.name,\n id: atom.id,\n })\n })\n })\n this.setState({\n states,\n selectedOption: nextProps.value\n ? { value: nextProps.value, label: nextProps.value }\n : undefined,\n })\n }\n\n render() {\n const { selectValue } = this.state\n const { holderStyle, isBackToBot } = this.props\n const positionValue =\n this.select != null &&\n ReactDOM.findDOMNode(this.select).getBoundingClientRect().top > 500\n return (\n
\n {\n this.select = node\n }}\n simpleValue\n menuPlacement={`${positionValue ? 'top' : 'bottom'}`}\n clearable={true}\n placeholder={isBackToBot ? 'Without any messages' : 'Select'}\n style={{\n borderRadius: 10,\n width: '100%',\n fontFamily: 'Lato, sans-serif',\n height: 42.4,\n border:\n (typeof selectValue === 'undefined' || selectValue == null) &&\n this.props.isCurrent\n ? '1px solid #FF624C'\n : '1px solid #ccc',\n }}\n value={this.state.selectedOption}\n name=\"selected-state\"\n onChange={event => this.handleChangeState(event)}\n searchable={true}\n />\n
\n )\n }\n}\n\nStates.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n flows: state.flows,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(States))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\nimport { deleteContext } from '../api/context'\nimport { TrashIcon } from '../../../uiKit/icons/Icons.js'\nimport {\n Dialog,\n DialogActions,\n DialogTitle,\n IconButton,\n Slide,\n} from '@material-ui/core'\n\nconst styles = theme => ({\n paper: {\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n flow: {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n button: {\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n margin: '40px 0',\n color: 'white',\n fontFamily: 'Lato, sans-serif',\n },\n '@global': {\n \"[class*='MuiDialog-paperWidthSm']\": {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n '.buttonHover:hover': {\n background: 'white',\n color: '#1658F3',\n },\n '.buttonHover1:hover': {\n color: 'white',\n background: '#1658F3',\n },\n '.buttonHover1': {\n background: 'white',\n color: '#1658F3',\n },\n },\n})\n\nfunction Transition(props) {\n return \n}\n\nclass DeleteTrigger extends React.Component {\n state = {\n open: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n deleteTrigger() {\n if (this.props.newContext) {\n this.props.changeNewContext()\n } else {\n deleteContext(this.props.triggerId, this.props.contextSize)\n this.setState({ open: false })\n }\n }\n\n render() {\n const { classes } = this.props\n\n return (\n \n this.handleOpen()}>\n \n \n \n \n {'Are you sure you want to delete this trigger?'}\n \n \n this.deleteTrigger()}\n color=\"primary\">\n Delete\n \n \n Cancel\n \n \n \n \n )\n }\n}\n\nDeleteTrigger.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles)(DeleteTrigger)\n","import { store } from '../../../index'\n\nexport const SAVE_NLP_REQUESTS = 'SAVE_NLP_REQUESTS'\nexport const UPDATE_NLP_REQUEST = 'UPDATE_NLP_REQUEST'\nexport const CLEAR_NLP_REQUESTS = 'CLEAR_NLP_REQUESTS'\n\nexport const saveNlpRequests = requests => {\n store.dispatch({\n type: SAVE_NLP_REQUESTS,\n requests,\n })\n}\n\nexport const updateTrainedNlpRequest = request => {\n store.dispatch({\n type: UPDATE_NLP_REQUEST,\n request,\n })\n}\n\nexport const clearNlpRequests = () => {\n store.dispatch({\n type: CLEAR_NLP_REQUESTS,\n })\n}\n","import { store } from '../../../index'\n\nexport const ADD_INTENT = 'ADD_INTENT'\nexport const CLEAR_INTENTS = 'CLEAR_INTENTS'\nexport const DELETE_INTENT = 'DELETE_INTENT'\nexport const SAVE_INTENTS = 'SAVE_INTENTS'\nexport const UPDATE_INTENT = 'UPDATE_INTENT'\n\nexport const addIntent = intent => {\n store.dispatch({\n type: ADD_INTENT,\n intent,\n })\n}\n\nexport const clearIntents = () => {\n store.dispatch({\n type: CLEAR_INTENTS,\n })\n}\n\nexport const deleteOldIntent = intentId => {\n store.dispatch({\n type: DELETE_INTENT,\n intentId,\n })\n}\n\nexport const saveIntents = intents => {\n store.dispatch({\n type: SAVE_INTENTS,\n intents,\n })\n}\n\nexport const updateExistedIntent = intent => {\n store.dispatch({\n type: UPDATE_INTENT,\n intent,\n })\n}\n","import {\n saveNlpRequests,\n updateTrainedNlpRequest,\n} from '../actions/nlpRequests'\nimport {\n addIntent,\n deleteOldIntent,\n saveIntents,\n updateExistedIntent,\n} from '../actions/intents'\nimport {\n saveIntentsSize,\n addIntentsSize,\n deleteOldIntentsSize,\n} from '../actions/intentsSize'\nimport {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api/'\nimport { BASE_URL } from '../../../configs'\n\nexport function getIntents(botId, faq) {\n fetch(BASE_URL + '/intent/bot/' + botId + '/faq/' + faq, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveIntents(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport function getPagingIntents(botId, faq, page, query) {\n return fetch(\n BASE_URL +\n '/intent/bot/' +\n botId +\n '/faq/' +\n faq +\n '/' +\n page +\n '/search?query=' +\n query,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveIntentsSize(json.intentsSize)\n saveIntents(json.intentDTOList)\n return json.intentDTOList\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport function getAllPagingIntents(botId, query) {\n fetch(BASE_URL + '/intent/bot/' + botId + '?query=' + query, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveIntents(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport function getAllPagingIntentsForTriggers(botId, query) {\n fetch(\n BASE_URL + '/intent/bot/' + botId + '?includeFAQ=false&query=' + query,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveIntents(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport function getAllIntents(botId) {\n fetch(BASE_URL + '/intent/bot/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveIntents(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport function getTrainingData(botId, page, size, shortName) {\n fetch(\n BASE_URL +\n '/bot/' +\n botId +\n '/training' +\n '?page=' +\n page +\n '&size=' +\n size +\n '&shortName=' +\n shortName,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveNlpRequests(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting triggers please ping support!',\n 5000,\n )\n })\n}\n\nexport function getHistoryData(botId, page, size, shortName) {\n fetch(\n `${BASE_URL}/bot/${botId}/training/all?page=${page}&size=${size}&shortName=${shortName}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n saveNlpRequests(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting training data please ping support!',\n )\n })\n}\n\nexport function getIntentUserSays(intentId) {\n return fetch(BASE_URL + '/intent/' + intentId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n if (response.status === 400) {\n response.text().then(text => alertSuccess(text))\n return\n }\n return logoutOnRequestOrResponseJson(response)\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intent please ping support!',\n )\n })\n}\n\nexport function createNewIntent(intent, intentsSize) {\n fetch(BASE_URL + '/intent', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(intent),\n })\n .then(response => {\n if (!response.ok) {\n throw response.json()\n }\n return logoutOnRequestOrResponseJson(response)\n })\n .then(json => {\n alertSuccess('Intent is created successfully.')\n addIntent(json)\n addIntentsSize(intentsSize)\n })\n .catch(function(error) {\n error.then(err => {\n alertError(`Create intent error: ${err.message}`, 10000)\n })\n })\n}\n\nexport function trainIntent(request, botId) {\n fetch(BASE_URL + '/bot/' + botId + '/training/', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(request),\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n updateTrainedNlpRequest(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateIntent(intent, callback) {\n fetch(BASE_URL + '/intent', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(intent),\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n alertSuccess('Intent is updated successfully.')\n updateExistedIntent(json)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function deleteIntent(intentId, intentsSize) {\n fetch(BASE_URL + '/intent/' + intentId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n .then(response => {\n if (response.status === 200) {\n return logoutOnRequestOrResponseJson(response).then(json => {\n alertSuccess('Intent is deleted successfully.')\n deleteOldIntent(intentId)\n deleteOldIntentsSize(intentsSize)\n })\n }\n response.text().then(text => alertSuccess(text))\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n","import { store } from '../../../index'\n\nexport const SAVE_INTENTS_SIZE = 'SAVE_INTENTS_SIZE'\nexport const ADD_INTENT_SIZE = 'ADD_INTENT_SIZE'\nexport const UPDATE_INTENTS_SIZE = 'UPDATE_INTENTS_SIZE'\n\nexport const saveIntentsSize = intentsSize => {\n store.dispatch({\n type: SAVE_INTENTS_SIZE,\n intentsSize,\n })\n}\n\nexport const addIntentsSize = intentsSize => {\n store.dispatch({\n type: ADD_INTENT_SIZE,\n intentsSize,\n })\n}\n\nexport const deleteOldIntentsSize = intentsSize => {\n store.dispatch({\n type: UPDATE_INTENTS_SIZE,\n intentsSize,\n })\n}\n","/**\n * Created by Admin on 08.02.2018.\n */\nimport React, { Component } from 'react'\nimport Select from 'react-select'\nimport { connect } from 'react-redux'\nimport { withStyles } from '@material-ui/core/styles'\nimport { getAllPagingIntents } from '../api/nlp'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({})\n\nclass IntentsSelect extends Component {\n state = {\n states: [],\n }\n\n handleChangeState(value) {\n this.setState({\n selectedOption: value,\n })\n this.props.payload(value.value)\n }\n\n componentWillMount() {\n const intents = []\n this.props.intents &&\n this.props.intents.forEach(intent => {\n intents.push({\n label: intent.name,\n value: intent.name,\n })\n })\n if (this.props.value && this.props.value.includes('smalltalk.')) {\n intents.push({\n label: this.props.value,\n value: this.props.value,\n })\n }\n this.setState({\n intents,\n selectedOption: this.props.value\n ? { value: this.props.value, label: this.props.value }\n : undefined,\n })\n }\n\n componentWillReceiveProps(nextProps) {\n const intents = []\n nextProps.intents &&\n nextProps.intents.forEach(intent => {\n intents.push({\n label: intent.name,\n value: intent.name,\n })\n })\n if (this.props.value && this.props.value.includes('smalltalk.')) {\n intents.push({\n label: this.props.value,\n value: this.props.value,\n })\n }\n this.setState({\n intents,\n selectedOption: nextProps.value\n ? { value: nextProps.value, label: nextProps.value }\n : undefined,\n })\n }\n\n handleInputChange(value, action) {\n if (action.action === 'input-change') {\n getAllPagingIntents(this.props.match.params.botId, value)\n }\n }\n\n render() {\n const addDisabled = element => {\n element.disabled = element.label.includes('smalltalk.')\n return element\n }\n\n const intentsModified = this.state.intents.map(addDisabled)\n return (\n
\n {\n this.select = ref\n }}\n onBlurResetsInput={false}\n onSelectResetsInput={false}\n options={intentsModified}\n className={this.state.selectedOption == undefined ? 'error' : ''}\n simpleValue\n style={{\n borderRadius: 10,\n fontFamily: 'Lato, sans-serif',\n height: 45,\n border:\n this.state.selectedOption == undefined\n ? '1px solid #FF624C'\n : '1px solid #ccc',\n }}\n value={this.state.selectedOption}\n name=\"selected-state\"\n onChange={value => this.handleChangeState(value)}\n searchable={true}\n onInputChange={(value, action) =>\n this.handleInputChange(value, action)\n }\n />\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n intents: state.intents,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(IntentsSelect)),\n)\n","/**\n * Created by Admin on 08.02.2018.\n */\nimport React, { Component } from 'react'\nimport { createNewContext, updateContext } from '../api/context'\nimport States from '../../flowBuilder/components/States'\nimport DeleteTrigger from './DeleteTrigger'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles/index'\nimport { withRouter } from 'react-router-dom'\nimport Intents from './IntentsSelect'\nimport { getAllPagingIntentsForTriggers } from '../api/nlp'\n\nconst styles = theme => ({\n mainSelected: {\n display: 'flex',\n margin: '20px 0',\n width: '100%',\n justifyContent: 'space-between',\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n position: 'relative',\n },\n selectItem: {\n flexBasis: '33%',\n padding: 24,\n borderRight: '1px solid #EBEBEF',\n },\n desc: {\n fontWeight: 'bold',\n fontSize: 14,\n color: '#3A3F62',\n },\n states: {\n color: '#1658F3',\n fontSize: 14,\n },\n '@global': {\n '[class*=\"TriggerItem-mainSelected\" class*=\"TriggerItem-selectItem\":last-child ]':\n {\n borderRight: 0,\n },\n '.Select.has-value.Select--single > .Select-control .Select-value .Select-value-label':\n {\n color: '#1658F3 !important',\n fontSize: 14,\n },\n '.trashIcon': {\n position: 'absolute',\n right: -19,\n display: 'none',\n marginTop: -20,\n },\n '.selected-trigger:hover .trashIcon': {\n display: 'block',\n },\n },\n})\n\nclass TriggerItem extends Component {\n state = {\n triggerAtomId: this.props.modalTriggerId || null,\n context: null,\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { context } = nextProps\n\n if (!prevState.context && context) {\n return { context }\n }\n\n return null\n }\n\n handleChange = (name, value) => {\n if (name === 'previousAtom' || value !== null) {\n const context = JSON.parse(JSON.stringify(this.state.context))\n context[name] = value\n this.setState({ context: context }, () => {\n if (context.currentAtom !== null && context.intent !== null) {\n if (this.props.newContext) {\n createNewContext(\n context,\n this.props.match.params.botId,\n this.props.contextSize,\n )\n this.props.changeNewContext()\n } else {\n updateContext(context, this.props.match.params.botId)\n }\n }\n })\n }\n }\n customSeartch = e => {\n getAllPagingIntentsForTriggers(this.props.match.params.botId, e)\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n {this.state.context && (\n
\n
\n

Current Atom

\n this.handleChange('previousAtom', value)}\n value={this.state.context.previousAtom}\n />\n
\n
\n

Intent

\n this.handleChange('intent', value)}\n customSeartch={value => this.customSeartch(value)}\n value={this.state.context.intent}\n />\n
\n
\n

New Atom

\n this.handleChange('currentAtom', value)}\n value={this.state.context.currentAtom}\n />\n
\n \n
\n )}\n
\n )\n }\n}\n\nTriggerItem.propTypes = {\n classes: PropTypes.object.isRequired,\n}\nexport default withRouter(withStyles(styles)(TriggerItem))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { Button } from '@material-ui/core'\nimport { getModalStyle } from '../../flowBuilder/components/messages/NewMessage'\nimport { withRouter } from 'react-router-dom'\nimport {\n createNewContext,\n getAtomContexts,\n updateContext,\n} from '../api/context'\nimport { connect } from 'react-redux'\nimport TriggerItem from './TriggerItem'\nimport { getIntents } from '../api/nlp'\nimport { PlusIcon } from '../../../uiKit/icons/Icons'\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: '60%',\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n mainSelected: {\n display: 'flex',\n margin: '20px 0',\n width: '100%',\n justifyContent: 'space-between',\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n },\n selectItem: {\n flexBasis: '30%',\n padding: 24,\n },\n title: {\n textAlign: 'center',\n fontSize: 24,\n color: '#3A3F62',\n fontWeight: 'bold',\n },\n createIntentButton: {\n background: 'linear-gradient(312.17deg, #5A98F7 3.33%, #1658F3 96.71%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n height: 43,\n width: 43,\n padding: 0,\n minWidth: 43,\n borderRadius: 25,\n },\n})\n\nclass AtomNLPModal extends React.Component {\n state = {\n page: 0,\n rowsPerPage: 10,\n open: false,\n triggerAtom: {},\n }\n\n componentDidMount() {\n const self = this\n getAtomContexts(this.props.atomId, self)\n getIntents(this.props.match.params.botId, false)\n }\n\n createTrigger() {\n const context = {\n previousAtom: this.state.currentAtom,\n intent: this.state.intent,\n currentAtom: this.state.newAtom,\n }\n if (this.props.modalTriggerId == null) {\n createNewContext(context, this.props.match.params.botId)\n } else {\n context.id = this.props.modalTriggerId\n updateContext(context, this.props.match.params.botId)\n }\n }\n\n save() {\n // this.props.closeAtomNLP();\n }\n\n handleChangePage = (event, page) => {\n this.setState({ page })\n }\n\n handleChangeRowsPerPage = event => {\n this.setState({ rowsPerPage: event.target.value })\n }\n\n openTriggerModal(contextId) {\n this.setState({\n modalTriggerId: contextId,\n triggerAtom: {\n id: this.props.atomId,\n name: this.props.atomName,\n },\n open: true,\n })\n }\n\n closeTriggerModal = () => {\n this.setState({ open: false })\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n
\n {this.props.contexts != null && (\n
\n \n

Triggers

\n \n this.createTrigger()}\n variant=\"raised\">\n \n \n

\n Add new{' '}\n Trigger\n

\n
\n
\n\n
\n {this.props.contexts &&\n this.props.contexts.map(context => (\n
\n \n
\n ))}\n
\n
\n )}\n \n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n contexts: state.contexts,\n intents: state.intents,\n})\n\nAtomNLPModal.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(AtomNLPModal)),\n)\n","import { BASE_URL } from '../../../configs'\nimport {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { saveTags, addNewTag } from '../actions/tags'\n\nexport function loadTags(botId) {\n fetch(`${BASE_URL}/marketing/${botId}/tags`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveTags(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function createTag(tag, botId, callback) {\n fetch(`${BASE_URL}/marketing/${botId}/tags`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(tag),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n addNewTag(json)\n if (callback) callback()\n alertSuccess('Tag is created successfully')\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n","import { store } from '../../../index'\n\nexport const ADD_NEW_TAG = 'ADD_NEW_TAG'\nexport const SAVE_TAGS = 'SAVE_TAGS'\n\nexport const saveTags = tags => {\n store.dispatch({\n type: SAVE_TAGS,\n tags,\n })\n}\n\nexport const addNewTag = tag => {\n store.dispatch({\n type: ADD_NEW_TAG,\n tag,\n })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n padding: '4px 0',\n color: theme.palette.text.header,\n },\n red: {\n border: '1px solid #FF624C',\n color: '#FF624C',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: '10px 24px',\n maxHeight: 45,\n width: 400,\n },\n})\n\nclass InputHolder extends React.Component {\n render() {\n const {\n classes,\n defaultValue,\n placeholder,\n holderStyle,\n inputStyle,\n maxLength,\n rtl,\n } = this.props\n return (\n
\n 0 ? maxLength : 255}\n defaultValue={defaultValue}\n placeholder={placeholder}\n type={this.props.type ? this.props.type : 'text'}\n onChange={e => this.props.onChange(e)}\n onKeyPress={e => {\n this.props.handleKeyPress && this.props.handleKeyPress(e)\n }}\n onBlur={e => {\n this.props.onBlur && this.props.onBlur(e)\n }}\n dir={rtl && 'rtl'}\n />\n
\n )\n }\n}\n\nInputHolder.propTypes = {\n classes: PropTypes.object.isRequired,\n placeholder: PropTypes.string.isRequired,\n maxLength: PropTypes.number.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(InputHolder))\n","/**\n * Created by Admin on 25.05.2018.\n */\nimport React from 'react'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport PropTypes from 'prop-types'\n\nconst styles = theme => ({\n primary: {\n padding: '10px 16px',\n color: theme.palette.primary.contrastText,\n background: theme.palette.primary.main,\n borderColor: theme.palette.primary.main,\n border: '1px solid',\n outline: 'none',\n cursor: 'pointer',\n borderRadius: 10,\n lineHeight: 'normal',\n fontFamily: 'Lato',\n fontSize: 14,\n '&:hover': {},\n '&:disabled': {\n backgroundColor: theme.palette.primary.light,\n },\n },\n secondary: {\n padding: '10px 16px',\n color: theme.palette.primary.main,\n background: theme.palette.primary.contrastText,\n borderColor: theme.palette.primary.main,\n border: '1px solid',\n outline: 'none',\n cursor: 'pointer',\n borderRadius: 10,\n lineHeight: 'normal',\n fontFamily: 'Lato',\n fontSize: 14,\n '&:hover': {},\n '&:disabled': {\n backgroundColor: theme.palette.primary.background,\n },\n },\n default: {\n padding: '8px 16px',\n background: theme.palette.primary.contrastText,\n border: '1px solid',\n borderColor: theme.palette.default.gray,\n color: theme.palette.text.header,\n borderRadius: 10,\n fontSize: 14,\n lineHeight: 1,\n '&:hover': {\n cursor: 'pointer',\n },\n },\n noStyle: {\n color: theme.palette.text.header,\n textDecoration: 'underline',\n border: 'none',\n background: 'transparent',\n padding: '0',\n fontSize: 14,\n fontWeight: '600',\n '&:hover': {\n cursor: 'pointer',\n },\n },\n sizeSm: {\n padding: '8px 16px',\n },\n sizeLg: {\n padding: '14px 28px',\n },\n cancel: {\n backgroundColor: 'unset',\n outline: 'none',\n cursor: 'pointer',\n fontSize: 14,\n color: '#616581',\n padding: '8px 28px',\n border: 'none',\n },\n empty: {\n background: theme.palette.primary.contrastText,\n color: theme.palette.primary.main,\n border: '1px solid',\n borderColor: theme.palette.primary.main,\n },\n})\n\nclass SubmitButton extends React.Component {\n render() {\n const { classes, type, size } = this.props\n const classButton = `${type ? classes[type] : classes.primary} ${\n this.props.empty && classes.empty\n }`\n const buttonSizeClass =\n size === 'sm' ? classes.sizeSm : size === 'lg' ? classes.sizeLg : ''\n\n return (\n this.props.onClick && this.props.onClick(e)}\n style={this.props.styles}>\n {this.props.title}\n \n )\n }\n}\n\nSubmitButton.propTypes = {\n classes: PropTypes.object,\n styles: PropTypes.object,\n title: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n empty: PropTypes.bool,\n onClick: PropTypes.func,\n}\n\nexport default withStyles(styles, { withTheme: true })(SubmitButton)\n","/**\n * Created by serhiy on 12.03.18.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { createTag } from '../../api/tag'\nimport { alertError } from '../../../../api'\nimport InputHolder from '../../../../uiKit/inputs/InputHolder'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\n\nconst styles = theme => ({\n buttonHolder: {\n display: 'flex',\n justifyContent: 'center',\n },\n})\n\nclass TagModal extends React.Component {\n changeName = e => {\n this.setState({ tagValue: e.target.value })\n }\n\n createTag = () => {\n if (\n !this.props.allTags\n .map(function(tag) {\n return tag.value\n })\n .includes(this.state.tagValue)\n ) {\n createTag(\n { value: this.state.tagValue },\n this.props.match.params.botId,\n this.props.closeTagModal,\n )\n } else {\n alertError('Tag with this name already exists')\n }\n }\n\n constructor(props) {\n super(props)\n this.state = {\n tagValue: '',\n }\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n this.changeName(e)}\n />\n
\n this.createTag()} title=\"Create\" />\n
\n
\n )\n }\n}\n\nTagModal.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(TagModal))\n","import React, { Component } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport Select from 'react-select'\nimport Modal from '../../../../uiKit/Modal'\nimport TagModal from './TagModal'\n\nconst styles = theme => ({\n createNewTagLink: {\n marginTop: 10,\n fontSize: 12,\n cursor: 'pointer',\n fontFamily: 'Lato',\n textDecoration: 'underline',\n width: 'max-content',\n },\n})\n\nclass Tags extends Component {\n constructor(props) {\n super(props)\n this.state = {\n openTagModal: false,\n }\n }\n\n handleChangeTags = event => {\n this.props.onChange(event)\n }\n\n handleDelete = data => () => {\n this.setState(\n state => {\n const tagsSelected = [...state.tagsSelected]\n const chipToDelete = tagsSelected.indexOf(data)\n tagsSelected.splice(chipToDelete, 1)\n return { tagsSelected }\n },\n () => this.props.payload(this.state.tagsSelected),\n )\n }\n\n openCreateTagModal = () => {\n this.setState({ openTagModal: true })\n }\n\n closeCreateTagModal = () => {\n this.setState({ openTagModal: false })\n }\n\n convertValuesToOptions(values) {\n return values.map(tag => {\n return {\n value: tag.value,\n label: tag.value,\n id: tag.id,\n }\n })\n }\n\n render() {\n const { classes, style } = this.props\n\n return (\n
\n tag2.id - tag1.id,\n )}\n />\n {!this.props.disableNew && (\n \n Create new tag\n

\n )}\n \n \n \n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n tags: state.tags,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(Tags))\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport Tags from './Tags'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = {\n container: {\n marginTop: 10,\n padding: 10,\n width: '90%',\n },\n flowBuilderTags: {\n width: '100%',\n },\n}\n\nclass TagAction extends React.Component {\n render() {\n return (\n
\n

Tags

\n this.props.onChange(value)}\n value={this.props.value}\n style={styles.flowBuilderTags}\n styleSelect={styles.flowBuilderTags}\n />\n
this.props.onDelete()}>\n \"delete\"\n
\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\n\nexport default withRouter(connect(mapStateToProps)(TagAction))\n","import { BASE_URL } from '../../../configs'\nimport {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { saveBotAccessors } from '../actions/botAccessors'\n\nexport function saveTeamHours(id, settings) {\n fetch(BASE_URL + '/bot/' + id + '/workingHours', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(settings),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(function(error) {\n alertError('Something goes wrong. Ping administrator.')\n })\n}\n\nexport function loadBotAccessors(botId) {\n fetch(BASE_URL + '/botAccesses/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveBotAccessors(json)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateBotAccessorRole(botId, accessorId, inviteAccessId, role) {\n const url =\n accessorId === null\n ? `${BASE_URL}/botAccesses/${botId}/pending-user/${inviteAccessId}?role=${role}`\n : `${BASE_URL}/botAccesses/${botId}/${accessorId}?role=${role}`\n\n fetch(url, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PATCH',\n })\n .then(response => {\n return response\n })\n .then(() => {\n loadBotAccessors(botId)\n alertSuccess(\"User's settings has been successfully updated.\", 3000)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function updateBotAccessorSupportRequestNotifying(\n botId,\n accessorId,\n supportRequestNotify,\n) {\n fetch(\n BASE_URL +\n '/botAccesses/' +\n botId +\n '/' +\n accessorId +\n '?supportRequestNotify=' +\n supportRequestNotify,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PATCH',\n },\n )\n .then(response => {\n return response\n })\n .then(() => {\n loadBotAccessors(botId)\n alertSuccess(\"User's settings has been successfully updated.\", 3000)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function removeBotAccessor(botId, accessorId, inviteAccessId) {\n const url =\n accessorId == null\n ? `${BASE_URL}/botAccesses/${botId}/pending-user/${inviteAccessId}`\n : `${BASE_URL}/botAccesses/${botId}/${accessorId}`\n\n fetch(url, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n })\n .then(response => {\n return response\n })\n .then(() => {\n loadBotAccessors(botId)\n })\n .catch(function(error) {\n alertError('Fail. Try it later')\n })\n}\n\nexport function getBotLanguages(botId) {\n return fetch(`${BASE_URL}/bot/${botId}/language/info`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(botLanguages => {\n const { defaultLanguage, activeLanguages } = botLanguages\n let index = -1\n activeLanguages.map(language => {\n if (language.id === defaultLanguage.id)\n index = activeLanguages.indexOf(language)\n })\n if (index !== -1) activeLanguages.splice(index, 1)\n defaultLanguage.isDefault = true\n activeLanguages.unshift(defaultLanguage)\n\n return botLanguages\n })\n .catch(error => console.log(error))\n}\n\n//TODO\nexport function addLanguage(botId, languageCode) {\n return fetch(\n `${BASE_URL}/bot/${botId}/language?languageCode=${languageCode}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n },\n )\n .then(response => {\n if (response.ok) {\n alertSuccess('Language added successfully', 3000)\n } else {\n response\n .json()\n .then(errorMessage => {\n if (errorMessage.message) {\n alertError(errorMessage.message)\n }\n })\n .catch(() => {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n }\n return response\n })\n .catch(error => console.log(error))\n}\n\nexport function deleteLanguage(botId, languageCode) {\n return fetch(\n `${BASE_URL}/bot/${botId}/language?languageCode=${languageCode}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'DELETE',\n },\n )\n .then(response => {\n if (response.ok) {\n alertSuccess('Language deleted', 3000)\n } else {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n }\n return response\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(error => console.log(error))\n}\n","import { store } from '../../../index'\n\nexport const SAVE_BOT_ACCESSORS = 'SAVE_BOT_ACCESSORS'\n\nexport const saveBotAccessors = botAccessors => {\n store.dispatch({\n type: SAVE_BOT_ACCESSORS,\n botAccessors,\n })\n}\n","export const styles = () => ({\n container: {\n width: 254,\n borderRadius: 10,\n border: '1px solid #EBEBEF',\n color: '#3A3F62',\n position: 'relative',\n },\n header: {\n padding: 16,\n borderBottom: '1px solid #EBEBEF',\n fontWeight: 700,\n },\n body: {\n padding: '0 16px 16px',\n },\n switcherWrap: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n addButton: {\n color: '#1658F3',\n cursor: 'pointer',\n marginTop: 8,\n },\n atomWrap: {\n margin: '8px 0',\n position: 'relative',\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n deleteRandomAtomWrap: {\n position: 'absolute',\n cursor: 'pointer',\n top: 3,\n right: -16,\n zIndex: 5,\n display: 'none',\n height: '29px',\n overflow: 'hidden',\n },\n '@global': {\n '.MuiSwitch-root-215': {\n left: 16,\n },\n },\n})\n\nexport const SwitchStyles = {\n checked: {\n color: '#1658F3',\n },\n}\n","/* eslint-disable */\nimport React from 'react'\n\nclass InfoButton extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport default InfoButton\n","import React from 'react'\nimport { styles } from './TooltipStyles'\nimport { withStyles } from '@material-ui/core'\nimport InfoButton from '../icons/InfoButton'\nimport ReactTooltip from 'react-tooltip'\n\nconst Tooltip = props => {\n const { classes, tooltipId, tooltipText } = props\n\n return (\n
\n \n \n
\n )\n}\n\nexport default withStyles(styles)(Tooltip)\n","export const styles = () => ({\n tooltip: {\n maxWidth: '80%',\n width: '224px',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n textAlign: 'start',\n fontWeight: 'normal',\n padding: 10,\n backgroundColor: '#616581',\n },\n tooltipWrap: {\n cursor: 'pointer',\n display: 'inline',\n marginLeft: 4,\n },\n})\n","export const InitialState = {\n firstTimeRedirect: {\n atomName: '',\n number: 0,\n },\n}\n","export const styles = () => ({\n container: {},\n})\n\nexport const customStyles = {\n control: (provided, state) => {\n const error =\n !state.hasValue && !state.isFocused && state.selectProps.touched\n\n return {\n ...provided,\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n borderRadius: 10,\n padding: '2px 6px',\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: provided => ({\n ...provided,\n display: 'none',\n }),\n singleValue: provided => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n },\n }\n },\n menu: provided => ({\n ...provided,\n padding: 0,\n overflow: 'hidden',\n }),\n placeholder: provided => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n}\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport Select from 'react-select'\n\nimport { styles, customStyles } from './styles'\nimport { connect } from 'react-redux'\n\nconst AtomSelect = props => {\n const { flows, value, touched, onFocus, onChange } = props\n const [options, setOptions] = useState([])\n\n useEffect(() => {\n if (flows) {\n const options = []\n\n flows.forEach(flow => {\n if (flow.atoms) {\n flow.atoms.forEach(atom => {\n options.push({ label: atom.name, value: atom.id })\n })\n }\n })\n\n setOptions(options)\n }\n }, [flows])\n\n const getValue = value => {\n return options.find(option => option.value === value)\n }\n\n return (\n \n )\n}\n\nAtomSelect.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n flows: state.flows,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(AtomSelect))\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles, SwitchStyles } from './RandomAtomsStyles'\nimport Switch from '@material-ui/core/Switch'\nimport Tooltip from '../../../../uiKit/tooltip/Tooltip'\nimport { InitialState } from './RandomAtomConfig'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\n\nconst tooltipText =\n 'The user will be redirected to the following atom if he interacts with current atom for the first time.'\n\nconst RandomAtoms = props => {\n const { classes, message, updateMessage, onDelete } = props\n\n const randomAtomsDisplay = message.randomRedirect.sendFirstAtomOnlyOnce\n ? message.randomRedirect.randomAtoms.filter(element => element.number !== 0)\n : message.randomRedirect.randomAtoms\n\n const handleSwitch = e => {\n const firstTimeRedirect = Object.assign({}, InitialState.firstTimeRedirect)\n let newRandomAtoms = [...message.randomRedirect.randomAtoms]\n\n if (e.target.checked) {\n newRandomAtoms = [firstTimeRedirect, ...newRandomAtoms]\n } else {\n newRandomAtoms.shift()\n }\n\n newRandomAtoms = newRandomAtoms.map((elem, index) => {\n elem.number = index\n return elem\n })\n\n message.randomRedirect.randomAtoms = newRandomAtoms\n message.randomRedirect.sendFirstAtomOnlyOnce = e.target.checked\n\n updateMessage(message)\n }\n\n const handleRandomAtoms = (e, number) => {\n let newRandomAtoms = [...message.randomRedirect.randomAtoms]\n\n newRandomAtoms = newRandomAtoms.map(elem => {\n if (elem.number === number) elem.atomId = e.value\n return elem\n })\n\n message.randomRedirect.randomAtoms = newRandomAtoms\n updateMessage(message)\n }\n\n const handleAddRandomAtom = () => {\n const messageCopy = deepCopyFunction(message)\n\n let newRandomAtoms = [...message.randomRedirect.randomAtoms]\n const newRandomAtom = {\n atomName: '',\n number: newRandomAtoms.length + 1,\n }\n\n newRandomAtoms = [...newRandomAtoms, newRandomAtom]\n\n messageCopy.randomRedirect.randomAtoms = newRandomAtoms\n\n updateMessage(messageCopy)\n }\n\n const handleDeleteRandomAtom = number => {\n let newRandomAtoms = [...message.randomRedirect.randomAtoms]\n\n newRandomAtoms = newRandomAtoms\n .filter(elem => elem.number !== number)\n .map((elem, index) => {\n elem.number = index\n return elem\n })\n\n message.randomRedirect.randomAtoms = newRandomAtoms\n\n updateMessage(message)\n }\n\n return (\n
\n
\n Random redirect\n \n
\n\n
\n
\n
\n First time redirect\n \n
\n \n
\n\n {message.randomRedirect.sendFirstAtomOnlyOnce && (\n handleRandomAtoms(e, 0)}\n />\n )}\n
\n Random atoms\n {randomAtomsDisplay.map(element => (\n
\n {message.randomRedirect.randomAtoms.length > 1 && (\n handleDeleteRandomAtom(element.number)}>\n \n \n )}\n\n handleRandomAtoms(e, element.number)}\n />\n
\n ))}\n
\n\n {message.randomRedirect.randomAtoms.length < 25 && (\n
\n + Add random atom\n
\n )}\n
\n\n
\n \"delete\"\n
\n
\n )\n}\n\nexport default withStyles(styles)(RandomAtoms)\n","export const urlValidation = str =>\n /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~%:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/.test(\n str,\n )\n","/* eslint-disable */\nimport React from 'react'\n\nexport const SearchIcon = () => {\n\n return (\n \n \n \n \n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport { SearchIcon } from '../icons/SearchIcon'\n\nconst Search = props => {\n const { classes, value, onChange, style, placeholder, onKeyDown } = props\n\n return (\n
\n onKeyDown && onKeyDown(event)}\n />\n
\n \n
\n
\n )\n}\nSearch.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(Search)\n","export const styles = () => ({\n container: {\n position: 'relative',\n },\n input: {\n width: '100%',\n height: 36,\n outline: 'none',\n border: '1px solid rgba(53, 64, 82, 0.1)',\n boxSizing: 'border-box',\n borderRadius: 4,\n padding: '8px 38px 8px 12px',\n },\n icon: {\n position: 'absolute',\n top: 4,\n right: 12,\n },\n})\n","export const styles = () => ({\n container: {},\n})\n\nexport const customStyles = {\n control: (provided, state) => ({\n ...provided,\n width: 100,\n border: 'none',\n outline: 'none',\n boxShadow: 'none',\n '&:hover': {\n border: 'none',\n boxShadow: 'none',\n },\n }),\n indicatorSeparator: (provided, state) => ({\n ...provided,\n backgroundColor: '#ffffff',\n }),\n singleValue: (provided, state) => ({\n ...provided,\n color: '#1658F3',\n }),\n dropdownIndicator: (provided, state) => ({\n ...provided,\n color: '#1658F3',\n cursor: 'pointer',\n '&:hover': {\n color: '#1658F3',\n },\n }),\n}\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { customStyles, styles } from './styles'\nimport { getBotLanguages } from '../../tabs/settings/api/settings'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport Select from 'react-select'\n\nconst LaguageSelector = props => {\n const { activeBotId, onChange, value } = props\n const [activeLanguages, setActiveLanguages] = useState([])\n const [selectedLanguageOption, setSelectedLanguageOption] = useState([])\n\n useEffect(() => {\n if (activeBotId) {\n getBotLanguages(activeBotId).then(botLanguages => {\n const { defaultLanguage, activeLanguages } = botLanguages\n const selectedOption = {\n label: defaultLanguage.fullName,\n value: defaultLanguage.shortName,\n rtl: defaultLanguage.isRtl,\n }\n\n const languageOptions = activeLanguages.map(language => {\n return {\n label: language.fullName,\n value: language.shortName,\n rtl: language.isRtl,\n }\n })\n onChange(selectedOption)\n setActiveLanguages(languageOptions)\n setSelectedLanguageOption(selectedOption)\n })\n }\n }, [activeBotId])\n\n return (\n \n )\n}\n\nLaguageSelector.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBotId: state.activeBot?.id,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(LaguageSelector)),\n)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\n\nconst SecondaryButton = props => {\n const { classes, onClick, styles, title } = props\n\n return (\n onClick && onClick(e)}\n style={styles}>\n {title}\n \n )\n}\n\nSecondaryButton.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(SecondaryButton)\n","export const styles = theme => ({\n button: {\n cursor: 'pointer',\n fontSize: 14,\n padding: '8px 16px',\n border: '1px solid rgba(22, 88, 243, 1)',\n borderRadius: 4,\n color: 'rgba(22, 88, 243, 1)',\n width: 'fit-content',\n fontWeight: 500,\n backgroundColor: '#ffffff',\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const PlusIcon = () => {\n // eslint-disable-next-line react/prop-types\n\n return (\n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const TrashIcon = () => {\n\n return (\n \n \n \n \n \n \n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport { TrashIcon } from '../icons/TrashIcon'\nimport ReactTooltip from 'react-tooltip'\n\nconst AttributeSelectItem = props => {\n const {\n classes,\n attribute,\n handleUpdateAttributeName,\n handleUpdateAttributeValue,\n handleEnterAttributeName,\n handleFocus,\n handleDeleteAttribute,\n focus,\n error,\n isRtl,\n } = props\n const [isExtraWidth, setIsExtraWidth] = useState(false)\n const currentAttribute = useRef(null)\n const attributeContainer = useRef(null)\n\n useEffect(() => {\n setIsExtraWidth(\n currentAttribute?.current?.offsetWidth >=\n attributeContainer?.current?.offsetWidth,\n )\n }, [focus])\n\n return (\n
\n
\n {focus === attribute.id || !attribute.name ? (\n
\n handleUpdateAttributeName(e, attribute.id)}\n onKeyPress={e => handleEnterAttributeName(e)}\n onBlur={() => handleFocus(false)}\n placeholder={'none'}\n autoFocus={true}\n />\n {error && (\n

\n This attribute name is already used\n

\n )}\n
\n ) : (\n attribute.isNew && handleFocus(attribute.id)}>\n {attribute.name}\n {isExtraWidth && (\n \n )}\n

\n )}\n
\n\n handleUpdateAttributeValue(e, attribute.id)}\n />\n {attribute.isNew && (\n handleDeleteAttribute(attribute.id)}>\n \n
\n )}\n \n )\n}\nAttributeSelectItem.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(AttributeSelectItem)\n","export const styles = () => ({\n attributeWrap: {\n display: 'flex',\n flexFlow: 'row',\n marginBottom: 9,\n '&:hover > div': {\n display: 'flex',\n },\n },\n attributeNameWrap: {\n width: 194,\n display: 'flex',\n alignItems: 'center',\n height: 38,\n },\n inputWrap: {\n position: 'relative',\n },\n input: {\n border: '1px solid rgba(53, 64, 82, 0.1)',\n outline: 'none',\n height: 38,\n borderRadius: 4,\n padding: '8px 12px',\n color: 'rgba(53, 64, 82, 0.7)',\n },\n warning: {\n position: 'absolute',\n color: '#FF6666',\n fontSize: 12,\n },\n attributeName: {\n backgroundColor: '#5A98F7',\n color: '#ffffff',\n borderRadius: 50,\n padding: '1px 8px',\n fontSize: 14,\n height: 24,\n width: 'fit-content',\n margin: 0,\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n iconWrap: {\n cursor: 'pointer',\n display: 'none',\n alignItems: 'center',\n marginLeft: 4,\n },\n tooltip: {\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n textAlign: 'start',\n fontWeight: 'normal',\n padding: 10,\n backgroundColor: '#616581',\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { deepCopyFunction } from '../../../../../helpers/deepCopyFunction'\nimport AttributeSelectItem from '../../../../../uiKit/AttributeSelectItem/AttributeSelectItem'\n\nimport { styles } from './styles'\n\nconst AttributesModalList = props => {\n const {\n classes,\n attributes,\n searchValue,\n setAttributes,\n error,\n setShowError,\n isRtl,\n } = props\n\n const [focus, setFocus] = useState(null)\n\n const handleFocus = focus => {\n if (!error) setFocus(focus)\n }\n\n const handleUpdateAttributeValue = (e, attributeId) => {\n const attributesUpdate = deepCopyFunction(attributes).map(attribute => {\n if (attribute.id === attributeId) {\n attribute.defaultValue = e.target.value\n }\n return attribute\n })\n\n setAttributes(attributesUpdate)\n }\n\n const handleUpdateAttributeName = (e, attributeId) => {\n const attributesUpdate = deepCopyFunction(attributes).map(attribute => {\n if (attribute.id === attributeId) {\n attribute.name = e.target.value\n attribute.isValid = true\n }\n return attribute\n })\n const error = attributes.some(\n attribute => attribute.name === e.target.value,\n )\n\n setShowError(error)\n setAttributes(attributesUpdate)\n setFocus(attributeId)\n }\n\n const handleDeleteAttribute = attributeId => {\n const attributesUpdate = deepCopyFunction(attributes).filter(\n attribute => attribute.id !== attributeId,\n )\n\n setAttributes(attributesUpdate)\n }\n\n const handleEnterAttributeName = e => {\n if (e.key === 'Enter') {\n handleFocus(false)\n }\n }\n\n return (\n <>\n
\n

Name

\n

Default value

\n
\n {attributes\n .filter(attribute => attribute.name.includes(searchValue))\n .map(attribute => (\n \n ))}\n \n )\n}\n\nAttributesModalList.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(AttributesModalList)\n","export const styles = () => ({\n labels: {\n display: 'flex',\n '& p': {\n width: '204px',\n fontSize: 14,\n fontWeight: '700',\n color: '#354052',\n },\n },\n})\n","import { store } from '../../../index'\n\nexport const SET_ATTRIBUTES = 'SET_ATTRIBUTES'\nexport const ADD_ATTRIBUTE = 'ADD_ATTRIBUTE'\nexport const CLEAR_ATTRIBUTES = 'CLEAR_ATTRIBUTES'\n\nexport const setAttributes = attributes => {\n store.dispatch({\n type: SET_ATTRIBUTES,\n payload: {\n attributes,\n },\n })\n}\n\nexport const addAttribute = attribute => {\n store.dispatch({\n type: ADD_ATTRIBUTE,\n payload: {\n attribute,\n },\n })\n}\n\nexport const clearAttributes = attribute => {\n store.dispatch({\n type: CLEAR_ATTRIBUTES,\n payload: {\n attribute,\n },\n })\n}\n","import { BASE_URL } from '../../../configs'\nimport {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { setAttributes, addAttribute } from '../actions/attributes'\n\nexport function getAttributes(botId, lang) {\n return fetch(`${BASE_URL}/bot/${botId}/attributes?lang=${lang}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n if (json.data) setAttributes(json.data)\n })\n .catch(json => {\n alertError(json.error?.message)\n })\n}\n\nexport function updateAttributes(botId, attributes, lang) {\n return fetch(`${BASE_URL}/bot/${botId}/attributes?lang=${lang}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(attributes),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setAttributes(json.data)\n })\n .catch(json => {\n alertError(json.error?.message)\n })\n}\n\nexport function getAttribute(botId, attributeId, lang) {\n return fetch(\n `${BASE_URL}/bot/${botId}/attributes/${attributeId}/values?lang=${lang}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n return json.data\n })\n .catch(json => {\n alertError(json.error?.message)\n })\n}\n\nexport function createAttribute(botId, attribute) {\n return fetch(`${BASE_URL}/bot/${botId}/attributes`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(attribute),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n addAttribute(json.data)\n return json.data\n })\n .catch(json => {\n alertError(json.error?.message)\n })\n}\n","export const styles = theme => ({\n paper: {\n position: 'absolute',\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n outline: 'none',\n width: 480,\n borderRadius: 10,\n },\n btnClose: {\n position: 'absolute',\n right: '24px',\n top: '24px',\n color: '#B0B2C0',\n cursor: 'pointer',\n },\n title: {\n lineHeight: 'normal',\n fontSize: 24,\n color: theme.palette.primary.headerText,\n marginRight: 8,\n },\n searchWrap: {\n margin: '24px 0px 0px',\n },\n header: {\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)',\n padding: '24px 16px',\n },\n body: {\n padding: '24px',\n height: 'calc(80vh - 235px)',\n maxHeight: '408px',\n overflowY: 'scroll',\n },\n footer: {\n borderTop: '1px solid rgba(53, 64, 82, 0.1)',\n padding: '24px',\n },\n buttonsWrap: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n titleWrap: {\n display: 'flex',\n },\n noAttribute: {\n lineHeight: '22px',\n fontSize: 14,\n color: theme.palette.primary.text,\n height: '100%',\n margin: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport Modal from '@material-ui/core/Modal'\nimport Close from '@material-ui/icons/Close'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { getModalStyle } from '../../../../../uiKit/Modal'\nimport Search from '../../../../../uiKit/Search/Search'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport LaguageSelector from '../../../../../uiKit/LaguageSelector/LaguageSelector'\nimport SecondaryButton from '../../../../../uiKit/SecondaryButton/SecondaryButton'\nimport { PlusIcon } from '../../../../../uiKit/icons/PlusIcon'\n\nimport AttributesModalList from '../AttributesModalList/AttributesModalList'\n\nimport { deepCopyFunction } from '../../../../../helpers/deepCopyFunction'\nimport { getModifiedObject } from '../../../../../helpers/getModifiedObject'\n\nimport { alertSuccess } from '../../../../../api'\nimport { getAttributes, updateAttributes } from '../../../api/attributes'\n\n\nimport { styles } from './styles'\n\n\nconst style = {\n top: 50,\n left: 50,\n overflowY: 'visible',\n}\n\nconst AttributesModal = props => {\n const { classes, onClose, attributes, open, activeBotId } = props\n const [searchValue, setSearchValue] = useState('')\n const [attributesCopy, setAttributesCopy] = useState([])\n const [language, setLanguage] = useState(null)\n const [error, setShowError] = useState(null)\n\n useEffect(() => {\n if (language?.value) {\n getAttributes(activeBotId, language?.value)\n }\n }, [language?.value])\n\n useEffect(() => {\n const chatbotAttributes = attributes?.filter(\n attribute => attribute?.type === 'CHATBOT',\n )\n setAttributesCopy(chatbotAttributes)\n setShowError(false)\n }, [attributes, open])\n\n const handleAddAttribute = () => {\n const attributesUpdate = deepCopyFunction(attributesCopy)\n const newAttribute = {\n name: '',\n defaultValue: '',\n type: 'CHATBOT',\n isNew: true,\n isValid: true,\n id: Math.random(),\n }\n\n attributesUpdate.push(newAttribute)\n setAttributesCopy(attributesUpdate)\n }\n\n const handleSaveAttributes = () => {\n if (handleValidate()) {\n const chatbotAttributes = deepCopyFunction(attributesCopy)\n ?.filter(\n attribute =>\n getModifiedObject(attributes, attribute) && attribute.name,\n )\n ?.map(attribute => {\n if (!attributes.find(x => x.id === attribute.id)) {\n const { name, defaultValue, type } = attribute\n\n return { name, defaultValue, type }\n }\n return attribute\n })\n\n updateAttributes(activeBotId, chatbotAttributes, language?.value)\n .then(() => alertSuccess('Attributes are updated successfully'))\n .then(() => onClose())\n }\n }\n\n const handleValidate = () => {\n const attributesUpdate = deepCopyFunction(attributesCopy)?.map(\n attribute => {\n if (attribute.isNew && !attribute.name) {\n attribute.isValid = false\n }\n return attribute\n },\n )\n\n const isValid = attributesUpdate\n ?.filter(attribute => attribute.isNew)\n ?.every(attribute => attribute.isValid)\n\n setAttributesCopy(attributesUpdate)\n\n return isValid\n }\n\n return (\n \n
\n
\n \n
\n

Manage attributes

\n \n
\n setSearchValue(e.target.value)}\n style={{ margin: '24px 0px 0px' }}\n placeholder={'Search attributes...'}\n />\n
\n
\n {attributesCopy.length ? (\n \n ) : (\n

\n You have no chatbot attributes yet\n

\n )}\n
\n
\n
\n \n Add attribute\n \n }\n onClick={handleAddAttribute}\n />\n
\n \n \n
\n
\n
\n
\n \n )\n}\n\nAttributesModal.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBotId: state.activeBot?.id,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(AttributesModal)),\n)\n","export const getModifiedObject = (array, object) => {\n return !array.find(\n x => Object.entries(x).toString() === Object.entries(object).toString(),\n )\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport Autocomplete from 'react-autocomplete'\nimport { getAttribute } from '../../tabs/settings/api/attributes'\nimport { withRouter } from 'react-router-dom'\nimport { ClickAwayListener, withStyles } from '@material-ui/core'\nimport { styles } from './styles'\nimport { connect } from 'react-redux'\nimport { BACKSPACE_KEY, DELETE_KEY, ENTER_KEY } from '../../constants/keyCodes'\n\nconst InputAutosuggest = props => {\n const {\n placeholder,\n attributeId,\n value,\n onChange,\n activeBotId,\n style,\n classes,\n containerStyle,\n menuStyle,\n onBlur,\n error,\n } = props\n const [suggestions, setAutoSuggest] = useState([])\n const [focus, setFocus] = useState(false)\n const [upward, setUpward] = useState(false)\n\n const autocompleteRef = useRef(null)\n\n //buttonPos?.top + buttonPos?.height\n useEffect(() => {\n if (attributeId) {\n getAttribute(activeBotId, attributeId, 'en').then(data => {\n setAutoSuggest(data || [])\n })\n }\n }, [attributeId])\n\n useEffect(() => {\n const menuPos =\n autocompleteRef?.current?.firstChild?.childNodes[1]?.getBoundingClientRect()\n setUpward(menuPos?.top + menuPos?.height > window.innerHeight)\n }, [focus])\n\n const handleKeyUp = event => {\n const key = event.keyCode || event.charCode\n\n if ((key === DELETE_KEY || key === BACKSPACE_KEY) && !value) {\n setFocus(true)\n }\n }\n\n const handleKeyPress = event => {\n const key = event.keyCode || event.charCode\n\n if (key === ENTER_KEY) {\n setFocus(!focus)\n }\n }\n\n const getItemValue = suggestion => suggestion\n\n const renderItem = (item, isHighlighted) => {\n return (\n \n {item}\n \n )\n }\n\n const renderInput = props => {\n return (\n setFocus(true)}\n onBlur={handleBlur}\n />\n )\n }\n\n const renderMenu = items => {\n const style = {\n display: !items.length && 'none',\n bottom: upward && '46px',\n top: !upward && '46px',\n }\n\n return (\n \n )\n }\n\n const onSelect = value => {\n const newValue = {\n target: {\n value,\n },\n }\n\n onChange(newValue)\n setFocus(false)\n }\n\n const handleBlur = () => {\n if (onBlur) onBlur()\n }\n\n return (\n \n setFocus(false)}>\n \n \n \n )\n}\n\nInputAutosuggest.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBotId: state.activeBot?.id,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(InputAutosuggest)),\n)\n","export const styles = () => ({\n input: {\n outline: 'none',\n width: '100%',\n height: 38,\n borderRadius: 4,\n fontSize: 14,\n padding: '8px 12px',\n border: '1px solid #d7d8df',\n '&:hover': {\n border: '1px solid rgba(53, 64, 82, 0.5)',\n },\n '&::placeholder': {\n color: '#999',\n },\n },\n item: {\n color: '#354052',\n padding: '8px 12px',\n },\n menu: {\n border: '1px solid rgba(53, 64, 82, 0.1)',\n background: 'rgba(255, 255, 255, 0.9)',\n fontSize: '90%',\n position: 'absolute',\n overflow: 'hidden',\n zIndex: 1000,\n cursor: 'pointer',\n borderRadius: 4,\n width: '100%',\n },\n container: {\n position: 'relative',\n },\n})\n","export const SPACE_KEY = 32\nexport const ARROW_DOWN_KEY = 40\nexport const ARROW_UP_KEY = 38\nexport const ARROW_LEFT_KEY = 37\nexport const ARROW_RIGHT_KEY = 39\nexport const ENTER_KEY = 13\nexport const DELETE_KEY = 46\nexport const BACKSPACE_KEY = 8\n","export const DEFAULT = 'DEFAULT'\nexport const CHATBOT = 'CHATBOT'\nexport const WIDGET = 'WIDGET'\nexport const FACEBOOK = 'FACEBOOK'\nexport const WHATSAPP = 'WHATSAPP'\nexport const TWILIO = 'TWILIO'\n","import {\n CHATBOT,\n FACEBOOK,\n TWILIO,\n WHATSAPP,\n WIDGET,\n} from '../constants/attributeTypes'\n\nexport const getAttributeColor = type => {\n switch (type) {\n case CHATBOT:\n return '#5A98F7'\n case WIDGET:\n return '#1658F3'\n case FACEBOOK:\n return '#1877F2'\n case WHATSAPP:\n return '#33D26B'\n case TWILIO:\n return '#F22F46'\n default:\n return '#5A98F7'\n }\n}\n","export const FormatOption = (options, type, allowedAttributes) => {\n return options\n .filter(option => option.type === type)\n .filter(option => {\n if (allowedAttributes?.length) {\n return allowedAttributes.includes(option.name)\n }\n return true\n })\n .map(option => {\n return {\n label: option.name,\n value: option.id,\n type: option.type,\n description: option.description,\n }\n })\n}\n","export const styles = () => ({\n attributeNameWrap: {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n height: 38,\n minWidth: 79,\n },\n inputWrap: {\n width: '100%',\n position: 'relative',\n display: 'inline-block',\n },\n attributeName: {\n backgroundColor: '#5A98F7',\n color: '#ffffff',\n borderRadius: 50,\n padding: '1px 8px',\n fontSize: 14,\n height: 24,\n width: 'fit-content',\n margin: 0,\n cursor: 'pointer',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n button: {\n fontSize: 14,\n color: '#1658F3',\n padding: '8px 0px',\n borderTop: '1px solid rgba(53, 64, 82, 0.1)',\n textAlign: 'center',\n cursor: 'pointer',\n },\n addAttibute: {\n padding: '8px 12px',\n backgroundColor: 'rgba(90, 152, 247, 0.1)',\n cursor: 'pointer',\n },\n optionTitle: {\n color: 'rgba(53, 64, 82, 0.7)',\n fontSize: 14,\n margin: 0,\n textAlign: 'start',\n },\n option: {\n margin: '4px 0px 0px',\n color: '#ffffff',\n padding: '1px 8px',\n borderRadius: 50,\n width: 'fit-content',\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: '#5A98F7',\n },\n customOption: {\n color: '#ffffff',\n borderRadius: 50,\n padding: '1px 8px',\n height: 24,\n width: 'fit-content',\n margin: '5px 12px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n tooltip: {\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n textAlign: 'start',\n fontWeight: 'normal',\n padding: 10,\n backgroundColor: '#616581',\n },\n})\n\nexport const customStyles = (required, styles) => ({\n control: (provided, state) => {\n const error =\n required &&\n !state.hasValue &&\n !state.isFocused &&\n state.selectProps.touched\n\n return {\n ...provided,\n ...styles,\n width: '100%',\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: (provided, state) => ({\n ...provided,\n backgroundColor: '#ffffff',\n display: 'none',\n }),\n singleValue: (provided, state) => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n dropdownIndicator: (provided, state) => ({\n ...provided,\n color: '#ffffff',\n display: 'none',\n cursor: 'pointer',\n '&:hover': {\n color: '#ffffff',\n },\n }),\n groupHeading: base => ({\n ...base,\n color: '#354052',\n fontSize: 14,\n textTransform: 'none',\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n padding: '2px 0px',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n width: '100%',\n overflowX: 'hidden',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n },\n }\n },\n menu: (provided, state) => ({\n ...provided,\n width: '100%',\n minWidth: 200,\n maxHeight: 250,\n padding: 0,\n }),\n menuList: provided => ({\n ...provided,\n padding: 0,\n overflowY: 'scroll',\n overflowX: 'hidden',\n maxHeight: 200,\n }),\n placeholder: (provided, state) => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n noOptionsMessage: provided => ({\n ...provided,\n margin: 0,\n padding: 0,\n }),\n clearIndicator: provided => ({\n ...provided,\n display: 'none',\n }),\n})\n","import React, { useEffect, useRef, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport Select, { components } from 'react-select'\n\nimport { getAttributeColor } from '../../helpers/getAttributeColor'\nimport AttributesModal from '../../tabs/settings/components/general/AttributesModal/AttributesModal'\nimport { FormatOption } from '../../helpers/formatOption'\nimport { styles, customStyles } from './styles'\nimport { createAttribute } from '../../tabs/settings/api/attributes'\nimport {\n CHATBOT,\n DEFAULT,\n FACEBOOK,\n TWILIO,\n WHATSAPP,\n WIDGET,\n} from '../../constants/attributeTypes'\nimport ReactTooltip from 'react-tooltip'\n\nconst AttributeSelect = props => {\n const {\n classes,\n focus,\n value,\n onChange,\n onBlur,\n onClick,\n containerStyle,\n attributes,\n activeBot,\n required,\n styles,\n isClearable,\n placeholder,\n onFocus,\n displayOptions,\n twilioCredentials,\n defaultAttributes,\n } = props\n const [open, setOpen] = useState(false)\n const [touched, setTouched] = useState(false)\n const [isExtraWidth, setIsExtraWidth] = useState(false)\n const select = useRef(null)\n const attribute = useRef(null)\n const attributeContainer = useRef(null)\n const isFacebookConnected = activeBot?.messengerConfigs?.accessToken\n const isWhatsappConnected = activeBot?.amioWhatsAppConfigs?.accessToken\n const isTwilioConnected = twilioCredentials?.connected\n const attributeContainerPosition =\n attributeContainer?.current?.getBoundingClientRect()\n const menuPlacement =\n attributeContainerPosition?.top + 220 > window.innerHeight\n\n const options = [\n {\n label: 'Default attributes',\n options: FormatOption(attributes, DEFAULT, defaultAttributes),\n type: DEFAULT,\n connected: true,\n },\n {\n label: 'Chatbot attributes',\n options: FormatOption(attributes, CHATBOT),\n type: CHATBOT,\n connected: true,\n },\n {\n label: 'Widget attributes',\n options: FormatOption(attributes, WIDGET),\n type: WIDGET,\n connected: true,\n },\n {\n label: 'Facebook attributes',\n options: FormatOption(attributes, FACEBOOK),\n type: FACEBOOK,\n connected: isFacebookConnected,\n },\n {\n label: 'Whatsapp attributes',\n options: FormatOption(attributes, WHATSAPP),\n type: WHATSAPP,\n connected: isWhatsappConnected,\n },\n {\n label: 'Twilio attributes',\n options: FormatOption(attributes, TWILIO),\n type: TWILIO,\n connected: isTwilioConnected,\n },\n ].filter(option => displayOptions.includes(option.type) && option.connected)\n\n useEffect(() => {\n setIsExtraWidth(\n attribute?.current?.offsetWidth >=\n attributeContainer?.current?.offsetWidth,\n )\n }, [focus])\n\n useEffect(() => {\n setTouched(!!props.touched)\n }, [props.touched])\n\n const handleCreateAttribute = () => {\n const newAttribute = { name: select?.current?.state?.inputValue }\n\n createAttribute(activeBot.id, newAttribute).then(attribute => {\n const newAttribute = {\n value: attribute.id,\n label: attribute.name,\n }\n onChange(newAttribute)\n })\n }\n\n const currentValue = (() => {\n const currentAttribute = attributes?.find(\n attribute => attribute.id === value,\n )\n\n return {\n label: currentAttribute?.name,\n value: currentAttribute?.id,\n type: currentAttribute?.type,\n }\n })()\n\n const Menu = props => {\n return (\n <>\n \n {props.children}\n
setOpen(true)}>\n Manage attibutes\n
\n
\n \n )\n }\n\n const NoOptionsMessage = props => {\n return (\n \n
\n

Create new attribute:

\n

{select?.current?.state?.inputValue}

\n
\n
\n )\n }\n\n const Option = props => {\n return (\n \n \n {props.children}\n \n {props.data.description && (\n \n {props.data.description}\n \n )}\n \n )\n }\n\n return (\n <>\n \n {focus ? (\n
\n onBlur && onBlur()}\n autoFocus={value}\n openMenuOnFocus={true}\n options={options}\n components={{ Menu, NoOptionsMessage, Option }}\n menuPlacement={menuPlacement ? 'top' : 'auto'}\n touched={touched}\n isSearchable={true}\n onMenuClose={() => setTouched(true)}\n ref={select}\n onFocus={() => onFocus && onFocus()}\n isClearable={isClearable}\n />\n
\n ) : (\n \n {currentValue.label}\n {isExtraWidth && (\n \n )}\n

\n )}\n \n\n setOpen(false)} />\n \n )\n}\n\nAttributeSelect.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBot: state.activeBot,\n twilioCredentials: state.twilioCredentials,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(AttributeSelect)),\n)\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport AttributesModal from '../../../settings/components/general/AttributesModal/AttributesModal'\nimport { TrashIcon } from '../../../../uiKit/icons/TrashIcon'\nimport InputAutosuggest from '../../../../uiKit/InputAutosuggest/InputAutosuggest'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport AttributeSelect from '../../../../uiKit/AttributeSelect/AttributeSelect'\nimport { styles } from './styles'\nimport { PlusIcon } from '../../../../uiKit/icons/PlusIcon'\nimport { CHATBOT, DEFAULT } from '../../../../constants/attributeTypes'\n\nconst PostbackAttributes = props => {//NOSONAR\n const { classes, atomAttributes, handleUpdateAttributes, callBack } = props\n const [open, setOpen] = useState(false)\n const [focus, setFocus] = useState(null)\n const buttonName = atomAttributes?.length\n ? 'Add attribute'\n : 'Set attribute'\n const showPlusAttribute = !atomAttributes || atomAttributes?.length < 10\n\n const handleUpdateAttributeValue = (e, index) => {\n const attributesUpdate = deepCopyFunction(atomAttributes)?.map(\n (attribute, i) => {\n if (i === index) {\n attribute.value = e.target.value || e.target.innerText\n }\n return attribute\n },\n )\n\n handleUpdateAttributes(attributesUpdate)\n }\n\n const handleUpdateAttribute = (e, index) => {\n const atomAttributesCopy = deepCopyFunction(atomAttributes)?.map(\n (attribute, i) => {\n if (i === index) {\n attribute.id = e.value\n attribute.name = e.label\n }\n\n return attribute\n },\n )\n setFocus(false)\n handleUpdateAttributes(atomAttributesCopy)\n }\n\n const handleAddAttribute = () => {\n const attributesUpdate = deepCopyFunction(atomAttributes) || []\n const newAttribute = { id: null, value: null, name: null }\n\n attributesUpdate.push(newAttribute)\n handleUpdateAttributes(attributesUpdate)\n if (callBack) callBack()\n }\n\n const handleDeleteAttribute = index => {\n const attributesUpdate = deepCopyFunction(atomAttributes)?.filter(\n (attribute, i) => index !== i,\n )\n\n handleUpdateAttributes(attributesUpdate)\n if (callBack) callBack()\n }\n\n return (\n <>\n
\n {!!atomAttributes?.length && (\n
Set attribute
\n )}\n
\n {atomAttributes?.map((attribute, index) => (\n
\n handleUpdateAttribute(e, index)}\n onBlur={() => setFocus(false)}\n onClick={() => setFocus(index)}\n menuPlacement={'top'}\n required={true}\n displayOptions={[DEFAULT, CHATBOT]}\n containerStyle={{ minWidth: 112, width: 112 }}\n isClearable={false}\n defaultAttributes={['language']}\n />\n handleUpdateAttributeValue(e, index)}\n />\n handleDeleteAttribute(index)}>\n \n
\n
\n ))}\n
\n \n {showPlusAttribute && (\n
\n {buttonName}\n
\n )}\n setOpen(false)} />\n \n )\n}\n\nPostbackAttributes.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBotId: state.activeBot?.id,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(PostbackAttributes)),\n)\n","export const styles = () => ({\n addButton: {\n color: 'rgba(22, 88, 243, 1)',\n fontWeight: 700,\n fontSize: 14,\n cursor: 'pointer',\n marginTop: 8,\n width: 'fit-content',\n },\n title: {\n fontSize: 14,\n fontWeight: 700,\n color: 'rgba(53, 64, 82, 1)',\n margin: '24px 0px 12px 0px',\n },\n attributeWrap: {\n display: 'flex',\n marginTop: 8,\n gap: '8px',\n position: 'relative',\n paddingRight: 26,\n },\n inputValue: {\n border: '1px solid rgba(53, 64, 82, 0.1)',\n outline: 'none',\n height: 38,\n borderRadius: 4,\n width: '128px',\n padding: '8px 12px',\n color: 'rgba(53, 64, 82, 0.7)',\n marginLeft: 8,\n },\n iconWrap: {\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n marginLeft: 8,\n position: 'absolute',\n right: '-3px',\n top: 6,\n },\n bottomScrollElem: {\n float: 'left',\n clear: 'both',\n },\n})\n","import React from 'react'\nimport {\n Checkbox,\n FormControlLabel,\n IconButton,\n Popover,\n Tab,\n Tabs,\n Typography,\n withStyles,\n} from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport States from '../States'\nimport { urlValidation } from '../../../../helpers/urlValidation'\nimport PostbackAttributes from '../PostbackAttributes/PostbackAttributes'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\n\nconst styles = theme => ({\n button: {\n marginBottom: theme.spacing.unit * 4,\n },\n typography: {\n margin: theme.spacing.unit * 2,\n },\n popover: {\n borderRadius: 10,\n height: 'auto',\n },\n tab: {\n width: '50%',\n fontFamily: 'Lato, sans-serif',\n minWidth: 134,\n },\n tabIndicator: {\n backgroundColor: '#1890ff',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n width: '100%',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: '100%',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 5,\n maxHeight: 40,\n minWidth: 220,\n },\n addParametersBtn: {\n marginTop: 10,\n textAlign: 'center',\n color: 'black',\n cursor: 'pointer',\n backgroundColor: 'white',\n height: 40,\n border: '0.5px solid rgb(51, 51, 51)',\n padding: 10,\n },\n popoverButton: {\n width: 'calc(100% - 32px)',\n color: 'rgba(97, 101, 129, 1)',\n fontWeight: 500,\n textAlign: 'center',\n height: 40,\n fontSize: 14,\n border: '1px solid #e5e5e5',\n outline: 'none',\n borderRadius: 10,\n margin: 16,\n },\n})\n\nfunction TabContainer(props) {\n return (\n \n {props.children}\n \n )\n}\n\nclass MessageButton extends React.Component {\n state = {\n open: false,\n anchorOriginVertical: 'top',\n anchorOriginHorizontal: 'center',\n transformOriginVertical: 'top',\n transformOriginHorizontal: 'center',\n positionTop: 200,\n positionLeft: 400,\n anchorReference: 'anchorEl',\n error: false,\n }\n\n handleChange = (event, value) => {\n const btn = { ...this.props.btn }\n btn.type = value\n\n if (btn.type === 'postback') {\n btn.payload = ''\n btn.url = undefined\n delete btn.messengerExtensions\n } else if (btn.type === 'web_url') {\n btn.payload = undefined\n btn.url = ''\n btn.messengerExtensions = true\n }\n this.props.onUpdate(btn)\n }\n handleClose = () => {\n this.setState({ open: false })\n }\n anchorEl = null\n\n handleUpdateAttributes = attributes => {\n const btn = { ...this.props.btn }\n btn.attributes = attributes\n this.props.onUpdate(btn)\n }\n\n handleChangeButton(value, fieldName) {\n const btn = { ...this.props.btn }\n btn[fieldName] = value\n this.props.onUpdate(btn)\n }\n\n handleChangeButtonUrl(value) {\n const btn = deepCopyFunction(this.props.btn)\n btn.url = value\n this.props.onUpdate(btn)\n }\n\n focus = () => {\n this.setState({\n open: true,\n })\n }\n\n updatePopoverPosition = () => {\n this.setState(\n {\n open: false,\n },\n () => {\n this.setState({\n open: true,\n })\n },\n )\n }\n\n render() {\n const { btn, rtl } = this.props\n const {\n open,\n anchorOriginVertical,\n anchorOriginHorizontal,\n transformOriginVertical,\n transformOriginHorizontal,\n positionTop,\n positionLeft,\n anchorReference,\n error,\n errorTitle,\n } = this.state\n const { classes } = this.props\n return (\n this.setState({ showDelete: true })}\n onMouseLeave={() => this.setState({ showDelete: false })}>\n {\n this.anchorEl = node\n }}\n onClick={this.focus}\n style={{\n color: 'transparent',\n textShadow: '0 0 0 #0084ff',\n borderRadius: this.props.last ? ' 0 0 10px 10px' : 0,\n borderBottom: this.props.last ? '0px' : '1px solid #e5e5e5',\n }}\n dir={rtl && 'rtl'}\n />\n \n \n \n \n
\n \n this.handleChangeButton(event.target.value, 'title')\n }\n maxLength={20}\n dir={rtl && 'rtl'}\n />\n
\n
\n this.handleChange(event, value)}>\n \n \n \n {btn.type === 'postback' && (\n \n {' '}\n \n this.handleChangeButton(value, 'payload')\n }\n value={btn.payload}\n />\n \n \n )}\n {btn.type === 'web_url' && (\n \n \n {\n if (e.keyCode === 13)\n this.handleChangeButtonUrl(e.target.value)\n }}\n onBlur={event => {\n this.handleChangeButtonUrl(event.target.value)\n }}\n defaultValue={btn.url}\n placeholder=\"Enter URL\"\n />\n
\n {\n const btn = { ...this.props.btn }\n btn.messengerExtensions = !btn.messengerExtensions\n this.props.onUpdate(btn)\n }}\n value=\"messengerExtensions\"\n color=\"primary\"\n />\n }\n label=\"Open in Messenger\"\n />\n \n \n )}\n
\n
\n \n \n \n )\n }\n}\n\nMessageButton.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles)(MessageButton)\n","import React from 'react'\nimport { IconButton, Popover, withStyles } from '@material-ui/core'\nimport States from '../States'\nimport PropTypes from 'prop-types'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\nimport PostbackAttributes from '../PostbackAttributes/PostbackAttributes'\n\nconst styles = theme => ({\n typography: {\n margin: theme.spacing.unit * 2,\n },\n paper: {\n borderRadius: 10,\n overflow: 'visible',\n padding: 16,\n },\n reply: {\n position: 'relative',\n },\n showDelete: {\n position: 'absolute',\n right: '-15px',\n top: '-10px',\n zIndex: 1,\n },\n hideDelete: {\n display: 'none',\n },\n payload: {\n margin: 0,\n fontSize: 10,\n position: 'absolute',\n top: 24,\n width: '100%',\n textAlign: 'center',\n color: 'grey',\n padding: '0 12px',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n title: {\n borderRadius: 35,\n color: '#2668E8',\n outline: 'none',\n textAlign: 'center',\n border: '1px solid #2668E8',\n backgroundColor: '#ffffff',\n padding: '10px 24px',\n fontSize: 14,\n lineHeight: '16px',\n resize: 'none',\n height: 36,\n width: '100%',\n },\n titlePopover: {\n borderRadius: 10,\n color: '#9B9CA3',\n outline: 'none',\n textAlign: 'center',\n border: '1px solid #9B9CA3',\n backgroundColor: '#ffffff',\n padding: '14px',\n fontSize: 14,\n lineHeight: '16px',\n resize: 'none',\n height: 40,\n width: '100%',\n },\n titles: {\n color: 'rgb(38, 104, 232)',\n fontSize: 14,\n maxHeigth: '100%',\n lineHeight: '0',\n },\n selectWrap: {\n marginTop: 16,\n },\n})\n\nclass QuickReply extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n open: false,\n anchorOriginVertical: 'top',\n anchorOriginHorizontal: 'center',\n transformOriginVertical: 'top',\n transformOriginHorizontal: 'center',\n positionTop: 200,\n positionLeft: 400,\n anchorReference: 'anchorEl',\n showDelete: false,\n }\n }\n\n handleChange(value, fieldName) {\n const reply = { ...this.props.reply }\n reply[fieldName] = value\n this.props.onChange(reply)\n }\n\n handleClickButton = () => {\n this.setState({\n open: true,\n })\n }\n\n handleUpdateAttributes = attributes => {\n const reply = { ...this.props.reply }\n reply.attributes = attributes\n this.props.onChange(reply)\n }\n\n handleClose = () => {\n this.setState({\n open: false,\n })\n }\n\n anchorEl = null\n\n showDelete(show) {\n this.setState({ showDelete: show })\n }\n\n updatePopoverPosition = () => {\n this.setState(\n {\n open: false,\n },\n () => {\n this.setState({\n open: true,\n })\n },\n )\n }\n\n render() {\n const {\n open,\n anchorOriginVertical,\n anchorOriginHorizontal,\n transformOriginVertical,\n transformOriginHorizontal,\n positionTop,\n positionLeft,\n anchorReference,\n } = this.state\n const { classes, reply, rtl } = this.props\n const isRtl = rtl ? 'rtl' : 'ltr'\n const error = reply.content_type === 'text' && isStringEmpty(reply.payload)\n return (\n this.showDelete(true)}\n onMouseLeave={() => this.showDelete(false)}>\n {\n this.anchorEl = node\n }}\n onClick={() => this.handleClickButton()}\n readOnly={reply.content_type !== 'text' ? 'readonly' : false}\n dir={isRtl}\n />\n

this.handleClickButton()}>\n {this.props.reply.payload}\n

\n this.props.onDelete()}>\n \n \n \n
\n this.handleChange(event.target.value, 'title')}\n maxLength={40}\n readOnly={reply.content_type !== 'text' ? 'readonly' : false}\n dir={isRtl}\n />\n this.props.onDelete()}>\n \n \n
\n this.handleChange(value, 'payload')}\n value={this.props.reply.payload}\n />\n
\n \n
\n \n \n )\n }\n}\n\nQuickReply.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles)(QuickReply)\n","/**\n * Created by Admin on 16.02.2018.\n */\nimport React from 'react'\nimport QuickReply from './QuickReply'\nimport { OvalIcon } from '../../../../uiKit/icons/Icons'\nimport { Popover, withStyles } from '@material-ui/core'\n\nconst styles = {\n container: {\n direction: 'inherit',\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: 53,\n display: 'flex',\n margin: '20px auto auto',\n },\n view: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'scroll',\n marginRight: -17,\n marginBottom: -17,\n display: 'flex',\n },\n threeIcon: {\n borderLeft: '1px solid #1658F3',\n display: 'flex',\n flexDirection: 'column',\n padding: '7px 13px',\n justifyContent: 'space-between',\n width: 35,\n },\n replyItems: {\n display: 'flex',\n flexDirection: 'column',\n },\n replyItem: {\n fontSize: 14,\n color: '#3A3F62',\n padding: 16,\n cursor: 'pointer',\n },\n popover: {\n background: '#FFFFFF',\n border: '1px solid #D7D8DF',\n boxSizing: 'border-box',\n borderRadius: 10,\n boxShadow: 'none',\n },\n qrWrap: {\n display: '-webkit-box',\n overflow: 'scroll',\n marginTop: 10,\n '&::-webkit-scrollbar': {\n height: 6,\n },\n '&::-webkit-scrollbar-thumb': {\n opacity: 0.6,\n backgroundColor: 'rgba(99, 99, 99, 0.2)',\n },\n },\n}\n\nclass MessageQuickReplies extends React.Component {\n state = {\n open: false,\n positionTop: 400,\n positionLeft: 200,\n anchorReference: 'anchorEl',\n }\n\n handleChange(reply, replyIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.quick_replies[replyIndex] = reply\n this.props.updateMessage(newMessage)\n }\n\n addNewReply(type) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.quick_replies == null) {\n newMessage.quick_replies = []\n }\n if (type == undefined) {\n newMessage.quick_replies.push({\n title: '',\n content_type: 'text',\n payload: '',\n })\n } else {\n newMessage.quick_replies.push({\n content_type: type,\n })\n }\n\n this.props.updateMessage(newMessage)\n }\n\n focus() {\n this.setState({\n open: true,\n })\n }\n\n handleClose = () => {\n this.setState({\n open: false,\n })\n }\n\n deleteReply(replyIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.quick_replies.splice(replyIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const { open, anchorReference } = this.state\n const { classes, rtl } = this.props\n return (\n
\n {this.props.message.quick_replies != null &&\n this.props.message.quick_replies.map((reply, replyIndex) => (\n
\n this.deleteReply(replyIndex)}\n onChange={reply => this.handleChange(reply, replyIndex)}\n rtl={rtl}\n />\n
\n ))}\n {(this.props.message.quick_replies == null ||\n this.props.message.quick_replies.length < 11) && (\n {\n this.anchorEl = node\n }}\n className=\"add-reply\">\n
this.addNewReply()}>\n + Add Quick Reply\n
\n
this.focus()} style={styles.threeIcon}>\n \n \n \n
\n
\n )}\n \n
\n
\n this.addNewReply('user_phone_number')}\n className={classes.replyItem}>\n Phone number\n
\n this.addNewReply('location')}\n className={classes.replyItem}>\n Location\n
\n this.addNewReply('user_email')}\n className={classes.replyItem}>\n Email\n \n \n \n \n \n )\n }\n}\n\nexport default withStyles(styles)(MessageQuickReplies)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles } from './styles'\nimport ReactTooltip from 'react-tooltip'\nimport { getAttributeColor } from '../../helpers/getAttributeColor'\n\nconst AttributeItem = props => {\n const {\n classes,\n attribute,\n onClick,\n selectedAttribute,\n index,\n onMouseEnter,\n } = props\n\n return (\n <>\n {attribute.type === 'GROUP' ? (\n {attribute.title}\n ) : (\n onMouseEnter(index)}\n onClick={() => onClick(attribute)}>\n \n {attribute.name}\n \n\n {attribute.description && (\n \n {attribute.description}\n \n )}\n \n )}\n \n )\n}\n\nexport default withStyles(styles)(AttributeItem)\n","export const styles = () => ({\n category: {\n height: 36,\n padding: '8px 12px',\n color: '#354052',\n display: 'block',\n fontSize: 14,\n },\n option: {\n margin: '5px 12px',\n color: '#ffffff',\n padding: '1px 8px',\n borderRadius: 50,\n width: 'fit-content',\n fontSize: 14,\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n tooltip: {\n maxWidth: '100%',\n width: '300px',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n textAlign: 'start',\n fontWeight: 'normal',\n padding: 10,\n backgroundColor: '#616581',\n },\n optionWrap: {\n width: '100%',\n height: 33,\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n },\n})\n","export const CHATBOT_TITLE = { type: 'GROUP', title: 'Chatbot attributes' }\nexport const WIDGET_TITLE = { type: 'GROUP', title: 'Widget attributes' }\nexport const FACEBOOK_TITLE = { type: 'GROUP', title: 'Facebook attributes' }\nexport const WHATSAPP_TITLE = { type: 'GROUP', title: 'Whatsapp attributes' }\nexport const TWILIO_TITLE = { type: 'GROUP', title: 'Twilio attributes' }\n","import React, { useEffect, useState } from 'react'\nimport { ClickAwayListener, withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport Popper from '@material-ui/core/Popper'\n\nimport Search from '../../uiKit/Search/Search'\nimport AttributesModal from '../../tabs/settings/components/general/AttributesModal/AttributesModal'\nimport { deepCopyFunction } from '../../helpers/deepCopyFunction'\nimport { createAttribute } from '../../tabs/settings/api/attributes'\nimport AttributeItem from '../AttributeItem/AttributeItem'\n\nimport { styles } from './styles'\nimport {\n CHATBOT_TITLE,\n FACEBOOK_TITLE,\n TWILIO_TITLE,\n WHATSAPP_TITLE,\n WIDGET_TITLE,\n} from './config'\nimport {\n CHATBOT,\n FACEBOOK,\n TWILIO,\n WHATSAPP,\n WIDGET,\n} from '../../constants/attributeTypes'\n\nconst AttributesList = props => {\n const {\n classes,\n show,\n onClose,\n position,\n addParam,\n activeBot,\n showSearch,\n attributes,\n twilioCredentials,\n listRef,\n selectedAttribute,\n updateSelectedAttribute,\n onKeyDown,\n } = props\n const [searchValue, setSearchValue] = useState('')\n const [open, setOpen] = useState(false)\n const [options, setOptions] = useState([])\n\n const isMatch = deepCopyFunction(attributes)\n ?.filter(attribute => attribute?.name?.includes(searchValue))\n ?.filter(attribute => attribute?.name?.includes(props.searchValue))?.length\n\n const isFacebookConnected = activeBot?.messengerConfigs?.accessToken\n const isWhatsappConnected = activeBot?.amioWhatsAppConfigs?.accessToken\n const isTwilioConnected = twilioCredentials?.connected\n\n useEffect(() => {\n const chatbotAttributes = getAttributeList(CHATBOT, true, CHATBOT_TITLE)\n const widgetAttributes = getAttributeList(WIDGET, true, WIDGET_TITLE)\n const facebookAttributes = getAttributeList(\n FACEBOOK,\n isFacebookConnected,\n FACEBOOK_TITLE,\n )\n const whatsappAttributes = getAttributeList(\n WHATSAPP,\n isWhatsappConnected,\n WHATSAPP_TITLE,\n )\n const twilioAttributes = getAttributeList(\n TWILIO,\n isTwilioConnected,\n TWILIO_TITLE,\n )\n\n setOptions([\n ...chatbotAttributes,\n ...widgetAttributes,\n ...facebookAttributes,\n ...whatsappAttributes,\n ...twilioAttributes,\n ])\n }, [attributes?.length, searchValue, props.searchValue])\n\n useEffect(() => {\n setSearchValue('')\n }, [show])\n\n useEffect(() => {\n updateSelectedAttribute(1)\n }, [searchValue])\n\n const getAttributeList = (type, connected, titleObject) => {\n const options = filterOptions(type)\n\n return options?.length && connected ? [titleObject, ...options] : []\n }\n\n const handleClose = attribute => {\n addParam(attribute.name)\n }\n\n const handleCreateAttribute = () => {\n const newAttribute = { name: searchValue || props.searchValue }\n\n createAttribute(activeBot.id, newAttribute).then(attribute => {\n handleClose(attribute)\n })\n }\n\n const filterOptions = type => {\n return attributes\n ?.filter(\n attribute =>\n attribute.type === type && attribute?.name?.includes(searchValue),\n )\n ?.filter(\n attribute =>\n attribute.type === type &&\n attribute?.name?.includes(props.searchValue),\n )\n }\n\n const handleOpenModal = () => {\n setOpen(true)\n onClose()\n }\n\n return (\n <>\n {show && (attributes?.length || searchValue || props.searchValue) && (\n \n \n
\n {showSearch && (\n setSearchValue(e.target.value)}\n onKeyDown={onKeyDown}\n style={{ margin: 6 }}\n />\n )}\n \n {isMatch ? (\n options.map((attribute, index) => (\n \n ))\n ) : (\n \n

Create new attribute:

\n

\n {searchValue || props.searchValue}\n

\n
\n )}\n \n
\n Manage attibutes\n
\n \n
\n \n )}\n\n setOpen(false)} />\n \n )\n}\n\nAttributesList.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBot: state.activeBot,\n twilioCredentials: state.twilioCredentials,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(AttributesList))\n","export const styles = () => ({\n attributesContainer: {\n maxHeight: 236,\n overflowY: 'scroll',\n overflowX: 'hidden',\n outline: 'none',\n },\n button: {\n height: 36,\n width: 212,\n color: '#1658F3',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderTop: '1px solid rgba(53, 64, 82, 0.1)',\n cursor: 'pointer',\n background: '#ffffff',\n fontSize: 14,\n },\n addAttibute: {\n padding: '8px 12px',\n backgroundColor: 'rgba(90, 152, 247, 0.1)',\n cursor: 'pointer',\n },\n optionTitle: {\n color: 'rgba(53, 64, 82, 0.7)',\n fontSize: 14,\n margin: 0,\n },\n option: {\n margin: '4px 0px 0px',\n color: '#ffffff',\n padding: '1px 8px',\n borderRadius: 50,\n width: 'fit-content',\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: '#5A98F7',\n },\n container: {\n zIndex: 10000,\n width: 200,\n background: '#ffffff',\n position: 'absolute',\n border: '1px solid rgba(53, 64, 82, 0.1)',\n borderRadius: 5,\n overflow: 'hidden',\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const AttributeIcon = () => {\n return (\n \n \n \n \n )\n}\n","export const container = {\n width: 200,\n height: 314,\n}\n\nexport const ATTRIBUTE_REGEX = /{{[^{]*?}}/g\nexport const ATTRIBUTE_REGEX_OR_OPEN_BRACKETS = /{{[^{]*?}}|{{/g\nexport const ATTRIBUTE_REGEX_INCLUDE = /({{[^{]*?}})/g\nexport const NOT_ASTERISK_REGEX = '[^*]+'\nexport const EMPTY_BRACKETS = ''\nexport const OPEN_BRACKET = '{'\nexport const CLOSE_BRACKET = '}'\nexport const ASTERISK = '*'\nexport const CLOSE_PAIR_BRACKET = '}}'\nexport const OPEN_PAIR_BRACKET = '{{'\n","import { useEffect, useRef } from 'react'\n\nexport function usePrevious(value) {\n const ref = useRef()\n useEffect(() => {\n ref.current = value\n })\n return ref.current\n}\n","export const regexIndexOf = (string, regex, startpos) => {\n var indexOf = string.substring(startpos || 0).search(regex)\n return indexOf >= 0 ? indexOf + (startpos || 0) : indexOf\n}\n","import React, { useEffect, useRef, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport AttributesList from '../../uiKit/AttributesList/AttributesList'\nimport { AttributeIcon } from '../icons/AttributeIcon'\nimport { getAttributeColor } from '../../helpers/getAttributeColor'\nimport { createAttribute } from '../../tabs/settings/api/attributes'\n\nimport { styles } from './styles'\nimport {\n ARROW_DOWN_KEY,\n ARROW_LEFT_KEY,\n ARROW_RIGHT_KEY,\n ARROW_UP_KEY,\n BACKSPACE_KEY,\n DELETE_KEY,\n ENTER_KEY,\n SPACE_KEY,\n} from '../../constants/keyCodes'\nimport {\n ASTERISK,\n ATTRIBUTE_REGEX,\n ATTRIBUTE_REGEX_INCLUDE,\n CLOSE_BRACKET,\n CLOSE_PAIR_BRACKET,\n container,\n EMPTY_BRACKETS,\n OPEN_BRACKET,\n OPEN_PAIR_BRACKET,\n NOT_ASTERISK_REGEX,\n ATTRIBUTE_REGEX_OR_OPEN_BRACKETS,\n} from './config'\nimport { usePrevious } from '../../hooks/usePrevious'\nimport { regexIndexOf } from '../../helpers/regexIndexOf'\n\nconst InputWithParams = props => {\n const {\n classes,\n rtl,\n value,\n placeholder,\n onChange,\n height,\n disableBorderRadius,\n attributes,\n activeBotId,\n scrollBlock,\n } = props\n\n const [show, setShow] = useState(false)\n const [showSearch, setShowSearch] = useState(false)\n const [currentValue, setCurrentValue] = useState(null)\n const [searchValue, setSearchValue] = useState(EMPTY_BRACKETS)\n const [selectedAttribute, setSelectAttribute] = useState(1)\n const [caretPosition, setCaretPosition] = useState(0)\n\n const prevShow = usePrevious(show)\n\n const backdrop = useRef(null)\n const highlights = useRef(null)\n const textarea = useRef(null)\n const attributeIcon = useRef(null)\n const attributeList = useRef(null)\n\n useEffect(() => {\n if (highlights?.current) {\n highlights.current.innerHTML = applyHighlights(textarea.current.value)\n }\n }, [value, attributes])\n\n useEffect(() => {\n if (scrollBlock?.current?.style?.overflowY)\n scrollBlock.current.style.overflowY = show ? 'hidden' : 'scroll'\n if (prevShow && show !== prevShow) {\n textarea.current.focus()\n if (caretPosition) updateCursorPosition(caretPosition)\n }\n\n setSearchValue(EMPTY_BRACKETS)\n setSelectAttribute(1)\n }, [show])\n\n const handleScroll = event => {\n backdrop.current.scrollTop = event.target.scrollTop\n backdrop.current.scrollLeft = event.target.scrollLeft\n }\n\n const handleInput = event => {\n const text = event.target.value\n const selectionStart = textarea.current.selectionStart\n const selectionEnd = textarea.current.selectionEnd\n\n highlights.current.innerHTML = applyHighlights(text)\n\n //open attributes list when '{{' was typed\n if (\n text[selectionStart - 1] === OPEN_BRACKET &&\n text[selectionStart - 2] === OPEN_BRACKET\n ) {\n handleShowAttributes(false)\n }\n\n //close attributes list when '{' was removed\n if (\n text[selectionStart - 1] === OPEN_BRACKET &&\n text[selectionStart - 2] !== OPEN_BRACKET\n ) {\n setCaretPosition(selectionEnd)\n setShow(false)\n }\n\n //create new attribute when '}}' was typed\n if (\n text[selectionEnd - 1] === CLOSE_BRACKET &&\n text[selectionEnd - 2] === CLOSE_BRACKET &&\n text[selectionEnd - 3] !== CLOSE_BRACKET\n ) {\n const subString = text.substring(\n text.lastIndexOf(OPEN_PAIR_BRACKET) + 2,\n selectionEnd - 2,\n )\n const isNewAttribute = !attributes.some(\n attribute => attribute.name === subString,\n )\n\n if (!subString.includes(CLOSE_PAIR_BRACKET) && isNewAttribute) {\n handleCreateAttribute(subString)\n } else {\n setShow(false)\n }\n }\n\n handleSearch(text)\n }\n\n const handleSearch = text => {\n const caretPosition = textarea.current.selectionStart\n const noAttributesText = text?.replace(ATTRIBUTE_REGEX, EMPTY_BRACKETS)\n const arrowIndex = noAttributesText.indexOf(OPEN_PAIR_BRACKET)\n const textStart = text.substring(0, caretPosition)\n const noAttributeTextStartLength = textStart\n .replace(ATTRIBUTE_REGEX, EMPTY_BRACKETS)\n .substring(0, caretPosition).length\n const newSearchValue = noAttributesText.substring(\n arrowIndex,\n caretPosition - (textStart.length - noAttributeTextStartLength),\n )\n\n if (\n newSearchValue.includes(OPEN_PAIR_BRACKET) &&\n !newSearchValue.includes(CLOSE_BRACKET)\n ) {\n setSearchValue(newSearchValue.replace(OPEN_PAIR_BRACKET, EMPTY_BRACKETS))\n }\n }\n\n const handleArrowDown = event => {\n const key = event.keyCode || event.charCode\n\n if (key === ARROW_DOWN_KEY) {\n event.preventDefault()\n\n if (show) {\n updateAttributeListScroll(ARROW_DOWN_KEY)\n }\n }\n }\n\n const handleArrowUp = event => {\n const key = event.keyCode || event.charCode\n\n if (key === ARROW_UP_KEY) {\n event.preventDefault()\n\n if (show) {\n updateAttributeListScroll(ARROW_UP_KEY)\n }\n }\n }\n\n const handleEnter = event => {\n const key = event.keyCode || event.charCode\n\n if (key === ENTER_KEY && show) {\n event.preventDefault()\n\n if (\n attributeList?.current?.childNodes[selectedAttribute]?.innerText ||\n searchValue\n ) {\n const attributeName =\n attributeList?.current?.childNodes[selectedAttribute]?.innerText ||\n searchValue\n addParam(attributeName)\n }\n }\n }\n\n const handleLeftArrow = event => {\n const key = event.keyCode || event.charCode\n const prevChar =\n event.target.value &&\n event.target.value[textarea.current.selectionStart - 1]\n\n if (key === ARROW_LEFT_KEY && show) {\n event.preventDefault()\n }\n\n if (key === ARROW_LEFT_KEY && prevChar === CLOSE_BRACKET) {\n event.preventDefault()\n\n const closestBracketsIndex = event.target.value\n .substring(0, textarea.current.selectionStart)\n .lastIndexOf(OPEN_PAIR_BRACKET)\n\n updateCursorPosition(closestBracketsIndex)\n }\n }\n\n const handleRightArrow = event => {\n const key = event.keyCode || event.charCode\n const nextChar =\n event.target.value &&\n event.target.value[textarea.current.selectionStart + 1]\n\n if (key === ARROW_RIGHT_KEY && show) {\n event.preventDefault()\n }\n\n if (key === ARROW_RIGHT_KEY && nextChar === OPEN_BRACKET) {\n event.preventDefault()\n\n const stringStart = event.target.value.substring(\n 0,\n textarea.current.selectionStart,\n )\n\n const closestBracketsIndex =\n event.target.value\n .substring(textarea.current.selectionStart, event.target.value.length)\n .indexOf(CLOSE_PAIR_BRACKET) +\n stringStart.length +\n 2\n\n updateCursorPosition(closestBracketsIndex)\n }\n }\n\n const handleSpace = event => {\n const key = event.keyCode || event.charCode\n const prevChar =\n event.target.value &&\n event.target.value[textarea.current.selectionStart - 1]\n\n if (!showSearch && prevChar === OPEN_BRACKET && key === SPACE_KEY) {\n event.preventDefault()\n }\n }\n\n const onKeyDown = event => {\n handleSpace(event)\n\n handleArrowDown(event)\n\n handleArrowUp(event)\n\n handleEnter(event)\n\n handleLeftArrow(event)\n\n handleRightArrow(event)\n\n setCurrentValue(event.target.value)\n }\n\n const updateAttributeListScroll = direction => {\n let selectedChildNodeIndex\n const childNodes = attributeList?.current?.childNodes\n const directionStep = direction === ARROW_UP_KEY ? -1 : 1\n const childNodesLength = childNodes?.length - 1\n\n //change index of highlighted item\n if (childNodes[selectedAttribute + directionStep]) {\n selectedChildNodeIndex = selectedAttribute + directionStep\n } else {\n selectedChildNodeIndex = direction === ARROW_UP_KEY ? childNodesLength : 1\n }\n\n //make one step ahead when childNode is not item\n if (childNodes[selectedChildNodeIndex].nodeName !== 'DIV') {\n selectedChildNodeIndex =\n selectedChildNodeIndex + directionStep < 1\n ? childNodesLength\n : selectedChildNodeIndex + directionStep\n }\n\n const selectedChildNode = childNodes[selectedChildNodeIndex]\n\n selectedChildNode.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center',\n })\n setSelectAttribute(selectedChildNodeIndex)\n }\n\n //function to remove whole attribute by 'delete' or 'backspace'\n const onKeyUp = event => {\n const key = event.keyCode || event.charCode\n const position = textarea.current.selectionStart\n const placeholder = ATTRIBUTE_REGEX\n\n if (key === DELETE_KEY || key === BACKSPACE_KEY) {\n for (let match; (match = placeholder.exec(currentValue)) !== null;) {\n if (match.index < position + 1 && placeholder.lastIndex > position) {\n onChange(\n currentValue.substr(0, match.index) +\n currentValue.substring(\n placeholder.lastIndex,\n currentValue.length,\n ),\n )\n const caretPosition = currentValue.substr(0, match.index).length\n\n //need this to keep cursor position\n setTimeout(() => updateCursorPosition(caretPosition), 0)\n }\n }\n }\n }\n\n const addParam = attributeName => {\n const position = textarea.current.selectionStart\n const stringStart = value.slice(0, position)\n const lastBracketIndex = stringStart.lastIndexOf(OPEN_PAIR_BRACKET)\n const start = showSearch\n ? stringStart\n : stringStart.slice(0, lastBracketIndex)\n const end = value.slice(position)\n const text = `${start}{{${attributeName}}}${end}`\n const caretPosition =\n position +\n (attributeName?.length - searchValue.length) +\n (showSearch ? 4 : 2)\n\n setCaretPosition(caretPosition)\n onChange(text)\n setShow(false)\n }\n\n const handleShowAttributes = focus => {\n setShow(true)\n setShowSearch(focus)\n }\n\n const handleCreateAttribute = attributeName => {\n createAttribute(activeBotId, { name: attributeName }).then(() =>\n setShow(false),\n )\n }\n\n const getPopupPosition = () => {\n const buttonPos = attributeIcon?.current?.getBoundingClientRect()\n\n const highlightsPos =\n highlights?.current?.children &&\n Object.values(highlights?.current?.children)\n ?.find(value => value?.nodeName === 'SPAN')\n ?.getBoundingClientRect()\n\n const isEnoughSpace =\n buttonPos?.top + buttonPos?.height + container.height > window.innerHeight\n\n const topFromButton = isEnoughSpace\n ? buttonPos?.top + buttonPos?.height - container.height + 'px'\n : buttonPos?.top + buttonPos?.height + 'px'\n\n const leftFromButton = isEnoughSpace\n ? buttonPos?.left + buttonPos?.width + 'px'\n : buttonPos?.left + buttonPos?.width - container.width + 'px'\n\n const topFromTextarea = highlightsPos?.top + 20 + 'px'\n\n const leftTextarea = highlightsPos?.left + 10 + 'px'\n\n return {\n top: showSearch ? topFromButton : topFromTextarea,\n left: showSearch ? leftFromButton : leftTextarea,\n }\n }\n\n const handleCloseAttributeList = () => {\n const text = value\n .split(ATTRIBUTE_REGEX_INCLUDE)\n .map(removeExtraBrackets)\n .join(EMPTY_BRACKETS)\n\n onChange(text)\n setShow(false)\n }\n\n const removeExtraBrackets = str => {\n if (!str.endsWith(CLOSE_PAIR_BRACKET)) {\n return str.replace(`{{${searchValue}`, EMPTY_BRACKETS)\n }\n return str\n }\n\n const updateCursorPosition = caretPosition => {\n textarea.current.selectionStart = caretPosition\n textarea.current.selectionEnd = caretPosition\n }\n\n const handleSkipAttribute = () => {\n const updatedValue = value.replaceAll(ATTRIBUTE_REGEX_INCLUDE, match => {\n return match.replace(/[^{}]/g, ASTERISK)\n })\n\n const prevChar = updatedValue[textarea.current.selectionStart - 1]\n const nextChar = updatedValue[textarea.current.selectionStart]\n\n if (\n [ASTERISK, CLOSE_BRACKET, OPEN_BRACKET].includes(prevChar) &&\n [ASTERISK, CLOSE_BRACKET, OPEN_BRACKET].includes(nextChar)\n ) {\n const endText = updatedValue.substring(\n textarea.current.selectionStart,\n updatedValue.length,\n )\n let caretPosition = updatedValue.substring(\n 0,\n textarea.current.selectionStart,\n ).length\n\n if (\n regexIndexOf(endText, NOT_ASTERISK_REGEX, 0) > 0 ||\n (prevChar === ASTERISK && nextChar === CLOSE_BRACKET)\n ) {\n caretPosition += regexIndexOf(endText, NOT_ASTERISK_REGEX, 0) + 2\n } else if (prevChar === OPEN_BRACKET && nextChar === OPEN_BRACKET) {\n caretPosition += regexIndexOf(endText, NOT_ASTERISK_REGEX, 2) + 2\n } else if (prevChar === CLOSE_BRACKET && nextChar === CLOSE_BRACKET) {\n caretPosition += regexIndexOf(endText, NOT_ASTERISK_REGEX, 0) + 1\n } else if (prevChar === CLOSE_BRACKET && nextChar === OPEN_BRACKET) {\n caretPosition = textarea.current.selectionStart\n } else {\n caretPosition = updatedValue.length\n }\n\n updateCursorPosition(caretPosition)\n }\n }\n\n const applyHighlights = text => {\n return text\n ?.replace(/\\n$/g, '\\n\\n')\n ?.replace(ATTRIBUTE_REGEX_OR_OPEN_BRACKETS, onReplaceAttribute)\n }\n\n const onReplaceAttribute = match => {\n const matchCopy = match?.replace(/{{/g, '')?.replace(/}}/g, '')\n const currentAttribute = attributes?.find(\n attribute => attribute.name === matchCopy,\n )\n const openBracketsStyle = `background: ${getAttributeColor(\n currentAttribute?.type,\n )}; color:transparent; border-radius: 50px 0 0 50px;`\n const attributeStyle = `background: ${getAttributeColor(\n currentAttribute?.type,\n )}; color:#ffffff;`\n const closeBracketsStyle = `background: ${getAttributeColor(\n currentAttribute?.type,\n )}; color:transparent; border-radius: 0 50px 50px 0;`\n\n return match.length > 2\n // eslint-disable-next-line max-len\n ? `{{${matchCopy}}}`\n : `${match}`\n }\n\n const handleBlur = () => {\n setCaretPosition(textarea.current.selectionStart)\n }\n\n return (\n \n \n \n \n onChange(event.target.value)}\n onScroll={handleScroll}\n onInput={handleInput}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n onClick={handleSkipAttribute}\n onBlur={handleBlur}\n ref={textarea}\n />\n onKeyDown(event)}\n updateSelectedAttribute={setSelectAttribute}\n />\n handleShowAttributes(true)}\n onKeyDown={event => onKeyDown(event)}\n tabIndex={'0'}\n ref={attributeIcon}>\n \n \n \n )\n}\n\nInputWithParams.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBotId: state.activeBot?.id,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(InputWithParams))\n","export const styles = () => ({\n container: {\n display: 'flex',\n transform: 'translateZ(0)',\n '-webkit-text-size-adjust': 'none',\n width: '100%',\n position: 'relative',\n '&:hover span': {\n visibility: 'visible',\n },\n },\n backdrop: {\n position: 'absolute',\n zIndex: 1,\n border: '1px solid #e5e5e5',\n backgroundColor: '#fff',\n overflow: 'auto',\n pointerEvents: 'none',\n transition: 'transform 1s',\n width: '100%',\n lineHeight: '20px',\n fontSize: '14px',\n },\n highlights: {\n padding: 10,\n lineHeight: '20px',\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n '&>span': {\n display: 'inline',\n },\n },\n textarea: {\n display: 'block',\n position: 'absolute',\n zIndex: 2,\n margin: 0,\n border: '1px solid #e5e5e5',\n color: 'transparent',\n backgroundColor: 'transparent',\n overflow: 'auto',\n resize: 'none',\n transition: 'transform 1s',\n outline: 'none',\n padding: 10,\n lineHeight: '20px',\n caretColor: '#000000',\n fontFamily: \"'Lato', sans-serif\",\n wordWrap: 'break-word',\n },\n icon: {\n width: 24,\n height: 24,\n borderRadius: 4,\n backgroundColor: 'rgba(53, 64, 82, 0.7)',\n position: 'absolute',\n zIndex: 2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n visibility: 'hidden',\n bottom: 4,\n right: 4,\n outline: 'none',\n },\n})\n","import React from 'react'\nimport { IconButton, Tooltip, withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { Warning } from '@material-ui/icons'\n\nimport { PlusIcon, TrashIcon } from '../../../../uiKit/icons/Icons'\nimport { USE_MESSAGE_KEYS } from '../../../../configs'\nimport MessageButton from '../messages/MessageButton'\nimport MessageQuickReplies from '../messages/MessageQuickReplies'\nimport InputWithParams from '../../../../uiKit/InputWithParams/InputWithParams'\nimport { styles } from './styles'\n\nconst TextMessage = props => {\n const { classes, message, updateMessage, onDelete, rtl, scrollBlock } = props\n\n const handleChangeName = value => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.name = value\n updateMessage(newMessage)\n }\n\n const handleChangeText = (index, value) => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.texts[index] = value\n updateMessage(newMessage)\n }\n\n const updateBtn = (btn, btnIndex) => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.buttons[btnIndex] = btn\n updateMessage(newMessage)\n }\n\n const deleteButton = btnIndex => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.buttons.splice(btnIndex, 1)\n updateMessage(newMessage)\n }\n\n const addNewButton = () => {\n const newMessage = JSON.parse(JSON.stringify(message))\n if (newMessage.buttons == null) newMessage.buttons = []\n\n newMessage.buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n updateMessage(newMessage)\n }\n\n const handleDeleteText = index => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.texts.splice(index, 1)\n updateMessage(newMessage)\n }\n\n const addAddTextField = () => {\n const newMessage = JSON.parse(JSON.stringify(message))\n newMessage.texts.push('')\n updateMessage(newMessage)\n }\n\n return (\n
\n
\n
\n {onDelete && !message?.isHardCoded && (\n \n \n \n \n \n )}\n\n {message?.isHardCoded && (\n \n \n \n )}\n\n {USE_MESSAGE_KEYS && (\n handleChangeName(event.target.value)}\n />\n )}\n\n handleChangeText(0, value)}\n value={message.texts[0]}\n placeholder=\"Input text...\"\n disableBorderRadius={true}\n rtl={rtl}\n scrollBlock={scrollBlock}\n />\n\n
\n {message?.buttons?.map((btn, index) => (\n updateBtn(btn, index)}\n onDelete={() => deleteButton(index)}\n />\n ))}\n {(message.buttons == null || message.buttons.length < 3) && (\n
\n Add button\n
\n )}\n
\n
\n\n {message.texts\n .filter((elem, index) => index !== 0)\n .map((elem, index) => (\n
\n handleDeleteText(index + 1)}>\n \n \n \n \n handleChangeText(index + 1, value)}\n value={message.texts[index + 1]}\n style={{ borderRadius: 10 }}\n placeholder=\"Input text...\"\n scrollBlock={scrollBlock}\n />\n
\n ))}\n
\n \n
\n
\n \n
\n )\n}\n\nTextMessage.propTypes = {\n classes: PropTypes.object,\n message: PropTypes.object,\n updateMessage: PropTypes.func,\n onDelete: PropTypes.func,\n}\n\nexport default withStyles(styles)(TextMessage)\n","export const styles = () => ({\n container: {\n width: '100%',\n },\n textFieldsWrap: {\n display: 'flex',\n overflow: 'scroll',\n alignItems: 'center',\n cursor: 'pointer',\n '&::-webkit-scrollbar': {\n height: 6,\n },\n '&::-webkit-scrollbar-thumb': {\n opacity: 0.6,\n backgroundColor: 'rgba(99, 99, 99, 0.2)',\n },\n },\n message: {\n width: 280,\n position: 'relative',\n padding: 0,\n borderRadius: 10,\n backgroundColor: '#f8f8f8',\n textAlign: 'left',\n minWidth: 250,\n margin: '0px 0px 10px',\n maxWidth: 250,\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n deleteTemplate: {\n left: '228px',\n top: '0px',\n position: 'absolute',\n display: 'none',\n transition: 'all 0.5s ease',\n },\n deleteIcon: {\n background: 'white',\n border: '1px solid #EBEBEF',\n boxShadow: '0px 3px 6px #EBEBEF',\n width: 40,\n height: 40,\n position: 'absolute',\n right: -40,\n display: 'block',\n },\n tooltip: {\n margin: 10,\n color: '#f44336',\n },\n keyInput: {\n width: '100%',\n border: '1px solid #e5e5e5',\n borderBottom: '0px',\n borderRadius: '10px 10px 0px 0px',\n outline: 'none',\n height: 40,\n fontSize: 14,\n padding: '0px 10px',\n },\n buttonsContainer: {\n backgroundColor: 'white',\n borderRadius: '0 0 10px 10px',\n border: '1px solid #e5e5e5',\n borderTop: '0px solid #e5e5e5',\n },\n textWrap: {\n minWidth: 250,\n marginLeft: 10,\n position: 'relative',\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n deleteText: {\n background: 'white',\n border: '1px solid #EBEBEF',\n boxShadow: '0px 3px 6px #EBEBEF',\n width: 40,\n height: 40,\n },\n plusIconWrap: {\n minWidth: 250,\n height: 120,\n marginLeft: 10,\n border: '1px solid #e5e5e5',\n borderRadius: 10,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n },\n deleteIconWrap: {\n position: 'absolute',\n right: -19,\n display: 'none',\n marginTop: -20,\n zIndex: 100,\n },\n addButton: {\n background: '#5A98F7',\n color: 'white',\n fontWeight: 500,\n padding: 6,\n textAlign: 'center',\n cursor: 'pointer',\n margin: 'auto',\n borderRadius: '0 0 10px 10px',\n '&:hover': {\n color: '#0084ff',\n background: 'white',\n },\n },\n})\n","/**\n * Created by Admin on 22.03.2018.\n */\n/**\n * @author Den Boyko\n * @version 1.0\n */\nimport React from 'react'\nimport Dropzone from 'react-dropzone'\nimport { withStyles } from '@material-ui/core/styles'\nimport { alertError, logoutOnRequestOrResponseJson } from '../../api'\nimport { BASE_URL } from '../../configs'\nimport { PhotoIcon } from '../icons/Icons'\nimport * as cookie from 'react-cookies'\nimport { isStringEmpty } from '../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n image: {\n width: 'auto',\n height: 'auto',\n maxWidth: '100%',\n maxHeight: '100%',\n margin: 'auto',\n },\n replace: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n maxHeight: 80,\n },\n container: {\n background: '#FFFFFF',\n border: '1px dashed #D7D8DF',\n boxSizing: 'border-box',\n borderRadius: 10,\n margin: '0 auto',\n width: '60%',\n maxWidth: 650,\n display: 'flex',\n justifyContent: 'center',\n padding: '60px 0 40px',\n },\n containerEmpty: {\n padding: '47px 0 25px',\n display: 'flex',\n justifyContent: 'center',\n },\n})\n\nclass FileDropzone extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n show: false,\n }\n this.handleDrop = this.handleDrop.bind(this)\n }\n\n handleDrop(files) {\n const self = this\n const file = new FormData()\n file.append('file', files[0])\n fetch(BASE_URL + '/image', {\n credentials: 'same-origin',\n method: 'POST',\n headers: { Authorization: 'Bearer ' + cookie.load('YWxpYWFkbWlu') },\n body: file,\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(response => {\n self.props.onChange(response.url)\n })\n .catch(function(error) {\n alertError('Fail. Try it later', 10000)\n })\n }\n\n render() {\n const { classes } = this.props\n return (\n \n \n \n {isStringEmpty(this.props.value) && (\n
\n \n {/**/}\n \n {this.props.title}\n

\n
\n )}\n \n \n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(FileDropzone)\n","import React from 'react'\nimport { IconButton } from '@material-ui/core'\nimport MessageButton from './MessageButton'\nimport MessageQuickReplies from './MessageQuickReplies'\nimport ImageDropzone from '../../../../uiKit/inputs/FileDropzone'\nimport { connect } from 'react-redux'\nimport { PlusIcon } from '../../../../uiKit/icons/Icons.js'\nimport InputWithParams from '../../../../uiKit/InputWithParams/InputWithParams'\n\nconst styles = {\n container: {\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: 'auto',\n },\n view: {\n overflow: 'scroll',\n marginRight: '-17px',\n marginBottom: '-17px',\n paddingBottom: 12,\n display: 'flex',\n },\n message: {\n height: 'max-content',\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n },\n addElement: {\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n height: '356px',\n },\n}\n\nclass Template extends React.Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n addElement() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements.push({\n title: '',\n subtitle: '',\n image_url: '',\n buttons: [],\n })\n this.props.updateMessage(newMessage)\n }\n\n handleChange(elemIndex, value, name) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements[elemIndex][name] = value\n this.props.updateMessage(newMessage)\n }\n\n addNewButtonToElem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.attachment.payload.elements[elemIndex].buttons == null) {\n newMessage.attachment.payload.elements[elemIndex].buttons = []\n }\n newMessage.attachment.payload.elements[elemIndex].buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n addNewButton() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.attachment.payload.buttons == null) {\n newMessage.attachment.payload.buttons = []\n }\n newMessage.attachment.payload.buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n updateBtn(btn, btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (elemIndex !== null)\n newMessage.attachment.payload.elements[elemIndex].buttons[btnIndex] = btn\n else newMessage.attachment.payload.buttons[btnIndex] = btn\n this.props.updateMessage(newMessage)\n }\n\n deleteButton(btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (elemIndex !== null)\n newMessage.attachment.payload.elements[elemIndex].buttons.splice(\n btnIndex,\n 1,\n )\n else newMessage.attachment.payload.buttons.splice(btnIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n isEnoughElements() {\n const numOfElem = 11\n return this.props.message.attachment.payload.elements.length < numOfElem\n }\n\n onDeleteElem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements.splice(elemIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const elementsNum = this.props.message.attachment.payload.elements.length\n const { rtl, scrollBlock } = this.props\n\n return (\n
\n \n {this.props.message.attachment.payload.elements.map(\n (elem, elemIndex) => (\n
\n \n this.handleChange(elemIndex, image_url, 'image_url')\n }\n title=\"Replace image\"\n />\n\n \n this.handleChange(elemIndex, value, 'title')\n }\n value={elem.title}\n placeholder=\"Title\"\n height=\"70px\"\n title=\"Title\"\n rtl={rtl}\n scrollBlock={scrollBlock}\n />\n\n \n this.handleChange(elemIndex, value, 'subtitle')\n }\n value={elem.subtitle}\n placeholder=\"Subtitle\"\n height=\"70px\"\n title=\"Subtitle\"\n rtl={rtl}\n scrollBlock={scrollBlock}\n />\n\n
\n {elem.buttons != null &&\n elem.buttons.map((btn, btnIndex) => (\n \n this.updateBtn(btn, btnIndex, elemIndex)\n }\n onDelete={() => this.deleteButton(btnIndex, elemIndex)}\n />\n ))}\n {(elem.buttons == null || elem.buttons.length < 3) && (\n this.addNewButtonToElem(elemIndex)}>\n add button\n
\n )}\n
\n {elementsNum > 1 && (\n this.onDeleteElem(elemIndex)}>\n \"delete\"\n \n )}\n
\n ),\n )}\n
\n {this.isEnoughElements() && (\n this.addElement()}\n style={{ ...styles.addElement, display: 'flex' }}>\n
\n \n
\n
\n )}\n {this.props.onDelete && (\n this.props.onDelete()}>\n \"delete\"\n \n )}\n \n \n this.props.updateMessage(message)}\n />\n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\n\nexport default connect(mapStateToProps)(Template)\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport { IconButton } from '@material-ui/core'\nimport MessageButton from './MessageButton'\nimport MessageQuickReplies from './MessageQuickReplies'\nimport ImageDropzone from '../../../../uiKit/inputs/FileDropzone'\nimport { connect } from 'react-redux'\nimport InputWithParams from '../../../../uiKit/InputWithParams/InputWithParams'\n\nconst styles = {\n container: {\n width: 280,\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n position: 'relative',\n },\n message: {\n position: 'relative',\n },\n button: {\n // marginLeft: \"30px\",\n },\n addElement: {\n borderTop: '1px solid rgb(229, 229, 229)',\n cursor: 'pointer',\n color: 'grey',\n },\n}\n\nclass Template extends React.Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n addElement() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements.push({\n title: '',\n subtitle: '',\n image_url: '',\n buttons: [],\n })\n this.props.updateMessage(newMessage)\n }\n\n handleChange(elemIndex, value, name) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements[elemIndex][name] = value\n this.props.updateMessage(newMessage)\n }\n\n addNewButtonToElem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.attachment.payload.elements[elemIndex].buttons == null) {\n newMessage.attachment.payload.elements[elemIndex].buttons = []\n }\n newMessage.attachment.payload.elements[elemIndex].buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n addNewButton() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.attachment.payload.buttons == null) {\n newMessage.attachment.payload.buttons = []\n }\n newMessage.attachment.payload.buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n updateBtn(btn, btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (elemIndex !== null)\n newMessage.attachment.payload.elements[elemIndex].buttons[btnIndex] = btn\n else newMessage.attachment.payload.buttons[btnIndex] = btn\n this.props.updateMessage(newMessage)\n }\n\n deleteButton(btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (elemIndex !== null)\n newMessage.attachment.payload.elements[elemIndex].buttons.splice(\n btnIndex,\n 1,\n )\n else newMessage.attachment.payload.buttons.splice(btnIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n isEnoughElements() {\n const numOfElem = 4\n return this.props.message.attachment.payload.elements.length < numOfElem\n }\n\n onDeleteElem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.elements.splice(elemIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const { buttons } = this.props.message.attachment.payload\n const elementsNum = this.props.message.attachment.payload.elements.length\n const { scrollBlock } = this.props\n\n return (\n
\n
\n {this.props.message.attachment.payload.elements.map(\n (elem, elemIndex) => (\n
\n \n this.handleChange(elemIndex, image_url, 'image_url')\n }\n title=\"Try choosing or dropping some image here.\"\n />\n\n \n this.handleChange(elemIndex, value, 'title')\n }\n value={elem.title}\n placeholder=\"Title\"\n height=\"70px\"\n title=\"Title\"\n scrollBlock={scrollBlock}\n />\n\n \n this.handleChange(elemIndex, value, 'subtitle')\n }\n value={elem.subtitle}\n placeholder=\"Subtitle\"\n height=\"70px\"\n title=\"Subtitle\"\n scrollBlock={scrollBlock}\n />\n\n
\n {elem.buttons != null &&\n elem.buttons.map((btn, btnIndex) => (\n \n this.updateBtn(btn, btnIndex, elemIndex)\n }\n onDelete={() => this.deleteButton(btnIndex, elemIndex)}\n />\n ))}\n\n {(elem.buttons == null || elem.buttons.length < 1) && (\n this.addNewButtonToElem(elemIndex)}\n style={styles.button}>\n add button\n
\n )}\n
\n {elementsNum > 2 && (\n this.onDeleteElem(elemIndex)}>\n \"delete\"\n \n )}\n
\n ),\n )}\n {this.isEnoughElements() && (\n this.addElement()}\n style={{ ...styles.addElement, display: 'flex' }}>\n
\n

+ ADD ITEM

\n
\n
\n )}\n {\n \n {buttons != null &&\n buttons.map((btn, btnIndex) => (\n this.updateBtn(btn, btnIndex, null)}\n onDelete={() => this.deleteButton(btnIndex, null)}\n />\n ))}\n {(buttons == null || buttons.length < 1) && (\n
this.addNewButton()}>\n Add button\n
\n )}\n \n }\n {this.props.onDelete && (\n
this.props.onDelete()}>\n \"delete\"\n
\n )}\n \n this.props.updateMessage(message)}\n />\n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\nexport default connect(mapStateToProps)(Template)\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport GenericTemplate from './GenericTemplate'\nimport ListTemplate from './ListTemplate'\n\nclass Template extends React.Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n isGeneric() {\n return this.props.message.attachment.payload.template_type === 'generic'\n }\n\n isList() {\n return this.props.message.attachment.payload.template_type === 'list'\n }\n\n render() {\n return (\n
\n {this.isList() && (\n this.props.updateMessage(message)}\n onDelete={() => this.props.onDelete()}\n scrollBlock={this.props.scrollBlock}\n />\n )}\n {this.isGeneric() && (\n this.props.updateMessage(message)}\n onDelete={() => this.props.onDelete()}\n scrollBlock={this.props.scrollBlock}\n />\n )}\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\nexport default connect(mapStateToProps)(Template)\n","/**\n * Created by Admin on 15.02.2018.\n */\nimport React from 'react'\nimport MessageQuickReplies from './MessageQuickReplies'\nimport FileDropzone from '../../../../uiKit/inputs/FileDropzone'\n\nexport default class Attachment extends React.Component {\n state = {}\n\n handleChange(fileUrl) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.attachment.payload.url = fileUrl\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const { rtl } = this.props\n return (\n
\n
\n this.handleChange(fileUrl)}\n title=\"Replace image\"\n />\n {this.props.onDelete && (\n
this.props.onDelete()}>\n \"delete\"\n
\n )}\n
\n this.props.updateMessage(message)}\n />\n
\n )\n }\n}\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport MessageQuickReplies from './MessageQuickReplies'\nimport { IconButton } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport { Scrollbars } from 'react-custom-scrollbars'\nimport LibraryAdd from '@material-ui/icons/LibraryAdd'\nimport InputWithParams from '../../../../uiKit/InputWithParams/InputWithParams'\n\nconst styles = {\n container: {\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: 'auto',\n },\n view: {\n overflow: 'scroll',\n marginRight: '-17px',\n marginBottom: '-17px',\n paddingBottom: 12,\n display: 'flex',\n },\n message: {\n height: 'max-content',\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n },\n addElement: {\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n },\n}\n\nclass RandomTextMessage extends React.Component {\n state = {}\n\n handleChangeText(elemIndex, value) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items[elemIndex].text = value\n this.props.updateMessage(newMessage)\n }\n\n handleChangeName(value) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.name = value\n this.props.updateMessage(newMessage)\n }\n\n updateBtn(btn, btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items[elemIndex].buttons[btnIndex] = btn\n this.props.updateMessage(newMessage)\n }\n\n deleteButton(btnIndex, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items[elemIndex].buttons.splice(btnIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n addNewButton(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n if (newMessage.items[elemIndex].buttons == null) {\n newMessage.items[elemIndex].buttons = []\n }\n newMessage.items[elemIndex].buttons.push({\n type: 'postback',\n title: '',\n payload: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n addItem() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items.push({\n text: '',\n })\n this.props.updateMessage(newMessage)\n }\n\n onDeleteItem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items.splice(elemIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const elementsNum = this.props.message.items.length\n const { rtl, scrollBlock } = this.props\n return (\n
\n
}>\n {this.props.message.items.map((elem, elemIndex) => (\n
\n this.handleChangeText(elemIndex, value)}\n value={elem.text}\n placeholder=\"Input text...\"\n scrollBlock={scrollBlock}\n />\n {elementsNum > 1 && (\n this.onDeleteItem(elemIndex)}>\n \"delete\"\n \n )}\n
\n ))}\n this.addItem()}\n style={{ ...styles.addElement, display: 'flex' }}>\n
\n \n
\n
\n {this.props.onDelete && (\n this.props.onDelete()}>\n \"delete\"\n \n )}\n \n this.props.updateMessage(message)}\n />\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\n\nexport default connect(mapStateToProps)(RandomTextMessage)\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport MessageQuickReplies from './MessageQuickReplies'\nimport { IconButton } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport { Scrollbars } from 'react-custom-scrollbars'\nimport LibraryAdd from '@material-ui/icons/LibraryAdd'\nimport FileDropzone from '../../../../uiKit/inputs/FileDropzone'\n\nconst styles = {\n container: {\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: 'auto',\n },\n view: {\n overflow: 'scroll',\n marginRight: '-17px',\n marginBottom: '-17px',\n paddingBottom: 12,\n display: 'flex',\n },\n message: {\n height: 'max-content',\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n },\n addElement: {\n minWidth: '280px',\n margin: '5px',\n boxShadow:\n '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: 10,\n marginRight: 20,\n position: 'relative',\n },\n}\n\nclass RandomTextMessage extends React.Component {\n state = {}\n\n handleChangeUrl(fileUrl, elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items[elemIndex].attachment.payload.url = fileUrl\n this.props.updateMessage(newMessage)\n }\n\n addItem() {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items.push({\n attachment: {\n type: 'image',\n payload: {\n url: '',\n },\n },\n })\n this.props.updateMessage(newMessage)\n }\n\n onDeleteItem(elemIndex) {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.items.splice(elemIndex, 1)\n this.props.updateMessage(newMessage)\n }\n\n render() {\n const elementsNum = this.props.message.items.length\n const { rtl } = this.props\n\n return (\n
\n
}>\n {this.props.message.items.map((elem, elemIndex) => (\n
\n this.handleChangeUrl(fileUrl, elemIndex)}\n title=\"Replace image\"\n />\n {elementsNum > 1 && (\n this.onDeleteItem(elemIndex)}>\n \"delete\"\n \n )}\n
\n ))}\n\n this.addItem()}\n style={{ ...styles.addElement, display: 'flex' }}>\n
\n \n
\n
\n\n {this.props.onDelete && (\n this.props.onDelete()}>\n \"delete\"\n \n )}\n \n this.props.updateMessage(message)}\n />\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\n\nexport default connect(mapStateToProps)(RandomTextMessage)\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport Slider from 'react-rangeslider'\nimport 'react-rangeslider/lib/index.css'\n\nconst styles = {\n container: {\n marginTop: 10,\n position: 'relative',\n padding: 10,\n border: '1px solid #e5e5e5',\n borderRadius: 10,\n width: '100%',\n },\n}\n\nclass Typing extends React.Component {\n handleChange = value => {\n const newMessage = JSON.parse(JSON.stringify(this.props.message))\n newMessage.time = value\n this.props.updateMessage(newMessage)\n }\n\n render() {\n return (\n
\n

Show typing for at least {this.props.message.time} seconds

\n \n {this.props.onDelete && (\n
this.props.onDelete()}>\n \"delete\"\n
\n )}\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\n\nexport default connect(mapStateToProps)(Typing)\n","/**\n * Created by Admin on 13.02.2018.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport States from '../States'\nimport { IconButton, withStyles } from '@material-ui/core'\nimport { TrashIcon } from '../../../../uiKit/icons/Icons'\n\nconst styles = theme => ({\n container: {\n background: '#ffffff',\n border: '1px solid #EBEBEF',\n borderRadius: 10,\n width: 254,\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n marginBottom: 16,\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n name: {\n padding: '17px 24px',\n borderBottom: '1px solid #EBEBEF',\n fontSize: 14,\n color: '#3A3F62',\n fontWeight: 'bold',\n },\n options: {\n padding: 16,\n },\n text: {\n fontSize: 14,\n color: '#616581',\n margin: '0 0 8px',\n },\n '@global': {\n '.message1:hover .delete-template': {\n display: 'block',\n },\n '.message1': {\n position: 'relative',\n },\n '.message1 .delete-template': {\n left: '233px',\n top: '-20px',\n position: 'absolute',\n transition: 'all 0.5s ease',\n },\n '.trashIcon:hover svg path': {\n stroke: '#1658F3',\n },\n '.add-button': {\n background: '#5A98F7',\n color: 'white',\n },\n '.add-button:hover': {\n background: 'white',\n color: '#5A98F7',\n },\n },\n})\nclass UserInput extends React.Component {\n state = {\n atom: {\n id: null,\n name: null,\n },\n parameter: null,\n }\n\n static getDerivedStateFromProps(props, state) {\n function getAtomNameByAtomId(atomId, flows) {\n let selectedAtomName\n flows.forEach(flow => {\n if (flow.atoms) {\n flow.atoms.forEach(atom => {\n if (atom.id === atomId) {\n selectedAtomName = atom.name\n }\n })\n }\n })\n return selectedAtomName\n }\n\n return {\n atom: {\n id: props.message.next_atom,\n name: getAtomNameByAtomId(props.message.next_atom, props.flows),\n },\n parameter: props.message.parameter,\n }\n }\n\n onChange(atomName, atomId) {\n const message = this.props.message\n message.next_atom = atomId\n this.setState(\n {\n atom: {\n id: atomId,\n name: atomName,\n },\n },\n () => {\n this.props.updateMessage(message)\n },\n )\n }\n\n handleName(event) {\n const message = this.props.message\n message.parameter = event.target.value\n this.setState(\n {\n parameter: event.target.value,\n },\n () => {\n this.props.updateMessage(message)\n },\n )\n }\n\n render() {\n const { classes, rtl } = this.props\n return (\n
\n {this.props.onDelete && !this.props.message.isHardCoded && (\n
\n this.props.onDelete()}>\n \n \n
\n )}\n
User input
\n
\n

Add an input name

\n
\n this.handleName(event)}\n />\n
\n

Choose atom on successful input

\n this.onChange(name, id)}\n value={this.state.atom.name}\n />\n
\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n flows: state.flows,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(UserInput))\n","import React, { useState } from 'react'\nimport { IconButton, withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport Tooltip from '../../../../uiKit/tooltip/Tooltip'\nimport { TrashIcon } from '../../../../uiKit/icons/TrashIcon'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport AttributeSelect from '../../../../uiKit/AttributeSelect/AttributeSelect'\nimport { PlusIcon } from '../../../../uiKit/icons/PlusIcon'\nimport SecondaryButton from '../../../../uiKit/SecondaryButton/SecondaryButton'\n\nimport { styles } from './styles'\nimport InputAutosuggest from '../../../../uiKit/InputAutosuggest/InputAutosuggest'\nimport { CHATBOT, DEFAULT } from '../../../../constants/attributeTypes'\n\nconst SetAttribute = props => {\n const { classes, message, updateMessage, onDelete } = props\n\n const [focus, setFocus] = useState(null)\n\n const handleUpdateAttribute = (e, index) => {\n message.attributes = deepCopyFunction(message?.attributes)?.map(\n (attribute, i) => {\n if (i === index) {\n attribute.id = e?.value\n attribute.name = e?.label\n }\n\n return attribute\n },\n )\n updateMessage(message)\n setFocus(false)\n }\n\n const handleUpdateAttributeValue = (e, index) => {\n message.attributes = deepCopyFunction(message?.attributes)?.map(\n (attribute, i) => {\n if (i === index) {\n attribute.value = e.target.value\n }\n return attribute\n },\n )\n\n updateMessage(message)\n }\n\n const handleAddAttribute = () => {\n const attributesUpdate = deepCopyFunction(message?.attributes) || []\n const newAttribute = { id: null, value: null, name: null }\n\n attributesUpdate.push(newAttribute)\n message.attributes = attributesUpdate\n updateMessage(message)\n }\n\n const handleDeleteAttribute = index => {\n message.attributes = deepCopyFunction(message?.attributes).filter(\n (attribute, i) => index !== i,\n )\n updateMessage(message)\n }\n\n return (\n <>\n
\n {onDelete && (\n \n \n \n \n \n )}\n\n
\n

Set attribute

\n \n
\n\n
\n
\n

Name

\n

Value

\n
\n {message?.attributes?.map((attribute, index) => (\n
\n handleUpdateAttribute(e, index)}\n onBlur={() => setFocus(false)}\n onClick={() => setFocus(index)}\n required={true}\n displayOptions={[DEFAULT, CHATBOT]}\n containerStyle={{ width: '50%' }}\n isClearable={false}\n defaultAttributes={['language']}\n />\n handleUpdateAttributeValue(e, index)}\n />\n {message?.attributes?.length > 1 && (\n handleDeleteAttribute(index)}>\n \n \n )}\n
\n ))}\n
\n\n
\n \n Add attribute\n \n }\n onClick={handleAddAttribute}\n />\n
\n
\n \n )\n}\n\nSetAttribute.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n attributes: state.attributes,\n activeBotId: state.activeBot?.id,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(SetAttribute)),\n)\n","export const styles = () => ({\n container: {\n borderRadius: 10,\n border: '1px solid rgba(53, 64, 82, 0.1)',\n position: 'relative',\n margin: '10px 0px',\n width: '100%',\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n header: {\n padding: 18,\n fontSize: 14,\n borderBottom: '1px solid #EBEBEF',\n display: 'flex',\n },\n body: {\n padding: '24px 0px 24px 24px',\n },\n footer: {\n borderTop: '1px solid #EBEBEF',\n padding: 24,\n display: 'flex',\n justifyContent: 'flex-end',\n },\n title: {\n color: '#3A3F62',\n margin: 0,\n fontWeight: 700,\n },\n infoIcon: {\n cursor: 'pointer',\n marginLeft: 6,\n },\n labels: {\n display: 'flex',\n gap: '10px',\n paddingRight: '32px',\n '& p': {\n width: '50%',\n fontSize: 14,\n fontWeight: '700',\n color: '#354052',\n },\n },\n iconWrap: {\n cursor: 'pointer',\n display: 'none',\n alignItems: 'center',\n marginLeft: 4,\n position: 'absolute',\n right: '4px',\n top: '6px',\n },\n attributeWrap: {\n display: 'flex',\n flexFlow: 'row',\n marginBottom: 9,\n gap: '10px',\n position: 'relative',\n paddingRight: '32px',\n '&:hover > u': {\n display: 'flex',\n },\n },\n warning: {\n position: 'absolute',\n color: '#FF6666',\n fontSize: 12,\n },\n input: {\n border: '1px solid rgba(53, 64, 82, 0.1)',\n outline: 'none',\n height: 38,\n borderRadius: 4,\n width: '214px',\n padding: '8px 12px',\n color: 'rgba(53, 64, 82, 0.7)',\n },\n deleteTemplate: {\n right: '28px',\n top: '-16px',\n position: 'absolute',\n display: 'none',\n transition: 'all 0.5s ease',\n },\n deleteIcon: {\n background: 'white',\n border: '1px solid #EBEBEF',\n boxShadow: '0px 3px 6px #EBEBEF',\n width: 40,\n height: 40,\n position: 'absolute',\n right: -40,\n display: 'block',\n },\n})\n","export const styles = () => ({\n optionWrap: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n optionDescription: {\n color: 'rgba(53, 64, 82, 0.5)',\n },\n})\n\nexport const customStyles = {\n control: (provided, state) => {\n const error =\n !state.hasValue && !state.isFocused && state.selectProps.touched\n\n return {\n ...provided,\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n borderRadius: 10,\n padding: '2px 6px',\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: provided => ({\n ...provided,\n display: 'none',\n }),\n singleValue: provided => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n },\n }\n },\n menu: provided => ({\n ...provided,\n padding: 0,\n overflow: 'hidden',\n }),\n placeholder: provided => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { customStyles, styles } from './styles'\nimport Select, { components } from 'react-select'\n\nconst ValidationSelect = props => {\n const { value, onChange, touched, onFocus, classes } = props\n\n const options = [\n { label: 'None', value: 'NONE', description: null },\n { label: 'Number', value: 'NUMBER', description: '1234567890' },\n { label: 'Email', value: 'EMAIL', description: 'example@mail.com' },\n { label: 'Phone', value: 'PHONE', description: '+12345678901' },\n { label: 'Date', value: 'DATE', description: 'yyyymmdd' },\n { label: 'Time', value: 'TIME', description: 'hh:mm' },\n { label: 'Custom validation', value: 'CUSTOM' },\n ]\n\n const getValue = value => {\n return options.find(option => option.value === value)\n }\n\n const Option = props => {\n return (\n \n
\n
{props.data.label}
\n
\n {props.data.description}\n
\n
\n
\n )\n }\n\n return (\n \n )\n}\nValidationSelect.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(ValidationSelect)\n","import React, { useEffect, useState } from 'react'\nimport { IconButton, withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport ValidationSelect from '../ValidationSelect/ValidationSelect'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\nimport AttributeSelect from '../../../../uiKit/AttributeSelect/AttributeSelect'\nimport { TrashIcon } from '../../../../uiKit/icons/TrashIcon'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport { CHATBOT, DEFAULT } from '../../../../constants/attributeTypes'\nimport Tooltip from '../../../../uiKit/tooltip/Tooltip'\n\nconst initialTouched = {\n validation: false,\n customValidationRegex: false,\n onValidationSuccessAtomId: false,\n saveAsAttribute: false,\n onValidationFailAtomId: false,\n}\n\nconst SaveUserInput = props => {\n const { classes, message, updateMessage, onDelete, saveTime } = props\n\n const [focus, setFocus] = useState(null)\n const [touched, setTouched] = useState(initialTouched)\n const prevSaveTime = usePrevious(saveTime)\n\n //needs to highlight every time when save button has been clicked\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n const touched = {\n validation: true,\n customValidationRegex: true,\n onValidationSuccessAtomId: true,\n saveAsAttribute: true,\n onValidationFailAtomId: true,\n }\n\n setTouched(touched)\n }\n }, [saveTime])\n\n const handleChangeValidation = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.saveUserInput.validation = e.value\n\n if (e.value === 'CUSTOM') {\n updateTouched('customValidationRegex', false)\n }\n\n if (message.saveUserInput.validation === 'NONE') {\n updateTouched('onValidationFailAtomId', false)\n }\n\n updateMessage(messageCopy)\n }\n\n const handleUpdateRegex = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.saveUserInput.customValidationRegex = e.target.value\n\n updateMessage(messageCopy)\n }\n\n const handleUpdateAttribute = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.saveUserInput.saveAsAttribute = {\n id: e?.value || null,\n name: e?.label || null,\n }\n updateMessage(messageCopy)\n setFocus(false)\n }\n\n const handleUpdateSuccessAtomId = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.saveUserInput.onValidationSuccessAtomId = e.value\n\n updateMessage(messageCopy)\n }\n\n const handleUpdateFailAtomId = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.saveUserInput.onValidationFailAtomId = e.value\n\n updateMessage(messageCopy)\n }\n\n const updateTouched = (field, isTouched) => {\n const touchedCopy = deepCopyFunction(touched)\n touchedCopy[field] = isTouched\n\n setTouched(touchedCopy)\n }\n\n return (\n
\n
\n \n Save user input\n \n \n
\n\n
\n
\n
\n

\n Validation *\n

\n updateTouched('validation', true)}\n />\n
\n {message?.saveUserInput?.validation === 'CUSTOM' && (\n
\n

\n Custom regex *\n

\n updateTouched('customValidationRegex', true)}\n />\n
\n )}\n
\n\n
\n
\n

\n Valid input redirect *\n

\n updateTouched('onValidationSuccessAtomId', true)}\n />\n
\n\n
\n

Save as

\n setFocus(false)}\n onClick={() => setFocus(true)}\n onChange={handleUpdateAttribute}\n required={false}\n styles={{ borderRadius: 10, padding: '2px 6px' }}\n displayOptions={[DEFAULT, CHATBOT]}\n isClearable={true}\n placeholder={'Select attribute'}\n defaultAttributes={['language']}\n />\n
\n\n {message?.saveUserInput?.validation !== 'NONE' && (\n
\n

\n Invalid input redirect *\n

\n updateTouched('onValidationFailAtomId', true)}\n />\n
\n )}\n
\n
\n\n {onDelete && (\n \n \n \n \n \n )}\n
\n )\n}\n\nSaveUserInput.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(SaveUserInput)\n","export const styles = () => ({\n container: {\n borderRadius: 10,\n border: '1px solid #EBEBEF',\n width: '100%',\n marginBottom: 10,\n minWidth: 400,\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n header: {\n padding: '17px 0px 24px 24px',\n fontWeight: 700,\n color: 'rgba(58, 63, 98, 1)',\n borderBottom: '2px solid #EBEBEF',\n },\n body: {\n padding: 24,\n },\n label: {\n fontSize: 14,\n color: '#354052',\n marginBottom: 8,\n '& span': {\n color: 'red',\n },\n },\n section: {\n borderBottom: '1px solid #EBEBEB',\n marginBottom: 14,\n },\n inputWrap: {\n marginBottom: 14,\n },\n smallInputWrap: {\n width: '48%',\n },\n input: {\n width: '100%',\n fontSize: 14,\n outline: 'none',\n padding: 14,\n border: '1px solid #D7D8DF',\n borderRadius: 10,\n height: 42,\n '&:hover': {\n border: '1px solid #9a9fa8',\n },\n },\n flexContainer: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: '12px',\n },\n deleteTemplate: {\n right: '28px',\n top: '-16px',\n position: 'absolute',\n display: 'none',\n transition: 'all 0.5s ease',\n },\n deleteIcon: {\n background: 'white',\n border: '1px solid #EBEBEF',\n boxShadow: '0px 3px 6px #EBEBEF',\n width: 40,\n height: 40,\n position: 'absolute',\n right: -40,\n display: 'block',\n },\n})\n","export const styles = () => ({\n container: {},\n})\n\nexport const customStyles = {\n control: (provided, state) => {\n const error =\n !state.hasValue && !state.isFocused && state.selectProps.touched\n\n return {\n ...provided,\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n borderRadius: 10,\n padding: '2px 0px',\n width: 96,\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: provided => ({\n ...provided,\n display: 'none',\n }),\n singleValue: provided => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n padding: '8px 4px',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n },\n }\n },\n menu: provided => ({\n ...provided,\n padding: 0,\n overflow: 'hidden',\n width: 96,\n }),\n placeholder: provided => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n dropdownIndicator: (provided, state) => ({\n ...provided,\n display: 'none',\n }),\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles, customStyles } from './styles'\nimport Select from 'react-select'\n\nconst options = [\n { value: 'IS', label: 'is' },\n { value: 'IS_NOT', label: 'is not' },\n { value: 'GREATER_THAN', label: 'greater than' },\n { value: 'LESS_THAN', label: 'less than' },\n { value: 'CONTAINS', label: 'contains' },\n { value: 'IS_DEFAULT', label: 'is default' },\n { value: 'IS_NOT_DEFAULT', label: 'is not default' },\n]\n\nconst OperatorSelect = props => {\n const { classes, value, touched, onFocus, onChange } = props\n\n const getValue = value => {\n return options.find(option => option.value === value)\n }\n\n return (\n
\n \n
\n )\n}\nOperatorSelect.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(OperatorSelect)\n","export const styles = () => ({\n container: {},\n})\n\nexport const customStyles = {\n control: (provided, state) => {\n const error =\n !state.hasValue && !state.isFocused && state.selectProps.touched\n\n return {\n ...provided,\n border: error ? '1px solid red' : '1px solid #D7D8DF',\n outline: 'none',\n boxShadow: 'none',\n borderRadius: 10,\n padding: '2px 0px',\n width: 42,\n '&:hover': {\n border: error ? '1px solid red' : '1px solid rgba(53, 64, 82, 0.5)',\n boxShadow: 'none',\n },\n }\n },\n indicatorSeparator: provided => ({\n ...provided,\n display: 'none',\n }),\n singleValue: provided => ({\n ...provided,\n color: '#354052',\n fontSize: 14,\n }),\n option: (provided, state) => {\n return {\n ...provided,\n fontSize: 14,\n cursor: 'pointer',\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n padding: '8px 10px',\n '&:hover': {\n fontSize: 14,\n backgroundColor: state.isFocused ? '#dfecff' : '#ffffff',\n color: '#354052',\n },\n }\n },\n menu: provided => ({\n ...provided,\n padding: 0,\n width: 42,\n overflow: 'hidden',\n }),\n placeholder: provided => ({\n ...provided,\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 14,\n width: 'max-content',\n }),\n dropdownIndicator: (provided, state) => ({\n ...provided,\n display: 'none',\n }),\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles, customStyles } from './styles'\nimport Select from 'react-select'\n\nconst options = [\n { value: 'AND', label: 'and' },\n { value: 'OR', label: 'or' },\n]\n\nconst ConjunctionSelect = props => {\n const { classes, value, touched, onFocus, onChange } = props\n\n const getValue = value => {\n return options.find(option => option.value === value)\n }\n\n return (\n
\n \n
\n )\n}\nConjunctionSelect.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(ConjunctionSelect)\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport AttributeSelect from '../../../../uiKit/AttributeSelect/AttributeSelect'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport OperatorSelect from '../OperatorSelect/OperatorSelect'\nimport InputAutosuggest from '../../../../uiKit/InputAutosuggest/InputAutosuggest'\nimport ConjunctionSelect from '../ConjunctionSelect/ConjunctionSelect'\nimport { TrashIcon } from '../../../../uiKit/icons/TrashIcon'\nimport { PlusIcon } from '../../../../uiKit/icons/PlusIcon'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport {\n CHATBOT,\n DEFAULT,\n FACEBOOK,\n TWILIO,\n WHATSAPP,\n WIDGET,\n} from '../../../../constants/attributeTypes'\n\nconst ConditionExpression = props => {\n const {\n classes,\n expression,\n onDelete,\n onUpdate,\n conjunction,\n onUpdateConjunction,\n isLast,\n onAdd,\n isOne,\n saveTime,\n } = props\n const [focus, setFocus] = useState(null)\n const [touched, setTouched] = useState({ attribute: false, value: false })\n const prevSaveTime = usePrevious(saveTime)\n\n //needs to highlight every time when save button has been clicked\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n const touched = {\n attribute: true,\n value: true,\n }\n\n setTouched(touched)\n }\n }, [saveTime])\n\n useEffect(() => {\n if (isLast) {\n onUpdateConjunction({ value: 'AND', label: 'and' })\n }\n }, [isLast])\n\n const handleUpdateAttribute = e => {\n const expressionCopy = deepCopyFunction(expression)\n\n expressionCopy.attribute = { id: e?.value || null, name: e?.label || null }\n\n onUpdate(expressionCopy)\n setFocus(false)\n }\n\n const handleUpdateOperator = e => {\n const expressionCopy = deepCopyFunction(expression)\n expressionCopy.operator = e.value\n\n if (['IS_DEFAULT', 'IS_NOT_DEFAULT'].includes(expression?.operator)) {\n expressionCopy.value = null\n }\n\n onUpdate(expressionCopy)\n }\n\n const handleUpdateAttributeValue = e => {\n const expressionCopy = deepCopyFunction(expression)\n expressionCopy.value = e.target.value || e.target.innerText\n\n onUpdate(expressionCopy)\n }\n\n const updateTouched = (field, isTouched) => {\n const touchedCopy = deepCopyFunction(touched)\n touchedCopy[field] = isTouched\n\n setTouched(touchedCopy)\n }\n\n return (\n
\n setFocus(false)}\n onClick={() => setFocus(true)}\n onChange={handleUpdateAttribute}\n required={true}\n styles={{ borderRadius: 10, padding: '2px 0px' }}\n containerStyle={{ minWidth: 112, width: 'calc(50% - 97px)' }}\n placeholder={'Select attribute'}\n displayOptions={[DEFAULT, CHATBOT, WIDGET, FACEBOOK, WHATSAPP, TWILIO]}\n defaultAttributes={['language', 'platform']}\n isClearable={true}\n onFocus={() => updateTouched('attribute', true)}\n touched={touched?.attribute}\n />\n\n \n\n {!['IS_DEFAULT', 'IS_NOT_DEFAULT'].includes(expression?.operator) && (\n updateTouched('value', true)}\n />\n )}\n\n {isLast ? (\n
\n \n
\n ) : (\n \n )}\n\n {!isOne && (\n
\n \n
\n )}\n
\n )\n}\n\nConditionExpression.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default React.memo(withStyles(styles)(ConditionExpression))\n","export const styles = () => ({\n container: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n marginBottom: '8px',\n },\n iconWrap: {\n cursor: 'pointer',\n display: 'flex',\n },\n addButton: {\n border: '1px solid rgba(22, 88, 243, 1)',\n height: 42,\n minWidth: 42,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 10,\n cursor: 'pointer',\n },\n})\n","export const generateId = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport ConditionExpression from '../ConditionExpression/ConditionExpression'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport { generateId } from '../../../../helpers/generateId'\n\nconst ConditionGroup = props => {\n const { classes, onDelete, condition, updateCondition, saveTime } =\n props\n const [touched, setTouched] = useState({ redirectTo: false })\n const prevSaveTime = usePrevious(saveTime)\n\n //needs to highlight every time when save button has been clicked\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n const touched = {\n redirectTo: true,\n }\n\n setTouched(touched)\n }\n }, [saveTime])\n\n const handleUpdateRedirectTo = e => {\n const conditionCopy = deepCopyFunction(condition)\n conditionCopy.redirectTo = e.value\n\n updateCondition(conditionCopy)\n }\n\n const handleDeleteExpression = index => {\n const conditionCopy = deepCopyFunction(condition)\n conditionCopy.expressions.splice(index, 1)\n\n updateCondition(conditionCopy)\n }\n\n const handleUpdateExpression = (expression, index) => {\n const conditionCopy = deepCopyFunction(condition)\n conditionCopy.expressions[index] = expression\n\n updateCondition(conditionCopy)\n }\n\n const handleUpdateConjunction = e => {\n const conditionCopy = deepCopyFunction(condition)\n conditionCopy.conjunction = e.value\n\n updateCondition(conditionCopy)\n }\n\n const handleAddExpression = () => {\n const conditionCopy = deepCopyFunction(condition)\n conditionCopy.expressions.push({\n attribute: null,\n operator: 'IS',\n value: null,\n id: generateId(),\n })\n\n updateCondition(conditionCopy)\n }\n\n const updateTouched = (field, isTouched) => {\n const touchedCopy = deepCopyFunction(touched)\n touchedCopy[field] = isTouched\n\n setTouched(touchedCopy)\n }\n\n return (\n
\n
\n Condition group\n \n Delete\n \n
\n
\n {condition?.expressions?.map((expression, index) => (\n handleDeleteExpression(index)}\n onUpdate={expression => handleUpdateExpression(expression, index)}\n onAdd={handleAddExpression}\n saveTime={saveTime}\n />\n ))}\n
\n

\n Redirect to *\n

\n updateTouched('redirectTo', true)}\n />\n
\n
\n
\n )\n}\nConditionGroup.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default React.memo(withStyles(styles)(ConditionGroup))\n","export const styles = () => ({\n container: {\n borderRadius: 10,\n border: '1px solid #EBEBEF',\n width: '100%',\n marginBottom: 20,\n },\n header: {\n padding: '12px',\n color: 'rgba(58, 63, 98, 1)',\n borderBottom: '2px solid #EBEBEF',\n fontSize: 16,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n deleteButton: {\n color: 'rgba(255, 98, 76, 1)',\n fontSize: 12,\n cursor: 'pointer',\n },\n body: {\n padding: 16,\n },\n label: {\n fontSize: 14,\n color: '#354052',\n margin: '24px 0px 8px',\n '& span': {\n color: 'red',\n },\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport { IconButton, withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport { TrashIcon } from '../../../../uiKit/icons/TrashIcon'\nimport { conditionGroup } from '../messages/AvailableMessages'\nimport AtomSelect from '../../../../uiKit/AtomSelect/AtomSelect'\nimport { deepCopyFunction } from '../../../../helpers/deepCopyFunction'\nimport ConditionGroup from '../ConditionGroup/ConditionGroup'\nimport { PlusIcon } from '../../../../uiKit/icons/PlusIcon'\nimport SecondaryButton from '../../../../uiKit/SecondaryButton/SecondaryButton'\nimport Tooltip from '../../../../uiKit/tooltip/Tooltip'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport { generateId } from '../../../../helpers/generateId'\n\nconst addIdToArrayAtConditionalRedirect = conditionalRedirect => {\n return {\n defaultRedirect: conditionalRedirect.defaultRedirect,\n conditionGroups: conditionalRedirect?.conditionGroups?.map(condition => {\n return {\n id: condition.id || generateId(),\n conjunction: condition.conjunction,\n redirectTo: condition.redirectTo,\n priority: condition.priority,\n expressions: condition.expressions.map(expression => {\n return {\n id: expression.id || generateId(),\n attribute: expression.attribute,\n operator: expression.operator,\n value: expression.value,\n }\n }),\n }\n }),\n }\n}\n\nconst tooltipText =\n \"Redirects user to a specific block. Click on 'Add condition group' to set redirects for a specific group of users.\"\n\nconst SmartRedirect = props => {\n const { classes, onDelete, updateMessage, message, saveTime } = props\n const [conditionalRedirect, setConditionalRedirect] = useState(\n addIdToArrayAtConditionalRedirect(message.conditionalRedirect),\n )\n const [touched, setTouched] = useState({ defaultRedirect: false })\n const prevSaveTime = usePrevious(saveTime)\n const isConditionGroups = !!conditionalRedirect?.conditionGroups?.length\n\n //needs to highlight every time when save button has been clicked\n useEffect(() => {\n if (saveTime && prevSaveTime && saveTime !== prevSaveTime) {\n const touched = {\n defaultRedirect: true,\n }\n\n setTouched(touched)\n }\n }, [saveTime])\n\n const handleUpdateDefaultRedirect = e => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.conditionalRedirect.defaultRedirect = e.value\n\n setConditionalRedirect({ ...messageCopy.conditionalRedirect })\n updateMessage(messageCopy)\n }\n\n const handleAddConditionGroup = () => {\n const messageCopy = deepCopyFunction(message)\n const newConditionGroup = deepCopyFunction(conditionGroup)\n newConditionGroup.id = generateId()\n newConditionGroup.priority = getMaxPriority()\n\n if (!messageCopy?.conditionalRedirect?.conditionGroups) {\n messageCopy.conditionalRedirect.conditionGroups = []\n }\n\n messageCopy.conditionalRedirect.conditionGroups.push(newConditionGroup)\n setConditionalRedirect({ ...messageCopy.conditionalRedirect })\n updateMessage(messageCopy)\n }\n\n const handleDeleteCondition = index => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.conditionalRedirect.conditionGroups.splice(index, 1)\n\n setConditionalRedirect({ ...messageCopy.conditionalRedirect })\n updateMessage(messageCopy)\n }\n\n const handleUpdateCondition = (condition, index) => {\n const messageCopy = deepCopyFunction(message)\n messageCopy.conditionalRedirect.conditionGroups[index] = condition\n\n setConditionalRedirect({ ...messageCopy.conditionalRedirect })\n updateMessage(messageCopy)\n }\n\n const updateTouched = (field, isTouched) => {\n const touchedCopy = deepCopyFunction(touched)\n touchedCopy[field] = isTouched\n\n setTouched(touchedCopy)\n }\n\n const sortOrder = (a, b) => {\n if (a.priority < b.priority) return -1\n if (a.priority > b.priority) return 1\n return 0\n }\n\n const getMaxPriority = () => {\n return message?.conditionalRedirect?.conditionGroups?.length\n ? message?.conditionalRedirect?.conditionGroups?.reduce((prev, current) =>\n (prev.priority > current.priority ? prev : current),\n ).priority + 1\n : 1\n }\n\n return (\n
\n
\n \n Smart redirect\n \n \n {!isConditionGroups && (\n \n Add condition group\n \n }\n onClick={handleAddConditionGroup}\n styles={{ border: 'none', padding: '0px', width: 160 }}\n />\n )}\n
\n
\n {conditionalRedirect?.conditionGroups\n ?.sort(sortOrder)\n ?.map((condition, index) => (\n \n handleUpdateCondition(condition, index)\n }\n onDelete={() => handleDeleteCondition(index)}\n saveTime={saveTime}\n />\n ))}\n {isConditionGroups && (\n \n Add condition group\n \n }\n onClick={handleAddConditionGroup}\n styles={{ border: 'none', padding: '0px', width: 160 }}\n />\n )}\n
\n

\n Default redirect *\n

\n updateTouched('defaultRedirect', true)}\n />\n
\n
\n {onDelete && (\n \n \n \n \n \n )}\n
\n )\n}\n\nSmartRedirect.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default React.memo(withStyles(styles)(SmartRedirect))\n","export const styles = () => ({\n container: {\n borderRadius: 10,\n border: '1px solid #EBEBEF',\n width: '100%',\n marginBottom: 20,\n position: 'relative',\n minWidth: 480,\n '&:hover': {\n '& i': {\n display: 'block',\n },\n },\n },\n header: {\n padding: '17px 24px 24px 24px',\n fontWeight: 700,\n color: 'rgba(58, 63, 98, 1)',\n borderBottom: '2px solid #EBEBEF',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n deleteTemplate: {\n right: '28px',\n top: '-16px',\n position: 'absolute',\n display: 'none',\n transition: 'all 0.5s ease',\n },\n deleteIcon: {\n background: 'white',\n border: '1px solid #EBEBEF',\n boxShadow: '0px 3px 6px #EBEBEF',\n width: 40,\n height: 40,\n position: 'absolute',\n right: -40,\n display: 'block',\n },\n body: {\n padding: 24,\n },\n label: {\n fontSize: 14,\n color: '#354052',\n marginBottom: 8,\n '& span': {\n color: 'red',\n },\n },\n inputWrap: {\n borderTop: '1px solid #EBEBEF',\n paddingTop: 16,\n marginTop: 16,\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport TextMessage from '../../components/TextMessage/TextMessage'\nimport Template from '../messages/Template'\nimport Attachment from '../messages/Attachment'\nimport RandomTextMessage from '../messages/RandomTextMessage'\nimport RandomAttachment from '../messages/RandomAttachment'\nimport Typing from '../messages/Typing'\nimport UserInput from '../messages/UserInput'\nimport SetAttribute from '../SetAttribute/SetAttribute'\nimport SaveUserInput from '../SaveUserInput/SaveUserInput'\nimport SmartRedirect from '../SmartRedirect/SmartRedirect'\nimport {\n CONDITIONAL_REDIRECT_TYPE,\n RANDOM_REDIRECT_TYPE,\n SAVE_USER_INPUT_TYPE,\n SET_ATTRIBUTE_TYPE,\n TEXT_TYPE,\n USER_INPUT_TYPE,\n} from '../../constants/messageTypes'\nimport RandomAtoms from '../RandomAtoms/RandomAtoms'\n\nconst MessagesWrap = props => {\n const {\n message,\n rtl,\n index,\n updateMessage,\n deleteMessage,\n scrollBlock,\n saveTime,\n } = props\n\n return (\n <>\n {message.texts && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n rtl={rtl}\n scrollBlock={scrollBlock}\n />\n )}\n {message.attachment != null &&\n (message.attachment.type === 'template' ? (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n scrollBlock={scrollBlock}\n />\n ) : (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n />\n ))}\n {message.random != null && message.type === TEXT_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n scrollBlock={scrollBlock}\n />\n )}\n {message.random != null && message.type === 'attachment' && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n />\n )}\n {message?.senderAction === 'typing_on' && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n />\n )}\n {message.type === USER_INPUT_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n />\n )}\n {message.type === SET_ATTRIBUTE_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n />\n )}\n {message.type === SAVE_USER_INPUT_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n saveTime={saveTime}\n />\n )}\n {message.type === CONDITIONAL_REDIRECT_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n saveTime={saveTime}\n />\n )}\n {message.type === RANDOM_REDIRECT_TYPE && (\n updateMessage(message, index)}\n onDelete={() => deleteMessage(message)}\n saveTime={saveTime}\n />\n )}\n \n )\n}\nMessagesWrap.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(MessagesWrap)\n","export const styles = () => ({\n container: {},\n})\n","import { deepCopyFunction } from './deepCopyFunction'\nimport { CONDITIONAL_REDIRECT_TYPE } from '../tabs/flowBuilder/constants/messageTypes'\n\nexport const formatAtom = atom => {\n const atomCopy = deepCopyFunction(atom)\n\n if (atomCopy) {\n atomCopy.messages = atomCopy?.messages?.map(message => {\n if (message.type === CONDITIONAL_REDIRECT_TYPE) {\n const { conditionalRedirect } = message\n\n message.conditionalRedirect =\n _formatConditionRedirect(conditionalRedirect)\n }\n return message\n })\n }\n\n return atomCopy\n}\n\nconst _formatConditionRedirect = conditionalRedirect => {\n const { defaultRedirect, conditionGroups } = conditionalRedirect\n\n return {\n defaultRedirect,\n conditionGroups: conditionGroups?.map(_formatCondition),\n }\n}\n\nconst _formatCondition = condition => {\n const { conjunction, redirectTo, priority, expressions } = condition\n\n return {\n conjunction,\n redirectTo,\n priority,\n expressions: expressions.map(_formatConditionExpression),\n }\n}\n\nconst _formatConditionExpression = expression => {\n const { attribute, operator, value } = expression\n\n return {\n attribute,\n operator,\n value,\n }\n}\n","/**\n * Created by Admin on 02.02.2018.\n */\nimport React from 'react'\nimport Select from 'react-select'\nimport { Button, withStyles } from '@material-ui/core'\nimport './Atom.css'\nimport '../components/messages/Messages.css'\nimport Modal from '@material-ui/core/Modal'\nimport NewMessage from './NewMessage/NewMessage'\nimport { getAtom, saveAtom } from '../api/atom'\nimport AtomNLPModal from '../../nlp/components/AtomNLPModal'\nimport { connect } from 'react-redux'\nimport { Prompt, withRouter } from 'react-router-dom'\nimport { DownIcon, UpIcon } from '../../../uiKit/icons/Icons'\nimport 'array.prototype.move'\nimport { alertError } from '../../../api'\nimport TagAction from './messages/TagAction'\nimport { loadTags } from '../api/tag'\nimport uuidv1 from 'uuid/v1'\nimport { getBotLanguages } from '../../settings/api/settings'\nimport RandomAtoms from './RandomAtoms/RandomAtoms'\nimport {\n randomRedirectInitialState,\n saveUserInput,\n setAttributeMessage,\n} from './messages/AvailableMessages'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\nimport MessagesWrap from '../components/MessagesWrap/MessagesWrap'\nimport { getAttributes } from '../../settings/api/attributes'\nimport { deepCopyFunction } from '../../../helpers/deepCopyFunction'\nimport { formatAtom } from '../../../helpers/formatAtom'\nimport {\n SAVE_USER_INPUT_TYPE,\n SET_ATTRIBUTE_TYPE,\n TEXT_TYPE,\n CONDITIONAL_REDIRECT_TYPE,\n} from '../constants/messageTypes'\n\nconst styles = theme => ({\n container: {\n position: 'relative',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n marginRight: '-17px',\n padding: '40px 40px 00px',\n height: 'calc(100vh - 220px)',\n width: '100%',\n },\n warning: {\n width: 42,\n height: 26,\n marginTop: 18,\n },\n headerBlock: {\n padding: '15px 40px',\n display: 'flex',\n justifyContent: 'space-between',\n },\n headerSelectorAndButton: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minWidth: '40%',\n height: '100%',\n },\n headerButton: {\n margin: '5px',\n background: 'linear-gradient(285.2deg, #5A98F7 -35.9%, #1658F3 61.17%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n color: 'white',\n borderRadius: 10,\n height: 45,\n },\n root: {\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n },\n input: {\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n transition: '1s all ease',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n margin: 5,\n maxHeight: 40,\n },\n '@global': {\n '.element:hover>.text_element': {\n opacity: '1',\n transition: '0.5s all ease',\n },\n '.element:hover rect': {\n fill: '#1658F3',\n transition: '0.5s all ease',\n },\n '.element:hover path': {\n stroke: '#1658F3',\n transition: '0.5s all ease',\n },\n '.element>.text_element': {\n opacity: '0',\n transition: '0.5s all ease',\n },\n },\n})\n\nclass AtomEditor extends React.Component {\n handleChange = event => {\n const atom = { ...this.state.atom }\n atom.name = event.target.value\n this.setState({\n atom: atom,\n })\n }\n handleOpen = () => {\n if (!this.state.atom.isHardCoded) {\n this.setState({ open: true })\n }\n }\n handleClose = () => {\n if (this.state.isNameOk) this.setState({ open: false })\n }\n handleOpenAtomNLPModal = () => {\n this.setState({ openNlp: true })\n }\n handleCloseAtomNLPModal = () => {\n this.setState({ openNlp: false })\n }\n\n constructor(props) {\n super(props)\n this.scrollBlock = React.createRef()\n this.state = {\n open: false,\n isNameOk: true,\n name: '',\n openNlp: false,\n languageOptions: [],\n saveTime: new Date(),\n selectedLanguageOption: {\n value: 'EN',\n label: 'English',\n rtl: false,\n },\n }\n }\n\n componentDidMount() {\n getAtom(\n this.props.match.params.atomId,\n this.state.selectedLanguageOption.value,\n atom => {\n this.setState({ atom: JSON.parse(JSON.stringify(atom)) })\n loadTags(this.props.match.params.botId)\n this.setLanguageOptions(this.props.match.params.botId)\n },\n )\n }\n\n setLanguageOptions = () => {\n getBotLanguages(this.props.activeBot.id)\n .then(botLanguages => {\n if (botLanguages.defaultLanguage) {\n const { defaultLanguage, activeLanguages } = botLanguages\n const selectedOption = {\n label: defaultLanguage.fullName,\n value: defaultLanguage.shortName,\n rtl: defaultLanguage.isRtl,\n }\n\n const languageOptions = activeLanguages.map(language => {\n return {\n label: language.fullName,\n value: language.shortName,\n rtl: language.isRtl,\n }\n })\n\n this.setState({\n languageOptions: languageOptions,\n selectedLanguageOption: selectedOption,\n })\n return selectedOption\n }\n })\n .then(selectedOption => {\n getAttributes(this.props.match.params.botId, selectedOption.value)\n })\n }\n\n handleChangeName(text) {\n const atom = { ...this.state.atom }\n atom.name = text\n this.setState({\n atom: atom,\n })\n if (\n (this.props.atom.name !== text && this.getAtomNames().includes(text)) ||\n text.trim() === ''\n ) {\n this.setState({ isNameOk: false })\n } else {\n this.setState({ isNameOk: true })\n }\n }\n\n getAtomNames() {\n const names = []\n if (this.props.flows) {\n this.props.flows.forEach(flow => {\n flow.atoms != null &&\n flow.atoms.forEach(atom => {\n names.push(atom.name)\n })\n })\n }\n return names\n }\n\n validateMessages() {\n let send = true\n\n this.state.atom.messages &&\n this.state.atom.messages.forEach(message => {\n const textValidation = message?.texts?.some(elem => isStringEmpty(elem))\n\n const setAttributeValidation = message?.attributes?.some(elem =>\n isStringEmpty(elem?.id?.toString()),\n )\n\n const saveUserInputValidation = this.validateSaveUserInput(message)\n\n const saveSmartRedirectValidation = this.validateSmartRedirect(message)\n\n if (message.type === TEXT_TYPE && textValidation) {\n alertError(\"You can't save an empty message.\")\n send = false\n }\n\n if (message.type === SET_ATTRIBUTE_TYPE && setAttributeValidation) {\n alertError('Please, fill in required fields.')\n send = false\n }\n\n if (message.type === SAVE_USER_INPUT_TYPE && saveUserInputValidation) {\n alertError('Please, fill in required fields.')\n send = false\n }\n\n if (\n message.type === CONDITIONAL_REDIRECT_TYPE &&\n saveSmartRedirectValidation\n ) {\n alertError('Please, fill in required fields.')\n send = false\n }\n\n if (message?.buttons?.length) {\n send = message.buttons.reduce(this.validateAttribute, send)\n }\n\n if (message?.quick_replies?.length) {\n send = message.quick_replies.reduce(this.validateAttribute, send)\n }\n\n if(message?.quick_replies?.some(qrItem => !qrItem.title)){\n alertError('Please, full titles for quick replies')\n send = false\n }\n })\n\n return send\n }\n\n validateAttribute = (acc, item) => {\n if (item?.attributes?.some(attribute => !attribute.id)) {\n alertError('Please, fill in required fields.')\n return false\n }\n return acc\n }\n\n validateSaveUserInput = message => {\n return (\n !message?.saveUserInput?.validation ||\n !message?.saveUserInput?.onValidationSuccessAtomId ||\n (message?.saveUserInput?.validation !== 'NONE' &&\n !message?.saveUserInput?.onValidationFailAtomId) ||\n (message?.saveUserInput?.validation === 'CUSTOM' &&\n !message?.saveUserInput?.customValidationRegex)\n )\n }\n\n validateSmartRedirect = message => {\n return (\n !message?.conditionalRedirect?.defaultRedirect ||\n message?.conditionalRedirect?.conditionGroups?.some(condition => {\n return (\n !condition?.redirectTo ||\n condition.expressions.some(expression => {\n return (\n !expression?.attribute?.id ||\n !(\n expression?.value ||\n expression?.operator === 'IS_DEFAULT' ||\n expression?.operator === 'IS_NOT_DEFAULT'\n )\n )\n })\n )\n })\n )\n }\n\n saveAtom() {\n let send = this.validateMessages()\n\n if (\n this.state.atom.randomAtoms &&\n this.state.atom.randomAtoms.some(randomAtom => !randomAtom.atomName)\n ) {\n alertError(\"You can't save an empty elements.\")\n send = false\n }\n\n if (\n this.state.atom.messages?.length &&\n this.state.atom.messages?.every(\n message => message.type === SET_ATTRIBUTE_TYPE,\n )\n ) {\n alertError('Set attribute cannot be a single element in the atom.')\n send = false\n }\n\n send &&\n saveAtom(\n formatAtom(this.state.atom),\n this.props.match.params.botId,\n this.state.selectedLanguageOption.value,\n atom => {\n this.setState({ atom: JSON.parse(JSON.stringify(atom)) })\n },\n )\n }\n\n static getDerivedStateFromProps(props, state) {\n if (state.atom && state.atom.id != props.match.params.atomId) {\n getAtom(props.match.params.atomId, state.selectedLanguageOption.value)\n return {\n atom: props.atom,\n open: false,\n isNameOk: true,\n }\n }\n return null\n }\n\n deleteMessage = message => {\n const newAtom = { ...this.state.atom }\n newAtom.messages.splice(newAtom.messages.indexOf(message), 1)\n this.setState({ atom: newAtom })\n }\n\n updateMessage = (message, index) => {\n const newAtom = { ...this.state.atom }\n newAtom.messages[index] = message\n this.setState({\n atom: newAtom,\n })\n }\n\n updateRedirect(redirectTo) {\n const newAtom = { ...this.state.atom }\n newAtom.redirectTo = redirectTo\n this.setState({\n atom: newAtom,\n })\n }\n\n updateTags(tags) {\n const newAtom = { ...this.state.atom }\n newAtom.tags = tags\n this.setState({\n atom: newAtom,\n })\n }\n\n moveToTop(oldIndex) {\n const newIndex = oldIndex - 1\n const atom = JSON.parse(JSON.stringify(this.state.atom))\n atom.messages.move(oldIndex, newIndex)\n this.setState({\n atom: atom,\n })\n }\n\n moveToBottom(oldIndex) {\n const newIndex = oldIndex + 1\n const atom = JSON.parse(JSON.stringify(this.state.atom))\n atom.messages.move(oldIndex, newIndex)\n this.setState({\n atom: atom,\n })\n }\n\n createNewMessage(message) {\n const newAtom = { ...this.state.atom }\n if (!newAtom.messages) newAtom.messages = []\n message['tempId'] = uuidv1()\n newAtom.messages.push(JSON.parse(JSON.stringify(message)))\n this.setState({\n atom: newAtom,\n })\n }\n\n addSetAttribute() {\n const newAtom = { ...this.state.atom }\n if (!newAtom.messages) newAtom.messages = []\n if (\n !newAtom.messages.some(message => message.type === SET_ATTRIBUTE_TYPE)\n ) {\n const newMessage = deepCopyFunction(setAttributeMessage)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push(JSON.parse(JSON.stringify(newMessage)))\n this.setState({\n atom: newAtom,\n })\n }\n }\n\n addSaveUserInput() {\n const newAtom = { ...this.state.atom }\n if (!newAtom.messages) newAtom.messages = []\n if (\n !newAtom.messages.some(message => message.type === SAVE_USER_INPUT_TYPE)\n ) {\n const newMessage = deepCopyFunction(saveUserInput)\n newMessage['tempId'] = uuidv1()\n newAtom.messages.push(JSON.parse(JSON.stringify(newMessage)))\n this.setState({\n atom: newAtom,\n })\n }\n }\n\n addRedirect() {\n if (!this.state.atom.randomAtoms) {\n const newAtom = { ...this.state.atom }\n newAtom.redirectTo = ''\n this.setState({\n atom: newAtom,\n })\n } else {\n alertError(\n 'Atom can contain only one of these elements: Redirect to atom, Random redirect',\n )\n }\n }\n\n addTags() {\n const newAtom = { ...this.state.atom }\n newAtom.tags = []\n this.setState({\n atom: newAtom,\n })\n }\n\n addRandomRedirect = () => {\n if (\n this.state.atom.redirectTo === undefined ||\n this.state.atom.redirectTo === null\n ) {\n const newAtom = { ...this.state.atom }\n newAtom.randomAtoms = JSON.parse(\n JSON.stringify(randomRedirectInitialState.randomAtoms),\n )\n newAtom.sendFirstAtomOnlyOnce =\n randomRedirectInitialState.sendFirstAtomOnlyOnce\n this.setState({\n atom: newAtom,\n })\n } else {\n alertError(\n 'Atom can contain only one of these elements: Redirect to atom, Random redirect',\n )\n }\n }\n\n checkAtomForEditing() {\n const propsAtom = formatAtom(this.deepCopyFunction(this.props.atom))\n const stateAtom = formatAtom(this.deepCopyFunction(this.state.atom))\n\n return (\n JSON.stringify(this.deleteTextsField(propsAtom)) !==\n JSON.stringify(this.deleteTextsField(stateAtom))\n )\n }\n\n deepCopyFunction = inObject => {\n let value, key\n if (typeof inObject !== 'object' || inObject === null) {\n return inObject // Return the value if inObject is not an object\n }\n // Create an array or object to hold the values\n const outObject = Array.isArray(inObject) ? [] : {}\n for (key in inObject) {\n value = inObject[key]\n // Recursively (deep) copy for nested objects, including arrays\n outObject[key] =\n typeof value === 'object' && value !== null\n ? this.deepCopyFunction(value)\n : value\n }\n\n return outObject\n }\n\n deleteTextsField(atom) {\n if (!atom || !atom.messages) return\n atom.messages.forEach(msg => {\n delete msg.texts\n })\n return atom\n }\n\n handleSelectedLanguage = languageOption => {\n this.setState(\n {\n selectedLanguageOption: languageOption,\n },\n () => {\n getAtom(\n this.props.match.params.atomId,\n this.state.selectedLanguageOption.value,\n atom => {\n this.setState({ atom: JSON.parse(JSON.stringify(atom)) })\n loadTags(this.props.match.params.botId)\n },\n )\n },\n )\n }\n\n onSaveAtom = () => {\n this.setState(\n {\n saveTime: new Date(),\n },\n () => this.saveAtom(),\n )\n }\n\n updateAtom = atom => {\n this.setState({ atom })\n }\n\n render() {\n const { classes } = this.props\n const { rtl } = this.state.selectedLanguageOption\n const nameBorder = !this.state.isNameOk\n ? '1px solid #FF624C'\n : '1px solid #C7CAD6'\n\n return (\n \n {this.state.atom && (\n <>\n \n
\n
\n \n {this.state.open ? (\n \n this.handleClose()}\n value={this.state.atom.name}\n onKeyUp={this.checkEnterPress}\n onChange={event =>\n this.handleChangeName(event.target.value)\n }\n />\n
\n ) : (\n this.handleOpen()}>\n {this.state.atom.name}\n

\n )}\n
\n
\n
\n \n
\n\n this.onSaveAtom()}>\n Save\n \n
\n\n \n \n \n \n \n {this.state?.atom?.messages?.map((message, index) => (\n \n \n {this.state.atom.messages.length > 1 && index != 0 && (\n {\n this.moveToTop(index)\n }}>\n \n Move
\n up\n \n
\n \n
\n \n )}\n {this.state.atom.messages.length > 1 &&\n index + 1 !== this.state.atom.messages.length && (\n this.moveToBottom(index)}\n className=\"element\">\n
\n \n
\n \n Move
\n down\n \n \n )}\n \n \n \n ))}\n {this.state.atom.tags != null && (\n this.updateTags(value)}\n onDelete={() => this.updateTags(null)}\n />\n )}\n \n \n \n \n )}\n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n atom: state.atom,\n activeBot: state.activeBot,\n flows: state.flows,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(AtomEditor)),\n)\n","/**\n * Created by Admin on 05.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { createNewAtom } from '../api/atom'\nimport { PlusIcon } from '../../../uiKit/icons/Icons.js'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n addNew: {\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n border: '1px solid #1658F3',\n borderRadius: 10,\n padding: 10,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n margin: '5px 5px 5px 0',\n cursor: 'pointer',\n },\n input: {\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #B0B2C0',\n boxSizing: 'border-box',\n boxShadow: '0px 0px 6px rgba(215, 216, 223, 0.668054)',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n margin: 5,\n // maxHeight: 40,\n },\n '@global': {\n \"[class*='NewFlow-paper']\": {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n '.buttonHover2:hover': {\n color: '#1658F3',\n background: 'white',\n },\n '.buttonHover2': {\n marginTop: 20,\n background: '#1658F3',\n color: 'white',\n borderRadius: 10,\n },\n \"[class*='addNew'] svg\": {\n position: 'relative',\n top: 2,\n right: 3,\n },\n },\n})\n\nclass NewFlow extends React.Component {\n state = {\n open: false,\n usedNames: [],\n isNameOk: true,\n name: '',\n empty: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n handleChangeName(text) {\n this.setState({ name: text })\n if (this.state.usedNames.includes(text)) {\n this.setState({ isNameOk: false })\n } else {\n this.setState({ isNameOk: true })\n }\n }\n\n checkEnterPress = event => {\n if (event.key === 'Enter') {\n this.saveNewAtom()\n }\n }\n\n saveNewAtom() {\n if (!this.state.isNameOk) {\n return\n }\n if (!isStringEmpty(this.state.name)) {\n const newAtom = {\n name: this.state.name,\n flowId: this.props.flowId,\n }\n createNewAtom(newAtom, this.props.activeBotId)\n this.setState({ open: false, name: '', empty: false }, this.handleClose)\n } else {\n this.setState({ empty: true }, this.handleClose)\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.flows) {\n const names = []\n nextProps.flows.forEach(flow => {\n flow.atoms != null &&\n flow.atoms.forEach(atom => {\n names.push(atom.name)\n })\n })\n this.setState({ usedNames: names })\n }\n }\n\n componentDidUpdate() {\n if (this.state.open && this.nameInput != null) this.nameInput.focus()\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n
\n Add a new atom\n
\n {this.state.open && (\n \n this.saveNewAtom()}\n value={this.state.name}\n onKeyUp={this.checkEnterPress}\n onChange={event => this.handleChangeName(event.target.value)}\n />\n
\n )}\n \n )\n }\n}\n\nNewFlow.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst NewFlowExport = withStyles(styles)(NewFlow)\n\nexport default NewFlowExport\n","/**\n * Created by Admin on 05.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { IconButton } from '@material-ui/core'\nimport { deleteFlow } from '../api/flow'\nimport { TrashIcon } from '../../../uiKit/icons/Icons.js'\nimport Modal from '../../../uiKit/Modal'\nimport SubmitButton from '../../../uiKit/buttons/SubmitButton'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n buttonsHolder: {\n display: 'flex',\n justifyContent: 'space-around',\n padding: '24px 70px',\n },\n})\n\nclass DeleteFlow extends React.Component {\n state = {\n open: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n deleteFlow() {\n const { flow } = this.props\n\n flow &&\n flow.atoms &&\n flow.atoms.forEach(atom => {\n const atomId = atom.id\n if (atomId == this.props.atomId) {\n this.props.selectAtom(this.props.flows[0].atoms[0].id)\n }\n })\n deleteFlow(\n this.props.flow.id,\n this.props.match.params.botId,\n this.handleClose,\n )\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n \n \n \n \n
\n this.deleteFlow()} title=\"Delete\" />\n \n
\n \n
\n )\n }\n}\n\nDeleteFlow.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n flows: state.flows,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(DeleteFlow)),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\nimport {\n FormControl,\n FormHelperText,\n Input,\n InputLabel,\n} from '@material-ui/core'\nimport { PlusIcon } from '../../../uiKit/icons/Icons.js'\nimport { createNewFlow } from '../api/flow'\nimport Modal from '../../../uiKit/Modal'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n addFlow: {\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n padding: 15,\n justifyContent: 'center',\n },\n container: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n formControl: {\n margin: theme.spacing.unit,\n },\n buttonHolder: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: 30,\n },\n newFlowButton: {\n fontWeight: 700,\n fontSize: 14,\n color: '#3A3F62',\n margin: '0 0 0 16px',\n fontFamily: 'Lato',\n },\n})\n\nclass NewFlow extends React.Component {\n state = {\n open: false,\n usedNames: [],\n isNameOk: true,\n name: '',\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n checkEnterPress = event => {\n if (\n event.key === 'Enter' &&\n !isStringEmpty(this.state.name) &&\n !this.state.usedNames.includes(this.state.name)\n ) {\n this.saveNewFLow()\n }\n }\n\n handleChangeName(text) {\n this.setState({ name: text })\n if (this.state.usedNames.includes(text)) {\n this.setState({ isNameOk: false })\n } else {\n this.setState({ isNameOk: true })\n }\n }\n\n saveNewFLow() {\n if (\n !isStringEmpty(this.state.name) &&\n !this.state.usedNames.includes(this.state.name)\n ) {\n const newFLow = {\n name: this.state.name,\n }\n createNewFlow(this.props.botId, newFLow)\n this.setState({ open: false, name: '' })\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.flows) {\n const names = []\n nextProps.flows.forEach(flow => {\n names.push(flow.name)\n })\n this.setState({ usedNames: names })\n }\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n \n \n \n \n

Add new flow

\n
\n \n \n Flow name\n this.handleChangeName(event.target.value)}\n onKeyUp={this.checkEnterPress}\n />\n {!this.state.isNameOk && (\n \n This flow name is already used!\n \n )}\n \n
\n this.saveNewFLow()}>\n CREATE\n \n
\n \n \n )\n }\n}\n\nNewFlow.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles)(NewFlow)\n","/**\n * Created by Admin on 05.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { CloseIcon } from '../../../uiKit/icons/Icons.js'\nimport { deleteAtom } from '../api/atom'\nimport Modal from '../../../uiKit/Modal'\nimport SubmitButton from '../../../uiKit/buttons/SubmitButton'\n\nconst styles = theme => ({\n buttonsHolder: {\n display: 'flex',\n justifyContent: 'space-around',\n padding: '24px 70px',\n },\n})\n\nclass DeleteAtom extends React.Component {\n state = {\n open: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n handleAtomDelete = () => {\n this.props.selectWelcomeAtom()\n this.handleClose()\n }\n\n deleteAtom = () => {\n deleteAtom(\n this.props.atom.id,\n this.props.activeBotId,\n this.handleAtomDelete,\n )\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n
this.handleOpen()}>\n \n
\n \n
\n \n \n
\n \n
\n )\n }\n}\n\nDeleteAtom.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles)(DeleteAtom)\n","export const TimeConstants = Object.freeze({\n defaultBackTime: 7, //days\n})\n\nexport const DEFAULT_DEBOUNCE_TIME = 1000 //mls\n","import {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL } from '../../../configs'\nimport { setTwilioCredentials } from '../actions/twilioCredentials'\n\nexport function getTwilioCredentials(botId) {\n return fetch(`${BASE_URL}/bot/${botId}/twilio/integration`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(credentials => {\n setTwilioCredentials(credentials)\n return credentials\n })\n .catch(() => alertError('Fail. Try it later 45'))\n}\n\nexport function submitTwilioCredentials(botId, credentials) {\n return fetch(`${BASE_URL}/bot/${botId}/twilio/integration`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(credentials),\n }).then(response => {\n if (response.status === 400) {\n response.text().then(text => {\n const res = JSON.parse(text)\n alertError(res.message)\n })\n return\n } else if (response.status === 204) {\n alertSuccess('Twilio is updated successfully.')\n console.log(response)\n } else {\n alertError(response.message)\n }\n })\n}\n","import { store } from '../../../index'\n\nexport const GET_TWILIO_CREDENTIALS = 'GET_TWILIO_CREDENTIALS'\n\nexport const setTwilioCredentials = twilioCredentials => {\n store.dispatch({\n type: GET_TWILIO_CREDENTIALS,\n twilioCredentials,\n })\n}\n","export const styles = () => ({\n loaderWrap: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 180\n },\n pickerContainer: {\n '& div': {\n width: '100% !important'\n }\n },\n commentsWrap: {\n display: 'flex',\n flexDirection: 'column',\n padding: '0px 24px',\n overflowY: 'scroll',\n height: 300\n },\n header: {\n padding: '0px 30px 32px',\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)'\n },\n footer: {\n borderTop: '1px solid rgba(53, 64, 82, 0.1)',\n height: 100,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n noDataWrap: {\n height: 300,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n },\n noData: {\n color: 'rgba(53, 64, 82, 0.5)'\n }\n});\n","export const styles = () => ({\n votesWrap: {\n display: 'flex',\n justifyContent: 'space-between'\n },\n votesContainer: {\n marginTop: 24,\n color: 'rgba(53, 64, 82)',\n fontSize: 14,\n padding:'0px 16px'\n },\n noVotes: {\n width: '100%',\n height: 4,\n backgroundColor: '#cccccc',\n borderRadius: 6\n },\n votesLineUp: {\n height: 4,\n backgroundColor: '#5FC2A2',\n borderRadius: '6px 0px 0px 6px'\n },\n votesLineDown: {\n height: 4,\n backgroundColor: '#FF6666',\n borderRadius: '0px 6px 6px 0px'\n },\n votesWrapLine: {\n display: 'flex',\n justifyContent: 'space-between',\n marginTop: 8\n }\n});\n\n\nexport const getWidth = (width) => {\n return {\n width: `${width}%`,\n borderRadius: width === 100 && 6\n }\n};\n","import React from \"react\";\nimport {withRouter} from \"react-router-dom\";\nimport {withStyles} from \"@material-ui/core/styles\";\n\nimport {styles, getWidth} from \"./VotesLineStyles\";\n\nconst VotesLine = props => {\n let {classes, upvotes, downvotes} = props;\n\n const votesLineUpWidth = upvotes * 100 / (upvotes + downvotes);\n const votesLineDownWidth = downvotes * 100 / (upvotes + downvotes);\n\n return (\n
\n
\n
👍 {upvotes}
\n
👎 {downvotes}
\n
\n
\n {!upvotes && !downvotes\n &&
}\n\n {!!upvotes\n &&
}\n\n {!!downvotes\n &&
}\n
\n
\n );\n};\n\nexport default withRouter(withStyles(styles)(VotesLine));\n","export const ANCHOR_ORIGIN = {\n vertical: 'bottom',\n horizontal: 'right',\n}\n\nexport const TRANSFORM_ORIGIN = {\n vertical: 'top',\n horizontal: 'right',\n}\n\nexport const SORT_DATE = {\n label: 'Date',\n value: 'date',\n}\n\nexport const SORT_SCORE = {\n label: 'Rate',\n value: 'score',\n}\n\nexport const DIRECTION_ASC = {\n label: 'Ascending',\n value: 'asc',\n}\n\nexport const DIRECTION_DESK = {\n label: 'Descending',\n value: 'desc',\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport class ThreeIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n","import React, { Fragment, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { withRouter } from 'react-router-dom'\n\nimport { styles } from './PopoverSupportStyles'\nimport Popover from '@material-ui/core/Popover'\nimport {\n ANCHOR_ORIGIN,\n TRANSFORM_ORIGIN,\n} from '../CommentsFilter/CommentsFilterConfig'\nimport { ThreeIcon } from '../../../../uiKit/icons/TreeDots'\nimport { HOME_PATH } from '../../../../configs'\n\nconst PopoverSupport = props => {\n const { classes, userId, messageId } = props\n const [target, setTarget] = useState(null)\n const [isOpenPopover, setOpenPopover] = useState(false)\n\n const redirectToChat = () => {\n const { botId } = props.match.params\n const link = `${HOME_PATH}/bot/${botId}/support/${userId}#${messageId}`\n window.open(link, '_blank')\n setOpenPopover(false)\n }\n\n return (\n \n setOpenPopover(true)}\n style={{ cursor: 'pointer' }}\n ref={node => setTarget(node)}>\n \n
\n setOpenPopover(!isOpenPopover)}\n anchorOrigin={ANCHOR_ORIGIN}\n transformOrigin={TRANSFORM_ORIGIN}>\n
\n Go to chat\n
\n \n \n )\n}\n\nexport default withRouter(withStyles(styles)(PopoverSupport))\n","export const styles = {\n filterItem: {\n height: 28,\n color: '#3A3F62',\n cursor: 'pointer',\n display: 'flex',\n fontSize: 14,\n alignItems: 'center',\n padding: '0px 12px',\n '&:hover': {\n backgroundColor: '#EBEBEF',\n },\n '& span': {\n width: 36,\n textAlign: 'center',\n },\n },\n popover: {\n width: 135,\n height: 40,\n borderRadius: 4,\n boxShadow: '0px 1px 5px rgba(19, 69, 186, 0.241904)',\n padding: '6px 0px',\n },\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport moment from 'moment'\n\nimport { styles } from './CommentStyles'\nimport PopoverSupport from '../PopoverSupport/PopoverSupport'\n\nconst Comment = props => {\n const { classes, data } = props\n const date = moment(data.date).format('MMM DD, YYYY')\n\n return (\n
\n
\n
\n

\n {data.firstName} {data.lastName} {date}\n

\n \n
\n
{'★'.repeat(data.score)}
\n
{data.comment}
\n
\n
\n )\n}\n\nexport default withStyles(styles)(Comment)\n","export const styles = {\n container: {\n padding: '12px 0px',\n },\n nameContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n nameWrap: {\n fontSize: 14,\n fontWeight: 'bold',\n margin: 0,\n display: 'inline',\n '& span': {\n fontWeight: '300',\n color: 'rgba(53, 64, 82, 0.5)',\n marginLeft: 8,\n },\n },\n score: {\n color: '#FF624C',\n },\n comment: {\n paddingTop: 9,\n fontSize: 14,\n color: 'rgba(53, 64, 82, 0.7)',\n },\n}\n","import React, {useEffect, useState} from \"react\";\nimport {withRouter} from \"react-router-dom\";\nimport {withStyles} from \"@material-ui/core/styles\";\nimport DateRangePicker from \"react-bootstrap-daterangepicker\";\nimport moment from \"moment\";\n\nimport {styles} from './FeedbackModalStyles'\nimport VotesLine from \"./VotesLine/VotesLine\";\nimport SubmitButton from \"../../../../uiKit/buttons/SubmitButton\";\nimport Modal from \"../../../../uiKit/Modal\";\nimport Loader from \"../../../../uiKit/loaders/loader\";\nimport Comment from \"../../../analytics/components/Comment/Comment\";\nimport {getFlowCommentsAmount, getFlowCommentsList} from \"../../api/flow\";\n\nconst FeedbackModal = props => {\n const {classes, isOpen, handleClose, selectedFlow, botId} = props;\n const [loader, setLoader] = useState(true);\n const [startDate, setStartDate] = useState(moment().subtract(1, 'month').add(1, 'day'));\n const [endDate, setEndDate] = useState(moment());\n const [upvotes, setUpvotes] = useState(0);\n const [downvotes, setDownvotes] = useState(0);\n const [comments, setComments] = useState([]);\n const [hasNext, setHasNext] = useState(true);\n const [page, setPage] = useState(0);\n const inputValue = `${startDate.format('YYYY-MM-DD')} - ${endDate.format('YYYY-MM-DD')}`;\n\n useEffect(() => {\n clearState();\n commentsRequest();\n commentsAmountRequest();\n }, [startDate, endDate]);\n\n const saveChanges = (event, picker) => {\n setStartDate(picker.startDate);\n setEndDate(picker.endDate);\n };\n\n const onCommentsScroll = ({target}) => {\n const isBottom = target.scrollHeight - target.scrollTop === target.clientHeight;\n\n if (isBottom && hasNext) {\n commentsRequest()\n }\n };\n\n const commentsRequest = () => {\n getFlowCommentsList(botId, selectedFlow.id, startDate, endDate, page)\n .then(res => {\n setComments([...comments, ...res.comments]);\n setHasNext(res.hasNext);\n setPage(page + 1);\n })\n };\n\n const commentsAmountRequest = () => {\n setLoader(true);\n getFlowCommentsAmount(botId, selectedFlow.id, startDate, endDate)\n .then(res => {\n setUpvotes(res.upvotes);\n setDownvotes(res.downvotes);\n setLoader(false)\n });\n };\n\n const clearState = () => {\n setPage(0);\n setComments([]);\n setHasNext(true);\n setUpvotes(0);\n setDownvotes(0);\n };\n\n return (\n !loader && handleClose()}\n style={{padding: '30px 0px 0px', width: 460}}\n title={`${selectedFlow.name} Flow Feedbacks`}>\n {loader\n ?
\n \n
\n :
\n
\n
\n \n \n \n
\n\n \n
\n\n {comments.length\n ?
\n {comments.map(comment => (\n
\n \n
\n ))}\n
\n :
\n

No data

\n
\n }\n\n
\n \n
\n
\n }\n \n );\n};\n\nexport default withRouter(withStyles(styles)(FeedbackModal));\n","export const FLOW_COMMENTS_SIZE = 10;\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport {\n ExpansionPanel,\n ExpansionPanelDetails,\n ExpansionPanelSummary,\n Typography,\n withStyles,\n} from '@material-ui/core'\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\nimport { NavLink, Redirect, Route, withRouter } from 'react-router-dom'\nimport AtomEditor from './components/AtomEditor'\nimport NewAtom from './components/NewAtom'\nimport DeleteFlow from './components/DeleteFlow'\nimport NewFlow from './components/NewFlow'\nimport DeleteAtom from './components/DeleteAtom'\nimport { getFlows } from './api/flow'\nimport { SearchIcon } from '../../uiKit/icons/Icons.js'\nimport Headline from '../../uiKit/texts/Headline'\nimport { HOME_PATH } from '../../configs'\nimport { debounce } from 'lodash'\n\nimport { DEFAULT_DEBOUNCE_TIME } from '../../constants/time'\nimport { searchAtomsByContent } from './api/atom'\nimport { isStringEmpty } from '../../helpers/isStringEmpty'\nimport { getTwilioCredentials } from '../settings/api/twilioCredetials'\nimport { getBot } from '../home/api/bots'\nimport FeedbackModal from \"./components/FeedbackModal/FeedbackModal\";\n\nconst styles = theme => ({\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n width: '100%',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: 340,\n },\n searchIcon: {\n margin: 10,\n fontSize: 20,\n color: theme.palette.primary.main,\n },\n atomsSearch: {\n padding: 10,\n },\n activeChip: {\n backgroundColor: theme.palette.primary.main,\n color: 'white',\n margin: 5,\n },\n chip: {\n margin: 5,\n border: '1px solid #EBEBEF',\n },\n mainWrap: {\n background: '#FFFFFF',\n boxShadow: 'none',\n borderRadius: 10,\n height: 'auto',\n display: 'flex',\n justifyContent: 'space-between',\n },\n header: {\n color: theme.palette.primary.headerText,\n fontSize: 14,\n fontWeight: 700,\n fontFamily: 'Lato, sans-serif',\n },\n '@global': {\n \"[class*='MuiExpansionPanel']:before \": {\n display: 'none',\n },\n '.flowExp:hover .delete': {\n display: 'block',\n },\n '.flowExp::before': {\n display: 'none',\n },\n '.delete': {\n position: 'relative',\n left: 35,\n bottom: 33,\n display: 'none',\n transition: 'all 0.5s ease',\n },\n \".flowExp[class*='expanded'] .delete\": {\n bottom: 44,\n transition: 'all 0.5s ease',\n },\n },\n addNew: {\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n border: '1px solid #1658F3',\n padding: 10,\n borderRadius: 10,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n maxHeight: 40,\n margin: 5,\n },\n flowLabel: {\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%'\n },\n feedbackButton: {\n fontSize: 14,\n color: theme.palette.primary.headerText,\n padding: '4px 8px',\n borderRadius: 8,\n minWidth: 80,\n textAlign: 'end',\n '&:hover': {\n backgroundColor: 'rgba(90, 152, 247, 0.05)'\n },\n '&:active': {\n backgroundColor: 'rgba(90, 152, 247, 0.1)'\n }\n }\n})\n\nclass Builder extends React.Component {\n state = {\n searchText: '',\n atomId: null,\n flowId: null,\n redirect: false,\n redirectId: null,\n isOpenFeedbackModal: false,\n selectedFeedbackFlow: null\n }\n\n constructor() {\n super()\n this.getSearchAtoms = this.getSearchAtoms.bind(this)\n }\n\n componentDidMount() {\n const str = window.location.pathname.split('/')\n const atomId = str[str.length - 1] !== 'flows' ? str[str.length - 1] : null\n\n this.setState({ atomId }, () => {\n getFlows(this.props.match.params.botId, true)\n getTwilioCredentials(this.props.match.params.botId)\n getBot(this.props.match.params.botId)\n })\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.flows !== this.props.flows) {\n if (!this.state.atomId) {\n this.selectWelcomeAtom()\n }\n }\n }\n\n selectWelcomeAtom = () => {\n const { flows } = this.props\n if (\n flows &&\n flows.length > 0 &&\n flows[0].atoms &&\n flows[0].atoms[0].id &&\n this.state.redirectId === null\n ) {\n this.setState(\n {\n redirect: true,\n redirectId: flows[0].atoms[0].id,\n },\n () => {\n this.setState({\n redirect: false,\n })\n },\n )\n }\n }\n\n selectAtom(id) {\n this.setState(\n {\n redirectId: id,\n redirect: true,\n },\n () => {\n this.setState({\n redirect: false,\n })\n },\n )\n }\n\n checkAccessToDelete(flow) {\n let deleteAccess = true\n if (flow.atoms !== undefined) {\n flow.atoms.find(atom => {\n if (atom.isHardCoded) {\n deleteAccess = false\n }\n })\n }\n return deleteAccess\n }\n\n renderRedirect() {\n if (this.state.redirect) {\n return (\n \n )\n }\n }\n\n checkTextExists = atom => {\n if (isStringEmpty(this.state.searchText)) return true\n\n if (atom.name.toUpperCase().includes(this.state.searchText.toUpperCase()))\n return true\n\n const searchFlow = this.props.searchAtoms[atom.flowId]\n return !!searchFlow && searchFlow.some(({ id }) => id === atom.id)\n }\n\n checkAtom(flow) {\n if (isStringEmpty(this.state.searchText)) return true\n if (flow.atoms != null) {\n for (let x = 0; x < flow.atoms.length; x++) {\n if (this.checkTextExists(flow.atoms[x])) {\n return true\n }\n }\n }\n\n return false\n }\n\n handleOpenFeedbackModal = (e, flow) => {\n e.stopPropagation();\n this.setState({\n isOpenFeedbackModal: true,\n selectedFeedbackFlow: flow\n })\n };\n\n handleCloseFeedbackModal = () => {\n this.setState({\n isOpenFeedbackModal: false,\n selectedFeedbackFlow: null\n })\n };\n\n getSearchAtoms = debounce(_ => {\n if (this.state.searchText.length > 0) {\n searchAtomsByContent(this.state.searchText)\n }\n }, DEFAULT_DEBOUNCE_TIME)\n\n render() {\n const { classes } = this.props\n const {redirectId, atomId, flowId, isOpenFeedbackModal, selectedFeedbackFlow} = this.state\n\n return (\n
\n \n
\n
\n
\n \n \n\n
\n {\n this.setState({ searchText: event.target.value })\n this.getSearchAtoms(event.target.value)\n }}\n />\n\n \n
\n
\n
\n
\n \n
\n \n {this.props.flows != null &&\n this.props.flows\n .filter(flow => this.checkAtom(flow))\n .reverse()\n .map(flow => (\n \n }>\n \n \n {flow.name}\n \n {(!!flow.upvotes || !!flow.downvotes) &&\n
this.handleOpenFeedbackModal(e, flow)}>\n {`👍 ${flow.upvotes}/ 👎 ${flow.downvotes}`}\n
}\n {!flow.atoms && this.checkAccessToDelete(flow) && (\n this.selectAtom(atomId)}\n flow={flow}\n atomId={this.state.atomId}\n />\n )}\n
\n \n \n {!this.checkAccessToDelete(flow) && (\n \n Start with customizing these messages to make the\n conversation feel personal\n
\n )}\n \n \n\n {flow.atoms != null &&\n flow.atoms\n .filter(atom => this.checkTextExists(atom))\n .reverse()\n .map((atom, key) => (\n \n \n {atom.name}\n \n \n {!atom.isHardCoded && (\n \n this.selectAtom(\n this.props.flows[0].atoms[0].id,\n )\n }\n />\n )}\n
\n
\n ))}\n \n \n \n ))}\n \n \n \n {this.props.flows[0] && this.props.flows[0].atoms[0] && (\n
\n
\n \n {this.renderRedirect()}\n
\n
\n )}\n \n {isOpenFeedbackModal && }\n \n )\n }\n}\n\nBuilder.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = ({ flows, activeBot, searchAtoms }) => ({\n flows,\n activeBot,\n searchAtoms,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Builder)),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\nimport { deleteIntent } from '../api/nlp'\nimport { connect } from 'react-redux'\nimport { Dialog, DialogActions, DialogTitle, Slide } from '@material-ui/core'\n\nfunction Transition(props) {\n return \n}\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n deleteInt: {\n flexBasis: '10%',\n color: '#FF624C',\n cursor: 'pointer',\n },\n flow: {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n button: {\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n margin: '40px 0',\n color: 'white',\n fontFamily: 'Lato, sans-serif',\n },\n '@global': {\n \"[class*='MuiDialog-paperWidthSm']\": {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n '.buttonHover:hover': {\n background: 'white',\n color: '#1658F3',\n },\n '.buttonHover1:hover': {\n color: 'white',\n background: '#1658F3',\n },\n '.buttonHover1': {\n background: 'white',\n color: '#1658F3',\n },\n },\n})\n\nclass DeleteIntent extends React.Component {\n state = {\n open: false,\n }\n\n // componentWillMount() {\n // getIntentContexts(this.props.intentId); //todo fix ASAP\n // }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n deleteIntent() {\n deleteIntent(this.props.intentId, this.props.intentsSize)\n this.setState({ open: false })\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n
this.handleOpen()}>Delete
\n\n \n \n {'Are you sure you want to delete' + this.props.name + '?'}\n \n \n this.deleteIntent()}\n color=\"primary\">\n Delete\n \n \n Cancel\n \n \n \n
\n )\n }\n\n getContextList() {\n return this.props.contexts.map(e => e.currentAtom).join(', ')\n }\n}\n\nDeleteIntent.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n contexts: state.contexts,\n intents: state.intents,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(DeleteIntent))\n","/**\n * Created by serhiy on 05.03.18.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport img from './discuss.png'\nimport SubmitButton from '../../../uiKit/buttons/SubmitButton'\n\nconst styles = theme => ({\n wrap: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n alignItems: 'center',\n },\n text: {\n maxWidth: 330,\n lineHeight: '22px',\n fontSize: 14,\n textAlign: 'center',\n color: theme.palette.primary.text,\n marginBottom: 24,\n },\n img: {\n display: 'block',\n marginBottom: 24,\n },\n})\n\nclass NoData extends React.Component {\n constructor(props) {\n super(props)\n this.state = {}\n }\n\n render() {\n const { classes, description, buttonTitle } = this.props\n return (\n
\n \"img\"\n

{description}

\n {buttonTitle && (\n \n )}\n
\n )\n }\n}\n\nNoData.propTypes = {\n classes: PropTypes.object.isRequired,\n description: PropTypes.string.isRequired,\n}\n\nconst mapStateToProps = state => ({\n intents: state.intents,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(NoData)))\n","/**\n * Created by serhiy on 06.03.18.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport IconButton from '@material-ui/core/IconButton'\nimport FirstPageIcon from '@material-ui/icons/FirstPage'\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft'\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight'\nimport LastPageIcon from '@material-ui/icons/LastPage'\n\nconst actionsStyles = theme => ({\n root: {\n flexShrink: 0,\n color: theme.palette.text.secondary,\n marginLeft: theme.spacing.unit * 2.5,\n },\n page: {\n fontSize: '14px',\n },\n})\n\nclass TablePaginationActions extends React.Component {\n handleFirstPageButtonClick = event => {\n this.props.onChangePage(event, 0)\n }\n\n handleBackButtonClick = event => {\n this.props.onChangePage(event, this.props.page - 1)\n }\n\n handleNextButtonClick = event => {\n this.props.onChangePage(event, this.props.page + 1)\n }\n\n handleLastPageButtonClick = event => {\n this.props.onChangePage(\n event,\n Math.max(0, Math.ceil(this.props.count / this.props.rowsPerPage) - 1),\n )\n }\n\n render() {\n const { classes, count, page, rowsPerPage, theme } = this.props\n\n return (\n
\n {count > 0 && (\n \n {page * rowsPerPage + 1} -{' '}\n {count > (page + 1) * rowsPerPage\n ? (page + 1) * rowsPerPage\n : count}{' '}\n of {count}\n \n )}\n\n \n {theme.direction === 'rtl' ? : }\n \n \n {theme.direction === 'rtl' ? (\n \n ) : (\n \n )}\n \n {page > 2 && '...'}\n {page > 1 && (\n \n this.props.onChangePage(event, this.props.page - 2)\n }\n aria-label=\"current\">\n {this.props.page - 1}\n \n )}\n {page > 0 && (\n \n this.props.onChangePage(event, this.props.page - 1)\n }\n aria-label=\"current\">\n {this.props.page}\n \n )}\n \n {this.props.page + 1}\n \n {page < Math.ceil(count / rowsPerPage) - 1 && (\n \n this.props.onChangePage(event, this.props.page + 1)\n }\n aria-label=\"current\">\n {this.props.page + 2}\n \n )}\n {page + 1 < Math.ceil(count / rowsPerPage) - 1 && (\n \n this.props.onChangePage(event, this.props.page + 2)\n }\n aria-label=\"current\">\n {this.props.page + 3}\n \n )}\n {page + 1 < Math.ceil(count / rowsPerPage) - 1 && '...'}\n = Math.ceil(count / rowsPerPage) - 1}\n aria-label=\"Next Page\">\n {theme.direction === 'rtl' ? (\n \n ) : (\n \n )}\n \n = Math.ceil(count / rowsPerPage) - 1}\n aria-label=\"Last Page\">\n {theme.direction === 'rtl' ? : }\n \n
\n )\n }\n}\n\nTablePaginationActions.propTypes = {\n classes: PropTypes.object.isRequired,\n count: PropTypes.number.isRequired,\n onChangePage: PropTypes.func.isRequired,\n page: PropTypes.number.isRequired,\n rowsPerPage: PropTypes.number.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nexport default withStyles(actionsStyles, { withTheme: true })(\n TablePaginationActions,\n)\n","/**\n * Created by Admin on 02.07.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport TablePagination from '@material-ui/core/TablePagination'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport TablePaginationActionsWrapped from './TablePaginationActionsWrapped'\n\nconst styles = theme => ({\n caption: {\n display: 'none!important',\n },\n})\n\nclass Pagination extends React.Component {\n render() {\n const { classes } = this.props\n return (\n \n )\n }\n}\n\nPagination.propTypes = {\n classes: PropTypes.object,\n count: PropTypes.number.isRequired,\n onChangePage: PropTypes.func,\n page: PropTypes.number,\n rowsPerPage: PropTypes.number,\n}\n\nexport default withStyles(styles)(Pagination)\n","export const styles = theme => ({\n alert: {\n color: '#FF624C',\n fontSize: 12,\n },\n container: {\n overflowY: 'auto',\n height: '100%',\n },\n statesModal: {\n height: 45,\n padding: '10px 0',\n },\n heading: {\n lineHeight: 'normal',\n fontSize: 18,\n color: '#3A3F62',\n textAlign: 'center',\n },\n textField: {\n marginLeft: theme.spacing.unit,\n marginRight: theme.spacing.unit,\n width: 200,\n flexBasis: '60%',\n },\n progress: {\n margin: theme.spacing.unit * 2,\n },\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflowX: 'auto',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n width: '90%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: '#1658F3',\n },\n enter: {\n width: '10%',\n cursor: 'pointer',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n userSaysWrapper: {\n maxHeight: '175px',\n overflow: 'auto',\n },\n save: {\n margin: '30px auto 0',\n },\n modalHeading: {\n fontSize: 16,\n color: '#3A3F62',\n fontWeight: 600,\n marginTop: 24,\n },\n modalHeadingQuestions: {\n fontSize: 16,\n color: '#3A3F62',\n fontWeight: 600,\n marginTop: 24,\n },\n none: {\n display: 'none',\n },\n '@global': {\n '.Select-placeholder': {\n color: '#616581',\n lineHeight: '43px',\n },\n '.Select-input > input': {\n lineHeight: '28px',\n },\n '.Select-value': {\n paddingTop: 4,\n },\n '.Select-control': {\n height: 45,\n },\n },\n})\n\nexport const HolderStyles = {\n color: '#3A3F62',\n padding: '10px 24px',\n width: '100%',\n marginRight: 0,\n}\n\nexport const TabTemplateStyles = {\n display: 'block',\n padding: '0',\n}\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\nimport { withRouter } from 'react-router-dom'\nimport {\n ExpansionPanel,\n ExpansionPanelDetails,\n ExpansionPanelSummary,\n withStyles,\n} from '@material-ui/core'\nimport SubmitButton from '../../../uiKit/buttons/SubmitButton'\n\nconst styles = theme => ({\n wrapHeader: {\n display: 'flex',\n width: '100%',\n },\n wrapNameAndPhrases: {\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n description: {\n fontFamily: 'Lato',\n fontSize: 12,\n color: theme.palette.text.gray,\n marginBottom: 0,\n },\n name: {\n fontFamily: 'Lato',\n fontSize: 18,\n marginBottom: 0,\n color: theme.palette.text.header,\n },\n flowExp: {\n borderRadius: '10px !important',\n overflow: 'hidden',\n margin: '16px 0 0 !important',\n boxShadow: ' 4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n '& >div': {\n padding: '0 40px',\n },\n },\n mainWrap: {\n borderRadius: 10,\n height: 'auto',\n display: 'flex',\n justifyContent: 'space-between',\n '& [class*=\"MuiIconButton\"]': {\n right: 24,\n },\n '& [class*=\"MuiExpansionPanel\"]:not([class*=\"MuiIconButton\"])': {\n margin: '24px 0',\n },\n \"& [class*='MuiExpansionPanel']:before \": {\n display: 'none',\n },\n '::before': {\n display: 'none',\n },\n },\n})\n\nconst TabTemplate = ({\n classes,\n tab,\n expanded,\n onChange,\n children,\n button,\n detailsStyle,\n}) => (\n \n }>\n
\n \n {tab.icon}\n
\n {tab.name && tab.phrasesNumber ? (\n
\n

{tab.name}

\n

{tab.phrasesNumber} phrases

\n
\n ) : (\n
\n

{tab.name}

\n

{tab.description}

\n
\n )}\n {button && (\n
\n button.onClick(e)}\n />\n
\n )}\n \n \n \n {children}\n \n \n)\n\nTabTemplate.propTypes = {\n tab: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(TabTemplate))\n","/**\n * Created by serhiy on 12.03.18.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { CloseIcon, PenIcon } from '../../../uiKit/icons/Icons'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: '#1658F3',\n },\n red: {\n border: '1px solid #FF624C',\n color: '#FF624C',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n disabled: {\n border: '1px solid white',\n marginRight: 10,\n maxHeight: 45,\n },\n userSays: {\n fontSize: 14,\n color: '#1658F3',\n margin: 0,\n },\n none: {\n display: 'none',\n },\n '@global': {\n '.addPhrase::placeholder,.addPhrase': {\n color: '#1658F3',\n },\n '.userSay:hover .editPhrase': {\n display: 'flex',\n alignItems: 'center',\n },\n '.class*=[none]:hover .editPhrase': {\n display: 'none',\n },\n '.editPhrase': {\n display: 'none',\n },\n },\n})\n\nclass UserSays extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n red: false,\n }\n }\n\n deleteUserPhrase(index, e) {\n const id = this.props.index\n this.props.deleteUserPhrase(id, e)\n }\n\n focusTextInput(id) {\n this.props.modifyInput(id)\n }\n\n onBlur() {\n this.setState({ focused: false })\n }\n\n onFocus() {\n this.setState({ focused: true })\n }\n\n handleOnBlur = e => {\n if (isStringEmpty(e.target.value)) {\n this.setState({\n red: true,\n })\n } else {\n this.onBlur()\n this.props.editUserPhrase(this.props.index, e)\n if (this.props.emptySay == this.props.index) {\n this.props.setEmptySay(null)\n this.props.modifyInput(null)\n }\n }\n }\n\n render() {\n const { classes, says, index, emptySay, isRtl } = this.props\n const { red } = this.state\n const modify = this.props.emptySay === index\n\n return (\n
\n \n {\n const id = this.props.index\n this.focusTextInput(id)\n }}>\n {\n this.textInput = node\n }}\n autoFocus={modify}\n readOnly={this.props.editInput !== index}\n onBlur={this.handleOnBlur}\n onKeyPress={event => {\n if (event.charCode === 13 && event.target.value !== '') {\n this.props.editUserPhrase(index, event)\n this.onBlur()\n if (emptySay == index) {\n this.props.setEmptySay(null)\n }\n }\n }}\n onFocus={() => this.onFocus()}\n className={` ${classes.input} addPhrase`}\n style={\n this.props.editInput === index\n ? { padding: '2px 10px' }\n : { padding: '15px 32px 0px' }\n }\n defaultValue={says}\n />\n
\n\n \n {\n const id = this.props.index\n this.props.modifyInput(id)\n this.props.setEmptySay(id)\n }}>\n \n \n {\n this.deleteUserPhrase(e, index)\n }}>\n \n \n \n \n \n )\n }\n}\n\nUserSays.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(UserSays))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { HolderStyles, styles, TabTemplateStyles } from './IntentModalStyles'\nimport { createNewIntent, getIntentUserSays, updateIntent } from '../../api/nlp'\nimport { getBotLanguages } from '../../../settings/api/settings'\nimport InputHolder from '../../../../uiKit/inputs/InputHolder'\nimport TabTemplate from '../../../widget/components/TabTemplate'\nimport { EnterIcon } from '../../../../uiKit/icons/Icons'\nimport UserSays from '../UserSays'\nimport States from '../../../flowBuilder/components/States'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport { alertError } from '../../../../api'\nimport Loader from '../../../../uiKit/loaders/loader'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\n\nclass IntentModal extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n intentName: null,\n userSays: [],\n answerAtom: null,\n intentId: null,\n faq: null,\n expanded: null,\n loading: false,\n }\n }\n\n componentDidMount() {\n const { modalIntentId, match } = this.props\n\n getBotLanguages(match.params.botId)\n .then(botLanguages => {\n if (botLanguages) {\n const { activeLanguages } = botLanguages\n this.setState({\n botActiveLanguagesList: activeLanguages,\n userSays: this.createUserSays(activeLanguages),\n })\n }\n })\n .then(() => {\n if (modalIntentId != null) {\n this.setState({\n loading: true,\n })\n\n getIntentUserSays(this.props.modalIntentId).then(json => {\n if (json) {\n const { name, answerAtom, intentId, faq, userSays } = json\n\n this.setState({\n intentName: name,\n userSays: userSays,\n answerAtom: answerAtom,\n intentId: intentId,\n faq: faq,\n loading: false,\n })\n }\n })\n }\n })\n }\n\n convert = back => {\n const converted = []\n\n for (const [key, value] of Object.entries(back)) {\n converted.unshift({\n isEdited: false,\n shortName: key,\n phrases: value,\n })\n }\n\n return converted\n }\n\n createUserSays = languages => {\n const userSays = []\n languages.forEach(language => {\n userSays.push({\n isEdited: false,\n shortName: language.shortName,\n phrases: [],\n })\n })\n return userSays\n }\n\n handleIntentName = event => {\n this.setState({\n intentName: event.target.value,\n })\n }\n\n handleChangeExpansion = expanded => {\n this.setState({\n expanded: expanded === this.state.expanded ? null : expanded,\n text: '',\n })\n }\n\n handleChangeInput = e => {\n this.setState({\n text: e.target.value,\n })\n }\n\n handleChangeAtom = value => {\n this.setState({ answerAtom: value })\n }\n\n addUserSays = (event, languageCode) => {\n const { userSays, text } = this.state\n let newUserSays = [...userSays]\n const currentUserSays =\n newUserSays?.find(elem => elem.shortName === languageCode).phrases || []\n\n if (\n (event.type === 'keypress' && event.charCode === 13) ||\n event.type === 'click'\n ) {\n let found = false\n\n currentUserSays.forEach(elem => {\n if (\n elem.trim().toUpperCase() === this.state.text.trim().toUpperCase() &&\n !found\n ) {\n found = true\n this.setState({\n notValue: this.state.text,\n showNotification: true,\n })\n }\n })\n\n if (!found && this.state.text !== '') {\n newUserSays = newUserSays.map(elem => {\n if (elem.shortName === languageCode) {\n elem.phrases.unshift(text)\n elem.isEdited = true\n }\n return elem\n })\n\n this.setState({\n userSays: newUserSays,\n showNotification: false,\n text: '',\n })\n return\n }\n }\n }\n\n editUserPhrase = (index, languageCode, event) => {\n let found = false\n const { userSays } = this.state\n let newUserSays = [...userSays]\n const currentUserSays = newUserSays.find(\n elem => elem.shortName === languageCode,\n ).phrases\n for (let i = 0; i < currentUserSays.length && !found; i++) {\n if (\n currentUserSays[i].trim().toUpperCase() ===\n event.target.value.trim().toUpperCase() &&\n index !== i\n ) {\n found = true\n this.setState({\n notValue: event.target.value,\n showNotification: true,\n })\n this.modifyInput(index)\n break\n }\n }\n\n if (!found && event.target.value !== '') {\n newUserSays = newUserSays.map(elem => {\n if (elem.shortName === languageCode) {\n elem.phrases.splice(index, 1, event.target.value)\n elem.isEdited = true\n }\n return elem\n })\n this.setState({\n userSays: newUserSays,\n showNotification: false,\n })\n this.modifyInput(null)\n return\n }\n }\n\n deleteUserPhrase = (index, languageCode) => {\n const { userSays } = this.state\n const newUserSays = [...userSays]\n\n newUserSays[languageCode] = newUserSays\n .find(elem => elem.shortName === languageCode)\n .phrases.splice(index, 1)\n\n this.setState(\n {\n userSays: newUserSays,\n },\n () => this.modifyInput(null),\n )\n }\n\n getTabInfo = language => {\n const { userSays } = this.state\n const { fullName, shortName } = language\n\n return {\n name: fullName,\n phrasesNumber:\n userSays.length &&\n userSays.find(elem => elem.shortName === shortName).phrases.length,\n }\n }\n\n modifyInput = id => {\n this.setState({\n editInput: id,\n })\n }\n\n setEmptySay = index => {\n this.setState({\n emptySay: index,\n })\n }\n\n createIntent = () => {\n if (isStringEmpty(this.state.intentName)) {\n alertError(\n `please write ${this.props.isFaqModal ? 'FAQ' : 'Intent'} name`,\n )\n return\n }\n if (this.props.isFaqModal && this.state.answerAtom == null) {\n alertError('please choose answer')\n return\n }\n let unique = true\n this.props.intents.forEach(intent => {\n if (\n intent.name.toUpperCase() === this.state.intentName.toUpperCase() &&\n intent.id !== this.props.modalIntentId\n ) {\n alertError(`Intent with name '${intent.name}' already exist`, 10000)\n unique = false\n return\n }\n })\n if (unique == true) {\n const intent = {\n name: this.state.intentName,\n intentId: this.state.intentId,\n botId: this.props.match.params.botId,\n userSays: this.state.userSays,\n answerAtom: this.state.answerAtom,\n faq: this.props.isFaqModal,\n }\n if (this.props.modalIntentId == null) {\n createNewIntent(intent, this.props.intentsSize)\n } else {\n intent.id = this.props.modalIntentId\n updateIntent(intent)\n }\n this.props.closeIntent()\n }\n }\n\n render() {\n const { classes, modalIntentId, isFaqModal } = this.props\n const {\n intentName,\n botActiveLanguagesList,\n expanded,\n text,\n showNotification,\n notValue,\n emptySay,\n editInput,\n userSays,\n loading,\n } = this.state\n const modalName = isFaqModal ? 'FAQ' : 'Intent'\n\n return (\n
\n {loading ? (\n \n ) : (\n
\n

\n {modalIntentId != null ? `Edit ${intentName}` : 'Create new'}{' '}\n {modalName}\n

\n

{modalName} name

\n \n\n

Questions

\n {botActiveLanguagesList &&\n botActiveLanguagesList.map(language => (\n \n this.handleChangeExpansion(language.shortName)\n }\n detailsStyle={TabTemplateStyles}>\n
\n {\n this.textInput = node\n }}\n dir={language.isRtl && 'rtl'}\n placeholder=\"+ Add user phrase and press Enter to add it\"\n onKeyPress={(event, text) =>\n this.addUserSays(event, language.shortName, text)\n }\n onChange={this.handleChangeInput}\n />\n {\n this.addUserSays(e, language.shortName)\n }}\n className={`${classes.enter} enter`}>\n \n
\n
\n {showNotification && (\n

\n {`User Phrase '${notValue}' already exist`}\n

\n )}\n\n
\n {!!userSays.length &&\n userSays\n .find(elem => elem.shortName === language.shortName)\n .phrases.map((says, id) => (\n
\n \n this.editUserPhrase(id, language.shortName, e)\n }\n deleteUserPhrase={(id, e) =>\n this.deleteUserPhrase(id, language.shortName, e)\n }\n index={id}\n />\n
\n ))}\n
\n \n ))}\n {isFaqModal && (\n
\n

Answers

\n \n
\n )}\n \n
\n )}\n \n )\n }\n}\n\nIntentModal.propTypes = {\n classes: PropTypes.object.isRequired,\n intents: PropTypes.array.isRequired,\n intentsSize: PropTypes.number.isRequired,\n tabIndex: PropTypes.string.isRequired,\n modalIntentId: PropTypes.number.isRequired,\n isFaqModal: PropTypes.bool.isRequired,\n closeIntent: PropTypes.func.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(IntentModal))\n","/**\n * Created by serhiy on 05.03.18.\n */\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\nimport { withRouter } from 'react-router-dom'\nimport Paper from '@material-ui/core/Paper'\nimport { getPagingIntents } from '../api/nlp'\nimport { PlusIcon, SearchIcon } from '../../../uiKit/icons/Icons.js'\nimport DeleteIntent from './DeleteIntent.js'\nimport NoData from './NoNlpData.js'\nimport Loader from '../../../uiKit/loaders/loader'\nimport Pagination from '../../../uiKit/table/Pagination'\nimport Modal from '../../../uiKit/Modal'\nimport { clearIntents } from '../actions/intents'\nimport IntentModalNew from './IntentModal/IntentModal'\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflowX: 'auto',\n background: 'rgb(247, 250, 254)',\n },\n textField: {\n marginLeft: theme.spacing.unit,\n marginRight: theme.spacing.unit,\n width: 200,\n },\n createIntentButton: {\n background: 'linear-gradient(312.17deg, #5A98F7 3.33%, #1658F3 96.71%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n height: 40,\n width: 40,\n padding: 0,\n minWidth: 40,\n borderRadius: 25,\n },\n title: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 24,\n color: '#3A3F62',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: 400,\n },\n intentItem: {\n padding: 24,\n fontSize: 14,\n display: 'flex',\n fontFamily: 'Lato, sans-serif',\n color: '#616581',\n },\n name: {\n flexBasis: '30%',\n maxWidth: '30%',\n wordWrap: 'break-word',\n padding: '0 10px',\n },\n answer: {\n flexBasis: '50%',\n maxWidth: '50%',\n wordWrap: 'break-word',\n padding: '0 10px',\n },\n editInt: {\n flexBasis: '10%',\n color: '#1658F3',\n cursor: 'pointer',\n },\n deleteInt: {\n flexBasis: '10%',\n color: '#FF624C',\n cursor: 'pointer',\n },\n desc: {\n lineHeight: 17,\n fontSize: 14,\n color: '#3A3F62',\n },\n addTitle: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 14,\n color: '#3A3F62',\n },\n})\n\nclass Intents extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n page: 0,\n rowsPerPage: 10,\n open: false,\n modalIntentId: 0,\n searchIntent: '',\n }\n\n clearIntents()\n getPagingIntents(\n this.props.match.params.botId,\n this.props.isFaq,\n this.state.page,\n '',\n )\n }\n componentWillReceiveProps() {\n if (this.props.intents != null) {\n if (this.props.intents.length == 0 && this.props.intentsSize > 10) {\n if (this.state.page === 0) {\n getPagingIntents(\n this.props.match.params.botId,\n this.props.isFaq,\n this.state.page,\n '_',\n )\n }\n }\n if (this.props.intents.length == 0 && this.props.intentsSize > 0) {\n if (this.state.page > 0) {\n const page = this.state.page - 1\n getPagingIntents(\n this.props.match.params.botId,\n this.props.isFaq,\n page,\n '_',\n )\n }\n }\n }\n }\n\n handleChangePage = (event, page) => {\n this.setState({ page })\n getPagingIntents(\n this.props.match.params.botId,\n this.props.isFaq,\n page,\n this.state.searchIntent,\n )\n }\n\n handleChangeRowsPerPage = event => {\n this.setState({ rowsPerPage: event.target.value })\n }\n\n closeIntentModal = () => {\n this.setState({ open: false })\n }\n\n openIntentModal(id) {\n this.setState({\n modalIntentId: id,\n open: true,\n })\n }\n\n handleSearchIntent(value) {\n this.setState({ searchIntent: value })\n getPagingIntents(\n this.props.match.params.botId,\n this.props.isFaq,\n 0,\n encodeURI(value),\n )\n }\n\n getRowStyle = index => {\n if ((index + 1) % 2 === 1) {\n return { background: '#F7FAFE' }\n } else {\n return {\n background: 'rgba(90, 152, 247, 0.1)',\n borderRadius: 10,\n }\n }\n }\n\n getContent = isFaq => {\n if (isFaq) {\n return {\n buttonTitle: 'faq',\n tableHeader: 'Answer',\n noDataContainerText:\n \"You have no FAQ's yet. Try adding new FAQ to make your bot answer the frequenty asked questions easily.\",\n noDataContainerButton: 'Add FAQ',\n }\n } else {\n return {\n buttonTitle: 'intent',\n tableHeader: 'User phrase',\n noDataContainerText:\n 'You have no Intents yet. Try adding new Intent to make your bot answer more complicated questions.',\n noDataContainerButton: 'Add Intent',\n }\n }\n }\n\n render() {\n const { classes, intents, isFaq } = this.props\n const { rowsPerPage, page } = this.state\n const displayTable = intents?.length || this.state.searchIntent !== ''\n const tableContent = this.getContent(isFaq)\n\n return (\n
\n \n \n \n\n \n \n

\n {this.props.tableTitle}\n

\n {intents && (\n \n this.openIntentModal(null)}\n variant=\"raised\">\n \n \n \n Add new {tableContent.buttonTitle}\n

\n
\n )}\n \n\n {displayTable && (\n
\n this.handleSearchIntent(event.target.value)}\n />\n \n
\n )}\n \n\n {!intents && }\n\n {intents && displayTable ? (\n \n
\n
\n
\n \n
Name
\n
\n {tableContent.tableHeader}\n
\n
\n {intents\n .filter(\n n =>\n n.name\n .toUpperCase()\n .indexOf(this.state.searchIntent.toUpperCase()) !==\n -1,\n )\n .map((n, index) => (\n \n
{n.name}
\n
\n {n.faq ? n.answerAtom : n.userPhrase}\n
\n this.openIntentModal(n.id)}>\n Edit\n
\n \n
\n ))}\n \n \n \n \n
\n ) : (\n
\n this.openIntentModal(null)}\n buttonTitle={tableContent.noDataContainerButton}\n />\n
\n )}\n \n )\n }\n}\n\nIntents.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n intents: state.intents,\n intentsSize: state.intentsSize,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(Intents)))\n","/**\n * Created by serhiy on 05.03.18.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport Button from '@material-ui/core/Button'\nimport { getIntents } from '../api/nlp'\nimport { getContextsPages } from '../api/context'\nimport TriggerItem from './TriggerItem'\nimport { PlusIcon } from '../../../uiKit/icons/Icons.js'\nimport Loader from '../../../uiKit/loaders/loader'\nimport Pagination from '../../../uiKit/table/Pagination'\nimport NoData from './NoNlpData.js'\nimport { clearContexts } from '../actions/contexts'\n\nconst styles = theme => ({\n root: {\n width: '100%',\n overflow: 'visible',\n },\n table: {\n minWidth: 700,\n overflow: 'visible',\n },\n createTriggerButton: {\n float: 'right',\n },\n mainSelected: {\n display: 'flex',\n margin: '20px 0',\n width: '100%',\n justifyContent: 'space-between',\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n },\n selectItem: {\n flexBasis: '30%',\n padding: 24,\n },\n title: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 24,\n color: '#3A3F62',\n },\n createIntentButton: {\n background: 'linear-gradient(312.17deg, #5A98F7 3.33%, #1658F3 96.71%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n height: 40,\n width: 40,\n padding: 0,\n minWidth: 40,\n borderRadius: 25,\n },\n addTitle: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 14,\n color: '#3A3F62',\n },\n})\n\nclass Triggers extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n page: 0,\n rowsPerPage: 10,\n open: false,\n modalTriggerId: 0,\n currentAtom: null,\n newAtom: null,\n intent: null,\n newContext: false,\n }\n\n clearContexts()\n getIntents(this.props.match.params.botId, false)\n getContextsPages(props.match.params.botId, this.state.page)\n }\n\n componentWillReceiveProps() {\n if (this.props.contexts != null) {\n if (this.props.contexts.length == 1 && this.props.contextSize > 10) {\n if (this.state.page === 0) {\n getContextsPages(this.props.match.params.botId, this.state.page)\n }\n }\n if (this.props.contexts.length == 0 && this.props.contextSize > 0) {\n if (this.state.page > 0) {\n const page = this.state.page - 1\n getContextsPages(this.props.match.params.botId, page)\n }\n }\n }\n }\n\n handleChange = (name, value, id) => {\n this.setState({\n [name]: value,\n })\n this.createTrigger(id)\n }\n\n createTrigger = () => {\n this.setState({\n newContext: true,\n })\n }\n\n changeNewContext = () => {\n this.setState({\n newContext: false,\n })\n }\n\n handleChangePage = (event, page) => {\n this.setState({ page })\n getContextsPages(this.props.match.params.botId, page)\n }\n\n handleChangeRowsPerPage = event => {\n this.setState({ rowsPerPage: event.target.value })\n }\n\n render() {\n const { classes, contexts } = this.props\n const { rowsPerPage, page, newContext } = this.state\n\n const context = {\n previousAtom: this.state.currentAtom,\n intent: this.state.intent,\n currentAtom: this.state.newAtom,\n }\n\n return (\n
\n
\n
\n
\n

\n Triggers\n

\n\n {!contexts ? (\n \n ) : !contexts.length && !newContext ? (\n \n ) : (\n
\n {\n
\n {!!contexts.length && (\n \n \n \n \n \n \n \n Add new trigger\n

\n
\n
\n
\n )}\n\n
\n {newContext && (\n \n )}\n {!!contexts.length && (\n
\n {contexts.map(context => (\n
\n \n
\n ))}\n \n
\n )}\n
\n
\n }\n
\n )}\n
\n \n \n \n )\n }\n}\n\nTriggers.defaultProps = {\n activeBot: {},\n}\n\nTriggers.propTypes = {\n classes: PropTypes.object.isRequired,\n activeBot: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n intents: state.intents,\n contexts: state.contexts,\n activeBot: state.activeBot,\n contextSize: state.contextSize,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(Triggers)),\n)\n","export const styles = theme => ({\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n overflow: 'visible',\n background: 'red',\n },\n table: {\n minWidth: 700,\n overflow: 'visible',\n },\n menuItem: {\n background: 'red !',\n },\n createTriggerButton: {\n float: 'right',\n },\n button: {\n border: '1px solid #1658F3',\n color: theme.palette.primary.main,\n background: '#FFFFFF',\n borderRadius: 10,\n padding: '10px 34px',\n boxShadow: 'none',\n '&:hover': {\n background: '#ffffff',\n },\n },\n mainSelected: {\n display: 'flex',\n margin: '20px 0',\n width: '100%',\n justifyContent: 'space-between',\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n position: 'relative',\n },\n selectItem: {\n flexBasis: '33%',\n padding: 24,\n borderRight: '1px solid #EBEBEF',\n },\n desc: {\n fontWeight: 'bold',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n selectIcon: {\n background: 'red',\n },\n trainedIcon: {\n background: '#11C314',\n border: '1px solid #11C314',\n borderRadius: 10,\n padding: '10px 34px',\n boxShadow: 'none',\n lineHeight: '1.4em',\n fontSize: '0.875rem',\n minHeight: '36px',\n },\n tabsTrain: {\n display: 'flex',\n cursor: 'pointer',\n maxHeight: 45,\n alignItems: 'center',\n },\n leftTab: {\n borderTopLeftRadius: 10,\n borderBottomLeftRadius: 10,\n background: theme.palette.primary.light,\n color: '#ffffff',\n padding: '13px 24px',\n maxHeight: '100%',\n },\n rightTab: {\n borderBottomRightRadius: 10,\n borderTopRightRadius: 10,\n background: '#ffffff',\n color: theme.palette.primary.text,\n padding: '13px 24px',\n maxHeight: '100%',\n },\n trainButton: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n height: '100%',\n },\n title: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 24,\n color: theme.palette.text.header,\n flexBasis: '15%',\n marginRight: '32px',\n },\n headerWrapper: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n },\n activeNlp: {\n background: '#5A98F7 !important',\n color: '#ffffff !important',\n },\n defaultNlp: {\n background: '#ffffff !important',\n color: '#616581 !important',\n },\n filterWrapper: {\n display: 'flex',\n alignItems: 'baseline',\n flexDirection: 'row',\n },\n filterText: {\n marginRight: '17px',\n fontSize: '14px',\n fontFamily: 'Lato',\n color: theme.palette.text.header,\n },\n selectWrapper: {\n minWidth: '145px',\n },\n userSay: {\n margin: 0,\n },\n})\n","import React from 'react'\n\nimport { Button } from '@material-ui/core'\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from './Training-styles'\n\nfunction TrainButton(props) {\n const { classes, onClick } = props\n return (\n \n Train\n \n )\n}\n\nexport default withStyles(styles)(TrainButton)\n","import React from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from './Training-styles'\nimport Intents from '../IntentsSelect'\nimport TrainButton from './TrainButton'\nimport { DoneIcon } from '../../../../uiKit/icons/Icons'\nimport { getNestedProps } from '../../../../helpers/getNestedProps'\n\nfunction TrainingRequestView(props) {\n const { classes, request, handleChangeIntent, trainRequest } = props\n\n return (\n
\n
\n

User Says

\n \n {request.userSay}\n

\n
\n
\n

Intent

\n handleChangeIntent(value, request)}\n />\n
\n
\n
\n {request.trained ? (\n
\n \n
\n ) : (\n trainRequest(request)} />\n )}\n
\n
\n
\n )\n}\n\nexport default withStyles(styles)(TrainingRequestView)\n","export function getNestedProps(obj, path, def) {\n const fullPath = path\n .replace(/\\[/g, '.')\n .replace(/]/g, '')\n .split('.')\n .filter(Boolean)\n\n return fullPath.every(everyFunc) ? obj : def\n\n function everyFunc(step) {\n // eslint-disable-next-line no-param-reassign\n return !(step && (obj = obj[step]) === undefined)\n }\n}\n","export const LEFT = 'left'\nexport const RIGHT = 'right'\nexport const PAGE_SIZE = 5\nexport const NO_DATA_TEXT =\n 'You have not Trainings yet. It will appear here after your chatbot get first messages from users.'\n","import React from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport Pagination from '../../../../uiKit/table/Pagination'\nimport { styles } from './Training-styles'\nimport TrainingRequest from './TrainingRequest-view'\nimport { PAGE_SIZE } from './Training-config'\n\nfunction TrainingRequestsView(props) {\n const {\n nlpRequests,\n classes,\n page,\n handleChangeIntent,\n trainRequest,\n handleChangePage,\n } = props\n return (\n
\n {nlpRequests.data.length &&\n nlpRequests.data.map(request => (\n \n ))}\n \n
\n )\n}\n\nexport default withStyles(styles)(TrainingRequestsView)\n","import React from 'react'\nimport Select from 'react-select'\n\nimport { withStyles } from '@material-ui/core/styles'\nimport { styles } from './Training-styles'\nimport { LEFT, RIGHT } from './Training-config'\nimport classnames from 'classnames'\n\nclass TrainingHeaderView extends React.Component {\n getTabClasses = (value, selectedTab) => {\n const classes = this.props.classes\n return classnames(\n {\n [`${classes.leftTab}`]: value === LEFT,\n },\n {\n [`${classes.rightTab}`]: value === RIGHT,\n },\n {\n [`${classes.activeNlp}`]: value === selectedTab,\n },\n {\n [`${classes.defaultNlp}`]: value !== selectedTab,\n },\n )\n }\n\n render() {\n const {\n classes,\n changeTab,\n selectedTab,\n selectedLanguageOption,\n languageOptions,\n handleLanguageChange,\n } = this.props\n return (\n
\n
\n

Training

\n\n
\n changeTab(LEFT)}>\n Training\n
\n changeTab(RIGHT)}>\n History\n
\n
\n \n\n
\n

Filter

\n
\n handleLanguageChange(option)}\n />\n
\n
\n \n )\n }\n}\n\nexport default withStyles(styles)(TrainingHeaderView)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport {\n getHistoryData,\n getTrainingData,\n trainIntent,\n getAllPagingIntents,\n} from '../../api/nlp'\nimport Loader from '../../../../uiKit/loaders/loader'\nimport TrainingRequestsView from './Training-requests-view'\nimport { clearNlpRequests } from '../../actions/nlpRequests'\nimport { styles } from './Training-styles'\nimport NoData from '../NoNlpData'\nimport { LEFT, RIGHT, PAGE_SIZE, NO_DATA_TEXT } from './Training-config'\nimport TrainingHeaderView from './TrainingHeader-view'\nimport { getBotLanguages } from '../../../settings/api/settings'\n\nclass Training extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n open: false,\n modalTriggerId: 0,\n nlpRequests: null,\n selected: LEFT,\n page: 0,\n selectedLanguageOption: { value: 'all', label: 'All' },\n }\n }\n\n componentDidMount() {\n this.setLanguagesOptions(this.props.match.params.botId)\n getAllPagingIntents(this.props.match.params.botId, '')\n getTrainingData(\n this.props.match.params.botId,\n this.state.page,\n PAGE_SIZE,\n this.state.selectedLanguageOption.value,\n )\n }\n\n static getDerivedStateFromProps(nextProps) {\n const { nlpRequests } = nextProps\n return nlpRequests ? { nlpRequests } : null\n }\n\n componentWillUnmount() {\n clearNlpRequests()\n }\n\n setLanguagesOptions = botId => {\n getBotLanguages(botId).then(botLanguages => {\n if (botLanguages) {\n const { activeLanguages } = botLanguages\n\n const languageOptions = activeLanguages\n .filter(language => language)\n .map(language => {\n return {\n label: language.fullName,\n value: language.shortName,\n }\n })\n\n const defaultSelectedLanguageOption = { label: 'All', value: 'all' }\n\n languageOptions.unshift(defaultSelectedLanguageOption)\n\n this.setState({\n languageOptions: languageOptions,\n selectedLanguageOption: defaultSelectedLanguageOption,\n })\n }\n })\n }\n\n changeTab = tabName => {\n const botId = this.props.match.params.botId\n clearNlpRequests()\n if (tabName === RIGHT) {\n getHistoryData(\n botId,\n 0,\n PAGE_SIZE,\n this.state.selectedLanguageOption.value,\n )\n } else {\n getTrainingData(\n botId,\n 0,\n PAGE_SIZE,\n this.state.selectedLanguageOption.value,\n )\n }\n this.setState({\n selected: tabName,\n page: 0,\n nlpRequests: null,\n })\n }\n\n handleChangePage = (event, page) => {\n this.setState({ page: page }, () => {\n const { botId } = this.props.match.params\n const { selected, selectedLanguageOption } = this.state\n\n if (selected === LEFT) {\n getTrainingData(botId, page, PAGE_SIZE, selectedLanguageOption.value)\n } else {\n getHistoryData(botId, page, PAGE_SIZE, selectedLanguageOption.value)\n }\n })\n }\n\n trainRequest = request => {\n if (\n request.triggeredIntent == null ||\n request.triggeredIntent.includes('smalltalk.')\n ) {\n return\n }\n const { botId } = this.props.match.params\n trainIntent(request, botId)\n }\n\n handleChangeIntent = (value, request) => {\n const newRequests = [...this.state.nlpRequests.data]\n request.triggeredIntent = value\n request.trained = false\n this.setState({ ...this.state.nlpRequests, data: newRequests })\n }\n\n handleLanguageChanged = option => {\n this.setState(\n {\n selectedLanguageOption: option,\n },\n () => {\n const { botId } = this.props.match.params\n const { page, selected, selectedLanguageOption } = this.state\n if (selected === LEFT) {\n getTrainingData(botId, page, PAGE_SIZE, selectedLanguageOption.value)\n } else {\n getHistoryData(botId, page, PAGE_SIZE, selectedLanguageOption.value)\n }\n },\n )\n }\n\n render() {\n const { classes } = this.props\n const { nlpRequests, page, selected } = this.state\n\n return (\n
\n this.changeTab(value)}\n selectedLanguageOption={this.state.selectedLanguageOption}\n languageOptions={this.state.languageOptions}\n handleLanguageChange={this.handleLanguageChanged}\n />\n\n {!nlpRequests && }\n\n {nlpRequests &&\n (!nlpRequests.totalCount ? (\n \n ) : (\n \n ))}\n
\n )\n }\n}\n\nTraining.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n intents: state.intents,\n nlpRequests: state.nlpRequests,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(Training))\n","import Intents from '../tabs/nlp/components/Intents'\nimport React from 'react'\nimport Triggers from '../tabs/nlp/components/Triggers'\nimport Training from '../tabs/nlp/components/training/Training-container'\n\nexport const nlpRoutes = [\n {\n path: 'training',\n name: 'Training',\n component: Training,\n },\n {\n path: 'faq',\n name: 'FAQ',\n component: () => (\n \n ),\n },\n {\n path: 'intents',\n name: 'Intents',\n component: () => (\n \n ),\n },\n {\n path: 'triggers',\n name: 'Triggers',\n component: Triggers,\n },\n]\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\nimport { NavLink, Redirect, Route, Switch, withRouter } from 'react-router-dom'\nimport List from '@material-ui/core/List'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemText from '@material-ui/core/ListItemText'\n\nconst styles = theme => ({\n container: {\n display: 'flex',\n height: '100%',\n },\n navigation: {\n minWidth: '250px',\n marginRight: 80,\n },\n body: {\n minWidth: '700px',\n width: '100%',\n marginRight: 40,\n },\n rootLink: {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n padding: 0,\n background: theme.palette.primary.contrastText,\n },\n link: {\n textDecoration: 'none',\n color: theme.palette.primary.text,\n border: 'none',\n '&:hover>div': {\n background: 'rgba(90, 152, 247, 0.2)',\n },\n '&>div': {\n height: 70,\n },\n '&:first-child > div': {\n borderTopLeftRadius: 10,\n borderTopRightRadius: 10,\n },\n '&:last-child>div': {\n borderBottomLeftRadius: 10,\n borderBottomRightRadius: 10,\n },\n },\n activeLink: {\n '& span': {\n color: theme.palette.primary.contrastText,\n },\n '& >div': {\n background: theme.palette.primary.light,\n },\n '&:hover>div': {\n background: theme.palette.primary.light,\n },\n },\n})\n\nclass Submenu extends React.Component {\n render() {\n const { classes } = this.props\n\n return (\n
\n
\n
\n \n {this.props.routes.map(route => (\n \n \n \n \n \n ))}\n \n
\n
\n \n {this.props.routes.map(route => (\n \n ))}\n \n \n
\n
\n
\n )\n }\n}\n\nSubmenu.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n pathRoute: PropTypes.string.isRequired,\n pathLink: PropTypes.string,\n routes: PropTypes.array.isRequired,\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(Submenu))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n heading: {\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 24,\n color: '#3A3F62',\n marginBottom: 8,\n },\n})\n\nclass Heading extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n const { classes } = this.props\n return

{this.props.children}

\n }\n}\n\nHeading.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(Heading))\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport connect from 'react-redux/es/connect/connect'\nimport Heading from '../../../uiKit/texts/Heading'\n\nconst styles = theme => ({\n image: {\n width: 64,\n height: 64,\n opacity: '.2',\n marginBottom: 16,\n },\n container: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n // padding: '32px',\n textAlign: 'center',\n },\n text: {\n margin: '0 0 24px',\n color: theme.palette.primary.text,\n fontSize: 14,\n },\n buttonHolder: {\n textAlign: 'center',\n },\n})\n\nclass EmptyNlp extends React.Component {\n state = {\n open: false,\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n \n\n Connect NLP agent\n\n

\n Connect NLP agent to be able to make your bot smarter.\n

\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(EmptyNlp)),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { HOME_PATH } from '../../configs'\nimport Headline from '../../uiKit/texts/Headline'\nimport { nlpRoutes } from '../../routes/nlpRoutes'\nimport Submenu from '../../uiKit/submenu/Submenu'\nimport { getFlows } from '../flowBuilder/api/flow'\nimport connect from 'react-redux/es/connect/connect'\nimport EmptyNlp from './components/EmptyNlp'\nimport Loader from '../../uiKit/loaders/loader'\nimport { getBot } from '../home/api/bots'\n\nconst styles = theme => ({\n loaderWrap: {\n height: 'calc(100vh - 198px)',\n },\n})\n\nclass NLP extends React.Component {\n state = {\n botHasNlp: false,\n loading: true,\n }\n\n componentDidMount() {\n getFlows(this.props.match.params.botId)\n getBot(this.props.match.params.botId).then(() => {\n this.setState({ loading: false })\n })\n }\n\n render() {\n const pathLink = `${HOME_PATH}/bot/${this.props.match.params.botId}/nlp`\n const pathRoute = `${HOME_PATH}/bot/:botId/nlp/`\n const { loading } = this.state\n const { classes } = this.props\n\n return (\n
\n \n {loading && (\n
\n \n
\n )}\n\n {!loading &&\n (this.props.activeBot?.nlpEnabled ? (\n \n ) : (\n \n ))}\n
\n )\n }\n}\n\nNLP.propTypes = {\n classes: PropTypes.object,\n theme: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(NLP)),\n)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\n\nimport { OPEN_REQUESTS, SOLVED_REQUESTS } from './config'\n\nimport { styles } from './styles'\n\nconst TabsWrap = props => {\n const { classes, selectedTab, setSelectedTab } = props\n\n const getTabClasses = tab => {\n return classnames(classes.tab, {\n [`${classes.activeTab}`]: selectedTab === tab,\n })\n }\n\n return (\n
\n setSelectedTab(OPEN_REQUESTS)}>\n Open requests\n
\n setSelectedTab(SOLVED_REQUESTS)}>\n Solved requests\n \n \n )\n}\n\nTabsWrap.propTypes = {\n classes: PropTypes.object,\n selectedTab: PropTypes.string,\n setSelectedTab: PropTypes.func,\n}\n\nexport default withStyles(styles)(TabsWrap)\n","export const styles = () => ({\n container: {\n display: 'flex',\n width: '100%',\n height: 72,\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)',\n },\n tab: {\n width: '50%',\n fontSize: 14,\n color: '#616581',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n },\n activeTab: {\n background: '#5A98F7',\n color: '#FFFFFF',\n },\n})\n","export const OPEN_REQUESTS = 'Open requests'\nexport const SOLVED_REQUESTS = 'Solved requests'\n","/* eslint-disable */\nimport React from 'react'\n\nexport const SearchIcon = () => {\n return (\n \n \n \n \n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { SearchIcon } from '../../../../uiKit/icons/Search'\n\nimport { styles } from './styles'\n\nconst Search = props => {\n const { classes, handleSearch, search, styles, placeholder } = props\n\n return (\n
\n handleSearch(e.target.value)}\n />\n
\n \n
\n
\n )\n}\n\nSearch.propTypes = {\n classes: PropTypes.object,\n handleSearch: PropTypes.func,\n search: PropTypes.string,\n}\n\nexport default withStyles(styles)(Search)\n","export const styles = () => ({\n container: {\n position: 'relative',\n },\n input: {\n outline: 'none',\n padding: '8px 40px 8px 12px',\n fontSize: 14,\n width: '100%',\n border: '1px solid rgba(53, 64, 82, 0.1)',\n borderRadius: 4,\n color: '#616581',\n '&::placeholder': {\n color: 'rgba(53, 64, 82, 0.5)',\n },\n },\n iconWrap: {\n position: 'absolute',\n top: 5,\n right: 12,\n },\n})\n","export const FACELESS_PICTURE =\n 'https://nrm.co.nz/wp-content/uploads/2017/08/facebook-avatar.jpg'\n\nexport const SUPPORT_ICON = '/images/platform/support-icon.svg'\n\nexport const MY_SUPPORT_ICON = '/images/platform/my-support-icon.svg'\n\nexport const EXPIRED_ICON = '/images/platform/time-expired.svg'\n\nexport const PLATFORM_IMAGE = {\n WEBSITE: '/images/platform/widget-icon.svg',\n FB_MESSENGER: '/images/platform/messenger-icon.svg',\n AMIO_WHATSAPP: '/images/platform/whatsapp-icon.svg',\n}\n\nexport const SUPPORT_STATUSES = {\n OPEN: 'OPEN',\n PENDING: 'PENDING',\n ASSIGNED: 'ASSIGNED',\n CLOSED: 'CLOSED',\n EXPIRED: 'EXPIRED',\n}\n","import { store } from '../../../index'\n\nexport const SAVE_MESSAGE = 'SAVE_MESSAGE'\nexport const SAVE_ACTIVE_SUPPORT_USER = 'SAVE_ACTIVE_SUPPORT_USER'\nexport const SAVE_SUPPORT_USER_MESSAGES = 'SAVE_SUPPORT_USER_MESSAGES'\nexport const SAVE_SUPPORT_USER_MORE_MESSAGES = 'SAVE_SUPPORT_USER_MORE_MESSAGES'\n\nexport const saveActiveUser = activeUser => {\n store.dispatch({\n type: SAVE_ACTIVE_SUPPORT_USER,\n payload: {\n activeUser,\n },\n })\n}\n\nexport const saveSupportUserMessages = messages => {\n store.dispatch({\n type: SAVE_SUPPORT_USER_MESSAGES,\n payload: {\n messages,\n },\n })\n}\n\nexport const saveSupportUserMoreMessages = (messages, direction) => {\n store.dispatch({\n type: SAVE_SUPPORT_USER_MORE_MESSAGES,\n payload: {\n messages,\n direction,\n },\n })\n}\n\nexport const saveMessage = message => {\n store.dispatch({\n type: SAVE_MESSAGE,\n payload: {\n message,\n },\n })\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './BadgeStyles'\n\nconst Badge = props => {\n const { classes, badgeContent } = props\n\n return (\n \n {badgeContent}\n \n )\n}\n\nBadge.propTypes = {\n classes: PropTypes.object,\n badgeContent: PropTypes.any.isRequired,\n}\n\nexport default withStyles(styles)(Badge)\n","export const styles = () => ({\n badge: {\n top: -11,\n right: -11,\n width: 22,\n height: 22,\n display: 'flex',\n zIndex: 1,\n position: 'absolute',\n flexWrap: 'wrap',\n fontSize: '0.75rem',\n alignItems: 'center',\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\n alignContent: 'center',\n borderRadius: '50%',\n flexDirection: 'row',\n justifyContent: 'center',\n color: '#ffffff',\n backgroundColor: '#1658F3',\n },\n badgeWrap: {\n display: 'inline-flex',\n position: 'relative',\n verticalAlign: 'middle',\n },\n})\n","import moment from 'moment'\nimport { MINUTES_IN_DAY } from '../tabs/support/components/InteractionTimer/config'\n\nexport const getMinutesLeft = start => {\n const now = moment.now()\n const utcDate = moment(start).utc(true)\n\n return MINUTES_IN_DAY - moment(now).diff(utcDate, 'minutes')\n}\n","export const MINUTES_IN_DAY = 24 * 60\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\n\nimport { useTimer } from '../../../../hooks/useTimer'\nimport { EXPIRED_ICON } from '../UserDialogPreview/config'\n\nconst InteractionTimer = props => {\n const { classes, lastInteractionDate } = props\n const timerTime = useTimer(lastInteractionDate)\n\n const buildTimeLeft = minutes => {\n if (minutes <= 0) return ''\n\n const time = {\n hours: Math.floor(minutes / 60),\n minutes: minutes % 60,\n }\n const displayHours = time.hours === 0 ? '' : time.hours + 'h '\n const displayMinutes = time.minutes === 0 ? '' : time.minutes + 'm '\n\n return displayHours + displayMinutes + 'left'\n }\n\n const formattedTime = buildTimeLeft(timerTime)\n\n return (\n
\n {formattedTime === '' ? (\n \n ) : (\n = 60\n ? classes.timeLeftContent\n : classes.timeLeftContentRed\n }>\n {formattedTime}\n

\n )}\n
\n )\n}\n\nInteractionTimer.propTypes = {\n classes: PropTypes.object,\n lastInteractionDate: PropTypes.string,\n}\n\nexport default withStyles(styles)(InteractionTimer)\n","export const styles = () => ({\n timeLeftContent: {\n margin: '0px 4px',\n padding: '2px 4px',\n color: '#354052',\n fontSize: '10px',\n fontStyle: 'normal',\n fontWeight: 'normal',\n lineHeight: '12px',\n fontFamily: 'Lato, sans-serif',\n borderRadius: '4px',\n backgroundColor: '#ebecee',\n width: 'max-content',\n },\n timeLeftContentRed: {\n margin: '0px 4px',\n padding: '2px 4px',\n color: '#FFFFFF',\n fontSize: '10px',\n fontStyle: 'normal',\n fontWeight: 'normal',\n lineHeight: '12px',\n fontFamily: 'Lato, sans-serif',\n borderRadius: '4px',\n backgroundColor: '#fc6769',\n width: 'max-content',\n },\n timeExpiredIcon: {\n width: 20,\n height: 20,\n marginLeft: 5,\n },\n})\n","import { useEffect, useState } from 'react'\nimport { getMinutesLeft } from '../helpers/getMinutesLeft'\n\nexport function useTimer(start) {\n const minutesLeft = getMinutesLeft(start)\n const [count, setCount] = useState(minutesLeft)\n\n useEffect(() => {\n const minutesLeft = getMinutesLeft(start)\n setCount(minutesLeft)\n }, [start])\n\n useEffect(() => {\n if (minutesLeft) {\n const secondsLeft = setInterval(() => {\n setCount(c => c - 1)\n }, 60000)\n return () => clearInterval(secondsLeft)\n }\n }, [minutesLeft])\n\n return count\n}\n","export const CHAT_PLATFORM = {\n WHATSAPP: 'AMIO_WHATSAPP',\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport InteractionTimer from '../InteractionTimer/InteractionTimer'\nimport { MY_SUPPORT_ICON, SUPPORT_ICON } from '../UserDialogPreview/config'\nimport moment from 'moment'\nimport { CHAT_PLATFORM } from '../../../../constants/chatPlatform'\n\nconst UserNameBlock = props => {\n const { classes, user, isAssigned, isAssignedToCurrentAdmin } = props\n const supportIcon =\n (isAssignedToCurrentAdmin && MY_SUPPORT_ICON) ||\n (isAssigned && SUPPORT_ICON)\n\n const lastMessageDate = moment(user?.messageDatetime).isSame(\n new Date(),\n 'day',\n )\n ? 'Today'\n : moment(user?.messageDatetime).format('MMM DD')\n\n const isFromWhatsApp = user?.platform === CHAT_PLATFORM.WHATSAPP\n\n return (\n
\n
\n

\n {user?.firstName} {user?.lastName}\n

\n\n {supportIcon && (\n \n )}\n\n {isFromWhatsApp && user.userMessageDatetime && (\n \n )}\n
\n\n
{lastMessageDate}
\n
\n )\n}\nUserNameBlock.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(UserNameBlock)\n","export const styles = () => ({\n userMainInfo: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n },\n userNameWrapper: {\n display: 'flex',\n alignItems: 'center',\n height: 30,\n width: 'calc(100% - 46px)',\n },\n name: {\n fontSize: '14px',\n lineHeight: '17px',\n marginBottom: '0',\n textDecoration: 'none !important',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n color: '#3A3F62',\n },\n supportIcon: {\n width: 12,\n height: 12,\n marginLeft: 5,\n },\n lastMsgTime: {\n color: '#B0B2C0',\n fontSize: 12,\n fontWeight: 400,\n marginLeft: 5,\n width: 40,\n textAlign: 'right',\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport NavLink from 'react-router-dom/NavLink'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { HOME_PATH } from '../../../../configs'\nimport { PLATFORM_IMAGE, FACELESS_PICTURE, SUPPORT_STATUSES } from './config'\nimport { saveActiveUser } from '../../actions/activeUser'\n\nimport Badge from '../../../../uiKit/Badge/Badge'\nimport { styles } from './styles'\nimport UserNameBlock from '../UserNameBlock/UserNameBlock'\n\nconst UserDialogPreview = props => {\n const { classes, match, adminUser, activeUser, user } = props\n\n const isAssigned = user?.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED\n\n const isAssignedToCurrentAdmin =\n user?.supportRequest?.support?.adminId === adminUser?.id &&\n user?.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED\n\n const isUnread =\n user?.unreadMessages && activeUser?.userId !== user?.userId ? 'unread' : ''\n\n const boldLastMessage = isUnread || (isAssigned && !isAssignedToCurrentAdmin)\n\n const getLastMessage = user => {\n if (user?.lastMessage) {\n const text = JSON.parse(user?.lastMessage).text\n const title = JSON.parse(user?.lastMessage).title\n\n return text || title || 'Attachment'\n }\n if (user?.postback) {\n const title = JSON.parse(user?.postback).title\n return title || JSON.parse(user?.postback).payload\n }\n return 'Attachment'\n }\n\n const lastMsgText =\n isAssigned && !isAssignedToCurrentAdmin\n ? `Live chat with ${user?.supportRequest?.support?.name}`\n : getLastMessage(user)\n\n const handleClickUserPreview = () => {\n saveActiveUser(user)\n }\n\n return (\n \n
\n \n \n
\n\n
\n \n\n
\n \n {lastMsgText}\n

\n {isUnread && }\n
\n
\n \n \n )\n}\n\nUserDialogPreview.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n adminUser: state.adminUser,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(UserDialogPreview)),\n)\n","export const styles = () => ({\n container: {\n height: 66,\n padding: '8px 16px',\n display: 'flex',\n },\n profileImage: {\n height: '50px',\n width: '50px',\n borderRadius: '50%',\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n backgroundRepeat: 'no-repeat',\n position: 'relative',\n },\n channelIcon: {\n width: 20,\n height: 20,\n marginLeft: 5,\n position: 'absolute',\n bottom: 0,\n right: 0,\n },\n userInfo: {\n width: 'calc(100% - 50px)',\n height: '100%',\n marginLeft: 15,\n overflow: 'hidden',\n },\n lastMsgTextWrap: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: 'calc(100% - 12px)',\n },\n lastMsgText: {\n fontSize: 12,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 'calc(100% - 30px)',\n margin: 0,\n textDecoration: 'none !important',\n color: '#B0B2C0',\n },\n lastMsgTextUnread: {\n fontSize: 12,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: 'calc(100% - 30px)',\n margin: 0,\n textDecoration: 'none !important',\n color: '#616581',\n fontWeight: 'bold',\n },\n activeLink: {\n '& div': {\n backgroundColor: '#eff5ff',\n },\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { Chevron } from '../../../../uiKit/icons/Icons'\nimport UserDialogPreview from '../UserDialogPreview/UserDialogPreview'\n\nimport { styles } from './styles'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\n\nconst DialogsSection = props => {\n const { classes, title, users, search } = props\n const [collapsed, setCollapsed] = useState(true)\n\n const filterUser = user => {\n if (user) {\n if (isStringEmpty(search)) return true\n return (\n user?.firstName.toLowerCase().includes(search.toLowerCase()) ||\n user?.lastName.toLowerCase().includes(search.toLowerCase())\n )\n }\n return false\n }\n\n return (\n
\n
setCollapsed(!collapsed)}>\n {title}\n {users && !users?.length ? (\n  0\n ) : (\n \n )}\n
\n\n {collapsed && (\n
\n {users &&\n users\n ?.filter(filterUser)\n ?.map((user, index) => (\n \n ))}\n
\n )}\n
\n )\n}\n\nDialogsSection.propTypes = {\n classes: PropTypes.object,\n title: PropTypes.string,\n users: PropTypes.array,\n}\n\nexport default withStyles(styles)(DialogsSection)\n","export const styles = () => ({\n title: {\n height: 32,\n color: '#B0B2C0',\n padding: '8px 12px',\n textTransform: 'uppercase',\n fontSize: 12,\n cursor: 'pointer',\n },\n chevron: {\n marginLeft: '8px',\n maxHeight: '100%',\n transition: '.1s ease-in-out',\n },\n dialogsContainer: {},\n})\n","import {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { SUPPORT_USERS_SIZE } from '../../../constants/userSize'\nimport { BASE_URL } from '../../../configs'\n\nexport function getAssignedToMeSupportUsers(\n botId,\n adminId,\n searchName = '',\n offset = 0,\n) {\n return fetch(\n `${BASE_URL}/support/assigned-to/${botId}?searchName=${searchName}&adminId=${adminId}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getAssignedSupportUsers(botId, searchName = '', offset = 0) {\n return fetch(\n `${BASE_URL}/support/assigned/${botId}?searchName=${searchName}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getNewRequestSupportUsers(botId, searchName = '', offset = 0) {\n return fetch(`${BASE_URL}/support/open/${botId}?searchName=${searchName}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getExpiredRequestSupportUsers(\n botId,\n searchName = '',\n offset = 0,\n) {\n return fetch(\n `${BASE_URL}/support/expired/${botId}?searchName=${searchName}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getAllSupportUsers(botId, searchName = '', offset = 0) {\n return fetch(\n `${BASE_URL}/support/chatbot/${botId}?searchName=${searchName}&size=${SUPPORT_USERS_SIZE}&offset=${offset}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getClosedSupports(botId, searchName = '', offset = 0) {\n return fetch(\n `${BASE_URL}/support/closed/${botId}?searchName=${searchName}&size=${SUPPORT_USERS_SIZE}&offset=${offset}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function updateSupportUser(user) {\n return fetch(`${BASE_URL}/support/user/${user.userId}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n","export const SUPPORT_USERS_SIZE = 20\n","import { store } from '../../../index'\n\nexport const SAVE_SUPPORT_USERS = 'SAVE_SUPPORT_USERS'\nexport const SAVE_MORE_SUPPORT_USERS = 'SAVE_MORE_SUPPORT_USERS'\nexport const SAVE_CLOSED_SUPPORT_USERS = 'SAVE_CLOSED_SUPPORT_USERS'\nexport const SAVE_MORE_CLOSED_SUPPORT_USERS = 'SAVE_MORE_CLOSED_SUPPORT_USERS'\nexport const UPDATE_SUPPORT_USER_LIST = 'UPDATE_SUPPORT_USER_LIST'\nexport const UPDATE_USER_UNREAD_MESSAGE = 'UPDATE_USER_UNREAD_MESSAGE'\n\nexport const saveSupportUsers = (supportUsers = [], adminUserId) => {\n store.dispatch({\n type: SAVE_SUPPORT_USERS,\n payload: {\n supportUsers,\n adminUserId,\n },\n })\n}\n\nexport const saveMoreSupportUsers = (supportUsers = [], adminUserId) => {\n store.dispatch({\n type: SAVE_MORE_SUPPORT_USERS,\n payload: {\n supportUsers,\n adminUserId,\n },\n })\n}\n\nexport const saveClosedSupportUsers = (supportUsers = []) => {\n store.dispatch({\n type: SAVE_CLOSED_SUPPORT_USERS,\n payload: {\n supportUsers,\n },\n })\n}\n\nexport const saveMoreClosedSupportUsers = supportUsers => {\n store.dispatch({\n type: SAVE_MORE_CLOSED_SUPPORT_USERS,\n payload: {\n supportUsers,\n },\n })\n}\n\nexport const updateSupportUserList = (user, adminUserId) => {\n store.dispatch({\n type: UPDATE_SUPPORT_USER_LIST,\n payload: {\n user,\n adminUserId,\n },\n })\n}\n\nexport const updateUserUnreadMessages = user => {\n store.dispatch({\n type: UPDATE_USER_UNREAD_MESSAGE,\n payload: {\n user,\n },\n })\n}\n","import { useState, useEffect } from 'react'\n\nconst useDebounce = (value, delay) => {\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n return () => {\n clearTimeout(handler)\n }\n }, [value, delay])\n\n return debouncedValue\n}\n\nexport default useDebounce\n","export const getUrlEnd = () => {\n const parts = window.location.pathname.split('/')\n\n return parts.pop()\n}\n","export const isElementBottom = el =>\n el && el.scrollHeight - el.offsetHeight - el.scrollTop < 1\n","export const isUrlEndsWithSupport = () =>\n window.location.href.endsWith('support')\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport Search from '../Search/Search'\nimport DialogsSection from '../DialogsSection/DialogsSection'\nimport {\n getAllSupportUsers,\n getAssignedSupportUsers,\n getNewRequestSupportUsers,\n getExpiredRequestSupportUsers,\n} from '../../api/users'\nimport { saveMoreSupportUsers, saveSupportUsers } from '../../actions/users'\nimport useDebounce from '../../../../hooks/useDebounce'\nimport { getUrlEnd } from '../../../../helpers/getUrlEnd'\nimport { saveActiveUser } from '../../actions/activeUser'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\n\nimport { isElementBottom } from '../../../../helpers/isElementBottom'\nimport { isUrlEndsWithSupport } from '../../../../helpers/isUrlEndsWithSupport'\n\nimport { styles } from './styles'\n\nconst OpenRequests = props => {\n const {\n classes,\n match,\n assignedToMeUsers,\n newRequestsUsers,\n expiredRequestsUsers,\n assignedRequestsUsers,\n allUsers,\n adminUserId,\n } = props\n const [search, setSearch] = useState('')\n const [loading, setLoading] = useState(true)\n const debouncedSearchTerm = useDebounce(search, 500)\n\n useEffect(() => {\n if (debouncedSearchTerm) {\n Promise.all([\n getNewRequestSupportUsers(match.params.botId, debouncedSearchTerm),\n getExpiredRequestSupportUsers(match.params.botId, debouncedSearchTerm),\n getAssignedSupportUsers(match.params.botId, debouncedSearchTerm),\n getAllSupportUsers(match.params.botId, debouncedSearchTerm),\n ]).then(res => saveSupportUsers(res.flat(), adminUserId))\n } else {\n Promise.all([\n getNewRequestSupportUsers(match.params.botId),\n getExpiredRequestSupportUsers(match.params.botId),\n getAssignedSupportUsers(match.params.botId),\n getAllSupportUsers(match.params.botId),\n ])\n .then(res => {\n if (!isUrlEndsWithSupport() && !allUsers?.length) {\n const userId = getUrlEnd()\n const currentUser = res\n .flat()\n .find(user => user?.userId === Number(userId))\n saveActiveUser(currentUser)\n }\n saveSupportUsers(res.flat(), adminUserId)\n })\n .then(() => setLoading(false))\n }\n }, [debouncedSearchTerm])\n\n const handleScroll = event => {\n if (isElementBottom(event.target)) {\n getAllSupportUsers(\n match.params.botId,\n search && debouncedSearchTerm,\n allUsers.length,\n ).then(users => {\n saveMoreSupportUsers(users, adminUserId)\n })\n }\n }\n\n return (\n <>\n
\n \n
\n {loading ? (\n
\n \n
\n ) : (\n
\n {!debouncedSearchTerm && (\n <>\n \n\n \n\n \n\n \n \n )}\n \n
\n )}\n \n )\n}\n\nOpenRequests.propTypes = {\n classes: PropTypes.object,\n assignedToMeUsers: PropTypes.array,\n newRequestsUsers: PropTypes.array,\n expiredRequestsUsers: PropTypes.array,\n assignedRequestsUsers: PropTypes.array,\n allUsers: PropTypes.array,\n adminUserId: PropTypes.number,\n}\n\nconst mapStateToProps = state => ({\n assignedToMeUsers: state.supportUsersNew.assignedToMeUsers,\n newRequestsUsers: state.supportUsersNew.newRequestsUsers,\n expiredRequestsUsers: state.supportUsersNew.expiredRequestsUsers,\n assignedRequestsUsers: state.supportUsersNew.assignedRequestsUsers,\n allUsers: state.supportUsersNew.allUsers,\n adminUserId: state.adminUser.id,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(OpenRequests)),\n)\n","export const styles = () => ({\n sectionWrap: {\n overflowY: 'auto',\n height: 'calc(100% - 127px)',\n },\n loaderWrap: {\n height: 'calc(100% - 127px)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n searchContainer: {\n margin: '8px 12px',\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { getClosedSupports } from '../../api/users'\nimport {\n saveClosedSupportUsers,\n saveMoreClosedSupportUsers,\n} from '../../actions/users'\nimport UserDialogPreview from '../UserDialogPreview/UserDialogPreview'\nimport { isElementBottom } from '../../../../helpers/isElementBottom'\n\nimport { styles } from './styles'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\nimport Search from '../Search/Search'\nimport useDebounce from '../../../../hooks/useDebounce'\n\nconst SolvedRequests = props => {\n const { classes, match, closedRequestsUsers } = props\n const [loading, setLoading] = useState(true)\n const [search, setSearch] = useState('')\n const debouncedSearchTerm = useDebounce(search, 500)\n\n useEffect(() => {\n if (debouncedSearchTerm) {\n getClosedSupports(match.params.botId, debouncedSearchTerm).then(users => {\n saveClosedSupportUsers(users)\n })\n } else {\n getClosedSupports(match.params.botId)\n .then(users => {\n saveClosedSupportUsers(users)\n })\n .then(() => setLoading(false))\n }\n }, [debouncedSearchTerm])\n\n const handleScroll = event => {\n if (isElementBottom(event.target)) {\n if (search) {\n getClosedSupports(\n match.params.botId,\n debouncedSearchTerm,\n closedRequestsUsers.length,\n ).then(users => {\n saveMoreClosedSupportUsers(users)\n })\n } else {\n getClosedSupports(\n match.params.botId,\n undefined,\n closedRequestsUsers.length,\n ).then(users => {\n saveMoreClosedSupportUsers(users)\n })\n }\n }\n }\n\n return (\n <>\n
\n \n
\n {loading ? (\n
\n \n
\n ) : (\n
\n {closedRequestsUsers?.map(user => (\n \n ))}\n
\n )}\n \n )\n}\n\nSolvedRequests.propTypes = {\n classes: PropTypes.object,\n closedRequestsUsers: PropTypes.array,\n}\n\nconst mapStateToProps = state => ({\n closedRequestsUsers: state.supportUsersNew.closedRequestsUsers,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(SolvedRequests)),\n)\n","export const styles = () => ({\n container: {\n overflowY: 'auto',\n height: 'calc(100% - 126px)',\n },\n loaderWrap: {\n height: 'calc(100% - 127px)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n searchContainer: {\n margin: '8px 12px',\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\n\nimport TabsWrap from '../TabsWrap/TabsWrap'\nimport OpenRequests from '../OpenRequests/OpenRequests'\nimport SolvedRequests from '../SolvedRequests/SolvedRequests'\n\nimport { OPEN_REQUESTS, SOLVED_REQUESTS } from '../TabsWrap/config'\nimport { styles } from './styles'\n\nconst DialogsContainer = props => {\n const { classes } = props\n const [selectedTab, setSelectedTab] = useState(OPEN_REQUESTS)\n\n return (\n
\n \n {selectedTab === OPEN_REQUESTS && }\n {selectedTab === SOLVED_REQUESTS && }\n
\n )\n}\n\nDialogsContainer.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withRouter(withStyles(styles)(DialogsContainer))\n","export const styles = () => ({\n container: {\n flexBasis: '26%',\n borderRight: '1px solid rgba(53, 64, 82, 0.1)',\n overflow: 'hidden',\n minWidth: 270,\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const TreeDotsIcon = () => {\n return (\n \n \n \n \n \n )\n}\n","import { BASE_URL } from '../../../configs'\nimport {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { SUPPORT_MESSAGES_SIZE } from '../../../constants/messagesSize'\nimport { AROUND_MESSAGES } from '../components/MessagesWrap/config'\n\nexport function getMessages(chatId) {\n return fetch(`${BASE_URL}/support/chat/${chatId}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getMoreMessages(messageId, chatId, direction) {\n return fetch(\n `${BASE_URL}/support/chat/${chatId}?messageId=${messageId}&size=${SUPPORT_MESSAGES_SIZE}&direction=${direction}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function closeUserRequest(json) {\n return fetch(`${BASE_URL}/support/backUserToBot`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(json),\n }).catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function assignSupportRequest(botId, json) {\n return fetch(`${BASE_URL}/support/assign`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(json),\n }).catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getAdminsList(botId) {\n return fetch(`${BASE_URL}/support/admins/${botId}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function setMessageRead(chatId, messageId) {\n return fetch(`${BASE_URL}/support/read/user/${chatId}/message/${messageId}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n }).catch(() =>\n alertError('Sorry but something going wrong please ping support!', 5000),\n )\n}\n\nexport function getMessagesById(chatId, messageId) {\n const size = Math.round(SUPPORT_MESSAGES_SIZE / 2)\n\n return fetch(\n `${BASE_URL}/support/chat/${chatId}?messageId=${messageId}&size=${size}&direction=${AROUND_MESSAGES}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n )\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() => {\n alertError('Sorry but something going wrong please ping support!', 5000)\n })\n}\n","export const SUPPORT_MESSAGES_SIZE = 30\n","export const styles = () => ({\n container: {\n display: 'flex',\n border: '1px solid #1658F3',\n borderRadius: 5,\n alignItems: 'center',\n height: 36,\n cursor: 'pointer',\n fontWeight: 'bold',\n },\n closeButton: {\n fontSize: 16,\n padding: '0px 16px',\n color: '#1658F3',\n whiteSpace: 'nowrap',\n border: 'none',\n backgroundColor: '#ffffff',\n fontWeight: 'bold',\n '&:disabled': {\n cursor: 'no-drop',\n },\n },\n iconWrap: {\n borderLeft: '1px solid #1658F3',\n height: '100%',\n width: 36,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n iconWrapDisabled: {\n borderLeft: '1px solid #1658F3',\n height: '100%',\n width: 36,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'no-drop',\n },\n popover: {\n width: 240,\n maxHeight: 180,\n },\n popoverHeader: {\n height: 36,\n fontWeight: 'bold',\n display: 'flex',\n alignItems: 'center',\n fontSize: 14,\n padding: '0px 12px',\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)',\n },\n atomItem: {\n padding: '7px 12px',\n cursor: 'pointer',\n fontSize: 14,\n '&:hover': {\n background: 'rgba(53, 64, 82, 0.1)',\n },\n },\n searchContainer: {\n height: 36,\n overflow: 'hidden',\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)',\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport Popover from '@material-ui/core/Popover'\n\nimport { TreeDotsIcon } from '../../../../uiKit/icons/TreeDotsIcon'\nimport { closeUserRequest } from '../../api/user'\nimport { saveActiveUser } from '../../actions/activeUser'\n\nimport { styles } from './styles'\nimport Search from '../Search/Search'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\n\nconst CloseRequestButton = props => {\n const { classes, flows, user, isDisconnectedUser } = props\n const [isOpenPopover, setOpenPopover] = useState(false)\n const [target, setTarget] = useState(null)\n const [atomsList, setAtomsList] = useState([])\n const [search, setSearch] = useState('')\n const [loader, setLoader] = useState(false)\n\n useEffect(() => {\n const atoms = []\n\n flows.forEach(flow => {\n flow.atoms != null &&\n flow.atoms.forEach(atom => {\n atoms.push({\n value: atom.name,\n id: atom.id,\n })\n })\n })\n\n setAtomsList(atoms)\n }, [flows])\n\n const handleCloseRequest = atomId => {\n const backToBot = { userId: user.userId }\n const userCopy = Object.assign({}, user)\n\n if (atomId && typeof atomId === 'number') backToBot.atomId = atomId\n\n userCopy.supportRequest = {\n support: {},\n userId: user.userId,\n }\n\n setLoader(true)\n closeUserRequest(backToBot).then(() => {\n setLoader(false)\n saveActiveUser(userCopy)\n })\n }\n\n const handleFilterAtoms = atom => {\n if (isStringEmpty(search)) return true\n return atom?.value.toLowerCase().includes(search.toLowerCase())\n }\n\n return (\n
\n \n Close request\n \n\n {!isDisconnectedUser && (\n setTarget(node)}\n onClick={() => !loader && setOpenPopover(!isOpenPopover)}>\n \n
\n )}\n\n setOpenPopover(!isOpenPopover)}>\n
\n
\n \n
\n {atomsList.filter(handleFilterAtoms).map(atom => (\n handleCloseRequest(atom.id)}>\n {atom.value}\n
\n ))}\n \n \n \n )\n}\n\nCloseRequestButton.propTypes = {\n classes: PropTypes.object,\n flows: PropTypes.object,\n user: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n flows: state.flows,\n user: state.activeUser,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(CloseRequestButton)),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { assignSupportRequest } from '../../api/user'\nimport { saveActiveUser } from '../../actions/activeUser'\nimport { styles } from './styles'\n\nconst AssignToMeButton = props => {\n const { classes, user, activeBot, title, adminUserId } = props\n\n const handleClick = () => {\n const json = {\n supportRequestId: user.supportRequest?.id,\n userId: user.userId,\n adminId: adminUserId,\n }\n const userCopy = Object.assign({}, user)\n\n userCopy.supportRequest = {\n status: 'ASSIGNED',\n support: {\n adminId: adminUserId,\n },\n userId: user.userId,\n }\n\n assignSupportRequest(activeBot.id, json).then(() => {\n saveActiveUser(userCopy)\n })\n }\n\n return (\n
\n {title}\n
\n )\n}\n\nAssignToMeButton.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n activeBot: PropTypes.object,\n adminUserId: PropTypes.number,\n title: PropTypes.string,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n adminUserId: state.adminUser.id,\n user: state.activeUser,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(AssignToMeButton)),\n)\n","export const styles = () => ({\n container: {\n width: 124,\n height: 36,\n backgroundColor: '#1658F3',\n color: '#ffffff',\n borderRadius: 4,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n margin: '0px 12px',\n fontWeight: 'bold',\n whiteSpace: 'nowrap',\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport Popover from '@material-ui/core/Popover'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport { assignSupportRequest, getAdminsList } from '../../api/user'\n\nimport { styles } from './styles'\nimport { saveActiveUser } from '../../actions/activeUser'\n\nconst AssignToPopover = props => {\n const { classes, user, match, title, adminUser } = props\n const [isOpenPopover, setOpenPopover] = useState(false)\n const [target, setTarget] = useState(null)\n const [adminsList, setAdminsList] = useState([])\n\n useEffect(() => {\n getAdminsList(match.params.botId).then(admins => {\n if (admins) {\n const filteredAdmins = admins.filter(\n admin => admin.name && admin.id !== adminUser.id,\n )\n setAdminsList(filteredAdmins)\n }\n })\n }, [])\n\n const handleAssign = admin => {\n const json = {\n supportRequestId: user.supportRequest.id,\n userId: user.userId,\n adminId: admin.id,\n }\n const userCopy = Object.assign({}, user)\n\n userCopy.supportRequest = {\n status: 'ASSIGNED',\n support: {\n adminId: admin.id,\n name: admin.name,\n },\n userId: user.userId,\n }\n\n assignSupportRequest(match.params.botId, json).then(() => {\n saveActiveUser(userCopy)\n })\n }\n\n return (\n <>\n setTarget(node)}\n disabled={!adminsList.length}\n onClick={() => setOpenPopover(!isOpenPopover)}>\n {title}\n \n setOpenPopover(!isOpenPopover)}>\n
\n {adminsList\n .filter(admin => admin.name && admin.id !== adminUser.id)\n .map(admin => (\n {\n setOpenPopover(!isOpenPopover)\n handleAssign(admin)\n }}>\n {admin.name}\n
\n ))}\n \n \n \n )\n}\n\nAssignToPopover.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n adminUser: PropTypes.object,\n title: PropTypes.string,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n adminUser: state.adminUser,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(AssignToPopover)),\n)\n","export const styles = () => ({\n button: {\n width: 110,\n height: 36,\n border: '1px solid #1658F3',\n borderRadius: 4,\n color: '#1658F3',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n fontWeight: 'bold',\n marginRight: '12px',\n backgroundColor: '#ffffff',\n whiteSpace: 'nowrap',\n '&:disabled': {\n cursor: 'no-drop',\n },\n },\n popover: {\n width: 240,\n maxHeight: 180,\n },\n adminItem: {\n padding: '7px 12px',\n cursor: 'pointer',\n fontSize: 14,\n '&:hover': {\n background: 'rgba(53, 64, 82, 0.1)',\n },\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\nimport { CopyIcon } from '../../../../uiKit/icons/Icons'\nimport { shortenUrl } from '../../../../helpers/shortenUrl'\nimport { copyValueToClipboard } from '../../../../helpers/copyValueToClipboard'\n\nconst UserWebsite = props => {\n const { classes, url } = props\n\n return (\n
\n \n {shortenUrl(url)}\n \n copyValueToClipboard(url)}\n className={classes.copyIcon}>\n \n
\n \n )\n}\nUserWebsite.propTypes = {\n classes: PropTypes.object,\n url: PropTypes.string,\n}\n\nexport default withStyles(styles)(UserWebsite)\n","export const styles = () => ({\n link: {\n color: '#1658F3',\n fontWeight: 'normal',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n width: 200,\n whiteSpace: 'nowrap',\n display: 'inline-block',\n },\n copyIcon: {\n display: 'inline-block',\n marginLeft: 6,\n cursor: 'pointer',\n },\n linkWrap: {\n display: 'flex',\n },\n})\n","export const shortenUrl = (url, maximumCharactersInUrl) => {\n const { pathname } = new URL(url)\n\n if (!pathname) return url\n return pathname.length > maximumCharactersInUrl\n ? `${pathname.substr(0, maximumCharactersInUrl)}...`\n : pathname\n}\n","import { alertSuccess } from '../api'\n\nexport const copyValueToClipboard = value => {\n navigator.clipboard.writeText(value).then(() => alertSuccess('Copied'))\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport InteractionTimer from '../InteractionTimer/InteractionTimer'\nimport UserWebsite from '../UserWebsite/UserWebsite'\n\nimport { styles } from './styles'\nimport { CHAT_PLATFORM } from '../../../../constants/chatPlatform'\n\nconst UserName = props => {\n const { classes, user } = props\n const isFromWhatsApp = user?.platform === CHAT_PLATFORM.WHATSAPP\n const userWebsiteLocation = user.messages?.find(\n m => m.websiteLocation !== null,\n )?.websiteLocation\n\n return (\n
\n
\n {user.firstName} {user.lastName}\n {isFromWhatsApp && user.userMessageDatetime && (\n \n )}\n
\n\n {userWebsiteLocation && }\n
\n )\n}\n\nUserName.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(UserName))\n","export const styles = () => ({\n userName: {\n color: '#354052',\n fontSize: 16,\n display: 'flex',\n alignItems: 'center',\n },\n userNameWrap: {\n display: 'flex',\n flexDirection: 'column',\n },\n})\n","export const SUPPORT_STATUSES = {\n OPEN: 'OPEN',\n PENDING: 'PENDING',\n ASSIGNED: 'ASSIGNED',\n CLOSED: 'CLOSED',\n EXPIRED: 'EXPIRED',\n}\n","export const CHAT_STATUS = {\n DISCONNECTED: 'DISCONNECTED',\n SUPPORT: 'SUPPORT',\n ACTIVE: 'ACTIVE',\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nimport CloseRequestButton from '../CloseRequestButton/CloseRequestButton'\nimport AssignToMeButton from '../AssignToMeButton/AssignToMeButton'\nimport AssignToPopover from '../AssignToPopover/AssignToPopover'\nimport UserName from '../UserName/UserName'\n\nimport { CHAT_PLATFORM } from '../../../../constants/chatPlatform'\nimport { SUPPORT_STATUSES } from '../../../../constants/suportStatuses'\nimport { CHAT_STATUS } from '../../../../constants/chatStatus'\nimport { styles } from './styles'\nimport { getMinutesLeft } from '../../../../helpers/getMinutesLeft'\nimport { ROLE } from '../../../../security'\n\nconst ChatHeader = props => {\n const { classes, user, adminUser, match } = props\n\n const isAdmin =\n adminUser.botAccesses.filter(\n ba => ba.botId === Number(match.params.botId),\n )[0].role === ROLE.ADMIN\n\n const isAssignedToMe =\n user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED &&\n user.supportRequest?.support?.adminId === adminUser.id\n\n const isAssigned = user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED\n\n const isExpired = user.supportRequest?.status === SUPPORT_STATUSES.EXPIRED\n\n const isOpen = user.supportRequest?.status === SUPPORT_STATUSES.OPEN\n\n const minutesLeft = user && getMinutesLeft(user.userMessageDatetime) < 0\n\n const isDisconnectedUser =\n (user?.platform === CHAT_PLATFORM.WHATSAPP && minutesLeft) ||\n user.chatStatus === CHAT_STATUS.DISCONNECTED\n\n const statusNotification =\n user?.platform === CHAT_PLATFORM.WHATSAPP\n ? \"User didn't interact with the chatbot for 24h. You can’t send a message anymore\"\n : 'User closed the chat and you can’t send a message anymore'\n\n return (\n
\n \n\n
\n {isDisconnectedUser && (\n
{statusNotification}
\n )}\n\n {!isDisconnectedUser && isAssigned && !isAssignedToMe && (\n
\n Assigned to {user?.supportRequest?.support?.name}\n
\n )}\n\n {!isDisconnectedUser && isAssignedToMe && (\n
\n
Assigned to you
\n
\n )}\n\n {!isDisconnectedUser && isAssigned && isAdmin && (\n
\n {!isAssignedToMe && }\n \n
\n )}\n\n {!isDisconnectedUser && !isAssigned && (\n
\n \n \n
\n )}\n\n {(isExpired || isOpen || isAssignedToMe || (isAdmin && isAssigned)) && (\n
\n \n
\n )}\n
\n
\n )\n}\n\nChatHeader.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n adminUser: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n adminUser: state.adminUser,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(ChatHeader)),\n)\n","export const styles = () => ({\n container: {\n width: '100%',\n height: 72,\n borderBottom: '1px solid #EBEBEF',\n padding: '18px 30px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n assignedStatus: {\n color: '#11C314',\n fontSize: 14,\n margin: '0px 16px',\n },\n assignedStatusWrap: {\n display: 'flex',\n alignItems: 'center',\n },\n notification: {\n color: 'rgba(53, 64, 82, 0.7)',\n fontSize: 14,\n margin: '0px 16px',\n },\n blockWrap: {\n display: 'flex',\n alignItems: 'center',\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\n\nconst MessageWrap = props => {\n const { classes, isReceived, timezone, children } = props\n\n return (\n \n {timezone && {timezone}}\n {children}\n \n )\n}\n\nMessageWrap.propTypes = {\n classes: PropTypes.object,\n isReceived: PropTypes.bool,\n timezone: PropTypes.string,\n children: PropTypes.object,\n}\n\nexport default withStyles(styles)(MessageWrap)\n","export const styles = () => ({\n containerReceived: {\n width: '100%',\n margin: '4px 0px',\n display: 'flex',\n flexDirection: 'row-reverse',\n justifyContent: 'flex-end',\n alignItems: 'center',\n },\n containerSend: {\n width: '100%',\n margin: '4px 0px',\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'center',\n },\n timeZone: {\n fontSize: 12,\n color: '#B0B2C0',\n fontWeight: 300,\n margin: '0px 14px',\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport MessageWrap from '../MessageWrap/MessageWrap'\n\nimport { styles } from './styles'\n\nconst TextMessage = props => {\n const { classes, text, timezone, isReceived, isRtl } = props\n\n return (\n \n \n {text}\n \n \n )\n}\n\nTextMessage.propTypes = {\n classes: PropTypes.object,\n text: PropTypes.string,\n timezone: PropTypes.string,\n isReceived: PropTypes.bool,\n isRtl: PropTypes.bool,\n}\n\nexport default withStyles(styles)(TextMessage)\n","export const styles = () => ({\n chatBubbleReceived: {\n maxWidth: '80%',\n padding: '8px 16px',\n fontSize: 14,\n background: 'rgba(90, 152, 247, 0.08)',\n borderRadius: '10px 10px 10px 2px',\n display: 'inline-block',\n },\n chatBubbleSend: {\n maxWidth: '80%',\n padding: '8px 16px',\n fontSize: 14,\n display: 'inline-block',\n background: '#1658F3',\n color: '#ffffff',\n borderRadius: '10px 10px 2px 10px',\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport MessageWrap from '../MessageWrap/MessageWrap'\n\nimport { styles } from './styles'\n\nconst ImageMessage = props => {\n const { classes, timezone, isReceived, imgUrl } = props\n\n return (\n \n \n \n )\n}\n\nImageMessage.propTypes = {\n classes: PropTypes.object,\n timezone: PropTypes.string,\n isReceived: PropTypes.bool,\n imgUrl: PropTypes.string,\n}\n\nexport default withStyles(styles)(ImageMessage)\n","export const styles = () => ({\n img: {\n width: 328,\n height: 150,\n borderRadius: '8px',\n backgroundColor: '#fffff',\n margin: '12px 0px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n objectFit: 'contain',\n border: '1px solid #E5E5E5',\n },\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ReactAudioPlayer from 'react-audio-player'\n\nimport MessageWrap from '../MessageWrap/MessageWrap'\n\nconst AudioMessage = props => {\n const { timezone, isReceived, url } = props\n\n return (\n \n \n \n )\n}\n\nAudioMessage.propTypes = {\n classes: PropTypes.object,\n isReceived: PropTypes.bool,\n url: PropTypes.string,\n}\n\nexport default AudioMessage\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport ReactPlayer from 'react-player'\n\nimport MessageWrap from '../MessageWrap/MessageWrap'\n\nconst VideoMessage = props => {\n const { url, timezone, isReceived } = props\n\n return (\n \n
\n \n
\n
\n )\n}\n\nVideoMessage.propTypes = {\n url: PropTypes.string,\n timezone: PropTypes.string,\n isReceived: PropTypes.bool,\n}\n\nexport default VideoMessage\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\n\nconst Buttons = props => {\n const { classes, buttons } = props\n\n return (\n
\n {buttons.map((button, index) => (\n \n {button.title}\n
\n ))}\n \n )\n}\n\nButtons.propTypes = {\n classes: PropTypes.object,\n buttons: PropTypes.array,\n}\n\nexport default withStyles(styles)(Buttons)\n","export const styles = () => ({\n wrap: {\n width: 328,\n },\n button: {\n backgroundColor: '#ffffff',\n borderTop: '1px solid #E5E5E5',\n height: 44,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#0560A9',\n fontWeight: 'bold',\n },\n lastButton: {\n backgroundColor: '#ffffff',\n borderTop: '1px solid #E5E5E5',\n height: 44,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#0560A9',\n fontWeight: 'bold',\n borderRadius: '0px 0px 8px 8px',\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport Buttons from '../Buttons/Buttons'\nimport { styles } from './styles'\n\nconst GenericMessage = props => {\n const { classes, element, isRtl } = props\n\n return (\n
\n \n\n \n {element?.title}\n
\n\n {element?.subtitle && (\n \n {element?.subtitle}\n \n )}\n\n {element?.buttons && !!element?.buttons?.length && (\n \n )}\n \n )\n}\n\nGenericMessage.propTypes = {\n classes: PropTypes.object,\n element: PropTypes.object,\n isRtl: PropTypes.bool,\n}\n\nexport default withStyles(styles)(GenericMessage)\n","export const styles = () => ({\n img: {\n width: 328,\n height: 150,\n borderRadius: '8px 8px 0px 0px',\n backgroundColor: '#949494',\n backgroundPosition: '50% 50%',\n backgroundSize: 'cover',\n },\n text: {\n background: '#FFFFFF',\n borderRadius: '0px 0px 8px 8px',\n padding: '6px 12px 12px',\n fontWeight: 300,\n width: 328,\n },\n textButtons: {\n background: '#FFFFFF',\n padding: '6px 12px 12px',\n fontWeight: 300,\n width: 328,\n },\n subtitle: {\n background: '#FFFFFF',\n borderRadius: '0px 0px 8px 8px',\n padding: '0px 12px 12px',\n fontWeight: 300,\n fontSize: 14,\n width: 328,\n color: '#828282',\n },\n subtitleButtons: {\n background: '#FFFFFF',\n padding: '0px 12px 12px',\n fontWeight: 300,\n fontSize: 14,\n width: 328,\n color: '#828282',\n },\n link: {\n background: '#FFFFFF',\n padding: '4px 12px',\n fontSize: 14,\n width: 328,\n display: 'block',\n },\n container: {\n border: '1px solid #E5E5E5',\n borderRadius: 8,\n height: 'fit-content',\n },\n})\n","export const styles = () => ({\n wrap: {\n background: '#ffffff',\n borderRadius: 23,\n boxShadow: '0px 0px 4px rgba(0, 0, 0, 0.24)',\n width: 36,\n height: 36,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n margin: 2,\n position: 'absolute',\n cursor: 'pointer',\n top: '50%',\n },\n})\n","import React from 'react'\n\nexport class Next extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n","import React from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from '../slider/ArrowIconsStyles'\nimport { Next } from '../slider/Next'\n\nconst NextIcon = props => {\n const { classes, onClick, top } = props\n\n return (\n
\n \n
\n )\n}\n\nexport default withStyles(styles)(NextIcon)\n","import React from 'react'\n\nexport class Prev extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n","import React from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from '../slider/ArrowIconsStyles'\nimport { Prev } from '../slider/Prev'\n\nconst PrevIcon = props => {\n const { classes, onClick, top } = props\n\n return (\n
\n \n
\n )\n}\n\nexport default withStyles(styles)(PrevIcon)\n","import React, { useRef, useState } from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from './SliderStyles'\nimport NextIcon from '../icons/NextIcon'\nimport PrevIcon from '../icons/PrevIcon'\n\nconst Slider = props => {\n const { classes, children, itemLength } = props\n const [activeIndex, setActiveIndex] = useState(0)\n const scrollEl = useRef(0)\n\n const nextItem = () => {\n setActiveIndex(activeIndex + 1)\n scrollLeft(activeIndex + 1)\n }\n\n const prevItem = () => {\n setActiveIndex(activeIndex - 1)\n scrollLeft(activeIndex - 1)\n }\n\n const scrollLeft = index => {\n scrollEl.current.scrollLeft = 330 * index\n }\n\n return (\n
\n {activeIndex > 0 && }\n
\n {children}\n
\n {activeIndex < itemLength - 1 && }\n
\n )\n}\n\nexport default withStyles(styles)(Slider)\n","export const styles = () => ({\n iconWrap: {\n position: 'relative',\n width: 330,\n height: 'max-content',\n },\n randomWrap: {\n width: 330,\n scrollBehavior: 'smooth',\n overflowX: 'hidden',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport MessageWrap from '../MessageWrap/MessageWrap'\nimport GenericMessage from '../GenericMessage/GenericMessage'\nimport Slider from '../../../../uiKit/slider/Slider'\n\nimport { styles } from './styles'\n\nconst CarouselMessage = props => {\n const { classes, timezone, isReceived, payload, isRtl } = props\n\n return (\n \n \n
\n {payload.elements?.map((element, index) => (\n \n ))}\n
\n
\n
\n )\n}\n\nCarouselMessage.propTypes = {\n classes: PropTypes.object,\n timezone: PropTypes.string,\n isReceived: PropTypes.bool,\n isRtl: PropTypes.bool,\n payload: PropTypes.object,\n}\n\nexport default withStyles(styles)(CarouselMessage)\n","export const styles = () => ({\n genericContainer: {\n display: 'flex',\n width: 'max-content',\n margin: '12px 0px',\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport moment from 'moment'\n\nimport TextMessage from '../TextMessage/TextMessage'\nimport ImageMessage from '../ImageMessage/ImageMessage'\nimport AudioMessage from '../AudioMessage/AudioMessage'\nimport VideoMessage from '../VideoMessage/VideoMessage'\nimport TemplateMessage from '../CarouselMessage/CarouselMessage'\n\nimport { styles } from './styles'\n\nconst Message = props => {\n const { msg, timezone } = props\n\n const message = msg?.message ? JSON.parse(msg.message) : null\n const postBack = msg?.postback ? JSON.parse(msg.postback) : null\n const timestamp = moment(msg.timestamp)\n .add(timezone, 'hours')\n .format('hh:mm A')\n\n const isTextMessage = message?.text\n const isImageMessage =\n message?.attachments?.length && message.attachments[0].type === 'image'\n const isAudioMessage =\n message?.attachments?.length && message.attachments[0].type === 'audio'\n const isVideoMessage =\n message?.attachments?.length && message.attachments[0].type === 'video'\n const isTemplateMessage =\n message?.attachments?.length && message.attachments[0].type === 'template'\n\n const isRtl = message?.isRtl || msg?.isRtl\n\n return (\n <>\n {isTextMessage && (\n \n )}\n\n {isImageMessage && (\n \n )}\n\n {isAudioMessage && (\n \n )}\n\n {isVideoMessage && (\n \n )}\n\n {isTemplateMessage && (\n \n )}\n\n {postBack && (\n \n )}\n \n )\n}\n\nMessage.propTypes = {\n classes: PropTypes.object,\n timezone: PropTypes.number,\n}\n\nconst mapStateToProps = state => ({\n timezone: state.activeBot.timezone,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(Message))\n","export const styles = () => ({\n container: {},\n})\n","export const getUrlHash = () => window.location.hash.substr(1)\n","import React, { memo } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport Message from '../Message/Message'\n\nimport { styles } from './styles'\nimport { getUrlHash } from '../../../../helpers/getUrlHash'\n\nconst MessageGroup = props => {\n const { classes, messages, date, messageIntoView } = props\n const hash = getUrlHash()\n\n return (\n
\n {messages &&\n messages\n .slice()\n .reverse()\n .filter(msg => msg.timestamp.split('T')[0] === date)\n .map(message => (\n \n \n
\n ))}\n \n )\n}\n\nMessageGroup.propTypes = {\n classes: PropTypes.object,\n messages: PropTypes.array,\n date: PropTypes.string,\n}\n\nexport default memo(withStyles(styles)(MessageGroup))\n","export const styles = () => ({\n container: {},\n})\n","import React, { useEffect, useState, useRef } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport MessageGroup from '../MessageGroup/MessageGroup'\n\nimport {\n getMessages,\n getMessagesById,\n getMoreMessages,\n setMessageRead,\n} from '../../api/user'\nimport {\n saveSupportUserMessages,\n saveSupportUserMoreMessages,\n} from '../../actions/activeUser'\nimport { getUrlHash } from '../../../../helpers/getUrlHash'\nimport { updateUserUnreadMessages } from '../../actions/users'\n\nimport { isElementTop } from '../../../../helpers/isElementTop'\nimport { isElementBottom } from '../../../../helpers/isElementBottom'\n\nimport { styles } from './styles'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\nimport { AFTER_MESSAGES, BEFORE_MESSAGES } from './config'\nimport { usePrevious } from '../../../../hooks/usePrevious'\nimport moment from 'moment'\n\nconst MessagesWrap = props => {//NOSONAR\n const { classes, user } = props\n const [scrollPosition, setScrollPosition] = useState(null)\n const [dates, setDates] = useState([])\n const [loading, setLoading] = useState(true)\n const [scrollToTop, serScrollToTop] = useState(false)\n const scrollContainer = useRef(null)\n const messagesEnd = useRef(null)\n const messageIntoView = useRef(null)\n const prevUserMessagesLength = usePrevious(user.messages?.length)\n\n useEffect(() => {\n const hash = getUrlHash()\n\n if (user.chatId) {\n setLoading(true)\n if (hash) {\n getMessagesById(user.chatId, hash)\n .then(saveSupportUserMessages)\n .then(() => setLoading(false))\n .then(scrollToMessage)\n .catch(() => setLoading(false))\n } else {\n getMessages(user.chatId)\n .then(saveSupportUserMessages)\n .then(() => setLoading(false))\n .then(scrollToBottom)\n .catch(() => setLoading(false))\n }\n }\n }, [user.chatId])\n\n useEffect(() => {\n if (!loading && scrollToTop) {\n scrollContainer.current.scrollTop =\n scrollContainer.current.scrollHeight - scrollPosition\n }\n\n if (user.messages?.length) {\n setDates([\n ...new Set(user.messages.map(item => item.timestamp.split('T')[0])),\n ])\n\n if (user.unreadMessage) {\n const lastMessageId = user?.messages[0].id\n setMessageRead(user.chatId, lastMessageId).then(() =>\n updateUserUnreadMessages(user),\n )\n }\n\n if (user.messages?.length - prevUserMessagesLength === 1) {\n scrollToBottom()\n }\n }\n }, [user.messages])\n\n const handleScroll = ({ target }) => {\n if (isElementTop(target)) {\n setScrollPosition(scrollContainer.current.scrollHeight)\n serScrollToTop(true)\n\n const lastMessageId = user?.messages[user?.messages?.length - 1].id\n\n getMoreMessages(lastMessageId, user.chatId, BEFORE_MESSAGES).then(\n messages => {\n if (messages?.length)\n saveSupportUserMoreMessages(messages, BEFORE_MESSAGES)\n },\n )\n }\n\n if (isElementBottom(target)) {\n serScrollToTop(false)\n\n const firstMessageId = user?.messages[0].id\n\n getMoreMessages(firstMessageId, user.chatId, AFTER_MESSAGES).then(\n messages => {\n if (messages?.length)\n saveSupportUserMoreMessages(messages, AFTER_MESSAGES)\n },\n )\n }\n }\n\n const scrollToBottom = () => {\n if (messagesEnd.current) {\n messagesEnd.current.scrollIntoView()\n }\n\n const lastMessageId = user?.messages?.length && user?.messages[0].id\n if (lastMessageId) {\n setMessageRead(user.chatId, lastMessageId).then(() =>\n updateUserUnreadMessages(user),\n )\n }\n }\n\n const scrollToMessage = () => {\n messageIntoView.current.scrollIntoView()\n }\n\n const formatDate = date => {\n return `${moment(date)\n .format('MMMM Do')\n .slice(0, -2)\n .toUpperCase()}${moment(date).format('MMMM Do').slice(-2)}`\n }\n\n return (\n <>\n {loading ? (\n
\n \n
\n ) : (\n \n {dates\n .slice()\n .reverse()\n .map(date => (\n
\n

{formatDate(date)}

\n \n
\n ))}\n
\n
\n )}\n \n )\n}\n\nMessagesWrap.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(MessagesWrap)),\n)\n","export const styles = () => ({\n container: {\n padding: '0px 16px',\n overflow: 'auto',\n height: 'calc(100% - 126px)',\n },\n chatDate: {\n textAlign: 'center',\n color: '#B0B2C0',\n fontSize: 12,\n margin: '24px 0px',\n },\n bottomScrollElem: {\n float: 'left',\n clear: 'both',\n },\n date: {\n textAlign: 'center',\n fontSize: 12,\n fontWeight: 500,\n color: '#3A3F62',\n margin: '16px 0 20px',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n },\n loaderWrap: {\n height: 'calc(100% - 126px)',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n})\n","export const AFTER_MESSAGES = 'AFTER'\nexport const BEFORE_MESSAGES = 'BEFORE'\nexport const AROUND_MESSAGES = 'AROUND'\n","export const isElementTop = el => el && !el.scrollTop\n","import React from 'react'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { styles } from '../slider/ArrowIconsStyles'\n\nconst SendIcon = props => {\n const { color } = props\n return (\n \n \n \n )\n}\n\nexport default withStyles(styles)(SendIcon)\n","export const NOTIFICATION_DEFAULT = 'default'\n\nexport const NOTIFICATION_DENIED = 'denied'\n\nexport const NOTIFICATION_GRANTED = 'granted'\n","import React from 'react'\nimport { NOTIFICATION_GRANTED } from '../constants/notificationsPermissions'\nimport { SERVER_URL } from '../configs'\nimport { toast } from 'react-toastify'\n\nfunction displayCustom(title, body, userId, botId) {\n if (userId && botId) {\n function openChat() {\n window.open(\n `${SERVER_URL}/admin/bot/${botId}/support/${userId}`,\n '_blank',\n )\n }\n toast.info(\n
\n {title}\n
\n {body}\n
,\n {\n onClick: openChat,\n },\n )\n }\n}\n\nfunction displayNative(title, body, userId, botId) {\n if (Notification.permission === NOTIFICATION_GRANTED) {\n const notification = new Notification(title, { body })\n if (userId && botId) {\n notification.onclick = e => {\n e.preventDefault()\n window.open(\n `${SERVER_URL}/admin/bot/${botId}/support/${userId}`,\n '_blank',\n )\n }\n }\n }\n}\n\nexport default {\n askPermission() {\n Notification.requestPermission()\n },\n\n displayNotification(title, body, options = {}) {\n const { userId, botId } = options\n if (document.hidden) {\n displayNative(title, body, userId, botId)\n } else {\n displayCustom(title, body, userId, botId)\n }\n },\n}\n","import React from 'react'\nimport SockJS from 'sockjs-client'\nimport * as Stomp from 'webstomp-client'\nimport * as cookie from 'react-cookies'\n\nimport { BACKEND_URL } from '../configs'\nimport { getUrlEnd } from '../helpers/getUrlEnd'\nimport { isOpenBot } from '../helpers/isOpenBot'\nimport { isSupportTab } from '../helpers/isSupportTab'\n\nimport { updateSupportUser } from '../tabs/support/api/users'\n\nimport { updateSupportUserList } from '../tabs/support/actions/users'\nimport { saveMessage, saveActiveUser } from '../tabs/support/actions/activeUser'\nimport { getSupportRequests } from '../tabs/support/api/support'\nimport NotificationService from '../services/notificationService'\n\nexport const SharedWebsocketContext = React.createContext()\n\nclass WebSockets extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n client: null,\n connected: false,\n reconnectInterval: null,\n interval: 1000,\n reconnectCount: 0,\n }\n }\n\n componentDidMount() {\n this.setupSocketClient()\n }\n\n componentWillUnmount() {\n this.closeConnection()\n }\n\n setupSocketClient = () => {\n const sockJS = new SockJS(\n BACKEND_URL + '/web?Authorization=' + cookie.load('YWxpYWFkbWlu'),\n )\n const client = Stomp.over(sockJS)\n\n client.heartbeat = {\n incoming: 0,\n outgoing: 0,\n }\n\n client.connect({}, this.onConnectSuccess, this.onConnectError)\n client.onclose = () => this.reconnect()\n\n this.setState({\n client,\n })\n }\n\n closeConnection() {\n const { client } = this.state\n\n if (client) {\n if (client.connected) {\n client.unsubscribe('/topic/admin.chatStatus')\n client.unsubscribe('/topic/admin.message')\n client.disconnect()\n }\n }\n }\n\n onConnectSuccess = () => {\n this.setState({ connected: true, interval: 1000 }, this.subscribe)\n }\n\n onConnectError = () => {\n this.reconnect()\n }\n\n reconnect = () => {\n const { reconnectCount, reconnectInterval, interval } = this.state\n clearInterval(reconnectInterval)\n\n if (reconnectCount < 3) {\n const newInterval = setInterval(() => this.setupSocketClient, interval)\n\n this.setState({\n connected: false,\n reconnectInterval: newInterval,\n interval: interval * 2,\n reconnectCount: reconnectCount + 1,\n })\n } else {\n this.closeConnection()\n }\n }\n\n subscribe = () => {\n this.subscribeNewMessages()\n this.subscribeUserChatStatuses()\n }\n\n subscribeNewMessages = () => {\n const { botId, adminUser } = this.props\n const { client } = this.state\n client.subscribe(`/topic/admin.message.${botId}`, msg => {\n const body = JSON.parse(msg.body)\n const isSelectedBot = isOpenBot() && Number(botId) === body?.botId\n const isCurrentAdmin = body?.adminId === adminUser.id\n\n //display browser notification\n if (!body.postback && isSelectedBot && isCurrentAdmin) {\n if (document.hidden || !isSupportTab()) {\n const message = JSON.parse(body.message)\n if (!message.isEcho) {\n const title = `Message from: ${body.firstName} ${body.lastName}`\n NotificationService.displayNotification(title, message.text, {\n userId: body.userId,\n botId,\n })\n }\n }\n }\n\n updateSupportUser(body).then(user => {\n if (user) {\n updateSupportUserList(user, adminUser.id)\n if (Number(getUrlEnd()) === user?.userId) saveMessage(body)\n }\n })\n })\n }\n\n subscribeUserChatStatuses = () => {\n const { botId, adminUser } = this.props\n const { client } = this.state\n\n client.subscribe(`/topic/admin.chatStatus.${botId}`, chatStatus => {\n const user = JSON.parse(chatStatus.body)\n Promise.all([updateSupportUser(user), getSupportRequests(botId)]).then(\n res => {\n const copyUser = Object.assign({}, res[0], user)\n updateSupportUserList(copyUser, adminUser.id)\n if (Number(getUrlEnd()) === copyUser?.userId) saveActiveUser(copyUser)\n },\n )\n })\n }\n\n sendMessage = message => {\n this.state.client.send('/app/admin', JSON.stringify(message))\n }\n\n render() {\n return (\n \n {this.props.children}\n \n )\n }\n}\n\nexport default WebSockets\n","export function isOpenBot() {\n return ~window.location.href.indexOf('/bot/')\n}\n","export function isSupportTab() {\n return ~window.location.href.indexOf('/support')\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const AttachmentIcon = () => {\n return (\n \n \n \n )\n}\n","export const styles = () => ({\n svgAttachmentHolder: {\n cursor: 'pointer',\n padding: '14px 24px',\n height: 54,\n position: 'absolute',\n top: 0,\n left: 0,\n },\n uploadInput: {\n display: 'none',\n },\n})\n","import React, { useContext } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { AttachmentIcon } from '../../../../uiKit/icons/AttachmentIcon'\nimport { selectedFile } from '../../../flowBuilder/api/fileService'\n\nimport { styles } from './styles'\nimport { SharedWebsocketContext } from '../../../../contexts/webSockets'\nimport { connect } from 'react-redux'\n\nconst UploadButton = props => {\n const { classes, user, disabled, adminUserId } = props\n const { sendMessage } = useContext(SharedWebsocketContext)\n\n const handleSelectedFile = event => {\n const file = event.target.files[0]\n const formData = new FormData()\n formData.append('file', file)\n\n selectedFile(formData).then(res => {\n const message = {\n adminId: adminUserId,\n recipient: user.userId,\n fileUrl: res.url,\n fileName: file.name,\n }\n sendMessage(message)\n })\n }\n\n return (\n <>\n \n \n \n )\n}\n\nUploadButton.propTypes = {\n classes: PropTypes.object,\n adminUserId: PropTypes.number,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n adminUserId: state.adminUser.id,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(UploadButton))\n","import { alertError, logoutOnRequestOrResponseJson } from '../../../api'\nimport * as cookie from 'react-cookies'\nimport { BASE_URL } from '../../../configs'\n\nexport function selectedFile(file) {\n return fetch(BASE_URL + '/file', {\n credentials: 'same-origin',\n method: 'POST',\n headers: { Authorization: 'Bearer ' + cookie.load('YWxpYWFkbWlu') },\n body: file,\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(() => {\n alertError('Sorry but something going wrong please ping support!', 5000)\n })\n}\n","import React, { useContext, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\n\nimport SendIcon from '../../../../uiKit/icons/SendIcon'\nimport { SharedWebsocketContext } from '../../../../contexts/webSockets'\nimport { CHAT_PLATFORM } from '../../../../constants/chatPlatform'\nimport { SUPPORT_STATUSES } from '../../../../constants/suportStatuses'\nimport { CHAT_STATUS } from '../../../../constants/chatStatus'\nimport { styles } from './styles'\nimport UploadButton from '../UploadButton/UploadButton'\nimport { assignSupportRequest } from '../../api/user'\nimport { saveActiveUser } from '../../actions/activeUser'\nimport { getMinutesLeft } from '../../../../helpers/getMinutesLeft'\n\nconst ChatInput = props => {\n const { classes, user, adminUserId, activeBot } = props\n const { sendMessage } = useContext(SharedWebsocketContext)\n const [textMessage, setTextMessage] = useState('')\n const minutesLeft = user && getMinutesLeft(user.userMessageDatetime) < 0\n const isAssignedToMe = adminUserId === user.supportRequest?.support?.adminId\n const disableInput =\n user?.chatStatus === CHAT_STATUS.DISCONNECTED ||\n (user?.platform === CHAT_PLATFORM.WHATSAPP && minutesLeft) ||\n (user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED &&\n !isAssignedToMe)\n const isRtl = user?.messages[0]?.isRtl\n\n const handleSendMessage = () => {\n if (disableInput) return\n if (isAssignedToMe) {\n onSendMessage()\n } else {\n const json = {\n supportRequestId: user.supportRequest?.id,\n userId: user.userId,\n adminId: adminUserId,\n }\n\n const userCopy = Object.assign({}, user)\n\n userCopy.supportRequest = {\n status: SUPPORT_STATUSES.ASSIGNED,\n support: {\n adminId: adminUserId,\n },\n userId: user.userId,\n }\n\n assignSupportRequest(activeBot.id, json)\n .then(() => {\n saveActiveUser(userCopy)\n })\n .then(onSendMessage)\n }\n }\n\n const handleKeyPress = event => {\n if (event.key === 'Enter' && textMessage) {\n handleSendMessage()\n }\n }\n\n const onSendMessage = () => {\n const message = {\n adminId: adminUserId,\n text: textMessage,\n recipient: user.userId,\n }\n sendMessage(message)\n setTextMessage('')\n }\n\n return (\n
\n \n setTextMessage(e.target.value)}\n value={textMessage}\n disabled={disableInput}\n placeholder=\"Some message goes here\"\n dir={isRtl ? 'rtl' : 'ltr'}\n onKeyPress={handleKeyPress}\n />\n \n \n \n
\n )\n}\n\nChatInput.propTypes = {\n classes: PropTypes.object,\n user: PropTypes.object,\n adminUserId: PropTypes.number,\n}\n\nconst mapStateToProps = state => ({\n user: state.activeUser,\n adminUserId: state.adminUser.id,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(ChatInput)),\n)\n","export const styles = () => ({\n container: {\n width: '100%',\n borderTop: '1px solid #EBEBEF',\n position: 'relative',\n },\n input: {\n border: 'none',\n width: '100%',\n padding: '0px 70px',\n fontSize: 14,\n height: 54,\n outline: 'none',\n '&::placeholder': {\n color: 'rgba(53, 64, 82, 0.7)',\n },\n },\n iconWrap: {\n cursor: 'pointer',\n padding: '14px 24px',\n height: 54,\n position: 'absolute',\n top: 0,\n right: 0,\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport ChatHeader from '../ChatHeader/ChatHeader'\nimport MessagesWrap from '../MessagesWrap/MessagesWrap'\nimport ChatInput from '../ChatInput/ChatInput'\n\nimport { styles } from './styles'\n\nconst ChatContainer = props => {\n const { classes } = props\n\n return (\n
\n \n \n \n
\n )\n}\n\nChatContainer.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(ChatContainer)\n","export const styles = () => ({\n container: {\n flexBasis: '74%',\n minWidth: 670,\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './styles'\n\nconst NoChatScreen = props => {\n const { classes } = props\n\n return (\n
\n
\n Select a chat to start a conversation\n
\n
\n )\n}\n\nNoChatScreen.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(NoChatScreen)\n","export const styles = () => ({\n noChatWrap: {\n flexBasis: '74%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n noChat: {\n color: '#B0B2C0',\n maxWidth: 206,\n textAlign: 'center',\n },\n})\n","import React, { Component } from 'react'\nimport { Route } from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\n\nimport DialogsContainer from './components/DialogsContainer/DialogsContainer'\nimport ChatContainer from './components/ChatContainer/ChatContainer'\nimport NoChatScreen from './components/NoChatScreen/NoChatScreen'\n\nimport { HOME_PATH } from '../../configs'\nimport { isUrlEndsWithSupport } from '../../helpers/isUrlEndsWithSupport'\nimport { getFlows } from '../flowBuilder/api/flow'\nimport { updateSupportUser } from './api/users'\nimport { styles } from './styles'\nimport { saveActiveUser } from './actions/activeUser'\n\nclass SupportContainer extends Component {\n componentDidMount() {\n getFlows(this.props.match.params.botId)\n this.tryToSaveActiveUser()\n }\n\n tryToSaveActiveUser = () => {\n if (!isUrlEndsWithSupport()) {\n const vars = window.location.pathname.split('/')\n const id = vars[vars.length - 1]\n updateSupportUser({ userId: id }).then(saveActiveUser)\n }\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n \n\n {isUrlEndsWithSupport() && }\n\n }\n />\n
\n )\n }\n}\n\nSupportContainer.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(SupportContainer)\n","export const styles = () => ({\n container: {\n height: 'calc(100% - 80px)',\n margin: '40px 40px 40px 0px',\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n minWidth: 940,\n display: 'flex',\n overflow: 'hidden',\n },\n})\n","import { store } from '../../../index'\n\nexport const SAVE_BROADCASTS = 'SAVE_BROADCASTS'\n\nexport const saveBroadcasts = broadcasts => {\n store.dispatch({\n type: SAVE_BROADCASTS,\n broadcasts,\n })\n}\n","import {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { saveBroadcasts } from '../actions/broadcasts'\nimport { BASE_URL } from '../../../configs'\n\nexport function createBroadcast(broadcast) {\n fetch(BASE_URL + '/broadcast', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'POST',\n body: JSON.stringify(broadcast),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n alertSuccess('Broadcast is created successfully.')\n loadBroadcasts(broadcast.botId)\n })\n .catch(function(error) {\n alertError('Fail. Try it later', 10000)\n })\n}\n\nexport function loadBroadcasts(botId) {\n fetch(BASE_URL + '/broadcast/' + botId, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveBroadcasts(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!', 5000)\n })\n}\n\nexport function cancelBroadcast(broadcastId) {\n fetch(BASE_URL + '/broadcast/' + broadcastId + '/cancel', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PATCH',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n saveBroadcasts(json)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!', 5000)\n })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: '30%',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n padding: theme.spacing.unit * 4,\n overflowY: 'auto',\n borderRadius: 10,\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n textAlign: 'center',\n },\n btnContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n flexDirection: 'row',\n },\n statesModal: {\n height: 45,\n padding: '10px 0',\n },\n heading: {\n lineHeight: 'normal',\n fontSize: 18,\n color: '#3A3F62',\n textAlign: 'center',\n },\n textField: {\n marginLeft: theme.spacing.unit,\n marginRight: theme.spacing.unit,\n width: 200,\n flexBasis: '60%',\n },\n progress: {\n margin: theme.spacing.unit * 2,\n },\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflowX: 'auto',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n userSays: {\n fontSize: 14,\n color: '#1658F3',\n margin: '18px 0',\n },\n confirm: {\n padding: '12px 28px',\n border: 0,\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n cursor: 'pointer',\n color: 'white',\n margin: '30px auto 0',\n display: 'inline-flex',\n },\n cancel: {\n padding: '12px 28px',\n border: 0,\n background: 'transparent',\n outlineColor: '#1658F3',\n borderRadius: 10,\n cursor: 'pointer',\n color: '#1658F3',\n margin: '30px auto 0',\n display: 'inline-flex',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n },\n modalHeading: {\n fontSize: 16,\n color: '#3A3F62',\n fontWeight: 600,\n },\n '@global': {\n '.addPhrase::placeholder,.addPhrase': {\n color: '#3A3F62',\n },\n '.Select-placeholder': {\n lineHeight: '43px',\n },\n '.Select-input > input': {\n lineHeight: '28px',\n },\n '.Select-value': {\n paddingTop: 4,\n },\n '.Select-control': {\n height: 45,\n },\n '::-webkit-scrollbar': {\n width: 12,\n },\n\n '::-webkit-scrollbar-track': {\n /*-webkit-box-shadow: inset 0 0 6px rgba(255, 255, 255, 0.3);*/\n borderRadius: 3,\n },\n\n '::-webkit-scrollbar-thumb': {\n borderRadius: 10,\n webkitBoxShadow: 'inset 0 0 6px rgba(24, 24, 24, 0.5)',\n backgroundColor: 'rgba(99, 99, 99, 0.2)',\n },\n },\n})\n\nclass ConfirmModal extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {}\n }\n\n render() {\n const { classes, itemId, itemTitle, confirmAction, closeModal } = this.props\n return (\n
\n

Are you sure you want to delete this item?

\n
{itemTitle}
\n
\n {\n confirmAction(itemId)\n closeModal()\n }}>\n Confirm\n \n \n
\n
\n )\n }\n}\n\nConfirmModal.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(ConfirmModal))\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport Select from 'react-select'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { cancelBroadcast, loadBroadcasts } from '../api/broadcast'\nimport ClearIcon from '@material-ui/icons/Clear'\nimport Modal from '@material-ui/core/Modal'\nimport ConfirmModal from './ConfirmModal'\nimport moment from 'moment/moment'\nimport Pagination from '../../../uiKit/table/Pagination'\nimport Headline from '../../../uiKit/texts/Headline'\nimport NoData from '../../nlp/components/NoNlpData'\nimport LoaderSmall from '../../../uiKit/loaders/loaderSmall'\n\nconst styles = theme => ({\n paper: {\n position: 'absolute',\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflowX: 'auto',\n },\n textField: {\n marginLeft: theme.spacing.unit,\n marginRight: theme.spacing.unit,\n width: 200,\n },\n title: {\n fontSize: 24,\n color: theme.palette.primary.headerText,\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: 400,\n },\n broadcastItem: {\n padding: 14,\n fontSize: 14,\n display: 'flex',\n maxHeight: 80,\n fontFamily: 'Lato, sans-serif',\n color: theme.palette.primary.text,\n position: 'relative',\n '&:hover .deleteIcon': {\n display: 'block',\n },\n animationDuration: '0.5s',\n animationName: 'appear',\n },\n name: {\n flexBasis: '20%',\n maxWidth: '20%',\n wordWrap: 'break-word',\n padding: '0 10px',\n display: 'flex',\n alignItems: 'center',\n },\n broadcastTableHeader: {\n fontWeight: 'bold',\n },\n atom: {\n flexBasis: '30%',\n maxWidth: '30%',\n wordWrap: 'break-word',\n padding: '0 10px',\n display: 'flex',\n alignItems: 'center',\n },\n time: {\n flexBasis: '30%',\n color: theme.palette.primary.text,\n display: 'flex',\n alignItems: 'center',\n },\n status: {\n display: 'flex',\n alignItems: 'center',\n padding: '4px 8px',\n backgroundColor: 'red',\n borderRadius: 10,\n fontSize: 12,\n alignSelf: 'center',\n fontFamily: 'Lato, sans-serif',\n color: 'white',\n },\n deleteInt: {\n color: theme.palette.primary.text,\n cursor: 'pointer',\n position: 'absolute',\n display: 'none',\n right: 14,\n top: '50%',\n transform: 'translateY(-50%)',\n },\n desc: {\n lineHeight: 17,\n fontSize: 14,\n color: theme.palette.primary.headerText,\n },\n titleFont: {\n fontSize: '24px',\n fontWeight: 'bold',\n fontFamily: 'Lato',\n color: theme.palette.primary.headerText,\n },\n headerWrap: {\n display: 'flex',\n justifyContent: 'flex-start',\n },\n headerWrapItem: {\n flexBasis: '50%',\n },\n broadcastsHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n },\n addNew: {\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n border: '1px solid ' + theme.palette.pieChartColors.chatbot,\n borderRadius: 10,\n padding: 10,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n maxHeight: 40,\n margin: '50px 20px 20px',\n cursor: 'pointer',\n },\n '@global': {\n '@keyframes appear': {\n from: {\n position: 'relative',\n top: 30,\n opacity: 0,\n },\n to: {\n position: 'relative',\n top: 0,\n opacity: 1,\n },\n },\n },\n})\n\nconst options = [\n {\n label: 'Latest first',\n value: 'Latest first',\n },\n {\n label: 'Active first',\n value: 'Active first',\n },\n]\n\nconst description =\n // eslint-disable-next-line max-len\n 'You have no Broadcasts yet. Add a new Broadcast to be able to send group message notifications to your target audience'\n\nclass NewBroadcastsList extends React.Component {\n closeConfirmModal = () => {\n this.setState({\n open: false,\n modalBroadcastId: null,\n modalBroadcastTitle: '',\n })\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n page: 0,\n rowsPerPage: 10,\n open: false,\n modalIntentId: 0,\n searchIntent: '',\n selectedOption: options[0],\n modalBroadcastId: null,\n modalBroadcastTitle: '',\n }\n\n loadBroadcasts(props.match.params.botId)\n }\n\n openConfirmModal() {\n this.setState({\n open: true,\n })\n }\n\n handleChangeOption(option) {\n this.setState({\n selectedOption: option,\n })\n }\n\n sortData(date1, date2) {\n if (this.state.selectedOption.value === 'Latest first') {\n return date2.id - date1.id\n } else {\n if (\n (date1.status !== 'Canceled' &&\n date1.status !== 'Done' &&\n date2.status === 'Canceled') ||\n date2.status === 'Done'\n ) {\n if (date2.status === 'Scheduled' && date1.status === 'In Progress') {\n return date2.id - date1.id\n }\n return date1.id - date2.id\n } else if (\n date2.status === 'Scheduled' &&\n date1.status !== 'In Progress'\n ) {\n return date2.id - date1.id\n } else {\n const c = new Date(date1.localDateTime) / 1000\n const d = new Date(date2.localDateTime) / 1000\n return d - c\n }\n }\n }\n\n handleChangeRowsPerPage(value) {\n this.setState({\n rowsPerPage: value,\n })\n }\n\n timeFunc() {\n if (this.props.activeBot.timezone > 0) {\n return `+ ${this.props.activeBot.timezone}`\n } else if (this.props.activeBot.timezone === 0) {\n return ' '\n } else {\n return ` ${this.props.activeBot.timezone}`\n }\n }\n\n handleChangePage(value) {\n this.setState({\n page: value,\n })\n }\n\n formatDatetime(broadcastDatetime) {\n return moment(new Date(broadcastDatetime)).format('DD MMM YYYY HH:mm')\n }\n\n calculateRead(n) {\n return (\n (n.read ? n.read : 0) +\n ' (' +\n (n.read && n.delivered\n ? (n.delivered === 0 ? 0 : (100 * n.read) / n.delivered) === 100\n ? n.delivered === 0\n ? 0\n : (100 * n.read) / n.delivered\n : (n.delivered === 0 ? 0 : (100 * n.read) / n.delivered).toFixed(1)\n : 0) +\n '%)'\n )\n }\n\n getRowStyles = index => {\n if ((index + 1) % 2 === 1) {\n return {\n background: 'rgba(255, 255, 255, 0)',\n }\n }\n return {\n background: 'rgba(90, 152, 247, 0.1)',\n borderRadius: 10,\n }\n }\n\n getTimezone = broadcast => {\n return broadcast.timezone\n ? this.formatDatetime(broadcast.localDateTime)\n : moment(broadcast.localDateTime)\n .utcOffset(this.props.activeBot.timezone * 60 + moment().utcOffset())\n .format('DD MMM YYYY HH:mm')\n }\n\n getTimezoneLabel = timezone => {\n return timezone\n ? ' User timezone'\n : ` Bot timezone (UTC ${this.timeFunc()})`\n }\n\n getStatusColor = status => {\n switch (status) {\n case 'Done':\n return '#11C314'\n case 'Scheduled':\n return '#FFAA47'\n case 'Canceled':\n return '#FF624C'\n case 'In Progress':\n return '#5A98F7'\n default:\n return '#5A98F7'\n }\n }\n\n render() {\n const { classes } = this.props\n const data = this.props.broadcasts\n const { rowsPerPage, page } = this.state\n\n return (\n
\n
\n \n
\n \n + Add Broadcast\n
\n\n {!!data?.length && (\n
\n this.handleChangeOption(value)}\n searchable={true}\n />\n
\n )}\n
\n
\n {!data.length ? (\n \n ) : (\n
\n {data.length ? (\n
\n
\n
\n \n \n Name\n
\n \n Message\n
\n \n Delivered\n
\n \n Read (%)\n
\n \n Time\n \n this.sortData()}>\n Status\n \n \n {data\n .sort((a, b) => this.sortData(a, b))\n .slice(\n page * rowsPerPage,\n page * rowsPerPage + rowsPerPage,\n )\n .map((broadcast, index) => (\n \n
{broadcast.name}
\n
{broadcast.atom}
\n
\n {broadcast.delivered ? broadcast.delivered : 0}\n
\n
\n {this.calculateRead(broadcast)}\n
\n
\n {this.getTimezone(broadcast)}\n
\n {this.getTimezoneLabel(broadcast.timezone)}\n
\n \n \n {broadcast.status}\n \n \n {(broadcast.status === 'Scheduled' ||\n broadcast.status === 'In Progress') && (\n
\n {\n this.setState(\n {\n modalBroadcastId: broadcast.id,\n modalBroadcastTitle: broadcast.name,\n },\n this.openConfirmModal,\n )\n }}\n />\n
\n )}\n \n ))}\n {data.length !== 0 && (\n \n \n this.handleChangePage(value)\n }\n />\n \n )}\n\n \n \n \n \n \n \n ) : (\n \n )}\n \n )}\n \n )\n }\n}\n\nNewBroadcastsList.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n broadcasts: state.broadcasts,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(NewBroadcastsList)),\n)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\nimport moment from 'moment'\nimport InputHolder from '../../../uiKit/inputs/InputHolder'\nimport Tags from '../../flowBuilder/components/messages/Tags'\nimport { DateTimePicker } from 'material-ui-pickers'\nimport Icon from '@material-ui/core/Icon/Icon'\nimport FormControlLabel from '@material-ui/core/FormControlLabel/FormControlLabel'\nimport Checkbox from '@material-ui/core/Checkbox/Checkbox'\nimport States from '../../flowBuilder/components/States'\nimport SubmitButton from '../../../uiKit/buttons/SubmitButton'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { createBroadcast } from '../api/broadcast'\nimport RadioGroup from '@material-ui/core/RadioGroup/RadioGroup'\nimport Radio from '@material-ui/core/Radio/Radio'\nimport { CalendarIcon } from '../../../uiKit/icons/Icons'\n\nconst styles = theme => ({\n menu: {\n display: 'flex',\n justifyContent: 'space-around',\n fontFamily: 'Lato',\n },\n newBroadcast: {\n padding: 0,\n boxShadow: 'none',\n },\n\n leftTabItem: {\n marginTop: 16,\n },\n logicBlock: {\n marginTop: '20px',\n paddingBottom: '25px',\n width: '98%',\n },\n\n description: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n },\n\n select: {\n flexDirection: 'column',\n },\n\n inputHolder: {\n border: '1px solid #C7CAD6 !important',\n width: 'max-content',\n borderRadius: '5px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: 400,\n },\n tagsStyle: {\n width: '400px',\n },\n submitButton: {\n marginTop: '24px !important',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n picker: {\n margin: 'auto',\n display: 'block',\n },\n button: {\n display: 'flex',\n justifyContent: 'flex-start',\n marginTop: 30,\n },\n simpleFont: {\n color: '#616581',\n },\n whiteInput: {\n background: '#ffffff',\n fontSize: '14px',\n padding: '0 24px',\n borderRadius: '8px',\n },\n rightIcon: {\n marginLeft: theme.spacing.unit,\n },\n footer: {\n display: 'flex',\n maxWidth: 400,\n },\n headerButton: {\n margin: '5px',\n background: 'linear-gradient(285.2deg, #5A98F7 -35.9%, #1658F3 61.17%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n color: 'white',\n borderRadius: 10,\n height: 45,\n },\n headerAddBroadcast: {\n fontSize: '18px',\n fontWeight: 'bold',\n fontFamily: 'Lato',\n color: theme.palette.primary.headerText,\n margin: 'auto',\n },\n\n titleRadio: {\n fontSize: '14px',\n color: theme.palette.text.header,\n },\n\n '@global': {\n \"[class*='MuiInput-underline']:before \": {\n display: 'none',\n },\n \"[class*='Connect-Broadcasts--whiteInput']\": {\n margin: '0 !important',\n border: 0,\n padding: 0,\n },\n '.label': {\n fontSize: 14,\n color: '#3A3F62',\n },\n '.checkbox-checked': {\n borderRadius: 10,\n },\n '.picker> div> div > div >[class*=\"jss\"]': {\n border: 0,\n },\n '.picker [class*=\"jss\"]::before': {\n content: 'none',\n },\n '.broadcast-rootRadio label': {\n margin: '10px 16px -4px -14px',\n },\n '.broadcast-rootRadio span[class*=\"label\"]': {\n marginLeft: '-3px',\n },\n '.broadcast-rootRadio span': {\n margin: '-10px 0px',\n fontSize: 14,\n fontFamily: 'Lato',\n },\n },\n})\n\nclass BroadcastModal extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n checked: false,\n sendNow: true,\n ifTimezone: false,\n timezone: null,\n red: false,\n activeBot: {},\n botTimezoneSet: false,\n selectedDate: null,\n loaded: false,\n selectedTags: [],\n }\n\n this.state.selectedDate = !this.state.activeBot.length\n ? moment()\n : moment.utc().utcOffset(this.state.activeBot.timezone)\n }\n\n timeFunc() {\n if (this.props.activeBot.timezone > 0) {\n return `+ ${this.props.activeBot.timezone}`\n }\n if (this.props.activeBot.timezone == 0) {\n return ' '\n } else {\n return `${this.props.activeBot.timezone}`\n }\n }\n\n changeName = e => {\n this.setState({ name: e.target.value })\n }\n\n handleChangeAtom(value) {\n this.state.red\n ? this.setState({\n atom: value,\n red: false,\n })\n : this.setState({\n atom: value,\n })\n }\n\n sendBroadcast = () => {\n if (this.state.atom != null) {\n const {\n atom,\n name,\n activeBot,\n ifTimezone,\n sendNow,\n selectedDate,\n checked,\n selectedTags,\n } = this.state\n let localDateTime\n\n if (sendNow) {\n localDateTime = moment().utc().format('YYYY-MM-DDTHH:mm')\n } else if (ifTimezone) {\n localDateTime = moment(selectedDate).format('YYYY-MM-DDTHH:mm')\n } else {\n localDateTime = moment(selectedDate)\n .utcOffset(-this.props.activeBot.timezone * 60 + moment().utcOffset())\n .format('YYYY-MM-DDTHH:mm')\n }\n\n const broadcast = {\n botId: this.props.activeBot.id,\n atom,\n name,\n timezone: ifTimezone,\n localDateTime,\n tags: selectedTags,\n allOfTags: checked,\n }\n this.setState(\n {\n atom: undefined,\n checked: false,\n name: '',\n selectedDate: moment(moment().utc().utcOffset(activeBot.timezone)),\n sendNow: true,\n ifTimezone: true,\n red: false,\n selectedTags: [],\n },\n () => {\n createBroadcast(broadcast)\n this.props.onClose()\n },\n )\n } else {\n this.setState({\n red: true,\n })\n }\n }\n\n componentDidMount() {\n const { botTimezoneSet } = this.state\n const { activeBot } = this.props\n if (Object.getOwnPropertyNames(activeBot).length && !botTimezoneSet) {\n this.setState({\n selectedDate: moment(\n moment()\n .utc()\n .utcOffset(activeBot.timezone * 60),\n ).format('YYYY-MM-DDTHH:mm'),\n loaded: true,\n botTimezoneSet: true,\n })\n }\n }\n\n componentDidUpdate() {\n const { botTimezoneSet } = this.state\n const { activeBot } = this.props\n if (Object.getOwnPropertyNames(activeBot).length && !botTimezoneSet) {\n this.setState({\n selectedDate: moment(\n moment()\n .utc()\n .utcOffset(activeBot.timezone * 60),\n ).format('YYYY-MM-DDTHH:mm'),\n loaded: true,\n botTimezoneSet: true,\n })\n }\n }\n\n handleCheck = event => {\n this.setState({ checked: event.target.value === 'true' })\n }\n\n handleTagsChanged(value) {\n this.setState({ selectedTags: value })\n }\n\n toggleSendNow = event => {\n const { sendNow, ifTimezone } = this.state\n let currentIfTimezone = ifTimezone\n if (sendNow == false && ifTimezone == true) {\n currentIfTimezone = !ifTimezone\n }\n this.setState({\n sendNow: event.target.value === 'true',\n ifTimezone: currentIfTimezone,\n })\n }\n toggleTimezone = () => {\n this.setState({\n ifTimezone: !this.state.ifTimezone,\n })\n }\n handleDateChange = date => {\n const selectedDate = moment(date)\n this.setState({\n selectedDate,\n })\n }\n\n render() {\n const { classes } = this.props\n const { loaded, selectedDate, name } = this.state\n return (\n
\n
\n \n

Add broadcast

\n
\n
\n
\n
\n

Broadcast name

\n \n
\n \n

\n Choose message for broadcast\n

\n \n this.handleChangeAtom(value)}\n showHardcoded={true}\n holderStyle={{ width: '100%' }}\n isCurrent={this.state.red}\n style={{\n width: '100%',\n }}\n value={this.state.atom}\n />\n
\n
\n \n

Choose tags

\n this.handleTagsChanged(value)}\n value={this.state.selectedTags}\n disableNew\n style={{\n width: '400px',\n }}\n creatable={false}\n classes={{ select: classes.select }}\n showSwitcher={false}\n />\n
\n {this.state.selectedTags.length > 1 ? (\n \n

Send to

\n \n }\n label=\"Customers that match with only one tag\"\n />\n }\n label=\"Customers that match with all of the tags\"\n />\n \n \n ) : (\n
\n )}\n\n
\n
\n

Send when

\n \n }\n label=\"Send now\"\n />\n }\n label=\"Schedule date & time\"\n />\n \n
\n
\n {!this.state.sendNow ? (\n
\n
\n \n Set date & time\n \n
\n
\n {!this.state.sendNow && loaded && (\n this.handleDateChange(event)}\n leftArrowIcon={ keyboard_arrow_left }\n rightArrowIcon={ keyboard_arrow_right }\n />\n )}\n
\n \n
\n
\n
\n \n }\n label={`Use user timezone (If disabled, it will use UTC ${this.timeFunc()} timezone)`}\n />\n
\n
\n ) : (\n
\n )}\n
\n \n
\n
\n
\n \n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n tags: state.tags,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(BroadcastModal),\n ),\n)\n","import React from 'react'\nimport NewBroadcastsList from './components/NewBroadcastsList'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types'\nimport moment from 'moment'\nimport { loadTags } from '../flowBuilder/api/tag'\nimport { getFlows } from '../flowBuilder/api/flow'\nimport Modal from '../../uiKit/Modal'\nimport BroadcastModal from './components/BroadcastModal'\n\nconst styles = () => ({\n tab: {\n overflowY: 'auto',\n overflowX: 'hidden',\n height: '100%',\n },\n broadcastsList: {\n flexBasis: '100%',\n minWidth: 400,\n paddingRight: '30px',\n },\n paperModal: {\n width: '460px',\n padding: '30px 50px 24px',\n outline: 'none',\n position: 'absolute',\n boxShadow:\n '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12)',\n borderRadius: '10px',\n backgroundColor: '#fff',\n },\n})\n\nclass Broadcasts extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n timezone: null,\n activeBot: {},\n selectedDate: null,\n shownDate: null,\n openedBroadcastModal: false,\n }\n\n this.state.selectedDate = !this.state.activeBot.length\n ? moment()\n : moment.utc().utcOffset(this.state.activeBot.timezone)\n this.state.shownDate = !this.state.activeBot.length\n ? moment()\n : moment.utc().utcOffset(this.state.activeBot.timezone)\n }\n\n componentDidMount() {\n loadTags(this.props.match.params.botId)\n getFlows(this.props.match.params.botId)\n }\n\n closeBroadcastModal = () => {\n this.setState({ openedBroadcastModal: false })\n }\n openBroadcastModal = () => {\n this.setState({ openedBroadcastModal: true })\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n
\n \n
\n \n \n \n
\n )\n }\n}\n\nBroadcasts.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n tags: state.tags,\n broadcasts: state.broadcasts,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Broadcasts)),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\n\nconst styles = theme => ({\n input: {\n outline: 'none',\n width: '100%',\n padding: '14px 24px',\n borderRadius: 10,\n fontSize: '14px',\n lineHeight: '19px',\n color: theme.palette.primary.text,\n border: '1px solid #C7CAD6',\n maxHeight: 45,\n },\n inputTitle: {\n fontSize: 14,\n color: theme.palette.primary.headerText,\n fontWeight: 400,\n margin: '24px 0 8px',\n },\n error: {\n borderColor: theme.palette.alerts.error,\n },\n})\n\nconst Input = props => {\n const {\n classes,\n title,\n autofocus,\n inputTitleStyles,\n maxLength,\n style,\n value,\n placeholder,\n onChange,\n handleKeyPress,\n handleEnterPress,\n error,\n } = props\n\n const handleKeyPressHandler = e => {\n if (e.key === 'Enter') {\n if (handleEnterPress) {\n handleEnterPress()\n }\n }\n if (handleKeyPress) {\n handleKeyPress(e)\n }\n }\n\n return (\n
\n {title && (\n

\n {title}\n

\n )}\n \n
\n )\n}\n\nInput.defaultProps = {\n inputTitleStyles: {},\n}\n\nInput.propTypes = {\n classes: PropTypes.object.isRequired,\n placeholder: PropTypes.string.isRequired,\n inputTitleStyles: PropTypes.object,\n style: PropTypes.object,\n maxLength: PropTypes.number,\n title: PropTypes.string,\n error: PropTypes.bool,\n autofocus: PropTypes.bool,\n handleKeyPress: PropTypes.func,\n handleEnterPress: PropTypes.func,\n}\n\nexport default withRouter(withStyles(styles)(Input))\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport Heading from '../../../../../uiKit/texts/Heading'\nimport Input from '../../../../../uiKit/inputs/Input'\nimport { deepCopyFunction } from '../../../../../helpers/deepCopyFunction'\nimport { updateBot } from '../../../../home/api/bots'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\n\nimport { styles } from './styles'\n\nconst NameBlock = ({ classes, activeBot }) => {\n const [botName, setBotName] = useState('')\n\n useEffect(() => {\n setBotName(activeBot.name)\n }, [activeBot])\n\n const handleChangeName = event => {\n setBotName(event.target.value)\n }\n\n const handleUpdate = () => {\n const bot = deepCopyFunction(activeBot)\n bot.name = botName\n\n updateBot(bot)\n }\n\n return (\n
\n Edit chatbot's name\n \n \n
\n )\n}\n\nNameBlock.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(NameBlock))\n","export const styles = () => ({\n container: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n marginBottom: 32,\n },\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n marginTop: 16,\n },\n})\n\nclass Paragraph extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n {this.props.children}\n
\n )\n }\n}\n\nParagraph.propTypes = {\n classes: PropTypes.object,\n style: PropTypes.object,\n}\n\nexport default withRouter(withStyles(styles)(Paragraph))\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport Heading from '../../../../../uiKit/texts/Heading'\nimport Paragraph from '../../../../../uiKit/texts/Paragraph'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport AttributesModal from '../AttributesModal/AttributesModal'\n\nimport { styles } from './styles'\n\nconst AttributeBlock = ({ classes, activeBot }) => {\n const [openAttributeModal, setOpenAttributeModal] = useState(false)\n\n const handleOpenAttributeModal = openAttributeModal => {\n setOpenAttributeModal(openAttributeModal)\n }\n\n return (\n <>\n
\n Chatbot Attributes\n \n Set default values for the attributes. Use them to quickly insert your\n brand's info into a chatbot.\n \n handleOpenAttributeModal(true)}\n />\n
\n\n handleOpenAttributeModal(false)}\n botName={activeBot.name}\n />\n \n )\n}\n\nAttributeBlock.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(AttributeBlock))\n","export const styles = () => ({\n container: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n marginBottom: 32,\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const DownloadIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n \n \n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const UploadIcon = props => {\n // eslint-disable-next-line react/prop-types\n const { width, height, color } = props\n\n return (\n \n \n \n \n \n\n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { styles } from './styles'\nimport { UploadIcon } from '../icons/UploadIcon'\n\nconst ImportButton = ({ classes, onChange }) => {\n const onInputClick = event => {\n event.target.value = ''\n }\n\n return (\n
\n \n \n
\n )\n}\n\nImportButton.propTypes = {\n classes: PropTypes.object,\n}\nexport default withStyles(styles)(ImportButton)\n","export const styles = () => ({\n input: {\n '& > input': {\n opacity: 0,\n width: 0,\n height: 0,\n position: 'absolute',\n },\n '& > label': {\n cursor: 'pointer',\n fontSize: 14,\n padding: '8px 16px',\n border: '1px solid rgba(22, 88, 243, 1)',\n borderRadius: 4,\n color: 'rgba(22, 88, 243, 1)',\n width: 'fit-content',\n fontWeight: 500,\n backgroundColor: '#ffffff',\n margin: '30px 0px 0px 0px',\n '& > span': {\n margin: '0px 6px 0px 0px',\n },\n },\n },\n})\n","export const styles = () => ({\n buttonsHolder: {\n display: 'flex',\n justifyContent: 'space-between',\n padding: '24px 0px 0px',\n flexWrap: 'wrap',\n width: 164,\n },\n text: {\n color: 'rgba(53, 64, 82, 1)',\n fontWeight: 700,\n textAlign: 'center',\n },\n subText: {\n color: '#616581',\n textAlign: 'center',\n },\n alert: {\n color: '#FF6666',\n textAlign: 'center',\n },\n body: {\n padding: 30,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n },\n loaderContainer: {\n height: 195,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport Modal from '../../../../../uiKit/Modal'\nimport { uploadBot } from '../../../api/export'\nimport { alertError, alertSuccess } from '../../../../../api'\n\nimport { styles } from './styles'\nimport { getBot } from '../../../../home/api/bots'\nimport LoaderSmall from '../../../../../uiKit/loaders/loaderSmall'\n\nconst UpdateBotModal = ({ classes, open, onClose, activeBot, formData }) => {\n const [loading, setLoading] = useState(false)\n\n const handleUpdate = () => {\n setLoading(true)\n uploadBot(activeBot.id, formData)\n .then(res => {\n setLoading(false)\n onClose()\n if (res?.error?.message) {\n alertError(res?.error?.message)\n } else {\n alertSuccess('Chatbot version is updated successfully.')\n }\n })\n .then(() => {\n getBot(activeBot.id)\n })\n .catch(() => {\n setLoading(false)\n })\n }\n\n const handleClose = () => {\n setLoading(false)\n onClose()\n }\n\n return (\n \n {loading ? (\n
\n \n
\n ) : (\n
\n
\n Are you sure you want to update your content?\n
\n
\n Previous content would be permanently deleted.\n
\n
Create dump before update.
\n
\n \n \n
\n
\n )}\n
\n )\n}\n\nUpdateBotModal.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(UpdateBotModal))\n","import { BASE_URL } from '../../../configs'\nimport {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport * as cookie from 'react-cookies'\n\nexport function exportBot(botId) {\n return fetch(`${BASE_URL}/bot/${botId}/export`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n }).catch(json => {\n alertError(json.error?.message)\n })\n}\n\nexport function uploadBot(botId, file) {\n return fetch(`${BASE_URL}/bot/${botId}/import`, {\n credentials: 'same-origin',\n headers: { Authorization: 'Bearer ' + cookie.load('YWxpYWFkbWlu') },\n body: file,\n method: 'POST',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(json => {\n alertError(json.error?.message)\n })\n}\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport moment from 'moment'\n\nimport Heading from '../../../../../uiKit/texts/Heading'\nimport Paragraph from '../../../../../uiKit/texts/Paragraph'\nimport { DownloadIcon } from '../../../../../uiKit/icons/DownloadIcon'\nimport ImportButton from '../../../../../uiKit/ImportButton/ImportButton'\nimport UpdateBotModal from '../UpdateBotModal/UpdateBotModal'\nimport { exportBot } from '../../../api/export'\n\nimport { styles } from './styles'\nimport { alertError } from '../../../../../api'\nimport LoaderOverlay from '../../../../../uiKit/loaders/loaderOverlay'\n\nconst baseUserImage = '/images/platform/default-user-icon.svg'\n\nconst VersionBlock = ({ classes, activeBot }) => {\n const [openUpdateBotModal, setOpenUpdateBotModal] = useState(false)\n const [formData, setFormData] = useState(null)\n const [loading, setLoading] = useState(false)\n\n const handleExportBot = () => {\n setLoading(true)\n exportBot(activeBot.id)\n .then(response => response.blob())\n .then(blob => {\n const url = window.URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.style.display = 'none'\n a.href = url\n a.download = `${activeBot.name}_${\n activeBot?.contentVersion || '1.0'\n }.zip`\n document.body.appendChild(a)\n a.click()\n window.URL.revokeObjectURL(url)\n setLoading(false)\n })\n .catch(() => setLoading(false))\n }\n\n const handleUploadBot = event => {\n const file = event.target.files[0]\n\n if (\n file.type === 'application/zip' ||\n file.type === 'application/x-zip-compressed'\n ) {\n const formData = new FormData()\n formData.append('file', file)\n setFormData(formData)\n\n if (event.target.files.length) {\n setOpenUpdateBotModal(true)\n }\n } else {\n alertError('Please, choose .zip file')\n }\n }\n\n const handleUpdateBotModal = openUpdateBotModal => {\n setOpenUpdateBotModal(openUpdateBotModal)\n if (!openUpdateBotModal) {\n setFormData(null)\n }\n }\n\n return (\n <>\n
\n Content version\n Version name:\n
\n {activeBot.name} {activeBot?.contentVersion || '1.0'}\n \n {loading ? (\n \n ) : (\n \n )}\n \n
\n\n {activeBot?.updatedAt && (\n <>\n Last uploaded: \n
\n {moment(activeBot?.updatedAt)\n .utcOffset(activeBot.timezone * 60 + moment().utcOffset())\n .format('ddd DD MMM, YYYY hh:mm a')}\n
\n \n )}\n\n {activeBot?.updatedByName && (\n <>\n Uploaded by:\n
\n \n
{activeBot?.updatedByName}
\n
\n \n )}\n\n \n
\n\n handleUpdateBotModal(false)}\n />\n \n )\n}\n\nVersionBlock.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(VersionBlock))\n","export const styles = () => ({\n container: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n marginBottom: 32,\n },\n text: {\n color: 'rgba(53, 64, 82, 1)',\n fontSize: 18,\n '& > span': {\n cursor: 'pointer',\n margin: '0px 10px',\n },\n },\n userImage: {\n display: 'block',\n width: 32,\n objectFit: 'cover',\n objectPosition: 'top',\n borderRadius: '50%',\n overflow: 'hidden',\n height: 32,\n position: 'relative',\n marginRight: 8,\n border: '1px solid rgba(0, 0, 0, 0.1)',\n },\n userNameContainer: {\n display: 'flex',\n alignItems: 'center',\n marginTop: 8,\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\n\nimport Paragraph from '../../../../../uiKit/texts/Paragraph'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport { deleteBot } from '../../../../home/api/bots'\nimport Modal from '../../../../../uiKit/Modal'\n\nimport { styles } from './styles'\n\nconst DeleteBotModal = ({ classes, open, onClose, activeBot }) => {\n return (\n \n \n Are you sure you want to delete a chatbot\n {' ' + activeBot.name}? You\n won't be able to undo this action.\n \n
\n deleteBot(activeBot.id)} title=\"Delete\" />\n \n
\n
\n )\n}\n\nDeleteBotModal.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(DeleteBotModal))\n","export const styles = () => ({\n buttonsHolder: {\n display: 'flex',\n justifyContent: 'space-around',\n padding: '24px 70px',\n },\n})\n","import React, { useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport DeleteBotModal from '../DeleteBotModal/DeleteBotModal'\nimport Heading from '../../../../../uiKit/texts/Heading'\nimport Paragraph from '../../../../../uiKit/texts/Paragraph'\n\nimport { styles } from './styles'\n\nconst DeleteBotBlock = ({ classes }) => {\n const [openDeleteBotModal, setOpenDeleteBotModal] = useState(false)\n\n const handleOpenDeleteBotModal = openDeleteBotModal => {\n setOpenDeleteBotModal(openDeleteBotModal)\n }\n\n return (\n <>\n
\n Delete Bot\n \n Deleting a bot will destroy the agent with all corresponding data and\n cannot be undone.\n \n handleOpenDeleteBotModal(true)}>\n Delete\n
\n \n\n handleOpenDeleteBotModal(false)}\n />\n \n )\n}\n\nDeleteBotBlock.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(DeleteBotBlock)\n","export const styles = () => ({\n container: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n marginBottom: 32,\n },\n btnDelete: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid rgba(97, 101, 129, 0.5)',\n boxSizing: 'content-box',\n borderRadius: 10,\n color: 'rgba(97, 101, 129, 0.5)',\n padding: '8px 28px',\n width: 'max-content',\n fontSize: 14,\n lineHeight: 'normal',\n fontFamily: 'Lato',\n }\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport NameBlock from '../NameBlock/NameBlock'\nimport AttributeBlock from '../AttributeBlock/AttributeBlock'\nimport VersionBlock from '../VersionBlock/VersionBlock'\nimport DeleteBotBlock from '../DeleteBotBlock/DeleteBotBlock'\n\nimport { styles } from './styles'\n\nconst General = ({ classes }) => {\n return (\n
\n \n \n \n \n
\n )\n}\n\nGeneral.propTypes = {\n classes: PropTypes.object,\n}\n\nexport default withStyles(styles)(General)\n","export const styles = () => ({})\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport Select from 'react-select'\nimport { Checkbox, FormControlLabel } from '@material-ui/core'\n\nclass HoursSpecification extends React.Component {\n render() {\n const { classes, days, type, label, timeList } = this.props\n return (\n
\n this.props.handleSet(type)}\n value={this.props.value}\n checked={this.props.value}\n color=\"primary\"\n />\n }\n label={label.charAt(0).toUpperCase() + label.slice(1)}\n />\n from\n
\n \n time.value ===\n (days && days.startTime != null ? days.startTime : '09:00'),\n )}\n name=\"selected-state\"\n onChange={event =>\n this.props.onChange(event.value, 'startTime', label)\n }\n searchable\n />\n
\n to\n
\n \n time.value ===\n (days && days.endTime != null ? days.endTime : '18:00'),\n )}\n onChange={event =>\n this.props.onChange(event.value, 'endTime', label)\n }\n searchable\n />\n
\n
\n )\n }\n}\n\nHoursSpecification.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(connect(mapStateToProps)(HoursSpecification))\n","export const tomezoneList = [\n { value: -12, label: '(UTC-12:00) Baker Island, Howland Island' },\n { value: -11, label: '(UTC-11:00) Niue, American Samoa' },\n { value: -10, label: '(UTC-10:00) Papeete, Honolulu' },\n { value: -9, label: '(UTC-09:00) French Polynesia' },\n { value: -8, label: '(UTC-08:00) Los Angeles, Vancouver, Tijuana' },\n { value: -7, label: '(UTC-07:00) Phoenix, Calgary, Ciudad Juarez' },\n { value: -6, label: '(UTC-06:00) Chicago, Winnipeg, Mexico City' },\n { value: -5, label: '(UTC-05:00) New York, Toronto, Havana' },\n { value: -4, label: '(UTC-04:00) Santiago, Halifax, Santo Domingo' },\n { value: -3, label: '(UTC-03:00) Buenos Aires, Montevideo, Sao Paulo' },\n { value: -2, label: '(UTC-02:00) South Sandwich Islands' },\n { value: -1, label: '(UTC-01:00) Cape Verde, Azores islands' },\n { value: 0, label: '(UTC+00:00) London, Dublin, Lisbon' },\n { value: 1, label: '(UTC+01:00) Berlin, Paris, Rome' },\n { value: 2, label: '(UTC+02:00) Helsinki, Cairo, Jerusalem' },\n { value: 3, label: '(UTC+03:00) Istanbul, Moscow, Baghdad' },\n { value: 4, label: '(UTC+04:00) Baku, Dubai, Samara' },\n { value: 5, label: '(UTC+05:00) Karachi, Tashkent, Yekaterinburg' },\n { value: 6, label: '(UTC+06:00) Almaty, Dhaka, Omsk' },\n { value: 7, label: '(UTC+07:00) Jakarta, Bangkok, Hanoi' },\n { value: 8, label: '(UTC+08:00) Beijing, Singapore, Kuala Lumpur' },\n { value: 9, label: '(UTC+09:00) Seoul, Tokyo, Yakutsk' },\n { value: 10, label: '(UTC+10:00) Port Moresby, Sydney, Vladivostok' },\n { value: 11, label: '(UTC+11:00) Noumea' },\n { value: 12, label: '(UTC+12:00) Auckland, Suva' },\n { value: 13, label: '(UTC+13:00) Apia' },\n { value: 14, label: '(UTC+14:00) Line Islands' },\n]\nexport const timeList = [\n { value: '00:00', label: '12:00 AM' },\n { value: '00:30', label: '12:30 AM' },\n { value: '01:00', label: '1:00 AM' },\n { value: '01:30', label: '1:30 AM' },\n { value: '02:00', label: '2:00 AM' },\n { value: '02:30', label: '2:30 AM' },\n { value: '03:00', label: '3:00 AM' },\n { value: '03:30', label: '3:30 AM' },\n { value: '04:00', label: '4:00 AM' },\n { value: '04:30', label: '4:30 AM' },\n { value: '05:00', label: '5:00 AM' },\n { value: '05:30', label: '5:30 AM' },\n { value: '06:00', label: '6:00 AM' },\n { value: '06:30', label: '6:30 AM' },\n { value: '07:00', label: '7:00 AM' },\n { value: '07:30', label: '7:30 AM' },\n { value: '08:00', label: '8:00 AM' },\n { value: '08:30', label: '8:30 AM' },\n { value: '09:00', label: '9:00 AM' },\n { value: '09:30', label: '9:30 AM' },\n { value: '10:00', label: '10:00 AM' },\n { value: '10:30', label: '10:30 AM' },\n { value: '11:00', label: '11:00 AM' },\n { value: '11:30', label: '11:30 AM' },\n { value: '12:00', label: '12:00 PM' },\n { value: '12:30', label: '12:30 PM' },\n { value: '13:00', label: '01:00 PM' },\n { value: '13:30', label: '01:30 PM' },\n { value: '14:00', label: '02:00 PM' },\n { value: '14:30', label: '02:30 PM' },\n { value: '15:00', label: '03:00 PM' },\n { value: '15:30', label: '03:30 PM' },\n { value: '16:00', label: '04:00 PM' },\n { value: '16:30', label: '04:30 PM' },\n { value: '17:00', label: '05:00 PM' },\n { value: '17:30', label: '05:30 PM' },\n { value: '18:00', label: '06:00 PM' },\n { value: '18:30', label: '06:30 PM' },\n { value: '19:00', label: '07:00 PM' },\n { value: '19:30', label: '07:30 PM' },\n { value: '20:00', label: '08:00 PM' },\n { value: '20:30', label: '08:30 PM' },\n { value: '21:00', label: '09:00 PM' },\n { value: '21:30', label: '09:30 PM' },\n { value: '22:00', label: '10:00 PM' },\n { value: '22:30', label: '10:30 PM' },\n { value: '23:00', label: '11:00 PM' },\n { value: '23:30', label: '11:30 PM' },\n]\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport Select from 'react-select'\nimport Radio from '@material-ui/core/Radio'\nimport RadioGroup from '@material-ui/core/RadioGroup'\nimport { FormControlLabel } from '@material-ui/core'\nimport { updateBot } from '../../../home/api/bots'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport { saveTeamHours } from '../../api/settings'\nimport img from './workingHours.png'\nimport HoursSpecification from './HoursSpecification'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\nimport { isObjectEmpty } from '../../../../helpers/isObjectEmpty'\nimport Heading from '../../../../uiKit/texts/Heading'\nimport { timeList, tomezoneList } from './hoursOptions'\nimport { alertError } from '../../../../api'\n\nconst styles = theme => ({\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n },\n grayParagraph: {\n fontFamily: 'Lato',\n fontSize: 12,\n color: '#B0B2C0',\n },\n block: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n },\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n width: '400px',\n },\n btn: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid #5A98F7',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: '#5A98F7',\n padding: '8px 16px',\n width: 'max-content',\n },\n btnDelete: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid rgba(97, 101, 129, 0.5)',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: 'rgba(97, 101, 129, 0.5)',\n padding: '8px 16px',\n width: 'max-content',\n },\n modal: {\n padding: '40px 160px',\n margin: '15% auto' /* 15% from the top and centered */,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n overflowY: 'auto',\n backgroundColor: 'white',\n width: 640,\n },\n dateContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n container: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n rootRadio: {\n marginLeft: 13,\n color: theme.palette.primary.iconsGray,\n fontSize: 14,\n fontFamily: 'Lato',\n '&$checked': {\n color: theme.palette.primary.main,\n },\n },\n checked: {},\n '@global': {\n '.rootRadio label': {\n margin: '-4px 16px -4px -14px',\n },\n '.rootRadio span[class*=\"label\"]': {\n marginLeft: 8,\n },\n '.rootRadio span': {\n fontSize: 14,\n fontFamily: 'Lato',\n },\n },\n})\n\nclass Hours extends React.Component {\n state = {\n open: false,\n bot: this.props.activeBot,\n value: false,\n selectValue: this.props.activeBot.timezone,\n supportSettings: {\n weekdays: {\n startTime: '09:00',\n },\n weekends: {},\n enabled: false,\n },\n weekdaysValue: true,\n weekendsValue: false,\n showLoader: true,\n }\n handleOpen = () => {\n this.setState({ open: true })\n }\n handleClose = () => {\n this.setState({ open: false })\n }\n\n static getDerivedStateFromProps(props, state) {\n if (state.showLoader && props.activeBot.supportSettings) {\n return {\n supportSettings: JSON.parse(\n JSON.stringify(props.activeBot.supportSettings),\n ),\n weekdaysValue: !!props.activeBot.supportSettings.weekdays,\n weekendsValue: !!props.activeBot.supportSettings.weekends,\n value: props.activeBot.supportSettings.enabled,\n selectedOption: props.activeBot.timezone,\n showLoader: false,\n }\n }\n\n if (\n state.showLoader &&\n !isObjectEmpty(props.activeBot) &&\n !props.activeBot.supportSettings\n ) {\n return {\n showLoader: false,\n selectedOption: props.activeBot.timezone,\n }\n }\n return null\n }\n\n handleChange(value, name) {\n const bot = JSON.parse(JSON.stringify(this.state.bot))\n bot[name] = value\n this.setState({\n bot,\n })\n }\n\n handleSet(name) {\n if (\n (name === 'weekdaysValue' && this.state.weekendsValue) ||\n (name === 'weekendsValue' && this.state.weekdaysValue) ||\n (!this.state.weekendsValue && !this.state.weekdaysValue)\n ) {\n this.setState({\n [name]: !this.state[name],\n })\n }\n }\n\n updateTimezone(value) {\n const bot = JSON.parse(JSON.stringify(this.props.activeBot))\n bot.timezone = value\n updateBot(bot)\n }\n\n updateTime(value, type, days) {\n const supportSettings = JSON.parse(\n JSON.stringify(this.state.supportSettings),\n )\n if (supportSettings[days] == null) {\n supportSettings[days] = {}\n }\n supportSettings[days][type] = value\n this.setState({\n supportSettings,\n })\n }\n\n saveHours() {\n const supportSettings = this.state.supportSettings\n if (!this.state.weekdaysValue) {\n supportSettings.weekdays = null\n } else {\n supportSettings.weekdays = this.hoursConverter(supportSettings.weekdays)\n\n if (\n supportSettings.weekdays.startTime > supportSettings.weekdays.endTime\n ) {\n alertError(\n 'Invalid weekdays hours. \"From time\" should be less than \"to time\".',\n )\n return\n }\n }\n if (!this.state.weekendsValue) {\n supportSettings.weekends = null\n } else {\n supportSettings.weekends = this.hoursConverter(supportSettings.weekends)\n\n if (\n supportSettings.weekends.startTime > supportSettings.weekends.endTime\n ) {\n alertError(\n 'Invalid weekends hours. \"From time\" should be less than \"to time\".',\n )\n return\n }\n }\n supportSettings.enabled = this.state.value\n saveTeamHours(this.props.activeBot.id, supportSettings)\n const bot = JSON.parse(JSON.stringify(this.props.activeBot))\n bot.supportSettings = supportSettings\n updateBot(bot)\n }\n\n hoursConverter = date => {\n let dateCopy = Object.assign({}, date)\n if (date == null) {\n dateCopy = {}\n }\n if (dateCopy.startTime == null) {\n dateCopy.startTime = '09:00'\n }\n if (dateCopy.endTime == null) {\n dateCopy.endTime = '18:00'\n }\n\n return dateCopy\n }\n\n render() {\n const { classes } = this.props\n const radio = (\n \n )\n return (\n
\n {this.state.showLoader ? (\n \n \n
\n ) : (\n
\n \n
\n Team Hours\n

\n Set online working hours for your team of customer supports\n

\n \n Choose a preferable timezone\n

\n
\n opt.value === this.props.activeBot.timezone,\n )}\n name=\"selected-state\"\n onChange={event => this.updateTimezone(event.value)}\n searchable\n />\n
\n
\n \n Schedule working hours\n

\n
\n {\n const values = e.target.value === 'true'\n this.setState({\n value: values,\n weekdaysValue: !this.props.activeBot.supportSettings\n .enabled\n ? true\n : !!this.props.activeBot.supportSettings.weekdays,\n })\n }}>\n \n \n \n }\n />\n
\n {this.state.value && this.state.supportSettings && (\n
\n this.handleSet(value)}\n value={this.state.weekdaysValue}\n type=\"weekdaysValue\"\n label=\"weekdays\"\n onChange={(value, type, days) =>\n this.updateTime(value, type, days)\n }\n />\n this.handleSet(value)}\n value={this.state.weekendsValue}\n type=\"weekendsValue\"\n label=\"weekends\"\n onChange={(value, type, days) =>\n this.updateTime(value, type, days)\n }\n />\n
\n )}\n this.saveHours()}\n title=\"Save\"\n styles={{ marginTop: 8 }}\n />\n
\n
\n

\n Preview of Offline Customer Support Mode\n

\n

\n This flow will be sent to users in case of none of customer\n supports are online. If you want to edit it, go to Flows\n section.\n

\n {/* todo link for flow with underline */}\n \n
\n \n )}\n \n )\n }\n}\n\nHours.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Hours)),\n)\n","export const isObjectEmpty = obj => Object.keys(obj).length === 0\n","/**\n * Created by dshevchenko on 15.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport {\n Checkbox,\n FormControlLabel,\n Popover,\n withStyles,\n} from '@material-ui/core'\nimport States from '../../../flowBuilder/components/States'\nimport InputHolder from '../../../../uiKit/inputs/InputHolder'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\n\nconst styles = theme => ({\n levelItem: {\n padding: 24,\n display: 'flex',\n justifyContent: 'space-between',\n borderTop: '1px solid #EBEBEF',\n },\n title: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#3A3F62',\n },\n description: {\n fontFamily: 'Lato',\n fontSize: 10,\n color: '#B0B2C0',\n marginBottom: 0,\n marginTop: 5,\n },\n submenu: {\n fontSize: 12,\n fontFamily: 'Lato',\n color: '#3A3F62',\n marginBottom: 0,\n marginTop: 2,\n },\n tab: {\n flexBasis: '33%',\n fontSize: 14,\n fontFamily: 'Lato',\n color: '#616581',\n textAlign: 'center',\n padding: '12px 0',\n cursor: 'pointer',\n },\n activeTab: {\n flexBasis: '33%',\n fontSize: 14,\n fontFamily: 'Lato',\n color: '#1658F3',\n textAlign: 'center',\n padding: '12px 0',\n cursor: 'pointer',\n },\n tabs: {\n display: 'flex',\n justifyContent: 'space-around',\n borderBottom: '1px solid #EBEBEF',\n },\n popover: {\n width: 300,\n },\n tabContainer: {\n padding: '24px 22px',\n borderBottom: '1px dashed #EBEBEF',\n },\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n fontWeight: 300,\n },\n})\n\nclass CustomPopover extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n open: false,\n menuItem: null,\n }\n }\n\n functionValidURL = str => {\n try {\n new URL(str)\n return true\n } catch (_) {\n return false\n }\n }\n\n toggle = value => {\n this.setState({\n open: value,\n })\n }\n\n submitItem = () => {\n const menuItem = this.state.menuItem\n menuItem.titles = this.props.menuItem.titles\n if (menuItem.type === 'web_url' && !this.functionValidURL(menuItem.url)) {\n this.setState({\n invalidUrl: true,\n })\n } else {\n if (this.state.invalidUrl) {\n this.setState({\n invalidUrl: false,\n })\n }\n switch (menuItem.type) {\n case 'web_url': {\n delete menuItem.payload\n delete menuItem.callToActions\n break\n }\n case 'postback': {\n delete menuItem.url\n delete menuItem.callToActions\n break\n }\n }\n this.props.onClose()\n this.props.onUpdate(menuItem)\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (state.menuItem === null && props.menuItem !== null) {\n return {\n menuItem: props.menuItem,\n }\n }\n }\n\n handleChange = (name, value) => {\n const item = JSON.parse(JSON.stringify(this.state.menuItem))\n item[name] = value\n this.setState({\n menuItem: item,\n })\n }\n\n render() {\n const { classes, open } = this.props\n const { menuItem, invalidUrl } = this.state\n return (\n {\n this.props.onClose()\n }}\n anchorEl={this.props.anchorEl}\n anchorReference=\"anchorEl\"\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n PaperProps={{\n style: {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.222685)',\n borderRadius: 10,\n overflow: 'visible',\n },\n }}>\n
\n
\n {\n this.handleChange('title', event.target.value)\n }}\n handleKeyPress={e => {\n if (e.charCode === 13) {\n this.submitItem()\n }\n }}\n maxLength={30}\n />\n
\n
\n
\n
\n this.handleChange('type', 'postback')}>\n Postback\n
\n this.handleChange('type', 'web_url')}>\n URL\n
\n
\n {menuItem.type === 'postback' && (\n
\n this.handleChange('payload', value)}\n value={menuItem.payload}\n />\n
\n )}\n {menuItem.type === 'web_url' && (\n
\n \n this.handleChange('url', event.target.value)\n }\n handleKeyPress={event =>\n this.handleChange('url', event.target.value)\n }\n maxLength={90}\n />\n {invalidUrl && (\n

\n URL is invalid\n

\n )}\n {\n this.handleChange(\n 'enableMessengerExtensions',\n !menuItem.enableMessengerExtensions,\n )\n }}\n value=\"messengerExtensions\"\n color=\"primary\"\n />\n }\n label=\"Open in Messenger\"\n />\n
\n )}\n
\n \n
\n
\n \n \n \n )\n }\n}\n\nCustomPopover.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(CustomPopover),\n)\n","/**\n * Created by dshevchenko on 15.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { IconButton, withStyles } from '@material-ui/core'\nimport CustomPopover from './CustomPopover'\nimport { TrashIcon } from '../../../../uiKit/icons/Icons'\n\nconst styles = theme => ({\n levelItem: {\n padding: 24,\n display: 'flex',\n justifyContent: 'space-between',\n borderTop: '1px solid #EBEBEF',\n cursor: 'pointer',\n position: 'relative',\n },\n title: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#3A3F62',\n marginRight: 8,\n },\n submenu: {\n fontSize: 12,\n fontFamily: 'Lato',\n color: '#3A3F62',\n marginBottom: 0,\n marginTop: 2,\n },\n tab: {\n width: 100,\n fontSize: 14,\n fontFamily: 'Lato',\n color: '#1658F3',\n textAlign: 'center',\n padding: '12px 0',\n },\n tabs: {\n display: 'flex',\n },\n popover: {\n width: 300,\n },\n tabContainer: {\n padding: '24px 16px',\n },\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n fontWeight: 300,\n },\n description: {\n fontFamily: 'Lato',\n fontSize: 10,\n color: '#B0B2C0',\n margin: '5px 0 0',\n overflow: 'hidden',\n },\n '@global': {\n '.editMenu': {\n color: '#3A3F62',\n },\n '.editMenu svg path': {\n stroke: '#3A3F62',\n },\n '.editMenu:hover': {\n color: '#1658F3',\n },\n '.editMenu:hover svg path': {\n stroke: '#1658F3',\n },\n '.item .deleteIcon': {\n display: 'none',\n },\n '.item:hover .deleteIcon': {\n display: 'block',\n position: 'absolute',\n right: -20,\n top: 15,\n },\n },\n})\n\nclass MenuItem extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n open: false,\n menuItem: null,\n }\n }\n\n toggle = value => {\n this.setState({\n open: value,\n })\n }\n\n static getDerivedStateFromProps(props, state) {\n if (state.menuItem === null && props.menuItem !== null) {\n return {\n menuItem: props.menuItem,\n open: props.defaultOpen === props.index,\n }\n }\n if (props.defaultOpen === props.index && !state.open) {\n props.setDefault()\n return {\n open: props.defaultOpen === props.index,\n }\n }\n return null\n }\n\n function(obj) {\n let size = 0\n let key\n for (key in obj) {\n if (obj.hasOwnProperty(key)) size++\n }\n return size\n }\n\n render() {\n const { classes, index, menuItem } = this.props\n const { open } = this.state\n return (\n
\n {\n this.itemRef = node\n }}\n onClick={() => {\n this.toggle(true)\n }}>\n
{menuItem.title}
\n {menuItem.type === 'postback' && (\n

{menuItem.payload}

\n )}\n {menuItem.type === 'web_url' && (\n

{menuItem.url}

\n )}\n
\n {\n this.props.deleteItem(index)\n e.stopPropagation()\n }}>\n \n \n
\n
\n {\n this.toggle(false)\n }}\n menuItem={menuItem}\n anchorEl={this.itemRef}\n handleChange={(name, value) => this.handleChange(name, value)}\n onUpdate={menuItem => this.props.onUpdate(menuItem)}\n />\n {/* //TODO check if title has changed */}\n \n )\n }\n}\n\nMenuItem.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(MenuItem),\n)\n","/**\n * Created by dshevchenko on 15.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport MenuItem from './MenuItem'\n\nconst styles = theme => ({\n level: {\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n width: 300,\n height: 'max-content',\n },\n levelHide: {\n width: 300,\n },\n heading: {\n width: '100%',\n padding: '16px 0',\n textAlign: 'center',\n fontWeight: 'bold',\n lineHeight: 'normal',\n fontSize: 14,\n color: '#3A3F62',\n fontFamily: 'Lato',\n },\n addSubmenu: {\n padding: 24,\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#B0B2C0',\n cursor: 'pointer',\n borderTop: '1px dashed #EBEBEF',\n },\n icon: {\n position: 'absolute',\n top: 10,\n left: 24,\n cursor: 'pointer',\n },\n '@global': {\n '.addMenu:hover': {\n color: '#616581',\n },\n },\n})\n\nclass Level extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n open: null,\n }\n }\n\n updateItem = (item, index) => {\n this.props.updateMenu(item, index)\n }\n\n addItem() {\n this.props.addMenuitem({\n callToActions: [],\n enableMessengerExtensions: false,\n payload: 'Welcome message',\n title: 'Menu Item',\n type: 'postback',\n url: null,\n webViewHeightRatio: null,\n })\n\n setTimeout(() => {\n this.setState({\n open: this.props.item.callToActions.length - 1,\n })\n }, 300)\n }\n\n setDefault = () => {\n this.setState({\n open: null,\n })\n }\n\n render() {\n const { classes, item } = this.props\n const { open } = this.state\n return (\n
\n
\n {item == null ? (\n
\n ) : (\n
\n
{'Menu'}
\n {item.callToActions &&\n item.callToActions.map((callToAction, index) => (\n {\n this.updateItem(item, index)\n }}\n setDefault={this.setDefault}\n index={index}\n deleteItem={index => this.props.deleteItem(index)}\n defaultOpen={open}\n />\n ))}\n {item.callToActions !== undefined && (\n this.addItem()}>\n + Click here to add a menu item\n
\n )}\n
\n )}\n
\n
\n )\n }\n}\n\nLevel.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Level)),\n)\n","/**\n * Created by dshevchenko on 15.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport Level from './Level'\nimport {\n updateBotPersistentMenu,\n getBotPersistentMenu,\n} from '../../../home/api/bots'\nimport { setActiveBot } from '../../../home/actions/activeBot'\nimport { getFlows } from '../../../flowBuilder/api/flow'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\nimport Heading from '../../../../uiKit/texts/Heading'\nimport { getBotLanguages } from '../../api/settings'\nimport Select from 'react-select'\n\nconst styles = theme => ({\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n },\n headerSelectorAndButton: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'row',\n minWidth: '40%',\n height: '100%',\n },\n containerLevels: {\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n },\n})\n\nclass PersistentMenu extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n persistentMenu: null,\n selectedLanguageOption: {\n value: 'EN',\n label: 'English',\n },\n }\n }\n\n componentDidMount() {\n //TODO change get Menu depend's to messenger configs\n if (this.props.flows.length === 0) {\n getFlows(this.props.match.params.botId)\n }\n getBotPersistentMenu(\n this.props.activeBot.id,\n this.state.selectedLanguageOption.value,\n persistentMenu => {\n this.updatePersistentMenu(persistentMenu)\n this.setLanguageOptions(this.props.match.params.botId)\n },\n )\n }\n\n updatePersistentMenu = persistentMenu => {\n const bot = JSON.parse(JSON.stringify(this.props.activeBot))\n bot.persistentMenu = persistentMenu\n this.setState(\n {\n persistentMenu: persistentMenu,\n },\n () => {\n setActiveBot(bot)\n },\n )\n }\n\n setLanguageOptions = botId => {\n getBotLanguages(this.props.activeBot.id).then(botLanguages => {\n if (botLanguages.defaultLanguage) {\n const { defaultLanguage, activeLanguages } = botLanguages\n const selectedOption = {\n label: defaultLanguage.fullName,\n value: defaultLanguage.shortName,\n }\n\n const languageOptions = activeLanguages.map(language => {\n return {\n label: language.fullName,\n value: language.shortName,\n }\n })\n\n this.setState({\n languageOptions: languageOptions,\n selectedLanguageOption: selectedOption,\n })\n }\n })\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.activeBot.persistentMenu && state.persistentMenu === null) {\n return {\n persistentMenu: JSON.parse(\n JSON.stringify(props.activeBot.persistentMenu),\n ),\n }\n }\n if (!props.activeBot.persistentMenu && state.persistentMenu === null) {\n return {\n persistentMenu: {\n callToActions: [],\n },\n }\n }\n return null\n }\n\n handleUpdatePersistentMenu = value => {\n this.setState({\n persistentMenu: value,\n })\n }\n\n updateMenu = (item, index) => {\n const menu = JSON.parse(JSON.stringify(this.state.persistentMenu))\n menu.callToActions[index] = item\n this.handleUpdatePersistentMenu(menu)\n }\n\n deleteItem = index => {\n const menu = JSON.parse(JSON.stringify(this.state.persistentMenu))\n menu.callToActions.splice(index, 1)\n this.handleUpdatePersistentMenu(menu)\n }\n\n addMenuItem = item => {\n const menu = JSON.parse(JSON.stringify(this.state.persistentMenu))\n menu.callToActions.push(item)\n this.handleUpdatePersistentMenu(menu)\n }\n\n onUpdatePersistentMenu = () => {\n const { persistentMenu } = this.state\n persistentMenu.locale = 'default'\n updateBotPersistentMenu(\n this.props.match.params.botId,\n this.state.selectedLanguageOption.value,\n persistentMenu,\n )\n }\n\n handleSelectedLanguage = languageOption => {\n this.setState(\n {\n selectedLanguageOption: languageOption,\n },\n () => {\n getBotPersistentMenu(\n this.props.activeBot.id,\n this.state.selectedLanguageOption.value,\n this.updatePersistentMenu,\n )\n },\n )\n }\n\n render() {\n const { classes } = this.props\n const { persistentMenu } = this.state\n return (\n
\n
\n
\n Main Menu\n

\n The main menu allows users to access the core functionality of\n your bot (e.g. Customer Support, Help, FAQ and others).\n

\n
\n
\n {persistentMenu != null ? (\n
\n this.addMenuItem(item)}\n updateMenu={(item, index) => this.updateMenu(item, index)}\n deleteItem={index => this.deleteItem(index)}\n />\n
\n ) : (\n \n \n
\n )}\n\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n )\n }\n}\n\nPersistentMenu.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n flows: state.flows,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(PersistentMenu),\n ),\n)\n","/* eslint-disable */\nimport React from 'react'\n\nclass FacebookIcon extends React.Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default FacebookIcon\n","/**\n * Created by Admin on 20.03.2018.\n */\nimport React from 'react'\nimport IconButton from '@material-ui/core/IconButton'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport Menu from '@material-ui/core/Menu'\nimport MoreVertIcon from '@material-ui/icons/MoreVert'\n\nconst ITEM_HEIGHT = 48\n\nclass ParamsList extends React.Component {\n state = {\n anchorEl: null,\n }\n\n handleClick = event => {\n this.setState({ anchorEl: event.currentTarget })\n }\n\n handleClose(option) {\n this.props.addParam('' + option + '}}')\n this.setState({ anchorEl: null })\n }\n\n getTopPosition() {\n return -427 + this.props.pos.top + this.props.pos.height / 2 + 'px'\n }\n\n getLeftPosition() {\n return -16 + this.props.pos.left + this.props.pos.width / 2 + 'px'\n }\n\n render() {\n const { anchorEl } = this.state\n\n return (\n
\n \n \n \n this.props.onClose()}\n PaperProps={{\n style: {\n maxHeight: ITEM_HEIGHT * 4.5,\n width: 200,\n },\n }}\n style={{ top: this.getTopPosition(), left: this.getLeftPosition() }}>\n {this.props.options.map(option => (\n this.handleClose(option.name)}>\n {option.name}\n \n ))}\n \n
\n )\n }\n}\n\nexport default ParamsList\n","/**\n * Created by Admin on 19.03.2018.\n */\nimport React from 'react'\n\nimport './Params.css'\nimport ParamsList from './ParamsList'\nimport { connect } from 'react-redux'\n\nclass Params extends React.Component {\n state = {\n show: false,\n }\n\n componentDidMount() {\n const ua = window.navigator.userAgent.toLowerCase()\n const isIE = !!ua.match(/msie|trident\\/7|edge/)\n const isWinPhone = ua.indexOf('windows phone') !== -1\n const isIOS = !isWinPhone && !!ua.match(/ipad|iphone|ipod/)\n\n this.setState({ isIE: isIE })\n\n if (isIOS) {\n this.highlights.css({\n 'padding-left': '+=3px',\n 'padding-right': '+=3px',\n })\n }\n this.highlights.innerHTML = this.applyHighlights(this.textarea.value)\n }\n\n applyHighlights(text) {\n text = text\n .replace(/\\n$/g, '\\n\\n')\n .replace(/{{[^{]*?}}/g, '$&')\n if (this.state.isIE) {\n text = text.replace(/ /g, ' ')\n }\n return text\n }\n\n handleScroll(elem) {\n this.backdrop.scrollTop = elem.scrollTop\n this.backdrop.scrollLeft = elem.scrollLeft\n }\n\n addParam(param) {\n const text = '' + this.props.value\n this.props.onChange(\n text.slice(0, this.state.pos) + param + text.slice(this.state.pos),\n )\n this.setState({ show: false })\n }\n\n componentDidUpdate() {\n this.highlights.innerHTML = this.applyHighlights(this.textarea.value)\n }\n\n render() {\n return (\n
\n {/**/}\n \n {\n this.backdrop = div\n }}>\n {\n this.highlights = div\n }}\n />\n
\n this.props.onChange(event.target.value)}\n onScroll={event => this.handleScroll(event.target)}\n ref={textarea => {\n this.textarea = textarea\n }}\n />\n {this.props.params != null && (\n this.addParam(param)}\n show={this.state.show}\n onClose={() => this.setState({ show: false })}\n pos={this.textarea ? this.textarea.getBoundingClientRect() : {}}\n />\n )}\n \n \n )\n }\n}\n\nconst mapStateToProps = state => ({})\n\nexport default connect(mapStateToProps)(Params)\n","/**\n * Created by Admin on 13.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport Params from '../../../../../uiKit/inputs/Params'\n\nconst styles = theme => ({\n paramList: {\n display: 'flex',\n margin: '8px 0 16px',\n },\n param: {\n border: '1px solid #EBEBEF',\n boxSizing: 'border-box',\n borderRadius: 10,\n padding: '8px 14px',\n marginRight: 8,\n fontSize: 14,\n },\n})\n\nconst params = [\n {\n id: -1,\n name: 'user_first_name',\n },\n {\n id: -2,\n name: 'user_last_name',\n },\n {\n id: -3,\n name: 'user_full_name',\n },\n]\n\nconst GreetingText = ({ classes, onChange, text, activeBot }) => (\n
\n
\n {params.map(param => (\n
\n {'{{' + param.name + '}}'}\n
\n ))}\n
\n onChange(value)}\n value={text}\n placeholder=\"Hello, this is a basic example of greeting text of your bot which will be displayed here.\"\n ifGreeting={true}\n bot={activeBot}\n params={params}\n />\n
\n)\n\nGreetingText.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(GreetingText),\n ),\n)\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { updateGreetingText } from '../../../../home/api/bots'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport GreetingText from './GreetingText'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport Paragraph from '../../../../../uiKit/texts/Paragraph'\nimport { setActiveBot } from '../../../../home/actions/activeBot'\n\nconst styles = theme => ({\n container: {\n display: 'flex',\n flexDirection: 'row',\n borderTop: '1px solid #EBEBEB',\n paddingTop: 24,\n justifyContent: 'space-between',\n },\n content: {},\n heading: {\n fontSize: 16,\n color: theme.palette.text.header,\n marginBottom: 8,\n fontFamily: 'Lato, sans-serif',\n lineHeight: 1,\n },\n paragraph: {\n fontFamily: 'Lato, sans-serif',\n fontSize: 14,\n color: theme.palette.primary.text,\n lineHeight: '18px',\n },\n block: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n },\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: '#1658F3',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n width: '400px',\n },\n btn: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid #5A98F7',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: '#5A98F7',\n padding: '8px 16px',\n width: 'max-content',\n },\n btnDelete: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid rgba(97, 101, 129, 0.5)',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: 'rgba(97, 101, 129, 0.5)',\n padding: '8px 16px',\n width: 'max-content',\n },\n modal: {\n padding: '40px 160px',\n margin: '15% auto' /* 15% from the top and centered */,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n overflowY: 'auto',\n backgroundColor: 'white',\n width: 640,\n },\n img: {\n width: '100%',\n maxWidth: '100%',\n position: 'relative',\n top: 50,\n },\n imgHolder: {\n flexBasis: '30%',\n display: 'flex',\n justifyContent: 'flex-end',\n },\n})\n\nclass Greeting extends React.Component {\n state = {\n changed: false,\n }\n handleOpen = () => this.setState({ open: true })\n handleClose = () => this.setState({ open: false })\n handleChangeGreetingText = value => {\n const bot = JSON.parse(JSON.stringify(this.state.bot))\n bot.greetingText = value\n this.setState({ bot, changed: true })\n }\n handleUpdate = () => {\n const { bot } = this.state\n const { activeBot } = this.props\n\n updateGreetingText(bot.id, bot.greetingText, () => {\n this.setState({ changed: false })\n activeBot.greetingText = bot.greetingText\n setActiveBot(bot)\n })\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (!prevState.changed)\n return {\n bot: nextProps.activeBot,\n }\n return null\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n
\n
\n

Set the Greeting Text

\n \n The greeting text of your bot's Messenger profile allows you to\n specify the message people will see on the welcome screen of your\n bot. You can personalize the greeting text using the person's\n name. You can use the following template strings:\n \n
\n {\n this.handleChangeGreetingText(value)\n }}\n />\n \n
\n
\n \n {/*\"\"*/}\n
\n
\n )\n }\n}\n\nGreeting.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(Greeting),\n)\n","import { saveFacebookPages } from '../actions/settingsPages'\nimport {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL } from '../../../configs'\n\nexport function getFacebookPages(botId, accessToken, callback, token) {\n fetch(\n // eslint-disable-next-line max-len\n `https://graph.facebook.com/v3.1/me?access_token=${accessToken}&fields=accounts{id,access_token,name,picture{url},is_webhooks_subscribed}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(token),\n method: 'GET',\n },\n )\n .then(response => {\n if (response.ok)\n return response.redirected\n ? (window.location.href = response.url)\n : response.json()\n })\n .then(json => {\n saveFacebookPages(json.accounts.data)\n })\n .then(() => {\n if (callback) callback()\n })\n .catch(function(error) {\n alertError('Pages displaying error')\n })\n}\n\nexport function exchangeShortLiveUserTokenToLongLive(accessToken) {\n return fetch(\n `${BASE_URL}/facebook/exchange/token?accessToken=${accessToken}`,\n {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n },\n ).then(response => {\n if (response.ok)\n return response.redirected\n ? (window.location.href = response.url)\n : response.json()\n })\n}\n\nexport function subscribePage(\n botId,\n id,\n accessToken,\n pageName,\n callback,\n offLoader,\n token,\n) {\n fetch(`${BASE_URL}/facebook/${botId}/subscribePage`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(token),\n method: 'POST',\n body: JSON.stringify({ id, accessToken, pageName }),\n }).then(response => {\n if (response.ok) callback(false)\n else if (response.status === 500) {\n response.json().then(text => alertError(text.message))\n offLoader()\n }\n return response.redirected\n ? (window.location.href = response.url)\n : response\n })\n}\n\nexport function unsubscribePage(\n botId,\n id,\n accessToken,\n callback,\n offLoader,\n token,\n) {\n fetch(`${BASE_URL}/facebook/${botId}/unsubscribePage`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(token),\n method: 'POST',\n body: JSON.stringify({ id, accessToken }),\n }).then(response => {\n if (response.ok) callback(true)\n else if (response.status === 500) {\n offLoader()\n response.json().then(text => alertError(text.message))\n }\n return response.redirected\n ? (window.location.href = response.url)\n : response\n })\n}\n\nexport function getFacebookAppId() {\n return fetch(`${BASE_URL}/configs/facebook`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n }).then(response => logoutOnRequestOrResponseJson(response))\n}\n","import { store } from '../../../index'\n\nexport const SAVE_FACEBOOK_PAGES = 'SAVE_FACEBOOK_PAGES'\n\nexport const saveFacebookPages = facebookPages => {\n store.dispatch({\n type: SAVE_FACEBOOK_PAGES,\n facebookPages,\n })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { withStyles } from '@material-ui/core'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport {\n getFacebookPages,\n subscribePage,\n unsubscribePage,\n} from '../../../api/facebook'\nimport { alertSuccess } from '../../../../../api'\nimport { setActiveBot } from '../../../../home/actions/activeBot'\nimport LoaderSmall from '../../../../../uiKit/loaders/loaderSmall'\n//TODO: pagination\n// import Pagination from \"../../nlp/Pagination\";\n\nconst styles = theme => ({\n title: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n color: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n rootRadio: {\n marginLeft: 13,\n color: theme.palette.primary.iconsGray,\n fontSize: 14,\n fontFamily: 'Lato',\n '&$checked': {\n color: theme.palette.primary.main,\n },\n },\n pageItem: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderBottom: '1px solid #EBEBEB',\n padding: '16px 0',\n // '&:first-of-type': {\n // paddingTop: 3 //3px coz it should be 24px according to the design, tab-top itself has 21\n // },\n '&:last-of-type': {\n // borderBottom: 'none',\n // paddingBottom: 21, //uncomment this after adding pagination to the pages\n // paddingBottom: 0\n },\n },\n pageInfo: {\n display: 'flex',\n alignItems: 'center',\n },\n pageImg: {\n width: '40px',\n height: '40px',\n marginRight: '16px',\n borderRadius: 100,\n },\n pageName: {\n color: '#3A3F62',\n fontSize: '14px',\n lineHeight: '17px',\n fontWeight: '500',\n fontFamily: 'Lato, \"sans-serif\"',\n },\n connectedStatus: {\n fontSize: '14px',\n fontFamily: 'Lato, \"sans-serif\"',\n fontWeight: '500',\n color: '#43C692',\n marginRight: '24px',\n },\n connectedAnother: {\n fontSize: '14px',\n fontFamily: 'Lato, \"sans-serif\"',\n fontWeight: '500',\n color: '#3A3F62',\n marginRight: '24px',\n },\n checked: {},\n '@global': {\n '.rootRadio label': {\n margin: '-4px 16px -4px -14px',\n },\n '.rootRadio span[class*=\"label\"]': {\n marginLeft: 8,\n },\n '.rootRadio span': {\n fontSize: 14,\n fontFamily: 'Lato',\n },\n },\n})\n\nclass FacebookPage extends React.Component {\n updateFacebookData = subscribe => {\n const newBot = JSON.parse(JSON.stringify(this.props.activeBot))\n if (!subscribe) {\n newBot.messengerConfigs.pageId = this.props.page.id\n newBot.messengerConfigs.accessToken = this.props.page.access_token\n setActiveBot(newBot)\n }\n if (\n subscribe &&\n this.props.activeBot.messengerConfigs.pageId == this.props.page.id\n ) {\n newBot.messengerConfigs.pageId = null\n newBot.messengerConfigs.accessToken = null\n setActiveBot(newBot)\n }\n getFacebookPages(this.props.activeBot.id, this.props.token, () => {\n this.setState(\n {\n showLoader: false,\n },\n () => {\n alertSuccess(\n `Page ${subscribe ? 'unsubscribed' : 'subscribed'} successfully`,\n )\n },\n )\n })\n }\n\n handleRequest = (subscribe, botId, pageId, pageToken, pageName) => {\n this.setState(\n {\n showLoader: true,\n },\n () => {\n subscribe\n ? subscribePage(\n botId,\n pageId,\n pageToken,\n pageName,\n this.updateFacebookData,\n this.handleLoader,\n )\n : unsubscribePage(\n botId,\n pageId,\n pageToken,\n this.updateFacebookData,\n this.handleLoader,\n )\n },\n )\n }\n\n handleLoader = () => {\n this.setState({\n showLoader: false,\n })\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n showLoader: false,\n }\n }\n\n render() {\n const { classes, page, activeBot, disabled } = this.props\n const { showLoader } = this.state\n return (\n
\n
\n {page.picture && (\n \n )}\n {page.name}\n
\n {showLoader ? (\n \n ) : (\n
\n {page.is_webhooks_subscribed ? (\n
\n {page.id == activeBot.messengerConfigs.pageId ? (\n \n ✓ Connected!\n \n ) : (\n \n Connected to another bot\n \n )}\n \n this.handleRequest(\n false,\n activeBot.id,\n page.id,\n page.access_token,\n )\n }\n />\n
\n ) : (\n
\n {!disabled && (\n {\n e.stopPropagation()\n this.handleRequest(\n true,\n activeBot.id,\n page.id,\n page.access_token,\n page.name,\n )\n }}\n />\n )}\n
\n )}\n
\n )}\n
\n )\n }\n}\n\nFacebookPage.propTypes = {\n classes: PropTypes.object,\n settingsPages: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n settingsPages: state.settingsPages,\n activeBot: state.activeBot,\n token: state.token,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(FacebookPage),\n ),\n)\n","import React from 'react'\nimport TabTemplate from '../../../../widget/components/TabTemplate'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { withStyles } from '@material-ui/core'\nimport FacebookIcon from '../../../../../uiKit/icons/FacebookIcon'\nimport FacebookLogin from 'react-facebook-login/dist/facebook-login-render-props'\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport Greeting from '../greeting/Greeting'\nimport FacebookPage from './FacebookPage'\nimport {\n exchangeShortLiveUserTokenToLongLive,\n getFacebookAppId,\n getFacebookPages,\n} from '../../../api/facebook'\nimport { getBot } from '../../../../home/api/bots'\nimport Pagination from '../../../../../uiKit/table/Pagination'\nimport { saveFacebookToken } from '../../../actions/facebookToken'\nimport { alertError } from '../../../../../api'\nimport { getFacebookLoggedIn, saveFacebookLoggedIn } from './FacebookConfig'\n\n//TODO: pagination\n// import Pagination from \"../../nlp/Pagination\";\n\nconst styles = theme => ({\n title: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n color: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n rootRadio: {\n marginLeft: 13,\n color: theme.palette.primary.iconsGray,\n fontSize: 14,\n fontFamily: 'Lato',\n '&$checked': {\n color: theme.palette.primary.main,\n },\n },\n pageItem: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderBottom: '1px solid #EBEBEB',\n padding: '16px 0',\n '&:first-of-type': {\n paddingTop: 3, //3px coz it should be 24px according to the design, tab-top itself has 21\n },\n '&:last-of-type': {\n borderBottom: 'none',\n // paddingBottom: 21, //uncomment this after adding pagination to the pages\n paddingBottom: 0,\n },\n },\n pageInfo: {\n display: 'flex',\n alignItems: 'center',\n },\n pageImg: {\n width: '40px',\n height: '40px',\n marginRight: '16px',\n borderRadius: 100,\n },\n pageName: {\n color: '#3A3F62',\n fontSize: '14px',\n lineHeight: '17px',\n fontWeight: '500',\n fontFamily: 'Lato, \"sans-serif\"',\n },\n connectedStatus: {\n fontSize: '14px',\n fontFamily: 'Lato, \"sans-serif\"',\n fontWeight: '500',\n color: '#43C692',\n marginRight: '24px',\n },\n connectedAnother: {\n fontSize: '14px',\n fontFamily: 'Lato, \"sans-serif\"',\n fontWeight: '500',\n color: '#3A3F62',\n marginRight: '24px',\n },\n wrapPagination: {\n display: 'flex',\n justifyContent: 'flex-end',\n // borderBottom:`1px solid ${theme.palette.primary.grayColor}`\n },\n checked: {},\n '@global': {\n '.rootRadio label': {\n margin: '-4px 16px -4px -14px',\n },\n '.rootRadio span[class*=\"label\"]': {\n marginLeft: 8,\n },\n '.rootRadio span': {\n fontSize: 14,\n fontFamily: 'Lato',\n },\n },\n})\n\nclass Facebook extends React.Component {\n handleChangePage = (event, page) => {\n this.setState({ page })\n }\n\n processFacebookCredentialsAndGetFacebookPages = userFacebookAccessToken => {\n saveFacebookToken(userFacebookAccessToken)\n saveFacebookLoggedIn(true)\n getFacebookPages(this.props.match.params.botId, userFacebookAccessToken)\n }\n\n processUserAccessToken(accessToken) {\n if (accessToken) {\n exchangeShortLiveUserTokenToLongLive(accessToken)\n .then(response => {\n this.processFacebookCredentialsAndGetFacebookPages(\n response.accessToken,\n )\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n }\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n page: 0,\n facebookAppId: null,\n rowsPerPage: 10,\n }\n }\n\n componentDidMount() {\n const facebookLoggedIn = getFacebookLoggedIn()\n getFacebookAppId().then(response => {\n this.setState({\n facebookLoggedIn: facebookLoggedIn,\n facebookAppId: response.appId,\n })\n })\n getBot(this.props.activeBot.id)\n }\n\n render() {\n const {\n classes,\n derivedClasses,\n settingsPages,\n activeBot,\n expanded,\n handleChangeExpansion,\n } = this.props\n const { page, rowsPerPage, facebookAppId } = this.state\n return (\n
\n ,\n description: 'Connect the chatbot to your Facebook page',\n }}\n button={{\n type: 'sm',\n title: 'Create new Facebook page',\n onClick: e => {\n window.open('https://www.facebook.com/pages/creation', '_blank')\n e.stopPropagation()\n },\n }}\n expanded={expanded}\n onChange={handleChangeExpansion}>\n
\n {!settingsPages.facebookPages ? (\n
\n {facebookAppId === null ? null : (\n
\n

\n Sign in to Facebook to be able to connect your chatbot\n

\n
\n \n this.processUserAccessToken(accessToken)\n }\n scope=\"manage_pages,pages_messaging\"\n render={renderProps => (\n \n )}\n />\n
\n
\n )}\n
\n ) : (\n
\n {settingsPages.facebookPages\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map(page => (\n
\n \n
\n ))}\n {settingsPages.facebookPages &&\n settingsPages.facebookPages.length > rowsPerPage && (\n
\n \n
\n )}\n
\n )}\n {settingsPages.facebookPages &&\n activeBot.messengerConfigs.accessToken != null && }\n
\n \n
\n )\n }\n}\n\nFacebook.defaultProps = {\n classes: {},\n}\n\nFacebook.propTypes = {\n classes: PropTypes.object,\n settingsPages: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n settingsPages: state.settingsPages,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Facebook)),\n)\n","import { store } from '../../../index'\n\nexport const SAVE_FACEBOOK_TOKEN = 'SAVE_FACEBOOK_TOKEN'\n\nexport const saveFacebookToken = token => {\n store.dispatch({\n type: SAVE_FACEBOOK_TOKEN,\n token,\n })\n}\n","export const saveFacebookLoggedIn = loggedIn => {\n localStorage.setItem('loggedIn', loggedIn)\n}\n\nexport const getFacebookLoggedIn = () => {\n return localStorage.getItem('loggedIn')\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport Input from '../../../../uiKit/inputs/Input'\nimport { getChatbaseConfig, updateChatbaseConfig } from '../../api/chatbase'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n mb16: {\n marginBottom: 16,\n },\n mb32: {\n marginBottom: 32,\n },\n description: {\n fontSize: 12,\n color: '#B0B2C0',\n fontFamily: 'Lato, sans-serif',\n margin: '4px 0 0',\n },\n inputTitle: {\n marginTop: 3,\n },\n errorAlert: {\n color: theme.palette.alerts.error,\n marginBottom: '-10px',\n fontSize: 12,\n },\n})\n\nclass ChatbaseIntegrationTemplate extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n apiKey: '',\n isError: false,\n errorMessage: '',\n showLoader: false,\n chatBaseConfigs: {},\n }\n }\n\n componentDidMount() {\n getChatbaseConfig(this.props.match.params.botId).then(data => {\n if (data) {\n this.setState({ chatBaseConfigs: data })\n }\n })\n }\n onSubmit = () => {\n const chatBaseConfigs = this.state.chatBaseConfigs\n\n if (this.checkInputFields()) {\n this.toggleLoader()\n updateChatbaseConfig(\n this.props.match.params.botId,\n chatBaseConfigs,\n this.toggleLoader,\n )\n }\n }\n\n checkInputFields = () => {\n let botError = true\n const { apiKey } = this.state.chatBaseConfigs\n\n if (isStringEmpty(apiKey)) {\n botError = false\n this.setState({\n isError: true,\n\n errorMessage: 'Chatbase Api Key cannot be an empty field!',\n })\n }\n return botError\n }\n\n handleChange = (value, name) => {\n const { chatBaseConfigs } = this.state\n chatBaseConfigs[name] = value.trim()\n this.setState({\n chatBaseConfigs,\n isError: false,\n })\n }\n\n toggleLoader = () => {\n this.setState({ showLoader: !this.state.showLoader })\n }\n\n render() {\n const { classes, derivedClasses, buttonStyles } = this.props\n const { isError, errorMessage, chatBaseConfigs } = this.state\n\n return (\n
\n
\n this.handleChange(event.target.value, 'apiKey')}\n />\n

\n Find Chatbase api key in Chatbase bots main page\n

\n {isError &&

{`${errorMessage}`}

}\n
\n
\n
\n \n
\n
\n
\n )\n }\n}\n\nChatbaseIntegrationTemplate.defaultProps = {\n derivedClasses: {},\n classes: {},\n buttonStyles: {},\n}\n\nChatbaseIntegrationTemplate.propTypes = {\n classes: PropTypes.object,\n derivedClasses: PropTypes.object,\n buttonStyles: PropTypes.object,\n}\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(ChatbaseIntegrationTemplate),\n)\n","import {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL } from '../../../configs'\n\nexport function getChatbaseConfig(botId) {\n return fetch(BASE_URL + '/bot/' + botId + '/chatbase/', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => {\n return logoutOnRequestOrResponseJson(response)\n })\n .catch(function(error) {\n alertError('Sorry but something going wrong please ping support!')\n })\n}\n\nexport function updateChatbaseConfig(botId, chatbaseConfig, callback) {\n fetch(BASE_URL + '/bot/' + botId + '/chatbase/', {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(chatbaseConfig),\n }).then(response => {\n if (response.status === 400) {\n response.text().then(text => {\n const res = JSON.parse(text)\n alertError(res.message)\n })\n return\n } else if (response.status === 204) {\n alertSuccess('Chatbase is updated successfully.')\n } else {\n alertError('Fail. Try it later')\n }\n })\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport Input from '../../../../uiKit/inputs/Input'\nimport { login } from '../../api/dialogflow'\n\nconst styles = theme => ({\n mb16: {\n marginBottom: 16,\n },\n mb32: {\n marginBottom: 32,\n },\n description: {\n fontSize: 12,\n color: '#B0B2C0',\n fontFamily: 'Lato, sans-serif',\n margin: '4px 0 0',\n },\n inputTitle: {\n marginTop: 3,\n },\n errorAlert: {\n color: theme.palette.alerts.error,\n marginBottom: '-10px',\n fontSize: 12,\n },\n})\n\nclass DialogflowIntegrationTemplate extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n projectId: '',\n tokenSet: false,\n showLoader: false,\n isError: false,\n errorMessage: '',\n dialogflowConfigs: {},\n loginParams: {},\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const projectId = prevState.projectId\n\n if (!prevState.tokenSet && nextProps.activeBot.dialogflowConfigs) {\n const { dialogflowConfigs } = nextProps.activeBot\n const newProjectId = dialogflowConfigs.projectId\n\n if (projectId !== newProjectId) {\n return { dialogflowConfigs, tokenSet: true }\n }\n }\n\n return null\n }\n\n onSubmit = () => {\n const bot = { ...this.props.activeBot }\n login(bot.id, this.state.dialogflowConfigs.projectId)\n }\n\n successCallback = () => {\n this.setState({\n isError: false,\n showLoader: false,\n })\n }\n\n errorCallback = errorMessage => {\n this.setState({\n isError: true,\n errorMessage: errorMessage,\n })\n }\n\n handleChange = (value, name) => {\n const dialogflowConfigs = { ...this.state.dialogflowConfigs }\n dialogflowConfigs[name] = value.trim()\n this.setState({\n dialogflowConfigs: { ...dialogflowConfigs },\n isError: false,\n })\n }\n\n render() {\n const { classes, derivedClasses, buttonStyles } = this.props\n const { isError, errorMessage, dialogflowConfigs } = this.state\n\n return (\n
\n
\n \n this.handleChange(event.target.value, 'projectId')\n }\n />\n

\n Find Google Project ID in DialogFlow Settings page\n

\n {isError &&

{`${errorMessage}`}

}\n
\n
\n
\n \n
\n
\n
\n )\n }\n}\n\nDialogflowIntegrationTemplate.defaultProps = {\n derivedClasses: {},\n loginParams: {},\n classes: {},\n activeBot: {},\n buttonStyles: {},\n}\n\nDialogflowIntegrationTemplate.propTypes = {\n classes: PropTypes.object,\n derivedClasses: PropTypes.object,\n loginParams: PropTypes.object,\n activeBot: PropTypes.object,\n buttonStyles: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(DialogflowIntegrationTemplate),\n ),\n)\n","import { BACKEND_URL, BASE_URL } from '../../../configs'\nimport { createJsonHeaders, logoutOnRequestOrResponseJson } from '../../../api'\n\nexport function login(botId, projectId) {\n fetch(`${BASE_URL}/configs/dialogflow`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(response =>\n window.open(\n `https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=${\n BACKEND_URL + '/dialogflow/auth'\n // eslint-disable-next-line max-len\n }&scope=https://www.googleapis.com/auth/cloud-platform+https://www.googleapis.com/auth/dialogflow+https://www.googleapis.com/auth/userinfo.email&response_type=code&client_id=${\n response.clientId\n }&access_type=offline&state=${botId + ',' + projectId}`,\n 'Login with Dialogflow',\n 'width=560,height=600,toolbar=0,menubar=0,location=0',\n ),\n )\n}\n","/* eslint-disable */\nimport React from 'react'\n\nexport const WhatAppIcon = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import React from 'react'\n\nimport TabTemplate from '../../../../widget/components/TabTemplate'\nimport PropTypes from 'prop-types'\nimport { WhatAppIcon } from '../../../../../uiKit/icons/WhatAppIcon'\n\nconst WhatAppTabTemplateView = props => {\n const { tabExpanded, onChange, children } = props\n return (\n ,\n description: 'Connect the chatbot to your WhatApp page',\n }}\n expanded={tabExpanded}\n onChange={onChange}>\n {children}\n \n )\n}\n\nWhatAppTabTemplateView.propTypes = {\n botId: PropTypes.number,\n onChange: PropTypes.func.isRequired,\n tabExpanded: PropTypes.bool.isRequired,\n}\n\nexport default WhatAppTabTemplateView\n","export const styles = theme => ({\n mb16: {\n marginBottom: 16,\n },\n mb34: {\n marginBottom: 34,\n },\n description: {\n fontSize: 12,\n color: '#B0B2C0',\n fontFamily: 'Lato, sans-serif',\n margin: '4px 0 16px',\n },\n inputTitle: {\n marginTop: 3,\n },\n})\n\nexport const inputStyle = {\n marginTop: 0,\n}\n","export const fieldsList = [\n {\n title: 'Channel Id',\n description: 'Find Channel Id in your Amio channels',\n placeholder: 'Enter channel id',\n key: 'channelId',\n },\n {\n title: 'Access Token',\n description: 'Find Access Token in your Amio settings',\n placeholder: 'Enter WhatsApp access token',\n key: 'accessToken',\n },\n {\n title: 'Secret',\n description: 'Find Secret in your Channel Webhook settings',\n placeholder: 'Enter secret',\n key: 'secret',\n },\n]\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\n\nimport Input from '../../../../../uiKit/inputs/Input'\nimport { styles } from './style'\n\nconst Field = props => {\n const { classes, value, inputStyle, onChange, field, error } = props\n return (\n \n \n

{field.description}

\n
\n )\n}\n\nField.propTypes = {\n classes: PropTypes.object,\n field: PropTypes.object,\n error: PropTypes.string,\n onChange: PropTypes.func,\n inputStyle: PropTypes.object,\n value: PropTypes.string,\n}\n\nexport default withStyles(styles, { withTheme: true })(Field)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport SubmitButton from '../../../../../uiKit/buttons/SubmitButton'\nimport WhatAppTabTemplateView from './WhatsAppTabTemplateView'\nimport { saveAmioCredentials } from '../../../api/whatsApp'\nimport { inputStyle, styles } from './style'\nimport { alertError, alertSuccess } from '../../../../../api'\nimport { fieldsList } from './config'\nimport Field from './Field'\n\nclass WhatsApp extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n credentials: {\n accessToken: '',\n secret: '',\n channelId: '',\n },\n }\n }\n\n componentDidMount() {\n const { activeBot } = this.props\n if (activeBot.amioWhatsAppConfigs) {\n this.setState({\n credentials: activeBot.amioWhatsAppConfigs,\n })\n }\n }\n\n onSubmit = () => {\n const { credentials } = this.state\n const {\n activeBot: { id },\n } = this.props\n this.saveCredentials(id, credentials)\n }\n\n saveCredentials = (id, credentials) => {\n saveAmioCredentials(id, credentials).then(response => {\n if (response && response.ok) {\n if (response.message) {\n response.json().then(json => alertSuccess(json.message))\n } else {\n alertSuccess('Amio WhatsApp config is updated successfully.')\n }\n } else {\n response.json().then(json => alertError(json.message))\n }\n })\n }\n\n handleChange = (value, key) => {\n const { credentials } = this.state\n credentials[key] = value.trim()\n this.setState({\n credentials,\n })\n }\n\n render() {\n const { classes, derivedClasses, expanded, handleChangeExpansion } =\n this.props\n const { credentials } = this.state\n\n return (\n \n
\n {fieldsList.map(field => (\n \n this.handleChange(event.target.value, field.key)\n }\n />\n ))}\n
\n
\n
\n \n
\n
\n \n )\n }\n}\n\nWhatsApp.defaultProps = {\n derivedClasses: {},\n classes: {},\n activeBot: {},\n}\n\nWhatsApp.propTypes = {\n classes: PropTypes.object,\n derivedClasses: PropTypes.object,\n activeBot: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(WhatsApp),\n)\n","import { createJsonHeaders } from '../../../api'\nimport { BASE_URL } from '../../../configs'\n\nexport function saveAmioCredentials(botId, data) {\n return fetch(`${BASE_URL}/bot/${botId}/amioWhatsAppConfig`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(data),\n })\n .then(response => response)\n .catch(e => console.log(e))\n}\n","export const phoneNumberValidation = str =>\n /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/g.test(str)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { withStyles } from '@material-ui/core'\nimport Input from '../../../../../uiKit/inputs/Input'\nimport {\n getTwilioCredentials,\n submitTwilioCredentials,\n} from '../../../api/twilioCredetials'\nimport { alertError } from '../../../../../api'\nimport { phoneNumberValidation } from '../../../../../helpers/phoneNumberValidation'\n\nconst styles = theme => ({\n description: {\n fontSize: '14px',\n color: '#616581',\n fontFamily: 'Lato, sans-serif',\n margin: '0 0 8px 0',\n },\n connectionBtn: {\n color: '#1658F3',\n border: '1px solid #1658F3',\n backgroundColor: '#fff',\n borderRadius: '10px',\n padding: '8px 16px',\n cursor: 'pointer',\n },\n statusContent: {\n fontSize: '17px',\n lineHeight: '10px',\n },\n statusBlock: {\n marginBottom: '35px',\n width: '400px',\n },\n popupBtnBlock: {\n display: 'flex',\n alignItems: 'center',\n marginTop: '40px',\n },\n instructionBtn: {\n color: '#1658F3',\n cursor: 'pointer',\n margin: '0 0 0 8px',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n})\n\nconst showConnectionText = connection => {\n return connection ? 'Connected' : 'Not connected'\n}\nconst showConnectionStyle = connection => {\n return { color: connection ? '#11C314' : '#B0B2C0' }\n}\nconst inputStyle = {\n marginBottom: '24px',\n width: '400px',\n}\n\nclass TwilioIntegration extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n twilioCredentials: {\n accountSID: '',\n authToken: '',\n phone: '',\n connected: false,\n },\n error: {\n accountSIDError: false,\n authTokenError: false,\n phoneError: false,\n },\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.twilioCredentials !== prevState.twilioCredentials) {\n return {\n twilioCredentials: nextProps.twilioCredentials,\n }\n }\n\n return null\n }\n\n componentDidMount() {\n const { activeBot } = this.props\n getTwilioCredentials(activeBot.id)\n }\n\n submitCredentials = event => {\n event.preventDefault()\n const { activeBot } = this.props\n const { twilioCredentials } = this.state\n\n const error = {\n accountSIDError: twilioCredentials.accountSID === '',\n authTokenError: twilioCredentials.authToken === '',\n phoneError:\n twilioCredentials.phone === '' ||\n !phoneNumberValidation(twilioCredentials.phone),\n }\n\n if (error.accountSIDError) {\n alertError('Please enter account SID')\n }\n if (error.authTokenError) {\n alertError('Please enter account access token')\n }\n if (error.phoneError && !phoneNumberValidation(twilioCredentials.phone)) {\n alertError('Please enter valid phone number')\n }\n\n if (!error.accountSIDError && !error.authTokenError && !error.phoneError) {\n submitTwilioCredentials(activeBot.id, twilioCredentials)\n }\n\n this.setState({ error })\n }\n\n handleChange = (event, key) => {\n const twilioCredentials = Object.assign(this.state.twilioCredentials)\n\n twilioCredentials[key] = event.target.value\n\n this.setState({ twilioCredentials })\n }\n\n render() {\n const { classes } = this.props\n const { twilioCredentials, error } = this.state\n\n return (\n
\n
\n \n

Status:

\n \n {showConnectionText(twilioCredentials.connected)}\n

\n
\n
\n
\n this.handleChange(value, 'accountSID')}\n />\n this.handleChange(value, 'authToken')}\n />\n this.handleChange(e, 'phone')}\n />\n
\n \n
\n \n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n twilioCredentials: state.twilioCredentials,\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(TwilioIntegration),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport { updateWitAiConfigsRequest } from '../../../home/api/bots'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport Loader from '../../../../uiKit/loaders/loader'\nimport { alertSuccess } from '../../../../api'\n\nconst styles = theme => ({\n mb16: {\n marginBottom: 16,\n },\n mb32: {\n marginBottom: 32,\n },\n description: {\n fontSize: 12,\n color: '#B0B2C0',\n fontFamily: 'Lato, sans-serif',\n margin: '4px 0 0',\n },\n inputTitle: {\n marginTop: 3,\n },\n errorAlert: {\n color: theme.palette.alerts.error,\n marginBottom: '-10px',\n fontSize: 12,\n },\n})\n\nclass WitAiIntegrationTemplate extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isConnected: false,\n showLoader: false,\n isError: false,\n errorMessage: '',\n witAiConfigs: {},\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const isConnected = prevState.isConnected\n\n if (!prevState.isConnected && nextProps.activeBot.witAiConfigs) {\n const { witAiConfigs } = nextProps.activeBot\n const newIsConnected = witAiConfigs.isConnected\n\n if (isConnected !== newIsConnected) {\n return { witAiConfigs, isConnected: newIsConnected }\n }\n }\n\n return null\n }\n\n onSubmit = () => {\n if (this.state.isConnected) {\n alertSuccess('Wit.Ai already connected!')\n } else {\n this.setState({\n showLoader: true,\n })\n\n const bot = { ...this.props.activeBot }\n updateWitAiConfigsRequest(\n bot.id,\n this.successCallback,\n this.errorCallback,\n )\n }\n }\n\n successCallback = () => {\n this.setState({\n isError: false,\n isConnected: true,\n showLoader: false,\n })\n }\n\n errorCallback = errorMessage => {\n this.setState({\n isError: true,\n isConnected: false,\n showLoader: false,\n errorMessage: errorMessage,\n })\n }\n\n handleChange = (value, name) => {\n const witAiConfigs = { ...this.state.witAiConfigs }\n witAiConfigs[name] = value.trim()\n this.setState({\n witAiConfigs: { ...witAiConfigs },\n isError: false,\n })\n }\n\n render() {\n const { classes, derivedClasses, buttonStyles } = this.props\n const { isError, errorMessage, showLoader, isConnected } = this.state\n\n return (\n
\n {showLoader ? (\n \n ) : (\n \n
\n {isError && (\n

{`${errorMessage}`}

\n )}\n
\n
\n \n
\n
\n )}\n \n )\n }\n}\n\nWitAiIntegrationTemplate.defaultProps = {\n derivedClasses: {},\n classes: {},\n activeBot: {},\n buttonStyles: {},\n}\n\nWitAiIntegrationTemplate.propTypes = {\n classes: PropTypes.object,\n derivedClasses: PropTypes.object,\n activeBot: PropTypes.object,\n buttonStyles: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(WitAiIntegrationTemplate),\n ),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport Facebook from './facebook/Facebook'\nimport TabTemplate from '../../../widget/components/TabTemplate'\nimport ChatbaseIntegrationTemplate from './ChatbaseIntegrationTemplate'\nimport DialogflowIntegrationTemplate from './DialogflowIntegrationTemplate'\nimport WhatsApp from './whatsApp/WhatsApp'\nimport TwillioIntegration from './twilioIntegration/TwilioIntegration'\nimport WitAiIntegrationTemplate from './WitAiIntegrationTemplate'\n\nconst styles = theme => ({\n heading: {\n fontWeight: 'bold',\n fontSize: '24px',\n color: '#3A3F62',\n fontFamily: 'Lato, \"sans-serif\"',\n margin: '0 0 8px',\n },\n paragraph: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: '#616581',\n },\n block: {\n borderBottom: '1px solid #EBEBEF',\n paddingBottom: 32,\n },\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: '#1658F3',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n width: '400px',\n },\n btn: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid #5A98F7',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: '#5A98F7',\n padding: '8px 16px',\n width: 'max-content',\n },\n btnDelete: {\n marginTop: 16,\n cursor: 'pointer',\n border: '1px solid rgba(97, 101, 129, 0.5)',\n boxSizing: 'border-box',\n borderRadius: 10,\n color: 'rgba(97, 101, 129, 0.5)',\n padding: '8px 16px',\n width: 'max-content',\n },\n modal: {\n padding: '40px 160px',\n margin: '15% auto' /* 15% from the top and centered */,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n overflowY: 'auto',\n backgroundColor: 'white',\n width: 640,\n },\n box: {\n display: 'flex',\n width: 664,\n marginTop: 22,\n },\n circle: {\n background: 'rgba(90, 152, 247, 0.2)',\n height: 8,\n width: 12,\n marginTop: 6,\n borderRadius: 8,\n marginRight: 16,\n },\n btnWhite: {\n background: '#ffffff',\n fontSize: '14px',\n fontWeight: '600',\n border: '1px solid #C7CAD6',\n color: '#3A3F62',\n borderRadius: '10px',\n padding: '8px 16px',\n cursor: 'pointer',\n fontFamily: 'Lato, \"sans-serif\"',\n },\n btnSimple: {\n color: '#3A3F62',\n textDecoration: 'underline',\n border: 'none',\n background: 'transparent',\n padding: '0',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '600',\n },\n container: {\n marginBottom: '26px',\n },\n itemContainer: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n marginBottom: 100,\n width: 'calc(100% - 148px)', //148px because margin to the edge has to be 200px,\n // outer container has 12px padding, tabs container has 40px right margin\n ['@media (max-width:1380px)']: {\n width: 'calc(100% - 48px)',\n },\n },\n item: {\n backgroundColor: '#ffffff',\n boxShadow: '4px 4px 50px rgba(19, 69, 186, 0.25)',\n borderRadius: '10px',\n padding: '24px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n flexBasis: '30%',\n },\n itemDisabled: {\n opacity: '.6',\n cursor: 'not-allowed',\n },\n itemImg: {\n maxWidth: '48px',\n height: '48px',\n },\n itemTitle: {\n padding: '16px',\n borderBottom: '1px solid #EBEBEF',\n margin: '0 0 16px',\n fontFamily: 'Lato, sans-serif',\n fontSize: '16px',\n fontWeight: '300',\n },\n itemBtn: {\n color: '#1658F3',\n border: '1px solid #1658F3',\n borderRadius: '10px',\n padding: '8px 14px',\n fontSize: '14px',\n fontFamily: 'Lato, sans-serif',\n fontWeight: '300',\n cursor: 'pointer',\n },\n itemBtnDisabled: {\n cursor: 'not-allowed',\n color: '#C7CAD6',\n borderColor: '#C7CAD6',\n },\n topContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n tabInner: {\n minHeight: 350,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n tabInnerContainer: {\n width: '100%',\n },\n tabIcon: {\n maxWidth: 20,\n },\n '@global': {\n '.Select-menu-outer': {\n top: '100%!important',\n bottom: 'auto!important',\n },\n '@media screen and (max-width:1300px)': {\n '.containerForItems': {\n width: 'calc(100%-48px)',\n },\n },\n '.Select-placeholder': {\n lineHeight: '43px',\n },\n '.error .Select-placeholder': {\n color: '#FF624C',\n },\n '.Select-input > input': {\n lineHeight: '28px',\n },\n '.Select-value': {\n paddingTop: 5,\n },\n '.Select-control': {\n height: 45,\n },\n '.drop-up .Select-menu-outer': {\n bottom: '100 !important',\n top: 'auto !important',\n },\n '.drop-up .Select-placeholder': {\n color: '#1658F3',\n },\n '.drop-up .Select-value span': {\n color: '#1658F3 !important',\n },\n '.link:hover': {\n textDecoration: 'none',\n color: '#3A3F62',\n },\n },\n})\n\nclass NewIntegrations extends React.Component {\n handleChangeExpansion = expanded => {\n this.setState({\n expanded: expanded === this.state.expanded ? null : expanded,\n })\n }\n\n constructor(props) {\n super(props)\n\n this.state = {\n open: false,\n expanded: null,\n }\n }\n\n render() {\n const { classes } = this.props\n const { expanded } = this.state\n\n return (\n
\n
\n

Integrations

\n
\n

\n Choose a platform you would like to connect your chatbot to\n

\n\n
\n this.handleChangeExpansion('fb')}\n />\n this.handleChangeExpansion('wa')}\n />\n \n ),\n description:\n 'Connect the DialogFlow agent to be able to make your bot smarter by setting the NLP',\n }}\n expanded={expanded === 'df'}\n onChange={() => this.handleChangeExpansion('df')}>\n \n \n \n ),\n description: 'Connect the WitAi',\n }}\n expanded={expanded === 'witAi'}\n onChange={() => this.handleChangeExpansion('witAi')}>\n \n \n \n ),\n description: 'Connect the Chatbase',\n }}\n expanded={expanded === 'cb'}\n onChange={() => this.handleChangeExpansion('cb')}>\n \n \n \n ),\n description:\n 'Connect your Twillio agent to be able to chat with your customers via SMS',\n }}\n expanded={expanded === 'twillio'}\n onChange={() => this.handleChangeExpansion('twillio')}>\n \n \n
\n
\n )\n }\n}\n\nNewIntegrations.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withStyles(styles, { withTheme: true })(NewIntegrations)\n","import React from 'react'\nimport withStyles from '@material-ui/core/styles/withStyles'\n\nconst styles = theme => ({\n tableRow: {\n // \"&:hover\": {\n // border: \"0.5px solid #1658F3\",\n // borderRadius: 10,\n // padding: 19,\n // },\n height: 80,\n padding: 20,\n fontSize: 14,\n display: 'flex',\n fontFamily: 'Lato, sans-serif',\n color: '#8185a6',\n justifyContent: 'space-between',\n },\n})\n\nclass TableRow extends React.Component {\n render() {\n const { classes } = this.props\n\n return (\n \n {this.props.children}\n \n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(TableRow)\n","import React from 'react'\nimport withStyles from '@material-ui/core/styles/withStyles'\n\nconst styles = () => ({\n tableCell: {\n flexGrow: 1,\n flexBasis: 0,\n display: 'flex',\n // justifyContent: \"center\",\n '&:last-child': {\n maxWidth: 50,\n },\n '&:nth-last-child(2)': {\n maxWidth: 150,\n },\n },\n})\n\nclass TableCell extends React.Component {\n render() {\n const { classes, styles } = this.props\n return (\n
\n {this.props.children}\n
\n )\n }\n}\n\nexport default withStyles(styles)(TableCell)\n","import React from 'react'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport { withRouter } from 'react-router-dom'\nimport uuid from 'uuid'\nimport Loader from '../loaders/loader'\nimport ReactTooltip from 'react-tooltip'\n\nconst styles = theme => ({\n tableHeader: {\n borderBottom: '1px solid #EBEBEF',\n // background: '#F7FAFE',\n borderTop: 'none',\n padding: '10px 20px',\n display: 'flex',\n justifyContent: 'space-between',\n },\n titleContainer: {\n flexGrow: 1,\n flexBasis: 0,\n display: 'flex',\n alignItems: 'center',\n maxWidth: 150,\n '&:last-child': {\n maxWidth: 50,\n },\n '&:nth-last-child(2)': {\n // maxWidth: 150,\n },\n },\n title: {\n fontStyle: 'normal',\n fontWeight: 600,\n lineHeight: 'normal',\n fontSize: 14,\n color: '#3A3F62',\n display: 'inline',\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflow: 'visible',\n },\n tableCellText: {\n margin: 0,\n maxWidth: 150,\n },\n view: {\n fontSize: '14px',\n textDecoration: 'underline',\n color: '#1658F3',\n cursor: 'pointer',\n margin: 0,\n },\n paper: {\n width: 800,\n padding: '30px 50px 40px',\n },\n footer: {\n display: 'flex',\n justifyContent: 'flex-end',\n },\n tooltip: {\n maxWidth: '80%',\n width: '200px',\n border: '1px solid #EBEBEF',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n },\n})\n\nclass Table extends React.Component {\n state = {\n page: 0,\n open: false,\n rowsPerPage: 10,\n }\n\n render() {\n const { classes, children } = this.props\n const { titles } = this.props\n\n return (\n
\n
\n
\n
\n {titles.map((title, index) => {\n return (\n \n {typeof title === 'string' && (\n
\n {title}\n
\n )}\n {typeof title === 'object' && !title.tooltipText && (\n
\n {title.title}\n
\n )}\n {typeof title === 'object' && title.tooltipText && (\n
\n
\n {title.title}\n
\n \n {title.tooltipText}\n \n \n
\n )}\n
\n )\n })}\n
\n {!children ? : children}\n
\n {this.props.paginationComponent}\n
\n
\n
\n \n )\n }\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(Table))\n","import React from 'react'\nimport MUIDialog from '@material-ui/core/Dialog'\n\nexport const Dialog = props => {\n return \n}\n","import React from 'react'\nimport MUIDialogTitle from '@material-ui/core/DialogTitle'\n\nexport const DialogTitle = props => {\n return \n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core/styles'\nimport MUIDialogActions from '@material-ui/core/DialogActions'\n\nimport { styles } from './styles'\n\nconst View = props => {\n const { classes } = props\n\n return \n}\n\nexport const DialogActions = withStyles(styles)(View)\n","export const styles = theme => ({\n root: {\n padding: 24,\n margin: 0,\n },\n})\n","/**\n * Created by Admin on 05.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\nimport Typography from '@material-ui/core/Typography'\n\nimport { Dialog } from '../../../../uiKit/UI/Dialog'\nimport { DialogTitle } from '../../../../uiKit/UI/DialogTitle'\nimport { DialogActions } from '../../../../uiKit/UI/DialogActions'\n\nconst styles = theme => ({\n paper: {\n width: theme.spacing.unit * 50,\n backgroundColor: theme.palette.background.paper,\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 4,\n },\n flow: {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n button: {\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n color: 'white',\n fontFamily: \"'Lato', sans-serif\",\n '& + button': {\n margin: '0 0 0 10px',\n },\n },\n '@global': {\n \"[class*='MuiDialog-paperWidthSm']\": {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.14)',\n borderRadius: 10,\n },\n '.buttonHover:hover': {\n background: 'white',\n color: '#1658F3',\n },\n '.buttonHover1:hover': {\n color: 'white',\n background: '#1658F3',\n },\n '.buttonHover1': {\n background: 'white',\n color: '#1658F3',\n },\n },\n})\n\nclass DeleteAccess extends React.Component {\n state = {\n open: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n submit = () => {\n this.props.submit(this.props.id, this.props.inviteAccessId)\n this.setState({ open: false })\n }\n\n render() {\n const { classes } = this.props\n\n return (\n
\n
this.handleOpen()}>\n \n Remove\n \n
\n \n \n \n {\"Are you sure you want to delete access for '\" +\n this.props.email +\n \"'?\"}\n \n \n \n \n Delete\n \n \n Cancel\n \n \n \n
\n )\n }\n}\n\nDeleteAccess.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nconst DeleteAccessExport = withStyles(styles)(DeleteAccess)\n\nexport default DeleteAccessExport\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport Select from 'react-select'\nimport { shareBot } from '../api/bots'\nimport { loadBotAccessors } from '../../settings/api/settings'\nimport { ROLE_OPTIONS } from '../../../security'\n\nconst styles = theme => ({\n closeContainer: {\n display: 'flex',\n flexDirection: 'row-reverse',\n },\n statesModal: {\n height: 45,\n padding: '10px 0',\n },\n textField: {\n marginLeft: theme.spacing.unit,\n marginRight: theme.spacing.unit,\n width: 200,\n flexBasis: '60%',\n },\n progress: {\n margin: theme.spacing.unit * 2,\n },\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n },\n table: {\n minWidth: 500,\n },\n tableWrapper: {\n overflowX: 'auto',\n },\n input: {\n padding: '10px',\n border: 'none',\n outline: 'none',\n width: '90%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: '#1658F3',\n },\n enter: {\n width: '10%',\n cursor: 'pointer',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n save: {\n padding: '12px 28px',\n border: 0,\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n cursor: 'pointer',\n color: 'white',\n margin: '30px auto 0',\n display: 'block',\n },\n modalHeading: {\n fontSize: 16,\n color: '#3A3F62',\n fontWeight: 400,\n marginTop: 24,\n },\n none: {\n display: 'none',\n },\n})\n\nclass ShareModal extends React.Component {\n state = {\n email: '',\n text: '',\n role: ROLE_OPTIONS[0].value,\n }\n\n updateRole(value) {\n this.setState({\n role: value,\n })\n }\n\n checkEmail() {\n let isCorrect = false;\n if (this.state.email.match(\"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-][a-zA-Z0-9-.]+[a-zA-Z0-9-]$\") != null) {\n const testArrBegPos = this.state.email.indexOf(\"@\") + 1\n const testArr = this.state.email.slice(testArrBegPos, this.state.email.length)\n if(!(testArr.includes('..') || !testArr.includes('.')))\n isCorrect = true;\n }\n\n this.setState({emailError: !isCorrect});\n return isCorrect;\n }\n\n shareBot() {\n if (this.checkEmail()) {\n const access = {\n receiverRole: this.state.role,\n receiverEmail: this.state.email,\n }\n shareBot(this.props.bot.id, access, () => {\n this.props.closeModal()\n loadBotAccessors(this.props.bot.id)\n })\n }\n }\n\n handleChangeInput(e) {\n this.setState({\n email: e.target.value.trim(),\n })\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n

Email

\n \n this.handleChangeInput(e)}\n />\n
\n {this.state.emailError && (\n \n Email is not valid\n

\n )}\n

Role

\n opt.value === this.state.role)}\n clearable={false}\n onChange={event => this.updateRole(event.value)}\n searchable={true}\n />\n \n \n )\n }\n}\n\nShareModal.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(ShareModal))\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport uuid from 'uuid'\nimport withStyles from '@material-ui/core/styles/withStyles'\nimport TableRow from '../../../../uiKit/table/TableRow'\nimport TableCell from '../../../../uiKit/table/TableCell'\nimport Table from '../../../../uiKit/table/Table'\nimport Select from 'react-select'\nimport DeleteAccess from './DeleteAccess'\nimport Button from '@material-ui/core/Button'\nimport Modal from '../../../../uiKit/Modal'\nimport { SearchIcon } from '../../../../uiKit/icons/Icons'\nimport ShareModal from '../../../home/components/ShareModal'\nimport {\n loadBotAccessors,\n removeBotAccessor,\n updateBotAccessorRole,\n updateBotAccessorSupportRequestNotifying,\n} from '../../api/settings'\nimport { ROLE_OPTIONS } from '../../../../security'\nimport Heading from '../../../../uiKit/texts/Heading'\nimport { Checkbox, FormControlLabel } from '@material-ui/core'\n\nconst baseUserImage = '/images/platform/default-user-icon.svg'\nconst supportRequestNotifyTooltipText =\n 'Send email notifications about new customer support requests.'\nconst styles = theme => ({\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: 340,\n },\n input: {\n width: '100%',\n padding: '10px',\n border: 'none',\n outline: 'none',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n },\n submitButton: {\n background: 'linear-gradient(285.2deg, #5A98F7 -35.9%, #1658F3 61.17%)',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n height: 45,\n outline: 'none',\n },\n submitButtonText: {\n color: 'white',\n margin: 0,\n fontWeight: 500,\n fontSize: 16,\n textTransform: 'none',\n fontFamily: 'Lato, sans-serif',\n },\n paper: {\n padding: '30px 50px 24px',\n },\n tableCellData: {\n margin: 'auto 0',\n },\n userImageContainer: {\n height: 40,\n flex: '0 0 40px',\n position: 'relative',\n marginRight: 8,\n },\n userImage: {\n display: 'block',\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n objectPosition: 'top',\n borderRadius: '50%',\n overflow: 'hidden',\n },\n userStatus: {\n position: 'absolute',\n boxSizing: 'border-box',\n width: 10,\n height: 10,\n border: '2px solid #ffffff',\n borderRadius: '50%',\n bottom: 0,\n right: 0,\n },\n})\n\nclass Users extends React.Component {\n state = {\n open: false,\n searchUser: '',\n }\n removeAccess = (id, inviteAccessId) => {\n removeBotAccessor(this.props.match.params.botId, id, inviteAccessId)\n }\n closeShareModal = () => {\n this.setState({ open: false })\n }\n\n componentDidMount() {\n loadBotAccessors(this.props.match.params.botId)\n }\n\n handleSearchUser(value) {\n this.setState({ searchUser: value })\n }\n\n updateRole(id, inviteAccessId, newRole) {\n updateBotAccessorRole(\n this.props.match.params.botId,\n id,\n inviteAccessId,\n newRole,\n )\n }\n\n updateSupportNotifying(id, supportRequestNotify) {\n updateBotAccessorSupportRequestNotifying(\n this.props.match.params.botId,\n id,\n supportRequestNotify,\n )\n }\n\n render() {//NOSONAR\n const botAccessors = this.props.botAccessors\n const { classes } = this.props\n return (\n
\n Users\n\n \n
\n
\n this.handleSearchUser(event.target.value)}\n />\n \n
\n
\n this.setState({ open: true })}>\n

Invite new user

\n \n
\n \n {!(botAccessors && botAccessors.length) ? (\n
\n ) : (\n botAccessors\n .sort(ba => (!ba.isInvited ? -1 : 1))\n .filter(\n ba =>\n ba.name\n .toUpperCase()\n .indexOf(this.state.searchUser.toUpperCase()) !== -1,\n )\n .map((accessor, index) => (\n \n {console.log(accessor)}\n \n
\n \n \n
\n {accessor.isInvited ? (\n

\n {accessor.name}\n

\n ) : (\n

{accessor.name}

\n )}\n \n \n \n {accessor.email}\n

\n
\n \n \n {accessor.adminId !== this.props.adminUser.id ? (\n access.value === accessor.role,\n )}\n name=\"selected-state\"\n clearable={false}\n onChange={o =>\n this.updateRole(\n accessor.id,\n accessor.inviteAccessId,\n o.value,\n )\n }\n searchable={true}\n />\n ) : (\n

\n {\n ROLE_OPTIONS.find(\n access => access.value === accessor.role,\n ).label\n }\n

\n )}\n
\n \n \n
\n {accessor.isInvited == false ? (\n
\n \n this.updateSupportNotifying(\n accessor.id,\n checked,\n )\n }\n checked={accessor.supportRequestNotify}\n color=\"primary\"\n />\n }\n />\n
\n ) : null}\n
\n \n \n {accessor.adminId !== this.props.adminUser.id ? (\n
\n \n
\n ) : null}\n
\n \n ))\n )}\n \n \n \n \n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n botAccessors: state.botAccessors,\n adminUser: state.adminUser,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Users)),\n)\n","export const styles = theme => ({\n wrapper: {},\n headerWrapper: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n '& h2': {\n margin: '0',\n fontSize: '24px',\n fontFamily: 'Lato',\n color: theme.palette.primary.headerText,\n },\n },\n addNewLanguageBtn: {\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n border: '1px solid ' + theme.palette.pieChartColors.chatbot,\n borderRadius: 10,\n padding: 10,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n maxHeight: 40,\n marginLeft: '21px',\n cursor: 'pointer',\n },\n evenRow: {\n color: theme.palette.primary.text,\n padding: '24px',\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: '14px',\n fontFamily: 'Lato',\n },\n notEvenRow: {\n color: theme.palette.primary.text,\n padding: '24px',\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: '14px',\n fontFamily: 'Lato',\n background: 'rgba(90, 152, 247, 0.1)',\n borderRadius: '10px',\n },\n deleteLanguageBtn: {\n color: theme.palette.alerts.error,\n cursor: 'pointer',\n fontSize: '14px',\n fontFamily: 'Lato',\n },\n newLanguageModalHeader: {\n fontSize: '18px',\n fontWeight: 400,\n fontFamily: 'Lato',\n color: theme.palette.text.header,\n textAlign: 'center',\n },\n newLanguageModalLabel: {\n marginTop: '32px',\n fontSize: '14px',\n fontFamily: 'Lato',\n color: theme.palette.text.header,\n },\n languageError: {\n color: theme.palette.alerts.error,\n marginBottom: '-10px',\n fontSize: 12,\n },\n createButton: {\n padding: '12px 28px',\n border: 0,\n background: theme.palette.pieChartColors.chatbot,\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n cursor: 'pointer',\n color: 'white',\n margin: '30px auto 0',\n display: 'block',\n },\n paper: {\n padding: '30px 50px 24px',\n },\n buttonsHolder: {\n display: 'flex',\n justifyContent: 'space-around',\n padding: '16px 70px 24px',\n },\n deleteModalHeader: {\n textAlign: 'center',\n margin: '10px auto 0px',\n fontSize: '14px',\n fontFamily: 'Lato',\n color: theme.palette.text.header,\n },\n})\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles } from './languagesStyles'\n\nconst HeaderView = props => {\n const { classes, onButtonClick, availableLanguagesLength } = props\n return (\n
\n

Languages

\n {availableLanguagesLength > 0 && (\n
\n + Add Language\n
\n )}\n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(HeaderView)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles } from './languagesStyles'\n\nconst ActiveLanguagesListView = props => {\n const { children, title } = props\n\n return (\n
\n

{title}

\n
\n {children}\n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(ActiveLanguagesListView)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles } from './languagesStyles'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport Modal from '../../../../uiKit/Modal'\n\nconst RowView = props => {\n const {\n classes,\n language,\n index,\n onLanguageDelete,\n deleteModal,\n setDeleteModal,\n } = props\n const isEven = index % 2 === 0\n\n return (\n
\n

{language.fullName}

\n {!language.isDefault && (\n
\n setDeleteModal(language.shortName)}\n className={classes.deleteLanguageBtn}>\n Delete\n

\n setDeleteModal(null)}>\n

\n Are you sure you want to delete {language.fullName} language?\n

\n
\n {\n onLanguageDelete(language.shortName)\n setDeleteModal(false)\n }}\n empty\n title=\"Delete\"\n />\n setDeleteModal(null)}\n title=\"Cancel\"\n />\n
\n \n
\n )}\n
\n )\n}\n\nexport default withStyles(styles, { withTheme: true })(RowView)\n","import React from 'react'\nimport Select from 'react-select'\nimport { connect } from 'react-redux'\nimport { withStyles } from '@material-ui/core'\n\nimport { styles } from './languagesStyles'\nimport { addOptions, removeOptionsFromLanguage } from './config'\nimport { addLanguage } from '../../api/settings'\n\nclass NewLanguageModal extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n selectedLanguage: null,\n isLanguageSelected: false,\n languageError: false,\n }\n }\n\n handleSelectedLanguage = language => {\n this.setState({\n selectedLanguage: language,\n isLanguageSelected: true,\n languageError: false,\n })\n }\n\n handleLanguageSubmit() {\n this.checkWhetherLanguageSelected()\n if (this.state.isLanguageSelected) {\n const selected = removeOptionsFromLanguage(this.state.selectedLanguage)\n this.props.setActiveLoader(true)\n addLanguage(this.props.activeBot.id, selected.shortName).then(\n response => {\n this.props.setActiveLoader(false)\n if (response.ok) {\n this.props.updateSelectedLanguage(selected)\n }\n },\n )\n this.props.closeAddLanguageModal()\n }\n }\n\n checkWhetherLanguageSelected() {\n if (this.state.selectedLanguage !== null) {\n this.setState({\n isLanguageSelected: true,\n languageError: false,\n })\n } else {\n this.setState({\n isLanguageSelected: false,\n languageError: true,\n })\n }\n }\n\n render() {\n const { selectedLanguage } = this.state\n const { classes, availableLanguages } = this.props\n\n return (\n
\n

Add new language

\n

Language

\n \n {this.state.languageError && (\n

Language is not selected

\n )}\n \n Add\n \n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(NewLanguageModal),\n)\n","export const addOptions = languages => {\n const formattedLanguages = [...languages]\n return formattedLanguages.map(language => ({\n value: language.shortName,\n label: language.fullName,\n id: language.id,\n shortName: language.shortName,\n fullName: language.fullName,\n }))\n}\n\nexport const removeOptionsFromLanguage = language => {\n return {\n id: language.id,\n shortName: language.shortName,\n fullName: language.fullName,\n }\n}\n\nexport const removeLanguageFromArrayByShortName = (array, shortName) => {\n const newArray = [...array]\n newArray.forEach((language, index) => {\n if (language.shortName === shortName) {\n newArray.splice(index, 1)\n }\n })\n return newArray\n}\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport withStyles from '@material-ui/core/styles/withStyles'\n\nimport { styles } from './languagesStyles'\nimport HeaderView from './HeaderView'\nimport { deleteLanguage, getBotLanguages } from '../../api/settings'\nimport ActiveLanguagesListView from './ActiveLanguagesListView'\nimport RowView from './RowView'\nimport NewLanguageModal from './NewLanguageModal'\nimport Modal from '../../../../uiKit/Modal'\nimport Loader from '../../../../uiKit/loaders/loader'\n\nclass Languages extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n activeLoader: false,\n addLanguageModal: false,\n deleteLanguageModal: null,\n botDefaultLanguage: {},\n botActiveLanguagesList: [],\n botAvailableLanguagesList: [],\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n nextProps.botActiveLanguagesList &&\n nextProps.botActiveLanguagesList !== prevState.botActiveLanguagesList\n ) {\n return {\n botActiveLanguagesList: nextProps.botActiveLanguagesList,\n }\n }\n return null\n }\n\n componentDidMount() {\n getBotLanguages(this.props.activeBot.id).then(botLanguages => {\n if (botLanguages) {\n const { defaultLanguage, activeLanguages, availableLanguages } =\n botLanguages\n\n this.setState({\n botDefaultLanguage: defaultLanguage,\n botActiveLanguagesList: activeLanguages,\n botAvailableLanguagesList: availableLanguages,\n })\n }\n })\n }\n\n setActiveLoader = active => {\n this.setState({\n activeLoader: active,\n })\n }\n\n setAddLanguageModal = value => {\n this.setState({\n addLanguageModal: value,\n })\n }\n\n setDeleteLanguageModal = value => {\n this.setState({\n deleteLanguageModal: value,\n })\n }\n\n deleteLanguage = shortName => {\n const newBotActiveLanguagesList = this.state.botActiveLanguagesList.filter(\n language => language.shortName !== shortName,\n )\n this.setActiveLoader(true)\n deleteLanguage(this.props.activeBot.id, shortName).then(r => {\n this.setState({\n botActiveLanguagesList: newBotActiveLanguagesList,\n activeLoader: false,\n })\n })\n }\n\n addLanguageToBot = language => {\n const { botActiveLanguagesList } = this.state\n const present = botActiveLanguagesList.some(\n lan => lan.shortName === language.shortName,\n )\n\n if (!present) {\n botActiveLanguagesList.push(language)\n this.setState({\n botActiveLanguagesList: botActiveLanguagesList,\n })\n }\n }\n\n render() {\n const {\n botActiveLanguagesList,\n botAvailableLanguagesList,\n addLanguageModal,\n deleteLanguageModal,\n } = this.state\n const { classes } = this.props\n\n return (\n \n {this.state.activeLoader ? (\n \n ) : (\n \n this.setAddLanguageModal(true)}\n availableLanguagesLength={\n this.state.botAvailableLanguagesList.length\n }\n />\n \n {botActiveLanguagesList\n .filter(language => language !== null)\n .map((language, index) => (\n \n ))}\n this.setAddLanguageModal(false)}\n style={{ overflowY: 'visible' }}>\n this.setAddLanguageModal(false)}\n updateSelectedLanguage={this.addLanguageToBot}\n setActiveLoader={this.setActiveLoader}\n />\n \n \n \n )}\n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(Languages),\n)\n","import General from '../tabs/settings/components/general/General/General'\nimport Hours from '../tabs/settings/components/hours/Hours'\nimport NewPersistentMenu from '../tabs/settings/components/persistentMenu/PersistentMenu'\nimport Integrations from '../tabs/settings/components/integrations/NewIntegrations'\nimport Users from '../tabs/settings/components/users/Users'\nimport Languages from '../tabs/settings/components/languages/Languages'\n\nexport const settingsRoutes = [\n {\n path: 'general',\n name: 'General',\n component: General,\n },\n {\n path: 'languages',\n name: 'Languages',\n component: Languages,\n },\n {\n path: 'hours',\n name: 'Team Hours',\n component: Hours,\n },\n {\n path: 'users',\n name: 'Users',\n component: Users,\n },\n {\n path: 'integrations',\n name: 'Integrations',\n component: Integrations,\n },\n {\n path: 'persistent',\n name: 'Main Menu',\n component: NewPersistentMenu,\n },\n]\n","/**\n * Created by Admin on 26.02.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { HOME_PATH } from '../../configs'\nimport Headline from '../../uiKit/texts/Headline'\nimport Submenu from '../../uiKit/submenu/Submenu'\nimport { settingsRoutes } from '../../routes/settingsRoutes'\nimport { getBot } from '../home/api/bots'\nimport Loader from '../../uiKit/loaders/loader'\n\nconst styles = theme => ({})\n\nclass Settings extends React.Component {\n componentDidMount() {\n getBot(this.props.match.params.botId)\n }\n\n render() {\n const pathLink = `${HOME_PATH}/bot/${this.props.match.params.botId}/settings`\n const pathRoute = `${HOME_PATH}/bot/:botId/settings/`\n return (\n
\n {this.props.activeBot ? (\n
\n \n \n
\n ) : (\n \n )}\n
\n )\n }\n}\n\nSettings.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Settings)),\n)\n","import { store } from '../../../index'\n\nexport const SET_BOT_WIDGET = 'SET_BOT_WIDGET'\n\nexport const setBotWidget = botWidget => {\n store.dispatch({\n type: SET_BOT_WIDGET,\n botWidget,\n })\n}\n","import { setBotWidget } from '../actions/botWidget'\nimport {\n alertError,\n alertSuccess,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport { BASE_URL, BACKEND_URL } from '../../../configs'\nimport * as cookie from 'react-cookies'\n\nexport function getWidget(botId, language) {\n fetch(`${BASE_URL}/bot/${botId}/widget?language=${language}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setBotWidget(json)\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting widget info, please ping support!',\n )\n })\n}\nexport function updateWidget(botId, widget, language) {\n fetch(`${BASE_URL}/bot/${botId}/widget?language=${language}`, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'PUT',\n body: JSON.stringify(widget),\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(json => {\n setBotWidget(json)\n alertSuccess('Widget settings updated', 3000)\n })\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting widget info, please ping support!',\n )\n })\n}\n\nexport function handleDrop(file, callback) {\n fetch(`${BASE_URL}/file/widgetLogo`, {\n credentials: 'same-origin',\n method: 'POST',\n headers: { Authorization: 'Bearer ' + cookie.load('YWxpYWFkbWlu') },\n body: file,\n })\n .then(response =>\n (response.redirected\n ? (window.location.href = response.url)\n : response.text()),\n )\n .then(response => {\n callback(response)\n })\n .catch(error => {\n alertError('Fail. Try it later', 10000)\n })\n}\n\nexport const downloadWidget = botId => {\n window.open(`${BACKEND_URL}/downloadWidget/${botId}`, '_blank')\n}\n","/**\n * Created by Admin on 22.03.2018.\n */\n/**\n * @author Den Boyko\n * @version 1.0\n */\nimport React from 'react'\nimport Dropzone from 'react-dropzone'\nimport { withStyles } from '@material-ui/core/styles'\nimport { alertError } from '../../../api'\nimport { PhotoIcon } from '../../../uiKit/icons/Icons'\nimport { handleDrop } from '../api/widget'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n image: {\n width: 'auto',\n height: 'auto',\n maxWidth: '100%',\n maxHeight: '100%',\n margin: 'auto',\n },\n replace: {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n },\n svgWrap: {\n width: 40,\n height: 40,\n background: 'rgba(215, 216, 223, 0.5)',\n borderRadius: 10,\n alignItems: 'center',\n justifyContent: 'center',\n display: 'flex',\n },\n container: {\n background: '#FFFFFF',\n border: '1px dashed #D7D8DF',\n boxSizing: 'border-box',\n borderRadius: 10,\n width: '320px',\n maxWidth: 650,\n display: 'flex',\n justifyContent: 'center',\n padding: '24px 0',\n },\n upload: {\n color: theme.palette.primary.main,\n },\n containerEmpty: {\n padding: '47px 0 25px',\n display: 'flex',\n justifyContent: 'flex-start',\n },\n header: {\n margin: '16px 0 2px',\n fontFamily: 'Lato',\n fontWeight: 'bold',\n fontSize: 14,\n textAlign: 'center',\n color: theme.palette.text.header,\n },\n description: {\n margin: 0,\n fontFamily: 'Lato',\n fontSize: 12,\n textAlign: 'center',\n color: theme.palette.text.gray,\n },\n})\nclass DropzoneWidget extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n show: false,\n }\n }\n\n handleDrop = files => {\n if (files[0].size > 1048576) {\n alertError('File size should be less then 1 MB.', 10000)\n } else {\n const file = new FormData()\n file.append('file', files[0])\n handleDrop(file, response => this.props.onChange(response))\n }\n }\n\n render() {\n const { classes } = this.props\n return (\n \n \n \n {isStringEmpty(this.props.value) && (\n
\n
\n
\n \n
\n
\n\n

\n Drag and drop or\n Upload\n

\n

a 40x40px .jpeg or .png

\n
\n )}\n \n \n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(DropzoneWidget)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: theme.palette.primary.main,\n },\n red: {\n border: '1px solid #FF624C',\n color: theme.palette.alerts.error,\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: '10px 24px',\n maxHeight: 45,\n width: 320,\n },\n})\n\nclass InputContent extends React.Component {\n render() {\n const { classes, holderStyle } = this.props\n return (\n \n {this.props.children}\n \n )\n }\n}\n\nInputContent.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(InputContent))\n","/**\n * Created by Admin on 25.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport TabTemplate from '../TabTemplate'\nimport { CustomizationIcon } from '../../../../uiKit/icons/Icons'\nimport { Popover, withStyles } from '@material-ui/core'\nimport DropzoneWidget from '../DropzoneWidget'\nimport InputContent from '../../../../uiKit/inputs/InputContent'\nimport { SketchPicker } from 'react-color'\n\nconst styles = theme => ({\n title: {\n fontFamily: 'Lato',\n fontSize: 16,\n color: theme.palette.text.header,\n },\n color: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n})\n\nclass Customization extends React.Component {\n state = {\n open: false,\n color: this.props.widget.color,\n }\n\n toggle = () => {\n this.setState({\n open: !this.state.open,\n })\n }\n\n handleChange = (value, name) => {\n this.setState({\n [name]: value,\n })\n }\n\n render() {\n const { classes } = this.props\n const { open, color } = this.state\n return (\n ,\n description: 'Add your brand logo and colors',\n }}\n expanded={this.props.expanded}\n onChange={() => {\n this.props.handleChangeExpansion()\n }}>\n

Choose widget logo

\n
\n this.props.handleChange(imageUrl, 'imageUrl')}\n title=\"Click here to choose some image\"\n />\n
\n

Choose widget color

\n {\n this.anchorEl = node\n }}>\n this.handleChange(true, 'open')}>\n \n

{color}

\n
\n \n
\n {\n this.handleChange(false, 'open')\n this.props.handleChange(this.state.color, 'color')\n }}\n anchorEl={this.anchorEl}\n anchorReference=\"anchorEl\"\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n PaperProps={{\n style: {\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.222685)',\n borderRadius: 10,\n overflow: 'visible',\n },\n }}>\n this.handleChange(color.hex, 'color')}\n />\n \n \n \n )\n }\n}\n\nCustomization.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n botWidget: state.botWidget,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(Customization),\n ),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\n\nconst styles = theme => ({\n inputHolder: {\n border: '1px solid #C7CAD6',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: '10px 24px',\n maxHeight: 45,\n width: 400,\n '&:focus': {\n outline: 0,\n },\n },\n})\n\nclass InputNumber extends React.Component {\n handleChange(event) {\n const time = event.target.validity.valid\n ? event.target.value\n : this.props.value\n this.props.onChange(time)\n }\n\n render() {\n const { classes } = this.props\n return (\n {\n this.props.handleKeyPress(e)\n }}\n onBlur={e => {\n this.props.onBlur(e)\n }}\n value={this.props.value}\n min={0}\n />\n )\n }\n}\n\nInputNumber.propTypes = {\n classes: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(InputNumber))\n","import React from 'react'\nimport TabTemplate from '../TabTemplate'\nimport { DelayIcon } from '../../../../uiKit/icons/Icons'\nimport { FormControlLabel, RadioGroup, Radio } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { withStyles } from '@material-ui/core'\nimport InputNumber from '../../../../uiKit/inputs/InputNumber'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n title: {\n fontFamily: 'Lato',\n fontSize: 16,\n color: theme.palette.text.header,\n },\n color: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n rootRadio: {\n marginLeft: 13,\n color: theme.palette.primary.iconsGray,\n fontSize: 14,\n fontFamily: 'Lato',\n '&$checked': {\n color: theme.palette.primary.main,\n },\n },\n checked: {},\n '@global': {\n '.rootRadio label': {\n margin: '-4px 16px -4px -14px',\n },\n '.rootRadio span[class*=\"label\"]': {\n marginLeft: 8,\n },\n '.rootRadio span': {\n fontSize: 14,\n fontFamily: 'Lato',\n },\n },\n})\n\nconst defaultValues = [-1, 5, 10, 15]\n\nclass Delay extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n value: JSON.stringify(this.props.widget.popupDelay),\n time: JSON.stringify(this.props.widget.popupDelay),\n }\n }\n\n isDefault = value => {\n return defaultValues.find(item => {\n return item === value\n }) !== undefined\n ? true\n : false\n }\n\n componentDidMount() {\n const { widget } = this.props\n this.setState({\n value: this.isDefault(widget.popupDelay)\n ? JSON.stringify(widget.popupDelay)\n : 'custom',\n time: this.isDefault(widget.popupDelay)\n ? 0\n : JSON.stringify(widget.popupDelay),\n })\n }\n\n handleChange = e => {\n const valueRadio = e.target.value\n this.setState(\n {\n value: valueRadio,\n },\n () => {\n if (valueRadio !== 'custom') {\n this.props.handleChange(valueRadio, 'popupDelay')\n } else {\n // If valueRadio is 'custom', then send to API updated this.state.time, which was set in input under this\n // 'custom' radio button\n this.props.handleChange(this.state.time, 'popupDelay')\n }\n },\n )\n }\n\n render() {\n const { classes } = this.props\n return (\n ,\n description: 'Make your widget pop up automatically',\n }}\n expanded={this.props.expanded}\n onChange={this.props.handleChangeExpansion}>\n

\n Choose when the widget should appear automatically\n

\n
\n this.handleChange(e)}>\n \n }\n label=\"Don't appear automatically\"\n />\n \n }\n label=\"Appear after 5 sec\"\n />\n \n }\n label=\"Appear after 10 sec\"\n />\n \n }\n label=\"Appear after 15 sec\"\n />\n \n }\n label=\"Custom\"\n />\n \n }\n />\n {this.state.value === 'custom' && (\n {\n this.setState({\n time: value,\n })\n }}\n defaultValue={this.state.time}\n handleKeyPress={e => {\n if (\n e.charCode === 13 &&\n !isStringEmpty(e.target.value) &&\n /^[1-9]\\d*(\\.\\d+)?$/.test(e.target.value)\n ) {\n this.props.handleChange(this.state.time, 'popupDelay')\n }\n }}\n value={this.state.time}\n onBlur={e => {\n if (!isStringEmpty(e.target.value)) {\n this.props.handleChange(this.state.time, 'popupDelay')\n }\n }}\n />\n )}\n
\n \n )\n }\n}\n\nDelay.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n botWidget: state.botWidget,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(Delay)),\n)\n","/**\n * Created by Admin on 25.04.2018.\n */\nimport React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { Checkbox, FormControlLabel } from '@material-ui/core'\nimport InputHolder from '../../../../uiKit/inputs/InputHolder'\nimport { WelcomeIcon } from '../../../../uiKit/icons/Icons'\nimport TabTemplate from '../TabTemplate'\nimport Select from 'react-select'\nimport { isStringEmpty } from '../../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n title: {\n fontSize: 16,\n color: theme.palette.text.header,\n },\n color: {\n fontSize: 14,\n color: theme.palette.text.header,\n },\n description: {\n fontSize: 14,\n color: theme.palette.primary.text,\n marginTop: 16,\n },\n label: {\n fontSize: 14,\n marginLeft: -16,\n display: 'block',\n paddingTop: 16,\n color: theme.palette.primary.text,\n },\n rootCheckbox: {\n marginBottom: 0,\n color: theme.palette.primary.iconsGray,\n fontSize: 14,\n fontFamily: 'Lato',\n '&$checked': {\n color: theme.palette.primary.main,\n },\n },\n checked: {},\n '@global': {\n 'label.checkbox ': {\n marginBottom: -12,\n },\n },\n})\n\nclass WelcomeScreen extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n widget: this.props.widget,\n languageOptions: this.props.languageOptions,\n selectedLanguageOption: this.props.selectedOption,\n }\n }\n\n handleChange = (value, name) => {\n const widget = JSON.parse(JSON.stringify(this.props.widget))\n if (widget[name] === value) return\n widget[name] = value\n this.setState(\n {\n widget,\n },\n () => {\n this.props.handleChange(value, name)\n },\n )\n }\n\n render() {\n const { classes, widget, selectedLanguageOption } = this.props\n const isRtl = selectedLanguageOption && selectedLanguageOption.rtl\n\n return (\n ,\n description:\n 'Add a greeting text and input fields that will be shown at the first widget screen',\n }}\n expanded={this.props.expanded}\n onChange={this.props.handleChangeExpansion}>\n

Add a greeting text

\n
\n \n
\n {!(widget.inputEmail || widget.inputName) && (\n
\n

Widget Header

\n {\n this.setState({\n header: e.target.value,\n })\n }}\n maxLength={60}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(this.state.header, 'header')\n }\n }}\n onBlur={() => this.handleChange(this.state.header, 'header')}\n rtl={isRtl}\n />\n

Popup Text

\n {\n this.setState({\n popupText: e.target.value,\n })\n }}\n maxLength={60}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(this.state.popupText, 'popupText')\n }\n }}\n onBlur={() =>\n this.handleChange(this.state.popupText, 'popupText')\n }\n rtl={isRtl}\n />\n

Input Placeholder

\n {\n this.setState({\n inputPlaceholder: e.target.value,\n })\n }}\n maxLength={60}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(\n this.state.inputPlaceholder,\n 'inputPlaceholder',\n )\n }\n }}\n onBlur={() =>\n this.handleChange(\n this.state.inputPlaceholder,\n 'inputPlaceholder',\n )\n }\n rtl={isRtl}\n />\n
\n )}\n {(widget.inputEmail || widget.inputName) && (\n
\n

Widget Header

\n {\n this.setState({\n header: e.target.value,\n })\n }}\n maxLength={60}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(this.state.header, 'header')\n }\n }}\n onBlur={() => this.handleChange(this.state.header, 'header')}\n rtl={isRtl}\n />\n

Title

\n {\n this.setState({\n title: e.target.value,\n })\n }}\n maxLength={15}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(this.state.title, 'title')\n }\n }}\n onBlur={() => this.handleChange(this.state.title, 'title')}\n rtl={isRtl}\n />\n

Greeting Text

\n {\n this.setState({\n greetingText: e.target.value,\n })\n }}\n maxLength={50}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(this.state.greetingText, 'greetingText')\n }\n }}\n onBlur={() =>\n this.handleChange(this.state.greetingText, 'greetingText')\n }\n rtl={isRtl}\n />\n

Popup Text

\n {\n this.setState({\n popupText: e.target.value,\n })\n }}\n maxLength={60}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(this.state.popupText, 'popupText')\n }\n }}\n onBlur={() =>\n this.handleChange(this.state.popupText, 'popupText')\n }\n rtl={isRtl}\n />\n

Start Button

\n {\n this.setState({\n startButton: e.target.value,\n })\n }}\n maxLength={60}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(this.state.startButton, 'startButton')\n }\n }}\n onBlur={() =>\n this.handleChange(this.state.startButton, 'startButton')\n }\n rtl={isRtl}\n />\n

Start Label

\n {\n this.setState({\n startLabel: e.target.value,\n })\n }}\n maxLength={60}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(this.state.startLabel, 'startLabel')\n }\n }}\n onBlur={() =>\n this.handleChange(this.state.startLabel, 'startLabel')\n }\n rtl={isRtl}\n />\n

Input Placeholder

\n {\n this.setState({\n inputPlaceholder: e.target.value,\n })\n }}\n maxLength={60}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(\n this.state.inputPlaceholder,\n 'inputPlaceholder',\n )\n }\n }}\n onBlur={() =>\n this.handleChange(\n this.state.inputPlaceholder,\n 'inputPlaceholder',\n )\n }\n rtl={isRtl}\n />\n
\n )}\n {widget.inputEmail && (\n
\n

Email Placeholder

\n {\n this.setState({\n emailPlaceholder: e.target.value,\n })\n }}\n maxLength={60}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(\n this.state.emailPlaceholder,\n 'emailPlaceholder',\n )\n }\n }}\n onBlur={() =>\n this.handleChange(\n this.state.emailPlaceholder,\n 'emailPlaceholder',\n )\n }\n rtl={isRtl}\n />\n
\n )}\n {widget.inputName && (\n
\n

Name Placeholder

\n {\n this.setState({\n namePlaceholder: e.target.value,\n })\n }}\n maxLength={60}\n handleKeyPress={e => {\n if (e.charCode === 13 && !isStringEmpty(e.target.value)) {\n this.handleChange(\n this.state.namePlaceholder,\n 'namePlaceholder',\n )\n }\n }}\n onBlur={() =>\n this.handleChange(this.state.namePlaceholder, 'namePlaceholder')\n }\n rtl={isRtl}\n />\n
\n )}\n\n

\n Choose the input fields to start a chat\n

\n
\n \n this.handleChange(!widget.inputEmail, 'inputEmail')\n }\n value={widget.inputEmail}\n checked={widget.inputEmail}\n classes={{\n root: classes.rootCheckbox,\n checked: classes.checked,\n }}\n />\n }\n />\n Email input\n
\n
\n \n this.handleChange(!widget.inputName, 'inputName')\n }\n value={widget.inputName}\n checked={widget.inputName}\n classes={{\n root: classes.rootCheckbox,\n checked: classes.checked,\n }}\n />\n }\n />\n Name input\n
\n \n )\n }\n}\n\nWelcomeScreen.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n botWidget: state.botWidget,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(WelcomeScreen),\n ),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport { CloseIcon, PenIcon } from '../../../uiKit/icons/Icons'\n\nconst styles = theme => ({\n input: {\n outline: 'none',\n width: '100%',\n padding: '14px 24px',\n borderRadius: 10,\n fontSize: '14px',\n lineHeight: '19px',\n color: theme.palette.primary.text,\n border: `1px solid ${theme.palette.primary.contrastText}`,\n maxHeight: 45,\n '&:hover': {\n color: theme.palette.primary.dark,\n },\n '&:focus': {\n color: theme.palette.primary.main,\n border: '1px solid #C7CAD6',\n },\n },\n alert: {\n color: theme.palette.alerts.error,\n marginBottom: '0px',\n fontSize: 12,\n },\n error: {\n border: `1px solid ${theme.palette.alerts.error}`,\n color: theme.palette.alerts.error,\n outline: 'none',\n width: '100%',\n padding: '14px 24px',\n borderRadius: 10,\n fontSize: '14px',\n lineHeight: '19px',\n maxHeight: 45,\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n disabled: {\n border: '1px solid white',\n marginRight: 10,\n maxHeight: 45,\n },\n iconsHolder: {\n display: 'none',\n },\n none: {\n display: 'none',\n },\n editUrl: {\n display: 'none',\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n margin: '0 5px',\n },\n wrapper: {\n display: 'flex',\n flexAlign: 'center',\n },\n webUrls: {\n fontSize: 14,\n color: theme.palette.primary.main,\n cursor: 'pointer',\n '&:hover .iconsHolder': {\n display: 'flex',\n },\n },\n '@global': {\n '.iconsHolder': {\n display: 'none',\n },\n },\n})\n\nclass Url extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n text: null,\n }\n }\n\n deleteWebUrl(index, e) {\n const id = this.props.index\n this.props.deleteWebUrl(id, e)\n }\n\n handleText(value) {\n this.setState({\n text: value,\n })\n }\n\n componentDidMount() {\n this.setState({\n text: this.props.url,\n })\n }\n\n render() {\n const { classes, url, index, focus } = this.props\n const { text } = this.state\n return (\n
\n \n
\n this.props.editWebUrl(index, this.state.text)}\n onFocus={() => {\n if (!focus) {\n this.props.modifyInput(this.props.index)\n if (!text) this.handleText(url)\n }\n }}\n onChange={event => this.handleText(event.target.value)}\n onKeyPress={e => {\n if (e.charCode === 13)\n this.props.editWebUrl(index, this.state.text)\n }}\n value={text}\n className={classes.input}\n defaultValue={url}\n />\n
\n\n
\n {\n this.props.modifyInput(this.props.index)\n }}>\n \n
\n {\n this.deleteWebUrl(e, index)\n }}>\n \n
\n \n \n {this.props.error && (\n

\n {`Url '${this.props.invalidValue}' is invalid`}\n

\n )}\n \n )\n }\n}\n\nUrl.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(Url))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { withRouter } from 'react-router-dom'\nimport uuidv1 from 'uuid/v1'\nimport { EnterIcon } from '../../../uiKit/icons/Icons'\nimport Url from './Url'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\nimport { urlValidation } from '../../../helpers/urlValidation'\n\nconst styles = theme => ({\n input: {\n border: 'none',\n outline: 'none',\n width: '100%',\n borderRadius: '5px',\n fontSize: '14px',\n lineHeight: '19px',\n backgroundColor: 'white',\n color: theme.palette.primary.text,\n '&::placeholder': {\n color: theme.palette.primary.grayColor,\n },\n },\n red: {\n border: '1px solid #FF624C',\n color: '#FF624C',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: 10,\n maxHeight: 45,\n minWidth: '100%',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: 'max-content',\n borderRadius: '10px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: '10px 20px',\n maxHeight: 45,\n minWidth: '100%',\n },\n disabled: {\n border: '1px solid white',\n marginRight: 10,\n maxHeight: 45,\n },\n userSays: {\n fontSize: 14,\n color: '#1658F3',\n margin: '18px 0',\n },\n none: {\n display: 'none',\n },\n alert: {\n color: '#FF624C',\n marginBottom: '-10px',\n fontSize: 12,\n },\n})\n\nclass Urls extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n errorIndex: null,\n editInput: null,\n showNotification: false,\n invalidValue: null,\n valid: false,\n }\n }\n\n uniqueFind = (i, value) =>\n i.trim().toUpperCase() === value.trim().toUpperCase()\n\n checkIfUrlUnique = (item, text, current) => {\n const value = text.trim().toUpperCase()\n return (\n item.trim().toUpperCase() === value &&\n value !== current.trim().toUpperCase()\n )\n }\n\n editWebUrl(id, value) {\n const webUrls = [...this.props.websiteUrl]\n if (\n !urlValidation(value) ||\n webUrls.some(i => this.checkIfUrlUnique(i, value, webUrls[id]))\n ) {\n this.setState({\n invalidValue: value,\n errorIndex: id,\n })\n } else {\n if (this.state.errorIndex !== null) {\n this.setState({\n errorIndex: null,\n })\n }\n webUrls[id] = value\n this.modifyInput(null, this.props.handleChange(webUrls))\n }\n }\n\n deleteWebUrl(index) {\n const newWebsiteUrl = [...this.props.websiteUrl]\n newWebsiteUrl.splice(index, 1)\n this.modifyInput(null, this.props.handleChange(newWebsiteUrl))\n }\n\n handleChangeInput(e) {\n this.setState({\n valid: !isStringEmpty(e.target.value),\n text: e.target.value,\n })\n }\n\n pushUrl(websiteUrl) {\n const urls = [...this.props.websiteUrl]\n urls.push(websiteUrl)\n this.setState(\n {\n text: '',\n showInvalid: false,\n showNotification: false,\n valid: false,\n },\n this.props.handleChange(urls),\n )\n }\n\n addUrl = () => {\n const { text } = this.state\n if (isStringEmpty(text)) return\n if (!urlValidation(text)) {\n this.setState({\n invalidValue: text,\n showInvalid: true,\n showNotification: false,\n })\n return\n }\n if (!this.checkUnique(text)) {\n this.pushUrl(text)\n } else {\n this.setState({\n invalidValue: text,\n showInvalid: false,\n showNotification: true,\n })\n }\n }\n\n checkUnique(value) {\n if (this.props.websiteUrl.length === 0) return false\n return this.props.websiteUrl.some(i => this.uniqueFind(i, value))\n }\n\n modifyInput(id, callback) {\n this.setState(\n {\n editInput: id,\n errorIndex: null,\n },\n () => {\n callback && callback()\n },\n )\n }\n\n render() {\n const { classes, websiteUrl } = this.props\n const { valid, invalidValue } = this.state\n return (\n
\n
\n {\n if (\n (event.type === 'keypress' && event.charCode === 13) ||\n event.type === 'click'\n ) {\n this.addUrl()\n }\n }}\n onChange={event => this.handleChangeInput(event)}\n />\n {\n this.addUrl(e)\n }}\n className={`${classes.enter} enter`}>\n \n
\n
\n {this.state.showNotification && (\n

\n {`Website with url '${invalidValue}' already added`}\n

\n )}\n {this.state.showInvalid && (\n

{`Url '${invalidValue}' is invalid`}

\n )}\n \n {websiteUrl &&\n websiteUrl.map((url, id) => (\n this.modifyInput(id)}\n editWebUrl={(id, value) => this.editWebUrl(id, value)}\n deleteWebUrl={(id, e) => this.deleteWebUrl(id, e)}\n index={id}\n invalidValue={invalidValue}\n error={id === this.state.errorIndex}\n />\n ))}\n \n \n )\n }\n}\n\nUrls.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(Urls))\n","/**\n * Created by Admin on 25.04.2018.\n */\nimport React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport ReactTooltip from 'react-tooltip'\nimport { CopyToClipboard } from 'react-copy-to-clipboard'\nimport { LinkIcon } from '../../../../uiKit/icons/Icons'\nimport TabTemplate from '../TabTemplate'\nimport Urls from '../Urls'\nimport { alertSuccess } from '../../../../api'\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport { downloadWidget } from '../../api/widget'\nimport { BACKEND_URL } from '../../../../configs'\n\nconst styles = theme => ({\n title: {\n fontFamily: 'Lato',\n fontSize: 16,\n color: theme.palette.text.header,\n },\n color: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.text.header,\n },\n description: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.primary.text,\n marginTop: 16,\n },\n label: {\n fontFamily: 'Lato',\n fontSize: 14,\n marginLeft: -16,\n display: 'block',\n paddingTop: 16,\n color: theme.palette.primary.text,\n },\n save: {\n padding: '12px 35px',\n border: 0,\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n cursor: 'pointer',\n color: 'white',\n margin: '30px auto 0',\n display: 'block',\n },\n inputHolder: {\n border: '1px solid #C7CAD6',\n width: '400px',\n borderRadius: '10px',\n display: 'inline-block',\n justifyContent: 'space-between',\n backgroundColor: 'white',\n marginRight: 10,\n padding: '8px 10px',\n textOverflow: 'ellipsis',\n maxHeight: 43,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n rootCheckbox: {\n marginBottom: 0,\n color: theme.palette.primary.iconsGray,\n fontSize: 14,\n fontFamily: 'Lato',\n '&$checked': {\n color: theme.palette.primary.main,\n },\n },\n tooltip: {\n maxWidth: '80%',\n width: '400px',\n border: '1px solid #EBEBEF',\n boxSizing: 'border-box',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: '10px',\n zIndex: 9999,\n opacity: 1,\n cursor: 'pointer',\n },\n zipText: {\n fontFamily: 'Lato',\n fontSize: 14,\n color: theme.palette.primary.text,\n margin: '12px 0 16px',\n },\n '@global': {\n 'label.checkbox ': {\n marginBottom: -12,\n },\n },\n})\n\nclass WidgetConnection extends React.Component {\n handleWidgetDownload = () => {\n downloadWidget(this.props.match.params.botId)\n }\n\n handleChange = (value, name) => {\n const widget = JSON.parse(JSON.stringify(this.props.widget))\n if (widget[name] === value) return\n widget[name] = value\n this.props.handleChange(value, name)\n }\n\n render() {\n const { classes, activeBot } = this.props\n const { scriptChatbotUrl, websiteUrl } = this.props.widget\n\n // eslint-disable-next-line max-len\n const scriptSnipped = ``\n\n return (\n
\n ,\n description: 'Connect your chatbot to the website you own',\n }}\n expanded={this.props.expanded}\n onChange={this.props.handleChangeExpansion}>\n {websiteUrl !== undefined && (\n
\n

Provide your website URL

\n {\n this.handleChange(value, 'websiteUrl')\n }}\n websiteUrl={websiteUrl}\n />\n
{scriptSnipped}
\n \n Copy widget code snippet to clipboard and paste it in your\n website source code before closing\n \n </body>\n {' '}\n tag.\n \n\n \n this.setState({ copied: true })}>\n {\n alertSuccess('Copied!')\n }}\n />\n \n
\n
\n )}\n \n \n )\n }\n}\n\nWidgetConnection.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(WidgetConnection),\n ),\n)\n","/**\n * Created by Admin on 25.04.2018.\n */\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport { withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { getWidget, updateWidget } from '../api/widget'\nimport { withStyles } from '@material-ui/core'\nimport Headline from '../../../uiKit/texts/Headline'\nimport Customization from './tabs/Customization'\nimport Delay from './tabs/Delay'\nimport WelcomeScreen from './tabs/WelcomeScreen'\nimport WidgetConnection from './tabs/WidgetConnection'\nimport { getBotLanguages } from '../../settings/api/settings'\n\nconst styles = theme => ({\n wrapHeader: {\n display: 'flex',\n },\n description: {\n fontFamily: 'Lato',\n fontSize: 12,\n color: theme.palette.text.gray,\n marginBottom: 0,\n },\n name: {\n fontFamily: 'Lato',\n fontSize: 18,\n marginBottom: 0,\n color: theme.palette.text.header,\n },\n mainWrap: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n leftContainer: {\n flexBasis: '60%',\n },\n})\nclass WidgetGenerator extends React.Component {\n state = {\n websiteUrl: '',\n expanded: null,\n }\n\n componentWillMount() {\n getWidget(this.props.match.params.botId, 'en')\n }\n\n componentDidMount() {\n this.setLanguageOptions(this.props.match.params.botId)\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.botWidget.length !== 0) {\n this.setState({\n widget: nextProps.botWidget,\n })\n }\n }\n\n setLanguageOptions = botId => {\n getBotLanguages(botId).then(botLanguages => {\n if (botLanguages.defaultLanguage) {\n const { defaultLanguage, activeLanguages } = botLanguages\n const selectedOption = {\n label: defaultLanguage.fullName,\n value: defaultLanguage.shortName,\n rtl: defaultLanguage.isRtl,\n }\n\n const languageOptions = activeLanguages.map(language => {\n return {\n label: language.fullName,\n value: language.shortName,\n rtl: language.isRtl,\n }\n })\n\n this.setState({\n languageOptions: languageOptions,\n selectedLanguageOption: selectedOption,\n })\n }\n })\n }\n\n handleSelectedLanguage = selectedLanguage => {\n if (this.state.selectedLanguageOption !== selectedLanguage) {\n this.setState({\n selectedLanguageOption: selectedLanguage,\n })\n\n const newWidget = getWidget(\n this.props.match.params.botId,\n selectedLanguage.value,\n )\n this.setState({\n widget: newWidget,\n })\n }\n }\n\n handleChange = (value, name) => {\n const widget = { ...this.state.widget }\n\n if (value === undefined || value === null || widget[name] === value) {\n return\n } else if (typeof value === 'string' && widget[name] === value.trim()) {\n return\n } else if (!isNaN(widget[name]) && widget[name] === +value) {\n return\n }\n\n widget[name] = value\n this.setState(\n {\n widget,\n },\n () => {\n updateWidget(\n this.props.activeBot.id,\n widget,\n this.state.selectedLanguageOption.value,\n )\n },\n )\n }\n\n handleChangeExpansion = expanded => {\n this.setState({\n expanded: expanded === this.state.expanded ? null : expanded,\n })\n }\n\n render() {\n const { classes } = this.props\n const { expanded, widget, languageOptions, selectedLanguageOption } =\n this.state\n return (\n
\n \n {this.state.widget !== undefined && (\n
\n
\n {\n this.handleChange(value, name)\n }}\n handleChangeExpansion={() => {\n this.handleChangeExpansion('panel1')\n }}\n expanded={expanded === 'panel1'}\n widget={widget}\n />\n {\n this.handleChange(value, name)\n }}\n handleChangeExpansion={() =>\n this.handleChangeExpansion('panel2')\n }\n expanded={expanded === 'panel2'}\n widget={widget}\n />\n {\n this.handleChange(value, name)\n }}\n handleChangeExpansion={() =>\n this.handleChangeExpansion('panel3')\n }\n expanded={expanded === 'panel3'}\n widget={widget}\n languageOptions={languageOptions}\n selectedLanguageOption={selectedLanguageOption}\n handleSelectedLanguage={this.handleSelectedLanguage}\n />\n {\n this.handleChange(value, name)\n }}\n handleChangeExpansion={() =>\n this.handleChangeExpansion('panel4')\n }\n expanded={expanded === 'panel4'}\n widget={widget}\n />\n
\n
\n )}\n
\n )\n }\n}\n\nWidgetGenerator.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n botWidget: state.botWidget,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(WidgetGenerator),\n ),\n)\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { withRouter } from 'react-router-dom'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './AnalyticsHeaderStyles'\nimport DateRangePicker from 'react-bootstrap-daterangepicker'\n\nconst AnalyticsHeader = props => {\n const { classes, startDate, endDate, ratingDistribution, setDate } = props\n const inputValue = `${startDate.format('YYYY-MM-DD')} - ${endDate.format(\n 'YYYY-MM-DD',\n )}`\n const score = Math.round(ratingDistribution.averageScore * 10) / 10\n\n const saveChanges = (event, picker) => {\n setDate(picker.startDate, picker.endDate)\n }\n\n return (\n
\n

Ratings and Reviews

\n \n \n \n
\n

\n Average rating\n {score}/5 \n \n

\n

\n Ratings\n {ratingDistribution.totalFeedbacks}\n

\n
\n
\n )\n}\n\nAnalyticsHeader.propTypes = {\n classes: PropTypes.object.isRequired,\n startDate: PropTypes.object.isRequired,\n endDate: PropTypes.object.isRequired,\n ratingDistribution: PropTypes.object.isRequired,\n setDate: PropTypes.func.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(AnalyticsHeader))\n","export const styles = () => ({\n header: {\n padding: '20px 40px 25px',\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)',\n display: 'flex',\n alignItems: 'center',\n '& .react-bootstrap-daterangepicker-container input': {\n margin: 0,\n },\n },\n title: {\n fontSize: 18,\n fontWeight: '700',\n marginRight: 16,\n margin: 0,\n display: 'inline',\n },\n rateWrap: {\n display: 'inline',\n color: 'rgba(53, 64, 82, 0.5)',\n fontSize: 12,\n '& span': {\n fontWeight: '700',\n color: '#3A3F62',\n fontSize: 14,\n },\n margin: 0,\n },\n rateContainer: {\n display: 'inline',\n '& p:first-child': {\n marginRight: 16,\n },\n },\n})\n","export const initialColors = [\n '#9bb3e4',\n '#9bb3e4',\n '#9bb3e4',\n '#9bb3e4',\n '#9bb3e4',\n]\n\nexport const initialDataSet = {\n labels: ['5 stars', '4 stars', '3 stars', '2 stars', '1 star'],\n datasets: [\n {\n backgroundColor: initialColors,\n borderColor: '#366ac9',\n borderWidth: 1,\n hoverBackgroundColor: initialColors,\n hoverBorderColor: '#366ac9',\n },\n ],\n}\n\nexport const chartOptions = {\n maintainAspectRatio: false,\n animation: { duration: 0 },\n hover: { animationDuration: 0 },\n responsiveAnimationDuration: 0,\n legend: { display: false },\n scales: {\n xAxes: [\n {\n gridLines: {\n display: false,\n },\n ticks: {\n beginAtZero: true,\n min: 0,\n },\n },\n ],\n },\n}\n","import React, { useState } from 'react'\nimport { HorizontalBar } from 'react-chartjs-2'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './ChartStyles'\nimport { initialColors, initialDataSet, chartOptions } from './ChartConfig'\n\nconst Chart = props => {\n const { data, classes, handleSelectedBar, selectedBar } = props\n const [dataSet, setDataSet] = useState(Object.assign({}, initialDataSet))\n const options = chartOptions\n\n dataSet.datasets[0].data = Object.values(data).reverse()\n\n options.onClick = function(evt, element) {\n if (element.length > 0) {\n const copyDataSet = Object.assign({}, dataSet)\n const formedIndex = Math.abs(5 - element[0]._index)\n\n copyDataSet.datasets[0].backgroundColor = [...initialColors]\n copyDataSet.datasets[0].hoverBackgroundColor = [...initialColors]\n\n if (selectedBar === formedIndex) {\n copyDataSet.datasets[0].backgroundColor[element[0]._index] = '#9bb3e4'\n copyDataSet.datasets[0].hoverBackgroundColor[element[0]._index] =\n '#9bb3e4'\n handleSelectedBar(null)\n } else {\n copyDataSet.datasets[0].backgroundColor[element[0]._index] = '#547ed0'\n copyDataSet.datasets[0].hoverBackgroundColor[element[0]._index] =\n '#547ed0'\n handleSelectedBar(formedIndex)\n }\n\n setDataSet(copyDataSet)\n }\n }\n\n return (\n
\n \n
\n )\n}\n\nChart.propTypes = {\n classes: PropTypes.object.isRequired,\n data: PropTypes.object.isRequired,\n handleSelectedBar: PropTypes.func,\n selectedBar: PropTypes.number,\n}\n\nexport default withStyles(styles)(Chart)\n","export const styles = () => ({\n container: {\n padding: '55px 48px 120px 24px',\n borderRight: '1px solid rgba(53, 64, 82, 0.1)',\n width: 'calc(100% - 398px)',\n cursor: 'pointer',\n },\n})\n","import { BACKEND_URL } from '../../../configs'\nimport {\n alertError,\n createJsonHeaders,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\n\nexport function getRatingDistribution(botId, fromDate, toDate) {\n const URL = `${BACKEND_URL}/bot/${botId}/analytics/feedback/ratingDistribution?from=${fromDate.format(\n 'YYYY-MM-DD',\n )}&to=${toDate.format('YYYY-MM-DD')}`\n\n return fetch(URL, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(res => res)\n .catch(function() {\n alertError('Fail. Try it later')\n })\n}\n\nexport function getComments(\n botId,\n fromDate,\n toDate,\n page,\n size,\n sortBy,\n sortDirection,\n score,\n) {\n let URL = `${BACKEND_URL}/bot/${botId}/analytics/feedback/comments?from=${fromDate.format(\n 'YYYY-MM-DD',\n )}&to=${toDate.format(\n 'YYYY-MM-DD',\n )}&page=${page}&size=${size}&sortBy=${sortBy}&sortDirection=${sortDirection}`\n\n if (score !== null) URL = URL.addQueryStringParameter('score', score)\n\n return fetch(URL, {\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n method: 'GET',\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .then(res => res)\n .catch(function() {\n alertError('Fail. Try it later')\n })\n}\n","export const styles = () => ({\n container: {\n backgroundColor: '#ffffff',\n borderRadius: '10px',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n width: 'calc(100% - 40px)',\n justifyContent: 'flex-start',\n maxHeight: '100%',\n display: 'flex',\n flexDirection: 'column',\n marginRight: 40,\n color: '#3A3F62',\n marginBottom: 26,\n },\n chartWrap: {\n display: 'flex',\n },\n noDataWrap: {\n height: 496,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n },\n noData: {\n color: 'rgba(53, 64, 82, 0.5)',\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nclass CheckIcon extends React.Component {\n render() {\n return (\n \n \n \n )\n }\n}\n\nexport default CheckIcon\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { withRouter } from 'react-router-dom'\n\nimport { styles } from './PopoverItemStyles'\nimport CheckIcon from '../../../../uiKit/icons/CheckIcon'\nimport PropTypes from 'prop-types'\n\nconst PopoverItem = props => {\n const { classes, label, showCheck, onClick } = props\n\n return (\n
\n {showCheck && } {label}\n
\n )\n}\n\nPopoverItem.propTypes = {\n classes: PropTypes.object.isRequired,\n label: PropTypes.string.isRequired,\n showCheck: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(PopoverItem))\n","export const styles = {\n filterItem: {\n height: 28,\n color: '#3A3F62',\n cursor: 'pointer',\n display: 'flex',\n fontSize: 14,\n alignItems: 'center',\n '&:hover': {\n backgroundColor: '#EBEBEF',\n },\n '& span': {\n width: 36,\n textAlign: 'center',\n },\n },\n}\n","import React, { Fragment, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { withRouter } from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport Popover from '@material-ui/core/Popover'\n\nimport { styles } from './CommentsFilterStyles'\nimport { CalendarIcon } from '../../../../uiKit/icons/Icons'\nimport PopoverItem from '../PopoverItem/PopoverItem'\nimport {\n ANCHOR_ORIGIN,\n DIRECTION_ASC,\n DIRECTION_DESK,\n SORT_DATE,\n SORT_SCORE,\n TRANSFORM_ORIGIN,\n} from './CommentsFilterConfig'\n\nconst CommentsFilter = props => {\n const { classes, sortDirection, setSortDirection, sortBy, setSortBy } = props\n const [target, setTarget] = useState(null)\n const [isOpenPopover, setOpenPopover] = useState(false)\n const sortLabel = sortBy === 'score' ? 'Rate' : 'Date'\n\n return (\n \n setOpenPopover(true)}\n ref={node => setTarget(node)}>\n \n \n {' '}\n Sort by: {sortLabel}\n \n setOpenPopover(!isOpenPopover)}\n anchorOrigin={ANCHOR_ORIGIN}\n transformOrigin={TRANSFORM_ORIGIN}>\n setSortBy(SORT_DATE.value)}\n />\n setSortBy(SORT_SCORE.value)}\n />\n\n
\n\n setSortDirection(DIRECTION_ASC.value)}\n />\n setSortDirection(DIRECTION_DESK.value)}\n />\n \n \n )\n}\n\nCommentsFilter.propTypes = {\n classes: PropTypes.object.isRequired,\n sortDirection: PropTypes.string.isRequired,\n setSortDirection: PropTypes.func.isRequired,\n sortBy: PropTypes.string.isRequired,\n setSortBy: PropTypes.func.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(CommentsFilter))\n","export const styles = () => ({\n selectButton: {\n cursor: 'pointer',\n borderRadius: 10,\n border: '1px solid #EBEBEF',\n color: '#616581',\n display: 'flex',\n alignItems: 'center',\n marginRight: 10,\n fontSize: 12,\n padding: '5px 7px',\n '& span': {\n paddingRight: 8,\n },\n },\n popover: {\n width: 135,\n height: 125,\n borderRadius: 4,\n boxShadow: '0px 1px 5px rgba(19, 69, 186, 0.241904)',\n padding: '6px 0px',\n },\n divider: {\n width: '100%',\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)',\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { withRouter } from 'react-router-dom'\nimport PropTypes from 'prop-types'\n\nimport { styles } from './CommentsListStyles'\nimport { getComments } from '../../api'\nimport {\n getSortingParams,\n saveSortBy,\n saveSortDirection,\n SIZE,\n} from './CommentsListConfig'\nimport CommentsFilter from '../CommentsFilter/CommentsFilter'\nimport Comment from '../Comment/Comment'\nimport LoaderSmall from '../../../../uiKit/loaders/loaderSmall'\n\nconst CommentsList = props => {\n const { classes, startDate, endDate, selectedBar } = props\n const { sortDirectionSaved, sortBySaved } = getSortingParams()\n const [sortDirection, setSortDirection] = useState(\n sortDirectionSaved || 'desc',\n )\n const [sortBy, setSortBy] = useState(sortBySaved || 'date')\n const [page, setPage] = useState(0)\n const [commentsList, setCommentsList] = useState([])\n const [hasNext, setHasNext] = useState(true)\n const [loading, setLoader] = useState(false)\n\n useEffect(() => {\n clearState()\n handleRequests(0, [], true, selectedBar)\n }, [sortBy, sortDirection, startDate, endDate, selectedBar])\n\n const handleScroll = ({ target }) => {\n const isBottom =\n target.scrollHeight - target.scrollTop === target.clientHeight\n\n if (isBottom && hasNext) {\n handleRequests(page, commentsList, false)\n }\n }\n\n const handleRequests = (page, commentsList, loading, score) => {\n const { botId } = props.match.params\n if (loading) setLoader(true)\n getComments(\n botId,\n startDate,\n endDate,\n page,\n SIZE,\n sortBy,\n sortDirection,\n score,\n )\n .then(res => {\n setCommentsList([...commentsList, ...res.feedbacks])\n setHasNext(res.hasNext)\n setPage(page + 1)\n })\n .then(() => setLoader(false))\n .catch(err => console.log(err))\n }\n\n const handleSortBy = sortBy => {\n saveSortBy(sortBy)\n setSortBy(sortBy)\n }\n\n const handleSortDirection = sortDirection => {\n saveSortDirection(sortDirection)\n setSortDirection(sortDirection)\n }\n\n const clearState = () => {\n setPage(0)\n setCommentsList([])\n setHasNext(true)\n }\n\n return (\n
\n
\n \n
\n {loading ? (\n
\n \n
\n ) : (\n
\n {commentsList &&\n commentsList.map(comment => (\n \n ))}\n
\n )}\n
\n )\n}\n\nCommentsList.propTypes = {\n classes: PropTypes.object.isRequired,\n startDate: PropTypes.object.isRequired,\n endDate: PropTypes.object.isRequired,\n selectedBar: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(CommentsList))\n","export const styles = () => ({\n container: {\n width: '398px',\n },\n header: {\n height: 56,\n borderBottom: '1px solid rgba(53, 64, 82, 0.1)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n },\n selectButton: {\n cursor: 'pointer',\n borderRadius: 10,\n border: '1px solid #EBEBEF',\n color: '#616581',\n display: 'flex',\n alignItems: 'center',\n marginRight: 10,\n fontSize: 12,\n padding: '5px 7px',\n '& span': {\n paddingRight: 8,\n },\n },\n commentsContainer: {\n display: 'flex',\n flexDirection: 'column',\n padding: '0px 38px',\n height: 440,\n overflow: 'auto',\n },\n loaderContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n height: 440,\n justifyContent: 'center',\n },\n})\n","export const SIZE = 10\n\nexport const saveSortDirection = sortDirection => {\n localStorage.setItem('sortDirection', sortDirection)\n}\n\nexport const saveSortBy = sortBy => {\n localStorage.setItem('sortBy', sortBy)\n}\n\nexport const getSortingParams = () => {\n return {\n sortDirectionSaved: localStorage.getItem('sortDirection'),\n sortBySaved: localStorage.getItem('sortBy'),\n }\n}\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport moment from 'moment'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nimport Headline from '../../uiKit/texts/Headline'\nimport AnalyticsHeader from './components/AnalyticsHeader/AnalyticsHeader'\nimport Chart from './components/Chart/Chart'\nimport { getRatingDistribution } from './api'\nimport { styles } from './components/AnalyticsStyles'\nimport CommentsList from './components/CommentsList/CommentsList'\n\nclass Analytics extends React.Component {\n state = {\n startDate: moment().subtract(1, 'month').add(1, 'day'),\n endDate: moment(),\n ratingDistribution: null,\n selectedBar: null,\n }\n\n componentDidMount() {\n this.handleRequests()\n }\n\n handleUpdateDate = (startDate, endDate) => {\n this.setState(\n {\n startDate,\n endDate,\n },\n this.handleRequests,\n )\n }\n\n handleRequests = () => {\n const { botId } = this.props.match.params\n const { startDate, endDate } = this.state\n\n getRatingDistribution(botId, startDate, endDate)\n .then(res => {\n this.setState({\n ratingDistribution: res,\n })\n })\n .catch(err => console.log(err))\n }\n\n handleSelectedBar = selectedBar => {\n this.setState({ selectedBar })\n }\n\n render() {\n const { classes } = this.props\n const { startDate, endDate, ratingDistribution, selectedBar } = this.state\n const isData =\n ratingDistribution &&\n Object.values(ratingDistribution.distribution).some(elem => elem !== 0)\n\n return (\n
\n \n {ratingDistribution && (\n
\n \n {isData ? (\n
\n \n \n
\n ) : (\n
\n

No data

\n
\n )}\n
\n )}\n
\n )\n }\n}\n\nAnalytics.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles)(Analytics))\n","export const ComponentNames = Object.freeze({\n Analytics: 'Analytics',\n Flows: 'Flows',\n Dashboard: 'Dashboard',\n NLP: 'NLP',\n Support: 'Support',\n Broadcasts: 'Broadcasts',\n Widget: 'Widget',\n BotSettings: 'Bot Settings',\n})\n","import React from 'react'\n\nimport {\n BroadcastIcon,\n DashboardIcon,\n FlowsIcon,\n NlpIcon,\n SettingsIcon,\n SupportIcon,\n WidgetIcon,\n AnalyticsIcon,\n} from '../uiKit/icons/Icons'\n\nimport Dashboard from '../tabs/dashboard/Dashboard'\nimport Builder from '../tabs/flowBuilder/Builder'\nimport NLP from '../tabs/nlp/NLP'\nimport ChatContainer from '../tabs/support/SupportContainer'\nimport Broadcasts from '../tabs/broadcast/Broadcasts'\nimport Settings from '../tabs/settings/Settings'\nimport WidgetGenerator from '../tabs/widget/components/Widget'\nimport Analytics from '../tabs/analytics/Analytics'\n\nimport { ComponentNames } from '../constants/componentNames'\n\nexport const mainRoutes = [\n {\n path: 'dashboard',\n icon: ,\n name: ComponentNames.Dashboard,\n component: Dashboard,\n },\n {\n path: 'analytics',\n icon: ,\n name: 'Analytics',\n component: Analytics,\n },\n {\n path: 'flows',\n icon: ,\n name: ComponentNames.Flows,\n component: Builder,\n },\n {\n path: 'nlp',\n icon: ,\n name: ComponentNames.NLP,\n component: NLP,\n },\n {\n path: 'support',\n icon: ,\n name: ComponentNames.Support,\n component: ChatContainer,\n },\n {\n path: 'broadcast',\n icon: ,\n name: ComponentNames.Broadcasts,\n component: Broadcasts,\n },\n {\n path: 'widget',\n icon: ,\n name: ComponentNames.Widget,\n component: WidgetGenerator,\n },\n {\n path: 'settings',\n icon: ,\n name: ComponentNames.BotSettings,\n component: Settings,\n },\n]\n","import React from 'react'\nimport { Icon404 } from '../../uiKit/icons/Icons'\nimport { Redirect, withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles/index'\nimport { HOME_PATH } from '../../configs'\nimport { styles } from './styles'\n\nclass PermissionDenied extends React.Component {\n state = {\n redirect: false,\n }\n\n render() {\n if (this.state.redirect) {\n return (\n \n )\n }\n\n const { classes } = this.props\n return (\n
\n
\n
\n \n
\n
\n

Page not found...

\n

\n We're unable to find a page you're looking for. Please go back to\n the Dashboard.\n

\n
\n this.setState({ redirect: true })}>\n Back to Dashboard\n \n
\n
\n )\n }\n}\n\nexport default withRouter(withStyles(styles)(PermissionDenied))\n","export const styles = () => ({\n heading: {\n fontSize: 36,\n color: '#3A3F62',\n marginTop: 64,\n },\n paragraph: {\n fontSize: 14,\n textAlign: 'center',\n color: '#616581',\n margin: '16px auto 24px',\n },\n main: {\n display: 'flex',\n justifyContent: 'center',\n height: '100vh',\n flexDirection: 'column',\n width: '100%',\n alignItems: 'center',\n },\n back: {\n padding: '13px 28px',\n border: 0,\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n cursor: 'pointer',\n color: 'white',\n margin: '30px auto 0',\n display: 'block',\n },\n})\n","/* eslint-disable */\nimport React from 'react'\n\nexport const RobotIcon = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nimport { HOME_PATH } from '../../configs'\n\nimport { RobotIcon } from '../../uiKit/icons/Robot'\n\nimport { styles } from './styles'\n\nconst ErrorScreen = props => {\n const { classes, activeBot } = props\n\n const handleClick = () => {\n window.location.href = `${HOME_PATH}/bot/${activeBot.id}/dashboard`\n }\n\n return (\n
\n \n

Whoops!

\n

Something went wrong

\n

\n If this problem persists, please contact our Support Team.\n

\n \n
\n )\n}\n\nErrorScreen.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({ activeBot: state.activeBot })\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(ErrorScreen)),\n)\n","export const styles = () => ({\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'column',\n height: '100%',\n marginRight: 40,\n },\n title: {\n fontSize: 36,\n color: '#3A3F62',\n fontWeight: 700,\n margin: '64px 0px 8px',\n },\n subtitle: {\n fontSize: 18,\n color: '#354052',\n fontWeight: 400,\n margin: '0px 0px 16px',\n },\n text: {\n color: 'rgb(53,64,82,0.7)',\n fontSize: 14,\n margin: '0px 0px 24px',\n },\n button: {\n padding: '13px 28px',\n border: 0,\n background: '#1658F3',\n boxShadow: '0px 3px 9px rgba(19, 69, 186, 0.206267)',\n borderRadius: 10,\n cursor: 'pointer',\n color: 'white',\n margin: '30px auto 0',\n display: 'block',\n },\n})\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\n\nimport ErrorScreen from '../ErrorScreen/ErrorScreen'\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n hasError: false,\n }\n }\n\n static getDerivedStateFromError() {\n return { hasError: true }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.props.location.pathname !== prevProps.location.pathname) {\n this.setState({ hasError: false })\n }\n }\n\n render() {\n if (this.state.hasError) {\n return \n }\n\n return this.props.children\n }\n}\n\nexport default withRouter(ErrorBoundary)\n","import { store } from '../../../index'\n\nexport const SAVE_ACCOUNT_SETTINGS = 'SAVE_ACCOUNT_SETTINGS'\n\nexport const saveAccountSettings = accountSettings =>\n store.dispatch({\n type: SAVE_ACCOUNT_SETTINGS,\n accountSettings,\n })\n","import { BASE_URL } from '../../../configs'\n\nimport { saveAccountSettings } from '../actions/account'\nimport {\n createJsonHeaders,\n alertError,\n alertSuccess,\n logoutOnRequestOrResponseJson,\n} from '../../../api'\nimport * as cookie from 'react-cookies'\n\nexport const getAccountSettings = adminId => {\n return fetch(`${BASE_URL}/admin/settings/${adminId}`, {\n method: 'GET',\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n })\n .then(response => {\n if (!response.ok) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n return\n }\n\n return response.json()\n })\n .then(response => saveAccountSettings(response))\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport const updateAccountSettings = (adminId, body) => {\n return fetch(`${BASE_URL}/admin/settings/${adminId}`, {\n method: 'PUT',\n credentials: 'same-origin',\n headers: createJsonHeaders(),\n body: JSON.stringify(body),\n })\n .then(response => {\n if (!response.ok) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n return\n }\n alertSuccess(\"User's settings has been successfully updated.\", 3000)\n\n return response.json()\n })\n .then(response => saveAccountSettings(response))\n .catch(function(error) {\n alertError(\n 'Sorry but something going wrong at getting intents please ping support!',\n )\n })\n}\n\nexport const dropImage = files => {\n const file = new FormData()\n file.append('file', files[0])\n return fetch(BASE_URL + '/file', {\n credentials: 'same-origin',\n method: 'POST',\n headers: { Authorization: 'Bearer ' + cookie.load('YWxpYWFkbWlu') },\n body: file,\n })\n .then(response => logoutOnRequestOrResponseJson(response))\n .catch(function(error) {\n alertError('Fail. Try it later', 10000)\n })\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport { NavLink } from 'react-router-dom'\nimport {\n Button,\n MenuItem,\n ClickAwayListener,\n Grow,\n Paper,\n Popper,\n MenuList,\n Switch,\n} from '@material-ui/core'\n\nimport { access } from '../../../../security'\n\nimport { DownArrowIcon } from '../../../../uiKit/icons/Icons'\n\nimport { getAccountSettings, updateAccountSettings } from '../../api/account'\nimport { loadBotAccessors } from '../../../settings/api/settings'\nimport { logout } from '../../../authorization/actions/security'\n\nconst imgContainerStyles = {\n position: 'relative',\n}\n\nconst statusStyles = {\n position: 'absolute',\n boxSizing: 'border-box',\n width: 10,\n height: 10,\n border: '2px solid #ffffff',\n borderRadius: '50%',\n bottom: 0,\n}\n\nconst baseImage = '/images/platform/default-user-icon.svg'\n\nexport const UserMenu = props => {//NOSONAR\n const [open, setOpen] = useState(false)\n const [adminId, setAdminId] = useState(props.adminUser && props.adminUser.id)\n const anchorRef = useRef(null)\n const getImage = props?.accountSettings?.imageUrl || baseImage\n const activeColor = props?.accountSettings?.active ? '#11C314' : '#969DA8'\n const isLoader = props?.accountSettings\n\n useEffect(() => {\n if (!props.adminUser) {\n access.loadRole()\n return\n }\n\n if (!props.accountSettings || props.accountSettings.length === 0) {\n getAccountSettings(props.adminUser.id)\n }\n }, [])\n\n useEffect(() => {\n if (adminId === (props.adminUser && props.adminUser.id)) {\n return\n }\n\n if (props.adminUser && props.adminUser.id) {\n getAccountSettings(props.adminUser.id)\n setAdminId(props.adminUser.id)\n }\n }, [JSON.stringify(props.adminUser)])\n\n const handleToggle = () => {\n setOpen(!open)\n }\n\n const handleClose = event => {\n // if (anchorRef.current && anchorRef.current.contains(event.target)) {\n // return;\n // }\n\n setOpen(false)\n }\n\n const handleLogout = () => {\n logout()\n handleClose()\n }\n\n const handleChangeStatus = () => {\n updateAccountSettings(props.adminUser.id, {\n ...props.accountSettings,\n active: !props.accountSettings.active,\n }).then(() => {\n if (props.botId) {\n loadBotAccessors(props.botId)\n }\n })\n }\n\n function handleListKeyDown(event) {\n if (event.key === 'Tab') {\n event.preventDefault()\n setOpen(false)\n }\n }\n\n // return focus to the button when we transitioned from !open -> open\n const prevOpen = useRef(open)\n\n useEffect(() => {\n if (prevOpen.current === true && open === false) {\n // anchorRef.current.focus();\n }\n\n prevOpen.current = open\n }, [open])\n\n return (\n <>\n {isLoader && (\n
\n \n \n
\n \n \n
\n {props.accountSettings &&

{props.accountSettings.name}

}\n \n \n \n \n \n {({ TransitionProps, placement }) => (\n \n \n \n \n I am available\n \n \n {props.location.pathname !== '/account-settings' &&\n props.redirectToAccountSettings && (\n \n Account Settings\n \n )}\n\n {props.location.pathname !== '/account-settings' &&\n !props.redirectToAccountSettings && (\n \n \n Account Settings\n \n \n )}\n \n Log out\n \n \n \n \n )}\n \n
\n
\n )}\n \n )\n}\n","import { withStyles } from '@material-ui/core'\nimport { withRouter } from 'react-router-dom'\n\nimport { styles } from './styles'\nimport { UserMenu as View } from './UserMenu'\nimport { connect } from 'react-redux'\n\nconst mapStateToProps = state => ({\n adminUser: state.adminUser,\n accountSettings: state.account,\n})\n\nexport const UserMenu = withRouter(\n withStyles(styles)(connect(mapStateToProps)(View)),\n)\n","export const styles = theme => ({\n root: {\n display: 'flex',\n position: 'relative',\n },\n button: {\n height: '100%',\n padding: '0 10px',\n fontSize: 16,\n color: '#3A3F62',\n fontWeight: 'bold',\n textTransform: 'none',\n fontFamily: \"'Lato', sans-serif\",\n\n '& p': {\n margin: 0,\n },\n },\n paper: {\n marginRight: 0,\n },\n popper: {\n right: '0 !important',\n left: 'auto !important',\n top: '58px !important',\n },\n userImg: {\n display: 'block',\n width: 32,\n height: 32,\n borderRadius: '50%',\n marginRight: 5,\n },\n list: {\n padding: 0,\n },\n listItem: {\n padding: '8px 12px',\n color: '#354052',\n fontSize: 14,\n lineHeight: 20,\n\n '& a': {\n color: 'inherit',\n textDecoration: 'none',\n\n '&:hover': {\n textDecoration: 'none',\n },\n },\n },\n})\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport List from '@material-ui/core/List'\nimport Typography from '@material-ui/core/Typography'\nimport Divider from '@material-ui/core/Divider'\nimport {\n BrowserRouter,\n NavLink,\n Redirect,\n Route,\n Switch,\n withRouter,\n} from 'react-router-dom'\nimport { Button } from '@material-ui/core'\nimport { connect } from 'react-redux'\n\nimport { getBot } from '../../tabs/home/api/bots'\nimport { HOME_PATH, BACKEND_URL } from '../../configs'\nimport { getSupportRequests } from '../../tabs/support/api/support'\nimport { hasPermissionForBot } from '../../security'\nimport { mainRoutes } from '../../routes/mainRoutes'\nimport PermissionDenied from '../404/404'\nimport Loader from '../../uiKit/loaders/loader'\nimport WebSockets from '../../contexts/webSockets'\nimport { clearOldBot } from '../../tabs/home/actions/activeBot'\nimport ErrorBoundary from '../ErrorBoundary/ErrorBoundary'\nimport { UserMenu } from '../../tabs/account/components/UserMenu'\nimport { clearAttributes } from '../../tabs/settings/actions/attributes'\n\nconst styles = theme => ({\n root: {\n flexGrow: 1,\n zIndex: 1,\n overflow: 'hidden',\n position: 'relative',\n display: 'flex',\n marginTop: '0',\n height: '100vh',\n background: theme.palette.primary.background,\n },\n appFrame: {\n position: 'relative',\n display: 'flex',\n width: '100%',\n height: '100%',\n },\n flex: {\n flex: 1,\n },\n appBar: {\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n background: 'none',\n boxShadow: 'none',\n },\n appBarShift: {\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n menuButton: {\n marginLeft: 12,\n marginRight: 36,\n },\n hide: {\n display: 'none',\n },\n Toolbar: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '0 16px 0 116px',\n zIndex: 0,\n background: '#FFFFFF',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n fontFamily: 'Lato, sans-serif',\n ...theme.mixins.toolbar,\n },\n content: {\n width: 800,\n flexGrow: 1,\n backgroundColor: theme.palette.primary.background,\n paddingLeft: 40,\n // paddingRight: 12,\n marginTop: 65,\n overflowY: 'auto',\n },\n icon: {\n color: 'grey',\n },\n list: {\n width: 100,\n overflowY: 'auto',\n height: '100%',\n paddingTop: 64,\n },\n item: {\n paddingLeft: 16,\n },\n supportAmount: {\n top: 8,\n right: 30,\n borderRadius: 100,\n backgroundColor: theme.palette.alerts.error,\n fontSize: '12px',\n height: 20,\n width: 20,\n color: '#ffffff',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n },\n menuWrap: {\n background: 'linear-gradient(359.25deg, #5A98F7 49.98%, #1658F3 149.98%)',\n boxShadow: '0px 2px 23px rgba(0, 0, 0, 0.0593014)',\n zIndex: 9999,\n },\n listItem: {\n color: 'white',\n marginTop: 8,\n marginBottom: 8,\n fontSize: 12,\n },\n title: {\n fontWeight: 'bold',\n lineHeight: 'normal',\n fontSize: 16,\n color: '#3A3F62',\n },\n link: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n height: 75,\n paddingTop: 10,\n position: 'relative',\n '&:hover': {\n background: 'rgba(19,69,186,0.5)',\n transition: '0.3s all ease-in',\n '& svg path': {\n stroke: '#ffffff',\n background: 'rgba(19,69,186,0.5)',\n transition: '0.3s all ease-in',\n },\n },\n },\n activeLink: {\n background: 'rgba(19,69,186,0.5)',\n '& svg path': {\n stroke: '#ffffff',\n },\n },\n})\n\nclass MainMenu extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n open: false,\n redirectToBots: false,\n activeBot: null,\n ifCreateSocket: false,\n redirectToAccountSettings: false,\n }\n }\n\n componentDidMount() {\n getBot(this.props.match.params.botId)\n getSupportRequests(this.props.match.params.botId)\n }\n\n componentWillUnmount() {\n clearOldBot()\n clearAttributes()\n }\n\n redirectToBots() {\n this.setState({ redirectToBots: true })\n }\n\n redirectToAccountSettings = () => {\n this.setState({ redirectToAccountSettings: true })\n }\n\n render() {\n if (this.state.redirectToBots) {\n return \n }\n\n if (this.state.redirectToAccountSettings) {\n return (\n \n )\n }\n\n const { classes, activeBot, supportRequests } = this.props\n const pathLink = `${HOME_PATH}/bot/${this.props.match.params.botId}/`\n const pathRoute = `${HOME_PATH}/bot/:botId/`\n\n return (\n
\n {this.props.adminUser ? (\n \n \n
\n \n \n this.redirectToBots()}\n style={{\n fontFamily: 'Lato, sans-serif',\n padding: '0',\n margin: '0 24px 0 0',\n cursor: 'pointer',\n fontWeight: 400,\n color: '#1658F3',\n }}>\n Home\n

\n {this.props.activeBot && (\n \n {this.props.activeBot.name}\n \n )}\n
\n {activeBot &&\n activeBot.messengerConfigs &&\n activeBot.messengerConfigs.pageId && (\n \n \n \n Test in Messenger\n

\n \n \n )}\n {activeBot && (\n \n \n \n Test widget\n

\n \n \n )}\n\n \n
\n \n
\n
\n \n {mainRoutes.map(\n route =>\n hasPermissionForBot(\n this.props.match.params.botId,\n route.path,\n ) && (\n \n {route.path === 'support' && supportRequests ? (\n
\n {supportRequests}\n
\n ) : null}\n {route.icon}\n

{route.name}

\n \n ),\n )}\n
\n
\n \n
\n \n \n {mainRoutes.map(\n route =>\n hasPermissionForBot(\n this.props.match.params.botId,\n route.path,\n ) && (\n \n ),\n )}\n (\n \n )}\n />\n \n \n
\n
\n \n
\n ) : (\n \n )}\n
\n )\n }\n}\n\nMainMenu.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n}\n\nconst mapStateToProps = state => ({\n activeBot: state.activeBot,\n supportRequests: state.supportRequests,\n adminUser: state.adminUser,\n})\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(MainMenu)),\n)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { withStyles } from '@material-ui/core/styles'\nimport { cloneBot, createNewBotAPI } from '../api/bots'\nimport { connect } from 'react-redux'\n\nimport LoaderSmall from '../../../uiKit/loaders/loaderSmall'\nimport Input from '../../../uiKit/inputs/Input'\nimport SubmitButton from '../../../uiKit/buttons/SubmitButton'\nimport { isStringEmpty } from '../../../helpers/isStringEmpty'\n\nconst styles = theme => ({\n group: {\n marginLeft: 10,\n },\n description: {\n fontSize: 12,\n color: '#B0B2C0',\n fontFamily: 'Lato',\n marginBottom: 0,\n },\n root: {\n width: '100%',\n marginTop: 16,\n '& span': {\n fontSize: 14,\n color: '#616581',\n fontFamily: 'Lato',\n },\n '& label': {\n margin: '-4px 16px -4px -14px',\n },\n '& span[class*=\"label\"]': {\n marginLeft: 8,\n },\n '&>div>label>span[class*=\"checked\"]>span>svg': {\n color: '#1658F3',\n },\n '& span svg': {\n color: '#D7D8DF',\n },\n '& span svg path': {\n stroke: '1px solid #D7D8DF',\n },\n },\n borderLine: {\n borderBottom: '1px solid #EBEBEF',\n lineHeight: 0,\n margin: '24px 0 0',\n },\n modalHeading: {\n fontSize: '14px',\n lineHeight: '17px',\n fontFamily: 'Lato, \"sans-serif\"',\n color: '#3A3F62',\n margin: '24px 0 4px',\n },\n error: {\n color: theme.palette.alerts.error,\n marginBottom: '-10px',\n fontSize: 12,\n },\n buttonHolder: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n marginTop: 32,\n },\n})\n\nclass NewBotModal extends React.Component {\n checkInputFields = () => {\n let botError = false\n let botErrorType = 0\n let botErrorText = ''\n const { name, clientToken, developerToken } = this.state\n\n if (isStringEmpty(name)) {\n botError = true\n botErrorText = \"Name field can't be empty!\"\n } else if (this.checkBotName()) {\n botError = true\n botErrorText = 'Chatbot with such name already exists!'\n } else if (this.state.withDialogFlow === 'true') {\n if (isStringEmpty(clientToken)) {\n botError = true\n botErrorType = 1\n botErrorText = 'DialogFlow client token cannot be an empty field!'\n } else if (isStringEmpty(developerToken)) {\n botError = true\n botErrorType = 2\n botErrorText = 'DialogFlow developer token cannot be an empty field!'\n }\n }\n this.setState({\n botError,\n botErrorType,\n botErrorText,\n })\n return !botError\n }\n\n toggleLoader = () => {\n this.setState({ showLoader: !this.state.showLoader })\n }\n errorHandler = text => {\n this.setState({\n botError: true,\n botErrorText: text,\n showLoader: false,\n })\n }\n checkBotName = () => {\n return this.props.bots.find(\n bot =>\n bot.name.trim().toUpperCase() === this.state.name.trim().toUpperCase(),\n )\n }\n\n constructor(props) {\n super(props)\n this.state = {\n name: props.botName,\n botError: false,\n botErrorText: '',\n withDialogFlow: 'false',\n clientToken: '',\n developerToken: '',\n showLoader: false,\n buttonName: props.buttonName,\n }\n }\n\n onSubmit() {\n if (this.checkInputFields()) {\n const bot = {\n name: this.state.name,\n dialogflowDevToken: this.state.developerToken,\n dialogflowClientToken: this.state.clientToken,\n }\n this.toggleLoader()\n if (this.props.new) {\n createNewBotAPI(\n bot,\n () => this.props.onClose(),\n text => this.errorHandler(text),\n )\n } else {\n cloneBot(\n this.props.botId,\n bot,\n () => this.props.onClose(),\n text => this.errorHandler(text),\n )\n }\n }\n }\n\n handleChangeType(withDialogFlow) {\n const newState = { withDialogFlow }\n if (withDialogFlow === 'false') {\n newState.clientToken = ''\n newState.developerToken = ''\n newState.botError = false\n }\n this.setState({ ...newState })\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n \n this.setState({\n name: event.target.value,\n botError: isStringEmpty(event.target.value),\n })\n }\n />\n\n {this.state.botError && (\n

{this.state.botErrorText}

\n )}\n
\n this.onSubmit()}\n />\n
\n \n
\n )\n }\n}\n\nNewBotModal.propTypes = {\n classes: PropTypes.object,\n}\n\nconst mapStateToProps = state => ({\n bots: state.bots,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(NewBotModal),\n)\n","import React from 'react'\nimport { Popover, withStyles } from '@material-ui/core'\nimport { HOME_PATH } from '../../../configs'\nimport { NavLink, withRouter } from 'react-router-dom'\nimport { ThreeIcon } from '../../../uiKit/icons/Icons'\nimport { connect } from 'react-redux'\nimport ShareModal from './ShareModal'\nimport { hasPermissionForBot } from '../../../security'\nimport CloneModal from './NewBotModal'\nimport Modal from '../../../uiKit/Modal'\n\nconst styles = theme => ({\n '@global': {\n '.class*=[MuiListItem-button]:hover': {\n background: 'none',\n },\n '.rootElement > * ': {\n border: '1px solid #D7D8DF',\n boxShadow: '0px 1px 5px rgba(19, 69, 186, 0.241904)',\n borderRadius: 10,\n },\n '.icon:hover path': {\n stroke: 'rgb(58, 63, 98)',\n },\n },\n popover: {\n width: 145,\n height: 62,\n },\n button: {\n fontSize: 14,\n color: '#3A3F62',\n display: 'flex',\n alignItems: 'center',\n padding: '11px 24px',\n height: '50%',\n '&:hover': {\n background: 'rgba(90, 152, 247, 0.1)',\n },\n },\n container: {\n backgroundColor: theme.palette.background.paper,\n display: 'flex',\n flexWrap: 'wrap',\n padding: '40px',\n },\n bot: {\n width: '250px',\n maxWidth: '250px',\n boxSizing: 'border-box',\n height: '170px',\n flex: 'auto',\n margin: '10px',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n color: '#3A3F62!important',\n backgroundColor: '#ffffff',\n borderRadius: 10,\n fontSize: '16px',\n fontFamily: 'Lato, sans-serif',\n fontWeight: 'bold',\n display: 'flex !important',\n justifyContent: 'flex-start',\n padding: '24px !important',\n },\n menuButton: {\n marginLeft: -12,\n marginRight: 20,\n },\n})\n\nclass BotPlate extends React.Component {\n closeModal = () => {\n this.setState({\n openModal: false,\n openModalClone: false,\n })\n }\n\n toggle = value => {\n this.setState({\n open: value,\n })\n }\n\n constructor(props) {\n super(props)\n this.state = {\n totalUsers: 0,\n newUserToday: 0,\n open: false,\n openModal: false,\n openModalClone: false,\n }\n }\n\n render() {\n const { classes, bot } = this.props\n return (\n
\n this.props.switchBot(bot)}>\n
\n
\n
\n \n {bot.name}\n

\n
\n
\n
\n \n {hasPermissionForBot(bot.id, 'shareBot') && (\n {\n this.anchorEl = node\n }}\n onClick={() => {\n this.toggle(true)\n }}>\n \n
\n )}\n {\n this.toggle(false)\n }}>\n
\n {\n this.setState({\n openModal: true,\n open: false,\n })\n }}\n className={classes.button}>\n Share\n
\n {\n this.setState({\n openModalClone: true,\n open: false,\n })\n }}\n className={classes.button}>\n Clone\n
\n \n \n\n \n \n \n\n \n \n \n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n params: state.attributes,\n})\nexport default withRouter(\n withStyles(styles, { withTheme: true })(connect(mapStateToProps)(BotPlate)),\n)\n","/**\n * Created by Admin on 20.02.2018.\n */\nimport React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport Modal from '../../../uiKit/Modal'\nimport { PlusIcon } from '../../../uiKit/icons/Icons'\nimport NewBotModal from './NewBotModal'\n\nconst styles = theme => ({\n item: {\n width: '250px',\n height: '170px',\n background: 'linear-gradient(325.02deg, #5A98F7 0%, #1658F3 100%)',\n margin: '10px',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n borderRadius: 10,\n fontFamily: 'Lato, sans-serif',\n fontWeight: 'bold',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexFlow: 'column nowrap',\n cursor: 'pointer',\n },\n itemText: {\n margin: 0,\n maxWidth: '100%',\n color: theme.palette.primary.contrastText,\n },\n})\n\nclass CreateNewBot extends React.Component {\n state = {\n open: false,\n }\n\n handleOpen = () => {\n this.setState({ open: true })\n }\n\n handleClose = () => {\n this.setState({ open: false })\n }\n\n render() {\n const { classes } = this.props\n return (\n
\n
\n
\n \n
\n

Create a new bot

\n
\n\n \n \n \n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n bots: state.bots,\n})\n\nexport default withRouter(\n withStyles(styles)(connect(mapStateToProps)(CreateNewBot)),\n)\n","import { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\n\nimport { styles } from './styles'\nimport { HomeHeader as View } from './HomeHeader'\n\nconst mapStateToProps = state => ({\n accountSettings: state.account,\n})\n\nexport const HomeHeader = withStyles(styles)(connect(mapStateToProps)(View))\n","export const styles = theme => ({\n header: {\n height: 80,\n width: '100%',\n background: theme.palette.primary.contrastText,\n zIndex: 2,\n position: 'fixed',\n top: 0,\n left: 0,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n fontFamily: \"'Lato', sans-serif\",\n },\n headerInner: {\n position: 'relative',\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 20px',\n justifyContent: 'space-between',\n },\n title: {\n color: theme.palette.primary.headerText,\n fontSize: '16px',\n fontWeight: 'bold',\n lineHeight: '120%',\n margin: 0,\n },\n titleCenter: {\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n color: theme.palette.primary.headerText,\n fontSize: '16px',\n fontWeight: 'bold',\n lineHeight: '120%',\n },\n button: {\n height: '100%',\n padding: '0 10px',\n fontSize: 16,\n color: '#1658F3',\n fontWeight: 'bold',\n textTransform: 'none',\n fontFamily: \"'Lato', sans-serif\",\n textDecoration: 'none',\n\n '& svg': {\n marginRight: 4,\n },\n },\n})\n","import React from 'react'\nimport { NavLink } from 'react-router-dom'\n\nimport { UserMenu } from '../UserMenu'\nimport { LeftArrowIcon } from '../../../../uiKit/icons/Icons'\nimport { Button } from '@material-ui/core'\n\nexport const HomeHeader = props => {\n const isLoader = props.accountSettings\n\n return (\n
\n \n {props.backButton && (\n \n \n \n )}\n {isLoader && (\n \n {props.title}\n \n )}\n \n
\n \n )\n}\n","import React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport Headline from '../../../uiKit/texts/Headline'\nimport { HomeHeader } from '../../account/components/HomeHeader'\n\nconst styles = theme => ({\n flex: {\n marginLeft: '30px',\n flex: 1,\n },\n header: {\n height: 80,\n width: '100%',\n background: theme.palette.primary.contrastText,\n zIndex: 2,\n position: 'fixed',\n top: 0,\n left: 0,\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n fontFamily: \"'Lato', sans-serif\",\n },\n headerInner: {\n position: 'relative',\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n padding: '0 20px',\n justifyContent: 'flex-end',\n },\n title: {\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n color: theme.palette.primary.headerText,\n fontSize: '16px',\n fontWeight: 'bold',\n lineHeight: '120%',\n },\n container: {\n backgroundColor: theme.palette.primary.background,\n display: 'flex',\n flexDirection: 'column',\n padding: '80px 40px 40px',\n minHeight: '100vh',\n },\n content: {\n display: 'flex',\n flexWrap: 'wrap',\n height: '100%',\n },\n '@media (max-width: 991px)': {\n container: {\n padding: '90px 20px 20px !important',\n },\n },\n '@global': {\n '::-webkit-scrollbar': {\n width: 12,\n },\n\n '::-webkit-scrollbar-track': {\n borderRadius: 3,\n },\n\n '::-webkit-scrollbar-thumb': {\n borderRadius: 10,\n webkitBoxShadow: 'inset 0 0 6px rgba(24, 24, 24, 0.5)',\n backgroundColor: 'rgba(99, 99, 99, 0.2)',\n },\n },\n})\n\nclass Bots extends React.Component {\n state = {}\n\n render() {\n const { classes } = this.props\n\n return (\n
\n \n
\n \n
{this.props.children}
\n
\n
\n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(Bots)\n","/**\n * Created by Admin on 20.02.2018.\n */\nimport React from 'react'\nimport { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\nimport { clearAtom } from '../flowBuilder/actions/atom'\nimport { setActiveBot } from './actions/activeBot'\nimport { getBots } from './api/bots'\nimport BotPlate from './components/BotPlate'\nimport CreateNewBot from './components/CreateNewBot'\nimport Bots from './components/Bots'\n\nconst styles = theme => ({})\n\nclass Home extends React.Component {\n state = {\n open: true,\n }\n\n componentWillMount() {\n getBots()\n }\n\n handleChange(event, name) {\n this.setState({\n [name]: event.target.value,\n })\n }\n\n switchBot(bot) {\n setActiveBot(bot)\n clearAtom(0)\n }\n\n render() {\n const { bots } = this.props\n return (\n \n \n {bots.map(bot => (\n \n ))}\n \n )\n }\n}\n\nconst mapStateToProps = state => ({\n bots: state.bots,\n})\n\nexport default withStyles(styles, { withTheme: true })(\n connect(mapStateToProps)(Home),\n)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { showSnackBar } from '../../tabs/home/actions/snackBar'\nimport { Snackbar, withStyles } from '@material-ui/core'\n\nconst styles = theme => ({\n bodyProps: {\n width: '100%',\n height: 35,\n overflow: 'hidden',\n },\n snackBar: {\n padding: 0,\n display: 'flex',\n justifyContent: 'center',\n boxShadow: 'none',\n },\n message: {\n fontSize: 12,\n fontFamily: 'Lato',\n },\n success: {\n background: theme.palette.alerts.success,\n },\n error: {\n background: theme.palette.alerts.error,\n },\n})\n\nclass Notification extends Component {\n handleClose = (event, reason) => {\n if (\n reason === 'timeout' ||\n (reason === 'clickaway' && !this.props.snackBar.duration)\n ) {\n showSnackBar({\n open: false,\n })\n }\n }\n\n render() {\n const { snackBar, classes } = this.props\n return (\n
\n {snackBar.open && (\n \n {snackBar.text}\n \n }\n />\n )}\n
\n )\n }\n}\n\nconst mapStateToProps = state => ({\n snackBar: state.snackBar,\n})\n\nexport default withStyles(styles)(connect(mapStateToProps)(Notification))\n","import React, { Component } from 'react'\nimport { Redirect } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core/styles'\n\nconst styles = () => ({\n main: {\n width: '100%',\n minHeight: '100vh',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '32px',\n backgroundColor: '#F7FAFE',\n textAlign: 'center',\n },\n imageNotFound: {\n width: '150px',\n height: '150px',\n },\n titleClass: {\n fontSize: '36px',\n lineHeight: 1,\n color: '#3A3F62',\n margin: '64px 0 16px',\n fontWeight: 'bold',\n },\n paragraphClass: {\n fontSize: '14px',\n lineHeight: '20px',\n fontWeight: 'normal',\n margin: 0,\n color: '#616581',\n },\n\n backToDashboardButton: {\n height: '54px',\n borderRadius: '10px',\n border: 'none',\n fontWeight: 300,\n lineHeight: 'normal',\n fontSize: '16px',\n textAlign: 'center',\n padding: '0 25px',\n color: '#FFF',\n cursor: 'pointer',\n background: '#1658F3',\n boxShadow: '0 3px 9px rgba(19, 69, 186, 0.206267)',\n margin: '32px 0 0',\n '&:hover': {\n transform: 'scale(1.05)',\n transition: '.1s ease-in-out',\n },\n },\n})\n\nclass Unavailable extends Component {\n constructor(props) {\n super(props)\n this.state = {\n redirectToAdmin: false,\n }\n }\n\n handleGoDashboard = () => {\n this.setState({ redirectToAdmin: true })\n }\n\n render() {\n const { classes } = this.props\n if (this.state.redirectToAdmin) {\n return \n }\n return (\n
\n \n\n

\n Sorry, this link is not available anymore\n

\n\n {this.props.linkExpired !== true && (\n

\n You've already been invited to the BotsCrew Enterprise Platform.\n Enjoy!\n

\n )}\n\n \n Back to Dashboard\n \n
\n )\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(Unavailable)\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { SERVER_URL } from '../../../configs'\n\nclass MobileSupport extends React.Component {\n async componentDidMount() {\n const html = await fetch(\n `${SERVER_URL}${this.props.match.url}${this.props.location.search}`,\n ).then(response => {\n return response.text()\n })\n window.document.write(html)\n }\n\n render() {\n return null\n }\n}\n\nexport default withRouter(MobileSupport)\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport Redirect from 'react-router-dom/es/Redirect'\nimport { BACKEND_URL } from '../../../configs'\nimport cookie from 'react-cookies'\nimport { authenticate } from '../actions/security'\nimport Unavailable from '../../../containers/Unavailable/Unavailable'\nimport LoaderSmall from '../../../uiKit/loaders/loaderSmall'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nconst styles = theme => ({\n loader: {\n display: 'flex',\n width: '100%',\n minHeight: '100vh',\n justifyContent: 'center',\n alignItems: 'center',\n },\n})\n\nclass EmailConfirmation extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n confirmed: false,\n invalidLink: false,\n }\n }\n\n componentDidMount() {\n this.getConfirmationStatus()\n }\n\n getConfirmationStatus() {\n const token = this.parseQueryParams(this.props.location.search).get('t') // Get token from query parameter 't'\n fetch(`${BACKEND_URL}/signUp/confirmEmail/${token}`, {\n method: 'POST',\n }).then(response => {\n if (response.ok) {\n response.json().then(body => {\n if (body.success) {\n // On success, save the token and authenticate a user\n cookie.save('YWxpYWFkbWlu', token, { path: '/' })\n authenticate(token)\n this.setState({\n confirmed: true,\n })\n } else {\n // On failure\n this.setState({\n invalidLink: true,\n })\n }\n })\n }\n })\n }\n\n parseQueryParams(location) {\n return new Map(\n location\n .slice(1)\n .split('&')\n .map(param => param.split('=')),\n )\n }\n\n render() {\n const { classes } = this.props\n const { confirmed, invalidLink } = this.state\n if (confirmed) {\n // If confirmed, then redirect to home page\n return \n } else if (invalidLink) {\n // Otherwise, show that link is expired\n return \n } else {\n // Show loader while the data is coming from backend\n return (\n
\n \n
\n )\n }\n }\n}\n\nEmailConfirmation.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(\n withStyles(styles, { withTheme: true })(EmailConfirmation),\n)\n","import React from 'react'\nimport { withRouter } from 'react-router-dom'\nimport { withStyles } from '@material-ui/core'\nimport PropTypes from 'prop-types'\n\nconst styles = () => ({\n main: {\n padding: '50px 60px',\n background: '#F7FAFE',\n width: '100%',\n height: '100vh',\n },\n container: {\n background: '#ffffff',\n borderRadius: '10px',\n boxShadow: '4px 4px 29px rgba(19, 69, 186, 0.0855129)',\n width: '512px',\n height: '274px',\n margin: '0 auto',\n display: 'flex',\n padding: '15px',\n },\n innerContainer: {\n margin: 'auto',\n textAlign: 'center',\n },\n font: {\n fontFamily: 'Lato',\n fontStyle: 'normal',\n },\n title: {\n fontWeight: 'bold',\n lineHeight: 'normal',\n fontSize: '36px',\n color: '#3A3F62',\n },\n text: {\n fontWeight: 'normal',\n lineHeight: '25px',\n fontSize: '16px',\n color: '#727689',\n },\n emailText: {\n fontWeight: 'bold',\n lineHeight: '28px',\n fontSize: '18px',\n color: '#1658F3',\n },\n})\n\nclass AfterSignUp extends React.Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n let email\n if (this.props.location.state) {\n email = this.props.location.state.email\n }\n const { classes } = this.props\n return (\n
\n
\n
\n

\n You're almost done!\n

\n

\n We've sent a confirmation email\n {email && (\n \n {' '}\n to\n \n {' '}\n {email}\n \n \n )}\n
\n Please check your inbox and finish the registration.\n

\n
\n
\n
\n )\n }\n}\n\nAfterSignUp.propTypes = {\n classes: PropTypes.object.isRequired,\n}\n\nexport default withRouter(withStyles(styles, { withTheme: true })(AfterSignUp))\n","import styled from 'styled-components'\nimport { Slide, ToastContainer } from 'react-toastify'\nimport 'react-toastify/dist/ReactToastify.css'\n\nexport const StyledToastContainer = styled(ToastContainer).attrs({\n position: 'top-right',\n transition: Slide,\n draggable: true,\n newestOnTop: true,\n hideProgressBar: true,\n})`\n .Toastify__toast {\n border-radius: 10px;\n top: 4em;\n background-color: #5a98f7;\n padding: 14px 18px;\n }\n .Toastify__toast-body {\n font-size: 16px;\n font-family: Lato, sans-serif;\n }\n`\n","import { withStyles } from '@material-ui/core'\n\nimport { styles } from './styles'\n\nimport { UserImageDropzone as View } from './UserImageDropzone'\n\nexport const UserImageDropzone = withStyles(styles)(View)\n","export const styles = () => ({\n image: {\n display: 'block',\n width: '100%',\n height: '100%',\n margin: 'auto',\n objectFit: 'cover',\n objectPosition: 'top',\n },\n dropzone: {\n display: 'flex',\n position: 'relative',\n width: 120,\n height: 120,\n borderRadius: '50%',\n overflow: 'hidden',\n cursor: 'pointer',\n },\n hoverBlock: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n position: 'absolute',\n width: '100%',\n height: '100%',\n background:\n 'linear-gradient(0deg, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)), url(.png)',\n color: '#ffffff',\n textAlign: 'center',\n opacity: 0,\n transition: 'opacity .2s ease-out',\n\n '& p': {\n margin: '4px 0 0',\n fontSize: 14,\n lineHeight: '120%',\n },\n\n '&:hover': {\n opacity: 1,\n },\n },\n})\n","import React, { useEffect, useState } from 'react'\nimport Dropzone from 'react-dropzone'\n\nimport { dropImage } from '../../api/account'\n\nimport { EditIcon } from '../../../../uiKit/icons/Icons'\n\nimport LoaderOverlay from '../../../../uiKit/loaders/loaderOverlay'\nimport { acceptedFormat, baseSupportImage } from './config'\n\nexport const UserImageDropzone = props => {\n const { classes } = props\n const [attachmentImage, setAttachmentImage] = useState(props.imageUrl)\n const [isLoading, setIsLoading] = useState(false)\n\n const getImg = attachmentImage ? attachmentImage : baseSupportImage\n\n useEffect(() => {\n if (!attachmentImage) {\n return\n }\n\n props.setFormValue(attachmentImage)\n }, [attachmentImage])\n\n useEffect(() => {\n setAttachmentImage(props.imageUrl)\n }, [props.imageUrl])\n\n const handleDropImage = async files => {\n setIsLoading(true)\n props.handleDisableBtn(true)\n\n await dropImage(files).then(response => setAttachmentImage(response?.url))\n\n props.handleDisableBtn(false)\n setIsLoading(false)\n }\n\n return (\n \n {isLoading && }\n {!isLoading && \"file\"}\n
\n \n

Please choose a square photo

\n
\n \n )\n}\n","export const acceptedFormat = 'image/jpeg, image/png'\nexport const baseSupportImage = './images/platform/default-user-icon.svg'\n","import { withStyles } from '@material-ui/core'\nimport { connect } from 'react-redux'\n\nimport { styles } from './styles'\nimport { AccountSettingsForm as View } from './AccountSettingsForm'\n\nconst mapStateToProps = state => ({\n adminUser: state.adminUser,\n accountSettings: state.account,\n})\n\nexport const AccountSettingsForm = withStyles(styles)(\n connect(mapStateToProps)(View),\n)\n","import { EditIcon } from '../../../../uiKit/icons/Icons'\n\nexport const styles = theme => ({\n container: {\n backgroundColor: theme.palette.primary.background,\n display: 'flex',\n flexDirection: 'column',\n padding: '80px 40px 40px',\n minHeight: '100vh',\n position: 'relative',\n },\n title: {\n color: '#354052',\n margin: '40px 0',\n fontSize: 36,\n fontWeight: 700,\n lineHeight: '43px',\n },\n img: {\n display: 'block',\n width: 120,\n height: 120,\n borderRadius: '50%',\n cursor: 'pointer',\n },\n form: {\n '& label': {\n margin: 0,\n },\n },\n errorMessage: {\n color: '#FF0000',\n },\n formImgItem: {\n position: 'relative',\n\n '&:after': {\n content: EditIcon,\n display: 'block',\n width: '100%',\n height: '100%',\n },\n },\n formItem: {\n marginTop: 16,\n\n '& label': {\n width: '100%',\n margin: '0 0 8px',\n },\n '& input': {\n width: 320,\n },\n \"& input[type='text']\": {\n background: '#FFFFFF',\n border: '1px solid rgba(53, 64, 82, 0.1)',\n boxSizing: 'border-box',\n borderRadius: '4px',\n padding: '8px 12px',\n },\n \"& input[type='email']\": {\n border: 0,\n background: 'none',\n padding: 0,\n outline: 'none',\n cursor: 'default',\n },\n },\n btnHolder: {\n marginTop: 40,\n },\n loaderWrap: {\n height: 'calc(100vh - 80px)',\n },\n})\n","import React, { useState } from 'react'\nimport { useForm, Controller } from 'react-hook-form/dist/index.ie11'\n\nimport { updateAccountSettings } from '../../api/account'\n\nimport { UserImageDropzone } from '../UserImageDropzone'\n\nimport SubmitButton from '../../../../uiKit/buttons/SubmitButton'\nimport Loader from '../../../../uiKit/loaders/loader'\n\nexport const AccountSettingsForm = props => {\n const { register, handleSubmit, errors, control } = useForm()\n const [isDisabledBtn, setIsDisabledBtn] = useState(false)\n const { classes } = props\n const loading = !props.accountSettings\n\n const onSubmit = data => {\n const prevData = props.accountSettings\n\n updateAccountSettings(props.adminUser.id, {\n ...prevData,\n ...data,\n })\n }\n\n const handleDisableBtn = value => setIsDisabledBtn(value)\n\n return (\n <>\n {loading ? (\n
\n \n
\n ) : (\n
\n

Account Settings

\n
\n
\n (\n \n )}\n />\n
\n
\n \n \n {errors.name && (\n
\n

This field is required

\n
\n )}\n
\n
\n \n \n
\n
\n \n
\n
\n
\n )}\n \n )\n}\n","import React from 'react'\n\nimport { HomeHeader } from './components/HomeHeader'\nimport { AccountSettingsForm } from './components/AccountSettingsForm'\n\nexport const AccountContainer = props => {\n const backUrl =\n props.location && props.location.state && props.location.state.from\n\n return (\n \n \n \n \n )\n}\n","import React, { Component } from 'react'\nimport Login from '../tabs/authorization/component/Login'\nimport { connect } from 'react-redux'\nimport 'react-notifications/lib/notifications.css'\nimport { withStyles } from '@material-ui/core'\nimport 'react-s-alert/dist/s-alert-default.css'\nimport 'react-s-alert/dist/s-alert-css-effects/slide.css'\nimport Menu from './Menu/Menu'\nimport {\n BrowserRouter,\n Redirect,\n Route,\n Switch,\n withRouter,\n} from 'react-router-dom'\nimport Bots from '../tabs/home/Home'\nimport { HOME_PATH } from '../configs'\nimport NotificationSnackbar from '../uiKit/Notification/Notification'\nimport Unavailable from './Unavailable/Unavailable'\nimport MobileSupport from '../tabs/home/components/MobileSupport'\nimport EmailConfirmation from '../tabs/authorization/component/EmailConfirmation'\nimport AfterSignUp from '../tabs/authorization/component/AfterSignUp'\nimport { NOTIFICATION_DEFAULT } from '../constants/notificationsPermissions'\nimport NotificationService from '../services/notificationService'\nimport { StyledToastContainer } from '../tabs/widget/components/StyledToastContainer'\nimport { AccountContainer } from '../tabs/account/AccountContainer'\n\nconst styles = () => ({\n app: {\n width: '100%',\n },\n})\n\nclass App extends Component {\n askForNotification() {\n if (Notification.permission === NOTIFICATION_DEFAULT) {\n NotificationService.askPermission()\n }\n }\n\n render() {\n this.askForNotification()\n const { classes, security } = this.props\n return (\n
\n \n \n \n \n \n \n \n \n \n \n }\n />\n \n \n\n \n \n \n \n \n \n \n
\n )\n }\n}\n\nconst PrivateRoute = ({ component: Component, isAuthenticated, ...rest }) => (\n \n (isAuthenticated ? (\n \n ) : (\n \n ))\n }\n />\n)\n\nconst mapStateToProps = state => ({\n security: state.security,\n adminUser: state.adminUser,\n activeBot: state.activeBot,\n})\n\nexport default withRouter(withStyles(styles)(connect(mapStateToProps)(App)))\n","import { SET_ANALYTICS } from '../actions'\n\nconst analytics = (state = null, action) => {\n if (action.type === SET_ANALYTICS) {\n return action.analytics\n } else {\n return state\n }\n}\n\nexport default analytics\n","import { store } from '../../../index'\n\nexport const SET_ANALYTICS = 'SET_ANALYTICS'\n\nexport const setAnalytics = analytics =>\n store.dispatch({\n type: SET_ANALYTICS,\n analytics,\n })\n","import { IS_AUTHENTICATED, IS_NOT_AUTHENTICATED } from '../actions/security'\nimport { access } from '../../../security'\n\nconst security = (state = { token: null, authenticated: false }, action) => {\n switch (action.type) {\n case IS_AUTHENTICATED:\n access.loadRole()\n return action.security\n case IS_NOT_AUTHENTICATED:\n return action.security\n default:\n return state\n }\n}\n\nexport default security\n","import { SAVE_ADMIN_USER } from '../actions/adminUser'\n\nconst adminUser = (state = null, action) => {\n if (action.type === SAVE_ADMIN_USER) {\n return action.adminUser\n } else {\n return state\n }\n}\n\nexport default adminUser\n","import { SAVE_BROADCASTS } from '../actions/broadcasts'\n\nconst broadcasts = (state = [], action) => {\n if (action.type === SAVE_BROADCASTS) {\n return action.broadcasts\n } else {\n return state\n }\n}\n\nexport default broadcasts\n","import { SAVE_SUPPORT_STATISTICS } from '../actions/supportStatistics'\n\nconst supportStatistics = (state = null, action) => {\n if (action.type === SAVE_SUPPORT_STATISTICS) {\n return action.stats\n } else {\n return state\n }\n}\n\nexport default supportStatistics\n","import { SAVE_USERS_STATISTICS } from '../actions/usersStatistics'\n\nconst usersStatistics = (state = null, action) => {\n if (action.type === SAVE_USERS_STATISTICS) {\n return action.stats\n } else {\n return state\n }\n}\n\nexport default usersStatistics\n","import { SAVE_POPULAR_HOURS_STATISTICS } from '../actions/popularHoursStatistics'\n\nconst popularHoursStatistics = (state = null, action) => {\n if (action.type === SAVE_POPULAR_HOURS_STATISTICS) {\n return action.stats\n } else {\n return state\n }\n}\n\nexport default popularHoursStatistics\n","import { ADD_NEW_FLOW, SAVE_FLOWS } from '../actions/flows'\n\nconst flows = (state = [], action) => {\n let flows\n switch (action.type) {\n case SAVE_FLOWS:\n return action.flows\n case ADD_NEW_FLOW:\n flows = [...state]\n flows.push(action.flow)\n return flows\n default:\n return state\n }\n}\n\nexport default flows\n","import { CLEAR_ATOM, SAVE_ATOM } from '../actions/atom'\n\nconst atom = (state = [], action) => {\n switch (action.type) {\n case SAVE_ATOM:\n return action.atom\n case CLEAR_ATOM:\n return null\n default:\n return state\n }\n}\n\nexport default atom\n","import { SAVE_ATOMS } from '../actions/atoms'\n\nconst atoms = (state = [], action) => {\n if (action.type === SAVE_ATOMS) {\n return action.atoms\n } else {\n return state\n }\n}\n\nexport default atoms\n","import { store } from '../../../index'\n\nexport const SAVE_ATOMS = 'SAVE_ATOMS'\n\nexport const saveAtoms = atoms => {\n store.dispatch({\n type: SAVE_ATOMS,\n atoms,\n })\n}\n","import { ADD_NEW_TAG, SAVE_TAGS } from '../actions/tags'\n\nconst tags = (state = [], action) => {\n let tags\n switch (action.type) {\n case SAVE_TAGS:\n return action.tags\n case ADD_NEW_TAG:\n tags = [...state]\n tags.push(action.tag)\n return tags\n default:\n return state\n }\n}\n\nexport default tags\n","import { SET_SEARCH_ATOMS } from '../actions/searchAtoms'\n\nconst convertSearchAtoms = searchAtoms => {\n return searchAtoms.reduce((flowsMap, atom) => {\n if (!flowsMap[atom.flowId]) {\n flowsMap[atom.flowId] = []\n }\n flowsMap[atom.flowId].push(atom)\n return flowsMap\n }, {})\n}\n\nconst searchAtoms = (state = {}, action) => {\n if (action.type === SET_SEARCH_ATOMS) {\n return convertSearchAtoms(action.searchAtoms)\n } else {\n return state\n }\n}\n\nexport default searchAtoms\n","/**\n * Created by Admin on 02.02.2018.\n */\n\nimport { SAVE_BOTS } from '../actions/bots'\nimport { access } from '../../../security'\n\nconst bots = (state = [], action) => {\n switch (action.type) {\n case SAVE_BOTS:\n access.loadRole()\n return action.bots\n default:\n return state\n }\n}\n\nexport default bots\n","/**\n * Created by Admin on 02.02.2018.\n */\nimport {\n CLEAR_STATE,\n SET_ACTIVE_BOT,\n SET_DIALOG_FLOW,\n} from '../actions/activeBot'\n\nconst activeBot = (state = null, action) => {\n let newBot\n switch (action.type) {\n case SET_ACTIVE_BOT:\n return action.activeBot\n case SET_DIALOG_FLOW:\n newBot = JSON.parse(JSON.stringify(state))\n newBot.dialogflowConfigs = action.dialogflowConfigs\n return newBot\n case CLEAR_STATE:\n return null\n default:\n return state\n }\n}\n\nexport default activeBot\n","/**\n * Created by Admin on 21.03.2018.\n */\nimport { SHOW_SNACKBAR } from '../actions/snackBar'\n\nconst snackBar = (state = { open: false }, action) => {\n if (action.type === SHOW_SNACKBAR) {\n return action.snackBar\n } else {\n return state\n }\n}\n\nexport default snackBar\n","import {\n ADD_INTENT,\n CLEAR_INTENTS,\n DELETE_INTENT,\n SAVE_INTENTS,\n UPDATE_INTENT,\n} from '../actions/intents'\n\nconst intents = (state = [], action) => {\n let intents\n switch (action.type) {\n case SAVE_INTENTS:\n return action.intents\n case ADD_INTENT:\n intents = [...state, action.intent].sort(\n (a, b) => a.name.toLowerCase() >= b.name.toLowerCase(),\n )\n return intents\n case UPDATE_INTENT:\n intents = [...state]\n intents.forEach((element, index) => {\n if (element.id === action.intent.id) {\n intents[index] = action.intent\n }\n })\n return intents.sort(\n (a, b) => a.name.toLowerCase() >= b.name.toLowerCase(),\n )\n case DELETE_INTENT:\n intents = [...state]\n return intents.filter(x => {\n return x.id !== action.intentId\n })\n case CLEAR_INTENTS:\n return null\n default:\n return state\n }\n}\n\nexport default intents\n","import {\n SAVE_INTENTS_SIZE,\n ADD_INTENT_SIZE,\n UPDATE_INTENTS_SIZE,\n} from '../actions/intentsSize'\n\nconst intentsSize = (state = [], action) => {\n let intentsSize\n switch (action.type) {\n case SAVE_INTENTS_SIZE:\n return action.intentsSize\n case ADD_INTENT_SIZE:\n intentsSize = action.intentsSize + 1\n return intentsSize\n case UPDATE_INTENTS_SIZE:\n intentsSize = action.intentsSize - 1\n return intentsSize\n default:\n return state\n }\n}\n\nexport default intentsSize\n","import {\n SAVE_CONTEXTS_SIZE,\n ADD_CONTEXTS_SIZE,\n UPDATE_CONTEXTS_SIZE,\n} from '../actions/contextSize'\n\nconst contextSize = (state = [], action) => {\n let contextSize\n switch (action.type) {\n case SAVE_CONTEXTS_SIZE:\n return action.contextSize\n case ADD_CONTEXTS_SIZE:\n contextSize = action.contextSize + 1\n return contextSize\n case UPDATE_CONTEXTS_SIZE:\n contextSize = action.contextSize - 1\n return contextSize\n default:\n return state\n }\n}\n\nexport default contextSize\n","import {\n ADD_CONTEXT,\n DELETE_CONTEXT,\n SAVE_CONTEXTS,\n UPDATE_CONTEXT,\n CLEAR_CONTEXTS,\n} from '../actions/contexts'\n\nconst contexts = (state = null, action) => {\n switch (action.type) {\n case SAVE_CONTEXTS:\n return action.contexts.reverse()\n case ADD_CONTEXT:\n const context = [...state]\n context.unshift(action.context)\n return context\n case UPDATE_CONTEXT:\n const contexts = [...state]\n contexts.forEach((element, index) => {\n if (element.id === action.context.id) {\n contexts[index] = action.context\n }\n })\n return contexts\n case DELETE_CONTEXT:\n return [...state].filter(x => {\n return x.id !== action.contextId\n })\n case CLEAR_CONTEXTS:\n return null\n default:\n return state\n }\n}\n\nexport default contexts\n","import {\n SAVE_NLP_REQUESTS,\n UPDATE_NLP_REQUEST,\n CLEAR_NLP_REQUESTS,\n} from '../actions/nlpRequests'\n\nconst nlpRequests = (state = null, action) => {\n switch (action.type) {\n case SAVE_NLP_REQUESTS:\n return action.requests\n\n case UPDATE_NLP_REQUEST:\n const nlpRequests = JSON.parse(JSON.stringify(state))\n nlpRequests.data.forEach((element, index) => {\n if (element.id === action.request.id) {\n nlpRequests.data[index] = action.request\n }\n })\n nlpRequests.data.filter(x => !x.trained)\n return nlpRequests\n\n case CLEAR_NLP_REQUESTS:\n return null\n\n default:\n return state\n }\n}\n\nexport default nlpRequests\n","import { SAVE_BOT_ACCESSORS } from '../actions/botAccessors'\n\nconst botAccessors = (state = [], action) => {\n switch (action.type) {\n case SAVE_BOT_ACCESSORS:\n return action.botAccessors\n default:\n return state\n }\n}\n\nexport default botAccessors\n","import { SAVE_FACEBOOK_TOKEN } from '../actions/facebookToken'\n\nconst token = (state = [], action) => {\n switch (action.type) {\n case SAVE_FACEBOOK_TOKEN:\n return action.token\n default:\n return state\n }\n}\n\nexport default token\n","import { SAVE_FACEBOOK_PAGES } from '../actions/settingsPages'\n\n/* eslint-disable */\nconst settingsPages = (state = {}, action) => {\n switch (action.type) {\n case SAVE_FACEBOOK_PAGES:\n return { facebookPages: action.facebookPages }\n\n default:\n return state\n }\n}\n\nexport default settingsPages\n","import { GET_TWILIO_CREDENTIALS } from '../actions/twilioCredentials'\n\nconst twilioCredentials = (state = {}, action) => {\n switch (action.type) {\n case GET_TWILIO_CREDENTIALS:\n return action.twilioCredentials\n\n default:\n return state\n }\n}\n\nexport default twilioCredentials\n","import { SAVE_SUPPORT_REQUESTS } from '../actions/supportRequest'\n\nconst supportRequests = (state = null, action) => {\n if (action.type === SAVE_SUPPORT_REQUESTS) {\n return action.requests\n } else {\n return state\n }\n}\n\nexport default supportRequests\n","import {\n SAVE_SUPPORT_USERS,\n SAVE_MORE_SUPPORT_USERS,\n SAVE_CLOSED_SUPPORT_USERS,\n SAVE_MORE_CLOSED_SUPPORT_USERS,\n UPDATE_SUPPORT_USER_LIST,\n UPDATE_USER_UNREAD_MESSAGE,\n} from '../actions/users'\n\nimport { SUPPORT_STATUSES } from '../../../constants/suportStatuses'\nimport { getUrlEnd } from '../../../helpers/getUrlEnd'\n\nconst initialState = {\n assignedToMeUsers: [],\n newRequestsUsers: [],\n expiredRequestsUsers: [],\n assignedRequestsUsers: [],\n allUsers: [],\n closedRequestsUsers: [],\n}\n\nconst _filterAssignedToMeUsers = payload => {\n return payload.supportUsers.filter(user => {\n return (\n user?.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED &&\n user?.supportRequest?.support?.adminId === payload.adminUserId\n )\n })\n}\n\nconst _filterNewRequestsUsers = payload => {\n return payload.supportUsers.filter(user => {\n return user?.supportRequest?.status === SUPPORT_STATUSES.OPEN\n })\n}\n\nconst _filterExpiredRequestsUsers = payload => {\n return payload.supportUsers.filter(user => {\n return user?.supportRequest?.status === SUPPORT_STATUSES.EXPIRED\n })\n}\n\nconst _filterAssignedRequestsUsers = payload => {\n return payload.supportUsers.filter(user => {\n return (\n user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED &&\n user.supportRequest?.support?.adminId !== payload.adminUserId\n )\n })\n}\n\nconst _filterAllUsers = payload => {\n return payload.supportUsers.filter(user => {\n return (\n user.supportRequest?.status !== SUPPORT_STATUSES.ASSIGNED &&\n user.supportRequest?.status !== SUPPORT_STATUSES.EXPIRED &&\n user.supportRequest?.status !== SUPPORT_STATUSES.OPEN\n )\n })\n}\n\nconst _updateUserAssignedToMe = (state, payload) => {\n const rule =\n payload.user.supportRequest?.status !== SUPPORT_STATUSES.ASSIGNED ||\n payload.user.supportRequest?.support?.adminId !== payload.adminUserId\n\n return _updateUser(state, payload, rule)\n}\n\nconst _updateUserExpired = (state, payload) => {\n const rule = payload.user.supportRequest?.status !== SUPPORT_STATUSES.EXPIRED\n\n return _updateUser(state, payload, rule)\n}\n\nconst _updateUserAssigned = (state, payload) => {\n const rule =\n payload.user.supportRequest?.status !== SUPPORT_STATUSES.ASSIGNED ||\n (payload.user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED &&\n payload.user.supportRequest?.support?.adminId === payload.adminUserId)\n\n return _updateUser(state, payload, rule)\n}\n\nconst _updateUserNew = (state, payload) => {\n const rule = payload.user.supportRequest?.status !== SUPPORT_STATUSES.OPEN\n\n return _updateUser(state, payload, rule)\n}\n\nconst _updateAllUser = (state, payload) => {\n const rule =\n payload.user.supportRequest?.status === SUPPORT_STATUSES.ASSIGNED ||\n payload.user.supportRequest?.status === SUPPORT_STATUSES.EXPIRED ||\n payload.user.supportRequest?.status === SUPPORT_STATUSES.OPEN\n\n return _updateUser(state, payload, rule)\n}\n\nconst _updateUser = (state, payload, rule) => {\n const isNewUser = !state.find(user => user?.userId === payload.user?.userId)\n\n if (rule && isNewUser) return state\n\n if (rule && !isNewUser)\n return state.filter(user => user.userId !== payload.user.userId)\n\n return isNewUser\n ? [payload.user, ...state]\n : state.map(user => {\n if (user.userId === payload.user?.userId) {\n if (Number(getUrlEnd()) !== payload.user?.userId)\n payload.user.unreadMessages = user.unreadMessages + 1\n user = Object.assign({}, user, payload.user)\n }\n return user\n })\n}\n\nconst _updateUserUnreadMessages = (state, payload) => {\n return state.map(user => {\n if (user?.userId === payload.user?.userId && user?.unreadMessage) {\n payload.user.unreadMessage = false\n payload.user.unreadMessages = 0\n payload.user.lastMessage = user.lastMessage\n return payload.user\n }\n return user\n })\n}\n\nconst supportUsersNew = (state = initialState, { type, payload }) => {\n switch (type) {\n case SAVE_SUPPORT_USERS:\n return {\n ...state,\n assignedToMeUsers: _filterAssignedToMeUsers(payload),\n newRequestsUsers: _filterNewRequestsUsers(payload),\n expiredRequestsUsers: _filterExpiredRequestsUsers(payload),\n assignedRequestsUsers: _filterAssignedRequestsUsers(payload),\n allUsers: _filterAllUsers(payload),\n }\n\n case SAVE_MORE_SUPPORT_USERS:\n return {\n ...state,\n assignedToMeUsers: [\n ...state.assignedToMeUsers,\n ..._filterAssignedToMeUsers(payload),\n ],\n newRequestsUsers: [\n ...state.newRequestsUsers,\n ..._filterNewRequestsUsers(payload),\n ],\n expiredRequestsUsers: [\n ...state.expiredRequestsUsers,\n ..._filterExpiredRequestsUsers(payload),\n ],\n assignedRequestsUsers: [\n ...state.assignedRequestsUsers,\n ..._filterAssignedRequestsUsers(payload),\n ],\n allUsers: [...state.allUsers, ..._filterAllUsers(payload)],\n }\n\n case UPDATE_SUPPORT_USER_LIST:\n return {\n ...state,\n assignedToMeUsers: _updateUserAssignedToMe(\n state.assignedToMeUsers,\n payload,\n ),\n expiredRequestsUsers: _updateUserExpired(\n state.expiredRequestsUsers,\n payload,\n ),\n assignedRequestsUsers: _updateUserAssigned(\n state.assignedRequestsUsers,\n payload,\n ),\n newRequestsUsers: _updateUserNew(state.newRequestsUsers, payload),\n allUsers: _updateAllUser(state.allUsers, payload),\n }\n\n case UPDATE_USER_UNREAD_MESSAGE:\n return {\n ...state,\n assignedToMeUsers: _updateUserUnreadMessages(\n state.assignedToMeUsers,\n payload,\n ),\n expiredRequestsUsers: _updateUserUnreadMessages(\n state.expiredRequestsUsers,\n payload,\n ),\n assignedRequestsUsers: _updateUserUnreadMessages(\n state.assignedRequestsUsers,\n payload,\n ),\n allUsers: _updateUserUnreadMessages(state.allUsers, payload),\n newRequestsUsers: _updateUserUnreadMessages(\n state.newRequestsUsers,\n payload,\n ),\n }\n\n case SAVE_CLOSED_SUPPORT_USERS:\n return {\n ...state,\n closedRequestsUsers: payload.supportUsers,\n }\n\n case SAVE_MORE_CLOSED_SUPPORT_USERS:\n return {\n state,\n closedRequestsUsers: [\n ...state.closedRequestsUsers,\n ...payload.supportUsers,\n ],\n }\n\n default:\n return state\n }\n}\n\nexport default supportUsersNew\n","import {\n SAVE_MESSAGE,\n SAVE_ACTIVE_SUPPORT_USER,\n SAVE_SUPPORT_USER_MESSAGES,\n SAVE_SUPPORT_USER_MORE_MESSAGES,\n} from '../actions/activeUser'\nimport { BEFORE_MESSAGES } from '../components/MessagesWrap/config'\n\nconst initialState = {\n botActive: null,\n chatId: null,\n chatStatus: null,\n firstName: null,\n lastMessage: null,\n lastName: null,\n messageDatetime: null,\n openedAt: null,\n platform: null,\n postback: null,\n profilePic: null,\n supportRequest: null,\n unreadMessage: null,\n unreadMessages: null,\n userId: null,\n userMessageDatetime: null,\n messages: [],\n}\n\nconst _handleSaveMoreMessages = (messages, payload) => {\n return payload.direction === BEFORE_MESSAGES\n ? [...messages, ...payload.messages]\n : [...payload.messages, ...messages]\n}\n\nconst activeUser = (state = initialState, { type, payload }) => {\n switch (type) {\n case SAVE_ACTIVE_SUPPORT_USER:\n return {\n ...state,\n ...payload.activeUser,\n messages: state.messages,\n }\n\n case SAVE_SUPPORT_USER_MESSAGES:\n return {\n ...state,\n messages: payload.messages,\n }\n\n case SAVE_SUPPORT_USER_MORE_MESSAGES:\n return {\n ...state,\n messages: _handleSaveMoreMessages(state.messages, payload),\n }\n\n case SAVE_MESSAGE:\n return {\n ...state,\n messages: [payload.message, ...state.messages],\n }\n\n default:\n return state\n }\n}\n\nexport default activeUser\n","import { SET_BOT_WIDGET } from '../actions/botWidget'\n\nconst botWidget = (state = [], action) => {\n if (action.type === SET_BOT_WIDGET) {\n return action.botWidget\n } else {\n return state\n }\n}\n\nexport default botWidget\n","import { SAVE_ACCOUNT_SETTINGS } from '../actions/account'\n\nconst accountSettings = (state = null, action) => {\n switch (action.type) {\n case SAVE_ACCOUNT_SETTINGS:\n return action.accountSettings\n default:\n return state\n }\n}\n\nexport default accountSettings\n","import {\n SET_ATTRIBUTES,\n ADD_ATTRIBUTE,\n CLEAR_ATTRIBUTES,\n} from '../actions/attributes'\n\nconst attributes = (state = [], { type, payload }) => {\n switch (type) {\n case SET_ATTRIBUTES:\n return [...payload.attributes]\n case ADD_ATTRIBUTE:\n return [...state, payload.attribute]\n case CLEAR_ATTRIBUTES:\n return []\n default:\n return state\n }\n}\n\nexport default attributes\n","import { combineReducers } from 'redux'\n\nimport analytics from '../tabs/analytics/reducers/analytics'\n\nimport security from '../tabs/authorization/reducers/security'\nimport adminUser from '../tabs/authorization/reducers/adminUser'\n\nimport broadcasts from '../tabs/broadcast/reducers/broadcasts'\n\nimport supportStatistics from '../tabs/dashboard/reducers/supportStatistics'\nimport usersStatistics from '../tabs/dashboard/reducers/usersStatistics'\nimport popularHoursStatistics from '../tabs/dashboard/reducers/popularHoursStatistics'\n\nimport flows from '../tabs/flowBuilder/reducers/flows'\nimport atom from '../tabs/flowBuilder/reducers/atom'\nimport atoms from '../tabs/flowBuilder/reducers/atoms'\nimport tags from '../tabs/flowBuilder/reducers/tags'\nimport searchAtoms from '../tabs/flowBuilder/reducers/searchAtoms'\n\nimport bots from '../tabs/home/reducers/bots'\nimport activeBot from '../tabs/home/reducers/activeBot'\nimport snackBar from '../tabs/home/reducers/snackBar'\n\nimport intents from '../tabs/nlp/reducers/intents'\nimport intentsSize from '../tabs/nlp/reducers/intentsSize'\nimport contextSize from '../tabs/nlp/reducers/contextSize'\nimport contexts from '../tabs/nlp/reducers/contexts'\nimport nlpRequests from '../tabs/nlp/reducers/nlpRequests'\n\nimport botAccessors from '../tabs/settings/reducers/botAccessors'\nimport token from '../tabs/settings/reducers/facebookToken'\nimport settingsPages from '../tabs/settings/reducers/settingsPages'\nimport twilioCredentials from '../tabs/settings/reducers/twilioCredentials'\n\nimport supportRequests from '../tabs/support/reducers/supportRequests'\nimport supportUsersNew from '../tabs/support/reducers/users'\nimport activeUser from '../tabs/support/reducers/activeUser'\n\nimport botWidget from '../tabs/widget/reducers/botWidget'\n\nimport account from '../tabs/account/reducers/account'\nimport attributes from '../tabs/settings/reducers/attributes.js'\n\n// -- APPEND IMPORT HERE --\nconst Reducers = combineReducers({\n security,\n flows,\n bots,\n activeBot,\n atom,\n broadcasts,\n activeUser,\n intents,\n intentsSize,\n contextSize,\n contexts,\n nlpRequests,\n snackBar,\n atoms,\n botWidget,\n supportRequests,\n adminUser,\n botAccessors,\n tags,\n settingsPages,\n token,\n supportStatistics,\n usersStatistics,\n popularHoursStatistics,\n analytics,\n searchAtoms,\n twilioCredentials,\n supportUsersNew,\n account,\n attributes,\n// -- APPEND FILE HERE --\n})\n\nexport default Reducers\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { BrowserRouter, Route } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\nimport './containers/index.css'\nimport App from './containers/App'\nimport reducer from './reducers/index'\nimport { createMuiTheme, MuiThemeProvider } from '@material-ui/core/'\nimport { MuiPickersUtilsProvider } from 'material-ui-pickers'\nimport DateFnsUtils from 'material-ui-pickers/utils/date-fns-utils'\n// eslint-disable-next-line no-unused-vars\nimport * as globalHelpers from './helpers/index'\n\nexport const store = createStore(reducer)\nconst theme = createMuiTheme({\n palette: {\n primary: {\n light: '#5A98F7',\n medium: '#1146C2',\n main: '#1658F3',\n dark: '#1345BA',\n grayColor: '#D7D8DF',\n text: '#616581',\n contrastText: '#fff',\n azure: '#8EB0F8',\n iconsGray: '#D7D8DF',\n semiAzure: '#D5E5FD',\n headerText: '#3A3F62',\n background: '#F7FAFE',\n },\n text: {\n header: '#3A3F62',\n gray: '#B0B2C0',\n },\n secondary: {\n light: '#ff7961',\n main: '#f44336',\n dark: '#ba000d',\n contrastText: '#000',\n },\n default: {\n gray: '#C7CAD6',\n },\n alerts: {\n success: '#11C314',\n error: '#FF624C',\n },\n pieChartColors: {\n chatbot: '#1658F3',\n support: '#F3B116',\n },\n },\n})\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n\n document.getElementById('root'),\n)\n// registerServiceWorker();\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAABACAYAAACndwGZAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAX0SURBVHgB7Vv/SyNHFH+z3xJzWvXsfbMVLCcnPdq/oNDjyrVewRpjQeiP/fcCVYT7oaL0oFD/gZYeFaS5ak2TnPVLzMZsZnY6b5PdbDRBrePsLvoBYedtiJvPvjfvvc/MEIgQ+devB9mhM5oyrGECPAWKwYHZDeoe685haXFx0QnfIxAB8vm8bg5+MAluYwRiAtcwdr99+XnRHysnJp//zQKrOG0augUxQ5gcA1SjBymcuFWuW1VQCOekbpwOYY3S8aXVX9jCzGdlpR6ztL4+Rk60SX9sAmkwdvQ2m80qJSWM1dXV+3bTnAgMhLBmrfKrBgpBj/m4f42k2HZlM0pSEDMzM+WM2dwODJzr+nsP7ysjZmNjYyAcQo7DiqczQVRAcjCc/TFhzpAyYkqlUlc6pg8zNsQInOjB8xDQM8qI4UNDepdhZ4dBnKDpnecR4aR0jpENrIfE37WkffXpWgKwYjZsNk64NoTj5Vc/Aehkr1mt7MqatxLnMUtL62NmjU/7pARgfMyyRqdleVCiiMGqmVidOug0uMh6SA5IQKKIMc3KeJdBhA9PuwUuaiLfhOSsrKwMwRWRKGK4xYIwwboj9/XzwsKLF3vUrrzBitW/R1Ojg3BFJDYrhesOgKc6pliQiEQRYzB7x2s4xR87rpTR5nfr4c8d1VkdrohEpeu5uTn0kk1/jG1Gab8yDaK98W3Yg32fe34AV0RiQwk9ZadcmwqHkN+YggQkssBDeBkq1JSiTGnb+5uiwJPSavQkJr+2NmxSOsqZMSA+ImVSEwnVwMeXBcxQosjzrlueIo8URBcxWGrDIf3IbOCb0Nu6p6QfI4+T1tcJxY9Q6tUrjmmVZZKCCOaYH378+RGW2nHUYnsBtVks7qB5uIVSJEiG5zHLy8sjIPTOrhuGCCbXOQbiSHkT3DWtM/3NFYHFHVwTPGKaZHDCDBkJbZbr9rtdme6Jei+cgDRiMCsZmb3HIpDAcOtv26lcGoy2QB2Ej8ZoMTs/swsxhzlYmgCXZHAuZMadR8K0BRKhQQPGgn8mZvds9qvYk4JwNbMjRTpUunZsoL7pp4ymDseQELCjf8rk7l0H2ICem/3iGibfUOXoEr0BCUF7/ru2yTfRmq9MaG4z419z0O1bYqDdobsk2GBAdLd+44npJVtoztFe7JpIXBIBzMEKIJZixzRWeRCWLVAuzc5mq7EhBgnRB+890lz+AFSB0q6h14yKJRi8jgUxLXf+a0qQMgARoS1bbPnrUpET09lIlI6kecWe0G3UK6cL20sRgz8CS3Euah/UX/3+pJ/9PKA0uVMuToU7enRnJ82KoACGbde/edn7WS9FTLs/GSFCqaF65kNo66+emta2n7iZSWH6/bzvMoy7Q6X9xoQg5Yw0uTgb/faQS6Vrl6dpT3sKArtwzQtJUt6KYqjqbsV4ZTMue2Yu5TGsNlx0rL/ddMrVabUaxKRYyhD2YXLaflEgKVSyNHlVXIqYxcVP8G1un7V7P2gb/g+aZG8h92Wh321UFjXGHoBYS2oe7xVUkRdp5YuCWC73vNDvPtY2uJPSCzkxh4l5Sdm+YGXEkGq1602jIDY/P3OOlz1VUgH3gjJicrncAXqI17kydyfugpjSAu98D4kPbmWHPrglpg9uiemDW2L6QOOQanQGNeWHqeIKjRPoHHJw0yPXtaE4adAM+u7fYISyQWb0cVtevNHQ8FhM18kLsQBnWaNPcaPxTSbIK/Bo7WHByFSe+Ke9cK8sAZg0rfdb29EV4ITq5e/mn8WmAPSyEnbN1L63Gd5IrBppg91ferX2cVy8NEjXPjnYz6AOChEAw1jMcU/ikAB6nonEt5ZKpTIydlhf6CEoGwsf2hRjx3H2/xDdNZiZ8qe+nTtuYWHh+jYLdT0TxACtTUCdOQ6B5AwPG38e1HiwSqiSmFhUvr3mOEwABzZMQUSITUvQISd0RkDy+YDLIFa9UoucUjc5ESF2TSSK3Quzz96gSA4RIrbdNYrkqAuHbYdEV7a8EmvZAXVhnxxsW+40K8pO9f8HPIHG+4RUheoAAAAASUVORK5CYII=\""],"sourceRoot":""}