{"version":3,"file":"js/page__shared_feature_access_tracking-57f4b72f5fd8d9dcb8b5.chunk.js","mappings":"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","sources":["webpack://nodalview/./app/javascript/src/shared/feature_access_tracking/index.js"],"sourcesContent":["class FeatureAccessTracking {\n constructor(user_id) {\n this.user_id = user_id;\n\n this._displayAccessPolicedElement = this._displayAccessPolicedElement.bind(this);\n this._sendClickEventToAmplitude = this._sendClickEventToAmplitude.bind(this);\n this._hideAccessPolicedElement = this._hideAccessPolicedElement.bind(this);\n this._sendHoverEventToAmplitude = this._sendHoverEventToAmplitude.bind(this);\n this._setDemoRequestNameOnLink = this._setDemoRequestNameOnLink.bind(this);\n }\n\n boot() {\n this.elements = [];\n this.accessPolicedElement = null;\n\n this.initElements();\n this.createPolicedElement();\n this.attachEvents();\n }\n\n initElements() {\n this.elements = document.body.querySelectorAll(\"[data-policed-element]\");\n }\n\n createPolicedElement() {\n this.accessPolicedElement = document.createElement('div')\n this.accessPolicedElement.classList.add('policed-tooltip');\n const paragraph = document.createElement('p');\n paragraph.innerHTML = I18n.t('policed.no_access');\n paragraph.classList.add('no-margin');\n\n this.demoLink = document.createElement('a');\n this.demoLink.innerHTML = I18n.t('policed.no_access_here');\n this.demoLink.href = I18n.t('policed.hubspot_access_link');\n this.demoLink.setAttribute('target', '_blank');\n this.demoLink.setAttribute('data-user-id', this.user_id)\n this.demoLink.addEventListener('click', (e) => this._sendClickEventToAmplitude(e.currentTarget))\n paragraph.appendChild(this.demoLink);\n\n this.accessPolicedElement.appendChild(paragraph)\n document.body.appendChild(this.accessPolicedElement)\n }\n\n attachEvents() {\n const { accessPolicedElement } = this;\n this.elements.forEach(item => {\n item.addEventListener('mouseenter', ({ currentTarget }) => {\n this._sendHoverEventToAmplitude(currentTarget.dataset)\n this._displayAccessPolicedElement(currentTarget);\n this._setDemoRequestNameOnLink(currentTarget.dataset.demoRequestName);\n })\n\n item.addEventListener('mouseleave', ({ relatedTarget }) => {\n setTimeout(() => {\n if(relatedTarget !== accessPolicedElement && relatedTarget.parentNode !== accessPolicedElement) {\n this._hideAccessPolicedElement()\n } else {\n accessPolicedElement.addEventListener('mouseleave', (e) => this._hideAccessPolicedElement())\n }\n }, 200)\n })\n })\n }\n\n _setDemoRequestNameOnLink(demoRequestValue) {\n if(demoRequestValue) {\n this.demoLink.setAttribute('data-demo-request-name', demoRequestValue);\n } else {\n this.demoLink.removeAttribute('data-demo-request-name')\n }\n }\n\n _sendHoverEventToAmplitude(dataset) {\n const { demoRequestName: demo_request, hoverEventProperties } = dataset;\n const parsedHoverProperties = JSON.parse(hoverEventProperties);\n const propertiesToSend = Object.assign({}, parsedHoverProperties, {...(demo_request && { demo_request })})\n window.eventsManager.logEvent('Policed button - Request demo - hover', propertiesToSend)\n }\n\n _sendClickEventToAmplitude(target) {\n const { demoRequestName: demo_request } = target.dataset;\n const propertiesToSend = Object.assign({}, {user_id: this.user_id}, {...(demo_request && { demo_request })})\n window.eventsManager.logEvent('Policed button - Request demo - click', propertiesToSend)\n }\n\n _displayAccessPolicedElement(currentTarget) {\n const { accessPolicedElement } = this;\n const { x, y, width: buttonWidth, height } = currentTarget.getBoundingClientRect();\n accessPolicedElement.setAttribute('data-displayed', true)\n const { width } = accessPolicedElement.getBoundingClientRect();\n accessPolicedElement.style.top = `${y - height - 10}px`;\n accessPolicedElement.style.left = `${x + (buttonWidth / 2) - (width / 2) }px`;\n }\n\n _hideAccessPolicedElement() {\n const { accessPolicedElement } = this;\n accessPolicedElement.removeAttribute('data-displayed')\n accessPolicedElement.style.top = -9999;\n accessPolicedElement.style.left = -9999;\n accessPolicedElement.removeEventListener('mouseleave', (e) => this._hideAccessPolicedElement())\n }\n}\n\nexport default FeatureAccessTracking"],"names":["constructor","user_id","this","_displayAccessPolicedElement","bind","_sendClickEventToAmplitude","_hideAccessPolicedElement","_sendHoverEventToAmplitude","_setDemoRequestNameOnLink","boot","elements","accessPolicedElement","initElements","createPolicedElement","attachEvents","document","body","querySelectorAll","createElement","classList","add","paragraph","innerHTML","I18n","t","demoLink","href","setAttribute","addEventListener","e","currentTarget","appendChild","forEach","item","dataset","demoRequestName","relatedTarget","setTimeout","parentNode","demoRequestValue","removeAttribute","demo_request","hoverEventProperties","parsedHoverProperties","JSON","parse","propertiesToSend","Object","assign","window","eventsManager","logEvent","target","x","y","width","buttonWidth","height","getBoundingClientRect","style","top","left","removeEventListener"],"sourceRoot":""}