{"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  ElementRef,\n  inject,\n  input,\n  linkedSignal,\n  NgZone,\n  numberAttribute,\n  OnChanges,\n  OnDestroy,\n  output,\n  Renderer2,\n  SimpleChanges,\n  untracked,\n  viewChild\n} from '@angular/core';\n\nimport merge from 'lodash-es/merge';\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]': 'hostClasses()',\n    '[style.height.px]': 'height()',\n    '[style.width.px]': 'width()'\n  }\n})\nexport class ChartjsComponent implements OnDestroy, OnChanges {\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<boolean, unknown>(true, { transform: booleanAttribute });\n\n  /**\n   * The data object that is passed into the Chart.js chart (more info).\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   * @return string\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   */\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   */\n  readonly plugins = input<Plugin[]>([]);\n\n  /**\n   * If true, will tear down and redraw chart on all updates.\n   * @return boolean\n   * @default false\n   */\n  readonly redraw = input(false, { transform: booleanAttribute });\n\n  /**\n   * Chart.js chart type.\n   * @return {'line' | 'bar' | 'radar' | 'doughnut' | 'polarArea' | 'bubble' | 'pie' | 'scatter'}\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   * @default true\n   */\n  readonly wrapper = input(true, { transform: booleanAttribute });\n\n  readonly getDatasetAtEvent = output<InteractionItem[]>();\n  readonly getElementAtEvent = output<InteractionItem[]>();\n  readonly getElementsAtEvent = output<InteractionItem[]>();\n\n  readonly chartRef = output<any>();\n\n  readonly canvasElement = viewChild.required<ElementRef>('canvasElement');\n\n  chart!: ChartJS;\n  ctx!: CanvasRenderingContext2D;\n\n  readonly hostClasses = computed(() => {\n    return {\n      'chart-wrapper': this.wrapper()\n    };\n  });\n\n  constructor() {\n    afterRenderEffect({\n      read: () => {\n        const canvasElement = this.canvasElement();\n        this.ctx = canvasElement?.nativeElement?.getContext('2d');\n        this.chartRender();\n      }\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['data'] && !changes['data'].firstChange) {\n      this.chartUpdate();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.chartDestroy();\n  }\n\n  public handleClick($event: MouseEvent) {\n    if (!this.chart) {\n      return;\n    }\n\n    const datasetAtEvent: InteractionItem[] = this.chart.getElementsAtEventForMode(\n      $event,\n      'dataset',\n      { intersect: true },\n      false\n    );\n    this.getDatasetAtEvent.emit(datasetAtEvent);\n\n    const elementAtEvent: InteractionItem[] = this.chart.getElementsAtEventForMode(\n      $event,\n      'nearest',\n      { intersect: true },\n      false\n    );\n    this.getElementAtEvent.emit(elementAtEvent);\n\n    const elementsAtEvent: InteractionItem[] = this.chart.getElementsAtEventForMode(\n      $event,\n      'index',\n      { intersect: true },\n      false\n    );\n    this.getElementsAtEvent.emit(elementsAtEvent);\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      if (config) {\n        this.chart = new ChartJS(this.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  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        this.chart?.update();\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  private 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      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}\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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"}