{"version":3,"sources":["webpack:///./node_modules/js-cookie/src/js.cookie.js","webpack:///./assets/javascripts/modules/utils/ChatUtils.js"],"names":["__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","factory","undefined","call","exports","__webpack_require__","module","OldCookies","window","Cookies","api","noConflict","extend","i","result","arguments","length","attributes","key","init","converter","value","document","path","defaults","expires","Date","setMilliseconds","getMilliseconds","toUTCString","JSON","stringify","test","e","write","encodeURIComponent","String","replace","decodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","cookies","split","rdecode","parts","slice","join","this","json","charAt","name","read","parse","set","get","getJSON","apply","remove","withConverter","ChatUtils","_classCallCheck","TrackingComponent","options","defaultSelectors","SELECTORS","selectors","allSelectors","Object","assign","hasOwnProperty","setValue","cookieKey","hideCookieKey","labelName","noValue","selector","querySelector","toRet","tagName","toLowerCase","property","ctx","gslbBaseURL","embedded_svc","settings","displayHelpButton","language","liveChatLanguage","directToButtonRouting","prechatFormData","fallbackRouting","personalStylistSnapConfig","buttonIdSnapIn","country","dataset","website","toUpperCase","prechatFields","Primary_Language__c","Country__c","website_iso_country_code__c","LiveChat_Brand__c","chatBrand","LiveChat_Path1__c","location","href","readCookie","COOKIE_CONSTANTS","PATH_1","LiveChat_Path2__c","PATH_2","LiveChat_Path3__c","PATH_3","LiveChat_Path4__c","PATH_4","LiveChat_Path5__c","PATH_5","customerLoggedIn","FirstName","customerFirstName","LastName","customerLastName","Email","customerEmail","prepopulatedPrechatFields","defaultAssistiveText","defaultMinimizedText","chatLabelOnline","disabledMinimizedText","chatLabelOffline","enabledFeatures","entryFeature","addEventHandler","data","eventName","isAgentAvailable","evt","createEvent","initEvent","dispatchEvent","actions","deleteChat","personalStylistBanner","classList","contains","initializeChat","urlEnvironmentSF","urlEnvironmentSnapIn","chatOrgId","buttonNameSnapIn","baseLiveAgentContentURL","deploymentId","deploymentIdSnapIn","buttonId","baseLiveAgentURL","eswLiveAgentDevName","isOfflineSupportEnabled","initESW","pathName","pathname","shiftPathCookies","writeCookie","observer","MutationObserver","records","forEach","record","list","addedNodes","_typeof","nodeType","getAttribute","classes","includes","add","startButton","bindPSChat","prechatObserver","exitChatBtn","applyArrowDownStyles","chatEnding","sizeNode","observe","childList","subtree","div","manipulatePrechat","errorPrechat","chatDock","chatButton","startBtns","querySelectorAll","startChatLink","startBtn","fieldList","chatLabelStart","chatLabelStartDiv","createElement","innerHTML","insertBefore","firstChild","overrideLabels","hidePrechatFields","firstName","lastName","setAttribute","createSubjectSelect","createPrivacyCheckbox","createStartButton","applyPreChatStyle","chatLabelName","closest","chatLabelLastname","chatLabelEmail","chatLabelSubject","preselSubject","chatPreselectedSubject","hidingFields","#LiveChat_Path1__c","#LiveChat_Path2__c","#LiveChat_Path3__c","#LiveChat_Path4__c","#LiveChat_Path5__c","#LiveChat_Brand__c","#website_iso_country_code__c","#Country__c","#Primary_Language__c","#Type","#Subject","#LiveChat_Subject__c","element","subjectDiv","selectDiv","selectDivLabel","append","subjectSelect","subjectClassesDefault","subjectClasses","classArr","Array","isArray","cls","subjects","Option","targetSelect","addEventListener","checkboxDiv","checkbox","label","chatLabelPrivacy","fakeSubmit","ctaClassesDefault","ctaClasses","chatLabelCTA","buttonWrapper","bindStartChat","click","btn","setIntervalBtn","setInterval","style","width","clearInterval","startAlternativeButton","self","personalStylistPopUpReappearanceTime","myInterval","console","log","_this","fakeBtn","privacyInput","checked","checkForm","startChat","color","target","preventDefault","stopPropagation","removeEventListener","el","previousElementSibling","pass","fields","#FirstName","type","#LastName","fieldName","input","push","cleanFieldError","setFieldError","emailInput","subjectInput","inputBox","chatLabelLengthError","errorUl","errorLi","appendChild","errorBox","applyElStyle","element2","shadowRoot","styleID","styleSourceDiv","innerText","styleDiv","trim","shadowDomEl","constructor","endChatContainer","endChatMessage","endChatText","endChatContent","cloneNode","downloadBtn","saveBtn","display","deleteChatBtn","_this2","closeBtn","personalStylistCloseBtn","isFaqPage","$","setupPersonalStylistDelayedPopup","personalStylistPopUpTriggerTime","setExpires","checkReappearancePersonalStylistPopUp","exp","now","expireTime","getTime","Number","setTime","triggerIn","_this3","personalStylistStartChat","chatLabelSubjectOptionPS","setTimeout","personalStylistStartWhatsApp","obj","index","temp","prop","chatLabelSubjectOptionOD","chatLabelSubjectOptionPay","chatLabelSubjectOptionFi","chatLabelSubjectOptionCS","chatLabelSubjectOptionPAv","chatLabelSubjectOptionSt","chatLabelSubjectOptionRR","chatLabelSubjectOptionTA","SIZE","PATH","cookieName","start","indexOf","end","unescape","substring","cookieValue","__webpack_exports__"],"mappings":"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","file":"components-ChatComponent~components-LiveChatTriggerComponent.chunks.js","sourcesContent":["/*!\n * JavaScript Cookie v2.2.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader = false;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api (key, value, attributes) {\n\t\t\tvar result;\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Write\n\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tattributes = extend({\n\t\t\t\t\tpath: '/'\n\t\t\t\t}, api.defaults, attributes);\n\n\t\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\t\tvar expires = new Date();\n\t\t\t\t\texpires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n\t\t\t\t\tattributes.expires = expires;\n\t\t\t\t}\n\n\t\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\t\ttry {\n\t\t\t\t\tresult = JSON.stringify(value);\n\t\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\t\tvalue = result;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\n\t\t\t\tif (!converter.write) {\n\t\t\t\t\tvalue = encodeURIComponent(String(value))\n\t\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = converter.write(value, key);\n\t\t\t\t}\n\n\t\t\t\tkey = encodeURIComponent(String(key));\n\t\t\t\tkey = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n\t\t\t\tkey = key.replace(/[\\(\\)]/g, escape);\n\n\t\t\t\tvar stringifiedAttributes = '';\n\n\t\t\t\tfor (var attributeName in attributes) {\n\t\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName];\n\t\t\t\t}\n\t\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t\t}\n\n\t\t\t// Read\n\n\t\t\tif (!key) {\n\t\t\t\tresult = {};\n\t\t\t}\n\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t\t// calling \"get()\"\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar rdecode = /(%[0-9A-Z]{2})+/g;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!this.json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = parts[0].replace(rdecode, decodeURIComponent);\n\t\t\t\t\tcookie = converter.read ?\n\t\t\t\t\t\tconverter.read(cookie, name) : converter(cookie, name) ||\n\t\t\t\t\t\tcookie.replace(rdecode, decodeURIComponent);\n\n\t\t\t\t\tif (this.json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tresult = cookie;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!key) {\n\t\t\t\t\t\tresult[name] = cookie;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tapi.set = api;\n\t\tapi.get = function (key) {\n\t\t\treturn api.call(api, key);\n\t\t};\n\t\tapi.getJSON = function () {\n\t\t\treturn api.apply({\n\t\t\t\tjson: true\n\t\t\t}, [].slice.call(arguments));\n\t\t};\n\t\tapi.defaults = {};\n\n\t\tapi.remove = function (key, attributes) {\n\t\t\tapi(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","/**\n * This utility class helps to manage the live chat\n */\nimport Cookies from 'js-cookie';\nimport TrackingComponent from '../components/TrackingComponent';\n\nclass ChatUtils {\n\n constructor() {\n this.TrackingComponent = new TrackingComponent();\n }\n // common selectors, overridable\n get SELECTORS() {\n return {\n // configs\n liveChatLanguage: '#liveChatLanguage', // live chat language\n urlEnvironmentSF: '#urlEnvironmentSF', // main url\n urlEnvironmentSnapIn: '#urlEnvironmentSnapIn', // snap in url\n chatOrgId: '#chatOrgId', // salesforce id of MM\n buttonNameSnapIn: '#buttonNameSnapIn', // button name\n buttonIdSnapIn: '#buttonIdSnapIn', // button name\n baseLiveAgentContentURL: '#baseLiveAgentContentURL', // live agent url\n deploymentIdSnapIn: '#deploymentIdSnapIn', // deployment id\n baseLiveAgentURL: '#baseLiveAgentURL', // base live agent url\n eswLiveAgentDevName: '#eswLiveAgentDevName', // base live agent url\n chatBrand: '#chatBrand', // brand\n // labels\n chatLabelOnline: '#chatLabelOnline', // chat label when online\n chatLabelOffline: '#chatLabelOffline', // chat label when offline\n chatLabelStart: '#chatLabelStart', // chat label start\n chatLabelName: '#chatLabelName', // chat label name\n chatLabelLastname: '#chatLabelLastname', // chat label name\n chatLabelEmail: '#chatLabelEmail', // chat label name\n chatLabelSubject: '#chatLabelSubject', // chat label subject\n chatLabelPrivacy: '#chatLabelPrivacy', // chat label subject\n chatLabelSubjectOptionPS: '#chatLabelSubjectOptionPS', // chat label subject\n chatLabelSubjectOptionOD: '#chatLabelSubjectOptionOD', // chat label subject\n chatLabelSubjectOptionPay: '#chatLabelSubjectOptionPay', // chat label subject\n chatLabelSubjectOptionFi: '#chatLabelSubjectOptionFi', // chat label subject\n chatLabelSubjectOptionCS: '#chatLabelSubjectOptionCS', // chat label subject\n chatLabelSubjectOptionPAv: '#chatLabelSubjectOptionPAv', // chat label subject\n chatLabelSubjectOptionSt: '#chatLabelSubjectOptionSt', // chat label subject\n chatLabelSubjectOptionRR: '#chatLabelSubjectOptionRR', // chat label subject\n chatLabelSubjectOptionTA: '#chatLabelSubjectOptionTA', // chat label subject\n chatPreselectedSubject: '#chatPreselectedSubject', // chat preselected subject\n chatLabelCTA: '#chatLabelCTA', // chat label subject\n chatLabelLengthError: '#chatLabelLengthError', // chat label subject\n // elements\n chatDock: '.modalContainer.embeddedServiceSidebar.layout-docked.sidebarMaximized .dockableContainer',\n chatButton: '.livechat-button .uiButton',\n endChatMessage: '.embeddedServiceLiveAgentStateChat .messageArea',\n endChatContainer: '.embeddedServiceLiveAgentStateChat .endChatContainer',\n endChatContent: '#thank-you-feedback',\n // PS ?\n personalStylistSnapConfig: '#buttonSnapConfig_personal_stylist',\n personalStylistPopUpTriggerTime: '#personalStylistPopUpTriggerTime',\n personalStylistPopUpReappearanceTime: '#personalStylistPopUpReappearanceTime',\n personalStylistBanner: '.live-chat-personal-stylist-cta',\n personalStylistStartChat: '.live-chat-personal-stylist-cta .start-chat',\n personalStylistStartWhatsApp: '.live-chat-personal-stylist-cta .start-whatsapp',\n personalStylistCloseBtn: '.live-chat-personal-stylist-cta .vex-close',\n customerLoggedIn: '#customerLoggedIn',\n customerFirstName: '#customerFirstName',\n customerLastName: '#customerLastName',\n customerEmail: '#customerEmail',\n // extra link chat\n startChatLink: 'a[data-name=live-chat]',\n }\n }\n\n setEnvironment(options = false) {\n // all default selectors\n var defaultSelectors = this.SELECTORS;\n // merge def selectors with override\n if (typeof options.selectors !== 'undefined') {\n // var allSelectors = Object.assign(options.selectors,defaultSelectors);\n var allSelectors = Object.assign(defaultSelectors,options.selectors);\n } else {\n // or default assign\n var allSelectors = defaultSelectors;\n }\n // loop the selectors to make them available\n for (const key in allSelectors) {\n if (allSelectors.hasOwnProperty(key)) {\n // console.log(`${key}: ${allSelectors[key]}`);\n // set value\n this[key] = this.setValue(key,allSelectors);\n }\n }\n // set the options available\n if (typeof options !== 'undefined') {\n this.options = options;\n }\n // cookie key\n if (typeof options.cookieKey === 'undefined') {\n this.hideCookieKey = 'ps_button_hide';\n this.options.cookieKey = 'ps_button_hide';\n } else {\n this.hideCookieKey = this.options.cookieKey;\n }\n }\n\n /////////////////////////\n /* GENERAL FUNCTIONS */\n /////////////////////////\n\n // set value from selectors key\n setValue(labelName,allSelectors,noValue = null) {\n var selector = allSelectors[labelName];\n if (document.querySelector(selector) != null) {\n var toRet = document.querySelector(selector).value;\n // but if is not an input i want to return the selector\n if (typeof toRet == 'undefined' && document.querySelector(selector).tagName.toLowerCase() != 'input') {\n toRet = document.querySelector(selector);\n }\n } else {\n toRet = noValue;\n }\n //\n return toRet;\n }\n\n // return a value of selectors\n getValue(property) {\n return this.setValue(property,this.SELECTORS);\n }\n\n /////////////////////////\n /* CHAT PART */\n /////////////////////////\n\n // initiate the chat\n initializeChat(ps = false) {\n // this\n var ctx = this;\n // big config chunk for salesforce\n var initESW = function(gslbBaseURL) {\n // body for data\n var body = document.querySelector('body');\n // help btn\n embedded_svc.settings.displayHelpButton = true;\n // language conf fallback to en\n var language = (ctx.liveChatLanguage != '') ? ctx.liveChatLanguage : 'en';\n embedded_svc.settings.language = language;\n // directbutton routing on select subject\n embedded_svc.settings.directToButtonRouting = function(prechatFormData) {\n // subject is the fourth field on prechat list form\n if (prechatFormData[3].value == \"Personal Stylist\") {\n embedded_svc.settings.fallbackRouting = [ctx.personalStylistSnapConfig,ctx.buttonIdSnapIn];\n return ctx.personalStylistSnapConfig;\n } else {\n return ctx.buttonIdSnapIn;\n }\n }\n // country\n var country = document.querySelector('body').dataset.website != null ? document.querySelector('body').dataset.website.toUpperCase() : \"\";\n // prechat fields\n var prechatFields = {\n Primary_Language__c: language.toUpperCase(),\n Country__c: country,\n website_iso_country_code__c: country,\n LiveChat_Brand__c: ctx.chatBrand,\n LiveChat_Path1__c: window.location.href.slice(0, -1)+ChatUtils.readCookie(ChatUtils.COOKIE_CONSTANTS.PATH_1),\n LiveChat_Path2__c: window.location.href.slice(0, -1)+ChatUtils.readCookie(ChatUtils.COOKIE_CONSTANTS.PATH_2),\n LiveChat_Path3__c: window.location.href.slice(0, -1)+ChatUtils.readCookie(ChatUtils.COOKIE_CONSTANTS.PATH_3),\n LiveChat_Path4__c: window.location.href.slice(0, -1)+ChatUtils.readCookie(ChatUtils.COOKIE_CONSTANTS.PATH_4),\n LiveChat_Path5__c: window.location.href.slice(0, -1)+ChatUtils.readCookie(ChatUtils.COOKIE_CONSTANTS.PATH_5),\n };\n // if is registered user i should update the routing\n if(ctx.customerLoggedIn === 'true') {\n // adding prechat fields\n \tprechatFields.FirstName = ctx.customerFirstName;\n prechatFields.LastName = ctx.customerLastName;\n prechatFields.Email = ctx.customerEmail;\n }\n // fill prechat fields\n embedded_svc.settings.prepopulatedPrechatFields = prechatFields;\n // labels\n embedded_svc.settings.defaultAssistiveText = '';\n embedded_svc.settings.defaultMinimizedText = ctx.chatLabelOnline; // (Defaults to Chat with an Expert)\n embedded_svc.settings.disabledMinimizedText = ctx.chatLabelOffline; // (Defaults to Agent Offline)\n //\n embedded_svc.settings.enabledFeatures = ['LiveAgent'];\n embedded_svc.settings.entryFeature = 'LiveAgent';\n // on off button\n embedded_svc.addEventHandler('onAvailability', function(data) {\n var eventName = (data.isAgentAvailable) ? 'chatButtonEnabled' : 'chatButtonDisabled';\n var evt = document.createEvent(\"Events\");\n evt.initEvent(eventName, true, true);\n document.dispatchEvent(evt);\n });\n embedded_svc.addEventHandler(\"onSettingsCallCompleted\", function(data) {\n var eventName = data.isAgentAvailable ? 'chatButtonEnabled' : 'chatButtonDisabled';\n var evt = document.createEvent(\"Events\");\n evt.initEvent(eventName, true, true);\n document.dispatchEvent(evt);\n });\n\n // on chat ended by user\n embedded_svc.addEventHandler(\"onChatEndedByChasitor\", function() {\n ctx.TrackingComponent.actions.deleteChat();\n });\n\n // after chat is closedddd\n embedded_svc.addEventHandler('afterDestroy', function() {\n // if i used the PS chat\n if (ctx.personalStylistBanner != null && ctx.personalStylistBanner.classList.contains('disappeared')) {\n // i reinit at the destroy\n ctx.initializeChat();\n }\n });\n //\n // console.log(embedded_svc.settings);\n //\n embedded_svc.init(\n ctx.urlEnvironmentSF,\n ctx.urlEnvironmentSnapIn,\n gslbBaseURL,\n ctx.chatOrgId,\n ctx.buttonNameSnapIn,\n {\n baseLiveAgentContentURL: ctx.baseLiveAgentContentURL,\n deploymentId: ctx.deploymentIdSnapIn,\n buttonId: ctx.buttonIdSnapIn,\n baseLiveAgentURL: ctx.baseLiveAgentURL,\n eswLiveAgentDevName: ctx.eswLiveAgentDevName,\n isOfflineSupportEnabled: false\n }\n );\n };\n // launch chat\n initESW('https://service.force.com');\n }\n\n /////////////////////////\n /* COOKIES PART */ /* legacy part */\n /////////////////////////\n // static\n static get COOKIE_CONSTANTS(){\n return {\n SIZE: 5,\n PATH: 'Path',\n PATH_1: 'Path1',\n PATH_2: 'Path2',\n PATH_3: 'Path3',\n PATH_4: 'Path4',\n PATH_5: 'Path5',\n }\n }\n static shiftPathCookies() {\n for(var i = 0; i < ChatUtils.COOKIE_CONSTANTS.SIZE - 1; i++) {\n ChatUtils.writeCookie(ChatUtils.COOKIE_CONSTANTS.PATH + (ChatUtils.COOKIE_CONSTANTS.SIZE - i), ChatUtils.readCookie(ChatUtils.COOKIE_CONSTANTS.PATH + (ChatUtils.COOKIE_CONSTANTS.SIZE - i - 1 )));\n }\n }\n static readCookie(cookieName) {\n if (document.cookie.length > 0) {\n var start = document.cookie.indexOf(cookieName + \"=\");\n if (start != -1) {\n start = start + cookieName.length + 1;\n var end = document.cookie.indexOf(\";\", start);\n if (end == -1) end = document.cookie.length;\n return unescape(document.cookie.substring(start, end));\n }\n else {\n return \"\";\n }\n }\n return \"\";\n }\n static writeCookie(cookieName, cookieValue) {\n document.cookie = cookieName + '=' + escape(cookieValue) + '; path=/; secure;';\n }\n // non static\n updatePath(){\n var pathName = window.location.pathname;\n if(pathName !== ChatUtils.readCookie(ChatUtils.COOKIE_CONSTANTS.PATH_1)) {\n ChatUtils.shiftPathCookies();\n ChatUtils.writeCookie(ChatUtils.COOKIE_CONSTANTS.PATH_1, pathName);\n }\n }\n\n /////////////////////////\n /* CHAT MANIPULATION */\n /////////////////////////\n\n //////////////////////////////////////////////////////////////////////////////////////////////////////\n // OBSERVATION PART\n // main button observer\n runsNewChat(){\n var ctx = this;\n // Dynamic init of components to be loaded\n var $this = this;\n // observer listener\n function listener(records) {\n var nodes = [];\n records.forEach(function (record) {\n var list = record.addedNodes;\n var i = list.length - 1;\n for ( ; i > -1; i-- ) {\n // if i find a new component\n if ( typeof list[i] == 'object' && list[i].nodeType == '1') {\n // if i find the chat button\n if (list[i].getAttribute('class') !== null ) {\n var classes = list[i].getAttribute('class').split(' ');\n if (list[i].getAttribute('class') == 'embeddedServiceHelpButton' || classes.includes('embeddedServiceHelpButton') ) {\n // chat button appears + add class\n list[i].classList.add('livechat-button');\n // bind button start prechat\n ctx.startButton();\n // Personal Stylist button\n ctx.bindPSChat();\n }\n // if the prechat opens i launch another observer\n if (classes.includes('modalContainer') && classes.includes('embeddedServiceSidebar') ) {\n // when chat window is opened\n ctx.prechatObserver(list[i]);\n }\n //add traking to delete chat\n if (classes.includes('embeddedServiceSidebarFeature')) {\n const exitChatBtn = list[i].querySelector('.embeddedServiceSidebarButton.dialog-button-0')\n if ( typeof exitChatBtn != 'undefined' && exitChatBtn != null ) {\n ctx.deleteChat(exitChatBtn);\n }\n }\n if (classes.includes('unseenMessageNotificationWrapper')) {\n // shadow dom arrow check\n ctx.applyArrowDownStyles();\n }\n }\n if (list[i].getAttribute('class') == 'endChatContainer' ) {\n // chat ending\n ctx.chatEnding();\n }\n }\n }\n });\n }\n // define observer\n var observer = new MutationObserver(listener);\n // nodes to observe\n var sizeNode = document.querySelector('body');\n if ( typeof sizeNode != 'undefined' && sizeNode != null ) {\n // loop to observe each node\n observer.observe(sizeNode, { childList: true, subtree: true });\n }\n }\n\n // prechat observer\n prechatObserver(div) {\n // Dynamic init of components to be loaded\n var ctx = this;\n // observer listener\n function listener(records) {\n var nodes = [];\n records.forEach(function (record) {\n var list = record.addedNodes;\n var i = list.length - 1;\n for ( ; i > -1; i-- ) {\n // if i find a new component\n if ( typeof list[i] == 'object' && list[i].nodeType == '1') {\n // let's get the div\n if (list[i].getAttribute('class') !== null ) {\n // if there is a certain class\n var classes = list[i].getAttribute('class').split(' ');\n if (classes.includes('prechatUI')) {\n ctx.manipulatePrechat(div);\n }\n // error on sending chat\n if (classes.includes('has-error')) {\n ctx.errorPrechat(div,list[i]);\n // add class on dockablecontainer\n var container = document.querySelector(ctx.SELECTORS.chatDock);\n container.classList.add('prechat');\n }\n // remove the class at the loader\n if (classes.includes('loadingBallContainer')) {\n // remove class on dockablecontainer\n var container = document.querySelector(ctx.SELECTORS.chatDock);\n container.classList.remove('prechat');\n }\n }\n }\n }\n });\n }\n // define observer\n var observer = new MutationObserver(listener);\n // nodes to observe\n var sizeNode = document.querySelector('.embeddedServiceSidebar');\n if ( typeof sizeNode != 'undefined' && sizeNode != null ) {\n // loop to observe each node\n observer.observe(sizeNode, { childList: true, subtree: true });\n }\n }\n\n //////////////////////////////////////////////////////////////////////////////////////////////////////\n // MANIPULATION PART\n\n // maniupulate the prechat html\n manipulatePrechat(div) {\n // remove loading class on button\n var btn = document.querySelector(this.SELECTORS.chatButton);\n btn.classList.remove('loading');\n // remove loading class on simualted buttons\n let startBtns = document.querySelectorAll(this.SELECTORS.startChatLink);\n if ( startBtns != null) {\n startBtns.forEach(startBtn => {\n startBtn.classList.remove('loading');\n });\n }\n\n // add class on dockablecontainer\n var container = document.querySelector(this.SELECTORS.chatDock);\n container.classList.add('prechat');\n\n // fieldlist inside prechat\n var fieldList = div.querySelector('.fieldList');\n\n // chat label pre-fields\n if (this.chatLabelStart != '') {\n var chatLabelStartDiv = document.createElement('div');\n chatLabelStartDiv.classList.add('fieldsTitle');\n chatLabelStartDiv.innerHTML = this.chatLabelStart;\n // insert as first child\n fieldList.insertBefore(chatLabelStartDiv, fieldList.firstChild);\n }\n\n // label override\n this.overrideLabels(div);\n\n // hide fields\n this.hidePrechatFields(div);\n\n // min-lenght fields\n var firstName = div.querySelector('#FirstName');\n var lastName = div.querySelector('#LastName');\n firstName.setAttribute('minlength',3);\n lastName.setAttribute('minlength',3);\n\n // subject select\n this.createSubjectSelect(div);\n\n // privacy checbox\n this.createPrivacyCheckbox(div);\n\n // start button\n this.createStartButton(div);\n\n // callbacks called with events\n var evt = document.createEvent(\"Events\");\n evt.initEvent(\"prechatOpened\", true, true);\n document.dispatchEvent(evt);\n\n // apply style\n this.applyPreChatStyle();\n\n }\n\n overrideLabels(div) {\n // label override!!!\n // chatLabelName\n if (this.chatLabelName != '') {\n if (div.querySelector('#FirstName') != null) {\n div.querySelector('#FirstName').closest('div.uiInput').querySelector('label').innerHTML = this.chatLabelName;\n }\n }\n // chatLabelLastname\n if (this.chatLabelLastname != '') {\n if (div.querySelector('#LastName') != null) {\n div.querySelector('#LastName').closest('div.uiInput').querySelector('label').innerHTML = this.chatLabelLastname;\n }\n }\n // chatLabelEmail\n if (this.chatLabelEmail != '') {\n if (div.querySelector('#Email') != null) {\n div.querySelector('#Email').closest('div.uiInput').querySelector('label').innerHTML = this.chatLabelEmail;\n }\n }\n // chatLabelSubject\n if(this.chatLabelSubject != '') {\n if (div.querySelector('#LiveChat_Subject__c') != null) {\n div.querySelector('#LiveChat_Subject__c').closest('div.uiInput').querySelector('label').innerHTML = this.chatLabelSubject;\n }\n }\n }\n\n // hide fields in prechat\n hidePrechatFields(div) {\n // check preselected subject\n var preselSubject = document.querySelector(this.SELECTORS.chatPreselectedSubject).value;\n // hiding fields = main selector : closest selector\n var hidingFields = {\n '#LiveChat_Path1__c': 'div.inputText',\n '#LiveChat_Path2__c': 'div.inputText',\n '#LiveChat_Path3__c': 'div.inputText',\n '#LiveChat_Path4__c': 'div.inputText',\n '#LiveChat_Path5__c': 'div.inputText',\n '#LiveChat_Brand__c': 'div.inputSelect',\n '#website_iso_country_code__c': 'div.inputText',\n '#Country__c': 'div.inputSelect',\n '#Primary_Language__c': 'div.inputSelect',\n '#Type': 'div.inputSelect',\n '#Subject': 'div.inputText',\n '#LiveChat_Subject__c': 'div.inputText'\n };\n if(this.customerLoggedIn === 'true') {\n // I group the fields to hide in the case of a registered user\n hidingFields['#FirstName'] = 'div.inputSplitName';\n hidingFields['#LastName'] = 'div.inputSplitName';\n hidingFields['#Email'] = 'div.inputEmail';\n // if the field is filled in it means that we are in the Push Notification PS flow\n if(preselSubject != '') {\n // I remove the property from the group of fields to hide\n delete hidingFields['#LiveChat_Subject__c'];\n }\n }\n // loop the fields\n for(var key in hidingFields) {\n // check and hide\n if (div.querySelector(key) != null) {\n div.querySelector(key).closest(hidingFields[key]).classList.add('hidden');\n }\n }\n }\n\n // create subject select\n createSubjectSelect(div) {\n // check preselected subject\n var preselSubject = document.querySelector(this.SELECTORS.chatPreselectedSubject).value;\n if (preselSubject != '') {\n var evt = document.createEvent(\"Events\");\n var element = div.querySelector('#LiveChat_Subject__c');\n element.value = preselSubject;\n evt.initEvent(\"change\", true, true);\n // triggers event\n element.dispatchEvent(evt);\n // I add attributes to my element\n element.classList.add('disabled');\n element.setAttribute('disabled', 'disabled');\n return;\n }\n // fields\n var fieldList = div.querySelector('.fieldList');\n // subject select\n var subjectDiv = document.createElement('div');\n subjectDiv.classList.add('inputSelect','embeddedServiceSidebarFormField','subjectSelect','form-group');\n // div select\n var selectDiv = document.createElement('div');\n selectDiv.classList.add('uiInput','uiInput--default','uiInputSelect','uiInput--select');\n // label\n var selectDivLabel = document.createElement('label');\n selectDivLabel.classList.add('uiLabel','uiLabel-left','form-element__label');\n selectDivLabel.innerHTML = this.chatLabelSubject;\n // append to select div\n selectDiv.append(selectDivLabel);\n // create select and options\n var subjectSelect = document.createElement('select');\n subjectSelect.setAttribute('name','subjectSelect') ;\n subjectSelect.setAttribute('id','subjectSelect') ;\n subjectSelect.setAttribute('placeholder',this.chatLabelSubject) ;\n // stock classes\n if (typeof this.options.subjectClassesDefault === 'undefined' || this.options.subjectClassesDefault !== 'false') {\n subjectSelect.classList.add('slds-style-select','select','js-subject','mc-custom');\n }\n // options classes\n if (typeof this.options.subjectClasses !== 'undefined') {\n // check if is array and add classes\n var classArr = this.options.subjectClasses;\n if (Array.isArray(classArr)) {\n // loop the classes to add them\n classArr.forEach((cls, i) => {\n subjectSelect.classList.add(cls);\n });\n }\n }\n // check list on options\n if (typeof this.options.subjects !== 'undefined') {\n for (const key in this.options.subjects) {\n if (this.options.subjects.hasOwnProperty(key)) {\n // set value\n subjectSelect.options[subjectSelect.options.length] = new Option(this[key], this.options.subjects[key]);\n }\n }\n }\n // append to select div\n selectDiv.append(subjectSelect);\n // append to subject div\n subjectDiv.append(selectDiv);\n // append to fields\n fieldList.append(subjectDiv);\n // type or subject\n var targetSelect = null;\n if (div.querySelector('#LiveChat_Subject__c') != null) {\n targetSelect = div.querySelector('#LiveChat_Subject__c');\n } else if (div.querySelector('#Type') != null) {\n targetSelect = div.querySelector('#Type');\n } else {\n if (div.querySelector('#Subject') != null) {\n targetSelect = div.querySelector('#Subject');\n }\n }\n // first val setting\n if (subjectSelect.value !== '' && targetSelect != null) {\n targetSelect.value = subjectSelect.value;\n var evt = document.createEvent(\"Events\");\n evt.initEvent(\"change\", true, true);\n targetSelect.dispatchEvent(evt);\n }\n // event!\n subjectSelect.addEventListener('change',e => {\n // this works\n if (targetSelect != null) {\n targetSelect.value = subjectSelect.value;\n var evt = document.createEvent(\"Events\");\n evt.initEvent(\"change\", true, true);\n targetSelect.dispatchEvent(evt);\n }\n });\n }\n\n createPrivacyCheckbox(div) {\n // fields\n var fieldList = div.querySelector('.fieldList');\n // checkbox\n var checkboxDiv = document.createElement('div');\n checkboxDiv.classList.add('inputText','embeddedServiceSidebarFormField','privacyInput','custom-checkbox');\n var checkbox = document.createElement('input');\n checkbox.setAttribute('type','checkbox') ;\n checkbox.setAttribute('id','privacyInput') ;\n var label = document.createElement('label');\n label.innerHTML = this.chatLabelPrivacy;\n // append to checkbox div\n checkboxDiv.append(checkbox);\n checkboxDiv.append(label);\n // append to fields\n fieldList.append(checkboxDiv);\n }\n\n //\n createStartButton(div) {\n // fake button\n var fakeSubmit = document.createElement('a');\n fakeSubmit.setAttribute('href','javascript:void(0)');\n fakeSubmit.classList.add('fakeSubmit','disabled');\n // stock class\n if (typeof this.options.ctaClassesDefault === 'undefined' || this.options.ctaClassesDefault !== 'false') {\n fakeSubmit.classList.add('embeddedServiceSidebarButton','uiButton--default','uiButton');\n }\n // options class\n if (typeof this.options.ctaClasses !== 'undefined') {\n // check if is array and add classes\n var classArr = this.options.ctaClasses;\n if (Array.isArray(classArr)) {\n // loop the classes to add them\n classArr.forEach((cls, i) => {\n fakeSubmit.classList.add(cls);\n });\n }\n }\n // button inner html\n fakeSubmit.innerHTML = this.chatLabelCTA;\n // append button\n var buttonWrapper = div.querySelector('.buttonWrapper');\n buttonWrapper.querySelector('button').classList.add('hidden');\n buttonWrapper.append(fakeSubmit);\n // bind action\n this.bindStartChat(div);\n // go PS chat if banner is not null, if is disappeared but is not launched or not launch by click\n if (this.personalStylistBanner != null &&\n this.personalStylistBanner.classList.contains('disappeared') &&\n !this.personalStylistBanner.classList.contains('launched') &&\n !this.personalStylistBanner.classList.contains('launch_on_click')\n ) {\n // control class\n this.personalStylistBanner.classList.add('launched');\n // launch chat\n document.querySelector('.startButton').click();\n }\n }\n\n //////////////////////////////////////////////////////////////////////////////////////////////////////\n // FUNCTIONALITY PART\n\n // start chat button\n startButton() {\n var btn = document.querySelector(this.SELECTORS.chatButton);\n btn.addEventListener('click',e => {\n btn.classList.add('loading');\n // reset width small trick\n var setIntervalBtn = setInterval(function(){\n if (btn.closest('.helpButton').style.width != '') {\n btn.closest('.helpButton').style.width = 'auto';\n clearInterval(setIntervalBtn);\n }\n }, 10);\n });\n // extra chat link on menus\n this.startAlternativeButton(btn);\n\n }\n\n // check and launch banner PS\n checkReappearancePersonalStylistPopUp() {\n let self = this;\n if(this.personalStylistPopUpReappearanceTime && Cookies.get(this.hideCookieKey)) {\n // check every second\n var myInterval = setInterval(function() {\n const hideCookieKey = Cookies.get(self.hideCookieKey);\n if(hideCookieKey == 'undefined' || !hideCookieKey) {\n // show banner\n console.log(\"Reappearance of the pop-up on date: \" + new Date());\n self.personalStylistBanner.classList.remove('disappeared', 'hidden');\n clearInterval(myInterval);\n }\n }, 1000);\n }\n }\n\n // bind the fake button to the start chat button\n bindStartChat(div) {\n // bind click btn\n var fakeBtn = div.querySelector('.fakeSubmit');\n var btn = div.querySelector('.buttonWrapper button');\n var privacyInput = div.querySelector('#privacyInput');\n fakeBtn.addEventListener('click', e => {\n // check\n if (privacyInput.checked && this.checkForm(div)) {\n btn.click();\n this.TrackingComponent.actions.startChat();\n } else {\n // fallback\n if (!privacyInput.checked) {\n privacyInput.closest('.privacyInput').style.color = 'red';\n }\n }\n });\n // bind enable btn\n privacyInput.addEventListener('change', e => {\n if (e.target.checked) {\n fakeBtn.classList.remove('disabled');\n } else {\n fakeBtn.classList.add('disabled');\n }\n });\n }\n\n startAlternativeButton(btn) {\n let startBtns = document.querySelectorAll(this.SELECTORS.startChatLink);\n if ( startBtns != null) {\n startBtns.forEach(startBtn => {\n startBtn.addEventListener('click', e => {\n if (btn != null) {\n btn.click();\n startBtn.classList.add('loading');\n }\n });\n });\n }\n // button online\n document.addEventListener('chatButtonEnabled', (e) => {\n if ( startBtns != null) {\n startBtns.forEach(startBtn => {\n startBtn.classList.remove('not-available');\n startBtn.classList.add('available');\n startBtn.addEventListener('click', e => {\n e.preventDefault();\n e.stopPropagation();\n if (btn != null) {\n btn.click();\n }\n });\n });\n }\n });\n // button offline\n document.addEventListener('chatButtonDisabled', (e) => {\n if (startBtns != null) {\n startBtns.forEach(startBtn => {\n startBtn.classList.add('not-available');\n startBtn.classList.remove('available');\n startBtn.removeEventListener('click',function(){});\n });\n }\n });\n }\n\n //////////////////////////////////////////////////////////////////////////////////////////////////////\n // CHECKS PART\n // error prechat\n errorPrechat(div,el){\n // i only care about fake fields\n // SUBJECT\n var subjectSelect = el.previousElementSibling.querySelector('input#LiveChat_Subject__c');\n if (subjectSelect == null) {\n subjectSelect = el.previousElementSibling.querySelector('#Type');\n }\n if (subjectSelect == null) {\n subjectSelect = el.previousElementSibling.querySelector('#Subject');\n }\n if (subjectSelect != null) {\n var subjectDiv = div.querySelector('.subjectSelect');\n if (subjectDiv != null) {\n subjectDiv.append(el);\n subjectDiv.querySelector('.uiInputSelect').classList.add('has-error');\n }\n }\n }\n\n // checks form\n checkForm(div){\n // init\n var pass = [];\n // fields\n var fields = {\n '#FirstName': {\n 'type' : 'length',\n 'value' : 3\n },\n '#LastName': {\n 'type' : 'length',\n 'value' : 3\n }\n }\n for (const fieldName in fields){\n if(fields.hasOwnProperty(fieldName)){\n // get input\n var input = div.querySelector(fieldName);\n // types\n // length\n if (fields[fieldName].type == 'length') {\n if (input.value.length == 0 || input.value.length >= fields[fieldName].value ) {\n // pass\n pass.push('true');\n // clean error if not empty\n if (input.value.length != 0) {\n this.cleanFieldError(input);\n }\n } else {\n // no pass\n pass.push('false');\n // set\n this.setFieldError(input,'length');\n }\n }\n }\n }\n // salesforce standard fields\n var emailInput = div.querySelector('input#Email');\n if (emailInput == null) {\n emailInput = div.querySelector('input#SuppliedEmail');\n }\n // subjectInput\n var subjectInput = div.querySelector('#LiveChat_Subject__c');\n if (subjectInput == null) {\n subjectInput = div.querySelector('#Type');\n }\n if (subjectInput == null) {\n subjectInput = div.querySelector('#Subject');\n }\n // reset errorrr if subject is not empty !!!! (because the subject field is fake)\n if (subjectInput.value != '' && div.querySelector('.subjectSelect .uiInputSelect') != null ) {\n div.querySelector('.subjectSelect .uiInputSelect').classList.remove('has-error');\n }\n // if one of the 2 field is empty i want to trigger the salesforce validation\n if (emailInput.value == '' || subjectInput.value == '') {\n return true;\n }\n // return true if i dont find fals in pass array\n return !pass.includes('false');\n }\n\n // set the error field\n setFieldError(div,type) {\n if (div != null) {\n // set error classes\n div.classList.add('has-error');\n div.closest('.uiInput').classList.add('has-error');\n var label = '';\n // adding error ul\n var inputBox = div.closest('.embeddedServiceSidebarFormField');\n // check\n if (inputBox.querySelector('ul.uiInputDefaultError')) return;\n // label\n if (type == 'length') {\n label = this.chatLabelLengthError;\n }\n // create ul\n var errorUl = document.createElement('ul');\n errorUl.classList.add('uiInput','uiInputDefaultError','has-error','uiInput--default','uiInput--input');\n var errorLi = document.createElement('li');\n errorLi.setAttribute('class','form-element__help');\n errorLi.innerHTML = label;\n errorUl.appendChild(errorLi);\n // append error\n inputBox.append(errorUl);\n }\n }\n\n // clean the error from field\n cleanFieldError(div) {\n // remove class\n div.classList.remove('has-error');\n // box\n var inputBox = div.closest('.embeddedServiceSidebarFormField');\n // find error box\n var errorBox = inputBox.querySelector('ul.uiInputDefaultError');\n if (errorBox != null) {\n errorBox.remove();\n }\n }\n\n //////////////////////////////////////////////////////////////////////////////////////////////////////\n // SHADOW DOM HACKS\n\n applyArrowDownStyles() {\n console.log('applyArrowDownStyles');\n // embeddedservice-chat-unseen-message-notification\n let element = document.querySelector('.modalContainer.embeddedServiceSidebar .embeddedServiceLiveAgentStateChatInputFooter.chasitorInputWrapper embeddedservice-chat-unseen-message-notification')\n this.applyElStyle('#arrowDownStyle',element);\n // other shadow dom elems\n let element2 = document.querySelector('.modalContainer.embeddedServiceSidebar .embeddedServiceLiveAgentStateChatInputFooter.chasitorInputWrapper embeddedservice-chat-unseen-message-notification').shadowRoot.querySelector(' lightning-button-icon');\n this.applyElStyle('#arrowDownStyle2',element2);\n }\n\n applyPreChatStyle() {\n console.log('applyPreChatStyle');\n // headerChatStyle\n let element = document.querySelector('.modalContainer.embeddedServiceSidebar.layout-docked.sidebarMaximized .dockableContainer embeddedservice-chat-header')\n this.applyElStyle('#headerChatStyle',element);\n }\n\n applyElStyle(styleID,element) {\n let styleSourceDiv = document.querySelector(styleID);\n if (styleSourceDiv === null) return false;\n let style = styleSourceDiv.innerText;\n let styleDiv = document.createElement( 'style' );\n console.log('chatstyle',styleID,style.trim());\n styleDiv.innerHTML = style.trim();\n let shadowDomEl = element.shadowRoot;\n console.log('shadowDomEl' , shadowDomEl);\n console.log('shadowDomEl' , shadowDomEl.constructor);\n if (shadowDomEl !== null && shadowDomEl.constructor.name === 'ShadowRoot') {\n console.log('shadowDomEl.constructor.name',shadowDomEl.constructor.name);\n shadowDomEl.appendChild( styleDiv )\n } else {\n console.log(' no shadow dom ')\n }\n }\n\n //////////////////////////////////////////////////////////////////////////////////////////////////////\n // ENDING PART\n // chat ending\n chatEnding() {\n // vars\n var endChatContainer = document.querySelector(this.SELECTORS.endChatContainer);\n var endChatMessage = document.querySelector(this.SELECTORS.endChatMessage);\n // if i find the wrapper i append the endchat\n if (endChatContainer != null) {\n var endChatContent = document.querySelector(this.SELECTORS.endChatContent);\n var endChatText = endChatContent.cloneNode(true);\n endChatText.classList.remove('d-none');\n // insert as first child\n endChatContainer.insertBefore(endChatText, endChatContainer.firstChild);\n // add class\n endChatMessage.classList.add('chatEnded');\n }\n // save transcription\n var downloadBtn = document.querySelector(this.SELECTORS.endChatContainer+' .container-feedback .btn-download');\n var saveBtn = document.querySelector(this.SELECTORS.endChatContainer+' .saveTranscriptButton');\n if (downloadBtn != null && saveBtn != null ) {\n downloadBtn.addEventListener('click', () => {\n saveBtn.click();\n });\n } else {\n downloadBtn.style.display = 'none';\n }\n }\n\n //////////////////////////////////////////////////////////////////////////////////////////////////////\n // DELETE CHAT BEFORE START\n\n deleteChat(deleteChatBtn) {\n deleteChatBtn.addEventListener('click', e => {\n this.TrackingComponent.actions.deleteChat();\n });\n }\n\n /////////////////////////\n /* PERSONAL STYLIST */\n /////////////////////////\n // bind PS chat\n bindPSChat() {\n // PS part\n var ctx = this;\n if (this.personalStylistSnapConfig != null) {\n // PS Chat binded\n const hideCookieKey = Cookies.get(this.hideCookieKey);\n const closeBtn = this.personalStylistCloseBtn;\n const isFaqPage = $('html').data('controller') === \"FaqController\";\n // check cookie and launch banner PS\n if((hideCookieKey == 'undefined' || !hideCookieKey) && !isFaqPage) {\n // launch ps chat bind\n this.setupPersonalStylistDelayedPopup(this.personalStylistPopUpTriggerTime);\n }\n if ( closeBtn != null ) {\n closeBtn.addEventListener('click', () => {\n const expires = ctx.personalStylistPopUpReappearanceTime ? ctx.setExpires(ctx.personalStylistPopUpReappearanceTime) : \"\";\n // set the cookie value to 'true' to avoid showing the banner\n Cookies.set(ctx.hideCookieKey, 'true', { expires: expires, path: '/' });\n // hide banner\n ctx.personalStylistBanner.classList.add('disappeared','hidden');\n //\n ctx.checkReappearancePersonalStylistPopUp();\n });\n }\n }\n }\n\n setExpires(exp){\n let now = new Date();\n console.log(\"Current date: \" + now);\n let time = now.getTime();\n let expireTime = time + Number(exp);\n now.setTime(expireTime);\n console.log(\"Expiry date: \" + now);\n return now;\n }\n\n // display PS button\n setupPersonalStylistDelayedPopup(triggerIn){\n var ctx = this;\n // click start chat button\n var chatButton = document.querySelector(this.SELECTORS.chatButton);\n // if there is the start chat button , i bind the start chat\n if (this.personalStylistStartChat != null) {\n this.personalStylistStartChat.addEventListener('click',e => {\n e.stopPropagation();\n // init chat\n // if not i set the preselected subject\n document.querySelector(this.SELECTORS.chatPreselectedSubject).value = this.options.subjects.chatLabelSubjectOptionPS;\n // hide button\n ctx.personalStylistBanner.classList.add('launch_on_click');\n // click start chat button\n chatButton.click();\n // remove PS banner\n // hide button\n ctx.personalStylistBanner.classList.add('disappeared','hidden');\n // put cookie\n Cookies.set(ctx.hideCookieKey, 'true', {\n path: '/'\n });\n });\n }\n // if there is the banner i want to show it\n if (this.personalStylistBanner != null) {\n // button appears if there are buttons to start chat or whatsapp\n setTimeout(()=> {\n if((ctx.personalStylistStartWhatsApp != null || ctx.personalStylistStartChat != null ) && chatButton.classList.contains('helpButtonEnabled') ) {\n ctx.personalStylistBanner.classList.remove('d-none');\n }\n }, triggerIn);\n // hide push on disable button\n document.addEventListener('chatButtonDisabled', () => {\n ctx.personalStylistBanner.classList.add('d-none');\n });\n // show push on enable button\n document.addEventListener('chatButtonEnabled', () => {\n setTimeout(()=> {\n if((ctx.personalStylistStartWhatsApp != null || ctx.personalStylistStartChat != null ) && chatButton.classList.contains('helpButtonEnabled') ) {\n ctx.personalStylistBanner.classList.remove('d-none');\n }\n }, triggerIn);\n });\n // prechatOpened\n document.addEventListener('prechatOpened', () => {\n // if the preselected subject is filled, i reset it so the next time is not preselected\n if (document.querySelector(ctx.SELECTORS.chatPreselectedSubject).value != '') {\n document.querySelector(ctx.SELECTORS.chatPreselectedSubject).value = '';\n }\n });\n }\n }\n\n addToObject(obj, key, value, index) {\n \t// Create a temp object and index variable\n \tvar temp = {};\n \tvar i = 0;\n \t// Loop through the original object\n \tfor (var prop in obj) {\n \t\tif (obj.hasOwnProperty(prop)) {\n \t\t\t// If the indexes match, add the new item\n \t\t\tif (i === index && key && value) {\n \t\t\t\ttemp[key] = value;\n \t\t\t}\n \t\t\t// Add the current item in the loop to the temp obj\n \t\t\ttemp[prop] = obj[prop];\n \t\t\t// Increase the count\n \t\t\ti++;\n \t\t}\n \t}\n \t// If no index, add to the end\n \tif (!index && key && value) {\n \t\ttemp[key] = value;\n \t}\n \treturn temp;\n }\n\n}\n\nexport default new ChatUtils();\n"],"sourceRoot":""}