{"version":3,"file":"DOMChatWindow.chunk.96fdd0d564133cca42a7.js","mappings":"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","sources":["webpack://apexchatwidgets/./widgets/core/WidgetView.js","webpack://apexchatwidgets/./widgets/core/hooks/addClass.js","webpack://apexchatwidgets/./widgets/core/hooks/getStyle.js","webpack://apexchatwidgets/./widgets/core/hooks/hasClass.js","webpack://apexchatwidgets/./widgets/core/positioners/DOMPositioner.js","webpack://apexchatwidgets/./widgets/core/positioners/Positioner.js","webpack://apexchatwidgets/./widgets/dom/DOMChatWindow.js","webpack://apexchatwidgets/./widgets/core/hooks/GetSkinTemplate.js","webpack://apexchatwidgets/./widgets/core/hooks/setDOMWindowStyles.js","webpack://apexchatwidgets/./widgets/templates/dialog/widget_template.ejs"],"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","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","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","/**\r\n *\r\n * a dedicated class for doing positioning\r\n * @param {*} configurations\r\n * @param {*} context optional document object to cater parent and iframe based DOM manipulation alike\r\n * @returns\r\n */\r\nimport ChatMode from '../hooks/ChatMode';\r\nimport getViewport from '../hooks/getViewport';\r\nimport { Position, SkinInviteType } from '../enums/Enum';\r\nimport Positioner from './Positioner';\r\nimport showElement from '../hooks/showElement';\r\nimport addClass from '../hooks/addClass';\r\n\r\nexport default class DOMPositioner extends Positioner {\r\n constructor(configurations, context) {\r\n super(configurations, context);\r\n const me = this;\r\n me.configuration = configurations;\r\n me.DOM = context || document;\r\n }\r\n\r\n position(options) {\r\n const me = this;\r\n const tempDOM = me.DOM;\r\n if (options.context) {\r\n me.DOM = options.context;\r\n }\r\n if (options.isScroll) {\r\n return;\r\n }\r\n const objName = options.element;\r\n let targetObj;\r\n if (typeof objName === 'object') {\r\n targetObj = objName;\r\n } else {\r\n const pureElement = this.getPureElement(objName);\r\n targetObj = this.getElement(objName, pureElement);\r\n }\r\n let padding = 7;\r\n const container = targetObj;\r\n const dims = getViewport();\r\n /// For Android Glaxy tablets isMobile flag is not working thats why we add the android user agent condition\r\n if (options.model.options.isMobile || /Android/i.test(navigator.userAgent)) {\r\n const diff =\r\n ApexChat.ApexChatJquery(window).height() -\r\n ApexChat.ApexChatJquery(container).height();\r\n const current = ApexChat.ApexChatJquery(container, this.DOM).height();\r\n let target = current + diff;\r\n if (target < 110) {\r\n target = 110; // cutoff\r\n }\r\n let className = 'apexchat_dompopup_chatwindow_wrapper_mobile_width';\r\n if (ApexChat.options.skinInviteType === SkinInviteType.Rounded_Dynamic) {\r\n className = 'apexchat_rd_dompopup_chatwindow_wrapper_mobile_width';\r\n target = dims[1];\r\n }\r\n ApexChat.ApexChatJquery(container, this.DOM).css({ height: `${target}px` });\r\n if (!ApexChat.ApexChatJquery(container, this.DOM).hasClass(className)) {\r\n addClass(ApexChat.ApexChatJquery(container, this.DOM)[0], className);\r\n }\r\n if (!ApexChat.originalDeviceHeight) {\r\n ApexChat.originalDeviceHeight = target; // set height of screen only first time\r\n }\r\n ApexChat.deviceHeight = target;\r\n if (\r\n /iPad|iPhone|iPod/.test(navigator.userAgent) &&\r\n !window.MSStream &&\r\n options.model.options.chatMode == ChatMode.DOM\r\n ) {\r\n const lastHeight = ApexChat.ApexChatJquery(window).height(); // store the intial height.\r\n const lastWidth = ApexChat.ApexChatJquery(window).width(); // store the intial width.\r\n const keyboardIsOn = false;\r\n if (ApexChat.ApexChatJquery('#apexchat_chatMsg_textbox', this.DOM).is(':focus')) {\r\n ApexChat.ApexChatJquery('.livechat_messages', this.DOM).css({\r\n height: `${lastHeight / 3.5}px`\r\n });\r\n } else {\r\n ApexChat.ApexChatJquery('.livechat_messages', this.DOM).css({\r\n height: `${target}px`\r\n });\r\n }\r\n }\r\n } else {\r\n try {\r\n // support for padding in FF, etc\r\n const el = ApexChat.ApexChatJquery(container, this.DOM);\r\n const shadow =\r\n el.css('-moz-box-shadow') + el.css('-webkit-box-shadow') + el.css('box-shadow');\r\n if (shadow) {\r\n let parts = shadow.split(' ');\r\n parts = parts.slice(parts.length - 4);\r\n padding = 0;\r\n for (let i = 0; i < parts.length; i++) {\r\n const x = parseInt(parts[i], 10);\r\n if (!isNaN(x)) {\r\n padding += x;\r\n }\r\n }\r\n }\r\n } catch (e) { }\r\n if (options.model.options.position === Position.Center) {\r\n options.model.options.position = Position.Right;\r\n }\r\n container.style.position = 'fixed';\r\n // CHAT-5085 the Iframe size is increasing in case of long content(header disclaimer) but content is making scroll to be appeared as required.\r\n if (options.model.computedHeight && options.model.computedHeight < 500) {\r\n container.firstChild.style.height = `${options.model.computedHeight}px`;\r\n } else {\r\n container.firstChild.style.height = '500px'; // If Size is increasing more than 580 than put 580 as max-size.\r\n if (\r\n options.model.options.videoGreet &&\r\n options.model.options.videoGreet.persistVideoRatioForWidget\r\n ) {\r\n container.firstChild.style.width = `${ApexChat.WidgetMaximizedWidth + 32}px`;\r\n const triggerWidgetResize = function () {\r\n const winHeight = window.innerHeight;\r\n const widgetHeight = ApexChat.WidgetMaximizedHeight;\r\n container.firstChild.style.height =\r\n winHeight < widgetHeight ? `${winHeight - 20}px` : `${widgetHeight}px`;\r\n };\r\n triggerWidgetResize();\r\n window.addEventListener(\r\n 'resize',\r\n (event) => {\r\n triggerWidgetResize();\r\n },\r\n true\r\n );\r\n }\r\n }\r\n switch (options.model.options.position) {\r\n case Position.Right:\r\n container.style.bottom = '10px';\r\n container.style.right = '0px';\r\n break;\r\n case Position.Left:\r\n container.style.bottom = '10px';\r\n container.style.left = '0px';\r\n break;\r\n case Position.Middle:\r\n container.style.bottom = '10px';\r\n container.style.left = `${dims[0] / 2 - container.offsetWidth / 2}px`;\r\n break;\r\n case Position.TopRight:\r\n container.style.top = '0px';\r\n container.style.right = '0px';\r\n break;\r\n case Position.TopLeft:\r\n container.style.top = '0px';\r\n container.style.left = '0px';\r\n break;\r\n case Position.TopMiddle:\r\n container.style.top = '0px';\r\n container.style.left = `${dims[0] / 2 - container.offsetWidth / 2}px`;\r\n break;\r\n case Position.LeftCenter:\r\n container.style.top = `${dims[1] / 4 - 0}px`;\r\n container.style.left = '0px';\r\n break;\r\n case Position.RightCenter:\r\n container.style.top = `${dims[1] / 4 - 0}px`;\r\n container.style.right = '0px';\r\n break;\r\n default:\r\n }\r\n }\r\n me.DOM = tempDOM;\r\n showElement(me.DOM.querySelector('#apexchat_dompopup_chatwindow_max'));\r\n me.DOM.querySelector('#apexchat_dompopup_chatwindow_max').style.visibility = 'visible';\r\n }\r\n}\r\n","/**\r\n *\r\n * a dedicated class for doing positioning\r\n * @param {*} configurations\r\n * @param {*} context optional document object to cater parent and iframe based DOM manipulation alike\r\n * @returns\r\n */\r\n\r\nexport default class Positioner {\r\n constructor(configurations, context) {\r\n const me = this;\r\n me.configuration = configurations;\r\n me.DOM = context || document;\r\n }\r\n\r\n getPureElement(element) {\r\n if (element.indexOf('.') === -1 && element.indexOf('#') === -1) {\r\n return element;\r\n }\r\n return element.substring(1, element.lenght);\r\n }\r\n\r\n getElement(element, pureElement) {\r\n return this.isClass(element)\r\n ? this.DOM.getElementsByClassName(pureElement)[0]\r\n : this.DOM.getElementById(pureElement);\r\n }\r\n\r\n isClass(element) {\r\n return element.indexOf('.') !== -1;\r\n }\r\n}\r\n","/**\r\n * DOM: widget loaded inside its own iframe\r\n */\r\n\r\nimport chatDOMTemplate from '../templates/dialog/widget_template.ejs';\r\nimport { BaseWidget } from '../core/BaseWidget';\r\n//import RoundedDynamicUIController from './RoundedDynamicUIController';\r\nimport WidgetTypes from '../core/enums/WidgetTypes';\r\nimport WidgetView from '../core/WidgetView';\r\n//import DOMUIController from './DOMUIController';\r\nimport DOMPositioner from '../core/positioners/DOMPositioner';\r\nimport getElementsByClassName from '../core/hooks/getElementsByClassName';\r\n// import WebSmsFormValidator from '../core/hooks/WebSmsFormValidator';\r\nimport ADACompliant from '../core/hooks/ADACompliant';\r\nimport parseTemplate from '../core/hooks/parseTemplate';\r\nimport getStyle from '../core/hooks/getStyle';\r\nimport Browser from '../core/hooks/Browser';\r\nimport loadJQueryPlugins from '../core/loadJQueryPlugins';\r\nimport loadJQuery from '../core/hooks/loadJQuery';\r\nimport GlobalVariables from '../core/GlobalVariables';\r\nimport GetSkinTemplate from '../core/hooks/GetSkinTemplate';\r\nimport setDOMWindowStyles from '../core/hooks/setDOMWindowStyles';\r\nimport AgentImageHandler from '../core/hooks/AgentImageHandler';\r\nimport RunAsSoonAs from '../core/hooks/RunAsSoonAs';\r\nimport ChatStates from '../core/hooks/ChatStates';\r\nimport ChatEvents from '../core/hooks/ChatEvents';\r\nimport WidgetStates from '../core/hooks/WidgetStates';\r\nimport showElement from '../core/hooks/showElement';\r\nimport hideElement from '../core/hooks/hideElement';\r\nimport addClass from '../core/hooks/addClass';\r\nimport logIt from '../../logIt';\r\n\r\nexport default class DOMChatWindow extends BaseWidget {\r\n constructor(options) {\r\n super(Object.assign(options, { widget: WidgetTypes.DOM, $: module.defaults }));\r\n this.initiatedBy = 'Standard';\r\n this.language = null;\r\n this.interceptorResults = null;\r\n this.chatId = null;\r\n this.preLoadedOptions = null;\r\n this.resumable = false;\r\n this.closed = false;\r\n this.positioner = new DOMPositioner(this.options, this.DOM);\r\n\r\n this.ready();\r\n }\r\n\r\n ready() {\r\n super.ready();\r\n const me = this;\r\n const showIt = (args) => {\r\n if (args && args.value && args.value.visitorInfoId) {\r\n me.options.visitorInfoId = args.value.visitorInfoId;\r\n }\r\n if (!me.isWindowedStarted()) {\r\n me.maximize(args);\r\n }\r\n };\r\n this.subscribe(WidgetTypes.DropDown + WidgetStates.Clicked, showIt);\r\n this.subscribe(WidgetTypes.Bar + WidgetStates.Clicked, showIt);\r\n this.subscribe(WidgetTypes.Tab + WidgetStates.Clicked, showIt);\r\n this.subscribe(WidgetTypes.PreChat + WidgetStates.Clicked, (args) => {\r\n // CHAT-5649-InitiatedBy for preChat\r\n args.initiatedBy = args.initiatedBy || args.chatInitiatedBy; // define initiatedBy because we are getting argument initiatedBy from PreChat\r\n showIt(args);\r\n });\r\n this.subscribe(\r\n WidgetTypes.VideoGreetInvitation + WidgetStates.Clicked,\r\n function (args) {\r\n args.initiatedBy = args.initiatedBy || args.chatInitiatedBy; //define initiatedBy because we are getting argument initiatedBy from VideoGreetingInvitation\r\n showIt(args);\r\n }\r\n );\r\n this.subscribe(\r\n WidgetTypes.VisitorForm + WidgetStates.VisitorFormSubmitted,\r\n showIt\r\n );\r\n this.subscribe(WidgetTypes.DOMUIController + ChatEvents.OnChatReInit, () => {\r\n // when chat reinit DOM ui rerender so we need a state of DOMUIController rendererd on cookies\r\n me.state.changeState({\r\n origin: WidgetTypes.DOMUIController,\r\n toState: ChatStates.UIRendered\r\n });\r\n me.reInitChat();\r\n });\r\n this.subscribe(WidgetTypes.DOMUIController + WidgetStates.PoppedOut, () => {\r\n me.popout();\r\n });\r\n\r\n this.create();\r\n }\r\n\r\n create() {\r\n super.create();\r\n const me = this;\r\n me.show();\r\n }\r\n\r\n show() {\r\n const lastState = this.getCurrentState();\r\n super.show();\r\n\r\n const me = this;\r\n // if the chat options aren't preloaded, load them on-demand\r\n if (this.options.preloadEnabled) {\r\n me.preloadChatOptions(() => {\r\n me.preLoadedOptions = ApexChat.getPreloadedChatOptions();\r\n ApexChat.preLoadedOptions = me.preLoadedOptions;\r\n // me.state.changeState({ toState: WidgetStates.PreloadedChatOptions, value: true });\r\n });\r\n }\r\n // bypassing isPageRefreshed() in a special scenario: start new Chat with ChatEndedOverlay and then reloading page\r\n if (\r\n this.isPageRefreshed() ||\r\n lastState == WidgetStates.ShownMaximized ||\r\n lastState == WidgetStates.ShownMinimized ||\r\n lastState == WidgetStates.Closed\r\n ) {\r\n if (lastState == WidgetStates.ShownMaximized) {\r\n const lastDomUIState = this.state.getStateValue(WidgetTypes.DOMUIController); // Invitation Rendered maintain their state after refresh\r\n // setTimeout(function () {\r\n if (\r\n me.isChatActive() ||\r\n lastDomUIState === ChatStates.UIRendered ||\r\n lastDomUIState === ChatEvents.OnChatRestart\r\n ) {\r\n me.maximize();\r\n } else {\r\n me.close();\r\n }\r\n // } 500);\r\n } else if (lastState == WidgetStates.ShownMinimized) {\r\n this.minimize();\r\n } else if (lastState == WidgetStates.Closed) {\r\n this.close();\r\n }\r\n } else {\r\n // do nothing on 1st page load; keep DOM object alive but not rendered on page\r\n }\r\n }\r\n\r\n // name should be changed; but its core purpose is to get Vew & Controller ready\r\n renderOpen() {\r\n const me = this;\r\n let tpl;\r\n const model = me.options;\r\n let styles = [];\r\n const chatModel = model;\r\n model.chatPoweredBy = model.poweredBy; // invitation handler knows poweredBy\r\n model.videoChat = ''; // obsolete\r\n tpl = me.options.chatWidgetTemplate;\r\n styles.push(me.options.chatCss);\r\n const cssTweaks =\r\n Browser.isIE() &&\r\n Browser.isQuirksMode() &&\r\n this.preLoadedOptions.quirksCss\r\n ? this.preLoadedOptions.quirksCss\r\n : null;\r\n me.uicontroller = null; // controller gets set on state transition: min or max because\r\n styles = [];\r\n const styleConfig = GetSkinTemplate(\r\n me.options.rdThemeSettings\r\n );\r\n\r\n setDOMWindowStyles(me.DOM, styleConfig);\r\n //styles.push(templateCss);\r\n // styles.push(me.options.rdThemeChat.rdDomActionMenuCss);\r\n tpl = me.options.rdThemeChat.chatWidgetTemplate;\r\n me.options.$ = me.$;\r\n me.options.context = me.DOM;\r\n const templateModel = (me, tpl) => {\r\n tpl.model = me.options;\r\n let chatTitleTemplate;\r\n let chatHeaderTemplate;\r\n chatTitleTemplate =\r\n me.options.profileTextsHash[me.options.language].chatTitleTemplate;\r\n chatHeaderTemplate =\r\n me.options.profileTextsHash[me.options.language].chatHeaderTemplate;\r\n tpl.model.chatTitle = parseTemplate(\r\n chatTitleTemplate || tpl.model.chatTitleTemplate,\r\n tpl.model\r\n );\r\n tpl.model.chatHeaderTemplate =\r\n chatHeaderTemplate || me.options.chatHeaderTemplate;\r\n if (me.options.headerDisclaimer) {\r\n tpl.model.headerDisclaimer = parseTemplate(\r\n me.options.headerDisclaimer,\r\n tpl.model\r\n );\r\n }\r\n if (me.options.disclaimer) {\r\n tpl.model.disclaimer = parseTemplate(\r\n me.options.disclaimer,\r\n tpl.model\r\n );\r\n }\r\n // TODO:Zeeshan:we will use just one out of the two similar functions isInvitationSkinnableRoundedDynamic after RD skinnable version is completely implemented; probably in a next PR related to RD. For now the two are there to support both non-skinnable and skinnable.\r\n tpl.model.chatTitle = parseTemplate(\r\n me.options.rdThemeChat.chatTitleTemplate,\r\n tpl.model\r\n );\r\n tpl.model.chatHeaderTemplate =\r\n me.options.rdThemeChat.chatHeaderTemplate;\r\n tpl.model.chatMessageTemplate =\r\n me.options.rdThemeChat.chatMessageTemplate;\r\n tpl.model.handlerImageUrl = AgentImageHandler(me.options.handlerImageUrl);\r\n tpl.model.getFormatedDay = ApexChat.getFormatedDay();\r\n return tpl.model;\r\n }\r\n me.view = new WidgetView({\r\n identifier: WidgetTypes.DOM,\r\n dom: this.DOM,\r\n cssLinkId: 'DOMChatWindow',\r\n cssLink: `${GlobalVariables.CdnBaseUrl}contents/scripts/dist/domwindow.css?ver=${env.BUILD_HASH}`,\r\n style: cssTweaks,\r\n templates: [\r\n {\r\n key: WidgetStates.ShownMaximized,\r\n tpl: chatDOMTemplate(templateModel(me, me.options.rdThemeChat)),\r\n model, // we need both options above to have some complete stuff for rendering ChatWidget\r\n style: styles,\r\n beforeRender(tpl) {\r\n\r\n },\r\n async afterRender(tpl) {\r\n const view = this;\r\n\r\n\r\n await loadJQuery()\r\n loadJQueryPlugins(ApexChat.ApexChatJquery)\r\n showElement(me.options.parentDivId); // this line fixes flicker while showing ; ref.CHAT - 5570\r\n const el = this.DOM.getElementById('apexchat_dompopup_chatwindow_max');\r\n\r\n if (me.options.hasSmsNumber) {\r\n me.options.phoneWarningSelector = '.apexchat_error_message';\r\n const module = await import(/* webpackChunkName: \"webSmsFormValidator\" */ '../core/hooks/WebSmsFormValidator')\r\n const WebSmsFormValidator = module.default\r\n const smsForm = WebSmsFormValidator(me.options);\r\n smsForm.init();\r\n smsForm.reset();\r\n smsForm.bind();\r\n }\r\n // ADA Compliance\r\n // summary: CSS Class 'apexchat_ada_compliance' has no CSS Styling behind it means it won't effect on UI.\r\n // Its only for detecting the ADA Complianced HTML elements on which we do need to have the TAB Focus.\r\n // This is the Utility function which takes all HTML elements having the class 'apexchat_ada_compliance' as ARRAY, and apply the TabIndex on all of them.\r\n ADACompliant.push(\r\n me.DOM.querySelector('.apexchat_ada_compliance')\r\n ).apply();\r\n let computedHeight = el.offsetHeight;\r\n // CHAT-6540 - TextArea Height and margin from bottom is depend on \"poweredby\" TAG, handling logic in this wrapper function.\r\n me.adjustRDTextAreaHeight();\r\n // To visible the shadow of RD;\r\n const headerComputedHeight = getElementsByClassName(\r\n this.DOM,\r\n 'apexchat_rd_chat_header'\r\n )[0].offsetHeight;\r\n const poweredByComputedHeight =\r\n getElementsByClassName(this.DOM, 'apexchat_poweredby')[0]\r\n .offsetHeight + 17;\r\n const paddingAdjustmentsInPixels = 164 + 30; // CHAT-7395 - 60px added as we removed height: calc(100% - 64px) which was causing Iframe trimming\r\n computedHeight =\r\n computedHeight +\r\n headerComputedHeight +\r\n poweredByComputedHeight +\r\n paddingAdjustmentsInPixels;\r\n\r\n const module = await import(/* webpackChunkName: \"roundedDynamicUIController\" */ '../dom/RoundedDynamicUIController')\r\n const RoundedDynamicUIController = module.default;\r\n me.uicontroller = new RoundedDynamicUIController({\r\n model: tpl.model,\r\n chatModel,\r\n elements: this.elements,\r\n context: me.DOM,\r\n ADAHandler: me.handleADA.bind2(me)\r\n });\r\n me.uicontroller.initRestartOverlay();\r\n me.uicontroller.initAgentNotFoundOverlay('#apexchat');\r\n me.uicontroller.initVideoGreetOverlay();\r\n // restartchat toggle function for DOM\r\n me.uicontroller.bindRestartChatEvents(\r\n me.DOM.querySelector(me.uicontroller.options.elements.restartVAChatSelector,), true);\r\n me.uicontroller.bindVolumeMuteEvents(\r\n me.DOM.querySelector(me.uicontroller.options.elements.volumeMuteUnmute),\r\n me.uicontroller.toggleMuteClass\r\n );\r\n me.uicontroller.toggleMuteClass(\r\n me,\r\n me.DOM.querySelector(me.uicontroller.options.elements.volumeMuteUnmute)\r\n );\r\n me.uicontroller.bindTransferChatEvents(\r\n me.DOM.querySelector(me.uicontroller.options.elements.transferChatSelector),\r\n true\r\n );\r\n // following will check if there are non sms languages\r\n // if yes that will call a function implementMultiLanguageSupport to render further\r\n me.uicontroller.renderMultiLanguageDropDown();\r\n me.uicontroller.toggleLanguageBottomSheet(\r\n me.DOM.querySelector(\r\n me.uicontroller.options.elements.actionMenuLanguageSwitcher\r\n )\r\n );\r\n me.uicontroller.toggleLanguageBottomSheet(\r\n me.DOM.querySelector(\r\n me.uicontroller.options.elements.languageBottomSheetClose\r\n )\r\n );\r\n me.uicontroller.toggleSMSNumberInput(\r\n me.DOM.querySelectorAll(\r\n me.uicontroller.options.elements.actionMenuStartSMSChat\r\n ), {\r\n container: \"#apexchat_rd_chat_content\",\r\n element: \"#switchto-text-chat-in-content\"\r\n }\r\n );\r\n me.uicontroller.toggleSMSNumberInput(\r\n me.DOM.querySelectorAll(me.uicontroller.options.elements.smsBottomSheetClose)\r\n );\r\n // }\r\n // else {\r\n // me.uicontroller = new me.DOMUIController({\r\n // model: tpl.model,\r\n // chatModel,\r\n // elements: this.elements,\r\n // context: me.DOM,\r\n // ADAHandler: me.handleADA.bind2(me)\r\n // });\r\n // }\r\n // smoothly show dom if video greet is enabled\r\n if (me.options && me.options.videoGreetEnabled) {\r\n ApexChat.WidgetMaximizedWidth = me.options.videoGreet.persistVideoRatioForWidget\r\n ? 366\r\n : 380;\r\n ApexChat.WidgetMaximizedHeight = me.options.videoGreet.persistVideoRatioForWidget\r\n ? 650\r\n : 508;\r\n el.classList.add('apexchat_dompopup_expand_from_video_greet');\r\n var container = me.DOM.querySelector('#apexchat_dompopup_chatwindow_max');\r\n // var iframe = me.$('#' + me.options.iframeId);\r\n // container.hide().fadeIn(); TODO:// need to find alternate of fadein\r\n container.style.transition = 'opacity 0'\r\n container.style.transition = 'opacity 400ms'\r\n\r\n var iframe = document.querySelector('#' + me.options.iframeId);\r\n container.style.display = 'none';\r\n if (me.options.videoGreet.persistVideoRatioForWidget) {\r\n iframe.classList.add('apexchat_dompopup_persist_video_size');\r\n container.classList.add('apexchat_dompopup_height_with_ratio');\r\n }\r\n }\r\n me.uicontroller.show(tpl.key); // _max or _min\r\n // in firefox isMobile is coming as false for mobiles. due to this reason we had to use useragent and width\r\n if (\r\n !me.options.isMobile &&\r\n !(/Firefox/.test(navigator.userAgent) && window.innerWidth < 800)\r\n ) {\r\n addClass(\r\n me.DOM.getElementById('apexchat_rd_chat_content'),\r\n 'apexchat_rd_desktop_widget_height'\r\n );\r\n }\r\n me.handleADA(\r\n me.uicontroller.clickButton,\r\n me.uicontroller.sendMessage.bind2(me.uicontroller)\r\n );\r\n me.handleADA(\r\n me.uicontroller.closeButton,\r\n me.uicontroller.end.bind2(me.uicontroller)\r\n );\r\n me.handleADA(\r\n me.uicontroller.minimizeButton,\r\n me.uicontroller.minimize.bind2(me.uicontroller)\r\n );\r\n me.handleADA(me.uicontroller.popoutButton, () => {\r\n me.popout();\r\n });\r\n if (!me.options.skinnable) {\r\n addClass(el, 'apexchat_dompopup_chatwindow_nonskinnable');\r\n computedHeight += 30;\r\n }\r\n\r\n // me.$('.livechat_title', me.DOM).addClass('apexchat_blur');\r\n // me.$('.apexchat_participants', me.DOM).addClass('apexchat_blur');\r\n // me.$('.apexchat_poweredby', me.DOM).addClass('apexchat_blur');\r\n // me.$('.apexchat_intro', me.DOM).addClass('apexchat_blur');\r\n logIt('positioning...');\r\n //me.hide()\r\n me.positioner.position({\r\n element: me.options.parentDivId,\r\n widgetType: WidgetTypes.DOM,\r\n model: {\r\n options: tpl.model,\r\n computedHeight\r\n },\r\n context: document\r\n });\r\n // showElement(this.DOM.querySelector('#apexchat_dompopup_chatwindow_max'));\r\n\r\n if (me.options && me.options.domADACss) {\r\n // apply ADA CSS when user zooming the widget.\r\n // handleZooming(\r\n // me.options.domADACss,\r\n // 'apexchat_Iframe_dom_ada_css',\r\n // me.DOM\r\n // );\r\n }\r\n me.hideLoading();\r\n }\r\n\r\n }\r\n ]\r\n // initialState: WidgetStates.ShownMaximized\r\n });\r\n import(/* webpackChunkName: \"roundedDynamicUIController\" */ './RoundedDynamicUIController').then(\r\n (module) => {\r\n me.showLoading();\r\n me.RoundedDynamicUIController = module.default;\r\n me.view.render(WidgetStates.ShownMaximized);\r\n }\r\n );\r\n }\r\n\r\n minimize() {\r\n super.minimize(); // TODO: need to remove this as DOM does not have min state; should be me.hide() instead\r\n hideElement(this.options.parentDivId); // CHAT-5294\r\n }\r\n\r\n maximize(args) {\r\n const me = this;\r\n me.postMessage({ event: 'rounded-dynamic-preserve-scroll-before-maximizing' }); // to add custom behavior; TODO: we have to get rid of this conditional approach; it's messy\r\n super.maximize(); // change state to _max, always\r\n\r\n if (me.uicontroller) {\r\n // DOM Chat already intact? just show it\r\n me.uicontroller.autoScroll();\r\n /* CHAT-5710 & CHAT-9178 - Prevent Background scrolling on mobile view\r\n * Applied class for scroll hidden on mobile view\r\n */\r\n me.uicontroller.handleParentScroll && me.uicontroller.handleParentScroll(true);\r\n return;\r\n }\r\n if (args) {\r\n if (args.selectedLanguage) {\r\n me.options.language = args.selectedLanguage;\r\n }\r\n me.initiatedBy = args.initiatedBy || args.chatInitiatedBy;\r\n me.interceptorResults = args.interceptorResults;\r\n }\r\n logIt('maximize');\r\n\r\n this.query = me.getQueryString(false, true);\r\n\r\n if (me.chatStarted && this.chatStartOptions && this.chatStartOptions.chatId) {\r\n // check dom last state if its closed then resubscribe websync client\r\n if (me.getCurrentState() == WidgetStates.Closed) {\r\n me.uicontroller.messagesContainer.html('');\r\n me.uicontroller.introContainer.hide();\r\n me.uicontroller.participantsContainer.show();\r\n me.reInitChat();\r\n } else {\r\n me.DOM.querySelector(me.view.elements.containerSelector).style.display = 'block';\r\n me.uicontroller.show(WidgetStates.ShownMaximized);\r\n }\r\n } else {\r\n if (this.chatId) {\r\n this.query += `&chatId=${this.chatId}`;\r\n }\r\n if (me.isAlreadyChatCreated) {\r\n // if chat is already created then return false\r\n return false;\r\n }\r\n me.isAlreadyChatCreated = true; // is already chat create\r\n me.renderOpen();\r\n /* CHAT-5907 CHAT-5908 \r\n checking ApexChatStartData is not on DOM,\r\n when EP show before DOM chat start and then user move back to DOM without sending any msg then DOM's ApexChatStartData remain undefined */\r\n if (!ApexChat.preLoadedOptions || typeof ApexChatStartData === 'undefined') {\r\n logIt('preloading options...');\r\n me.preloadChatOptions(() => {\r\n logIt('exec chat start...');\r\n me.execChatStartHandler(() => {\r\n logIt('loading chat room...');\r\n RunAsSoonAs(\r\n () => {\r\n me.uicontroller.loadChatRoom();\r\n },\r\n () =>\r\n // Check uicontroller and loadChatRoom before calling them..\r\n !!me.uicontroller && !!me.uicontroller.loadChatRoom\r\n );\r\n logIt('chat room loaded.');\r\n });\r\n });\r\n } else {\r\n var isViewRendered = setInterval(() => {\r\n if (me.uicontroller) {\r\n logIt('re-loading chat room...');\r\n me.uicontroller.loadChatRoom();\r\n clearInterval(isViewRendered);\r\n }\r\n }, 300);\r\n }\r\n }\r\n }\r\n\r\n popout() {\r\n super.popout();\r\n // CHAT-6897 - need to stop the events subscription of dom if CHAT has been popedup to Windowed Chat.\r\n if (this.uicontroller) {\r\n this.uicontroller.clearAllSubscriptions();\r\n }\r\n this.startWindowedChat(this.options);\r\n this.minimize();\r\n }\r\n\r\n close() {\r\n super.close();\r\n // me.uicontroller.end();\r\n }\r\n\r\n showLoading() {\r\n // this.hideLoading();\r\n\r\n // show the loading indicator\r\n // const loadingIndicator = document.createElement('div');\r\n // const container = document.getElementById('apexchat_DOM_loading');\r\n // const opacity = 4;\r\n\r\n // loadingIndicator.id = 'apexchat_invitation_loading_indicator';\r\n // loadingIndicator.style.position = 'absolute';\r\n // loadingIndicator.style.left = '0';\r\n // loadingIndicator.style.top = '0';\r\n // loadingIndicator.style.width = '100%';\r\n // loadingIndicator.style.height = '100%';\r\n // loadingIndicator.style.backgroundColor = '#fff';\r\n // loadingIndicator.style.textAlign = 'center';\r\n // loadingIndicator.style.opacity = opacity / 10;\r\n\r\n // loadingIndicator.style.filter = `alpha(opacity=${opacity * 10})`;\r\n\r\n // const img = document.createElement('img');\r\n // img.src = `${GlobalVariables.ApexChatBaseUrl}contents/images/spinner.gif`;\r\n // img.alt = 'Loading...';\r\n // // container.appendChild(loadingIndicator);\r\n // loadingIndicator.appendChild(img);\r\n // const txt = document.createTextNode('Loading...');\r\n // loadingIndicator.appendChild(txt);\r\n\r\n // loadingIndicator.style.paddingTop = `${(container.offsetHeight - img.offsetHeight) / 2}px`;\r\n }\r\n\r\n hideLoading() {\r\n // // hide the loading indicator\r\n // const node = document.getElementById('apexchat_invitation_loading_indicator');\r\n\r\n // if (node) {\r\n // node.parentNode.removeChild(node);\r\n // }\r\n }\r\n\r\n adjustRDTextAreaHeight() {\r\n const me = this;\r\n const isPoweredByHidden =\r\n getStyle(\r\n me.DOM.querySelector('.apexchat_rd_chat_window .apexchat_poweredby'),\r\n 'display'\r\n ) === 'none';\r\n if (isPoweredByHidden) {\r\n me.DOM.querySelector('#apexchat .apexchat_rd_input_wrapper').style.height = '50px';\r\n }\r\n }\r\n}\r\n","import BrandingWidget from '../enums/BrandingWidget';\r\nimport Branding from './Branding';\r\n\r\n/**\r\n * Parse and return theme css template file\r\n * @param themeSettings\r\n * @param themeCss\r\n * @returns {string|string|ApexChat.Portal.ThemePanel.getSkinData.chatStyle}\r\n */\r\nconst GetSkinTemplate = (themeSettings) => {\r\n // CHAT-7619 - In case of BETA the ChatPreload handler could be OLD and DomPopup will be new, it could break, adding null check\r\n if (themeSettings) {\r\n\r\n const chatConfig = JSON.parse(themeSettings);\r\n if (!chatConfig.poweredBy) {\r\n // some old themes do not have poweredBy section\r\n chatConfig.poweredBy = { poweredByFont: '' };\r\n }\r\n let skinConfig = {\r\n container: '', // set empty the <#=container#> property\r\n rdChat: chatConfig,\r\n global: {}\r\n };\r\n const brandingInfo = chatConfig.branding || {};\r\n if (brandingInfo.brandingIsEnabled) {\r\n skinConfig.global = { branding: brandingInfo };\r\n skinConfig = new Branding()\r\n .init({\r\n widget: BrandingWidget.RD_DOM,\r\n brandConfig: skinConfig\r\n })\r\n .getBrandedConfig();\r\n }\r\n return skinConfig;\r\n }\r\n // CHAT-7619 - ::TODO:: The 'ELSE' part will be removed, Its added for backword compatiblity (in case of BETA Testing)\r\n};\r\nexport default GetSkinTemplate;\r\n","const setDOMWindowStyles = (root, domChatObject) => {\r\n const { rdChat: domChat } = domChatObject;\r\n root.documentElement.style.setProperty('--headerColor', domChat.general.headerColor);\r\n root.documentElement.style.setProperty('--headerFontSize', domChat.general.headerFont.size);\r\n root.documentElement.style.setProperty('--headerFontColor', domChat.general.headerFont.color);\r\n root.documentElement.style.setProperty('--headerFontItalic', domChat.general.headerFont.italic);\r\n root.documentElement.style.setProperty(\r\n '--headerFontUnderline',\r\n domChat.general.headerFont.underline\r\n );\r\n root.documentElement.style.setProperty(\r\n '--headerFontBold',\r\n domChat.general.headerFont.bold ? 'bold' : 'normal'\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messageSystemFontStyle',\r\n domChat.messages.systemFont.italic ? 'italic' : 'normal'\r\n );\r\n root.documentElement.style.setProperty(\r\n '--headerIntroFontSize',\r\n domChat.general.headerIntro.size\r\n );\r\n root.documentElement.style.setProperty(\r\n '--headerIntroFontColor',\r\n domChat.general.headerIntro.color\r\n );\r\n root.documentElement.style.setProperty(\r\n '--headerIntroFontItalic',\r\n domChat.general.headerIntro.italic\r\n );\r\n root.documentElement.style.setProperty(\r\n '--headerIntroFontUnderline',\r\n domChat.general.headerIntro.underline\r\n );\r\n root.documentElement.style.setProperty(\r\n '--headerIntroFontBold',\r\n domChat.general.headerIntro.bold\r\n );\r\n\r\n root.documentElement.style.setProperty(\r\n '--headerDisclaimerBgColor',\r\n domChat.general.disclaimerBgColor\r\n );\r\n root.documentElement.style.setProperty(\r\n '--headerDisclaimerFontSize',\r\n domChat.general.disclaimerFont.size\r\n );\r\n root.documentElement.style.setProperty(\r\n '--headerDisclaimerFontColor',\r\n domChat.general.disclaimerFont.color\r\n );\r\n root.documentElement.style.setProperty(\r\n '--headerDisclaimerFontUnderline',\r\n domChat.general.disclaimerFont.underline\r\n );\r\n root.documentElement.style.setProperty(\r\n '--headerDisclaimerFontBold',\r\n domChat.general.disclaimerFont.bold\r\n );\r\n root.documentElement.style.setProperty(\r\n '--headerDisclaimerFontItalic',\r\n domChat.general.disclaimerFont.italic\r\n );\r\n\r\n root.documentElement.style.setProperty('--agentBgColor', domChat.messages.agentBgColor);\r\n root.documentElement.style.setProperty('--agentFontSize', domChat.messages.agentFont.size);\r\n root.documentElement.style.setProperty('--agentFontColor', domChat.messages.agentFont.color);\r\n root.documentElement.style.setProperty(\r\n '--agentFontUnderline',\r\n domChat.messages.agentFont.underline\r\n );\r\n root.documentElement.style.setProperty('--agentFontBold', domChat.messages.agentFont.bold);\r\n root.documentElement.style.setProperty('--agentFontItalic', domChat.messages.agentFont.italic);\r\n\r\n root.documentElement.style.setProperty('--visitorBgColor', domChat.messages.visitorBgColor);\r\n root.documentElement.style.setProperty(\r\n '--visitorFontSize',\r\n domChat.messages.visitorFont.italic\r\n );\r\n root.documentElement.style.setProperty(\r\n '--visitorFontColor',\r\n domChat.messages.visitorFont.color\r\n );\r\n root.documentElement.style.setProperty(\r\n '--visitorFontUnderline',\r\n domChat.messages.visitorFont.underline\r\n );\r\n root.documentElement.style.setProperty('--visitorFontBold', domChat.messages.visitorFont.bold);\r\n root.documentElement.style.setProperty(\r\n '--visitorFontItalic',\r\n domChat.messages.visitorFont.italic\r\n );\r\n\r\n root.documentElement.style.setProperty(\r\n '--messageSystemBgColor',\r\n domChat.messages.systemBgColor\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messageSystemFontSize',\r\n domChat.messages.systemFont.size\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messageSystemFontColor',\r\n domChat.messages.systemFont.color\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messageSystemFontUnderline',\r\n domChat.messages.systemFont.underline\r\n );\r\n root.documentElement.style.setProperty(\r\n '--messageSystemFontBold',\r\n domChat.messages.systemFont.bold\r\n );\r\n // root.documentElement.style.setProperty(\r\n // '--messageSystemFontItalic',\r\n // domChat.messages.systemFont.italic\r\n // );\r\n root.documentElement.style.setProperty(\r\n '--messagetypingAnimation',\r\n domChat.messages.typingAnimation\r\n );\r\n root.documentElement.style.setProperty(\r\n '--typingIndicatorDots',\r\n domChat.messages.typingIndicatorDots\r\n );\r\n\r\n root.documentElement.style.setProperty('--qTBorder', domChat.questionType.qTBorder);\r\n root.documentElement.style.setProperty('--qTButton', domChat.questionType.qTButton);\r\n root.documentElement.style.setProperty('--qTQuestion', domChat.questionType.qTQuestion);\r\n // root.documentElement.style.setProperty('--qTQuestionSvgStroke', 'rgb(17, 187, 88)');\r\n\r\n root.documentElement.style.setProperty('--pByMarginEmoji', '10px 5px 21px 10px');\r\n if (domChat.poweredBy.hidePoweredBySection) {\r\n root.documentElement.style.setProperty('--pByInputHeight', '33px');\r\n root.documentElement.style.setProperty('--pByInputHeightWindowMode', '39px');\r\n root.documentElement.style.setProperty('--pByInputHeightTwoLine', '48px');\r\n root.documentElement.style.setProperty('--pByMarginSendBtn', '1px 0 0 5px');\r\n root.documentElement.style.setProperty('--pBybottom', '5px');\r\n root.documentElement.style.setProperty('--pByDisplay', 'none');\r\n root.documentElement.style.setProperty('--pByMarginEmoji', '10px 5px 8px 10px');\r\n }\r\n // root.documentElement.style.setProperty('--defaultBrandingColor', 'rgb(255 255 255 / 0)');\r\n\r\n if (domChat.branding?.brandingIsEnabled) {\r\n root.documentElement.style.setProperty('--brandColor', domChat.branding.brandColorCode);\r\n root.documentElement.style.setProperty(\r\n '--brandingAgentBgColor',\r\n domChat.messages.agentBgColor\r\n );\r\n root.documentElement.style.setProperty(\r\n '--brandingHeaderColor',\r\n domChat.general.headerColor\r\n );\r\n root.documentElement.style.setProperty('--brandColorOpacity', domChat.brandColorOpacity);\r\n root.documentElement.style.setProperty('--brandingwhiteText', domChat.whiteText);\r\n }\r\n};\r\nexport default setDOMWindowStyles;\r\n","module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '