{"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/BaseCharts.ts"],"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 type {\n  ChartType,\n  ChartComponentLike,\n  DefaultDataPoint,\n  ChartOptions,\n  Plugin\n} from 'chart.js'\n\nimport {\n  defineComponent,\n  ref,\n  shallowRef,\n  h,\n  onMounted,\n  onBeforeUnmount,\n  watch,\n  isProxy,\n  toRaw,\n  PropType\n} from 'vue'\n\nimport {\n  chartCreate,\n  chartDestroy,\n  chartUpdate,\n  getChartData,\n  setChartLabels,\n  setChartDatasets,\n  compareData,\n  templateError,\n  chartUpdateError,\n  setChartOptions\n} from './utils'\n\nimport type {\n  TChartData,\n  TChartOptions,\n  TypedChartJS,\n  TypedChartComponent\n} from './types'\n\nexport const generateChart = <\n  TType extends ChartType = ChartType,\n  TData = DefaultDataPoint<TType>,\n  TLabel = unknown\n>(\n  chartId: string,\n  chartType: TType,\n  chartController: ChartComponentLike\n): TypedChartComponent<TType, TData, TLabel> =>\n  defineComponent({\n    props: {\n      chartData: {\n        type: Object as PropType<TChartData<TType, TData, TLabel>>,\n        required: true\n      },\n      chartOptions: {\n        type: Object as PropType<TChartOptions<TType>>,\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 as PropType<Partial<CSSStyleDeclaration>>,\n        default: () => {}\n      },\n      plugins: {\n        type: Array as PropType<Plugin<TType>[]>,\n        default: () => []\n      }\n    },\n    setup(props, context) {\n      ChartJS.register(chartController)\n\n      const _chart = shallowRef<TypedChartJS<TType, TData, TLabel> | null>(null)\n      const canvasEl = ref<HTMLCanvasElement | null>(null)\n\n      function renderChart(\n        data: TChartData<TType, TData, TLabel>,\n        options: TChartOptions<TType>\n      ): void {\n        if (_chart.value !== null) {\n          chartDestroy<TType, TData, TLabel>(toRaw(_chart.value), context)\n        }\n\n        if (canvasEl.value === null) {\n          throw new Error(templateError)\n        } else {\n          const chartData = getChartData<TType, TData, TLabel>(\n            data,\n            props.datasetIdKey\n          )\n          const canvasEl2DContext = canvasEl.value.getContext('2d')\n\n          if (canvasEl2DContext !== null) {\n            _chart.value = new ChartJS<TType, TData, TLabel>(\n              canvasEl2DContext,\n              {\n                type: chartType,\n                data: isProxy(data) ? new Proxy(chartData, {}) : chartData,\n                options,\n                plugins: props.plugins\n              }\n            )\n          }\n        }\n      }\n\n      function chartDataHandler(\n        newValue: TChartData<TType, TData, TLabel>,\n        oldValue: TChartData<TType, TData, TLabel>\n      ): void {\n        const newData = isProxy(newValue) ? toRaw(newValue) : { ...newValue }\n        const oldData = isProxy(oldValue) ? toRaw(oldValue) : { ...oldValue }\n\n        if (Object.keys(oldData).length > 0) {\n          const chart = toRaw(_chart.value)\n\n          const isEqualLabelsAndDatasetsLength = compareData<\n            TType,\n            TData,\n            TLabel\n          >(newData, oldData)\n\n          if (isEqualLabelsAndDatasetsLength && chart !== null) {\n            setChartDatasets<TType, TData, TLabel>(\n              chart?.data,\n              newData,\n              props.datasetIdKey\n            )\n\n            if (newData.labels !== undefined) {\n              setChartLabels<TType, TData, TLabel>(\n                chart,\n                newData.labels,\n                context\n              )\n            }\n\n            updateChart()\n          } else {\n            if (chart !== null) {\n              chartDestroy<TType, TData, TLabel>(chart, context)\n            }\n\n            chartCreate<TType, TData, TLabel>(\n              renderChart,\n              props.chartData,\n              props.chartOptions as ChartOptions<TType>,\n              context\n            )\n          }\n        } else {\n          if (_chart.value !== null) {\n            chartDestroy<TType, TData, TLabel>(toRaw(_chart.value), context)\n          }\n\n          chartCreate<TType, TData, TLabel>(\n            renderChart,\n            props.chartData,\n            props.chartOptions as ChartOptions<TType>,\n            context\n          )\n        }\n      }\n\n      function chartOptionsHandler(options: TChartOptions<TType>): void {\n        const chart = toRaw(_chart.value)\n\n        if (chart !== null) {\n          setChartOptions<TType, TData, TLabel>(chart, options)\n          updateChart()\n        } else {\n          chartCreate<TType, TData, TLabel>(\n            renderChart,\n            props.chartData,\n            props.chartOptions as ChartOptions<TType>,\n            context\n          )\n        }\n      }\n\n      function updateChart(): void {\n        const chart = toRaw(_chart.value)\n\n        if (chart !== null) {\n          chartUpdate<TType, TData, TLabel>(chart, context)\n        } else {\n          console.error(chartUpdateError)\n        }\n      }\n\n      watch(\n        () => props.chartData,\n        (\n          newValue: TChartData<TType, TData, TLabel>,\n          oldValue: TChartData<TType, TData, TLabel>\n        ) => chartDataHandler(newValue, oldValue),\n        { deep: true }\n      )\n\n      watch(\n        () => props.chartOptions,\n        newValue => chartOptionsHandler(newValue as ChartOptions<TType>),\n        { deep: true }\n      )\n\n      onMounted(() => {\n        if (\n          'datasets' in props.chartData &&\n          props.chartData.datasets.length > 0\n        ) {\n          chartCreate<TType, TData, TLabel>(\n            renderChart,\n            props.chartData,\n            props.chartOptions as ChartOptions<TType>,\n            context\n          )\n        }\n      })\n\n      onBeforeUnmount(() => {\n        if (_chart.value !== null) {\n          chartDestroy(toRaw(_chart.value), context)\n        }\n      })\n\n      context.expose({\n        chart: _chart,\n        updateChart\n      })\n\n      return () =>\n        h('div', { style: props.styles, class: props.cssClasses }, [\n          h('canvas', {\n            id: props.chartId,\n            width: props.width,\n            height: props.height,\n            ref: canvasEl\n          })\n        ])\n    }\n  }) as any\n\nexport const Bar = /* #__PURE__ */ generateChart(\n  'bar-chart',\n  'bar',\n  BarController\n)\n\nexport const Doughnut = /* #__PURE__ */ generateChart(\n  'doughnut-chart',\n  'doughnut',\n  DoughnutController\n)\n\nexport const Line = /* #__PURE__ */ generateChart(\n  'line-chart',\n  'line',\n  LineController\n)\n\nexport const Pie = /* #__PURE__ */ generateChart(\n  'pie-chart',\n  'pie',\n  PieController\n)\n\nexport const PolarArea = /* #__PURE__ */ generateChart(\n  'polar-chart',\n  'polarArea',\n  PolarAreaController\n)\n\nexport const Radar = /* #__PURE__ */ generateChart(\n  'radar-chart',\n  'radar',\n  RadarController\n)\n\nexport const Bubble = /* #__PURE__ */ generateChart(\n  'bubble-chart',\n  'bubble',\n  BubbleController\n)\n\nexport const Scatter = /* #__PURE__ */ generateChart(\n  'scatter-chart',\n  'scatter',\n  ScatterController\n)\n\nexport default {\n  Bar,\n  Doughnut,\n  Line,\n  Pie,\n  PolarArea,\n  Radar,\n  Bubble,\n  Scatter\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","chartUpdateError","generateChart","chartId","chartType","chartController","defineComponent","props","type","required","default","String","width","Number","height","cssClasses","styles","plugins","Array","setup","ChartJS","register","_chart","shallowRef","canvasEl","ref","renderChart","toRaw","Error","canvasEl2DContext","getContext","isProxy","Proxy","chartDataHandler","newValue","oldValue","keys","isEqualLabelsAndDatasetsLength","updateChart","chartOptionsHandler","console","error","watch","deep","onMounted","onBeforeUnmount","expose","h","style","class","id","Bar","BarController","Doughnut","DoughnutController","Line","LineController","Pie","PieController","PolarArea","PolarAreaController","Radar","RadarController","Bubble","BubbleController","Scatter","ScatterController"],"mappings":"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"}