{"version":3,"sources":["jsdelivr-header.js","/npm/chartkick@5.0.1/dist/chartkick.esm.js"],"names":[],"mappings":"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","file":"/npm/chartkick@5.0.1/dist/chartkick.esm.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/chartkick@5.0.1/dist/chartkick.esm.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*!\n * Chartkick.js v5.0.1\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * MIT License\n */\n\nfunction isArray(variable) {\n  return Object.prototype.toString.call(variable) === \"[object Array]\";\n}\n\nfunction isFunction(variable) {\n  return variable instanceof Function;\n}\n\nfunction isPlainObject(variable) {\n  // protect against prototype pollution, defense 2\n  return Object.prototype.toString.call(variable) === \"[object Object]\" && !isFunction(variable) && variable instanceof Object;\n}\n\n// https://github.com/madrobby/zepto/blob/master/src/zepto.js\nfunction extend(target, source) {\n  for (var key in source) {\n    // protect against prototype pollution, defense 1\n    if (key === \"__proto__\") { continue; }\n\n    if (isPlainObject(source[key]) || isArray(source[key])) {\n      if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n        target[key] = {};\n      }\n      if (isArray(source[key]) && !isArray(target[key])) {\n        target[key] = [];\n      }\n      extend(target[key], source[key]);\n    } else if (source[key] !== undefined) {\n      target[key] = source[key];\n    }\n  }\n}\n\nfunction merge(obj1, obj2) {\n  var target = {};\n  extend(target, obj1);\n  extend(target, obj2);\n  return target;\n}\n\nvar DATE_PATTERN = /^(\\d\\d\\d\\d)(?:-)?(\\d\\d)(?:-)?(\\d\\d)$/i;\n\nfunction negativeValues(series) {\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n    for (var j = 0; j < data.length; j++) {\n      if (data[j][1] < 0) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\nfunction toStr(obj) {\n  return \"\" + obj;\n}\n\nfunction toFloat(obj) {\n  return parseFloat(obj);\n}\n\nfunction toDate(obj) {\n  if (obj instanceof Date) {\n    return obj;\n  } else if (typeof obj === \"number\") {\n    return new Date(obj * 1000); // ms\n  } else {\n    var s = toStr(obj);\n    var matches = s.match(DATE_PATTERN);\n    if (matches) {\n      var year = parseInt(matches[1], 10);\n      var month = parseInt(matches[2], 10) - 1;\n      var day = parseInt(matches[3], 10);\n      return new Date(year, month, day);\n    } else {\n      // try our best to get the str into iso8601\n      // TODO be smarter about this\n      var str = s.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n      // Date.parse returns milliseconds if valid and NaN if invalid\n      return new Date(Date.parse(str) || s);\n    }\n  }\n}\n\nfunction toArr(obj) {\n  if (isArray(obj)) {\n    return obj;\n  } else {\n    var arr = [];\n    for (var i in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, i)) {\n        arr.push([i, obj[i]]);\n      }\n    }\n    return arr;\n  }\n}\n\nfunction jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle) {\n  return function (chart, opts, chartOptions) {\n    var series = chart.data;\n    var options = merge({}, defaultOptions);\n    options = merge(options, chartOptions || {});\n\n    if (chart.singleSeriesFormat || \"legend\" in opts) {\n      hideLegend(options, opts.legend, chart.singleSeriesFormat);\n    }\n\n    if (opts.title) {\n      setTitle(options, opts.title);\n    }\n\n    // min\n    if (\"min\" in opts) {\n      setMin(options, opts.min);\n    } else if (!negativeValues(series)) {\n      setMin(options, 0);\n    }\n\n    // max\n    if (opts.max) {\n      setMax(options, opts.max);\n    }\n\n    if (\"stacked\" in opts) {\n      setStacked(options, opts.stacked);\n    }\n\n    if (opts.colors) {\n      options.colors = opts.colors;\n    }\n\n    if (opts.xtitle) {\n      setXtitle(options, opts.xtitle);\n    }\n\n    if (opts.ytitle) {\n      setYtitle(options, opts.ytitle);\n    }\n\n    // merge library last\n    options = merge(options, opts.library || {});\n\n    return options;\n  };\n}\n\nfunction sortByTime(a, b) {\n  return a[0].getTime() - b[0].getTime();\n}\n\nfunction sortByNumberSeries(a, b) {\n  return a[0] - b[0];\n}\n\n// needed since sort() without arguments does string comparison\nfunction sortByNumber(a, b) {\n  return a - b;\n}\n\nfunction every(values, fn) {\n  for (var i = 0; i < values.length; i++) {\n    if (!fn(values[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction isDay(timeUnit) {\n  return timeUnit === \"day\" || timeUnit === \"week\" || timeUnit === \"month\" || timeUnit === \"year\";\n}\n\nfunction calculateTimeUnit(values, maxDay) {\n  if ( maxDay === void 0 ) maxDay = false;\n\n  if (values.length === 0) {\n    return null;\n  }\n\n  var minute = every(values, function (d) { return d.getMilliseconds() === 0 && d.getSeconds() === 0; });\n  if (!minute) {\n    return null;\n  }\n\n  var hour = every(values, function (d) { return d.getMinutes() === 0; });\n  if (!hour) {\n    return \"minute\";\n  }\n\n  var day = every(values, function (d) { return d.getHours() === 0; });\n  if (!day) {\n    return \"hour\";\n  }\n\n  if (maxDay) {\n    return \"day\";\n  }\n\n  var month = every(values, function (d) { return d.getDate() === 1; });\n  if (!month) {\n    var dayOfWeek = values[0].getDay();\n    var week = every(values, function (d) { return d.getDay() === dayOfWeek; });\n    return (week ? \"week\" : \"day\");\n  }\n\n  var year = every(values, function (d) { return d.getMonth() === 0; });\n  if (!year) {\n    return \"month\";\n  }\n\n  return \"year\";\n}\n\nfunction isDate(obj) {\n  return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n}\n\nfunction isNumber(obj) {\n  return typeof obj === \"number\";\n}\n\nvar byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n\nfunction formatValue(pre, value, options, axis) {\n  pre = pre || \"\";\n  if (options.prefix) {\n    if (value < 0) {\n      value = value * -1;\n      pre += \"-\";\n    }\n    pre += options.prefix;\n  }\n\n  var suffix = options.suffix || \"\";\n  var precision = options.precision;\n  var round = options.round;\n\n  if (options.byteScale) {\n    var positive = value >= 0;\n    if (!positive) {\n      value *= -1;\n    }\n\n    var baseValue = axis ? options.byteScale : value;\n\n    var suffixIdx;\n    if (baseValue >= 1152921504606846976) {\n      value /= 1152921504606846976;\n      suffixIdx = 6;\n    } else if (baseValue >= 1125899906842624) {\n      value /= 1125899906842624;\n      suffixIdx = 5;\n    } else if (baseValue >= 1099511627776) {\n      value /= 1099511627776;\n      suffixIdx = 4;\n    } else if (baseValue >= 1073741824) {\n      value /= 1073741824;\n      suffixIdx = 3;\n    } else if (baseValue >= 1048576) {\n      value /= 1048576;\n      suffixIdx = 2;\n    } else if (baseValue >= 1024) {\n      value /= 1024;\n      suffixIdx = 1;\n    } else {\n      suffixIdx = 0;\n    }\n\n    // TODO handle manual precision case\n    if (precision === undefined && round === undefined) {\n      if (value >= 1023.5) {\n        if (suffixIdx < byteSuffixes.length - 1) {\n          value = 1.0;\n          suffixIdx += 1;\n        }\n      }\n      precision = value >= 1000 ? 4 : 3;\n    }\n    suffix = \" \" + byteSuffixes[suffixIdx];\n\n    // flip value back\n    if (!positive) {\n      value *= -1;\n    }\n  }\n\n  if (precision !== undefined && round !== undefined) {\n    throw Error(\"Use either round or precision, not both\");\n  }\n\n  if (!axis) {\n    if (precision !== undefined) {\n      value = value.toPrecision(precision);\n      if (!options.zeros) {\n        value = parseFloat(value);\n      }\n    }\n\n    if (round !== undefined) {\n      if (round < 0) {\n        var num = Math.pow(10, -1 * round);\n        value = parseInt((1.0 * value / num).toFixed(0)) * num;\n      } else {\n        value = value.toFixed(round);\n        if (!options.zeros) {\n          value = parseFloat(value);\n        }\n      }\n    }\n  }\n\n  if (options.thousands || options.decimal) {\n    value = toStr(value);\n    var parts = value.split(\".\");\n    value = parts[0];\n    if (options.thousands) {\n      value = value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousands);\n    }\n    if (parts.length > 1) {\n      value += (options.decimal || \".\") + parts[1];\n    }\n  }\n\n  return pre + value + suffix;\n}\n\nfunction seriesOption(chart, series, option) {\n  if (option in series) {\n    return series[option];\n  } else if (option in chart.options) {\n    return chart.options[option];\n  }\n  return null;\n}\n\nvar baseOptions = {\n  maintainAspectRatio: false,\n  animation: false,\n  plugins: {\n    legend: {},\n    tooltip: {\n      displayColors: false,\n      callbacks: {}\n    },\n    title: {\n      font: {\n        size: 20\n      },\n      color: \"#333\"\n    }\n  },\n  interaction: {}\n};\n\nvar defaultOptions$2 = {\n  scales: {\n    y: {\n      ticks: {\n        maxTicksLimit: 4\n      },\n      title: {\n        font: {\n          size: 16\n        },\n        color: \"#333\"\n      },\n      grid: {}\n    },\n    x: {\n      grid: {\n        drawOnChartArea: false\n      },\n      title: {\n        font: {\n          size: 16\n        },\n        color: \"#333\"\n      },\n      time: {},\n      ticks: {}\n    }\n  }\n};\n\n// http://there4.io/2012/05/02/google-chart-color-list/\nvar defaultColors = [\n  \"#3366CC\", \"#DC3912\", \"#FF9900\", \"#109618\", \"#990099\", \"#3B3EAC\", \"#0099C6\",\n  \"#DD4477\", \"#66AA00\", \"#B82E2E\", \"#316395\", \"#994499\", \"#22AA99\", \"#AAAA11\",\n  \"#6633CC\", \"#E67300\", \"#8B0707\", \"#329262\", \"#5574A6\", \"#651067\"\n];\n\nfunction hideLegend$2(options, legend, hideLegend) {\n  if (legend !== undefined) {\n    options.plugins.legend.display = !!legend;\n    if (legend && legend !== true) {\n      options.plugins.legend.position = legend;\n    }\n  } else if (hideLegend) {\n    options.plugins.legend.display = false;\n  }\n}\n\nfunction setTitle$2(options, title) {\n  options.plugins.title.display = true;\n  options.plugins.title.text = title;\n}\n\nfunction setMin$2(options, min) {\n  if (min !== null) {\n    options.scales.y.min = toFloat(min);\n  }\n}\n\nfunction setMax$2(options, max) {\n  options.scales.y.max = toFloat(max);\n}\n\nfunction setBarMin$1(options, min) {\n  if (min !== null) {\n    options.scales.x.min = toFloat(min);\n  }\n}\n\nfunction setBarMax$1(options, max) {\n  options.scales.x.max = toFloat(max);\n}\n\nfunction setStacked$2(options, stacked) {\n  options.scales.x.stacked = !!stacked;\n  options.scales.y.stacked = !!stacked;\n}\n\nfunction setXtitle$2(options, title) {\n  options.scales.x.title.display = true;\n  options.scales.x.title.text = title;\n}\n\nfunction setYtitle$2(options, title) {\n  options.scales.y.title.display = true;\n  options.scales.y.title.text = title;\n}\n\n// https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\nfunction addOpacity(hex, opacity) {\n  var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n  return result ? \"rgba(\" + parseInt(result[1], 16) + \", \" + parseInt(result[2], 16) + \", \" + parseInt(result[3], 16) + \", \" + opacity + \")\" : hex;\n}\n\nfunction notnull(x) {\n  return x !== null && x !== undefined;\n}\n\nfunction setLabelSize(chart, data, options) {\n  var maxLabelSize = Math.ceil(chart.element.offsetWidth / 4.0 / data.labels.length);\n  if (maxLabelSize > 25) {\n    maxLabelSize = 25;\n  } else if (maxLabelSize < 10) {\n    maxLabelSize = 10;\n  }\n  if (!options.scales.x.ticks.callback) {\n    options.scales.x.ticks.callback = function (value) {\n      value = toStr(this.getLabelForValue(value));\n      if (value.length > maxLabelSize) {\n        return value.substring(0, maxLabelSize - 2) + \"...\";\n      } else {\n        return value;\n      }\n    };\n  }\n}\n\nfunction calculateScale(series) {\n  var scale = 1;\n  var max = maxAbsY(series);\n  while (max >= 1024) {\n    scale *= 1024;\n    max /= 1024;\n  }\n  return scale;\n}\n\nfunction setFormatOptions$1(chart, options, chartType) {\n  // options to apply to x and r values for scatter and bubble\n  var numericOptions = {\n    thousands: chart.options.thousands,\n    decimal: chart.options.decimal\n  };\n\n  // options to apply to y value\n  var formatOptions = merge({\n    prefix: chart.options.prefix,\n    suffix: chart.options.suffix,\n    precision: chart.options.precision,\n    round: chart.options.round,\n    zeros: chart.options.zeros\n  }, numericOptions);\n\n  if (chart.options.bytes) {\n    var series = chart.data;\n    if (chartType === \"pie\") {\n      series = [{data: series}];\n    }\n\n    // set step size\n    formatOptions.byteScale = calculateScale(series);\n  }\n\n  if (chartType !== \"pie\") {\n    var axis = options.scales.y;\n    if (chartType === \"bar\") {\n      axis = options.scales.x;\n    }\n\n    if (formatOptions.byteScale) {\n      if (!axis.ticks.stepSize) {\n        axis.ticks.stepSize = formatOptions.byteScale / 2;\n      }\n      if (!axis.ticks.maxTicksLimit) {\n        axis.ticks.maxTicksLimit = 4;\n      }\n    }\n\n    if (!axis.ticks.callback) {\n      axis.ticks.callback = function (value) {\n        return formatValue(\"\", value, formatOptions, true);\n      };\n    }\n\n    if ((chartType === \"scatter\" || chartType === \"bubble\") && !options.scales.x.ticks.callback) {\n      options.scales.x.ticks.callback = function (value) {\n        return formatValue(\"\", value, numericOptions, true);\n      };\n    }\n  }\n\n  if (!options.plugins.tooltip.callbacks.label) {\n    if (chartType === \"scatter\") {\n      options.plugins.tooltip.callbacks.label = function (context) {\n        var label = context.dataset.label || '';\n        if (label) {\n          label += ': ';\n        }\n\n        var dataPoint = context.parsed;\n        return label + '(' + formatValue('', dataPoint.x, numericOptions) + ', ' + formatValue('', dataPoint.y, formatOptions) + ')';\n      };\n    } else if (chartType === \"bubble\") {\n      options.plugins.tooltip.callbacks.label = function (context) {\n        var label = context.dataset.label || '';\n        if (label) {\n          label += ': ';\n        }\n        var dataPoint = context.raw;\n        return label + '(' + formatValue('', dataPoint.x, numericOptions) + ', ' + formatValue('', dataPoint.y, formatOptions) + ', ' + formatValue('', dataPoint.v, numericOptions) + ')';\n      };\n    } else if (chartType === \"pie\") {\n      // need to use separate label for pie charts\n      options.plugins.tooltip.callbacks.label = function (context) {\n        return formatValue('', context.parsed, formatOptions);\n      };\n    } else {\n      var valueLabel = chartType === \"bar\" ? \"x\" : \"y\";\n      options.plugins.tooltip.callbacks.label = function (context) {\n        // don't show null values for stacked charts\n        if (context.parsed[valueLabel] === null) {\n          return;\n        }\n\n        var label = context.dataset.label || '';\n        if (label) {\n          label += ': ';\n        }\n        return formatValue(label, context.parsed[valueLabel], formatOptions);\n      };\n    }\n  }\n\n  // avoid formatting x-axis labels\n  // by default, Chart.js applies locale\n  if ((chartType === \"line\" || chartType === \"area\") && chart.xtype === \"number\") {\n    if (!options.scales.x.ticks.callback) {\n      options.scales.x.ticks.callback = function (value) {\n        return toStr(value);\n      };\n    }\n\n    if (!options.plugins.tooltip.callbacks.title) {\n      options.plugins.tooltip.callbacks.title = function (context) {\n        return toStr(context[0].parsed.x);\n      };\n    }\n  }\n}\n\nfunction maxAbsY(series) {\n  var max = 0;\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n    for (var j = 0; j < data.length; j++) {\n      var v = Math.abs(data[j][1]);\n      if (v > max) {\n        max = v;\n      }\n    }\n  }\n  return max;\n}\n\nfunction maxR(series) {\n  // start at zero since radius must be positive\n  var max = 0;\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n    for (var j = 0; j < data.length; j++) {\n      var v = data[j][2];\n      if (v > max) {\n        max = v;\n      }\n    }\n  }\n  return max;\n}\n\nvar jsOptions$2 = jsOptionsFunc(merge(baseOptions, defaultOptions$2), hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n\nfunction prepareDefaultData(chart) {\n  var series = chart.data;\n  var rows = {};\n  var keys = [];\n  var labels = [];\n  var values = [];\n\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n\n    for (var j = 0; j < data.length; j++) {\n      var d = data[j];\n      var key = chart.xtype === \"datetime\" ? d[0].getTime() : d[0];\n      if (!rows[key]) {\n        rows[key] = new Array(series.length);\n        keys.push(key);\n      }\n      rows[key][i] = d[1];\n    }\n  }\n\n  if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n    keys.sort(sortByNumber);\n  }\n\n  for (var i$1 = 0; i$1 < series.length; i$1++) {\n    values.push([]);\n  }\n\n  for (var i$2 = 0; i$2 < keys.length; i$2++) {\n    var key$1 = keys[i$2];\n\n    var label = chart.xtype === \"datetime\" ? new Date(key$1) : key$1;\n    labels.push(label);\n\n    var row = rows[key$1];\n    for (var j$1 = 0; j$1 < series.length; j$1++) {\n      var v = row[j$1];\n      // Chart.js doesn't like undefined\n      values[j$1].push(v === undefined ? null : v);\n    }\n  }\n\n  return {\n    labels: labels,\n    values: values\n  };\n}\n\nfunction prepareBubbleData(chart) {\n  var series = chart.data;\n  var values = [];\n  var max = maxR(series);\n\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n    var points = [];\n    for (var j = 0; j < data.length; j++) {\n      var v = data[j];\n      points.push({\n        x: v[0],\n        y: v[1],\n        r: v[2] * 20 / max,\n        // custom attribute, for tooltip\n        v: v[2]\n      });\n    }\n    values.push(points);\n  }\n\n  return {\n    labels: [],\n    values: values\n  };\n}\n\n// scatter or numeric line/area\nfunction prepareNumberData(chart) {\n  var series = chart.data;\n  var values = [];\n\n  for (var i = 0; i < series.length; i++) {\n    var data = series[i].data;\n\n    data.sort(sortByNumberSeries);\n\n    var points = [];\n    for (var j = 0; j < data.length; j++) {\n      var v = data[j];\n      points.push({\n        x: v[0],\n        y: v[1]\n      });\n    }\n    values.push(points);\n  }\n\n  return {\n    labels: [],\n    values: values\n  };\n}\n\nfunction prepareData(chart, chartType) {\n  if (chartType === \"bubble\") {\n    return prepareBubbleData(chart);\n  } else if (chart.xtype === \"number\" && chartType !== \"bar\" && chartType !== \"column\") {\n    return prepareNumberData(chart);\n  } else {\n    return prepareDefaultData(chart);\n  }\n}\n\nfunction createDataTable(chart, options, chartType) {\n  var ref = prepareData(chart, chartType);\n  var labels = ref.labels;\n  var values = ref.values;\n\n  var series = chart.data;\n  var datasets = [];\n  var colors = chart.options.colors || defaultColors;\n  for (var i = 0; i < series.length; i++) {\n    var s = series[i];\n\n    // use colors for each bar for single series format\n    var color = (void 0);\n    var backgroundColor = (void 0);\n    if (chart.options.colors && chart.singleSeriesFormat && (chartType === \"bar\" || chartType === \"column\") && !s.color && isArray(chart.options.colors) && !isArray(chart.options.colors[0])) {\n      color = colors;\n      backgroundColor = [];\n      for (var j = 0; j < colors.length; j++) {\n        backgroundColor[j] = addOpacity(color[j], 0.5);\n      }\n    } else {\n      color = s.color || colors[i];\n      backgroundColor = chartType !== \"line\" ? addOpacity(color, 0.5) : color;\n    }\n\n    var dataset = {\n      label: s.name || \"\",\n      data: values[i],\n      fill: chartType === \"area\",\n      borderColor: color,\n      backgroundColor: backgroundColor,\n      borderWidth: 2\n    };\n\n    var pointChart = chartType === \"line\" || chartType === \"area\" || chartType === \"scatter\" || chartType === \"bubble\";\n    if (pointChart) {\n      dataset.pointBackgroundColor = color;\n      dataset.pointHoverBackgroundColor = color;\n      dataset.pointHitRadius = 50;\n    }\n\n    if (chartType === \"bubble\") {\n      dataset.pointBackgroundColor = backgroundColor;\n      dataset.pointHoverBackgroundColor = backgroundColor;\n      dataset.pointHoverBorderWidth = 2;\n    }\n\n    if (s.stack) {\n      dataset.stack = s.stack;\n    }\n\n    var curve = seriesOption(chart, s, \"curve\");\n    if (curve === false) {\n      dataset.tension = 0;\n    } else if (pointChart) {\n      dataset.tension = 0.4;\n    }\n\n    var points = seriesOption(chart, s, \"points\");\n    if (points === false) {\n      dataset.pointRadius = 0;\n      dataset.pointHoverRadius = 0;\n    }\n\n    dataset = merge(dataset, chart.options.dataset || {});\n    dataset = merge(dataset, s.library || {});\n    dataset = merge(dataset, s.dataset || {});\n\n    datasets.push(dataset);\n  }\n\n  var xmin = chart.options.xmin;\n  var xmax = chart.options.xmax;\n\n  if (chart.xtype === \"datetime\") {\n    if (notnull(xmin)) {\n      options.scales.x.min = toDate(xmin).getTime();\n    }\n    if (notnull(xmax)) {\n      options.scales.x.max = toDate(xmax).getTime();\n    }\n  } else if (chart.xtype === \"number\") {\n    if (notnull(xmin)) {\n      options.scales.x.min = xmin;\n    }\n    if (notnull(xmax)) {\n      options.scales.x.max = xmax;\n    }\n  }\n\n  if (chart.xtype === \"datetime\") {\n    var timeUnit = calculateTimeUnit(labels);\n\n    // for empty datetime chart\n    if (labels.length === 0) {\n      if (notnull(xmin)) {\n        labels.push(toDate(xmin));\n      }\n      if (notnull(xmax)) {\n        labels.push(toDate(xmax));\n      }\n    }\n\n    if (labels.length > 0) {\n      var minTime = (notnull(xmin) ? toDate(xmin) : labels[0]).getTime();\n      var maxTime = (notnull(xmax) ? toDate(xmax) : labels[0]).getTime();\n\n      for (var i$1 = 1; i$1 < labels.length; i$1++) {\n        var value = labels[i$1].getTime();\n        if (value < minTime) {\n          minTime = value;\n        }\n        if (value > maxTime) {\n          maxTime = value;\n        }\n      }\n\n      var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n\n      if (!options.scales.x.time.unit) {\n        var step;\n        if (timeUnit === \"year\" || timeDiff > 365 * 10) {\n          options.scales.x.time.unit = \"year\";\n          step = 365;\n        } else if (timeUnit === \"month\" || timeDiff > 30 * 10) {\n          options.scales.x.time.unit = \"month\";\n          step = 30;\n        } else if (timeUnit === \"week\" || timeUnit === \"day\" || timeDiff > 10) {\n          options.scales.x.time.unit = \"day\";\n          step = 1;\n        } else if (timeUnit === \"hour\" || timeDiff > 0.5) {\n          options.scales.x.time.displayFormats = {hour: \"MMM d, h a\"};\n          options.scales.x.time.unit = \"hour\";\n          step = 1 / 24.0;\n        } else if (timeUnit === \"minute\") {\n          options.scales.x.time.displayFormats = {minute: \"h:mm a\"};\n          options.scales.x.time.unit = \"minute\";\n          step = 1 / 24.0 / 60.0;\n        }\n\n        if (step && timeDiff > 0) {\n          // width not available for hidden elements\n          var width = chart.element.offsetWidth;\n          if (width > 0) {\n            var unitStepSize = Math.ceil(timeDiff / step / (width / 100.0));\n            if (timeUnit === \"week\" && step === 1) {\n              unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n            }\n            options.scales.x.ticks.stepSize = unitStepSize;\n          }\n        }\n      }\n\n      if (!options.scales.x.time.tooltipFormat) {\n        if (timeUnit === \"year\") {\n          options.scales.x.time.tooltipFormat = \"yyyy\";\n        } else if (timeUnit === \"month\") {\n          options.scales.x.time.tooltipFormat = \"MMM yyyy\";\n        } else if (timeUnit === \"week\" || timeUnit === \"day\") {\n          options.scales.x.time.tooltipFormat = \"PP\";\n        } else if (timeUnit === \"hour\") {\n          options.scales.x.time.tooltipFormat = \"MMM d, h a\";\n        } else if (timeUnit === \"minute\") {\n          options.scales.x.time.tooltipFormat = \"h:mm a\";\n        }\n      }\n    }\n  }\n\n  return {\n    labels: labels,\n    datasets: datasets\n  };\n}\n\nvar defaultExport$2 = function defaultExport(library) {\n  this.name = \"chartjs\";\n  this.library = library;\n};\n\ndefaultExport$2.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n  if (!chartType) {\n    chartType = \"line\";\n  }\n\n  var chartOptions = {};\n\n  var options = jsOptions$2(chart, merge(chartOptions, chart.options));\n  setFormatOptions$1(chart, options, chartType);\n\n  var data = createDataTable(chart, options, chartType);\n\n  if (chart.xtype === \"number\") {\n    options.scales.x.type = options.scales.x.type || \"linear\";\n    options.scales.x.position = options.scales.x.position || \"bottom\";\n  } else {\n    options.scales.x.type = chart.xtype === \"string\" ? \"category\" : \"time\";\n  }\n\n  this.drawChart(chart, \"line\", data, options);\n};\n\ndefaultExport$2.prototype.renderPieChart = function renderPieChart (chart) {\n  var options = merge({}, baseOptions);\n  if (chart.options.donut) {\n    options.cutout = \"50%\";\n  }\n\n  if (\"legend\" in chart.options) {\n    hideLegend$2(options, chart.options.legend);\n  }\n\n  if (chart.options.title) {\n    setTitle$2(options, chart.options.title);\n  }\n\n  options = merge(options, chart.options.library || {});\n  setFormatOptions$1(chart, options, \"pie\");\n\n  var labels = [];\n  var values = [];\n  for (var i = 0; i < chart.data.length; i++) {\n    var point = chart.data[i];\n    labels.push(point[0]);\n    values.push(point[1]);\n  }\n\n  var dataset = {\n    data: values,\n    backgroundColor: chart.options.colors || defaultColors\n  };\n  dataset = merge(dataset, chart.options.dataset || {});\n\n  var data = {\n    labels: labels,\n    datasets: [dataset]\n  };\n\n  this.drawChart(chart, \"pie\", data, options);\n};\n\ndefaultExport$2.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n  var options;\n  if (chartType === \"bar\") {\n    var barOptions = merge(baseOptions, defaultOptions$2);\n    barOptions.indexAxis = \"y\";\n\n    // ensure gridlines have proper orientation\n    barOptions.scales.x.grid.drawOnChartArea = true;\n    barOptions.scales.y.grid.drawOnChartArea = false;\n    delete barOptions.scales.y.ticks.maxTicksLimit;\n\n    options = jsOptionsFunc(barOptions, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options);\n  } else {\n    options = jsOptions$2(chart, chart.options);\n  }\n  setFormatOptions$1(chart, options, chartType);\n  var data = createDataTable(chart, options, \"column\");\n  if (chartType !== \"bar\") {\n    setLabelSize(chart, data, options);\n  }\n  if (!(\"mode\" in options.interaction)) {\n    options.interaction.mode = \"index\";\n  }\n  this.drawChart(chart, \"bar\", data, options);\n};\n\ndefaultExport$2.prototype.renderAreaChart = function renderAreaChart (chart) {\n  this.renderLineChart(chart, \"area\");\n};\n\ndefaultExport$2.prototype.renderBarChart = function renderBarChart (chart) {\n  this.renderColumnChart(chart, \"bar\");\n};\n\ndefaultExport$2.prototype.renderScatterChart = function renderScatterChart (chart, chartType) {\n  chartType = chartType || \"scatter\";\n\n  var options = jsOptions$2(chart, chart.options);\n  setFormatOptions$1(chart, options, chartType);\n\n  if (!(\"showLine\" in options)) {\n    options.showLine = false;\n  }\n\n  var data = createDataTable(chart, options, chartType);\n\n  options.scales.x.type = options.scales.x.type || \"linear\";\n  options.scales.x.position = options.scales.x.position || \"bottom\";\n\n  // prevent grouping hover and tooltips\n  if (!(\"mode\" in options.interaction)) {\n    options.interaction.mode = \"nearest\";\n  }\n\n  this.drawChart(chart, chartType, data, options);\n};\n\ndefaultExport$2.prototype.renderBubbleChart = function renderBubbleChart (chart) {\n  this.renderScatterChart(chart, \"bubble\");\n};\n\ndefaultExport$2.prototype.destroy = function destroy (chart) {\n  if (chart.chart) {\n    chart.chart.destroy();\n  }\n};\n\ndefaultExport$2.prototype.drawChart = function drawChart (chart, type, data, options) {\n  this.destroy(chart);\n  if (chart.destroyed) { return; }\n\n  var chartOptions = {\n    type: type,\n    data: data,\n    options: options\n  };\n\n  if (chart.options.code) {\n    window.console.log(\"new Chart(ctx, \" + JSON.stringify(chartOptions) + \");\");\n  }\n\n  chart.element.innerHTML = \"<canvas></canvas>\";\n  var ctx = chart.element.getElementsByTagName(\"CANVAS\")[0];\n  chart.chart = new this.library(ctx, chartOptions);\n};\n\nvar defaultOptions$1 = {\n  chart: {},\n  xAxis: {\n    title: {\n      text: null\n    },\n    labels: {\n      style: {\n        fontSize: \"12px\"\n      }\n    }\n  },\n  yAxis: {\n    title: {\n      text: null\n    },\n    labels: {\n      style: {\n        fontSize: \"12px\"\n      }\n    }\n  },\n  title: {\n    text: null\n  },\n  credits: {\n    enabled: false\n  },\n  legend: {\n    borderWidth: 0\n  },\n  tooltip: {\n    style: {\n      fontSize: \"12px\"\n    }\n  },\n  plotOptions: {\n    areaspline: {},\n    area: {},\n    series: {\n      marker: {}\n    }\n  },\n  time: {\n    useUTC: false\n  }\n};\n\nfunction hideLegend$1(options, legend, hideLegend) {\n  if (legend !== undefined) {\n    options.legend.enabled = !!legend;\n    if (legend && legend !== true) {\n      if (legend === \"top\" || legend === \"bottom\") {\n        options.legend.verticalAlign = legend;\n      } else {\n        options.legend.layout = \"vertical\";\n        options.legend.verticalAlign = \"middle\";\n        options.legend.align = legend;\n      }\n    }\n  } else if (hideLegend) {\n    options.legend.enabled = false;\n  }\n}\n\nfunction setTitle$1(options, title) {\n  options.title.text = title;\n}\n\nfunction setMin$1(options, min) {\n  options.yAxis.min = min;\n}\n\nfunction setMax$1(options, max) {\n  options.yAxis.max = max;\n}\n\nfunction setStacked$1(options, stacked) {\n  var stackedValue = stacked ? (stacked === true ? \"normal\" : stacked) : null;\n  options.plotOptions.series.stacking = stackedValue;\n  options.plotOptions.area.stacking = stackedValue;\n  options.plotOptions.areaspline.stacking = stackedValue;\n}\n\nfunction setXtitle$1(options, title) {\n  options.xAxis.title.text = title;\n}\n\nfunction setYtitle$1(options, title) {\n  options.yAxis.title.text = title;\n}\n\nvar jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n\nfunction setFormatOptions(chart, options, chartType) {\n  var formatOptions = {\n    prefix: chart.options.prefix,\n    suffix: chart.options.suffix,\n    thousands: chart.options.thousands,\n    decimal: chart.options.decimal,\n    precision: chart.options.precision,\n    round: chart.options.round,\n    zeros: chart.options.zeros\n  };\n\n  // skip when axis is an array (like with min/max)\n  if (chartType !== \"pie\" && !isArray(options.yAxis) && !options.yAxis.labels.formatter) {\n    options.yAxis.labels.formatter = function () {\n      return formatValue(\"\", this.value, formatOptions);\n    };\n  }\n\n  if (!options.tooltip.pointFormatter && !options.tooltip.pointFormat) {\n    options.tooltip.pointFormatter = function () {\n      return '<span style=\"color:' + this.color + '\">\\u25CF</span> ' + formatValue(this.series.name + ': <b>', this.y, formatOptions) + '</b><br/>';\n    };\n  }\n}\n\nvar defaultExport$1 = function defaultExport(library) {\n  this.name = \"highcharts\";\n  this.library = library;\n};\n\ndefaultExport$1.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n  chartType = chartType || \"spline\";\n  var chartOptions = {};\n  if (chartType === \"areaspline\") {\n    chartOptions = {\n      plotOptions: {\n        areaspline: {\n          stacking: \"normal\"\n        },\n        area: {\n          stacking: \"normal\"\n        },\n        series: {\n          marker: {\n            enabled: false\n          }\n        }\n      }\n    };\n  }\n\n  if (chart.options.curve === false) {\n    if (chartType === \"areaspline\") {\n      chartType = \"area\";\n    } else if (chartType === \"spline\") {\n      chartType = \"line\";\n    }\n  }\n\n  var options = jsOptions$1(chart, chart.options, chartOptions);\n  if (chart.xtype === \"number\") {\n    options.xAxis.type = options.xAxis.type || \"linear\";\n  } else {\n    options.xAxis.type = chart.xtype === \"string\" ? \"category\" : \"datetime\";\n  }\n  if (!options.chart.type) {\n    options.chart.type = chartType;\n  }\n  setFormatOptions(chart, options, chartType);\n\n  var series = chart.data;\n  for (var i = 0; i < series.length; i++) {\n    series[i].name = series[i].name || \"Value\";\n    var data = series[i].data;\n    if (chart.xtype === \"datetime\") {\n      for (var j = 0; j < data.length; j++) {\n        data[j][0] = data[j][0].getTime();\n      }\n    } else if (chart.xtype === \"number\") {\n      data.sort(sortByNumberSeries);\n    }\n    series[i].marker = {symbol: \"circle\"};\n    if (chart.options.points === false) {\n      series[i].marker.enabled = false;\n    }\n  }\n\n  this.drawChart(chart, series, options);\n};\n\ndefaultExport$1.prototype.renderScatterChart = function renderScatterChart (chart) {\n  var options = jsOptions$1(chart, chart.options, {});\n  options.chart.type = \"scatter\";\n  this.drawChart(chart, chart.data, options);\n};\n\ndefaultExport$1.prototype.renderPieChart = function renderPieChart (chart) {\n  var chartOptions = merge(defaultOptions$1, {});\n\n  if (chart.options.colors) {\n    chartOptions.colors = chart.options.colors;\n  }\n  if (chart.options.donut) {\n    chartOptions.plotOptions = {pie: {innerSize: \"50%\"}};\n  }\n\n  if (\"legend\" in chart.options) {\n    hideLegend$1(chartOptions, chart.options.legend);\n  }\n\n  if (chart.options.title) {\n    setTitle$1(chartOptions, chart.options.title);\n  }\n\n  var options = merge(chartOptions, chart.options.library || {});\n  setFormatOptions(chart, options, \"pie\");\n  var series = [{\n    type: \"pie\",\n    name: chart.options.label || \"Value\",\n    data: chart.data\n  }];\n\n  this.drawChart(chart, series, options);\n};\n\ndefaultExport$1.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n  chartType = chartType || \"column\";\n  var series = chart.data;\n  var options = jsOptions$1(chart, chart.options);\n  var rows = [];\n  var categories = [];\n  options.chart.type = chartType;\n  setFormatOptions(chart, options, chartType);\n\n  for (var i = 0; i < series.length; i++) {\n    var s = series[i];\n\n    for (var j = 0; j < s.data.length; j++) {\n      var d = s.data[j];\n      if (!rows[d[0]]) {\n        rows[d[0]] = new Array(series.length);\n        categories.push(d[0]);\n      }\n      rows[d[0]][i] = d[1];\n    }\n  }\n\n  if (chart.xtype === \"number\") {\n    categories.sort(sortByNumber);\n  }\n\n  options.xAxis.categories = categories;\n\n  var newSeries = [];\n  for (var i$1 = 0; i$1 < series.length; i$1++) {\n    var d$1 = [];\n    for (var j$1 = 0; j$1 < categories.length; j$1++) {\n      d$1.push(rows[categories[j$1]][i$1] || 0);\n    }\n\n    var d2 = {\n      name: series[i$1].name || \"Value\",\n      data: d$1\n    };\n    if (series[i$1].stack) {\n      d2.stack = series[i$1].stack;\n    }\n\n    newSeries.push(d2);\n  }\n\n  this.drawChart(chart, newSeries, options);\n};\n\ndefaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {\n  this.renderColumnChart(chart, \"bar\");\n};\n\ndefaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {\n  this.renderLineChart(chart, \"areaspline\");\n};\n\ndefaultExport$1.prototype.destroy = function destroy (chart) {\n  if (chart.chart) {\n    chart.chart.destroy();\n  }\n};\n\ndefaultExport$1.prototype.drawChart = function drawChart (chart, data, options) {\n  this.destroy(chart);\n  if (chart.destroyed) { return; }\n\n  options.chart.renderTo = chart.element.id;\n  options.series = data;\n\n  if (chart.options.code) {\n    window.console.log(\"new Highcharts.Chart(\" + JSON.stringify(options) + \");\");\n  }\n\n  chart.chart = new this.library.Chart(options);\n};\n\nvar loaded = {};\nvar callbacks = [];\n\n// Set chart options\nvar defaultOptions = {\n  chartArea: {},\n  fontName: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\",\n  pointSize: 6,\n  legend: {\n    textStyle: {\n      fontSize: 12,\n      color: \"#444\"\n    },\n    alignment: \"center\",\n    position: \"right\"\n  },\n  curveType: \"function\",\n  hAxis: {\n    textStyle: {\n      color: \"#666\",\n      fontSize: 12\n    },\n    titleTextStyle: {},\n    gridlines: {\n      color: \"transparent\"\n    },\n    baselineColor: \"#ccc\",\n    viewWindow: {}\n  },\n  vAxis: {\n    textStyle: {\n      color: \"#666\",\n      fontSize: 12\n    },\n    titleTextStyle: {},\n    baselineColor: \"#ccc\",\n    viewWindow: {}\n  },\n  tooltip: {\n    textStyle: {\n      color: \"#666\",\n      fontSize: 12\n    }\n  }\n};\n\nfunction hideLegend(options, legend, hideLegend) {\n  if (legend !== undefined) {\n    var position;\n    if (!legend) {\n      position = \"none\";\n    } else if (legend === true) {\n      position = \"right\";\n    } else {\n      position = legend;\n    }\n    options.legend.position = position;\n  } else if (hideLegend) {\n    options.legend.position = \"none\";\n  }\n}\n\nfunction setTitle(options, title) {\n  options.title = title;\n  options.titleTextStyle = {color: \"#333\", fontSize: \"20px\"};\n}\n\nfunction setMin(options, min) {\n  options.vAxis.viewWindow.min = min;\n}\n\nfunction setMax(options, max) {\n  options.vAxis.viewWindow.max = max;\n}\n\nfunction setBarMin(options, min) {\n  options.hAxis.viewWindow.min = min;\n}\n\nfunction setBarMax(options, max) {\n  options.hAxis.viewWindow.max = max;\n}\n\nfunction setStacked(options, stacked) {\n  options.isStacked = stacked || false;\n}\n\nfunction setXtitle(options, title) {\n  options.hAxis.title = title;\n  options.hAxis.titleTextStyle.italic = false;\n}\n\nfunction setYtitle(options, title) {\n  options.vAxis.title = title;\n  options.vAxis.titleTextStyle.italic = false;\n}\n\nvar jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n\nfunction resize(callback) {\n  if (window.attachEvent) {\n    window.attachEvent(\"onresize\", callback);\n  } else if (window.addEventListener) {\n    window.addEventListener(\"resize\", callback, true);\n  }\n  callback();\n}\n\nvar defaultExport = function defaultExport(library) {\n  this.name = \"google\";\n  this.library = library;\n};\n\ndefaultExport.prototype.renderLineChart = function renderLineChart (chart) {\n    var this$1$1 = this;\n\n  this.waitForLoaded(chart, function () {\n    var chartOptions = {};\n\n    if (chart.options.curve === false) {\n      chartOptions.curveType = \"none\";\n    }\n\n    if (chart.options.points === false) {\n      chartOptions.pointSize = 0;\n    }\n\n    var options = jsOptions(chart, chart.options, chartOptions);\n    var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n    this$1$1.drawChart(chart, \"LineChart\", data, options);\n  });\n};\n\ndefaultExport.prototype.renderPieChart = function renderPieChart (chart) {\n    var this$1$1 = this;\n\n  this.waitForLoaded(chart, function () {\n    var chartOptions = {\n      chartArea: {\n        top: \"10%\",\n        height: \"80%\"\n      },\n      legend: {}\n    };\n    if (chart.options.colors) {\n      chartOptions.colors = chart.options.colors;\n    }\n    if (chart.options.donut) {\n      chartOptions.pieHole = 0.5;\n    }\n    if (\"legend\" in chart.options) {\n      hideLegend(chartOptions, chart.options.legend);\n    }\n    if (chart.options.title) {\n      setTitle(chartOptions, chart.options.title);\n    }\n    var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n    var data = new this$1$1.library.visualization.DataTable();\n    data.addColumn(\"string\", \"\");\n    data.addColumn(\"number\", \"Value\");\n    data.addRows(chart.data);\n\n    this$1$1.drawChart(chart, \"PieChart\", data, options);\n  });\n};\n\ndefaultExport.prototype.renderColumnChart = function renderColumnChart (chart) {\n    var this$1$1 = this;\n\n  this.waitForLoaded(chart, function () {\n    var options = jsOptions(chart, chart.options);\n    var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n    this$1$1.drawChart(chart, \"ColumnChart\", data, options);\n  });\n};\n\ndefaultExport.prototype.renderBarChart = function renderBarChart (chart) {\n    var this$1$1 = this;\n\n  this.waitForLoaded(chart, function () {\n    var chartOptions = {\n      hAxis: {\n        gridlines: {\n          color: \"#ccc\"\n        }\n      }\n    };\n    var options = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options, chartOptions);\n    var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n    this$1$1.drawChart(chart, \"BarChart\", data, options);\n  });\n};\n\ndefaultExport.prototype.renderAreaChart = function renderAreaChart (chart) {\n    var this$1$1 = this;\n\n  this.waitForLoaded(chart, function () {\n    var chartOptions = {\n      isStacked: true,\n      pointSize: 0,\n      areaOpacity: 0.5\n    };\n\n    var options = jsOptions(chart, chart.options, chartOptions);\n    var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n    this$1$1.drawChart(chart, \"AreaChart\", data, options);\n  });\n};\n\ndefaultExport.prototype.renderGeoChart = function renderGeoChart (chart) {\n    var this$1$1 = this;\n\n  this.waitForLoaded(chart, \"geochart\", function () {\n    var chartOptions = {\n      legend: \"none\",\n      colorAxis: {\n        colors: chart.options.colors || [\"#f6c7b6\", \"#ce502d\"]\n      }\n    };\n    var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n    var data = new this$1$1.library.visualization.DataTable();\n    data.addColumn(\"string\", \"\");\n    data.addColumn(\"number\", chart.options.label || \"Value\");\n    data.addRows(chart.data);\n\n    this$1$1.drawChart(chart, \"GeoChart\", data, options);\n  });\n};\n\ndefaultExport.prototype.renderScatterChart = function renderScatterChart (chart) {\n    var this$1$1 = this;\n\n  this.waitForLoaded(chart, function () {\n    var chartOptions = {};\n    var options = jsOptions(chart, chart.options, chartOptions);\n\n    var series = chart.data;\n    var rows2 = [];\n    for (var i = 0; i < series.length; i++) {\n      series[i].name = series[i].name || \"Value\";\n      var d = series[i].data;\n      for (var j = 0; j < d.length; j++) {\n        var row = new Array(series.length + 1);\n        row[0] = d[j][0];\n        row[i + 1] = d[j][1];\n        rows2.push(row);\n      }\n    }\n\n    var data = new this$1$1.library.visualization.DataTable();\n    data.addColumn(\"number\", \"\");\n    for (var i$1 = 0; i$1 < series.length; i$1++) {\n      data.addColumn(\"number\", series[i$1].name);\n    }\n    data.addRows(rows2);\n\n    this$1$1.drawChart(chart, \"ScatterChart\", data, options);\n  });\n};\n\ndefaultExport.prototype.renderTimeline = function renderTimeline (chart) {\n    var this$1$1 = this;\n\n  this.waitForLoaded(chart, \"timeline\", function () {\n    var chartOptions = {\n      legend: \"none\"\n    };\n\n    if (chart.options.colors) {\n      chartOptions.colors = chart.options.colors;\n    }\n    var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n    var data = new this$1$1.library.visualization.DataTable();\n    data.addColumn({type: \"string\", id: \"Name\"});\n    data.addColumn({type: \"date\", id: \"Start\"});\n    data.addColumn({type: \"date\", id: \"End\"});\n    data.addRows(chart.data);\n\n    chart.element.style.lineHeight = \"normal\";\n\n    this$1$1.drawChart(chart, \"Timeline\", data, options);\n  });\n};\n\n// TODO remove resize events\ndefaultExport.prototype.destroy = function destroy (chart) {\n  if (chart.chart) {\n    chart.chart.clearChart();\n  }\n};\n\ndefaultExport.prototype.drawChart = function drawChart (chart, type, data, options) {\n  this.destroy(chart);\n  if (chart.destroyed) { return; }\n\n  if (chart.options.code) {\n    window.console.log(\"var data = new google.visualization.DataTable(\" + data.toJSON() + \");\\nvar chart = new google.visualization.\" + type + \"(element);\\nchart.draw(data, \" + JSON.stringify(options) + \");\");\n  }\n\n  chart.chart = new this.library.visualization[type](chart.element);\n  resize(function () {\n    chart.chart.draw(data, options);\n  });\n};\n\ndefaultExport.prototype.waitForLoaded = function waitForLoaded (chart, pack, callback) {\n    var this$1$1 = this;\n\n  if (!callback) {\n    callback = pack;\n    pack = \"corechart\";\n  }\n\n  callbacks.push({pack: pack, callback: callback});\n\n  if (loaded[pack]) {\n    this.runCallbacks();\n  } else {\n    loaded[pack] = true;\n\n    // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI\n    var loadOptions = {\n      packages: [pack],\n      callback: function () { this$1$1.runCallbacks(); }\n    };\n    var config = chart.__config();\n    if (config.language) {\n      loadOptions.language = config.language;\n    }\n    if (pack === \"geochart\" && config.mapsApiKey) {\n      loadOptions.mapsApiKey = config.mapsApiKey;\n    }\n\n    this.library.charts.load(\"current\", loadOptions);\n  }\n};\n\ndefaultExport.prototype.runCallbacks = function runCallbacks () {\n  for (var i = 0; i < callbacks.length; i++) {\n    var cb = callbacks[i];\n    var call = this.library.visualization && ((cb.pack === \"corechart\" && this.library.visualization.LineChart) || (cb.pack === \"timeline\" && this.library.visualization.Timeline) || (cb.pack === \"geochart\" && this.library.visualization.GeoChart));\n    if (call) {\n      cb.callback();\n      callbacks.splice(i, 1);\n      i--;\n    }\n  }\n};\n\n// cant use object as key\ndefaultExport.prototype.createDataTable = function createDataTable (series, columnType) {\n  var rows = [];\n  var sortedLabels = [];\n  for (var i = 0; i < series.length; i++) {\n    var s = series[i];\n    series[i].name = series[i].name || \"Value\";\n\n    for (var j = 0; j < s.data.length; j++) {\n      var d = s.data[j];\n      var key = columnType === \"datetime\" ? d[0].getTime() : d[0];\n      if (!rows[key]) {\n        rows[key] = new Array(series.length);\n        sortedLabels.push(key);\n      }\n      rows[key][i] = d[1];\n    }\n  }\n\n  var rows2 = [];\n  var values = [];\n  for (var j$1 = 0; j$1 < sortedLabels.length; j$1++) {\n    var i$1 = sortedLabels[j$1];\n    var value = (void 0);\n    if (columnType === \"datetime\") {\n      value = new Date(i$1);\n      values.push(value);\n    } else {\n      value = i$1;\n    }\n    rows2.push([value].concat(rows[i$1]));\n  }\n\n  var day = true;\n  if (columnType === \"datetime\") {\n    rows2.sort(sortByTime);\n\n    var timeUnit = calculateTimeUnit(values, true);\n    day = isDay(timeUnit);\n  } else if (columnType === \"number\") {\n    rows2.sort(sortByNumberSeries);\n\n    for (var i$2 = 0; i$2 < rows2.length; i$2++) {\n      rows2[i$2][0] = toStr(rows2[i$2][0]);\n    }\n\n    columnType = \"string\";\n  }\n\n  // create datatable\n  var data = new this.library.visualization.DataTable();\n  columnType = columnType === \"datetime\" && day ? \"date\" : columnType;\n  data.addColumn(columnType, \"\");\n  for (var i$3 = 0; i$3 < series.length; i$3++) {\n    data.addColumn(\"number\", series[i$3].name);\n  }\n  data.addRows(rows2);\n\n  return data;\n};\n\nvar adapters = [];\n\nfunction getAdapterType(library) {\n  if (library) {\n    if (library.product === \"Highcharts\") {\n      return defaultExport$1;\n    } else if (library.charts) {\n      return defaultExport;\n    } else if (isFunction(library)) {\n      return defaultExport$2;\n    }\n  }\n  throw new Error(\"Unknown adapter\");\n}\n\nfunction addAdapter(library) {\n  var adapterType = getAdapterType(library);\n\n  for (var i = 0; i < adapters.length; i++) {\n    if (adapters[i].library === library) {\n      return;\n    }\n  }\n\n  adapters.push(new adapterType(library));\n}\n\nfunction loadAdapters() {\n  if (\"Chart\" in window) {\n    addAdapter(window.Chart);\n  }\n\n  if (\"Highcharts\" in window) {\n    addAdapter(window.Highcharts);\n  }\n\n  if (window.google && window.google.charts) {\n    addAdapter(window.google);\n  }\n}\n\n// TODO remove chartType if cross-browser way\n// to get the name of the chart class\nfunction callAdapter(chartType, chart) {\n  var fnName = \"render\" + chartType;\n  var adapterName = chart.options.adapter;\n\n  loadAdapters();\n\n  for (var i = 0; i < adapters.length; i++) {\n    var adapter = adapters[i];\n    if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {\n      chart.adapter = adapter.name;\n      chart.__adapterObject = adapter;\n      return adapter[fnName](chart);\n    }\n  }\n\n  if (adapters.length > 0) {\n    throw new Error(\"No charting library found for \" + chartType);\n  } else {\n    throw new Error(\"No charting libraries found - be sure to include one before your charts\");\n  }\n}\n\nvar Chartkick = {\n  charts: {},\n  configure: function (options) {\n    for (var key in options) {\n      if (Object.prototype.hasOwnProperty.call(options, key)) {\n        Chartkick.config[key] = options[key];\n      }\n    }\n  },\n  setDefaultOptions: function (opts) {\n    Chartkick.options = opts;\n  },\n  eachChart: function (callback) {\n    for (var chartId in Chartkick.charts) {\n      if (Object.prototype.hasOwnProperty.call(Chartkick.charts, chartId)) {\n        callback(Chartkick.charts[chartId]);\n      }\n    }\n  },\n  destroyAll: function () {\n    for (var chartId in Chartkick.charts) {\n      if (Object.prototype.hasOwnProperty.call(Chartkick.charts, chartId)) {\n        Chartkick.charts[chartId].destroy();\n        delete Chartkick.charts[chartId];\n      }\n    }\n  },\n  config: {},\n  options: {},\n  adapters: adapters,\n  addAdapter: addAdapter,\n  use: function (adapter) {\n    addAdapter(adapter);\n    return Chartkick;\n  }\n};\n\nfunction formatSeriesBubble(data) {\n  var r = [];\n  for (var i = 0; i < data.length; i++) {\n    r.push([toFloat(data[i][0]), toFloat(data[i][1]), toFloat(data[i][2])]);\n  }\n  return r;\n}\n\n// casts data to proper type\n// sorting is left to adapters\nfunction formatSeriesData(data, keyType) {\n  if (keyType === \"bubble\") {\n    return formatSeriesBubble(data);\n  }\n\n  var keyFunc;\n  if (keyType === \"number\") {\n    keyFunc = toFloat;\n  } else if (keyType === \"datetime\") {\n    keyFunc = toDate;\n  } else {\n    keyFunc = toStr;\n  }\n\n  var r = [];\n  for (var i = 0; i < data.length; i++) {\n    r.push([keyFunc(data[i][0]), toFloat(data[i][1])]);\n  }\n  return r;\n}\n\nfunction detectXType(series, noDatetime, options) {\n  if (dataEmpty(series)) {\n    if ((options.xmin || options.xmax) && (!options.xmin || isDate(options.xmin)) && (!options.xmax || isDate(options.xmax))) {\n      return \"datetime\";\n    } else {\n      return \"number\";\n    }\n  } else if (detectXTypeWithFunction(series, isNumber)) {\n    return \"number\";\n  } else if (!noDatetime && detectXTypeWithFunction(series, isDate)) {\n    return \"datetime\";\n  } else {\n    return \"string\";\n  }\n}\n\nfunction detectXTypeWithFunction(series, func) {\n  for (var i = 0; i < series.length; i++) {\n    var data = toArr(series[i].data);\n    for (var j = 0; j < data.length; j++) {\n      if (!func(data[j][0])) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n// creates a shallow copy of each element of the array\n// elements are expected to be objects\nfunction copySeries(series) {\n  var newSeries = [];\n  for (var i = 0; i < series.length; i++) {\n    var copy = {};\n    for (var j in series[i]) {\n      if (Object.prototype.hasOwnProperty.call(series[i], j)) {\n        copy[j] = series[i][j];\n      }\n    }\n    newSeries.push(copy);\n  }\n  return newSeries;\n}\n\nfunction processSeries(chart, keyType, noDatetime) {\n  var opts = chart.options;\n  var series = chart.rawData;\n\n  // see if one series or multiple\n  chart.singleSeriesFormat = !isArray(series) || !isPlainObject(series[0]);\n  if (chart.singleSeriesFormat) {\n    series = [{name: opts.label, data: series}];\n  }\n\n  // convert to array\n  // must come before dataEmpty check\n  series = copySeries(series);\n  for (var i = 0; i < series.length; i++) {\n    series[i].data = toArr(series[i].data);\n  }\n\n  chart.xtype = keyType || (opts.discrete ? \"string\" : detectXType(series, noDatetime, opts));\n\n  // right format\n  for (var i$1 = 0; i$1 < series.length; i$1++) {\n    series[i$1].data = formatSeriesData(series[i$1].data, chart.xtype);\n  }\n\n  return series;\n}\n\nfunction processSimple(chart) {\n  var perfectData = toArr(chart.rawData);\n  for (var i = 0; i < perfectData.length; i++) {\n    perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n  }\n  return perfectData;\n}\n\nfunction dataEmpty(data, chartType) {\n  if (chartType === \"PieChart\" || chartType === \"GeoChart\" || chartType === \"Timeline\") {\n    return data.length === 0;\n  } else {\n    for (var i = 0; i < data.length; i++) {\n      if (data[i].data.length > 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\nfunction addDownloadButton(chart) {\n  var download = chart.options.download;\n  if (download === true) {\n    download = {};\n  } else if (typeof download === \"string\") {\n    download = {filename: download};\n  }\n\n  var link = document.createElement(\"a\");\n  link.download = download.filename || \"chart.png\";\n  link.style.position = \"absolute\";\n  link.style.top = \"20px\";\n  link.style.right = \"20px\";\n  link.style.zIndex = 1000;\n  link.style.lineHeight = \"20px\";\n  link.target = \"_blank\"; // for safari\n\n  var image = document.createElement(\"img\");\n  // icon from Font Awesome, modified to set fill color\n  var svg = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path fill=\\\"#CCCCCC\\\" d=\\\"M344 240h-56L287.1 152c0-13.25-10.75-24-24-24h-16C234.7 128 223.1 138.8 223.1 152L224 240h-56c-9.531 0-18.16 5.656-22 14.38C142.2 263.1 143.9 273.3 150.4 280.3l88.75 96C243.7 381.2 250.1 384 256.8 384c7.781-.3125 13.25-2.875 17.75-7.844l87.25-96c6.406-7.031 8.031-17.19 4.188-25.88S353.5 240 344 240zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\\\"/></svg>\";\n  image.src = \"data:image/svg+xml;utf8,\" + (encodeURIComponent(svg));\n  image.alt = \"Download\";\n  image.style.width = \"20px\";\n  image.style.height = \"20px\";\n  image.style.border = \"none\";\n  link.appendChild(image);\n\n  var element = chart.element;\n  element.style.position = \"relative\";\n\n  chart.__downloadAttached = true;\n\n  // mouseenter\n  chart.__enterEvent = element.addEventListener(\"mouseover\", function (e) {\n    var related = e.relatedTarget;\n    // check download option again to ensure it wasn't changed\n    if ((!related || (related !== this && !this.contains(related))) && chart.options.download) {\n      link.href = chart.toImage(download);\n      element.appendChild(link);\n    }\n  });\n\n  // mouseleave\n  chart.__leaveEvent = element.addEventListener(\"mouseout\", function (e) {\n    var related = e.relatedTarget;\n    if (!related || (related !== this && !this.contains(related))) {\n      if (link.parentNode) {\n        link.parentNode.removeChild(link);\n      }\n    }\n  });\n}\n\nvar pendingRequests = [];\nvar runningRequests = 0;\nvar maxRequests = 4;\n\nfunction pushRequest(url, success, error) {\n  pendingRequests.push([url, success, error]);\n  runNext();\n}\n\nfunction runNext() {\n  if (runningRequests < maxRequests) {\n    var request = pendingRequests.shift();\n    if (request) {\n      runningRequests++;\n      getJSON(request[0], request[1], request[2]);\n      runNext();\n    }\n  }\n}\n\nfunction requestComplete() {\n  runningRequests--;\n  runNext();\n}\n\nfunction getJSON(url, success, error) {\n  var xhr = new XMLHttpRequest();\n  xhr.open(\"GET\", url, true);\n  xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n  xhr.onload = function () {\n    requestComplete();\n    if (xhr.status === 200) {\n      success(JSON.parse(xhr.responseText));\n    } else {\n      error(xhr.statusText);\n    }\n  };\n  xhr.send();\n}\n\n// helpers\n\nfunction setText(element, text) {\n  element.textContent = text;\n}\n\n// TODO remove prefix for all messages\nfunction chartError(element, message, noPrefix) {\n  if (!noPrefix) {\n    message = \"Error Loading Chart: \" + message;\n  }\n  setText(element, message);\n  element.style.color = \"#ff0000\";\n}\n\nfunction errorCatcher(chart) {\n  try {\n    chart.__render();\n  } catch (err) {\n    chartError(chart.element, err.message);\n    throw err;\n  }\n}\n\nfunction fetchDataSource(chart, dataSource, showLoading) {\n  // only show loading message for urls and callbacks\n  if (showLoading && chart.options.loading && (typeof dataSource === \"string\" || typeof dataSource === \"function\")) {\n    setText(chart.element, chart.options.loading);\n  }\n\n  if (typeof dataSource === \"string\") {\n    pushRequest(dataSource, function (data) {\n      chart.rawData = data;\n      errorCatcher(chart);\n    }, function (message) {\n      chartError(chart.element, message);\n    });\n  } else if (typeof dataSource === \"function\") {\n    try {\n      dataSource(function (data) {\n        chart.rawData = data;\n        errorCatcher(chart);\n      }, function (message) {\n        chartError(chart.element, message, true);\n      });\n    } catch (err) {\n      chartError(chart.element, err, true);\n    }\n  } else {\n    chart.rawData = dataSource;\n    errorCatcher(chart);\n  }\n}\n\nfunction renderChart(chartType, chart) {\n  if (dataEmpty(chart.data, chartType)) {\n    var message = chart.options.empty || (chart.options.messages && chart.options.messages.empty) || \"No data\";\n    setText(chart.element, message);\n  } else {\n    callAdapter(chartType, chart);\n    // TODO add downloadSupported method to adapter\n    if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n      addDownloadButton(chart);\n    }\n  }\n}\n\nfunction getElement(element) {\n  if (typeof element === \"string\") {\n    var elementId = element;\n    element = document.getElementById(element);\n    if (!element) {\n      throw new Error(\"No element with id \" + elementId);\n    }\n  }\n  return element;\n}\n\n// define classes\n\nvar Chart = function Chart(element, dataSource, options) {\n  this.element = getElement(element);\n  this.options = merge(Chartkick.options, options || {});\n  this.dataSource = dataSource;\n\n  // TODO handle charts without an id for eachChart and destroyAll\n  if (this.element.id) {\n    Chartkick.charts[this.element.id] = this;\n  }\n\n  fetchDataSource(this, dataSource, true);\n\n  if (this.options.refresh) {\n    this.startRefresh();\n  }\n};\n\nChart.prototype.getElement = function getElement () {\n  return this.element;\n};\n\nChart.prototype.getDataSource = function getDataSource () {\n  return this.dataSource;\n};\n\nChart.prototype.getData = function getData () {\n  return this.data;\n};\n\nChart.prototype.getOptions = function getOptions () {\n  return this.options;\n};\n\nChart.prototype.getChartObject = function getChartObject () {\n  return this.chart;\n};\n\nChart.prototype.getAdapter = function getAdapter () {\n  return this.adapter;\n};\n\nChart.prototype.updateData = function updateData (dataSource, options) {\n  this.dataSource = dataSource;\n  if (options) {\n    this.__updateOptions(options);\n  }\n  fetchDataSource(this, dataSource, true);\n};\n\nChart.prototype.setOptions = function setOptions (options) {\n  this.__updateOptions(options);\n  this.redraw();\n};\n\nChart.prototype.redraw = function redraw () {\n  fetchDataSource(this, this.rawData);\n};\n\nChart.prototype.refreshData = function refreshData () {\n  if (typeof this.dataSource === \"string\") {\n    // prevent browser from caching\n    var sep = this.dataSource.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n    var url = this.dataSource + sep + \"_=\" + (new Date()).getTime();\n    fetchDataSource(this, url);\n  } else if (typeof this.dataSource === \"function\") {\n    fetchDataSource(this, this.dataSource);\n  }\n};\n\nChart.prototype.startRefresh = function startRefresh () {\n    var this$1$1 = this;\n\n  var refresh = this.options.refresh;\n\n  if (refresh && typeof this.dataSource !== \"string\" && typeof this.dataSource !== \"function\") {\n    throw new Error(\"Data source must be a URL or callback for refresh\");\n  }\n\n  if (!this.intervalId) {\n    if (refresh) {\n      this.intervalId = setInterval(function () {\n        this$1$1.refreshData();\n      }, refresh * 1000);\n    } else {\n      throw new Error(\"No refresh interval\");\n    }\n  }\n};\n\nChart.prototype.stopRefresh = function stopRefresh () {\n  if (this.intervalId) {\n    clearInterval(this.intervalId);\n    this.intervalId = null;\n  }\n};\n\nChart.prototype.toImage = function toImage (download) {\n  // TODO move logic to adapter\n  if (this.adapter === \"chartjs\") {\n    if (download && download.background && download.background !== \"transparent\") {\n      // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color\n      var canvas = this.chart.canvas;\n      var ctx = this.chart.ctx;\n      var tmpCanvas = document.createElement(\"canvas\");\n      var tmpCtx = tmpCanvas.getContext(\"2d\");\n      tmpCanvas.width = ctx.canvas.width;\n      tmpCanvas.height = ctx.canvas.height;\n      tmpCtx.fillStyle = download.background;\n      tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);\n      tmpCtx.drawImage(canvas, 0, 0);\n      return tmpCanvas.toDataURL(\"image/png\");\n    } else {\n      return this.chart.toBase64Image();\n    }\n  } else {\n    throw new Error(\"Feature only available for Chart.js\");\n  }\n};\n\nChart.prototype.destroy = function destroy () {\n  this.destroyed = true;\n  this.stopRefresh();\n\n  if (this.__adapterObject) {\n    this.__adapterObject.destroy(this);\n  }\n\n  if (this.__enterEvent) {\n    this.element.removeEventListener(\"mouseover\", this.__enterEvent);\n  }\n\n  if (this.__leaveEvent) {\n    this.element.removeEventListener(\"mouseout\", this.__leaveEvent);\n  }\n};\n\nChart.prototype.__updateOptions = function __updateOptions (options) {\n  var updateRefresh = options.refresh && options.refresh !== this.options.refresh;\n  this.options = merge(Chartkick.options, options);\n  if (updateRefresh) {\n    this.stopRefresh();\n    this.startRefresh();\n  }\n};\n\nChart.prototype.__render = function __render () {\n  this.data = this.__processData();\n  renderChart(this.__chartName(), this);\n};\n\nChart.prototype.__config = function __config () {\n  return Chartkick.config;\n};\n\nvar LineChart = /*@__PURE__*/(function (Chart) {\n  function LineChart () {\n    Chart.apply(this, arguments);\n  }\n\n  if ( Chart ) LineChart.__proto__ = Chart;\n  LineChart.prototype = Object.create( Chart && Chart.prototype );\n  LineChart.prototype.constructor = LineChart;\n\n  LineChart.prototype.__processData = function __processData () {\n    return processSeries(this);\n  };\n\n  LineChart.prototype.__chartName = function __chartName () {\n    return \"LineChart\";\n  };\n\n  return LineChart;\n}(Chart));\n\nvar PieChart = /*@__PURE__*/(function (Chart) {\n  function PieChart () {\n    Chart.apply(this, arguments);\n  }\n\n  if ( Chart ) PieChart.__proto__ = Chart;\n  PieChart.prototype = Object.create( Chart && Chart.prototype );\n  PieChart.prototype.constructor = PieChart;\n\n  PieChart.prototype.__processData = function __processData () {\n    return processSimple(this);\n  };\n\n  PieChart.prototype.__chartName = function __chartName () {\n    return \"PieChart\";\n  };\n\n  return PieChart;\n}(Chart));\n\nvar ColumnChart = /*@__PURE__*/(function (Chart) {\n  function ColumnChart () {\n    Chart.apply(this, arguments);\n  }\n\n  if ( Chart ) ColumnChart.__proto__ = Chart;\n  ColumnChart.prototype = Object.create( Chart && Chart.prototype );\n  ColumnChart.prototype.constructor = ColumnChart;\n\n  ColumnChart.prototype.__processData = function __processData () {\n    return processSeries(this, null, true);\n  };\n\n  ColumnChart.prototype.__chartName = function __chartName () {\n    return \"ColumnChart\";\n  };\n\n  return ColumnChart;\n}(Chart));\n\nvar BarChart = /*@__PURE__*/(function (Chart) {\n  function BarChart () {\n    Chart.apply(this, arguments);\n  }\n\n  if ( Chart ) BarChart.__proto__ = Chart;\n  BarChart.prototype = Object.create( Chart && Chart.prototype );\n  BarChart.prototype.constructor = BarChart;\n\n  BarChart.prototype.__processData = function __processData () {\n    return processSeries(this, null, true);\n  };\n\n  BarChart.prototype.__chartName = function __chartName () {\n    return \"BarChart\";\n  };\n\n  return BarChart;\n}(Chart));\n\nvar AreaChart = /*@__PURE__*/(function (Chart) {\n  function AreaChart () {\n    Chart.apply(this, arguments);\n  }\n\n  if ( Chart ) AreaChart.__proto__ = Chart;\n  AreaChart.prototype = Object.create( Chart && Chart.prototype );\n  AreaChart.prototype.constructor = AreaChart;\n\n  AreaChart.prototype.__processData = function __processData () {\n    return processSeries(this);\n  };\n\n  AreaChart.prototype.__chartName = function __chartName () {\n    return \"AreaChart\";\n  };\n\n  return AreaChart;\n}(Chart));\n\nvar GeoChart = /*@__PURE__*/(function (Chart) {\n  function GeoChart () {\n    Chart.apply(this, arguments);\n  }\n\n  if ( Chart ) GeoChart.__proto__ = Chart;\n  GeoChart.prototype = Object.create( Chart && Chart.prototype );\n  GeoChart.prototype.constructor = GeoChart;\n\n  GeoChart.prototype.__processData = function __processData () {\n    return processSimple(this);\n  };\n\n  GeoChart.prototype.__chartName = function __chartName () {\n    return \"GeoChart\";\n  };\n\n  return GeoChart;\n}(Chart));\n\nvar ScatterChart = /*@__PURE__*/(function (Chart) {\n  function ScatterChart () {\n    Chart.apply(this, arguments);\n  }\n\n  if ( Chart ) ScatterChart.__proto__ = Chart;\n  ScatterChart.prototype = Object.create( Chart && Chart.prototype );\n  ScatterChart.prototype.constructor = ScatterChart;\n\n  ScatterChart.prototype.__processData = function __processData () {\n    return processSeries(this, \"number\");\n  };\n\n  ScatterChart.prototype.__chartName = function __chartName () {\n    return \"ScatterChart\";\n  };\n\n  return ScatterChart;\n}(Chart));\n\nvar BubbleChart = /*@__PURE__*/(function (Chart) {\n  function BubbleChart () {\n    Chart.apply(this, arguments);\n  }\n\n  if ( Chart ) BubbleChart.__proto__ = Chart;\n  BubbleChart.prototype = Object.create( Chart && Chart.prototype );\n  BubbleChart.prototype.constructor = BubbleChart;\n\n  BubbleChart.prototype.__processData = function __processData () {\n    return processSeries(this, \"bubble\");\n  };\n\n  BubbleChart.prototype.__chartName = function __chartName () {\n    return \"BubbleChart\";\n  };\n\n  return BubbleChart;\n}(Chart));\n\nvar Timeline = /*@__PURE__*/(function (Chart) {\n  function Timeline () {\n    Chart.apply(this, arguments);\n  }\n\n  if ( Chart ) Timeline.__proto__ = Chart;\n  Timeline.prototype = Object.create( Chart && Chart.prototype );\n  Timeline.prototype.constructor = Timeline;\n\n  Timeline.prototype.__processData = function __processData () {\n    var data = this.rawData;\n    for (var i = 0; i < data.length; i++) {\n      data[i][1] = toDate(data[i][1]);\n      data[i][2] = toDate(data[i][2]);\n    }\n    return data;\n  };\n\n  Timeline.prototype.__chartName = function __chartName () {\n    return \"Timeline\";\n  };\n\n  return Timeline;\n}(Chart));\n\nChartkick.LineChart = LineChart;\nChartkick.PieChart = PieChart;\nChartkick.ColumnChart = ColumnChart;\nChartkick.BarChart = BarChart;\nChartkick.AreaChart = AreaChart;\nChartkick.GeoChart = GeoChart;\nChartkick.ScatterChart = ScatterChart;\nChartkick.BubbleChart = BubbleChart;\nChartkick.Timeline = Timeline;\n\n// not ideal, but allows for simpler integration\nif (typeof window !== \"undefined\" && !window.Chartkick) {\n  window.Chartkick = Chartkick;\n\n  // clean up previous charts before Turbolinks loads new page\n  document.addEventListener(\"turbolinks:before-render\", function () {\n    if (Chartkick.config.autoDestroy !== false) {\n      Chartkick.destroyAll();\n    }\n  });\n\n  // clean up previous charts before Turbo loads new page\n  document.addEventListener(\"turbo:before-render\", function () {\n    if (Chartkick.config.autoDestroy !== false) {\n      Chartkick.destroyAll();\n    }\n  });\n\n  // use setTimeout so charting library can come later in same JS file\n  setTimeout(function () {\n    window.dispatchEvent(new Event(\"chartkick:load\"));\n  }, 0);\n}\n\n// backwards compatibility for esm require\nChartkick.default = Chartkick;\n\nexport { Chartkick as default };\n"]}