{"version":3,"file":"5561.chunk.96fdd0d564133cca42a7.js","mappings":"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","sources":["webpack://apexchatwidgets/./widgets/core/WidgetView.js","webpack://apexchatwidgets/./widgets/core/enums/ParticipantIds.js","webpack://apexchatwidgets/./widgets/core/enums/SourceTypes.js","webpack://apexchatwidgets/./widgets/core/hooks/MessageStatus.js","webpack://apexchatwidgets/./widgets/core/hooks/MessageVisibility.js","webpack://apexchatwidgets/./widgets/core/hooks/PipedMessageHandler.js","webpack://apexchatwidgets/./widgets/core/hooks/PreChatMessageAnimations.js","webpack://apexchatwidgets/./widgets/core/hooks/addClass.js","webpack://apexchatwidgets/./widgets/core/hooks/addOptionProperty.js","webpack://apexchatwidgets/./widgets/core/hooks/IsHtml.js","webpack://apexchatwidgets/./widgets/core/hooks/cleanInvalidHtml.js","webpack://apexchatwidgets/./widgets/core/hooks/correctAnchorTarget.js","webpack://apexchatwidgets/./widgets/core/hooks/decodeHTML.js","webpack://apexchatwidgets/./widgets/core/hooks/encodeHTML.js","webpack://apexchatwidgets/./widgets/core/hooks/getHeightOfElement.js","webpack://apexchatwidgets/./widgets/core/hooks/getStyle.js","webpack://apexchatwidgets/./widgets/core/hooks/hasClass.js","webpack://apexchatwidgets/./widgets/core/hooks/localStorageAPIGet.js","webpack://apexchatwidgets/./widgets/core/hooks/removeClass.js","webpack://apexchatwidgets/./widgets/core/hooks/removeMultipleCSSClasses.js","webpack://apexchatwidgets/./widgets/core/hooks/removeTextFollowedByColon.js","webpack://apexchatwidgets/./widgets/core/hooks/setPrechatStyles.js","webpack://apexchatwidgets/./widgets/core/hooks/RebasePath.js","webpack://apexchatwidgets/./widgets/core/hooks/stringify.js"],"sourcesContent":["/*\r\nA Generic class to create an HTML View in browser's window.document\r\nRequired: identifier, 0-many templates \r\n*/\r\nimport addStyleTextInIframe from './hooks/addStyleTextInIframe';\r\nimport parseTemplate from './hooks/parseTemplate';\r\nimport WidgetTypes from './enums/WidgetTypes';\r\nimport AgentImageHandler from './hooks/AgentImageHandler';\r\nimport getStyleForIframe from './hooks/getStyleForIframe';\r\nimport observe from './hooks/observe';\r\nimport showElement from './hooks/showElement';\r\nimport hideElement from './hooks/hideElement';\r\n\r\nexport default class WidgetView {\r\n constructor(options) {\r\n // if (!options.identifier) {\r\n // throw 'identifier is mandatory';\r\n // }\r\n this.options = options;\r\n this.DOM = options.dom;\r\n this.identifier = options.identifier; // EP, DOM or Windowed, etc\r\n this.elements = options.elements ? options.elements : {}; // key-val\r\n this.templates = options.templates; // key-val\r\n if (this.options.style) {\r\n // w idget level css\r\n this.style(this.options.style);\r\n }\r\n if (this.options.cssLink) {\r\n getStyleForIframe(this.options.cssLink, this.options.linkId, undefined, this.DOM);\r\n }\r\n // widget level beforeRender\r\n if (this.options.beforeRender) {\r\n window.setTimeout(this.options.beforeRender.bind2(this), 0);\r\n }\r\n if (options.initialState) {\r\n this.render(options.initialState);\r\n }\r\n // apply polyfills if any - widget level\r\n if (this.options.polyfills) {\r\n this.pollyfill(this, this.options.polyfills);\r\n }\r\n }\r\n\r\n getBody() {\r\n return this.DOM.getElementsByTagName('body')[0];\r\n }\r\n\r\n /*\r\n selectors: is a string containing one or more CSS selectors separated by commas.\r\n */\r\n bind(selector, ev, cb) {\r\n // not tested/used much yet\r\n let elMatched;\r\n try {\r\n elMatched = this.DOM.querySelector(selector);\r\n } catch (e) {\r\n throw 'invalid selector';\r\n }\r\n if (elMatched) {\r\n observe(elMatched, ev, cb.bind2(this, cb)); // invoke cb with in 'this' context\r\n }\r\n }\r\n\r\n reRender(model) {\r\n const wrapper = this.DOM.querySelector(this.elements.containerSelector);\r\n wrapper.innerHTML = parseTemplate(model.chatWidgetTemplate, model);\r\n }\r\n\r\n getContainer() {\r\n return this.elements.containerSelector;\r\n }\r\n\r\n render(state) {\r\n const me = this;\r\n // grab target based on state and show it if already present\r\n const wrapperContainer = this.DOM.getElementById(this.identifier + state);\r\n if (wrapperContainer) {\r\n showElement(wrapperContainer);\r\n return;\r\n }\r\n const tpl = this.templates.find((tpl) => tpl.key == state);\r\n let wrapper;\r\n if (tpl) {\r\n // tpl level beforeRender\r\n if (tpl.beforeRender) {\r\n tpl.beforeRender(tpl);\r\n }\r\n const target = tpl.model.targetElementId\r\n ? this.DOM.getElementById(tpl.model.targetElementId)\r\n : this.getBody();\r\n wrapper = tpl.containerElemType\r\n ? this.DOM.createElement(tpl.containerElemType)\r\n : this.DOM.createElement('div');\r\n\r\n tpl.model.handlerImageUrl = AgentImageHandler(tpl.model.handlerImageUrl);\r\n wrapper.innerHTML = tpl.tpl;\r\n if (tpl.style) {\r\n // tpl level css\r\n this.style(tpl.style);\r\n }\r\n if (tpl.cssLink) {\r\n getStyleForIframe(tpl.cssLink, tpl.linkId, undefined, this.DOM);\r\n }\r\n const containerId = tpl.containerId ? tpl.containerId : this.identifier + state;\r\n wrapper.setAttribute('id', containerId);\r\n if (this.identifier != WidgetTypes.ExitPopup) {\r\n // In case of ExitPopup we dont need this.\r\n hideElement(wrapper);\r\n }\r\n this.elements.containerSelector = `#${containerId}`;\r\n target.appendChild(wrapper);\r\n\r\n // apply polyfills if any - particular template/view level\r\n if (tpl.polyfills) {\r\n this.pollyfill(tpl, tpl.polyfills);\r\n }\r\n } else {\r\n throw `no state found with the key: ${state}`;\r\n }\r\n // tpl level afterRender\r\n if (tpl.afterRender) {\r\n if (\r\n this.identifier === WidgetTypes.ExitPopup ||\r\n this.identifier === WidgetTypes.PreChat\r\n ) {\r\n // In case of ExitPopup and prechat we dont need this.\r\n } else {\r\n window.setTimeout(() => {\r\n if (this.identifier === WidgetTypes.DOM) {\r\n wrapper.style.visibility = 'hidden';\r\n }\r\n showElement(wrapper);\r\n }, 0);\r\n }\r\n window.setTimeout(tpl.afterRender.bind2(this, tpl), 0);\r\n }\r\n // widget level afterRender\r\n if (this.options.afterRender) {\r\n this.options.afterRender.bind2(this);\r\n }\r\n }\r\n\r\n unrender(state, remove) {\r\n // grab target based on state and hide it if already present\r\n const wrapperContainer = this.DOM.getElementById(this.identifier + state);\r\n if (wrapperContainer) {\r\n hideElement(wrapperContainer);\r\n }\r\n // remove altogether if asked\r\n if (remove == true) {\r\n try {\r\n this.DOM.body.removeChild(wrapperContainer);\r\n } catch (e) { }\r\n }\r\n }\r\n\r\n style(css) {\r\n const cssArr = Array.isArray(css) ? css : [css]; // css could be a single obj or list of css obj's\r\n for (let i = 0; i < cssArr.length; i++) {\r\n addStyleTextInIframe(cssArr[i], undefined, undefined, this.DOM);\r\n }\r\n }\r\n\r\n // These are callback functions which get invoked after rendering a view\r\n pollyfill(scope, callbacks) {\r\n const tweaksArr = Array.isArray(callbacks) ? callbacks : [callbacks]; // tweaks could be a single func or list of func\r\n for (let i = 0; i < tweaksArr.length; i++) {\r\n const tweak = tweaksArr[i];\r\n if (typeof tweak === 'function') {\r\n try {\r\n tweak.apply(scope, tweak.arguments);\r\n } catch (e) {\r\n // console.log(e);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","const ParticipantIds = {\r\n visitor: 0,\r\n system: -1,\r\n bot: -2,\r\n prechat: -3,\r\n predefined: -4,\r\n nonVisitorSystem: -6, // system message to be shown on only dashboard end, and not on visitor end\r\n pokeMessage: -7\r\n};\r\nexport default ParticipantIds;\r\n","const SourceType = {\r\n PreChat: 1,\r\n VideoGreet: 2\r\n};\r\nexport default SourceType;\r\n","// An enum to track message state in terms of user's action\r\nconst MessageStatus = {\r\n Unread: 0,\r\n Read: 1,\r\n Closed: 2\r\n};\r\nexport default MessageStatus;\r\n","// An enum to track message state in terms of visibility of message\r\nconst MessageVisibility = {\r\n Hidden: 0,\r\n Visible: 1\r\n};\r\nexport default MessageVisibility;\r\n","import decodeHTML from \"./decodeHTML\";\r\nimport parseTemplate from \"./parseTemplate\";\r\nimport removeTextFollowedByColon from \"./removeTextFollowedByColon\";\r\nimport GlobalVariables from \"../GlobalVariables\";\r\nimport { ScriptsQuestionType } from \"../enums/Enum\";\r\nimport logIt from \"../../../logIt\";\r\n\r\n/*\r\n * This is a stand-alone class to cater handling piped messages regardless of the context (i.e. DOM or Prechat)\r\n * USAGE:\r\n * 1- just call ApexChat.PipedMessageHandlerSingleton.isValidPipedMessage(msg)\r\n * 2- and if true call ApexChat.PipedMessageHandlerSingleton.startPolling({optional callbacks to plug custom behavior})\r\n * EXAMPLE: see onMessageArrived in chatroom-v3.js\r\n */\r\nconst PipedMessageHandler = function (options) {\r\n const me = this;\r\n me.isValidPipedMessage = false;\r\n me.messageInterval = null;\r\n me._pollPeriodically = function () {\r\n logIt(`MULTI::polling with delay:${me.interval}`);\r\n window.clearInterval(me.messageInterval);\r\n let calcInterval = me.interval;\r\n // priodically change timeout for each split piped message\r\n if (me.intervalsArray) {\r\n for (let i = 0; i < me.multiMessages.length; i++) {\r\n if (me.intervalsArray[i]) {\r\n calcInterval = me.intervalsArray[i];\r\n }\r\n console.log(i, me.intervalsArray[i], calcInterval);\r\n }\r\n }\r\n me.messageInterval = setInterval(pollMessages, calcInterval); // start sending messages async\r\n };\r\n me.isProcessing = false; // introduced a flag to keep track of whether a msg is already being processed\r\n\r\n // Firstly, validate the message as a piped msg; if true, initialize things required for polling later\r\n const delayEstimator = function (number) {\r\n if (number <= 30) {\r\n return 2000;\r\n }\r\n if (number <= 50) {\r\n return 2500;\r\n }\r\n if (number <= 75) {\r\n return 3000;\r\n }\r\n if (number <= 100) {\r\n return 3500;\r\n }\r\n return 4000;\r\n };\r\n const validateMessage = function (args) {\r\n me.isProcessing = true; // turn on\r\n\r\n // m must be a Plain or QT msg delimitted by || with the last one QT text\r\n if (args.m.questionType >= ScriptsQuestionType.None &&\r\n args.m.text.indexOf(GlobalVariables.FULLTEXT_MULTIPLE_MESSAGE_DELIMITER) > 0) {\r\n me.isValidPipedMessage = true;\r\n me.args = args;\r\n me.args.m.text = parseTemplate(\r\n removeTextFollowedByColon(decodeHTML(me.args.m.text)),\r\n ApexChat.options || ''\r\n );\r\n me.multiMessages = me.args.m.text\r\n .split(GlobalVariables.FULLTEXT_MULTIPLE_MESSAGE_DELIMITER)\r\n .reverse();\r\n me.randomIdSeed = Math.ceil(Math.random() * 100000);\r\n\r\n // Generate differnt timeout for each split pipe message\r\n me.intervalsArray = [];\r\n if (me.args.m.isFromHistory) {\r\n me.intervalsArray = undefined;\r\n } else if (me.multiMessages.length > 1) {\r\n for (var i = 0; i < me.multiMessages.length; i++) {\r\n // remove text before :: to calculate the actual time\r\n const leanText = removeTextFollowedByColon(me.multiMessages[i]);\r\n if (me.multiMessages[i].length) {\r\n // check if pipe message is first then duration to be set from options\r\n // check if the length os less than or equal to 100 than\r\n // apply the factor or use 4000ms delay by default\r\n if (i === me.multiMessages.length - 1) {\r\n if (!ApexChat.addDelayToMappedQuestion) {\r\n const firstMessageDuration = options &&\r\n options.preChat &&\r\n options.preChat.preChatMessages &&\r\n options.preChat.preChatMessages.length > 0 &&\r\n options.preChat.preChatMessages[0].duration > 0;\r\n\r\n if (firstMessageDuration) {\r\n me.intervalsArray.push(\r\n options.preChat.preChatMessages[0].duration * 1000\r\n );\r\n } else {\r\n me.intervalsArray.push(1000);\r\n }\r\n } else {\r\n me.intervalsArray.push(delayEstimator(+leanText.length));\r\n }\r\n } else {\r\n me.intervalsArray.push(delayEstimator(+leanText.length));\r\n }\r\n }\r\n }\r\n }\r\n // now check how many msgs should be processed quickly\r\n // criteria: match me.multiMessages vs ApexChat.prechatMessagesDisplayed\r\n // get index of last prechat msg clicked and hence calculate _noOfQuickMsgs\r\n if (ApexChat.prechatMessagesDisplayed) {\r\n let count = 0;\r\n // Simple Reverse was disturbing the orignal Array, i used slice().reverse()\r\n // Source: https://stackoverflow.com/questions/30610523/reverse-array-in-javascript-without-mutating-original-array\r\n const multiMessages = me.multiMessages.slice().reverse();\r\n for (var i = 0; i < ApexChat.prechatMessagesDisplayed.length; i++) {\r\n var totalPipedMsgArray = ApexChat.prechatMessagesDisplayed[i];\r\n multiMessages.find((displayedMsg, i) => {\r\n if (totalPipedMsgArray.text === displayedMsg &&\r\n totalPipedMsgArray.isShown) {\r\n count++;\r\n }\r\n });\r\n }\r\n me._noOfQuickMsgs = count;\r\n ApexChat.prechatMessagesDisplayed = null; // dispose once used\r\n }\r\n return true;\r\n }\r\n me.isProcessing = false;\r\n logIt('The message is not a pipped one');\r\n return false;\r\n };\r\n // used to stop polling after last msg has been sent over\r\n function stopPolling() {\r\n // cleanup previous state just in case, before processing a new msg\r\n _destroy();\r\n }\r\n // used to send split parts of a QT message 1-by-1\r\n function pollMessages(recur) {\r\n if (!me.multiMessages || (me.multiMessages && me.multiMessages.length === 0)) {\r\n // if multiMessage not available\r\n stopPolling(); // stop polling if its running.\r\n return;\r\n }\r\n logIt(`MULTI::polling messages:${me.multiMessages.length}`);\r\n if (me.multiMessages.length == 1) {\r\n // the last one? treat it as a normal QT\r\n me.args.m.isSplitMessage = true;\r\n var msg = me.multiMessages.pop(); // pick the last QT msg\r\n me.args.m.text = msg;\r\n // we already have 3s delay for piped/split messages,\r\n // so we need to bypass config based questionTypeDelaySeconds\r\n // to avoid longer delays for a QT in the pipped msg\r\n if (me.args.m.questionType > 0) {\r\n me.args.m.questionTypeDelaySeconds = me.interval;\r\n }\r\n me.args.m.isLastSplitMessage = true;\r\n me.args.cb = stopPolling; // send stopPolling over to the caller; i.e. onMessageArrived in widgetbase.js\r\n logIt(`MULTI:: polling last msg:${JSON.stringify(me.args)}`);\r\n me._lastPollingCallback(me.args); // pass on to further process; e.g. display the last msg\r\n return;\r\n }\r\n // handle initial texts 1-by-1 as plain msgs\r\n var msg = me.multiMessages.pop(); // pick next split msg\r\n\r\n // clone m\r\n const copyMsg = JSON.parse(JSON.stringify(me.args.m));\r\n copyMsg.createdOn = me.args.m.createdOn;\r\n copyMsg.questionType = ScriptsQuestionType.None; // treat the initial texts as plain messages\r\n copyMsg.text = msg;\r\n copyMsg.id = ++me.randomIdSeed;\r\n copyMsg.isSplitMessage = true;\r\n logIt(`MULTI:: polling: ${JSON.stringify(copyMsg)}`);\r\n me._startPollingCallback(copyMsg).then(() => {\r\n // process quick msgs and display the rest with delay\r\n // we need 1 not 0 because the first message will always be seen and already executed, in above code.\r\n if (recur && me._noOfQuickMsgs > 1) {\r\n me._noOfQuickMsgs--;\r\n pollMessages(recur);\r\n } else {\r\n me._pollPeriodically();\r\n }\r\n\r\n }) // pass on to further process; e.g. display the msg\r\n\r\n\r\n\r\n\r\n }\r\n\r\n var _destroy = function () {\r\n me.isValidPipedMessage = false;\r\n window.clearInterval(me.messageInterval);\r\n me.args = null;\r\n me._noOfQuickMsgs = null;\r\n me.multiMessages = null;\r\n me.randomIdSeed = null;\r\n me.isProcessing = false;\r\n me._init = null;\r\n me._startPollingCallback = null;\r\n me._lastPollingCallback = null;\r\n };\r\n const _startPolling = async (options) => {\r\n // set callbacks\r\n const _init = options && options.init ? options.init : function () { };\r\n try {\r\n _init(); // call any init function if specified by caller\r\n } catch (ex) {\r\n logIt(`error occurred:${ex}`);\r\n }\r\n // setup start/end of polling behavior\r\n me._startPollingCallback = options && options.startPollingCallback;\r\n me._lastPollingCallback = options && options.lastPollingCallback;\r\n me._beforePollingCallBack = options.beforePollingCallBack;\r\n me.interval = options.messageDisplayDuration || 3000;\r\n // if _validateMessage method has calculated any me._noOfQuickMsgs, process them\r\n if (me._noOfQuickMsgs && me._noOfQuickMsgs > 0) {\r\n // make sure the number of message is greater than 0\r\n pollMessages(true);\r\n } else {\r\n me._pollPeriodically();\r\n }\r\n };\r\n const _isProcessing = function () {\r\n return me.isProcessing;\r\n };\r\n const _resetInterval = function (ms) {\r\n window.clearInterval(me.messageInterval);\r\n me.interval = ms; // re-start sending messages with new interval\r\n\r\n };\r\n return {\r\n isValidPipedMessage: validateMessage,\r\n startPolling: _startPolling,\r\n reset: _destroy,\r\n isProcessing: _isProcessing,\r\n resetInterval: _resetInterval\r\n };\r\n};\r\nexport default PipedMessageHandler;\r\n","// An enum to keep the 3 prechat message animations\r\nconst PreChatMessageAnimations = {\r\n First: 'apexchat_prechat_first_msg', //\r\n Upcoming: 'apexchat_prechat_upcoming_msg', //\r\n Previous: 'apexchat_prechat_prev_msg', //\r\n FadeOut: 'apexchat_prechat_fade_out' //\r\n};\r\nexport default PreChatMessageAnimations;\r\n","import hasClass from './hasClass';\r\n\r\nconst addClass = function (ele, cls) {\r\n if (ele) {\r\n if (!hasClass(ele, cls)) {\r\n ele.className += ` ${cls}`;\r\n }\r\n }\r\n};\r\nexport default addClass;\r\n","import logIt from '../../../logIt';\r\nimport decodeHTML from './decodeHTML';\r\n\r\n// This function is used for adding option property of msg.options object\r\nconst addOptionProperty = (options) => {\r\n try {\r\n const type = typeof options;\r\n if (type === 'string') {\r\n // most probably consent QT\r\n let parsedOptions = ApexChat.TryParse(options);\r\n if (typeof parsedOptions === 'string') {\r\n parsedOptions = ApexChat.TryParse(parsedOptions);\r\n return parsedOptions;\r\n }\r\n }\r\n // add option property to msg.options object\r\n if (options && options.length && options.length > 0) {\r\n // check if options property exists\r\n // don't try parsing if already JSON\r\n options = ApexChat.TryParse(options);\r\n options.forEach((element) => {\r\n if (!element.option) {\r\n element.option = element.text; // copy value of text property to new option property in msg.options object.\r\n } else {\r\n element.option = decodeHTML(element.option); // convert into html.\r\n }\r\n });\r\n return type === 'object' ? options : JSON.stringify(options); // return msg.options object with new option property added.\r\n }\r\n } catch (ex) {\r\n logIt(ex);\r\n }\r\n};\r\nexport default addOptionProperty;\r\n","const isHTML = (str) => {\r\n const a = document.createElement('div');\r\n a.innerHTML = str;\r\n\r\n for (let c = a.childNodes, i = c.length; i--;) {\r\n if (c[i].nodeType === 1) return true;\r\n }\r\n\r\n return false;\r\n};\r\nexport default isHTML;","import isHTML from './IsHtml';\r\nimport correctAnchorTarget from './correctAnchorTarget';\r\nimport decodeHTML from './decodeHTML';\r\nimport GlobalVariables from '../GlobalVariables';\r\n\r\n/* CHAT-5855 EP showing
html tag as plain text on V2 and V3, for both visitor upon refreshing the page and agents can see it as plain text without refreshing.\r\n * this problem only occur when message contain both Encoded and Decoded html\r\n * checking if message contain both Encoded and Decoded html then removing Decoded html and rendering Encoded html\r\n * also corrects anchor tags with no targets */\r\nconst cleanInvalidHtml = (html) => {\r\n html = html || '';\r\n // Decode the HTML first to decode the special chars like &,# or > signs\r\n // then remove encoded html\r\n let decodedHtml = decodeHTML(html);\r\n\r\n /* checking if html contain both Encoded and Decoded html in message */\r\n if (\r\n (decodedHtml.match(GlobalVariables.encodedHtmlRegex) ||\r\n decodedHtml.match(GlobalVariables.scriptTagRegex) ||\r\n decodedHtml.match(GlobalVariables.styleTagRegex)) &&\r\n isHTML(decodedHtml)\r\n ) {\r\n /* removing decodedHtml from text */\r\n decodedHtml = decodedHtml.replace(/<[^>]*>/g, '');\r\n }\r\n return correctAnchorTarget(decodedHtml);\r\n};\r\nexport default cleanInvalidHtml;\r\n","/* corrects anchor tags with no targets */\r\nexport default function correctAnchorTarget(str) {\r\n const tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = str;\r\n // Previously using tempDiv.querySelectorAll('a').forEach It's not browser compaitable\r\n // source: https://stackoverflow.com/questions/41054259/how-can-i-make-queryselectorall-or-foreach-work-in-firefox\r\n const anchors = tempDiv.getElementsByTagName('a');\r\n if (anchors.length > 0) {\r\n for (let i = 0; i < anchors.length; i++) {\r\n anchors[i].setAttribute('target', '_blank');\r\n }\r\n }\r\n return tempDiv.innerHTML;\r\n};\r\n\r\n","// CSS Utility functions - END\r\nconst decodeHTML = (html) => {\r\n const txt = document.createElement('textarea');\r\n txt.innerHTML = html;\r\n return txt.value;\r\n};\r\nexport default decodeHTML;\r\n","const encodeHTML = (html) => {\r\n const txt = document.createElement('textarea');\r\n txt.innerText = html;\r\n return txt.innerHTML;\r\n};\r\nexport default encodeHTML;\r\n","import getStyle from './getStyle';\r\n\r\nconst getHeightOfElement = function (ele) {\r\n return parseInt(getStyle(ele, 'height'));\r\n};\r\nexport default getHeightOfElement;\r\n","const getStyle = (el, cssStyle) => {\r\n const re = /(-)(\\w)/g;\r\n const ieStyle = cssStyle.replace(re, (m, p1, p2) => p2.toUpperCase());\r\n if (el.currentStyle) {\r\n // IE\r\n return el.currentStyle[ieStyle];\r\n }\r\n if (window.getComputedStyle) {\r\n // W3C\r\n return window.getComputedStyle(el, '').getPropertyValue(cssStyle);\r\n }\r\n return null;\r\n};\r\nexport default getStyle;\r\n","const hasClass = function (ele, cls) {\r\n if (ele) {\r\n return ele.className.match(new RegExp(`(\\\\s|^)${cls}(\\\\s|$)`));\r\n }\r\n};\r\nexport default hasClass;\r\n","const localStorageAPIGet = function (storageName) {\r\n if (!storageName) return;\r\n const prefix = storageName.substring(0, 9);\r\n if (prefix === 'livechat_') {\r\n storageName = storageName.substring(prefix.length, storageName.length);\r\n return (\r\n ApexChat.localStorageAPI.Get(`apexchat_${storageName}`) ||\r\n ApexChat.localStorageAPI.Get(`livechat_${storageName}`)\r\n );\r\n }\r\n return ApexChat.localStorageAPI.Get(storageName);\r\n};\r\nexport default localStorageAPIGet;\r\n","import hasClass from \"./hasClass\";\r\n\r\nconst removeClass = function (ele, cls) {\r\n if (hasClass(ele, cls)) {\r\n const reg = new RegExp(`(\\\\s|^)${cls}(\\\\s|$)`);\r\n ele.className = ele.className.replace(reg, ' ');\r\n }\r\n};\r\nexport default removeClass;\r\n","import hasClass from \"./hasClass\";\r\n\r\nconst removeMultipleCSSClasses = (ele, cls) => {\r\n const multiClass = cls.split(' ');\r\n if (multiClass.length > 0) {\r\n for (let i = 0; i < multiClass.length; i++) {\r\n if (hasClass(ele, multiClass[i])) {\r\n const reg = new RegExp(`(\\\\s|^)${multiClass[i]}(\\\\s|$)`);\r\n ele.className = ele.className.replace(reg, ' ');\r\n }\r\n }\r\n }\r\n};\r\nexport default removeMultipleCSSClasses;\r\n","const removeTextFollowedByColon = function (text) {\r\n // the node can start with text followed by \"::\"; if it does, then it's instructional,\r\n // and shouldn't be included\r\n const re = new RegExp('\\\\\\\\', 'g'); // back slash validate\r\n let val = text;\r\n if (val && val.indexOf('::') > -1) {\r\n val = val.split('::')[1].replace(/^\\s+/g, '');\r\n }\r\n val = val\r\n .replace(/ /g, ' ')\r\n .replace(/
/, '\\r\\n')\r\n .replace(re, '');\r\n return val;\r\n};\r\nexport default removeTextFollowedByColon;\r\n","import RebasePath from './RebasePath';\r\n\r\nconst setPrechatStyles = (root, preChatObject) => {\r\n const { preChat } = preChatObject;\r\n root.documentElement.style.setProperty(\r\n '--innerObjectBackgroundImage',\r\n RebasePath(preChat.handlerImageUrl)\r\n );\r\n root.documentElement.style.setProperty(\r\n '--innerObjectBorderColor',\r\n preChat.innerObject.borderColor\r\n );\r\n root.documentElement.style.setProperty('--innerObjectPadding', preChat.innerObject.padding);\r\n root.documentElement.style.setProperty(\r\n '--innerObjectBorderColor',\r\n preChat.innerObject.borderColor\r\n );\r\n root.documentElement.style.setProperty(\r\n '--innerObjectBorderWidth',\r\n preChat.innerObject.borderWidth\r\n );\r\n root.documentElement.style.setProperty('--innerObjectPadding', preChat.innerObject.padding);\r\n root.documentElement.style.setProperty(\r\n '--innerObjectBorderRadius',\r\n preChat.innerObject.borderRadius\r\n );\r\n root.documentElement.style.setProperty(\r\n '--outerObjectBackgroundImage',\r\n preChat.outerObject.backgroundImage\r\n );\r\n // root.documentElement.style.setProperty('--outerObjectBorderColor', preChat.outerObject.borderColor);\r\n root.documentElement.style.setProperty(\r\n '--outerObjectBorderWidth',\r\n preChat.outerObject.borderWidth\r\n );\r\n root.documentElement.style.setProperty('--outerObjectPadding', preChat.outerObject.padding);\r\n root.documentElement.style.setProperty(\r\n '--outerObjectBorderRadius',\r\n preChat.outerObject.borderRadius\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messageCounterBackgroundColor',\r\n preChat.messageCounter.backgroundColor\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messageCounterFontFamily',\r\n preChat.messageCounter.font.family\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messageCounterFontSize',\r\n preChat.messageCounter.font.size\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messageCounterFontColor',\r\n preChat.messageCounter.font.color\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messagePopupBackgroundColor',\r\n preChat.messagePopup.backgroundColor\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messagePopupBorderRadius',\r\n preChat.messagePopup.borderRadius\r\n );\r\n root.documentElement.style.setProperty('--messagePopupPadding', preChat.messagePopup.padding);\r\n root.documentElement.style.setProperty(\r\n '--messagePopupFontFamily',\r\n preChat.messagePopup.font.family\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messagePopupFontSize',\r\n preChat.messagePopup.font.size\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messagePopupFontColor',\r\n preChat.messagePopup.font.color\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messagePopupCloseIconHeight',\r\n preChat.messagePopup.closeIconSize.height\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messagePopupCloseIconWidth',\r\n preChat.messagePopup.closeIconSize.width\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messageCounterCounterRight',\r\n preChat.messageCounter.counterRight\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messageCounterCounterTop',\r\n preChat.messageCounter.counterTop\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messagePopupBorderWidth',\r\n preChat.messagePopup.borderWidth\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messagePopupBackgroundColor',\r\n preChat.messagePopup.backgroundColor\r\n );\r\n if (preChatObject.rdThemeSettings.questionType.qTQuestion) {\r\n root.documentElement.style.setProperty(\r\n '--messagePopupHighlightColor',\r\n preChatObject.rdThemeSettings.questionType.qTQuestion\r\n );\r\n } else {\r\n root.documentElement.style.setProperty(\r\n '--messagePopupHighlightColor',\r\n preChat.messagePopup.highLightColor\r\n );\r\n }\r\n\r\n root.documentElement.style.setProperty(\r\n '--messagePopupAgentNameFontColor',\r\n preChat.messagePopup.agentNameFontColor\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messagePopupRdGlowTagColor',\r\n preChat.messagePopup.rdGlowTagColor\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messagePopupLowLightColor',\r\n preChat.messagePopup.lowLightColor\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messagePopupMainFontColor',\r\n preChat.messagePopup.mainFontColor\r\n );\r\n};\r\nexport default setPrechatStyles;\r\n","import GlobalVariables from '../GlobalVariables';\r\n\r\nconst RebasePath = (filePath) => {\r\n let path = filePath;\r\n if (path.startsWith('http')) {\r\n return `url(${path})`;\r\n }\r\n if (path.startsWith('/')) {\r\n path = path.substring(1);\r\n }\r\n if (env.IsCDN === 'true') {\r\n return `url(${GlobalVariables.CdnBaseUrl}${path})`;\r\n }\r\n return `url(${GlobalVariables.ApexChatBaseUrl}${path})`;\r\n};\r\nexport default RebasePath;\r\n","/**\r\n * ApexChat.stringify is same as JSON.stringify, Its wraps the default JSON.stringify,\r\n * because many client's website can polute the JSON.stringify and we have observed this in ticket #CHAT-6786\r\n * @param {any} value\r\n * @param {any} replacer\r\n * @param {any} space\r\n */\r\nconst stringify = function (value, replacer, space) {\r\n // Checking Its Array Type or Normal JSON\r\n if (value && value.length) {\r\n const val = window.JSON.stringify(value, replacer, space);\r\n // JSON has quoted with invalid Inverted commas, we are removing it elsewise returning the same value.\r\n return val.match(/^\".*/) ? val.substring(1, val.length - 1) : val;\r\n }\r\n return window.JSON.stringify(value, replacer, space);\r\n};\r\nexport default stringify;\r\n"],"names":["WidgetView","constructor","options","this","DOM","dom","identifier","elements","templates","style","cssLink","getStyleForIframe","linkId","undefined","beforeRender","window","setTimeout","bind2","initialState","render","polyfills","pollyfill","getBody","getElementsByTagName","bind","selector","ev","cb","elMatched","querySelector","e","observe","reRender","model","containerSelector","innerHTML","parseTemplate","chatWidgetTemplate","getContainer","state","wrapperContainer","getElementById","showElement","tpl","find","key","wrapper","target","targetElementId","containerElemType","createElement","handlerImageUrl","AgentImageHandler","containerId","setAttribute","WidgetTypes","ExitPopup","hideElement","appendChild","afterRender","PreChat","visibility","unrender","remove","body","removeChild","css","cssArr","Array","isArray","i","length","addStyleTextInIframe","scope","callbacks","tweaksArr","tweak","apply","arguments","visitor","system","bot","prechat","predefined","nonVisitorSystem","pokeMessage","VideoGreet","Unread","Read","Closed","Hidden","Visible","me","isValidPipedMessage","messageInterval","_pollPeriodically","logIt","interval","clearInterval","calcInterval","intervalsArray","multiMessages","console","log","setInterval","pollMessages","isProcessing","delayEstimator","number","stopPolling","_destroy","recur","args","m","isSplitMessage","msg","pop","text","questionType","questionTypeDelaySeconds","isLastSplitMessage","JSON","stringify","_lastPollingCallback","copyMsg","parse","createdOn","ScriptsQuestionType","None","id","randomIdSeed","_startPollingCallback","then","_noOfQuickMsgs","_init","indexOf","GlobalVariables","FULLTEXT_MULTIPLE_MESSAGE_DELIMITER","removeTextFollowedByColon","decodeHTML","ApexChat","split","reverse","Math","ceil","random","isFromHistory","leanText","addDelayToMappedQuestion","push","preChat","preChatMessages","duration","prechatMessagesDisplayed","count","slice","totalPipedMsgArray","displayedMsg","isShown","startPolling","async","init","ex","startPollingCallback","lastPollingCallback","_beforePollingCallBack","beforePollingCallBack","messageDisplayDuration","reset","resetInterval","ms","First","Upcoming","Previous","FadeOut","ele","cls","hasClass","className","type","parsedOptions","TryParse","forEach","element","option","html","decodedHtml","match","encodedHtmlRegex","scriptTagRegex","styleTagRegex","str","a","document","c","childNodes","nodeType","isHTML","replace","tempDiv","anchors","correctAnchorTarget","txt","value","innerText","parseInt","getStyle","el","cssStyle","ieStyle","p1","p2","toUpperCase","currentStyle","getComputedStyle","getPropertyValue","RegExp","storageName","prefix","substring","localStorageAPI","Get","reg","removeMultipleCSSClasses","multiClass","re","val","setPrechatStyles","root","preChatObject","documentElement","setProperty","filePath","path","startsWith","CdnBaseUrl","RebasePath","innerObject","borderColor","padding","borderWidth","borderRadius","outerObject","backgroundImage","messageCounter","backgroundColor","font","family","size","color","messagePopup","closeIconSize","height","width","counterRight","counterTop","rdThemeSettings","qTQuestion","highLightColor","agentNameFontColor","rdGlowTagColor","lowLightColor","mainFontColor","replacer","space"],"sourceRoot":""}