{"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 >© {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} > ×</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 \"¤cy=\" +\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 ×{\" \"}\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 ×{\" \"}\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":""}