{"version":3,"file":"6118.87a83ca9f7e7f52c31e2.js","mappings":"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","sources":["webpack://front-end-build-system/./src/smartpak/tooltip.js"],"sourcesContent":["import { arrow, autoPlacement, computePosition, offset, shift } from '@floating-ui/dom';\n\nconst defaults = {\n trigger: 'click'\n},\n NO_TRIGGERS = 'Manual';\n\nfunction uniqueId() {\n return `tooltip-${Math.random().toString(36).substring(2)}`;\n}\n\nexport class Tooltip {\n constructor($trigger, opts = {}) {\n if (!$trigger) {\n throw new Error('Tooltip requires an element as a parameter');\n }\n\n this.$trigger = $trigger;\n\n this.options = {\n ...defaults,\n ...opts\n };\n\n this.content = '';\n\n if (!this.$trigger.hasAttribute('tabindex')) {\n this.$trigger.setAttribute('tabindex', '0');\n }\n\n if (typeof this.options.content === 'object') {\n let contentElement, contentArray;\n\n if (this.options.content.innerHTML) {\n contentElement = this.options.content;\n } else {\n contentArray = [].slice.call(this.options.content);\n if (contentArray.length) {\n contentElement = contentArray[0];\n }\n }\n this.content = contentElement ? contentElement.innerHTML : '';\n } else if (typeof this.options.content === 'string') {\n this.content = this.options.content;\n } else if (typeof this.options.content === 'undefined' && this.$trigger.title) {\n this.content = this.$trigger.title;\n }\n\n if (this.options.trigger !== NO_TRIGGERS) {\n this.listeners = [\n ['blur', () => this.hide()],\n ['mouseenter', () => this.show()],\n ['mouseleave', () => this.hide()],\n [\n 'keydown',\n e => {\n const SPACE_BAR = 32,\n ENTER = 13;\n if (e.keyCode === SPACE_BAR || e.keyCode === ENTER) {\n e.preventDefault();\n this.toggle();\n }\n }\n ],\n [\n 'click', e => e.preventDefault()\n ]\n ];\n\n if (this.options.trigger === 'click') {\n //remove mouse enter / leave\n this.listeners.splice(1, 2);\n\n this.listeners.push([\n 'click',\n e => {\n e.preventDefault();\n this.toggle();\n }\n ]);\n }\n\n this.listeners.forEach(([event, listener]) => {\n this.$trigger.addEventListener(event, listener);\n\n document.addEventListener(listener, this.handleDocumentHideEvent);\n });\n }\n\n this._isShown = false;\n }\n\n handleDocumentHideEvent(e) {\n if (e.target !== this.$trigger) {\n this.hide();\n }\n }\n\n toggle() {\n if (!this._isShown) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n show() {\n if (!this.$tooltip) {\n this.build();\n }\n\n this.$tooltip.style.display = 'block';\n this.$tooltip.setAttribute('aria-hidden', 'false');\n this.update();\n this._isShown = true;\n }\n\n hide() {\n if (!this._isShown) {\n return;\n }\n\n this.$tooltip.style.removeProperty('display');\n this.$tooltip.setAttribute('aria-hidden', 'true');\n this._isShown = false;\n }\n\n destroy() {\n this.hide();\n\n if (this.listeners?.length && this.$trigger) {\n this.listeners.forEach(([event, listener]) => {\n this.$trigger.removeEventListener(event, listener);\n document.removeEventListener(listener, this.handleDocumentHideEvent);\n });\n }\n\n if (this.$trigger) {\n this.$trigger.removeAttribute('tabindex');\n this.$trigger.removeAttribute('aria-describedby');\n }\n\n this.content = '';\n this.$trigger = null;\n\n if (this.$tooltip) {\n this.$tooltip.remove();\n this.$tooltip = null;\n }\n }\n\n update() {\n computePosition(this.$trigger, this.$tooltip, {\n middleware: [\n autoPlacement(),\n offset(10),\n shift({\n padding: 8\n }),\n arrow({\n element: this.$arrow\n })\n ]\n }).then(({ x, y, placement, middlewareData }) => {\n Object.assign(this.$tooltip.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n\n // Accessing the data\n const { x: arrowX, y: arrowY } = middlewareData.arrow,\n staticSide = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n }[placement.split('-')[0]];\n\n Object.assign(this.$arrow.style, {\n left: arrowX != null ? `${arrowX}px` : '',\n top: arrowY != null ? `${arrowY}px` : '',\n right: '',\n bottom: '',\n [staticSide]: `-${this.$arrow.clientWidth / 2}px`\n });\n });\n }\n\n build() {\n const id = uniqueId();\n this.$tooltip = document.createElement('div');\n this.$tooltip.id = id;\n this.$tooltip.setAttribute('role', 'tooltip');\n this.$tooltip.setAttribute('aria-hidden', 'true');\n this.$tooltip.classList.add('sp-tooltip');\n\n this.$content = document.createElement('div');\n this.$content.classList.add('sp-tooltip-inner');\n this.$content.innerHTML = this.content;\n\n this.$arrow = document.createElement('div');\n this.$arrow.classList.add('sp-tooltip-arrow');\n\n if (this.options.width) {\n this.$tooltip.style.width = `${this.options.width.toString().replace(/px/gi, '')}px`;\n }\n this.$tooltip.appendChild(this.$content);\n this.$tooltip.appendChild(this.$arrow);\n\n this.$trigger.setAttribute('aria-describedby', id);\n document.body.appendChild(this.$tooltip);\n }\n}\n\nexport function tooltip($triggers, options) {\n var triggers = [].slice.call('length' in $triggers ? $triggers : [$triggers]);\n\n if (triggers.length) {\n triggers.forEach($trigger => new Tooltip($trigger, options));\n }\n}\n"],"names":["defaults","trigger","Tooltip","$trigger","contentElement","contentArray","_this","opts","arguments","length","undefined","_classCallCheck","Error","this","options","_objectSpread","content","hasAttribute","setAttribute","_typeof","innerHTML","slice","call","title","listeners","hide","show","e","keyCode","preventDefault","toggle","splice","push","forEach","_ref","_ref2","_slicedToArray","event","listener","addEventListener","document","handleDocumentHideEvent","_isShown","key","value","target","$tooltip","build","style","display","update","removeProperty","_this$listeners","_this2","_ref3","_ref4","removeEventListener","removeAttribute","remove","_this3","computePosition","middleware","autoPlacement","offset","shift","padding","arrow","element","$arrow","then","_ref5","x","y","placement","middlewareData","Object","assign","left","concat","top","_middlewareData$arrow","arrowX","arrowY","staticSide","right","bottom","split","_defineProperty","clientWidth","id","Math","random","toString","substring","createElement","classList","add","$content","width","replace","appendChild","body","tooltip","$triggers","triggers"],"sourceRoot":""}