{"version":3,"file":"8778.chunk.768d54c6a8cd41d70e35.js","mappings":"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","sources":["webpack://apexchatwidgets/./widgets/core/WidgetView.js","webpack://apexchatwidgets/./widgets/core/enums/BrandingWidget.js","webpack://apexchatwidgets/./widgets/core/enums/ParticipantIds.js","webpack://apexchatwidgets/./widgets/core/enums/SourceTypes.js","webpack://apexchatwidgets/./widgets/core/extend.js","webpack://apexchatwidgets/./widgets/core/hooks/Branding.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","webpack://apexchatwidgets/./widgets/core/hooks/underscore.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 BrandingWidget = {\r\n RD_DOM: 1,\r\n RD_Invitation: 2,\r\n RD_EP: 3,\r\n RD_PreChat: 4\r\n};\r\nexport default BrandingWidget;\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 AIBot: -8\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","import underscore from \"./hooks/underscore\";\r\n\r\nexport default function extend() {\r\n let options;\r\n let name;\r\n let src;\r\n let copy;\r\n let copyIsArray;\r\n let clone;\r\n let target = arguments[0] || {};\r\n let i = 1;\r\n const { length } = arguments;\r\n let deep = false;\r\n // Handle a deep copy situation\r\n if (typeof target === 'boolean') {\r\n deep = target;\r\n target = arguments[1] || {};\r\n // skip the boolean and the target\r\n i = 2;\r\n }\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if (typeof target !== 'object' && !underscore.isFunction(target)) {\r\n target = {};\r\n }\r\n // extend jQuery itself if only one argument is passed\r\n if (length === i) {\r\n target = this;\r\n --i;\r\n }\r\n for (; i < length; i++) {\r\n // Only deal with non-null/undefined values\r\n if ((options = arguments[i]) != null) {\r\n // Extend the base object\r\n for (name in options) {\r\n src = target[name];\r\n copy = options[name];\r\n // Prevent never-ending loop\r\n if (target === copy) {\r\n continue;\r\n }\r\n // Recurse if we're merging plain objects or arrays\r\n if (\r\n deep &&\r\n copy &&\r\n (underscore.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))\r\n ) {\r\n if (copyIsArray) {\r\n copyIsArray = false;\r\n clone = src && Array.isArray(src) ? src : [];\r\n } else {\r\n clone = src && underscore.isPlainObject(src) ? src : {};\r\n }\r\n // Never move original objects, clone them\r\n target[name] = extend(deep, clone, copy);\r\n // Don't bring in undefined values\r\n } else if (copy !== undefined) {\r\n target[name] = copy;\r\n }\r\n }\r\n }\r\n }\r\n // Return the modified object\r\n return target;\r\n}\r\n","import extend from '../extend';\r\nimport BrandingWidget from '../enums/BrandingWidget';\r\n\r\n/**\r\n * Apply Branding.\r\n * takes config as param returns by settings branding values\r\n * used in Portal & Visitor-end\r\n */\r\nexport default class Branding {\r\n init(options, me) {\r\n this.widget = options.widget;\r\n // Brand config\r\n this.brand = { config: options.brandConfig };\r\n this.brandColor = this.brand.config.global.branding.brandColorCode;\r\n this.brandColorOpacity = `${this.brand.config.global.branding.brandColorCode}0F`; // Hex code 0F for 4% opacity\r\n\r\n // Apply Branding config\r\n this.applyBranding(this.widget);\r\n return this;\r\n }\r\n\r\n applyBranding(widget) {\r\n const me = this;\r\n switch (widget) {\r\n case BrandingWidget.RD_DOM:\r\n return (function () {\r\n // Generic function for RD DOM, takes property of specfic widget, and set up the config.\r\n me.overrideConfig(BrandingWidget.RD_DOM, 'rdChat');\r\n })();\r\n case BrandingWidget.RD_Invitation:\r\n return (function () {\r\n // Generic function, takes property of specfic widget, and set up the config.\r\n me.overrideConfig(BrandingWidget.RD_Invitation, 'rdInvitation');\r\n })();\r\n case BrandingWidget.RD_EP:\r\n return (function () {\r\n // Generic function, takes property of specfic widget, and set up the config.\r\n me.overrideConfig(BrandingWidget.RD_EP, 'exitPopupChat');\r\n })();\r\n case BrandingWidget.RD_PreChat:\r\n return (function () {\r\n // Generic function, takes property of specfic widget, and set up the config.\r\n me.overrideConfig(BrandingWidget.RD_DOM, 'rdThemeSettings');\r\n me.overrideConfig(BrandingWidget.RD_PreChat, 'preChat');\r\n })();\r\n default:\r\n }\r\n }\r\n\r\n /**\r\n * / Generic function which override the config for branding\r\n * @param {any} widget\r\n * @param {any} propertyName\r\n */\r\n overrideConfig(widget, propertyName) {\r\n const me = this;\r\n // getting branding object\r\n const brandedConfig = me.getBrandingElements(widget);\r\n const backupConfig = JSON.parse(JSON.stringify(me.brand.config)); // Cloning object\r\n\r\n // overriding the orignal config with branding\r\n const config = extend(true, me.brand.config[propertyName], brandedConfig);\r\n backupConfig[propertyName] = config;\r\n me.brandedConfig = backupConfig;\r\n }\r\n\r\n getBrandedConfig() {\r\n return this.brandedConfig;\r\n }\r\n\r\n getBrandingElements(widget) {\r\n const me = this;\r\n // In case of branding Visitor Response text is static #3A3A3A\r\n const brandingStaticValues = {\r\n color: '#3A3A3A',\r\n backgroundColor: '#3A3A3A0F',\r\n whiteText: '#FFFFFF',\r\n darkOpacity: `#303030${80}`\r\n };\r\n switch (widget) {\r\n case BrandingWidget.RD_DOM:\r\n return {\r\n enableBranding: true,\r\n brandColor: me.brandColor,\r\n brandColorOpacity: me.brandColorOpacity,\r\n whiteText: brandingStaticValues.whiteText,\r\n general: {\r\n headerColor: me.brandColor,\r\n disclaimerFont: {\r\n color: me.brandColor\r\n },\r\n disclaimerBgColor: me.brandColorOpacity\r\n },\r\n messages: {\r\n agentFont: {\r\n color: me.brandColor\r\n },\r\n visitorFont: {\r\n color: brandingStaticValues.color\r\n },\r\n visitorBgColor: brandingStaticValues.backgroundColor,\r\n typingIndicatorDots: me.brandColor,\r\n agentBgColor: me.brandColorOpacity\r\n },\r\n questionType: {\r\n qTBorder: me.brandColor,\r\n qTQuestion: me.brandColor,\r\n qTButton: me.brandColor\r\n }\r\n };\r\n case BrandingWidget.RD_Invitation:\r\n return {\r\n general: {\r\n backgroundColor: me.brandColor,\r\n typingIndicator: me.brandColor,\r\n btnClose: me.brandColorOpacity\r\n },\r\n rdIcon: {\r\n dotColor: me.brandColor,\r\n dotAnimationColor: me.brandColor\r\n }\r\n };\r\n case BrandingWidget.RD_EP:\r\n return {\r\n enableBranding: true,\r\n general: {\r\n leftBarBackground1Color: me.brandColor,\r\n leftBarBackground2Color: me.brandColor,\r\n btnClose: me.brandColorOpacity,\r\n opacityBrandColor: me.brandColorOpacity,\r\n disclaimerFont: {\r\n color: me.brandColor\r\n }\r\n },\r\n header: {\r\n participantsFont: {\r\n color: brandingStaticValues.whiteText\r\n }\r\n },\r\n messages: {\r\n agentFontField: {\r\n color: me.brandColor\r\n },\r\n visitorFontField: {\r\n color: brandingStaticValues.color\r\n }\r\n },\r\n body: {\r\n typingIndicatorFont: {\r\n color: me.brandColor\r\n }\r\n },\r\n sendButton: {\r\n sendbuttonBackgroundColor: me.brandColor\r\n }\r\n };\r\n case BrandingWidget.RD_PreChat:\r\n return {\r\n enableBranding: true,\r\n messagePopup: {\r\n highLightColor: me.brandColor,\r\n rdGlowTagColor: me.brandColor\r\n }\r\n };\r\n }\r\n }\r\n}\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","// note: contains utility function like lodash.js\r\n// todo: this should be move to some other location in a better way\r\nconst underscore = {\r\n // todo: very basic implementation without any typechecking\r\n firstIndex(items, predicate) {\r\n let selectedindex = -1;\r\n for (let i = 0; i < items.length; i++) {\r\n if (predicate(items[i])) {\r\n selectedindex = i;\r\n break;\r\n }\r\n }\r\n return selectedindex;\r\n },\r\n isFunction(func) {\r\n return typeof func === 'function';\r\n },\r\n // isArray: function (func) {\r\n // // for safe-side for very old browsers like chrome 5 and current version is Chrome#90.\r\n // if (typeof Array.isArray === 'undefined') {\r\n // Array.isArray = function (obj) {\r\n // return Object.prototype.toString.call(obj) === '[object Array]';\r\n // }\r\n // }\r\n // return Array.isArray(func);\r\n // },\r\n isPlainObject(obj) {\r\n /**\r\n * Because of IE, we must also check the constructor properties to ensure that node objects and window objects are not passed.\r\n */\r\n if (!obj || typeof obj !== 'object' || obj.nodeType || underscore.isWindow(obj)) {\r\n return false;\r\n }\r\n try {\r\n // If obj has no constructor attribute and no obj in the prototype chain of obj returns false\r\n if (\r\n obj.constructor &&\r\n !underscore.hasOwn.call(obj, 'constructor') &&\r\n !underscore.hasOwn.call(obj.constructor.prototype, 'isPrototypeOf')\r\n ) {\r\n return false;\r\n }\r\n } catch (e) {\r\n // IE8,9 will throw throw exceptions on certain host\r\n return false;\r\n }\r\n let key;\r\n for (key in obj) {\r\n }\r\n /**\r\n * If the key is not assigned, return fasle\r\n */\r\n return key === undefined || underscore.hasOwn.call(obj, key);\r\n },\r\n hasOwn:\r\n {}.hasOwnProperty ||\r\n function (prop) {\r\n if (prop in this) {\r\n const value = this[prop];\r\n\r\n if (!delete this[prop]) {\r\n return true;\r\n }\r\n if (!(prop in this) || this[prop] !== value) {\r\n this[prop] = value;\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n isWindow(obj) {\r\n return obj != null && obj === obj.window;\r\n }\r\n};\r\nexport default underscore;\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","RD_DOM","RD_Invitation","RD_EP","RD_PreChat","visitor","system","bot","prechat","predefined","nonVisitorSystem","pokeMessage","AIBot","VideoGreet","extend","name","src","copy","copyIsArray","clone","deep","underscore","isFunction","isPlainObject","Branding","init","me","widget","brand","config","brandConfig","brandColor","global","branding","brandColorCode","brandColorOpacity","applyBranding","BrandingWidget","overrideConfig","propertyName","brandedConfig","getBrandingElements","backupConfig","JSON","parse","stringify","getBrandedConfig","brandingStaticValues","enableBranding","whiteText","general","headerColor","disclaimerFont","color","disclaimerBgColor","messages","agentFont","visitorFont","visitorBgColor","typingIndicatorDots","agentBgColor","questionType","qTBorder","qTQuestion","qTButton","backgroundColor","typingIndicator","btnClose","rdIcon","dotColor","dotAnimationColor","leftBarBackground1Color","leftBarBackground2Color","opacityBrandColor","header","participantsFont","agentFontField","visitorFontField","typingIndicatorFont","sendButton","sendbuttonBackgroundColor","messagePopup","highLightColor","rdGlowTagColor","Unread","Read","Closed","Hidden","Visible","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","questionTypeDelaySeconds","isLastSplitMessage","_lastPollingCallback","copyMsg","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","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","font","family","size","closeIconSize","height","width","counterRight","counterTop","rdThemeSettings","agentNameFontColor","lowLightColor","mainFontColor","replacer","space","firstIndex","items","predicate","selectedindex","func","obj","isWindow","hasOwn","call","prototype","hasOwnProperty","prop"],"sourceRoot":""}