{"version":3,"file":"primeng-chart.mjs","sources":["../../src/chart/style/chartstyle.ts","../../src/chart/chart.ts","../../src/chart/primeng-chart.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst inlineStyles = {\n    root: ({ instance }) => ({ display: 'block', position: 'relative', width: instance.width, height: instance.height })\n};\n\nconst classes = {\n    root: 'p-chart'\n};\n\n@Injectable()\nexport class ChartStyle extends BaseStyle {\n    name = 'chart';\n\n    classes = classes;\n\n    inlineStyles = inlineStyles;\n}\n\n/**\n *\n * Chart groups a collection of contents in tabs.\n *\n * [Live Demo](https://www.primeng.org/chart/)\n *\n * @module chartstyle\n *\n */\nexport enum ChartClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-chart'\n}\n\nexport interface ChartStyle extends BaseStyle {}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, InjectionToken, Input, NgModule, NgZone, Output, ViewEncapsulation } from '@angular/core';\nimport Chart from 'chart.js/auto';\nimport { SharedModule } from 'primeng/api';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { ChartStyle } from './style/chartstyle';\nimport { Bind, BindModule } from 'primeng/bind';\nimport type { ChartPassThrough } from 'primeng/types/chart';\n\nconst CHART_INSTANCE = new InjectionToken<UIChart>('CHART_INSTANCE');\n\n/**\n * Chart groups a collection of contents in tabs.\n * @group Components\n */\n@Component({\n    selector: 'p-chart',\n    standalone: true,\n    imports: [CommonModule, SharedModule, BindModule],\n    template: `\n        <canvas\n            role=\"img\"\n            [attr.aria-label]=\"ariaLabel\"\n            [attr.aria-labelledby]=\"ariaLabelledBy\"\n            [attr.width]=\"responsive && !width ? null : width\"\n            [attr.height]=\"responsive && !height ? null : height\"\n            (click)=\"onCanvasClick($event)\"\n            [pBind]=\"ptm('canvas')\"\n        ></canvas>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        '[class]': \"cx('root')\",\n        '[style]': \"sx('root')\"\n    },\n    providers: [ChartStyle, { provide: CHART_INSTANCE, useExisting: UIChart }],\n    hostDirectives: [Bind]\n})\nexport class UIChart extends BaseComponent<ChartPassThrough> {\n    componentName = 'Chart';\n\n    $pcChart: UIChart | undefined = inject(CHART_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    onAfterViewChecked(): void {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n    }\n\n    /**\n     * Type of the chart.\n     * @group Props\n     */\n    @Input() type: 'bar' | 'line' | 'scatter' | 'bubble' | 'pie' | 'doughnut' | 'polarArea' | 'radar' | undefined;\n    /**\n     * Array of per-chart plugins to customize the chart behaviour.\n     * @group Props\n     */\n    @Input() plugins: any[] = [];\n    /**\n     * Width of the chart.\n     * @group Props\n     */\n    @Input() width: string | undefined;\n    /**\n     * Height of the chart.\n     * @group Props\n     */\n    @Input() height: string | undefined;\n    /**\n     * Whether the chart is redrawn on screen size change.\n     * @group Props\n     */\n    @Input({ transform: booleanAttribute }) responsive: boolean = true;\n    /**\n     * Used to define a string that autocomplete attribute the current element.\n     * @group Props\n     */\n    @Input() ariaLabel: string | undefined;\n    /**\n     * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n     * @group Props\n     */\n    @Input() ariaLabelledBy: string | undefined;\n    /**\n     * Data to display.\n     * @group Props\n     */\n    @Input() get data(): any {\n        return this._data;\n    }\n    set data(val: any) {\n        this._data = val;\n        this.reinit();\n    }\n    /**\n     * Options to customize the chart.\n     * @group Props\n     */\n    @Input() get options(): any {\n        return this._options;\n    }\n    set options(val: any) {\n        this._options = val;\n        this.reinit();\n    }\n    /**\n     * Callback to execute when an element on chart is clicked.\n     * @group Emits\n     */\n    @Output() onDataSelect: EventEmitter<any> = new EventEmitter<any>();\n\n    isBrowser: boolean = false;\n\n    initialized: boolean | undefined;\n\n    _data: any;\n\n    _options: any = {};\n\n    chart: any;\n\n    _componentStyle = inject(ChartStyle);\n\n    constructor(\n        public el: ElementRef,\n        private zone: NgZone\n    ) {\n        super();\n    }\n\n    onAfterViewInit() {\n        this.initChart();\n        this.initialized = true;\n    }\n\n    onCanvasClick(event: Event) {\n        if (this.chart) {\n            const element = this.chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);\n            const dataset = this.chart.getElementsAtEventForMode(event, 'dataset', { intersect: true }, false);\n\n            if (element && element[0] && dataset) {\n                this.onDataSelect.emit({ originalEvent: event, element: element[0], dataset: dataset });\n            }\n        }\n    }\n\n    initChart() {\n        if (isPlatformBrowser(this.platformId)) {\n            let opts = this.options || {};\n            opts.responsive = this.responsive;\n\n            // allows chart to resize in responsive mode\n            if (opts.responsive && (this.height || this.width)) {\n                opts.maintainAspectRatio = false;\n            }\n\n            this.zone.runOutsideAngular(() => {\n                this.chart = new Chart(this.el.nativeElement.children[0], {\n                    type: this.type,\n                    data: this.data,\n                    options: this.options,\n                    plugins: this.plugins\n                });\n            });\n        }\n    }\n\n    getCanvas() {\n        return this.el.nativeElement.children[0];\n    }\n\n    getBase64Image() {\n        return this.chart.toBase64Image();\n    }\n\n    generateLegend() {\n        if (this.chart) {\n            return this.chart.generateLegend();\n        }\n    }\n\n    refresh() {\n        if (this.chart) {\n            this.chart.update();\n        }\n    }\n\n    reinit() {\n        if (this.chart) {\n            this.chart.destroy();\n            this.initChart();\n        }\n    }\n\n    onDestroy() {\n        if (this.chart) {\n            this.chart.destroy();\n            this.initialized = false;\n            this.chart = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [UIChart, SharedModule],\n    exports: [UIChart, SharedModule]\n})\nexport class ChartModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}