{"version":3,"sources":["lang/locales/en_US.js","lang/locales/es_ES.js","lang/locales/zh-ZH.js","lang/locales/fr-FR.js","lang/locales/zh-HK.js","lang/locales/mi-MI.js","lang/locales/id_ID.js","lang/locales/hi_HI.js","lang/locales/af-AF.js","lang/locales/de-DE.js","lang/locales/ja-JA.js","lang/locales/ko-KO.js","lang/locales/th-TH.js","lang/locales/tl-TL.js","lang/locales/vi-VI.js","lang/locales/ar-AR.js","lang/locales/ru-RU.js","lang/locales/fi_FI.js","ChatBubble.js","Extensions/WebViewExtension/WebViewExtension.js","Extensions/WebViewExternalExtension/WebViewExternalExtension.js","Extensions/ChatSuggestionExtension/ChatSuggestionExtension.js","helpers/IntlMessages.js","ChatComponent/PersistentMenu.js","ChatComponent/PropertyPopup.js","lang/entries/en-US.js","lang/entries/es-ES.js","lang/entries/zh-ZH.js","lang/entries/fr-FR.js","lang/entries/zh-HK.js","lang/entries/mi-MI.js","lang/entries/mi.js","lang/entries/id-ID.js","lang/entries/hi-HI.js","lang/entries/af-AF.js","lang/entries/de-DE.js","lang/entries/ja-JA.js","lang/entries/ko-KO.js","lang/entries/th-TH.js","lang/entries/tl-TL.js","lang/entries/vi-VI.js","lang/entries/ar-AR.js","lang/entries/ru-RU.js","lang/index.js","lang/entries/fi-FI.js","ChatComponent/CookiePopup.js","BookingApp.js","ChatWindowTypingIndicator.js","ChatWindowParticipantTagger.js","ChatWindowCardAction.js","helpers/Translate.js","MsUiComponents/CustomHeroCardButtonCol.js","MsUiComponents/CustomHeroCardButtonRow.js","MsUiComponents/CustomHeroCard.js","Extensions/FileUploadExtension/FileUploadCard.js","MsUiComponents/CustomMessage.js","MsUiComponents/CustomVideoCard.js","Extensions/AttachmentMiddleware.js","ChatComponent/AmaduesAvailability.js","ChatComponent/MewsAvailability.js","ChatComponent/CheckAvailablity.js","ChatComponent/ServicePopup.js","ChatComponent/FeedbackPopup.js","Extensions/AutoCompleteExtension/AutoCompleteExtension.js","ChatComponent/ThumbFeedback.js","ChatWindow.js","ChatBubbleComponent/SildeBubble.js","ChatStore.js","index.js","Extensions/ChatAppExtensions.js","ChatApp.js"],"names":["module","exports","ChatBubble","props","handleMouseEnter","setState","hover","handleMouseLeave","state","nudgeavtar","botPosition","bubble_clicked","bind","nudge_clicked","hint_close","nudgeavtar_clicked","window","addEventListener","windowBuddbleMessage","event","data","startsWith","this","postMessage","onOpened","e","stopPropagation","hintClosed","msg","parent","undefined","botSettings","bubbleSettings","bubblePosition","mobile","alignInMobile","position","toLowerCase","sideInMobile","bottomInMobile","align","side","bottom","scrollAnimation","enabled","beforeAnimationTop","afterAnimationTop","disabledChatbot","className","onClick","currentNudge","eyeCatcher","messages","map","alt","src","url","fadeIn","style","backgroundColor","backGroundColor","color","textColor","paddingTop","backGroundColorHover","textColorHover","onMouseEnter","onMouseLeave","ReactHtmlParser","text","backgroundImage","urls","icon","Component","WebViewExtension","popUpHeight","title","webview","height","hideHeader","largeWindowHideHeader","findInputTimerId","setInterval","chatbox","document","getElementById","inputs","querySelectorAll","inputRegion","length","popUp","getElementsByClassName","clientHeight","clearInterval","close","windowMessage","params","split","x","decodeURIComponent","default_form","fetch","process","id","method","headers","Accept","then","response","json","form","name","oldProps","closing","setTimeout","api","setExtension","styling","containerStyling","messenger","animationName","top","padding","width","includes","colours","headerText","WebViewExternalExtension","webviewExt","isMobile","openInternalView","openExternalView","receiveWindowMessage","opened","closeExternalView","settings","mode","payload","JSON","stringify","ChatSuggestionExtension","searchTerm","bottomMargin","filteredSuggestions","maximised","suggestions","getSuggestionCallback","processUserInput","onSuggestionClicked","updateSuggestions","value","target","time","input","match","filtered","options","filter","suggestion","doesSuggestionMatch","exactMatch","find","synonyms","some","syn","term","sendActivity","type","question","borderColor","header","key","injectIntl","withRef","PersistentMenu","menuOpen","persistentMenu","handleMenuClick","persistentMenuEnabled","botSite","cookiesDetail","mindate","Date","getFullYear","useState","currentYear","MenuClick","itemType","items","BotSiteClick","item","itemIndex","callToActions","i","payLoad","menu","menuIndex","xmlns","fill","viewBox","fillRule","d","IntlMessages","version","preserveAspectRatio","transform","stroke","y","multilingual","href","PropertyPopup","setCheckAvailability","isCheckedAvailability","active","open_property_popup","pid","localStorage","getItem","property_state_store","bookingApp","rooms","adults","children","selectProperty","elem","selectedPid","setPropertyPopUp","forceUpdate","setItem","lStore","PROPERTYID","PROPERTYNAME","label","loadFormSetting","callbacks","getStore","dispatch","pname","close_property_popup","GetServiceAvailable","sendDates","toggle","open","close_pop","hotel","properties","property","dates","kids","room_app","index","EnLang","enMessages","locale","appLocaleData","EsLang","esMessages","ChLang","chMessages","FrLang","MiLang","miMessages","pluralRuleFunction","t","IdLang","HiLang","hiMessages","AfLang","DeLang","deMessages","JaLang","jaMessages","KoLang","koMessages","ThLang","thMessages","TlLang","tlMessages","ViLang","viMessages","ArLang","arMessages","RuLang","ruMessages","AppLocale","en","enLang","es","esLang","zh","chLang","fr","frLang","hk","twLang","mi","miLang","idLang","hi","hiLang","af","afLang","ar","arLang","de","deLang","ja","jaLang","ko","koLang","th","thLang","tl","tlLang","vi","viLang","ru","ruLang","fi","fiMessages","addLocaleData","CookiePopup","isOpen","onClose","content","border","borderRadius","customStyles","control","base","boxShadow","next","activeTyping","removeTypingIndicator","Object","values","messageList","querySelector","console","error","last","appendChild","tag","createElement","innerHTML","setAttribute","getTypingBox","addTypingIndicator","indicator","parentNode","removeChild","INTERVAL_TIMER","SAVE_FEEDBACK","ChatWindowParticipantTagger","botName","botImage","gid","iid","addParticipantTags","msChatwindow","messageBubbles","row","isFirst","isFirstOfBlock","alreadyHasTag","getUserTag","getBotTag","insertBefore","isLast","alreadyHasFeed","statusDiv","msgId","conId","elementName","markdownTextLen","feedback_response","btnShow","messageType","li","parentElement","bubbleWidth","isAdaptingCard","isZenDesk","childdiv","herocard","getAttribute","videocard","getBotFeedBack","classList","add","attecMsg","formMsg","groupForm","herocardCarousel","videocardCarousel","append","display","remove","getAssistantName","assistantDetail","assistantName","k","tags","tagBody","tagBodyResponse","tagFeedbackText","innerText","TanslateWasHelpFullText","likeButton","dislikeButton","orignalBtn","body","groupId","messageId","feedback","getOldFeed","parse","new_chat_state","getIndex","findIndex","push","feedback_popup","feedBackButton","action","cardAction","indexWebView","indexOf","jsonData","substring","webViewUrl","Translate","lang","setText","translationDone","setTranslationDone","useEffect","q","m","output","CustomHeroCardButtonCol","btn","heroButtonBackground","heroButtonText","heroButtonBackgroundHover","heroButtonTextHover","CustomHeroCardButtonRow","md","require","html","linkify","typographer","mila","use","matcher","config","attrs","rel","class","CustomHeroCard","showmore","showless","location","button","googleAnalytics","lastIndexOf","utmSource","utmMedium","substr","lastChild","scrollIntoView","behavior","block","servicePopup","addLinks","availblityForm","GroupId","PropertyId","Button","clickButton","Creator","roomId","SetId","productId","promoId","addonId","imageUrl","images","feedbackbody","webConfig","data-activity-id","data-con-id","conversationId","data-feedback","data-view-btn","replyToId","data-msg-type","cardActivitiesSummary","data-inzendesk","inZenDesk","openImage","renderInline","textAlign","textDecoration","cursor","fontSize","buttons","actionsRow","FileUploadCard","files","used","uploadRef","React","createRef","selectFile","filesChanged","uploadFiles","current","click","fileList","attachments","file","formData","FormData","uploadUrl","uploadR","ok","status","uploadId","replaceAll","contentType","activity","meta","isMulti","allowMultiple","accept","onChange","ref","multiple","f","CustomMessage","text-len","render","CustomVideoCard","card","allowFullScreen","media","toString","replace","AttachmentMiddleware","directLine","attachment","conversation","summary","months","Availability","currentDate","moment","format","AmaduesAvailability","integration","closeAvailblityForm","buttonColor","roomdata","promoCode","setPromoCode","roomTypeCode","setRoomTypeCode","setAdults","setChildren","nights","setNights","children_age","setChildren_age","ratePlanCode","setRatePlanCode","datesData","setDatesData","disableDays","setDisableDays","disableCheckInDate","setDisableCheckInDate","showModel","setShowModel","setDates","year","month","day","date","minimumDate","loading","setLoading","from","to","selectedDayRange","setSelectedDayRange","handleDisableDaysChange","fromDate","toDate","Channel","Id","handleFillCalender","elements","isCheckOutDate","obj","attributes","nodeValue","discount","rate","discountOnLowestMinRate","minRate","price","parseInt","Math","round","isAvailable","lst","statusCode","tax","leftButton","yearSelector","monthSelector","newDate","monthYear","adult_count","children_count","roomCode","endOf","preventDefault","subtract","startOf","ShowRatesSelectedRoom","propertyId","languageCode","result","providerRoomCode","calculateNights","startDate","endDate","start","end","dayCount","setDate","getDate","Input","handleRoomListChange","Row","Col","xs","disabledDays","night","fromDateStr","toDateStr","fromDateData","toDateData","renderFooter","background","margin","FormGroup","Label","bookingEngineUrl","childrenValue","childrenAge","arr","element","handleChangeChildrenAge","placeholder","childAge","bookingUrl","dateFormat","roomBookingEngineCode","hashIndex","slice","checkInDate","checkOutDate","childrens","creator","MewsAvailability","propertyCurrency","setRooms","availablePrice","setAvaialbelPrice","readyToBook","setReadyToBook","priceLoading","setPriceLoading","handleCheckAvailability","adultsCount","childrensCount","diff","query","selectedRate","reduce","prev","curr","roomAdults","roomCategoryAvailabilities","RoomCategoryAvailabilities","RoomOccupancyAvailabilities","details","AdultCount","ChildCount","Pricing","Price","AveragePerNight","availableRooms","AvailableRoomCount","remainingAdults","min","catch","err","CheckAvailablity","handleAdultsChange","handleChildrenChange","handlePromoCodeChange","submit","open_availblity_popup","BMB_Property_URL","currency","Found","ShowRates","documentElement","setProperty","l","language","ServicePopup","open_service_popup","close_serivce_popup","conversation_id","serviceData","setServiceData","SERVICES_URL","services","handleClickDetail","imageLink","backgroundPosition","backgroundSize","FeedbackPopup","setZchatFeedback","formSettings","conid","bearerToken","comments","inputData","setInputData","like","dislike","setColor","formSetting","setFormSetting","defaultForms","isLeaveMessageForm","leaveMessageFormId","handleSend","handleSkip","AutoCompleteExtension","self","ignoreClickOnMeElement","contains","ThumbFeedback","handleFeedBackResponse","handleCancelFeedbackResponse","changeleaveFeedbackMessage","phone","email","comment","inputdata","handleCancel","feedbackFormId","formname","getPlaceholder","handleChange","buttonStyle","isFeedbackForm","Form","onSubmit","handleSubmit","required","publicIp","styleOptions","bubbleBorderRadius","bubbleTextColor","bubbleBackground","bubbleFromUserBorderRadius","bubbleFromUserBackground","bubbleFromUserTextColor","sendBoxTextColor","sendBoxBorderTop","sendBoxBorderBottom","sendBoxButtonColor","sendBoxButtonColorOnFocus","sendBoxButtonColorOnHover","sendBoxPlaceholderColor","paddingWide","hideUploadButton","timestampColor","sendBoxBackground","bubbleBorderColor","bubbleFromUserBorderColor","suggestedActionLayout","suggestedActionHeight","suggestedActionBorderRadius","suggestedActionBorderWidth","suggestedActionBackground","suggestedActionTextColor","localeOptions","desc","code","ChatWindow","getName","getEn","c","statement","handleLinkClick","closest","isOpenModal","modalContent","closeModal","handleVisitorEmailChange","handleVisitorNameChange","handleVisitorPhoneNumerChange","val","str","charCodeAt","phoneNumber","handleVisitorCheckBoxChange","consentGiven","checked","hadleVisitorFirstNameChange","firstName","hadleVisitorLastNameChange","lastName","hadleVisitorZipCodeChange","zipCode","handleChangeLanguage","sendtobot","findLanguage","langLocale","language_state_store","persistentMenuData","menuItem","close_language_popup","open_language_popup","end_clicked","hide_bot_confirm","leaveFeedbackMessage","getMessageTranslate","a","leaveFeedback","leaveMessage","directline","v4","ip","cache","res","message","random","msgpayload","vid","sid","cid","toISOString","source","agentId","propertyStore","isServiceAvailable","setBubbleToShrinkIn","ask_close","menu_open","ask_bot_hide","visitorPopupState","languageOptions","sort","dynamicSort","open_ZChatfeedback_popup","bubble_type","availblityData","zChatfeedbackData","isButtonDisable","endChat","isCookiesHide","open_thumb_feedback","confirm_cookies","cookies_state_store","hideBot","close_bot_ask_hide","onClosed","bot_restartClick","menu_popup_open","menu_popup_Close","close_confirmed","endClicked","close_service_popup","OpenServicePopUp","popupclose_confirmed","closeClicked","refresh","refreshClicked","close_cancel","close_clicked","close_cardapp","card_app","close_roomapp","cookies_understood","setAvailblity","sendFeedbackZenDeskChat","cookies_details","cookiesURL","set_thumb_feedback_open","bob_site","poweredByURL","movetotop","els","scrollTo","save_visitor","user","visitor_state_store","link","assistantDetails","intervalId","sendButtonDiv","styleSheets","insertRule","closeIcon","closeIconHover","minimizeIcon","minimizeIconHover","sendIcon","sendIconHover","getdiv","inTwiliochat","features","fixedResponses","main","disableButton","outline","disabled","opacity","div_sendBoxTextCount","span","marginLeft","addOnUpsells","divcurated","getMainDiv","formdiv","createCuratedDiv","sortOrder","b","el","languages","langCode","selectedLang","bubbleType","ignoreClickOnMeElementVisitor","googleAnalyticsIntegration","prevProps","prevState","availblity","openZChat_popup","property_popup","autoDetect","bot_restart","cookiesData","cookies_data","currentAppLocale","store","inputEnabled","user_id","loadingLivechat","agentName","connectionError","inactivePopupOne","inactivePopupTwo","resize_full","resize_actual","myma_logosrc","isGreyScale","botBackground","botUser","botUserText","botBot","botBotText","hideSendBoxInMobile","hideTypingTextBox","hideSendBox","sendBoxButton","sendBoxText","sendBoxBottomBorder","sendBoxButtonFocus","sendBoxButtonHover","timeStamp","sendBoxPlaceHolder","suggestionBackground","suggestionText","createCssRules","customStyle","resize","transition","refreshIcon","hideRoomDetail","messengerSettings","formId","zIndex","paddingBottom","inactivePopUpWarning","role","aria-label","inactivePopUpSession","userID","typingIndicatorMiddleware","ChatWindowTypingIndicator","cardActionMiddleware","ChatWindowCardAction","attachmentMiddleware","extensions","_api","visitorPopup","visitorSettings","subTitle","fields","fIndex","field","bsSize","mandatory","CustomInput","checkboxText","clipRule","buttonText","isFooterHide","groupData","group","poweredByLogo","verticalAlign","webPoweredBy1","SildeBubble","iseffect","setIsEffect","setNudgeAvtar","dir","intervalOne","intervalTwo","BMB_LOG_URL","BMB_ROOMTYPE_URL","incomingActivity","enableChat","scrollChat","dl","getChatState","isRecentActivity","channelData","suggestionUi","suggestedActions","suggestionsPayload","now","liveChat","provider","startZenDeskChat","startGenesysPureCloudChat","startMewsChat","threadData","startAWSConnectChat","webView","webviewPayload","availabilityData","ChangeBotLanguage","token","tokenInterval","contentWindow","largeWindow","inputHint","showTypingTextBox","livechat","startLivechat","twiliochat","startTwiliochat","signalrchat","startSignalRchat","setAgentId","bmbLogMessage","isInTwiliochat","endTwilio","isInSignalRchat","endSignalRChat","getPID","getRoomTypes","showBookingForm","getGID","ari","applicable","timestamp","handled","makePayment","splice","filterAttachments","isInGenesysPureCloudChat","isInMewsChat","valueOf","outgoingBackChannelEvents","getIID","getAgentId","bmbLogMessageBot","AgentCheck","eventName","getDirectLineConversation","BMB_Conversation_URL","agentStatus","dispatchAgentOnlineEvents","outgoingActivity","hideTextCount","getBotSettings","clearTimeout","setInactivePopupOne","parseFloat","seconds","setInactivePopupTwo","liveChatSetings","getLiveChatSettings","noAgentOnline","AgentOnline","n","AgentOnlineNext","isInLivechat","channelId","sendMessage","customId","String","isInZendeskChat","zendesk","sendChatMsg","invoke","groupname","textMessage","mewsChatSettings","threadId","SendMewsMessage","genesysPureCloudChatSettings","messageIntegrationId","idType","SendMessageGenesysPureCloud","isInAWSConnectChat","AWS_CONNECT_REGION","amazonConnectTokenSettings","ConnectionCredentials","ConnectionToken","Content","ContentType","SendMessageAmazonConnect","extension","getExtension","TypeTwiliochat","sendTwilioTypingIndicator","sendZendeskTypingIndicator","sendSignalRTypingIndicator","SendTypingAmazonConnect","localStorageLanguage","LANGUAGE","predictiveSearch","keyword","domain","DOMAIN","importStore","stored","CHAT_STATE","activities","processStoredActivities","history","lastMessage","sendHistoryToZendesk","storeState","sendHistoryToGenesysPureCloud","SendChatHistoryMessageGenesysPureCloud","getChatStore","chatCallbacks","forceNewState","createStore","connectionStatus","setConnectionStatus","propertyName","propertyNameStorage","addScrollEvent","onConnect","setSuggestedActions","incomingLivechat","author","incomingTwiliochat","ParticipantRole","incomingAmazonConnectChat","incomingSignalchat","incomingZendeskchat","disableChat","endedLivechat","livechatTyping","twiliochatTyping","signalchatTyping","removeItem","disconnectChat","getState","parent_location","parent_title","parent_referrer","defaultOpen","previewMode","serviceview","ChatAppExtensions","chatApp","chatAppProps","GROUP_URL","PROPERTIES_URL","ChatApp","reinit","chatBindings","setInLivechat","setInTwiliochat","setInSignalRchat","closeInactivePopupOne","extensionName","callback","booking","liveChatSettings","available","hideRoom","showHideMoveToTop","loadedExtensions","OPENED","IDENTITY","CREDENTIALS","LIVECHAT_STARTED","GENESYS_CLOUD_STARTED","AWS_CONNECT_STARTED","AWS_CONNECT_THREAD","MEWS_CHAT_STARTED","MEWS_THREAD","COOKIES","EXTENSIONS","BOTCLICK","LIVECHATMESSAGESTAMP","LIVECHATCLIENT","VISITORDETAILS","ZENDESKGROUP","started","inLiveChat","createChatSessionStartUp","animation","bubbleToFadeIn","integrationSettings","blockChatbot","getAPI","visitorPopUp","inTwilioChat","inSignalRChat","twilioAccessToken","twilioChatId","signalRChatId","moveTop","botclick","inMewsChat","zendeskDepartment","zendeskChatNew","inGenesysPureCloudChat","genesysPureCloudSettings","inAwsConnect","amazonConnectToken","addThreadId","messageThreadId","openChatWindow","startConversation","log","prodata","load","scrollTop","scrollHeight","els1","show","hideInterval","detectedLang","botConversationId","page_title","identity","req","whiteListedIpAddresses","departmentId","userLang","navigator","userLanguage","defaultLanguage","level","reqProperties","resultProperties","finalResult","forEach","p","r","displayOrder","domains","priority","sortfinalResult","proid","o","groupCall","nudges","SideMenuItem","MenuData","menus","menuEnabled","MenuDataItem","sideItem","Storage","nudge","disabledInMobile","disabledInDesktop","delayInMillisecondsInMobile","delayInMilliseconds","clearTags","closeChat","destroy","closed","reload","Text","MessageThreadId","Identifier","twilioConversationId","endGenesysPureCloud","endAmazonConnect","recordClick","stop","createZchat","uid","Authorization","DirectLine","registerPageLoad","runNudges","ConnectParticipant","Type","tokenresponse","tokenJson","WebSocket","Websocket","Url","topic","responseMessage","uuid","zChat","account_key","accountKey","twilioConversionId","protocol","JsonHubProtocol","transport","HttpTransportType","WebSockets","LongPolling","logMessageContent","logger","LogLevel","Error","hubConnection","HubConnectionBuilder","withUrl","withHubProtocol","withAutomaticReconnect","build","info","recipient","on","identityBody","tokenResponse","twilioToken","accessToken","ConversationsClient","create","twilioClient","typing","sendTyping","department","preChat","visitorInfo","display_name","setVisitorInfo","newPage","zendeskDefaultDepartment","setVisitorDefaultDepartment","detail","getServingAgentsInfo","nick","queue_position","myInterval","myIntervalBusy","getConnectionStatus","zenDeskFunctions","MessageThreads","getChatHistoryForAgent","displayName","region","ParticipantToken","ws","initialMessage","topics","send","DisplayName","LivechatSDK","license","agent","setVisitorData","pageUrl","pageTitle","customProperties","ReferringWebsite","GroupID","IntegrationID","VisitorID","SessionID","ConversationID","getPredictedAgent","sendChatStore","txt","ConnectionStatus","FailedToConnect","ExpiredToken","Ended","sessionId","integrationId","hide_bot","decodeURL","referrer","preview","custom","evt","ReactDOM"],"mappings":"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","file":"static/js/main.28fb30af.chunk.js","sourcesContent":["module.exports = {\n  /* 01.General */\n  \"chat.end\":\"Restart your chat conversation\",\n  \"chat.endall\":\"End Chat\",\n  \"chat.cancel\":\"Cancel\",\n  \"chat.cookie\":\"This digital assistant uses cookies to ensure you get the best experience\",\n  \"chat.learn\":\"Learn more\",\n  \"chat.minimize\":\"Minimize\",\n  \"chat.hide\":\"Close\",\n  \"chat.hidebot.text\":\"Close will make the avatar disappear for 15 minutes\",\n  \"chat.hidebot\":\"Close (Hide) Avatar\",\n  \"chat.restart\":\"Restart\",\n  \"switch.language\":\"Switch Language\",\n  \"switch.property\":\"Switch Property\",\n  \"restart.converstation\":\"Restart Conversation\",\n  \"chat.endtext\":\"Are you sure you want to end the current chat?\",\n  \"check.availabity\":\"Check Availability\",\n  \"check.availabity.submit\":\"Submit\",\n  \"check.availabity.cancel\":\"Cancel\",\n  \"check.availabity.adults\":\"Adults \",\n  \"check.availabity.children\":\"Children\",\n  \"check.availabity.child.age\":\"Age - child\",\n  \"feedback.leave\":\"Leave Feedback\",\n  \"feedback.leave.message\":\"Leave Message\",\n};\n","module.exports = {\n  \"chat.end\":\"Reinicie su conversación de chat\",\n  \"chat.endall\":\"Chat finalizado\",\n  \"chat.cancel\":\"Cancelar\",\n  \"chat.cookie\":\"Este asistente digital utiliza cookies para garantizar que obtenga la mejor experiencia\",\n  \"chat.learn\":\"Aprende más\",\n  \"chat.minimize\":\"Minimizar\",\n  \"chat.hide\":\"Cerca\",\n  \"chat.hidebot.text\":\"Cerrar hará que la avatar desaparezca durante 15 minutos.\",\n  \"chat.hidebot\":\"Cerrar robot\",\n  \"chat.restart\":\"Reiniciar\",\n  \"switch.language\":\"Cambiar de idioma\",\n  \"switch.property\":\"Cambiar propiedad\",\n  \"restart.converstation\":\"Reiniciar conversación\",\n  \"chat.endtext\":\"¿Está seguro de que desea finalizar el chat actual?\",\n  \"check.availabity\":\"Consultar disponibilidad\",\n  \"check.availabity.submit\":\"Enviar\",\n  \"check.availabity.cancel\":\"Cancelar\",\n  \"check.availabity.adults\":\"Adultas \",\n  \"check.availabity.children\":\"Niñas\",\n  \"check.availabity.child.age\":\"Edad - niña\",\n  \"feedback.leave\":\"Deja un comentario\",\n  \"feedback.leave.message\":\"Deja un mensaje\"\n};\n","module.exports = {\n  \"chat.end\":\"重新开始您的聊天对话\",\n  \"chat.cancel\":\"取消\",\n  \"chat.endall\":\"结束聊天\",\n  \"chat.cookie\":\"此数字助理使用 cookie 来确保您获得最佳体验\",\n  \"chat.learn\":\"了解更多\",\n  \"chat.minimize\":\"最小化\",\n  \"chat.hide\":\"关\",\n  \"chat.hidebot.text\":\"关闭将使头像消失 15 分钟\",\n  \"chat.hidebot\":\"关闭机器人\",\n  \"chat.restart\":\"重新开始\",\n  \"switch.language\":\"切换语言\",\n  \"switch.property\":\"开关属性\",\n  \"restart.converstation\":\"重新开始聊天\",\n  \"chat.endtext\":\"您确定要结束当前聊天吗?\",\n  \"check.availabity\":\"检查可用性\",\n  \"check.availabity.submit\":\"提交\",\n  \"check.availabity.cancel\":\"取消\",\n  \"check.availabity.adults\":\"成年人 \",\n  \"check.availabity.children\":\"孩子们\",\n  \"check.availabity.child.age\":\"年龄 - 儿童\",\n  \"feedback.leave\":\"留下反饋信息\",\n  \"feedback.leave.message\":\"请留言\",\n};\n","module.exports = {\n  \"chat.end\":\"Redémarrez votre conversation de chat\",\n  \"chat.endall\":\"Mettre fin à la discussion\",\n  \"chat.cancel\":\"Annuler\",\n  \"chat.cookie\":\"Cet assistant numérique utilise des cookies pour vous garantir la meilleure expérience\",\n  \"chat.learn\":\"Apprendre encore plus\",\n  \"chat.minimize\":\"Minimiser\",\n  \"chat.hide\":\"proche\",\n  \"chat.hidebot.text\":\"Fermer fera disparaître l'avatar pendant 15 minutes\",\n  \"chat.hidebot\":\"Fermer le robot\",\n  \"chat.restart\":\"Redémarrer\",\n  \"switch.language\":\"Changer de langue\",\n  \"switch.property\":\"Changer de propriété\",\n  \"restart.converstation\":\"Redémarrer la conversation\",\n  \"chat.endtext\":\"Voulez-vous vraiment mettre fin au chat en cours ?\",\n  \"check.availabity\":\"Consultar disponibilidad\",\n  \"check.availabity.submit\":\"Enviar\",\n  \"check.availabity.cancel\":\"Annuler\",\n  \"check.availabity.adults\":\"Adultes \",\n  \"check.availabity.children\":\"Enfants\",\n  \"check.availabity.child.age\":\"Âge - Enfant\",\n  \"feedback.leave\":\"Laisser les commentaires\",\n  \"feedback.leave.message\":\"Laissez un message\",\n};\n","module.exports = {\n  \"chat.end\":\"重新開始您的聊天對話\",\n  \"chat.cancel\":\"取消\",\n  \"chat.endall\":\"結束聊天\",\n  \"chat.cookie\":\"此數字助理使用 cookie 來確保您獲得最佳體驗\",\n  \"chat.learn\":\"了解更多\",\n  \"chat.minimize\":\"最小化\",\n  \"chat.hide\":\"關\",\n  \"chat.hidebot.text\":\"關閉將使頭像消失 15 分鐘\",\n  \"chat.hidebot\":\"關閉機器人\",\n  \"chat.restart\":\"重新開始\",\n  \"switch.language\":\"切換語言\",\n  \"switch.property\":\"開關屬性\",\n  \"restart.converstation\":\"重啟轉換\",\n  \"chat.endtext\":\"您確定要結束當前聊天嗎?\",\n  \"check.availabity\":\"檢查可用性\",\n  \"check.availabity.submit\":\"提交\",\n  \"check.availabity.cancel\":\"取消\",\n  \"check.availabity.adults\":\"成年人 \",\n  \"check.availabity.children\":\"孩子們\",\n  \"check.availabity.child.age\":\"年齡 - 兒童\",\n  \"feedback.leave\":\"留下反馈信息\",\n  \"feedback.leave.message\":\"請留言\",\n};\n","module.exports = {\n  \"chat.end\":\"Tīmataria anō tō kōrerorerorero\",\n  \"chat.endall\":\"Whakamutua te Korero\",\n  \"chat.cancel\":\"Whakakore\",\n  \"chat.cookie\":\"Ma tenei kaiawhina mamati e whakamahi nga pihikete kia pai ai to wheako\",\n  \"chat.learn\":\"Ako atu\",\n  \"chat.minimize\":\"Whakaiti\",\n  \"chat.hide\":\"Katia\",\n  \"chat.hidebot.text\":\"Kati ka ngaro te avatar mo te 15 meneti\",\n  \"chat.hidebot\":\"Katia Bot\",\n  \"chat.restart\":\"Tīmata anō\",\n  \"switch.language\":\"Whakawhiti Reo\",\n  \"switch.property\":\"whakawhiti taonga\",\n  \"restart.converstation\":\"Tīmataria anō te Whakawhitiwhiti\",\n  \"chat.endtext\":\"Kei te tino hiahia koe ki te whakamutu i te korerorero onāianei?\",\n  \"check.availabity\":\"Tirohia te waatea\",\n  \"check.availabity.submit\":\"Tukuna\",\n  \"check.availabity.cancel\":\"Whakakore\",\n  \"check.availabity.adults\":\"Nga pakeke \",\n  \"check.availabity.children\":\"Tamariki\",\n  \"check.availabity.child.age\":\"Tau - Tamariki\",\n  \"feedback.leave\":\"Waiho Urupare\",\n  \"feedback.leave.message\":\"Waiho Karere\",\n};\n","module.exports = {\n  \"chat.end\":\"Mulai ulang percakapan obrolan Anda\",\n  \"chat.endall\":\"Akhiri Obrolan\",\n  \"chat.cancel\":\"Membatalkan\",\n  \"chat.cookie\":\"Asisten digital ini menggunakan cookie untuk memastikan Anda mendapatkan pengalaman terbaik\",\n  \"chat.learn\":\"Belajarlah lagi\",\n  \"chat.minimize\":\"Memperkecil\",\n  \"chat.hide\":\"Menutup\",\n  \"chat.hidebot.text\":\"Tutup akan membuat avatar menghilang selama 15 menit\",\n  \"chat.hidebot\":\"Tutup Bot\",\n  \"chat.restart\":\"Mengulang kembali\",\n  \"switch.language\":\"Ganti Bahasa\",\n  \"switch.property\":\"Beralih Properti\",\n  \"restart.converstation\":\"Mulai ulang Percakapan\",\n  \"chat.endtext\":\"Apakah Anda yakin ingin mengakhiri obrolan saat ini?\",\n  \"check.availabity\":\"Cek ketersediaan\",\n  \"check.availabity.submit\":\"Kirim\",\n  \"check.availabity.cancel\":\"Membatalkan\",\n  \"check.availabity.adults\":\"Dewasa \",\n  \"check.availabity.children\":\"Anak-anak\",\n  \"check.availabity.child.age\":\"Usia - Anak\",\n  \"feedback.leave\":\"Tinggalkan umpan balik\",\n  \"feedback.leave.message\":\"Tinggalkan pesan\",\n};\n","module.exports = {\n  /* 01.General */\n  \"chat.end\":\"बातचीत समाप्त करें\",\n  \"chat.endall\":\"बातचीत बंद करें\",\n  \"chat.cancel\":\"रद्द करें\",\n  \"chat.cookie\":\"यह डिजिटल सहायक यह सुनिश्चित करने के लिए कुकीज़ का उपयोग करता है कि आपको सबसे अच्छा अनुभव मिले\",\n  \"chat.learn\":\"और अधिक जानें\",\n  \"chat.minimize\":\"छोटा करें\",\n  \"chat.hide\":\"बंद करें\",\n  \"chat.hidebot.text\":\"करीब 15 मिनट के लिए अवतार गायब कर देगा।\",\n  \"chat.hidebot\":\"बोट बंद करें\",\n  \"chat.restart\":\"पुनर्प्रारंभ करें\",\n  \"switch.language\":\"भाषा बदलें\",\n  \"switch.property\":\"संपत्ति बदले\",\n  \"restart.converstation\":\"वार्तालाप को पुनरारंभ करें\",\n  \"chat.endtext\":\"क्या आप वाकई वर्तमान चैट को समाप्त करना चाहते हैं?\",\n  \"check.availabity\":\"उपलब्धता जांचें\",\n  \"check.availabity.submit\":\"प्रस्तुत करना\",\n  \"check.availabity.cancel\":\"रद्द करें\",\n  \"check.availabity.adults\":\"वयस्कों \",\n  \"check.availabity.children\":\"बच्चे\",\n  \"check.availabity.child.age\":\"आयु - बच्चा\",\n  \"feedback.leave\":\"प्रतिक्रिया दें\",\n  \"feedback.leave.message\":\"संदेश छोड़ें\",\n};\n","module.exports = {\n  /* 01.General */\n  \"chat.end\":\"Herbegin jou kletsgesprek\",\n  \"chat.endall\":\"Beëindig klets\",\n  \"chat.cancel\":\"Kanselleer\",\n  \"chat.cookie\":\"Hierdie digitale assistent gebruik koekies om te verseker dat u die beste ervaring kry\",\n  \"chat.learn\":\"Leer meer\",\n  \"chat.minimize\":\"Minimaliseer\",\n  \"chat.hide\":\"Naby\",\n  \"chat.hidebot.text\":\"Close sal die avatar vir 15 minute laat verdwyn\",\n  \"chat.hidebot\":\"Maak Bot toe\",\n  \"chat.restart\":\"Begin oor\",\n  \"switch.language\":\"Van taal wisselen\",\n  \"switch.property\":\"Verander eiendom\",\n  \"restart.converstation\":\"Herbegin omskakeling\",\n  \"chat.endtext\":\"Is jy seker jy wil die huidige klets beëindig?\",\n  \"check.availabity\":\"Gaan Beskikbaarheid na\",\n  \"check.availabity.submit\":\"Indien\",\n  \"check.availabity.cancel\":\"Kanselleer\",\n  \"check.availabity.adults\":\"Volwassenes\",\n  \"check.availabity.children\":\"Kinders\",\n  \"check.availabity.child.age\":\"Ouderdom - kind\",\n  \"feedback.leave\":\"Los terugvoer\",\n  \"feedback.leave.message\":\"Los Boodskap\",\n};\n","module.exports = {\n  /* 01.General */\n  \"chat.end\":\"Starten Sie Ihr Chat-Gespräch neu\",\n  \"chat.endall\":\"Ende des Gesprächs\",\n  \"chat.cancel\":\"Abbrechen\",\n  \"chat.cookie\":\"Dieser digitale Assistent verwendet Cookies, um sicherzustellen, dass Sie die beste Erfahrung machen\",\n  \"chat.learn\":\"Mehr erfahren\",\n  \"chat.minimize\":\"Minimieren\",\n  \"chat.hide\":\"Nah dran\",\n  \"chat.hidebot.text\":\"Schließen lässt den Avatar für 15 Minuten verschwinden\",\n  \"chat.hidebot\":\"Bot schließen\",\n  \"chat.restart\":\"Neu starten\",\n  \"switch.language\":\"Sprache wechseln\",\n  \"switch.property\":\"Eigenschaften wechseln\",\n  \"restart.converstation\":\"Starten Sie die Konvertierung neu\",\n  \"chat.endtext\":\"Möchten Sie den aktuellen Chat wirklich beenden?\",\n  \"check.availabity\":\"Verfügbarkeit prüfen\",\n  \"check.availabity.submit\":\"Einreichen\",\n  \"check.availabity.cancel\":\"Absagen\",\n  \"check.availabity.adults\":\"Erwachsene \",\n  \"check.availabity.children\":\"Kinder\",\n  \"check.availabity.child.age\":\"Alter - Kind\",\n  \"feedback.leave\":\"Hinterlasse Kommentar\",\n  \"feedback.leave.message\":\"Nachricht hinterlassen\",\n};\n","module.exports = {\n  /* 01.General */\n  \"chat.end\":\"チャットの会話を再開する\",\n  \"chat.endall\":\"チャットを終了する\",\n  \"chat.cancel\":\"キャンセル\",\n  \"chat.cookie\":\"このデジタルアシスタントはCookieを使用して、最高のエクスペリエンスを提供します\",\n  \"chat.learn\":\"もっと詳しく知る\",\n  \"chat.minimize\":\"最小化\",\n  \"chat.hide\":\"近い\",\n  \"chat.hidebot.text\":\"閉じるとアバターが 15 分間消えます\",\n  \"chat.hidebot\":\"ボットを閉じる\",\n  \"chat.restart\":\"再起動\",\n  \"switch.language\":\"言語の切り替え\",\n  \"switch.property\":\"スイッチプロパティ\",\n  \"restart.converstation\":\"会話を再開する\",\n  \"chat.endtext\":\"現在のチャットを終了してもよろしいですか?\",\n  \"check.availabity\":\"空室状況を確認する\",\n  \"check.availabity.submit\":\"送信\",\n  \"check.availabity.cancel\":\"キャンセル\",\n  \"check.availabity.adults\":\"大人 \",\n  \"check.availabity.children\":\"子供\",\n  \"check.availabity.child.age\":\"年齢 - 子\",\n  \"feedback.leave\":\"フィードバックを残す\",\n  \"feedback.leave.message\":\"メッセージを残す\",\n};\n","module.exports = {\n  /* 01.General */\n  \"chat.end\":\"채팅 대화 다시 시작\",\n  \"chat.endall\":\"채팅 종료\",\n  \"chat.cancel\":\"취소\",\n  \"chat.cookie\":\"이 디지털 비서는 쿠키를 사용하여 최고의 경험을 보장합니다.\",\n  \"chat.learn\":\"더 알아보기\",\n  \"chat.minimize\":\"최소화\",\n  \"chat.hide\":\"닫다\",\n  \"chat.hidebot.text\":\"닫기를 누르면 아바타가 15분 동안 사라집니다.\",\n  \"chat.hidebot\":\"봇 닫기\",\n  \"chat.restart\":\"재시작\",\n  \"switch.language\":\"언어 전환\",\n  \"switch.property\":\"속성 전환\",\n  \"restart.converstation\":\"대화 다시 시작\",\n  \"chat.endtext\":\"현재 채팅을 종료하시겠습니까?\",\n  \"check.availabity\":\"가용성 확인\",\n  \"check.availabity.submit\":\"제출하다\",\n  \"check.availabity.cancel\":\"취소\",\n  \"check.availabity.adults\":\"성인 \",\n  \"check.availabity.children\":\"어린이들\",\n  \"check.availabity.child.age\":\"나이 - 아이\",\n  \"feedback.leave\":\"피드백 남기기\",\n  \"feedback.leave.message\":\"메시지 남기기\",\n};\n","module.exports = {\n  /* 01.General */\n  \"chat.end\":\"เริ่มการสนทนาของคุณใหม่\",\n  \"chat.endall\":\"สิ้นสุดการแชท\",\n  \"chat.cancel\":\"ยกเลิก\",\n  \"chat.cookie\":\"ผู้ช่วยดิจิทัลนี้ใช้คุกกี้เพื่อให้แน่ใจว่าคุณได้รับประสบการณ์ที่ดีที่สุด\",\n  \"chat.learn\":\"เรียนรู้เพิ่มเติม\",\n  \"chat.minimize\":\"ย่อเล็กสุด\",\n  \"chat.hide\":\"ปิด I\",\n  \"chat.hidebot.text\":\"ปิดจะทำให้อวาตาร์หายไปเป็นเวลา 15 นาที\",\n  \"chat.hidebot\":\"ปิดบอท\",\n  \"chat.restart\":\"เริ่มต้นใหม่\",\n  \"switch.language\":\"เปลี่ยนภาษา\",\n  \"switch.property\":\"เปลี่ยนคุณสมบัติ\",\n  \"restart.converstation\":\"เริ่มการสนทนาใหม่\",\n  \"chat.endtext\":\"คุณแน่ใจหรือไม่ว่าต้องการสิ้นสุดการแชทปัจจุบัน\",\n  \"check.availabity\":\"ตรวจสอบห้องว่าง\",\n  \"check.availabity.submit\":\"ส่ง\",\n  \"check.availabity.cancel\":\"ยกเลิก\",\n  \"check.availabity.adults\":\"ผู้ใหญ่ \",\n  \"check.availabity.children\":\"เด็ก\",\n  \"check.availabity.child.age\":\"อายุ - เด็ก\",\n  \"feedback.leave\":\"แสดงความคิดเห็น\",\n  \"feedback.leave.message\":\"ทิ้งข้อความไว้\",\n};\n","module.exports = {\n  /* 01.General */\n  \"chat.end\":\"I-restart ang iyong pag-uusap sa chat\",\n  \"chat.endall\":\"Tapusin ang Chat\",\n  \"chat.cancel\":\"Kanselahin\",\n  \"chat.cookie\":\"Gumagamit ang cookies ng digital na ito ng cookies upang matiyak na makukuha mo ang pinakamahusay na karanasan\",\n  \"chat.learn\":\"Matuto nang higit pa\",\n  \"chat.minimize\":\"I-minimize\",\n  \"chat.hide\":\"Isara\",\n  \"chat.hidebot.text\":\"Ang pagsara ay gagawing mawala ang avatar sa loob ng 15 minuto\",\n  \"chat.hidebot\":\"Isara ang Bot\",\n  \"chat.restart\":\"I-restart\",\n  \"switch.language\":\"Lumipat ng Wika\",\n  \"switch.property\":\"Lumipat ng Ari-arian\",\n  \"restart.converstation\":\"I-restart ang Conversation\",\n  \"chat.endtext\":\"Sigurado ka bang gusto mong tapusin ang kasalukuyang chat?\",\n  \"check.availabity\":\"Suriin ang Availability\",\n  \"check.availabity.submit\":\"Ipasa\",\n  \"check.availabity.cancel\":\"Kanselahin\",\n  \"check.availabity.adults\":\"Matanda \",\n  \"check.availabity.children\":\"Mga bata\",\n  \"check.availabity.child.age\":\"Edad - Bata\",\n  \"feedback.leave\":\"Mag-iwan ng opinyon\",\n  \"feedback.leave.message\":\"Mag-iwan ng mensahe\",\n};\n","module.exports = {\n  /* 01.General */\n  \"chat.end\":\"Khởi động lại cuộc trò chuyện của bạn\",\n  \"chat.endall\":\"Kết thúc trò chuyện\",\n  \"chat.cancel\":\"Hủy bỏ\",\n  \"chat.cookie\":\"Trợ lý kỹ thuật số này sử dụng cookie để đảm bảo bạn có được trải nghiệm tốt nhất\",\n  \"chat.learn\":\"Tìm hiểu thêm\",\n  \"chat.minimize\":\"Giảm thiểu\",\n  \"chat.hide\":\"Đóng\",\n  \"chat.hidebot.text\":\"Đóng sẽ làm cho hình đại diện biến mất trong 15 phút\",\n  \"chat.hidebot\":\"Đóng Bot\",\n  \"chat.restart\":\"Khởi động lại\",\n  \"switch.language\":\"Chuyển đổi ngôn ngữ\",\n  \"switch.property\":\"Chuyển đổi thuộc tính\",\n  \"restart.converstation\":\"Khởi động lại hội thoại\",\n  \"chat.endtext\":\"Bạn có chắc chắn muốn kết thúc cuộc trò chuyện hiện tại không?\",\n  \"check.availabity\":\"Sẵn sàng kiểm tra\",\n  \"check.availabity.submit\":\"Nộp\",\n  \"check.availabity.cancel\":\"Hủy bỏ\",\n  \"check.availabity.adults\":\"Người lớn \",\n  \"check.availabity.children\":\"Bọn trẻ\",\n  \"check.availabity.child.age\":\"Tuổi - Trẻ em\",\n  \"feedback.leave\":\"Để lại phản hồi\",\n  \"feedback.leave.message\":\"Để lại tin nhắn\",\n};\n","module.exports = {\n  /* 01.General */\n  \"chat.end\":\"أعد بدء محادثة الدردشة الخاصة بك\",\n  \"chat.endall\":\"نهاية المحادثة\",\n  \"chat.cancel\":\"يلغي\",\n  \"chat.cookie\":\"يستخدم هذا المساعد الرقمي ملفات تعريف الارتباط لضمان حصولك على أفضل تجربة\",\n  \"chat.learn\":\"يتعلم أكثر\",\n  \"chat.minimize\":\"تصغير\",\n  \"chat.hide\":\"يغلق\",\n  \"chat.hidebot.text\":\"إغلاق سيجعل الصورة الرمزية تختفي لمدة 15 دقيقة\",\n  \"chat.hidebot\":\"إغلاق (إخفاء) الصورة الرمزية\",\n  \"chat.restart\":\"اعادة البدء\",\n  \"switch.language\":\"تبديل اللغة\",\n  \"switch.property\":\"تبديل الممتلكات\",\n  \"restart.converstation\":\"أعد تشغيل المحادثة\",\n  \"chat.endtext\":\"هل أنت متأكد أنك تريد إنهاء الدردشة الحالية؟\",\n  \"check.availabity\":\"التحقق من الصلاحية\",\n  \"check.availabity.submit\":\"إرسال\",\n  \"check.availabity.cancel\":\"يلغي\",\n  \"check.availabity.adults\":\"الكبار \",\n  \"check.availabity.children\":\"أطفال\",\n  \"check.availabity.child.age\":\"العمر - الطفل\",\n  \"feedback.leave\":\"اترك تقييم للخدمة\",\n  \"feedback.leave.message\":\"اترك رسالة\",\n};","module.exports = {\n  /* 01.General */\n  \"chat.end\":\"Перезапустите чат\",\n  \"chat.endall\":\"Конец чат\",\n  \"chat.cancel\":\"Отмена\",\n  \"chat.cookie\":\"Этот цифровой помощник использует файлы cookie, чтобы обеспечить вам наилучшие впечатления.\",\n  \"chat.learn\":\"Учить больше\",\n  \"chat.minimize\":\"Свести к минимуму\",\n  \"chat.hide\":\"Закрывать\",\n  \"chat.hidebot.text\":\"Close заставит аватар исчезнуть на 15 минут.\",\n  \"chat.hidebot\":\"Закрыть (скрыть) аватар\",\n  \"chat.restart\":\"Начать сначала\",\n  \"switch.language\":\"Смена языка\",\n  \"switch.property\":\"Переключить свойство\",\n  \"restart.converstation\":\"Перезапустить разговор\",\n  \"chat.endtext\":\"Вы уверены, что хотите завершить текущий чат?\",\n  \"check.availabity\":\"Проверить наличие свободных мест\",\n  \"check.availabity.submit\":\"Представлять на рассмотрение\",\n  \"check.availabity.cancel\":\"Отмена\",\n  \"check.availabity.adults\":\"Взрослые \",\n  \"check.availabity.children\":\"Дети\",\n  \"check.availabity.child.age\":\"Возраст - ребенок\",\n  \"feedback.leave\":\"Оставьте отзыв\",\n  \"feedback.leave.message\":\"Оставить сообщение\",\n};\n","module.exports = {\n  /* 01.General */\n  \"chat.end\":\"Aloita chat-keskustelu uudelleen\",\n  \"chat.endall\":\"Lopeta keskustelu\",\n  \"chat.cancel\":\"Peruuttaa\",\n  \"chat.cookie\":\"Tämä digitaalinen avustaja käyttää evästeitä varmistaakseen, että saat parhaan käyttökokemuksen\",\n  \"chat.learn\":\"Lue lisää\",\n  \"chat.minimize\":\"Minimoida\",\n  \"chat.hide\":\"kiinni\",\n  \"chat.hidebot.text\":\"Sulje poistaa avatarin 15 minuutiksi\",\n  \"chat.hidebot\":\"Sulje (Piilota) Avatar\",\n  \"chat.restart\":\"Uudelleenkäynnistää\",\n  \"switch.language\":\"Vaihda kieltä\",\n  \"switch.property\":\"Vaihda omaisuutta\",\n  \"restart.converstation\":\"Aloita keskustelu uudelleen\",\n  \"chat.endtext\":\"Haluatko varmasti lopettaa nykyisen keskustelun?\",\n  \"check.availabity\":\"Tarkista saatavuus\",\n  \"check.availabity.submit\":\"Lähetä\",\n  \"check.availabity.cancel\":\"Peruuttaa\",\n  \"check.availabity.adults\":\"Aikuiset \",\n  \"check.availabity.children\":\"Lapset\",\n  \"check.availabity.child.age\":\"Ikä - lapsi\",\n  \"feedback.leave\":\"Jätä palautetta\",\n  \"feedback.leave.message\":\"Jätä viesti\",\n};\n","import React, { Component, Fragment } from \"react\";\nimport ReactHtmlParser from \"react-html-parser\";\nimport \"./ChatBubble.css\";\n\nexport default class ChatBubble extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      hover: false,\n      nudgeavtar: false,\n      botPosition:\"right\"\n    };\n    this.bubble_clicked = this.bubble_clicked.bind(this);\n    this.nudge_clicked = this.nudge_clicked.bind(this);\n    this.hint_close = this.hint_close.bind(this);\n    this.nudgeavtar_clicked = this.nudgeavtar_clicked.bind(this);\n    // Listen to messages\n    window.addEventListener(\n      \"message\",\n      this.windowBuddbleMessage.bind(this),\n      false\n    );\n  }\n\n  windowBuddbleMessage(event) {\n    if (\n      typeof event.data === \"string\" &&\n      event.data.startsWith(\"nudgepopup:\")\n    ) {\n      this.setState({ nudgeavtar: true });\n    }\n  }\n\n  nudgeavtar_clicked() {\n    this.setState({ nudgeavtar: false });\n    this.postMessage(`nudgeminimized`);\n  }\n\n  bubble_clicked() {\n    this.props.onOpened();\n  }\n\n  nudge_clicked() {\n    this.props.onOpened();\n  }\n\n  hint_close(e) {\n    e.stopPropagation();\n    this.props.hintClosed();\n  }\n\n  handleMouseEnter = () => {\n    this.setState({ hover: true });\n  };\n  handleMouseLeave = () => {\n    this.setState({ hover: false });\n  };\n  /**\n   * Posts a message to the parent window, if this window has one\n   * @param {*} msg\n   */\n  postMessage(msg) {\n    if (window.parent) {\n      window.parent.postMessage(msg, \"*\");\n    }\n  }\n\n  /**\n   * Listens to component changes, sends iframe custom styles\n   */\n  componentDidMount() {\n    //if (prevProps.botSettings !== this.props.botSettings) {\n    if (\n      this.props.botSettings.bubbleSettings !== undefined &&\n      this.props.botSettings.bubbleSettings !== null\n    ) {\n      //Post Message to set the Alignment of bubble iframe\n      if (\n        this.props.botSettings.bubbleSettings.bubblePosition !== undefined &&\n        this.props.botSettings.bubbleSettings.bubblePosition !== null\n      ) {\n        const bubblePosition =\n          this.props.botSettings.bubbleSettings.bubblePosition;\n        if (this.props.mobile === \"true\") {\n          this.setState({botPosition: bubblePosition.alignInMobile===\"Left\"?this.props.position+\"_\"+bubblePosition.alignInMobile.toLowerCase():this.props.position});\n          this.postMessage(\n            `chatbotalign:${bubblePosition.alignInMobile}|side:${bubblePosition.sideInMobile}|bottom:${bubblePosition.bottomInMobile}`\n          );\n        } else {\n          this.setState({botPosition:bubblePosition.align===\"Left\"?this.props.position+\"_\"+bubblePosition.align.toLowerCase():this.props.position});\n          this.postMessage(\n            `chatbotalign:${bubblePosition.align}|side:${bubblePosition.side}|bottom:${bubblePosition.bottom}`\n          );\n        }\n       \n      }\n      //Post Message to set the animation settings iframe\n      if (\n        this.props.botSettings.bubbleSettings.scrollAnimation !== undefined &&\n        this.props.botSettings.bubbleSettings.scrollAnimation !== null\n      ) {\n        const scrollAnimation =\n          this.props.botSettings.bubbleSettings.scrollAnimation;\n        if (scrollAnimation.enabled === true) {\n          this.postMessage(\n            `chatbotscrollanimation|${scrollAnimation.beforeAnimationTop}|${scrollAnimation.afterAnimationTop}`\n          );\n        }\n      }\n    } else {\n      this.postMessage(`chatbotremoveposition`);\n    }\n    //}\n  }\n\n  render() {\n    return !this.props.disabledChatbot ? (\n      this.state.nudgeavtar === false ? (\n        <div className={this.state.botPosition} onClick={this.bubble_clicked}>\n          {this.props.currentNudge\n            ? this.props.currentNudge.eyeCatcher.messages.map((msg) => {\n                return typeof msg === \"string\" ? (\n                  <div className=\"chat_hint\" onClick={this.nudge_clicked}>\n                    {msg}\n                    <div\n                      className=\"chat_hint_close\"\n                      onClick={this.hint_close}\n                    ></div>\n                  </div>\n                ) : (\n                  <div className=\"chat_hint_image_container\">\n                    <img className=\"chat_hint_image\" alt=\"\" src={msg.url} />\n                  </div>\n                );\n              })\n            : \"\"}\n          {this.props.botSettings !== undefined ? (\n            this.props.botSettings.bubbleSettings !== undefined &&\n            this.props.botSettings.bubbleSettings !== null &&\n            this.props.botSettings.bubbleSettings.enabled ? (\n              <Fragment>\n                <div\n                  className={\n                    this.props.fadeIn\n                      ? `chat_bubble chat_bubble_fade ${\n                          this.props.mobile == \"true\"\n                            ? \"askmebtnmobile\"\n                            : \"askmebtn\"\n                        }`\n                      : `chat_bubble chat_bubble_shrink ${\n                          this.props.mobile == \"true\"\n                            ? \"askmebtnmobile\"\n                            : \"askmebtn\"\n                        }`\n                  }\n                  style={{\n                    backgroundColor:\n                      this.props.botSettings.bubbleSettings.backGroundColor,\n                    color: this.props.botSettings.bubbleSettings.textColor,\n                    paddingTop:\n                      this.props.botSettings.bubbleSettings.paddingTop,\n                    ...(this.state.hover && {\n                      backgroundColor:\n                        this.props.botSettings.bubbleSettings\n                          .backGroundColorHover,\n                      color:\n                        this.props.botSettings.bubbleSettings.textColorHover,\n                    }),\n                  }}\n                  onMouseEnter={this.handleMouseEnter} // Or onMouseOver\n                  onMouseLeave={this.handleMouseLeave}\n                >\n                  {ReactHtmlParser(this.props.botSettings.bubbleSettings.text)}\n                </div>\n              </Fragment>\n            ) : (\n              <div\n                style={{\n                  backgroundImage: `url(${this.props.botSettings.urls.icon}`,\n                     }}\n                className={\n                  this.props.fadeIn\n                    ? \"chat_bubble chat_bubble_fade\"\n                    : \"chat_bubble chat_bubble_shrink\"\n                }\n              ></div>\n            )\n          ) : (\n            <div className=\"chat_loading\"> </div>\n          )}\n        </div>\n      ) : (\n        <div className={this.state.botPosition} onClick={this.nudgeavtar_clicked}>\n          <div\n            style={{\n              backgroundImage: `url(${this.props.botSettings.urls.icon}`,\n              \n                     }}\n            className={\n              this.props.fadeIn\n                ? \"chat_bubble chat_bubble_fade\"\n                : \"chat_bubble chat_bubble_shrink\"\n            }\n          ></div>\n        </div>\n      )\n    ) : null;\n  }\n}\n","import React, { Component, Fragment } from \"react\";\n\nimport \"./WebViewExtension.css\";\n\nexport const WEB_VIEW_EXT_ID = \"WEB_VIEW\";\n\nexport default class WebViewExtension extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      // bottomMargin: 0,\n      popUpHeight: 0,\n      title: props.webview.title,\n      url: props.webview.url,\n      height: props.webview.height,\n      hideHeader: props.webview.largeWindowHideHeader,\n    };\n\n\n    // Resize box to sit above input\n    this.findInputTimerId = setInterval(() => {\n      let chatbox = document.getElementById(\"chat_box\");\n\n      if (!chatbox) {\n        return;\n      }\n\n      let inputs = chatbox.querySelectorAll(\"input\");\n      let inputRegion = chatbox.querySelectorAll(\"[role='form']\");\n\n      if (inputs.length < 1 || inputRegion.length < 1) {\n        return;\n      }\n\n      let popUp = document.getElementsByClassName(\"chat_popup booking_popup\");\n\n      if (popUp.length) {\n        this.setState({\n          popUpHeight: popUp[0].clientHeight,\n        });\n      }\n\n      // this.setState({\n      //     bottomMargin: inputRegion[0].clientHeight\n      // });\n\n      clearInterval(this.findInputTimerId);\n    }, 50);\n\n    this.close = this.close.bind(this);\n    window.addEventListener(\"message\", this.windowMessage.bind(this), false);\n  }\n\n  componentDidMount() {\n    var params = this.props.webview.url.split(\"?\")[1].split(\"&\");\n    var data = {};\n    for (var x in params) {\n      data[params[x].split(\"=\")[0]] = decodeURIComponent(params[x].split(\"=\")[1]);\n    }\n    if (data.default_form === \"1\") {\n      fetch(\n        `${process.env.REACT_APP_BFF_API}/public/forms/get/${data.id}`,\n        {\n          method: \"GET\",\n          headers: {\n            Accept: \"application/json\",\n            \"Content-Type\": \"application/json\",\n          },\n        }\n      )\n        .then((response) => response.json())\n        .then((json) => {\n          var form = json;\n          this.setState({ title: form.name });\n        });\n    }\n  }\n\n  componentDidUpdate(oldProps) {\n    if (!this.props.webview) {\n      return;\n    }\n\n    if (\n      !oldProps.webview ||\n      oldProps.webview.title !== this.props.webview.title ||\n      oldProps.webview.url !== this.props.webview.url ||\n      oldProps.webview.height !== this.props.webview.height ||\n      oldProps.webview.largeWindowHideHeader !==\n      this.props.webview.largeWindowHideHeader\n    ) {\n      this.setState({\n        title: this.props.webview.title,\n        url: this.props.webview.url,\n        height: this.props.webview.height,\n        hideHeader: this.props.webview.largeWindowHideHeader,\n      });\n    }\n  }\n\n  windowMessage(event) {\n    if (event.data === \"closeDefaultForm\") {\n      this.close();\n    }\n  }\n\n  close() {\n    this.setState({\n      closing: true,\n      title: \"\",\n      url: \"\",\n      height: \"\",\n    });\n    // Allow animation to play\n    setTimeout(() => {\n      this.setState({\n        closing: false,\n      });\n\n      this.props.api.setExtension(WEB_VIEW_EXT_ID, undefined);\n    }, 800);\n  }\n\n  render() {\n    const color = this.props.styling;\n    // console.log('12', this.props.messenger === true,\n    //   this.state.hideHeader !== undefined && this.state.hideHeader === true)\n    let containerStyling = {\n      // bottom: this.state.bottomMargin,\n      // height: 'calc(' + this.state.height + '% - ' + (this.state.bottomMargin + this.state.popUpHeight) + 'px)',\n      height: this.props.messenger === true ?\n        this.state.hideHeader !== undefined && this.state.hideHeader === true ? \"calc(100vh - 1px)\" : \"calc(100vh - 55px)\" : \"calc(\" + this.state.height + \"% - \" + 0 + \"px)\",\n      animationName: this.state.closing ? \"slide-down\" : \"slide-up\",\n      top: this.props.messenger === true ?\n        this.state.hideHeader !== undefined && this.state.hideHeader === true ? \"0px\" : \"20px\" : \"\",\n      padding: this.props.messenger === true ?\n        this.state.hideHeader !== undefined && this.state.hideHeader === true ? \"0px\" : \"8px\" : \"\"\n\n    };\n    return this.state.url !== \"\" && (\n      <div className=\"web-view-container-set\" style={containerStyling}>\n        {this.state.hideHeader !== undefined &&\n          this.state.hideHeader === true ? (\n          <div className=\"web-view-close-chatbox-set\" onClick={this.close}>\n            <img src=\"/res/cross_icon.jpg\" width=\"15\" height=\"15\" />\n            {/* <svg\n              style={{\n                fill:\n                  this.state.url.indexOf(\"/room?\") > 0\n                    ? \"white\"\n                    : color.colours.headerText || \"black\",\n              }}\n              className=\"web-view-close-svg\"\n            >\n              <use xlinkHref=\"/res/defs.svg#svg-icon-cross\"></use>\n            </svg> */}\n          </div>\n        ) : (\n          <Fragment>\n            {this.state.url.includes(\"form-view\") ?\n              <div className=\"web-view-close-form-set\" onClick={this.close}>\n                {this.state.url.includes(\"default_form=1\") &&\n                  <span className=\"truncate\">{this.state.title}</span>\n                }\n                <img src=\"/res/cross_icon.jpg\" width=\"15\" height=\"15\" />\n              </div>\n              :\n              <div\n                className=\"web-view-header-set\"\n                style={{\n                  // backgroundColor: color.colours.header,\n                  color: color.colours.headerText,\n                }}\n              >\n                {/* <span className=\"truncate\"> {this.state.title} </span> */}\n                <div className=\"web-view-close\" onClick={this.close}>\n                  {/* <svg\n                style={{ fill: color.colours.headerText || \"black\" }}\n                className=\"web-view-close-svg\"\n              >\n                <use xlinkHref=\"/res/defs.svg#svg-icon-times\"></use>\n              </svg> */}\n                  <img src=\"/res/cross_icon.jpg\" width=\"15\" height=\"15\" />\n                </div>\n              </div>\n            }\n          </Fragment>\n        )}\n        <div className=\"web-view-inner-container\">\n          <iframe\n            id=\"webviewframe\"\n            src={this.state.url}\n            title=\"Chat Web View\"\n            className=\"web-view-frame\"\n          />\n        </div>\n      </div>\n    );\n  }\n}\n","import React, { Component } from 'react';\nimport { WEB_VIEW_EXT_ID } from '../WebViewExtension/WebViewExtension';\n\nexport const WEB_VIEW_EX_EXT_ID = \"WEB_VIEW_EXTERNAL\";\n\nexport default class WebViewExternalExtension extends Component {\n    constructor(props) {\n        super(props);\n\n        if (props.webviewExt) {\n            if (props.api.isMobile() == \"true\") {\n                this.openInternalView(props.webviewExt.title, props.webviewExt.url, props.api,props.webviewExt.largeWindowHideHeader);\n            } else {\n                this.openExternalView(props.webviewExt, props.styling);\n            }\n        }\n\n        window.addEventListener(\"message\", this.receiveWindowMessage.bind(this), false);\n    }\n\n    receiveWindowMessage(event) {\n        if (typeof event.data === 'string' && event.data.startsWith('closeWebView')) {\n            this.props.api.setExtension(WEB_VIEW_EX_EXT_ID, undefined);\n        }\n\n        if (typeof event.data === 'string' && event.data.startsWith('fallbackWebView')) {\n            this.props.api.setExtension(WEB_VIEW_EXT_ID,\n                {\n                    title: this.props.webviewExt.title,\n                    url: this.props.webviewExt.url,\n                    height: 100\n                });\n\n            setTimeout(() => { this.props.api.setExtension(WEB_VIEW_EX_EXT_ID, undefined) }, 10);\n        }\n    }\n\n    componentDidUpdate(oldProps) {\n        if (!this.props.opened) {\n            this.closeExternalView();\n        }\n\n        if (!this.props.webviewExt) {\n            return;\n        }\n        if (!oldProps.webviewExt ||\n            oldProps.webviewExt.title !== this.props.webviewExt.title ||\n            oldProps.webviewExt.url !== this.props.webviewExt.url) {\n\n                if (this.props.api.isMobile()===true) {\n                this.openInternalView(this.props.webviewExt.title, this.props.webviewExt.url, this.props.api, this.props.largeWindowHideHeader);\n            } else {\n                this.openExternalView(this.props.webviewExt, this.props.styling);\n            }\n        }\n    }\n\n    componentWillUnmount() {\n        this.closeExternalView();\n    }\n\n    openInternalView(title, url, api, largeWindowHideHeader) {\n        // Switch to inline view (for mobile)        \n        api.setExtension(WEB_VIEW_EXT_ID, { title, url, height: 100, largeWindowHideHeader: largeWindowHideHeader });\n        setTimeout(() => api.setExtension(WEB_VIEW_EX_EXT_ID, undefined), 10); // Immediate successive calls cause state issues :(\n    }\n\n    openExternalView(settings, styling) {\n        if (settings.mode == undefined || settings.mode === null) {\n            let payload = {\n                title: settings.title,\n                url: settings.url,\n                styling,\n                hideHeader: settings.largeWindowHideHeader\n            };\n            this.postMessage(\"openWebView:\" + JSON.stringify(payload));\n        }\n        else {\n            let payload = {\n                title: settings.title,\n                url: settings.url,\n                mode: settings.mode,\n                styling,\n                hideHeader: settings.largeWindowHideHeader\n            };\n            this.postMessage(\"WebViewMode:\" + JSON.stringify(payload));\n        }\n    }\n\n    closeExternalView() {\n        this.postMessage(\"closeWebView\");\n    }\n\n    render() {\n        return <div></div>\n    }\n\n    postMessage(msg) {\n        if (window.parent) {\n            window.parent.postMessage(msg, '*');\n        }\n    }\n}","import React, { Component } from 'react';\n\nimport './ChatSuggestionExtension.css';\n\nexport const CHAT_SUGGESTION_EXT_ID = \"CHAT_SUGGESTION\";\n\nexport default class ChatSuggestionExtension extends Component {\n    constructor (props) {\n        super();\n\n        this.state = {\n            searchTerm: '',\n            bottomMargin: 0,\n            filteredSuggestions: [],\n            maximised: false\n        };\n\n        if (props.suggestions) {\n            props.suggestions.getSuggestionCallback = this.processUserInput.bind(this);\n        }\n\n        this.onSuggestionClicked.bind(this);\n\n        // Finds the input box and listens to it\n        // Hacky, but WebChat doesn't expose an API for listening to input\n        this.findInputTimerId = setInterval(() => {\n            let chatbox = document.getElementById(\"chat_box\");\n            if (!chatbox) {\n                return;\n            }\n            let inputs = chatbox.querySelectorAll(\"input\");\n            let inputRegion = chatbox.querySelectorAll(\"[role='form']\")\n           \n            if (inputs.length < 1 || inputRegion.length < 1) {\n                return;\n            }\n            \n            this.setState({\n                bottomMargin: inputRegion[0].clientHeight\n            });\n            this.updateSuggestions(inputs[0].value);\n\n            inputs[0].addEventListener(\"input\", (event) => {\n                this.updateSuggestions(event.target.value);\n            });\n\n            clearInterval(this.findInputTimerId);\n        }, 50); \n    }\n\n    componentDidUpdate(oldProps) {\n        if (!this.props.suggestions) {\n            return;\n        }\n        \n        if (oldProps.suggestions.time !== this.props.suggestions.time) {\n            this.updateSuggestions(this.state.searchTerm);\n            this.setState({ maximised: false });\n            this.props.suggestions.getSuggestionCallback = this.processUserInput.bind(this);\n        }\n    }\n\n    processUserInput(input) {\n        if (!this.props.suggestions) {\n            return;\n        }\n\n        let filtered = this.props.suggestions.options\n            .filter(suggestion => this.doesSuggestionMatch(suggestion, input));\n        \n        let match;\n        if (filtered.length === 1) {\n            match = filtered[0].name;\n        } else {\n            let exactMatch = filtered.find(suggestion => suggestion.name.toLowerCase() === input.toLowerCase() ||\n                (suggestion.synonyms && suggestion.synonyms.some(syn => syn.toLowerCase() === input.toLowerCase())));\n            \n            match = exactMatch ? exactMatch.name : undefined;\n        }\n\n        if (!match && filtered.length < 1) {\n            this.updateSuggestions('');\n        }\n        return match;\n    }\n\n    updateSuggestions (text) {\n        this.setState({\n            searchTerm: text,\n            maximised: (text.length > 0),\n            filteredSuggestions: this.props.suggestions.options\n                .filter(suggestion => this.doesSuggestionMatch(suggestion, text))\n        });\n    }\n\n    doesSuggestionMatch(suggestion, text) {\n        let searchable = [...(suggestion.synonyms ? suggestion.synonyms.map(syn => syn.toLowerCase()) : []), suggestion.name.toLowerCase()];\n\n        return searchable.some(term => term.startsWith(text.toLowerCase()));\n    }\n\n    onSuggestionClicked(suggestion) {\n        this.props.api.sendActivity({\n            type: 'WEB_CHAT/SEND_MESSAGE',\n            payload: { text: suggestion }\n        });\n    }\n\n    render () {      \n        const  color = this.props.styling;\n        return <div className='chat_suggestion_container' style={{ height: 'calc(100% - ' + this.state.bottomMargin + 'px)' }}> \n            {\n                this.state.maximised ?\n                <div className='chat_suggestion_results'>\n                    <div className='chat_suggestion_header'>\n                        { this.props.suggestions.question }\n                        <div className='chat_suggestion_header_minimise'\n                            style={{ borderColor: color.colours.header }}\n                            onClick={() => { this.setState({ maximised: !this.state.maximised })}}> \n                            { this.state.maximised ? \"Hide\" : '' }\n                        </div>\n                    </div>\n                    {\n                        this.state.filteredSuggestions.map(suggestion =>\n                            <div className='chat_suggestion_item' key={suggestion.name} onClick={() => {this.onSuggestionClicked(suggestion.name)}}>\n                                <div className='chat_suggestion_item_inner'>\n                                    <div className='chat_suggestion_item_select_box'\n                                        style={{ borderColor: color.colours.header }}> </div>\n                                    { suggestion.name }\n                                </div>\n                            </div>\n                        )\n                    }\n                </div>\n                :\n                ''\n            }\n        </div>\n    }\n}","import React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nconst InjectMassage = props => <FormattedMessage {...props} />;\n\nexport default injectIntl(InjectMassage, {\n    withRef: false\n});\n","import React, { useState, useEffect, Component, Fragment } from \"react\";\nimport IntlMessages from \"../helpers/IntlMessages\";\n\nexport default function PersistentMenu({ menuOpen, persistentMenu, persistentMenuEnabled,\n  handleMenuClick, botSettings, cookiesDetail, botSite }) {\n  const mindate = new Date().getFullYear();\n  const [currentYear, setCurrentYear] = useState(mindate)\n  const MenuClick = (itemType, items) => {\n    var data = {\n      itemType: itemType,\n      items: items\n    }\n    handleMenuClick(data);\n  };\n  const cookiesDetailClick = (url) => {\n    cookiesDetail(url);\n  };\n  const BotSiteClick = (url) => {\n    botSite(url);\n  };\n  return (\n    <Fragment>\n      {persistentMenu.length > 0 && (\n        <div className=\"chat_box_popup_new\" onClick={menuOpen}>\n          <div className=\"menu_popup area\">\n            {persistentMenu.map((item, itemIndex) => (\n              <div className=\"menu_popup_items\" key={itemIndex}>\n                {item.callToActions.filter((i)=>i.payLoad!==\"select_property\" && i.payLoad!==\"switch_language\" && i.payLoad!==\"restart\" && i.payLoad!==\"hidebot\").map((menu,menuIndex)=>(\n                  <button className=\"popupmenu\" key={menuIndex} onClick={() => MenuClick(menu.type, menu)}>\n                    <span className=\"icon_text\"></span>\n                    <span className=\"text\">\n                      {menu.title}\n                    </span>\n                  </button>\n                ))}\n                {item.callToActions.filter((i) => i.payLoad === \"select_property\" || i.payLoad === \"switch_language\" || i.payLoad === \"restart\" || i.payLoad === \"hidebot\").map((menu, menuIndex) => (\n                  <Fragment key={menuIndex}>\n                    {menu.payLoad !== \"switch_language\" &&\n                      <button className=\"popupmenu\"  onClick={() => MenuClick(menu.type, menu)}>\n                        {menu.payLoad === \"select_property\" &&\n                          <Fragment>\n                            <span className=\"property_icon\">\n                              <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n                                <path fillRule=\"evenodd\" d=\"M14.763.075A.5.5 0 0 1 15 .5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5V14h-1v1.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V10a.5.5 0 0 1 .342-.474L6 7.64V4.5a.5.5 0 0 1 .276-.447l8-4a.5.5 0 0 1 .487.022zM6 8.694 1 10.36V15h5V8.694zM7 15h2v-1.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5V15h2V1.309l-7 3.5V15z\" />\n                                <path d=\"M2 11h1v1H2v-1zm2 0h1v1H4v-1zm-2 2h1v1H2v-1zm2 0h1v1H4v-1zm4-4h1v1H8V9zm2 0h1v1h-1V9zm-2 2h1v1H8v-1zm2 0h1v1h-1v-1zm2-2h1v1h-1V9zm0 2h1v1h-1v-1zM8 7h1v1H8V7zm2 0h1v1h-1V7zm2 0h1v1h-1V7zM8 5h1v1H8V5zm2 0h1v1h-1V5zm2 0h1v1h-1V5zm0-2h1v1h-1V3z\" />\n                              </svg>\n                            </span>\n                            <span className=\"text\"><IntlMessages id=\"switch.property\" /></span>\n                          </Fragment>\n                        }\n                        {menu.payLoad === \"restart\" &&\n                          <Fragment>\n                            <span className=\"restart_icon\">\n                              <svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\"\n                                width=\"20.000000pt\" height=\"20.000000pt\" viewBox=\"0 0 512.000000 512.000000\"\n                                preserveAspectRatio=\"xMidYMid meet\">\n\n                                <g transform=\"translate(0.000000,512.000000) scale(0.100000,-0.100000)\"\n                                  fill=\"currentColor\" stroke=\"none\">\n                                  <path d=\"M2470 4617 c-19 -12 -43 -38 -54 -57 -21 -35 -21 -46 -24 -1063 -2 -737 1 -1040 9 -1070 16 -59 75 -114 134 -122 57 -9 129 24 162 74 l23 34 0 1061 c0 1041 0 1062 -20 1094 -30 49 -75 72 -141 72 -42 0 -65 -6 -89 -23z\" />\n                                  <path d=\"M1165 4146 c-91 -40 -123 -164 -64 -247 34 -48 87 -65 264 -84 88 -10 163 -21 168 -24 4 -4 -23 -29 -60 -57 -96 -70 -214 -183 -229 -221 -32 -74 -2 -168 66 -207 39 -23 122 -26 158 -7 13 7 52 39 88 71 75 68 185 152 191 147 2 -3 -6 -84 -18 -181 l-21 -176 23 -47 c13 -26 36 -56 50 -66 29 -21 103 -33 143 -23 32 8 83 51 101 85 18 35 109 792 100 837 -7 39 -46 89 -85 109 -26 14 -740 105 -813 105 -17 -1 -46 -7 -62 -14z\" />\n                                  <path d=\"M3130 3959 c-62 -26 -100 -85 -100 -154 0 -85 32 -122 159 -181 298 -139 574 -413 710 -705 49 -105 94 -237 118 -349 26 -123 26 -448 -1 -575 -125 -594 -585 -1051 -1176 -1165 -527 -103 -1080 99 -1423 518 -66 81 -101 102 -170 102 -52 0 -100 -29 -135 -80 -20 -29 -23 -44 -20 -92 5 -65 18 -87 123 -204 253 -282 605 -483 990 -564 129 -28 438 -38 582 -20 660 82 1235 534 1468 1155 131 351 149 749 51 1119 -132 498 -489 924 -964 1154 -97 47 -166 61 -212 41z\" />\n                                  <path d=\"M975 3115 c-165 -60 -138 -307 37 -331 62 -9 110 9 152 56 120 133 -20 337 -189 275z\" />\n                                  <path d=\"M844 2531 c-153 -70 -124 -294 42 -326 80 -15 170 42 194 122 24 80 -13 162 -90 201 -54 27 -92 28 -146 3z\" />\n                                  <path d=\"M903 1905 c-47 -29 -83 -92 -83 -146 1 -49 32 -112 70 -139 40 -28 126 -38 170 -20 73 30 123 128 101 200 -34 114 -158 165 -258 105z\" />\n                                </g>\n                              </svg>\n                            </span>\n                            <span className=\"text\">\n                              <IntlMessages id=\"restart.converstation\"></IntlMessages>\n                            </span>\n                          </Fragment>\n                        }\n                        {menu.payLoad === \"hidebot\" &&\n                          <Fragment>\n                            <span className=\"close_icon\">\n                              <svg version=\"1.1\" width=\"20\" height=\"20\" viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\" x=\"10px\" y=\"10px\" fill=\"currentColor\"\n                              >\n                                <g>\n                                  <g>\n                                    <path d=\"M256,0C114.615,0,0,114.615,0,256s114.615,256,256,256s256-114.615,256-256S397.385,0,256,0z M327.115,365.904 L256,294.789l-71.115,71.115l-38.789-38.789L217.211,256l-71.115-71.115l38.789-38.789L256,217.211l71.115-71.115l38.789,38.789\tL294.789,256l71.115,71.115L327.115,365.904z\"/>\n                                  </g>\n                                </g>\n                              </svg>\n                            </span>\n                            <span className=\"text\"><IntlMessages id=\"chat.hidebot\" /></span>\n                          </Fragment>\n                        }\n                      </button>\n                    }\n                    {botSettings && botSettings.multilingual && menu.payLoad === \"switch_language\" &&\n                      <button className=\"popupmenu\" key={menuIndex} onClick={() => MenuClick(menu.type, menu)}>\n                        <span className=\"language_icon\">\n                          <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                            <path d=\"M14.022,7h1a1.0013,1.0013,0,0,1,1,1V9a1,1,0,0,0,2,0V8a3.00328,3.00328,0,0,0-3-3h-1a1,1,0,0,0,0,2Zm-4,9h-1a1.0013,1.0013,0,0,1-1-1V14a1,1,0,0,0-2,0v1a3.00328,3.00328,0,0,0,3,3h1a1,1,0,0,0,0-2Zm11-1a1,1,0,0,0,0-2h-3v-.5a1,1,0,0,0-2,0V13h-3a1,1,0,0,0,0,2h5.18427a6.72756,6.72756,0,0,1-1.22553,2.52667,6.66828,6.66828,0,0,1-.62915-.98272.99972.99972,0,1,0-1.77929.9121,8.67791,8.67791,0,0,0,.9591,1.468A6.6182,6.6182,0,0,1,13.10645,20.023a1.00008,1.00008,0,0,0,.42675,1.9541,8.63506,8.63506,0,0,0,3.445-1.62164,8.72368,8.72368,0,0,0,3.46857,1.62115,1,1,0,1,0,.43066-1.95312,6.72477,6.72477,0,0,1-2.4461-1.09009A8.73637,8.73637,0,0,0,20.24371,15ZM9.05176,11.24268a1.00011,1.00011,0,0,0,1.94043-.48536L9.23486,3.72754a2.28107,2.28107,0,0,0-4.42578,0L3.05176,10.75732a1.00011,1.00011,0,0,0,1.94043.48536L5.5528,9H8.49115ZM6.0528,7l.69671-2.78711a.2913.2913,0,0,1,.54492,0L7.99115,7Z\"></path>\n                          </svg>\n                        </span>\n                        <span className=\"text\"><IntlMessages id=\"switch.language\" /></span>\n                      </button>\n                    }\n                  </Fragment>\n                ))}\n              </div>\n            ))}\n            <div className=\"popup_bottombar\">\n              <div className=\"popup_bottombar_row\">\n                <a href=\"\"\n                  onClick={() => BotSiteClick(\"https://www.myma.ai/?utm_source=messenger&utm_medium=branding&utm_campaign=clicks\")}\n                >&copy; {currentYear} Myma ai, Inc.</a>\n                <a className=\"page_link\" href=\"\"\n                  onClick={() => BotSiteClick(\"https://www.myma.ai/privacy-policy?utm_source=messenger&utm_medium=branding&utm_campaign=clicks\")}> Privacy</a>\n              </div>\n            </div>\n          </div>\n        </div>\n      )}\n    </Fragment>\n  )\n}","import React, { Component } from \"react\";\nimport IntlMessages from \"../helpers/IntlMessages\";\n//import \"./BookingApp.css\";\n//import Select from \"react-select\";\n\nexport default class PropertyPopup extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      active: this.props.open_property_popup,\n      isCheckedAvailability: this.props.isCheckedAvailability || false,\n      pid:\n        localStorage.getItem(this.props.property_state_store) !== undefined &&\n          localStorage.getItem(this.props.property_state_store) !== null\n          ? localStorage.getItem(this.props.property_state_store)\n          : \"\",\n    };\n\n    if (!this.props.bookingApp.rooms) {\n      this.props.bookingApp.rooms = 1;\n      this.props.bookingApp.adults = 1;\n      this.props.bookingApp.children = 0;\n    }\n\n    this.selectProperty = (elem) => {\n      this.props.bookingApp.selectedPid = elem;\n      this.props.setPropertyPopUp(false);\n      this.forceUpdate();\n      localStorage.setItem(this.props.bookingApp.lStore.PROPERTYID, elem.value);\n      localStorage.setItem(\n        this.props.bookingApp.lStore.PROPERTYNAME,\n        elem.label\n      );\n      this.props.loadFormSetting(elem.value);\n      this.props.bookingApp.callbacks.getStore().dispatch({\n        type: \"WEB_CHAT/SEND_EVENT\",\n        payload: {\n          name: \"webchat/update\",\n          value: {\n            pid: elem.value,\n            pname: elem.label,\n          },\n        },\n      });\n      this.setState({ active: false });\n      this.props.close_property_popup();\n      this.props.GetServiceAvailable(this.props.property_state_store);\n    };\n    this.sendDates = this.sendDates.bind(this);\n    this.toggle = this.toggle.bind(this);\n  }\n\n  // componentDidUpdate = (prevProps, prevState, snapshot) => {\n  //   if (\n  //     this.props.room_app &&\n  //     this.props.room_app.reinit &&\n  //     this.state.active !== true\n  //   ) {\n  //     this.setState({ active: this.props.room_app.reinit });\n  //     this.setState({ open: this.props.room_app.reinit });\n  //   }\n  // };\n\n  //  FIXME:\n  // This EventListener is to ensure that the pop up window closes when the user enters the input box at the bottom. But it will affect the input in the pop up window.\n  //  FIXME:\n  // componentDidMount = () => {\n  //   window.addEventListener(\"input\", this.close_pop.bind(this), false);\n  // };\n\n  toggle() {\n    const { active } = this.state;\n    this.setState({ active: !active });\n    this.setState({ open: !active });\n    this.props.setPropertyPopUp(false);\n    this.props.close_pop();\n    this.props.close_property_popup();\n  }\n  close_pop(event) {\n    if (this.state.active) {\n      this.setState({ active: false });\n      this.setState({ open: false });\n      this.props.setPropertyPopUp(false);\n      this.props.close_pop();\n      this.props.close_property_popup();\n    }\n  }\n\n  sendDates() {\n    var hotel = {};\n    if (this.props.bookingApp.selectedPid) {\n      hotel = this.state.properties.find(\n        (property) => property.pid === this.props.bookingApp.selectedPid\n      );\n    }\n    this.props.bookingApp.callbacks.getStore().dispatch({\n      type: \"WEB_CHAT/SEND_EVENT\",\n      payload: {\n        name: \"webchat/booking-details\",\n        value: {\n          hotel: hotel.name,\n          dates: this.props.bookingApp.dates,\n          rooms: this.props.bookingApp.rooms,\n          adults: this.props.bookingApp.adults,\n          kids: this.props.bookingApp.kids,\n        },\n      },\n    });\n    //this.close();\n    this.close_pop();\n  }\n\n  setCheckAvailability = (isCheckedAvailability) => {\n    this.setState({ isCheckedAvailability: isCheckedAvailability });\n  };\n\n  render() {\n    var { room_app } = this.props;\n    var { selectedPid } = this.props.bookingApp;\n    var hotel = \"\";\n    if (selectedPid) {\n      hotel = this.props.bookingApp.properties.find(\n        (property) => property.pid === selectedPid\n      );\n    }\n    return (\n      <div className=\"chat_box_popup_new\">\n        <div\n          className={`switch_language_popup ${this.state.active ? \"area\" : \"closepop\"\n            }`}\n        >\n          <div\n            className={\n              this.props.mobile == \"true\"\n                ? `switch_language_popup_header chat_header_mobile`\n                : `switch_language_popup_header`\n            }\n            style={{ backgroundColor: this.props.botSettings.colours.header }}\n          >\n            <div className=\"header_icon\" onClick={this.toggle}>\n              <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                width=\"24\"\n                height=\"24\"\n                viewBox=\"0 0 24 24\"\n                fill=\"currentColor\"\n              >\n                <path d=\"M13.41,12l6.3-6.29a1,1,0,1,0-1.42-1.42L12,10.59,5.71,4.29A1,1,0,0,0,4.29,5.71L10.59,12l-6.3,6.29a1,1,0,0,0,0,1.42,1,1,0,0,0,1.42,0L12,13.41l6.29,6.3a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42Z\"></path>\n              </svg>\n            </div>\n            <div\n              className=\"header_text\"\n              style={{ color: this.props.botSettings.colours.headerText }}\n            >\n              <IntlMessages id=\"switch.property\" />\n            </div>\n          </div>\n          <div className=\"switch_language_popup_body\">\n            <div\n              className={`switch_language_popup_body popup_items ${this.props.mobile == \"true\"\n                  ? \"popup_items_mobile\"\n                  : \"popup_items\"\n                }`}\n            >\n              {this.props.bookingApp.properties &&\n                this.props.bookingApp.properties.map((elem, index) => (\n                  <button\n                    className=\"popupmenu\"\n                    onClick={() => this.selectProperty(elem)}\n                    key={index}\n                  >\n                    <span className=\"text\">{elem.label}</span>\n                    {this.state.pid === elem.value ? (\n                      <svg\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        width=\"24\"\n                        height=\"24\"\n                        viewBox=\"0 0 24 24\"\n                        fill=\"currentColor\"\n                        style={{ color: \"#19af19\" }}\n                      >\n                        <path d=\"M18.71,7.21a1,1,0,0,0-1.42,0L9.84,14.67,6.71,11.53A1,1,0,1,0,5.29,13l3.84,3.84a1,1,0,0,0,1.42,0l8.16-8.16A1,1,0,0,0,18.71,7.21Z\"></path>\n                      </svg>\n                    ) : (\n                      \"\"\n                    )}\n                  </button>\n                ))}\n            </div>\n          </div>\n        </div>\n      </div>\n      // <div className=\"chat_popup booking_popup\" style={{ zIndex: 3 }}>\n      //   <div\n      //     className={`popup-slider ${\n      //       this.state.active || (room_app && room_app.reinit)\n      //         ? \"slideIn\"\n      //         : \"slideOut\"\n      //     }`}\n      //     style={{ marginLeft: \"auto\", marginRight: \"auto\" }}\n      //   >\n      //     <div className=\"w-100\">\n      //       {this.props.bookingApp.properties && (\n      //         <Select\n      //           options={this.props.bookingApp.properties}\n      //           onChange={this.selectProperty}\n      //           value={this.props.bookingApp.selectedPid}\n      //           placeholder=\"Select Property...\"\n      //           styles={customStyles}\n      //         />\n      //       )}\n      //     </div>\n      //   </div>\n      //   {(room_app && room_app.details.length > 0) ||\n      //   this.props.bookingApp.properties !== undefined ? (\n      //     <div\n      //       className=\"booking_close_divider\"\n      //       style={{\n      //         backgroundColor: this.props.botSettings.colours.header\n      //       }}\n      //       onClick={this.toggle}\n      //     >\n      //       {this.state.active ? (\n      //         <span className=\"glyphicon glyphicon-menu-up booking_close_divider_icon\" />\n      //       ) : (\n      //         <span className=\"glyphicon glyphicon-menu-down booking_close_divider_icon\" />\n      //       )}\n      //     </div>\n      //   ) : null}\n      // </div>\n    );\n  }\n}\n","import appLocaleData from 'react-intl/locale-data/en';\nimport enMessages from '../locales/en_US';\n\nconst EnLang = {\n    messages: {\n        ...enMessages\n    },\n    locale: 'en-US',\n    data: appLocaleData\n};\nexport default EnLang;","import appLocaleData from 'react-intl/locale-data/es';\nimport esMessages from '../locales/es_ES';\n\nconst EsLang = {\n    messages: {\n        ...esMessages\n    },\n    locale: 'es-ES',\n    data: appLocaleData\n};\nexport default EsLang;","import appLocaleData from 'react-intl/locale-data/zh';\nimport chMessages from '../locales/zh-ZH';\n\nconst ChLang = {\n    messages: {\n        ...chMessages\n    },\n    locale: 'zh-ZH',\n    data: appLocaleData\n};\nexport default ChLang;","import appLocaleData from 'react-intl/locale-data/fr';\nimport chMessages from '../locales/fr-FR';\n\nconst FrLang = {\n    messages: {\n        ...chMessages\n    },\n    locale: 'fr-FR',\n    data: appLocaleData\n};\nexport default FrLang;","import appLocaleData from 'react-intl/locale-data/zh';\nimport chMessages from '../locales/zh-HK';\n\nconst ChLang = {\n    messages: {\n        ...chMessages\n    },\n    locale: 'zh-HK',\n    data: appLocaleData\n};\nexport default ChLang;","import { mi } from './mi';\nimport miMessages from '../locales/mi-MI';\n\nconst MiLang = {\n    messages: {\n        ...miMessages\n    },\n    locale: 'mi-MI',\n    data: mi\n};\nexport default MiLang;","export const mi = {\n\n    locale: 'mi',\n    pluralRuleFunction(e, t) {\n        return t && e === 1 ? 'one' : 'other';\n    }\n}","import appLocaleData from 'react-intl/locale-data/id';\nimport enMessages from '../locales/id_ID';\n\nconst IdLang = {\n    messages: {\n        ...enMessages\n    },\n    locale: 'id-ID',\n    data: appLocaleData\n};\nexport default IdLang;","import appLocaleData from 'react-intl/locale-data/hi';\nimport hiMessages from '../locales/hi_HI';\n\nconst HiLang = {\n    messages: {\n        ...hiMessages\n    },\n    locale: 'hi-HI',\n    data: appLocaleData\n};\nexport default HiLang;","import appLocaleData from 'react-intl/locale-data/af';\nimport enMessages from '../locales/af-AF';\n\nconst AfLang = {\n    messages: {\n        ...enMessages\n    },\n    locale: 'af-AF',\n    data: appLocaleData\n};\nexport default AfLang;","import appLocaleData from 'react-intl/locale-data/de';\nimport deMessages from '../locales/de-DE';\n\nconst DeLang = {\n    messages: {\n        ...deMessages\n    },\n    locale: 'de-DE',\n    data: appLocaleData\n};\nexport default DeLang;","import appLocaleData from 'react-intl/locale-data/ja';\nimport jaMessages from '../locales/ja-JA';\n\nconst JaLang = {\n    messages: {\n        ...jaMessages\n    },\n    locale: 'ja-JA',\n    data: appLocaleData\n};\nexport default JaLang;","import appLocaleData from 'react-intl/locale-data/ko';\nimport koMessages from '../locales/ko-KO';\n\nconst KoLang = {\n    messages: {\n        ...koMessages\n    },\n    locale: 'ko-KO',\n    data: appLocaleData\n};\nexport default KoLang;","import appLocaleData from 'react-intl/locale-data/th';\nimport thMessages from '../locales/th-TH';\n\nconst ThLang = {\n    messages: {\n        ...thMessages\n    },\n    locale: 'th-TH',\n    data: appLocaleData\n};\nexport default ThLang;","import appLocaleData from 'react-intl/locale-data/tl';\nimport tlMessages from '../locales/tl-TL';\n\nconst TlLang = {\n    messages: {\n        ...tlMessages\n    },\n    locale: 'tl-TL',\n    data: appLocaleData\n};\nexport default TlLang;","import appLocaleData from 'react-intl/locale-data/vi';\nimport viMessages from '../locales/vi-VI';\n\nconst ViLang = {\n    messages: {\n        ...viMessages\n    },\n    locale: 'vi-VI',\n    data: appLocaleData\n};\nexport default ViLang;","import appLocaleData from 'react-intl/locale-data/ar';\nimport arMessages from '../locales/ar-AR';\n\nconst ArLang = {\n    messages: {\n        ...arMessages\n    },\n    locale: 'ar-AR',\n    data: appLocaleData\n};\nexport default ArLang;","import appLocaleData from 'react-intl/locale-data/ru';\nimport ruMessages from '../locales/ru-RU';\n\nconst RuLang = {\n    messages: {\n        ...ruMessages\n    },\n    locale: 'ru-RU',\n    data: appLocaleData\n};\nexport default RuLang;","import { addLocaleData } from \"react-intl\";\nimport enLang from \"./entries/en-US\";\nimport esLang from \"./entries/es-ES\";\nimport chLang from \"./entries/zh-ZH\";\nimport frLang from \"./entries/fr-FR\";\nimport twLang from \"./entries/zh-HK\";\nimport miLang from \"./entries/mi-MI\";\nimport idLang from \"./entries/id-ID\";\nimport hiLang from \"./entries/hi-HI\";\n\nimport afLang from \"./entries/af-AF\";\nimport deLang from \"./entries/de-DE\";\nimport jaLang from \"./entries/ja-JA\";\nimport koLang from \"./entries/ko-KO\";\nimport thLang from \"./entries/th-TH\";\nimport tlLang from \"./entries/tl-TL\";\nimport viLang from \"./entries/vi-VI\";\nimport arLang from \"./entries/ar-AR\";\nimport ruLang from \"./entries/ru-RU\";\nimport fiLang from \"./entries/fi-FI\";\n\nconst AppLocale = {\n  en: enLang,\n  es: esLang,\n  zh: chLang,\n  fr: frLang,\n  hk: twLang,\n  mi: miLang,\n  id: idLang,\n  hi: hiLang,\n  af:afLang,\n  ar:arLang,\n  de:deLang,\n  ja:jaLang,\n  ko:koLang,\n  th:thLang,\n  tl:tlLang,\n  vi:viLang,\n  ru:ruLang,\n  fi:fiLang,\n};\naddLocaleData(AppLocale.en.data);\naddLocaleData(AppLocale.es.data);\naddLocaleData(AppLocale.zh.data);\naddLocaleData(AppLocale.fr.data);\naddLocaleData(AppLocale.hk.data);\naddLocaleData(AppLocale.mi.data);\naddLocaleData(AppLocale.id.data);\naddLocaleData(AppLocale.hi.data);\naddLocaleData(AppLocale.af.data);\naddLocaleData(AppLocale.ar.data);\naddLocaleData(AppLocale.de.data);\naddLocaleData(AppLocale.ja.data);\naddLocaleData(AppLocale.ko.data);\naddLocaleData(AppLocale.th.data);\naddLocaleData(AppLocale.tl.data);\naddLocaleData(AppLocale.vi.data);\naddLocaleData(AppLocale.ru.data);\naddLocaleData(AppLocale.fi.data);\n\nexport default AppLocale;\n","import appLocaleData from 'react-intl/locale-data/fi';\nimport fiMessages from '../locales/fi_FI';\n\nconst FiLang = {\n    messages: {\n        ...fiMessages\n    },\n    locale: 'fi-FI',\n    data: appLocaleData\n};\nexport default FiLang;","import React from 'react';\n\nconst CookiePopup = ({ isOpen, onClose, content }) => {\n    if (!isOpen) return null;\n\n\n\n    return (\n        <div className=\"chat_box_popup_cookie\" >\n            <div className=\"cookie_popup\">\n                <button className=\"cookie-close\" onClick={() => onClose} > &times;</button>\n                <div className=\"iframe-container\" onClick={() => onClose}>\n\n                    <iframe\n                        src={content}\n                        width='100%'\n                        height='100%'\n                        style={{ border: 'none', borderRadius: '10px' }}\n                        title=\"Content\"\n                    />\n                </div>\n            </div>\n        </div>\n    );\n};\n\nexport default CookiePopup;\n","import React, { Component } from \"react\";\nimport \"./BookingApp.css\";\nimport Select from \"react-select\";\n\nconst customStyles = {\n  control: base => ({\n    ...base,\n    borderColor: \"#ccc\",\n    boxShadow: \"0 0 0 1 #ccc\",\n    \"&:hover\": {\n      borderColor: \"#ccc\"\n    }\n  })\n};\n\nexport default class BookingApp extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      active: this.props.bookingApp.open,\n      isCheckedAvailability: this.props.isCheckedAvailability || false\n    };\n\n    if (!this.props.bookingApp.rooms) {\n      this.props.bookingApp.rooms = 1;\n      this.props.bookingApp.adults = 1;\n      this.props.bookingApp.children = 0;\n    }\n\n    this.selectProperty = event => {\n      this.props.bookingApp.selectedPid = event;\n      this.forceUpdate();\n      localStorage.setItem(\n        this.props.bookingApp.lStore.PROPERTYID,\n        event.value\n      );\n      localStorage.setItem(\n        this.props.bookingApp.lStore.PROPERTYNAME,\n        event.label\n      );\n\n      this.props.bookingApp.callbacks.getStore().dispatch({\n        type: \"WEB_CHAT/SEND_EVENT\",\n        payload: {\n          name: \"webchat/update\",\n          value: {\n            pid: event.value,\n            pname: event.label\n          }\n        }\n      });\n      this.setState({ active: false });     \n    };\n    this.toggle = this.toggle.bind(this);\n    this.sendDates = this.sendDates.bind(this);\n  }\n\n  componentDidUpdate = (prevProps, prevState, snapshot) => {\n    if (\n      this.props.room_app &&\n      this.props.room_app.reinit &&\n      this.state.active !== true\n    ) {\n      this.setState({ active: this.props.room_app.reinit });\n      this.setState({ open: this.props.room_app.reinit });\n    }\n  };\n\n  //  FIXME:\n  // This EventListener is to ensure that the pop up window closes when the user enters the input box at the bottom. But it will affect the input in the pop up window.\n  //  FIXME:\n  // componentDidMount = () => {\n  //   window.addEventListener(\"input\", this.close_pop.bind(this), false);\n  // };\n\n  toggle() {\n    const { active } = this.state;\n    this.setState({ active: !active });\n    this.setState({ open: !active });\n    this.props.close_pop();\n  }\n  close_pop(event) {\n    if (this.state.active) {\n      this.setState({ active: false });\n      this.setState({ open: false });\n      this.props.close_pop();\n    }\n  }\n\n  sendDates() {\n    var hotel = {};\n    if (this.props.bookingApp.selectedPid) {\n      hotel = this.state.properties.find(\n        property => property.pid === this.props.bookingApp.selectedPid\n      );\n    }\n    this.props.bookingApp.callbacks.getStore().dispatch({\n      type: \"WEB_CHAT/SEND_EVENT\",\n      payload: {\n        name: \"webchat/booking-details\",\n        value: {\n          hotel: hotel.name,\n          dates: this.props.bookingApp.dates,\n          rooms: this.props.bookingApp.rooms,\n          adults: this.props.bookingApp.adults,\n          kids: this.props.bookingApp.kids\n        }\n      }\n    });\n    this.close();\n  }\n\n  setCheckAvailability = isCheckedAvailability => {\n    this.setState({ isCheckedAvailability: isCheckedAvailability });\n  };\n\n  render() {\n    var { room_app } = this.props;\n    var {  selectedPid } = this.props.bookingApp;   \n\n    var hotel = \"\";\n    if (selectedPid) {\n      hotel = this.props.bookingApp.properties.find(\n        property => property.pid === selectedPid\n      );\n    }   \n\n    return (\n      <div className=\"chat_popup booking_popup\" style={{ zIndex: 3 }}> \n        <div\n          className={`popup-slider ${\n            this.state.active || (room_app && room_app.reinit)\n              ? \"slideIn\"\n              : \"slideOut\"\n          }`}\n          style={{ marginLeft: \"auto\", marginRight: \"auto\" }}\n        >\n          <div className=\"w-100\">\n            {this.props.bookingApp.properties && (\n              <Select               \n                options={this.props.bookingApp.properties}\n                onChange={this.selectProperty}\n                value={this.props.bookingApp.selectedPid}\n                placeholder=\"Select Property...\"\n                styles={customStyles}\n              />\n            )}            \n          </div>          \n        </div>        \n        {(room_app && room_app.details.length > 0) ||\n        this.props.bookingApp.properties !== undefined ? (\n          <div\n            className=\"booking_close_divider\"\n            style={{\n              backgroundColor: this.props.botSettings.colours.header\n            }}\n            onClick={this.toggle}\n          >\n            {this.state.active ? (\n              <span className=\"glyphicon glyphicon-menu-up booking_close_divider_icon\" />\n            ) : (\n              <span className=\"glyphicon glyphicon-menu-down booking_close_divider_icon\" />\n            )}\n          </div>\n        ) : null}\n      </div>\n    );\n  }\n}\n","import React from 'react';\n\nimport './ChatWindowTypingIndicator.css';\n\nexport default () => next => ({ activeTyping }) => {\n    removeTypingIndicator();\n    activeTyping = Object.values(activeTyping);\n    if (!!activeTyping.length) {\n        addTypingIndicator();\n    } else {\n        removeTypingIndicator();\n    }\n\n    return (!!activeTyping.length && (\n        <div className=\"ako-webchat-typing-indicator\">\n        </div>\n    ))\n}\n\nfunction addTypingIndicator() {  \n    let messageList = document.querySelector(\"#chat_box .webchat__basic-transcript div ul\");\n    if (!messageList) {\n        console.error(`Typing indicator: couldn't find messageList`);\n        return;\n    }\n\n    let messages = messageList.children;\n    let last = messages[messages.length - 1];\n\n    if (!last || !last.querySelector('.typing-indicator-inline')) {\n        messageList.appendChild(getTypingBox())\n    }\n}\n\nfunction removeTypingIndicator() {\n    let indicator = document.querySelector(\".typing-indicator-inline\");\n    \n    if (indicator) {\n        indicator.parentNode.removeChild(indicator);\n    }\n}\n\nfunction getTypingBox() {\n    let tag = document.createElement(\"li\");\n    tag.innerHTML = `\n        <div class=\"typing-indicator-inline\">\n            <div class=\"typing-indicator-disp\">\n                <span></span>\n                <span></span>\n                <span></span>\n            </div>\n        </div>\n    `;\n    tag.className = \"\";\n    tag.setAttribute('role', 'listitem');\n    return tag;\n}","const SAVE_FEEDBACK = process.env.REACT_APP_API_URL + \"/saveFeedback\";\nvar INTERVAL_TIMER;\n\nexport default class ChatWindowParticipantTagger {\n  constructor(botName, botImage, gid, iid, mobile) {\n    this.botName = botName;\n    this.botImage = botImage;\n    this.gid = gid;\n    this.iid = iid;\n    this.mobile = mobile;\n  }\n\n  start() {\n    if (INTERVAL_TIMER) {\n      clearInterval(INTERVAL_TIMER);\n    }\n    INTERVAL_TIMER = setInterval(this.addParticipantTags.bind(this), 200);\n  }\n\n  // Adds tags for user/bot above each block of messages\n  addParticipantTags() {\n    let msChatwindow = document.querySelector(\n      \"#chat_box .webchat__basic-transcript div ul\"\n    );\n    if (msChatwindow) {\n      let messageBubbles = msChatwindow.children;\n\n      for (let row = 0; row < messageBubbles.length; row++) {\n        // Ignore tags\n        if (messageBubbles[row].className.includes(\"participant-tag\")) {\n          continue;\n        }\n\n        // Check if this is a message at the start of a block\n        // (by checking if a message AND previous message didn't exist or was the last of a block)\n        let isFirst = row === 0;\n        let isFirstOfBlock = false;\n        let alreadyHasTag = false;\n        if (!isFirst) {\n          if (\n            messageBubbles[row].querySelector(\".webchat__bubble--from-user\")\n          ) {\n            isFirstOfBlock = !messageBubbles[row - 1].querySelector(\n              \".webchat__bubble--from-user\"\n            );\n          } else {\n            isFirstOfBlock = messageBubbles[row - 1].querySelector(\n              \".webchat__bubble--from-user\"\n            );\n          }\n\n          alreadyHasTag =\n            messageBubbles[row - 1].className.includes(\"participant-tag\");\n        }\n        if ((isFirst || isFirstOfBlock) && !alreadyHasTag) {\n          let tag;\n          // Check if this is a user/bot block\n          if (\n            messageBubbles[row].querySelector(\".webchat__bubble--from-user\")\n          ) {\n            tag = this.getUserTag();\n          } else {\n            tag = this.getBotTag();\n          }\n\n          msChatwindow.insertBefore(tag, messageBubbles[row]);\n        }\n        let isLast = false;\n        let alreadyHasFeed = null;\n        let statusDiv = messageBubbles[row].querySelector(\n          \".webchat__stacked-layout__status span\"\n        );\n        if (statusDiv === null) {\n          statusDiv = messageBubbles[row].querySelector(\n            \".webchat__carousel-filmstrip__status span\"\n          );\n        }\n        if (row !== 0 && statusDiv !== null) {\n          if (row < messageBubbles.length) {\n            if (messageBubbles[row + 1] !== undefined) {\n              if (\n                messageBubbles[row + 1].querySelector(\n                  \".webchat__bubble--from-user\"\n                )\n              ) {\n                isLast = true;\n              }\n              alreadyHasFeed = statusDiv.querySelector(\".feedback-tag\");\n            } else {\n              isLast = true;\n              alreadyHasFeed = statusDiv.querySelector(\".feedback-tag\");\n            }\n          }\n        }\n        if (row !== 0 && isLast && alreadyHasFeed === null) {\n          let msgId,\n            conId,\n            elementName,\n            markdownTextLen,\n            feedback_response,\n            btnShow,\n            messageType;\n          let li = statusDiv.parentElement.parentElement;\n          let bubbleWidth = false;\n          let isAdaptingCard = false;\n          let isZenDesk = false;\n          if (li !== null) {\n            let childdiv = li.children;\n            if (childdiv[0].querySelector(\".herocard-container\")) {\n              let herocard = childdiv[0].querySelector(\".herocard-container\");\n              msgId = herocard.getAttribute(\"data-activity-id\");\n              conId = herocard.getAttribute(\"data-con-id\");\n              feedback_response = herocard.getAttribute(\"data-feedback\");\n              btnShow = herocard.getAttribute(\"data-view-btn\");\n              messageType = herocard.getAttribute(\"data-msg-type\");\n              const zendesk = herocard.getAttribute(\"data-inzendesk\");\n              isZenDesk = zendesk === \"false\" ? false : true;\n            } else if (childdiv[0].querySelector(\".videocard-container\")) {\n              let videocard = childdiv[0].querySelector(\".videocard-container\");\n              msgId = videocard.getAttribute(\"data-activity-id\");\n              conId = videocard.getAttribute(\"data-con-id\");\n              feedback_response = videocard.getAttribute(\"data-feedback\");\n              btnShow = videocard.getAttribute(\"data-view-btn\");\n              messageType = videocard.getAttribute(\"data-msg-type\");\n              const zendesk = videocard.getAttribute(\"data-inzendesk\");\n              isZenDesk = zendesk === \"false\" ? false : true;\n            } else if (childdiv[0].querySelector(\".markdown\")) {\n              let herocard = childdiv[0].querySelector(\".markdown\");\n              msgId = herocard.getAttribute(\"data-activity-id\");\n              conId = herocard.getAttribute(\"data-con-id\");\n              feedback_response = herocard.getAttribute(\"data-feedback\");\n              btnShow = herocard.getAttribute(\"data-view-btn\");\n              messageType = herocard.getAttribute(\"data-msg-type\");\n              let width = herocard.getAttribute(\"width\");\n              elementName = \"markdown\";\n              bubbleWidth = width === \"true\" ? true : false;\n              markdownTextLen = herocard.getAttribute(\"text-len\");\n              const zendesk = herocard.getAttribute(\"data-inzendesk\");\n              isZenDesk = zendesk === \"false\" ? false : true;\n            } else if (childdiv[0].querySelector(\".ac-adaptiveCard\")) {\n              isAdaptingCard = true;\n            }\n          }\n          let tag = this.getBotFeedBack(msgId, conId, feedback_response);\n\n          if (\n            !messageBubbles[row].querySelector(\".webchat__bubble--from-user\")\n          ) {\n            let layoutMsg = messageBubbles[row].querySelector(\n              \".webchat__stacked-layout__message\"\n            );\n            if (layoutMsg !== null && bubbleWidth === true) {\n              if (markdownTextLen > 50 && markdownTextLen < 60) {\n                tag.classList.add(\"feed-left-message-min\");\n              } else {\n                tag.classList.add(\"feed-left-message\");\n              }\n            }\n            let attecMsg = messageBubbles[row].querySelector(\n              \".webchat__stacked-layout__attachment\"\n            );\n            if (attecMsg !== null) {\n              let formMsg = attecMsg.querySelector(\n                \".webchat__adaptive-card-renderer\"\n              );\n              if (formMsg !== null) {\n                let groupForm = formMsg.querySelector(\".ac-textBlock p\");\n                if (\n                  groupForm.innerHTML.includes(\"Conference\") ||\n                  groupForm.innerHTML.includes(\"Long Stay Enquiry\")\n                ) {\n                  if (this.mobile === \"true\") {\n                    tag.classList.add(\"feed-left-attachform-conference-mobile\");\n                  } else {\n                    tag.classList.add(\"feed-left-attachform-conference\");\n                  }\n                } else {\n                  tag.classList.add(\"feed-left-attachform\");\n                }\n              } else {\n                if (this.mobile === \"true\") {\n                  tag.classList.add(\"feed-left-attachment_mobile\");\n                } else {\n                  tag.classList.add(\"feed-left-attachment\");\n                }\n              }\n            }\n            let herocardCarousel = messageBubbles[row].querySelector(\n              \".webchat__carousel-layout .herocard-container\"\n            );\n            if (herocardCarousel !== null) {\n              if (this.mobile === \"true\") {\n                tag.classList.add(\"feed-left-attachment-carousel_mobile\");\n              } else {\n                tag.classList.add(\"feed-left-attachment-carousel\");\n              }\n              let get = messageBubbles[row].querySelector(\n                \".webchat__carousel-filmstrip__attachments\"\n              );\n              let textarea = get.getElementsByClassName(\"herocard-text-area\");\n              if (textarea.length > 0) {\n                let herocardTextArea = herocardCarousel.querySelector(\n                  \".herocard-text-area\"\n                );\n                if (herocardTextArea === null) {\n                  if (this.mobile === \"true\") {\n                    tag.style.bottom = \"0.7rem\";\n                  } else {\n                    tag.style.bottom = \"0.8rem\";\n                  }\n                }\n              }\n            }\n            let videocardCarousel = messageBubbles[row].querySelector(\n              \".webchat__carousel-layout .videocard-container\"\n            );\n            if (videocardCarousel != null) {\n              if (this.mobile === \"true\") {\n                tag.classList.add(\"feed-left-carousel-layout_mobile\");\n              } else {\n                tag.classList.add(\"feed-left-carousel-layout\");\n              }\n              let get = messageBubbles[row].querySelector(\n                \".webchat__carousel-filmstrip__attachments\"\n              );\n              let textarea = get.getElementsByClassName(\"videocard-text-area\");\n              if (textarea.length > 0) {\n                let videocardTextArea = videocardCarousel.querySelector(\n                  \".videocard-text-area\"\n                );\n                if (videocardTextArea === null) {\n                  if (this.mobile === \"true\") {\n                    tag.style.bottom = \"3rem\";\n                  } else {\n                    tag.style.bottom = \"0.8rem\";\n                  }\n                }\n              }\n            }\n            statusDiv.append(tag);\n            if (elementName === \"markdown\" && bubbleWidth === false) {\n              statusDiv.querySelector(\".feedback-tag\").style.display = \"none\";\n            }\n          }\n          if (messageType === \"Fallback\" || messageType === \"Welcome\") {\n            tag.remove();\n          }\n          if (isAdaptingCard === true) {\n            tag.remove();\n          }\n          if (\n            btnShow !== undefined &&\n            btnShow !== null &&\n            btnShow.split(\"|\")[1] === \"0000000\"\n          ) {\n            tag.remove();\n          }\n          if (isZenDesk === true) {\n            tag.remove();\n          }\n        }\n      }\n    } else {\n      // console.error(`Participant Tagger: Couldn't find the chatWindow.`);\n    }\n  }\n\n  getUserTag() {\n    let tag = document.createElement(\"li\");\n    tag.innerHTML = \"You\";\n    tag.className = \"participant-tag participant-tag-user\";\n    tag.setAttribute(\"role\", \"listitem\");\n    return tag;\n  }\n\n  getBotTag() {\n    let tag = document.createElement(\"li\");\n    tag.innerHTML = `<div class='participant-tag-bot-bubble' style=\"background-image: url('${this.botImage}')\"> </div> \n            <div class='participant-tag-bot-text'> ${this.getAssistantName(this.botName)} </div>`;\n    tag.className = \"participant-tag participant-tag-bot\";\n    tag.setAttribute(\"role\", \"listitem\");\n    return tag;\n  }\n  getAssistantName(assistantDetail) {\n    var assistantName = \"Jenni\";\n    if (assistantDetail.length > 0) {\n      var data = assistantDetail.filter(k => k.locale === localStorage.getItem(this.iid + \"-language\"));\n      if (data.length === 0) {\n        assistantName = assistantDetail.filter(k => k.locale === \"en\")[0].name;\n      } else {\n        assistantName = data[0].name;\n      }\n    }\n\n    return assistantName;\n  }\n  // Called when chat reset so the tags don't get orphaned and sit around\n  clearTags() {\n    let tags = document.querySelectorAll(\".participant-tag\");\n    for (let tag of tags) {\n      tag.remove();\n    }\n  }\n  TanslateWasHelpFullText(locale) {\n    switch (locale) {\n      case \"af\":\n        return \"Het hierdie gehelp?\";\n      case \"ar\":\n        return \"هل كان هذا مفيدا؟\";\n      case \"de\":\n        return \"War dies hilfreich?\";\n      case \"es\":\n        return \"¿Fue útil?\";\n      case \"fr\":\n        return \"Est-ce que cela a été utile?\";\n      case \"hi\":\n        return \"क्या ये सहायक था?\";\n      case \"id\":\n        return \"Apakah ini membantu?\";\n      case \"ja\":\n        return \"これは役に立ちましたか?\";\n      case \"ko\":\n        return \"도움이 되었나요?\";\n      case \"mi\":\n        return \"I awhina tenei?\";\n      case \"ru\":\n        return \"Было ли это полезно?\";\n      case \"tl\":\n        return \"Nakakatulong ba ito?\";\n      case \"th\":\n        return \"สิ่งนี้มีประโยชน์หรือไม่?\";\n      case \"vi\":\n        return \"Là hữu ích không?\";\n      case \"zh\":\n        return \"这个有帮助吗?\";\n      case \"zh-TW\":\n        return \"這個有幫助嗎?\";\n      case \"ar\":\n        return \"هل كان هذا مفيدا؟\";\n      default:\n        return \"Was this helpful?\";\n    }\n  }\n\n  getBotFeedBack(msgId, conId, feedback_response) {\n    let gid = this.gid;\n    let iid = this.iid;\n    let tag = document.createElement(\"div\");\n    tag.className = \"feedback-tag chat_feedback_container\";\n\n    let tagBody = document.createElement(\"div\");\n    tagBody.className = \"feedback-tag chat_feedBack_body\";\n    tag.appendChild(tagBody);\n\n    let tagBodyResponse = document.createElement(\"div\");\n    tagBodyResponse.className = \"feedback-response-body\";\n    tagBodyResponse.style.display = \"none\";\n    tag.appendChild(tagBodyResponse);\n    let tagFeedbackText = document.createElement(\"div\");\n    tagFeedbackText.className = \"chat_feedback_text\";\n    tagFeedbackText.innerText = this.TanslateWasHelpFullText(\n      localStorage.getItem(this.iid + \"-language\")\n    );\n    tagBody.appendChild(tagFeedbackText);\n\n    let likeButton = document.createElement(\"button\");\n    let dislikeButton = document.createElement(\"button\");\n    let orignalBtn = document.createElement(\"button\");\n    likeButton.className = \"btn_like\";\n    likeButton.value = msgId;\n    likeButton.innerHTML =\n      \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='currentColor'><path d='M21.3,10.08A3,3,0,0,0,19,9H14.44L15,7.57A4.13,4.13,0,0,0,11.11,2a1,1,0,0,0-.91.59L7.35,9H5a3,3,0,0,0-3,3v7a3,3,0,0,0,3,3H17.73a3,3,0,0,0,2.95-2.46l1.27-7A3,3,0,0,0,21.3,10.08ZM7,20H5a1,1,0,0,1-1-1V12a1,1,0,0,1,1-1H7Zm13-7.82-1.27,7a1,1,0,0,1-1,.82H9V10.21l2.72-6.12A2.11,2.11,0,0,1,13.1,6.87L12.57,8.3A2,2,0,0,0,14.44,11H19a1,1,0,0,1,.77.36A1,1,0,0,1,20,12.18Z'></path></svg>\";\n    likeButton.addEventListener(\"click\", function () {\n      if (gid !== undefined && conId !== undefined) {\n        tagBody.style.display = \"none\";\n        tagBodyResponse.style.display = \"block\";\n        orignalBtn.style.color = \"green\";\n        orignalBtn.innerHTML =\n          \"<svg xmlns='http://www.w3.org/2000/svg' style='margin-bottom:5px;margin-left:-1px' width='20' height='20' viewBox='0 0 24 24' fill='currentColor'><path d='M21.3,10.08A3,3,0,0,0,19,9H14.44L15,7.57A4.13,4.13,0,0,0,11.11,2a1,1,0,0,0-.91.59L7.35,9H5a3,3,0,0,0-3,3v7a3,3,0,0,0,3,3H17.73a3,3,0,0,0,2.95-2.46l1.27-7A3,3,0,0,0,21.3,10.08ZM7,20H5a1,1,0,0,1-1-1V12a1,1,0,0,1,1-1H7Zm13-7.82-1.27,7a1,1,0,0,1-1,.82H9V10.21l2.72-6.12A2.11,2.11,0,0,1,13.1,6.87L12.57,8.3A2,2,0,0,0,14.44,11H19a1,1,0,0,1,.77.36A1,1,0,0,1,20,12.18Z'></path></svg>\";\n\n        let body = {\n          groupId: gid,\n          messageId: this.value,\n          feedback: \"Like\",\n        };\n        try {\n          fetch(`${SAVE_FEEDBACK}`, {\n            method: \"POST\",\n            headers: {\n              Accept: \"application/json\",\n              \"Content-Type\": \"application/json\",\n            },\n            body: JSON.stringify(body),\n          });\n        } catch (error) { }\n        let getOldFeed = JSON.parse(\n          localStorage.getItem(iid + \"-chatfeedback\")\n        );\n        if (getOldFeed === null) {\n          getOldFeed = [];\n        }\n        let new_chat_state = [...getOldFeed];\n        let getIndex = new_chat_state.findIndex(\n          (index) => index.messageId === this.value\n        );\n        if (getIndex === -1) {\n          new_chat_state.push({ messageId: this.value, feedback: \"Like\" });\n        } else {\n          new_chat_state[getIndex].messageId = this.value;\n          new_chat_state[getIndex].feedback = \"Like\";\n        }\n        localStorage.setItem(\n          iid + \"-chatfeedback\",\n          JSON.stringify(new_chat_state)\n        );\n      }\n    });\n\n    tagBody.appendChild(likeButton);\n\n    dislikeButton.className = \"btn_dislike\";\n    dislikeButton.value = msgId;\n    dislikeButton.innerHTML =\n      \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='currentColor'><path d='M19,2H6.27A3,3,0,0,0,3.32,4.46l-1.27,7A3,3,0,0,0,5,15H9.56L9,16.43A4.13,4.13,0,0,0,12.89,22a1,1,0,0,0,.91-.59L16.65,15H19a3,3,0,0,0,3-3V5A3,3,0,0,0,19,2ZM15,13.79l-2.72,6.12a2.13,2.13,0,0,1-1.38-2.78l.53-1.43A2,2,0,0,0,9.56,13H5a1,1,0,0,1-.77-.36A1,1,0,0,1,4,11.82l1.27-7a1,1,0,0,1,1-.82H15ZM20,12a1,1,0,0,1-1,1H17V4h2a1,1,0,0,1,1,1Z'></path></svg>\";\n\n    dislikeButton.addEventListener(\"click\", function () {\n      if (gid !== undefined && conId !== undefined) {\n        tagBody.style.display = \"none\";\n        tagBodyResponse.style.display = \"block\";\n        orignalBtn.style.color = \"red\";\n        orignalBtn.innerHTML =\n          \"<svg xmlns='http://www.w3.org/2000/svg' style='margin-bottom:1px;margin-left:-1px' width='20' height='20' viewBox='0 0 24 24' fill='currentColor'><path d='M19,2H6.27A3,3,0,0,0,3.32,4.46l-1.27,7A3,3,0,0,0,5,15H9.56L9,16.43A4.13,4.13,0,0,0,12.89,22a1,1,0,0,0,.91-.59L16.65,15H19a3,3,0,0,0,3-3V5A3,3,0,0,0,19,2ZM15,13.79l-2.72,6.12a2.13,2.13,0,0,1-1.38-2.78l.53-1.43A2,2,0,0,0,9.56,13H5a1,1,0,0,1-.77-.36A1,1,0,0,1,4,11.82l1.27-7a1,1,0,0,1,1-.82H15ZM20,12a1,1,0,0,1-1,1H17V4h2a1,1,0,0,1,1,1Z'></path></svg>\";\n\n        let body = {\n          groupId: gid,\n          messageId: this.value,\n          feedback: \"Dislike\",\n        };\n        try {\n          fetch(`${SAVE_FEEDBACK}`, {\n            method: \"POST\",\n            headers: {\n              Accept: \"application/json\",\n              \"Content-Type\": \"application/json\",\n            },\n            body: JSON.stringify(body),\n          });\n        } catch (error) { }\n        let feedback_popup = document.getElementById(\"feedback_popup\");\n        if (feedback_popup !== null) {\n          document\n            .getElementById(\"feedback_popup_body\")\n            .classList.remove(\"closepop\");\n          document.getElementById(\"feedback_popup_body\").classList.add(\"area\");\n          let feedBackButton = document.getElementById(\"feedback_button\");\n\n          if (feedBackButton !== null) {\n            feedBackButton.value = this.value;\n          }\n          feedback_popup.style.display = \"block\";\n\n        }\n        let getOldFeed = JSON.parse(\n          localStorage.getItem(iid + \"-chatfeedback\")\n        );\n        if (getOldFeed === null) {\n          getOldFeed = [];\n        }\n        let new_chat_state = [...getOldFeed];\n        let getIndex = new_chat_state.findIndex(\n          (index) => index.messageId === this.value\n        );\n        if (getIndex === -1) {\n          new_chat_state.push({ messageId: this.value, feedback: \"Dislike\" });\n        } else {\n          new_chat_state[getIndex].messageId = this.value;\n          new_chat_state[getIndex].feedback = \"Dislike\";\n        }\n        localStorage.setItem(\n          iid + \"-chatfeedback\",\n          JSON.stringify(new_chat_state)\n        );\n      }\n    });\n\n    tagBody.appendChild(dislikeButton);\n\n    orignalBtn.className = \"btn_orginal\";\n    orignalBtn.value = msgId;\n    orignalBtn.addEventListener(\"click\", function () {\n      if (gid !== undefined && conId !== undefined) {\n        tagBody.style.display = \"flex\";\n        tagBodyResponse.style.display = \"none\";\n        let body = {\n          groupId: gid,\n          messageId: this.value,\n          feedback: \"None\",\n        };\n        try {\n          fetch(`${SAVE_FEEDBACK}`, {\n            method: \"POST\",\n            headers: {\n              Accept: \"application/json\",\n              \"Content-Type\": \"application/json\",\n            },\n            body: JSON.stringify(body),\n          });\n        } catch (error) { }\n        let getOldFeed = JSON.parse(\n          localStorage.getItem(iid + \"-chatfeedback\")\n        );\n        if (getOldFeed === null) {\n          getOldFeed = [];\n        }\n        let new_chat_state = [...getOldFeed];\n        let getIndex = new_chat_state.findIndex(\n          (index) => index.messageId === this.value\n        );\n        if (getIndex === -1) {\n          new_chat_state.push({ messageId: this.value, feedback: \"None\" });\n        } else {\n          new_chat_state[getIndex].messageId = this.value;\n          new_chat_state[getIndex].feedback = \"None\";\n        }\n        localStorage.setItem(\n          iid + \"-chatfeedback\",\n          JSON.stringify(new_chat_state)\n        );\n      }\n    });\n    tagBodyResponse.appendChild(orignalBtn);\n    if (feedback_response === \"Like\") {\n      tagBody.style.display = \"none\";\n      tagBodyResponse.style.display = \"block\";\n      orignalBtn.style.color = \"green\";\n      orignalBtn.innerHTML =\n        \"<svg xmlns='http://www.w3.org/2000/svg' style='margin-bottom:5px;margin-left:-1px' width='20' height='20' viewBox='0 0 24 24' fill='currentColor'><path d='M21.3,10.08A3,3,0,0,0,19,9H14.44L15,7.57A4.13,4.13,0,0,0,11.11,2a1,1,0,0,0-.91.59L7.35,9H5a3,3,0,0,0-3,3v7a3,3,0,0,0,3,3H17.73a3,3,0,0,0,2.95-2.46l1.27-7A3,3,0,0,0,21.3,10.08ZM7,20H5a1,1,0,0,1-1-1V12a1,1,0,0,1,1-1H7Zm13-7.82-1.27,7a1,1,0,0,1-1,.82H9V10.21l2.72-6.12A2.11,2.11,0,0,1,13.1,6.87L12.57,8.3A2,2,0,0,0,14.44,11H19a1,1,0,0,1,.77.36A1,1,0,0,1,20,12.18Z'></path></svg>\";\n    }\n    if (feedback_response === \"Dislike\") {\n      tagBody.style.display = \"none\";\n      tagBodyResponse.style.display = \"block\";\n      orignalBtn.style.color = \"red\";\n      orignalBtn.innerHTML =\n        \"<svg xmlns='http://www.w3.org/2000/svg' style='margin-bottom:1px;margin-left:-1px' width='20' height='20' viewBox='0 0 24 24' fill='currentColor'><path d='M19,2H6.27A3,3,0,0,0,3.32,4.46l-1.27,7A3,3,0,0,0,5,15H9.56L9,16.43A4.13,4.13,0,0,0,12.89,22a1,1,0,0,0,.91-.59L16.65,15H19a3,3,0,0,0,3-3V5A3,3,0,0,0,19,2ZM15,13.79l-2.72,6.12a2.13,2.13,0,0,1-1.38-2.78l.53-1.43A2,2,0,0,0,9.56,13H5a1,1,0,0,1-.77-.36A1,1,0,0,1,4,11.82l1.27-7a1,1,0,0,1,1-.82H15ZM20,12a1,1,0,0,1-1,1H17V4h2a1,1,0,0,1,1,1Z'></path></svg>\";\n    }\n    return tag;\n  }\n}\n","import React from 'react';\nexport default ({ dispatch }) => next => action => {\n  const { cardAction: { type, value } } = action;\n  if (type == 'openUrl' && value.includes(':Webview')) {\n    var url = value;\n    var indexWebView = url.indexOf(':Webview');\n    var jsonData = JSON.parse(url.substring(indexWebView + 8));\n    var webViewUrl = url.substring(0, indexWebView);\n    dispatch({\n      type: 'WEB_CHAT/SEND_EVENT',\n      payload: {\n        name: 'webchat/openWebView',\n        value: { url: `${webViewUrl}`, title: jsonData.title, mode: jsonData.mode, largeWindowHideHeader: false }\n      }\n    });\n  }\n  else {\n    return next(action);\n  }\n}","import React, { useState, Fragment, useEffect } from \"react\";\nimport ReactHtmlParser from \"react-html-parser\";\nconst TRANSLATE_URL = process.env.REACT_APP_API_URL + \"/google-translate\";\nexport default function Translate({ input, lang }) { \n  const [text, setText] = useState(input);\n  const [translationDone, setTranslationDone] = useState(false);\n  useEffect(() => {      \n\n    const req = fetch(TRANSLATE_URL, {\n      method: \"POST\",\n      headers: {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify({\n        q: input,\n        target: lang,\n      }),\n    });   \n\n    req.then((m) => {\n      m.json().then((k) => {\n        setText(k.output);\n      });\n    });\n\n    setTranslationDone(true);\n  }, [input]);\n  return <Fragment>{translationDone === true ? ReactHtmlParser(text) : ''}</Fragment>;\n}\n","import React, { Component } from \"react\";\nimport \"./CustomHeroCard.css\";\n\nexport default class CustomHeroCardButtonCol extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      hover: false,\n    };\n  }\n\n  handleMouseEnter = () => {\n    this.setState({ hover: true });\n  };\n  handleMouseLeave = () => {\n    this.setState({ hover: false });\n  };\n\n  render() { \n    return (\n      <div\n        className=\"herocard-button herocard-button-col\"\n        key={this.props.btn.title}\n        // style={{ backgroundColor: \"red\" }}\n        style={{\n          backgroundColor: this.props.botSettings.colours.heroButtonBackground,\n          color:this.props.botSettings.colours.heroButtonText,\n          ...(this.state.hover && { backgroundColor: this.props.botSettings.colours.heroButtonBackgroundHover, color:this.props.botSettings.colours.heroButtonTextHover }),\n        }}\n        onMouseEnter={this.handleMouseEnter} // Or onMouseOver\n        onMouseLeave={this.handleMouseLeave}\n        onClick={() => {\n          this.props.action(this.props.btn);\n        }}\n      >\n        {this.props.btn.title}\n      </div>\n    );\n  }\n}\n","import React, { Component } from \"react\";\nimport \"./CustomHeroCard.css\";\n\nexport default class CustomHeroCardButtonRow extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      hover: false,\n    };\n  }\n\n  handleMouseEnter = () => {\n    this.setState({ hover: true });\n  };\n  handleMouseLeave = () => {\n    this.setState({ hover: false });\n  };\n\n  render() { \n    return (\n      <div\n        className=\"herocard-button herocard-button-row\"\n        key={this.props.btn.title}       \n        style={{\n          backgroundColor: this.props.botSettings.colours.heroButtonBackground,\n          color:this.props.botSettings.colours.heroButtonText,\n          ...(this.state.hover && { backgroundColor: this.props.botSettings.colours.heroButtonBackgroundHover, color:this.props.botSettings.colours.heroButtonTextHover }),\n        }}\n        onMouseEnter={this.handleMouseEnter} // Or onMouseOver\n        onMouseLeave={this.handleMouseLeave}\n        onClick={() => {\n          this.props.action(this.props.btn);\n        }}\n      >\n        {this.props.btn.title}\n      </div>\n    );\n  }\n}\n","import React, { Component, Fragment } from \"react\";\nimport \"./CustomHeroCard.css\";\nimport CustomHeroCardButtonCol from \"./CustomHeroCardButtonCol\";\nimport CustomHeroCardButtonRow from \"./CustomHeroCardButtonRow\";\nimport ReactHtmlParser from \"react-html-parser\";\nvar md = require(\"markdown-it\")({\n  html: true,\n  linkify: true,\n  typographer: true,\n});\nvar mila = require(\"markdown-it-link-attributes\");\nmd.use(mila, [\n  {\n    matcher(href, config) {\n      return href.startsWith(\"https://chatapps\");\n    },\n    attrs: {\n      rel: \"noopener\",\n      class: \"internal-link\",\n    },\n  },\n  {\n    matcher(href, config) {\n      return !href.startsWith(\"https://chatapps\");\n    },\n    attrs: {\n      target: \"_blank\",\n      rel: \"noopener\",\n      class: \"external-link\",\n    },\n  },\n]);\n// var defaultRender =\n//   md.renderer.rules.link_open ||\n//   function (tokens, idx, options, env, self) {\n//     return self.renderToken(tokens, idx, options);\n//   };\n\n// md.renderer.rules.link_open = function (tokens, idx, options, env, self) {\n//   console.log(\"customer card\")\n//   // If you are sure other plugins can't add `target` - drop check below\n//   var aIndex = tokens[idx].attrIndex(\"target\");\n//   if (aIndex < 0) {\n//     tokens[idx].attrPush([\"target\", \"_blank\"]); // add new attribute\n//   } else {\n//     tokens[idx].attrs[aIndex][1] = \"_blank\"; // replace value of existing attr\n//   }\n//   // pass token to default renderer.\n//   return defaultRender(tokens, idx, options, env, self);\n// };\nconst ADDLINK_URL = process.env.REACT_APP_API_URL + \"/links\";\nconst RECORD_RECOMMENDER = process.env.REACT_APP_API_URL + \"/recommender-stats\";\nexport default class CustomHeroCard extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      showmore: false,\n    };\n    this.action = this.action.bind(this);\n    this.showmore = this.showmore.bind(this);\n    this.showless = this.showless.bind(this);\n  }\n\n  showmore() {\n    this.setState({ showmore: true });\n  }\n  showless() {\n    this.setState({ showmore: false });\n  }\n\n  openImage(url) {\n    if (window.parent) {\n      window.parent.postMessage(`openUrl:${url}`, \"*\");\n    } else {\n      window.location = url;\n    }\n  }\n\n  action(button) {\n    if (\n      button.type.toLowerCase() == \"openUrl\".toLowerCase() &&\n      button.value.includes(\":Webview\") !== true\n    ) {\n      if (button.value.includes(\"utm_source\") === false) {\n        if (button.value !== \"\" && this.props.googleAnalytics !== undefined) {\n          var options = button.value.lastIndexOf(\"&\");\n          if (button.value.indexOf(\"?\") == \"-1\") {\n            button.value =\n              button.value +\n              `?utm_source=${\n                this.props.googleAnalytics.utmSource !== undefined\n                  ? this.props.googleAnalytics.utmSource\n                  : \"\"\n              }&utm_medium=${\n                this.props.googleAnalytics.utmMedium !== undefined\n                  ? this.props.googleAnalytics.utmMedium\n                  : \"\"\n              }`;\n          } else if (button.value.indexOf(\"&\") == \"-1\") {\n            button.value =\n              button.value +\n              `&utm_source=${\n                this.props.googleAnalytics.utmSource !== undefined\n                  ? this.props.googleAnalytics.utmSource\n                  : \"\"\n              }&utm_medium=${\n                this.props.googleAnalytics.utmMedium !== undefined\n                  ? this.props.googleAnalytics.utmMedium\n                  : \"\"\n              }`;\n          } else {\n            button.value =\n              button.value.substr(0, button.value.lastIndexOf(\"&\")) +\n              `&utm_source=${\n                this.props.googleAnalytics.utmSource !== undefined\n                  ? this.props.googleAnalytics.utmSource\n                  : \"\"\n              }&utm_medium=${\n                this.props.googleAnalytics.utmMedium !== undefined\n                  ? this.props.googleAnalytics.utmMedium\n                  : \"\"\n              }` +\n              button.value.substr(button.value.lastIndexOf(\"&\"));\n          }\n        }\n      }\n    }\n    if (button.type === \"imBack\") {\n      this.props.api.sendActivity({\n        type: \"WEB_CHAT/SEND_MESSAGE\",\n        payload: {\n          text: button.value,\n        },\n      });\n      setTimeout(() => {\n        if (\n          document.querySelector(\"ul.webchat__basic-transcript__transcript\") !==\n          null\n        ) {\n          document\n            .querySelector(\"ul.webchat__basic-transcript__transcript\")\n            .lastChild.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n        }\n      }, 500);\n    } else if (button.type.toLowerCase() === \"openurl\") {\n      if (button.type == \"openUrl\" && button.value.includes(\":Webview\")) {\n        // Hero Card Webview\n        if (button.value.includes(\"ServiceView\")) {\n          this.props.servicePopup();\n        } else {\n          this.props.addLinks(button.value);\n          var url = button.value;\n          var indexWebView = url.indexOf(\":Webview\");\n          var jsonData = JSON.parse(url.substring(indexWebView + 8));\n          var webViewUrl = url.substring(0, indexWebView);\n          this.props.api.sendActivity({\n            type: \"WEB_CHAT/SEND_EVENT\",\n            payload: {\n              name: \"webchat/openWebView\",\n              value: {\n                url: `${webViewUrl}`,\n                title: jsonData.title,\n                mode: jsonData.mode,\n                largeWindowHideHeader:\n                  jsonData.largeWindowHideHeader !== undefined\n                    ? jsonData.largeWindowHideHeader\n                    : false,\n              },\n            },\n          });\n        }\n      } else {\n        this.props.addLinks(button.value);\n        if (\n          button.value.toLowerCase().includes(\"chatapps\") &&\n          button.value.toLowerCase().includes(\"bookmebob.com\")\n        ) {\n          this.props.api.sendActivity({\n            type: \"WEB_CHAT/SEND_EVENT\",\n            payload: {\n              name: \"webchat/openWebView\",\n              value: {\n                url: button.value,\n                title: \"\",\n                mode: \"Normal\",\n                largeWindowHideHeader: false,\n              },\n            },\n          });\n        } else {\n          if (window.parent) {\n            window.parent.postMessage(`openUrl:${button.value}`, \"*\");\n          } else {\n            window.location = button.value;\n          }\n        }\n      }\n    } else if (button.type.toLowerCase() === \"messageback\") {\n      var data = JSON.parse(button.value);\n      //console.log(data)\n      if (data.type === \"availblity\") {\n        this.props.availblityForm(data);\n        let body = {\n          GroupId: data.gid,\n          PropertyId: data.pid,\n          Button: data.clickButton,\n          Creator: \"api\",\n        };\n\n        body.roomId = data.roomId;\n        if (data.id !== undefined && data.id !== \"\") {\n          body.SetId = data.id;\n        }\n\n        fetch(RECORD_RECOMMENDER, {\n          method: \"POST\",\n          headers: {\n            Accept: \"application/json\",\n            \"Content-Type\": \"application/json\",\n          },\n          body: JSON.stringify(body),\n        });\n      } else {\n        if (data.type === \"webView\") {\n          this.props.api.sendActivity({\n            type: \"WEB_CHAT/SEND_EVENT\",\n            payload: {\n              name: \"webchat/openWebView\",\n              value: {\n                url: `${data.url}`,\n                title: `${button.title}`,\n                mode: \"Normal\",\n                largeWindowHideHeader: true,\n              },\n            },\n          });\n        } else if (data.type === \"askaquestion\") {\n          this.props.bookingApp.selectedPid = data.pid;\n          this.forceUpdate();\n          localStorage.setItem(\n            this.props.bookingApp.lStore.PROPERTYID,\n            data.pid\n          );\n          localStorage.setItem(\n            this.props.bookingApp.lStore.PROPERTYNAME,\n            data.name\n          );\n          this.props.bookingApp.callbacks.getStore().dispatch({\n            type: \"WEB_CHAT/SEND_EVENT\",\n            payload: {\n              name: \"webchat/update\",\n              value: {\n                pid: data.pid,\n                pname: data.name,\n              },\n            },\n          });\n        } else {\n          this.props.addLinks(data.url);\n          if (window.parent) {\n            window.parent.postMessage(`openUrl:${data.url}`, \"*\");\n          } else {\n            window.location = data.url;\n          }\n        }\n\n        let body = {\n          GroupId: data.gid,\n          PropertyId: data.pid,\n          Button: data.clickButton,\n          Creator: \"api\",\n        };\n\n        if (data.productId) {\n          body.productId = data.productId;\n        } else if (data.roomId) {\n          body.roomId = data.roomId;\n        } else if (data.promoId) {\n          body.promoId = data.promoId;\n        } else if (data.addonId) {\n          body.addonId = data.addonId;\n        }\n\n        if (data.id !== undefined && data.id !== \"\") {\n          body.SetId = data.id;\n        }\n\n        fetch(RECORD_RECOMMENDER, {\n          method: \"POST\",\n          headers: {\n            Accept: \"application/json\",\n            \"Content-Type\": \"application/json\",\n          },\n          body: JSON.stringify(body),\n        });\n      }\n    }\n  }\n\n  render() {\n    const herocard = this.props.herocard;\n    // console.log(\n    //   \"this.props.cardActivitiesSummary\",\n    //   this.props.cardActivitiesSummary\n    // );\n    // console.log(herocard);\n    let imageUrl;\n    if (herocard.images && herocard.images.length > 0) {\n      imageUrl = herocard.images[0].url;\n    }\n\n    let webConfig = herocard.webConfig ?? {};\n\n    let feedback_response = JSON.parse(\n      localStorage.getItem(this.props.iid + \"-chatfeedback\")\n    );\n    let feedbackbody;\n    if (feedback_response !== null) {\n      feedbackbody = feedback_response.filter(\n        (i) => i.messageId === this.props.messageId\n      )[0];\n    }\n    return (\n      <div\n        className=\"herocard-container\"\n        data-activity-id={this.props.messageId}\n        data-con-id={this.props.conversationId}\n        data-feedback={feedbackbody !== undefined && feedbackbody.feedback}\n        data-view-btn={this.props.replyToId}\n        data-msg-type={this.props.cardActivitiesSummary}\n        data-inzendesk={this.props.inZenDesk}\n      >\n        {imageUrl ? (\n          <Fragment>\n            <img className=\"herocard-image\" src={imageUrl} alt=\"\" />\n            {this.props.cardActivitiesSummary !== \"Welcome\" &&\n              this.props.cardActivitiesSummary !== \"Fallback\" && (\n                <a className=\"view\">\n                  <img\n                    className=\"open-link-img\"\n                    onClick={() => {\n                      this.openImage(imageUrl);\n                    }}\n                    src={\n                      \"https://bmbuiassetsprod.blob.core.windows.net/images/OpenLinkIcon.png\"\n                    }\n                    alt=\"\"\n                  />\n                </a>\n              )}\n          </Fragment>\n        ) : (\n          \"\"\n        )}\n        {herocard.title || herocard.text ? (\n          <div className=\"herocard-text-area\">\n            {herocard.title ? (\n              <div className=\"ac-textBlock herocard-title-text\">\n                {herocard.title}\n              </div>\n            ) : (\n              \"\"\n            )}\n            {herocard.text ? (\n              <div className=\"ac-textBlock\">\n                {!this.state.showmore &&\n                  (herocard.text.length > 125\n                    ? herocard.text\n                        .substring(0, 125)\n                        .split(\"\\n\")\n                        .map(function (item, key) {\n                          return (\n                            <span key={key}>\n                              {ReactHtmlParser(md.renderInline(item))}\n                              <br />\n                            </span>\n                          );\n                        })\n                    : herocard.text.split(\"\\n\").map(function (item, key) {\n                        return (\n                          <span key={key}>\n                            {ReactHtmlParser(md.renderInline(item))}\n                            <br />\n                          </span>\n                        );\n                      }))}\n\n                {this.state.showmore &&\n                  herocard.text.split(\"\\n\").map(function (item, key) {\n                    return (\n                      <span key={key}>\n                        {ReactHtmlParser(md.renderInline(item))}\n                        <br />\n                      </span>\n                    );\n                  })}\n                {!this.state.showmore && herocard.text.length > 125 && (\n                  <div style={{ textAlign: \"right\" }}>\n                    <a\n                      style={{\n                        textDecoration: \"underline\",\n                        cursor: \"pointer\",\n                        fontSize: \"0.9em\",\n                      }}\n                      onClick={() => {\n                        this.showmore();\n                      }}\n                    >\n                      Show More\n                    </a>{\" \"}\n                  </div>\n                )}\n                {this.state.showmore && (\n                  <div style={{ textAlign: \"right\" }}>\n                    <a\n                      style={{\n                        textDecoration: \"underline\",\n                        cursor: \"pointer\",\n                        fontSize: \"0.9em\",\n                      }}\n                      onClick={() => {\n                        this.showless();\n                      }}\n                    >\n                      Show Less\n                    </a>\n                  </div>\n                )}\n              </div>\n            ) : (\n              \"\"\n            )}\n          </div>\n        ) : (\n          \"\"\n        )}\n        {herocard.buttons && webConfig.actionsRow ? (\n          <div className=\"herocard-button-row-container\">\n            {herocard.buttons.map((btn) => (\n              <CustomHeroCardButtonRow\n                btn={btn}\n                botSettings={this.props.botSettings}\n                action={this.action}\n              />\n            ))}\n          </div>\n        ) : (\n          \"\"\n        )}\n        {herocard.buttons && !webConfig.actionsRow ? (\n          <div className=\"herocard-button-col-container\">\n            {herocard.buttons.map((btn, index) => (\n              <CustomHeroCardButtonCol\n                key={index}\n                btn={btn}\n                botSettings={this.props.botSettings}\n                action={this.action}\n              />\n            ))}\n          </div>\n        ) : (\n          \"\"\n        )}\n      </div>\n    );\n  }\n}\n","import React, { Component } from 'react';\nimport \"./FileUploadCard.css\";\n\nexport default class FileUploadCard extends Component {\n    constructor (props) {\n        super(props);\n\n        this.state = {\n            files: [],\n            error: undefined,\n            used: props.content.used\n        }\n\n        this.uploadRef = React.createRef();\n        this.selectFile = this.selectFile.bind(this);\n        this.filesChanged = this.filesChanged.bind(this);\n        this.uploadFiles = this.uploadFiles.bind(this);\n    }\n\n    selectFile () {\n        if (this.uploadRef.current) {\n            this.uploadRef.current.click();\n        }\n    }\n\n    filesChanged () {\n        let fileList = this.uploadRef.current?.files;\n        this.setState({ files: fileList ? Object.values(fileList) : [] });\n    }\n\n    async uploadFiles () {\n        this.setState({ error: undefined })\n\n        let attachments = [];\n        let file = this.state.files[0];\n\n        const formData = new FormData();\n\n        formData.append('file', file);\n\n        let uploadR = await fetch(this.props.content.uploadUrl, {\n            method: 'POST',\n            body: formData\n        });\n       \n        if (!uploadR.ok) {\n            if (uploadR.status === 422) {\n                this.setState({ error: 'File is too large or of wrong format.' })\n            } else {\n                this.setState({ error: 'Unknown error.' })\n            }\n            return;\n        }\n\n        let uploadId = (await uploadR.text()).replaceAll(\"\\\"\", \"\");\n\n        attachments.push({\n            contentType: 'ako/file-upload-response',\n            content: {\n                uploadId\n            }\n        });\n\n        this.props.api.sendActivity({\n            type: 'DIRECT_LINE/POST_ACTIVITY',\n            payload: {\n                activity: {\n                    type: 'event',\n                    name: 'ako/file-upload-response',\n                    value: uploadId\n                }\n            },\n            meta: {}\n        });\n\n        this.setState({ files: [], used: true })\n    }\n\n    render () {\n        let content = this.props.content ?? {};\n        let isMulti = content.allowMultiple;\n        let accept = content.accept ?? \"\";\n        let { \n            files,\n            error,\n            used\n        } = this.state;\n\n        return (\n            <div className=\"upload-container\">\n                {\n                    used ?\n                    <i> File Uploaded </i>\n                    :\n                    <div className=\"btn btn-outline-secondary w-100\" onClick={this.selectFile}> \n                        { isMulti ? \"Select Files\" : \"Select File\" }\n                    </div>\n                }\n                <input\n                    type=\"file\"\n                    className=\"file-upload-hidden\"\n                    onChange={this.filesChanged}\n                    ref={this.uploadRef}\n                    accept={accept}\n                    multiple={isMulti}/> \n                { error ?\n                    <div class=\"file-upload-error\"> { error } </div>\n                    : ''\n                }\n                {\n                    files.length > 0 ? \n                        <div>\n                            <div className=\"w-100 mt-3 mb-2\">\n                                { files.length } file(s) selected:\n                                {\n                                    files.map(f => (\n                                        <div key={f.name}> { f.name } </div>\n                                    ))\n                                }\n                            </div>\n                            <div className=\"btn btn-outline-success w-100\" onClick={this.uploadFiles}> \n                                Upload\n                            </div>\n                        </div>\n                    :\n                    ''\n                }\n            </div>\n        )\n    }\n}","import React, { Fragment } from \"react\";\nimport ReactHtmlParser from \"react-html-parser\";\nvar md = require(\"markdown-it\")({\n  html: true,\n  linkify: true,\n  typographer: true,\n});\nvar mila = require(\"markdown-it-link-attributes\");\nmd.use(mila, [{\n  matcher(href, config) {\n    return href.startsWith(\"https://chatapps\");\n  },\n  attrs: {   \n    rel: \"noopener\",\n    class: \"internal-link\"\n  },\n},\n{\n  matcher(href, config) {\n    return !href.startsWith(\"https://chatapps\");\n  },\n  attrs: {\n    target: \"_blank\",\n    rel: \"noopener\",\n    class: \"external-link\"\n  },\n}]);\n\n// var defaultRender =\n//   md.renderer.rules.link_open ||\n//   function (tokens, idx, options, env, self) {\n//     return self.renderToken(tokens, idx, options);\n//   };\n\n// md.renderer.rules.link_open = function (tokens, idx, options, env, self) {\n//   //console.log(\"customer message\")\n//   console.log(tokens)\n//   //console.log(tokens[idx].attrGet('href'));\n//   const url=tokens[idx].attrGet('href');\n//   console.log(url)\n//   if (\n//     url.toLowerCase().includes(\"chatapps\") &&\n//     url.toLowerCase().includes(\"bookmebob.com\")\n//   ) {\n//     console.log(\"in\")\n//     tokens[idx].attrPush([\"onclick\", \"openChatapps();\"]);\n//   }\n//   else{\n// // If you are sure other plugins can't add `target` - drop check below\n// var aIndex = tokens[idx].attrIndex(\"target\");\n// if (aIndex < 0) {\n//   tokens[idx].attrPush([\"target\", \"_blank\"]); // add new attribute\n// } else {\n//   tokens[idx].attrs[aIndex][1] = \"_blank\"; // replace value of existing attr\n// }\n//   }\n  \n//   // pass token to default renderer.\n//   return defaultRender(tokens, idx, options, env, self);\n// };\nexport default function CustomMessage({\n  content,\n  messageId,\n  conversationId,\n  iid,\n  replyToId,\n  cardActivitiesSummary,\n  inZenDesk,\n}) {\n  let feedback_response = JSON.parse(\n    localStorage.getItem(iid + \"-chatfeedback\")\n  );\n  let feedbackbody;\n  if (feedback_response !== null) {\n    feedbackbody = feedback_response.filter(\n      (i) => i.messageId === messageId\n    )[0];\n  }\n  return (\n    <div\n      className=\"markdown\"\n      data-activity-id={messageId}\n      text-len={content.length}\n      data-con-id={conversationId}\n      width={content.length > 50 ? \"true\" : \"false\"}\n      data-feedback={feedbackbody !== undefined && feedbackbody.feedback}\n      data-view-btn={replyToId}\n      data-msg-type={cardActivitiesSummary}\n      data-inzendesk={inZenDesk}\n    >\n      {content !== undefined &&\n        content !== null &&\n        content\n          .split(\"\\n\")\n          .map(\n            (item, key) =>\n              item !== \"\" && (\n                <Fragment key={key}>\n                  {ReactHtmlParser(md.render(item))}\n                </Fragment>\n              )\n          )}\n    </div>\n  );\n}\n","import React from \"react\";\nimport \"./CustomVideoCard.css\";\nexport default function CustomVideoCard({card, content, messageId, conversationId, iid, replyToId,cardActivitiesSummary,inZenDesk }) {\n    let feedback_response = JSON.parse(localStorage.getItem(iid + \"-chatfeedback\"));\n    let feedbackbody;\n    if (feedback_response !== null) {\n        feedbackbody = feedback_response.filter(i => i.messageId === messageId)[0];\n    }\n    return (\n        <div className=\"videocard-container\" data-activity-id={messageId} data-con-id={conversationId}\n            data-feedback={feedbackbody !== undefined && feedbackbody.feedback}\n            data-view-btn={replyToId} data-msg-type={cardActivitiesSummary}\n            data-inzendesk={inZenDesk}>\n            <ul className=\"media-list\">\n                <li>\n                    <iframe className=\"videocard-iframe\" allowFullScreen=\"allowfullscreen\"\n                        src={content.media[0].url.toString()\n                            .replace(\"https://www.youtube.com/watch?v=\", \"https://www.youtube.com/embed/\")\n                            .replace(\"https://vimeo.com/\", \"https://player.vimeo.com/video/\")}></iframe>\n                </li>\n            </ul>\n            {content.title !== undefined &&\n                <div className=\"videocard-text-area\">\n                    <div className=\"ac-textBlock videocard-title-text\">\n                        {content.title}\n                    </div>\n                </div>\n            }       \n        </div>\n    );\n}","import React from \"react\";\nimport CustomHeroCard from \"../MsUiComponents/CustomHeroCard\";\nimport FileUploadCard from \"./FileUploadExtension/FileUploadCard\";\nimport CustomMessage from \"../MsUiComponents/CustomMessage\";\nimport CustomVideoCard from \"../MsUiComponents/CustomVideoCard\";\n\nexport const AttachmentMiddleware =\n  (\n    api,\n    botSettings,\n    directLine,\n    gid,\n    iid,\n    addLinks,\n    availblityForm,\n    servicePopup,\n    inZenDesk,\n    bookingApp,\n    googleAnalytics\n  ) =>\n  () =>\n  (next) =>\n  (card) => {\n    switch (card.attachment.contentType) {\n      case \"application/vnd.microsoft.card.hero\":\n        return (\n          <CustomHeroCard\n            herocard={card.attachment.content}\n            replyToId={card.activity.replyToId}\n            iid={iid}\n            conversationId={card.activity.conversation.id}\n            messageId={card.activity.id}\n            addLinks={addLinks}\n            gid={gid}\n            api={api}\n            googleAnalytics={googleAnalytics}\n            directLine={directLine}\n            botSettings={botSettings}\n            availblityForm={availblityForm}\n            servicePopup={servicePopup}\n            cardActivitiesSummary={\n              card.activity !== undefined && card.activity.summary !== undefined\n                ? card.activity.summary\n                : \"\"\n            }\n            inZenDesk={inZenDesk}\n            bookingApp={bookingApp}\n          />\n        );\n      case \"ako/file-upload-prompt\":\n        return <FileUploadCard content={card.attachment.content} api={api} />;\n      case \"text/markdown\":\n        return (\n          <CustomMessage\n            content={card.attachment.content}\n            iid={iid}\n            replyToId={card.activity.replyToId}\n            conversationId={card.activity.conversation.id}\n            messageId={card.activity.id}\n            cardActivitiesSummary={\n              card.activity !== undefined && card.activity.summary !== undefined\n                ? card.activity.summary\n                : \"\"\n            }\n            inZenDesk={inZenDesk}\n          ></CustomMessage>\n        );\n      case \"application/vnd.microsoft.card.video\":\n        return (\n          <CustomVideoCard\n            card={card}\n            content={card.attachment.content}\n            iid={iid}\n            replyToId={card.activity.replyToId}\n            conversationId={card.activity.conversation.id}\n            messageId={card.activity.id}\n            cardActivitiesSummary={\n              card.activity !== undefined && card.activity.summary !== undefined\n                ? card.activity.summary\n                : \"\"\n            }\n            inZenDesk={inZenDesk}\n          ></CustomVideoCard>\n        );\n      default:\n        return next(card);\n    }\n  };","import React, { useState, useEffect, Fragment } from \"react\";\nimport IntlMessages from \"../helpers/IntlMessages\";\nimport \"./../date-picker.css\";\nimport { Calendar } from \"react-modern-calendar-datepicker\";\nimport moment from \"moment\";\nimport {\n  Dropdown,\n  DropdownToggle,\n  DropdownMenu,\n  DropdownItem,\n  Row,\n  Col,\n  FormGroup,\n  Input,\n  Label,\n} from \"reactstrap\";\nimport { __esModule } from \"reactstrap/lib/Col\";\n\nconst months = [\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];\nconst BMB_BOOKING_ENGINE =\n  process.env.REACT_APP_API_URL + \"/booking-engine-data\";\nconst Availability = process.env.REACT_APP_PARTNER_URL + \"/\";\nlet currentDate = moment().add(1, \"days\").format(\"YYYY-MM-DD\");\nfunction AmaduesAvailability({\n  data,\n  gid,\n  pid,\n  api,\n  lang,\n  integration,\n  closeAvailblityForm,\n  addLinks,\n  buttonColor,\n  roomdata\n}) {\n  const [promoCode, setPromoCode] = useState(\"\");\n  const [roomTypeCode, setRoomTypeCode] = useState(\"\");\n  const [adults, setAdults] = useState(2);\n  const [children, setChildren] = useState(0);\n  const [nights, setNights] = useState(0);\n  const [children_age, setChildren_age] = useState([]);\n  const [ratePlanCode, setRatePlanCode] = useState(\"\");\n  const [datesData, setDatesData] = useState([]);\n  const [disableDays, setDisableDays] = useState([]);\n  const [disableCheckInDate, setDisableCheckInDate] = useState([]);\n  const [showModel, setShowModel] = useState(false);\n  const [dates, setDates] = useState(null);\n  const [minimumDate, setMinimumDate] = useState({\n    year: moment().add(1, \"days\").year(),\n    month: moment().add(1, \"days\").month() + 1,\n    day: moment().add(1, \"days\").date(),\n  });\n  const [loading, setLoading] = useState(true);\n  const defaultValue = {\n    year: 2023,\n    month: 12,\n    day: 1,\n  };\n  const [selectedDayRange, setSelectedDayRange] = useState({\n    from: null,\n    to: null,\n  });\n\n  const handleDisableDaysChange = (\n    fromDate,\n    toDate,\n    adults,\n    children,\n    roomTypeCode\n  ) => {\n    setLoading(true);\n    if (moment(fromDate).format(\"MM\") === moment().format(\"MM\"))\n      fromDate = moment().add(1, \"days\").format(\"YYYY-MM-DD\");\n\n    toDate = moment(toDate).add(1, \"days\").format(\"YYYY-MM-DD\");\n    setDisableDays([]);\n    if (integration.Channel === 'Sabre' || integration.Channel === 'SHRCRS') {\n      fetch(\n         Availability +\n        `public/availability/${integration.Id}/basic?group_id=` +\n        gid +\n        \"&adults=\" +\n        adults +\n        \"&children=\" +\n        children +\n        \"&dateIn=\" +\n        moment(fromDate).format(\"YYYY-MM-DD\") +\n        \"&dateOut=\" +\n        moment(toDate).format(\"YYYY-MM-DD\") +\n        \"&roomType=\" +\n        roomTypeCode +\n        \"&ratePlanCode=\" +\n        \"&channel=\" + integration.Channel,\n        {\n          method: \"GET\",\n          headers: {\n            Accept: \"application/json\",\n            \"Content-Type\": \"application/json\",\n          },\n        }\n      )\n        .then((response) => response.json())\n        .then((json) => {\n          handleFillCalender(json);\n        });\n    } else {\n      fetch(\n        Availability +\n        \"public/amadeus/searchamadues?gid=\" +\n        gid +\n        \"&pid=\" +\n        pid +\n        \"&adults=\" +\n        adults +\n        \"&children=\" +\n        children +\n        \"&dateIn=\" +\n        moment(fromDate).format(\"YYYY-MM-DD\") +\n        \"&dateOut=\" +\n        moment(toDate).format(\"YYYY-MM-DD\") +\n        \"&roomTypeCode=\" +\n        roomTypeCode +\n        \"\",\n        {\n          method: \"GET\",\n          headers: {\n            Accept: \"application/json\",\n            \"Content-Type\": \"application/json\",\n          },\n        }\n      )\n        .then((response) => response.json())\n        .then((json) => {\n          var elements = document.getElementsByClassName(\"Calendar__day\");\n          if (json.dates !== undefined) {\n            if (elements !== undefined) {\n              setDatesData(json.dates);\n              let isCheckOutDate = true;\n              for (let i = 0; i < elements.length; i++) {\n                const obj = json.dates.filter(\n                  (f) =>\n                    elements[i].attributes[\"aria-label\"].nodeValue ===\n                    moment(f.date).format(\"dddd\") +\n                    \", \" +\n                    moment(f.date).format(\"D\") +\n                    \" \" +\n                    moment(f.date).format(\"MMMM\") +\n                    \" \" +\n                    moment(f.date).format(\"YYYY\")\n                );\n                if (obj.length > 0) {\n                  let discount = (obj[0].rate.discountOnLowestMinRate !== undefined &&\n                    obj[0].rate.discountOnLowestMinRate > 0) ? obj[0].rate.discountOnLowestMinRate : 0;\n\n                  let minRate = obj[0].rate.minRate;\n\n                  let price = parseInt(Math.round(minRate - discount));\n\n                  if (obj[0].isAvailable === true) {\n                    isCheckOutDate = true;\n                    let html = `<div class=\"custom_day\"><p style=\"line-height:2em\">${moment(\n                      obj[0].date\n                    ).format(\n                      \"D\"\n                    )}</p>${`<p style=\"font-size:0.75rem;\">$${price}</p>`}</div>`;\n                    elements[i].innerHTML = html;\n                  } else if (isCheckOutDate === true) {\n                    isCheckOutDate = false;\n                    let html = `<div class=\"custom_day pb-0\"><p class=\"mb-1\">${moment(\n                      obj[0].date\n                    ).format(\n                      \"D\"\n                    )}</p>${`<p style=\"font-size:7.75px;padding-bottom:5px;\">Check out only</p>`}</div>`;\n                    elements[i].innerHTML = html;\n                    let lst = disableCheckInDate;\n                    lst.push({\n                      year: moment(obj[0].date).format(\"YYYY\"),\n                      month: moment(obj[0].date).format(\"MM\"),\n                      day: moment(obj[0].date).format(\"D\"),\n                    });\n                    setDisableCheckInDate(lst);\n                  } else {\n                    // if (showAvailabity === false && showRates === false) {\n                    //   let html = `<div class=\"custom_day\"><p class=\"mb-2\">${moment(obj[0].date).format('D')}</p></div>`;\n                    //   elements[i].innerHTML = html;\n                    // }\n                    // else if (showRates === false && showAvailabity === true) {\n                    //   let html = `<div class=\"small-strikethrough\"><p class=\"mb-2\"><span style=\"line-height:2em\">${moment(obj[0].date).format('D')}</span></p></div>`;\n                    //   elements[i].innerHTML = html;\n                    // }\n                    // else if (showRates === true && showAvailabity === false) {\n                    //   let html = `<div class=\"custom_day\"><p class=\"mb-2\"><span style=\"line-height:2em\">${moment(obj[0].date).format('D')}</span></p></div>`;\n                    //   elements[i].innerHTML = html;\n                    // }\n                    // else {\n                    let html = `<div class=\"strikethrough\"><p class=\"mb-2\"><span style=\"line-height:3em\">${moment(\n                      obj[0].date\n                    ).format(\"D\")}</span></p></div>`;\n                    elements[i].innerHTML = html;\n                    //}\n                    let lst = disableDays;\n                    lst.push({\n                      year: moment(obj[0].date).format(\"YYYY\"),\n                      month: moment(obj[0].date).format(\"MM\"),\n                      day: moment(obj[0].date).format(\"D\"),\n                    });                    \n                    setDisableDays(lst);\n                  }\n                }\n              }\n            }\n            setLoading(false);\n          } else if (json.statusCode !== undefined && json.statusCode === 429) {\n            setTimeout(() => {\n              handleDisableDaysChange(\n                currentDate,\n                moment(currentDate).add(30, \"days\").format(\"YYYY-MM-DD\"),\n                adults,\n                children,\n                roomTypeCode\n              );\n            }, 10000);\n          } else {\n            setLoading(false);\n          }\n        });\n    }\n  };\n\n  const handleFillCalender = (json) => {\n    var elements = document.getElementsByClassName(\"Calendar__day\");\n    if (json.dates !== undefined) {\n      if (elements !== undefined) {\n        setDatesData(json.dates);\n        let isCheckOutDate = true;\n        for (let i = 0; i < elements.length; i++) {\n          const obj = json.dates.filter(\n            (f) =>\n              elements[i].attributes[\"aria-label\"].nodeValue ===\n              moment(f.date).format(\"dddd\") +\n              \", \" +\n              moment(f.date).format(\"D\") +\n              \" \" +\n              moment(f.date).format(\"MMMM\") +\n              \" \" +\n              moment(f.date).format(\"YYYY\")\n          );\n          if (obj.length > 0) {\n            let price = parseInt(obj[0].price) + parseInt(obj[0]?.tax? obj[0].tax: 0);            \n            if (obj[0].isAvailable === true) {\n              isCheckOutDate = true;\n              let html = `<div class=\"custom_day\"><p class=\"mb-2\">${moment(\n                obj[0].date\n              ).format(\n                \"D\"\n              )}</p>${`<p style=\"font-size:0.75rem;\">$${price}</p>`}</div>`;\n              elements[i].innerHTML = html;\n            } else if (isCheckOutDate === true) {\n              isCheckOutDate = false;\n              let html = `<div class=\"custom_day pb-0\"><p class=\"mb-1\">${moment(\n                obj[0].date\n              ).format(\n                \"D\"\n              )}</p>${`<p style=\"font-size:7.75px;padding-bottom:5px;\">Check out only</p>`}</div>`;\n              elements[i].innerHTML = html;\n              let lst = disableCheckInDate;\n              lst.push({\n                year: moment(obj[0].date).format(\"YYYY\"),\n                month: moment(obj[0].date).format(\"MM\"),\n                day: moment(obj[0].date).format(\"D\"),\n              });\n              setDisableCheckInDate(lst);\n            } else {            \n              let html = `<div class=\"strikethrough\"><p class=\"mb-2\"><span style=\"line-height:2em\">${moment(\n                obj[0].date\n              ).format(\"D\")}</span></p></div>`;\n              elements[i].innerHTML = html;\n              //}\n              let lst = disableDays;\n              lst.push({\n                year: moment(obj[0].date).format(\"YYYY\"),\n                month: moment(obj[0].date).format(\"MM\"),\n                day: moment(obj[0].date).format(\"D\"),\n              });                    \n              setDisableDays(lst);\n            }\n          } else if (elements[i].attributes[\"aria-label\"].nodeValue.includes('undefined') === false\n            && moment(elements[i].attributes[\"aria-label\"].nodeValue).format('YYYY-MM-DD') >= moment().format('YYYY-MM-DD')) {\n            let html = `<div class=\"strikethrough\"><p class=\"mb-2\"><span style=\"line-height:2em\">${moment(\n              elements[i].attributes[\"aria-label\"].nodeValue\n            ).format(\"D\")}</span></p></div>`;\n            elements[i].innerHTML = html;\n            //}\n            let lst = disableDays;\n            lst.push({\n              year: moment(elements[i].attributes[\"aria-label\"].nodeValue).format(\"YYYY\"),\n              month: moment(elements[i].attributes[\"aria-label\"].nodeValue).format(\"MM\"),\n              day: moment(elements[i].attributes[\"aria-label\"].nodeValue).format(\"D\"),\n            });            \n            setDisableDays(lst);\n          }\n        }\n      }\n      setLoading(false);\n    } else if (json.statusCode !== undefined && json.statusCode === 429) {\n      setTimeout(() => {\n        handleDisableDaysChange(\n          currentDate,\n          moment(currentDate).add(30, \"days\").format(\"YYYY-MM-DD\"),\n          adults,\n          children,\n          roomTypeCode\n        );\n      }, 10000);\n    } else {\n      setLoading(false);\n    }\n  }\n\n\n  useEffect(() => {\n    currentDate = moment().add(0, \"days\").format(\"YYYY-MM-DD\");\n    const leftButton = document.getElementsByClassName(\n      \"Calendar__monthArrowWrapper\"\n    );\n    const yearSelector = document.getElementsByClassName(\n      \"Calendar__yearSelector\"\n    );\n    const monthSelector = document.getElementsByClassName(\n      \"Calendar__monthSelector\"\n    );\n    if (leftButton.length > 1) {\n      yearSelector[0].addEventListener(\"click\", function handleClick(event) {\n        let newDate = \"\";\n        setTimeout(() => {\n          const monthYear = document.getElementsByClassName(\n            \"Calendar__monthYear -shown\"\n          );\n          const month = document.getElementsByClassName(\"Calendar__monthText\");\n          const year = document.getElementsByClassName(\"Calendar__yearText\");\n          if (monthYear.length > 0)\n            newDate =\n              monthYear[0].innerText.split(\"\\n\")[1] +\n              \"-\" +\n              moment()\n                .month(monthYear[0].innerText.split(\"\\n\")[0])\n                .format(\"MM\")\n                .toString() +\n              \"-\" +\n              \"1\";\n          else\n            newDate =\n              year[0].innerText +\n              \"-\" +\n              moment().month(month[0].innerText).format(\"MM\").toString() +\n              \"-\" +\n              \"1\";\n\n          currentDate = newDate;\n          let adult_count = document.getElementById(\"adult_count\").value;\n          let children_count = document.getElementById(\"children_count\").value;\n          let roomCode = document.getElementById(\"roomCode\").value;\n          handleDisableDaysChange(\n            moment(newDate).format(\"YYYY-MM-DD\"),\n            moment(newDate).endOf(\"month\").format(\"YYYY-MM-DD\"),\n            adult_count,\n            children_count,\n            roomCode\n          );\n        }, 1000);\n      });\n      monthSelector[0].addEventListener(\"click\", function handleClick(event) {\n        event.preventDefault();\n        let newDate = \"\";\n        setTimeout(() => {\n          const monthYear = document.getElementsByClassName(\n            \"Calendar__monthYear -shown\"\n          );\n          const month = document.getElementsByClassName(\"Calendar__monthText\");\n          const year = document.getElementsByClassName(\"Calendar__yearText\");\n          if (monthYear.length > 0)\n            newDate =\n              monthYear[0].innerText.split(\"\\n\")[1] +\n              \"-\" +\n              moment()\n                .month(monthYear[0].innerText.split(\"\\n\")[0])\n                .format(\"MM\")\n                .toString() +\n              \"-\" +\n              \"1\";\n          else\n            newDate =\n              year[0].innerText +\n              \"-\" +\n              moment().month(month[0].innerText).format(\"MM\").toString() +\n              \"-\" +\n              \"1\";\n          currentDate = newDate;\n          let adult_count = document.getElementById(\"adult_count\").value;\n          let children_count = document.getElementById(\"children_count\").value;\n          let roomCode = document.getElementById(\"roomCode\").value;\n          handleDisableDaysChange(\n            moment(newDate).format(\"YYYY-MM-DD\"),\n            moment(newDate).endOf(\"month\").format(\"YYYY-MM-DD\"),\n            adult_count,\n            children_count,\n            roomCode\n          );\n        }, 1000);\n      });\n\n      leftButton[0].addEventListener(\"click\", function handleClick(event) {\n        setTimeout(() => {\n          let newDate = moment(currentDate)\n            .subtract(1, \"month\")\n            .startOf(\"month\")\n            .format(\"YYYY-MM-DD\");\n\n          currentDate = newDate;\n          let adult_count = document.getElementById(\"adult_count\").value;\n          let children_count = document.getElementById(\"children_count\").value;\n          let roomCode = document.getElementById(\"roomCode\").value;\n          handleDisableDaysChange(\n            moment(newDate).format(\"YYYY-MM-DD\"),\n            moment(newDate).endOf(\"month\").format(\"YYYY-MM-DD\"),\n            adult_count,\n            children_count,\n            roomCode\n          );\n        }, 1000);\n      });\n\n      leftButton[1].addEventListener(\"click\", function handleClick(event) {\n        setTimeout(() => {\n          let newDate = moment(currentDate)\n            .add(1, \"month\")\n            .startOf(\"month\")\n            .format(\"YYYY-MM-DD\");\n          currentDate = newDate;\n          let adult_count = document.getElementById(\"adult_count\").value;\n          let children_count = document.getElementById(\"children_count\").value;\n          let roomCode = document.getElementById(\"roomCode\").value;\n          handleDisableDaysChange(\n            moment(newDate).format(\"YYYY-MM-DD\"),\n            moment(newDate).endOf(\"month\").format(\"YYYY-MM-DD\"),\n            adult_count,\n            children_count,\n            roomCode\n          );\n        }, 1000);\n      });\n    }\n\n    if (integration.ShowRatesSelectedRoom === true) {\n      var payload = {\n        propertyId: data.pid,\n        roomId: data.roomId,\n        languageCode: \"en\",\n      };\n\n      fetch(process.env.REACT_APP_API_URL + \"/room\", {\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify(payload),\n      })\n        .then((response) => response.json())\n        .then((json) => {\n          setRoomTypeCode(json.result.providerRoomCode);\n          handleDisableDaysChange(\n            currentDate,\n            moment(currentDate).add(30, \"days\").format(\"YYYY-MM-DD\"),\n            adults,\n            children,\n            json.result.providerRoomCode\n          );\n        });\n    } else {\n      handleDisableDaysChange(\n        currentDate,\n        moment(currentDate).add(30, \"days\").format(\"YYYY-MM-DD\"),\n        adults,\n        children,\n        \"\"\n      );\n    }\n  }, [pid]);\n  const handleRoomListChange = (e) => {\n    setRoomTypeCode(e.target.value);\n    if (e.target.value !== \"\") {\n      if (dates?.toDate && dates.toDate !== \"\")\n        handleDisableDaysChange(\n          dates.fromDate,\n          dates.toDate,\n          adults,\n          children,\n          e.target.value\n        );\n      else\n        handleDisableDaysChange(\n          currentDate,\n          moment(currentDate).add(30, \"days\").format(\"YYYY-MM-DD\"),\n          adults,\n          children,\n          e.target.value\n        );\n    } else {\n      if (dates?.toDate && dates.toDate !== \"\")\n        handleDisableDaysChange(dates.fromDate, dates.toDate, adults, children, \"\");\n      else\n        handleDisableDaysChange(\n          currentDate,\n          moment(currentDate).add(30, \"days\").format(\"YYYY-MM-DD\"),\n          adults,\n          children,\n          \"\"\n        );\n    }\n  }\n\n  const handleAdultsChange = (e) => {\n    setAdults(e.target.value);\n    handleDisableDaysChange(\n      currentDate,\n      moment(currentDate).endOf(\"month\").format(\"YYYY-MM-DD\"),\n      e.target.value,\n      children,\n      roomTypeCode\n    );\n  };\n\n  const handleChildrenChange = (e) => {\n    setChildren(e.target.value);\n    if (data.bookingEngineUrl.includes(\"{CHILDREN_AGE}\")) {\n      let childrenValue = parseInt(e.target.value);\n      let childrenAge = [...children_age];\n      if (childrenAge.length > childrenValue) {\n        let arr = [];\n        for (var i = 0; i < childrenValue; i++) {\n          arr.push(childrenAge[i]);\n        }\n        childrenAge = arr;\n      } else {\n        for (var i = childrenAge.length; i < childrenValue; i++) {\n          childrenAge.push({\n            id: i + 1,\n            [\"children_age_\" + (i + 1)]: \"\",\n          });\n        }\n      }\n      setChildren_age(childrenAge);\n    }\n    handleDisableDaysChange(\n      currentDate,\n      moment(currentDate).endOf(\"month\").format(\"YYYY-MM-DD\"),\n      adults,\n      e.target.value,\n      roomTypeCode\n    );\n  };\n\n  const handleChangeChildrenAge = (e, id) => {\n    let childrenAge = [...children_age];\n    childrenAge = children_age.map((item) => {\n      if (item.id === id) {\n        return { ...item, [e.target.name]: e.target.value };\n      } else {\n        return { ...item };\n      }\n    });\n    setChildren_age(childrenAge);\n    //handleDisableDaysChange(currentDate,moment(currentDate).endOf('month').format('YYYY-MM-DD'),adults,children);\n  };\n\n  const handlePromoCodeChange = (e) => {\n    setPromoCode(e.target.value);\n  };\n\n  const handleSelectedDayRange = (dates) => {\n    setShowModel(false);\n    if (\n      disableCheckInDate.filter(\n        (f) =>\n          f.year == dates.from.year &&\n          f.month == dates.from.month &&\n          f.day == dates.from.day\n      ).length > 0\n    ) {\n      setShowModel(true);\n      setSelectedDayRange({ from: null, to: null });\n      setDates(null);\n    } else if (\n      disableCheckInDate.filter(\n        (f) =>\n          f.year == dates.from.year &&\n          f.month == dates.from.month &&\n          f.day == dates.from.day &&\n          f.year == dates.to.year &&\n          f.month == dates.to.month &&\n          f.day == dates.to.day\n      ).length > 0\n    ) {\n      setShowModel(true);\n      setSelectedDayRange({ from: null, to: null });\n      setDates(null);\n    } else if (\n      disableDays.filter((f) => f.year == dates.from.year &&\n      f.month == dates.from.month &&\n      f.day == dates.from.day ).length === 0 &&\n      (dates.to === null\n        ? true\n        : disableDays.filter((f) => f.year == dates.to.year &&\n        f.month == dates.to.month &&\n        f.day == dates.to.day).length === 0)\n    ) {\n      setSelectedDayRange(dates);\n      var fromDate = \"\";\n      var toDate = \"\";\n      if (dates.from !== null) {\n        fromDate = moment({ year: dates.from.year, month: dates.from.month - 1, day: dates.from.day }).format(\"YYYY-MM-DD\");\n      }\n      if (dates.to !== null) {\n        toDate = moment({ year: dates.to.year, month: dates.to.month - 1, day: dates.to.day }).format(\"YYYY-MM-DD\");\n      }\n      setDates({\n        fromDate: fromDate, toDate: toDate\n      });\n      let night = 0;\n      if (dates.from !== null && dates.to !== null) {\n        let fromDateStr =\n          dates.from.year + \"-\" + dates.from.month + \"-\" + dates.from.day;\n        let toDateStr =\n          dates.to.year + \"-\" + dates.to.month + \"-\" + dates.to.day;\n        const fromDate = moment(fromDateStr).format(\"YYYY-MM-DD\");\n        const toDate = moment(toDateStr).format(\"YYYY-MM-DD\");\n        night = calculateNights(fromDate, toDate);\n                if (datesData.length > 0) {\n          const fromDateData = datesData.filter((f) => f.date === moment(fromDateStr).format('YYYY-MM-DD'));\n          const toDateData = datesData.filter((f) => f.date === moment(toDateStr).format('YYYY-MM-DD'));\n          if (fromDateData.length > 0 && toDateData.length > 0){\n            if (fromDateData[0]?.rate) {\n              if (fromDateData[0].rate.ratePlanCode === toDateData[0].rate.ratePlanCode)\n                setRatePlanCode(fromDateData[0].rate.ratePlanCode);\n            } else if (fromDateData[0]?.ratePlanCode) {\n              if (fromDateData[0].ratePlanCode === toDateData[0].ratePlanCode)\n              setRatePlanCode(fromDateData[0].ratePlanCode);\n            }\n          }          \n          night = calculateNights(fromDate, toDate);\n        }      \n      }\n\n      setNights(night);\n    }\n  };\n\n  const calculateNights = (startDate, endDate) => {\n    const start = new Date(startDate);\n    const end = new Date(endDate);\n    let dayCount = 0;\n    while (end > start) {\n      dayCount++;\n      start.setDate(start.getDate() + 1);\n    }\n    return dayCount;\n  };\n\n  const submit = () => {\n    if (data !== undefined) {\n      // let fromDateStr =\n      //   selectedDayRange.from.year +\n      //   \"-\" +\n      //   selectedDayRange.from.month +\n      //   \"-\" +\n      //   selectedDayRange.from.day;\n      // let toDateStr =\n      //   selectedDayRange.to.year +\n      //   \"-\" +\n      //   selectedDayRange.to.month +\n      //   \"-\" +\n      //   selectedDayRange.to.day;\n      // const fromDate = moment(fromDateStr).format(data.dateFormat);\n      // const toDate = moment(toDateStr).format(data.dateFormat);\n      const fromDate = dates.fromDate;\n      const toDate = dates.toDate;\n      let childAge = \"\";\n      let childrenAge = children_age;\n      if (childrenAge.length > 0) {\n        childrenAge.map((item, index) => {\n          if (item[\"children_age_\" + (index + 1)] !== \"\") {\n            if (index !== 0) {\n              childAge += \"-\";\n            }\n          }\n          childAge += item[\"children_age_\" + (index + 1)];\n        });\n      }\n      let bookingUrl = data.bookingEngineUrl;\n      if (children === 0) {\n        if (bookingUrl.includes(\"{ADULTS}-{CHILDREN_AGE}\")) {\n          bookingUrl = bookingUrl.replace(\n            \"{ADULTS}-{CHILDREN_AGE}\",\n            \"{ADULTS}{CHILDREN_AGE}\"\n          );\n        }\n      }\n      bookingUrl = bookingUrl.replace(\"{CHECK_IN}\", moment(fromDate).format(data.dateFormat));\n      bookingUrl = bookingUrl.replace(\"{CHECK_OUT}\", moment(toDate).format(data.dateFormat));\n      bookingUrl = bookingUrl.replace(\"{ADULTS}\", adults);\n      bookingUrl = bookingUrl.replace(\"{CHILDREN}\", children);\n      bookingUrl = bookingUrl.replace(\"{LANGUAGE}\", lang);\n      bookingUrl = bookingUrl.replace(\n        \"{ROOM_TYPE}\",\n        data.roomBookingEngineCode\n      );\n      bookingUrl = bookingUrl.replace(\"{NIGHTS}\", nights);\n      bookingUrl = bookingUrl.replace(\"{CHILDREN_AGE}\", childAge);\n      bookingUrl = bookingUrl.replace(\"{PROMO_CODE}\", promoCode);\n\n      if (roomTypeCode !== \"\") {\n        const hashIndex = bookingUrl.indexOf(\"#\");\n        bookingUrl = bookingUrl.slice(0, hashIndex)\n          + \"&roomtypeid=\" + roomTypeCode + bookingUrl.slice(hashIndex);\n      }\n      if (ratePlanCode !== \"\") {\n        const hashIndex = bookingUrl.indexOf(\"#\");\n        bookingUrl = bookingUrl.slice(0, hashIndex)\n          + \"&rateplanid=\" + ratePlanCode + bookingUrl.slice(hashIndex);\n      }\n\n      var body = {\n        groupId: data.gid,\n        propertyId: data.pid,\n        checkInDate: moment(fromDate).format(\"YYYY-MM-DD\"),\n        checkOutDate: toDate !== \"\" ? moment(toDate).format(\"YYYY-MM-DD\") : \"\",\n        nights: nights,\n        adults: adults,\n        childrens: children,\n        creator: \"webview\",\n        promoCode: promoCode,\n      };\n      let msg = \"Customer referred to the booking page for dates\";\n      msg +=\n        \" \" +\n        months[selectedDayRange.from.month - 1] +\n        \" \" +\n        selectedDayRange.from.day +\n        \", \" +\n        selectedDayRange.from.year +\n        \" to \" +\n        months[selectedDayRange.to.month - 1] +\n        \" \" +\n        selectedDayRange.to.day +\n        \", \" +\n        selectedDayRange.to.year +\n        \"\";\n      if (adults !== 0) {\n        msg += \", for \" + adults + \" adults\";\n      }\n      if (children !== 0) {\n        msg += \" and \" + children + \" children\";\n      }\n      api.sendActivity({\n        type: \"WEB_CHAT/SEND_EVENT\",\n        payload: {\n          name: \"webchat/booking\",\n          value: {\n            msg: `${msg}`,\n          },\n        },\n      });\n      fetch(`${BMB_BOOKING_ENGINE}`, {\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify(body),\n      });\n      addLinks(bookingUrl);\n      closeAvailblityForm();\n      if (window.parent) {\n        window.parent.postMessage(\"openUrl:\" + bookingUrl + \"\", \"*\");\n      } else {\n        window.location = bookingUrl;\n      }\n    }\n  };\n\n  return (\n    <Fragment>\n      <div className=\"chat_box_popup_new\">\n        <div className=\"endchat_popup area\">\n          <h1 className=\"availablityh1\">\n            {\"\"}\n            {roomdata && roomdata.length > 0 ?\n              <Fragment>\n                <Input\n                  type=\"select\"\n                  name=\"roomTypeCode\"\n                  value={roomTypeCode == \"\" ? \"\" : roomdata.filter(f => f.providerRoomCode == roomTypeCode)[0].providerRoomCode}\n                  onChange={(e) => handleRoomListChange(e)}\n                >\n                  <option value={\"\"}>All</option>\n                  {roomdata.map((item, i) => (\n                    <option key={item.providerRoomCode} value={item.providerRoomCode}>{item.name}</option>\n                  ))}\n                </Input>\n              </Fragment> : <IntlMessages id=\"check.availabity\" />}\n            {\"\"}\n          </h1>\n          <Row>\n            <Col xs={12}>\n              <Calendar\n                value={selectedDayRange}\n                minimumDate={minimumDate}\n                disabledDays={disableDays}\n                onChange={handleSelectedDayRange}\n                style={{ height: \"32.7em\" }}\n                renderFooter={() => (\n                  <Fragment>\n                    {loading === true && (\n                      <div id=\"spinner\" className=\"container-load\">\n                        <div className=\"loading\"></div>\n                      </div>\n                    )}\n                    {showModel === true && (\n                      <div\n                        className=\"d-flex justify-content-center py-3\"\n                        style={{\n                          background: \"red\",\n                          color: \"white\",\n                          fontSize: \"0.85rem\",\n                        }}\n                      >\n                        This date is unavailable as a Check-in date.\n                      </div>\n                    )}\n                  </Fragment>\n                )}\n              />\n            </Col>\n          </Row>\n          <Row className=\"mt-3\">\n            <Col xs={6} style={{ margin: \"0\" }}>\n              <FormGroup>\n                <Label>\n                  <IntlMessages id=\"check.availabity.adults\" />\n                </Label>\n                <Input\n                  id=\"roomCode\"\n                  type=\"hidden\"\n                  name=\"roomcode\"\n                  value={roomTypeCode}\n                ></Input>\n                <Input\n                  id=\"adult_count\"\n                  type=\"select\"\n                  name=\"adults\"\n                  value={adults}\n                  onChange={handleAdultsChange}\n                >\n                  <option>1</option>\n                  <option>2</option>\n                  <option>3</option>\n                  <option>4</option>\n                  <option>5</option>\n                  <option>6</option>\n                </Input>\n              </FormGroup>\n            </Col>\n            <Col xs={6} style={{ margin: \"0\" }}>\n              <FormGroup>\n                <Label>\n                  <IntlMessages id=\"check.availabity.children\" />\n                </Label>\n                <Input\n                  id=\"children_count\"\n                  type=\"select\"\n                  name=\"children\"\n                  value={children}\n                  onChange={handleChildrenChange}\n                >\n                  <option>0</option>\n                  <option>1</option>\n                  <option>2</option>\n                  <option>3</option>\n                  <option>4</option>\n                  <option>5</option>\n                  <option>6</option>\n                </Input>\n              </FormGroup>\n            </Col>\n            {children_age.length > 0 &&\n              children_age.map((element, i) => (\n                <Col xs={4} style={{ margin: \"0\" }} key={i}>\n                  <FormGroup>\n                    <Label>\n                      <IntlMessages id=\"check.availabity.child.age\" /> {i + 1}\n                    </Label>\n                    <Input\n                      type=\"select\"\n                      name={\"children_age_\" + (i + 1)}\n                      value={element[i]}\n                      onChange={(e) => handleChangeChildrenAge(e, element.id)}\n                    >\n                      <option>0</option>\n                      <option>1</option>\n                      <option>2</option>\n                      <option>3</option>\n                      <option>4</option>\n                      <option>5</option>\n                      <option>6</option>\n                      <option>7</option>\n                      <option>8</option>\n                      <option>9</option>\n                      <option>10</option>\n                      <option>11</option>\n                      <option>12</option>\n                    </Input>\n                  </FormGroup>\n                </Col>\n              ))}\n          </Row>\n          {data.bookingEngineUrl.includes(\"{PROMO_CODE}\") && (\n            <Row>\n              <Col xs={12} style={{ margin: \"0\" }} className=\"mb-3\">\n                <Input\n                  type=\"text\"\n                  value={promoCode}\n                  placeholder={\"Promo Code\"}\n                  onChange={handlePromoCodeChange}\n                />\n              </Col>\n            </Row>\n          )}\n          {selectedDayRange.from !== null && selectedDayRange.to !== null ? (\n            <button className=\"availablity_button\"\n              style={{ backgroundColor: buttonColor ? buttonColor : 'lightgray', borderColor: buttonColor ? buttonColor : 'lightgray' }}\n              // style={{ backgroundColor: '#0eca2d' }}\n              onClick={submit}>\n              {\"\"}\n              Book Now\n              {\"\"}\n            </button>\n          ) : (\n            <button\n              className=\"availablity_button\"\n              style={{ backgroundColor: buttonColor ? buttonColor : 'lightgray', borderColor: buttonColor ? buttonColor : 'lightgray' }}\n            //  style={{ background: \"#0eca2d\" }}\n            >\n              {\"\"}\n              Book Now\n              {\"\"}\n            </button>\n          )}\n          <button className=\"cancelchat_button\" onClick={closeAvailblityForm}>\n            {\"\"}\n            <IntlMessages id=\"check.availabity.cancel\" />\n            {\"\"}\n          </button>\n        </div>\n      </div>\n    </Fragment>\n  );\n}\n\nexport default AmaduesAvailability;\n","import React, { useState, useEffect, Fragment } from \"react\";\nimport IntlMessages from \"../helpers/IntlMessages\";\nimport \"./../date-picker.css\";\nimport { Calendar } from \"react-modern-calendar-datepicker\";\nimport moment from \"moment\";\nimport {\n  Dropdown,\n  DropdownToggle,\n  DropdownMenu,\n  DropdownItem,\n  Row,\n  Col,\n  FormGroup,\n  Input,\n  Label,\n} from \"reactstrap\";\n\nconst months = [\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];\nconst BMB_BOOKING_ENGINE =\n  process.env.REACT_APP_API_URL + \"/booking-engine-data\";\nconst AMADUES = process.env.REACT_APP_PARTNER_URL + \"/\";\nlet currentDate = moment().add(1, \"days\").format(\"YYYY-MM-DD\");\nfunction MewsAvailability({\n  data,\n  gid,\n  pid,\n  api,\n  lang,\n  integration,\n  closeAvailblityForm,\n  addLinks,\n  propertyCurrency,\n  buttonColor,\n  roomdata\n}) {\n  const [rooms, setRooms] = useState(1);\n  const [promoCode, setPromoCode] = useState(\"\");\n  const [roomTypeCode, setRoomTypeCode] = useState(\"\");\n  const [adults, setAdults] = useState(2);\n  const [children, setChildren] = useState(0);\n  const [nights, setNights] = useState(0);\n  const [children_age, setChildren_age] = useState([]);\n  const [ratePlanCode, setRatePlanCode] = useState(\"\");\n  const [datesData, setDatesData] = useState([]);\n  const [disableDays, setDisableDays] = useState([]);\n  const [availablePrice, setAvaialbelPrice] = useState();\n  const [readyToBook, setReadyToBook] = useState(false);\n  const [disableCheckInDate, setDisableCheckInDate] = useState([]);\n  const [showModel, setShowModel] = useState(false);\n  const [dates, setDates] = useState(null);\n  const [minimumDate, setMinimumDate] = useState({\n    year: moment().add(1, \"days\").year(),\n    month: moment().add(1, \"days\").month() + 1,\n    day: moment().add(1, \"days\").date(),\n  });\n  const [priceLoading, setPriceLoading] = useState(false);\n  const defaultValue = {\n    year: 2023,\n    month: 12,\n    day: 1,\n  };\n  const [selectedDayRange, setSelectedDayRange] = useState({\n    from: null,\n    to: null,\n  });\n\n  const handleCheckAvailability = (\n    startDate,\n    endDate,\n    adultsCount,\n    childrensCount,\n    roomTypeCode\n  ) => {\n    const fromDate = startDate;\n    const toDate = endDate;\n    setRooms(1);\n    setPriceLoading(true);\n    let daysDiff = moment(toDate).diff(startDate, \"days\");\n    setAvaialbelPrice();\n    let query = \"\";\n    if (roomTypeCode !== 'All' && roomTypeCode !== '')\n      query += \"&roomType=\" + roomTypeCode;\n    fetch(\n      process.env.REACT_APP_PARTNER_URL +\n      `/public/availability/${integration.Id}?group_id=` +\n      gid +\n      \"&adults=\" +\n      adultsCount +\n      \"&children=\" +\n      childrensCount +\n      \"&dateIn=\" +\n      moment(fromDate).format(\"YYYY-MM-DD\") +\n      \"&dateOut=\" +\n      moment(toDate).format(\"YYYY-MM-DD\") +\n      \"&currency=\" +\n      propertyCurrency +\n      \"&channel=\" + integration.Channel +\n      \"&rooms=\" + 1 + query,\n      {\n        method: \"GET\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n      }\n    )\n      .then((response) => response.json())\n      .then((json) => {\n        if (integration.Channel === 'SHRCRS') {\n          if (json?.dates && json.dates.length > 0) {\n            if (roomTypeCode !== 'All' && roomTypeCode !== '') {\n              setAvaialbelPrice(\n                `AVAILABLE, ${propertyCurrency} ${json?.dates[0].selectedRate?.price}/night`\n              );\n            } else {\n              let obj = json.dates.reduce(function (prev, curr) {\n                return prev.selectedRate.price < curr.selectedRate.price ? prev : curr;\n              });\n              setAvaialbelPrice(\n                `AVAILABLE, ${propertyCurrency} ${obj.selectedRate?.price}/night`\n              );\n            }\n          } else {\n            setAvaialbelPrice(\n              `No Availability for your selection, try with different dates`\n            );\n            setReadyToBook(false);\n          }\n          // setAvaialbelPrice(\n          //   `AVAILABLE, ${propertyCurrency} ${price[0]}/night${roomAdults === 1 ? \"/person\" : \"\"}`\n          // );\n          setReadyToBook(true);\n        } else {\n          let price = [];\n          let rooms = 1;\n          let roomAdults = 0;\n          let roomCategoryAvailabilities = json.RoomCategoryAvailabilities;\n          if (\n            roomCategoryAvailabilities !== undefined &&\n            roomCategoryAvailabilities.length > 0\n          ) {\n            if (\n              roomCategoryAvailabilities[0]?.RoomOccupancyAvailabilities &&\n              roomCategoryAvailabilities[0].RoomOccupancyAvailabilities.length > 0\n            ) {\n              let details =\n                roomCategoryAvailabilities[0]?.RoomOccupancyAvailabilities[0];\n              roomAdults = details.AdultCount;\n              if (\n                details.AdultCount >= adultsCount &&\n                details.ChildCount >= childrensCount\n              ) {\n                if (details.Pricing.length === 1) {\n                  price.push(\n                    details.Pricing[0].Price.AveragePerNight[propertyCurrency]\n                  );\n                } else {\n                  details.Pricing.map((d) => {\n                    price.push(d.Price.AveragePerNight[propertyCurrency]);\n                  });\n                }\n              } else {\n                let availableRooms = roomCategoryAvailabilities[0].AvailableRoomCount;\n                let remainingAdults = details.AdultCount === 1 ? adultsCount - details.AdultCount : adultsCount % details.AdultCount;\n                if (remainingAdults > 0 && remainingAdults < availableRooms) {\n                  price.push(\n                    details.Pricing[0].Price.AveragePerNight[propertyCurrency]\n                  );\n                  setRooms(rooms + remainingAdults);\n                }\n              }\n            }\n          }\n          if (price.length > 0) {\n            if (price.length === 0) {\n              setAvaialbelPrice(\n                `AVAILABLE, ${propertyCurrency} ${price[0]}/night${roomAdults === 1 ? \"/person\" : \"\"}`\n              );\n              setReadyToBook(true);\n            } else {\n              setAvaialbelPrice(\n                `AVAILABLE, ${propertyCurrency} ${Math.min(\n                  ...price\n                )}/night${roomAdults === 1 ? \"/person\" : \"\"}`\n              );\n              setReadyToBook(true);\n            }\n          } else {\n            setAvaialbelPrice(\n              `No Availability for your selection, try with different dates`\n            );\n            setReadyToBook(false);\n          }\n        }\n        setPriceLoading(false);\n      })\n      .catch((err) => setPriceLoading(false));\n  };\n\n  useEffect(() => {\n    if (integration.ShowRatesSelectedRoom === true) {\n      var payload = {\n        propertyId: data.pid,\n        roomId: data.roomId,\n        languageCode: \"en\",\n      };\n\n      fetch(process.env.REACT_APP_API_URL + \"/room\", {\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify(payload),\n      })\n        .then((response) => response.json())\n        .then((json) => {\n          setRoomTypeCode(json.result.providerRoomCode);\n        });\n    }\n  }, integration);\n\n  useEffect(() => {\n    if (dates?.toDate && dates.toDate !== \"\")\n      handleCheckAvailability(dates.fromDate, dates.toDate, adults, children, roomTypeCode);\n  }, [dates]);\n\n  const handleRoomListChange = (e) => {\n    setRoomTypeCode(e.target.value);\n    if (e.target.value !== \"\") {\n      if (dates?.toDate && dates.toDate !== \"\")\n        handleCheckAvailability(\n          dates.fromDate,\n          dates.toDate,\n          adults,\n          children,\n          e.target.value\n        );      \n    } else {\n      if (dates?.toDate && dates.toDate !== \"\")\n        handleCheckAvailability(dates.fromDate, dates.toDate, adults, children, \"\");              \n    }\n  }\n\n  const handleAdultsChange = (e) => {\n    setAdults(e.target.value);\n    handleCheckAvailability(\n      dates.fromDate,\n      dates.toDate,\n      e.target.value,\n      children,\n      roomTypeCode\n    );\n  };\n\n  const handleChildrenChange = (e) => {\n    setChildren(e.target.value);\n    if (data.bookingEngineUrl.includes(\"{CHILDREN_AGE}\")) {\n      let childrenValue = parseInt(e.target.value);\n      let childrenAge = [...children_age];\n      if (childrenAge.length > childrenValue) {\n        let arr = [];\n        for (var i = 0; i < childrenValue; i++) {\n          arr.push(childrenAge[i]);\n        }\n        childrenAge = arr;\n      } else {\n        for (var i = childrenAge.length; i < childrenValue; i++) {\n          childrenAge.push({\n            id: i + 1,\n            [\"children_age_\" + (i + 1)]: \"\",\n          });\n        }\n      }\n      setChildren_age(childrenAge);\n    }\n    handleCheckAvailability(\n      dates.fromDate,\n      dates.toDate,\n      adults,\n      e.target.value,\n      roomTypeCode\n    );\n  };\n\n  const handleChangeChildrenAge = (e, id) => {\n    let childrenAge = [...children_age];\n    childrenAge = children_age.map((item) => {\n      if (item.id === id) {\n        return { ...item, [e.target.name]: e.target.value };\n      } else {\n        return { ...item };\n      }\n    });\n    setChildren_age(childrenAge);\n    handleCheckAvailability(dates.fromDate, dates.toDate, adults, children, roomTypeCode);\n  };\n\n  const handlePromoCodeChange = (e) => {\n    setPromoCode(e.target.value);\n  };\n\n  const handleSelectedDayRange = (dates) => {\n    setShowModel(false);\n    if (\n      disableCheckInDate.filter(\n        (f) =>\n          f.year == dates.from.year &&\n          f.month == dates.from.month &&\n          f.day == dates.from.day\n      ).length > 0\n    ) {\n      setShowModel(true);\n      setSelectedDayRange({ from: null, to: null });\n      setDates(null);\n    } else if (\n      disableCheckInDate.filter(\n        (f) =>\n          f.year == dates.from.year &&\n          f.month == dates.from.month &&\n          f.day == dates.from.day &&\n          f.year == dates.to.year &&\n          f.month == dates.to.month &&\n          f.day == dates.to.day\n      ).length > 0\n    ) {\n      setShowModel(true);\n      setSelectedDayRange({ from: null, to: null });\n      setDates(null);\n    } else if (  \n      disableDays.filter((f) => f.year == dates.from.year &&\n      f.month == dates.from.month &&\n      f.day == dates.from.day ).length === 0 &&\n      (dates.to === null\n        ? true\n        : disableDays.filter((f) => f.year == dates.to.year &&\n        f.month == dates.to.month &&\n        f.day == dates.to.day).length === 0)\n    ) {\n      setSelectedDayRange(dates);\n      var fromDate = \"\";\n      var toDate = \"\";\n      if (dates.from !== null) {\n        fromDate = moment({\n          year: dates.from.year,\n          month: dates.from.month - 1,\n          day: dates.from.day,\n        }).format(\"YYYY-MM-DD\");\n      }\n      if (dates.to !== null) {\n        toDate = moment({\n          year: dates.to.year,\n          month: dates.to.month - 1,\n          day: dates.to.day,\n        }).format(\"YYYY-MM-DD\");\n      }\n      setDates({\n        fromDate: fromDate,\n        toDate: toDate,\n      });\n      let night = 0;\n      if (dates.from !== null && dates.to !== null) {\n        let fromDateStr =\n          dates.from.year + \"-\" + dates.from.month + \"-\" + dates.from.day;\n        let toDateStr =\n          dates.to.year + \"-\" + dates.to.month + \"-\" + dates.to.day;\n        const fromDate = moment(fromDateStr).format(\"YYYY-MM-DD\");\n        const toDate = moment(toDateStr).format(\"YYYY-MM-DD\");\n        night = calculateNights(fromDate, toDate);\n        if (datesData.length > 0) {\n          const fromDateData = datesData.filter(\n            (f) => f.date === moment(fromDateStr).format(\"YYYY-MM-DD\")\n          );\n          const toDateData = datesData.filter(\n            (f) => f.date === moment(toDateStr).format(\"YYYY-MM-DD\")\n          );\n          if (\n            fromDateData.length > 0 &&\n            toDateData.length > 0 &&\n            fromDateData[0].rate.ratePlanCode ===\n            toDateData[0].rate.ratePlanCode\n          )\n            setRatePlanCode(fromDateData[0].rate.ratePlanCode);\n        }\n      }\n\n      setNights(night);\n    }\n  };\n\n  const calculateNights = (startDate, endDate) => {\n    const start = new Date(startDate);\n    const end = new Date(endDate);\n    let dayCount = 0;\n    while (end > start) {\n      dayCount++;\n      start.setDate(start.getDate() + 1);\n    }\n    return dayCount;\n  };\n\n  const submit = () => {\n    if (data !== undefined && readyToBook) {\n      const fromDate = dates.fromDate;\n      const toDate = dates.toDate;\n      let childAge = \"\";\n      let childrenAge = children_age;\n      if (childrenAge.length > 0) {\n        childrenAge.map((item, index) => {\n          if (item[\"children_age_\" + (index + 1)] !== \"\") {\n            if (index !== 0) {\n              childAge += \"-\";\n            }\n          }\n          childAge += item[\"children_age_\" + (index + 1)];\n        });\n      }\n      let bookingUrl = data.bookingEngineUrl;\n      if (children === 0) {\n        if (bookingUrl.includes(\"{ADULTS}-{CHILDREN_AGE}\")) {\n          bookingUrl = bookingUrl.replace(\n            \"{ADULTS}-{CHILDREN_AGE}\",\n            \"{ADULTS}{CHILDREN_AGE}\"\n          );\n        }\n      }\n      bookingUrl = bookingUrl.replace(\n        \"{CHECK_IN}\",\n        moment(fromDate).format(data.dateFormat)\n      );\n      bookingUrl = bookingUrl.replace(\n        \"{CHECK_OUT}\",\n        moment(toDate).format(data.dateFormat)\n      );\n      bookingUrl = bookingUrl.replace(\"{ADULTS}\", adults);\n      bookingUrl = bookingUrl.replace(\"{CHILDREN}\", children);\n      bookingUrl = bookingUrl.replace(\"{LANGUAGE}\", lang);\n      //bookingUrl = bookingUrl.replace(\"{ROOM_TYPE}\", roomTypeCode);\n      bookingUrl = bookingUrl.replace(\"mewsRoom=null\", \"mewsRoom=\" + roomTypeCode);\n      bookingUrl = bookingUrl.replace(\"{NIGHTS}\", nights);\n      bookingUrl = bookingUrl.replace(\"{CHILDREN_AGE}\", childAge);\n      bookingUrl = bookingUrl.replace(\"{PROMO_CODE}\", promoCode);\n\n      if (roomTypeCode !== \"\") {\n        const hashIndex = bookingUrl.indexOf(\"#\");\n        bookingUrl =\n          bookingUrl.slice(0, hashIndex) +\n          \"&roomtypeid=\" +\n          roomTypeCode +\n          bookingUrl.slice(hashIndex);\n      }\n      if (ratePlanCode !== \"\") {\n        const hashIndex = bookingUrl.indexOf(\"#\");\n        bookingUrl =\n          bookingUrl.slice(0, hashIndex) +\n          \"&rateplanid=\" +\n          ratePlanCode +\n          bookingUrl.slice(hashIndex);\n      }\n\n      var body = {\n        groupId: data.gid,\n        propertyId: data.pid,\n        checkInDate: moment(fromDate).format(\"YYYY-MM-DD\"),\n        checkOutDate: toDate !== \"\" ? moment(toDate).format(\"YYYY-MM-DD\") : \"\",\n        nights: nights,\n        adults: adults,\n        childrens: children,\n        creator: \"webview\",\n        promoCode: promoCode,\n      };\n      let msg = \"Customer referred to the booking page for dates\";\n      msg +=\n        \" \" +\n        months[selectedDayRange.from.month - 1] +\n        \" \" +\n        selectedDayRange.from.day +\n        \", \" +\n        selectedDayRange.from.year +\n        \" to \" +\n        months[selectedDayRange.to.month - 1] +\n        \" \" +\n        selectedDayRange.to.day +\n        \", \" +\n        selectedDayRange.to.year +\n        \"\";\n      if (adults !== 0) {\n        msg += \", for \" + adults + \" adults\";\n      }\n      if (children !== 0) {\n        msg += \" and \" + children + \" children\";\n      }\n      api.sendActivity({\n        type: \"WEB_CHAT/SEND_EVENT\",\n        payload: {\n          name: \"webchat/booking\",\n          value: {\n            msg: `${msg}`,\n          },\n        },\n      });\n      fetch(`${BMB_BOOKING_ENGINE}`, {\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify(body),\n      });\n      addLinks(bookingUrl);\n      closeAvailblityForm();\n      if (window.parent) {\n        window.parent.postMessage(\"openUrl:\" + bookingUrl + \"\", \"*\");\n      } else {\n        window.location = bookingUrl;\n      }\n    }\n  };\n\n  return (\n    <Fragment>\n      <div className=\"chat_box_popup_new\">\n        <div className=\"endchat_popup area\">\n          <h1 className=\"availablityh1\">\n            {\"\"}\n            {roomdata && roomdata.length > 0 ?\n              <Fragment>\n                <Input\n                  type=\"select\"\n                  name=\"roomTypeCode\"\n                  value={roomTypeCode == \"\" ? \"\" : roomdata.filter(f => f.providerRoomCode == roomTypeCode)[0].providerRoomCode}\n                  onChange={(e) => handleRoomListChange(e)}\n                >\n                  <option value={\"\"}>All</option>\n                  {roomdata.map((item, i) => (\n                    <option value={item.providerRoomCode}>{item.name}</option>\n                  ))}\n                </Input>\n              </Fragment> : <IntlMessages id=\"check.availabity\" />}\n            {\"\"}\n          </h1>\n          <Row>\n            <Col xs={12}>\n              <Calendar\n                value={selectedDayRange}\n                minimumDate={minimumDate}\n                disabledDays={disableDays}\n                onChange={handleSelectedDayRange}\n                style={{ height: \"32.7em\" }}\n                renderFooter={() => (\n                  <Fragment>\n                    {priceLoading === true && (\n                      <div id=\"spinner\" className=\"container-load\">\n                        <div className=\"loading\"></div>\n                      </div>\n                    )}\n                  </Fragment>\n                )}\n              />\n            </Col>\n          </Row>\n          <Row className=\"mt-3\">\n            <Col xs={6} style={{ margin: \"0\" }}>\n              <FormGroup>\n                <Label>\n                  <IntlMessages id=\"check.availabity.adults\" />\n                </Label>\n                <Input\n                  id=\"roomCode\"\n                  type=\"hidden\"\n                  name=\"roomcode\"\n                  value={roomTypeCode}\n                ></Input>\n                <Input\n                  id=\"adult_count\"\n                  type=\"select\"\n                  name=\"adults\"\n                  value={adults}\n                  onChange={handleAdultsChange}\n                >\n                  <option>1</option>\n                  <option>2</option>\n                  <option>3</option>\n                  <option>4</option>\n                  <option>5</option>\n                  <option>6</option>\n                </Input>\n              </FormGroup>\n            </Col>\n            <Col xs={6} style={{ margin: \"0\" }}>\n              <FormGroup>\n                <Label>\n                  <IntlMessages id=\"check.availabity.children\" />\n                </Label>\n                <Input\n                  id=\"children_count\"\n                  type=\"select\"\n                  name=\"children\"\n                  value={children}\n                  onChange={handleChildrenChange}\n                >\n                  <option>0</option>\n                  <option>1</option>\n                  <option>2</option>\n                  <option>3</option>\n                  <option>4</option>\n                  <option>5</option>\n                  <option>6</option>\n                </Input>\n              </FormGroup>\n            </Col>\n            {children_age.length > 0 &&\n              children_age.map((element, i) => (\n                <Col xs={4} style={{ margin: \"0\" }} key={i}>\n                  <FormGroup>\n                    <Label>\n                      <IntlMessages id=\"check.availabity.child.age\" /> {i + 1}\n                    </Label>\n                    <Input\n                      type=\"select\"\n                      name={\"children_age_\" + (i + 1)}\n                      value={element[i]}\n                      onChange={(e) => handleChangeChildrenAge(e, element.id)}\n                    >\n                      <option>0</option>\n                      <option>1</option>\n                      <option>2</option>\n                      <option>3</option>\n                      <option>4</option>\n                      <option>5</option>\n                      <option>6</option>\n                      <option>7</option>\n                      <option>8</option>\n                      <option>9</option>\n                      <option>10</option>\n                      <option>11</option>\n                      <option>12</option>\n                    </Input>\n                  </FormGroup>\n                </Col>\n              ))}\n          </Row>\n          {data.bookingEngineUrl.includes(\"{PROMO_CODE}\") && (\n            <Row>\n              <Col xs={12} style={{ margin: \"0\" }} className=\"mb-3\">\n                <Input\n                  type=\"text\"\n                  value={promoCode}\n                  placeholder={\"Promo Code\"}\n                  onChange={handlePromoCodeChange}\n                />\n              </Col>\n            </Row>\n          )}\n          {selectedDayRange.from !== null && selectedDayRange.to !== null && (\n            <button\n              className=\"availablity_button\"\n              // style={{ backgroundColor: buttonColor ? buttonColor : 'lightgray' }}\n              style={{\n                backgroundColor: `${readyToBook ? (buttonColor || \"#0eca2d\") : \"#FFBF00\"}`,\n              }}\n              onClick={submit}\n            >\n              <span className=\"mb-2\">{availablePrice}</span>\n              <br />\n              {readyToBook && (\n                        <span style={{ textDecoration: \"underline\" }}>\n                          Book {rooms > 1 ? rooms + \" Pods\" : \"Now\"}\n                        </span>\n              )}\n            </button>\n          )}\n          <button className=\"cancelchat_button\" onClick={closeAvailblityForm}>\n            {\"\"}\n            <IntlMessages id=\"check.availabity.cancel\" />\n            {\"\"}\n          </button>\n        </div>\n      </div>\n    </Fragment>\n  );\n}\n\nexport default MewsAvailability;\n","import React, { Component, Fragment } from \"react\";\nimport IntlMessages from \"../helpers/IntlMessages\";\nimport \"react-modern-calendar-datepicker/lib/DatePicker.css\";\nimport { Calendar } from \"react-modern-calendar-datepicker\";\nimport moment from \"moment\";\nimport {\n  Dropdown,\n  DropdownToggle,\n  DropdownMenu,\n  DropdownItem,\n  Row,\n  Col,\n  FormGroup,\n  Input,\n  Label,\n} from \"reactstrap\";\nimport AmaduesAvailability from \"./AmaduesAvailability\";\nimport MewsAvailability from \"./MewsAvailability\";\nconst months = [\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];\nconst BMB_Property_URL = process.env.REACT_APP_API_URL + \"/property\";\nconst BMB_BOOKING_ENGINE =\n  process.env.REACT_APP_API_URL + \"/booking-engine-data\";\nexport default class CheckAvailablity extends Component {\n  constructor(props) {\n    super(props);\n    this.handleAdultsChange = this.handleAdultsChange.bind(this);\n    this.handleChildrenChange = this.handleChildrenChange.bind(this);\n    this.submit = this.submit.bind(this);\n    this.setSelectedDayRange = this.setSelectedDayRange.bind(this);\n    this.calculateNights = this.calculateNights.bind(this);\n    this.handleChangeChildrenAge = this.handleChangeChildrenAge.bind(this);\n    this.handlePromoCodeChange = this.handlePromoCodeChange.bind(this);\n    this.state = {\n      active: this.props.open_availblity_popup,\n      minimumDate: {\n        year: moment().add(1, \"days\").year(),\n        month: moment().add(1, \"days\").month() + 1,\n        day: moment().add(1, \"days\").date(),\n      },\n      selectedDayRange: {\n        from: {\n          year: moment().add(15, \"days\").year(),\n          month: moment().add(15, \"days\").month() + 1,\n          day: moment().add(15, \"days\").date(),\n        },\n        to: {\n          year: moment().add(17, \"days\").year(),\n          month: moment().add(17, \"days\").month() + 1,\n          day: moment().add(17, \"days\").date(),\n        },\n      },\n      adults: 2,\n      children: 0,\n      nights: 0,\n      children_age: [],\n      propertyCurrency: '',\n      promoCode: \"\",\n      integration: undefined,\n      dates: null,\n      roomdata: null,\n      roomId: this.props.data.roomId\n    };\n  }\n\n  componentDidMount() {\n    // console.log('data', this.state.availabityData)\n    // let fromDateStr =\n    //   this.state.selectedDayRange.from.year +\n    //   \"-\" +\n    //   this.state.selectedDayRange.from.month +\n    //   \"-\" +\n    //   this.state.selectedDayRange.from.day;\n    // let toDateStr =\n    //   this.state.selectedDayRange.to.year +\n    //   \"-\" +\n    //   this.state.selectedDayRange.to.month +\n    //   \"-\" +\n    //   this.state.selectedDayRange.to.day;\n    // const fromDate = moment(fromDateStr).format(this.props.data.dateFormat);\n    // const toDate = moment(toDateStr).format(this.props.data.dateFormat);\n    fetch(process.env.REACT_APP_API_URL + \"/properties/\" + this.props.data.pid + \"/rooms?languagecode=\" + this.props.lang, {\n      method: 'GET',\n      headers: {\n        'Accept': 'application/json',\n        'Content-Type': 'application/json'\n      }\n    }).then(response => response.json())\n      .then(json => {\n        this.setState({ roomdata: json.rooms });\n      });\n    var dates = this.state.selectedDayRange;\n    var fromDate = \"\";\n    var toDate = \"\";\n    if (dates.from !== null) {\n      fromDate = moment({ year: dates.from.year, month: dates.from.month - 1, day: dates.from.day }).format(\"YYYY-MM-DD\");\n    }\n    if (dates.to !== null) {\n      toDate = moment({ year: dates.to.year, month: dates.to.month - 1, day: dates.to.day }).format(\"YYYY-MM-DD\");\n    }\n    this.setState({\n      dates: { fromDate: fromDate, toDate: toDate }\n    });\n    let nights = this.calculateNights(fromDate, toDate);\n    this.setState({ nights: nights });\n    fetch(\n      BMB_Property_URL +\n      \"/\" +\n      this.props.data.pid +\n      \"?groupId=\" +\n      this.props.data.gid +\n      \"\",\n      {\n        method: \"GET\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n      }\n    )\n      .then((response) => response.json())\n      .then((json) => {\n        if (json.property !== undefined && json.property.currency !== undefined) {\n          this.setState({ propertyCurrency: json.property.currency });\n        }\n      });\n    fetch(\n      process.env.REACT_APP_API_URL +\n      \"/find-amadues?groupId=\" +\n      this.props.data.gid +\n      \"&propertyId=\" +\n      this.props.data.pid,\n      {\n        method: \"GET\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n      }\n    )\n      .then((response) => response.json())\n      .then((json) => {\n        if (json.Found === true && json.ShowRates === true) {\n          this.setState({ integration: json });\n        }\n      });\n\n    fetch(\n      process.env.REACT_APP_API_URL +\"/find-by-property?groupId=\" +\n      this.props.data.gid +\n      \"&propertyId=\" +\n      this.props.data.pid,\n      {\n        method: \"GET\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n      }\n    )\n      .then((response) => response.json())\n      .then((json) => {\n        if (json.Found === true && json.ShowRates === true) {\n          this.setState({ integration: json });\n        }\n      });\n    const { buttonColor } = this.props;\n\n    document.documentElement.style.setProperty('--selectedStartEndColor', buttonColor === undefined ? \"#0eca2d\" : buttonColor);\n\n  }\n  handleAdultsChange = (e) => {\n    this.setState({ adults: e.target.value });\n  };\n  handleChildrenChange = (e) => {\n    this.setState({ children: e.target.value });\n    if (this.props.data.bookingEngineUrl.includes(\"{CHILDREN_AGE}\")) {\n      let childrenValue = parseInt(e.target.value);\n      let childrenAge = [...this.state.children_age];\n      if (childrenAge.length > childrenValue) {\n        let arr = [];\n        for (var i = 0; i < childrenValue; i++) {\n          arr.push(childrenAge[i]);\n        }\n        childrenAge = arr;\n      } else {\n        for (var i = childrenAge.length; i < childrenValue; i++) {\n          childrenAge.push({\n            id: i + 1,\n            [\"children_age_\" + (i + 1)]: \"\",\n          });\n        }\n      }\n      this.setState({ children_age: childrenAge });\n    }\n  };\n  handleChangeChildrenAge(e, id) {\n    let childrenAge = [...this.state.children_age];\n    childrenAge = this.state.children_age.map((item) => {\n      if (item.id === id) {\n        return { ...item, [e.target.name]: e.target.value };\n      } else {\n        return { ...item };\n      }\n    });\n\n    this.setState({ children_age: childrenAge });\n  }\n\n  handlePromoCodeChange = (e) => {\n    this.setState({ promoCode: e.target.value });\n  };\n  setSelectedDayRange(dates) {\n    this.setState({ selectedDayRange: dates });\n    var fromDate = \"\";\n    var toDate = \"\";\n    if (dates.from !== null) {\n      fromDate = moment({ year: dates.from.year, month: dates.from.month - 1, day: dates.from.day }).format(\"YYYY-MM-DD\");\n    }\n    if (dates.to !== null) {\n      toDate = moment({ year: dates.to.year, month: dates.to.month - 1, day: dates.to.day }).format(\"YYYY-MM-DD\");\n    }\n    this.setState({\n      dates: { fromDate: fromDate, toDate: toDate }\n    });\n    let night = 0;\n    if (dates.from !== null && dates.to !== null) {\n      let fromDateStr =\n        dates.from.year + \"-\" + dates.from.month + \"-\" + dates.from.day;\n      let toDateStr = dates.to.year + \"-\" + dates.to.month + \"-\" + dates.to.day;\n      const fromDate = moment(fromDateStr).format(\"YYYY-MM-DD\");\n      const toDate = moment(toDateStr).format(\"YYYY-MM-DD\");\n      night = this.calculateNights(fromDate, toDate);\n    }\n    this.setState({ nights: night });\n  }\n  calculateNights(startDate, endDate) {\n    const start = new Date(startDate);\n    const end = new Date(endDate);\n    let dayCount = 0;\n    while (end > start) {\n      dayCount++;\n      start.setDate(start.getDate() + 1);\n    }\n    return dayCount;\n  }\n\n  submit() {\n    const data = this.props.data;\n    // let fromDateStr =\n    //   this.state.selectedDayRange.from.year +\n    //   \"-\" +\n    //   this.state.selectedDayRange.from.month +\n    //   \"-\" +\n    //   this.state.selectedDayRange.from.day;\n    // let toDateStr =\n    //   this.state.selectedDayRange.to.year +\n    //   \"-\" +\n    //   this.state.selectedDayRange.to.month +\n    //   \"-\" +\n    //   this.state.selectedDayRange.to.day;\n    // const fromDate = moment(fromDateStr).format(data.dateFormat);\n    // const toDate = moment(toDateStr).format(data.dateFormat);\n    // console.log(this.state.dates);\n    const fromDate = this.state.dates.fromDate;\n    const toDate = this.state.dates.toDate;\n    let childAge = \"\";\n    let childrenAge = this.state.children_age;\n    if (childrenAge.length > 0) {\n      childrenAge.map((item, index) => {\n        if (item[\"children_age_\" + (index + 1)] !== \"\") {\n          if (index !== 0) {\n            childAge += \"-\";\n          }\n        }\n        childAge += item[\"children_age_\" + (index + 1)];\n      });\n    }\n    let bookingUrl = data.bookingEngineUrl;\n    if (this.state.children === 0) {\n      if (bookingUrl.includes(\"{ADULTS}-{CHILDREN_AGE}\")) {\n        bookingUrl = bookingUrl.replace(\n          \"{ADULTS}-{CHILDREN_AGE}\",\n          \"{ADULTS}{CHILDREN_AGE}\"\n        );\n      }\n    }\n    bookingUrl = bookingUrl.replace(\n      \"{CHECK_IN}\",\n      moment(fromDate).format(this.props.data.dateFormat)\n    );\n    bookingUrl = bookingUrl.replace(\n      \"{CHECK_OUT}\",\n      moment(toDate).format(this.props.data.dateFormat)\n    );\n    bookingUrl = bookingUrl.replace(\"{ADULTS}\", this.state.adults);\n    bookingUrl = bookingUrl.replace(\"{CHILDREN}\", this.state.children);\n    bookingUrl = bookingUrl.replace(\"{LANGUAGE}\", this.props.lang);\n    bookingUrl = bookingUrl.replace(\"{ROOM_TYPE}\", data.roomBookingEngineCode);\n    bookingUrl = bookingUrl.replace(\"{NIGHTS}\", this.state.nights);\n    bookingUrl = bookingUrl.replace(\"{CHILDREN_AGE}\", childAge);\n    bookingUrl = bookingUrl.replace(\"{PROMO_CODE}\", this.state.promoCode);\n    var body = {\n      groupId: this.props.data.gid,\n      propertyId: this.props.data.pid,\n      checkInDate: moment(fromDate).format(\"YYYY-MM-DD\"),\n      checkOutDate: toDate !== \"\" ? moment(toDate).format(\"YYYY-MM-DD\") : \"\",\n      nights: this.state.nights,\n      adults: this.state.adults,\n      childrens: this.state.children,\n      creator: \"webview\",\n      promoCode: this.state.promoCode,\n    };\n    let msg = \"Customer referred to the booking page for dates\";\n    msg +=\n      \" \" +\n      months[this.state.selectedDayRange.from.month - 1] +\n      \" \" +\n      this.state.selectedDayRange.from.day +\n      \", \" +\n      this.state.selectedDayRange.from.year +\n      \" to \" +\n      months[this.state.selectedDayRange.to.month - 1] +\n      \" \" +\n      this.state.selectedDayRange.to.day +\n      \", \" +\n      this.state.selectedDayRange.to.year +\n      \"\";\n    if (this.state.adults !== 0) {\n      msg += \", for \" + this.state.adults + \" adults\";\n    }\n    if (this.state.children !== 0) {\n      msg += \" and \" + this.state.children + \" children\";\n    }\n    this.props.api.sendActivity({\n      type: \"WEB_CHAT/SEND_EVENT\",\n      payload: {\n        name: \"webchat/booking\",\n        value: {\n          msg: `${msg}`,\n        },\n      },\n    });\n    fetch(`${BMB_BOOKING_ENGINE}`, {\n      method: \"POST\",\n      headers: {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify(body),\n    });\n    this.props.addLinks(bookingUrl);\n    this.props.closeAvailblityForm();\n    if (window.parent) {\n      window.parent.postMessage(\"openUrl:\" + bookingUrl + \"\", \"*\");\n    } else {\n      window.location = bookingUrl;\n    }\n  }\n\n  render() {\n\n    return (\n      <Fragment>\n        {this.state.integration === undefined ? (\n          <div className=\"chat_box_popup_new\">\n            <div className=\"endchat_popup area\">\n              <h1 className=\"availablityh1\">\n                {\"\"}\n                {this.state.roomdata && this.state.roomdata.filter(l => l.id === this.state.roomId).length > 0 ?\n                  this.state.roomdata.filter(l => l.id === this.state.roomId)[0].name :\n                  <IntlMessages id=\"check.availabity\" />\n                }\n                {\"\"}\n              </h1>\n              <Row>\n                <Col xs={12}>\n                  <Calendar\n                    value={this.state.selectedDayRange}\n                    minimumDate={this.state.minimumDate}\n                    onChange={this.setSelectedDayRange}\n                    style={{ height: \"32.7em\" }}\n                  />\n                </Col>\n              </Row>\n              <Row className=\"mt-3\">\n                <Col xs={6} style={{ margin: \"0\" }}>\n                  <FormGroup>\n                    <Label>\n                      <IntlMessages id=\"check.availabity.adults\" />\n                    </Label>\n                    <Input\n                      type=\"select\"\n                      name=\"adults\"\n                      value={this.state.adults}\n                      onChange={this.handleAdultsChange}\n                    >\n                      <option>1</option>\n                      <option>2</option>\n                      <option>3</option>\n                      <option>4</option>\n                      <option>5</option>\n                      <option>6</option>\n                    </Input>\n                  </FormGroup>\n                </Col>\n                <Col xs={6} style={{ margin: \"0\" }}>\n                  <FormGroup>\n                    <Label>\n                      <IntlMessages id=\"check.availabity.children\" />\n                    </Label>\n                    <Input\n                      type=\"select\"\n                      name=\"children\"\n                      value={this.state.children}\n                      onChange={this.handleChildrenChange}\n                    >\n                      <option>0</option>\n                      <option>1</option>\n                      <option>2</option>\n                      <option>3</option>\n                      <option>4</option>\n                      <option>5</option>\n                      <option>6</option>\n                    </Input>\n                  </FormGroup>\n                </Col>\n                {this.state.children_age.length > 0 &&\n                  this.state.children_age.map((element, i) => (\n                    <Col xs={4} style={{ margin: \"0\" }} key={i}>\n                      <FormGroup>\n                        <Label>\n                          <IntlMessages id=\"check.availabity.child.age\" />{\" \"}\n                          {i + 1}\n                        </Label>\n                        <Input\n                          type=\"select\"\n                          name={\"children_age_\" + (i + 1)}\n                          value={element[i]}\n                          onChange={(e) =>\n                            this.handleChangeChildrenAge(e, element.id)\n                          }\n                        >\n                          <option>0</option>\n                          <option>1</option>\n                          <option>2</option>\n                          <option>3</option>\n                          <option>4</option>\n                          <option>5</option>\n                          <option>6</option>\n                          <option>7</option>\n                          <option>8</option>\n                          <option>9</option>\n                          <option>10</option>\n                          <option>11</option>\n                          <option>12</option>\n                        </Input>\n                      </FormGroup>\n                    </Col>\n                  ))}\n              </Row>\n              {this.props.data.bookingEngineUrl.includes(\"{PROMO_CODE}\") && (\n                <Row>\n                  <Col xs={12} style={{ margin: \"0\" }} className=\"mb-3\">\n                    <Input\n                      type=\"text\"\n                      value={this.state.promoCode}\n                      placeholder={\"Promo Code\"}\n                      onChange={this.handlePromoCodeChange}\n                    />\n                  </Col>\n                </Row>\n              )}\n              <button\n                className=\"availablity_button\"\n                style={{ backgroundColor: this.props.buttonColor ? this.props.buttonColor : 'lightgray', borderColor: this.props.buttonColor ? this.props.buttonColor : 'lightgray' }}\n                // style={{ backgroundColor: \"#0eca2d\" }}\n                onClick={this.submit}\n              >\n                {\"\"}\n                Book Now\n                {\"\"}\n              </button>\n              <button\n                className=\"cancelchat_button\"\n                onClick={this.props.closeAvailblityForm}\n              >\n                {\"\"}\n                <IntlMessages id=\"check.availabity.cancel\" />\n                {\"\"}\n              </button>\n            </div>\n          </div>\n        ) : (\n          <Fragment>\n            {this.state.integration?.Channel && (this.state.integration.Channel === \"Mews\"|| this.state.integration.Channel === \"SHRCRS\")  ? (\n              <MewsAvailability\n                api={this.props.api}\n                integration={this.state.integration}\n                data={this.props.data}\n                open_availblity_popup={this.state.open_availblity_popup}\n                closeAvailblityForm={this.props.closeAvailblityForm}\n                botSettings={this.props.botSettings}\n                lang={this.state.language}\n                addLinks={this.props.addLinks}\n                gid={this.props.gid}\n                propertyCurrency={this.state.propertyCurrency}\n                pid={this.props.pid}\n                buttonColor={this.props.buttonColor}\n                roomdata={this.state.roomdata}\n              ></MewsAvailability>\n            ) : (\n              <AmaduesAvailability\n                api={this.props.api}\n                integration={this.state.integration}\n                data={this.props.data}\n                open_availblity_popup={this.state.open_availblity_popup}\n                closeAvailblityForm={this.props.closeAvailblityForm}\n                botSettings={this.props.botSettings}\n                lang={this.state.language}\n                addLinks={this.props.addLinks}\n                gid={this.props.gid}\n                pid={this.props.pid}\n                buttonColor={this.props.buttonColor}\n                roomdata={this.state.roomdata}\n              ></AmaduesAvailability>\n            )}\n          </Fragment>\n        )}\n      </Fragment>\n    );\n  }\n}\n","import React, { useState, useEffect, Component, Fragment } from \"react\";\nimport '../ServicePopup.css';\nconst SERVICES_URL = process.env.REACT_APP_API_URL + \"/searchallservice\";\n\nexport default function ServicePopup({ mobile, open_service_popup, close_serivce_popup, pid,gid,conversation_id }) {\n    const [serviceData, setServiceData] = useState([]);\n    useEffect(() => {\n        const req=fetch(\n            SERVICES_URL + \"?groupId=\" + gid + \"&propertyId=\" + pid + \"&languageCode=en\",\n            {\n                method: \"GET\",\n                headers: {\n                    Accept: \"application/json\",\n                    \"Content-Type\": \"application/json\",\n                },\n            }\n        );\n        req.then((m) => {\n            m.json().then((k) => {\n                var services=k.result.filter((i)=>i.status===\"Active\");\n              setServiceData(services);\n            });\n          });\n    }, [pid]);\n      /**\n  * Posts a message to the parent window, if this window has one\n  * @param {*} msg\n  */\n       const postMessage = (msg) => {\n        if (window.parent) {\n            window.parent.postMessage(msg, \"*\");\n        }\n    }\n    const handleClickDetail=(id)=>{\n        let service_view_url=process.env.REACT_APP_SERVICE_VIEW_URL+\"/serviceview\";\n        let url=`${service_view_url}?gid=${gid}&pid=${pid}&sid=${id}&conversation_id=${conversation_id}&mobile=${mobile}&open=0&custom=1`;\n        postMessage(\"openServiceView:\"+JSON.stringify(url));\n    }\n   \n    return (\n        <Fragment>\n           <div className=\"service_view_popup\">\n                    <div className={`service_popup ${mobile === \"true\" ? \"\" : \"\"} ${open_service_popup ? \"area\" : \"closepop\"}`}>\n                        <div\n                            className={\n                                mobile == \"true\"\n                                    ? `service_popup_header chat_header_mobile`\n                                    : `service_popup_header`\n                            }\n                            style={{ backgroundColor: \"white\" }}\n                        >\n                            <div\n                                className=\"service_header_icon\"\n                                onClick={close_serivce_popup}\n                            >\n                                <svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1024 1024\"\n                                    preserveAspectRatio=\"xMidYMid meet\">\n                                    <g transform=\"translate(0.000000,1060.000000) scale(0.100000,-0.100000)\" stroke=\"none\">\n                                        <path d=\"M6216 10184 c-145 -35 15 118 -2514 -2408 -1712 -1711 -2337 -2342 -2352 -2373 -25 -52 -26 -145 -4 -199 11 -29 364 -387 1352 -1377 2312 -2315 3350 -3340 3409 -3371 202 -102 450 -61 612 101 38 38 80 91 94 118 79 157 79 331 0 490 -20 40 -437 463 -2066 2093 l-2042 2042 2036 2038 c1368 1368 2046 2053 2064 2085 93 162 88 377 -13 533 -121 187 -357 281 -576 228z\" />\n                                    </g>\n                                </svg>\n                            </div>\n                        </div>\n                        <div className=\"service_popup_body\">\n                            <p className=\"text-left\">Hi there, Here's some personality curated options for you.</p>\n                            <div className={`popup_services ${mobile == \"true\"\n                                ? \"popup_items_mobile\"\n                                : \"popup_items\"\n                                } mt-4`}>\n                                {serviceData.length === 0 ?\n                                    <div id=\"spinner\" className=\"container\" style={{ height: \"60vh\" }}>\n                                        <div className=\"loading\"></div>\n                                    </div> :\n                                    serviceData.map((item, index) => (\n                                        <div className=\"service_item\" key={index} onClick={() => handleClickDetail(item.id)}>\n                                            <div className=\"service_item_image\" style={{\n                                                backgroundImage: item.imageLink !== \"\" ? \"url(\" + item.imageLink + \")\" : \"\",\n                                                backgroundPosition: \"center\",\n                                                backgroundSize: \"cover\"\n                                            }}>\n                                                {item.imageLink === \"\" && (\n                                                    <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"green\" width=\"25px\" height={\"25px\"} viewBox=\"0 0 512 512\">\n                                                    <path d=\"M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z\"/>\n                                                    </svg>\n                                                )}\n                                            </div>\n                                            <div className=\"service_item_text\">\n                                                <p className=\"mb-1\">{item.title}</p>\n                                            </div>\n                                        </div>\n                                    ))}\n                            </div>\n                            <div className=\"service_popup_footer d-none\">\n                                <div className=\"service_social_media_icon\">\n                                    <button>\n                                        <svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\"\n                                            width=\"20px\" height=\"20px\" viewBox=\"0 0 360.000000 363.000000\"\n                                            preserveAspectRatio=\"xMidYMid meet\">\n                                            <g transform=\"translate(0.000000,363.000000) scale(0.100000,-0.100000)\" stroke=\"none\">\n                                                <path d=\"M1578 3595 c-542 -74 -1042 -431 -1297 -925 -260 -506 -266 -1074 -15 -1587 l65 -132 -156 -462 c-85 -254 -154 -464 -152 -466 2 -2 219 66 482 150 l479 154 101 -48 c569 -272 1251 -211 1769 160 116 82 286 250 376 369 233 311 350 664 350 1055 -1 280 -50 501 -170 754 -250 527 -753 896 -1333 978 -124 18 -368 18 -499 0z m544 -305 c482 -102 882 -436 1062 -888 284 -712 -29 -1518 -719 -1852 -207 -100 -397 -143 -630 -144 -251 0 -426 43 -662 160 l-151 75 -268 -85 c-148 -47 -271 -86 -276 -86 -4 0 34 120 84 268 l91 267 -48 74 c-295 456 -305 1051 -25 1524 133 226 361 441 592 558 138 70 321 127 473 148 109 15 364 5 477 -19z\" />\n                                                <path d=\"M1185 2707 c-43 -20 -138 -124 -169 -185 -59 -117 -72 -259 -35 -392 76 -279 406 -707 689 -895 136 -91 371 -194 536 -235 74 -19 93 -20 155 -11 124 20 233 74 303 151 63 70 100 246 59 282 -24 20 -328 181 -374 198 -51 18 -79 8 -121 -47 -75 -96 -144 -163 -169 -163 -32 0 -185 78 -265 136 -97 69 -187 157 -259 253 -69 91 -125 188 -125 216 0 9 28 48 63 86 62 70 96 121 97 148 0 15 -134 379 -155 421 -18 35 -25 37 -121 44 -57 5 -87 3 -109 -7z\" />\n                                            </g>\n                                        </svg>Whatsapp</button>\n                                    <button> <svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\"\n                                        width=\"20px\" height=\"20px\" viewBox=\"0 0 600.000000 600.000000\"\n                                        preserveAspectRatio=\"xMidYMid meet\">\n\n                                        <g transform=\"translate(0.000000,600.000000) scale(0.100000,-0.100000)\" stroke=\"none\">\n                                            <path d=\"M2715 5889 c-410 -38 -849 -171 -1190 -360 -243 -136 -427 -272 -624 -464 -437 -424 -696 -931 -783 -1530 -17 -117 -17 -532 0 -640 78 -488 227 -846 510 -1224 96 -129 343 -383 467 -481 l80 -63 5 -512 5 -511 490 268 489 269 111 -25 c728 -168 1454 -85 2105 240 287 144 519 311 746 538 417 419 663 904 751 1483 23 155 23 518 0 678 -86 588 -360 1112 -803 1534 -448 427 -1020 696 -1670 786 -141 20 -541 28 -689 14z m110 -2061 c72 -73 186 -191 255 -263 68 -71 180 -187 248 -257 l124 -127 652 361 c358 198 676 374 706 391 l55 30 -41 -44 c-663 -708 -1533 -1629 -1539 -1629 -1 0 -166 174 -366 388 -199 213 -366 388 -369 390 -3 1 -287 -151 -631 -339 -343 -188 -662 -362 -709 -387 l-85 -46 35 42 c49 58 1524 1622 1530 1622 3 0 64 -60 135 -132z\" />\n                                        </g>\n                                    </svg>\n                                        Messenger</button>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n        </Fragment>\n    )\n}","import React, { useState, useEffect, Component, Fragment } from \"react\";\nimport IntlMessages from \"../helpers/IntlMessages\";\nimport \"../ChatWindowNew.css\";\n\nexport default function FeedbackPopup({ data, setZchatFeedback, gid, formSettings, bearerToken, conid }) {\n    const [inputData, setInputData] = useState({\n        rate: \"\",\n        comments: \"\",\n        status: \"\"\n    });\n    const [color, setColor] = useState({ like: \"\", dislike: \"\" });\n    const [formSetting, setFormSetting] = useState(null);\n\n    useEffect(() => {\n        setFormSetting(formSettings);\n    }, [formSettings]);\n    const cancel = () => {\n        setZchatFeedback(inputData);\n    }\n    const handleSend = () => {\n        const data = { ...inputData };\n        data.status = \"send\";\n        setZchatFeedback(data);\n    };\n    const handleSkip = () => {\n        const data = { ...inputData };\n        data.status = \"skip\";\n        setZchatFeedback(data);\n    };\n    const handleLike = () => {\n        setInputData({\n            ...inputData, rate: \"good\"\n        });\n        setColor({ like: \"green\", dislike: \"\" });\n    }\n    const handleDislike = () => {\n        setInputData({\n            ...inputData, rate: \"bad\"\n        });\n        setColor({ dislike: \"red\", like: \"\" });\n    }\n    return (\n        <div className=\"chat_box_popup_new\">\n            <div className=\"feedback_popup\">\n                <h1>Please rate this chat</h1>\n                <div className=\"feedback_popup-close\" onClick={cancel}>\n                    <img src=\"/res/cross_icon.jpg\" width=\"15\" height=\"15\" />\n                </div>\n                {formSetting !== null && formSetting.defaultForms !== null && formSetting.defaultForms.isLeaveMessageForm ?\n                    <iframe\n                        className=\"feedback-iframe\"\n                        src={`${process.env.REACT_APP_WEBVIEW_URL}/form-view?id=${formSetting.defaultForms.leaveMessageFormId\n                            }&gid=${gid}&pid=${formSetting.propertyId\n                            }&conversation_id=${conid}&default_form=1`}>\n                    </iframe>\n                    :\n                    <div className=\"feedback_body_popup\">\n                        <button className=\"btn_like\" style={{ color: color.like }} onClick={() => handleLike()}><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M21.3,10.08A3,3,0,0,0,19,9H14.44L15,7.57A4.13,4.13,0,0,0,11.11,2a1,1,0,0,0-.91.59L7.35,9H5a3,3,0,0,0-3,3v7a3,3,0,0,0,3,3H17.73a3,3,0,0,0,2.95-2.46l1.27-7A3,3,0,0,0,21.3,10.08ZM7,20H5a1,1,0,0,1-1-1V12a1,1,0,0,1,1-1H7Zm13-7.82-1.27,7a1,1,0,0,1-1,.82H9V10.21l2.72-6.12A2.11,2.11,0,0,1,13.1,6.87L12.57,8.3A2,2,0,0,0,14.44,11H19a1,1,0,0,1,.77.36A1,1,0,0,1,20,12.18Z\"></path></svg></button>\n                        <button className=\"btn_dislike\" style={{ color: color.dislike }} onClick={() => handleDislike()}><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19,2H6.27A3,3,0,0,0,3.32,4.46l-1.27,7A3,3,0,0,0,5,15H9.56L9,16.43A4.13,4.13,0,0,0,12.89,22a1,1,0,0,0,.91-.59L16.65,15H19a3,3,0,0,0,3-3V5A3,3,0,0,0,19,2ZM15,13.79l-2.72,6.12a2.13,2.13,0,0,1-1.38-2.78l.53-1.43A2,2,0,0,0,9.56,13H5a1,1,0,0,1-.77-.36A1,1,0,0,1,4,11.82l1.27-7a1,1,0,0,1,1-.82H15ZM20,12a1,1,0,0,1-1,1H17V4h2a1,1,0,0,1,1,1Z\"></path></svg></button>\n                        <br />\n                        <div className=\"feedback_input_area\">\n                            <label>Leave a comment(optional)</label>\n                            <textarea className=\"feedback_input\"\n                                onChange={(e) => setInputData({ ...inputData, comments: e.target.value })}\n                            ></textarea>\n                        </div>\n\n                        <button className=\"feedback_button\" id=\"feedback_button\"\n                            onClick={() => handleSend()}\n                        >Send</button>\n                        <button className=\"cancelchat_button\"\n                            onClick={() => handleSkip()}\n                        >Skip</button>\n                    </div>\n                }\n            </div>\n        </div>\n    );\n}","import React, { Component, Fragment } from \"react\";\n\nimport \"./AutoCompleteExtension.css\";\n\nexport const CHAT_AUTOCOMPLETE_EXT_ID = \"CHAT_AUTOCOMPLETE\";\n\nexport default class AutoCompleteExtension extends Component {\n  constructor(props) {\n    super();\n\n    this.state = {\n      searchTerm: \"\",\n      bottomMargin: 0,\n      filteredSuggestions: [],\n      maximised: false,\n    };\n\n    this.onSuggestionClicked.bind(this);\n\n    // Finds the input box and listens to it\n    // Hacky, but WebChat doesn't expose an API for listening to input\n    this.findInputTimerId = setInterval(() => {\n      let chatbox = document.getElementById(\"chat_box\");\n      if (!chatbox) {\n        return;\n      }\n      let inputs = chatbox.querySelectorAll(\"input\");\n      let inputRegion = chatbox.querySelectorAll(\"[role='form']\");\n\n      if (inputs.length < 1 || inputRegion.length < 1) {\n        return;\n      }\n\n      this.setState({\n        bottomMargin: inputRegion[0].clientHeight,\n      });\n      this.updateSuggestions();\n      clearInterval(this.findInputTimerId);\n    }, 50);\n  }\n\n  componentDidUpdate(oldProps) {\n    if (!this.props.suggestions) {\n      return;\n    }\n\n    if (oldProps.suggestions !== this.props.suggestions) {\n      this.updateSuggestions();\n    }\n  }\n\n  updateSuggestions() {\n    this.setState({\n      maximised: this.props.suggestions.length > 0 ? true : false,\n      filteredSuggestions: this.props.suggestions,\n    });\n  }\n\n  onSuggestionClicked(suggestion) {\n    this.props.api.sendActivity({\n      type: \"WEB_CHAT/SEND_MESSAGE\",\n      payload: { text: suggestion },\n    });\n    this.props.api.sendActivity({\n      type: \"WEB_CHAT/SET_SEND_BOX\",\n      payload: { text: \"\" },\n    });\n    this.setState({ maximised: !this.state.maximised });\n  }\n\n  componentDidMount() {\n    const self = this;\n    var ignoreClickOnMeElement = document.getElementById(\"chat_box\");\n    if (\n      ignoreClickOnMeElement !== null &&\n      ignoreClickOnMeElement !== undefined\n    ) {\n      document.addEventListener(\"click\", function (event) {\n        if (self.state.maximised === true) {\n          var isClickInsideElement = ignoreClickOnMeElement.contains(\n            event.target\n          );\n          if (isClickInsideElement) {\n            self.setState({ maximised: false });\n          }\n        }\n      });\n    }\n  }\n\n  render() {\n    const color = this.props.styling;\n    return (\n      <Fragment>\n        {this.state.maximised && this.state.filteredSuggestions.length > 0 ? (\n          <Fragment>\n            <div\n              className=\"chat_auto_suggestion_container\"\n              style={{\n                height: \"calc(79% - 38px)\",\n              }}\n            >\n              <div className=\"chat_auto_suggestion_results\">\n                <div className=\"chat_auto_suggestion_header\">\n                  <div>\n                    {\" \"}\n                    <img src=\"https://bmbuiassetsprod.blob.core.windows.net/images/minimizeresults.png\" />{\" \"}\n                  </div>\n                  <span> Suggestions </span>\n                </div>\n                {this.state.filteredSuggestions.map((suggestion) => (\n                  <div\n                    className=\"chat_auto_suggestion_item\"\n                    key={suggestion.response}\n                    onClick={() => {\n                      this.onSuggestionClicked(suggestion.response);\n                    }}\n                  >\n                    <div className=\"chat_auto_suggestion_item_inner\">\n                      <div\n                        className=\"chat_auto_suggestion_item_select_box\"\n                        style={{\n                          backgroundColor: color.colours.header,\n                          border: `solid 1px ${color.colours.headerText}`,\n                        }}\n                      >\n                        {\" \"}\n                      </div>\n                      <div className=\"chat_auto_suggestion_item_text\">\n                        {\" \"}\n                        {suggestion.response}{\" \"}\n                      </div>\n                    </div>\n                  </div>\n                ))}\n              </div>\n            </div>\n            <div\n              className=\"chat_auto_suggestion_header_minimise\"\n              style={{\n                borderColor: color.colours.header,\n                bottom: '48px',\n              }}\n              onClick={() => {\n                this.setState({ maximised: !this.state.maximised });\n              }}\n            >\n              {this.state.maximised ? \"Hide\" : \"\"}\n            </div>\n          </Fragment>\n        ) : (\n          \"\"\n        )}\n      </Fragment>\n    );\n  }\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Form } from \"reactstrap\";\nimport IntlMessages from \"../helpers/IntlMessages\";\nimport \"../ChatWindowNew.css\";\n\nexport default function ThumbFeedback({\n  handleFeedBackResponse,\n  handleCancelFeedbackResponse,\n  locale,\n  changeleaveFeedbackMessage,\n  buttonColor,\n  gid,\n  bearerToken,\n  conid,\n  formSettings\n}) {\n  const [inputdata, setInputData] = useState({\n    name: \"\",\n    phone: \"\",\n    email: \"\",\n    comment: \"\",\n  });\n  const [formSetting, setFormSetting] = useState(null);\n\n  useEffect(() => {\n    window.addEventListener('message', function (event) {\n      if (event.data === \"closeDefaultForm\") {\n        handleCancel();\n      }\n    });\n    if (formSettings !== null && formSettings.defaultForms !== null && formSettings.defaultForms.feedbackFormId !== null) {\n      fetch(\n        `${process.env.REACT_APP_BFF_API}/public/forms/get/${formSettings.defaultForms.feedbackFormId}`,\n        {\n          method: \"GET\",\n          headers: {\n            Accept: \"application/json\",\n            \"Content-Type\": \"application/json\",\n          },\n        }\n      )\n        .then((response) => response.json())\n        .then((json) => {\n          var form = json;\n          var body = { ...formSettings.defaultForms };\n          body.formname = form.name;\n          setFormSetting({ ...formSettings, defaultForms: body });\n        })\n    }\n  }, [formSettings]);\n\n  const getPlaceholder = (value) => {\n    switch (locale) {\n      case \"af\":\n        if (value === \"name\") {\n          return \"Jou naam\";\n        }\n        if (value === \"phone\") {\n          return \"Jou telefoonnommer\";\n        }\n        if (value === \"email\") {\n          return \"Jou epos\";\n        }\n        if (value === \"comment\") {\n          return \"'n Kort opsomming van jou versoek\";\n        }\n      case \"ar\":\n        if (value === \"name\") {\n          return \"اسمك\";\n        }\n        if (value === \"phone\") {\n          return \"رقم تليفونك\";\n        }\n        if (value === \"email\") {\n          return \"بريدك الالكتروني\";\n        }\n        if (value === \"comment\") {\n          return \"ملخص مختصر لطلبك\";\n        }\n      case \"de\":\n        if (value === \"name\") {\n          return \"Ihr Name\";\n        }\n        if (value === \"phone\") {\n          return \"Deine Telefonnummer\";\n        }\n        if (value === \"email\") {\n          return \"Deine E-Mail\";\n        }\n        if (value === \"comment\") {\n          return \"Eine kurze Zusammenfassung Ihrer Anfrage\";\n        }\n      case \"es\":\n        if (value === \"name\") {\n          return \"Su nombre\";\n        }\n        if (value === \"phone\") {\n          return \"Su número de teléfono\";\n        }\n        if (value === \"email\") {\n          return \"Tu correo electrónico\";\n        }\n        if (value === \"comment\") {\n          return \"Un breve resumen de su solicitud\";\n        }\n      case \"fi\":\n        if (value === \"name\") {\n          return \"Sinun nimesi\";\n        }\n        if (value === \"phone\") {\n          return \"Puhelinnumerosi\";\n        }\n        if (value === \"email\") {\n          return \"Sähköpostisi\";\n        }\n        if (value === \"comment\") {\n          return \"Lyhyt yhteenveto pyynnöstäsi\";\n        }\n      case \"fr\":\n        if (value === \"name\") {\n          return \"votre nom\";\n        }\n        if (value === \"phone\") {\n          return \"Votre numéro de téléphone\";\n        }\n        if (value === \"email\") {\n          return \"Votre e-mail\";\n        }\n        if (value === \"comment\") {\n          return \"Un bref résumé de votre demande\";\n        }\n      case \"hi\":\n        if (value === \"name\") {\n          return \"आपका नाम\";\n        }\n        if (value === \"phone\") {\n          return \"आपका फोन नंबर\";\n        }\n        if (value === \"email\") {\n          return \"आपका ईमेल\";\n        }\n        if (value === \"comment\") {\n          return \"आपके अनुरोध का संक्षिप्त सारांश\";\n        }\n      case \"id\":\n        if (value === \"name\") {\n          return \"Namamu\";\n        }\n        if (value === \"phone\") {\n          return \"Nomor telepon Anda\";\n        }\n        if (value === \"email\") {\n          return \"Email mu\";\n        }\n        if (value === \"comment\") {\n          return \"Ringkasan singkat permintaan Anda\";\n        }\n      case \"ja\":\n        if (value === \"name\") {\n          return \"あなたの名前\";\n        }\n        if (value === \"phone\") {\n          return \"あなたの電話番号\";\n        }\n        if (value === \"email\") {\n          return \"あなたのメールアドレス\";\n        }\n        if (value === \"comment\") {\n          return \"リクエストの簡単な概要\";\n        }\n      case \"ko\":\n        if (value === \"name\") {\n          return \"당신의 이름\";\n        }\n        if (value === \"phone\") {\n          return \"전화 번호\";\n        }\n        if (value === \"email\") {\n          return \"귀하의 이메일\";\n        }\n        if (value === \"comment\") {\n          return \"귀하의 요청에 대한 간략한 요약\";\n        }\n      case \"mi\":\n        if (value === \"name\") {\n          return \"To Ingoa\";\n        }\n        if (value === \"phone\") {\n          return \"To Tau Waea\";\n        }\n        if (value === \"email\") {\n          return \"To Email\";\n        }\n        if (value === \"comment\") {\n          return \"He whakarāpopototanga poto o tō tono\";\n        }\n      case \"ru\":\n        if (value === \"name\") {\n          return \"Ваше имя\";\n        }\n        if (value === \"phone\") {\n          return \"Ваш номер телефона\";\n        }\n        if (value === \"email\") {\n          return \"Ваш адрес электронной почты\";\n        }\n        if (value === \"comment\") {\n          return \"Краткое описание вашего запроса\";\n        }\n      case \"tl\":\n        if (value === \"name\") {\n          return \"Ang pangalan mo\";\n        }\n        if (value === \"phone\") {\n          return \"Iyong numero ng telepono\";\n        }\n        if (value === \"email\") {\n          return \"Ang email mo\";\n        }\n        if (value === \"comment\") {\n          return \"Isang maikling buod ng iyong kahilingan\";\n        }\n      case \"th\":\n        if (value === \"name\") {\n          return \"ชื่อของคุณ\";\n        }\n        if (value === \"phone\") {\n          return \"หมายเลขโทรศัพท์ของคุณ\";\n        }\n        if (value === \"email\") {\n          return \"อีเมลของคุณ\";\n        }\n        if (value === \"comment\") {\n          return \"สรุปคำขอของคุณโดยย่อ\";\n        }\n      case \"vi\":\n        if (value === \"name\") {\n          return \"Tên của bạn\";\n        }\n        if (value === \"phone\") {\n          return \"Số điện thoại của bạn\";\n        }\n        if (value === \"email\") {\n          return \"Email của bạn\";\n        }\n        if (value === \"comment\") {\n          return \"Tóm tắt ngắn gọn về yêu cầu của bạn\";\n        }\n      case \"zh\":\n        if (value === \"name\") {\n          return \"你的名字\";\n        }\n        if (value === \"phone\") {\n          return \"你的电话号码\";\n        }\n        if (value === \"email\") {\n          return \"你的邮件\";\n        }\n        if (value === \"comment\") {\n          return \"您的请求的简要摘要\";\n        }\n      case \"zh-TW\":\n        if (value === \"name\") {\n          return \"你的名字\";\n        }\n        if (value === \"phone\") {\n          return \"你的電話號碼\";\n        }\n        if (value === \"email\") {\n          return \"你的郵件\";\n        }\n        if (value === \"comment\") {\n          return \"您的請求的簡要摘要\";\n        }\n      default:\n        if (value === \"name\") {\n          return \"Your Name\";\n        }\n        if (value === \"phone\") {\n          return \"Your Phone Number\";\n        }\n        if (value === \"email\") {\n          return \"Your Email\";\n        }\n        if (value === \"comment\") {\n          return \"A brief summary of your request\";\n        }\n    }\n  };\n  const handleChange = (e) => {\n    if (e.target.name === \"name\") {\n      setInputData({ ...inputdata, name: e.target.value });\n    } else if (e.target.name === \"phone\") {\n      setInputData({ ...inputdata, phone: e.target.value });\n    } else if (e.target.name === \"email\") {\n      setInputData({ ...inputdata, email: e.target.value });\n    } else if (e.target.name === \"comment\") {\n      setInputData({ ...inputdata, comment: e.target.value });\n      changeleaveFeedbackMessage(e.target.value);\n    }\n  };\n  const handleSubmit = (event) => {\n    event.preventDefault();\n    var body = \"\";\n    if (inputdata.name !== \"\") {\n      body = body + \"\\r\\n Name: \" + inputdata.name;\n    }\n    if (inputdata.phone !== \"\") {\n      body = body + \"\\r\\n Phone Number: \" + inputdata.phone;\n    }\n    if (inputdata.email !== \"\") {\n      body = body + \"\\r\\n Email: \" + inputdata.email;\n    }\n    if (inputdata.comment !== \"\") {\n      body =\n        body + \"\\r\\n A brief summary of your request: \" + inputdata.comment;\n    }\n    handleFeedBackResponse(\n      body,\n      inputdata.name,\n      inputdata.phone,\n      inputdata.email\n    );\n    setInputData({\n      ...inputdata,\n      name: \"\",\n      phone: \"\",\n      email: \"\",\n      comment: \"\",\n    });\n  };\n  const handleCancel = () => {\n    setInputData({\n      ...inputdata,\n      name: \"\",\n      phone: \"\",\n      email: \"\",\n      comment: \"\",\n    });\n    handleCancelFeedbackResponse();\n  };\n\n  const buttonStyle = {\n    backgroundColor: buttonColor,\n    borderColor: buttonColor,\n  };\n  return (\n    <div className=\"feedback_popup thumb-feedback\" id=\"feedback_popup_body\">\n      <h1>\n        {formSetting !== null && formSetting.defaultForms !== null && formSetting.defaultForms.isFeedbackForm &&\n          formSetting.defaultForms.formname !== null ?\n          formSetting.defaultForms.formname :\n          <IntlMessages id=\"feedback.leave.message\" />\n        }\n      </h1>\n      <div className=\"feedback_popup-close\" onClick={handleCancel}>\n        <img src=\"/res/cross_icon.jpg\" width=\"15\" height=\"15\" />\n      </div>\n      <hr />\n      {formSetting !== null && formSetting.defaultForms.isFeedbackForm ?\n        <iframe\n          className=\"feedback-iframe\"\n          src={`${process.env.REACT_APP_WEBVIEW_URL}/form-view?id=${formSetting.defaultForms.feedbackFormId\n            }&gid=${gid}&pid=${formSetting.propertyId\n            }&conversation_id=${conid}&default_form=1`}>\n        </iframe>\n        :\n        <Form onSubmit={(e) => handleSubmit(e)}>\n          <div className=\"input-text\">\n            <input\n              type={\"text\"}\n              className=\"form-control\"\n              placeholder={getPlaceholder(\"name\")}\n              value={inputdata.name}\n              name=\"name\"\n              onChange={(e) => handleChange(e)}\n              required={\"required\"}\n            ></input>\n          </div>\n          <div className=\"input-text\">\n            <input\n              type={\"email\"}\n              className=\"form-control\"\n              placeholder={getPlaceholder(\"email\")}\n              value={inputdata.email}\n              name=\"email\"\n              onChange={(e) => handleChange(e)}\n              required={\"required\"}\n            ></input>\n          </div>\n          <div className=\"input-text\">\n            <input\n              type={\"text\"}\n              className=\"form-control\"\n              placeholder={getPlaceholder(\"phone\")}\n              value={inputdata.phone}\n              name=\"phone\"\n              onChange={(e) => handleChange(e)}\n              required={\"required\"}\n            ></input>\n          </div>\n          <div className=\"input-text\">\n            <textarea\n              className=\"form-control\"\n              value={inputdata.comment}\n              placeholder={getPlaceholder(\"comment\")}\n              name=\"comment\"\n              onChange={(e) => handleChange(e)}\n              required={\"required\"}\n            ></textarea>\n          </div>\n          <button\n            style={buttonStyle}\n            className=\"feedback-btn-color\"\n            id=\"feedback_button\"\n          // onClick={(e) => handleSubmit(e)}\n          >\n            <IntlMessages id=\"check.availabity.submit\" />\n          </button>\n          <button className=\"cancelchat_button\" onClick={() => handleCancel()}>\n            <IntlMessages id=\"check.availabity.cancel\" />\n          </button>\n        </Form>\n      }\n    </div>\n  );\n}\n","import React, { Component, Fragment } from \"react\";\nimport ReactWebChat from \"botframework-webchat\";\n//import BookingApp from \"./BookingApp\";\nimport \"./ChatWindow.css\";\nimport \"./bootstrap.min.css\";\nimport \"./ChatWindowNew.css\";\nimport WebViewExtension, {\n  WEB_VIEW_EXT_ID,\n} from \"./Extensions/WebViewExtension/WebViewExtension\";\nimport WebViewExternalExtension, {\n  WEB_VIEW_EX_EXT_ID,\n} from \"./Extensions/WebViewExternalExtension/WebViewExternalExtension\";\nimport ChatSuggestionExtension, {\n  CHAT_SUGGESTION_EXT_ID,\n} from \"./Extensions/ChatSuggestionExtension/ChatSuggestionExtension\";\nimport PersistentMenu from \"./ChatComponent/PersistentMenu\";\nimport PropertyPopup from \"./ChatComponent/PropertyPopup\";\nimport { IntlProvider } from \"react-intl\";\nimport AppLocale from \"./lang\";\nimport CookiePopup from \"./ChatComponent/CookiePopup\";\nimport {\n  DropdownMenu,\n  DropdownItem,\n  DropdownToggle,\n  UncontrolledDropdown,\n  Row,\n  Col,\n  Input,\n  FormGroup,\n  Label,\n  Form,\n  Button,\n  CustomInput,\n} from \"reactstrap\";\nimport BookingApp from \"./BookingApp\";\nimport ChatWindowTypingIndicator from \"./ChatWindowTypingIndicator\";\nimport ChatWindowParticipantTagger from \"./ChatWindowParticipantTagger\";\nimport ChatWindowCardAction from \"./ChatWindowCardAction\";\nimport Translate from \"./helpers/Translate\";\nimport { AttachmentMiddleware } from \"./Extensions/AttachmentMiddleware\";\nimport IntlMessages from \"./helpers/IntlMessages\";\nimport ReactHtmlParser, { processNodes, htmlparser2 } from \"react-html-parser\";\nimport CheckAvailablity from \"./ChatComponent/CheckAvailablity\";\nimport ServicePopup from \"./ChatComponent/ServicePopup\";\nimport FeedbackPopup from \"./ChatComponent/FeedbackPopup\";\nimport AutoCompleteExtension, {\n  CHAT_AUTOCOMPLETE_EXT_ID,\n} from \"./Extensions/AutoCompleteExtension/AutoCompleteExtension\";\nimport ThumbFeedback from \"./ChatComponent/ThumbFeedback\";\nconst publicIp = require(\"public-ip\");\nconst TRANSLATE_URL = process.env.REACT_APP_API_URL + \"/google-translate\";\nconst ANALYTICS_URL = process.env.REACT_APP_API_URL + \"/google-analytics\";\nconst VISITOR_URL = process.env.REACT_APP_API_URL + \"/visitors\";\nconst ADDLINK_URL = process.env.REACT_APP_API_URL + \"/links\";\nconst SERVICES_URL = process.env.REACT_APP_API_URL + \"/searchallservice\";\nconst LEAVE_FEEDBACK = process.env.REACT_APP_API_URL + \"/save-leavefeedback\";\nconst BMB_GROUP_URL = process.env.REACT_APP_API_URL + \"/group\";\nconst myma_logo = \"/res/myma_ai.png\";\nconst myma_logo_greyscale = \"/res/myma_greyscale.png\";\n\nconst styleOptions = {\n  backgroundColor: \"#e9eef4\",\n  bubbleBorderRadius: 8,\n  bubbleTextColor: \"#353f48\",\n  bubbleBackground: \"#fff\",\n  bubbleFromUserBorderRadius: 8,\n  bubbleFromUserBackground: \"#dfcf92\",\n  bubbleFromUserTextColor: \"#353f48\",\n  sendBoxTextColor: \"#000\",\n  sendBoxBorderTop: \"solid 1px #fff\",\n  sendBoxBorderBottom: \"\",\n  sendBoxButtonColor: \"#767676\",\n  sendBoxButtonColorOnFocus: \"#333\",\n  sendBoxButtonColorOnHover: \"#333\",\n  sendBoxPlaceholderColor: \"#767676\",\n  paddingWide: 20,\n  hideUploadButton: true,\n  timestampColor: \"#767676\",\n  sendBoxBackground: \"#fff\",\n  bubbleBorderColor: \"#E6E6E6\",\n  bubbleFromUserBorderColor: \"#E6E6E6\",\n  suggestedActionLayout: \"stacked\",\n  suggestedActionHeight: 30,\n  suggestedActionBorderRadius: \"50vh\",\n  suggestedActionBorderWidth: 0,\n  suggestedActionBackground: \"#fff\",\n  suggestedActionTextColor: \"#353f48\",\n};\n\nconst localeOptions = [\n  { id: \"en\", name: \"English\", desc: \"English\", code: \"en\", locale: \"en\" },\n  { id: \"hi\", name: \"Hindi\", desc: \"हिंदी\", code: \"hi\", locale: \"hi\" },\n  {\n    id: \"id\",\n    name: \"Indonesian\",\n    desc: \"bahasa Indonesia\",\n    code: \"id\",\n    locale: \"id\",\n  },\n  { id: \"es\", name: \"Spanish\", desc: \"Español\", code: \"es\", locale: \"es\" },\n  { id: \"fr\", name: \"French\", desc: \"français\", code: \"fr\", locale: \"fr\" },\n  { id: \"de\", name: \"German\", desc: \"Deutsche\", code: \"de\", locale: \"de\" },\n  { id: \"zh\", name: \"Chinese\", desc: \"简体中文\", code: \"ZH-簡\", locale: \"zh\" },\n  {\n    id: \"vi\",\n    name: \"Vietnamese\",\n    desc: \"Tiếng Việt\",\n    code: \"vi\",\n    locale: \"vi\",\n  },\n  { id: \"th\", name: \"Thai\", desc: \"ไทย\", code: \"th\", locale: \"th\" },\n  { id: \"ja\", name: \"Japanese\", desc: \"日本語\", code: \"ja\", locale: \"ja\" },\n  {\n    id: \"zh-TW\",\n    name: \"Chinese (Traditional)\",\n    desc: \"繁體中文\",\n    code: \"ZH-繁\",\n    locale: \"hk\",\n  },\n  {\n    id: \"tl\",\n    name: \"Tagalog (Filipino)\",\n    desc: \"Tagalog (Filipino)\",\n    code: \"tl\",\n    locale: \"tl\",\n  },\n  { id: \"af\", name: \"Afrikaans\", desc: \"Afrikaans\", code: \"af\", locale: \"af\" },\n  { id: \"ko\", name: \"Korean\", desc: \"한국어\", code: \"ko\", locale: \"ko\" },\n  { id: \"mi\", name: \"Maori\", desc: \"Maori\", code: \"mi\", locale: \"mi\" },\n  { id: \"ar\", name: \"Arabic\", desc: \"عربي\", code: \"ar\", locale: \"ar\" },\n  { id: \"ru\", name: \"Russian\", desc: \"Русский\", code: \"ru\", locale: \"ru\" },\n  { id: \"fi\", name: \"Finnish\", desc: \"Suomalainen\", code: \"fi\", locale: \"fi\" },\n];\n\nexport default class ChatWindow extends Component {\n  constructor(props) {\n    super(props);\n\n    this.props.bookingApp.callbacks.close = () => {\n      this.props.bookingApp.open = false;\n      this.forceUpdate();\n    };\n    this.props.setBubbleToShrinkIn();\n    localStorage.setItem(this.props.language_state_store, this.props.lang);\n    this.state = {\n      ask_close: false,\n      menu_open: false,\n      ask_bot_hide: false,\n      language: this.props.lang,\n      languageCode: \"\",\n      langLocale: \"\",\n      visitorPopupState: true,\n      googleAnalytics: {},\n      name: \"\",\n      email: \"\",\n      phoneNumber: \"\",\n      firstName: \"\",\n      lastName: \"\",\n      zipCode: \"\",\n      consentGiven: false,\n      languageOptions: localeOptions.sort(this.dynamicSort(\"name\")),\n      persistentMenuData: [],\n      open_language_popup: false,\n      open_property_popup: false,\n      open_availblity_popup: false,\n      open_service_popup: false,\n      open_ZChatfeedback_popup: false,\n      bubble_type: \"\",\n      availblityData: null,\n      zChatfeedbackData: null,\n      isServiceAvailable: false,\n      isButtonDisable: false,\n      leaveFeedbackMessage: \"\",\n      endChat: false,\n      isOpenModal: false,\n      modalContent: \"\",\n      isCookiesHide: false,\n      open_thumb_feedback: false\n    };\n    this.state.confirm_cookies =\n      localStorage.getItem(this.props.cookies_state_store) !== \"yes\";\n\n    this.hide_bot_confirm = () => {\n      this.setState({ ask_bot_hide: false });\n      this.props.hideBot();\n    };\n    this.close_bot_ask_hide = () => {\n      this.setState({ ask_bot_hide: false });\n      this.props.onClosed();\n    };\n    this.end_clicked = () => {\n      this.setState({ ask_close: true });\n      this.setState({ menu_open: false });\n      if (this.props.messenger === true) {\n        this.props.bot_restartClick();\n      }\n    };\n    this.menu_popup_open = () => {\n      this.setState({ menu_open: true });\n      this.setState({ ask_close: false });\n    };\n    this.menu_popup_Close = () => {\n      this.setState({ menu_open: false });\n    };\n    this.close_confirmed = () => {\n      if (this.props.inZenDesk) {\n        this.setState({\n          ask_close: false,\n          open_ZChatfeedback_popup: true,\n          endChat: true,\n        });\n      } else {\n        this.setState({ ask_close: false });\n        this.props.endClicked();\n      }\n    };\n    this.close_language_popup = () => {\n      this.setState({ open_language_popup: false });\n    };\n    this.open_language_popup = () => {\n      this.setState({ open_language_popup: true });\n    };\n    this.close_property_popup = () => {\n      this.setState({ open_property_popup: false });\n    };\n    this.close_service_popup = () => {\n      this.setState({ open_service_popup: false });\n    };\n    this.OpenServicePopUp = () => {\n      this.setState({ open_service_popup: true });\n    };\n    this.popupclose_confirmed = () => {\n      this.setState({ ask_close: false });\n      this.props.closeClicked();\n    };\n    this.refresh = () => {\n      this.props.refreshClicked();\n    };\n    this.close_cancel = () => {\n      this.setState({ ask_close: false });\n    };\n    this.close_clicked = () => {\n      this.setState({ ask_bot_hide: true });\n      //this.props.onClosed();\n    };\n    this.close_cardapp = () => {\n      this.setState({ card_app: undefined });\n    };\n    this.close_roomapp = () => {\n      this.setState({ room_app: undefined });\n    };\n    this.cookies_understood = () => {\n      // localStorage.setItem(this.props.cookies_state_store, \"yes\");\n      // this.setState({ confirm_cookies: false });\n      this.setState({ isCookiesHide: true });\n    };\n    this.availblityForm = (data) => {\n      this.setState({ open_availblity_popup: true, availblityData: data });\n    };\n    this.closeAvailblityForm = () => {\n      this.setState({ open_availblity_popup: false });\n      this.props.setAvailblity(undefined);\n    };\n\n    this.setZchatFeedback = (data) => {\n      this.setState({\n        open_ZChatfeedback_popup: false,\n        zChatfeedbackData: data,\n      });\n      this.props.sendFeedbackZenDeskChat(data, this.state.endChat);\n    };\n\n    this.cookies_details = (cookiesURL) => {\n      this.addLinks(cookiesURL);\n      if (window.parent) {\n        window.parent.postMessage(\"openUrl:\" + cookiesURL + \"\", \"*\");\n      } else {\n        window.location = cookiesURL;\n      }\n    };\n    this.set_thumb_feedback_open = (val) => {\n      this.setState({ open_thumb_feedback: val });\n    }\n    this.bob_site = (poweredByURL) => {\n      this.addLinks(poweredByURL);\n      if (window.parent) {\n        window.parent.postMessage(\"openUrl:\" + poweredByURL + \"\", \"*\");\n      } else {\n        window.location = poweredByURL;\n      }\n    };\n\n    this.movetotop = () => {\n      var els = document.getElementsByClassName(\n        \"webchat__basic-transcript__scrollable\"\n      );\n      for (var el of els) {\n        el.scrollTo({ top: 0, behavior: \"smooth\" });\n      }\n    };\n\n    this.save_visitor = async (event) => {\n      event.preventDefault();\n      var user = {\n        iid: this.props.iid,\n        gid: this.props.gid,\n        pid: this.props.pid,\n        name: this.state.name,\n        firstName: this.state.firstName,\n        lastName: this.state.lastName,\n        zipCode: this.state.zipCode,\n        email: this.state.email,\n        phoneNumber: this.state.phoneNumber,\n        consentGiven: this.state.consentGiven,\n      };\n      this.setState({ visitorPopupState: false, isButtonDisable: true });\n      const req = await fetch(`${VISITOR_URL}/${this.props.vid}`, {\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify({\n          user: user,\n        }),\n      });\n\n      localStorage.setItem(\n        this.props.visitor_state_store,\n        JSON.stringify(user)\n      );\n    };\n\n    this.addLinks = async (link) => {\n      const req = await fetch(`${ADDLINK_URL}`, {\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify({\n          id: this.props.directline.conversationId,\n          groupId: this.props.gid,\n          link: link,\n        }),\n      });\n    };\n    // Adds bot/user tags and icon to conversation blocks\n    let tagger = new ChatWindowParticipantTagger(\n      this.props.botSettings.assistantDetails,\n      this.props.botSettings.urls.icon,\n      this.props.gid,\n      this.props.iid,\n      this.props.mobile\n    );\n    tagger.start();\n  }\n\n  createCssRules() {\n    let intervalId = setInterval(() => {\n      let sendButtonDiv = document.getElementsByClassName(\n        \"webchat__icon-button\"\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .chat_header_btn_resize i{\n          color:${this.props.botSettings.colours.closeIcon} !important;\n        }\n        `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .chat_header_btn_resize i:hover{\n          color:${this.props.botSettings.colours.closeIconHover} !important;\n        }\n        `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .chat_header_btn_end svg {\n            fill: ${this.props.botSettings.colours.closeIcon} !important;\n        }\n        `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .chat_header_btn_end svg:hover {\n          fill: ${this.props.botSettings.colours.closeIconHover} !important;\n        }\n         `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .header_icon svg {\n            fill: ${this.props.botSettings.colours.closeIcon} !important;\n        }\n        `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .header_icon svg:hover {\n          fill: ${this.props.botSettings.colours.closeIconHover} !important;\n        }\n         `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .chat_header_btn_close svg {\n            fill: ${this.props.botSettings.colours.minimizeIcon} !important;\n        }\n        `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .chat_header_btn_close svg:hover {\n          fill: ${this.props.botSettings.colours.minimizeIconHover} !important;\n        }\n         `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .chat_header_btn_language svg {\n          fill: ${this.props.botSettings.colours.minimizeIcon} !important;\n        }\n         `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .chat_header_btn_language svg:hover {\n          fill: ${this.props.botSettings.colours.minimizeIconHover} !important;\n        }\n         `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .chat_header_menuitem svg {\n            fill: ${this.props.botSettings.colours.minimizeIcon} !important;\n        }\n        `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n        .chat_header_menuitem svg:hover {\n          fill: ${this.props.botSettings.colours.minimizeIconHover} !important;\n        }\n         `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n         .webchat__send-icon {\n            opacity:1;\n           fill: ${this.props.botSettings.colours.sendIcon} !important;\n           cursor: pointer;\n         }\n          `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `\n          .webchat__send-icon:hover {\n            fill: ${this.props.botSettings.colours.sendIconHover} !important;\n            \n          }\n           `,\n        0\n      );\n      document.styleSheets[0].insertRule(\n        `.main {\n            margin-left: 13px;\n            margin-right: 13px;\n            border-bottom-left-radius: 8px;\n            border-bottom-right-radius: 8px;\n            border-top-left-radius: 8px;\n            border-top-right-radius: 8px;\n          }`,\n        0\n      );\n      // if (sendButtonDiv.length !== 0) {\n      //   sendButtonDiv[0].innerHTML =\n      //     \"<svg version='1.1' id='Layer_1' class='webchat__send-icon' xmlns='http://www.w3.org/2000/svg' \" +\n      //     \"xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 122.88 116.6' \" +\n      //     \"style='enable-background:new 0 0 122.88 116.6;margin-right: 10px;  width: 25px;'\" +\n      //     \"xml:space='preserve'><g><path d='M24.44,0h74.01c6.68,0,12.77,2.75,17.19,7.17c4.47,4.47,7.24,10.65,7.24,17.45v67.35c0,6.8-2.78,12.98-7.25,17.45 c-4.42,4.42-10.51,7.17-17.19,7.17H24.44c-6.68,0-12.77-2.75-17.19-7.17C2.77,104.96,0,98.78,0,91.98V24.62 c0-6.81,2.77-12.99,7.24-17.45C11.67,2.75,17.75,0,24.44,0L24.44,0z M64.51,39.22v28.33c0,0.85-0.34,1.62-0.9,2.17 c-0.56,0.56-1.33,0.9-2.17,0.9c-0.85,0-1.62-0.34-2.17-0.9c-0.56-0.56-0.9-1.32-0.9-2.17V39.22l-10.92,9.53 c-0.63,0.55-1.43,0.8-2.21,0.76c-0.79-0.05-1.55-0.39-2.12-1.02c-0.56-0.63-0.81-1.43-0.77-2.21c0.05-0.78,0.39-1.54,1.02-2.1 l16.04-14c0.59-0.52,1.33-0.77,2.06-0.77c0.73,0.01,1.46,0.28,2.02,0.8l16.03,14c0.61,0.56,0.95,1.31,1,2.08 c0.05,0.78-0.21,1.57-0.77,2.2l-0.02,0.02c-0.56,0.62-1.32,0.95-2.09,1h-0.01c-0.78,0.04-1.58-0.21-2.21-0.77L64.51,39.22 L64.51,39.22z M4.93,82.85c0.85,3.45,2.55,6.55,4.83,9.01c3.36,3.62,7.99,5.87,13.1,5.87h77.17c0.21,0,0.41,0,0.62-0.01l1.25-0.09 c4.36-0.47,8.29-2.6,11.23-5.77c2.28-2.46,3.97-5.55,4.83-9V24.62c0-5.28-2.17-10.09-5.67-13.58c-3.54-3.54-8.44-5.74-13.84-5.74 H24.44c-5.4,0-10.3,2.2-13.84,5.74c-3.49,3.49-5.66,8.3-5.66,13.58V82.85L4.93,82.85z'/></g></svg>\";\n      //   clearInterval(intervalId);\n      // }\n      if (sendButtonDiv.length !== 0) {\n        sendButtonDiv[0].innerHTML =\n          \"<svg  viewBox='0 0 32 32' id:'Layer_1' class='webchat__send-icon' xmlns='http://www.w3.org/2000/svg' \" +\n          \"style='enable-background:new 0 0 122.88 116.6;margin-right: 10px;  width: 23px;'\" +\n          \"xml:space='preserve'><g><path d='m27.45 15.11-22-11a1 1 0 0 0 -1.08.12 1 1 0 0 0 -.33 1l2.65 9.77h11.31v2h-11.31l-2.69 9.74a1 1 0 0 0 1 1.26 1 1 0 0 0 .45-.11l22-11a1 1 0 0 0 0-1.78z'></path> </g>\" +\n          \"</svg>\";\n        clearInterval(intervalId);\n      }\n    }, 1000);\n\n    const getdiv = document.getElementsByClassName(\n      \"webchat__send-text-box-count\"\n    );\n    if (\n      this.props.inTwiliochat === false &&\n      this.props.inZenDesk === false &&\n      this.props.botSettings.features.fixedResponses === true\n    ) {\n      if (getdiv === null || getdiv.length === 0) {\n        const form = document.querySelector(\"form\");\n        const main = document.getElementsByClassName(\"main\");\n        if (form !== null) {\n          const button = document.getElementsByClassName(\n            \"webchat__icon-button\"\n          );\n          let disableButton = document.createElement(\"button\");\n          main[0].appendChild(disableButton);\n          disableButton.type = \"button\";\n          disableButton.style.display = \"none\";\n          disableButton.style.backgroundColor = \"Transparent\";\n          disableButton.style.border = \"0\";\n          disableButton.style.outline = \"0\";\n          disableButton.style.padding = \"0\";\n          disableButton.style.width = \"40px\";\n          disableButton.disabled = \"disabled\";\n          disableButton.style.opacity = \"0.4\";\n          disableButton.innerHTML =\n            // \"<svg version='1.1' id='Layer_1' class='webchat__send-icon' xmlns='http://www.w3.org/2000/svg' \" +\n            // \"xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 122.88 116.6' \" +\n            // \"style='enable-background:new 0 0 122.88 116.6;margin-right: 10px;  width: 25px;'\" +\n            // \"xml:space='preserve'><g><path d='M24.44,0h74.01c6.68,0,12.77,2.75,17.19,7.17c4.47,4.47,7.24,10.65,7.24,17.45v67.35c0,6.8-2.78,12.98-7.25,17.45 c-4.42,4.42-10.51,7.17-17.19,7.17H24.44c-6.68,0-12.77-2.75-17.19-7.17C2.77,104.96,0,98.78,0,91.98V24.62 c0-6.81,2.77-12.99,7.24-17.45C11.67,2.75,17.75,0,24.44,0L24.44,0z M64.51,39.22v28.33c0,0.85-0.34,1.62-0.9,2.17 c-0.56,0.56-1.33,0.9-2.17,0.9c-0.85,0-1.62-0.34-2.17-0.9c-0.56-0.56-0.9-1.32-0.9-2.17V39.22l-10.92,9.53 c-0.63,0.55-1.43,0.8-2.21,0.76c-0.79-0.05-1.55-0.39-2.12-1.02c-0.56-0.63-0.81-1.43-0.77-2.21c0.05-0.78,0.39-1.54,1.02-2.1 l16.04-14c0.59-0.52,1.33-0.77,2.06-0.77c0.73,0.01,1.46,0.28,2.02,0.8l16.03,14c0.61,0.56,0.95,1.31,1,2.08 c0.05,0.78-0.21,1.57-0.77,2.2l-0.02,0.02c-0.56,0.62-1.32,0.95-2.09,1h-0.01c-0.78,0.04-1.58-0.21-2.21-0.77L64.51,39.22 L64.51,39.22z M4.93,82.85c0.85,3.45,2.55,6.55,4.83,9.01c3.36,3.62,7.99,5.87,13.1,5.87h77.17c0.21,0,0.41,0,0.62-0.01l1.25-0.09 c4.36-0.47,8.29-2.6,11.23-5.77c2.28-2.46,3.97-5.55,4.83-9V24.62c0-5.28-2.17-10.09-5.67-13.58c-3.54-3.54-8.44-5.74-13.84-5.74 H24.44c-5.4,0-10.3,2.2-13.84,5.74c-3.49,3.49-5.66,8.3-5.66,13.58V82.85L4.93,82.85z'/></g></svg>\";\n            \"<svg  viewBox='0 0 32 32' id:'Layer_1' class='webchat__send-icon' xmlns='http://www.w3.org/2000/svg' \" +\n            \"style='enable-background:new 0 0 122.88 116.6;margin-right: 10px;  width: 23px;'\" +\n            \"xml:space='preserve'><g><path d='m27.45 15.11-22-11a1 1 0 0 0 -1.08.12 1 1 0 0 0 -.33 1l2.65 9.77h11.31v2h-11.31l-2.69 9.74a1 1 0 0 0 1 1.26 1 1 0 0 0 .45-.11l22-11a1 1 0 0 0 0-1.78z'></path> </g>\" +\n            \"</svg>\";\n          const msgBox = document.getElementsByClassName(\n            \"webchat__send-box-text-box__input\"\n          );\n          const input = msgBox[0];\n          form.setAttribute(\"id\", \"form_send\");\n\n          let div_sendBoxTextCount = document.createElement(\"div\");\n          document\n            .getElementById(\"form_send\")\n            .appendChild(div_sendBoxTextCount);\n          div_sendBoxTextCount.classList.add(\"webchat__send-text-box-count\");\n          div_sendBoxTextCount.setAttribute(\n            \"id\",\n            \"webchat__send-text-box-count\"\n          );\n          const span = document.createElement(\"span\");\n          div_sendBoxTextCount.appendChild(span);\n          span.setAttribute(\"id\", \"span-count\");\n          span.style.marginLeft = \"5px\";\n          span.style.fontSize = \"14px\";\n\n          function _set() {\n            // var len = this.value.replace(/ /g, \"\").length || 0;\n            // let totalLen = 70;\n            // if (len <= 40) {\n            //   span.style.color = \"green\";\n            //   button[0].style.display = \"block\";\n            //   disableButton.style.display = \"none\";\n            //   len = this.value !== \"\" ? 40 - len : \"\";\n            // } else {\n            //   button[0].style.display = \"none\";\n            //   disableButton.style.display = \"block\";\n            //   span.style.color = \"red\";\n            //   len = \"-\" + (30 - (totalLen - len));\n            // }\n            // span.innerHTML = len;\n          }\n          if (input !== null && input !== \"\") {\n            input.addEventListener(\"keyup\", (e) => {\n              if (\n                this.props.inTwiliochat === false &&\n                this.props.inZenDesk === false\n              ) {\n                document.getElementById(\n                  \"webchat__send-text-box-count\"\n                ).style.display = \"block\";\n                let len = input.value.replace(/ /g, \"\").length;\n                // if (len <= 70) {\n                //   _set.call(input);\n                // }\n              }\n            });\n            // input.addEventListener(\"keypress\", (e) => {\n            //   if (\n            //     this.props.inTwiliochat === false &&\n            //     this.props.inZenDesk === false\n            //   ) {\n            //     let len = input.value.replace(/ /g, \"\").length;\n            //     if (len >= 70) {\n            //       e.stopPropagation();\n            //       e.preventDefault();\n            //     } else if (len > 40) {\n            //       if (e.key === \"Enter\") {\n            //         input.focus();\n            //         e.stopPropagation();\n            //         e.preventDefault();\n            //       }\n            //     }\n            //   }\n            // });\n          }\n        }\n      }\n    } else {\n      if (document.getElementById(\"webchat__send-text-box-count\") !== null) {\n        document.getElementById(\"webchat__send-text-box-count\").style.display =\n          \"none\";\n      }\n    }\n    if (\n      this.props.botSettings.features.addOnUpsells &&\n      this.state.isServiceAvailable\n    ) {\n      const divcurated = document.getElementsByClassName(\n        \"webchat__send-curated-option\"\n      );\n      if (divcurated === null || divcurated.length === 0) {\n        const getMainDiv = document.getElementsByClassName(\"main\");\n        const formdiv = document.getElementById(\"form_send\");\n        if (getMainDiv !== null && getMainDiv.length > 0 && formdiv !== null) {\n          let createCuratedDiv = document.createElement(\"div\");\n          formdiv.parentNode.insertBefore(createCuratedDiv, formdiv);\n          createCuratedDiv.className = \"webchat__send-curated-option\";\n          createCuratedDiv.innerHTML =\n            \"<svg version='1.0' xmlns='http://www.w3.org/2000/svg' \" +\n            \"width='20px' height='20px' viewBox='0 0 512.000000 512.000000' preserveAspectRatio='xMidYMid meet'>\" +\n            \"<g transform='translate(0.000000,512.000000) scale(0.100000,-0.100000)' fill='#000000' stroke='none'>\" +\n            \"<path d='M2330 5110 c-494 -48 -950 -230 -1350 -538 -195 -150 -448 -432 -594 -662 -63 -99 -186 -351 -230 -471 -49 -134 -102 -340 -128 -499 -31 -195 -31 -565 0 -760 45 -276 116 -498 237 -745 132 -269 269 -460 489 -681 221 -220 412 -357 681 -489 247 -121 469 -192 745 -237 195 -31 565 -31 760 0 276 45 498 116 745 237 269 132 460 269 681 489 220 221 357 412 489 681 88 179 132 296 180 476 63 240 78 371 78 649 0 278 -15 409 -78 649 -48 180 -92 297 -180 476 -132 269 -269 460 -489 681 -221 220 -412 357 -681 489 -246 121 -474 193 -740 235 -147 23 -475 34 -615 20z m468 -401 c488 -53 934 -270 1288 -623 415 -415 634 -943 634 -1526 0 -583 -219 -1111 -634 -1526 -415 -415 -943 -634 -1526 -634 -583 0 -1111 219 -1526 634 -415 415 -634 943 -634 1526 0 583 219 1111 634 1526 349 349 800 569 1276 623 110 12 376 13 488 0z'/>\" +\n            \"<path d='M2515 3761 c-67 -17 -127 -74 -144 -138 -7 -24 -11 -190 -11 -440 l0 -403 -390 0 c-251 0 -408 -4 -442 -11 -65 -14 -129 -73 -148 -136 -27 -89 18 -191 102 -232 43 -20 56 -21 461 -21 l416 0 3 -422 c3 -407 4 -425 24 -463 11 -22 40 -53 63 -70 37 -26 51 -30 111 -30 60 0 74 4 111 30 23 17 52 48 63 70 20 38 21 56 24 463 l3 422 416 0 c405 0 418 1 461 21 84 41 129 143 102 232 -19 63 -83 122 -148 136 -34 7 -191 11 -442 11 l-390 0 0 403 c0 250 -4 416 -11 440 -11 43 -59 101 -98 121 -35 18 -99 26 -136 17z'/>\" +\n            \"</g> </svg>\";\n          createCuratedDiv.addEventListener(\"click\", (e) => {\n            this.setState({ open_service_popup: true });\n          });\n        }\n      }\n    }\n  }\n\n  // cookies\n  getName = (assistantDetail, type) => {\n    if (assistantDetail !== null && assistantDetail.length > 0) {\n      const findIndex = assistantDetail.findIndex(\n        (i) =>\n          i.locale ===\n          (this.state.language === \"zh-TW\" ? \"hk\" : this.state.language)\n      );\n      if (findIndex === -1) {\n        const getEn = assistantDetail.filter((c) => c.locale === \"en\");\n        if (getEn !== null && getEn.length > 0) {\n          if (type === \"cookiesText\") {\n            return getEn[0].statement; // Return raw HTML string\n          }\n        }\n      } else {\n        if (type === \"cookiesText\") {\n          return assistantDetail[findIndex].statement; // Return raw HTML string\n        }\n      }\n    }\n    return \"\";\n  };\n\n  handleLinkClick = (e) => {\n    e.preventDefault();\n    const href = e.target.closest(\"a\")?.getAttribute(\"href\");\n\n    if (href) {\n      if (href.includes(\"myma.ai\")) {\n        this.setState({\n          isOpenModal: true,\n          modalContent: href,\n        });\n      } else {\n        // If the link is external, open it in a new tab\n        window.open(href, \"_blank\");\n      }\n    }\n  };\n\n  closeModal = () => {\n    this.setState({ isOpenModal: false });\n  };\n\n  //\n  dynamicSort(property) {\n    var sortOrder = 1;\n    if (property[0] === \"-\") {\n      sortOrder = -1;\n      property = property.substr(1);\n    }\n    return function (a, b) {\n      /* next line works with strings and numbers,\n       * and you may want to customize it to your needs\n       */\n      var result =\n        a[property] < b[property] ? -1 : a[property] > b[property] ? 1 : 0;\n      return result * sortOrder;\n    };\n  }\n\n  handleVisitorEmailChange = (e) => {\n    this.setState({ email: e.target.value });\n  };\n  handleVisitorNameChange = (e) => {\n    this.setState({ name: e.target.value });\n  };\n  handleVisitorPhoneNumerChange = (e) => {\n    let val = true;\n    let str = e.target.value.split(\"\");\n    for (let i = 0; i < str.length; i++) {\n      let code = str[i];\n      code = code.charCodeAt(0);\n      if (\n        (code >= 48 || code === 45 || code === 40 || code === 41) &&\n        (code <= 57 || code === 45 || code === 40 || code === 41)\n      )\n        val = true;\n      else val = false;\n    }\n    if (val) this.setState({ phoneNumber: e.target.value });\n  };\n  handleVisitorCheckBoxChange = (e) => {\n    this.setState({ consentGiven: e.target.checked });\n  };\n  hadleVisitorFirstNameChange = (e) => {\n    this.setState({ firstName: e.target.value });\n  };\n  hadleVisitorLastNameChange = (e) => {\n    this.setState({ lastName: e.target.value });\n  };\n  hadleVisitorZipCodeChange = (e) => {\n    this.setState({ zipCode: e.target.value });\n  };\n\n  handleChangeLanguage = (id, sendtobot) => {\n    if (window.parent) {\n      window.parent.postMessage(\"langDetect:\" + id + \"\", \"*\");\n    }\n    const findLanguage = localeOptions.find((elem) => {\n      return elem.id === id;\n    });\n\n    if (findLanguage) {\n      this.setState({\n        language: findLanguage.id,\n        languageCode: findLanguage.code,\n        langLocale: findLanguage.locale,\n      });\n    }\n\n    localStorage.setItem(this.props.language_state_store, findLanguage.id);\n\n    if (sendtobot) {\n      this.props.bookingApp.callbacks.getStore().dispatch({\n        type: \"WEB_CHAT/SEND_EVENT\",\n        payload: {\n          name: \"webchat/lang-update\",\n          value: {\n            lang: id,\n          },\n        },\n      });\n    }\n\n    if (\n      this.props.persistentMenu.filter((i) => i.locale.includes(id)).length > 0\n    ) {\n      let menu = this.props.persistentMenu.filter((i) => i.locale.includes(id));\n      this.setState({\n        persistentMenuData: menu,\n      });\n    } else {\n      let menu = this.props.persistentMenu.filter((i) =>\n        i.locale.includes(\"default\")\n      );\n      let menuItem = [];\n      menu[0].callToActions.map((item) => {\n        var input = item.title;\n        if (input !== \"\") {\n          if (id === \"en\") {\n            menuItem.push({\n              title: item.title,\n              type: item.type,\n              payLoad: item.payLoad,\n              url: item.url,\n            });\n          } else {\n            if (\n              item.payLoad !== \"select_property\" &&\n              item.payLoad !== \"switch_language\" &&\n              item.payLoad !== \"restart\" &&\n              item.payLoad !== \"hidebot\"\n            ) {\n              const req = fetch(TRANSLATE_URL, {\n                method: \"POST\",\n                headers: {\n                  Accept: \"application/json\",\n                  \"Content-Type\": \"application/json\",\n                },\n                body: JSON.stringify({\n                  q: input,\n                  target: id,\n                }),\n              });\n              req.then((m) => {\n                m.json().then((k) => {\n                  menuItem.push({\n                    title: k.output,\n                    type: item.type,\n                    payLoad: item.payLoad,\n                    url: item.url,\n                  });\n                });\n              });\n            } else {\n              menuItem.push({\n                title: item.title,\n                type: item.type,\n                payLoad: item.payLoad,\n                url: item.url,\n              });\n            }\n          }\n          this.setState({\n            persistentMenuData: [\n              {\n                locale: id,\n                callToActions: menuItem,\n              },\n            ],\n          });\n        }\n      });\n    }\n    this.close_language_popup();\n  };\n\n  handleMenuClick = (data) => {\n    if (data.itemType === \"postback\") {\n      if (data.items.payLoad === \"switch_language\") {\n        this.setState({ open_language_popup: true });\n      } else if (data.items.payLoad === \"select_property\") {\n        this.setState({ open_property_popup: true });\n      } else if (data.items.payLoad === \"restart\") {\n        this.end_clicked();\n      } else if (data.items.payLoad === \"hidebot\") {\n        this.hide_bot_confirm();\n      } else {\n        this.props.bookingApp.callbacks.getStore().dispatch({\n          type: \"WEB_CHAT/SEND_MESSAGE\",\n          payload: {\n            text: data.items.payLoad,\n          },\n        });\n      }\n    } else {\n      if (data.items.url.includes(\"utm_source\") === false) {\n        if (\n          data.items.url !== \"\" &&\n          this.state.googleAnalytics !== undefined &&\n          this.state.googleAnalytics !== null &&\n          this.state.googleAnalytics.utmSource !== undefined\n        ) {\n          var options = data.items.url.lastIndexOf(\"&\");\n          if (data.items.url.indexOf(\"?\") == \"-1\") {\n            data.items.url =\n              data.items.url +\n              `?utm_source=${this.state.googleAnalytics.utmSource !== undefined\n                ? this.state.googleAnalytics.utmSource\n                : \"\"\n              }&utm_medium=${this.state.googleAnalytics.utmMedium !== undefined\n                ? this.state.googleAnalytics.utmMedium\n                : \"\"\n              }`;\n          } else if (data.items.url.indexOf(\"&\") == \"-1\") {\n            data.items.url =\n              data.items.url +\n              `&utm_source=${this.state.googleAnalytics.utmSource !== undefined\n                ? this.state.googleAnalytics.utmSource\n                : \"\"\n              }&utm_medium=${this.state.googleAnalytics.utmMedium !== undefined\n                ? this.state.googleAnalytics.utmMedium\n                : \"\"\n              }`;\n          } else {\n            data.items.url =\n              data.items.url.substr(0, data.items.url.lastIndexOf(\"&\")) +\n              `&utm_source=${this.state.googleAnalytics.utmSource !== undefined\n                ? this.state.googleAnalytics.utmSource\n                : \"\"\n              }&utm_medium=${this.state.googleAnalytics.utmMedium !== undefined\n                ? this.state.googleAnalytics.utmMedium\n                : \"\"\n              }` +\n              data.items.url.substr(data.items.url.lastIndexOf(\"&\"));\n          }\n        }\n      }\n      this.addLinks(data.items.url);\n      if (window.parent) {\n        window.parent.postMessage(\"openUrl:\" + data.items.url + \"\", \"*\");\n      } else {\n        window.location = data.items.url;\n      }\n    }\n  };\n  handleCancelFeedbackResponse = () => {\n    this.setState({ leaveFeedbackMessage: \"\" });\n    let feedback_popup = document.getElementById(\"feedback_popup\");\n    feedback_popup.style.display = \"none\";\n  };\n  getMessageTranslate = (value) => {\n    switch (this.state.language) {\n      case \"af\":\n        return (\n          \"Dankie dat jy vir ons jou navraag gestuur het! Ons vra om verskoning dat dit nie dadelik beantwoord is nie, ons span werk tans daaraan en sal so gou moontlik na jou terugkom! Jou kaartjienommer is \" +\n          value +\n          \"\"\n        );\n      case \"ar\":\n        return (\n          \"\" +\n          value +\n          \" شكرا لك على إرسال استفسارك إلينا! نعتذر عن عدم الرد على الفور، ويعمل فريقنا حاليًا على حل المشكلة وسيقوم بالرد عليك في أقرب وقت ممكن! رقم التذكرة الخاص بك هو\"\n        );\n      case \"de\":\n        return (\n          \"Vielen Dank für Ihre Anfrage! Wir entschuldigen uns dafür, dass Ihre Anfrage nicht sofort beantwortet wurde. Unser Team arbeitet derzeit daran und wird sich so schnell wie möglich bei Ihnen melden! Ihre Ticketnummer lautet \" +\n          value +\n          \"\"\n        );\n      case \"es\":\n        return (\n          \"¡Gracias por enviarnos tu consulta! Lamentamos que no haya sido respondida de inmediato, nuestro equipo está trabajando actualmente en ello y se comunicará con usted lo antes posible. Su número de billete es \" +\n          value +\n          \"\"\n        );\n      case \"fi\":\n        return (\n          \"Kiitos, että lähetit meille kyselysi! Pahoittelemme, ettei siihen heti vastattu. Tiimimme työskentelee parhaillaan asian parissa ja ottaa sinuun yhteyttä mahdollisimman pian! Lippusi numero on \" +\n          value +\n          \"\"\n        );\n      case \"fr\":\n        return (\n          \"Merci de nous avoir envoyé votre demande ! Nous sommes désolés de ne pas avoir reçu de réponse immédiate, notre équipe y travaille actuellement et vous répondra dans les plus brefs délais ! Votre numéro de billet est \" +\n          value +\n          \"\"\n        );\n      case \"hi\":\n        return (\n          \"हमें अपनी जांच भेजने के लिए धन्यवाद! हम क्षमा चाहते हैं कि इसका उत्तर सीधे नहीं दिया गया, हमारी टीम वर्तमान में इस पर काम कर रही है और जल्द से जल्द आपसे संपर्क करेगी! आपका टिकट नंबर है \" +\n          value +\n          \"\"\n        );\n      case \"id\":\n        return (\n          \"Terima kasih telah mengirimkan pertanyaan Anda kepada kami! Kami mohon maaf karena tidak langsung dijawab, tim kami sedang mengerjakannya dan akan menghubungi Anda sesegera mungkin! Nomor tiket Anda adalah \" +\n          value +\n          \"\"\n        );\n      case \"ja\":\n        return (\n          \"お問い合わせをお送りいただきありがとうございます。すぐに回答できなかったことをお詫び申し上げます。現在、チームが対応中ですので、できるだけ早くご連絡いたします。あなたのチケット番号は \" +\n          value +\n          \"\"\n        );\n      case \"ko\":\n        return (\n          \"문의사항을 보내주셔서 감사합니다! 즉시 답변을 드리지 못한 점 사과드립니다. 현재 팀에서 작업 중이므로 최대한 빨리 답변해 드리겠습니다. 귀하의 티켓 번호는 다음과 같습니다 \" +\n          value +\n          \"\"\n        );\n      case \"mi\":\n        return (\n          \"Mauruuru koe mo te tuku mai i to patai! E mihi ana matou na te mea kaore i whakautua tonutia, kei te mahi tonu ta matou roopu i tenei wa ka hoki wawe mai ki a koe! Ko to nama tikiti \" +\n          value +\n          \"\"\n        );\n      case \"ru\":\n        return (\n          \"Спасибо, что отправили нам свой запрос! Приносим извинения, что не ответили сразу, наша команда сейчас работает над этим и свяжется с вами как можно скорее! Номер вашего билета \" +\n          value +\n          \"\"\n        );\n      case \"tl\":\n        return (\n          \"Salamat sa pagpapadala sa amin ng iyong katanungan! Humihingi kami ng paumanhin na hindi ito agad nasagot, kasalukuyang ginagawa ito ng aming team at babalikan ka sa lalong madaling panahon! Ang iyong numero ng tiket ay \" +\n          value +\n          \"\"\n        );\n      case \"th\":\n        return (\n          \"ขอบคุณสำหรับการส่งคำถามของคุณถึงเรา! เราต้องขออภัยที่ไม่ได้ตอบกลับทันที ทีมงานของเรากำลังดำเนินการอยู่และจะติดต่อกลับโดยเร็วที่สุด! หมายเลขตั๋วของคุณคือ \" +\n          value +\n          \"\"\n        );\n      case \"vi\":\n        return (\n          \"Cảm ơn bạn đã gửi cho chúng tôi yêu cầu của bạn! Chúng tôi xin lỗi vì nó không được trả lời ngay lập tức, nhóm của chúng tôi hiện đang giải quyết vấn đề này và sẽ liên hệ lại với bạn sớm nhất có thể! Số vé của bạn là \" +\n          value +\n          \"\"\n        );\n      case \"zh\":\n        return (\n          \"感谢您向我们发送您的询问!对于未能立即回复您的问题,我们深表歉意,我们的团队目前正在处理该问题,并将尽快回复您!您的票号是 \" +\n          value +\n          \"\"\n        );\n      case \"zh-TW\":\n        return (\n          \"感謝您向我們發送您的詢問!對於未能立即回覆您的問題,我們深表歉意,我們的團隊目前正在處理該問題,並將盡快回覆您!您的票號是 \" +\n          value +\n          \"\"\n        );\n      default:\n        return (\n          \"Thank you for sending us your enquiry! We do apologise that it was not answered straightaway, our team is currently working on it and will get back to you as soon as possible! Your ticket number is \" +\n          value +\n          \"\"\n        );\n    }\n  };\n  handleFeedBackResponse = async (body, name, phone, email) => {\n    let button = document.getElementById(\"feedback_button\");\n    if (button !== null && button.value !== undefined) {\n      document.getElementById(\"feedback_popup_body\").classList.remove(\"area\");\n      document.getElementById(\"feedback_popup_body\").classList.add(\"closepop\");\n      let feedback_popup = document.getElementById(\"feedback_popup\");\n      feedback_popup.style.display = \"none\";\n      var leaveFeedback = {\n        groupId: this.props.gid,\n        messageId: button.value,\n        leaveMessage: this.state.leaveFeedbackMessage,\n      };\n      try {\n        fetch(`${LEAVE_FEEDBACK}`, {\n          method: \"POST\",\n          headers: {\n            Accept: \"application/json\",\n            \"Content-Type\": \"application/json\",\n          },\n          body: JSON.stringify(leaveFeedback),\n        });\n      } catch (error) { }\n      var tags = [\"Feedback\"];\n      const data = new FormData();\n      data.append(\"formId\", null);\n      data.append(\"groupId\", this.props.gid);\n      data.append(\"propertyId\", this.props.pid === \"-1\" ? \"\" : this.props.pid);\n      data.append(\"conversationId\", this.props.directline.conversationId);\n      data.append(\"source\", \"WebSite\");\n      data.append(\"tags\", tags);\n      data.append(\"notes\", body);\n      data.append(\"bcc\", \"andy@bookmebob.com\");\n      data.append(\"requesterName\", name);\n      data.append(\"requesterEmail\", email);\n      data.append(\"requesterPhoneNumber\", phone);\n      data.append(\"creator\", \"Bot\");\n      data.append('isDefault', true);\n      const ip = await publicIp.v4();\n      data.append(\"ipAddress\", ip);\n      fetch(process.env.REACT_APP_BFF_API + \"/public/form-tickets\", {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"multipart/form-data\",\n        },\n        cache: \"no-cache\",\n        body: data,\n      }).then((response) => {\n        response.json().then((res) => {\n          var msg = `${this.getMessageTranslate(res.result.id)}`;\n\n          fetch(process.env.REACT_APP_API_URL + \"/sendmessageactivityByBot\", {\n            method: \"POST\",\n            headers: {\n              \"Content-Type\": \"application/json\",\n            },\n            body: JSON.stringify({\n              conversationId: this.props.directline.conversationId,\n              message: \"\" + msg + \"\",\n              from: Math.random(),\n              summary: \"Fallback\",\n            }),\n          }).catch((err) => {\n            console.error(\"Bmb ticket creation failed :(.\");\n            console.error(err);\n          });\n          var msgpayload = {\n            gid: this.props.gid,\n            iid: this.props.iid,\n            pid: this.props.pid,\n            vid: this.props.vid,\n            sid: this.props.sid,\n            cid: this.props.directline.conversationId,\n            time: new Date().toISOString(),\n            source: \"Bot\",\n            message: msg,\n            tag: \"\",\n            agentId: \"\",\n          };\n          fetch(process.env.REACT_APP_API_URL + \"/saveMessage\", {\n            method: \"POST\",\n            headers: {\n              \"Content-Type\": \"application/json\",\n            },\n            body: JSON.stringify(msgpayload),\n          }).catch((err) => {\n            console.error(\"Bmb livechat logging failed :(.\");\n            console.error(err);\n          });\n        });\n      });\n      this.setState({ leaveFeedbackMessage: \"\" });\n    }\n  };\n  componentDidMount() {\n    //powered by logo code\n\n    const filtered = this.state.languageOptions.filter((el) => {\n      return this.props.botSettings.languages.indexOf(el.id) !== -1;\n    });\n    var langCode = this.state.language;\n    const selectedLang = this.state.languageOptions.filter(\n      (el) => el.id === this.state.language\n    );\n    if (selectedLang.length > 0) {\n      this.setState({\n        languageOptions: filtered,\n        languageCode: selectedLang[0].code,\n        langLocale: selectedLang[0].locale,\n      });\n    } else {\n      this.setState({ languageOptions: filtered });\n    }\n    if (\n      this.props.persistentMenu !== undefined ||\n      this.props.persistentMenu !== null\n    ) {\n      if (this.state.persistentMenuData.length === 0) {\n        if (\n          this.props.persistentMenu.filter((i) => i.locale.includes(langCode))\n            .length > 0\n        ) {\n          let menu = this.props.persistentMenu.filter((i) =>\n            i.locale.includes(langCode)\n          );\n          this.setState({\n            persistentMenuData: menu,\n          });\n        } else {\n          let menu = this.props.persistentMenu.filter((i) =>\n            i.locale.includes(\"default\")\n          );\n          let menuItem = [];\n          menu[0].callToActions.map((item) => {\n            var input = item.title;\n            if (input !== \"\") {\n              if (langCode === \"en\") {\n                menuItem.push({\n                  title: item.title,\n                  type: item.type,\n                  payLoad: item.payLoad,\n                  url: item.url,\n                });\n              } else {\n                if (\n                  item.payLoad !== \"select_property\" &&\n                  item.payLoad !== \"switch_language\" &&\n                  item.payLoad !== \"restart\" &&\n                  item.payLoad !== \"hidebot\"\n                ) {\n                  const req = fetch(TRANSLATE_URL, {\n                    method: \"POST\",\n                    headers: {\n                      Accept: \"application/json\",\n                      \"Content-Type\": \"application/json\",\n                    },\n                    body: JSON.stringify({\n                      q: input,\n                      target: langCode,\n                    }),\n                  });\n                  req.then((m) => {\n                    m.json().then((k) => {\n                      menuItem.push({\n                        title: k.output,\n                        type: item.type,\n                        payLoad: item.payLoad,\n                        url: item.url,\n                      });\n                    });\n                  });\n                } else {\n                  menuItem.push({\n                    title: item.title,\n                    type: item.type,\n                    payLoad: item.payLoad,\n                    url: item.url,\n                  });\n                }\n              }\n              this.setState({\n                persistentMenuData: [\n                  {\n                    locale: langCode,\n                    callToActions: menuItem,\n                  },\n                ],\n              });\n            }\n          });\n        }\n      }\n    }\n\n    if (\n      this.props.botSettings !== undefined ||\n      this.props.botSettings !== null\n    ) {\n      if (\n        this.props.botSettings.bubbleSettings !== undefined &&\n        this.props.botSettings.bubbleSettings !== null\n      ) {\n        if (\n          this.props.botSettings.bubbleSettings.bubbleType !== undefined &&\n          this.props.botSettings.bubbleSettings.bubbleType !== null\n        ) {\n          this.setState({\n            bubble_type: this.props.botSettings.bubbleSettings.bubbleType,\n          });\n        } else {\n          this.setState({ bubble_type: \"Bubble\" });\n        }\n      }\n    }\n    const self = this;\n    var ignoreClickOnMeElement = document.getElementById(\"chat_box\");\n    if (\n      ignoreClickOnMeElement !== null &&\n      ignoreClickOnMeElement !== undefined\n    ) {\n      document.addEventListener(\"click\", function (event) {\n        if (self.state.ask_bot_hide === true) {\n          var isClickInsideElement = ignoreClickOnMeElement.contains(\n            event.target\n          );\n          if (isClickInsideElement) {\n            self.setState({ ask_bot_hide: false });\n          }\n        }\n      });\n    }\n\n    var ignoreClickOnMeElementVisitor =\n      document.getElementById(\"chat_box_visitor\");\n    if (\n      ignoreClickOnMeElementVisitor !== null &&\n      ignoreClickOnMeElementVisitor !== undefined\n    ) {\n      document.addEventListener(\"click\", function (event) {\n        if (self.state.ask_bot_hide === true) {\n          var isClickInsideElement = ignoreClickOnMeElementVisitor.contains(\n            event.target\n          );\n          if (isClickInsideElement) {\n            self.setState({ ask_bot_hide: false });\n          }\n        }\n      });\n    }\n    if (this.props.pid !== undefined && this.props.pid !== null) {\n      this.GetServiceAvailable(this.props.property_state_store);\n    }\n    if (this.props.pid !== undefined && this.props.pid !== null) {\n      const req = fetch(ANALYTICS_URL, {\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify({\n          propertyId: this.props.pid,\n          groupId: this.props.gid,\n        }),\n      });\n      req.then((m) => {\n        m.json().then((k) => {\n          if (\n            k.googleAnalyticsIntegration !== undefined &&\n            k.googleAnalyticsIntegration !== null\n          ) {\n            this.setState({ googleAnalytics: k.googleAnalyticsIntegration });\n          }\n        });\n      });\n    }\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    if (\n      prevProps.availblity !== this.props.availblity &&\n      this.props.availblity !== undefined\n    ) {\n      this.availblityForm(this.props.availblity);\n    }\n\n    if (prevProps.openZChat_popup !== this.props.openZChat_popup) {\n      this.setState({ open_ZChatfeedback_popup: this.props.openZChat_popup });\n    }\n\n    if (prevProps.property_popup !== this.props.property_popup) {\n      this.setState({ open_property_popup: this.props.property_popup });\n    }\n    if (prevProps.lang !== this.props.lang && this.props.lang !== undefined) {\n      this.handleChangeLanguage(\n        this.props.lang,\n        this.props.autoDetect === true ? false : true\n      );\n    }\n\n    if (prevProps.bot_restart !== this.props.bot_restart) {\n      this.setState({ ask_close: this.props.bot_restart });\n    }\n  }\n\n  GetServiceAvailable = (propertyStore) => {\n    var pid = \"\";\n    if (\n      localStorage.getItem(propertyStore) !== undefined &&\n      localStorage.getItem(propertyStore) !== null\n    ) {\n      pid = localStorage.getItem(propertyStore);\n    }\n    if (pid !== \"\") {\n      fetch(\n        SERVICES_URL +\n        \"?groupId=\" +\n        this.props.gid +\n        \"&propertyId=\" +\n        pid +\n        \"&languageCode=en\"\n      )\n        .then((response) => response.json())\n        .then((json) => {\n          if (json.result.length > 0) {\n            this.setState({ isServiceAvailable: true });\n          } else {\n            this.setState({ isServiceAvailable: false });\n          }\n        });\n    } else {\n      this.setState({ isServiceAvailable: false });\n    }\n  };\n\n  getAssistantName = (assistantDetail) => {\n    var assistantName = \"Jenni\";\n    if (assistantDetail !== null && assistantDetail.length > 0) {\n      var data = assistantDetail.filter(k => k.locale === this.state.language);\n      if (data.length === 0) {\n        assistantName = assistantDetail.filter(k => k.locale === \"en\")[0].name;\n      } else {\n        assistantName = data[0].name;\n      }\n    }\n    return assistantName;\n  }\n\n  render() {\n    //cookies\n    const cookiesData =\n      this.props.cookies_data && this.props.cookies_data.text\n        ? this.getName(this.props.cookies_data.text, \"cookiesText\")\n        : \"\";\n\n    const currentAppLocale =\n      AppLocale[this.state.langLocale === \"\" ? \"en\" : this.state.langLocale];\n    var {\n      store,\n      directline,\n      inputEnabled,\n      user_id,\n      loadingLivechat,\n      agentName,\n      mobile,\n      botSettings,\n      bookingApp,\n      room_app,\n      close_pop,\n      opened,\n      connectionError,\n      inactivePopupOne,\n      inactivePopupTwo,\n      persistentMenuEnabled,\n      resize_full,\n      resize_actual,\n      bearerToken\n    } = this.props;\n\n    var { ask_close, menu_open, confirm_cookies, ask_bot_hide } = this.state;\n\n    const myma_logosrc =\n      botSettings && botSettings.isGreyScale ? myma_logo_greyscale : myma_logo;\n\n    if (botSettings !== undefined) {\n      styleOptions.backgroundColor = botSettings.colours.botBackground;\n      styleOptions.bubbleFromUserBackground = botSettings.colours.botUser;\n      styleOptions.bubbleFromUserBorderColor = botSettings.colours.botUser;\n      styleOptions.bubbleFromUserTextColor = botSettings.colours.botUserText;\n      styleOptions.bubbleBackground = botSettings.colours.botBot;\n      styleOptions.bubbleBorderColor = botSettings.colours.botBot;\n      styleOptions.bubbleTextColor = botSettings.colours.botBotText;\n      if (mobile === \"true\") {\n        if (botSettings.hideSendBoxInMobile === true) {\n          this.props.hideTypingTextBox();\n        }\n      } else {\n        if (botSettings.hideSendBox === true) {\n          this.props.hideTypingTextBox();\n        }\n      }\n\n      if (\n        localStorage.getItem(this.props.property_state_store) === undefined ||\n        localStorage.getItem(this.props.property_state_store) === null\n      ) {\n        this.props.hideTypingTextBox();\n      }\n\n      if (botSettings.colours.sendBoxButton)\n        styleOptions.sendBoxButtonColor = botSettings.colours.sendBoxButton;\n      if (botSettings.colours.sendBoxText)\n        styleOptions.sendBoxTextColor = botSettings.colours.sendBoxText;\n      if (botSettings.colours.sendBoxBottomBorder) {\n        styleOptions.sendBoxBorderBottom = `solid 1px ${botSettings.colours.sendBoxBottomBorder}`;\n        styleOptions.sendBoxBorderTop = \"\";\n      }\n      if (botSettings.colours.sendBoxButtonFocus)\n        styleOptions.sendBoxButtonColorOnFocus =\n          botSettings.colours.sendBoxButtonFocus;\n      if (botSettings.colours.sendBoxButtonHover)\n        styleOptions.sendBoxButtonColorOnHover =\n          botSettings.colours.sendBoxButtonHover;\n      if (botSettings.colours.timeStamp)\n        styleOptions.timestampColor = botSettings.colours.timeStamp;\n      if (botSettings.colours.sendBoxPlaceHolder)\n        styleOptions.sendBoxPlaceholderColor =\n          botSettings.colours.sendBoxPlaceHolder;\n      if (botSettings.colours.sendBoxBackground)\n        styleOptions.sendBoxBackground = botSettings.colours.sendBoxBackground;\n\n      if (botSettings.colours.suggestionBackground)\n        styleOptions.suggestedActionBackground =\n          botSettings.colours.suggestionBackground;\n\n      if (botSettings.colours.suggestionText)\n        styleOptions.suggestedActionTextColor =\n          botSettings.colours.suggestionText;\n\n      this.createCssRules();\n    }\n\n    return (\n      <IntlProvider\n        locale={currentAppLocale.locale}\n        messages={currentAppLocale.messages}\n      >\n        <Fragment>\n          {\" \"}\n          <div\n            className={\n              mobile == \"true\"\n                ? `${this.state.bubble_type === \"Bubble\"\n                  ? \"chat_window\"\n                  : \"sildeopen\"\n                } chat_window_mobile ${this.props.customStyle}Window`\n                : `${this.state.bubble_type === \"Bubble\"\n                  ? \"chat_window\"\n                  : \"sildeopen\"\n                }${this.props.resize === true ? \" resize\" : \"\"} ${this.props.messenger === true ? \" chat_window_msg\" : \"\"\n                } ${this.props.customStyle}Window`\n            }\n            style={{\n              display: opened ? \"block\" : \"none\",\n              transition:\n                this.props.resize === false\n                  ? \"all .1s ease-in\"\n                  : \"all .2s ease-out\",\n            }}\n          >\n            {botSettings !== undefined ? (\n              <>\n                {!this.props.messenger && (\n                  <div\n                    className={\n                      mobile == \"true\"\n                        ? `chat_header chat_header_mobile ${this.props.customStyle\n                        }Header ${this.props.messenger === true\n                          ? \" chat_header_msg\"\n                          : \"\"\n                        }`\n                        : `chat_header ${this.props.customStyle}Header ${this.props.resize === true ? \" resize-header\" : \"\"\n                        } ${this.props.messenger === true\n                          ? \" chat_header_msg\"\n                          : \"\"\n                        }`\n                    }\n                    style={{ backgroundColor: botSettings.colours.header }}\n                  >\n                    <div\n                      className=\"chat_header_menuitem\"\n                      onClick={this.menu_popup_open}\n                    >\n                      <svg\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        width=\"24\"\n                        height=\"24\"\n                        viewBox=\"0 0 24 24\"\n                        fill=\"currentColor\"\n                      >\n                        <path d=\"M12,7a2,2,0,1,0-2-2A2,2,0,0,0,12,7Zm0,10a2,2,0,1,0,2,2A2,2,0,0,0,12,17Zm0-7a2,2,0,1,0,2,2A2,2,0,0,0,12,10Z\"></path>\n                      </svg>\n                    </div>\n                    <div\n                      className=\"chat_header_icon\"\n                      style={{\n                        backgroundImage: `url(${botSettings.urls.icon})`,\n                      }}\n                    ></div>\n                    <div className=\"chat_header_labels\">\n                      <span\n                        className=\"chat_header_title\"\n                        style={{ color: botSettings.colours.headerText }}\n                      >\n                        {\" \"}\n                        {agentName || this.getAssistantName(botSettings.assistantDetails)}{\" \"}\n                      </span>{\" \"}\n                    </div>\n                    <div\n                      className={`chat_header_btn_close ${this.props.customStyle}HeaderBtn`}\n                      onClick={this.close_clicked}\n                    >\n                      <svg\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        width=\"24\"\n                        height=\"24\"\n                        viewBox=\"0 0 24 24\"\n                        fill=\"currentColor\"\n                      >\n                        <path d=\"M13.41,12l6.3-6.29a1,1,0,1,0-1.42-1.42L12,10.59,5.71,4.29A1,1,0,0,0,4.29,5.71L10.59,12l-6.3,6.29a1,1,0,0,0,0,1.42,1,1,0,0,0,1.42,0L12,13.41l6.29,6.3a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42Z\"></path>\n                      </svg>\n                    </div>\n                    {this.props.customStyle === \"\" && mobile !== \"true\" ? (\n                      <div\n                        className=\"chat_header_btn_resize\"\n                        onClick={\n                          !this.props.resize ? resize_full : resize_actual\n                        }\n                      >\n                        {!this.props.resize ? (\n                          <i className=\"glyphicon glyphicon-resize-full icon-2x\"></i>\n                        ) : (\n                          <i className=\"glyphicon glyphicon-resize-small icon-2x\"></i>\n                        )}\n                      </div>\n                    ) : null}\n                    {botSettings.multilingual ? (\n                      <div\n                        className={`chat_header_btn_language ${this.props.customStyle}`}\n                        onClick={this.open_language_popup}\n                      >\n                        <svg\n                          version=\"1.1\"\n                          id=\"anna_vital_language_icon\"\n                          xmlns=\"http://www.w3.org/2000/svg\"\n                          x=\"0px\"\n                          y=\"0px\"\n                          viewBox=\"0 0 256 256\"\n                          fill=\"currentColor\"\n                        >\n                          <path d=\"M62.4,101c-1.5-2.1-2.1-3.4-1.8-3.9c0.2-0.5,1.6-0.7,3.9-0.5c2.3,0.2,4.2,0.5,5.8,0.9c1.5,0.4,2.8,1,3.8,1.7\tc1,0.7,1.8,1.5,2.3,2.6c0.6,1,1,2.3,1.4,3.7c0.7,2.8,0.5,4.7-0.5,5.7c-1.1,1-2.6,0.8-4.6-0.6c-2.1-1.4-3.9-2.8-5.5-4.2 C65.5,105.1,63.9,103.2,62.4,101z M40.7,190.1c4.8-2.1,9-4.2,12.6-6.4c3.5-2.1,6.6-4.4,9.3-6.8c2.6-2.3,5-4.9,7-7.7 c2-2.7,3.8-5.8,5.4-9.2c1.3,1.2,2.5,2.4,3.8,3.5c1.2,1.1,2.5,2.2,3.8,3.4c1.3,1.2,2.8,2.4,4.3,3.8c1.5,1.4,3.3,2.8,5.3,4.5 c0.7,0.5,1.4,0.9,2.1,1c0.7,0.1,1.7,0,3.1-0.6c1.3-0.5,3-1.4,5.1-2.8c2.1-1.3,4.7-3.1,7.9-5.4c1.6-1.1,2.4-2,2.3-2.7 c-0.1-0.7-1-1-2.7-0.9c-3.1,0.1-5.9,0.1-8.3-0.1c-2.5-0.2-5-0.6-7.4-1.4c-2.4-0.8-4.9-1.9-7.5-3.4c-2.6-1.5-5.6-3.6-9.1-6.2\tc1-3.9,1.8-8,2.4-12.4c0.3-2.5,0.6-4.3,0.8-5.6c0.2-1.2,0.5-2.4,0.9-3.3c0.3-0.8,0.4-1.4,0.5-1.9c0.1-0.5-0.1-1-0.4-1.6\tc-0.4-0.5-1-1.1-1.9-1.7c-0.9-0.6-2.2-1.4-3.9-2.3c2.4-0.9,5.1-1.7,7.9-2.6c2.7-0.9,5.7-1.8,8.8-2.7c3-0.9,4.5-1.9,4.6-3.1 c0.1-1.2-0.9-2.3-3.2-3.5c-1.5-0.8-2.9-1.1-4.3-0.9c-1.4,0.2-3.2,0.9-5.4,2.2c-0.6,0.4-1.8,0.9-3.4,1.6c-1.7,0.7-3.6,1.5-6,2.5 c-2.4,1-5,2-7.8,3.1c-2.9,1.1-5.8,2.2-8.7,3.2c-2.9,1.1-5.7,2-8.2,2.8c-2.6,0.8-4.6,1.4-6.1,1.6c-3.8,0.8-5.8,1.6-5.9,2.4\tc0,0.8,1.5,1.6,4.4,2.4c1.2,0.3,2.3,0.6,3.1,0.6c0.8,0.1,1.7,0.1,2.5,0c0.8-0.1,1.6-0.3,2.4-0.5c0.8-0.3,1.7-0.7,2.8-1.1 c1.6-0.8,3.9-1.7,6.9-2.8c2.9-1,6.6-2.4,11.2-4c0.9,2.7,1.4,6,1.4,9.8c0,3.8-0.4,8.1-1.4,13c-1.3-1.1-2.7-2.3-4.2-3.6\tc-1.5-1.3-2.9-2.6-4.3-3.9c-1.6-1.5-3.2-2.5-4.7-3c-1.6-0.5-3.4-0.5-5.5,0c-3.3,0.9-5,1.9-4.9,3.1c0,1.2,1.3,1.8,3.8,1.9 c0.9,0.1,1.8,0.3,2.7,0.6c0.9,0.3,1.9,0.9,3.2,1.8c1.3,0.9,2.9,2.2,4.7,3.8c1.8,1.6,4.2,3.7,7,6.3c-1.2,2.9-2.6,5.6-4.1,8\tc-1.5,2.5-3.4,5-5.5,7.3c-2.2,2.4-4.7,4.8-7.7,7.2c-3,2.5-6.6,5.1-10.8,7.8c-4.3,2.8-6.5,4.7-6.5,5.6C35,192.1,37,191.7,40.7,190.1z M250.5,81.8v165.3l-111.6-36.4L10.5,253.4V76.1l29.9-10V10.4l81.2,28.7L231.3,2.6v73.1L250.5,81.8z M124.2,50.6L22.3,84.6v152.2 l101.9-33.9V50.6L124.2,50.6z M219.4,71.9V19L138.1,46L219.4,71.9z M227,201.9L196.5,92L176,85.6l-30.9,90.8l18.9,5.9l5.8-18.7 l31.9,10l5.7,22.3L227,201.9z M174.8,147.7l22.2,6.9l-10.9-42.9L174.8,147.7z\" />\n                        </svg>\n                      </div>\n                    ) : null}\n                    <div\n                      className={`chat_header_btn_end ${this.props.customStyle}HeaderBtn d-none`}\n                      onClick={this.end_clicked}\n                    >\n                      <svg\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        width=\"24\"\n                        height=\"24\"\n                        viewBox=\"0 0 24 24\"\n                        fill=\"currentColor\"\n                      >\n                        <path d=\"M19,11H5a1,1,0,0,0,0,2H19a1,1,0,0,0,0-2Z\"></path>\n                      </svg>\n                    </div>\n                    {this.props.customStyle !== \"\" ? (\n                      <div\n                        className={`chat_header_btn_end ${this.props.customStyle}`}\n                        style={{\n                          backgroundImage: `url(${botSettings.urls.refreshIcon}`,\n                        }}\n                        onClick={this.refresh}\n                      >\n                        {\" \"}\n                      </div>\n                    ) : null}\n                  </div>\n                )}\n\n                {menu_open ? (\n                  <PersistentMenu\n                    mobile={mobile}\n                    menuOpen={this.menu_popup_Close}\n                    persistentMenu={this.state.persistentMenuData}\n                    persistentMenuEnabled={persistentMenuEnabled}\n                    handleMenuClick={this.handleMenuClick}\n                    botSettings={botSettings}\n                    cookiesDetail={this.cookies_details}\n                    botSite={this.bob_site}\n                  ></PersistentMenu>\n                ) : (\n                  \"\"\n                )}\n                {ask_close ? (\n                  <div\n                    className={`chat_box_popup_new`}\n                    onClick={() => {\n                      this.setState({ ask_close: false });\n                      if (this.props.messenger) {\n                        this.props.bot_restartClick();\n                      }\n                    }}\n                  >\n                    <div\n                      className={`endchat_popup ${ask_close ? \"area\" : \"closepop\"\n                        }`}\n                    >\n                      <h1>\n                        {\"\"}\n                        <IntlMessages id=\"chat.end\" />\n                        {\"\"}\n                      </h1>\n                      <p className=\"endchat_text\">\n                        <IntlMessages id=\"chat.endtext\" />\n                      </p>\n                      <button\n                        className=\"endchat_button\"\n                        onClick={this.close_confirmed}\n                      >\n                        {\"\"}\n                        <IntlMessages id=\"chat.end\" />\n                        {\"\"}\n                      </button>\n                      <button\n                        className=\"cancelchat_button\"\n                        onClick={this.close_cancel}\n                      >\n                        {\"\"}\n                        <IntlMessages id=\"chat.cancel\" />\n                        {\"\"}\n                      </button>\n                    </div>\n                  </div>\n                ) : (\n                  \"\"\n                )}\n                {this.state.open_ZChatfeedback_popup && (\n                  <FeedbackPopup\n                    data={this.state.zChatfeedbackData}\n                    setZchatFeedback={this.setZchatFeedback}\n                    conid={this.props.directline.conversationId}\n                    gid={this.props.gid}\n                    formSettings={this.props.formSettings}\n                    bearerToken={bearerToken}\n                  ></FeedbackPopup>\n                )}\n                {this.state.open_language_popup && (\n                  <div className=\"chat_box_popup_new\">\n                    <div\n                      className={`switch_language_popup ${this.state.open_language_popup ? \"area\" : \"closepop\"\n                        }`}\n                    >\n                      <div\n                        className={\n                          mobile == \"true\"\n                            ? `switch_language_popup_header chat_header_mobile`\n                            : `switch_language_popup_header`\n                        }\n                        style={{ backgroundColor: botSettings.colours.header }}\n                      >\n                        <div\n                          className=\"header_icon\"\n                          onClick={this.close_language_popup}\n                        >\n                          <svg\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                            width=\"24\"\n                            height=\"24\"\n                            viewBox=\"0 0 24 24\"\n                            fill=\"currentColor\"\n                          >\n                            <path d=\"M13.41,12l6.3-6.29a1,1,0,1,0-1.42-1.42L12,10.59,5.71,4.29A1,1,0,0,0,4.29,5.71L10.59,12l-6.3,6.29a1,1,0,0,0,0,1.42,1,1,0,0,0,1.42,0L12,13.41l6.29,6.3a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42Z\"></path>\n                          </svg>\n                        </div>\n                        <div\n                          className=\"header_text\"\n                          style={{ color: botSettings.colours.headerText }}\n                        >\n                          <IntlMessages id=\"switch.language\" />\n                        </div>\n                      </div>\n                      <div className=\"switch_language_popup_body\">\n                        <div\n                          className={`switch_language_popup_body ${mobile == \"true\"\n                            ? \"popup_items_mobile\"\n                            : \"popup_items\"\n                            }`}\n                        >\n                          {botSettings.multilingual\n                            ? this.state.languageOptions.map((elem, index) => {\n                              return (\n                                <button\n                                  className=\"popupmenu\"\n                                  onClick={() =>\n                                    this.handleChangeLanguage(elem.id, true)\n                                  }\n                                  key={index}\n                                >\n                                  <span className=\"text\">{elem.desc}</span>\n                                  {this.state.language === elem.id ? (\n                                    <svg\n                                      xmlns=\"http://www.w3.org/2000/svg\"\n                                      width=\"24\"\n                                      height=\"24\"\n                                      viewBox=\"0 0 24 24\"\n                                      fill=\"currentColor\"\n                                      style={{ color: \"#19af19\" }}\n                                    >\n                                      <path d=\"M18.71,7.21a1,1,0,0,0-1.42,0L9.84,14.67,6.71,11.53A1,1,0,1,0,5.29,13l3.84,3.84a1,1,0,0,0,1.42,0l8.16-8.16A1,1,0,0,0,18.71,7.21Z\"></path>\n                                    </svg>\n                                  ) : (\n                                    \"\"\n                                  )}\n                                </button>\n                              );\n                            })\n                            : this.state.languageOptions\n                              .filter((i) =>\n                                i.id.includes(this.state.language)\n                              )\n                              .map((elem, index) => {\n                                return (\n                                  <button className=\"popupmenu\" key={index}>\n                                    <span className=\"text\">{elem.desc}</span>\n                                    {this.state.language === elem.id ? (\n                                      <svg\n                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                        width=\"24\"\n                                        height=\"24\"\n                                        viewBox=\"0 0 24 24\"\n                                        fill=\"currentColor\"\n                                        style={{ color: \"#19af19\" }}\n                                      >\n                                        <path d=\"M18.71,7.21a1,1,0,0,0-1.42,0L9.84,14.67,6.71,11.53A1,1,0,1,0,5.29,13l3.84,3.84a1,1,0,0,0,1.42,0l8.16-8.16A1,1,0,0,0,18.71,7.21Z\"></path>\n                                      </svg>\n                                    ) : (\n                                      \"\"\n                                    )}\n                                  </button>\n                                );\n                              })}\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                )}\n                {this.state.open_property_popup && (\n                  <PropertyPopup\n                    close_property_popup={this.close_property_popup}\n                    open_property_popup={this.state.open_property_popup}\n                    pid={this.props.pid}\n                    close_pop={close_pop}\n                    room_app={room_app}\n                    bookingApp={bookingApp}\n                    botSettings={botSettings}\n                    isCheckedAvailability={this.props.isCheckedAvailability}\n                    hideRoomDetail={this.props.hideRoomDetail}\n                    mobile={mobile}\n                    GetServiceAvailable={this.GetServiceAvailable}\n                    property_state_store={this.props.property_state_store}\n                    setPropertyPopUp={this.props.setPropertyPopUp}\n                    loadFormSetting={this.props.loadFormSetting}\n                  ></PropertyPopup>\n                )}\n                {this.state.open_availblity_popup && (\n                  <CheckAvailablity\n                    api={this.props.api}\n                    data={this.state.availblityData}\n                    open_availblity_popup={this.state.open_availblity_popup}\n                    closeAvailblityForm={this.closeAvailblityForm}\n                    botSettings={botSettings}\n                    lang={this.state.language}\n                    addLinks={this.addLinks}\n                    gid={this.props.gid}\n                    pid={this.props.pid}\n                    buttonColor={this.props.messengerSettings.color}\n                  ></CheckAvailablity>\n                )}\n                {this.state.open_service_popup && (\n                  <ServicePopup\n                    mobile={mobile}\n                    open_service_popup={this.state.open_service_popup}\n                    close_serivce_popup={this.close_service_popup}\n                    pid={this.props.pid}\n                    gid={this.props.gid}\n                    conversation_id={this.props.directline.conversationId}\n                  ></ServicePopup>\n                )}\n                <div\n                  className=\"chat_box_popup_new\"\n                  id=\"feedback_popup\"\n                  style={{ display: \"none\" }}\n                >\n                  <ThumbFeedback\n                    handleFeedBackResponse={(e, name, phone, email, formId) =>\n                      this.handleFeedBackResponse(e, name, phone, email, formId)\n                    }\n                    handleCancelFeedbackResponse={() =>\n                      this.handleCancelFeedbackResponse()\n                    }\n                    locale={this.state.language}\n                    changeleaveFeedbackMessage={(e) =>\n                      this.setState({ leaveFeedbackMessage: e })\n                    }\n                    buttonColor={this.props.messengerSettings.color}\n                    pid={this.props.pid}\n                    gid={this.props.gid}\n                    bookingApp={this.props.bookingApp}\n                    bearerToken={bearerToken}\n                    conid={this.props.directline.conversationId}\n                    iid={this.props.iid}\n                    formSettings={this.props.formSettings}\n                  ></ThumbFeedback>\n                </div>\n                <div className=\"chat_main\">\n                  <div\n                    className=\"chat_popup_box\"\n                    style={{\n                      paddingTop: this.props.messenger === true ? \"0em\" : \"\",\n                    }}\n                  >\n                    {/* {confirm_cookies && this.props.messenger && cookiesData ? (\n                      <div\n                        className=\"chat_popup_bg\"\n                        style={{ zIndex: 7 }}\n                      >\n                        <div className=\"chat_popup_text\" style={{ width: \"85%\" }} >\n\n                          <div\n                            className=\"cookies-text\" >\n                            <span onClick={(e) => this.handleLinkClick(e)}>{ReactHtmlParser(cookiesData)}</span>\n\n                          </div>\n\n                        </div>\n                        <div\n                          className=\" mr-2 btn_popup\"\n                          onClick={this.cookies_understood}\n                        >\n                          {\" \"}\n                          &times;{\" \"}\n                        </div>\n                      </div>\n                    ) : (\n                      \"\"\n                    )} */}\n                    {this.state.isCookiesHide === false &&\n                      this.props.messenger &&\n                      cookiesData ? (\n                      <div className=\"chat_popup_bg\" style={{ zIndex: 7 }}>\n                        <div\n                          className=\"chat_popup_text\"\n                          style={{ width: \"85%\" }}\n                        >\n                          <div className=\"cookies-text\">\n                            <span onClick={(e) => this.handleLinkClick(e)}>\n                              {ReactHtmlParser(cookiesData)}\n                            </span>\n                          </div>\n                        </div>\n                        <div\n                          className=\"btn mr-2 btn_popup \"\n                          onClick={this.cookies_understood}\n                        >\n                          {\" \"}\n                          &times;{\" \"}\n                        </div>\n                      </div>\n                    ) : (\n                      \"\"\n                    )}\n                  </div>\n                  {this.state.isOpenModal ? (\n                    <div className=\"chat_popup_area\" onClick={this.closeModal}>\n                      <CookiePopup\n                        isOpen={this.state.isOpenModal}\n                        onClose={this.closeModal}\n                        content={this.state.modalContent}\n                      />\n                    </div>\n                  ) : (\n                    \"\"\n                  )}\n                </div>\n                {ask_bot_hide ? (\n                  <div\n                    className=\"chat_popup chat_popup_bar\"\n                    onClick={() => this.setState({ ask_bot_hide: false })}\n                    style={{ zIndex: 5, padding: \"0.5em\", display: \"block\" }}\n                  >\n                    <div className=\"chat_popup_body\">\n                      <div\n                        className=\"chat_popup_text text-center\"\n                        style={{ width: \"100%\" }}\n                      >\n                        {\" \"}\n                        <IntlMessages id=\"chat.hidebot.text\" />{\" \"}\n                      </div>\n                      <div\n                        className=\"btn btn-outline-success mr-2 mt-2 btn_popup\"\n                        onClick={this.close_bot_ask_hide}\n                      >\n                        {\" \"}\n                        <IntlMessages id=\"chat.minimize\" />{\" \"}\n                      </div>\n                      <div\n                        className=\"btn btn-outline-primary mr-2 mt-2 btn_popup\"\n                        onClick={this.hide_bot_confirm}\n                      >\n                        {\" \"}\n                        <IntlMessages id=\"chat.hide\" />{\" \"}\n                      </div>\n                      <div\n                        className=\"btn btn-outline-danger mr-2 mt-2 btn_popup\"\n                        onClick={this.end_clicked}\n                      >\n                        {\" \"}\n                        <IntlMessages id=\"chat.restart\" />{\" \"}\n                      </div>\n                    </div>\n                  </div>\n                ) : (\n                  \"\"\n                )}\n\n                <div\n                  className={`chat_box_outer${this.props.messenger ? \" pt-0\" : \"\"\n                    }`}\n                  style={{\n                    paddingBottom:\n                      this.props.gid ===\n                        \"df96582a-c1d2-4be7-abc5-af820013452c\" ||\n                        this.props.gid ===\n                        \"56431a33-0783-46e0-ab83-afb0016d3b58\" ||\n                        this.props.gid ===\n                        \"a7e06370-a3bc-43ef-ba88-afb100137eca\" ||\n                        this.props.gid ===\n                        \"3af8dc3a-2be5-456e-82b5-afc60145e4ad\" ||\n                        this.props.gid ===\n                        \"af402810-8902-473b-a487-b04301549dac\" ||\n                        this.props.gid ===\n                        \"4f042507-dc0c-4dfc-abe6-b07a01689612\" ||\n                        this.props.gid ===\n                        \"4d44c1aa-dc7c-415f-80e8-b08f0149ad66\" ||\n                        this.props.gid ===\n                        \"c1032caf-7739-4567-932d-b0b40050d671\" ||\n                        this.props.gid === \"87c8de62-cc9f-4c08-a6f5-b1b200479cfa\"\n                        ? \"31px\"\n                        : \"29px\",\n                  }}\n                >\n                  {botSettings.inactivePopUpWarning &&\n                    botSettings.inactivePopUpWarning.enabled === true &&\n                    inactivePopupOne && (\n                      <div\n                        className=\"chat_box_connection_error\"\n                        style={{ display: inactivePopupOne ? \"block\" : \"none\" }}\n                      >\n                        <div className=\"chat_box_connection_error_inner\">\n                          <span\n                            className=\"connection_error_icon\"\n                            role=\"img\"\n                            aria-label=\"Warning\"\n                          >\n                            {\" \"}\n                            ⚠️{\" \"}\n                          </span>{\" \"}\n                          <p />\n                          <span className=\"connection_error_text_small\">\n                            {this.state.language === \"en\" ? (\n                              botSettings.inactivePopUpWarning.message\n                            ) : (\n                              <Translate\n                                input={botSettings.inactivePopUpWarning.message}\n                                lang={this.state.language}\n                              />\n                            )}\n                          </span>{\" \"}\n                          <br />\n                          <div\n                            className=\"btn btn-outline-muted mt-4 connection_error_restart\"\n                            onClick={this.popupclose_confirmed}\n                          >\n                            {\" \"}\n                            {this.state.language === \"en\" ? (\n                              \"Close\"\n                            ) : (\n                              <Translate\n                                input={\"Close\"}\n                                lang={this.state.language}\n                              />\n                            )}{\" \"}\n                          </div>\n                        </div>\n                      </div>\n                    )}\n                  {botSettings.inactivePopUpSession &&\n                    botSettings.inactivePopUpSession.enabled === true &&\n                    inactivePopupTwo && (\n                      <div\n                        className=\"chat_box_connection_error\"\n                        style={{ display: inactivePopupTwo ? \"block\" : \"none\" }}\n                      >\n                        <div className=\"chat_box_connection_error_inner\">\n                          <span\n                            className=\"connection_error_icon\"\n                            role=\"img\"\n                            aria-label=\"Warning\"\n                          >\n                            {\" \"}\n                            ⚠️{\" \"}\n                          </span>{\" \"}\n                          <p />\n                          <span className=\"connection_error_text_small\">\n                            {this.state.language === \"en\" ? (\n                              botSettings.inactivePopUpSession.message\n                            ) : (\n                              <Translate\n                                input={botSettings.inactivePopUpSession.message}\n                                lang={this.state.language}\n                              />\n                            )}\n                          </span>{\" \"}\n                          <br />\n                          <div\n                            className=\"btn btn-outline-muted mt-4 connection_error_restart\"\n                            onClick={this.close_confirmed}\n                          >\n                            {\" \"}\n                            {this.state.language === \"en\" ? (\n                              \"Restart\"\n                            ) : (\n                              <Translate\n                                input={\"Restart\"}\n                                lang={this.state.language}\n                              />\n                            )}{\" \"}\n                          </div>\n                        </div>\n                      </div>\n                    )}\n                  <div\n                    className=\"chat_box_connection_error\"\n                    style={{ display: connectionError ? \"block\" : \"none\" }}\n                  >\n                    <div className=\"chat_box_connection_error_inner\">\n                      <span\n                        className=\"connection_error_icon\"\n                        role=\"img\"\n                        aria-label=\"Warning\"\n                      >\n                        {\" \"}\n                        ⚠️{\" \"}\n                      </span>{\" \"}\n                      <p />\n                      <span className=\"connection_error_text_small\">\n                        Your session has expired due to inactivity\n                      </span>{\" \"}\n                      <br />\n                      <div\n                        className=\"btn btn-outline-muted mt-4 connection_error_restart\"\n                        onClick={this.close_confirmed}\n                      >\n                        {\" \"}\n                        Restart{\" \"}\n                      </div>\n                    </div>\n                  </div>\n                  {/* {this.props.moveTop === true && (\n                    <div\n                      id=\"kt_scrolltop\"\n                      className=\"scrolltop\"\n                      onClick={() => this.movetotop()}\n                    >\n                      <span className=\"glyphicon glyphicon-chevron-up\"></span>\n                    </div>\n                  )} */}\n                  <div\n                    className={`chat_box ${this.props.customStyle}`}\n                    id=\"chat_box\"\n                  >\n                    {directline && !loadingLivechat ? (\n                      <ReactWebChat\n                        // sendTypingIndicator={true}\n                        locale={this.state.language}\n                        directLine={directline}\n                        googleAnalytics={\n                          this.state.googleAnalytics.utmSource !== undefined\n                            ? this.state.googleAnalytics\n                            : undefined\n                        }\n                        styleOptions={styleOptions}\n                        store={store}\n                        disabled={!inputEnabled}\n                        userID={user_id}\n                        typingIndicatorMiddleware={ChatWindowTypingIndicator}\n                        cardActionMiddleware={ChatWindowCardAction}\n                        attachmentMiddleware={AttachmentMiddleware(\n                          this.props.api,\n                          botSettings,\n                          directline,\n                          this.props.gid,\n                          this.props.iid,\n                          this.addLinks,\n                          this.availblityForm,\n                          this.OpenServicePopUp,\n                          this.props.inZenDesk,\n                          this.props.bookingApp,\n                          this.state.googleAnalytics.utmSource !== undefined\n                            ? this.state.googleAnalytics\n                            : undefined\n                        )}\n                      />\n                    ) : this.props.customStyle !== \"\" ? (\n                      <div id=\"spinner\" className=\"container\">\n                        <div className=\"loading\"></div>\n                      </div>\n                    ) : (\n                      <div className=\"chat_loading\"></div>\n                    )}\n                    {\n                      //@TODO automate extension management\n                      this.props.extensions[CHAT_SUGGESTION_EXT_ID] ? (\n                        <ChatSuggestionExtension\n                          suggestions={\n                            this.props.extensions[CHAT_SUGGESTION_EXT_ID]\n                          }\n                          api={this.props.extensions._api}\n                          styling={this.props.botSettings}\n                          opened={opened}\n                        />\n                      ) : (\n                        \"\"\n                      )\n                    }\n                    {\n                      //@TODO automate extension management\n                      this.props.extensions[CHAT_AUTOCOMPLETE_EXT_ID] ? (\n                        <AutoCompleteExtension\n                          suggestions={\n                            this.props.extensions[CHAT_AUTOCOMPLETE_EXT_ID]\n                          }\n                          api={this.props.extensions._api}\n                          styling={this.props.botSettings}\n                          opened={opened}\n                        />\n                      ) : (\n                        \"\"\n                      )\n                    }\n                    {this.props.extensions[WEB_VIEW_EXT_ID] ? (\n                      <WebViewExtension\n                        webview={this.props.extensions[WEB_VIEW_EXT_ID]}\n                        api={this.props.extensions._api}\n                        styling={this.props.botSettings}\n                        opened={opened}\n                        messenger={this.props.messenger}\n                      />\n                    ) : (\n                      \"\"\n                    )}\n                    {this.props.extensions[WEB_VIEW_EX_EXT_ID] ? (\n                      <WebViewExternalExtension\n                        webviewExt={this.props.extensions[WEB_VIEW_EX_EXT_ID]}\n                        api={this.props.extensions._api}\n                        styling={this.props.botSettings}\n                        opened={opened}\n                      />\n                    ) : (\n                      \"\"\n                    )}\n                  </div>{\" \"}\n                  {this.state.visitorPopupState === true &&\n                    botSettings.visitorPopup === true && (\n                      <div\n                        className=\"chat_box_visitor_details\"\n                        id=\"chat_box_visitor\"\n                      >\n                        <div\n                          className=\"chat_box_visitor_details_inner\"\n                          style={{ borderColor: botSettings.colours.botBot }}\n                        >\n                          {botSettings.visitorSettings !== null && (\n                            <Form onSubmit={(e) => this.save_visitor(e)}>\n                              <h4>\n                                {\" \"}\n                                {this.state.language === \"en\" ? (\n                                  botSettings.visitorSettings.title\n                                ) : (\n                                  <Translate\n                                    input={botSettings.visitorSettings.title}\n                                    lang={this.state.language}\n                                  />\n                                )}{\" \"}\n                              </h4>\n                              {this.state.language === \"en\" ? (\n                                ReactHtmlParser(\n                                  botSettings.visitorSettings.subTitle\n                                )\n                              ) : (\n                                <Translate\n                                  input={botSettings.visitorSettings.subTitle}\n                                  lang={this.state.language}\n                                />\n                              )}{\" \"}\n                              {botSettings.visitorSettings.fields.map(\n                                (elem, fIndex) => {\n                                  if (elem.field === \"Name\") {\n                                    return (\n                                      <Fragment key={fIndex}>\n                                        <FormGroup>\n                                          <Input\n                                            bsSize=\"sm\"\n                                            type=\"text\"\n                                            name=\"name\"\n                                            value={this.state.name}\n                                            placeholder={\"Name\"}\n                                            onChange={\n                                              this.handleVisitorNameChange\n                                            }\n                                            required={elem.mandatory}\n                                          ></Input>\n                                        </FormGroup>\n                                      </Fragment>\n                                    );\n                                  } else if (elem.field === \"FirstName\") {\n                                    return (\n                                      <Fragment key={fIndex}>\n                                        <FormGroup>\n                                          <Input\n                                            bsSize=\"sm\"\n                                            type=\"text\"\n                                            name=\"FirstName\"\n                                            value={this.state.firstName}\n                                            placeholder={\"First Name\"}\n                                            onChange={\n                                              this.hadleVisitorFirstNameChange\n                                            }\n                                            required={elem.mandatory}\n                                          ></Input>\n                                        </FormGroup>\n                                      </Fragment>\n                                    );\n                                  } else if (elem.field === \"LastName\") {\n                                    return (\n                                      <Fragment key={fIndex}>\n                                        <FormGroup>\n                                          <Input\n                                            bsSize=\"sm\"\n                                            type=\"text\"\n                                            name=\"lastName\"\n                                            value={this.state.lastName}\n                                            placeholder={\"Last Name\"}\n                                            onChange={\n                                              this.hadleVisitorLastNameChange\n                                            }\n                                            required={elem.mandatory}\n                                          ></Input>\n                                        </FormGroup>\n                                      </Fragment>\n                                    );\n                                  } else if (elem.field === \"Email\") {\n                                    return (\n                                      <Fragment key={fIndex}>\n                                        <FormGroup>\n                                          <Input\n                                            bsSize=\"sm\"\n                                            type=\"email\"\n                                            name=\"email\"\n                                            placeholder={\"Email\"}\n                                            value={this.state.email}\n                                            onChange={\n                                              this.handleVisitorEmailChange\n                                            }\n                                            required={elem.mandatory}\n                                          ></Input>\n                                        </FormGroup>\n                                      </Fragment>\n                                    );\n                                  } else if (elem.field === \"PhoneNumber\") {\n                                    return (\n                                      <Fragment key={fIndex}>\n                                        <FormGroup>\n                                          <Input\n                                            bsSize=\"sm\"\n                                            type=\"text\"\n                                            name=\"\"\n                                            placeholder={\"Phone Number\"}\n                                            value={this.state.phoneNumber}\n                                            onChange={\n                                              this.handleVisitorPhoneNumerChange\n                                            }\n                                            required={elem.mandatory}\n                                          ></Input>\n                                        </FormGroup>\n                                      </Fragment>\n                                    );\n                                  } else if (elem.field === \"ZipCode\") {\n                                    return (\n                                      <Fragment key={fIndex}>\n                                        <FormGroup>\n                                          <Input\n                                            bsSize=\"sm\"\n                                            type=\"number\"\n                                            name=\"zipCode\"\n                                            value={this.state.zipCode}\n                                            placeholder={\"Zip Code\"}\n                                            onChange={\n                                              this.hadleVisitorZipCodeChange\n                                            }\n                                            required={elem.mandatory}\n                                          ></Input>\n                                        </FormGroup>\n                                      </Fragment>\n                                    );\n                                  }\n                                }\n                              )}\n                              <FormGroup>\n                                <CustomInput\n                                  id=\"consent\"\n                                  type=\"checkbox\"\n                                  name=\"consentGiven\"\n                                  checked={this.state.consentGiven}\n                                  onChange={this.handleVisitorCheckBoxChange}\n                                  label={\n                                    botSettings.visitorSettings.checkboxText !==\n                                      null ? (\n                                      this.state.language === \"en\" ? (\n                                        ReactHtmlParser(\n                                          botSettings.visitorSettings\n                                            .checkboxText\n                                        )\n                                      ) : (\n                                        <Translate\n                                          input={\n                                            botSettings.visitorSettings\n                                              .checkboxText\n                                          }\n                                          lang={this.state.language}\n                                        />\n                                      )\n                                    ) : this.state.language === \"en\" ? (\n                                      \"I want to receive offers or promotions from the hotel by email or text messages.\"\n                                    ) : (\n                                      <Translate\n                                        input={\n                                          \"I want to receive offers or promotions from the hotel by email or text messages.\"\n                                        }\n                                        lang={this.state.language}\n                                      />\n                                    )\n                                  }\n                                ></CustomInput>\n                              </FormGroup>\n                              <Button\n                                style={{\n                                  backgroundColor: botSettings.colours.botBot,\n                                  color: botSettings.colours.botBotText,\n                                }}\n                                disabled={this.state.isButtonDisable}\n                              >\n                                <Fragment>\n                                  <svg\n                                    className=\"\"\n                                    height=\"28\"\n                                    viewBox=\"0 0 45.7 33.8\"\n                                    width=\"28\"\n                                  >\n                                    <path\n                                      clipRule=\"evenodd\"\n                                      d=\"M8.55 25.25l21.67-7.25H11zm2.41-9.47h19.26l-21.67-7.23zm-6 13l4-11.9L5 5l35.7 11.9z\"\n                                    ></path>\n                                  </svg>\n                                  {this.state.language === \"en\" ? (\n                                    botSettings.visitorSettings.buttonText\n                                  ) : (\n                                    <Translate\n                                      input={\n                                        botSettings.visitorSettings.buttonText\n                                      }\n                                      lang={this.state.language}\n                                    />\n                                  )}\n                                </Fragment>\n                              </Button>\n                            </Form>\n                          )}\n                        </div>\n                      </div>\n                    )}\n                </div>\n                {this.props.customStyle === \"\" ? (\n                  <div\n                    className={\n                      mobile == \"true\"\n                        ? `chat_footer chat_footer_mobile${this.props.messenger ? \" chat_footer_msg\" : \"\"\n                        }`\n                        : `chat_footer ${this.props.resize === true ? \" resize-footer\" : \"\"\n                        } ${this.props.messenger ? \" chat_footer_msg\" : \"\"}`\n                    }\n                    style={{\n                      backgroundColor: botSettings.colours.botBackground,\n                      color: styleOptions.timestampColor,\n                    }}\n                  >\n                    {this.props.messenger ? (\n                      <Fragment>\n                        {this.props.messengerSettings &&\n                          this.props.messengerSettings.isFooterHide ===\n                          false && (\n                            <div  className=\"poweredby\">\n                            {!(this.props.groupData && this.props.groupData?.group?.poweredByLogo) ?\n                               <div\n                               className=\"poweredby\"\n                               onClick={() =>\n                                 this.bob_site(\n                                   \"https://www.myma.ai/?utm_source=messenger&utm_medium=branding&utm_campaign=clicks\"\n                                 )\n                               }\n                             >\n                               <span>\n                                 <img src={myma_logosrc} width={120}></img>\n                               </span>\n                             </div>\n                              : (\n                                  <a   href={this.props.groupData?.group?.poweredByURL} target=\"_blank\">\n                                      <img \n                                          src={this.props.groupData?.group?.poweredByLogo}\n                                          style={{ width: \"120px\" }}\n                                          alt=\"Myma Logo\"\n                                      />\n                                  </a>\n\n                              )}\n                           \n                            </div>\n                          )}\n                      </Fragment>\n                    ) : (\n                      <div  className=\"poweredby\">\n                      {!(this.props.groupData && this.props.groupData?.group?.poweredByLogo) ?\n                         \n                         <div\n                         className=\"poweredby\"\n                         onClick={() =>\n                           this.bob_site(\n                             \"https://www.myma.ai/?utm_source=messenger&utm_medium=branding&utm_campaign=clicks\"\n                           )\n                         }\n                       >\n                        {\" \"}\n                        {this.props.gid !==\n                          \"df96582a-c1d2-4be7-abc5-af820013452c\" &&\n                          this.props.gid !==\n                          \"56431a33-0783-46e0-ab83-afb0016d3b58\" &&\n                          this.props.gid !==\n                          \"a7e06370-a3bc-43ef-ba88-afb100137eca\" &&\n                          this.props.gid !==\n                          \"3af8dc3a-2be5-456e-82b5-afc60145e4ad\" &&\n                          this.props.gid !==\n                          \"af402810-8902-473b-a487-b04301549dac\" &&\n                          this.props.gid !==\n                          \"4f042507-dc0c-4dfc-abe6-b07a01689612\" &&\n                          this.props.gid !==\n                          \"4d44c1aa-dc7c-415f-80e8-b08f0149ad66\" &&\n                          this.props.gid !==\n                          \"c1032caf-7739-4567-932d-b0b40050d671\" &&\n                          this.props.gid !==\n                          \"0611e452-5776-41dd-8f9a-b12d003f5172\" &&\n                          this.props.gid !==\n                          \"87c8de62-cc9f-4c08-a6f5-b1b200479cfa\" &&\n                          this.props.gid !==\n                          \"0e6ce08b-0d8f-4853-a131-b28300b87b5d\" && (\n                            <Fragment>\n                              {/* <span\n                                className=\"empoweredText\"\n                                style={{\n                                  fontSize: \"8px\",\n                                  verticalAlign: \"sub\",\n                                  color: \"blue\",\n                                }}\n                              >\n                                Empowered by\n                              </span>{\" \"} */}\n\n                              <img src={myma_logosrc} width={120}></img>\n                            </Fragment>\n                          )}\n                            <span\n                          style={{ fontSize: \"10px\", verticalAlign: \"sub\" }}\n                        >\n                          {(this.props.gid ===\n                            \"df96582a-c1d2-4be7-abc5-af820013452c\" ||\n                            this.props.gid ===\n                            \"56431a33-0783-46e0-ab83-afb0016d3b58\" ||\n                            this.props.gid ===\n                            \"a7e06370-a3bc-43ef-ba88-afb100137eca\" ||\n                            this.props.gid ===\n                            \"3af8dc3a-2be5-456e-82b5-afc60145e4ad\" ||\n                            this.props.gid ===\n                            \"af402810-8902-473b-a487-b04301549dac\" ||\n                            this.props.gid ===\n                            \"4f042507-dc0c-4dfc-abe6-b07a01689612\" ||\n                            this.props.gid ===\n                            \"4d44c1aa-dc7c-415f-80e8-b08f0149ad66\" ||\n                            this.props.gid ===\n                            \"c1032caf-7739-4567-932d-b0b40050d671\" ||\n                            this.props.gid ===\n                            \"87c8de62-cc9f-4c08-a6f5-b1b200479cfa\" ||\n                            this.props.gid ===\n                            \"0611e452-5776-41dd-8f9a-b12d003f5172\" ||\n                            this.props.gid ===\n                            \"0e6ce08b-0d8f-4853-a131-b28300b87b5d\") && (\n                              <Fragment>\n                                {botSettings.text.webPoweredBy1}{\" \"}\n                                <img\n                                  src=\"/res/hospitality_host.png\"\n                                  width={65}\n                                ></img>\n                              </Fragment>\n                            )}{\" \"}\n                        </span>\n                      </div>\n                        : (\n                            <a href={this.props.groupData?.group?.poweredByURL} target=\"_blank\">\n                                <img   \n                                    src={this.props.groupData?.group?.poweredByLogo}\n                                    style={{ width: \"120px\" }}\n                                    alt=\"Myma Logo\"\n                                />\n                            </a>\n\n                        )}\n                     \n                      </div>\n                  \n                      \n                    )}\n                  </div>\n                ) : null}\n              </>\n            ) : this.props.customStyle !== \"\" ? (\n              <div id=\"spinner\" className=\"container\">\n                <div className=\"loading\"></div>\n              </div>\n            ) : (\n              <div className=\"chat_loading\"></div>\n            )}\n          </div>{\" \"}\n        </Fragment>\n      </IntlProvider>\n    );\n  }\n}\n","import React, { Component, Fragment, useState, useEffect } from \"react\";\nimport ReactHtmlParser from \"react-html-parser\";\nimport \"./SildeBubble.css\";\nimport \"../bootstrap.min.css\";\n\nexport default function SildeBubble({\n    onOpened, hintClosed, currentNudge, fadeIn, botSettings, position, mobile, disabledChatbot\n}) {\n    const [iseffect,setIsEffect]=useState(true);\n    const [hover, setHover] = useState(false);\n    const [nudgeavtar, setNudgeAvtar] = useState(false);\n    /**\n  * Posts a message to the parent window, if this window has one\n  * @param {*} msg\n  */\n    const postMessage = (msg) => {\n        if (window.parent) {\n            window.parent.postMessage(msg, \"*\");\n        }\n    }\n    useEffect(() => {\n        if(iseffect)\n        {\n            window.addEventListener(\n                \"message\",\n                windowBuddbleMessage,\n                false\n            );\n            if (\n                botSettings.bubbleSettings !== undefined &&\n                botSettings.bubbleSettings !== null\n            ) {\n                //Post Message to set the Alignment of bubble iframe\n                if (\n                    botSettings.bubbleSettings.bubblePosition !== undefined &&\n                    botSettings.bubbleSettings.bubblePosition !== null\n                ) {\n                    const bubblePosition =\n                        botSettings.bubbleSettings.bubblePosition;\n                    postMessage(\n                        `chatbotalign:${bubblePosition.align}|side:${bubblePosition.side}|bottom:${bubblePosition.bottom}|top:350`\n                    );\n                }\n                //Post Message to set the animation settings iframe\n                if (\n                    botSettings.bubbleSettings.scrollAnimation !== undefined &&\n                    botSettings.bubbleSettings.scrollAnimation !== null\n                ) {\n                    const scrollAnimation =\n                        botSettings.bubbleSettings.scrollAnimation;\n                    if (scrollAnimation.enabled === true) {\n                        postMessage(\n                            `chatbotscrollanimation|${scrollAnimation.beforeAnimationTop}|${scrollAnimation.afterAnimationTop}`\n                        );\n                    }\n                }\n            } else {\n                postMessage(`chatbotremoveposition`);\n            }\n            setIsEffect(false);\n        }\n       \n    }, [botSettings])\n\n    const windowBuddbleMessage = (event) => {\n        if (\n            typeof event.data === \"string\" &&\n            event.data.startsWith(\"nudgepopup:\")\n        ) {\n            setNudgeAvtar(true);\n        }\n    }\n    const nudgeavtar_clicked = () => {\n        setNudgeAvtar(false);\n        postMessage(`nudgeminimized`);\n    }\n    const bubble_clicked = () => {\n        onOpened();\n    }\n\n    const nudge_clicked = () => {\n        onOpened();\n    }\n\n    const hint_close = (e) => {\n        e.stopPropagation();\n        hintClosed();\n    }\n\n    const handleMouseEnter = () => {\n        setHover(true);\n    };\n    const handleMouseLeave = () => {\n        setHover(false);\n    };\n    return !disabledChatbot ? \n    !nudgeavtar ?(\n            <Fragment>\n                <div onClick={bubble_clicked}>\n                    <div className=\"silde-bubble\">\n                        <div dir=\"auto\" className=\"silde-bubble-textarea\" method=\"textContainer\">\n                            <span className=\"bubbletext\" method=\"textContent\">\n                                <span className=\"glyphicon glyphicon-comment\"></span> Message</span>\n                        </div>\n                    </div>\n                </div>\n            </Fragment>\n    ):null : null;\n}","import { createStore } from \"botframework-webchat\";\nimport { WEB_VIEW_EXT_ID } from \"./Extensions/WebViewExtension/WebViewExtension\";\nimport { WEB_VIEW_EX_EXT_ID } from \"./Extensions/WebViewExternalExtension/WebViewExternalExtension\";\nimport { CHAT_SUGGESTION_EXT_ID } from \"./Extensions/ChatSuggestionExtension/ChatSuggestionExtension\";\nimport { CHAT_AUTOCOMPLETE_EXT_ID } from \"./Extensions/AutoCompleteExtension/AutoCompleteExtension\";\nimport { un } from \"zendesk-chat-sdk\";\nconst BMB_LOG_URL = process.env.REACT_APP_API_URL + \"/saveMessage\";\nconst BMB_ROOMTYPE_URL = process.env.REACT_APP_API_URL + \"/properties\";\nconst BMB_Property_URL = process.env.REACT_APP_API_URL + \"/property\";\nconst BMB_Conversation_URL = process.env.REACT_APP_API_URL + \"/conversation\";\nconst BMB_AutoComplete_URL = process.env.REACT_APP_API_URL + \"/chatsuggestions\";\n/**\n * Activity from Microsoft Directline\n */\nfunction incomingActivity(dispatch, next, action, callbacks) {\n  callbacks.enableChat(); // Enables the input box, effective when the first message from the bot arrives\n  callbacks.setExtension(CHAT_AUTOCOMPLETE_EXT_ID, undefined);\n  callbacks.scrollChat();\n  var dl = callbacks.getChatState().directline;\n  if (\n    isRecentActivity(action) &&\n    action.payload &&\n    action.payload.activity &&\n    action.payload.activity.channelData\n  ) {\n    // Suggestion UI\n    if (action.payload.activity.channelData.suggestionUi) {\n      action.payload.activity.suggestedActions = []; // hide dafault suggestion style\n      let suggestionsPayload = action.payload.activity.channelData.suggestionUi;\n      suggestionsPayload.time = Date.now();\n      suggestionsPayload.question = action.payload.activity.text;\n      callbacks.setExtension(CHAT_SUGGESTION_EXT_ID, suggestionsPayload);\n    } else if (action.payload.activity.channelData.liveChat) {\n      if (action.payload.activity.channelData.liveChat.provider === \"zendesk\") {\n        callbacks.startZenDeskChat();\n      } else if (\n        action.payload.activity.channelData.liveChat.provider ===\n        \"genesys_cloud\"\n      ) {\n        callbacks.startGenesysPureCloudChat();\n      } else if (\n        action.payload.activity.channelData.liveChat.provider === \"mews\"\n      ) {\n        callbacks.startMewsChat(\n          action.payload.activity.channelData.liveChat?.threadData\n        );\n      } else if (\n        action.payload.activity.channelData.liveChat.provider === \"aws_connect\"\n      ) {\n        callbacks.startAWSConnectChat();\n      }\n    }\n    // Web View\n    if (action.payload.activity.channelData.webView) {\n      let webviewPayload = action.payload.activity.channelData.webView;\n      if (webviewPayload.title === \"Open Login\") {\n        window.parent.postMessage(`openWindowUrl:${webviewPayload.url}`, \"*\");\n      }\n      if (webviewPayload.title === \"Open Register\") {\n        window.parent.postMessage(`openUrl:${webviewPayload.url}`, \"*\");\n      } else if (webviewPayload.title === \"Close Login\") {\n        window.parent.postMessage(`closeWindowUrl:${webviewPayload.url}`, \"*\");\n      } else if (webviewPayload.title === \"Booking Url\") {\n        if (window.parent) {\n          window.parent.postMessage(`openUrl:${webviewPayload.url}`, \"*\");\n        } else {\n          window.location = webviewPayload.url;\n        }\n      } else if (webviewPayload.title === \"Availability\") {\n        callbacks.setAvailblity(webviewPayload.availabilityData);\n      } else if (webviewPayload.title === \"LocationPopUp\") {\n        callbacks.setPropertyPopUp(true);\n      } else if (webviewPayload.title === \"New Lang Detect\") {\n        callbacks.ChangeBotLanguage(webviewPayload.url, true);\n      } else {\n        if (\n          webviewPayload.title !== \"Open Register\" &&\n          webviewPayload.title !== \"Open Login\"\n        ) {\n          if (\n            webviewPayload.token !== undefined &&\n            webviewPayload.token !== null &&\n            webviewPayload.token !== \"\"\n          ) {\n            const tokenInterval = setInterval(() => {\n              if (\n                document.getElementById(\"webviewframe\") !== undefined &&\n                document.getElementById(\"webviewframe\") !== null\n              ) {\n                document\n                  .getElementById(\"webviewframe\")\n                  .contentWindow.postMessage(\n                    `tokenUpdateWebview:${webviewPayload.token}`,\n                    \"*\"\n                  );\n                clearInterval(tokenInterval);\n              }\n            }, 2000);\n          }\n\n          if (webviewPayload.largeWindow) {\n            callbacks.setExtension(WEB_VIEW_EX_EXT_ID, webviewPayload);\n          } else {\n            callbacks.setExtension(WEB_VIEW_EXT_ID, webviewPayload);\n          }\n        }\n      }\n    }\n  }\n\n  if (\n    isRecentActivity(action) &&\n    action.payload &&\n    action.payload.activity &&\n    action.payload.activity.suggestedActions\n  ) {\n    if (action.payload.activity.inputHint === \"Recommender\") {\n      callbacks.hideTypingTextBox();\n    }\n  } else if (\n    isRecentActivity(action) &&\n    action.payload &&\n    action.payload.activity &&\n    action.payload.activity.type &&\n    action.payload.activity.type === \"message\" &&\n    action.payload.activity.from.role === \"bot\"\n  ) {\n    callbacks.showTypingTextBox();\n  }\n\n  if (\n    action.payload &&\n    action.payload.activity &&\n    action.payload.activity.text &&\n    action.payload.activity.text.startsWith(\"Transferring you to a human\")\n  ) {\n    if (!callbacks.getChatState().livechat) {\n      callbacks.startLivechat();\n    }\n  } else if (\n    action.payload &&\n    action.payload.activity &&\n    action.payload.activity.text &&\n    action.payload.activity.text === dl.conversationId &&\n    action.payload.activity.name === undefined\n  ) {\n    if (!callbacks.getChatState().twiliochat) {\n      callbacks.startTwiliochat(\n        dl.conversationId,\n        action.payload.activity.from.id\n      );\n    }\n  } else if (\n    action.payload &&\n    action.payload.activity &&\n    action.payload.activity.text &&\n    action.payload.activity.text === dl.conversationId &&\n    action.payload.activity.name &&\n    action.payload.activity.name === \"signalRConversation\"\n  ) {\n    if (!callbacks.getChatState().signalrchat) {\n      callbacks.startSignalRchat(\n        dl.conversationId,\n        action.payload.activity.from.id\n      );\n    }\n  } else if (\n    action.payload &&\n    action.payload.activity &&\n    action.payload.activity.text &&\n    action.payload.activity.text.startsWith(\"Agent\") &&\n    action.payload.activity.text.indexOf(\"has joined\") > 0\n  ) {\n    callbacks.setAgentId(action.payload.activity.from.id);\n    bmbLogMessage(action.payload.activity.text, \"Visitor\", callbacks);\n  } else if (\n    action.payload &&\n    action.payload.activity &&\n    action.payload.activity.text &&\n    action.payload.activity.text.startsWith(\"Agent\") &&\n    action.payload.activity.text.indexOf(\"left the conversation\") > 0\n  ) {\n    if (callbacks.isInTwiliochat() === true) {\n      callbacks.endTwilio();\n    } else if (callbacks.isInSignalRchat() === true) {\n      callbacks.endSignalRChat();\n    }\n  } else if (\n    action.payload &&\n    action.payload.activity &&\n    action.payload.activity.text &&\n    action.payload.activity.text.startsWith(\"Ok, I’ll show you our rooms12\")\n  ) {\n    var propertyId = callbacks.getPID();\n    if (propertyId === undefined || propertyId === \"\") {\n      var property = localStorage.getItem(\n        callbacks.getChatState().lStore.PROPERTYID\n      );\n      if (property !== undefined && property != null) {\n        propertyId = property;\n      }\n    }\n\n    fetch(BMB_ROOMTYPE_URL + \"/\" + propertyId + \"/rooms\", {\n      method: \"GET\",\n      headers: {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/json\",\n      },\n    })\n      .then((response) => response.json())\n      .then((json) => {\n        callbacks.getRoomTypes(json.rooms);\n        callbacks.showBookingForm(false, false);\n      });\n  } else if (callbacks.getChatState().getRoomTypes) {\n    if (\n      action.payload &&\n      action.payload.activity &&\n      action.payload.activity.text &&\n      action.payload.activity.text.startsWith(\"I can answer your questions\")\n    ) {\n      var propertyId = callbacks.getPID();\n      if (propertyId === undefined || propertyId === \"\") {\n        var property = localStorage.getItem(\n          callbacks.getChatState().lStore.PROPERTYID\n        );\n        if (property !== undefined && property != null) {\n          propertyId = property;\n        }\n      }\n      fetch(BMB_ROOMTYPE_URL + \"/\" + propertyId + \"/rooms\", {\n        method: \"GET\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n      })\n        .then((response) => response.json())\n        .then((json) => callbacks.getRoomTypes(json.rooms));\n    } else if (\n      action.payload &&\n      action.payload.activity &&\n      action.payload.activity.text &&\n      action.payload.activity.text.startsWith(\n        \"Ok, Please fill the information to check availability\"\n      )\n    ) {\n      var propertyId = callbacks.getPID();\n      if (propertyId === undefined || propertyId === \"\") {\n        var property = localStorage.getItem(\n          callbacks.getChatState().lStore.PROPERTYID\n        );\n        if (property !== undefined && property != null) {\n          propertyId = property;\n        }\n      }\n\n      fetch(\n        BMB_Property_URL +\n          \"/\" +\n          propertyId +\n          \"?groupId=\" +\n          callbacks.getGID() +\n          \"\",\n        {\n          method: \"GET\",\n          headers: {\n            Accept: \"application/json\",\n            \"Content-Type\": \"application/json\",\n          },\n        }\n      )\n        .then((response) => response.json())\n        .then((json) => {\n          if (\n            json.property.ari.applicable === \"Y\" &&\n            json.property.ari.type === \"URL\"\n          ) {\n            //Show Room Details\n            fetch(BMB_ROOMTYPE_URL + \"/\" + propertyId + \"/rooms\", {\n              method: \"GET\",\n              headers: {\n                Accept: \"application/json\",\n                \"Content-Type\": \"application/json\",\n              },\n            })\n              .then((response) => response.json())\n              .then((roomdata) => callbacks.getRoomTypes(roomdata.rooms));\n          } else if (\n            json.property.ari.applicable === \"Y\" &&\n            json.property.ari.type === \"CHATUI\"\n          ) {\n            //Show Availablity Popup\n            callbacks.showBookingForm(true, true);\n            callbacks.getRoomTypes([]);\n          }\n        });\n    }\n  } else if (\n    action.payload &&\n    action.payload.activity &&\n    action.payload.activity.text &&\n    action.payload.activity.text.startsWith(\n      \"Ok, Please fill the information to check availability\"\n    )\n  ) {\n    var propertyId = callbacks.getPID();\n    if (propertyId === undefined || propertyId === \"\") {\n      var property = localStorage.getItem(\n        callbacks.getChatState().lStore.PROPERTYID\n      );\n      if (property !== undefined && property != null) {\n        propertyId = property;\n      }\n    }\n\n    fetch(\n      BMB_Property_URL +\n        \"/\" +\n        propertyId +\n        \"?groupId=\" +\n        callbacks.getGID() +\n        \"\",\n      {\n        method: \"GET\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n      }\n    )\n      .then((response) => response.json())\n      .then((json) => {\n        if (\n          json.property.ari.applicable === \"Y\" &&\n          json.property.ari.type === \"URL\"\n        ) {\n          //Show Room Details\n          fetch(BMB_ROOMTYPE_URL + \"/\" + propertyId + \"/rooms\", {\n            method: \"GET\",\n            headers: {\n              Accept: \"application/json\",\n              \"Content-Type\": \"application/json\",\n            },\n          })\n            .then((response) => response.json())\n            .then((roomdata) => callbacks.getRoomTypes(roomdata.rooms));\n        } else if (\n          json.property.ari.applicable === \"Y\" &&\n          json.property.ari.type === \"CHATUI\"\n        ) {\n          //Show Availablity Popup\n          callbacks.showBookingForm(true, true);\n          callbacks.getRoomTypes([]);\n        }\n      });\n  }\n\n  if (\n    action.payload &&\n    action.payload.activity &&\n    action.payload.activity.attachments\n  ) {\n    filterAttachments(dispatch, action.payload.activity, callbacks);\n  }\n\n  if (\n    isRecentActivity(action) &&\n    callbacks.isInGenesysPureCloudChat() === true\n  ) {\n    if (\n      action.payload &&\n      action.payload.activity &&\n      action.payload.activity.text\n    ) {\n      var msg = action.payload.activity.text;\n      bmbLogMessage(msg, \"Agent\", callbacks);\n    }\n  }\n\n  if (isRecentActivity(action) && callbacks.isInMewsChat() === true) {\n    if (\n      action.payload &&\n      action.payload.activity &&\n      action.payload.activity.text\n    ) {\n      var msg = action.payload.activity.text;\n      bmbLogMessage(msg, \"Agent\", callbacks);\n    }\n  }\n\n  return next(action);\n}\n\nfunction isRecentActivity(action) {\n  if (\n    !(\n      action.payload &&\n      action.payload.activity &&\n      action.payload.activity.timestamp\n    )\n  ) {\n    return false;\n  }\n\n  let time = new Date(action.payload.activity.timestamp);\n  return Date.now() - time.valueOf() < 6000;\n}\n\n/**\n * Manages custom handling of attachments for new activities\n */\nfunction filterAttachments(dispatch, activity, callbacks) {\n  if (Date.now() - Date.parse(activity.timestamp) > 10000) {\n    return; // Assume anything sent >10s ago is stale (e.g. reloaded when app opened)\n  }\n  //ffaaa\n  for (var i = 0; i < activity.attachments.length; i++) {\n    let attachment = activity.attachments[i];\n    let remove = false;\n    switch (attachment.contentType) {\n      case \"ako.bob.payment\":\n        attachment.content.handled = true;\n        remove = true;\n        callbacks.makePayment(attachment.content, () => {\n          dispatch({\n            type: \"WEB_CHAT/SEND_MESSAGE\",\n            payload: {\n              name: \"ako/sentpayment\",\n              text: \"Test\",\n            },\n          });\n        });\n        break;\n      default:\n        break;\n    }\n\n    if (remove) {\n      activity.attachments.splice(i, 1);\n      i--;\n    }\n  }\n}\n\n/**\n * Activity going back channel Events, normally to Microsoft Directline but this method may not redirect for WebView\n */\nfunction outgoingBackChannelEvents(dispatch, next, action, callbacks) {\n  //console.log(\"action.payload.name\", action.payload.name);\n  if (action.payload.name === \"webchat/openWebView\") {\n    var payload = {\n      url: action.payload.value.url,\n      title: action.payload.value.title,\n      mode: action.payload.value.mode,\n      largeWindowHideHeader: action.payload.value.largeWindowHideHeader,\n    };\n    payload.largeWindow = true;\n    callbacks.setExtension(WEB_VIEW_EX_EXT_ID, payload);\n    return;\n  }\n  if (action.payload.name === \"webchat/booking\") {\n    var dl = callbacks.getChatState().directline;\n    var activity = {\n      channelId: \"directline\",\n      conversation: { id: dl.conversationId },\n      from: { id: callbacks.getChatState().user_id, name: \"\", role: \"user\" },\n      id: `${Math.random()}`,\n      text: action.payload.value.msg,\n      timestamp: new Date().toISOString(),\n      type: \"message\",\n    };\n    bmbLogMessageBot(\"Booking\", action.payload.value.msg, \"Visitor\", callbacks);\n\n    //return next({ payload: { activity }, type: \"DIRECT_LINE/INCOMING_ACTIVITY\" });\n    return;\n  } else {\n    return next(action);\n  }\n}\n\n// Some activities should be modified when they are reloaded from storage\n// (this gives them different behaviour than when sent in the first place)\nfunction processStoredActivities(stored) {\n  for (let activity of stored.activities) {\n    if (activity.attachments) {\n      for (let attachment of activity.attachments) {\n        if (attachment.contentType === \"ako/file-upload-prompt\") {\n          attachment.content.used = true;\n        }\n      }\n    }\n  }\n}\n\nfunction setSuggestedActions(dispatch, next, action, callbacks) {\n  if (\n    !action.payload.suggestedActions ||\n    action.payload.suggestedActions.length < 1\n  ) {\n    return next(action);\n  }\n\n  setTimeout(() => next(action), 500);\n}\n\nfunction AgentCheck(status, callbacks, eventName, dispatch) {\n  var gid = callbacks.getGID();\n  var conversationId = callbacks.getDirectLineConversation();\n  return fetch(\n    BMB_Conversation_URL + \"/\" + conversationId + \"?groupId=\" + gid + \"\",\n    {\n      method: \"GET\",\n      headers: {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/json\",\n      },\n    }\n  )\n    .then((response) => response.json())\n    .then((json) => {\n      if (json !== undefined) {\n        if (\n          json.conversation.agentStatus === status ||\n          json.conversation.agentStatus === \"None\"\n        ) {\n          dispatchAgentOnlineEvents(dispatch, eventName);\n          return false;\n        } else {\n          return true;\n        }\n      } else {\n        dispatchAgentOnlineEvents(dispatch, eventName);\n        return false;\n      }\n    });\n}\n\n/**\n * Activity going outwards, normally to Microsoft Directline but this method may redirect to livechat\n */\nfunction outgoingActivity(dispatch, next, action, callbacks) {\n  callbacks.hideTextCount();\n  callbacks.setExtension(CHAT_AUTOCOMPLETE_EXT_ID, undefined);\n\n  // If livechat enabled, route user messages into incoming activities so they get displayed, do not continue this action\n  const botSettings = callbacks.getBotSettings();\n\n  if (\n    botSettings.inactivePopUpWarning &&\n    botSettings.inactivePopUpWarning.enabled === true\n  ) {\n    clearTimeout(intervalOne);\n    intervalOne = setTimeout(() => {\n      // Notify bot the user has been inactive\n      callbacks.setInactivePopupOne();\n    }, parseFloat(botSettings.inactivePopUpWarning.seconds) * 1000);\n  }\n\n  if (\n    botSettings.inactivePopUpSession &&\n    botSettings.inactivePopUpSession.enabled === true\n  ) {\n    clearTimeout(intervalTwo);\n    intervalTwo = setTimeout(() => {\n      // Notify bot the user has been inactive\n      callbacks.setInactivePopupTwo();\n    }, parseFloat(botSettings.inactivePopUpSession.seconds) * 1000);\n  }\n\n  if (window.parent) {\n    window.parent.postMessage(\"chatStarted\", \"*\");\n  }\n  if (action.payload.text === \"Human Chat\") {\n    const liveChatSetings = callbacks.getLiveChatSettings();\n    if (liveChatSetings !== undefined && liveChatSetings.provider == \"0\") {\n      const noAgentOnline = setTimeout(() => {\n        clearTimeout(noAgentOnline);\n        AgentCheck(\"RequestSent\", callbacks, \"no_agent_online\", dispatch).then(\n          (m) => {\n            if (m) {\n              const AgentOnline = setTimeout(() => {\n                clearTimeout(AgentOnline);\n                AgentCheck(\n                  \"RequestReceived\",\n                  callbacks,\n                  \"agent_online_not_accepted\",\n                  dispatch\n                ).then((n) => {\n                  if (!n) {\n                    const AgentOnlineNext = setTimeout(() => {\n                      clearTimeout(AgentOnlineNext);\n                      AgentCheck(\n                        \"RequestReceived\",\n                        callbacks,\n                        \"agent_online_busy\",\n                        dispatch\n                      );\n                    }, 60 * 1000);\n                  }\n                });\n              }, 20 * 1000);\n            }\n          }\n        );\n      }, 10 * 1000);\n    }\n  }\n\n  if (callbacks.isInLivechat() === true) {\n    var dl = callbacks.getChatState().directline;\n\n    var activity = {\n      channelId: \"directline\",\n      conversation: { id: dl.conversationId },\n      from: { id: callbacks.getChatState().user_id, name: \"\", role: \"user\" },\n      id: `${Math.random()}`,\n      text: action.payload.text,\n      timestamp: new Date().toISOString(),\n      type: \"message\",\n    };\n\n    // Log msg\n    bmbLogMessage(action.payload.text, \"Visitor\", callbacks);\n\n    callbacks.getChatState().livechat.sendMessage({\n      text: action.payload.text,\n      customId: String(Math.random()),\n    });\n\n    return next({\n      payload: { activity },\n      type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n    });\n  } else if (callbacks.isInTwiliochat() === true) {\n    var dl = callbacks.getChatState().directline;\n    //console.log(dl)\n    var activity = {\n      channelId: \"directline\",\n      conversation: { id: dl.conversationId },\n      from: { id: callbacks.getChatState().user_id, name: \"\", role: \"user\" },\n      id: `${Math.random()}`,\n      text: action.payload.text,\n      timestamp: new Date().toISOString(),\n      type: \"message\",\n    };\n\n    // Log msg\n    bmbLogMessage(action.payload.text, \"Visitor\", callbacks);\n    callbacks.getChatState().twiliochat.sendMessage(action.payload.text);\n\n    return next({\n      payload: { activity },\n      type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n    });\n  } else if (callbacks.isInZendeskChat() === true) {\n    var dl = callbacks.getChatState().directline;\n    //console.log(dl)\n    var activity = {\n      channelId: \"directline\",\n      conversation: { id: dl.conversationId },\n      from: { id: callbacks.getChatState().user_id, name: \"\", role: \"user\" },\n      id: `${Math.random()}`,\n      text: action.payload.text,\n      timestamp: new Date().toISOString(),\n      type: \"message\",\n    };\n\n    // Log msg\n    bmbLogMessage(action.payload.text, \"Visitor\", callbacks);\n    callbacks.getChatState().zendesk.sendChatMsg(action.payload.text);\n\n    return next({\n      payload: { activity },\n      type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n    });\n  } else if (callbacks.isInSignalRchat() === true) {\n    var dl = callbacks.getChatState().directline;\n    //console.log(dl)\n    var activity = {\n      channelId: \"directline\",\n      conversation: { id: dl.conversationId },\n      from: { id: callbacks.getChatState().user_id, name: \"\", role: \"user\" },\n      id: `${Math.random()}`,\n      text: action.payload.text,\n      timestamp: new Date().toISOString(),\n      type: \"message\",\n    };\n\n    // Log msg\n    bmbLogMessage(action.payload.text, \"Visitor\", callbacks);\n\n    var propertyId = callbacks.getPID();\n    if (propertyId === undefined || propertyId === \"\") {\n      var property = localStorage.getItem(\n        callbacks.getChatState().lStore.PROPERTYID\n      );\n      if (property !== undefined && property != null) {\n        propertyId = property;\n      }\n    }\n    callbacks\n      .getChatState()\n      .signalrchat.invoke(\"SendConversationMessageToAgent\", {\n        groupname: dl.conversationId,\n        message: action.payload.text,\n        groupId: callbacks.getGID(),\n        propertyId: propertyId,\n        agentId: callbacks.getAgentId(),\n      });\n\n    return next({\n      payload: { activity },\n      type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n    });\n  } else if (callbacks.isInMewsChat() === true) {\n    var dl = callbacks.getChatState().directline;\n    //console.log(dl)\n    var activity = {\n      channelId: \"directline\",\n      conversation: { id: dl.conversationId },\n      from: { id: callbacks.getChatState().user_id, name: \"\", role: \"user\" },\n      id: `${Math.random()}`,\n      text: action.payload.text,\n      timestamp: new Date().toISOString(),\n      type: \"message\",\n    };\n\n    // Log msg\n    bmbLogMessage(action.payload.text, \"Visitor\", callbacks);\n    //872(callbacks, dl, action.payload.text);\n    SendMewsMessage(dispatch, callbacks, dl, action.payload.text);\n    return next({\n      payload: { activity },\n      type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n    });\n  } else if (callbacks.isInGenesysPureCloudChat() === true) {\n    var dl = callbacks.getChatState().directline;\n    //console.log(dl)\n    var activity = {\n      channelId: \"directline\",\n      conversation: { id: dl.conversationId },\n      from: { id: callbacks.getChatState().user_id, name: \"\", role: \"user\" },\n      id: `${Math.random()}`,\n      text: action.payload.text,\n      timestamp: new Date().toISOString(),\n      type: \"message\",\n    };\n\n    // Log msg\n    bmbLogMessage(action.payload.text, \"Visitor\", callbacks);\n    SendMessageGenesysPureCloud(callbacks, dl, action.payload.text);\n\n    return next({\n      payload: { activity },\n      type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n    });\n  } else if (callbacks.isInAWSConnectChat() === true) {\n    var dl = callbacks.getChatState().directline;\n    //console.log(dl)\n    var activity = {\n      channelId: \"directline\",\n      conversation: { id: dl.conversationId },\n      from: { id: callbacks.getChatState().user_id, name: \"\", role: \"user\" },\n      id: `${Math.random()}`,\n      text: action.payload.text,\n      timestamp: new Date().toISOString(),\n      type: \"message\",\n    };\n\n    // Log msg\n    bmbLogMessage(action.payload.text, \"Visitor\", callbacks);\n    SendMessageAmazonConnect(callbacks, dl, action.payload.text);\n\n    return next({\n      payload: { activity },\n      type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n    });\n  } else if (action.payload && action.payload.text) {\n    let extension = callbacks.getExtension(CHAT_SUGGESTION_EXT_ID);\n\n    if (extension && extension.getSuggestionCallback) {\n      let suggestion = extension.getSuggestionCallback(action.payload.text);\n\n      if (suggestion) {\n        action.payload.text = suggestion;\n        callbacks.setExtension(CHAT_SUGGESTION_EXT_ID, undefined);\n      } else {\n        return;\n      }\n    }\n  }\n\n  return next(action);\n}\n\nfunction SendChatHistoryMessageGenesysPureCloud(\n  token,\n  messageIntegrationId,\n  textMessage,\n  conversationId\n) {\n  fetch(`${process.env.REACT_APP_API_URL}/genesys/sendmessage`, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n    },\n    body: JSON.stringify({\n      token: token,\n      messageIntegrationId: messageIntegrationId,\n      text: textMessage,\n      from: {\n        id: conversationId,\n        idType: \"Opaque\",\n      },\n    }),\n  }).catch((err) => {\n    console.error(\"Bmb livechat logging failed :(.\");\n    console.error(err);\n  });\n}\n\nfunction SendMessageGenesysPureCloud(callbacks, dl, textMessage) {\n  fetch(`${process.env.REACT_APP_API_URL}/genesys/sendmessage`, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n    },\n    body: JSON.stringify({\n      token: callbacks.genesysPureCloudChatSettings().token,\n      messageIntegrationId:\n        callbacks.genesysPureCloudChatSettings().messageIntegrationId,\n      text: textMessage,\n      from: {\n        id: dl.conversationId,\n        idType: \"Opaque\",\n      },\n    }),\n  }).catch((err) => {\n    console.error(\"Bmb livechat logging failed :(.\");\n    console.error(err);\n  });\n}\n\nfunction SendMessageAmazonConnect(callbacks, dl, textMessage) {\n  fetch(\n    `https://participant.connect.${localStorage.getItem(\n      callbacks.getChatState().lStore.AWS_CONNECT_REGION\n    )}.amazonaws.com/participant/message`,\n    {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"X-Amz-Bearer\":\n          callbacks.amazonConnectTokenSettings().ConnectionCredentials\n            .ConnectionToken,\n      },\n      body: JSON.stringify({\n        Content: textMessage, // The actual chat message\n        ContentType: \"text/plain\", // Currently, supported type is text/plain\n      }),\n    }\n  ).catch((err) => {\n    console.error(\"Bmb livechat logging failed :(.\");\n    console.error(err);\n  });\n}\n\nfunction SendTypingAmazonConnect(callbacks) {\n  fetch(\n    `https://participant.connect.${localStorage.getItem(\n      callbacks.getChatState().lStore.AWS_CONNECT_REGION\n    )}.amazonaws.com/participant/event`,\n    {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"X-Amz-Bearer\":\n          callbacks.amazonConnectTokenSettings().ConnectionCredentials\n            .ConnectionToken,\n      },\n      body: JSON.stringify({\n        ContentType: \"application/vnd.amazonaws.connect.event.typing\", // Currently, supported type is text/plain\n      }),\n    }\n  ).catch((err) => {\n    console.error(\"Bmb livechat logging failed :(.\");\n    console.error(err);\n  });\n}\n\nfunction SendMewsMessage(dispatch, callbacks, dl, textMessage) {\n  let settings = callbacks.mewsChatSettings();\n  let msg = [];\n  if (settings !== undefined && settings.Id !== undefined) {\n    dispatch({\n      type: \"WEB_CHAT/SEND_EVENT\",\n      payload: {\n        name: \"mewschat/message\",\n        value: {\n          message: textMessage,\n          threadId: settings.Id,\n        },\n      },\n    });\n  }\n}\n\n/**\n * Incoming Twilio Chat\n */\nfunction incomingTwiliochat(dispatch, next, action, callbacks) {\n  if (action.payload) {\n    var msg = action.payload;\n    // Send agent chats via store\n    if (msg.sid) {\n      var dl = callbacks.getChatState().directline;\n      if (dl !== undefined && dl.conversationId !== undefined) {\n        if (msg.author !== `${dl.conversationId}_user`) {\n          var activity = {\n            channelId: \"directline\",\n            conversation: { id: dl.conversationId },\n            from: { id: \"twiliochat\", name: \"\", role: \"bot\" },\n            id: `${Math.random()}`,\n            text: msg.body,\n            timestamp: new Date().toISOString(),\n            type: \"message\",\n          };\n          // Log with bmb API\n          bmbLogMessage(msg.body, \"Agent\", callbacks);\n          return dispatch({\n            payload: { activity },\n            type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n          });\n        }\n      }\n    }\n  }\n}\n\nfunction incomingAmazonConnectChat(dispatch, next, action, callbacks) {\n  if (action.payload) {\n    var msg = action.payload;\n    // Send agent chats via store\n\n    var dl = callbacks.getChatState().directline;\n    if (dl !== undefined && dl.conversationId !== undefined) {\n      if (msg.ParticipantRole !== `CUSTOMER`) {\n        var activity = {\n          channelId: \"directline\",\n          conversation: { id: dl.conversationId },\n          from: { id: \"connectchat\", name: \"\", role: \"bot\" },\n          id: `${Math.random()}`,\n          text: msg.Content,\n          timestamp: new Date().toISOString(),\n          type: \"message\",\n        };\n        // Log with bmb API\n        bmbLogMessage(msg.Content, \"Agent\", callbacks);\n        return dispatch({\n          payload: { activity },\n          type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n        });\n      }\n    }\n  }\n}\n\n/**\n * Incoming Twilio Chat\n */\nfunction incomingSignalchat(dispatch, next, action, callbacks) {\n  if (action.payload) {\n    var msg = action.payload;\n    // Send agent chats via store\n    var dl = callbacks.getChatState().directline;\n    if (dl !== undefined && dl.conversationId !== undefined) {\n      var activity = {\n        channelId: \"directline\",\n        conversation: { id: dl.conversationId },\n        from: { id: \"signalchat\", name: \"\", role: \"bot\" },\n        id: `${Math.random()}`,\n        text: msg,\n        timestamp: new Date().toISOString(),\n        type: \"message\",\n      };\n      // Log with bmb API\n      bmbLogMessage(msg, \"Agent\", callbacks);\n      return dispatch({\n        payload: { activity },\n        type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n      });\n    }\n  }\n}\n\nfunction incomingZendeskchat(dispatch, next, action, callbacks) {\n  if (action.payload) {\n    var msg = action.payload;\n    // Send agent chats via store\n\n    var dl = callbacks.getChatState().directline;\n    if (dl !== undefined && dl.conversationId !== undefined) {\n      //if (msg.author !== `${dl.conversationId}_user`) {\n      var activity = {\n        channelId: \"directline\",\n        conversation: { id: dl.conversationId },\n        from: { id: `${Math.random()}`, name: \"\", role: \"bot\" },\n        id: `${Math.random()}`,\n        text: msg,\n        timestamp: new Date().toISOString(),\n        type: \"message\",\n      };\n      // Log with bmb API\n\n      bmbLogMessage(msg, \"Agent\", callbacks);\n      return dispatch({\n        payload: { activity },\n        type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n      });\n      //}\n    }\n  }\n  return next(action);\n}\n\n/**\n * Incoming Twilio Chat\n */\nfunction TypeTwiliochat(dispatch, next, action, callbacks) {\n  if (callbacks.isInTwiliochat() === true) {\n    callbacks.sendTwilioTypingIndicator();\n  } else if (callbacks.isInZendeskChat() === true) {\n    callbacks.sendZendeskTypingIndicator();\n  } else if (callbacks.isInSignalRchat() === true) {\n    callbacks.sendSignalRTypingIndicator();\n  } else if (callbacks.isInAWSConnectChat() === true) {\n    SendTypingAmazonConnect(callbacks);\n  } else if (callbacks.isInGenesysPureCloudChat() === true) {\n    var dl = callbacks.getChatState().directline;\n    fetch(`${process.env.REACT_APP_API_URL}/genesys/sendtyping`, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify({\n        token: callbacks.genesysPureCloudChatSettings().token,\n        messageIntegrationId:\n          callbacks.genesysPureCloudChatSettings().messageIntegrationId,\n        from: {\n          id: dl.conversationId,\n          idType: \"Opaque\",\n        },\n      }),\n    })\n      .then((response) => {\n        //console.log(\"typing\");\n      })\n      .catch((err) => {\n        console.error(\"Bmb livechat logging failed :(.\");\n        console.error(err);\n      });\n  } else {\n    if (action.payload.text.length > 3) {\n      const botSettings = callbacks.getBotSettings();\n      var localStorageLanguage = localStorage.getItem(\n        callbacks.getChatState().lStore.LANGUAGE\n      );\n      if (\n        botSettings.features.predictiveSearch &&\n        botSettings.features.predictiveSearch === true &&\n        localStorageLanguage === \"en\"\n      ) {\n        fetch(BMB_AutoComplete_URL, {\n          method: \"POST\",\n          headers: {\n            Accept: \"application/json\",\n            \"Content-Type\": \"application/json\",\n          },\n          body: JSON.stringify({\n            keyword: action.payload.text,\n            domain: localStorage.getItem(\n              callbacks.getChatState().lStore.DOMAIN\n            ),\n          }),\n        })\n          .then((response) => response.json())\n          .then((json) => {\n            //console.log(json.data)\n            callbacks.setExtension(CHAT_AUTOCOMPLETE_EXT_ID, json.data);\n          });\n      } else {\n        callbacks.setExtension(CHAT_AUTOCOMPLETE_EXT_ID, undefined);\n      }\n    } else {\n      callbacks.setExtension(CHAT_AUTOCOMPLETE_EXT_ID, undefined);\n    }\n  }\n  return next(action);\n}\n\n/**\n * Incoming livechat from Livechatinc\n */\nfunction incomingLivechat(dispatch, next, action, callbacks) {\n  if (action.payload) {\n    var msg = action.payload;\n\n    // Send agent chats via store\n    if (!msg.customId) {\n      var dl = callbacks.getChatState().directline;\n\n      var activity = {\n        channelId: \"directline\",\n        conversation: { id: dl.conversationId },\n        from: { id: \"livechat\", name: \"\", role: \"bot\" },\n        id: `${Math.random()}`,\n        text: msg.text,\n        timestamp: new Date().toISOString(),\n        type: \"message\",\n      };\n\n      // Log with bmb API\n      bmbLogMessage(msg.text, \"Agent\", callbacks);\n\n      return dispatch({\n        payload: { activity },\n        type: \"DIRECT_LINE/INCOMING_ACTIVITY\",\n      });\n    }\n  }\n}\n\n/**\n * Incoming typing indicator from livechat\n */\nfunction livechatTyping(dispatch, next, action, callbacks) {\n  var dl = callbacks.getChatState().directline;\n  var activity = {\n    channelId: \"directline\",\n    conversation: { id: dl.conversationId },\n    from: { id: \"livechat\", name: \"\", role: \"bot\" },\n    id: `${Math.random()}`,\n    timestamp: new Date().toISOString(),\n    type: \"typing\",\n  };\n\n  return next({ payload: { activity }, type: \"DIRECT_LINE/INCOMING_ACTIVITY\" });\n}\n\n/**\n * Incoming typing indicator from livechat\n */\nfunction twiliochatTyping(dispatch, next, action, callbacks) {\n  var dl = callbacks.getChatState().directline;\n  var activity = {\n    channelId: \"directline\",\n    conversation: { id: dl.conversationId },\n    from: { id: \"twilio\", name: \"\", role: \"bot\" },\n    id: `${Math.random()}`,\n    timestamp: new Date().toISOString(),\n    type: \"typing\",\n  };\n\n  return next({ payload: { activity }, type: \"DIRECT_LINE/INCOMING_ACTIVITY\" });\n}\n\n/**\n * Incoming typing indicator from livechat\n */\nfunction signalchatTyping(dispatch, next, action, callbacks) {\n  var dl = callbacks.getChatState().directline;\n  var activity = {\n    channelId: \"directline\",\n    conversation: { id: dl.conversationId },\n    from: { id: \"signalr\", name: \"\", role: \"bot\" },\n    id: `${Math.random()}`,\n    timestamp: new Date().toISOString(),\n    type: \"typing\",\n  };\n\n  return next({ payload: { activity }, type: \"DIRECT_LINE/INCOMING_ACTIVITY\" });\n}\n\n/**\n * Livechatinc terminated\n */\nfunction endedLivechat(dispatch, next, action, callbacks) {\n  var dl = callbacks.getChatState().directline;\n  if (dl !== undefined) {\n    var activity = {\n      channelId: \"directline\",\n      conversation: { id: dl.conversationId },\n      from: { id: \"livechat\", name: \"\", role: \"bot\" },\n      id: `${Math.random()}`,\n      text: 'The agent has ended the chat. Press \"End Chat\" above to finish or restart.',\n      timestamp: new Date().toISOString(),\n      type: \"message\",\n    };\n    callbacks.showBookingForm(false, false);\n    callbacks.disableChat();\n  }\n\n  return next({ payload: { activity }, type: \"DIRECT_LINE/INCOMING_ACTIVITY\" });\n}\n\nfunction dispatchAgentOnlineEvents(dispatch, name) {\n  dispatch({\n    type: \"WEB_CHAT/SEND_EVENT\",\n    payload: {\n      name: name,\n      value: {},\n    },\n  });\n}\n\n/**\n * When directline first connects\n */\nfunction onConnect(dispatch, callbacks) {\n  callbacks.setExtension(CHAT_AUTOCOMPLETE_EXT_ID, undefined);\n  callbacks.setAvailblity(undefined);\n  var propertyId = callbacks.getPID();\n  var propertyName = \"\";\n\n  if (propertyId === undefined || propertyId === \"\") {\n    var property = localStorage.getItem(\n      callbacks.getChatState().lStore.PROPERTYID\n    );\n    if (property !== undefined && property != null) {\n      propertyId = property;\n    }\n  }\n\n  var propertyNameStorage = localStorage.getItem(\n    callbacks.getChatState().lStore.PROPERTYNAME\n  );\n  if (propertyNameStorage !== undefined && propertyNameStorage != null) {\n    propertyName = propertyNameStorage;\n  }\n\n  // console.log(\n  //   \"callbacks.getChatState().bearerToken\",\n  //   callbacks.getChatState().bearerToken\n  // );\n  dispatch({\n    type: \"WEB_CHAT/SEND_EVENT\",\n    payload: {\n      name: \"webchat/join\",\n      value: {\n        language: \"en-US\",\n        gid: callbacks.getGID(),\n        iid: callbacks.getIID(),\n        pid: propertyId,\n        vid: callbacks.getChatState().vid,\n        sid: callbacks.getChatState().sid,\n        lang: callbacks.getChatState().lang,\n        bearerToken: callbacks.getChatState().bearerToken,\n        pname: propertyName,\n      },\n    },\n  });\n\n  callbacks.addScrollEvent();\n}\n\n/**\n * End the Chat\n */\nfunction disconnectChat(dispatch, next, action, callbacks) {\n  localStorage.removeItem(callbacks.getChatState().lStore.CHAT_STATE);\n  return next(action);\n}\n\nfunction importStore(callbacks) {\n  var stored;\n  try {\n    stored = localStorage.getItem(callbacks.getChatState().lStore.CHAT_STATE);\n    stored = JSON.parse(stored);\n\n    //console.log(stored)\n    processStoredActivities(stored);\n    if (\n      stored !== null &&\n      stored !== undefined &&\n      stored.activities !== null &&\n      stored.activities !== undefined &&\n      stored.activities.length > 0\n    ) {\n      const history = stored.activities.filter((m) => m.type === \"message\");\n      if (history.length > 0) {\n        const lastMessage = history[history.length - 1];\n        if (lastMessage.suggestedActions) {\n          if (lastMessage.inputHint === \"Recommender\") {\n            callbacks.hideTypingTextBox();\n          }\n        }\n      }\n    }\n  } catch (e) {\n  } finally {\n    if (!stored) {\n      stored = {};\n    }\n    if (typeof stored !== \"object\") {\n      stored = {};\n    }\n  }\n  return stored;\n}\n\n/**\n * For logging livechat messages with the BMB backend\n */\nfunction bmbLogMessage(message, source, callbacks) {\n  var propertyId = callbacks.getPID();\n  if (propertyId === undefined || propertyId === \"\") {\n    var property = localStorage.getItem(\n      callbacks.getChatState().lStore.PROPERTYID\n    );\n    if (property !== undefined && property != null) {\n      propertyId = property;\n    }\n  }\n  var payload = {\n    gid: callbacks.getGID(),\n    iid: callbacks.getIID(),\n    pid: propertyId,\n    vid: callbacks.getChatState().vid,\n    sid: callbacks.getChatState().sid,\n    cid: callbacks.getChatState().directline.conversationId,\n    time: new Date().toISOString(),\n    source: source,\n    message: message,\n    tag: \"Human Chat\",\n    agentId: callbacks.getAgentId(),\n  };\n\n  fetch(BMB_LOG_URL, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n    },\n    body: JSON.stringify(payload),\n  }).catch((err) => {\n    console.error(\"Bmb livechat logging failed :(.\");\n    console.error(err);\n  });\n}\n\n/**\n * For logging booking messages with the BMB backend\n */\nfunction bmbLogMessageBot(tag, message, source, callbacks) {\n  var propertyId = callbacks.getPID();\n  if (propertyId === undefined || propertyId === \"\") {\n    var property = localStorage.getItem(\n      callbacks.getChatState().lStore.PROPERTYID\n    );\n    if (property !== undefined && property != null) {\n      propertyId = property;\n    }\n  }\n  var payload = {\n    gid: callbacks.getGID(),\n    iid: callbacks.getIID(),\n    pid: propertyId,\n    vid: callbacks.getChatState().vid,\n    sid: callbacks.getChatState().sid,\n    cid: callbacks.getChatState().directline.conversationId,\n    time: new Date().toISOString(),\n    source: source,\n    message: message,\n    tag: tag,\n    agentId: callbacks.getAgentId(),\n  };\n  fetch(BMB_LOG_URL, {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n    },\n    body: JSON.stringify(payload),\n  }).catch((err) => {\n    console.error(\"Bmb livechat logging failed :(.\");\n    console.error(err);\n  });\n}\n/**\n * Sends a stored message history to the given livechat instance\n * @param {*} store React store state\n * @param {*} livechat LivechatSDK instance\n */\nexport function sendChatStore(storeState, livechat) {\n  for (var activity of storeState.activities) {\n    var text = \"\";\n\n    // Build message from activity\n    if (activity.type === \"message\") {\n      if (activity.from && activity.from.role) {\n        text += activity.from.role + \": \";\n      }\n\n      if (activity.text) {\n        text += activity.text;\n      }\n\n      if (activity.attachments) {\n        // console.log(\"activity.attachments\",activity.attachments)\n        for (var attachment of activity.attachments) {\n          if (\n            attachment.contentType === \"application/vnd.microsoft.card.hero\"\n          ) {\n            if (attachment.content.title) {\n              text += \"Card Title: \" + attachment.content.title + \"\\r\\n\";\n            }\n            if (attachment.content.text) {\n              text += attachment.content.text;\n            }\n          }\n        }\n      }\n\n      livechat.sendMessage({\n        text: text,\n        customId: String(Math.random()),\n      });\n    }\n  }\n}\n\n/**\n * Sends a stored message history to the given livechat instance\n * @param {*} store React store state\n * @param {*} livechat LivechatSDK instance\n */\nexport function sendHistoryToZendesk(storeState, zendesk) {\n  for (var activity of storeState.activities) {\n    var text = \"\";\n\n    // Build message from activity\n    if (activity.type === \"message\") {\n      if (activity.from && activity.from.role) {\n        text += activity.from.role + \": \";\n      }\n\n      if (activity.text) {\n        text += activity.text;\n      }\n\n      if (activity.attachments) {\n        for (var attachment of activity.attachments) {\n          if (\n            attachment.contentType === \"application/vnd.microsoft.card.hero\"\n          ) {\n            if (attachment.content.title) {\n              text += \"Card Title: \" + attachment.content.title + \"\\r\\n\";\n            }\n            if (attachment.content.text) {\n              text += attachment.content.text + \"\\r\\n\";\n            }\n          }\n        }\n      }\n      zendesk.sendChatMsg(text);\n    }\n  }\n}\n\n/**\n * Sends a stored message history to the given livechat instance\n * @param {*} store React store state\n * @param {*} livechat LivechatSDK instance\n */\nexport function getChatHistoryForAgent(storeState) {\n  var text = \"\";\n  for (var activity of storeState.activities) {\n    // Build message from activity\n    if (activity.type === \"message\") {\n      if (activity.from && activity.from.role) {\n        text += activity.from.role + \": \";\n      }\n\n      if (activity.text) {\n        text += activity.text + \"\\r\\n\";\n      }\n\n      if (activity.attachments) {\n        for (var attachment of activity.attachments) {\n          if (\n            attachment.contentType === \"application/vnd.microsoft.card.hero\"\n          ) {\n            if (attachment.content.title) {\n              text += \"Card Title: \" + attachment.content.title + \"\\r\\n\";\n            }\n            if (attachment.content.text) {\n              text += attachment.content.text + \"\\r\\n\";\n            }\n          }\n        }\n      }\n    }\n  }\n  return text;\n}\n\n/**\n * Sends a stored message history to the given livechat instance\n * @param {*} store React store state\n * @param {*} livechat LivechatSDK instance\n */\nexport function sendHistoryToGenesysPureCloud(\n  conversationId,\n  token,\n  messageIntegrationId,\n  storeState\n) {\n  var text = \"\";\n  for (var activity of storeState.activities) {\n    // Build message from activity\n    if (activity.type === \"message\") {\n      if (activity.from && activity.from.role) {\n        text += activity.from.role + \": \";\n      }\n\n      if (activity.text) {\n        text += activity.text + \"\\r\\n\";\n      }\n\n      if (activity.attachments) {\n        for (var attachment of activity.attachments) {\n          if (\n            attachment.contentType === \"application/vnd.microsoft.card.hero\"\n          ) {\n            if (attachment.content.title) {\n              text += \"Card Title: \" + attachment.content.title + \"\\r\\n\";\n            }\n            if (attachment.content.text) {\n              text += attachment.content.text + \"\\r\\n\";\n            }\n          }\n        }\n      }\n    }\n  }\n\n  SendChatHistoryMessageGenesysPureCloud(\n    token,\n    messageIntegrationId,\n    text,\n    conversationId\n  );\n}\n\n/**\n * Creates the Redux store used by the MS Chat widget\n * Some additional functionality is implemented as middleware, all in this file\n */\nlet intervalOne;\nlet intervalTwo;\nexport default function getChatStore(chatCallbacks, forceNewState) {\n  var stored = forceNewState ? {} : importStore(chatCallbacks);\n\n  let store = createStore(stored, ({ dispatch }) => (next) => (action) => {\n    if (!action) {\n      return next(action);\n    }\n\n    if (\n      action.type === \"DIRECT_LINE/UPDATE_CONNECTION_STATUS\" &&\n      typeof action.payload?.connectionStatus === \"number\"\n    ) {\n      chatCallbacks.setConnectionStatus(action.payload.connectionStatus);\n    }\n\n    switch (action.type) {\n      case \"DIRECT_LINE/CONNECT_FULFILLED\":\n        onConnect(dispatch, chatCallbacks);\n        break;\n      case \"DIRECT_LINE/INCOMING_ACTIVITY\":\n        return incomingActivity(dispatch, next, action, chatCallbacks);\n      case \"WEB_CHAT/SEND_MESSAGE\":\n        return outgoingActivity(dispatch, next, action, chatCallbacks);\n      case \"WEB_CHAT/SET_SUGGESTED_ACTIONS\":\n        return setSuggestedActions(dispatch, next, action, chatCallbacks);\n      case \"LIVECHAT/NEW_MESSAGE\":\n        return incomingLivechat(dispatch, next, action, chatCallbacks);\n      case \"TWILIO/NEW_MESSAGE\":\n        return incomingTwiliochat(dispatch, next, action, chatCallbacks);\n      case \"AMAZONCONNECT/NEW_MESSAGE\":\n        return incomingAmazonConnectChat(dispatch, next, action, chatCallbacks);\n      case \"SIGNALR/NEW_MESSAGE\":\n        return incomingSignalchat(dispatch, next, action, chatCallbacks);\n      case \"ZENDESK/NEW_MESSAGE\":\n        return incomingZendeskchat(dispatch, next, action, chatCallbacks);\n      case \"WEB_CHAT/SEND_EVENT\":\n        return outgoingBackChannelEvents(dispatch, next, action, chatCallbacks);\n      case \"LIVECHAT/CHAT_END\":\n        return endedLivechat(dispatch, next, action, chatCallbacks);\n      case \"LIVECHAT/TYPING\":\n        return livechatTyping(dispatch, next, action, chatCallbacks);\n      case \"TWILIO/TYPING\":\n        return twiliochatTyping(dispatch, next, action, chatCallbacks);\n      case \"SIGNALR/TYPING\":\n        return signalchatTyping(dispatch, next, action, chatCallbacks);\n      case \"DIRECT_LINE/DISCONNECT_FULFILLED\":\n        return disconnectChat(dispatch, next, action, chatCallbacks);\n      case \"WEB_CHAT/SET_SEND_BOX\":\n        return TypeTwiliochat(dispatch, next, action, chatCallbacks);\n      default:\n        // Nothing to do\n        break;\n    }\n    localStorage.setItem(\n      chatCallbacks.getChatState().lStore.CHAT_STATE,\n      JSON.stringify(chatCallbacks.getState())\n    );\n    return next(action);\n  });\n  return store;\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport ChatApp from \"./ChatApp\";\n\nimport \"./index.css\";\n\n/**\n * Accesses data handed into frame via URL\n * gid - required\n * iid - required\n * pid - optional, bot will ask user about which pid to use for the given iid if pid not supplied\n */\nfunction decodeURL() {\n  if (!window.location.href.split(\"?\")[1]) {\n    console.log(\"No data passed in to Chat element :(.\");\n    return;\n  }\n  var params = window.location.href.split(\"?\")[1].split(\"&\");\n  var data = {};\n  for (var x in params) {\n    data[params[x].split(\"=\")[0]] = decodeURIComponent(params[x].split(\"=\")[1]);\n  }\n  return data;\n}\nvar parent_location,\n  parent_title,\n  gid,\n  iid,\n  pid,\n  mobile,\n  parent_referrer,\n  defaultOpen,\n  position,\n  customStyle,\n  previewMode,\n  serviceview,\n  messenger;\nvar data = decodeURL();\n//console.log(data);\nif (data) {\n  parent_referrer = data.referrer;\n  parent_location = data.location;\n  parent_title = data.title;\n  gid = data.gid;\n  pid = data.pid;\n  iid = data.iid;\n  mobile = data.mobile;\n  defaultOpen = data.open ? true : false;\n  previewMode = data.preview ? data.preview : false;\n  position = data.position === \"left\" ? \"chat_area_left\" : \"chat_area\";\n  customStyle = data.custom ? \"custom\" : \"\";\n  serviceview = data.serviceview === \"true\" ? true : false;\n  messenger = data.messenger === \"true\" ? true : false;\n}\n\nif (!gid || !iid) {\n  // gid = \"12848620-d54c-4be7-bebc-ac44014c964c\";\n  // pid = \"e655dab2-987b-4683-ad9b-599814b414b6\";\n  gid = \"73574010-2f33-4b41-8b8a-09d18b025a56\";\n  //gid = \"f49d1df2-f9b3-416e-a366-adf7ef6e7c63\";\n  //pid = \"e655dab2-987b-4683-ad9b-599814b414b6\";\n  //iid = 'f206b9ac-ad8a-4b41-9c00-c885d86ab7fe';\n  // iid = \"290542d7-e9bc-4609-a437-e859a7d12d83\";\n  // iid = '306574d2-7370-4a74-a0fc-b8ca2b850d8b';\n  mobile = true;\n  iid = \"2ddcb06d-8a79-46dc-ab38-367080ca3f78\";\n  //iid='1b429f53-0d99-4f62-90d5-f92ab96e8d9d';\n  //iid = \"b4974ef9-3ad4-4205-ab07-f4711f118c54\";\n  defaultOpen = false;\n  position = \"chat_area\";\n  customStyle = \"\";\n  serviceview = false;\n}\n// Make sure frame is open when the bot is being interacted with (see chatplugin.js)\nwindow.addEventListener(\"click\", (evt) => {\n  if (\n    evt !== undefined &&\n    evt.target !== undefined &&\n    evt.target.className !== undefined &&\n    evt.target.className === \"internal-link\"\n  ) {\n    let payload = {\n      url: evt.target.href,\n    };\n    window.postMessage(\"openInternalLink:\" + JSON.stringify(payload));\n    evt.preventDefault();\n  } else {\n    window.postMessage(\"chatbotwindowOpen\");\n  }\n});\n\nReactDOM.render(\n  <ChatApp\n    parent_location={parent_location}\n    parent_title={parent_title}\n    parent_referrer={parent_referrer}\n    gid={gid}\n    iid={iid}\n    pid={pid}\n    mobile={mobile}\n    defaultOpen={defaultOpen}\n    position={position}\n    customStyle={customStyle}\n    previewMode={previewMode}\n    serviceview={serviceview}\n    messenger={messenger}\n  />,\n  document.getElementById(\"root\")\n);\n","export default class ChatAppExtensions {\n    static getAPI(chatApp, chatAppProps) {      \n        let isMobile = chatAppProps.mobile;\n        return {\n            setExtension: chatApp.setExtension.bind(chatApp),\n            sendActivity: activity => { chatApp.state.store.dispatch(activity) },\n            isMobile: () => isMobile\n        }\n    }\n}","import { DirectLine, ConnectionStatus } from \"botframework-directlinejs\";\nimport React, { Component, Fragment } from \"react\";\nimport ChatBubble from \"./ChatBubble\";\nimport ChatWindow from \"./ChatWindow\";\nimport SildeBubble from \"./ChatBubbleComponent/SildeBubble\";\nimport getChatStore, {\n  sendChatStore,\n  sendHistoryToZendesk,\n  sendHistoryToGenesysPureCloud,\n  getChatHistoryForAgent,\n} from \"./ChatStore\";\nimport * as uuid from \"uuid/v4\";\nimport * as LivechatSDK from \"@livechat/livechat-visitor-sdk\";\nimport * as zChat from \"zendesk-chat-sdk\";\nimport ChatAppExtensions from \"./Extensions/ChatAppExtensions\";\nimport ChatWindowParticipantTagger from \"./ChatWindowParticipantTagger\";\nimport { Client as ConversationsClient } from \"@twilio/conversations\";\nimport {\n  JsonHubProtocol,\n  HttpTransportType,\n  HubConnectionBuilder,\n  LogLevel,\n} from \"@microsoft/signalr\";\nconst SIGNALR_URL = process.env.REACT_APP_SIGNALR_URL;\nconst publicIp = require(\"public-ip\");\nconst TOKEN_GEN_URL = process.env.REACT_APP_API_URL + \"/getToken\";\nconst GROUP_URL = process.env.REACT_APP_API_URL + \"/group\";\nconst TWILIO_TOKEN_GEN_URL = process.env.REACT_APP_API_URL + \"/twilio-token\";\nconst TWILIO_END_CONVERSATION =\n  process.env.REACT_APP_API_URL + \"/endTwilioConversation\";\nconst PAGE_VISIT_URL = process.env.REACT_APP_API_URL + \"/pageLoaded\";\nconst PROPERTIES_URL = process.env.REACT_APP_API_URL + \"/properties\";\nconst BOT_CLICKS = process.env.REACT_APP_API_URL + \"/botclick\";\nconst MEWS_API = process.env.REACT_APP_API_URL + \"/mews\";\nconst ADD_MESSAGE_THREAD = process.env.REACT_APP_API_URL + \"/threadId\";\nconst MS_REFRESH_URL =\n  \"https://directline.botframework.com/v3/directline/tokens/refresh\";\nconst LIVECHAT_LICENSE = 9036740;\nconst LIVECHAT_GROUP = 72;\n/**\n * Main chat app, runs with the page\n */\nexport default class ChatApp extends Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      chatBindings: {\n        startLivechat: this.startLivechat.bind(this),\n        startTwiliochat: this.startTwiliochat.bind(this),\n        startSignalRchat: this.startSignalRchat.bind(this),\n        endTwilio: this.endTwilio.bind(this),\n        endSignalRChat: this.endSignalRChat.bind(this),\n        setAgentId: this.setAgentId.bind(this),\n        enableChat: this.enableChat.bind(this),\n        disableChat: this.disableChat.bind(this),\n        getState: this.getState.bind(this),\n        setInLivechat: this.setInLivechat.bind(this),\n        isInLivechat: this.isInLivechat.bind(this),\n        isInTwiliochat: this.isInTwiliochat.bind(this),\n        isInSignalRchat: this.isInSignalRchat.bind(this),\n        sendTwilioTypingIndicator: this.sendTwilioTypingIndicator.bind(this),\n        sendZendeskTypingIndicator: this.sendZendeskTypingIndicator.bind(this),\n        sendSignalRTypingIndicator: this.sendSignalRTypingIndicator.bind(this),\n        setInTwiliochat: this.setInTwiliochat.bind(this),\n        setInSignalRchat: this.setInSignalRchat.bind(this),\n        getChatState: this.getChatState.bind(this),\n        setExtension: this.setExtension.bind(this),\n        setAvailblity: this.setAvailblity.bind(this),\n        hideTypingTextBox: this.hideTypingTextBox.bind(this),\n        showTypingTextBox: this.showTypingTextBox.bind(this),\n        setConnectionStatus: this.setConnectionStatus.bind(this),\n        setInactivePopupOne: this.setInactivePopupOne.bind(this),\n        setInactivePopupTwo: this.setInactivePopupTwo.bind(this),\n        closeInactivePopupOne: this.closeInactivePopupOne.bind(this),\n        hideTextCount: this.hideTextCount.bind(this),\n        startZenDeskChat: this.startZenDeskChat.bind(this),\n        isInZendeskChat: this.isInZendeskChat.bind(this),\n        setPropertyPopUp: this.setPropertyPopUp.bind(this),\n        ChangeBotLanguage: this.ChangeBotLanguage.bind(this),\n        startMewsChat: this.startMewsChat.bind(this),\n        startGenesysPureCloudChat: this.startGenesysPureCloudChat.bind(this),\n        startAWSConnectChat: this.startAWSConnectChat.bind(this),\n        isInGenesysPureCloudChat: this.isInGenesysPureCloudChat.bind(this),\n        isInAWSConnectChat: this.isInAWSConnectChat.bind(this),\n        isInMewsChat: this.isInMewsChat.bind(this),\n        genesysPureCloudChatSettings:\n          this.genesysPureCloudChatSettings.bind(this),\n        amazonConnectTokenSettings: this.amazonConnectTokenSettings.bind(this),\n        mewsChatSettings: this.mewsChatSettings.bind(this),\n        getExtension: (extensionName) => this.state.extensions[extensionName],\n        makePayment: (details, callback) => {\n          this.setState({\n            makePayment: {\n              details,\n              callback,\n              close: () => {\n                this.setState({ makePayment: undefined });\n              },\n            },\n          });\n        },\n        getRoomTypes: (details) => {\n          this.setState({\n            getRoomTypes: {\n              details,\n              reinit: true,\n            },\n          });\n          var booking = this.state.bookingApp;\n          booking.open = true;\n\n          this.setState({\n            bookingApp: booking,\n          });\n        },\n        getGID: () => {\n          return this.props.gid;\n        },\n        getIID: () => {\n          return this.props.iid;\n        },\n        getPID: () => {\n          return this.props.pid;\n        },\n        getAgentId: () => {\n          return this.state.agentId;\n        },\n        getBotSettings: () => {\n          return this.state.botSettings;\n        },\n        getLiveChatSettings: () => {\n          return this.state.liveChatSettings;\n        },\n        getDirectLineConversation: () => {\n          return this.state.directline.conversationId;\n        },\n        isCheckedAvailability: false,\n        hideRoomDetail: false,\n        \n        showBookingForm: (available, hideRoom) => {\n          this.setState({\n            isCheckedAvailability: available,\n            hideRoomDetail: hideRoom,\n          });\n        },\n        scrollChat: this.scrollChat,\n        addScrollEvent: this.addScrollEvent,\n        showHideMoveToTop: this.showHideMoveToTop.bind(this),\n      },\n    };\n    const iid = props.iid;\n\n    const lStore = {\n      // per-integration constants used for localstorage identifiers\n      OPENED: iid + \"-opened\",\n      IDENTITY: iid + \"-identity\",\n      CHAT_STATE: iid + \"-chatstate\",\n      CREDENTIALS: iid + \"-credentials\",\n      LIVECHAT_STARTED: iid + \"-livechatStarted\",\n      GENESYS_CLOUD_STARTED: iid + \"-genesyscloudchatStarted\",\n      AWS_CONNECT_STARTED: iid + \"-awsconnectStarted\",\n      AWS_CONNECT_THREAD: iid + \"-awsconnectThreadId\",\n      AWS_CONNECT_REGION: iid + \"-awsconnectRegion\",\n      MEWS_CHAT_STARTED: iid + \"-mewschatStarted\",\n      MEWS_THREAD: iid + \"-mewsThreadId\",\n      COOKIES: iid + \"-cookies\",\n      PROPERTYID: iid + \"-property\",\n      PROPERTYNAME: iid + \"-propertyName\",\n      EXTENSIONS: iid + \"-extensions\",\n      LANGUAGE: iid + \"-language\",\n      DOMAIN: iid + \"-domain\",\n      BOTCLICK: iid + \"-botclick\",\n      LIVECHATMESSAGESTAMP: iid + \"-livechatmessagetimestamp\",\n      LIVECHATCLIENT: iid + \"-livechatclient\",\n      VISITORDETAILS: iid + \"-visitor\",\n      ZENDESKGROUP: iid + \"-zendeskgroup\",\n    };\n\n    let loadedExtensions;\n    try {\n      loadedExtensions = JSON.parse(localStorage.getItem(lStore.EXTENSIONS));\n    } catch {}\n    if (!loadedExtensions) {\n      loadedExtensions = {};\n    }\n\n    this.state = {\n      lStore: lStore,\n      opened:\n        this.props.defaultOpen ||\n        (this.props.mobile == \"false\" &&\n          localStorage.getItem(lStore.OPENED) === \"open\"),\n      messages: [],\n      directline: undefined,\n      started: false,\n      chatBindings: this.state.chatBindings,\n      inputEnabled: false,\n      inLiveChat: false,\n      livechat: undefined,\n      loadingLivechat: false,\n      makePayment: false,\n      getRoomTypes: undefined,\n      createChatSessionStartUp: false,\n      animation: {\n        bubbleToFadeIn: true,\n      },\n      integrationSettings: undefined,\n      blockChatbot: false,\n      extensions: {\n        ...loadedExtensions,\n        _api: ChatAppExtensions.getAPI(this, this.props),\n      },\n      connectionError: false,\n      visitorPopUp: false,\n      inTwilioChat: false,\n      inSignalRChat: false,\n      twiliochat: undefined,\n      signalrchat: undefined,\n      twilioAccessToken: undefined,\n      twilioChatId: undefined,\n      signalRChatId: undefined,\n      disabledChatbot: false,\n      inactivePopupOne: false,\n      inactivePopupTwo: false,\n      moveTop: false,\n      persistentMenu: null,\n      persistentMenuEnabled: false,\n      agentId: \"\",\n      resize: false,\n      botclick: false,\n      inZenDesk: false,\n      inMewsChat: false,\n      mewsChatSettings: undefined,\n      zendesk: undefined,\n      liveChatSettings: undefined,\n      zendeskDepartment: \"\",\n      zendeskChatNew: true,\n      availblity: undefined,\n      open_ZChatfeedback_popup: false,\n      property_popup: false,\n      bot_restart: false,\n      inGenesysPureCloudChat: false,\n      genesysPureCloudSettings: undefined,\n      messengerSettings: \"\",\n      formSettings: null,\n      inAwsConnect: false,\n      amazonConnectToken: undefined,\n      groupData: null,\n    };\n\n    // getChatStore needs state.lStore to be set first for it to work\n    this.state.store = getChatStore(this.state.chatBindings);\n\n    this.state.bookingApp = {\n      open: false,\n      callbacks: {\n        getStore: () => {\n          return this.state.store;\n        },\n      },\n      chatBindings: this.state.chatBindings,\n      lStore: lStore,\n    };\n\n    // Tell parent iframe opened state\n    this.state.opened\n      ? this.postMessage(\"chatbotwindowOpen\")\n      : this.postMessage(\"chatbotwindowClose\");\n\n    this.addThreadId = async (messageThreadId) => {\n      const req = await fetch(`${ADD_MESSAGE_THREAD}`, {\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify({\n          id: this.state.directline.conversationId,\n          groupId: this.props.gid,\n          messageThreadId: messageThreadId,\n        }),\n      });\n    };\n\n    // Listen to messages\n    window.addEventListener(\"message\", this.windowMessage.bind(this), false);\n  }\n\n  /**\n   * Start conversation on mount\n   */\n  componentDidMount() {\n    if (!this.state.started) {\n      this.setState({ started: true });\n\n      if (this.props.openChatWindow === true) {\n        this.opened();\n        this.postMessage(\"chatbotwindowOpen\");\n      }\n      this.startConversation(true);\n    }\n\n    // if (this.props.messenger === true) {\n    //   this.setState({ opened: false });\n    // }\n    if (localStorage.getItem(this.state.lStore.OPENED) === \"open\"){\n      this.postMessage(\"openMessengerBotClickAvtar\");\n    }  \n        // Fetching group data\n        fetch(GROUP_URL + \"/\" + this.props.gid, {\n          method: \"GET\",\n          headers: {\n            Accept: \"application/json\",\n            \"Content-Type\": \"application/json\",\n          },\n        })\n          .then((response) => response.json()) \n          .then((groupData) => {\n          \n            this.setState({ groupData });\n           \n          })\n          .catch((error) => {\n            console.error(\"Error fetching group data: \", error);\n          });\n      \n      \n  }\n\n  /**\n   * Listens to component changes, sends opened status to parent frame for resizing\n   * (frame on client site must shrink to not cover content when chat minimised)\n   */\n  componentDidUpdate(prevProps, prevState) {\n    if (prevState.opened !== this.state.opened) {\n      this.state.opened\n        ? this.postMessage(\"chatbotwindowOpen\")\n        : this.postMessage(\"chatbotwindowClose\");\n    }\n  }\n\n  /**\n   * Handles messages from the window (i.e. from the containing iframe)\n   */\n  windowMessage(event) {\n    if (event.data.toString().startsWith(\"lang_code:\")) {\n      this.setState({ lang: event.data.substring(\"10\"), autoDetect: false });\n    }\n\n    if (event.data.toString().startsWith(\"auth_token:\")) {\n      if (event.data.substring(\"11\") !== \"\") {\n        console.log(\"33\", event.data.substring(\"11\"));\n        this.setState({ bearerToken: event.data.substring(\"11\") });\n        this.state.store.dispatch({\n          type: \"WEB_CHAT/SEND_EVENT\",\n          payload: {\n            name: \"webchat/token-update\",\n            value: {\n              bearerToken: event.data.substring(\"11\"),\n            },\n          },\n        });\n      }\n    }\n\n    if (event.data.toString().startsWith(\"msg_property:\")) {\n      var prodata = JSON.parse(event.data.substring(\"13\"));\n      if (prodata === null) {\n        console.log(this.state.bookingApp.properties);\n        //this.selectProperty(this.state.bookingApp.properties)\n      } else {\n        this.selectProperty(prodata);\n      }\n    }\n\n    if (!this.state.opened && event.data === \"chatwindowOpened\") {\n      this.setState({ opened: true });\n    }\n    if (event.data === \"chatwindowOpenedInMsg\") {\n      this.opened();\n    }\n    if (event.data === \"openMessengerChatWindow\") {\n      this.setState({ opened: true });\n    }\n    if (event.data === \"bot_restart\") {\n      this.setState({ bot_restart: true });\n    }\n\n    //buutonColorInMsg\n\n    if (\n      typeof event.data === \"string\" &&\n      event.data.startsWith(\"buttonColorInMsg:\")\n    ) {\n      var data = JSON.parse(event.data.substring(17));\n\n      this.setState({ messengerSettings: data });\n    }\n\n    // cookies\n    if (\n      typeof event.data === \"string\" &&\n      event.data.startsWith(\"cookiesContent:\")\n    ) {\n      var load = JSON.parse(event.data.substring(15));\n\n      this.setState({ cookiesData: load });\n    }\n    if (\n      typeof event.data === \"string\" &&\n      event.data.startsWith(\"update-styling:\")\n    ) {\n      let payload = event.data.substr(15);\n      this.setState({ integrationSettings: JSON.parse(payload) });\n    }\n    if (\n      typeof event.data === \"string\" &&\n      event.data.startsWith(\"nudge_message:\")\n    ) {\n      setTimeout(() => {\n        this.state.store.dispatch({\n          type: \"WEB_CHAT/SEND_MESSAGE\",\n          payload: {\n            text: event.data.replace(\"nudge_message:\", \"\"),\n          },\n        });\n      }, 4000);\n    }\n    if (typeof event.data === \"string\" && event.data.startsWith(\"message:\")) {\n      this.opened();\n\n      setTimeout(() => {\n        this.state.store.dispatch({\n          type: \"WEB_CHAT/SEND_MESSAGE\",\n          payload: {\n            text: event.data.replace(\"message:\", \"\"),\n          },\n        });\n      }, 4000);\n    }\n    if (\n      typeof event.data === \"string\" &&\n      event.data.startsWith(\"messengerLang:\")\n    ) {\n      this.setState({ lang: event.data.substr(14) });\n    }\n\n    if (event.data.toString().startsWith(\"openInternalLink:\")) {\n      var prodata = JSON.parse(event.data.substring(\"17\"));\n      this.state.store.dispatch({\n        type: \"WEB_CHAT/SEND_EVENT\",\n        payload: {\n          name: \"webchat/openWebView\",\n          value: {\n            url: prodata.url,\n            title: \"\",\n            mode: \"Normal\",\n            largeWindowHideHeader: false,\n          },\n        },\n      });\n    }\n  }\n\n  /**\n   * Scrolls chat to bottom, achieves this slightly messily by selecting using CSS selectors\n   */\n  scrollChat() {\n    var els = document.getElementsByClassName(\"css-y1c0xs\");\n    for (var el of els) {\n      if (el.classList.contains(\"css-ca0rlf\")) {\n        el.scrollTop = el.scrollHeight;\n      }\n    }\n  }\n\n  addScrollEvent() {\n    var els1 = document.getElementsByClassName(\n      \"webchat__basic-transcript__scrollable\"\n    );\n    els1[0].addEventListener(\"scroll\", () => {\n      if (els1[0].scrollTop > 100) {\n        this.showHideMoveToTop(true);\n      } else {\n        this.showHideMoveToTop(false);\n      }\n    });\n    if (els1[0].scrollTop > 100) {\n      this.showHideMoveToTop(true);\n    } else {\n      this.showHideMoveToTop(false);\n    }\n  }\n\n  showHideMoveToTop(show) {\n    this.setState({ moveTop: show });\n  }\n\n  hideTypingTextBox() {\n    // this.setState({ moveTop: true });\n    var els = document.getElementsByClassName(\"main\");\n    console.log(els.length);\n    if (els.length === 0) {\n      const hideInterval = setInterval(function () {\n        var els1 = document.getElementsByClassName(\"main\");\n        console.log(els1.length);\n        if (els1.length > 0) {\n          clearInterval(hideInterval);\n          for (var el of els1) {\n            if (el.classList.contains(\"main\")) {\n              el.style.display = \"none\";\n            }\n          }\n        }\n      }, 1500);\n      setTimeout(function () {\n        clearInterval(hideInterval);\n      }, 15000);\n    } else {\n      if (els.length > 0) {\n        for (var el of els) {\n          if (el.classList.contains(\"main\")) {\n            el.style.display = \"none\";\n          }\n        }\n      }\n    }\n  }\n\n  hideTextCount() {\n    var els = document.getElementById(\"span-count\");\n    if (els !== null) {\n      els.innerText = \"\";\n    }\n  }\n\n  showTypingTextBox() {\n    var els = document.getElementsByClassName(\"main\");\n    if (els.length > 0) {\n      for (var el of els) {\n        if (el.classList.contains(\"main\")) {\n          el.style.display = \"flex\";\n        }\n      }\n    }\n  }\n\n  setAvailblity(payload) {\n    this.setState({ availblity: payload });\n  }\n\n  setPropertyPopUp(payLoad) {\n    this.setState({ property_popup: payLoad });\n  }\n\n  ChangeBotLanguage(detectedLang, autoDetect) {\n    this.postMessage(\"langDetect:\" + detectedLang);\n    this.setState({ lang: detectedLang, autoDetect: autoDetect });\n  }\n\n  setExtension(extensionName, payload) {\n    let extensions = {\n      ...this.state.extensions,\n      [extensionName]: payload,\n    };\n    this.setState({ extensions });\n\n    localStorage.setItem(\n      this.state.lStore.EXTENSIONS,\n      JSON.stringify(extensions)\n    );\n  }\n\n  dynamicSort(property) {\n    var sortOrder = 1;\n    if (property[0] === \"-\") {\n      sortOrder = -1;\n      property = property.substr(1);\n    }\n    return function (a, b) {\n      /* next line works with strings and numbers,\n       * and you may want to customize it to your needs\n       */\n      var result =\n        a[property] < b[property] ? -1 : a[property] > b[property] ? 1 : 0;\n      return result * sortOrder;\n    };\n  }\n  selectProperty = (elem) => {\n    this.state.bookingApp.selectedPid = elem;\n    this.forceUpdate();\n    localStorage.setItem(this.state.bookingApp.lStore.PROPERTYID, elem.value);\n    localStorage.setItem(this.state.bookingApp.lStore.PROPERTYNAME, elem.label);\n    this.loadFormSetting(elem.value);\n    this.state.bookingApp.callbacks.getStore().dispatch({\n      type: \"WEB_CHAT/SEND_EVENT\",\n      payload: {\n        name: \"webchat/update\",\n        value: {\n          pid: elem.value,\n          pname: elem.label,\n        },\n      },\n    });\n  };\n  /**\n   * Registers that the user visited the page, manages visitor ID/session ID\n   * vid/sid are persisted between sessions, sid is changed if the conversation ID expires\n   */\n  async registerPageLoad(botConversationId) {\n    const ip = await publicIp.v4();\n    var user = {\n      iid: this.props.iid,\n      gid: this.props.gid,\n      vid: undefined,\n      sid: undefined,\n      locale: \"en-US\",\n      parent_location: this.props.parent_location,\n      parent_referrer: this.props.parent_referrer,\n      page_title: this.props.parent_title,\n      ip: ip,\n      botConversationId: botConversationId,\n    };\n\n    var identity = localStorage.getItem(this.state.lStore.IDENTITY);\n    if (identity) {\n      try {\n        identity = JSON.parse(identity);\n        user.vid = identity.vid;\n        user.sid = identity.sid;\n      } catch (e) {\n        user.vid = undefined;\n        user.sid = undefined;\n      }\n    }\n\n    const req = await fetch(PAGE_VISIT_URL, {\n      method: \"POST\",\n      headers: {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify({\n        user: user,\n      }),\n    });\n\n    var result = await req.json();\n    this.postMessage(\"chatbotConId:\" + botConversationId);\n    if (result && result.vid && result.sid) {\n      if (this.props.previewMode == \"false\") {\n        this.setState({ disabledChatbot: result.disabled });\n      }\n      if (result.disabled !== null && result.disabled === true) {\n        this.postMessage(\"removeiframemode:\");\n      }\n\n      if (user.sid !== result.sid) {\n        localStorage.removeItem(this.state.lStore.BOTCLICK);\n      }\n      //Restrict Bot based upon the IP Address\n      if (result.whiteListedIpAddresses.length > 0) {\n        if (result.whiteListedIpAddresses.find((x) => x === ip) === undefined) {\n          this.setState({ blockChatbot: true });\n        }\n      }\n\n      localStorage.setItem(this.state.lStore.IDENTITY, JSON.stringify(result));\n\n      if (\n        result.liveChatSettings !== undefined &&\n        result.liveChatSettings.enabled === true &&\n        result.liveChatSettings.provider == \"1\"\n      ) {\n        localStorage.setItem(\n          this.state.lStore.ZENDESKGROUP,\n          result.liveChatSettings.zendesk.departmentId\n        );\n      }\n\n      var localStorageLanguage = localStorage.getItem(\n        this.state.lStore.LANGUAGE\n      );\n\n      var lang = \"\";\n      var userLang = navigator.language || navigator.userLanguage;\n\n      if (\n        userLang != undefined &&\n        userLang != \"\" &&\n        result.botSettings.languages.length > 0\n      ) {\n        if (userLang.indexOf(\"-\") > 0 && userLang.includes(\"en\")) {\n          //ENGLISH\n          lang = \"en\";\n        } else if (userLang === \"zh-CN\") {\n          //SC\n          if (\n            result.botSettings.languages.filter((m) => m === \"zh\").length > 0\n          ) {\n            lang = \"zh\";\n          }\n        } else if (userLang === \"zh-TW\") {\n          //TC\n          if (\n            result.botSettings.languages.filter((m) => m === \"zh-TW\").length > 0\n          ) {\n            lang = \"zh-TW\";\n          }\n        } else {\n          if (userLang.indexOf(\"-\") > 0) {\n            userLang = userLang.split(\"-\")[0];\n            if (\n              result.botSettings.languages.filter((m) => m === userLang)\n                .length > 0\n            ) {\n              lang = userLang;\n            }\n          } else if (\n            result.botSettings.languages.filter((m) => m === userLang).length >\n            0\n          ) {\n            lang = userLang;\n          }\n        }\n      }\n\n      try {\n        if (localStorageLanguage) {\n          this.setState({\n            vid: result.vid,\n            sid: result.sid,\n            lang: localStorageLanguage,\n          });\n        } else {\n          this.setState({\n            vid: result.vid,\n            sid: result.sid,\n            lang: lang === \"\" ? result.botSettings.defaultLanguage : lang,\n          });\n        }\n      } catch (e) {\n        this.setState({\n          vid: result.vid,\n          sid: result.sid,\n          lang: lang === \"\" ? result.botSettings.defaultLanguage : lang,\n        });\n      }\n\n      if (\n        (this.props.pid === \"\" || this.props.pid === undefined) &&\n        result.level === \"Group\" &&\n        result.properties.length > 1\n      ) {\n        this.state.bookingApp.open = true;\n\n        const reqProperties = await fetch(\n          PROPERTIES_URL + \"/\" + this.props.gid,\n          {\n            method: \"GET\",\n            headers: {\n              Accept: \"application/json\",\n              \"Content-Type\": \"application/json\",\n            },\n          }\n        );\n\n        var resultProperties = await reqProperties.json();\n\n        const finalResult = [];\n        result.properties.forEach((p) => {\n          resultProperties.properties.forEach((r) => {\n            if (p === r.id) {\n              finalResult.push({\n                value: r.id,\n                label: r.name,\n                displayOrder: r.displayOrder,\n                domain:\n                  r.domains != undefined &&\n                  r.domains.length > 0 &&\n                  r.domains.filter((m) => m.priority === 1).length > 0\n                    ? r.domains.filter((m) => m.priority === 1)[0].type\n                    : \"\",\n              });\n            }\n          });\n        });\n\n        const sortfinalResult = finalResult.sort(\n          this.dynamicSort(\"displayOrder\")\n        );\n        if (sortfinalResult.length > 0) {\n          var property = localStorage.getItem(this.state.lStore.PROPERTYID);\n          this.setState({ pid: property });\n          var proid = property === null ? \"-1\" : property;\n          this.loadFormSetting(proid);\n          if (property) {\n            let obj = sortfinalResult.find((o) => o.value === property);\n            this.state.bookingApp.selectedPid = obj;\n          } else {\n            const groupCall = await fetch(GROUP_URL + \"/\" + this.props.gid, {\n              method: \"GET\",\n              headers: {\n                Accept: \"application/json\",\n                \"Content-Type\": \"application/json\",\n              },\n            });\n\n            var groupData = await groupCall.json();\n            //store groupData \n            this.setState({ groupData });\n            //If not group level domain setup\n            if (groupData.group.domain === \"\") {\n              this.state.bookingApp.selectedPid = sortfinalResult[0];\n              this.setState({\n                pid: sortfinalResult[0].value,\n              });\n              this.loadFormSetting(sortfinalResult[0].value);\n              localStorage.setItem(\n                this.state.lStore.PROPERTYID,\n                sortfinalResult[0].value\n              );\n              localStorage.setItem(\n                this.state.lStore.DOMAIN,\n                sortfinalResult[0].domain\n              );\n            }\n          }\n\n          try {\n            var propertyName = localStorage.getItem(\n              this.state.lStore.PROPERTYNAME\n            );\n            if (propertyName) {\n              let obj = sortfinalResult.find((o) => o.label === propertyName);\n              localStorage.setItem(this.state.lStore.PROPERTYNAME, obj.label);\n            } else {\n              const groupCall = await fetch(GROUP_URL + \"/\" + this.props.gid, {\n                method: \"GET\",\n                headers: {\n                  Accept: \"application/json\",\n                  \"Content-Type\": \"application/json\",\n                },\n              });\n\n              var groupData = await groupCall.json();\n               //store groupData \n            this.setState({ groupData });\n              //If not group level domain setup\n              if (groupData.group.domain === \"\") {\n                localStorage.setItem(\n                  this.state.lStore.PROPERTYNAME,\n                  sortfinalResult[0].label\n                );\n              }\n            }\n          } catch (e) {\n            const groupCall = await fetch(GROUP_URL + \"/\" + this.props.gid, {\n              method: \"GET\",\n              headers: {\n                Accept: \"application/json\",\n                \"Content-Type\": \"application/json\",\n              },\n            });\n\n            var groupData = await groupCall.json();\n             //store groupData \n            this.setState({ groupData });\n            if (groupData.group.domain === \"\") {\n              localStorage.setItem(\n                this.state.lStore.PROPERTYNAME,\n                sortfinalResult[0].label\n              );\n            }\n          }\n        }\n\n        this.state.bookingApp.properties = sortfinalResult;\n      } else if (\n        (this.props.pid === \"\" || this.props.pid === undefined) &&\n        result.properties.length === 1\n      ) {\n        const reqProperties = await fetch(\n          PROPERTIES_URL + \"/\" + this.props.gid,\n          {\n            method: \"GET\",\n            headers: {\n              Accept: \"application/json\",\n              \"Content-Type\": \"application/json\",\n            },\n          }\n        );\n\n        var resultProperties = await reqProperties.json();\n        result.properties.forEach((p) => {\n          resultProperties.properties.forEach((r) => {\n            if (p === r.id) {\n              localStorage.setItem(this.state.lStore.PROPERTYNAME, r.name);\n              localStorage.setItem(this.state.lStore.PROPERTYID, r.id);\n              localStorage.setItem(\n                this.state.lStore.DOMAIN,\n                r.domains != undefined &&\n                  r.domains.length > 0 &&\n                  r.domains.filter((m) => m.priority === 1).length > 0\n                  ? r.domains.filter((m) => m.priority === 1)[0].type\n                  : \"\"\n              );\n              this.setState({ pid: r.id });\n              this.loadFormSetting(r.id);\n            }\n          });\n        });\n      } else if (this.props.pid !== \"\" && this.props.pid !== undefined) {\n        const reqProperties = await fetch(\n          PROPERTIES_URL + \"/\" + this.props.gid,\n          {\n            method: \"GET\",\n            headers: {\n              Accept: \"application/json\",\n              \"Content-Type\": \"application/json\",\n            },\n          }\n        );\n\n        var resultProperties = await reqProperties.json();\n        resultProperties.properties.forEach((r) => {\n          if (this.props.pid === r.id) {\n            localStorage.setItem(this.state.lStore.PROPERTYNAME, r.name);\n            localStorage.setItem(this.state.lStore.PROPERTYID, r.id);\n            localStorage.setItem(\n              this.state.lStore.DOMAIN,\n              r.domains != undefined &&\n                r.domains.length > 0 &&\n                r.domains.filter((m) => m.priority === 1).length > 0\n                ? r.domains.filter((m) => m.priority === 1)[0].type\n                : \"\"\n            );\n            this.setState({ pid: r.id });\n            this.loadFormSetting(r.id);\n          }\n        });\n      }\n    }\n\n    if (result.nudges) {\n      this.setState({ nudges: result.nudges });\n    }\n    if (result.botSettings) {\n      this.setState({ botSettings: result.botSettings });\n    }\n    if (result.liveChatSettings) {\n      this.setState({ liveChatSettings: result.liveChatSettings });\n    }\n    if (result.persistentMenu) {\n      let SideMenuItem = [];\n      if (\n        (this.props.pid === \"\" || this.props.pid === undefined) &&\n        result.level === \"Group\" &&\n        result.properties.length > 1\n      ) {\n        SideMenuItem = [\n          {\n            type: \"postback\",\n            title: \"Switch Language\",\n            payLoad: \"switch_language\",\n            url: \"\",\n          },\n          {\n            type: \"postback\",\n            title: \"Switch Property\",\n            payLoad: \"select_property\",\n            url: \"\",\n          },\n          {\n            type: \"postback\",\n            title: \"Restart Chat\",\n            payLoad: \"restart\",\n            url: \"\",\n          },\n          {\n            type: \"postback\",\n            title: \"Hide Bot\",\n            payLoad: \"hidebot\",\n            url: \"\",\n          },\n        ];\n      } else if (\n        (this.props.pid === \"\" || this.props.pid === undefined) &&\n        result.properties.length === 1\n      ) {\n        SideMenuItem = [\n          {\n            type: \"postback\",\n            title: \"Switch Language\",\n            payLoad: \"switch_language\",\n            url: \"\",\n          },\n          {\n            type: \"postback\",\n            title: \"Restart Chat\",\n            payLoad: \"restart\",\n            url: \"\",\n          },\n          {\n            type: \"postback\",\n            title: \"Hide Bot\",\n            payLoad: \"hidebot\",\n            url: \"\",\n          },\n        ];\n      } else if (this.props.pid !== \"\" || this.props.pid !== undefined) {\n        SideMenuItem = [\n          {\n            type: \"postback\",\n            title: \"Switch Language\",\n            payLoad: \"switch_language\",\n            url: \"\",\n          },\n          {\n            type: \"postback\",\n            title: \"Restart Chat\",\n            payLoad: \"restart\",\n            url: \"\",\n          },\n          {\n            type: \"postback\",\n            title: \"Hide Bot\",\n            payLoad: \"hidebot\",\n            url: \"\",\n          },\n        ];\n      }\n\n      let MenuData = [];\n      if (\n        result.persistentMenu.menus.length > 0 &&\n        result.persistentMenu.menuEnabled\n      ) {\n        result.persistentMenu.menus.map((item, index) => {\n          let MenuDataItem = [];\n          item.callToActions.map((menu) => {\n            MenuDataItem.push({\n              type: menu.type,\n              title: menu.title,\n              payLoad: menu.payLoad,\n              url: menu.url,\n            });\n          });\n          SideMenuItem.map((sideItem) => {\n            MenuDataItem.push({\n              type: sideItem.type,\n              title: sideItem.title,\n              payLoad: sideItem.payLoad,\n              url: sideItem.url,\n            });\n          });\n\n          MenuData.push({\n            locale: item.locale,\n            callToActions: MenuDataItem,\n          });\n        });\n      } else {\n        let MenuDataItem = [];\n        SideMenuItem.map((sideItem) => {\n          MenuDataItem.push({\n            type: sideItem.type,\n            title: sideItem.title,\n            payLoad: sideItem.payLoad,\n            url: sideItem.url,\n          });\n        });\n        MenuData.push({\n          locale: \"default\",\n          callToActions: MenuDataItem,\n        });\n      }\n      this.setState({\n        persistentMenu: MenuData,\n        persistentMenuEnabled: result.persistentMenu.menuEnabled,\n      });\n    }\n    this.postMessage(\"messengerChatWindowOpened\");\n    return;\n  }\n\n  runNudges() {\n    if (!this.state.nudges || this.state.opened || this.state.disabledChatbot) {\n      return;\n    }\n    if (typeof Storage !== \"undefined\") {\n      this.postMessage(\"totalnudges:\" + this.state.nudges.length);\n    }\n    this.state.nudges.forEach((nudge) => {\n      if (\n        this.props.mobile === \"true\"\n          ? !nudge.disabledInMobile\n          : !nudge.disabledInDesktop\n      ) {\n        setTimeout(\n          () => {\n            if (\n              nudge.eyeCatcher &&\n              nudge.eyeCatcher.response &&\n              nudge.eyeCatcher.response.messages\n            ) {\n              if (\n                nudge.buttons !== null &&\n                nudge.buttons !== undefined &&\n                this.props.mobile == \"false\" &&\n                nudge.buttons.length > 0\n              ) {\n                this.postMessage(\n                  \"nudgebutton:\" +\n                    JSON.stringify({\n                      text: nudge.eyeCatcher.response.messages,\n                      buttons: nudge.buttons,\n                      botSettings: this.state.botSettings,\n                    })\n                );\n              } else {\n                this.postMessage(\n                  \"eyecatcher:\" +\n                    JSON.stringify(nudge.eyeCatcher.response.messages)\n                );\n              }\n            }\n          },\n          this.props.mobile === \"true\"\n            ? nudge.delayInMillisecondsInMobile\n            : nudge.delayInMilliseconds\n        );\n      }\n    });\n  }\n\n  /**\n   * Posts a message to the parent window, if this window has one\n   * @param {*} msg\n   */\n  postMessage(msg) {\n    if (window.parent) {\n      window.parent.postMessage(msg, \"*\");\n    }\n  }\n\n  refresh() {\n    new ChatWindowParticipantTagger().clearTags();\n    localStorage.removeItem(this.state.lStore.CHAT_STATE);\n    localStorage.removeItem(this.props.iid + \"-chatfeedback\");\n    this.setState({\n      extensions: { _api: ChatAppExtensions.getAPI(this, this.props) },\n    });\n    localStorage.removeItem(this.state.lStore.EXTENSIONS);\n    this.state.chatBindings.showBookingForm(false, false);\n    if (this.state.livechat) {\n      this.state.livechat.closeChat();\n      this.state.livechat.destroy();\n      this.setState({\n        inputEnabled: false,\n        inLiveChat: false,\n        started: false,\n        inTwilioChat: false,\n        twiliochat: undefined,\n        livechat: undefined,\n        loadingLivechat: false,\n        agentName: undefined,\n        getRoomTypes: undefined,\n        inGenesysPureCloudChat: false,\n        inAwsConnect: false,\n        inMewsChat: false,\n        store: getChatStore(this.state.chatBindings, true),\n      });\n    }\n    localStorage.removeItem(this.state.lStore.CREDENTIALS);\n    localStorage.removeItem(this.state.lStore.LIVECHAT_STARTED);\n    localStorage.removeItem(this.state.lStore.MEWS_CHAT_STARTED);\n    localStorage.removeItem(this.state.lStore.MEWS_THREAD);\n    localStorage.removeItem(this.state.lStore.GENESYS_CLOUD_STARTED);\n    localStorage.removeItem(this.state.lStore.AWS_CONNECT_STARTED);\n    localStorage.removeItem(this.state.lStore.AWS_CONNECT_THREAD);\n    localStorage.removeItem(this.state.lStore.AWS_CONNECT_REGION);\n    localStorage.removeItem(this.state.lStore.PROPERTYID);\n    localStorage.removeItem(this.state.lStore.PROPERTYNAME);\n    localStorage.removeItem(this.state.lStore.LANGUAGE);\n    localStorage.removeItem(this.state.lStore.LIVECHATCLIENT);\n    localStorage.removeItem(this.state.lStore.BOTCLICK);\n    localStorage.removeItem(this.state.lStore.LIVECHATMESSAGESTAMP);\n    this.setState({\n      getRoomTypes: undefined,\n    });\n    if (this.state.zendesk !== undefined) {\n      this.state.zendesk.endChat();\n    }\n    this.setState({\n      getRoomTypes: undefined,\n      botSettings: undefined,\n      inactivePopupOne: false,\n      inactivePopupTwo: false,\n      moveTop: false,\n      inTwilioChat: false,\n      twiliochat: undefined,\n      twilioChatId: undefined,\n      agentId: \"\",\n      inZenDesk: false,\n      zendesk: undefined,\n    });\n    this.closed();\n    window.location.reload();\n  }\n\n  endGenesysPureCloud(textMessage) {\n    fetch(`${process.env.REACT_APP_API_URL}/genesys/sendmessage`, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify({\n        token: this.state.genesysPureCloudSettings.token,\n        messageIntegrationId:\n          this.state.genesysPureCloudSettings.messageIntegrationId,\n        text: textMessage,\n        from: {\n          id: this.state.directline.conversationId,\n          idType: \"Opaque\",\n        },\n      }),\n    }).catch((err) => {\n      console.error(\"Bmb livechat logging failed :(.\");\n      console.error(err);\n    });\n  }\n\n  endAmazonConnect(textMessage) {\n    fetch(\n      `https://participant.connect.ap-southeast-2.amazonaws.com/participant/message`,\n      {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"X-Amz-Bearer\":\n            this.state.amazonConnectToken.ConnectionCredentials.ConnectionToken,\n        },\n        body: JSON.stringify({\n          Content: textMessage, // The actual chat message\n          ContentType: \"text/plain\", // Currently, supported type is text/plain\n        }),\n      }\n    ).catch((err) => {\n      console.error(\"Bmb livechat logging failed :(.\");\n      console.error(err);\n    });\n\n    fetch(\n      `https://participant.connect.ap-southeast-2.amazonaws.com/participant/disconnect`,\n      {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          \"X-Amz-Bearer\":\n            this.state.amazonConnectToken.ConnectionCredentials.ConnectionToken,\n        },\n        body: JSON.stringify({}),\n      }\n    ).catch((err) => {\n      console.error(\"Bmb livechat logging failed :(.\");\n      console.error(err);\n    });\n  }\n\n  endMewsChat(textMessage) {\n    let msg = [];\n    if (\n      this.state.mewsChatSettings !== undefined &&\n      this.state.mewsChatSettings.Id !== undefined\n    ) {\n      msg.push({\n        Text: textMessage,\n        MessageThreadId: this.state.mewsChatSettings.Id,\n        Identifier: \"\",\n      });\n    }\n    if (msg.length > 0) {\n      fetch(\n        `${MEWS_API}/send-message?cid=${this.state.directline.conversationId}&iid=${this.props.iid}&gid=${this.props.gid}`,\n        {\n          method: \"POST\",\n          headers: {\n            \"Content-Type\": \"application/json\",\n          },\n          body: JSON.stringify({\n            msg: msg,\n          }),\n        }\n      ).catch((err) => {\n        console.error(\"Bmb livechat logging failed :(.\");\n        console.error(err);\n      });\n    }\n  }\n  /**\n   * Deletes stored credentials and restarts\n   */\n\n  end() {\n    new ChatWindowParticipantTagger().clearTags();\n    localStorage.removeItem(this.state.lStore.CHAT_STATE);\n    localStorage.removeItem(this.props.iid + \"-chatfeedback\");\n    this.setState({\n      extensions: { _api: ChatAppExtensions.getAPI(this, this.props) },\n    });\n    localStorage.removeItem(this.state.lStore.EXTENSIONS);\n    this.state.chatBindings.showBookingForm(false, false);\n    if (this.state.livechat) {\n      this.state.livechat.closeChat();\n      this.state.livechat.destroy();\n      this.setState({\n        inputEnabled: false,\n        inLiveChat: false,\n        started: false,\n        livechat: undefined,\n        loadingLivechat: false,\n        agentName: undefined,\n        getRoomTypes: undefined,\n        moveTop: false,\n        store: getChatStore(this.state.chatBindings, true),\n      });\n    }\n    if (this.state.twiliochat) {\n      this.state.twiliochat.sendMessage(\"The user has left the conversation.\");\n\n      fetch(TWILIO_END_CONVERSATION, {\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify({ twilioConversationId: this.state.twilioChatId }),\n      }).then((res) => {});\n      this.setState({\n        inputEnabled: false,\n        inTwilioChat: false,\n        twiliochat: undefined,\n        twilioChatId: undefined,\n        started: false,\n        livechat: undefined,\n        loadingLivechat: false,\n        agentName: undefined,\n        getRoomTypes: undefined,\n        store: getChatStore(this.state.chatBindings, true),\n      });\n    }\n    if (this.state.signalrchat) {\n      this.state.signalrchat.invoke(\"SendConversationMessageToAgent\", {\n        groupname: this.state.directline.conversationId,\n        message: \"The user has left the conversation.\",\n      });\n      //this.state.signalrchat.stop();\n      this.setState({\n        inputEnabled: false,\n        inSignalRChat: false,\n        signalrchat: undefined,\n        signalRChatId: undefined,\n        started: false,\n        livechat: undefined,\n        loadingLivechat: false,\n        agentName: undefined,\n        getRoomTypes: undefined,\n        store: getChatStore(this.state.chatBindings, true),\n      });\n    }\n\n    if (this.state.inGenesysPureCloudChat) {\n      this.endGenesysPureCloud(\"The user has left the conversation.\");\n      this.setState({ inGenesysPureCloudChat: false });\n    }\n\n    if (this.state.inAwsConnect) {\n      this.endAmazonConnect(\"The user has left the conversation.\");\n      this.setState({ inAwsConnect: false });\n    }\n\n    localStorage.removeItem(this.state.lStore.CREDENTIALS);\n    localStorage.removeItem(this.state.lStore.LIVECHAT_STARTED);\n    localStorage.removeItem(this.state.lStore.GENESYS_CLOUD_STARTED);\n    localStorage.removeItem(this.state.lStore.AWS_CONNECT_STARTED);\n    localStorage.removeItem(this.state.lStore.AWS_CONNECT_THREAD);\n    localStorage.removeItem(this.state.lStore.AWS_CONNECT_REGION);\n    localStorage.removeItem(this.state.lStore.MEWS_CHAT_STARTED);\n    localStorage.removeItem(this.state.lStore.MEWS_THREAD);\n    localStorage.removeItem(this.state.lStore.PROPERTYID);\n    localStorage.removeItem(this.state.lStore.PROPERTYNAME);\n    localStorage.removeItem(this.state.lStore.LANGUAGE);\n    localStorage.removeItem(this.state.lStore.BOTCLICK);\n    localStorage.removeItem(this.state.lStore.LIVECHATCLIENT);\n    localStorage.removeItem(this.state.lStore.LIVECHATMESSAGESTAMP);\n    this.setState({ directline: undefined });\n    this.setState({ botclick: false });\n\n    if (this.state.zendesk !== undefined) {\n      // zChat.un(\"connection_update\", function (status) {console.log(status)});\n      // zChat.un(\"chat\", function (status) {console.log(status)});\n      // this.state.zendesk.un(\"connection_update\", function (status) {\n      //   console.log(status);\n      // });\n      // this.state.zendesk.un(\"chat\", function (detail) {\n      //   console.log(detail);\n      // });\n      this.state.zendesk.endChat();\n    }\n    this.setState({\n      getRoomTypes: undefined,\n      botSettings: undefined,\n      inactivePopupOne: false,\n      inactivePopupTwo: false,\n      moveTop: false,\n      inTwilioChat: false,\n      twiliochat: undefined,\n      twilioChatId: undefined,\n      agentId: \"\",\n      inZenDesk: false,\n      inMewsChat: false,\n      openZChat_popup: false,\n      open_ZChatfeedback_popup: false,\n      property_popup: false,\n      //zendesk: undefined,\n    });\n    // this.closed();\n    setTimeout(() => {\n      this.startConversation(false).then((m) => {\n        this.recordClick();\n      });\n    }, 50);\n  }\n\n  endTwilio() {\n    this.setState({\n      inTwilioChat: false,\n      twiliochat: undefined,\n      twilioChatId: undefined,\n      agentId: \"\",\n    });\n  }\n\n  endSignalRChat() {\n    this.state.signalrchat.stop();\n    this.setState({\n      inSignalRChat: false,\n      signalrchat: undefined,\n      signalRChatId: undefined,\n      agentId: \"\",\n    });\n  }\n\n  setAgentId(id) {\n    this.setState({\n      agentId: id,\n    });\n  }\n\n  close_pop = () => {\n    var getRoomTypes = this.state.getRoomTypes\n      ? this.state.getRoomTypes\n      : undefined;\n    if (getRoomTypes) {\n      getRoomTypes.reinit = false;\n      this.setState({ getRoomTypes: getRoomTypes });\n    }\n  };\n  /**\n   * Attempts to restore any stored chat, otherwise will fetch a new token and restart\n   */\n  async startConversation(createZchat) {\n    // Existing token\n    try {\n      var stored = JSON.parse(\n        localStorage.getItem(this.state.lStore.CREDENTIALS)\n      );\n\n      if (stored && stored.token && stored.uid) {\n        this.setState({ user_id: stored.uid });\n\n        // Attempt to refresh the token\n        var msg = await fetch(MS_REFRESH_URL, {\n          method: \"POST\",\n          headers: {\n            Authorization: \"Bearer \" + stored.token,\n          },\n        });\n        var body = await msg.json();\n\n        if (msg.status === 200 && body && body.token) {\n          this.setState({ directline: new DirectLine({ token: body.token }) });\n\n          localStorage.setItem(\n            this.state.lStore.CREDENTIALS,\n            JSON.stringify({\n              token: body.token,\n              uid: stored.uid,\n            })\n          );\n          await this.registerPageLoad(body.conversationId);\n          this.runNudges();\n\n          // if (\n          //   this.state.liveChatSettings !== undefined &&\n          //   this.state.liveChatSettings.enabled === true &&\n          //   this.state.liveChatSettings.provider == \"1\" &&\n          //   createZchat === true\n          // ) {\n          //   var connection_status = zChat.getConnectionStatus();\n          //   if (connection_status == \"closed\") {\n          //     zChat.init({\n          //       account_key: this.state.liveChatSettings.zendesk.accountKey,\n          //     });\n          //     if (\n          //       localStorage.getItem(this.state.lStore.LIVECHAT_STARTED) ===\n          //       \"yes\"\n          //     ) {\n          //       this.zenDeskFunctions(\n          //         zChat,\n          //         this.state.liveChatSettings.zendesk.departmentId\n          //       );\n          //     }\n          //   }\n          //   this.setState({\n          //     zendesk: zChat,\n          //     zendeskDepartment:\n          //       this.state.liveChatSettings.zendesk.departmentId,\n          //   });\n          // } else if (\n          //   this.state.liveChatSettings !== undefined &&\n          //   this.state.liveChatSettings.enabled === true &&\n          //   this.state.liveChatSettings.provider == \"2\"\n          // ) {\n          //   this.startGenesysPureCloudChat();\n          // }\n          // else if (\n          //   this.state.liveChatSettings !== undefined &&\n          //   this.state.liveChatSettings.enabled === true &&\n          //   this.state.liveChatSettings.provider == \"3\"\n          // ) {\n          //   this.isMewsChatStarted();\n          // }\n\n          if (\n            localStorage.getItem(this.state.lStore.AWS_CONNECT_STARTED) !==\n              undefined &&\n            localStorage.getItem(this.state.lStore.AWS_CONNECT_STARTED) ===\n              \"yes\"\n          ) {\n            let status;\n            fetch(\n              `https://participant.connect.${localStorage.getItem(\n                this.state.lStore.AWS_CONNECT_REGION\n              )}.amazonaws.com/participant/connection`,\n              {\n                method: \"POST\",\n                headers: {\n                  \"Content-Type\": \"application/json\",\n                  \"X-Amz-Bearer\": localStorage.getItem(\n                    this.state.lStore.AWS_CONNECT_THREAD\n                  ),\n                },\n                body: JSON.stringify({\n                  ConnectParticipant: false,\n                  Type: [\"WEBSOCKET\", \"CONNECTION_CREDENTIALS\"],\n                }),\n              }\n            )\n              .then((tokenresponse) => {\n                status = tokenresponse.status;\n                return tokenresponse.json();\n              })\n              .then((tokenJson) => {\n                console.log(tokenJson);\n                console.log(status);\n                if (status === 200) {\n                  this.setState({ inAwsConnect: true });\n                  this.setState({ amazonConnectToken: tokenJson });\n                  if (\n                    localStorage.getItem(\n                      this.state.lStore.AWS_CONNECT_STARTED\n                    ) !== \"yes\"\n                  ) {\n                    localStorage.setItem(\n                      this.state.lStore.AWS_CONNECT_STARTED,\n                      \"yes\"\n                    );\n                  }\n                  const ws = new WebSocket(tokenJson.Websocket.Url); // Here, you use the websocket URL that you obtained from the response of CreateParticipantConnection API\n                  const initialMessage = {\n                    topic: \"aws/subscribe\",\n                    content: {\n                      topics: [\"aws/chat\"],\n                    },\n                  };\n\n                  ws.addEventListener(\"message\", (event) => {\n                    // process event here\n                    console.log(event.data);\n                    const response = JSON.parse(event.data);\n                    if (response.topic === \"aws/chat\") {\n                      const responseMessage = JSON.parse(response.content);\n                      if (responseMessage.Type === \"MESSAGE\") {\n                        // display message in interface here\n                        this.state.store.dispatch({\n                          type: \"AMAZONCONNECT/NEW_MESSAGE\",\n                          payload: responseMessage,\n                        });\n                      } else if (responseMessage.Type === \"EVENT\") {\n                        if (\n                          responseMessage.ContentType ===\n                            \"application/vnd.amazonaws.connect.event.typing\" &&\n                          responseMessage.ParticipantRole !== \"CUSTOMER\"\n                        ) {\n                          this.state.store.dispatch({\n                            type: \"TWILIO/TYPING\",\n                          });\n                        } else if (\n                          responseMessage.ContentType ===\n                          \"application/vnd.amazonaws.connect.event.chat.ended\"\n                        ) {\n                          localStorage.removeItem(\n                            this.state.lStore.AWS_CONNECT_STARTED\n                          );\n                          localStorage.removeItem(\n                            this.state.lStore.AWS_CONNECT_THREAD\n                          );\n                          localStorage.removeItem(\n                            this.state.lStore.AWS_CONNECT_REGION\n                          );\n                          this.setState({ inAwsConnect: false });\n                          this.state.store.dispatch({\n                            type: \"LIVECHAT/CHAT_END\",\n                            payload: \"\",\n                          });\n                        }\n                      }\n                    }\n                  });\n                } else {\n                  localStorage.removeItem(\n                    this.state.lStore.AWS_CONNECT_STARTED\n                  );\n                  localStorage.removeItem(this.state.lStore.AWS_CONNECT_THREAD);\n                  localStorage.removeItem(this.state.lStore.AWS_CONNECT_REGION);\n                }\n                // localStorage.setItem(\n                //   this.state.lStore.AWS_CONNECT_THREAD,\n                //   json.result.ContactId\n                // );\n              });\n            // })\n            // .catch((err) => {\n            //   console.error(\"Bmb livechat logging failed :(.\");\n            //   console.error(err);\n            // });\n          }\n\n          return; // QUIT FLOW if session succesfully recovered\n        }\n      }\n    } catch {}\n\n    // If session has expired/never existed\n\n    if (this.props.openChatWindow === false) {\n      this.closed();\n    }\n    this.setState({\n      store: getChatStore(this.state.chatBindings, true),\n      inputEnabled: false,\n      inLiveChat: false,\n      started: false,\n      livechat: undefined,\n      loadingLivechat: false,\n      agentName: undefined,\n      inGenesysPureCloudChat: false,\n      inAwsConnect: false,\n      inMewsChat: false,\n    });\n\n    localStorage.removeItem(this.state.lStore.LIVECHAT_STARTED);\n    localStorage.removeItem(this.state.lStore.MEWS_CHAT_STARTED);\n    localStorage.removeItem(this.state.lStore.GENESYS_CLOUD_STARTED);\n    localStorage.removeItem(this.state.lStore.AWS_CONNECT_STARTED);\n    localStorage.removeItem(this.state.lStore.AWS_CONNECT_THREAD);\n    localStorage.removeItem(this.state.lStore.AWS_CONNECT_REGION);\n    const res = await fetch(TOKEN_GEN_URL, {\n      method: \"POST\",\n    });\n\n    const data = await res.json();\n    var token = data.directline.token;\n\n    var uid = uuid();\n    this.setState({ user_id: uid });\n    this.setState({ directline: new DirectLine({ token: token }) });\n\n    localStorage.setItem(\n      this.state.lStore.CREDENTIALS,\n      JSON.stringify({\n        token,\n        uid,\n      })\n    );\n    await this.registerPageLoad(data.directline.conversationId);\n    this.runNudges();\n\n    if (\n      this.state.liveChatSettings !== undefined &&\n      this.state.liveChatSettings.enabled === true &&\n      this.state.liveChatSettings.provider == \"1\" &&\n      createZchat === true\n    ) {\n      var connection_status = zChat.getConnectionStatus();\n\n      if (connection_status == \"closed\") {\n        zChat.init({\n          account_key: this.state.liveChatSettings.zendesk.accountKey,\n        });\n      }\n      this.setState({\n        zendesk: zChat,\n        zendeskDepartment: this.state.liveChatSettings.zendesk.departmentId,\n      });\n    }\n  }\n\n  startSignalRchat(conversationId, twilioConversionId) {\n    const protocol = new JsonHubProtocol();\n    const transport =\n      HttpTransportType.WebSockets | HttpTransportType.LongPolling;\n    const options = {\n      transport,\n      logMessageContent: true,\n      logger: LogLevel.Error,\n    };\n\n    // create the connection instance\n    const hubConnection = new HubConnectionBuilder()\n      .withUrl(`${SIGNALR_URL}/api`, options)\n      .withHubProtocol(protocol)\n      .withAutomaticReconnect()\n      .build();\n    var uid = uuid();\n    //startSignalRConnection(connection);\n    hubConnection.start().then(() => {\n      console.info(\"SignalR Connected\");\n\n      hubConnection\n        .invoke(\"JoinConversation\", {\n          recipient: uid,\n          groupname: conversationId,\n        })\n        .catch(function (err) {\n          console.error(err.toString());\n        });\n      hubConnection.on(\"SignalRChatAgentMessage\", (message) => {\n        console.log(\"message to agent\", message);\n      });\n      hubConnection.on(\"UserTyping\", (message) => {\n        console.log(\"user typing\", message);\n      });\n      hubConnection.on(\"AgentTyping\", (message) => {\n        console.log(\"agent typing\", message);\n        this.state.store.dispatch({\n          type: \"SIGNALR/TYPING\",\n        });\n      });\n      hubConnection.on(\"SignalRChatUserMessage\", (message) => {\n        console.log(\"message to user\", message);\n        this.state.store.dispatch({\n          type: \"SIGNALR/NEW_MESSAGE\",\n          payload: message,\n        });\n      });\n\n      this.setState({ inSignalRChat: true });\n      this.setState({\n        signalrchat: hubConnection,\n      });\n    });\n  }\n\n  startTwiliochat(conversationId, twilioConversionId) {\n    if (this.state.twilioChatId === undefined) {\n      this.setState({ inTwilioChat: true, twilioChatId: twilioConversionId });\n      var identityBody = {\n        identity: `${conversationId}_user`,\n      };\n\n      fetch(TWILIO_TOKEN_GEN_URL, {\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify(identityBody),\n      }).then((tokenResponse) => {\n        tokenResponse.json().then((twilioToken) => {\n          this.setState({ twilioAccessToken: twilioToken.accessToken });\n          ConversationsClient.create(twilioToken.accessToken).then(\n            (twilioClient) => {\n              twilioClient.on(\"conversationJoined\", (conversation) => {\n                this.setState({\n                  twiliochat: conversation,\n                });\n                conversation.on(\"messageAdded\", (msg) => {\n                  this.state.store.dispatch({\n                    type: \"TWILIO/NEW_MESSAGE\",\n                    payload: msg.state,\n                  });\n                });\n                conversation.on(\"typingStarted\", (msg) => {\n                  this.state.store.dispatch({\n                    type: \"TWILIO/TYPING\",\n                  });\n                });\n                // conversation.on(\"typingEnded\", (msg) => {\n                //   console.log(\"typingEnded\")\n                // });\n              });\n            }\n          );\n        });\n      });\n    }\n  }\n\n  setInTwiliochat(status) {\n    this.setState({ inTwilioChat: status });\n  }\n\n  setInSignalRchat(status) {\n    this.setState({ inSignalRChat: status });\n  }\n\n  isInTwiliochat() {\n    return this.state.inTwilioChat;\n  }\n\n  isInSignalRchat() {\n    return this.state.inSignalRChat;\n  }\n\n  sendTwilioTypingIndicator() {\n    this.state.twiliochat.typing();\n  }\n\n  sendSignalRTypingIndicator() {\n    this.state.signalrchat.invoke(\"UserTyping\", {\n      groupname: this.state.directline.conversationId,\n      message: \"typing\",\n    });\n  }\n\n  sendZendeskTypingIndicator() {\n    this.state.zendesk.sendTyping(true);\n  }\n\n  zenDeskFunctions(zendesk, department) {\n    this.setState({ inZenDesk: true });\n    const self = this;\n    localStorage.setItem(self.state.lStore.LIVECHAT_STARTED, \"yes\");\n    if (\n      localStorage.getItem(self.state.lStore.VISITORDETAILS) !== null &&\n      localStorage.getItem(self.state.lStore.VISITORDETAILS) !== undefined\n    ) {\n      const preChat = JSON.parse(\n        localStorage.getItem(self.state.lStore.VISITORDETAILS)\n      );\n      var visitorInfo = {\n        display_name:\n          preChat.name === \"\"\n            ? preChat.firstName + \" \" + preChat.lastName\n            : preChat.name,\n      };\n      if (preChat.email !== \"\") {\n        visitorInfo.email = preChat.email;\n      }\n      if (preChat.phoneNumber !== \"\") {\n        visitorInfo.phone = preChat.phoneNumber;\n      }\n\n      zendesk.setVisitorInfo(visitorInfo, function (err) {});\n    }\n\n    var newPage = {\n      title: this.props.parent_title,\n      url: this.props.parent_location,\n    };\n\n    zChat.sendVisitorPath(newPage, function (err) {});\n    var zendeskDefaultDepartment = \"\";\n    if (\n      localStorage.getItem(self.state.lStore.ZENDESKGROUP) !== null &&\n      localStorage.getItem(self.state.lStore.ZENDESKGROUP) !== undefined &&\n      localStorage.getItem(self.state.lStore.ZENDESKGROUP) !== \"\"\n    ) {\n      zendeskDefaultDepartment = localStorage.getItem(\n        self.state.lStore.ZENDESKGROUP\n      );\n      const zendeskStartChat = setTimeout(() => {\n        zendesk.setVisitorDefaultDepartment(\n          parseInt(zendeskDefaultDepartment),\n          (err) => {\n            if (\n              localStorage.getItem(self.state.lStore.LIVECHAT_STARTED) === \"yes\"\n            ) {\n              zendesk.sendChatMsg(\"bot:Resuming chat as page is refreshed\");\n            } else {\n              sendHistoryToZendesk(self.state.store.getState(), zendesk);\n              localStorage.setItem(self.state.lStore.LIVECHAT_STARTED, \"yes\");\n            }\n          }\n        );\n      }, 2000);\n    } else {\n      sendHistoryToZendesk(self.state.store.getState(), zendesk);\n      localStorage.setItem(self.state.lStore.LIVECHAT_STARTED, \"yes\");\n    }\n    // if (department !== \"\") {\n    //   zChat.setVisitorDefaultDepartment(parseInt(department));\n    // }\n    // sendHistoryToZendesk(self.state.store.getState(), zendesk);\n\n    if (self.state.zendeskChatNew === true) {\n      self.setState({ zendeskChatNew: false });\n      zendesk.on(\"chat\", function (detail) {\n        if (detail.type === \"chat.msg\") {\n          const agents = zendesk.getServingAgentsInfo();\n          if (agents.length > 0 && self.state.inZenDesk === false) {\n            self.setState({\n              inZenDesk: true,\n            });\n            localStorage.setItem(self.state.lStore.LIVECHAT_STARTED, \"yes\");\n          }\n          if (detail.nick !== \"visitor\") {\n            if (\n              localStorage.getItem(self.state.lStore.LIVECHATMESSAGESTAMP) ===\n                null ||\n              (localStorage.getItem(self.state.lStore.LIVECHATMESSAGESTAMP) !==\n                null &&\n                parseInt(detail.timestamp) >=\n                  parseInt(\n                    localStorage.getItem(self.state.lStore.LIVECHATMESSAGESTAMP)\n                  ))\n            ) {\n              self.state.store.dispatch({\n                type: \"ZENDESK/NEW_MESSAGE\",\n                payload: detail.msg,\n              });\n              localStorage.setItem(\n                self.state.lStore.LIVECHATMESSAGESTAMP,\n                detail.timestamp\n              );\n            }\n          }\n        } else if (detail.type === \"typing\" && self.state.inZenDesk === true) {\n          self.state.store.dispatch({\n            type: \"LIVECHAT/TYPING\",\n          });\n        } else if (\n          detail.type === \"chat.memberjoin\" &&\n          self.state.inZenDesk === true\n        ) {\n          if (detail.nick !== \"visitor\") {\n            if (\n              localStorage.getItem(self.state.lStore.LIVECHATMESSAGESTAMP) ===\n                null ||\n              (localStorage.getItem(self.state.lStore.LIVECHATMESSAGESTAMP) !==\n                null &&\n                parseInt(detail.timestamp) >\n                  parseInt(\n                    localStorage.getItem(self.state.lStore.LIVECHATMESSAGESTAMP)\n                  ))\n            ) {\n              self.state.store.dispatch({\n                type: \"ZENDESK/NEW_MESSAGE\",\n                payload:\n                  \"Agent \" + detail.display_name + \" has joined the chat\",\n              });\n            }\n          }\n        } else if (\n          detail.type === \"chat.memberleave\" &&\n          self.state.inZenDesk === true\n        ) {\n          if (detail.nick !== \"visitor\") {\n            if (\n              localStorage.getItem(self.state.lStore.LIVECHATMESSAGESTAMP) ===\n                null ||\n              (localStorage.getItem(self.state.lStore.LIVECHATMESSAGESTAMP) !==\n                null &&\n                parseInt(detail.timestamp) >\n                  parseInt(\n                    localStorage.getItem(self.state.lStore.LIVECHATMESSAGESTAMP)\n                  ))\n            ) {\n              self.state.store.dispatch({\n                type: \"ZENDESK/NEW_MESSAGE\",\n                payload: \"Agent \" + detail.display_name + \"  has left the chat\",\n              });\n              const agents = zendesk.getServingAgentsInfo();\n              if (agents.length === 0) {\n                localStorage.removeItem(self.state.lStore.LIVECHAT_STARTED);\n                self.setState({\n                  inZenDesk: false,\n                  open_ZChatfeedback_popup: true,\n                });\n              }\n            }\n          }\n        } else if (\n          detail.type === \"chat.request.rating\" &&\n          self.state.inZenDesk === true\n        ) {\n          self.setState({\n            open_ZChatfeedback_popup: true,\n          });\n        }\n        if (\n          detail.type === \"chat.queue_position\" &&\n          self.state.inZenDesk === true\n        ) {\n          if (zChat.getQueuePosition() !== 0) {\n            if (zChat.getQueuePosition() === 1) {\n              self.state.store.dispatch({\n                type: \"ZENDESK/NEW_MESSAGE\",\n                payload: \"You are next in queue now\",\n              });\n            } else {\n              self.state.store.dispatch({\n                type: \"ZENDESK/NEW_MESSAGE\",\n                payload: \"Your position in queue is \" + detail.queue_position,\n              });\n            }\n          }\n        }\n      });\n    }\n    localStorage.setItem(this.state.lStore.LIVECHATCLIENT, zendesk);\n    const myInterval = setInterval(function () {\n      if (zChat.getQueuePosition() === 0) {\n        clearInterval(myInterval);\n      } else {\n        clearInterval(myInterval);\n        self.state.store.dispatch({\n          type: \"WEB_CHAT/SEND_EVENT\",\n          payload: {\n            name: \"agent_online_not_accepted\",\n          },\n          value: {},\n        });\n        const myIntervalBusy = setInterval(function () {\n          if (zChat.getQueuePosition() === 0) {\n            clearInterval(myIntervalBusy);\n          } else {\n            clearInterval(myIntervalBusy);\n            self.setState({ inZenDesk: false });\n            self.state.store.dispatch({\n              type: \"WEB_CHAT/SEND_EVENT\",\n              payload: {\n                name: \"agent_online_busy\",\n              },\n              value: {},\n            });\n          }\n        }, 60 * 1000);\n      }\n    }, 20 * 1000);\n  }\n\n  startZenDeskChat() {\n    const self = this;\n    if (self.state.zendesk.getConnectionStatus() === \"connected\") {\n      self.zenDeskFunctions(self.state.zendesk, self.state.zendeskDepartment);\n    } else {\n      self.state.zendesk.on(\"connection_update\", function (status) {\n        if (status === \"connected\") {\n          this.zenDeskFunctions(\n            self.state.zendesk,\n            self.state.zendeskDepartment\n          );\n        } else if (status === \"closed\") {\n          //self.state.zendesk.reconnect();\n        }\n      });\n    }\n  }\n\n  isMewsChatStarted() {\n    let settings = localStorage.getItem(this.state.lStore.MEWS_THREAD);\n    let isStarted = localStorage.getItem(this.state.lStore.MEWS_CHAT_STARTED);\n    if (isStarted == true) {\n      console.log(\n        localStorage.getItem(this.state.lStore.MEWS_CHAT_STARTED),\n        localStorage.getItem(this.state.lStore.MEWS_THREAD)\n      );\n      if (settings !== null && settings?.Id) {\n        this.setState({ inMewsChat: true });\n        this.setState({\n          mewsChatSettings: settings,\n        });\n      }\n    }\n  }\n\n  startMewsChat(json) {\n    console.log(json, json?.MessageThreads);\n    this.setState({ inMewsChat: true });\n    if (json?.MessageThreads && json?.MessageThreads.length > 0) {\n      this.setState({\n        mewsChatSettings: json.MessageThreads[0],\n      });\n      this.addThreadId(json?.MessageThreads[0]);\n      localStorage.setItem(\n        this.state.lStore.MEWS_THREAD,\n        JSON.stringify(json.MessageThreads[0])\n      );\n      var txt = `An agent has joined`;\n      this.state.store.dispatch({\n        type: \"LIVECHAT/NEW_MESSAGE\",\n        payload: { text: txt },\n      });\n      if (localStorage.getItem(this.state.lStore.MEWS_CHAT_STARTED) !== \"yes\") {\n        localStorage.setItem(this.state.lStore.MEWS_CHAT_STARTED, \"yes\");\n      }\n    }\n  }\n\n  startAWSConnectChat() {\n    this.setState({ inAwsConnect: true });\n    const history = getChatHistoryForAgent(this.state.store.getState());\n    // console.log(history);\n    fetch(\n      `${process.env.REACT_APP_API_URL}/awsconnectchat?groupId=${\n        this.props.gid\n      }&propertyId=${localStorage.getItem(this.state.lStore.PROPERTYID)}`,\n      {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify({\n          content: history,\n          displayName: \"CUSTOMER\",\n        }),\n      }\n    )\n      .then((response) => response.json())\n      .then((json) => {\n        console.log(json);\n\n        fetch(\n          `https://participant.connect.${json.region}.amazonaws.com/participant/connection`,\n          {\n            method: \"POST\",\n            headers: {\n              \"Content-Type\": \"application/json\",\n              \"X-Amz-Bearer\": json.result.ParticipantToken,\n            },\n            body: JSON.stringify({\n              ConnectParticipant: false,\n              Type: [\"WEBSOCKET\", \"CONNECTION_CREDENTIALS\"],\n            }),\n          }\n        )\n          .then((tokenresponse) => tokenresponse.json())\n          .then((tokenJson) => {\n            console.log(tokenJson);\n\n            localStorage.setItem(\n              this.state.lStore.AWS_CONNECT_THREAD,\n              json.result.ParticipantToken\n            );\n\n            localStorage.setItem(\n              this.state.lStore.AWS_CONNECT_REGION,\n              json.region\n            );\n\n            this.setState({ amazonConnectToken: tokenJson });\n            if (\n              localStorage.getItem(this.state.lStore.AWS_CONNECT_STARTED) !==\n              \"yes\"\n            ) {\n              localStorage.setItem(\n                this.state.lStore.AWS_CONNECT_STARTED,\n                \"yes\"\n              );\n            }\n            const ws = new WebSocket(tokenJson.Websocket.Url); // Here, you use the websocket URL that you obtained from the response of CreateParticipantConnection API\n            const initialMessage = {\n              topic: \"aws/subscribe\",\n              content: {\n                topics: [\"aws/chat\"],\n              },\n            };\n\n            ws.addEventListener(\"open\", () => {\n              ws.send(JSON.stringify(initialMessage));\n            });\n\n            ws.addEventListener(\"message\", (event) => {\n              // process event here\n              console.log(event.data);\n              const response = JSON.parse(event.data);\n              if (response.topic === \"aws/chat\") {\n                const responseMessage = JSON.parse(response.content);\n                if (responseMessage.Type === \"MESSAGE\") {\n                  // display message in interface here\n                  this.state.store.dispatch({\n                    type: \"AMAZONCONNECT/NEW_MESSAGE\",\n                    payload: responseMessage,\n                  });\n                } else if (responseMessage.Type === \"EVENT\") {\n                  if (\n                    responseMessage.ContentType ===\n                      \"application/vnd.amazonaws.connect.event.typing\" &&\n                    responseMessage.ParticipantRole !== \"CUSTOMER\"\n                  ) {\n                    this.state.store.dispatch({\n                      type: \"TWILIO/TYPING\",\n                    });\n                  } else if (\n                    responseMessage.ContentType ===\n                    \"application/vnd.amazonaws.connect.event.chat.ended\"\n                  ) {\n                    localStorage.removeItem(\n                      this.state.lStore.AWS_CONNECT_STARTED\n                    );\n                    localStorage.removeItem(\n                      this.state.lStore.AWS_CONNECT_THREAD\n                    );\n                    this.setState({ inAwsConnect: false });\n                    this.state.store.dispatch({\n                      type: \"LIVECHAT/CHAT_END\",\n                      payload: \"\",\n                    });\n                  } else if (\n                    responseMessage.ContentType ===\n                    \"application/vnd.amazonaws.connect.event.participant.joined\"\n                  ) {\n                    this.state.store.dispatch({\n                      type: \"AMAZONCONNECT/NEW_MESSAGE\",\n                      payload: `Agent ${responseMessage.DisplayName} has joined`,\n                    });\n                  }\n                }\n              }\n            });\n          });\n      })\n      .catch((err) => {\n        console.error(\"Bmb livechat logging failed :(.\");\n        console.error(err);\n      });\n  }\n\n  startGenesysPureCloudChat() {\n    this.setState({ inGenesysPureCloudChat: true });\n\n    fetch(\n      `${process.env.REACT_APP_API_URL}/genesys/settings/${this.props.iid}?groupID=${this.props.gid}`,\n      {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n        },\n      }\n    )\n      .then((response) => response.json())\n      .then((json) => {\n        this.setState({\n          genesysPureCloudSettings: json,\n        });\n        if (\n          localStorage.getItem(this.state.lStore.GENESYS_CLOUD_STARTED) !==\n          \"yes\"\n        ) {\n          localStorage.setItem(this.state.lStore.GENESYS_CLOUD_STARTED, \"yes\");\n\n          sendHistoryToGenesysPureCloud(\n            this.state.directline.conversationId,\n            json.token,\n            json.messageIntegrationId,\n            this.state.store.getState()\n          );\n        }\n      })\n      .catch((err) => {\n        console.error(\"Bmb livechat logging failed :(.\");\n        console.error(err);\n      });\n  }\n\n  /**\n   * When called, starts the livechat session to replace the bot\n   */\n  startLivechat() {\n    this.setState({ inLiveChat: true });\n    // this.setState({ inLiveChat: true, loadingLivechat: true });\n    this.setState({\n      livechat: LivechatSDK.init({\n        license: LIVECHAT_LICENSE,\n        group: LIVECHAT_GROUP,\n      }),\n    });\n\n    this.state.livechat.on(\"agent_changed\", (agent) => {\n      this.setState({ agentName: agent.name });\n    });\n\n    this.state.livechat.setVisitorData({\n      name: \"Book me Wallis\",\n      pageUrl: this.props.parent_location,\n      pageTitle: this.props.parent_title,\n      customProperties: {\n        ReferringWebsite: this.props.parent_referrer,\n        GroupID: this.props.gid,\n        IntegrationID: this.props.iid,\n        VisitorID: this.state.vid,\n        SessionID: this.state.sid,\n        ConversationID: this.state.directline.conversationId,\n      },\n    });\n\n    // Register listeners, and send welcome message when ready\n    this.state.livechat.on(\"ready\", () => {\n      // this.setState({ loadingLivechat: false });\n      this.state.livechat.getPredictedAgent().then((agent) => {\n        this.setState({ agentName: agent.name });\n      });\n\n      // Tell agent we are online and user that agent is connected\n      if (localStorage.getItem(this.state.lStore.LIVECHAT_STARTED) !== \"yes\") {\n        localStorage.setItem(this.state.lStore.LIVECHAT_STARTED, \"yes\");\n\n        sendChatStore(this.state.store.getState(), this.state.livechat);\n\n        this.state.livechat.sendMessage({\n          text: \"User requesting human transfer.\",\n          customId: String(Math.random()),\n        });\n\n        this.state.livechat.getPredictedAgent().then((agent) => {\n          var txt = agent.name\n            ? `Agent ${agent.name} has joined`\n            : `An agent has joined`;\n          this.state.store.dispatch({\n            type: \"LIVECHAT/NEW_MESSAGE\",\n            payload: { text: txt },\n          });\n        });\n      }\n\n      // Forward messages to directline\n      this.state.livechat.on(\"new_message\", (msg) => {\n        this.state.store.dispatch({\n          type: \"LIVECHAT/NEW_MESSAGE\",\n          payload: msg,\n        });\n      });\n\n      // Forward typing indicators to directline\n      this.state.livechat.on(\"typing_indicator\", () => {\n        this.state.store.dispatch({\n          type: \"LIVECHAT/TYPING\",\n        });\n      });\n\n      // Fire end chat event\n      this.state.livechat.on(\"chat_ended\", (msg) => {\n        this.state.store.dispatch({\n          type: \"LIVECHAT/CHAT_END\",\n          payload: msg,\n        });\n      });\n    });\n  }\n\n  /**\n   * Various setters/getters for children to take as props\n   * Mostly used by the ChatStore.js\n   */\n  enableChat() {\n    this.setState({ inputEnabled: true });\n  }\n  disableChat() {\n    this.setState({ inputEnabled: false });\n  }\n\n  getState() {\n    return this.state.store.getState();\n  }\n  getChatState() {\n    return this.state;\n  }\n\n  setConnectionStatus(status) {\n    if (\n      status === ConnectionStatus.FailedToConnect ||\n      status === ConnectionStatus.ExpiredToken ||\n      status === ConnectionStatus.Ended\n    ) {\n      this.setState({ connectionError: true });\n    } else {\n      this.setState({ connectionError: false });\n    }\n  }\n\n  setInactivePopupOne() {\n    this.setState({ inactivePopupOne: true });\n  }\n  closeInactivePopupOne() {\n    this.setState({ inactivePopupOne: false });\n  }\n\n  setInactivePopupTwo() {\n    this.setState({ inactivePopupOne: false, inactivePopupTwo: true });\n  }\n\n  opened() {\n    this.setState({ opened: true });\n    this.postMessage(\"chatbotwindowOpen\");\n    localStorage.setItem(this.state.lStore.OPENED, \"open\");\n    this.recordClick();\n  }\n\n  recordClick() {\n    if (\n      this.state.sid !== undefined &&\n      this.state.botclick === false &&\n      localStorage.getItem(this.state.lStore.BOTCLICK) !== \"true\"\n    ) {\n      const req = fetch(`${BOT_CLICKS}`, {\n        method: \"POST\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify({\n          groupId: this.props.gid,\n          sessionId: this.state.sid,\n          integrationId: this.props.iid,\n        }),\n      });\n      localStorage.setItem(this.state.lStore.BOTCLICK, \"true\");\n      this.setState({ botclick: false });\n    }\n  }\n\n  closed() {\n    if (this.state.resize === true) {\n      this.resize_actual();\n    }\n    this.postMessage(\"chatbotwindowClose\");\n    if (!this.props.defaultOpen) {\n      this.setState({ opened: false });\n      localStorage.removeItem(this.state.lStore.OPENED);\n    }\n    this.setState({ botclick: false });\n    setTimeout(() => {\n      this.runNudges();\n    }, 1000);\n  }\n\n  hide_bot() {\n    if (this.state.resize === true) {\n      this.resize_actual();\n    }\n    this.postMessage(\"chatbotHide\");\n    setTimeout(() => {\n      this.postMessage(\"chatbotwindowClose\");\n    }, 1000);\n    this.setState({ opened: false });\n    localStorage.removeItem(this.state.lStore.OPENED);\n    setTimeout(() => {\n      this.runNudges();\n    }, 930000);\n  }\n  resize_full() {\n    this.setState({ resize: true });\n    this.postMessage(\"resizefull\");\n  }\n  resize_actual() {\n    this.setState({ resize: false });\n    this.postMessage(\"resizeactual\");\n  }\n\n  setInLivechat(status) {\n    this.setState({ inLiveChat: status });\n  }\n  isInZendeskChat() {\n    return this.state.inZenDesk;\n  }\n  isInLivechat() {\n    return this.state.inLiveChat;\n  }\n\n  isInGenesysPureCloudChat() {\n    return this.state.inGenesysPureCloudChat;\n  }\n\n  isInAWSConnectChat() {\n    return this.state.inAwsConnect;\n  }\n\n  isInMewsChat() {\n    return this.state.inMewsChat;\n  }\n  mewsChatSettings() {\n    return this.state.mewsChatSettings;\n  }\n\n  genesysPureCloudChatSettings() {\n    return this.state.genesysPureCloudSettings;\n  }\n  amazonConnectTokenSettings() {\n    return this.state.amazonConnectToken;\n  }\n\n  hintClosed() {\n    this.setState({ currentNudge: undefined });\n  }\n\n  sendFeedbackZenDeskChat(data, endChat) {\n    const self = this;\n    if (data.status === \"send\") {\n      if (data.rate !== \"\") {\n        zChat.sendChatRating(data.rate);\n      }\n      if (data.comments !== \"\") {\n        zChat.sendChatComment(data.comments);\n      }\n    }\n    self.setState({ open_ZChatfeedback_popup: false });\n    if (endChat) {\n      self.end();\n    }\n  }\n\n  loadFormSetting(pid) {\n    fetch(\n      `${process.env.REACT_APP_API_URL}/form-setting?groupId=${this.props.gid}&propertyId=${pid}`,\n      {\n        method: \"GET\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\",\n        },\n      }\n    )\n      .then((response) => response.json())\n      .then((json) => {\n        this.setState({ formSettings: json.result });\n      });\n  }\n  /**\n   * Renders either the ChatWindow or the \"ChatBubble\" (bubble, pop up messages, etc visible when chat isn't)\n   */\n  render() {\n    const {\n      opened,\n      directline,\n      store,\n      inputEnabled,\n      user_id,\n      loadingLivechat,\n      agentName,\n      currentNudge,\n      makePayment,\n      animation,\n      botSettings,\n      bookingApp,\n      getRoomTypes,\n      pid,\n      blockChatbot,\n      disabledChatbot,\n      persistentMenu,\n      persistentMenuEnabled,\n    } = this.state;\n    const { mobile } = this.props;\nconsole.log('logo', this.state.groupData)\n    return (\n      <div>\n        {botSettings && !blockChatbot && persistentMenu ? (\n          <Fragment>\n            <ChatWindow\n              opened={opened}\n              pid={pid}\n              onClosed={this.closed.bind(this)}\n              directline={directline}\n              store={store}\n              inputEnabled={inputEnabled}\n              user_id={user_id}\n              endClicked={this.end.bind(this)}\n              closeClicked={this.closeInactivePopupOne.bind(this)}\n              loadingLivechat={loadingLivechat}\n              agentName={agentName}\n              bookingApp={bookingApp}\n              card_app={makePayment}\n              cookies_state_store={this.state.lStore.COOKIES}\n              language_state_store={this.state.lStore.LANGUAGE}\n              property_state_store={this.state.lStore.PROPERTYID}\n              visitor_state_store={this.state.lStore.VISITORDETAILS}\n              mobile={mobile}\n              cookies_data={this.state.cookiesData}\n              setBubbleToShrinkIn={() => {\n                this.setState({\n                  animation: { ...this.state.animation, bubbleToFadeIn: false },\n                });\n              }}\n              botSettings={botSettings}\n              room_app={getRoomTypes}\n              close_pop={this.close_pop}\n              isCheckedAvailability={this.state.isCheckedAvailability}\n              hideRoomDetail={this.state.hideRoomDetail}\n              customStyle={this.props.customStyle}\n              refreshClicked={this.refresh.bind(this)}\n              extensions={this.state.extensions}\n              connectionError={this.state.connectionError}\n              inactivePopupOne={this.state.inactivePopupOne}\n              inactivePopupTwo={this.state.inactivePopupTwo}\n              sid={this.state.sid}\n              vid={this.state.vid}\n              gid={this.props.gid}\n              iid={this.props.iid}\n              api={ChatAppExtensions.getAPI(this, this.props)}\n              hideTypingTextBox={this.hideTypingTextBox}\n              lang={this.state.lang}\n              moveTop={this.state.moveTop}\n              persistentMenu={persistentMenu}\n              persistentMenuEnabled={persistentMenuEnabled}\n              inTwiliochat={this.state.inTwilioChat}\n              messengerSettings={this.state.messengerSettings}\n              resize={this.state.resize}\n              resize_full={this.resize_full.bind(this)}\n              resize_actual={this.resize_actual.bind(this)}\n              hideBot={this.hide_bot.bind(this)}\n              availblity={this.state.availblity}\n              setAvailblity={this.setAvailblity.bind(this)}\n              inZenDesk={this.state.inZenDesk}\n              sendFeedbackZenDeskChat={this.sendFeedbackZenDeskChat.bind(this)}\n              openZChat_popup={this.state.open_ZChatfeedback_popup}\n              property_popup={this.state.property_popup}\n              setPropertyPopUp={this.setPropertyPopUp.bind(this)}\n              messenger={this.props.messenger}\n              bot_restartClick={() => {\n                this.setState({ bot_restart: false });\n              }}\n              bot_restart={this.state.bot_restart}\n              autoDetect={this.state.autoDetect}\n              bearerToken={this.state.bearerToken}\n              loadFormSetting={this.loadFormSetting.bind(this)}\n              formSettings={this.state.formSettings}\n              groupData={this.state.groupData}\n            />\n            {!opened &&\n              !blockChatbot &&\n              this.props.serviceview === false &&\n              botSettings.bubbleSettings !== undefined &&\n              botSettings.bubbleSettings !== null &&\n              botSettings.bubbleSettings.bubbleType !== undefined &&\n              botSettings.bubbleSettings.bubbleType !== null &&\n              (botSettings.bubbleSettings.bubbleType === \"Bubble\" ? (\n                <ChatBubble\n                  onOpened={this.opened.bind(this)}\n                  hintClosed={this.hintClosed.bind(this)}\n                  currentNudge={currentNudge}\n                  fadeIn={animation.bubbleToFadeIn}\n                  botSettings={botSettings}\n                  position={this.props.position}\n                  mobile={mobile}\n                  disabledChatbot={disabledChatbot}\n                />\n              ) : (\n                <SildeBubble\n                  onOpened={this.opened.bind(this)}\n                  hintClosed={this.hintClosed.bind(this)}\n                  currentNudge={currentNudge}\n                  fadeIn={animation.bubbleToFadeIn}\n                  botSettings={botSettings}\n                  position={this.props.position}\n                  mobile={mobile}\n                  disabledChatbot={disabledChatbot}\n                ></SildeBubble>\n              ))}\n          </Fragment>\n        ) : (\n          \"\"\n        )}\n        {blockChatbot ? (\n          <p style={{ color: \"white\" }}>\n            Access restricted: You need to be connected to the hotel's WiFi\n            network to start chatting with the digital assistant. Please connect\n            your device to the hotel's WiFi and try again.\n          </p>\n        ) : null}\n      </div>\n    );\n  }\n}\n"],"sourceRoot":""}