{"version":3,"file":"registerDOM.chunk.96fdd0d564133cca42a7.js","mappings":"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","sources":["webpack://apexchatwidgets/./widgets/core/hooks/addClass.js","webpack://apexchatwidgets/./widgets/core/hooks/elementIsNotNULL.js","webpack://apexchatwidgets/./widgets/core/hooks/getViewport.js","webpack://apexchatwidgets/./widgets/core/hooks/hasClass.js","webpack://apexchatwidgets/./widgets/core/hooks/parseTemplate.js","webpack://apexchatwidgets/./widgets/core/hooks/showElement.js","webpack://apexchatwidgets/./widgets/core/positioners/DOMPositioner.js","webpack://apexchatwidgets/./widgets/core/positioners/Positioner.js","webpack://apexchatwidgets/./widgets/dom/RegisterDOM.js"],"sourcesContent":["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 elementIsNotNULL = function (object) {\r\n if (object) {\r\n return true;\r\n }\r\n return false;\r\n};\r\nexport default elementIsNotNULL;\r\n","const getViewport = () => {\r\n let viewportwidth;\r\n let viewportheight;\r\n\r\n // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight\r\n if (typeof window.innerWidth !== 'undefined') {\r\n viewportwidth = window.innerWidth;\r\n viewportheight = window.innerHeight;\r\n }\r\n\r\n\r\n // IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)\r\n else if (typeof document.documentElement !== 'undefined' &&\r\n typeof document.documentElement.clientWidth !== 'undefined' &&\r\n document.documentElement.clientWidth) {\r\n viewportwidth = document.documentElement.clientWidth;\r\n viewportheight = document.documentElement.clientHeight;\r\n }\r\n\r\n\r\n // older versions of IE\r\n else {\r\n viewportwidth = document.getElementsByTagName('body')[0].clientWidth;\r\n viewportheight = document.getElementsByTagName('body')[0].clientHeight;\r\n }\r\n\r\n return [viewportwidth, viewportheight];\r\n};\r\nexport default getViewport;\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","import GlobalVariables from \"../GlobalVariables\";\r\n\r\n\r\nconst parseTemplate = (str, data) => {\r\n /// \r\n /// Client side template parser that uses <#= #> and <# code #> expressions.\r\n /// and # # code blocks for template expansion.\r\n /// NOTE: chokes on single quotes in the document in some situations\r\n /// use &rsquo; for literals in text and avoid any single quote\r\n /// attribute delimiters.\r\n /// \r\n /// The text of the template to expand\r\n /// \r\n /// Any data that is to be merged. Pass an object and\r\n /// that object's properties are visible as variables.\r\n /// \r\n /// \r\n let err = '';\r\n try {\r\n let func = GlobalVariables.TmpleteCache[str];\r\n if (!func) {\r\n const strFunc = `var p=[],print=function(){p.push.apply(p,arguments);};` +\r\n `with(obj){p.push('${str\r\n .replace(/[\\r\\t\\n]/g, ' ')\r\n .replace(/'(?=[^#]*#>)/g, '\\t')\r\n .split(\"'\")\r\n .join(\"\\\\'\")\r\n .split('\\t')\r\n .join(\"'\")\r\n .replace(/<#=(.+?)#>/g, \"',$1,'\")\r\n .split('<#')\r\n .join(\"');\")\r\n .split('#>')\r\n .join(\"p.push('\")}');}return p.join('');`;\r\n\r\n // alert(strFunc);\r\n func = new Function('obj', strFunc);\r\n GlobalVariables.TmpleteCache[str] = func;\r\n }\r\n return func(data);\r\n } catch (e) {\r\n err = e.message;\r\n }\r\n return `< # ERROR: ${err.htmlEncode ? err.htmlEncode() : err} # >`;\r\n};\r\nexport default parseTemplate;\r\n","import elementIsNotNULL from \"../../core/hooks/elementIsNotNULL\";\r\n\r\n/**\r\n * Shows or hides the specified element based on the value of isSpan.\r\n *\r\n * @param {string|HTMLElement} element - The element to show or hide.\r\n * @param {boolean} isSpan - A flag to determine if the element should be displayed inline-block.\r\n */\r\nconst showElement = function (element, isSpan) {\r\n // isSpan is introduced if element TagName is SPAN than it should be inline-block\r\n if (typeof element === 'string') {\r\n element = document.getElementById(element);\r\n }\r\n if (elementIsNotNULL(element)) {\r\n if (!isSpan) {\r\n element.style.display = 'block';\r\n } else {\r\n element.style.display = 'inline-block';\r\n }\r\n }\r\n};\r\nexport default showElement;\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 * client/wrapper type for the DOM widget on parent/page\r\n */\r\nimport BaseWidgetClient from '../core/BaseWidgetClient';\r\nimport DOMPositioner from '../core/positioners/DOMPositioner';\r\nimport WidgetTypes from '../core/enums/WidgetTypes';\r\nimport parseTemplate from '../core/hooks/parseTemplate';\r\nimport Browser from '../core/hooks/Browser';\r\nimport WidgetStates from '../core/hooks/WidgetStates';\r\nimport createNS from '../core/createNs';\r\n\r\nexport default function RegisterDOM() {\r\n const DOM = class extends BaseWidgetClient {\r\n constructor(options) {\r\n super(\r\n Object.assign(options, {\r\n widget: WidgetTypes.DOM,\r\n elDragnDrop: 'apexchat_dom_dragndrop'\r\n })\r\n );\r\n this.ready();\r\n this.positioner = new DOMPositioner(this.options);\r\n }\r\n\r\n ready() {\r\n super.ready();\r\n const me = this;\r\n me.subscribe(WidgetTypes.DOM + WidgetStates.ShownMaximized, () => {\r\n if (!me.isMobile()) {\r\n // me.handleZooming();\r\n }\r\n });\r\n me.subscribe(WidgetTypes.DOM + WidgetStates.Hidden, () => {\r\n document.getElementById(me.parentDivId).style.display = 'none';\r\n });\r\n me.subscribe(WidgetTypes.DOM + WidgetStates.ShownMaximized, (args) => {\r\n document.getElementById(me.parentDivId).style.display = 'block';\r\n });\r\n window.addEventListener('resize', handleWindowEvents);\r\n window.addEventListener('scroll', handleWindowEvents);\r\n window.addEventListener('orientationchange', handleWindowEvents);\r\n function handleWindowEvents(e) {\r\n const isScroll = e.type == 'scroll';\r\n // We do not need resize function on drag n drop - CHAT-8138\r\n if (e.type != 'resize') {\r\n const data = { options: me.options };\r\n me.positioner.position({\r\n element: me.parentDivId,\r\n widgetType: WidgetTypes.DOM,\r\n model: data,\r\n isScroll\r\n });\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 let dragDropCSS = 'standard_dialog';\r\n me.$container.style.zIndex = '9999999999';\r\n me.$container.style.display = 'none';\r\n\r\n me.options.chatWidth = '392px';\r\n if (\r\n /iPad|iPhone|iPod/.test(navigator.userAgent) ||\r\n /Android/i.test(navigator.userAgent)\r\n ) {\r\n me.options.chatWidth = '100%';\r\n }\r\n // check skinnable and image based widget enabled then run below condition\r\n if (\r\n (me.options && me.options.skinnable) ||\r\n (me.options.skinRegions && me.options.skinRegions.length > 0)\r\n ) {\r\n dragDropCSS = 'standard_dialog';\r\n } else {\r\n dragDropCSS = 'livechat_dialog';\r\n }\r\n // TODO: These 3 lines are similer we need some generic work here to cater it.\r\n me.$container.innerHTML = `
`; // background-color: #534444;\r\n\r\n me.options.chatWidth = '422px';\r\n if (me.isMobile()) {\r\n me.options.chatWidth = '100%';\r\n }\r\n let drageAndDropTopPosition = 50;\r\n if (Browser.isFirefox()) {\r\n drageAndDropTopPosition = 112;\r\n }\r\n // CHAT-6673- get company chat title so we can show it on hover of header text.\r\n const { chatTitleTemplate } = me.options.profileTextsHash[me.options.language];\r\n const companyChatTitle = parseTemplate(\r\n chatTitleTemplate,\r\n ApexChat.options\r\n );\r\n const iFrameStyle = `border: none; overflow-x:hidden; overflow-y:hidden; display: block;width:${me.options.chatWidth};`;\r\n var draggerClass = 'apexchat_dom_dragger';\r\n if (me.options.videoGreet && me.options.videoGreet.persistVideoRatioForWidget) {\r\n draggerClass = 'apexchat_dom_dragger_video_greet_fluid';\r\n }\r\n me.$container.innerHTML =\r\n '
'; //background-color: #534444;\r\n\r\n // uncomment for iOS testing through ngrok\r\n // me.options.isMobile = true\r\n\r\n if ((me.options.isMobile || /Android/i.test(navigator.userAgent))\r\n ) {\r\n // width and height of iframe for rd theme in mobile should be 100%\r\n me.$container.innerHTML = `
`; // background-color: #534444;\r\n }\r\n document.body.appendChild(me.$container);\r\n me.show();\r\n }\r\n\r\n show() {\r\n super.show();\r\n }\r\n\r\n handleZooming() {\r\n const me = this;\r\n me.$(window).resize(() => {\r\n const iframe = document.getElementById(me.iframeId);\r\n const parentDiv = document.getElementById(me.parentDivId);\r\n let frameDoc = iframe.document;\r\n if (iframe.contentWindow) {\r\n frameDoc = iframe.contentWindow.document;\r\n }\r\n if (window.devicePixelRatio >= 1.12 && window.devicePixelRatio < 1.5) {\r\n parentDiv.style.transform = 'scale(1)';\r\n const innerDomDiv = frameDoc.getElementById('apexchat_dompopup_chatwindow_max');\r\n innerDomDiv.style.bottom = '10px'\r\n // var body = frameDoc.body;\r\n } else if (window.devicePixelRatio >= 1.5 && window.devicePixelRatio < 1.75) {\r\n parentDiv.style.transform = 'scale(0.8)';\r\n parentDiv.style.bottom = '-55px';\r\n } else if (window.devicePixelRatio >= 1.75 && window.devicePixelRatio < 2.0) {\r\n parentDiv.style.transform = 'scale(0.78)';\r\n parentDiv.style.bottom = '-68px';\r\n } else if (window.devicePixelRatio >= 2.0 && window.devicePixelRatio < 2.5) {\r\n parentDiv.style.transform = 'scale(0.68)';\r\n parentDiv.style.bottom = '-94px';\r\n } else if (window.devicePixelRatio >= 2.5 && window.devicePixelRatio <= 3.0) {\r\n parentDiv.style.transform = 'scale(0.55)';\r\n parentDiv.style.bottom = '-132px';\r\n } else {\r\n parentDiv.style.transform = 'scale(1)';\r\n }\r\n });\r\n }\r\n };\r\n const fqName = `${WidgetTypes.DOM}_client`;\r\n // Export to window\r\n createNS(fqName, DOM);\r\n}\r\n"],"names":["ele","cls","hasClass","className","object","getViewport","viewportwidth","viewportheight","window","innerWidth","innerHeight","document","documentElement","clientWidth","clientHeight","getElementsByTagName","match","RegExp","parseTemplate","str","data","err","func","GlobalVariables","TmpleteCache","strFunc","replace","split","join","Function","e","message","htmlEncode","element","isSpan","getElementById","elementIsNotNULL","style","display","DOMPositioner","Positioner","constructor","configurations","context","super","this","configuration","DOM","position","options","me","tempDOM","isScroll","objName","targetObj","pureElement","getPureElement","getElement","padding","container","dims","model","isMobile","test","navigator","userAgent","diff","ApexChat","ApexChatJquery","height","target","skinInviteType","SkinInviteType","Rounded_Dynamic","css","addClass","originalDeviceHeight","deviceHeight","MSStream","chatMode","ChatMode","lastHeight","width","is","el","shadow","parts","slice","length","i","x","parseInt","isNaN","Position","Center","Right","computedHeight","firstChild","videoGreet","persistVideoRatioForWidget","WidgetMaximizedWidth","triggerWidgetResize","winHeight","widgetHeight","WidgetMaximizedHeight","addEventListener","event","bottom","right","Left","left","Middle","offsetWidth","TopRight","top","TopLeft","TopMiddle","LeftCenter","RightCenter","showElement","querySelector","visibility","indexOf","substring","lenght","isClass","getElementsByClassName","RegisterDOM","BaseWidgetClient","Object","assign","widget","WidgetTypes","elDragnDrop","ready","positioner","handleWindowEvents","type","parentDivId","widgetType","subscribe","WidgetStates","ShownMaximized","Hidden","args","create","dragDropCSS","$container","zIndex","chatWidth","skinnable","skinRegions","innerHTML","iframeId","drageAndDropTopPosition","Browser","isFirefox","chatTitleTemplate","profileTextsHash","language","companyChatTitle","iFrameStyle","draggerClass","body","appendChild","show","handleZooming","$","resize","iframe","parentDiv","frameDoc","contentWindow","devicePixelRatio","transform","fqName","createNS"],"sourceRoot":""}