{"version":3,"file":"coreui-angular-chartjs.mjs","sources":["../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.ts","../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.html","../../../projects/coreui-angular-chartjs/src/lib/chartjs.module.ts","../../../projects/coreui-angular-chartjs/src/public-api.ts","../../../projects/coreui-angular-chartjs/src/coreui-angular-chartjs.ts"],"sourcesContent":["import {\n  afterRenderEffect,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  effect,\n  ElementRef,\n  inject,\n  input,\n  linkedSignal,\n  NgZone,\n  numberAttribute,\n  OnDestroy,\n  output,\n  Renderer2,\n  untracked,\n  viewChild\n} from '@angular/core';\n\nimport { merge } from 'lodash-es';\n\nimport type { ChartConfiguration, ChartData, ChartOptions, ChartType, InteractionItem, Plugin } from 'chart.js';\nimport { Chart as ChartJS, registerables } from 'chart.js';\nimport { customTooltips as cuiCustomTooltips } from '@coreui/chartjs';\nimport { BooleanInput } from './chartjs.interface';\n\nChartJS.register(...registerables);\n\nlet nextId = 0;\n\n@Component({\n  selector: 'c-chart',\n  templateUrl: './chartjs.component.html',\n  styleUrls: ['./chartjs.component.scss'],\n  exportAs: 'cChart',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.chart-wrapper]': 'wrapper()',\n    '[style.height.px]': 'height()',\n    '[style.width.px]': 'width()'\n  }\n})\nexport class ChartjsComponent implements OnDestroy {\n  //\n  static ngAcceptInputType_redraw: BooleanInput;\n\n  private readonly ngZone = inject(NgZone);\n  private readonly renderer = inject(Renderer2);\n  private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n  /**\n   * Enables custom html based tooltips instead of standard tooltips.\n   * @return boolean\n   * @default true\n   */\n  readonly customTooltips = input(true, { transform: booleanAttribute });\n\n  /**\n   * The data object that is passed into the Chart.js chart (more info).\n   * @returns ChartData\n   * @default { labels: [], datasets: [] }\n   */\n  readonly data = input<ChartData>();\n\n  /**\n   * A fallback when the canvas cannot be rendered. Can be used for accessible chart descriptions.\n   */\n  // @Input() fallbackContent?: TemplateRef<any>;\n\n  /**\n   * Height attribute applied to the rendered canvas.\n   * @return number | undefined\n   * @default null\n   */\n  readonly height = input(null, { transform: (value) => numberAttribute(value, undefined) });\n\n  /**\n   * ID attribute applied to the rendered canvas.\n   * @returns string\n   * @default 'c-chartjs-' + nextId\n   */\n  readonly idInput = input<string>(`c-chartjs-${nextId++}`, { alias: 'id' });\n\n  get id() {\n    return this.idInput();\n  }\n\n  /**\n   * The options object that is passed into the Chart.js chart.\n   * @returns ChartOptions | undefined\n   * @default {}\n   */\n  readonly optionsInput = input<ChartOptions | undefined>({}, { alias: 'options' });\n\n  readonly options = linkedSignal(this.optionsInput);\n\n  /**\n   * The plugins array that is passed into the Chart.js chart\n   * @returns Plugin[]\n   * @default []\n   */\n  readonly plugins = input<Plugin[]>([]);\n\n  /**\n   * If true, will tear down and redraw chart on all updates.\n   * @returns boolean\n   * @default false\n   */\n  readonly redraw = input(false, { transform: booleanAttribute });\n\n  /**\n   * Chart.js chart type.\n   * @returns {'line' | 'bar' | 'radar' | 'doughnut' | 'polarArea' | 'bubble' | 'pie' | 'scatter'}\n   * @default 'bar'\n   */\n  readonly type = input<ChartType>('bar');\n\n  /**\n   * Width attribute applied to the rendered canvas.\n   * @return number | undefined\n   * @default null\n   */\n  readonly width = input(null, { transform: (value) => numberAttribute(value, undefined) });\n\n  /**\n   * Put the chart into the wrapper div element.\n   * @return boolean\n   * @default true\n   */\n  readonly wrapper = input(true, { transform: booleanAttribute });\n\n  /** Event emitted on click of a chart element. Contains an array of the clicked elements.\n   * @returns InteractionItem[]\n   * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n   */\n  readonly getDatasetAtEvent = output<InteractionItem[]>();\n\n  /** Event emitted on click of a chart element. Contains an array of the clicked element.\n   * @returns InteractionItem[]\n   * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n   */\n  readonly getElementAtEvent = output<InteractionItem[]>();\n\n  /** Event emitted on click of a chart element. Contains an array of the clicked elements.\n   * @returns InteractionItem[]\n   * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n   */\n  readonly getElementsAtEvent = output<InteractionItem[]>();\n\n  /** Emits the Chart.js chart instance after it is created. Can be used to access Chart.js directly on the chart instance.\n   * @returns ChartJS | undefined\n   * @see https://www.chartjs.org/docs/latest/developers/api.html#chart-instance-methods\n   */\n  readonly chartRef = output<ChartJS | undefined>();\n\n  readonly canvasElement = viewChild.required<ElementRef<HTMLCanvasElement>>('canvasElement');\n\n  chart: ChartJS | undefined;\n  readonly ctx = computed(() => this.canvasElement()?.nativeElement.getContext('2d'));\n\n  constructor() {\n    afterRenderEffect({\n      read: () => {\n        const ctx = this.ctx();\n        if (ctx && !this.chart) {\n          this.chartRender();\n        }\n      }\n    });\n\n    effect(() => {\n      const data = this.data();\n      untracked(() => {\n        if (this.chart && data) {\n          this.chartUpdate();\n        }\n      });\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.chartDestroy();\n  }\n\n  public handleClick($event: MouseEvent): void {\n    if (!this.chart) {\n      return;\n    }\n\n    this.emitDatasetAtEvent($event);\n    this.emitElementAtEvent($event);\n    this.emitElementsAtEvent($event);\n  }\n\n  private emitDatasetAtEvent($event: MouseEvent): void {\n    const datasetAtEvent = this.chart?.getElementsAtEventForMode($event, 'dataset', { intersect: true }, false);\n    if (datasetAtEvent) {\n      this.getDatasetAtEvent.emit(datasetAtEvent);\n    }\n  }\n\n  private emitElementAtEvent($event: MouseEvent): void {\n    const elementAtEvent = this.chart?.getElementsAtEventForMode($event, 'nearest', { intersect: true }, false);\n    if (elementAtEvent) {\n      this.getElementAtEvent.emit(elementAtEvent);\n    }\n  }\n\n  private emitElementsAtEvent($event: MouseEvent): void {\n    const elementsAtEvent = this.chart?.getElementsAtEventForMode($event, 'index', { intersect: true }, false);\n    if (elementsAtEvent) {\n      this.getElementsAtEvent.emit(elementsAtEvent);\n    }\n  }\n\n  public chartDestroy() {\n    this.chart?.destroy();\n    this.chartRef.emit(undefined);\n  }\n\n  public chartRender() {\n    const canvasElement = this.canvasElement();\n    if (!canvasElement?.nativeElement || !this.ctx() || this.chart) {\n      return;\n    }\n\n    this.ngZone.runOutsideAngular(() => {\n      const config = this.chartConfig();\n      const ctx = this.ctx();\n      if (config && ctx) {\n        this.chart = new ChartJS(ctx, config);\n        this.ngZone.run(() => {\n          this.renderer.setStyle(canvasElement.nativeElement, 'display', 'block');\n          this.changeDetectorRef.markForCheck();\n          this.chartRef.emit(this.chart);\n        });\n      }\n    });\n  }\n\n  public chartUpdate() {\n    if (!this.chart) {\n      return;\n    }\n\n    if (this.redraw()) {\n      this.chartDestroy();\n      this.chartRender();\n      return;\n    }\n\n    const config: ChartConfiguration = this.chartConfig();\n\n    if (this.options()) {\n      Object.assign(this.chart.options ?? {}, config.options ?? {});\n    }\n\n    if (!this.chart.config.data) {\n      this.chart.config.data = { ...config.data };\n      this.chartUpdateOutsideAngular();\n    }\n\n    if (this.chart) {\n      Object.assign(this.chart.config.options ?? {}, config.options ?? {});\n      Object.assign(this.chart.config.plugins ?? [], config.plugins ?? []);\n      Object.assign(this.chart.config.data, config.data);\n    }\n\n    this.chartUpdateOutsideAngular();\n  }\n\n  private chartUpdateOutsideAngular() {\n    setTimeout(() => {\n      this.ngZone.runOutsideAngular(() => {\n        try {\n          if (this.chart?.canvas) {\n            this.chart?.update();\n          }\n        } catch (error) {\n          console.warn('Error on chart.update():', error);\n        }\n        this.ngZone.run(() => {\n          this.changeDetectorRef.markForCheck();\n        });\n      });\n    });\n  }\n\n  public chartToBase64Image(): string | undefined {\n    return this.chart?.toBase64Image();\n  }\n\n  readonly chartDataConfig = computed<ChartData>(() => {\n    const { labels, datasets } = { ...this.data() };\n    return {\n      labels: labels ?? [],\n      datasets: datasets ?? []\n    };\n  });\n\n  readonly chartOptions = computed<ChartOptions>(() => this.options() ?? {});\n\n  readonly chartConfig = computed<ChartConfiguration>(() => {\n    this.chartCustomTooltips();\n    return {\n      data: this.chartDataConfig(),\n      options: this.chartOptions(),\n      plugins: this.plugins(),\n      type: this.type()\n    };\n  });\n\n  private chartCustomTooltips() {\n    if (!this.customTooltips()) {\n      return;\n    }\n    const options = this.options();\n    const plugins = options?.plugins;\n    const tooltip = options?.plugins?.tooltip;\n    untracked(() => {\n      this.options.set(\n        merge({\n          ...options,\n          plugins: {\n            ...plugins,\n            tooltip: {\n              ...tooltip,\n              enabled: false,\n              mode: 'index',\n              position: 'nearest',\n              external: cuiCustomTooltips\n            }\n          }\n        })\n      );\n    });\n  }\n}\n","<canvas\n  #canvasElement\n  (click)=\"handleClick($event)\"\n  [height]=\"height() || null\"\n  [id]=\"id\"\n  [width]=\"width() || null\"\n  role=\"img\"\n  style=\"display: none;\"\n>\n  <ng-content />\n  <!--  <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n","import { NgModule } from '@angular/core';\nimport { ChartjsComponent } from './chartjs.component';\n\n@NgModule({\n  imports: [\n    ChartjsComponent\n  ],\n  exports: [\n    ChartjsComponent\n  ]\n})\nexport class ChartjsModule {}\n","/*\n * Public API Surface of coreui-angular-chartjs\n */\n\nexport * from './lib/chartjs.component';\nexport * from './lib/chartjs.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ChartJS","cuiCustomTooltips"],"mappings":"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"}