{"version":3,"file":"registerExitPopup.chunk.96fdd0d564133cca42a7.js","mappings":"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","sources":["webpack://apexchatwidgets/./widgets/exitpopup/RegisterExitPopup.js"],"sourcesContent":["/**\r\n * client/wrapper type for the Exitpopup widget on page\r\n */\r\nimport BaseWidgetClient from '../core/BaseWidgetClient';\r\nimport WidgetTypes from '../core/enums/WidgetTypes';\r\nimport TempCache from '../core/enums/TempCache';\r\nimport loadJQuery from '../core/hooks/loadJQuery';\r\nimport loadJQueryPlugins from '../core/loadJQueryPlugins';\r\nimport WidgetStates from '../core/hooks/WidgetStates';\r\nimport createNS from '../core/createNs';\r\n\r\nexport default function RegisterExitPopup() {\r\n const EP = class extends BaseWidgetClient {\r\n constructor(options) {\r\n options.iframeId = 'apexchat_exitpopup2_chatwindow_frame';\r\n\r\n super(\r\n Object.assign(options, {\r\n widget: WidgetTypes.ExitPopup, // containerBg: 'blue'\r\n transform: true,\r\n elDragnDrop: 'apexchat_ep_dragndrop'\r\n // draggables: ['#apexchat-rd-logo-wrapper', '#apexchat-ep .apex-col-1', '.apex-transcript:not(.apex-ep-text)']\r\n })\r\n );\r\n const me = this;\r\n\r\n TempCache.EP_INITIAL_LOAD_TIME = (options.exitPopupDelaySeconds || 3) * 1000;\r\n ApexChat.TempSize = {};\r\n ApexChat.TempSize.iframeWidth = this.options.width = '656px';\r\n ApexChat.TempSize.iframeHeight = this.options.height = '552px';\r\n this.subscribe(WidgetTypes.ExitPopup + WidgetStates.ShownMaximized, () => {\r\n if (!me.isMobile()) {\r\n // me.handleZooming();\r\n }\r\n });\r\n\r\n this.mouseMovingUp = false;\r\n this.scrollingTop = false;\r\n // TODO: We can merge the following with _resizeIframe in the above//original object\r\n this.subscribe(`${WidgetTypes.ExitPopup}_resize_iframe`, (args) => {\r\n me.$(me.$container).show();\r\n const iframeId = document.getElementById(me.iframeId);\r\n if (args.state == WidgetStates.ShownMaximized) {\r\n // JIRA_4343 - EP's bottom cuts off if company name is in multiple lines\r\n const measureCompanyLongName =\r\n iframeId.contentDocument.querySelector('.apex-title-bar').offsetHeight;\r\n iframeId.style.height = `${parseInt(args.height) + 165 + measureCompanyLongName\r\n }px`;\r\n\r\n iframeId.style.width = args.width;\r\n } else if (args.state == WidgetStates.ShownMinimized) {\r\n me.$(me.$container).css({\r\n 'z-index': '9999999',\r\n position: 'fixed',\r\n bottom: '0',\r\n transform: '',\r\n top: '',\r\n left: ''\r\n });\r\n iframeId.style.height = args.height;\r\n iframeId.style.width = args.width;\r\n iframeId.style.display = args.display;\r\n }\r\n });\r\n\r\n this.subscribe(WidgetTypes.ExitPopup + WidgetStates.Hidden, (args) => {\r\n // CHAT-7943 - EP QT msgs to DOM were not rendering due to this AllHisotryMessage variable was filled with old chatlog\r\n // and when moving to DOM, it was fetching the history again and was not working due to duplication.\r\n ApexChat.allHistoryMessages = []; // assign empty array\r\n document.getElementById(me.parentDivId).style.display = 'none';\r\n });\r\n this.subscribe(WidgetTypes.ExitPopup + WidgetStates.Closed, (args) => {\r\n ApexChat.allHistoryMessages = []; // assign empty array\r\n document.getElementById(me.parentDivId).style.display = 'none';\r\n });\r\n this.ready();\r\n }\r\n\r\n ready() {\r\n super.ready();\r\n // this.notifyAll([WidgetStates.Closed, WidgetStates.ShownMinimized, WidgetStates.ShownMaximized]);\r\n this.create();\r\n }\r\n\r\n create() {\r\n super.create();\r\n const me = this;\r\n let iframeADAZoomingClass = 'apexchat_std_ep_zooming_iframe';\r\n me.elDragnDropCss =\r\n 'width: 245px; height: 54px; top: 12px; left: 270px; cursor:grab;'; // CHAT-5421 {V3] RD EP language drop down is being cut off.\r\n ApexChat.TempSize.iframeWidth = this.options.width = '766px';\r\n ApexChat.TempSize.iframeHeight = this.options.height = '580px'; // CHAT-5421 {V3] RD EP language drop down is being cut off.\r\n iframeADAZoomingClass = 'apexchat_rd_ep_zooming_iframe';\r\n me.$container.innerHTML = `
`;\r\n document.body.appendChild(me.$container);\r\n this.show();\r\n this.detectDocumentClosing();\r\n }\r\n\r\n show() {\r\n super.show();\r\n }\r\n\r\n maximize(e) {\r\n const me = this;\r\n const epIsOpen = this.state.getStateValue(WidgetStates.ShownMaximized);\r\n const epClosedOrHiddenForcefully =\r\n this.state.getStateValue(WidgetStates.Closed) ||\r\n this.state.getStateValue(WidgetStates.Hidden);\r\n const epIsMinimized = this.state.getStateValue(WidgetStates.ShownMinimized);\r\n if (epIsOpen || epClosedOrHiddenForcefully || epIsMinimized) {\r\n // ZEE: only show 1 time; this needs to be improved as per existing scenarios handled currently\r\n return; // add further conditions/scenarios\r\n }\r\n const isChatIdAlive = this.isChatInProgress();\r\n const domMax = this.state.getStateValue(\r\n WidgetStates.ShownMaximized,\r\n WidgetTypes.DOM\r\n );\r\n const domMin = this.state.getStateValue(\r\n WidgetStates.ShownMinimized,\r\n WidgetTypes.DOM\r\n );\r\n const domClosed = this.state.getStateValue(\r\n WidgetStates.Closed,\r\n WidgetTypes.DOM\r\n );\r\n if (isChatIdAlive && domMax && (!domClosed || !domMin)) {\r\n // Rule: chatId exists AND dom is in use\r\n return;\r\n }\r\n me.state.changeState({ toState: WidgetStates.MouseExit });\r\n me.mouseMovingUp = false;\r\n }\r\n\r\n detectDocumentClosing() {\r\n const showMaximizeOrNot = (e, mouseMovingUp) => {\r\n function scrollTop(el, value) {\r\n var win;\r\n if (el.window === el) {\r\n win = el;\r\n } else if (el.nodeType === 9) {\r\n win = el.defaultView;\r\n }\r\n\r\n if (value === undefined) {\r\n return win ? win.pageYOffset : el.scrollTop;\r\n }\r\n\r\n if (win) {\r\n win.scrollTo(win.pageXOffset, value);\r\n } else {\r\n el.scrollTop = value;\r\n }\r\n }\r\n //const checkScroll = document.hasFocus(); // also make sure if mouse is leaving document from top not elsewhere\r\n var checkScroll = (e.pageY - scrollTop(window) <= 1);\r\n const preChatStarted = ApexChat.storageAPI.Get('livechat_prechat_started');\r\n if (\r\n mouseMovingUp &&\r\n checkScroll &&\r\n !TempCache.WINDOWED_CHAT_STARTED &&\r\n (!preChatStarted || preChatStarted == 'false')\r\n ) {\r\n // so mouse is moving up and it left document? Show EP.\r\n me.maximize(); // make sure EP is not already on screen/open\r\n }\r\n mouseMovingUp = false;\r\n }\r\n const me = this;\r\n TempCache.EP_SetTimeOut = setTimeout(() => {\r\n let oldY = 0;\r\n let mouseMovingUp = false;\r\n document.addEventListener('mousemove', (e) => {\r\n mouseMovingUp = e.pageY <= oldY; // cuz when e.pageY increases then it means mouse is moving down in which case we should not show EP\r\n oldY = e.pageY;\r\n });\r\n document.addEventListener('mouseout', async (e) => {\r\n if (!me.ExitChatWindow) {\r\n await loadJQuery();\r\n loadJQueryPlugins(ApexChat.ApexChatJquery);\r\n import(/* webpackChunkName: \"exitChatWindow\" */ '../exitpopup/ExitChatWindow').then(\r\n (module) => {\r\n me.ExitChatWindow = module.default;\r\n const chat = new me.ExitChatWindow(this.options);\r\n\r\n showMaximizeOrNot(e, mouseMovingUp);\r\n }\r\n );\r\n } else {\r\n showMaximizeOrNot(e, mouseMovingUp);\r\n }\r\n\r\n });\r\n }, TempCache.EP_INITIAL_LOAD_TIME); // JIRA_2986 - Exit Pop-up - do not allow to appear at first after a certain set time on back end\r\n }\r\n\r\n /**\r\n * On zoom in/out, we adjust EP size to remain visible in the browser viewport based on device pixel ratio info obtained from window object\r\n * We call this on EP maximize\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 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 iframe.style.transform = 'scale(0.88)';\r\n } else if (window.devicePixelRatio >= 1.5 && window.devicePixelRatio < 1.75) {\r\n iframe.style.transform = 'scale(0.732)';\r\n } else if (window.devicePixelRatio >= 1.75 && window.devicePixelRatio < 2.0) {\r\n iframe.style.transform = 'scale(0.63)';\r\n } else if (window.devicePixelRatio >= 2.0 && window.devicePixelRatio < 2.5) {\r\n iframe.style.transform = 'scale(0.55)';\r\n } else if (window.devicePixelRatio >= 2.5 && window.devicePixelRatio < 3.0) {\r\n iframe.style.transform = 'scale(0.44)';\r\n } else if (window.devicePixelRatio >= 3.0 && window.devicePixelRatio < 4.0) {\r\n iframe.style.transform = 'scale(0.365)';\r\n } else if (window.devicePixelRatio >= 4.0 && window.devicePixelRatio < 4.5) {\r\n iframe.style.transform = 'scale(0.275)';\r\n } else if (window.devicePixelRatio >= 4.5 && window.devicePixelRatio <= 5.0) {\r\n iframe.style.transform = 'scale(0.22)';\r\n } else {\r\n iframe.style.transform = 'scale(1)';\r\n }\r\n });\r\n }\r\n };\r\n const fqName = `${WidgetTypes.ExitPopup}_client`;\r\n // Export to window\r\n createNS(fqName, EP);\r\n}\r\n"],"names":["RegisterExitPopup","EP","BaseWidgetClient","constructor","options","iframeId","super","Object","assign","widget","WidgetTypes","ExitPopup","transform","elDragnDrop","me","this","TempCache","EP_INITIAL_LOAD_TIME","exitPopupDelaySeconds","ApexChat","TempSize","iframeWidth","width","iframeHeight","height","subscribe","WidgetStates","ShownMaximized","isMobile","mouseMovingUp","scrollingTop","args","$","$container","show","document","getElementById","state","measureCompanyLongName","contentDocument","querySelector","offsetHeight","style","parseInt","ShownMinimized","css","position","bottom","top","left","display","Hidden","allHistoryMessages","parentDivId","Closed","ready","create","iframeADAZoomingClass","elDragnDropCss","innerHTML","body","appendChild","detectDocumentClosing","maximize","e","epIsOpen","getStateValue","epClosedOrHiddenForcefully","epIsMinimized","isChatIdAlive","isChatInProgress","domMax","DOM","domMin","domClosed","changeState","toState","MouseExit","showMaximizeOrNot","el","win","checkScroll","pageY","window","nodeType","defaultView","pageYOffset","scrollTop","preChatStarted","storageAPI","Get","WINDOWED_CHAT_STARTED","EP_SetTimeOut","setTimeout","oldY","addEventListener","async","ExitChatWindow","loadJQuery","loadJQueryPlugins","ApexChatJquery","then","module","default","handleZooming","resize","iframe","frameDoc","contentWindow","devicePixelRatio","fqName","createNS"],"sourceRoot":""}