{"version":3,"sources":["../../js/custom-tooltips.js"],"names":["CustomTooltips","tooltipModel","_setCanvasId","_idMaker","_hex","_multiplier","Math","random","toString","_canvasId","_chart","canvas","id","ClassName","ABOVE","BELOW","CHARTJS_TOOLTIP","NO_TRANSFORM","TOOLTIP_BODY","TOOLTIP_BODY_ITEM","TOOLTIP_BODY_ITEM_COLOR","TOOLTIP_BODY_ITEM_LABEL","TOOLTIP_BODY_ITEM_VALUE","TOOLTIP_HEADER","TOOLTIP_HEADER_ITEM","Selector","DIV","SPAN","TOOLTIP","tooltip","document","getElementById","createElement","className","parentNode","appendChild","opacity","style","classList","remove","yAlign","add","body","titleLines","title","tooltipHeader","forEach","tooltipHeaderTitle","innerHTML","tooltipBody","tooltipBodyItems","map","item","lines","i","tooltipBodyItem","colors","labelColors","tooltipBodyItemColor","backgroundColor","split","length","tooltipBodyItemLabel","tooltipBodyItemValue","pop","positionY","offsetTop","positionX","offsetLeft","left","caretX","top","caretY"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * CoreUI Plugins - Custom Tooltips for Chart.js (v1.2.0): custom-tooltips.js\n * Licensed under MIT (https://coreui.io/license)\n * --------------------------------------------------------------------------\n */\n\nfunction CustomTooltips(tooltipModel) {\n // Add unique id if not exist\n const _setCanvasId = () => {\n const _idMaker = () => {\n const _hex = 16\n const _multiplier = 0x10000\n return ((1 + Math.random()) * _multiplier | 0).toString(_hex)\n }\n const _canvasId = `_canvas-${_idMaker() + _idMaker()}`\n this._chart.canvas.id = _canvasId\n return _canvasId\n }\n\n const ClassName = {\n ABOVE : 'above',\n BELOW : 'below',\n CHARTJS_TOOLTIP : 'chartjs-tooltip',\n NO_TRANSFORM : 'no-transform',\n TOOLTIP_BODY : 'tooltip-body',\n TOOLTIP_BODY_ITEM : 'tooltip-body-item',\n TOOLTIP_BODY_ITEM_COLOR : 'tooltip-body-item-color',\n TOOLTIP_BODY_ITEM_LABEL : 'tooltip-body-item-label',\n TOOLTIP_BODY_ITEM_VALUE : 'tooltip-body-item-value',\n TOOLTIP_HEADER : 'tooltip-header',\n TOOLTIP_HEADER_ITEM : 'tooltip-header-item'\n }\n\n const Selector = {\n DIV : 'div',\n SPAN : 'span',\n TOOLTIP : `${this._chart.canvas.id || _setCanvasId()}-tooltip`\n }\n\n let tooltip = document.getElementById(Selector.TOOLTIP)\n\n if (!tooltip) {\n tooltip = document.createElement('div')\n tooltip.id = Selector.TOOLTIP\n tooltip.className = ClassName.CHARTJS_TOOLTIP\n this._chart.canvas.parentNode.appendChild(tooltip)\n }\n\n // Hide if no tooltip\n if (tooltipModel.opacity === 0) {\n tooltip.style.opacity = 0\n return\n }\n\n // Set caret Position\n tooltip.classList.remove(ClassName.ABOVE, ClassName.BELOW, ClassName.NO_TRANSFORM)\n if (tooltipModel.yAlign) {\n tooltip.classList.add(tooltipModel.yAlign)\n } else {\n tooltip.classList.add(ClassName.NO_TRANSFORM)\n }\n\n // Set Text\n if (tooltipModel.body) {\n const titleLines = tooltipModel.title || []\n\n const tooltipHeader = document.createElement(Selector.DIV)\n tooltipHeader.className = ClassName.TOOLTIP_HEADER\n\n titleLines.forEach((title) => {\n const tooltipHeaderTitle = document.createElement(Selector.DIV)\n tooltipHeaderTitle.className = ClassName.TOOLTIP_HEADER_ITEM\n tooltipHeaderTitle.innerHTML = title\n tooltipHeader.appendChild(tooltipHeaderTitle)\n })\n\n const tooltipBody = document.createElement(Selector.DIV)\n tooltipBody.className = ClassName.TOOLTIP_BODY\n\n const tooltipBodyItems = tooltipModel.body.map((item) => item.lines)\n tooltipBodyItems.forEach((item, i) => {\n const tooltipBodyItem = document.createElement(Selector.DIV)\n tooltipBodyItem.className = ClassName.TOOLTIP_BODY_ITEM\n\n const colors = tooltipModel.labelColors[i]\n\n const tooltipBodyItemColor = document.createElement(Selector.SPAN)\n tooltipBodyItemColor.className = ClassName.TOOLTIP_BODY_ITEM_COLOR\n tooltipBodyItemColor.style.backgroundColor = colors.backgroundColor\n\n tooltipBodyItem.appendChild(tooltipBodyItemColor)\n\n if (item[0].split(':').length > 1) {\n const tooltipBodyItemLabel = document.createElement(Selector.SPAN)\n tooltipBodyItemLabel.className = ClassName.TOOLTIP_BODY_ITEM_LABEL\n tooltipBodyItemLabel.innerHTML = item[0].split(': ')[0]\n\n tooltipBodyItem.appendChild(tooltipBodyItemLabel)\n\n const tooltipBodyItemValue = document.createElement(Selector.SPAN)\n tooltipBodyItemValue.className = ClassName.TOOLTIP_BODY_ITEM_VALUE\n tooltipBodyItemValue.innerHTML = item[0].split(': ').pop()\n\n tooltipBodyItem.appendChild(tooltipBodyItemValue)\n } else {\n const tooltipBodyItemValue = document.createElement(Selector.SPAN)\n tooltipBodyItemValue.className = ClassName.TOOLTIP_BODY_ITEM_VALUE\n tooltipBodyItemValue.innerHTML = item[0]\n\n tooltipBodyItem.appendChild(tooltipBodyItemValue)\n }\n\n tooltipBody.appendChild(tooltipBodyItem)\n })\n\n tooltip.innerHTML = ''\n\n tooltip.appendChild(tooltipHeader)\n tooltip.appendChild(tooltipBody)\n }\n\n const positionY = this._chart.canvas.offsetTop\n const positionX = this._chart.canvas.offsetLeft\n\n // Display, position, and set styles for font\n tooltip.style.opacity = 1\n tooltip.style.left = `${positionX + tooltipModel.caretX}px`\n tooltip.style.top = `${positionY + tooltipModel.caretY}px`\n}\n\nexport default CustomTooltips\n"],"file":"custom-tooltips.js"}