{"version":3,"sources":["assets/sound/pingSound.wav","constants.ts","utils/memory-storage.ts","utils/cookie-storage.ts","utils/storage-strategy.ts","utils/helpers.ts","utils/api-client.ts","setup.service.ts","conversation.service.tsx","reducer.ts","actions.ts","io.ts","utils/context.service.ts","AppContext.tsx","Styles.tsx","utils/utils.service.ts","widget-container/widget-toggle.tsx","assets/images/bots-28.svg","utils/color-set.ts","widget-container/widget-header/widget-header.tsx","widget-container/widget-footer/SendButtonIcon.tsx","widget-container/constants.ts","widget-container/widget-footer/date-input/date-input.tsx","widget-container/widget-footer/datetime-input/datetime-input.tsx","widget-container/widget-footer/time-input/time-input.tsx","widget-container/common-components/chat-button/chat-button.tsx","widget-container/widget-footer/select-list.tsx","widget-container/widget-modal/widget-modal.tsx","widget-container/widget-body/widget-message/message-helpers/interaction-multi-select/interaction-multi-select.tsx","widget-container/widget-footer/text-input.tsx","widget-container/widget-footer/phone-input/phone-input.tsx","widget-container/widget-footer/email-input/email-input.tsx","widget-container/widget-footer/widget-footer.tsx","assets/images/bots.svg","widget-container/widget-body/widget-message/action-interactions/end-conversation/end-conversation.tsx","widget-container/widget-body/widget-message/message-helpers/interaction-single-select/interaction-single-select.tsx","widget-container/widget-body/widget-message/message-helpers/text-message/text-message.tsx","widget-container/widget-body/widget-message/message-helpers/video-message/video-message.tsx","assets/images/play-button.png","widget-container/widget-body/widget-message/message-helpers/image-message/image-message.tsx","assets/images/document-icon.svg","widget-container/widget-body/widget-message/message-helpers/document-message/document-message.tsx","assets/images/url-default.svg","widget-container/widget-body/widget-message/message-helpers/url-message/url-message.tsx","utils/timezone.service.ts","widget-container/common-components/select-list-with-filter/select-list-with-filter.tsx","widget-container/common-components/select-list-with-filter/select-option.ts","widget-container/common-components/timezone-popup/timezone-popup.tsx","assets/images/no_Times.svg","assets/images/Error_icon.svg","assets/images/double_booking_icon.svg","widget-container/widget-body/widget-message/action-interactions/schedule-action/slots.type.ts","widget-container/widget-body/widget-message/action-interactions/schedule-action/slots.service.ts","widget-container/common-components/loader/loader.tsx","widget-container/widget-body/widget-message/action-interactions/schedule-action/schedule-action.tsx","widget-container/widget-body/widget-message/action-interactions/live-chat-action/live-chat-action.tsx","widget-container/widget-body/widget-message/action-interactions/require-consent/require-consent.tsx","widget-container/widget-body/widget-message/action-interactions/require-consent/consent-buttons.tsx","widget-container/widget-body/widget-message/question-interactions/timezone-question/timezone-question.tsx","utils/timeago.ts","widget-container/widget-body/widget-message/chat-timestamp/chat-timestamp.tsx","widget-container/widget-body/widget-message/action-interactions/deny-consent/view-again-button.tsx","widget-container/widget-body/widget-message/action-interactions/deny-consent/deny-consent.tsx","widget-container/widget-body/widget-message/widget-message.tsx","widget-container/widget-body/widget-body.tsx","widget-container/widget-notification/notification-message/notification-message.tsx","widget-container/widget-notification/widget-notification.tsx","widget-container/widget.tsx","App.tsx","registerServiceWorker.ts","index.tsx","assets/timezoneConfig.js"],"names":["ConversationState","NotificationStyle","liveChatColours","LIVE_CHAT_CHANNEL","CONTACT_COOKIE_HEADER_KEY","SESSION_COOKIE_HEADER_KEY","ANALYTIC_COOKIE_HEADER_KEY","MemoryStorage","this","currentSession","storageData","analyticCookie","getAnalytics","sessionCookie","value","currentContact","contactCookie","currentAnalytics","analyticsSetting","CookieStorage","storage","window","parent","postMessage","type","values","name","expiry","expires","same_site","path","cookiesValues","push","StorageStrategy","strategy","createGuid","_p8","s","p","Math","random","toString","substr","ApiClient","url","options","client","updateOptions","credentials","httpVerb","fetchOptions","method","headers","body","JSON","stringify","fetch","updatedOptions","setupWidget","a","getStrategy","chSessionId","preview","getSession","chContactId","getContact","chAnalytics","post","process","pageUrl","pageTitle","websiteId","botId","directBot","response","json","success","sessionId","sessionCookieData","parse","get","e","contactCookieData","analyticCookieData","setValues","status","data","bot_id","botName","bot_name","accountId","account_id","conversationId","conversation_id","isFirstTime","is_first_time","conversationState","conversation_state","showClosedWidgetInteractions","show_closed_widget_interactions","welcomeDisplayStyle","welcome_display_style","settings","getWebsiteSetting","session_timeout","oncehubBrandingUrl","branding_url","showPromotionalMessage","show_promotional_message","id","companyName","company_name","colour","textColour","text_colour","shape","widgetIcon","widget_icon","botIcon","bot_icon","fetchConverasation","page","Error","total","pageSize","response_interactions","map","item","log_id","reverse","welcomeInteractions","i","length","message","sent_by","is_read","parseInt","SocketStatus","reducer","state","action","startedAt","socket","messageFailed","messages","Date","now","Restarting","CONNECTED","CONNECTING","DISCONNECTED","Active","liveChatchannel","liveChatUsers","messageHistory","open","Initialised","interaction","interaction_type","action_type","schedule_status","schedule_fallback_message","schedule_confirm_data","liveChatObj","liveChatAccepted","liveChatOwnerId","liveChatUserTyping","contactId","Finished","isLiveChatAbandoned","bot","hasCloseNotifications","time_zone_id","timezoneId","messageIds","Set","nextMessages","has","filter","getWebsiteId","contactFieldId","contact_field_id","contactFieldType","contact_field_type","randomId","createActions","dispatch","getState","lastAnswer","retryAnswerTimeout","nextMessageAt","ping","finished","connect","URL","io","protocol","host","pathname","transports","connectSocket","on","then","addNextMessage","interaction_time","toISOString","text","error","setTimeout","endConversation","max","clearTimeout","answer_id","ms","time","current_interaction_id","interactionId","external_id","currentInteractionId","payload","eventId","website_id","session","done","sessionSocket","emit","close","send","connected","nextInteraction","answer","content","liveChatResponse","user","question_type","is_live_chat_notification","setLiveChatResponse","liveChatChannel","user_name","liveChatHistory","liveChatAnswer","liveChatTimeout","setLiveChatOwner","ownerId","updateLiveChatUserTypingState","setContactId","finishConversation","finished_by","updateTimezone","closeWidget","openWidget","isAnswerFromVisitor","interactionSeen","restart","resendLastMessage","scheduleResponse","initLiveChat","closeNotifications","cleanDoubleBookingError","heartbeat","timeout","loadPage","nextPage","ceil","openNewBot","disconnect","Context","instance","AppContext","React","createContext","notificationStyle","NotificationBadgeWithWelcomeInteraction","ConversationContext","SocketServiceContext","add","remove","Promise","all","conversation","AppContextProvider","children","startTime","setInstance","useReducer","useEffect","socketService","stateRef","useRef","current","ref","useSocketService","cancelled","fetchData","widgetLoadingFinished","appContext","useMemo","conversationContext","Provider","className","style","Styles","useContext","color","textColor","memo","UtilsService","indexOf","split","IS_MOBILE","test","navigator","userAgent","cookieEnabled","document","cookie","disabled","SHORT_DAY_NAMES","MONTH_NAMES","SHORT_MONTH_NAMES","WidgetToggle","count","actions","data-testid","onClick","xmlns","width","height","fill","fillRule","stroke","d","ColorSet","WidgetHeader","firstName","lastName","liveChatOwner","profileImage","toUpperCase","alt","src","botImg","trim","SendButton","active","viewBox","version","strokeWidth","transform","points","strokeLinecap","VADLIDATION_MESSAGES","dateFormatError","futureDateError","DEFAULT_TIMEZONE_ID","EMAILREGEXPATTERN","DATE_MASK","DATE_REGEX","DateInput","maskedInputRef","createRef","pipe","config","setValidation","props","date","substring","month","year","getFullYear","getMonth","getDate","allowOnlyFutureDate","getTime","onChange","keydown","event","keyCode","onSubmit","inputElement","focus","mask","placeholder","keepCharPositions","autoComplete","autoCorrect","guide","placeholderChar","onKeyDown","Component","DATETIME_MASK","DATE_TIME_REGEX","DatetimeInput","hours","minutes","am","setHours","setMinutes","TIME_MASK","TIME_REGEX","TimeInput","ChatButton","title","classNames","clickHandler","isDisabled","SelectList","useState","setHeight","el","querySelector","parentElement","updateHeight","clientHeight","addEventListener","removeEventListener","useListHeight","setFilter","regex","RegExp","replace","filteredOptions","items","option_text","selected","setSelected","onOptionClick","single","onSelect","selectedItem","container","listener","target","contains","input","HTMLInputElement","chatContainer","createPortal","maxHeight","checked","currentTarget","WidgetModal","closeModal","show","modalMessage","optionMessage","errorMessage","min","InteractionMultiSelect","setError","option","datatype","Boolean","selection","TextInput","textarea","heightDiv","innerText","endsWith","clientWidth","shiftKey","preventDefault","tabIndex","contentEditable","COUNTRY_OPTIONS","Object","keys","COUNTRY","PhoneInput","question","welcomePhoneQuestion","setPhone","onError","visitorCountry","country","visitorCountryObject","getDefaultCountry","visitorCountryCode","getCountryCallingCode","countryList","setCountryList","setCountry","setValue","invalid","setInvalid","selectCountry","useCallback","code","inputEl","selectionStart","selectionEnd","formatter","AsYouType","formattedInput","phoneNumber","getNumber","countryInfo","isValid","sort","x","y","EmailInput","emailInput","searchTimeout","findActiveQuestion","SelectInput","sendAnswer","selectProps","interaction_options","interaction_option_id","content_object_array","field_library_option_id","multi_choice_minimum","multi_choice_maximum","option_order","join","multi_interaction_options_answer_ids","multi_choice_type","createElement","Input","openSelectList","questionId","readOnly","require_in_future","checkValidation","questionType","errorMsg","phone","validatePhone","WidgetFooter","connecting","openEmoji","setState","stoppedTyping","updateIsTyping","updateState","next","showValidationMessage","welcomeMessage","welcomeQuestion","emojiDisabled","isEmojiDisabled","selectBox","editableBox","sendVisitorResponseInLiveChat","validationOption","messageText","newMessage","userType","sendMessage","notifyNewMessage","updateConversation","lastMessage","lastUpdatedTime","selectList","hidden","border","SendButtonIcon","href","rel","native","perLine","showPreview","emoji","EndConversation","isAbandoned","InteractionSingleSelect","TextMessageComponent","messageId","VideoMessage","parameters","isFullScreen","isOpen","isPaused","autoPlay","playerRef","togglePlay","hasPlayerRef","video","play","pause","currentTime","mute","subscribeToStateChange","handleFullScreen","bind","prevState","isFullscreen","videoTitle","description","muted","showBotName","playsInline","videoUrl","mp4","ogg","disableDefaultControls","renderTitleBox","ImageMessage","imageRef","theme","arrow","backgroundColor","opacity","transition","arrow__direction__left","marginLeft","arrow__direction__right","marginRight","arrow__size__medium","borderRadius","marginTop","padding","background","footer","footerCount","toggleLightbox","setAttribute","top","images","imageUrl","caption","imageTitle","onClose","showImageCount","isNotificationInteraction","renderLightbox","undefined","DocumentMessage","fileName","documentUrl","pop","decodeURIComponent","download","appendChild","click","removeChild","DocumentIcon","MessageUrl","openLink","urlProps","display","urlDefaultImage","extractHostName","TimezoneService","convertNumberToMinutes","numberString","convertOffsetToDisplayString","offset","hrs","mins","offsetMinute","getFullTimezoneString","hasDST","region","offsetString","getTimezoneStringByTimezoneId","tzId","timezone","TIMEZONES","tzString","timezoneObj","getTimezoneSettings","Country","Region","getSelectOptionRegionString","hasDst","TimeZone","HasDayLightSavings","eachDST","startTimeMili","endTimeMili","getOffsetAndDST","timeNow","timeZoneData","tzOffset","activeDST","find","DST","Number","getRegionData","TimeZones","tz","displayOrder","DisplayOrder","Id","shortName","ShortName","countryName","regionWithGMTAndDST","getTimezoneData","tzData","key","allCountriesString","regions","b","topCountriesString","TOP_COUNTRIES_IDS","reduce","prevArr","countryId","allCountriesData","topCountriesData","SelectListWithFilter","inputRef","customUlRef","customSelectDivRef","dropDownToggler","ulElm","selectedElm","scrollIntoView","customOuterDivElm","windowHeight","innerHeight","customOuterDimensions","getBoundingClientRect","lowerSectionHeight","parentDiv","classList","onCustomOptionClick","index","customSelectConfig","onOptionChange","optionValue","selectItems","forEach","optionText","filterItems","allOptions","placeholderText","selectedOptionText","showValidation","validationMessage","hasSelection","SelectListOption","params","TimezonePopup","tempSelectedCountry","tempSelectedRegionDetail","tempRegionList","dropdownCountryWithRegionList","dropdownRegionList","seperatorOption","selectOptionsForCountryList","selectOptionsForRegionList","placeholderTextForRegionsList","getStatesObj","selectedRegionDetails","selectedCountryName","selectedRegionNameWithGMTAndDST","showRegionValidation","getSelectedRegionsByTimezoneId","t","some","setDropdownCountryWithRegionList","concat","countryData","setDropdownRegionList","regionData","onCountryChange","newValue","resetRegionValidation","setCountryAndRegionByIndex","countryIndex","regionIndex","newRegionSelection","setRegionByIndex","selectedRegion","onRegionChange","onContinueBtnClick","timezoneString","closePopup","onCloseButtonClick","initializePopup","nextProps","stateObj","float","margin","dateToString","stringToDate","parts","nextDay","setDate","request","lastAvailableDay","part","slots","dateSlots","pm","duration","confirmSlot","Loader","doubleBooking","confirmAPIPromise","findNextAvailableDay","selectedDatePosition","selectedSlot","blockTrackingId","firstDate","changeInDays","start","end","nextDate","position","slot","promise","buttonText","smsChecked","modal","openModal","isNaN","DelayedLoader","setText","BackArrow","NextArrow","SlotDate","dates","getDay","Slots","setIndex","outerWidth","setPageSize","disableNext","disablePrev","viewNextAvailableDay","slice","timeStr","areSlotsAvailable","CalenderContent","timeZoneId","fetchSlots","block","displayedDates","selectedDate","selectedDaySlots","nextDatesVisibility","changeSelectedDatePosition","prevDates","nextDates","emptyDate","fetchDate","lastDateForSlot","slotOnDate","ConfirmSlotContent","dateObjSummary","confirmationFullText","schedule_confirmation_title","confirmationText","smsNotificationToggle","schedule_sms_notification","smsOptInText","schedule_sms_opt_in_text","confirmationTextLength","smsOptInTextLength","selectTimeSlotView","isChecked","smsConsent","schedule_confirmation_button","confirming","confirm","back","ConfirmationContent","confirmEventData","email","isCalendarEventCreated","dateObjSummarySplit","fullMonth","dayOfMonth","ErrorWhileFetchingContent","NoTimesIcon","ConversationEndedContent","ErrorWhileConfirmingContent","CONFIRM_ERROR_ICON","ErrorDoubleBookingContent","DOUBLE_BOOKING_ERROR_ICON","ScheduleAction","last","refs","initial_load","calendarVisible","startDate","endDate","catch","schedule_timeslot_fallback_button_text","shouldRenderheading","trackingid","timeZoneString","resourcesLinkId","resourceLinkId","enableSmsNotification","contactInfo","contact_info","blockSlot","meetingLowerBoundary","meetingUpperBoundary","panelTrackingId","interaction_text","schedule_action_event_type_meeting_length","timeoutInterval","abandonedTimeoutInterval","sound","require","is_mount","LiveChatActionComponent","unSubscribeMessages","unSubscribeNotifications","unSubscribeToTypingStatus","clearInterval","authToken","OhLiveChat","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","REACT_FIREBASE_MEASUREMENT_ID","init","getConversationDetail","liveChatConversation","contact","timeout_period","acceptedBy","floor","slug","getInstance","totalMessageCount","messageReadState","isTyping","createConversation","online_users","setInterval","createContact","sendMessageHistory","userId","notifyOnlineUsers","setLiveChatHistory","subscribeToTypingStatus","onTypingStatusChanged","creationTime","subscribeMessages","liveChatResponseForWidget","subscribeNotifications","liveChatNotificationHandler","readUpTo","getAllMessages","allLiveChatMessages","getUserDetail","userDetail","messageObject","oldMessageArray","sentByMessage","image_url","message_type","document_url","video_mp4","video_ogv","resetAbandonedTimer","Audio","default","console","log","val","setAbandonedTimer","notification","setLiveChatObj","RequireConsent","consentRef","bodyText","link","linkText","ConsentButtons","consented","onConsentClick","consentText","onMessageSent","requireConsent","messageContainer","closest","yesText","noText","TimeZoneQuestion","showModal","timezoneName","Timeago","ChatTimestamp","sentBy","ContactTimestamp","failed","words","allowFuture","substitute","stringOrFunction","num","strings","str","isFunction","dateDifference","numbers","nowTime","timestrings","day","days","hour","minute","months","prefixAgo","prefixFromNow","seconds","suffixAgo","suffixFromNow","wordSeparator","years","abs","separator","prefix","suffix","round","functionToCheck","call","ViewAgainButton","viewed","viewAgainText","DenyConsent","Select","setSticky","resizeCount","setResizeCount","hasContent","useLayoutEffect","getElementById","renderMessageBody","video_ogg","renderImageMessage","renderDocumentMessage","renderUrlMessage","button_text","privacy_policy_link","privacy_policy_link_text","MessageExtras","deny_button_text","accept_button_text","view_again_button_text","twoDigits","messageTitle","startOfDay","getHours","getMinutes","toLocaleDateString","WidgetMessage","showTimestamp","sticky","isHandOffInteraction","liveChatAgentAcceptsMessage","select","endChatWithoutMessage","colorCode","r","g","createPromotionalMessage","TypingIndication","liveChatUser","isBotTyping","showTimestampFactory","acceptMessageIndex","isConvEnded","convEnded","WidgetBody","ended","endConv","textAlign","bar","scrollBar","scrollBarValues","getValues","scrollTop","scrollHeight","scrollToBottom","ID_PREFIX","renderTextComponent","renderMessageInteraction","NotificationMessage","renderQuestion","HorizontalTrack","WidgetNotification","unread","upperDiv","lowerDiv","lower","upper","observer","ResizeObserver","observe","autoHide","renderTrackHorizontal","findPos","header","chatHeaderHeight","isScrollUp","setTabTitle","Widget","interval","root","threshold","showAlertBanner","firstUnreadMessageId","unreadAgentMsgCount","setUnreadAgentMsgCount","titleToggle","IntersectionObserver","isIntersecting","hideUnreadBanner","result","titleCount","msgStr","titleMsg","hasFocus","notifications","NotificationBadgeOnly","shouldShouldNotifications","restarting","stopPropagation","firstMessageId","widgetState","scrollId","firstMessageIdRef","lastMessageId","pos","getScrollHeight","getScrollTop","useScrollManager","appState","updateReadCount","notificationEffect","removeWidget","openWidgetOnPreview","sessionDuration","work","visibilityState","timeoutEffect","onScrollFrame","App","location","hostname","match","analyticCookieCommand","callType","xmlhttp","XMLHttpRequest","onreadystatechange","readyState","getResponseHeader","setAnalytics","withCredentials","setRequestHeader","website_slug","cookieType","page_url","element","ReactDOM","unmountComponentAtNode","render","page_title","direct_bot","start_time","REACT_APP_ENV","attributes","REACT_APP_WEBSITE_ID","REACT_APP_WIDGET_PREVIEW","REACT_APP_BOT_ID","serviceWorker","ready","registration","unregister","setStrategy","module","exports","CityList","CountryCallingCode","PriorityCountryId"],"mappings":"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TC,OAAQ,YACRmgB,SAAU,GACVhgB,SAAU,GACViB,aAAc,EACdhB,mBAAoB,GACpBggB,mBAAoB,QAGxB,IAAO,CACL,CACE/e,GAAI,MACJE,UAAW,KACXxB,QAAS,YACTC,OAAQ,UACRmgB,SAAU,GACVhgB,UAAW,EACXiB,aAAc,EACdhB,mBAAoB,GACpBggB,mBAAoB,OAGxB,IAAO,CACL,CACE/e,GAAI,MACJE,UAAW,KACXxB,QAAS,UACTC,OAAQ,0BACRmgB,SAAU,GACVhgB,SAAU,EACViB,aAAc,EACdhB,mBAAoB,GACpBggB,mBAAoB,OAGxB,IAAO,CACL,CACE/e,GAAI,MACJE,UAAW,KACXxB,QAAS,0BACTC,OAAQ,YACRmgB,SAAU,GACVhgB,UAAW,EACXiB,aAAc,EACdhB,mBAAoB,GACpBggB,mBAAoB,MAGxB,IAAO,CACL,CACE/e,GAAI,MACJE,UAAW,KACXxB,QAAS,uBACTC,OAAQ,oBACRmgB,SAAU,GACVhgB,UAAW,EACXiB,aAAc,EACdhB,mBAAoB,GACpBggB,mBAAoB,MAGxB,IAAO,CACL,CACE/e,GAAI,MACJE,UAAW,MACXxB,QAAS,qBACTC,OAAQ,eACRmgB,SAAU,GACVhgB,SAAU,GACViB,aAAc,EACdhB,mBAAoB,GACpBggB,mBAAoB,QAGxB,IAAO,CACL,CACE/e,GAAI,MACJE,UAAW,KACXxB,QAAS,oBACTC,OAAQ,WACRmgB,SAAU,GACVhgB,SAAU,GACViB,aAAc,EACdhB,mBAAoB,GACpBggB,mBAAoB,QAGxB,IAAO,CACL,CACE/e,GAAI,MACJE,UAAW,KACXxB,QAAS,QACTC,OAAQ,QACRmgB,SAAU,GACVhgB,SAAU,EACViB,aAAc,EACdhB,mBAAoB,GACpBggB,mBAAoB,QAGxB,IAAO,CACL,CACE/e,GAAI,MACJE,UAAW,KACXxB,QAAS,SACTC,OAAQ,SACRmgB,SAAU,GACVhgB,SAAU,EACViB,aAAc,EACdhB,mBAAoB,GACpBggB,mBAAoB,QAGxB,IAAO,CACL,CACE/e,GAAI,MACJE,UAAW,KACXxB,QAAS,WACTC,OAAQ,SACRmgB,SAAU,GACVhgB,SAAU,EACViB,aAAc,EACdhB,mBAAoB,GACpBggB,mBAAoB,UAK5BC,kBAAmB,CACjB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,U","file":"static/js/main.0a441b84.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/pingSound.c365ca1c.wav\";","import { Interaction, Message, WebsiteSettings } from \"./interaction.interface\";\n\nexport enum ConversationState {\n Active = \"active\",\n Initialised = \"initialised\",\n /* these two status are not sent by server */\n Finished = \"finshed\",\n Restarting = \"Restarting\"\n}\n\nexport enum NotificationStyle {\n NotificationBadgeWithWelcomeInteraction = \"notification_badge_and_welcome_interactions\",\n NotificationBadgeOnly = \"notification_badge_only\"\n}\n\nexport interface IWidgetOptions {\n botId: null | string;\n pageUrl: string;\n websiteId: string;\n preview: boolean;\n pageTitle: string;\n directBot: boolean;\n}\n\nexport const liveChatColours = [\n \"#B731A9\",\n \"#00BFB2\",\n \"#7494EA\",\n \"#FF9785\",\n \"#F865B0\",\n \"#ffc57a\",\n \"#209DBA\",\n \"#EC4067\",\n \"#B5D6B2\",\n \"#AFBBF2\",\n \"#3ABEFF\",\n \"#CCD7C5\",\n \"#735CDD\",\n \"#C86FC9\",\n \"#028090\",\n \"#f9627d\",\n \"#3dd7df\",\n \"#A379C9\",\n \"#129490\",\n \"#ED217C\",\n \"#4A8FE7\",\n \"#EF8275\",\n \"#81B29A\",\n \"#3E6680\",\n \"#FBC2BB\",\n \"#F79AD3\",\n \"#FF9B42\",\n \"#7C98B6\",\n \"#A9F0D1\",\n \"#FEC0CE\",\n \"#82b0d6\",\n \"#6622CC\",\n \"#88A096\",\n \"#4D6CFA\",\n \"#FDC5F5\",\n \"#FB4D3D\",\n \"#817A80\",\n \"#3a9671\",\n \"#99E4D0\",\n \"#FFC482\",\n \"#2EC0F9\",\n \"#9368B7\",\n \"#CC92C2\",\n \"#FF6663\",\n \"#55ADA0\",\n \"#ff7b99\",\n \"#1EECB3\",\n \"#7F95D1\"\n];\n\nexport interface ISetupWidgetResponse {\n botId: null | string;\n botName: null | string;\n accountId: string;\n conversationId: string;\n isFirstTime: boolean;\n chSessionId: null | string;\n conversationState: ConversationState;\n showClosedWidgetInteractions: boolean;\n welcomeDisplayStyle: NotificationStyle;\n settings: WebsiteSettings;\n session_timeout: number;\n oncehubBrandingUrl: string;\n showPromotionalMessage: boolean;\n}\n\nexport interface FetchConversationResponse {\n response_interactions: Message[];\n welcomeInteractions: (Interaction & { log_id: number })[];\n total: number;\n pageSize: number;\n}\n\nexport const LOCAL_STORAGE_SESSION_KEY_PREFIX = \"ch_session\";\n\nexport const LOCAL_STORAGE_CONTACT_KEY_PREFIX = \"ch_contact\";\n\nexport const ANALYTICS_KEY_PREFIX = \"ch_analytics\";\nexport const CONSENT_ANALYTIC_COOKIE_VALUE = \"Analytics_is_ON_after_consent\";\nexport const ANALYTIC_COOKIE_VALUE = \"Analytics_is_ON\";\n\nexport const LIVE_CHAT_CHANNEL = \"live_chat\";\n\nexport interface Socket {\n on(event: string, fn: Function): void;\n emit(event: string, ...args: any[]): void;\n close(): void;\n connected: boolean;\n}\n\nexport interface Analytics {\n analytics_on_consent: boolean;\n}\n\nexport interface StorageData {\n contactCookie: CookieData;\n sessionCookie: CookieData;\n analyticCookie: CookieData;\n}\n\nexport interface CookieData {\n name: string;\n value: string;\n expires: string;\n same_site: string;\n path: string;\n secure: string;\n}\n\nexport const CONTACT_COOKIE_HEADER_KEY = \"set-co-contact-cookie\";\nexport const SESSION_COOKIE_HEADER_KEY = \"set-co-session-cookie\";\nexport const ANALYTIC_COOKIE_HEADER_KEY = \"set-co-analytic-cookie\";\n\nexport const RETRY_ANSWER_TIMEOUT = 10000;\n\nexport const mockSessionCookie = {\n same_site: \"strict\",\n path: \"/\",\n secure: false,\n name: \"ch_session_web-test\",\n value: \"test-session\",\n expires: \"2020-09-18T06:30:00.464Z\"\n};\nexport const mockContactCookie = {\n same_site: \"strict\",\n path: \"/\",\n secure: false,\n name: \"ch_contact_web-test\",\n value: \"test-contact\",\n expires: \"2020-12-17T06:00:00.463Z\"\n};\nexport const mockAnalyticCookie = {\n same_site: \"strict\",\n path: \"/\",\n secure: false,\n name: \"ch_analytic_web-test\",\n value: \"test-analytic\",\n expires: \"2020-12-17T06:00:00.463Z\"\n};\n","import { Analytics, StorageData } from \"../constants\";\nexport class MemoryStorage {\n static currentSession: string;\n static currentContact: string;\n static currentAnalytics: string;\n static analyticsSetting: Analytics;\n\n public static getSession() {\n return this.currentSession;\n }\n\n public static setValues(storageData: StorageData) {\n const analyticCookie = this.getAnalytics();\n this.currentSession = storageData.sessionCookie.value;\n this.currentContact = storageData.contactCookie.value;\n this.currentAnalytics = analyticCookie || storageData.analyticCookie.value;\n }\n\n public static getContact() {\n return this.currentContact;\n }\n\n public static setAnalytics(storageData: StorageData) {\n const analyticCookie = this.getAnalytics();\n this.currentContact = storageData.contactCookie.value;\n this.currentAnalytics = analyticCookie || storageData.analyticCookie.value;\n }\n\n public static getAnalytics() {\n return this.currentAnalytics;\n }\n}\n","import { Analytics, StorageData } from \"../constants\";\nimport { ICookie } from \"../interfaces/cookie\";\n\nexport class CookieStorage {\n static analyticsSetting: Analytics;\n static currentSession: string;\n static currentContact: string;\n static currentAnalytics: string;\n\n public static getSession(): string {\n return this.currentSession;\n }\n\n public static getContact(): string {\n return this.currentContact;\n }\n\n /**\n * Sets the analytics cookie\n */\n public static setAnalytics(storage: StorageData) {\n this.currentAnalytics = storage.analyticCookie.value;\n window.parent.postMessage(\n {\n type: \"setCookie\",\n values: [\n {\n name: storage.analyticCookie.name,\n expiry: storage.analyticCookie.expires,\n value: storage.analyticCookie.value,\n same_site: storage.analyticCookie.same_site,\n path: storage.analyticCookie.path\n },\n {\n name: storage.contactCookie.name,\n expiry: storage.contactCookie.expires,\n value: storage.contactCookie.value,\n same_site: storage.analyticCookie.same_site,\n path: storage.analyticCookie.path\n }\n ]\n },\n \"*\"\n );\n }\n\n /**\n * Gets the analytics cookie\n */\n public static getAnalytics(): string {\n return this.currentAnalytics;\n }\n\n public static setValues(storageData: StorageData) {\n let cookiesValues: ICookie[] = [];\n\n if (storageData.sessionCookie) {\n this.currentSession = storageData.sessionCookie.value;\n\n cookiesValues.push({\n name: storageData.sessionCookie.name,\n expiry: storageData.sessionCookie.expires,\n value: this.currentSession,\n same_site: storageData.sessionCookie.same_site,\n path: storageData.sessionCookie.path\n });\n }\n\n if (storageData.contactCookie) {\n this.currentContact = storageData.contactCookie.value;\n\n cookiesValues.push({\n name: storageData.contactCookie.name,\n expiry: storageData.contactCookie.expires,\n value: this.currentContact,\n same_site: storageData.contactCookie.same_site,\n path: storageData.contactCookie.path\n });\n }\n\n if (storageData.analyticCookie) {\n this.currentAnalytics = storageData.analyticCookie.value;\n\n cookiesValues.push({\n name: storageData.analyticCookie.name,\n expiry: storageData.analyticCookie.expires,\n value: this.currentAnalytics,\n same_site: storageData.analyticCookie.same_site,\n path: storageData.analyticCookie.path\n });\n }\n\n window.parent.postMessage(\n {\n type: \"setCookie\",\n values: cookiesValues\n },\n \"*\"\n );\n }\n}\n","import { MemoryStorage } from \"./memory-storage\";\nimport { CookieStorage } from \"./cookie-storage\";\n\nexport class StorageStrategy {\n private static strategy: MemoryStorage | CookieStorage = MemoryStorage;\n\n public static getStrategy(): any {\n return StorageStrategy.strategy;\n }\n\n public static setStrategy(): void {\n // As we are using first party cookies\n // We can always set cookies in normal and incognito mode\n StorageStrategy.strategy = CookieStorage;\n // if (navigator.cookieEnabled) {\n // StorageStrategy.strategy = CookieStorage;\n // } else {\n // StorageStrategy.strategy = MemoryStorage;\n // }\n }\n}\n","export function createGuid() {\n function _p8(s) {\n var p = (Math.random().toString(16) + \"000000000\").substr(2, 8);\n return s ? \"-\" + p.substr(0, 4) + \"-\" + p.substr(4, 4) : p;\n }\n return _p8(false) + _p8(true) + _p8(true) + _p8(false);\n}\n","import { createGuid } from \"./helpers\";\n\ninterface apiOptions {\n headers: {};\n body?: {};\n credentials?: boolean;\n}\n\ninterface fetchOptions {\n method: string;\n headers: {};\n body: string;\n credentials?: \"include\";\n}\n\nexport class ApiClient {\n static get(url: string, options: apiOptions) {\n return this.client(\n url,\n this.updateOptions(options),\n \"get\",\n options.credentials || false\n );\n }\n\n static post(url: string, options: apiOptions) {\n return this.client(\n url,\n this.updateOptions(options),\n \"post\",\n options.credentials || false\n );\n }\n\n private static client(\n url,\n options: apiOptions,\n httpVerb: string,\n credentials: boolean\n ) {\n let fetchOptions: fetchOptions = {\n method: httpVerb,\n headers: options.headers,\n body: JSON.stringify(options.body)\n };\n if (credentials) {\n fetchOptions.credentials = \"include\";\n }\n return fetch(url, fetchOptions);\n }\n\n private static updateOptions(options: any) {\n let updatedOptions = { ...options };\n updatedOptions.headers = {\n ...options.headers,\n \"x-request-id\": createGuid()\n };\n return updatedOptions;\n }\n}\n","import {\n IWidgetOptions,\n ISetupWidgetResponse,\n ANALYTIC_COOKIE_HEADER_KEY,\n CONTACT_COOKIE_HEADER_KEY,\n SESSION_COOKIE_HEADER_KEY\n} from \"./constants\";\nimport { StorageStrategy } from \"./utils/storage-strategy\";\nimport { ApiClient } from \"./utils/api-client\";\n\n/**\n * Gets bot in current session\n * If botId is not found in response then there is no active bot and all other fields will be empty\n */\nexport async function setupWidget(\n options: IWidgetOptions\n): Promise {\n const storage = StorageStrategy.getStrategy();\n let chSessionId = options.preview ? null : storage.getSession();\n let chContactId = options.preview ? null : storage.getContact();\n let chAnalytics = options.preview ? null : storage.getAnalytics();\n const response = await ApiClient.post(\n process.env.REACT_APP_SETTINGS_API + \"setup-widget\",\n {\n headers: {\n \"content-type\": \"application/json\"\n },\n body: {\n pageUrl: options.pageUrl,\n pageTitle: options.pageTitle,\n websiteId: options.websiteId,\n botId: options.botId,\n preview: options.preview,\n directBot: options.directBot,\n chContactId,\n chAnalytics,\n chSessionId\n },\n credentials: true\n }\n );\n\n const json = await response.json();\n if (json.success !== true) return null;\n\n let sessionId = null;\n let sessionCookieData;\n let contactCookieData;\n let analyticCookieData;\n\n try {\n sessionCookieData = JSON.parse(\n response.headers.get(SESSION_COOKIE_HEADER_KEY) || \"\"\n );\n sessionId = sessionCookieData.value;\n } catch (e) {\n sessionCookieData = null;\n }\n\n try {\n contactCookieData = JSON.parse(\n response.headers.get(CONTACT_COOKIE_HEADER_KEY) || \"\"\n );\n } catch (e) {\n contactCookieData = null;\n }\n\n try {\n analyticCookieData = JSON.parse(\n response.headers.get(ANALYTIC_COOKIE_HEADER_KEY) || \"\"\n );\n } catch (e) {\n analyticCookieData = null;\n }\n\n let storageData = {};\n\n if (options.preview) {\n storageData = {\n contactCookie: contactCookieData,\n sessionCookie: sessionCookieData\n };\n } else {\n storageData = {\n contactCookie: contactCookieData,\n sessionCookie: sessionCookieData,\n analyticCookie: analyticCookieData\n };\n }\n\n storage.setValues(storageData);\n\n if (response.status === 200 || response.status === 209) {\n return {\n botId: json.data.bot_id || null,\n botName: json.data.bot_name || null,\n accountId: json.data.account_id,\n conversationId: json.data.conversation_id,\n chSessionId: sessionId,\n isFirstTime: json.data.is_first_time,\n conversationState: json.data.conversation_state,\n showClosedWidgetInteractions: json.data.show_closed_widget_interactions,\n welcomeDisplayStyle: json.data.welcome_display_style,\n settings: getWebsiteSetting(json.data.settings, options.websiteId),\n session_timeout: json.data.session_timeout,\n oncehubBrandingUrl: json.data.branding_url,\n showPromotionalMessage: json.data.show_promotional_message\n };\n } else {\n return null;\n }\n}\n\nfunction getWebsiteSetting(data, websiteId) {\n return {\n id: websiteId,\n botName: data?.bot_name,\n companyName: data?.company_name,\n colour: data?.colour,\n textColour: data?.text_colour,\n shape: data?.shape,\n widgetIcon: data?.widget_icon,\n botIcon: data?.bot_icon\n };\n}\n","import { FetchConversationResponse } from \"./constants\";\nimport { ApiClient } from \"./utils/api-client\";\nimport { StorageStrategy } from \"./utils/storage-strategy\";\nimport { Interaction } from \"./interaction.interface\";\n\n/** Fetches current conversation. In preview we don't fetch conversation */\nexport async function fetchConverasation(\n websiteId: string,\n page: number = 1\n): Promise {\n const storage = StorageStrategy.getStrategy();\n const url =\n process.env.REACT_APP_SETTINGS_API +\n \"response-interactions?page=\" +\n page +\n \"&website_id=\" +\n websiteId +\n \"&ch_session_id=\" +\n storage.getSession();\n const response = await ApiClient.get(url, {\n headers: {\n \"content-type\": \"application/json\"\n }\n });\n if (response.status !== 200) {\n throw new Error(\"Unexpected response from server\");\n }\n const total = response.headers.get(\"total\");\n const pageSize = response.headers.get(\"per-page\");\n if (total == null || pageSize == null) throw new Error();\n const json = await response.json();\n json.response_interactions = json.response_interactions.map(item => ({\n ...item,\n id: item.log_id.toString()\n }));\n json.response_interactions.reverse();\n const welcomeInteractions: (Interaction & { log_id: number })[] = [];\n for (let i = json.response_interactions.length - 1; i >= 0; i--) {\n const message = json.response_interactions[i];\n if (message.sent_by === \"bot\" && !message.is_read) {\n welcomeInteractions.push(message);\n }\n }\n return {\n response_interactions: json.response_interactions,\n welcomeInteractions: welcomeInteractions.reverse(),\n total: parseInt(total),\n pageSize: parseInt(pageSize)\n };\n}\n","import {\n Message,\n Interaction,\n ConfirmEventData,\n WebsiteSettings,\n Question // release toggle name MakeBotsWorkAtScale\n} from \"./interaction.interface\";\nimport {\n NotificationStyle,\n ConversationState,\n LIVE_CHAT_CHANNEL\n} from \"./constants\";\nimport {\n ErrorWhileBlocking,\n ErrorWhileConfirming,\n FetchSlotsAPIErrorResponse\n} from \"./widget-container/widget-body/widget-message/action-interactions/schedule-action/slots.type\";\n\nexport enum SocketStatus {\n CONNECTED,\n DISCONNECTED,\n CONNECTING\n}\n\nexport interface Bot {\n id: string | null;\n name: string | null;\n session_timeout: number;\n hasCloseNotifications: boolean;\n notificationStyle: NotificationStyle;\n}\n\nexport interface IAppContext {\n preview: boolean;\n settings: WebsiteSettings;\n bot: Bot;\n accountId: string;\n conversationId: string;\n state: ConversationState | null;\n socket: SocketStatus;\n open: boolean;\n oncehubBrandingUrl: string;\n showPromotionalMessage: boolean;\n liveChatchannel?: any;\n liveChatAccepted?: boolean;\n isLiveChatAbandoned?: boolean;\n liveChatUsers?: {};\n liveChatObj?: any;\n liveChatOwnerId?: string;\n liveChatUserTyping?: boolean;\n contactId?: string;\n}\n\nexport interface IConversationContext {\n messages: Message[];\n welcomeInteractions?: [];\n messageFailed: boolean;\n pageSize: number;\n total: number;\n}\n\nexport interface AppState {\n liveChatUsers?: {};\n startedAt: number;\n bot: null | Bot;\n accountId: string;\n conversationId: string;\n settings: null | WebsiteSettings;\n liveChatchannel?: any;\n liveChatAccepted?: boolean;\n isLiveChatAbandoned?: boolean;\n liveChatObj?: any;\n liveChatOwnerId?: string;\n liveChatUserTyping?: boolean;\n contactId?: string;\n messages: Message[];\n welcomeInteractions?: [];\n page: number;\n total: number;\n state: ConversationState | null;\n socket: SocketStatus;\n open: boolean;\n messageFailed: boolean;\n pageSize: number;\n oncehubBrandingUrl: string;\n showPromotionalMessage: boolean;\n}\n\nexport type AppAction =\n | {\n type: \"SETUP\";\n data: {\n bot: Bot;\n accountId: string;\n conversationId: string;\n settings: WebsiteSettings;\n messages: Message[];\n total: number;\n state: ConversationState;\n open: boolean;\n pageSize: number;\n oncehubBrandingUrl: string;\n showPromotionalMessage: boolean;\n };\n }\n | { type: \"RESTART\" }\n | { type: \"SOCKET_CONNECT\" }\n | { type: \"SOCKET_CONNECTING\" }\n | { type: \"SOCKET_DISCONNECT\" }\n | {\n type: \"NEW_MESSAGE\";\n liveChatchannel?: any;\n liveChatUsers?: any;\n message: Message;\n }\n | {\n type: \"LIVE_CHAT_HISTORY\";\n messageHistory: Message[];\n liveChatUsers?: any;\n liveChatchannel?: any;\n }\n | { type: \"BOT_RESPONSE\" }\n | { type: \"INITIATED\" }\n | { type: \"OPEN_WIDGET\" }\n | { type: \"OPEN_WIDGET_LINK\" }\n | { type: \"CLOSE_WIDGET\" }\n | { type: \"MESSAGE_FAILED\" }\n | {\n type: \"SCHEDULE_RESPONSE\";\n response:\n | ErrorWhileConfirming\n | ConfirmEventData\n | FetchSlotsAPIErrorResponse\n | ErrorWhileBlocking;\n }\n | { type: \"INIT_LIVE_CHAT\"; liveChatObj: any }\n | { type: \"LIVE_CHAT_TIMEOUT\" }\n | { type: \"LIVE_CHAT_ACCEPTED\" }\n | { type: \"ABANDONED_CHAT\" }\n | { type: \"SET_LIVE_CHAT_OWNER\"; liveChatOwnerId: string }\n | { type: \"SET_LIVE_CHAT_USER_TYPING\"; liveChatUserTyping: boolean }\n | { type: \"SET_CONTACT_ID\"; contactId: string }\n | { type: \"END_CONVERSATION\" }\n | { type: \"INTERACTION_SEEN\" }\n | { type: \"CLOSED_NOTIFICATIONS\" }\n | { type: \"ANSWER_DELIVERED\"; id: string }\n | { type: \"RESEND_LAST_MESSAGE\" }\n | { type: \"UPDATE_TIMEZONE\"; timezoneId: string }\n | { type: \"CLEAN_DOUBLE_BOOKING_ERROR\" }\n | { type: \"APPEND_MISSED_MESSAGE\"; messages: Message[] }\n | { type: \"LOADING_NEXT_PAGE\"; page: number }\n | { type: \"LOAD_PAGE\"; messages: Message[] };\n\nexport function reducer(state: AppState, action: AppAction): AppState {\n switch (action.type) {\n case \"SETUP\":\n return {\n ...action.data,\n page: 1,\n accountId: action.data.accountId,\n conversationId: action.data.conversationId,\n startedAt: state.startedAt,\n socket: state.socket,\n messageFailed: false\n };\n case \"RESTART\":\n return {\n ...state,\n messages: [],\n page: 0,\n startedAt: Date.now(),\n total: 0,\n state: ConversationState.Restarting,\n messageFailed: false\n };\n case \"SOCKET_CONNECT\":\n return {\n ...state,\n socket: SocketStatus.CONNECTED\n };\n case \"SOCKET_CONNECTING\":\n return {\n ...state,\n socket: SocketStatus.CONNECTING\n };\n case \"SOCKET_DISCONNECT\":\n return {\n ...state,\n socket: SocketStatus.DISCONNECTED\n };\n case \"INITIATED\":\n return {\n ...state,\n state: ConversationState.Active\n };\n case \"NEW_MESSAGE\":\n return {\n ...state,\n liveChatchannel: action.liveChatchannel,\n liveChatUsers: action.liveChatUsers,\n messageFailed: false,\n total: state.total + 1,\n messages: [...state.messages, action.message]\n };\n case \"LIVE_CHAT_HISTORY\":\n return {\n ...state,\n liveChatUsers: action.liveChatUsers,\n liveChatchannel: action.liveChatchannel,\n total: state.total + action.messageHistory.length,\n messages: [...state.messages, ...action.messageHistory]\n };\n case \"OPEN_WIDGET\":\n return {\n ...state,\n open: true,\n state:\n state.state === ConversationState.Initialised\n ? ConversationState.Active\n : state.state\n };\n case \"OPEN_WIDGET_LINK\":\n return {\n ...state,\n open: true,\n messages: [],\n page: 0,\n total: 0,\n state: ConversationState.Active,\n messageFailed: false\n };\n case \"CLOSE_WIDGET\":\n return {\n ...state,\n open: false\n };\n case \"MESSAGE_FAILED\":\n return {\n ...state,\n messageFailed: true\n };\n case \"SCHEDULE_RESPONSE\": {\n const messages = [...state.messages];\n const message = { ...messages[messages.length - 1] };\n if (message.sent_by !== \"bot\") throw new Error();\n const interaction = { ...message.data } as Interaction;\n if (interaction.interaction_type !== \"action\") throw new Error();\n if (interaction.action_type !== \"schedule\") throw new Error();\n if (\"schedule_status\" in action.response) {\n interaction.schedule_status = action.response.schedule_status;\n interaction.schedule_fallback_message =\n action.response.schedule_fallback_message;\n } else {\n interaction.schedule_status = \"confirmed\";\n interaction.schedule_confirm_data = action.response;\n }\n message.data = interaction;\n messages[messages.length - 1] = message;\n return { ...state, messages };\n }\n case \"INIT_LIVE_CHAT\": {\n return {\n ...state,\n liveChatObj: action.liveChatObj,\n liveChatchannel: LIVE_CHAT_CHANNEL\n };\n }\n case \"LIVE_CHAT_TIMEOUT\":\n return { ...state, liveChatObj: null, liveChatchannel: null };\n case \"LIVE_CHAT_ACCEPTED\":\n return { ...state, liveChatAccepted: true };\n case \"SET_LIVE_CHAT_OWNER\":\n return { ...state, liveChatOwnerId: action.liveChatOwnerId };\n case \"SET_LIVE_CHAT_USER_TYPING\":\n return { ...state, liveChatUserTyping: action.liveChatUserTyping };\n case \"SET_CONTACT_ID\":\n return { ...state, contactId: action.contactId };\n case \"CLEAN_DOUBLE_BOOKING_ERROR\": {\n const messages = [...state.messages];\n const message = { ...messages[messages.length - 1] };\n if (message.sent_by !== \"bot\") throw new Error();\n const interaction = { ...message.data } as Interaction;\n if (interaction.interaction_type !== \"action\") throw new Error();\n if (interaction.action_type !== \"schedule\") throw new Error();\n delete interaction.schedule_status;\n message.data = interaction;\n messages[messages.length - 1] = message;\n return { ...state, messages };\n }\n case \"END_CONVERSATION\":\n return { ...state, state: ConversationState.Finished };\n case \"ABANDONED_CHAT\":\n return {\n ...state,\n state: ConversationState.Finished,\n isLiveChatAbandoned: true\n };\n case \"INTERACTION_SEEN\":\n return {\n ...state,\n messages: state.messages.map(message => {\n if (message.sent_by === \"contact\") return message;\n if (message.is_read === true) return message;\n return { ...message, is_read: true };\n })\n };\n case \"CLOSED_NOTIFICATIONS\":\n return {\n ...state,\n bot: state.bot && {\n ...state.bot,\n hasCloseNotifications: true\n }\n };\n case \"ANSWER_DELIVERED\":\n return {\n ...state,\n messages: state.messages.map(message =>\n message.id !== action.id\n ? message\n : {\n ...message,\n is_read: true\n }\n )\n };\n case \"RESEND_LAST_MESSAGE\":\n return {\n ...state,\n messageFailed: false\n };\n case \"UPDATE_TIMEZONE\": {\n let messages = state.messages;\n const message = messages[messages.length - 1];\n if (message.sent_by === \"contact\") return state;\n const interaction = message.data as Interaction;\n if (interaction.interaction_type !== \"action\") return state;\n if (interaction.action_type !== \"schedule\") return state;\n messages = [...messages];\n messages[messages.length - 1] = {\n ...message,\n data: { ...interaction, time_zone_id: action.timezoneId }\n };\n return { ...state, messages };\n }\n case \"APPEND_MISSED_MESSAGE\": {\n const messages = [...state.messages];\n const messageIds = new Set(messages.map(message => message.id));\n const nextMessages = action.messages;\n let total = state.total;\n for (let i = nextMessages.length - 1; i >= 0; i--) {\n const message = nextMessages[i];\n if (message.sent_by === \"bot\" && !messageIds.has(message.id)) {\n messages.push(message);\n total++;\n }\n }\n return { ...state, messages, total };\n }\n case \"LOADING_NEXT_PAGE\": {\n return { ...state, page: state.page + 1 };\n }\n case \"LOAD_PAGE\": {\n const messages = [...state.messages];\n const messageIds = new Set(messages.map(message => message.id));\n const nextMessages = action.messages.filter(\n message => !messageIds.has(message.id)\n );\n return {\n ...state,\n messages: [...nextMessages, ...state.messages],\n total: state.total\n };\n }\n default:\n throw new Error(\"Unknown action \" + JSON.stringify(action, null, 4));\n }\n}\n\nexport function initialAppState(): AppState {\n return {\n bot: null,\n accountId: \"\",\n conversationId: \"\",\n settings: null,\n messages: [],\n welcomeInteractions: [],\n page: 0,\n total: 0,\n pageSize: 15,\n state: ConversationState.Initialised,\n startedAt: Date.now(),\n socket: SocketStatus.DISCONNECTED,\n open: false,\n messageFailed: false,\n oncehubBrandingUrl: \"\",\n showPromotionalMessage: false\n };\n}\n\nexport function getWebsiteId(state: AppState): string {\n if (state.settings === null) throw new Error();\n return state.settings.id;\n}\n\nexport function currentInteractionId(state: AppState): null | string {\n const messages = state.messages;\n let interactionId: string | null = null;\n for (let i = messages.length - 1; i >= 0 && interactionId === null; i--) {\n const message = messages[i];\n if (message.sent_by === \"agent\") {\n break;\n }\n if (\n message.sent_by === \"bot\" &&\n (message.data as Interaction).interaction_type != null\n ) {\n interactionId = (message.data as Interaction).external_id;\n }\n }\n return interactionId;\n}\n\n// release toggle name MakeBotsWorkAtScale\nexport function contactFieldId(state: AppState): null | string {\n const messages = state.messages;\n let contact_field_id: string | null = null;\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i];\n if (message.sent_by === \"bot\") {\n contact_field_id = (message.data as Question).contact_field_id;\n break;\n }\n }\n return contact_field_id;\n}\n\nexport function contactFieldType(state: AppState): null | number {\n const messages = state.messages;\n let contact_field_type: number | null = null;\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i];\n if (message.sent_by === \"bot\") {\n contact_field_type = (message.data as Question).contact_field_type;\n break;\n }\n }\n return contact_field_type;\n}\n","import {\n AppAction,\n AppState,\n currentInteractionId,\n contactFieldId, // release toggle name MakeBotsWorkAtScale\n contactFieldType,\n getWebsiteId\n} from \"./reducer\";\nimport {\n Interaction,\n Message,\n ConfirmEventData\n} from \"./interaction.interface\";\nimport { Dispatch } from \"react\";\nimport {\n ErrorWhileBlocking,\n ErrorWhileConfirming,\n FetchSlotsAPIErrorResponse\n} from \"./widget-container/widget-body/widget-message/action-interactions/schedule-action/slots.type\";\nimport { fetchConverasation } from \"./conversation.service\";\nimport {\n ConversationState,\n Socket,\n RETRY_ANSWER_TIMEOUT,\n LIVE_CHAT_CHANNEL\n} from \"./constants\";\nimport { connectSocket } from \"./io\";\nimport { StorageStrategy } from \"./utils/storage-strategy\";\nimport { IUser } from \"./interaction.interface\";\n\nexport type ContentObjForSingleOrMultiChoiceAnswer = {\n id: string;\n value: string;\n};\n\nexport type ServerEvent =\n | {\n type: \"conversation_initiated\";\n }\n | {\n type: \"new_interaction\";\n }\n | {\n type: \"bot_response\";\n }\n | {\n type: \"interaction_error\";\n }\n | { type: \"end_conversation\" }\n | {\n type: \"all_interactions_send\";\n }\n | {\n type: \"answer_delivered\";\n };\n\ninterface AnswerEvent {\n type: \"answer\";\n answer_id: string;\n content?: string;\n content_object_array?: ContentObjForSingleOrMultiChoiceAnswer[];\n time_zone_id?: string;\n interaction_option_id?: number;\n multi_interaction_options_answer_ids?: number[];\n}\n\ntype ClientEvent =\n | AnswerEvent\n | {\n type: \"next_interaction\";\n }\n | {\n type: \"welcome_interactions_closed\";\n }\n | {\n type: \"finish_conversation\";\n finished_by: string;\n }\n | {\n type: \"update_timezone\";\n time_zone_id: string;\n }\n | {\n type: \"interaction_seen\";\n }\n | {\n type: \"heartbeat\";\n }\n | {\n type: \"live_chat_accepted\";\n }\n | {\n type: \"live_chat_timeout\";\n };\n\nfunction randomId(): string {\n return (\n ((Math.random() * 1073741824) >>> 0).toString(36) +\n ((Math.random() * 1073741824) >>> 0).toString(36)\n );\n}\n\nexport type Actions = ReturnType;\n\nexport type Answer =\n | { content: string }\n | {\n content: string;\n interaction_option_id: number;\n content_object_array: ContentObjForSingleOrMultiChoiceAnswer[];\n }\n | {\n content: string;\n multi_interaction_options_answer_ids: number[];\n content_object_array: ContentObjForSingleOrMultiChoiceAnswer[];\n }\n | { content: string; time_zone_id: string };\n\nexport function createActions(\n dispatch: Dispatch,\n getState: () => AppState\n) {\n let socket: null | Socket = null;\n let lastAnswer: AnswerEvent | null = null;\n let retryAnswerTimeout: any = null;\n let nextMessageAt = Date.now();\n let ping = 2500;\n let finished = false;\n let storage = StorageStrategy.getStrategy();\n\n function connect() {\n socket = connectSocket();\n\n dispatch({ type: \"SOCKET_CONNECTING\" });\n\n socket.on(\"connect\", () => dispatch({ type: \"SOCKET_CONNECT\" }));\n\n socket.on(\"disconnect\", () => dispatch({ type: \"SOCKET_DISCONNECT\" }));\n\n socket.on(\"reconnect\", () => {\n dispatch({ type: \"SOCKET_CONNECT\" });\n fetchConverasation(getWebsiteId(getState())).then(data =>\n dispatch({\n type: \"APPEND_MISSED_MESSAGE\",\n messages: data.response_interactions\n })\n );\n });\n\n socket.on(\"conversation_initiated\", () => dispatch({ type: \"INITIATED\" }));\n\n socket.on(\n \"new_interaction\",\n (interaction: Interaction & { log_id: number }) =>\n addNextMessage({\n id: interaction.log_id.toString(),\n sent_by: \"bot\",\n data: interaction,\n is_read: false,\n interaction_time: new Date().toISOString()\n })\n );\n\n socket.on(\"bot_response\", data =>\n addNextMessage({\n id: data.log_id.toString(),\n sent_by: \"bot\",\n data: {\n text: data.text\n },\n is_read: false,\n interaction_time: new Date().toISOString()\n })\n );\n\n socket.on(\"interaction_error\", data =>\n addNextMessage({\n id: data.log_id.toString(),\n sent_by: \"bot\",\n data: {\n text: data.error\n },\n is_read: false,\n interaction_time: new Date().toISOString()\n })\n );\n\n socket.on(\"end_conversation\", () => {\n setTimeout(endConversation, Math.max(0, nextMessageAt - Date.now()));\n });\n\n socket.on(\"answer_delivered\", data => {\n if (retryAnswerTimeout !== null) clearTimeout(retryAnswerTimeout);\n dispatch({ type: \"ANSWER_DELIVERED\", id: data.answer_id });\n nextMessageAt = Date.now() + 500; // Display the typing indicator for atleast 0.5 second before sending the next interaction\n });\n\n socket.on(\"all_interactions_send\", () => {\n setTimeout(endConversation, Math.max(0, nextMessageAt - Date.now()));\n });\n\n socket.on(\"pong\", (ms: number) => {\n ping = ms;\n });\n\n return socket;\n }\n\n function addNextMessage(message: Message) {\n const time = nextMessageAt - Date.now();\n if (time <= 0) {\n nextMessageAt = Date.now() + 1000;\n dispatch({ type: \"NEW_MESSAGE\", message });\n } else {\n nextMessageAt += 1000;\n setTimeout(() => dispatch({ type: \"NEW_MESSAGE\", message }), time);\n }\n }\n\n function disconnect() {\n socket?.close();\n socket = null;\n }\n\n function push({ type, ...data }: ClientEvent) {\n if (finished) return;\n let sessionId = storage.getSession();\n if (!sessionId) {\n endConversation();\n return;\n }\n if (socket === null) {\n socket = connect();\n }\n const state = getState();\n const current_interaction_id = currentInteractionId(state);\n if (type !== \"heartbeat\" && !current_interaction_id) {\n return;\n }\n const payload = {\n ...data,\n eventId: randomId(),\n website_id: getWebsiteId(state),\n current_interaction_id,\n contact_field_id: contactFieldId(state), // release toggle name MakeBotsWorkAtScale\n contact_field_type: contactFieldType(state),\n session: sessionId\n };\n let done = false;\n const sessionSocket = socket;\n socket.emit(type, payload, () => {\n done = true;\n if (finished) sessionSocket.close();\n });\n const send = () => {\n if (socket !== sessionSocket || done) return;\n if (socket.connected) {\n socket.emit(type, payload, () => {\n done = true;\n if (finished) sessionSocket.close();\n });\n }\n setTimeout(send, ping * 2);\n };\n setTimeout(send, ping * 2);\n }\n\n function answer(answer: Answer) {\n const state = getState().state;\n if (\n state !== ConversationState.Active &&\n state !== ConversationState.Initialised\n ) {\n return;\n }\n lastAnswer = {\n type: \"answer\",\n answer_id: randomId(),\n ...answer\n };\n push(lastAnswer);\n dispatch({\n type: \"NEW_MESSAGE\",\n message: {\n sent_by: \"contact\",\n id: lastAnswer.answer_id,\n is_read: false,\n data: {\n text: answer.content\n },\n interaction_time: new Date().toISOString()\n }\n });\n retryAnswerTimeout = setTimeout(\n () => dispatch({ type: \"MESSAGE_FAILED\" }),\n RETRY_ANSWER_TIMEOUT\n );\n }\n\n function liveChatHistory(messages, liveChatUsers, liveChatChannel) {\n dispatch({\n type: \"LIVE_CHAT_HISTORY\",\n messageHistory: messages,\n liveChatUsers: liveChatUsers,\n liveChatchannel: liveChatChannel\n });\n }\n\n function liveChatResponse(response: Answer, message, liveChatUsers) {\n const liveChatResponse: any = setLiveChatResponse(message, response);\n if (message.type === \"abandoned_chat\") {\n dispatch({\n type: \"ABANDONED_CHAT\"\n });\n }\n const liveChatChannel =\n message.type === \"end_chat\" || message.type === \"abandoned_chat\"\n ? \"\"\n : LIVE_CHAT_CHANNEL;\n if (message.type === \"end_chat\" || message.type === \"abandoned_chat\")\n endConversation();\n dispatch({\n type: \"NEW_MESSAGE\",\n liveChatchannel: liveChatChannel,\n liveChatUsers: liveChatUsers,\n message: {\n sent_by: \"agent\",\n user_name: \"Admin\",\n id: randomId(),\n is_read: liveChatResponse.is_live_chat_notification ? true : false,\n data: liveChatResponse,\n interaction_time: new Date().toISOString()\n }\n });\n }\n\n function setLiveChatResponse(message, response) {\n const user: IUser = message.user;\n switch (message.type) {\n case \"end_chat\":\n case \"abandoned_chat\": {\n return {\n text: \"\",\n interaction_type: \"action\",\n action_type: \"end_conversation\",\n user: user\n };\n }\n case \"text_message\": {\n return {\n text: response.content,\n interaction_type: \"question\",\n question_type: \"text\",\n user: user\n };\n }\n case \"request_accepted\": {\n return {\n text: response.content,\n interaction_type: \"question\",\n question_type: \"text\",\n is_live_chat_notification: true,\n user: user\n };\n }\n default: {\n return {\n text: response.content,\n interaction_type: \"question\",\n question_type: \"text\",\n user: user\n };\n }\n }\n }\n\n function liveChatAnswer(answer: Answer, liveChatchannel, liveChatUsers) {\n const state = getState().state;\n if (\n state !== ConversationState.Active &&\n state !== ConversationState.Initialised\n ) {\n return;\n }\n lastAnswer = {\n type: \"answer\",\n answer_id: randomId(),\n ...answer\n };\n // push(lastAnswer);\n dispatch({\n type: \"NEW_MESSAGE\",\n liveChatchannel: liveChatchannel,\n liveChatUsers: liveChatUsers,\n message: {\n sent_by: \"contact\",\n user_name: \"Visitor\",\n id: lastAnswer.answer_id,\n is_read: true,\n data: {\n text: answer.content\n },\n interaction_time: new Date().toISOString()\n }\n });\n }\n\n function setLiveChatOwner(ownerId) {\n push({ type: \"live_chat_accepted\" });\n dispatch({\n type: \"SET_LIVE_CHAT_OWNER\",\n liveChatOwnerId: ownerId\n });\n }\n\n function updateLiveChatUserTypingState(status) {\n dispatch({\n type: \"SET_LIVE_CHAT_USER_TYPING\",\n liveChatUserTyping: status\n });\n }\n\n function setContactId(contactId) {\n dispatch({\n type: \"SET_CONTACT_ID\",\n contactId: contactId\n });\n }\n\n function nextInteraction() {\n push({ type: \"next_interaction\" });\n }\n\n function finishConversation() {\n const { liveChatAccepted, isLiveChatAbandoned } = getState();\n let finished_by;\n if (isLiveChatAbandoned) {\n finished_by = \"abandon_by_visitor\";\n } else {\n finished_by = liveChatAccepted ? \"Agent\" : \"Bot\";\n }\n push({ type: \"finish_conversation\", finished_by });\n finished = true;\n }\n\n function timeout() {\n finished = true;\n dispatch({ type: \"ABANDONED_CHAT\" });\n dispatch({ type: \"END_CONVERSATION\" });\n if (socket !== null) {\n socket.close();\n socket = null;\n }\n }\n\n function updateTimezone(time_zone_id: string) {\n push({ type: \"update_timezone\", time_zone_id });\n dispatch({ type: \"UPDATE_TIMEZONE\", timezoneId: time_zone_id });\n }\n\n function closeWidget() {\n dispatch({ type: \"CLOSE_WIDGET\" });\n }\n\n function openWidget() {\n const { messages, state, liveChatchannel } = getState();\n if (state == null) {\n dispatch({ type: \"OPEN_WIDGET\" });\n return;\n }\n const message = messages[messages.length - 1];\n if (message == null) {\n nextInteraction();\n return;\n }\n const isAnswerFromVisitor = message.sent_by !== \"bot\" && message.is_read;\n\n if (!liveChatchannel && isAnswerFromVisitor) {\n // Catch for instant refresh after answering\n nextInteraction();\n }\n if (message.sent_by === \"bot\") {\n const interaction = message.data as Interaction;\n if (interaction.interaction_type === \"message\") {\n nextInteraction();\n } else if (interaction.interaction_type === \"action\") {\n if (interaction.action_type === \"schedule\") {\n if (interaction.schedule_status) {\n if (interaction.schedule_status !== \"slots_fetched\") {\n nextInteraction();\n }\n }\n }\n if (interaction.action_type === \"end_conversation\") {\n setTimeout(endConversation, Math.max(0, nextMessageAt - Date.now()));\n }\n }\n }\n dispatch({ type: \"OPEN_WIDGET\" });\n }\n\n function interactionSeen() {\n push({ type: \"interaction_seen\" });\n dispatch({ type: \"INTERACTION_SEEN\" });\n }\n\n function restart() {\n finished = false;\n if (socket) {\n socket.close();\n socket = null;\n }\n dispatch({ type: \"RESTART\" });\n }\n\n function openNewBot() {\n if (finished) {\n finished = false;\n if (socket) {\n socket.close();\n socket = null;\n }\n }\n }\n\n function resendLastMessage() {\n if (lastAnswer === null) throw new Error();\n nextMessageAt = Date.now() + 1000;\n dispatch({ type: \"RESEND_LAST_MESSAGE\" });\n nextMessageAt = Date.now() + 1000;\n push(lastAnswer);\n retryAnswerTimeout = setTimeout(\n () => dispatch({ type: \"MESSAGE_FAILED\" }),\n RETRY_ANSWER_TIMEOUT\n );\n }\n\n function scheduleResponse(\n response:\n | ErrorWhileConfirming\n | ConfirmEventData\n | FetchSlotsAPIErrorResponse\n | ErrorWhileBlocking\n ) {\n dispatch({ type: \"SCHEDULE_RESPONSE\", response });\n nextMessageAt = Date.now() + 2000;\n nextInteraction();\n }\n\n function initLiveChat(liveChatObj) {\n dispatch({ type: \"INIT_LIVE_CHAT\", liveChatObj });\n }\n\n function liveChatAccepted() {\n dispatch({ type: \"LIVE_CHAT_ACCEPTED\" });\n }\n\n function liveChatTimeout() {\n push({ type: \"live_chat_timeout\" });\n dispatch({ type: \"LIVE_CHAT_TIMEOUT\" });\n nextInteraction();\n }\n\n function closeNotifications() {\n dispatch({ type: \"CLOSED_NOTIFICATIONS\" });\n push({ type: \"welcome_interactions_closed\" });\n }\n\n function endConversation() {\n dispatch({ type: \"END_CONVERSATION\" });\n }\n\n function cleanDoubleBookingError() {\n dispatch({ type: \"CLEAN_DOUBLE_BOOKING_ERROR\" });\n }\n\n function heartbeat() {\n push({ type: \"heartbeat\" });\n }\n\n function loadPage() {\n const state = getState();\n if (state.total === state.messages.length) return;\n let nextPage =\n state.messages.length % state.pageSize === 0\n ? state.messages.length / state.pageSize + 1\n : Math.ceil(state.messages.length / state.pageSize);\n if (state.page === nextPage) return;\n dispatch({ type: \"LOADING_NEXT_PAGE\", page: nextPage });\n if (state.settings == null) return;\n fetchConverasation(state.settings.id, nextPage).then(data =>\n dispatch({\n type: \"LOAD_PAGE\",\n messages: data.response_interactions\n })\n );\n }\n\n return {\n answer,\n liveChatResponse,\n liveChatHistory,\n liveChatAnswer,\n liveChatTimeout,\n liveChatAccepted,\n setLiveChatOwner,\n updateLiveChatUserTypingState,\n setContactId,\n nextInteraction,\n finishConversation,\n updateTimezone,\n closeWidget,\n openWidget,\n interactionSeen,\n restart,\n resendLastMessage,\n scheduleResponse,\n initLiveChat,\n closeNotifications,\n cleanDoubleBookingError,\n heartbeat,\n timeout,\n loadPage,\n openNewBot,\n disconnect\n };\n}\n","import io from \"socket.io-client\";\nimport { Socket } from \"./constants\";\n\nexport function connectSocket(): Socket {\n const url = new URL(process.env.REACT_APP_SOCKET_API as string);\n const socket = io(url.protocol + \"//\" + url.host, {\n path: url.pathname + \"socket.io\",\n transports: [\"websocket\", \"polling\"]\n });\n return socket;\n}\n","import { IWidgetOptions } from \"../constants\";\n\nexport class Context {\n private static instance: Context;\n\n private constructor(\n public websiteId,\n public preview,\n public pageUrl,\n public pageTitle,\n public botId,\n public directBot\n ) {}\n\n public static getInstance(): Context {\n return Context.instance;\n }\n\n public static setInstance(options: IWidgetOptions): void {\n Context.instance = new Context(\n options.websiteId,\n options.preview,\n options.pageUrl,\n options.pageTitle,\n options.botId,\n options.directBot\n );\n }\n}\n","import React, { useReducer, useMemo, useEffect, useRef, Dispatch } from \"react\";\nimport { setupWidget } from \"./setup.service\";\nimport { Message, WebsiteSettings } from \"./interaction.interface\";\nimport { fetchConverasation } from \"./conversation.service\";\nimport {\n IAppContext,\n Bot,\n reducer,\n IConversationContext,\n initialAppState,\n AppAction,\n AppState,\n SocketStatus\n} from \"./reducer\";\nimport { Actions, createActions } from \"./actions\";\nimport {\n ConversationState,\n IWidgetOptions,\n NotificationStyle\n} from \"./constants\";\nimport { Context } from \"./utils/context.service\";\n\ninterface Props {\n botId: null | string;\n preview: boolean;\n pageUrl: string;\n websiteId: string;\n pageTitle: string;\n children: React.ReactNode;\n open: boolean;\n directBot: boolean;\n startTime?: number;\n}\n\nexport const AppContext = React.createContext({\n bot: {\n id: \"test-bot\",\n name: \"test-bot\",\n session_timeout: 600,\n hasCloseNotifications: false,\n notificationStyle: NotificationStyle.NotificationBadgeWithWelcomeInteraction\n },\n accountId: \"\",\n conversationId: \"\",\n open: false,\n preview: false,\n settings: {\n id: \"website-id\",\n botName: \"Test\",\n colour: \"#bf23af\",\n companyName: \"Default\",\n shape: \"speech\",\n textColour: \"#fff\",\n widgetIcon: \"co-widget-icon-1\",\n botIcon: null\n },\n state: ConversationState.Active,\n socket: SocketStatus.CONNECTED,\n oncehubBrandingUrl: \"\",\n showPromotionalMessage: false\n});\n\nexport const ConversationContext = React.createContext({\n messages: [],\n welcomeInteractions: [],\n messageFailed: false,\n pageSize: 15,\n total: 0\n});\n\nexport const SocketServiceContext = React.createContext(\n createActions(\n () => null,\n () => ({\n startedAt: 0,\n bot: {\n id: \"bot-id\",\n name: \"bot-name\",\n notificationStyle:\n NotificationStyle.NotificationBadgeWithWelcomeInteraction,\n hasCloseNotifications: false,\n session_timeout: 600\n },\n accountId: \"account-id\",\n conversationId: \"conversation-id\",\n settings: {\n id: \"website-id\",\n botName: \"Test\",\n colour: \"#bf23af\",\n companyName: \"Default\",\n shape: \"speech\",\n textColour: \"#fff\",\n widgetIcon: \"co-widget-icon-1\",\n botIcon: null\n },\n messages: [],\n page: 0,\n total: 0,\n pageSize: 15,\n state: ConversationState.Initialised,\n socket: SocketStatus.CONNECTED,\n open: false,\n messageFailed: false,\n oncehubBrandingUrl: \"\",\n showPromotionalMessage: false\n })\n )\n);\n\nasync function fetchData(\n websiteId: string,\n preview: boolean,\n pageUrl: string,\n pageTitle: string,\n botId: null | string,\n open: boolean = false,\n directBot: boolean = false\n): Promise {\n if (!preview) {\n window.parent.postMessage(\n {\n type: \"updateIframe\",\n add: directBot ? [] : [\"no-bot\"],\n remove: directBot ? [\"no-bot\"] : []\n },\n \"*\"\n );\n }\n\n const data = await setupWidget({\n websiteId,\n preview,\n pageTitle,\n pageUrl,\n botId,\n directBot\n });\n if (data === null) return null;\n\n window.parent.postMessage(\n {\n type: \"updateIframe\",\n add: data.botId || directBot ? [] : [\"no-bot\"],\n remove: data.botId || directBot ? [\"no-bot\"] : []\n },\n \"*\"\n );\n\n if (data.botId == null) {\n return {\n bot: {\n id: data.botId,\n name: data.botName,\n hasCloseNotifications: false,\n session_timeout: 60 * 10 * 1000,\n notificationStyle: data.welcomeDisplayStyle\n },\n accountId: data.accountId,\n conversationId: data.conversationId,\n settings: data.settings,\n messages: [],\n welcomeInteractions: [],\n total: 0,\n state: data.conversationState,\n open: open,\n pageSize: 15,\n oncehubBrandingUrl: data.oncehubBrandingUrl,\n showPromotionalMessage: data.showPromotionalMessage\n };\n }\n\n const [conversation] = await Promise.all([fetchConverasation(websiteId)]);\n if (preview) {\n return {\n bot: {\n id: data.botId,\n name: data.botName,\n hasCloseNotifications: false,\n session_timeout: 60 * 10 * 1000,\n notificationStyle: data.welcomeDisplayStyle\n },\n accountId: data.accountId,\n conversationId: data.conversationId,\n settings: data.settings,\n messages: conversation.response_interactions,\n total: conversation.response_interactions.length,\n state: data.conversationState,\n open: true,\n pageSize: 15,\n oncehubBrandingUrl: data.oncehubBrandingUrl,\n showPromotionalMessage: data.showPromotionalMessage\n };\n } else {\n return {\n bot: {\n id: data.botId,\n name: data.botName,\n hasCloseNotifications: !data.showClosedWidgetInteractions,\n session_timeout: data.session_timeout * 1000,\n notificationStyle: data.welcomeDisplayStyle\n },\n accountId: data.accountId,\n conversationId: data.conversationId,\n settings: data.settings,\n messages: conversation.response_interactions,\n welcomeInteractions: conversation.welcomeInteractions,\n total: conversation.total,\n state: data.conversationState,\n open: open,\n pageSize: conversation.pageSize,\n oncehubBrandingUrl: data.oncehubBrandingUrl,\n showPromotionalMessage: data.showPromotionalMessage\n };\n }\n}\n\nfunction useSocketService(state: AppState, dispatch: Dispatch) {\n let stateRef = useRef(state);\n stateRef.current = state;\n let ref = useRef(null);\n if (ref.current === null) {\n ref.current = createActions(dispatch, () => stateRef.current);\n }\n return ref.current;\n}\n\nexport function AppContextProvider({\n botId,\n websiteId,\n preview,\n pageUrl,\n pageTitle,\n children,\n open,\n directBot,\n startTime\n}: Props) {\n const options: IWidgetOptions = {\n botId: botId,\n pageUrl: pageUrl,\n websiteId: websiteId,\n preview: preview,\n pageTitle: pageTitle,\n directBot: directBot\n };\n Context.setInstance(options);\n const [state, dispatch] = useReducer(reducer, initialAppState());\n\n useEffect(() => {\n if (directBot && (!state.bot?.id || botId === state.bot?.id)) {\n dispatch({ type: \"OPEN_WIDGET\" });\n }\n }, [startTime]);\n\n const socketService = useSocketService(state, dispatch);\n\n useEffect(() => {\n if (!preview && botId) {\n if (state.bot?.id === botId) {\n return; // return if same bot link is clicked again\n } else {\n dispatch({ type: \"OPEN_WIDGET_LINK\" }); // Open new direct bot link\n }\n }\n if (directBot) {\n socketService.disconnect();\n }\n let cancelled = false;\n fetchData(\n websiteId,\n preview,\n pageUrl,\n pageTitle,\n botId,\n open,\n directBot\n ).then(data => {\n if (cancelled) return;\n if (data == null) return;\n dispatch({\n type: \"SETUP\",\n data\n });\n window.parent.postMessage(\n { widgetLoadingFinished: \"widgetLoadingFinished\" },\n \"*\"\n );\n });\n return () => {\n cancelled = true;\n };\n }, [websiteId, preview, pageUrl, pageTitle, botId, state.startedAt]);\n\n const appContext: null | IAppContext = useMemo(\n () =>\n state.bot &&\n state.settings && {\n preview,\n bot: state.bot,\n accountId: state.accountId,\n conversationId: state.conversationId,\n liveChatchannel: state.liveChatchannel,\n liveChatAccepted: state.liveChatAccepted,\n isLiveChatAbandoned: state.isLiveChatAbandoned,\n liveChatUsers: state.liveChatUsers,\n liveChatObj: state.liveChatObj,\n liveChatOwnerId: state.liveChatOwnerId,\n liveChatUserTyping: state.liveChatUserTyping,\n contactId: state.contactId,\n settings: state.settings,\n state: state.state,\n socket: state.socket,\n open: state.open,\n oncehubBrandingUrl: state.oncehubBrandingUrl,\n showPromotionalMessage: state.showPromotionalMessage\n },\n [\n preview,\n state.bot,\n state.accountId,\n state.conversationId,\n state.liveChatchannel,\n state.liveChatAccepted,\n state.isLiveChatAbandoned,\n state.liveChatOwnerId,\n state.liveChatUsers,\n state.liveChatObj,\n state.liveChatUserTyping,\n state.contactId,\n state.open,\n state.settings,\n state.state,\n state.socket,\n state.oncehubBrandingUrl,\n state.showPromotionalMessage\n ]\n );\n const conversationContext = useMemo(\n () => ({\n total: state.total,\n messages: state.messages,\n welcomeInteractions: state.welcomeInteractions || [],\n pageSize: state.pageSize,\n messageFailed: state.messageFailed\n }),\n [\n state.total,\n state.messages,\n state.welcomeInteractions,\n state.pageSize,\n state.messageFailed\n ]\n );\n\n useEffect(() => {\n if (open) {\n socketService.openNewBot();\n socketService.openWidget();\n }\n }, [state.bot]);\n\n return (\n appContext && (\n \n \n \n \n {children}\n \n \n \n \n )\n );\n}\n","import React, { useContext } from \"react\";\nimport { AppContext } from \"./AppContext\";\n\nfunction Styles() {\n const { colour: color, textColour: textColor } = useContext(\n AppContext\n ).settings;\n return (\n \n );\n}\n\nexport default React.memo<{}>(Styles);\n","export class UtilsService {\n static extractHostName(url): string {\n let hostname;\n // find & remove protocol (http, ftp, etc.) and get hostname\n\n if (url.indexOf(\"//\") > -1) {\n hostname = url.split(\"/\")[2];\n } else {\n hostname = url.split(\"/\")[0];\n }\n\n // find & remove port number\n hostname = hostname.split(\":\")[0];\n // find & remove \"?\"\n hostname = hostname.split(\"?\")[0];\n\n return hostname;\n }\n}\n\nexport const BROWSER_IS_SAFARI = (() => {\n return /^((?!chrome|android).)*safari/i.test(window.navigator.userAgent);\n})();\n\nexport const ARE_COOKIES_DISABLED: boolean = (() => {\n if (typeof navigator !== \"undefined\" && \"cookieEnabled\" in navigator) {\n return navigator.cookieEnabled;\n }\n document.cookie = \"is_cookie_enabled=yes\";\n const disabled = document.cookie.indexOf(\"is_cookie_enabled\") === -1;\n if (!disabled) {\n document.cookie =\n \"is_cookie_enabled=yes; expires=Thu, 01-Jan-1970 00:00:00 GMT\";\n }\n return disabled;\n})();\n\nexport const IS_MOBILE = /(iphone|ipod|android|blackberry|windows ce|palm|symbian)/i.test(\n navigator.userAgent\n);\n\nexport const DAY_NAMES = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\n\nexport const SHORT_DAY_NAMES = [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n];\n\nexport const MONTH_NAMES = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\n\nexport const SHORT_MONTH_NAMES = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n];\n","import React, { useContext } from \"react\";\nimport { AppContext, SocketServiceContext } from \"src/AppContext\";\n\ninterface Props {\n count: number;\n}\n\nfunction WidgetToggle({ count }: Props) {\n const {\n open,\n settings: { shape, textColour, widgetIcon }\n } = useContext(AppContext);\n const actions = useContext(SocketServiceContext);\n return (\n \n \n \n \n \n \n \n \n \n \n {count > 0 && {count}}\n \n );\n}\n\nexport default React.memo(WidgetToggle);\n","export default __webpack_public_path__ + \"static/media/bots-28.aebca506.svg\";","export const ColorSet = [\n \"#ffffff\",\n \"#fff4fe\",\n \"#fffaff\",\n \"#fffbff\",\n \"#fffcff\",\n \"#fffdff\",\n \"#fffeff\",\n \"#FFFAF0\",\n \"#F8F8FF\",\n \"#FFFFF0\",\n \"#FFFAFA\",\n \"#fffdf0\",\n \"#fffdf1\",\n \"#fffdf2\",\n \"#fffdf3\",\n \"#fffdf4\",\n \"#fffdf5\",\n \"#fffdf6\",\n \"#fffdf7\",\n \"#fffdf8\",\n \"#fffdf9\",\n \"#f9f8f4\",\n \"#fdfdfc\",\n \"#f9f9f9\",\n \"#f9f9f7\",\n \"#fdfdfc\",\n \"#fffffd\",\n \"#fffefb\",\n \"#fdfdfb\",\n \"#fbfbfb\",\n \"#fff8fe\",\n \"#fff7fe\",\n \"#fbfafb\",\n \"#fdf7fc\",\n \"#fdfdfd\",\n \"#fff9fe\",\n \"#fff5fe\",\n \"#fdfcfd\",\n \"#fdf9fd\",\n \"#fdfbfd\",\n \"#fbf3fa\",\n \"#fbfcfd\",\n \"#fdffec\",\n \"#feffff\",\n \"#fef9ff\",\n \"#fff9fd\",\n \"#fff5fb\",\n \"#fff8f6\",\n \"#fff6f6\",\n \"#fffaf9\",\n \"#fcffe9\",\n \"#fdfffe\",\n \"#fdfdff\",\n \"#f9fbff\",\n \"#fffaf6\",\n \"#e9fff4\",\n \"#f7f7f7\"\n];\n","import React, { useContext } from \"react\";\nimport \"./widget-header.scss\";\nimport botImg from \"../../assets/images/bots-28.svg\";\nimport { AppContext, SocketServiceContext } from \"src/AppContext\";\nimport { ColorSet } from \"src/utils/color-set\";\nimport { IUser } from \"@oncehub/live-chat-util\";\n\nfunction getNameInitials(firstName: string, lastName: string) {\n let f = firstName ? firstName.toString()[0] : \"\";\n let l = lastName ? lastName.toString()[0] : \"\";\n return (f + l).toUpperCase();\n}\n\nfunction WidgetHeader() {\n const { botIcon, companyName } = useContext(AppContext).settings;\n const { liveChatUsers, liveChatOwnerId, liveChatchannel } = useContext(\n AppContext\n );\n const { closeWidget } = useContext(SocketServiceContext);\n const liveChatOwner: IUser =\n liveChatOwnerId && liveChatUsers ? liveChatUsers[liveChatOwnerId] : null;\n const { colour: color } = useContext(AppContext).settings;\n return (\n \n \n \n {(liveChatchannel &&\n liveChatOwner &&\n !liveChatOwner.profileImage &&\n getNameInitials(\n liveChatOwner.firstName,\n liveChatOwner.lastName\n )) || (\n \n )}\n \n \n

\n {\" \"}\n {(liveChatchannel &&\n liveChatOwner &&\n `${liveChatOwner.firstName} (${companyName})`.trim()) ||\n companyName}{\" \"}\n

\n \n \n \n \n );\n}\n\nexport default React.memo<{}>(WidgetHeader);\n","import React, { useContext } from \"react\";\nimport { AppContext } from \"src/AppContext\";\nimport { ColorSet } from \"src/utils/color-set\";\n\ninterface Props {\n active: boolean;\n}\n\nfunction SendButton({ active }: Props) {\n const color = useContext(AppContext).settings.colour;\n return active ? (\n \n Send\n \n \n \n \n \n \n \n \n \n \n ) : (\n \n Send\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default React.memo(SendButton);\n","/* tslint:disable */\nimport { IMaskedInputs, IValidationMessage } from \"./widget-footer/input.model\";\n\nexport const VADLIDATION_MESSAGES: IValidationMessage = {\n date: {\n dateFormatError: \"Please enter a valid date with the format DD/MM/YYYY\",\n futureDateError: \"Please enter a date that is in the future\"\n },\n dateTime: {\n dateFormatError:\n \"Please enter a valid datetime with the format DD/MM/YYYY HH:MM PM\",\n futureDateError: \"Please enter a datetime that is in the future\"\n },\n email: \"Please enter a valid email address\",\n phone: \"Please enter a valid phone number\",\n time: \"Please enter a valid time with the format HH:MM PM\"\n};\n\nexport const MASKEDINPUTS_PROPS: IMaskedInputs = {\n date: {\n guide: true,\n placeholder: \"DD/MM/YYYY\",\n placeholderChar: \"\\u2000\"\n },\n dateTime: {\n guide: true,\n placeholder: \"DD/MM/YYYY HH:MM PM\",\n placeholderChar: \"\\u2000\"\n },\n time: {\n guide: true,\n placeholder: \"HH:MM PM\",\n placeholderChar: \"\\u2000\"\n }\n};\nexport const ID_PREFIX: string = \"co-message-\";\nexport const DEFAULT_TIMEZONE_ID = \"270\";\nexport const TIMEZONE_ID_COOKIE = \"timezoneId\";\n// eslint-disable-next-line\nexport const EMAILREGEXPATTERN = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\nimport { VADLIDATION_MESSAGES } from \"src/widget-container/constants\";\n\ninterface IDateInputProps {\n setValidation: (message: null | string) => void;\n onChange: (text: string) => void;\n allowOnlyFutureDate: boolean;\n onSubmit(): void;\n}\n\nconst DATE_MASK = [/\\d/, /\\d/, \"/\", /\\d/, /\\d/, \"/\", /\\d/, /\\d/, /\\d/, /\\d/];\n\nexport const DATE_REGEX = /\\d{1,2}\\/\\d{1,2}\\/\\d{4}/;\n\nconst placeholderChar = \"\\u2000\";\n\nexport class DateInput extends React.Component {\n maskedInputRef: React.RefObject = React.createRef();\n\n componentDidUpdate() {\n if (\n this.maskedInputRef &&\n this.maskedInputRef.current &&\n this.maskedInputRef.current.inputElement\n ) {\n this.maskedInputRef.current.inputElement.focus();\n }\n }\n\n private pipe = (value: string, config: any): false | string => {\n const setValidation = this.props.setValidation;\n const dateFormatError = VADLIDATION_MESSAGES.date.dateFormatError;\n const date = parseInt(value.substring(0, 2));\n if (date > 31) {\n setValidation(dateFormatError);\n return false;\n }\n const month = parseInt(value.substring(3, 5));\n if (month > 12) {\n setValidation(dateFormatError);\n return false;\n }\n const year = parseInt(value.substring(6, 10));\n if (!DATE_REGEX.test(value)) {\n setValidation(null);\n return value;\n }\n const time = new Date(year, month - 1, date);\n const validity =\n time.getFullYear() === year &&\n time.getMonth() === month - 1 &&\n date === time.getDate();\n if (!validity) {\n setValidation(dateFormatError);\n return false;\n } else if (this.props.allowOnlyFutureDate && time.getTime() <= Date.now()) {\n setValidation(VADLIDATION_MESSAGES.date.futureDateError);\n return value;\n } else {\n setValidation(null);\n this.props.onChange(value);\n return value;\n }\n };\n\n render() {\n return (\n \n );\n }\n\n keydown = (event: KeyboardEvent) => {\n if (event.keyCode === 13) {\n this.props.onSubmit();\n }\n };\n}\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\nimport { VADLIDATION_MESSAGES } from \"src/widget-container/constants\";\n\ninterface IDatetimeInputProps {\n setValidation: (message: null | string) => void;\n onChange: (text: string) => void;\n allowOnlyFutureDate: boolean;\n onSubmit(): void;\n}\n\nconst DATETIME_MASK = [\n /\\d/,\n /\\d/,\n \"/\",\n /\\d/,\n /\\d/,\n \"/\",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n \" \",\n /\\d/,\n /\\d/,\n \":\",\n /\\d/,\n /\\d/,\n \" \",\n /a|A|p|P/,\n /m|M/\n];\n\nexport const DATE_TIME_REGEX = /\\d{1,2}\\/\\d{1,2}\\/\\d{4} \\d{1,2}:\\d{1,2} (?:A|P)M/;\n\nconst placeholderChar = \"\\u2000\";\n\nexport class DatetimeInput extends React.Component {\n maskedInputRef: React.RefObject = React.createRef();\n\n componentDidUpdate() {\n if (\n this.maskedInputRef &&\n this.maskedInputRef.current &&\n this.maskedInputRef.current.inputElement\n ) {\n this.maskedInputRef.current.inputElement.focus();\n }\n }\n\n private pipe = (value: string, config: any): false | string => {\n value = value.toUpperCase();\n const setValidation = this.props.setValidation;\n const dateFormatError = VADLIDATION_MESSAGES.dateTime.dateFormatError;\n const date = parseInt(value.substring(0, 2));\n if (date > 31) {\n setValidation(dateFormatError);\n return false;\n }\n const month = parseInt(value.substring(3, 5));\n if (month > 12) {\n setValidation(dateFormatError);\n return false;\n }\n const year = parseInt(value.substring(6, 10));\n const hours = parseInt(value.substring(11, 13));\n if (hours > 12) {\n setValidation(dateFormatError);\n return false;\n }\n const minutes = parseInt(value.substring(14, 16));\n if (minutes > 60) {\n setValidation(dateFormatError);\n return false;\n }\n const am = value.substring(17, 18) === \"AM\";\n if (!DATE_TIME_REGEX.test(value)) {\n setValidation(null);\n return value;\n }\n const time = new Date(year, month - 1, date);\n const validity =\n time.getFullYear() === year &&\n time.getMonth() === month - 1 &&\n date === time.getDate();\n if (!validity) {\n setValidation(dateFormatError);\n return false;\n }\n if (am) {\n time.setHours(hours);\n } else {\n time.setHours(hours === 12 ? 12 : 12 + hours);\n }\n time.setMinutes(minutes);\n if (this.props.allowOnlyFutureDate && time.getTime() <= Date.now()) {\n setValidation(VADLIDATION_MESSAGES.dateTime.futureDateError);\n return value;\n } else {\n setValidation(null);\n this.props.onChange(value);\n return value;\n }\n };\n\n render() {\n return (\n \n );\n }\n\n keydown = (event: KeyboardEvent) => {\n if (event.keyCode === 13) {\n this.props.onSubmit();\n }\n };\n}\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\nimport { VADLIDATION_MESSAGES } from \"src/widget-container/constants\";\n\ninterface TimeInputProps {\n setValidation: (message: null | string) => void;\n onChange: (text: string) => void;\n onSubmit: () => void;\n}\n\nconst TIME_MASK = [/\\d/, /\\d/, \":\", /\\d/, /\\d/, \" \", /a|A|p|P/, /m|M/];\n\nexport const TIME_REGEX = /\\d{1,2}:\\d{1,2} (?:A|P)M/;\n\nconst placeholderChar = \"\\u2000\";\n\nexport class TimeInput extends React.Component {\n maskedInputRef: React.RefObject = React.createRef();\n\n componentDidUpdate() {\n if (\n this.maskedInputRef &&\n this.maskedInputRef.current &&\n this.maskedInputRef.current.inputElement\n ) {\n this.maskedInputRef.current.inputElement.focus();\n }\n }\n\n private pipe = (value: string, config: any): false | string => {\n value = value.toUpperCase();\n const setValidation = this.props.setValidation;\n const error = VADLIDATION_MESSAGES.time;\n const hours = parseInt(value.substring(0, 2));\n if (hours > 12) {\n setValidation(error);\n return false;\n }\n const minutes = parseInt(value.substring(3, 5));\n if (minutes > 60) {\n setValidation(error);\n return false;\n }\n if (!TIME_REGEX.test(value)) {\n setValidation(null);\n return value;\n }\n if (hours === 0) {\n setValidation(error);\n } else {\n this.props.onChange(value);\n }\n return value;\n };\n\n render() {\n return (\n \n );\n }\n\n keydown = (event: KeyboardEvent) => {\n if (event.keyCode === 13) {\n this.props.onSubmit();\n }\n };\n}\n","import \"./chat-button.scss\";\nimport * as React from \"react\";\n\ninterface IChatButtonProps {\n clickHandler: () => void;\n title?: any;\n text: any;\n isDisabled?: boolean;\n isLoading?: boolean;\n classNames?: string;\n}\n\nexport const ChatButton = (props: IChatButtonProps) => (\n \n {props.text}\n \n);\n","import React, { useState, useEffect, useRef, useContext } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport \"../common-components/select-list-with-filter/select-list-with-filter.scss\";\nimport \"./select-list.scss\";\nimport { ChatButton } from \"../common-components/chat-button/chat-button\";\nimport { ColorSet } from \"src/utils/color-set\";\nimport { AppContext } from \"src/AppContext\";\n\ninterface InteractionOption {\n id: number | string;\n option_text: string;\n}\n\ninterface SingleSelectProps {\n single: true;\n items: T[];\n onSelect: (item: T) => void;\n close: () => void;\n}\n\ninterface MultiSelectProps {\n single: false;\n items: T[];\n onSelect: (items: T[]) => void;\n close: () => void;\n}\n\nexport type SelectListProps =\n | SingleSelectProps\n | MultiSelectProps;\n\nfunction useListHeight(): number {\n const [height, setHeight] = useState(0);\n useEffect(() => {\n let el = document.querySelector(\".chat-content\");\n el = el && el.parentElement;\n if (!el) {\n return;\n }\n const updateHeight = () => setHeight((el as HTMLElement).clientHeight / 2);\n updateHeight();\n window.addEventListener(\"resize\", updateHeight);\n return () => window.removeEventListener(\"resize\", updateHeight);\n });\n return height;\n}\n\nfunction SelectList(props: SelectListProps) {\n const height = useListHeight();\n const [filter, setFilter] = useState(\"\");\n const regex = new RegExp(filter.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"i\");\n const { colour: color } = useContext(AppContext).settings;\n const filteredOptions = props.items.filter(item =>\n regex.test(item.option_text)\n );\n const [selected, setSelected] = useState<{ [id: string]: boolean }>({});\n const onOptionClick = (item: T): void => {\n if (props.single) {\n props.onSelect(item);\n } else {\n setSelected(selectedItem => ({\n ...selectedItem,\n [item.id]: !selectedItem[item.id]\n }));\n }\n };\n const container = useRef(null);\n const close = props.close;\n useEffect(() => {\n const listener = (event: Event) => {\n if (event.target == null || container.current == null) return;\n if (\n container.current === event.target ||\n container.current.contains(event.target as any)\n ) {\n return;\n }\n close();\n };\n document.addEventListener(\"mousedown\", listener);\n return () => document.removeEventListener(\"mousedown\", listener);\n }, [close]);\n useEffect(() => {\n if (!container.current) return;\n const input = container.current.querySelector(\"input[type=text]\");\n if (input && input instanceof HTMLInputElement) input.focus();\n });\n const chatContainer = useRef(null);\n if (chatContainer.current === null)\n chatContainer.current = document.querySelector(\".chat-window\");\n return (\n chatContainer.current &&\n createPortal(\n \n
    \n {props.single\n ? filteredOptions.map(item => (\n
  • onOptionClick(item)}>\n {item.option_text}\n
  • \n ))\n : filteredOptions.map(item => (\n
  • \n \n
  • \n ))}\n
\n \n setFilter(event.currentTarget.value)}\n />\n {!props.single && (\n \n props.onSelect(props.items.filter(item => selected[item.id]))\n }\n />\n )}\n \n ,\n chatContainer.current\n )\n );\n}\n\nexport default SelectList;\n","import React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport \"./widget-modal.scss\";\nimport { ChatButton } from \"../common-components/chat-button/chat-button\";\n\ninterface IWidgetModalProp {\n modalMessage: null | string;\n show: boolean;\n closeModal: () => void;\n}\n\nexport class WidgetModal extends React.Component {\n closeModal = () => {\n this.props.closeModal();\n };\n\n render() {\n const container = document.querySelector(\".chat-window\");\n return (\n this.props.show &&\n container &&\n createPortal(\n
\n
\n
\n \n \n \n

{this.props.modalMessage}

\n
\n
\n {ChatButton({\n text: \"Got it\",\n clickHandler: this.closeModal\n })}\n
\n
\n
\n
,\n container\n )\n );\n }\n}\n","import React, { useState, useContext } from \"react\";\nimport { ChatButton } from \"src/widget-container/common-components/chat-button/chat-button\";\nimport { WidgetModal } from \"src/widget-container/widget-modal/widget-modal\";\nimport { ColorSet } from \"src/utils/color-set\";\nimport { AppContext } from \"src/AppContext\";\n\nimport \"./interaction-multi-select.scss\";\n\ninterface Option {\n id: number;\n option_text: string;\n field_library_option_id: string;\n}\n\ninterface Props {\n min: null | number;\n max: null | number;\n options: Option[];\n onSelect: (selected: Option[]) => void;\n}\n\nexport function optionMessage(count: number): string {\n if (count === 1) {\n return \"1 option\";\n } else {\n return `${count} options`;\n }\n}\n\nexport function errorMessage(\n min: number,\n max: number | null,\n selected: number\n): null | string {\n if (max === null) {\n if (selected < min) {\n return `You must select at least ${optionMessage(min)}`;\n } else {\n return null;\n }\n } else {\n if (selected >= min && selected <= max) {\n return null;\n } else {\n return `You must select at least ${optionMessage(\n min\n )} and not more than ${optionMessage(max)}`;\n }\n }\n}\n\nfunction InteractionMultiSelect({ options, onSelect, min, max }: Props) {\n const [selected, setSelected] = useState<{ [id: number]: boolean }>({});\n const [error, setError] = useState(null);\n const toggle = (id: number) =>\n setSelected(selected => ({ ...selected, [id]: !selected[id] }));\n const select = () => {\n const selection = options.filter(option => Boolean(selected[option.id]));\n const error = errorMessage(min || 1, max, selection.length);\n setError(error);\n if (error === null) {\n onSelect(selection);\n }\n };\n const { colour: color } = useContext(AppContext).settings;\n return (\n
\n setError(null)}\n />\n
\n
    \n {options.map(option => (\n \n \n \n ))}\n
\n \n \n
\n
\n
\n );\n}\n\nexport default React.memo(InteractionMultiSelect);\n","import React, { useEffect, useRef, useContext } from \"react\";\nimport { AppContext } from \"src/AppContext\";\n\ninterface Props {\n value: string;\n onChange: (value: string) => void;\n onSubmit: () => void;\n}\n\nfunction TextInput({ value, onChange, onSubmit }: Props) {\n const textarea = useRef(null);\n const heightDiv = useRef(null);\n const open = useContext(AppContext).open;\n useEffect(() => {\n if (textarea.current) {\n textarea.current.focus();\n }\n }, []);\n useEffect(() => {\n if (!open) return;\n if (!(heightDiv.current && textarea.current)) return;\n heightDiv.current.innerText =\n value.endsWith(\"\\n\") || value.trim().length === 0 ? value + \"A\" : value;\n heightDiv.current.style.width = textarea.current.clientWidth + \"px\";\n textarea.current.style.height = heightDiv.current.clientHeight + \"px\";\n }, [open, value]);\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode !== 13) return;\n if (!event.shiftKey) {\n event.preventDefault();\n onSubmit();\n return;\n }\n };\n return (\n <>\n onChange(event.currentTarget.value)}\n />\n \n \n );\n}\n\nexport default React.memo(TextInput);\n","import React, { useEffect, useState, useRef, useCallback } from \"react\";\nimport { AsYouType, getCountryCallingCode } from \"libphonenumber-js\";\nimport COUNTRY from \"src/country-code.json\";\n\nimport SelectList from \"../select-list\";\n\nimport \"./phone-input.scss\";\nimport { VADLIDATION_MESSAGES } from \"src/widget-container/constants\";\nimport { PhoneQuestion } from \"src/interaction.interface\";\n\ninterface Props {\n question: PhoneQuestion;\n welcomePhoneQuestion: PhoneQuestion | null;\n onError: (message: null | string) => void;\n setPhone: (text: string) => void;\n onSubmit(): void;\n}\n\ninterface CountryOption {\n id: string;\n option_text: string;\n}\nconst COUNTRY_OPTIONS: CountryOption[] = Object.keys(COUNTRY).map<\n CountryOption\n>(id => ({ id, option_text: COUNTRY[id] }));\n\nCOUNTRY_OPTIONS.sort((x, y) => {\n if (x.option_text > y.option_text) {\n return 1;\n } else if (x.option_text < y.option_text) {\n return -1;\n } else {\n return 1;\n }\n});\n\nfunction getDefaultCountry(country) {\n let visitorCountryObject;\n for (let i = 0; i < COUNTRY_OPTIONS.length; i++) {\n if (country && COUNTRY_OPTIONS[i].option_text === country) {\n visitorCountryObject = COUNTRY_OPTIONS[i];\n break;\n }\n }\n return visitorCountryObject;\n}\n\nfunction PhoneInput({\n question,\n welcomePhoneQuestion,\n setPhone,\n onError,\n onSubmit\n}: Props) {\n const visitorCountry = getDefaultCountry(\n question.country ||\n (welcomePhoneQuestion ? welcomePhoneQuestion!.country : null)\n );\n const visitorCountryCode = visitorCountry\n ? `+${getCountryCallingCode(visitorCountry.id as any) as string}`\n : \"\";\n const [countryList, setCountryList] = useState(false);\n const [country, setCountry] = useState(\n null || visitorCountry\n );\n const [value, setValue] = useState(\"\" || visitorCountryCode);\n const [invalid, setInvalid] = useState(true);\n const input = useRef(null);\n const selectCountry = useCallback((country: CountryOption) => {\n setCountry(country);\n setCountryList(false);\n setPhone(\"\");\n setInvalid(true);\n const code = getCountryCallingCode(country.id as any) as string;\n setValue(\"+\" + code);\n setTimeout(() => {\n let inputEl = input.current;\n if (inputEl === null) return;\n if (inputEl) inputEl.focus();\n inputEl.selectionStart = inputEl.selectionEnd = inputEl.value.length;\n }, 300);\n }, []);\n useEffect(() => {\n if (input.current && visitorCountry) {\n input.current.focus();\n }\n });\n\n const onClick = () => {\n if (country === null) {\n setCountryList(true);\n } else if (input.current) {\n input.current.focus();\n }\n };\n const change = (event: React.ChangeEvent) => {\n const formatter = new AsYouType();\n const formattedInput = formatter.input(event.currentTarget.value);\n const phoneNumber = formatter.getNumber();\n const countryInfo = formatter.country;\n let invalid = true;\n if (countryInfo && (!country || country.id !== countryInfo)) {\n setCountry({\n id: countryInfo as string,\n option_text: COUNTRY[countryInfo]\n });\n }\n if (phoneNumber && phoneNumber.isValid()) {\n invalid = false;\n }\n setInvalid(invalid);\n if (!invalid) onError(null);\n setValue(formattedInput);\n setPhone(formattedInput);\n };\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode !== 13) return;\n if (invalid) {\n onError(VADLIDATION_MESSAGES.phone);\n } else {\n onSubmit();\n }\n };\n return (\n
\n
\n
setCountryList(true)}>\n {country && {country.id}}\n \n
\n \n
\n {countryList && (\n setCountryList(false)}\n onSelect={selectCountry}\n />\n )}\n
\n );\n}\n\nexport default React.memo(PhoneInput);\n","import React, { useState, useEffect, useRef } from \"react\";\nimport {\n VADLIDATION_MESSAGES,\n EMAILREGEXPATTERN\n} from \"src/widget-container/constants\";\n\nexport interface Props {\n onError: (message: null | string) => void;\n onChange: (text: string) => void;\n onSubmit(): void;\n}\n\nfunction EmailInput({ onChange, onError, onSubmit }: Props) {\n const [value, setValue] = useState(\"\");\n const [invalid, setInvalid] = useState(true);\n const input = useRef(null);\n useEffect(() => {\n let inputEl = input.current;\n if (inputEl === null) return;\n if (inputEl) inputEl.focus();\n }, []);\n const change = (event: React.ChangeEvent) => {\n const emailInput = event.currentTarget.value;\n let invalid = true;\n if (emailInput) {\n invalid = !EMAILREGEXPATTERN.test(emailInput);\n } else {\n onError(null);\n }\n setInvalid(invalid);\n if (!invalid) onError(null);\n setValue(emailInput);\n onChange(emailInput);\n };\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode === 13) {\n if (invalid) {\n onError(VADLIDATION_MESSAGES.email);\n } else {\n onError(null);\n onSubmit();\n }\n }\n };\n return (\n \n );\n}\n\nexport default React.memo(EmailInput);\n","import React, {\n useState,\n useContext,\n useCallback,\n useMemo,\n useEffect\n} from \"react\";\nimport { Picker } from \"emoji-mart\";\nimport \"emoji-mart/css/emoji-mart.css\";\n\nimport {\n AppContext,\n ConversationContext,\n SocketServiceContext\n} from \"src/AppContext\";\nimport {\n Message,\n Interaction,\n Question,\n SingleChoiceQuestion,\n MultiChoiceQuestion,\n InteractionOption,\n PhoneQuestion\n} from \"src/interaction.interface\";\nimport { SocketStatus } from \"src/reducer\";\nimport { Answer } from \"src/actions\";\nimport { ConversationState } from \"src/constants\";\n\nimport \"./widget-footer.scss\";\nimport SendButtonIcon from \"./SendButtonIcon\";\nimport { DateInput } from \"./date-input/date-input\";\nimport { DatetimeInput } from \"./datetime-input/datetime-input\";\nimport { TimeInput } from \"./time-input/time-input\";\nimport SelectList, { SelectListProps } from \"./select-list\";\nimport { errorMessage } from \"../widget-body/widget-message/message-helpers/interaction-multi-select/interaction-multi-select\";\nimport { WidgetModal } from \"../widget-modal/widget-modal\";\nimport TextInput from \"./text-input\";\nimport PhoneInput from \"./phone-input/phone-input\";\nimport EmailInput from \"./email-input/email-input\";\nimport {\n VADLIDATION_MESSAGES,\n EMAILREGEXPATTERN\n} from \"src/widget-container/constants\";\nimport { AsYouType } from \"libphonenumber-js\";\n// Enable this for development only\n// import { OhLiveChat, IMessage } from \"../../../src/live-chat-util\";\nimport { OhLiveChat, IMessage } from \"@oncehub/live-chat-util\";\n\ninterface ValidationOptions {\n isValid: boolean;\n errorMsg: string;\n}\nexport interface State {\n openEmoji: boolean;\n text: string;\n validationMessage: null | string;\n}\n\ninterface InputProps {\n value: string;\n question: null | Question;\n welcomePhoneQuestion: null | PhoneQuestion;\n onSubmit: () => void;\n onChange: (value: string) => void;\n onError: (error: null | string) => void;\n openSelectList: () => void;\n}\n\ninterface SelectInputProps {\n question: SingleChoiceQuestion | MultiChoiceQuestion;\n sendAnswer: (answer: Answer) => void;\n close: () => void;\n}\n\nlet liveChatObj: OhLiveChat;\nlet searchTimeout;\n\nfunction findActiveQuestion(\n state: ConversationState | null,\n message?: Message | null\n): null | Question {\n if (state !== ConversationState.Active) return null;\n if (message == null) return null;\n if (message.sent_by !== \"bot\") return null;\n const interaction: Interaction = message.data as Interaction;\n if (interaction.interaction_type !== \"question\") return null;\n return interaction;\n}\n\nfunction isEmojiDisabled(\n questionType: null | Question[\"question_type\"]\n): boolean {\n switch (questionType) {\n case null:\n case \"multi_choice\":\n case \"single_choice\":\n case \"number\":\n case \"phone\":\n case \"date\":\n case \"time\":\n case \"datetime\":\n case \"email\":\n return true;\n default:\n return false;\n }\n}\n\nfunction SelectInput({\n question,\n sendAnswer: answer,\n close\n}: SelectInputProps) {\n const [error, setError] = useState(null);\n const selectProps = useMemo((): SelectListProps => {\n if (question.question_type === \"single_choice\") {\n return {\n single: true,\n items: question.interaction_options,\n onSelect: option =>\n answer({\n content: option.option_text,\n interaction_option_id: option.id as number,\n content_object_array: [\n {\n id: option.field_library_option_id,\n value: option.option_text\n }\n ]\n }),\n close\n };\n } else {\n return {\n single: false,\n items: question.interaction_options,\n onSelect: options => {\n const error = errorMessage(\n question.multi_choice_minimum || 1,\n question.multi_choice_maximum,\n options.length\n );\n setError(error);\n if (error === null) {\n options.sort((x, y) => x.option_order - y.option_order);\n answer({\n content: options.map(option => option.option_text).join(\", \"),\n multi_interaction_options_answer_ids: options.map(\n option => option.id\n ),\n content_object_array: options.map(option => {\n return {\n id: option.field_library_option_id,\n value: option.option_text\n };\n })\n });\n }\n },\n close\n };\n }\n }, [answer, close, question]);\n if (question.multi_choice_type !== \"list\") return null;\n return (\n <>\n setError(null)}\n />\n {React.createElement(SelectList, selectProps)}\n \n );\n}\n\nfunction Input({\n value,\n question,\n welcomePhoneQuestion,\n onChange,\n onError,\n onSubmit,\n openSelectList\n}: InputProps) {\n let focus = false;\n const questionId = question && question.external_id;\n const appContext = useContext(AppContext);\n useEffect(() => {\n if (focus) {\n const input = document.querySelector(\".chat-footer input\");\n if (input !== null && input instanceof HTMLInputElement) input.focus();\n }\n }, [questionId, focus]);\n if (\n (question === null && !appContext.liveChatchannel) ||\n (question === null &&\n appContext.liveChatchannel &&\n !appContext.liveChatAccepted)\n ) {\n return ;\n } else if (\n question === null &&\n appContext.liveChatchannel &&\n appContext.liveChatAccepted &&\n !appContext.isLiveChatAbandoned\n ) {\n return ;\n } else if (\n (question && question.question_type === \"multi_choice\") ||\n (question && question.question_type === \"single_choice\")\n ) {\n if (question.multi_choice_type === \"list\") {\n return (\n \n );\n } else {\n return ;\n }\n } else if (question && question.question_type === \"date\") {\n return (\n \n );\n } else if (question && question.question_type === \"datetime\") {\n return (\n \n );\n } else if (question && question.question_type === \"time\") {\n return (\n \n );\n } else if (question && question.question_type === \"phone\") {\n return (\n \n );\n } else if (question && question.question_type === \"email\") {\n return (\n \n );\n }\n const changeValue = (event: React.SyntheticEvent) =>\n onChange(event.currentTarget.value);\n const onKeyDown = (event: React.KeyboardEvent) =>\n event.keyCode === 13 && onSubmit();\n focus = true;\n if (question && question.question_type === \"number\") {\n return (\n \n );\n } else if (question && question.question_type === \"text\") {\n return ;\n } else if (question && question.question_type === \"time_zone\") {\n focus = false;\n return ;\n } else {\n focus = false;\n return null;\n }\n}\n/**\n *\n * @param phone validate phone number validation\n */\nfunction validatePhone(phone) {\n const formatter = new AsYouType();\n formatter.input(phone);\n const phoneNumber = formatter.getNumber();\n return phoneNumber ? phoneNumber.isValid() : false;\n}\n/**\n *\n * @param questionType to identify the question type\n * @param input\n * Validating the input and returning object with error message and boolean isValid.\n */\nfunction checkValidation(\n questionType: null | Question[\"question_type\"],\n input\n) {\n if (input.length === 0) return;\n let invalid: ValidationOptions = { isValid: false, errorMsg: \"\" };\n switch (questionType) {\n case \"email\":\n invalid.isValid = !EMAILREGEXPATTERN.test(input);\n invalid.errorMsg = VADLIDATION_MESSAGES.email;\n break;\n case \"phone\":\n invalid.isValid = !validatePhone(input);\n invalid.errorMsg = VADLIDATION_MESSAGES.phone;\n break;\n }\n return invalid;\n}\n\nfunction WidgetFooter() {\n const appContext = useContext(AppContext);\n const color = appContext.settings.colour;\n const connecting = appContext.socket === SocketStatus.CONNECTING;\n const [state, setState] = useState({\n openEmoji: false,\n text: \"\",\n error: null,\n openSelectList: false\n });\n const debouncePeriod = 10000;\n const contactId: any = appContext.contactId;\n\n const setTypingStatus = () => {\n if (!searchTimeout) {\n liveChatObj.updateIsTyping(\n contactId,\n appContext.accountId,\n appContext.conversationId,\n true\n );\n }\n if (searchTimeout) clearTimeout(searchTimeout);\n searchTimeout = setTimeout(stoppedTyping, debouncePeriod);\n };\n\n const stoppedTyping = () => {\n liveChatObj.updateIsTyping(\n contactId,\n appContext.accountId,\n appContext.conversationId,\n false\n );\n searchTimeout = null;\n };\n const updateState = useCallback(\n (next: Partial) => setState(state => ({ ...state, ...next })),\n []\n );\n const showValidationMessage = state.error !== null;\n const { messages } = useContext(ConversationContext);\n const { welcomeInteractions } = useContext(ConversationContext);\n const message = messages[messages.length - 1];\n const welcomeMessage = welcomeInteractions\n ? welcomeInteractions[welcomeInteractions.length - 1]\n : null;\n const question = findActiveQuestion(appContext.state, message);\n const welcomeQuestion = findActiveQuestion(appContext.state, welcomeMessage);\n const welcomePhoneQuestion: PhoneQuestion | null =\n welcomeQuestion && welcomeQuestion.question_type === \"phone\"\n ? welcomeQuestion\n : null;\n const questionType = question && question.question_type;\n const emojiDisabled = isEmojiDisabled(questionType);\n const selectBox =\n questionType === \"single_choice\" || questionType === \"multi_choice\";\n let editableBox =\n questionType === \"text\" ||\n questionType === \"number\" ||\n questionType === \"email\" ||\n questionType === \"time\" ||\n questionType === \"datetime\" ||\n questionType === \"date\" ||\n questionType === \"phone\" ||\n questionType === \"time_zone\";\n let disabled =\n question === null || selectBox || state.text.trim().length === 0;\n if (appContext.liveChatchannel) {\n disabled = state.text.trim().length === 0;\n editableBox = true;\n }\n const socket = useContext(SocketServiceContext);\n liveChatObj = appContext.liveChatObj;\n const sendAnswer = () => {\n const content = state.text.trim();\n if (content.length && appContext.liveChatchannel) {\n sendVisitorResponseInLiveChat(content);\n setState({\n error: null,\n openEmoji: false,\n text: \"\",\n openSelectList: false\n });\n } else if (!content.length && appContext.liveChatchannel) {\n return;\n } else {\n const validationOption = checkValidation(questionType, content);\n if (validationOption!.isValid) {\n updateState({ error: validationOption!.errorMsg } as any);\n return;\n }\n if (state.error === null) {\n socket.answer({ content });\n }\n setState({\n error: null,\n openEmoji: false,\n text: \"\",\n openSelectList: false\n });\n }\n };\n\n const sendVisitorResponseInLiveChat = messageText => {\n if (!appContext.liveChatchannel) {\n return;\n }\n\n const newMessage: IMessage = {\n type: \"text_message\",\n text: messageText,\n userType: \"Visitor\",\n contactId: appContext.contactId\n };\n liveChatObj.sendMessage(\n appContext.accountId,\n appContext.conversationId,\n newMessage\n );\n liveChatObj.notifyNewMessage(\n appContext.accountId,\n appContext.conversationId,\n newMessage\n );\n liveChatObj.updateConversation(\n appContext.accountId,\n appContext.conversationId,\n {\n lastMessage: newMessage,\n lastUpdatedTime: new Date().toISOString()\n }\n );\n };\n\n const openSelectList = () => updateState({ openSelectList: true } as any);\n const selectList = useMemo(() => {\n if (!state.openSelectList || question == null) return null;\n if (\n question.question_type !== \"single_choice\" &&\n question.question_type !== \"multi_choice\"\n ) {\n return null;\n }\n return (\n {\n setState({\n error: null,\n openEmoji: false,\n text: \"\",\n openSelectList: false\n });\n socket.answer(answer);\n }}\n close={() => updateState({ openSelectList: false } as any)}\n />\n );\n }, [state.openSelectList, question, socket, updateState]);\n return (\n <>\n {selectList}\n
\n \n {/*
\n \n
*/}\n \n {\n updateState({ text });\n if (appContext.liveChatAccepted) setTypingStatus();\n }}\n // @ts-ignore\n onError={error => updateState({ error })}\n />\n \n \n \n
\n \n \n !emojiDisabled &&\n setState({ ...state, openEmoji: !state.openEmoji })\n }\n />\n {process.env.REACT_APP_SOLO_PHASE_ONE_TOGGLE === \"true\" &&\n appContext.oncehubBrandingUrl && (\n \n )}\n\n \n \n {state.openEmoji && (\n
\n {\n setState({\n ...state,\n openEmoji: false,\n text: state.text + (emoji as any).native\n });\n }}\n />\n
\n )}\n \n \n );\n}\n\nexport default React.memo<{}>(WidgetFooter);\n","export default __webpack_public_path__ + \"static/media/bots.aebca506.svg\";","import * as React from \"react\";\nimport \"./end-conversation.scss\";\n\ninterface IEndChatProps {\n message: any;\n isAbandoned: boolean | undefined;\n}\nexport const EndConversation = (props: IEndChatProps) => (\n
\n
\n {props.message &&\n props.message.user &&\n props.isAbandoned &&\n `${\"This conversation has been ended by the bot\"}`}\n {props.message &&\n props.message.user &&\n !props.isAbandoned &&\n `${\"This conversation has been closed by \"}${\n props.message.user.firstName\n }`}\n {!props.message && \"This conversation has been ended by the bot\"}\n {props.message &&\n !props.message.user &&\n \"This conversation has been ended by the bot\"}\n
\n
\n);\n","import React, { useContext } from \"react\";\nimport { InteractionOption } from \"src/interaction.interface\";\n\nimport \"./interaction-single-select.scss\";\nimport { AppContext } from \"src/AppContext\";\nimport { ColorSet } from \"src/utils/color-set\";\n\ninterface Props {\n options: InteractionOption[];\n onSelect: (option: InteractionOption) => void;\n}\n\nfunction InteractionSingleSelect({ options, onSelect }: Props) {\n const { colour: color } = useContext(AppContext).settings;\n return (\n
    \n {options.map(option => (\n onSelect(option)}\n className={`border-primary text-secondary ${\n ColorSet.indexOf(color) !== -1 ? \"border-enable light-color\" : \"\"\n }`}\n >\n {option.option_text}\n \n ))}\n
\n );\n}\n\nexport default React.memo(InteractionSingleSelect);\n","import * as React from \"react\";\n\nexport interface ITextMessageProps {\n messageId: string;\n text: string;\n}\n\nfunction TextMessageComponent(props: ITextMessageProps) {\n return (\n 7\n ? \"chat-message chat-message-align-left bg-primary text-primary border-primary\"\n : \"chat-message bg-primary text-primary border-primary\"\n }\n >\n {props.text}\n \n );\n}\n\nexport default React.memo(TextMessageComponent);\n","import * as React from \"react\";\nimport { Player, BigPlayButton, ControlBar } from \"video-react\";\n\nimport \"./video-message.scss\";\nimport \"video-react/dist/video-react.css\";\nimport PlayButtonImg from \"../../../../../assets/images/play-button.png\";\n\ninterface IVideoMessageProps {\n description?: string;\n videoTitle?: string;\n videoUrl: any;\n autoPlay: boolean;\n botName?: string;\n id: string;\n currentTime?: number;\n showBotName?: boolean;\n}\n\ninterface IVideoMessageState {\n isOpen: boolean;\n isPaused: boolean;\n isFullScreen: boolean;\n}\n\nexport class VideoMessage extends React.PureComponent<\n IVideoMessageProps,\n IVideoMessageState\n> {\n readonly state: IVideoMessageState = {\n isFullScreen: false,\n isOpen: false,\n isPaused: !this.props.autoPlay\n };\n playerRef: any;\n constructor(parameters: IVideoMessageProps) {\n super(parameters);\n this.playerRef = React.createRef();\n }\n componentDidMount() {\n if (this.props.autoPlay) {\n setTimeout(() => {\n if (this.hasPlayerRef()) {\n const { video } = this.playerRef.current;\n if (this.props.currentTime) {\n (video.video as HTMLVideoElement).currentTime = this.props.currentTime;\n }\n this.mute(video);\n this.play(video);\n }\n }, 200);\n }\n if (this.hasPlayerRef()) {\n this.playerRef.current.subscribeToStateChange(\n this.handleFullScreen.bind(this)\n );\n }\n }\n\n handleFullScreen(state, prevState) {\n this.setState({ isFullScreen: state.isFullScreen });\n if (state.isFullscreen && !prevState.isFullscreen) {\n window.parent.postMessage(\n {\n type: \"updateIframe\",\n add: [\"co-iframe-full-screen\"],\n remove: [\"co-iframe-open\"]\n },\n \"*\"\n );\n } else if (!state.isFullscreen && prevState.isFullscreen) {\n window.parent.postMessage(\n {\n type: \"updateIframe\",\n add: [\"co-iframe-open\"],\n remove: [\"co-iframe-full-screen\"]\n },\n \"*\"\n );\n }\n }\n\n renderTitleBox() {\n if (this.props.videoTitle) {\n return (\n
\n \n {this.props.videoTitle}\n {this.props.description}\n \n
\n );\n }\n return null;\n }\n\n togglePlay = () => {\n if (this.hasPlayerRef()) {\n const { video } = this.playerRef.current;\n if (this.state.isPaused) {\n this.play(video);\n } else {\n this.pause(video);\n }\n }\n };\n\n mute(video: HTMLVideoElement) {\n video.muted = true;\n }\n\n play(video: HTMLVideoElement) {\n video.play();\n this.setState({\n isPaused: false\n });\n }\n\n pause(video: HTMLVideoElement) {\n video.pause();\n this.setState({\n isPaused: true\n });\n }\n\n render() {\n return (\n
\n \n
\n {this.props.showBotName && (\n {this.props.botName}\n )}\n
\n \n \n \n \n \n \n \n \"Play\"\n
\n
\n
\n {this.renderTitleBox()}\n \n \n );\n }\n\n private hasPlayerRef() {\n return this.playerRef.current !== null ? true : false;\n }\n}\n","export default \"data:image/png;base64,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\"","import * as React from \"react\";\nimport \"./image-message.scss\";\nimport Lightbox from \"react-images\";\n\nexport interface IImageMessageProps {\n imageTitle: null | string;\n imageUrl: string;\n isNotificationInteraction?: boolean;\n botName?: string;\n id: string;\n showBotName?: boolean;\n}\n\nexport interface IImageMessageState {\n isOpen: boolean;\n}\n\nexport class ImageMessage extends React.PureComponent<\n IImageMessageProps,\n IImageMessageState\n> {\n imageRef: React.RefObject = React.createRef();\n readonly state: IImageMessageState = {\n isOpen: false\n };\n readonly theme = {\n // arrows\n arrow: {\n backgroundColor: \"rgba(255, 255, 255, 0.8)\",\n fill: \"#222\",\n opacity: 0.6,\n transition: \"opacity 200ms\",\n\n \":hover\": {\n opacity: 1\n }\n },\n arrow__direction__left: { marginLeft: 10 },\n arrow__direction__right: { marginRight: 10 },\n arrow__size__medium: {\n borderRadius: 40,\n height: 40,\n marginTop: -20,\n\n \"@media (min-width: 768px)\": {\n height: 70,\n padding: 15\n }\n },\n // container\n close: {\n \":hover\": {\n opacity: 1\n },\n fill: \"#000000\",\n opacity: 0.6,\n transition: \"all 200ms\"\n },\n container: {\n background: \"rgba(255, 255, 255, 0.8)\"\n },\n\n // footer\n footer: {\n color: \"black\"\n },\n footerCount: {\n color: \"rgba(0, 0, 0, 0.6)\"\n }\n };\n\n toggleLightbox = () => {\n const isOpen = !this.state.isOpen;\n this.setState(\n {\n isOpen\n },\n () => {\n setTimeout(() => {\n document.body.setAttribute(\"style\", \"\");\n });\n window.top.postMessage(\n {\n type: \"updateIframe\",\n add: isOpen ? [\"co-iframe-fullscreen\"] : [\"co-iframe-open\"],\n remove: isOpen ? [\"co-iframe-open\"] : [\"co-iframe-fullscreen\"]\n },\n \"*\"\n );\n }\n );\n };\n\n renderLightbox() {\n return (\n \n );\n }\n\n render() {\n return (\n
\n \n {!this.props.isNotificationInteraction && this.renderLightbox()}\n {this.props.showBotName && (\n {this.props.botName}\n )}\n \n \n
\n );\n }\n}\n","export default __webpack_public_path__ + \"static/media/document-icon.4b0f83a1.svg\";","/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable no-script-url */\nimport * as React from \"react\";\nimport \"./../image-message/image-message.scss\";\nimport \"./document-message.scss\";\nimport DocumentIcon from \"./../../../../../assets/images/document-icon.svg\";\n\nexport interface IMessageDocumentProp {\n title: null | string;\n documentUrl: string;\n botName?: string;\n id: string;\n showBotName?: boolean;\n}\n\nexport const DocumentMessage = (props: IMessageDocumentProp) => {\n const downloadFile = () => {\n const a = document.createElement(\"a\");\n a.href = props.documentUrl;\n a.target = \"_blank\";\n a.rel = \"noreferrer noopener\";\n a.download = props.title || \"\";\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n };\n let fileName = props.documentUrl.split(\"/\").pop();\n fileName = fileName ? decodeURIComponent(fileName) : \"NA\";\n return (\n
\n \n {props.showBotName && (\n {props.botName}\n )}\n\n \n \n \"document\n \n \n {props.title}\n

{fileName}

\n
\n \n \n
\n );\n};\n","export default __webpack_public_path__ + \"static/media/url-default.a4938810.svg\";","/* eslint-disable no-script-url */\n/* eslint-disable jsx-a11y/anchor-is-valid */\nimport * as React from \"react\";\nimport \"./url-message.scss\";\nimport urlDefaultImage from \"src/assets/images/url-default.svg\";\nimport { UtilsService } from \"./../../../../../utils/utils.service\";\n\nexport interface IMessageUrlProp {\n urlProps: {\n title: string;\n url: string;\n };\n id: string;\n imageTitle?: string;\n imageUrl: null | string;\n botName?: string;\n showBotName?: boolean;\n}\n\nexport class MessageUrl extends React.PureComponent {\n imageRef: React.RefObject = React.createRef();\n\n openLink = () => {\n const a = document.createElement(\"a\");\n a.href = this.props.urlProps.url;\n a.target = \"_blank\";\n a.rel = \"noreferrer noopener\";\n a.style.display = \"none\";\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n };\n\n render() {\n return (\n
\n \n
\n {this.props.showBotName && (\n {this.props.botName}\n )}\n \n
\n \n \n {this.props.urlProps.title}\n \n \n {UtilsService.extractHostName(this.props.urlProps.url)}\n \n \n \n
\n );\n }\n}\n","import {\n TimeZones as TIMEZONES,\n PriorityCountryId as TOP_COUNTRIES_IDS\n} from \"src/assets/timezoneConfig.js\";\nimport { DEFAULT_TIMEZONE_ID } from \"src/widget-container/constants\";\n\nexport interface ITimezone {\n Id: string;\n ShortName: string;\n Country: string;\n Region: string;\n CityList: string;\n TimeZone: number;\n DisplayOrder: number;\n HasDayLightSavings: Array<{\n offset: string;\n startTimeMili: string;\n endTimeMili: string;\n }>;\n CountryCallingCode: string;\n}\n\nexport interface ITimezoneData {\n displayOrder: number;\n timezoneId: string;\n region: string;\n shortName: string;\n offset: string;\n isDisabled: boolean;\n countryName: string;\n regionWithGMTAndDST: string;\n}\nexport class TimezoneService {\n private static convertNumberToMinutes = (numberString: string) => {\n if (numberString.length === 1) {\n return ((+numberString / 10) * 60).toString();\n } else {\n return ((+numberString / 100) * 60).toString();\n }\n };\n\n private static convertOffsetToDisplayString = (offset: number | string) => {\n const [hrs, mins] = offset.toString().split(\".\");\n let offsetMinute: string = \"00\";\n if (mins) {\n offsetMinute = TimezoneService.convertNumberToMinutes(mins);\n }\n return `${offset > 0 ? \"+\" + hrs : hrs}:${offsetMinute}`;\n };\n\n static getFullTimezoneString = (\n offset: number,\n hasDST: boolean,\n country: string,\n region: string\n ) => {\n const offsetString = TimezoneService.convertOffsetToDisplayString(offset);\n if (region) {\n return `(GMT${offsetString})${\n hasDST ? \" [DST] \" : \"\"\n } ${country}; ${region}`;\n } else {\n return `(GMT${offsetString})${hasDST ? \" [DST]; \" : \";\"} ${country}`;\n }\n };\n\n static getTimezoneStringByTimezoneId = (tzId: string) => {\n const [timezone] = TIMEZONES[0][tzId || DEFAULT_TIMEZONE_ID];\n let tzString = \"\";\n if (timezone) {\n const timezoneObj = timezone as ITimezone;\n const { offset, hasDST } = TimezoneService.getTimezoneSettings(\n timezoneObj\n );\n tzString = TimezoneService.getFullTimezoneString(\n offset,\n hasDST,\n timezoneObj.Country,\n timezoneObj.Region\n );\n }\n return tzString;\n };\n\n static getSelectOptionRegionString = (region, offset: string, hasDst) => {\n const offsetString = TimezoneService.convertOffsetToDisplayString(offset);\n return `${region} (GMT${offsetString})${hasDst ? \" [DST]\" : \"\"}`.trim();\n };\n\n static getTimezoneSettings = (timezone: ITimezone) => {\n let offset = timezone.TimeZone;\n let hasDST = false;\n if (timezone.HasDayLightSavings && timezone.HasDayLightSavings.length) {\n const currentTime = Date.now();\n for (const eachDST of timezone.HasDayLightSavings) {\n if (\n currentTime >= +eachDST.startTimeMili &&\n currentTime <= +eachDST.endTimeMili\n ) {\n hasDST = true;\n offset = +eachDST.offset;\n }\n }\n }\n return {\n offset,\n hasDST\n };\n };\n\n static getOffsetAndDST = (timeNow: number, timeZoneData: ITimezone) => {\n let tzOffset = timeZoneData.TimeZone.toString();\n let hasDST = false;\n if (\n timeZoneData.HasDayLightSavings &&\n timeZoneData.HasDayLightSavings.length\n ) {\n const activeDST = timeZoneData.HasDayLightSavings.find(\n DST =>\n Number(DST.startTimeMili) <= timeNow &&\n timeNow <= Number(DST.endTimeMili)\n );\n if (activeDST) {\n tzOffset = activeDST.offset;\n hasDST = true;\n }\n }\n return { offset: tzOffset, hasDST };\n };\n\n static getRegionData = (timezoneId: string): ITimezoneData => {\n const TimeZones: { [key: string]: ITimezone[] } = TIMEZONES[0];\n const timeNow = Date.now();\n const tz = TimeZones && TimeZones[timezoneId] && TimeZones[timezoneId][0];\n const { hasDST, offset } = TimezoneService.getOffsetAndDST(timeNow, tz);\n\n return {\n displayOrder: tz.DisplayOrder,\n timezoneId: tz.Id,\n region: tz.Region,\n shortName: tz.ShortName,\n offset,\n isDisabled: false,\n countryName: tz.Country,\n regionWithGMTAndDST: TimezoneService.getSelectOptionRegionString(\n tz.Region,\n offset,\n hasDST\n )\n };\n };\n\n static getTimezoneData = () => {\n const TimeZones: { [key: string]: ITimezone[] } = TIMEZONES[0];\n const tzData: {\n [key: string]: ITimezoneData[];\n } = {};\n\n for (const key in TimeZones) {\n if (key in TimeZones) {\n const tz = TimeZones && TimeZones[key] && TimeZones[key][0];\n if (tz && tz.Country) {\n tzData[tz.Country] = tzData[tz.Country] || [];\n tzData[tz.Country].push(TimezoneService.getRegionData(key));\n }\n }\n }\n\n // sort in display order and alphabetically\n const allCountriesString = Object.keys(tzData).sort();\n for (const country in tzData) {\n if (country in tzData) {\n const regions = tzData[country];\n if (regions && regions.length > 1) {\n regions.sort((a, b) => {\n return a.displayOrder - b.displayOrder;\n });\n }\n }\n }\n const topCountriesString = TOP_COUNTRIES_IDS.reduce(\n (prevArr: string[], countryId, i) => {\n if (\n TimeZones[countryId] &&\n TimeZones[countryId].length &&\n prevArr.indexOf(TimeZones[countryId][0].Country) === -1\n ) {\n prevArr.push(TimeZones[countryId][0].Country);\n }\n return prevArr;\n },\n []\n );\n const allCountriesData: ITimezoneData[][] = allCountriesString.map(\n countryName => {\n return tzData[countryName];\n }\n );\n const topCountriesData: ITimezoneData[][] = topCountriesString.map(\n countryName => {\n return tzData[countryName];\n }\n );\n return {\n topCountriesData,\n allCountriesData\n };\n };\n}\n","import * as React from \"react\";\nimport \"./select-list-with-filter.scss\";\nimport { SelectListOption } from \"./select-option\";\n\nexport interface ISelectListWithFilterProps {\n selectItems: any[];\n customSelectConfig: {\n selectedOptionText: string;\n allOptions: Array>;\n onOptionChange: (newOption: T, index, event?) => void;\n placeholderText: string;\n showValidation?: boolean;\n validationMessage?: string;\n };\n}\n\ninterface ISelectListWithFilterState {\n filterItems: JSX.Element[];\n isOpen: boolean;\n}\n\nexport class SelectListWithFilter extends React.Component<\n ISelectListWithFilterProps,\n ISelectListWithFilterState\n> {\n private inputRef: React.RefObject = React.createRef();\n private customUlRef: React.RefObject = React.createRef();\n private customSelectDivRef: React.RefObject<\n HTMLDivElement\n > = React.createRef();\n\n constructor(props: ISelectListWithFilterProps) {\n super(props);\n const selectItems: JSX.Element[] = [];\n this.props.selectItems.forEach((option, index) => {\n selectItems.push(\n
  • \n {option.optionText}\n
  • \n );\n });\n this.state = {\n filterItems: selectItems,\n isOpen: false\n };\n }\n\n componentDidMount() {\n if (this.inputRef && this.inputRef.current) {\n (this.inputRef.current as HTMLElement).focus();\n }\n }\n\n private dropDownToggler = () => {\n this.setState(\n prevState => {\n return {\n isOpen: !prevState.isOpen\n };\n },\n () => {\n const nowIsOpen = this.state.isOpen;\n if (nowIsOpen) {\n const ulElm = this.customUlRef.current;\n if (ulElm) {\n const selectedElm = ulElm.querySelector(\"li.selected\");\n if (selectedElm) {\n selectedElm.scrollIntoView();\n }\n const customOuterDivElm = this.customSelectDivRef.current;\n if (customOuterDivElm) {\n const windowHeight = window.innerHeight;\n const customOuterDimensions = customOuterDivElm.getBoundingClientRect();\n const customOuterTop = customOuterDimensions.top;\n const customOuterHeight = customOuterDimensions.height;\n const lowerSectionHeight =\n windowHeight - customOuterTop - customOuterHeight;\n const parentDiv = ulElm.parentElement;\n if (parentDiv) {\n if (ulElm.clientHeight < lowerSectionHeight) {\n parentDiv.classList.remove(\"open-top\");\n parentDiv.classList.add(\"open-bottom\");\n } else {\n parentDiv.classList.remove(\"open-bottom\");\n parentDiv.classList.add(\"open-top\");\n }\n }\n }\n }\n }\n }\n );\n };\n\n private onCustomOptionClick = (option: SelectListOption, index, e) => {\n this.setState({\n isOpen: false\n });\n if (this.props.customSelectConfig) {\n this.props.customSelectConfig.onOptionChange(\n option.optionValue,\n index,\n e\n );\n }\n };\n\n render() {\n const {\n allOptions,\n placeholderText,\n selectedOptionText,\n showValidation,\n validationMessage\n } = this.props.customSelectConfig;\n const hasSelection =\n this.props.customSelectConfig.selectedOptionText.length > 0;\n return (\n
    \n 1 ? this.dropDownToggler : undefined}\n />\n\n \n 1 ? this.dropDownToggler : undefined}\n >\n \n {hasSelection ? selectedOptionText : placeholderText}\n

    \n
    \n \n
    \n
      \n {allOptions.map((option, index) => {\n return (\n \n {option.optionText}\n \n );\n })}\n
    \n
    \n \n \n );\n }\n}\n","export class SelectListOption {\n isDisabled: boolean;\n optionText: string;\n optionValue: T;\n constructor(params: {\n isDisabled: boolean;\n optionText: string;\n optionValue: T;\n }) {\n this.isDisabled = params.isDisabled;\n this.optionText = params.optionText;\n this.optionValue = params.optionValue;\n }\n}\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport \"./timezone-popup.scss\";\nimport {\n ITimezonePopupProps,\n ITimezonePopupStates\n} from \"./timezone-popup.interface\";\nimport { TimezoneService, ITimezoneData } from \"src/utils/timezone.service\";\nimport { ChatButton } from \"../chat-button/chat-button\";\nimport { SelectListWithFilter } from \"../select-list-with-filter/select-list-with-filter\";\nimport { SelectListOption } from \"../select-list-with-filter/select-option\";\n\nexport class TimezonePopup extends React.Component<\n ITimezonePopupProps,\n ITimezonePopupStates\n> {\n private tempSelectedCountry: string;\n private tempSelectedRegionDetail: ITimezoneData;\n private tempRegionList: ITimezoneData[];\n private dropdownCountryWithRegionList: ITimezoneData[][] = [];\n private dropdownRegionList: ITimezoneData[] = [];\n private seperatorOption: ITimezoneData[] = [\n {\n countryName: \"-------------------------------------\",\n isDisabled: true,\n displayOrder: 0,\n offset: \"\",\n region: \"\",\n shortName: \"\",\n timezoneId: \"\",\n regionWithGMTAndDST: \"\"\n }\n ];\n private selectOptionsForCountryList: Array<\n SelectListOption\n > = [];\n private selectOptionsForRegionList: Array<\n SelectListOption\n > = [];\n placeholderTextForRegionsList = \"Please select time zone region\";\n constructor(props: ITimezonePopupProps) {\n super(props);\n this.initializePopup(props);\n const selectedRegionDetails = TimezoneService.getRegionData(\n props.timezoneId\n );\n this.state = this.getStatesObj(selectedRegionDetails);\n this.tempSelectedCountry = this.state.selectedCountryName;\n this.tempSelectedRegionDetail = this.state.selectedRegionDetails;\n this.tempRegionList = this.dropdownRegionList;\n }\n\n initializePopup(props: ITimezonePopupProps) {\n this.setDropdownCountryWithRegionList();\n this.setDropdownRegionList(props.timezoneId);\n }\n\n componentDidUpdate(nextProps: ITimezonePopupProps) {\n const timezoneChanged = nextProps.timezoneId !== this.props.timezoneId;\n if (timezoneChanged) {\n this.setDropdownRegionList(nextProps.timezoneId);\n const selectedRegionDetails = TimezoneService.getRegionData(\n nextProps.timezoneId\n );\n const stateObj = this.getStatesObj(selectedRegionDetails);\n this.tempSelectedCountry = stateObj.selectedCountryName;\n this.tempSelectedRegionDetail = stateObj.selectedRegionDetails;\n this.tempRegionList = this.dropdownRegionList;\n this.setState(stateObj);\n }\n }\n\n getStatesObj = (\n selectedRegionDetails: ITimezoneData\n ): ITimezonePopupStates => {\n return {\n selectedCountryName: selectedRegionDetails.countryName,\n selectedRegionNameWithGMTAndDST:\n selectedRegionDetails.regionWithGMTAndDST,\n selectedRegionDetails,\n showRegionValidation: false\n };\n };\n\n getSelectedRegionsByTimezoneId = (tzId: string) => {\n return this.dropdownCountryWithRegionList.find(t => {\n const hasSelectedRegions = t.some(e => e.timezoneId === tzId);\n return hasSelectedRegions;\n });\n };\n\n setDropdownCountryWithRegionList = () => {\n const {\n allCountriesData,\n topCountriesData\n } = TimezoneService.getTimezoneData();\n this.dropdownCountryWithRegionList = topCountriesData.concat(\n [this.seperatorOption],\n allCountriesData\n );\n this.selectOptionsForCountryList = this.dropdownCountryWithRegionList.map(\n (countryData, index) => {\n const option = new SelectListOption({\n isDisabled: countryData[0].isDisabled,\n optionText: countryData[0].countryName,\n optionValue: countryData[0]\n });\n return option;\n }\n );\n };\n\n setDropdownRegionList = (tzId: string) => {\n this.dropdownRegionList = this.getSelectedRegionsByTimezoneId(\n tzId\n ) as ITimezoneData[];\n this.selectOptionsForRegionList = this.dropdownRegionList.map(\n (regionData, index) => {\n const option = new SelectListOption({\n isDisabled: regionData.isDisabled,\n optionText: regionData.regionWithGMTAndDST,\n optionValue: regionData\n });\n return option;\n }\n );\n };\n\n onCountryChange = (newValue: ITimezoneData, index: number) => {\n this.resetRegionValidation();\n this.setCountryAndRegionByIndex(index);\n };\n\n setCountryAndRegionByIndex = (countryIndex: number, regionIndex = 0) => {\n const newRegionSelection = this.dropdownCountryWithRegionList[countryIndex][\n regionIndex\n ];\n this.dropdownRegionList = this.dropdownCountryWithRegionList[countryIndex];\n this.selectOptionsForRegionList = this.dropdownRegionList.map(\n (regionData, index) => {\n const option = new SelectListOption({\n isDisabled: regionData.isDisabled,\n optionText: regionData.regionWithGMTAndDST,\n optionValue: regionData\n });\n return option;\n }\n );\n this.setState({\n selectedCountryName: newRegionSelection.countryName\n });\n if (this.dropdownRegionList.length > 1) {\n this.setState({\n selectedRegionNameWithGMTAndDST: \"\"\n });\n } else {\n this.setRegionByIndex(0);\n }\n };\n\n setRegionByIndex = (regionIndex: number) => {\n const selectedRegion = this.dropdownRegionList[regionIndex];\n this.setState({\n selectedRegionNameWithGMTAndDST: selectedRegion.regionWithGMTAndDST,\n selectedRegionDetails: selectedRegion\n });\n };\n\n onRegionChange = (newValue: ITimezoneData, index: number) => {\n this.resetRegionValidation();\n this.setRegionByIndex(index);\n };\n\n resetRegionValidation = () => {\n this.setState({\n showRegionValidation: false\n });\n };\n\n onContinueBtnClick = () => {\n if (\n this.state.selectedCountryName &&\n this.state.selectedRegionNameWithGMTAndDST\n ) {\n const tzId = this.state.selectedRegionDetails.timezoneId;\n const timezoneString = TimezoneService.getTimezoneStringByTimezoneId(\n tzId\n );\n this.tempSelectedCountry = this.state.selectedCountryName;\n this.tempSelectedRegionDetail = this.state.selectedRegionDetails;\n this.tempRegionList = this.dropdownRegionList;\n this.props.closePopup(tzId, timezoneString);\n } else {\n this.setState({\n showRegionValidation: true\n });\n }\n };\n\n onCloseButtonClick = () => {\n this.setState({\n selectedCountryName: this.tempSelectedCountry,\n selectedRegionDetails: this.tempSelectedRegionDetail,\n selectedRegionNameWithGMTAndDST: this.tempSelectedRegionDetail\n .regionWithGMTAndDST\n });\n this.dropdownRegionList = this.tempRegionList;\n this.props.closePopup();\n };\n render() {\n const container = document.querySelector(\".chat-window\");\n return (\n container &&\n createPortal(\n
    \n
    \n

    \n Your time zone\n \n

    \n

    All times will be displayed according to your time zone:

    \n \n\n \n
    \n \n
    \n
    \n
    ,\n container\n )\n );\n }\n}\n","export default __webpack_public_path__ + \"static/media/no_Times.d9349db9.svg\";","export default __webpack_public_path__ + \"static/media/Error_icon.3dda98a7.svg\";","export default __webpack_public_path__ + \"static/media/double_booking_icon.3bf28f2f.svg\";","import { ConfirmEventData, ContactInfo } from \"src/interaction.interface\";\n\nexport interface FetchSlotsOptions {\n startDate: number;\n endDate: number;\n timeZoneId: string;\n websiteId: string;\n interactionId: string;\n initial_load: boolean;\n}\n\nexport interface Slot {\n timeStr: string;\n startTime: number;\n duration: number;\n dateString: string;\n dateObjSummary: string;\n resourceLinkId: any;\n}\n\nexport type FetchSlotsAPISuccessResponse = {\n success: true;\n slots: {\n [date: string]: Slot[];\n };\n /** date in d/m/yyyy format */\n lastAvailableDay: Date;\n};\n\nexport type FetchSlotsAPIErrorResponse = {\n schedule_status: \"error_while_fetching_slots\";\n schedule_fallback_message: string;\n};\n\nexport type FetchSlotsAPIResponse =\n | FetchSlotsAPISuccessResponse\n | FetchSlotsAPIErrorResponse;\n\nexport interface ConfirmOptions {\n trackingid?: any;\n duration: number;\n timeZoneId: string;\n timeZoneString: string;\n startTime: number;\n websiteId: string;\n interactionId: string;\n dateObjSummary: string;\n resourcesLinkId: any;\n enableSmsNotification: boolean;\n contactInfo: ContactInfo;\n}\n\nexport interface BlockOptions {\n meetingIds?: any;\n duration: number;\n dateObjSummary: string;\n resourcesLinkId: any;\n meetingLowerBoundary: number;\n meetingUpperBoundary: number;\n interactionId: string;\n contactInfo: ContactInfo;\n}\n\nexport interface DoubleBookingResponse {\n schedule_status: \"error_double_booking\";\n schedule_fallback_message: string;\n schedule_timeslot_fallback_button_text: string;\n}\n\nexport interface ErrorWhileConfirming {\n schedule_status: \"error_while_confirming\";\n schedule_fallback_message: string;\n}\n\nexport interface ErrorWhileBlocking {\n schedule_status: \"error_while_blocking_time\";\n schedule_fallback_message: string;\n}\n\nexport type ConfirmAPIResponse =\n | DoubleBookingResponse\n | ErrorWhileConfirming\n | ConfirmEventData;\n\nexport type BlockAPIResponse =\n | DoubleBookingResponse\n | ErrorWhileBlocking\n | BlockAPIData;\n\nexport type BlockAPIData = {\n bookingTrackingId: string;\n panelTrackingId: string;\n};\n\nexport function dateToString(date: Date): string {\n return date.getFullYear() + \"-\" + date.getMonth() + \"-\" + date.getDate();\n}\n\nexport function stringToDate(date: string): Date {\n const parts = date.split(\"-\");\n return new Date(parseInt(parts[0]), parseInt(parts[1]), parseInt(parts[2]));\n}\n\nexport function nextDay(date: string) {\n const next = stringToDate(date);\n next.setDate(next.getDate() + 1);\n return dateToString(next);\n}\n","import { ApiClient } from \"../../../../../utils/api-client\";\nimport {\n Slot,\n FetchSlotsOptions,\n FetchSlotsAPIResponse,\n ConfirmOptions,\n ConfirmAPIResponse,\n BlockOptions,\n BlockAPIResponse\n} from \"./slots.type\";\nimport { StorageStrategy } from \"../../../../../utils/storage-strategy\";\n\nexport async function fetchSlots(\n options: FetchSlotsOptions\n): Promise {\n const storage = StorageStrategy.getStrategy();\n const chSessionId = storage.getSession();\n if (chSessionId == null) {\n throw new Error(\"Session not found\");\n }\n const request = await ApiClient.post(\n `${process.env.REACT_APP_SETTINGS_API}schedule-times/fetch-times`,\n {\n headers: {\n \"content-type\": \"application/json\"\n },\n body: { ...options, chSessionId }\n }\n );\n const json = await request.json();\n if (!json.success) {\n return json;\n }\n const lastAvailableDay: [\n number,\n number,\n number\n ] = json.data.lastAvailableDay\n .split(\"-\")\n .map((part: string) => parseInt(part));\n lastAvailableDay.reverse();\n const slots: { [date: string]: Slot[] } = {};\n for (const date in json.data.slots) {\n const dateSlots: Slot[] = [];\n const { am, pm, duration } = json.data.slots[date];\n if (am) {\n dateSlots.push(...am);\n }\n if (pm) {\n dateSlots.push(...pm);\n }\n for (let i = dateSlots.length - 1; i >= 0; i--) {\n dateSlots[i].duration = duration;\n }\n slots[date] = dateSlots;\n }\n\n return {\n slots,\n success: true,\n lastAvailableDay: new Date(...lastAvailableDay)\n };\n}\n\nexport async function confirmSlot(\n options: ConfirmOptions\n): Promise {\n const storage = StorageStrategy.getStrategy();\n const chSessionId = storage.getSession();\n if (chSessionId == null) {\n throw new Error(\"Session not found\");\n }\n const request = await ApiClient.post(\n `${process.env.REACT_APP_SETTINGS_API}schedule-times/confirm`,\n {\n headers: {\n \"content-type\": \"application/json\"\n },\n body: { ...options, chSessionId }\n }\n );\n const json = await request.json();\n return json.data;\n}\n\nexport async function blockSlot(\n options: BlockOptions\n): Promise {\n const storage = StorageStrategy.getStrategy();\n const chSessionId = storage.getSession();\n if (chSessionId == null) {\n throw new Error(\"Session not found\");\n }\n const request = await ApiClient.post(\n `${process.env.REACT_APP_SETTINGS_API}schedule-times/block-meeting-time`,\n {\n headers: {\n \"content-type\": \"application/json\"\n },\n body: { ...options, chSessionId }\n }\n );\n const json = await request.json();\n return json.data;\n}\n","import * as React from \"react\";\nimport \"./loader.scss\";\nimport { ILoaderProps } from \"./loader.interface\";\n\nexport const Loader = (props: ILoaderProps) => {\n return (\n
    \n
    \n
    \n \n
    \n
    {props.text ? props.text : \"\"}
    \n
    \n
    \n );\n};\n","/* eslint-disable jsx-a11y/heading-has-content */\n/* eslint-disable no-script-url */\n/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, {\n useReducer,\n useMemo,\n useState,\n useCallback,\n useContext,\n useEffect,\n useRef,\n Dispatch\n} from \"react\";\n\nimport {\n ScheduleInteraction,\n ConfirmEventData\n} from \"src/interaction.interface\";\nimport { TimezoneService } from \"src/utils/timezone.service\";\nimport { TimezonePopup } from \"src/widget-container/common-components/timezone-popup/timezone-popup\";\nimport { SocketServiceContext, AppContext } from \"src/AppContext\";\nimport { DEFAULT_TIMEZONE_ID } from \"src/widget-container/constants\";\nimport NoTimesIcon from \"src/assets/images/no_Times.svg\";\nimport CONFIRM_ERROR_ICON from \"src/assets/images/Error_icon.svg\";\nimport DOUBLE_BOOKING_ERROR_ICON from \"src/assets/images/double_booking_icon.svg\";\n\nimport \"./schedule-action.scss\";\n\nimport {\n Slot,\n nextDay,\n stringToDate,\n dateToString,\n ConfirmAPIResponse,\n FetchSlotsAPISuccessResponse\n} from \"./slots.type\";\n\nimport { confirmSlot, fetchSlots, blockSlot } from \"./slots.service\";\nimport { Loader } from \"src/widget-container/common-components/loader/loader\";\nimport { ChatButton } from \"src/widget-container/common-components/chat-button/chat-button\";\nimport {\n MONTH_NAMES,\n SHORT_MONTH_NAMES,\n SHORT_DAY_NAMES\n} from \"src/utils/utils.service\";\nimport { ConversationState } from \"src/constants\";\nimport { ColorSet } from \"src/utils/color-set\";\n\ntype SelectedDatePosition = 0 | 1 | 2;\n\ninterface Props {\n last: boolean;\n interaction: ScheduleInteraction;\n}\n\ninterface State {\n lastAvailableDay: null | Date;\n findNextAvailableDay: boolean;\n slots: {\n [date: string]: undefined | null | Slot[];\n };\n firstDate: string;\n selectedDatePosition: SelectedDatePosition;\n selectedSlot: null | Slot;\n confirmAPIPromise: null | Promise;\n blockTrackingId: null | String;\n doubleBooking: null | {\n message: string;\n buttonText: string;\n };\n smsChecked: boolean;\n}\n\ntype Action =\n | { type: \"RESET_SLOTS\" }\n | { type: \"CHANGE_FIRST_DATE\"; changeInDays: number }\n | { type: \"SET_FIRST_DATE\"; value: string; position: number }\n | {\n type: \"SLOTS\";\n data: FetchSlotsAPISuccessResponse;\n start: string;\n end: string;\n }\n | { type: \"LOADING_SLOTS\"; start: string; end: string }\n | {\n type: \"SELECTED_DATE_POSITION\";\n position: SelectedDatePosition;\n }\n | { type: \"START_CONFIRMATION\"; promise: Promise }\n | { type: \"BLOCK_SLOT\"; data: String }\n | { type: \"SELECT_SLOT\"; slot: null | Slot }\n | { type: \"DOUBLE_BOOKING\"; message: string; buttonText: string }\n | { type: \"BACK_DOUBLE_BOOKING\" }\n | { type: \"SET_SMS\"; value: boolean }\n | { type: \"FIND_NEXT_AVAILABLE_DAY\"; value: boolean };\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case \"RESET_SLOTS\": {\n return {\n ...state,\n lastAvailableDay: null,\n slots: {},\n doubleBooking: null,\n confirmAPIPromise: null,\n findNextAvailableDay: true,\n selectedDatePosition: 0,\n selectedSlot: null,\n blockTrackingId: null,\n firstDate: dateToString(new Date())\n };\n }\n case \"CHANGE_FIRST_DATE\": {\n const date = stringToDate(state.firstDate);\n date.setDate(date.getDate() + action.changeInDays);\n return {\n ...state,\n selectedDatePosition: 0,\n firstDate: dateToString(date)\n };\n }\n case \"SLOTS\": {\n const next: State = {\n ...state,\n lastAvailableDay: action.data.lastAvailableDay,\n slots: { ...state.slots, ...action.data.slots }\n };\n for (let date = action.start; date !== action.end; ) {\n next.slots[date] = next.slots[date] || [];\n const nextDate = stringToDate(date);\n nextDate.setDate(nextDate.getDate() + 1);\n date = dateToString(nextDate);\n }\n return next;\n }\n case \"LOADING_SLOTS\": {\n const next: State = {\n ...state,\n slots: { ...state.slots }\n };\n for (let date = action.start; date !== action.end; ) {\n next.slots[date] = null;\n const nextDate = stringToDate(date);\n nextDate.setDate(nextDate.getDate() + 1);\n date = dateToString(nextDate);\n }\n return next;\n }\n case \"SELECTED_DATE_POSITION\":\n return { ...state, selectedDatePosition: action.position };\n case \"SELECT_SLOT\":\n return { ...state, selectedSlot: action.slot };\n case \"START_CONFIRMATION\":\n return { ...state, confirmAPIPromise: action.promise };\n case \"BLOCK_SLOT\":\n return { ...state, blockTrackingId: action.data };\n case \"DOUBLE_BOOKING\": {\n return {\n ...state,\n doubleBooking: {\n message: action.message,\n buttonText: action.buttonText\n },\n selectedSlot: null,\n confirmAPIPromise: null\n };\n }\n case \"BACK_DOUBLE_BOOKING\": {\n return {\n ...state,\n doubleBooking: null,\n confirmAPIPromise: null,\n selectedSlot: null,\n slots: {}\n };\n }\n case \"FIND_NEXT_AVAILABLE_DAY\":\n return { ...state, findNextAvailableDay: action.value };\n case \"SET_FIRST_DATE\":\n const position = (state.selectedDatePosition + action.position) % 3;\n const date = stringToDate(action.value);\n date.setDate(date.getDate() - position);\n return {\n ...state,\n firstDate: dateToString(date),\n selectedDatePosition: position as any\n };\n case \"SET_SMS\":\n return { ...state, smsChecked: action.value };\n default:\n throw new Error();\n }\n}\n\nfunction TimeZone(props: { timezoneId: string }) {\n const actions = useContext(SocketServiceContext);\n const appContext = useContext(AppContext);\n const timezone = useMemo(\n () => TimezoneService.getTimezoneStringByTimezoneId(props.timezoneId),\n [props.timezoneId]\n );\n const [modal, openModal] = useState(false);\n useEffect(() => {\n if (!appContext.open) {\n openModal(false);\n }\n }, [appContext]);\n const closePopup = useCallback(\n (timezoneId: string) => {\n if (timezoneId != null) {\n actions.updateTimezone(timezoneId);\n }\n openModal(false);\n },\n [actions]\n );\n /** remove this when time_zone_id issue is resolved */\n if (isNaN(parseInt(props.timezoneId))) {\n actions.updateTimezone(DEFAULT_TIMEZONE_ID);\n return null;\n }\n return (\n
    \n {modal && (\n \n )}\n

    openModal(true)}>{timezone}

    \n
    {timezone}
    \n
    \n );\n}\n\nfunction DelayedLoader() {\n const [text, setText] = useState(\"\");\n useEffect(() => {\n const timeout = setTimeout(() => {\n setText(\"Still retrieving... this may take a few more seconds\");\n }, 5000);\n return () => clearTimeout(timeout);\n }, []);\n return ;\n}\n\nfunction BackArrow(props: { disabled: boolean; onClick?: () => void }) {\n const isDisabled = props.disabled;\n return (\n \n \n \n \n \n );\n}\n\nfunction NextArrow(props: { disabled: boolean; onClick?: () => void }) {\n const disabled = props.disabled;\n return (\n \n \n \n \n \n );\n}\n\ninterface SlotDateProps {\n dates: string[];\n position: number;\n selected: number;\n disabled: boolean;\n onClick: (position: number) => void;\n}\n\nfunction SlotDate(props: SlotDateProps) {\n const disabled = props.disabled;\n const date = stringToDate(props.dates[props.position]);\n return (\n
  • \n {SHORT_DAY_NAMES[date.getDay()]}\n props.onClick(props.position)}\n >\n {date.getDate()}\n \n
  • \n );\n}\n\nfunction Slots(props: {\n items: Slot[];\n onSelect: (item: Slot) => void;\n dispatch: Dispatch;\n viewNextAvailableDay: boolean;\n}) {\n const [index, setIndex] = useState(0);\n const [pageSize, setPageSize] = useState(\n window.outerWidth <= 650 ? 4 : 6\n );\n useEffect(() => {\n const listener = () => {\n setPageSize(window.outerWidth <= 650 ? 4 : 6);\n };\n window.addEventListener(\"resize\", listener);\n return () => {\n window.removeEventListener(\"resize\", listener);\n };\n }, []);\n const items = props.items;\n const disableNext = index + pageSize >= items.length;\n const disablePrev = index - pageSize < 0;\n return (\n <>\n
    \n {items.length === 0 ? (\n \n
    No times available on this day
    \n

    \n {!props.viewNextAvailableDay && (\n \n props.dispatch({\n type: \"FIND_NEXT_AVAILABLE_DAY\",\n value: true\n })\n }\n >\n View next available day\n \n )}\n

    \n
    \n ) : (\n
      \n {items.slice(index, index + pageSize).map((item, index) => (\n props.onSelect(item)}\n key={index}\n >\n {item.timeStr}\n \n ))}\n
    \n )}\n \n
    \n setIndex(index - pageSize)}\n >\n Earlier times\n \n setIndex(index + pageSize)}\n >\n Later times\n \n
    \n \n );\n}\n\ninterface CalenderContentProps {\n slots: {\n [date: string]: undefined | null | Slot[];\n };\n firstDate: string;\n timeZoneId: string;\n selectedDatePosition: SelectedDatePosition;\n fetchSlots: (date: string) => void;\n dispatch: Dispatch;\n lastAvailableDay: null | Date;\n findNextAvailableDay: boolean;\n block: (slot: Slot) => void;\n}\n\nfunction areSlotsAvailable(slots: null | undefined | Slot[]): boolean {\n if (slots === null || slots === undefined) return true;\n return slots.length !== 0;\n}\n\nfunction CalenderContent({\n dispatch,\n slots,\n lastAvailableDay,\n findNextAvailableDay,\n firstDate,\n timeZoneId,\n fetchSlots,\n selectedDatePosition,\n block\n}: CalenderContentProps) {\n const displayedDates = useMemo(() => {\n const displayedDates: string[] = [firstDate, nextDay(firstDate)];\n displayedDates[2] = nextDay(displayedDates[1]);\n return displayedDates;\n }, [firstDate]);\n const selectedDate = displayedDates[selectedDatePosition];\n const date = stringToDate(selectedDate);\n const selectedDaySlots = slots[selectedDate];\n const selectSlot = (slot: Slot) => {\n block(slot);\n dispatch({ type: \"SELECT_SLOT\", slot });\n };\n const nextDatesVisibility =\n lastAvailableDay &&\n lastAvailableDay.getTime() >\n stringToDate(displayedDates[displayedDates.length - 1]).getTime();\n const changeSelectedDatePosition = (position: SelectedDatePosition) =>\n dispatch({ type: \"SELECTED_DATE_POSITION\", position });\n let prevDates: undefined | { (): void } = undefined;\n let nextDates: undefined | { (): void } = undefined;\n if (stringToDate(firstDate).getTime() > Date.now()) {\n prevDates = () => dispatch({ type: \"CHANGE_FIRST_DATE\", changeInDays: -3 });\n }\n if (nextDatesVisibility) {\n nextDates = () => dispatch({ type: \"CHANGE_FIRST_DATE\", changeInDays: 3 });\n }\n const emptyDate = displayedDates.find(date => !slots[date]);\n const fetchDate =\n emptyDate && slots[emptyDate] === undefined ? emptyDate : null;\n if (selectedDaySlots && findNextAvailableDay) {\n dispatch({ type: \"FIND_NEXT_AVAILABLE_DAY\", value: false });\n }\n let lastDateForSlot = 0;\n for (let i = displayedDates.length - 1; i >= 0; i--) {\n if (areSlotsAvailable(slots[displayedDates[i]])) {\n lastDateForSlot = i;\n break;\n }\n }\n useEffect(() => {\n if (fetchDate) {\n fetchSlots(fetchDate);\n }\n }, [fetchDate, fetchSlots]);\n useEffect(() => {\n if (!findNextAvailableDay) return;\n let date = selectedDate;\n let position = 0;\n while (true) {\n const slotOnDate = slots[date];\n if (slotOnDate === undefined) {\n return dispatch({ type: \"SET_FIRST_DATE\", value: date, position });\n } else if (slotOnDate === null) {\n return;\n } else if (slotOnDate.length === 0) {\n date = nextDay(date);\n } else {\n return dispatch({ type: \"SET_FIRST_DATE\", value: date, position });\n }\n position++;\n }\n }, [dispatch, findNextAvailableDay, selectedDate, slots]);\n return (\n
    \n \n
    \n {!!emptyDate && }\n {!emptyDate && selectedDaySlots && (\n <>\n

    \n {MONTH_NAMES[date.getMonth()]} {date.getFullYear()}\n

    \n
    \n \n
      \n \n \n \n
    \n \n
    \n = lastDateForSlot\n }\n />\n \n )}\n
    \n
    \n );\n}\n\ninterface ConfirmSlotContentProps {\n slot: Slot;\n back: () => void;\n confirming: boolean;\n timezoneId: string;\n interaction: ScheduleInteraction;\n confirm: (slot: Slot) => void;\n isChecked: boolean;\n smsConsent: () => void;\n blockTrackingId: any;\n}\n\nfunction ConfirmSlotContent(props: ConfirmSlotContentProps) {\n const { slot, timezoneId } = props;\n const timezone = TimezoneService.getTimezoneStringByTimezoneId(timezoneId);\n const dateObjSummary = slot.dateObjSummary.split(\",\");\n const time = dateObjSummary.pop();\n const date = dateObjSummary.join(\",\");\n const { colour: color } = useContext(AppContext).settings;\n const confirmationFullText = props.interaction.schedule_confirmation_title;\n let confirmationText = props.interaction.schedule_confirmation_title;\n const smsNotificationToggle = props.interaction.schedule_sms_notification;\n let smsOptInText = props.interaction.schedule_sms_opt_in_text;\n const confirmationTextLength = (confirmationText || \"\").toString().length;\n const smsOptInTextLength = (smsOptInText || \"\").toString().length;\n const blockTrackingId = props.blockTrackingId;\n const selectTimeSlotView = (\n = 32 ? \"multi-line-title\" : \"\"\n }`}\n >\n
    \n
    \n
    \n {confirmationText}\n \n
    \n

    {date}

    \n

    {time}

    \n \n {timezone}\n {/*
    {timezone}
    */}\n
    \n {smsNotificationToggle ? (\n
    \n \n
    \n ) : (\n ``\n )}\n \n ) : (\n props.interaction.schedule_confirmation_button\n )\n }\n isDisabled={props.confirming}\n classNames={`confirm-meeting-button ${\n props.confirming ? \"loading-button\" : \"\"\n }`}\n clickHandler={() => props.confirm(props.slot)}\n />\n
    \n \n \n );\n\n if (confirmationTextLength > 70 || smsOptInTextLength > 56) {\n confirmationText = (confirmationText || \"\").slice(0, 70);\n smsOptInText = (smsOptInText || \"\").slice(0, 56);\n }\n return (\n
    \n
    \n \n \n \n \n Back\n \n
    \n
    \n {!blockTrackingId ? : selectTimeSlotView}\n
    \n );\n}\n\nfunction ConfirmationContent(props: { confirmEventData: ConfirmEventData }) {\n const {\n email,\n timeZoneId,\n dateObjSummary,\n isCalendarEventCreated\n } = props.confirmEventData;\n const timezone = TimezoneService.getTimezoneStringByTimezoneId(timeZoneId);\n const dateObjSummarySplit = dateObjSummary.split(\",\");\n const time = dateObjSummarySplit.pop();\n const date = dateObjSummarySplit.join(\",\");\n const fullMonth =\n MONTH_NAMES[SHORT_MONTH_NAMES.indexOf(dateObjSummary.substring(5, 8))];\n const dayOfMonth = parseInt(dateObjSummary.substring(9, 11));\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    {fullMonth}

    \n

    {dayOfMonth}

    \n \n
    \n
    \n
    Your meeting is confirmed!
    \n

    {date}

    \n

    {time}

    \n
    \n {timezone}\n
    {timezone}
    \n
    \n
    \n {isCalendarEventCreated\n ? \"An event has been added to your calendar\"\n : \"An email has been sent to\"}\n {\":\"}\n
    \n {email}\n
    {email}
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n );\n}\n\nfunction ErrorWhileFetchingContent() {\n return (\n
    \n
    \n
    \n
    \n
    \n \"\"\n
    \n
    No times are currently available
    \n

    We will contact you to arrange a time to meet.

    \n
    \n
    \n
    \n
    \n );\n}\n\nfunction ConversationEndedContent() {\n return (\n
    \n
    \n
    \n
    \n
    \n \"\"\n
    \n
    Due to inactivity, this conversation has ended
    \n

    \n Please refresh the page to renew the chat and schedule your\n meeting.\n

    \n
    \n
    \n
    \n
    \n );\n}\n\nfunction ErrorWhileConfirmingContent({ message }: { message?: string }) {\n return (\n
    \n
    \n
    \n
    \n
    \n \"\"\n
    \n
    {message}
    \n
    \n
    \n
    \n
    \n );\n}\n\nfunction ErrorDoubleBookingContent(props: {\n message: string;\n dispatch: Dispatch;\n buttonText?: string;\n}) {\n return (\n
    \n
    \n props.dispatch({ type: \"BACK_DOUBLE_BOOKING\" })}\n >\n \n \n \n Back\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    {props.message}
    \n \n props.dispatch({ type: \"BACK_DOUBLE_BOOKING\" })\n }\n classNames=\"confirm-meeting-button select-new-time\"\n />\n
    \n
    \n
    \n
    \n );\n}\n\nfunction ScheduleAction({ interaction, last }: Props) {\n const appContext = useContext(AppContext);\n const actions = useContext(SocketServiceContext);\n const [state, dispatch] = useReducer(reducer, {\n slots: {},\n lastAvailableDay: null,\n firstDate: dateToString(new Date()),\n selectedDatePosition: 0,\n selectedSlot: null,\n confirmAPIPromise: null,\n blockTrackingId: null,\n doubleBooking: null,\n smsChecked: false,\n findNextAvailableDay: true\n });\n const refs = useRef<{\n initial_load: boolean;\n time_zone_id: string;\n calendarVisible: boolean;\n }>({\n initial_load: true,\n time_zone_id: interaction.time_zone_id,\n calendarVisible: false\n });\n refs.current.time_zone_id = interaction.time_zone_id;\n const confirm = (slot: Slot) =>\n dispatch({\n type: \"START_CONFIRMATION\",\n promise: confirmSlot({\n trackingid: state.blockTrackingId,\n duration: slot.duration,\n startTime: slot.startTime,\n websiteId: appContext.settings.id,\n dateObjSummary: slot.dateObjSummary,\n timeZoneId: interaction.time_zone_id,\n timeZoneString: TimezoneService.getTimezoneStringByTimezoneId(\n interaction.time_zone_id\n ),\n resourcesLinkId: slot.resourceLinkId,\n enableSmsNotification: state.smsChecked,\n interactionId: interaction.external_id,\n contactInfo: interaction.contact_info\n })\n });\n\n const block = (slot: Slot) => {\n blockSlot({\n duration: slot.duration,\n meetingLowerBoundary: slot.startTime,\n meetingUpperBoundary: slot.startTime + slot.duration,\n dateObjSummary: slot.dateObjSummary,\n resourcesLinkId: slot.resourceLinkId,\n interactionId: interaction.external_id,\n contactInfo: interaction.contact_info\n })\n .then(data => {\n if (\"schedule_status\" in data) {\n if (data.schedule_status === \"error_double_booking\") {\n dispatch({\n type: \"DOUBLE_BOOKING\",\n message: data.schedule_fallback_message,\n buttonText: data.schedule_timeslot_fallback_button_text\n });\n } else if (data.schedule_status === \"error_while_blocking_time\") {\n actions.scheduleResponse(data);\n }\n } else if (!(\"schedule_status\" in data)) {\n dispatch({\n type: \"BLOCK_SLOT\",\n data: data.panelTrackingId\n });\n }\n })\n .catch(() => {\n actions.scheduleResponse({\n schedule_status: \"error_while_blocking_time\",\n schedule_fallback_message: \"Something went wrong\"\n });\n });\n };\n\n const fetch = useCallback(\n (date: string) => {\n const start = stringToDate(date);\n start.setDate(start.getDate() - 1);\n const end = new Date(start.getTime());\n end.setDate(end.getDate() + 7);\n dispatch({\n type: \"LOADING_SLOTS\",\n start: date,\n end: dateToString(end)\n });\n fetchSlots({\n websiteId: appContext.settings.id,\n timeZoneId: interaction.time_zone_id,\n interactionId: interaction.external_id,\n startDate: start.getTime(),\n endDate: end.getTime(),\n initial_load: refs.current.initial_load\n })\n .then(data => {\n if (\"schedule_status\" in data) {\n if (\n refs.current.calendarVisible &&\n interaction.time_zone_id === refs.current.time_zone_id\n ) {\n actions.scheduleResponse(data);\n }\n } else {\n dispatch({\n type: \"SLOTS\",\n data,\n start: dateToString(start),\n end: dateToString(end)\n });\n }\n })\n .catch(() => {\n actions.scheduleResponse({\n schedule_status: \"error_while_fetching_slots\",\n schedule_fallback_message: \"Something went wrong\"\n });\n });\n refs.current.initial_load = false;\n },\n [\n actions,\n appContext.settings.id,\n interaction.external_id,\n interaction.time_zone_id\n ]\n );\n useEffect(() => dispatch({ type: \"RESET_SLOTS\" }), [\n interaction.time_zone_id\n ]);\n useEffect(() => {\n if (state.confirmAPIPromise == null) return;\n let cancelled = false;\n state.confirmAPIPromise\n .then(data => {\n if (cancelled) return;\n if (\n \"schedule_status\" in data &&\n data.schedule_status === \"error_double_booking\"\n ) {\n dispatch({\n type: \"DOUBLE_BOOKING\",\n message: data.schedule_fallback_message,\n buttonText: data.schedule_timeslot_fallback_button_text\n });\n } else {\n actions.scheduleResponse(data);\n }\n })\n .catch(() => {\n if (cancelled) return;\n actions.scheduleResponse({\n schedule_status: \"error_while_confirming\",\n schedule_fallback_message: \"Something went wrong\"\n });\n });\n return () => {\n cancelled = true;\n };\n }, [actions, state.confirmAPIPromise]);\n let shouldRenderheading: boolean = true;\n let content: React.ReactNode = null;\n if (interaction.schedule_status === \"error_while_fetching_slots\") {\n content = ;\n } else if (\n interaction.schedule_status === \"error_while_confirming\" ||\n interaction.schedule_status === \"error_while_blocking_time\"\n ) {\n content = (\n \n );\n } else if (interaction.schedule_confirm_data) {\n shouldRenderheading = false;\n content = (\n \n );\n } else if (appContext.state !== ConversationState.Active) {\n content = ;\n } else if (state.doubleBooking) {\n content = (\n \n );\n } else if (state.selectedSlot) {\n content = (\n {\n dispatch({ type: \"SELECT_SLOT\", slot: null });\n dispatch({\n type: \"BLOCK_SLOT\",\n data: \"\"\n });\n }}\n smsConsent={() => {\n state.smsChecked\n ? dispatch({ type: \"SET_SMS\", value: false })\n : dispatch({ type: \"SET_SMS\", value: true });\n }}\n isChecked={state.smsChecked}\n blockTrackingId={state.blockTrackingId}\n />\n );\n } else if (last) {\n refs.current.calendarVisible = true;\n content = (\n \n );\n }\n return (\n
    \n
    \n {shouldRenderheading && (\n

    \n \n {interaction.interaction_text}\n \n \n | {interaction.schedule_action_event_type_meeting_length} minutes\n \n

    \n )}\n {content}\n
    \n
    \n );\n}\n\nexport default React.memo(ScheduleAction);\n","import React, { useContext, useEffect } from \"react\";\nimport { LIVE_CHAT_CHANNEL } from \"src/constants\";\nimport {\n AppContext,\n SocketServiceContext,\n ConversationContext\n} from \"src/AppContext\";\nimport { Context } from \"../../../../../utils/context.service\";\nimport { liveChatColours } from \"src/constants\";\n\nimport { HandOff, Message } from \"src/interaction.interface\";\n// Enable this for development only\n// import {\n// IConversation,\n// OhLiveChat,\n// IMessage,\n// INotification\n// } from \"src/live-chat-util\";\nimport {\n IConversation,\n OhLiveChat,\n IMessage,\n INotification\n} from \"@oncehub/live-chat-util\";\nconst sound = require(\"../../../../../assets/sound/pingSound.wav\");\n\nlet liveChatObj: OhLiveChat;\nlet timeoutInterval: NodeJS.Timeout;\nlet is_mount = true;\nlet abandonedTimeoutInterval: NodeJS.Timeout;\n\ninterface ILiveChatActionProps {\n last: boolean;\n interaction: HandOff;\n}\n\nfunction LiveChatActionComponent({ interaction, last }: ILiveChatActionProps) {\n const appContext = useContext(AppContext);\n const socket = useContext(SocketServiceContext);\n let liveChatUsers = appContext.liveChatUsers || {};\n const { messages } = useContext(ConversationContext);\n\n useEffect(() => {\n return () => {\n if (liveChatObj) {\n liveChatObj.unSubscribeMessages(\n appContext.accountId,\n appContext.conversationId\n );\n liveChatObj.unSubscribeNotifications(appContext.accountId);\n liveChatObj.unSubscribeToTypingStatus(\n appContext.accountId,\n appContext.conversationId\n );\n }\n is_mount = false;\n if (timeoutInterval) {\n clearInterval(timeoutInterval);\n }\n };\n }, []);\n\n const initLiveChat = async (authToken: string) => {\n try {\n let accountId = appContext.accountId;\n let conversationId = appContext.conversationId;\n is_mount = true;\n liveChatObj = new OhLiveChat(\n {\n apiKey: process.env.REACT_APP_FIREBASE_API_KEY || \"\",\n authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN || \"\",\n databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL || \"\",\n projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID || \"\",\n storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET || \"\",\n messagingSenderId:\n process.env.REACT_APP_FIREBASE_MESSAGEING_SENDER_ID || \"\",\n appId: process.env.REACT_APP_FIREBASE_APP_ID || \"\",\n measurementId: process.env.REACT_FIREBASE_MEASUREMENT_ID || \"\"\n },\n authToken || \"\"\n );\n\n await liveChatObj.init();\n\n const liveChatConversation = (await liveChatObj.getConversationDetail(\n accountId,\n conversationId\n )) as IConversation;\n\n if (!liveChatConversation) {\n const conversation: IConversation = {\n id: conversationId,\n contactId: interaction.contact.id,\n timeout: interaction.timeout_period,\n status: \"initiated\",\n acceptedBy: \"\",\n color:\n liveChatColours[Math.floor(Math.random() * liveChatColours.length)],\n lastMessage: {\n type: \"text_message\",\n text: messages.length\n ? messages[messages.length - 1].data[\"interaction_text\"]\n : \"\",\n userType:\n messages[messages.length - 1].sent_by == \"bot\"\n ? \"Bot_Agent\"\n : \"Bot_Visitor\",\n contactId: \"CTC-1234\"\n },\n bot: {\n slug: appContext.bot.id || \"\",\n pageUrl: Context.getInstance().pageUrl,\n name: appContext.bot.name || \"\",\n pageTitle: Context.getInstance().pageTitle\n },\n totalMessageCount: 0,\n messageReadState: null,\n isTyping: { [interaction.contact.id]: false }\n };\n // Get all the available agents and send available users to be added to unassigned permissions\n liveChatObj.createConversation(\n accountId,\n conversation,\n interaction.online_users\n );\n timeoutInterval = setInterval(() => {\n if (is_mount) {\n socket.liveChatTimeout();\n }\n clearInterval(timeoutInterval);\n }, interaction.timeout_period * 1000);\n liveChatObj.createContact(accountId, interaction.contact);\n sendMessageHistory();\n // Get all the available agents and notify `request` only to available users\n interaction.online_users.forEach(userId => {\n liveChatObj.notifyOnlineUsers(userId, accountId, conversationId);\n });\n }\n if (liveChatConversation) {\n setLiveChatHistory(\n accountId,\n conversationId,\n liveChatConversation.messageReadState\n ? liveChatConversation.messageReadState[interaction.contact.id]\n : 0\n );\n liveChatObj.updateIsTyping(\n liveChatConversation.contactId,\n accountId,\n conversationId,\n false\n );\n if (!liveChatConversation.acceptedBy) {\n timeoutInterval = setInterval(() => {\n if (is_mount) {\n socket.liveChatTimeout();\n }\n clearInterval(timeoutInterval);\n }, new Date(liveChatConversation.creationTime || \"\").getTime() + interaction.timeout_period * 1000 - new Date().getTime());\n } else {\n socket.liveChatAccepted();\n socket.setLiveChatOwner(liveChatConversation.acceptedBy);\n liveChatObj.subscribeToTypingStatus(\n accountId,\n conversationId,\n onTypingStatusChanged(liveChatConversation.acceptedBy)\n );\n }\n }\n\n liveChatObj.subscribeMessages(\n accountId,\n conversationId,\n liveChatResponseForWidget\n );\n liveChatObj.subscribeNotifications(\n accountId,\n liveChatNotificationHandler\n );\n } catch (e) {\n // Continuing conversation if there is any error in live chat\n socket.nextInteraction();\n }\n return liveChatObj;\n };\n\n async function setLiveChatHistory(accountId, conversationId, readUpTo) {\n const messageHistory: Message[] = [];\n const allLiveChatMessages = (await liveChatObj.getAllMessages(\n accountId,\n conversationId\n )) as any;\n const keys = Object.keys(allLiveChatMessages);\n for (let i = 0; i < keys.length; i++) {\n const message = allLiveChatMessages[keys[i]];\n if (message.userType === \"Admin\") {\n if (liveChatUsers[message.userId]) {\n message.user = liveChatUsers[message.userId];\n } else {\n const userDetail = await liveChatObj.getUserDetail(\n appContext.accountId,\n message.userId\n );\n liveChatUsers[message.userId] = userDetail;\n message.user = userDetail || {};\n }\n messageHistory.push({\n sent_by: \"bot\",\n user_name: \"Admin\",\n id: randomId(),\n is_read:\n i < readUpTo || message.type === \"request_accepted\" ? true : false,\n data: {\n interaction_text: message.text,\n interaction_type: \"question\",\n question_type: \"text\",\n user: message.user,\n is_live_chat_notification: message.type === \"request_accepted\",\n external_id: \"\",\n contact_field_id: \"\",\n contact_field_type: 0\n },\n interaction_time: new Date().toISOString()\n });\n } else if (message.userType === \"Visitor\") {\n messageHistory.push({\n sent_by: \"contact\",\n user_name: \"Visitor\",\n id: randomId(),\n is_read: true,\n data: {\n text: message.text\n },\n interaction_time: new Date().toISOString()\n });\n }\n }\n socket.liveChatHistory(\n messageHistory,\n liveChatUsers,\n messageHistory.length ? LIVE_CHAT_CHANNEL : \"\"\n );\n }\n\n function randomId(): string {\n return (\n ((Math.random() * 1073741824) >>> 0).toString(36) +\n ((Math.random() * 1073741824) >>> 0).toString(36)\n );\n }\n\n const sendMessageHistory = () => {\n let accountId = appContext.accountId;\n let conversationId = appContext.conversationId;\n // save previous message before Live Chat\n let oldMessageArray = [] as any;\n let messageObject: IMessage;\n messages.forEach((message: any) => {\n let sentByMessage: any =\n message.sent_by === \"contact\" ? \"Bot_Visitor\" : \"Bot_Agent\";\n if (\n message.data.image_url &&\n message.data.message_type === \"image_message\"\n ) {\n messageObject = {\n type: message.data.message_type,\n userType: sentByMessage,\n contactId: \"test\",\n image_url: message.data.image_url,\n creationTime: message.interaction_time\n };\n oldMessageArray.push(messageObject);\n } else if (\n message.data.image_url &&\n message.data.message_type === \"url\"\n ) {\n messageObject = {\n type: message.data.message_type,\n userType: sentByMessage,\n contactId: \"test\",\n url: message.data.url,\n image_url: message.data.image_url,\n title: message.data.title,\n creationTime: message.interaction_time\n };\n oldMessageArray.push(messageObject);\n } else if (\n message.data.document_url &&\n message.data.message_type === \"document_message\"\n ) {\n messageObject = {\n type: message.data.message_type,\n userType: sentByMessage,\n contactId: \"test\",\n document_url: message.data.document_url,\n title: message.data.title,\n creationTime: message.interaction_time\n };\n oldMessageArray.push(messageObject);\n } else if (\n message.data.video_mp4 &&\n message.data.message_type === \"video_message\"\n ) {\n messageObject = {\n type: message.data.message_type,\n userType: sentByMessage,\n contactId: \"test\",\n video_mp4: message.data.video_mp4,\n video_ogv: message.data.video_ogv,\n creationTime: message.interaction_time\n };\n oldMessageArray.push(messageObject);\n } else if (message.data.action_type === \"schedule\") {\n messageObject = {\n type: message.data.action_type,\n userType: sentByMessage,\n contactId: \"test\",\n contact_info: message.data.contact_info,\n interaction_text: message.data.interaction_text,\n time_zone_id: message.data.time_zone_id,\n schedule_fallback_message: message.data.schedule_fallback_message,\n schedule_action_event_type_meeting_length:\n message.data.schedule_action_event_type_meeting_length,\n schedule_status: message.data.schedule_status,\n schedule_confirmation_title: message.data.schedule_confirmation_title,\n schedule_confirmation_button:\n message.data.schedule_confirmation_button,\n schedule_sms_notification: message.data.schedule_sms_notification,\n schedule_sms_opt_in_text: message.data.schedule_sms_opt_in_text,\n creationTime: message.interaction_time\n };\n if (message.data.schedule_confirm_data) {\n messageObject.schedule_confirm_data =\n message.data.schedule_confirm_data;\n }\n oldMessageArray.push(messageObject);\n } else {\n messageObject = {\n type: \"text_message\",\n userType: sentByMessage,\n contactId: \"test\",\n text: message.data.interaction_text\n ? message.data.interaction_text\n : message.data.text,\n creationTime: message.interaction_time\n };\n oldMessageArray.push(messageObject);\n }\n });\n liveChatObj.sendMessageHistory(accountId, conversationId, oldMessageArray);\n };\n\n const liveChatResponseForWidget = async message => {\n if (message.type === \"end_chat\" || message.type === \"abandoned_chat\") {\n clearAbandonedTimer();\n } else {\n resetAbandonedTimer();\n }\n if (message.userType === \"Admin\") {\n // Fetch user's information\n try {\n const audio = new Audio(sound.default);\n audio.play();\n } catch (error) {\n console.log(error);\n }\n if (liveChatUsers[message.userId]) {\n message.user = liveChatUsers[message.userId];\n } else {\n const userDetail = await liveChatObj.getUserDetail(\n appContext.accountId,\n message.userId\n );\n liveChatUsers[message.userId] = userDetail;\n message.user = userDetail || {};\n }\n socket.liveChatResponse(\n { content: message.text },\n message,\n liveChatUsers\n );\n } else {\n socket.liveChatAnswer(\n { content: message.text },\n LIVE_CHAT_CHANNEL,\n liveChatUsers\n );\n }\n };\n\n function onTypingStatusChanged(ownerId) {\n return data => {\n if (data && data.val()) {\n socket.updateLiveChatUserTypingState(data.val()[ownerId] || false);\n }\n };\n }\n\n function setAbandonedTimer() {\n abandonedTimeoutInterval = setInterval(() => {\n socket.timeout();\n clearInterval(abandonedTimeoutInterval);\n }, appContext.bot.session_timeout);\n }\n\n function resetAbandonedTimer() {\n clearInterval(abandonedTimeoutInterval);\n setAbandonedTimer();\n }\n\n function clearAbandonedTimer() {\n clearInterval(abandonedTimeoutInterval);\n }\n\n const liveChatNotificationHandler = (notification: INotification) => {\n if (notification.conversationId === appContext.conversationId) {\n switch (notification.type) {\n case \"request_accepted\":\n clearInterval(timeoutInterval);\n socket.liveChatAccepted();\n socket.setLiveChatOwner(notification.userId);\n liveChatObj.subscribeToTypingStatus(\n appContext.accountId,\n appContext.conversationId,\n onTypingStatusChanged(notification.userId)\n );\n setAbandonedTimer();\n break;\n default:\n break;\n }\n }\n };\n\n useEffect(() => {\n if (!last) return; // If live interaction is the last message in conversation\n async function setLiveChatObj() {\n if (!process.env.REACT_APP_FIREBASE_DATABASE_URL) {\n console.log(\n \"Firebase credentials are not set. Not initiating live chat!!\"\n );\n return;\n }\n const liveChatObj = await initLiveChat(interaction.contact[\"auth_token\"]);\n socket.initLiveChat(liveChatObj);\n socket.setContactId(interaction.contact.id);\n }\n setLiveChatObj();\n }, [socket]);\n\n return (\n 7\n ? \"live-chat-action chat-message chat-message-align-left bg-primary text-primary border-primary\"\n : \"live-chat-action chat-message bg-primary text-primary border-primary\"\n }\n >\n {interaction.interaction_text}\n \n );\n}\n\nexport default React.memo(LiveChatActionComponent);\n","import * as React from \"react\";\n\ninterface IRequireConsentProps {\n bodyText: string;\n title: string;\n link: string;\n linkText: string;\n id: string;\n}\n\nexport class RequireConsent extends React.PureComponent<\n IRequireConsentProps,\n any\n> {\n consentRef: React.RefObject = React.createRef();\n\n render() {\n return (\n \n \n {this.props.title}\n \n {this.props.bodyText}\n \n {this.props.link && this.props.linkText && (\n \n {this.props.linkText}\n \n )}\n \n \n );\n }\n}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React from \"react\";\nimport \"./require-consent.scss\";\n\ninterface IConsentButtonsProps {\n onMessageSent: (message: string) => void;\n noText: string;\n yesText: string;\n}\n\ninterface IConsentButtonsState {\n consented: boolean;\n}\n\nexport class ConsentButtons extends React.Component<\n IConsentButtonsProps,\n IConsentButtonsState\n> {\n readonly state: IConsentButtonsState = {\n consented: false\n };\n\n componentDidMount() {\n const requireConsent = document.querySelector(\".require-consent\");\n if (requireConsent) {\n const messageContainer = requireConsent.closest(\".message-container\");\n if (messageContainer) {\n messageContainer.scrollIntoView();\n }\n }\n }\n onConsentClick = (consentText: string) => {\n this.props.onMessageSent(consentText);\n this.setState({\n consented: true\n });\n };\n render() {\n return (\n !this.state.consented && (\n \n \n {this.props.yesText}\n \n \n {this.props.noText}\n \n \n )\n );\n }\n}\n","import React, { useState, useContext } from \"react\";\nimport { TimezonePopup } from \"src/widget-container/common-components/timezone-popup/timezone-popup\";\nimport { DEFAULT_TIMEZONE_ID } from \"src/widget-container/constants\";\nimport { SocketServiceContext, AppContext } from \"src/AppContext\";\nimport { ConversationState } from \"src/constants\";\n\nimport \"./timezone-question.scss\";\n\nexport interface ITimezoneQuestionProps {\n text: string;\n buttonText: string;\n disabled: boolean;\n}\n\nfunction TimeZoneQuestion(props: ITimezoneQuestionProps) {\n const actions = useContext(SocketServiceContext);\n const disabled =\n useContext(AppContext).state !== ConversationState.Active || props.disabled;\n const [modal, showModal] = useState(false);\n const onClosePopup = (timezoneId?: string, timezoneName?: string) => {\n showModal(false);\n if (!timezoneId || !timezoneName) return;\n actions.updateTimezone(timezoneId);\n actions.answer({\n content: timezoneName,\n time_zone_id: timezoneId\n });\n };\n return (\n \n

    {props.text}

    \n showModal(true)}\n >\n {props.buttonText}\n \n {!disabled && modal && (\n \n )}\n
    \n );\n}\n\nexport default React.memo(TimeZoneQuestion);\n","export class Timeago {\n static get = (input: number, allowFuture: boolean = false): string => {\n const substitute = (stringOrFunction: any, num: number, strings: any) => {\n const str = Timeago.isFunction(stringOrFunction)\n ? stringOrFunction(num, dateDifference)\n : stringOrFunction;\n const value = (strings.numbers && strings.numbers[num]) || num;\n return str.replace(/%d/i, value);\n };\n const nowTime = new Date().getTime();\n const date = new Date(input).getTime();\n // refreshMillis= 6e4, //A minute\n\n const timestrings = {\n day: \"a day\",\n days: \"%d days\",\n hour: \"an hour\",\n hours: \"%d hours\",\n minute: \"a minute\",\n minutes: \"%d minutes\",\n month: \"a month\",\n months: \"%d months\",\n prefixAgo: null,\n prefixFromNow: null,\n seconds: \"just now\",\n suffixAgo: \"ago\",\n suffixFromNow: \"from now\",\n wordSeparator: undefined,\n year: \"a year\",\n years: \"%d years\"\n };\n const dateDifference = nowTime - date;\n let words;\n const seconds = Math.abs(dateDifference) / 1000;\n const minutes = seconds / 60;\n const hours = minutes / 60;\n const days = hours / 24;\n const years = days / 365;\n const separator =\n timestrings.wordSeparator === undefined ? \" \" : timestrings.wordSeparator;\n\n // var timestrings = this.settings.timestrings;\n let prefix = timestrings.prefixAgo;\n let suffix = timestrings.suffixAgo;\n\n if (allowFuture) {\n if (dateDifference < 0) {\n prefix = timestrings.prefixFromNow;\n suffix = timestrings.suffixFromNow;\n }\n }\n\n words =\n (seconds < 45 &&\n substitute(timestrings.seconds, Math.round(seconds), timestrings)) ||\n (seconds < 90 && substitute(timestrings.minute, 1, timestrings)) ||\n (minutes < 45 &&\n substitute(timestrings.minutes, Math.round(minutes), timestrings)) ||\n (minutes < 90 && substitute(timestrings.hour, 1, timestrings)) ||\n (hours < 24 &&\n substitute(timestrings.hours, Math.round(hours), timestrings)) ||\n (hours < 42 && substitute(timestrings.day, 1, timestrings)) ||\n (days < 30 &&\n substitute(timestrings.days, Math.round(days), timestrings)) ||\n (days < 45 && substitute(timestrings.month, 1, timestrings)) ||\n (days < 365 &&\n substitute(timestrings.months, Math.round(days / 30), timestrings)) ||\n (years < 1.5 && substitute(timestrings.year, 1, timestrings)) ||\n substitute(timestrings.years, Math.round(years), timestrings);\n\n return words === \"just now\"\n ? [prefix, words].join(separator)\n : [prefix, words, suffix].join(separator);\n // conditional based on optional argument\n // if (somethingElse) {\n // out = out.toUpperCase();\n // }\n // return out;\n };\n\n static isFunction = (functionToCheck: any) => {\n return (\n functionToCheck &&\n {}.toString.call(functionToCheck) === \"[object Function]\"\n );\n };\n}\n","import React, { useContext } from \"react\";\nimport { Timeago } from \"src/utils/timeago\";\nimport {\n AppContext,\n ConversationContext,\n SocketServiceContext\n} from \"src/AppContext\";\nimport { ConversationState } from \"../../../../constants\";\nimport { IUser } from \"@oncehub/live-chat-util\";\n\ninterface IChatTimestampProps {\n sentBy: \"bot\" | \"contact\" | \"agent\";\n time: number;\n is_read: boolean;\n}\n\nfunction ChatTimestamp(props: IChatTimestampProps) {\n const botName = useContext(AppContext).settings.botName;\n const { liveChatUsers, liveChatOwnerId } = useContext(AppContext);\n const liveChatOwner: IUser =\n liveChatOwnerId && liveChatUsers ? liveChatUsers[liveChatOwnerId] : null;\n return (\n

    \n {props.sentBy === \"bot\" && (\n <>\n {botName}, {Timeago.get(props.time)}\n \n )}\n {props.sentBy === \"agent\" && (\n <>\n {liveChatOwner.firstName}, {Timeago.get(props.time)}\n \n )}\n {props.sentBy === \"contact\" && (\n \n )}\n

    \n );\n}\n\nfunction ContactTimestamp(props: { time: number; is_read: boolean }): any {\n const failed = useContext(ConversationContext).messageFailed;\n const conversationState = useContext(AppContext).state;\n const actions = useContext(SocketServiceContext);\n if (props.is_read) {\n return \"Delivered\" + Timeago.get(props.time);\n } else if (failed) {\n if (conversationState === ConversationState.Finished) {\n return (\n <>\n \n Sending failed\n \n \n );\n } else {\n return (\n <>\n \n Sending failed…\n {\" \"}\n \n Click to retry\n \n \n );\n }\n } else {\n return \"Sending...\";\n }\n}\n\nexport default React.memo(ChatTimestamp);\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React from \"react\";\n\nimport \"../require-consent/require-consent.scss\";\n\ninterface IViewAgainButtonProps {\n onMessageSent: (message: string) => void;\n viewAgainText: string;\n}\n\ninterface IViewAgainButtonState {\n viewed: boolean;\n}\n\nexport class ViewAgainButton extends React.Component<\n IViewAgainButtonProps,\n IViewAgainButtonState\n> {\n readonly state: IViewAgainButtonState = {\n viewed: false\n };\n\n componentDidMount() {\n const requireConsent = document.querySelector(\".require-consent\");\n if (requireConsent) {\n const messageContainer = requireConsent.closest(\".message-container\");\n if (messageContainer) {\n messageContainer.scrollIntoView();\n }\n }\n }\n onConsentClick = (consentText: string) => {\n this.props.onMessageSent(consentText);\n this.setState({\n viewed: true\n });\n };\n render() {\n return (\n !this.state.viewed && (\n \n \n {this.props.viewAgainText}\n \n \n )\n );\n }\n}\n","import * as React from \"react\";\n\ninterface IDenyConsentProps {\n bodyText: string;\n id: string;\n}\n\nexport class DenyConsent extends React.PureComponent {\n consentRef: React.RefObject = React.createRef();\n\n render() {\n return (\n \n {this.props.bodyText}\n \n );\n }\n}\n","import React, { useState, useContext, useLayoutEffect, useEffect } from \"react\";\nimport { Message, Interaction, TextQuestion } from \"src/interaction.interface\";\nimport { AppContext } from \"src/AppContext\";\nimport { Actions, Answer } from \"src/actions\";\n\nimport \"./widget-message.scss\";\nimport InteractionSingleSelect from \"./message-helpers/interaction-single-select/interaction-single-select\";\nimport InteractionMultiSelect from \"./message-helpers/interaction-multi-select/interaction-multi-select\";\nimport TextMessageComponent from \"./message-helpers/text-message/text-message\";\nimport { VideoMessage } from \"./message-helpers/video-message/video-message\";\nimport { ImageMessage } from \"./message-helpers/image-message/image-message\";\nimport { DocumentMessage } from \"./message-helpers/document-message/document-message\";\nimport { MessageUrl } from \"./message-helpers/url-message/url-message\";\nimport ScheduleAction from \"./action-interactions/schedule-action/schedule-action\";\nimport LiveChatAction from \"./action-interactions/live-chat-action/live-chat-action\";\nimport { RequireConsent } from \"./action-interactions/require-consent/require-consent\";\nimport { ConsentButtons } from \"./action-interactions/require-consent/consent-buttons\";\nimport TimezoneQuestion from \"./question-interactions/timezone-question/timezone-question\";\nimport ChatTimestamp from \"./chat-timestamp/chat-timestamp\";\nimport { ViewAgainButton } from \"./action-interactions/deny-consent/view-again-button\";\nimport { DenyConsent } from \"./action-interactions/deny-consent/deny-consent\";\nimport { ConversationState } from \"src/constants\";\n\ninterface Props {\n last: boolean;\n data: Message;\n botIcon: string;\n socket: Actions;\n showTimestamp: boolean;\n}\n\ninterface SelectProps {\n message: Message;\n sendAnswer: (answer: Answer) => void;\n setSticky: (sticky: boolean) => void;\n}\n\nfunction Select({ message, sendAnswer, setSticky }: SelectProps): any {\n const appContext = useContext(AppContext);\n const [resizeCount, setResizeCount] = useState(0);\n const open = appContext.open && appContext.state === ConversationState.Active;\n let hasContent = false;\n useEffect(() => {\n if (!open) return;\n const listener = () => setResizeCount(count => count + 1);\n window.addEventListener(\"resize\", listener);\n return () => window.removeEventListener(\"resize\", listener);\n }, [open]);\n useLayoutEffect(() => {\n if (!open || !hasContent) return;\n const container = document.getElementById(\"message-scroll-container\");\n const messageContainer = document.getElementById(message.id);\n if (container === null || messageContainer === null) return;\n setSticky(messageContainer.clientHeight / container.clientHeight < 0.6);\n }, [open, message.id, hasContent, setSticky, resizeCount]);\n useEffect(() => () => setSticky(false), [setSticky]);\n if (!open) return null;\n if (message.sent_by !== \"bot\") {\n return null;\n }\n const interaction = message.data as Interaction;\n if (interaction.interaction_type !== \"question\") return null;\n if (interaction.question_type === \"single_choice\") {\n hasContent = interaction.multi_choice_type === \"quick_replies\";\n return (\n hasContent && (\n \n sendAnswer({\n content: option.option_text,\n interaction_option_id: option.id,\n content_object_array: [\n {\n id: option.field_library_option_id,\n value: option.option_text\n }\n ]\n })\n }\n />\n )\n );\n } else if (interaction.question_type === \"multi_choice\") {\n hasContent = interaction.multi_choice_type === \"quick_replies\";\n return (\n interaction.multi_choice_type === \"quick_replies\" && (\n \n sendAnswer({\n content: options.map(option => option.option_text).join(\", \"),\n multi_interaction_options_answer_ids: options.map(\n option => option.id\n ),\n content_object_array: options.map(option => {\n return {\n id: option.field_library_option_id,\n value: option.option_text\n };\n })\n })\n }\n min={interaction.multi_choice_minimum}\n max={interaction.multi_choice_maximum}\n options={interaction.interaction_options}\n />\n )\n );\n } else {\n return null;\n }\n}\n\nfunction renderVideoMessage(id: string, video_mp4: string, video_ogg: string) {\n return (\n
    \n \n
    \n );\n}\n\nfunction renderImageMessage(id: string, src: string, title: null | string) {\n return ;\n}\n\nfunction renderDocumentMessage(id: string, url: string, title: null | string) {\n return ;\n}\n\nfunction renderUrlMessage(\n id: string,\n url: string,\n imageUrl: string | null,\n title: string\n) {\n return (\n \n );\n}\n\nfunction renderMessageBody(\n message: Message,\n last: boolean,\n preview: boolean\n): JSX.Element {\n if (message.sent_by === \"contact\") {\n return (\n \n );\n }\n const interaction = message.data;\n if (\"text\" in interaction) {\n return (\n \n );\n }\n if (interaction.interaction_type === \"message\") {\n if (interaction.message_type === \"video_message\") {\n return renderVideoMessage(\n message.id,\n interaction.video_mp4,\n interaction.video_ogv\n );\n } else if (interaction.message_type === \"image_message\") {\n return renderImageMessage(\n message.id,\n interaction.image_url,\n interaction.title\n );\n } else if (interaction.message_type === \"document_message\") {\n return renderDocumentMessage(\n message.id,\n interaction.document_url,\n interaction.title\n );\n } else if (interaction.message_type === \"url\") {\n return renderUrlMessage(\n message.id,\n interaction.url,\n interaction.image_url,\n interaction.title\n );\n } else {\n return (\n \n );\n }\n } else if (interaction.interaction_type === \"question\") {\n if (interaction.question_type === \"time_zone\") {\n return (\n \n );\n } else {\n return (\n \n );\n }\n } else {\n if (interaction.action_type === \"schedule\") {\n return ;\n } else if (interaction.action_type === \"ask_consent\") {\n return (\n \n );\n } else if (interaction.action_type === \"deny_consent\") {\n return (\n \n );\n } else if (interaction.action_type === \"end_conversation\") {\n return (\n \n );\n } else if (interaction.action_type === \"hand_off\") {\n if (\n preview &&\n process.env.REACT_APP_PREVIEW_LIVE_CHAT_TOGGLE === \"true\"\n ) {\n return (\n \n );\n } else {\n return ;\n }\n } else {\n throw new Error(\"Unknown message\");\n }\n }\n}\n\nfunction MessageExtras({\n message,\n sendAnswer\n}: {\n message: Message;\n sendAnswer: (answer: Answer) => void;\n}) {\n if (message.sent_by === \"contact\") return null;\n const interaction = message.data as Interaction;\n if (interaction.interaction_type !== \"action\") return null;\n if (interaction.action_type === \"ask_consent\") {\n return (\n sendAnswer({ content })}\n yesText={interaction.accept_button_text}\n />\n );\n } else if (interaction.action_type === \"deny_consent\") {\n return (\n sendAnswer({ content })}\n />\n );\n } else {\n return null;\n }\n}\n\nfunction twoDigits(x: number): string {\n return x > 9 ? x.toString() : \"0\" + x.toString();\n}\n\nfunction messageTitle(message: Message): string | undefined {\n if (message.sent_by === \"bot\") {\n const interaction = message.data as Interaction;\n if (interaction.interaction_type === \"action\") {\n if (interaction.action_type === \"schedule\") return;\n }\n }\n const date = new Date(message.interaction_time);\n const startOfDay = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n const hours = date.getHours();\n const time = `${twoDigits(\n hours === 0 ? 12 : hours > 12 ? hours - 12 : hours\n )}:${twoDigits(date.getMinutes())} ${hours >= 12 ? \"PM\" : \"AM\"}`;\n if (date.getTime() < startOfDay.getTime()) {\n return date.toLocaleDateString() + \" \" + time;\n } else {\n return time;\n }\n}\n\nfunction endChatWithoutMessage(data): boolean {\n const interaction = data.data;\n if (interaction.action_type === \"end_conversation\") {\n const text = interaction.interaction_text;\n if (text === null || text === undefined || text === \"\") {\n return true;\n }\n }\n return false;\n}\n\nfunction liveChatAgentAcceptsMessage(message) {\n return (\n
  • \n

    \n {message.user && message.user.firstName} has joined the\n conversation\n

    \n
  • \n );\n}\n\nfunction liveChatPreviewMessage() {\n return (\n
  • \n

    \n \n If an agent is available, live chat will happen here. In this preview,\n no agent is available.\n \n

    \n
  • \n );\n}\n\nfunction getNameInitials(firstName: string, lastName: string) {\n let f = firstName ? firstName[0] : \"\";\n let l = lastName ? lastName[0] : \"\";\n return (f + l).toUpperCase();\n}\n\nfunction WidgetMessage({ data, last, botIcon, socket, showTimestamp }: Props) {\n const appContext = useContext(AppContext);\n const message = data.data as TextQuestion;\n const [sticky, setSticky] = useState(false);\n const isHandOffInteraction =\n data.data[\"interaction_type\"] === \"action\" &&\n data.data[\"action_type\"] === \"hand_off\" &&\n appContext.preview;\n if (\n last &&\n isHandOffInteraction &&\n process.env.REACT_APP_PREVIEW_LIVE_CHAT_TOGGLE === \"true\"\n ) {\n socket.nextInteraction();\n }\n if (\n message.interaction_type === \"question\" &&\n message.is_live_chat_notification\n ) {\n return liveChatAgentAcceptsMessage(message);\n }\n const select = last && (\n