{"version":3,"sources":["chartist-plugin-tooltip.js"],"names":["root","factory","define","amd","Chartist","returnExportsGlobal","exports","module","require","this","window","document","show","element","hasClass","className","hide","regex","RegExp","replace","trim","getAttribute","indexOf","next","nextSibling","text","innerText","textContent","defaultOptions","currency","undefined","tooltipOffset","x","y","appendToBody","class","pointClass","plugins","tooltip","options","extend","chart","on","event","selector","callback","$chart","addEventListener","e","target","setPosition","height","$toolTip","offsetHeight","width","offsetWidth","style","top","pageY","left","pageX","layerY","offsetY","layerX","offsetX","tooltipSelector","Bar","Pie","donut","container","querySelector","createElement","body","appendChild","$point","tooltipText","isPieChart","parentNode","seriesName","meta","hasMeta","value","transformTooltipTextFnc","tooltipFnc","metaIsHTML","txt","innerHTML","label","tooltips"],"mappings":"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","file":"chartist-plugin-tooltip.min.js","sourcesContent":["(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([\"chartist\"], function (Chartist) {\n return (root.returnExportsGlobal = factory(Chartist));\n });\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like enviroments that support module.exports,\n // like Node.\n module.exports = factory(require(\"chartist\"));\n } else {\n root['Chartist.plugins.tooltips'] = factory(Chartist);\n }\n}(this, function (Chartist) {\n\n /**\n * Chartist.js plugin to display a data label on top of the points in a line chart.\n *\n */\n /* global Chartist */\n (function (window, document, Chartist) {\n 'use strict';\n\n var defaultOptions = {\n currency: undefined,\n tooltipOffset: {\n x: 0,\n y: -20\n },\n appendToBody: false,\n class: undefined,\n pointClass: 'ct-point'\n };\n\n Chartist.plugins = Chartist.plugins || {};\n Chartist.plugins.tooltip = function (options) {\n options = Chartist.extend({}, defaultOptions, options);\n\n return function tooltip(chart) {\n var tooltipSelector = options.pointClass;\n if (chart instanceof Chartist.Bar) {\n tooltipSelector = 'ct-bar';\n } else if (chart instanceof Chartist.Pie) {\n // Added support for donut graph\n if (chart.options.donut) {\n tooltipSelector = 'ct-slice-donut';\n } else {\n tooltipSelector = 'ct-slice-pie';\n }\n }\n\n var $chart = chart.container;\n var $toolTip = $chart.querySelector('.chartist-tooltip');\n if (!$toolTip) {\n $toolTip = document.createElement('div');\n $toolTip.className = (!options.class) ? 'chartist-tooltip' : 'chartist-tooltip ' + options.class;\n if (!options.appendToBody) {\n $chart.appendChild($toolTip);\n } else {\n document.body.appendChild($toolTip);\n }\n }\n var height = $toolTip.offsetHeight;\n var width = $toolTip.offsetWidth;\n\n hide($toolTip);\n\n function on(event, selector, callback) {\n $chart.addEventListener(event, function (e) {\n if (!selector || hasClass(e.target, selector))\n callback(e);\n });\n }\n\n on('mouseover', tooltipSelector, function (event) {\n var $point = event.target;\n var tooltipText = '';\n\n var isPieChart = (chart instanceof Chartist.Pie) ? $point : $point.parentNode;\n var seriesName = (isPieChart) ? $point.parentNode.getAttribute('ct:meta') || $point.parentNode.getAttribute('ct:series-name') : '';\n var meta = $point.getAttribute('ct:meta') || seriesName || '';\n var hasMeta = !!meta;\n var value = $point.getAttribute('ct:value');\n\n if (options.transformTooltipTextFnc && typeof options.transformTooltipTextFnc === 'function') {\n value = options.transformTooltipTextFnc(value);\n }\n\n if (options.tooltipFnc && typeof options.tooltipFnc === 'function') {\n tooltipText = options.tooltipFnc(meta, value);\n } else {\n if (options.metaIsHTML) {\n var txt = document.createElement(\"textarea\");\n txt.innerHTML = meta;\n meta = txt.value;\n }\n\n meta = '' + meta + '';\n\n if (hasMeta) {\n tooltipText += meta + '
';\n } else {\n // For Pie Charts also take the labels into account\n // Could add support for more charts here as well!\n if (chart instanceof Chartist.Pie) {\n var label = next($point, 'ct-label');\n if (label) {\n tooltipText += text(label) + '
';\n }\n }\n }\n\n if (value) {\n if (options.currency) {\n value = options.currency + value.replace(/(\\d)(?=(\\d{3})+(?:\\.\\d+)?$)/g, \"$1,\");\n }\n value = '' + value + '';\n tooltipText += value;\n }\n }\n\n if(tooltipText) {\n $toolTip.innerHTML = tooltipText;\n setPosition(event);\n show($toolTip);\n\n // Remember height and width to avoid wrong position in IE\n height = $toolTip.offsetHeight;\n width = $toolTip.offsetWidth;\n }\n });\n\n on('mouseout', tooltipSelector, function () {\n hide($toolTip);\n });\n\n on('mousemove', null, function (event) {\n setPosition(event);\n });\n\n function setPosition(event) {\n // For some reasons, on FF, we can't rely on event.offsetX and event.offsetY,\n // that's why we prioritize event.layerX and event.layerY\n // see https://github.com/gionkunz/chartist-js/issues/381\n height = height || $toolTip.offsetHeight;\n width = width || $toolTip.offsetWidth;\n if (!options.appendToBody) {\n $toolTip.style.top = (event.layerY || event.offsetY) - height + options.tooltipOffset.y + 'px';\n $toolTip.style.left = (event.layerX || event.offsetX) - width / 2 + options.tooltipOffset.x + 'px';\n } else {\n $toolTip.style.top = event.pageY - height + options.tooltipOffset.y + 'px';\n $toolTip.style.left = event.pageX - width / 2 + options.tooltipOffset.x + 'px';\n }\n }\n }\n };\n\n function show(element) {\n if(!hasClass(element, 'tooltip-show')) {\n element.className = element.className + ' tooltip-show';\n }\n }\n\n function hide(element) {\n var regex = new RegExp('tooltip-show' + '\\\\s*', 'gi');\n element.className = element.className.replace(regex, '').trim();\n }\n\n function hasClass(element, className) {\n return (' ' + element.getAttribute('class') + ' ').indexOf(' ' + className + ' ') > -1;\n }\n\n function next(element, className) {\n do {\n element = element.nextSibling;\n } while (element && !hasClass(element, className));\n return element;\n }\n\n function text(element) {\n return element.innerText || element.textContent;\n }\n\n } (window, document, Chartist));\n\n return Chartist.plugins.tooltips;\n\n}));\n"]}