{"version":3,"file":"index.cjs","sources":["../src/utils.ts","src/Charts.js"],"sourcesContent":["import type { ChartType, ChartDataset, DefaultDataPoint } from 'chart.js'\n\nimport type { TChartData, TChartOptions, TypedChartJS } from './types'\n\nimport { SetupContext } from 'vue'\n\nexport enum ChartEmits {\n  ChartRendered = 'chart:rendered',\n  ChartUpdated = 'chart:updated',\n  ChartDestroyed = 'chart:destroyed',\n  LabelsUpdated = 'labels:updated'\n}\n\nexport function chartCreate<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  createChartFunction: (\n    data: TChartData<TType, TData, TLabel>,\n    options: TChartOptions<TType>\n  ) => void,\n  chartData: TChartData<TType, TData, TLabel>,\n  chartOptions: TChartOptions<TType>,\n  context?: SetupContext\n): void {\n  createChartFunction(chartData, chartOptions)\n\n  if (context !== undefined) {\n    context.emit(ChartEmits.ChartRendered)\n  }\n}\n\nexport function chartUpdate<\n  TType extends ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(chart: TypedChartJS<TType, TData, TLabel>, context?: SetupContext): void {\n  chart.update()\n\n  if (context !== undefined) {\n    context.emit(ChartEmits.ChartUpdated)\n  }\n}\n\nexport function chartDestroy<\n  TType extends ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(chart: TypedChartJS<TType, TData, TLabel>, context?: SetupContext): void {\n  chart.destroy()\n\n  if (context !== undefined) {\n    context.emit(ChartEmits.ChartDestroyed)\n  }\n}\n\nexport function getChartData<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  data: TChartData<TType, TData, TLabel>,\n  datasetIdKey: string\n): TChartData<TType, TData, TLabel> {\n  const nextData = {\n    labels: typeof data.labels === 'undefined' ? [] : [...data.labels],\n    datasets: []\n  }\n\n  setChartDatasets(nextData, { ...data }, datasetIdKey)\n  return nextData\n}\n\nexport function setChartDatasets<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  oldData: TChartData<TType, TData, TLabel>,\n  newData: TChartData<TType, TData, TLabel>,\n  datasetIdKey: string\n): void {\n  const addedDatasets: ChartDataset<TType, TData>[] = []\n\n  oldData.datasets = newData.datasets.map(\n    (nextDataset: Record<string, unknown>) => {\n      // given the new set, find it's current match\n      const currentDataset = oldData.datasets.find(\n        (dataset: Record<string, unknown>) =>\n          dataset[datasetIdKey] === nextDataset[datasetIdKey]\n      )\n\n      // There is no original to update, so simply add new one\n      if (\n        !currentDataset ||\n        !nextDataset.data ||\n        addedDatasets.includes(currentDataset)\n      ) {\n        return { ...nextDataset }\n      }\n\n      addedDatasets.push(currentDataset)\n\n      Object.assign(currentDataset, nextDataset)\n\n      return currentDataset\n    }\n  ) as ChartDataset<TType, TData>[]\n}\n\nexport function setChartLabels<\n  TType extends ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  chart: TypedChartJS<TType, TData, TLabel>,\n  labels: TLabel[] | undefined,\n  context?: SetupContext\n): void {\n  chart.data.labels = labels\n\n  if (context !== undefined) {\n    context.emit(ChartEmits.LabelsUpdated)\n  }\n}\n\nexport function setChartOptions<\n  TType extends ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  chart: TypedChartJS<TType, TData, TLabel>,\n  options: TChartOptions<TType>\n): void {\n  chart.options = { ...options }\n}\n\nexport function compareData<\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  newData: TChartData<TType, TData, TLabel>,\n  oldData: TChartData<TType, TData, TLabel>\n): boolean {\n  // Get new and old DataSet Labels\n  const newDatasetLabels = newData.datasets.map(dataset => {\n    return dataset.label\n  })\n\n  const oldDatasetLabels = oldData.datasets.map(dataset => {\n    return dataset.label\n  })\n\n  // Check if Labels are equal and if dataset length is equal\n  return (\n    oldData.datasets.length === newData.datasets.length &&\n    newDatasetLabels.every((value, index) => value === oldDatasetLabels[index])\n  )\n}\n\nexport const templateError =\n  'Please remove the <template></template> tags from your chart component. See https://vue-chartjs.org/guide/#vue-single-file-components'\n\nexport const chartUpdateError = 'Update ERROR: chart instance not found'\n","import {\n  Chart as ChartJS,\n  BarController,\n  BubbleController,\n  DoughnutController,\n  LineController,\n  PieController,\n  PolarAreaController,\n  RadarController,\n  ScatterController\n} from 'chart.js'\n\nimport {\n  chartCreate,\n  chartDestroy,\n  chartUpdate,\n  getChartData,\n  setChartLabels,\n  setChartDatasets,\n  compareData,\n  templateError,\n  ChartEmits,\n  setChartOptions\n} from '../../src/utils'\n\nconst ANNOTATION_PLUGIN_KEY = 'annotation'\n\nexport function generateChart(chartId, chartType, chartController) {\n  let _chartRef = null\n\n  return {\n    props: {\n      chartData: {\n        type: Object,\n        required: true\n      },\n      chartOptions: {\n        type: Object,\n        default: () => {}\n      },\n      datasetIdKey: {\n        type: String,\n        default: 'label'\n      },\n      chartId: {\n        type: String,\n        default: chartId\n      },\n      width: {\n        type: Number,\n        default: 400\n      },\n      height: {\n        type: Number,\n        default: 400\n      },\n      cssClasses: {\n        type: String,\n        default: ''\n      },\n      styles: {\n        type: Object,\n        default: () => {}\n      },\n      plugins: {\n        type: Array,\n        default: () => []\n      }\n    },\n    data() {\n      return {\n        _chart: null\n      }\n    },\n    computed: {\n      hasAnnotationPlugin() {\n        const pluginSettings =\n          this.chartOptions?.plugins?.[ANNOTATION_PLUGIN_KEY]\n\n        return typeof pluginSettings !== 'undefined'\n      }\n    },\n    created() {\n      ChartJS.register(chartController)\n    },\n    mounted() {\n      _chartRef = { current: null }\n\n      if ('datasets' in this.chartData && this.chartData.datasets.length > 0) {\n        chartCreate(this.renderChart, this.chartData, this.chartOptions)\n        this.$emit(ChartEmits.ChartRendered)\n      }\n    },\n    watch: {\n      chartData: {\n        handler: function (newValue, oldValue) {\n          this.chartDataHandler(newValue, oldValue)\n        },\n        deep: true\n      },\n      chartOptions: {\n        handler: function (newValue) {\n          this.chartOptionsHandler(newValue)\n        },\n        deep: true\n      }\n    },\n    methods: {\n      renderChart(data, options) {\n        const currentChart = this.getCurrentChart()\n\n        if (currentChart !== null) {\n          chartDestroy(currentChart)\n          this.$emit(ChartEmits.ChartDestroyed)\n        }\n\n        if (!this.$refs.canvas) {\n          throw new Error(templateError)\n        } else {\n          const chartData = getChartData(data, this.datasetIdKey)\n\n          const canvasEl2DContext = this.$refs.canvas.getContext('2d')\n\n          if (canvasEl2DContext !== null) {\n            this.setCurrentChart(\n              new ChartJS(canvasEl2DContext, {\n                type: chartType,\n                data: chartData,\n                options,\n                plugins: this.plugins\n              })\n            )\n          }\n        }\n      },\n      chartDataHandler(newValue, oldValue) {\n        const newData = { ...newValue }\n        const oldData = { ...oldValue }\n        const currentChart = this.getCurrentChart()\n\n        if (Object.keys(oldData).length > 0) {\n          const isEqualLabelsAndDatasetsLength = compareData(newData, oldData)\n\n          if (isEqualLabelsAndDatasetsLength && currentChart !== null) {\n            setChartDatasets(currentChart.data, newData, this.datasetIdKey)\n\n            if (newData.labels !== undefined) {\n              setChartLabels(currentChart, newData.labels)\n              this.$emit(ChartEmits.LabelsUpdated)\n            }\n\n            this.updateChart()\n            this.$emit(ChartEmits.ChartUpdated)\n          } else {\n            if (currentChart !== null) {\n              chartDestroy(currentChart)\n              this.$emit(ChartEmits.ChartDestroyed)\n            }\n\n            chartCreate(this.renderChart, this.chartData, this.chartOptions)\n            this.$emit(ChartEmits.ChartRendered)\n          }\n        } else {\n          if (currentChart !== null) {\n            chartDestroy(currentChart)\n            this.$emit(ChartEmits.ChartDestroyed)\n          }\n\n          chartCreate(this.renderChart, this.chartData, this.chartOptions)\n          this.$emit(ChartEmits.ChartRendered)\n        }\n      },\n      chartOptionsHandler(options) {\n        const currentChart = this.getCurrentChart()\n\n        if (currentChart !== null) {\n          setChartOptions(currentChart, options)\n          this.updateChart()\n        } else {\n          chartCreate(this.renderChart, this.chartData, this.chartOptions)\n        }\n      },\n      updateChart() {\n        const currentChart = this.getCurrentChart()\n        chartUpdate(currentChart)\n      },\n      getCurrentChart() {\n        return this.hasAnnotationPlugin ? _chartRef.current : this.$data._chart\n      },\n      setCurrentChart(chart) {\n        this.hasAnnotationPlugin\n          ? (_chartRef.current = chart)\n          : (this.$data._chart = chart)\n      }\n    },\n    beforeDestroy() {\n      const currentChart = this.getCurrentChart()\n\n      if (currentChart !== null) {\n        chartDestroy(currentChart)\n        this.$emit(ChartEmits.ChartDestroyed)\n      }\n    },\n    render: function (createElement) {\n      return createElement(\n        'div',\n        {\n          style: this.styles,\n          class: this.cssClasses\n        },\n        [\n          createElement('canvas', {\n            attrs: {\n              id: this.chartId,\n              width: this.width,\n              height: this.height\n            },\n            ref: 'canvas'\n          })\n        ]\n      )\n    }\n  }\n}\n\n/** @type Object */\nexport const Bar = /* #__PURE__ */ generateChart(\n  'bar-chart',\n  'bar',\n  BarController\n)\n\n/** @type Object */\nexport const Doughnut = /* #__PURE__ */ generateChart(\n  'doughnut-chart',\n  'doughnut',\n  DoughnutController\n)\n\n/** @type Object */\nexport const Line = /* #__PURE__ */ generateChart(\n  'line-chart',\n  'line',\n  LineController\n)\n\n/** @type Object */\nexport const Pie = /* #__PURE__ */ generateChart(\n  'pie-chart',\n  'pie',\n  PieController\n)\n\n/** @type Object */\nexport const PolarArea = /* #__PURE__ */ generateChart(\n  'polar-chart',\n  'polarArea',\n  PolarAreaController\n)\n\n/** @type Object */\nexport const Radar = /* #__PURE__ */ generateChart(\n  'radar-chart',\n  'radar',\n  RadarController\n)\n\n/** @type Object */\nexport const Bubble = /* #__PURE__ */ generateChart(\n  'bubble-chart',\n  'bubble',\n  BubbleController\n)\n\n/** @type Object */\nexport const Scatter = /* #__PURE__ */ generateChart(\n  'scatter-chart',\n  'scatter',\n  ScatterController\n)\n\nexport default {\n  Bar,\n  Bubble,\n  Doughnut,\n  Line,\n  Pie,\n  PolarArea,\n  Radar,\n  Scatter,\n  generateChart\n}\n"],"names":["ChartEmits","ChartRendered","ChartUpdated","ChartDestroyed","LabelsUpdated","chartCreate","createChartFunction","chartData","chartOptions","context","undefined","emit","chartUpdate","chart","update","chartDestroy","destroy","getChartData","data","datasetIdKey","nextData","labels","datasets","setChartDatasets","oldData","newData","addedDatasets","map","nextDataset","currentDataset","find","dataset","includes","push","Object","assign","setChartLabels","setChartOptions","options","compareData","newDatasetLabels","label","oldDatasetLabels","length","every","value","index","templateError","ANNOTATION_PLUGIN_KEY","generateChart","chartId","chartType","chartController","_chartRef","props","type","required","default","String","width","Number","height","cssClasses","styles","plugins","Array","_chart","computed","hasAnnotationPlugin","pluginSettings","created","ChartJS","register","mounted","current","renderChart","$emit","watch","handler","newValue","oldValue","chartDataHandler","deep","chartOptionsHandler","methods","currentChart","getCurrentChart","$refs","canvas","Error","canvasEl2DContext","getContext","setCurrentChart","keys","isEqualLabelsAndDatasetsLength","updateChart","$data","beforeDestroy","render","createElement","style","class","attrs","id","ref","Bar","BarController","Doughnut","DoughnutController","Line","LineController","Pie","PieController","PolarArea","PolarAreaController","Radar","RadarController","Bubble","BubbleController","Scatter","ScatterController"],"mappings":"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"}