{"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 { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, effect, inject, InjectionToken, input, NgModule, 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 { ChartData, ChartDataSelectEvent, ChartOptions, ChartPassThrough, ChartPlugin, ChartType } 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 * @deprecated Charts will be removed in a future release in favor of PrimeUI PRO Charts.\n */\n@Component({\n    selector: 'p-chart',\n    standalone: true,\n    imports: [SharedModule, BindModule],\n    template: ` <canvas role=\"img\" [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.width]=\"canvasWidth()\" [attr.height]=\"canvasHeight()\" (click)=\"onCanvasClick($event)\" [pBind]=\"ptm('canvas')\"></canvas> `,\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() {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n    }\n\n    /**\n     * Type of the chart.\n     * @group Props\n     */\n    type = input<ChartType>();\n    /**\n     * Array of per-chart plugins to customize the chart behaviour.\n     * @group Props\n     */\n    plugins = input<ChartPlugin[]>([]);\n    /**\n     * Width of the chart.\n     * @group Props\n     */\n    width = input<string>();\n    /**\n     * Height of the chart.\n     * @group Props\n     */\n    height = input<string>();\n    /**\n     * Whether the chart is redrawn on screen size change.\n     * @group Props\n     */\n    responsive = input(true, { transform: booleanAttribute });\n    /**\n     * Used to define a string that autocomplete attribute the current element.\n     * @group Props\n     */\n    ariaLabel = input<string>();\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    ariaLabelledBy = input<string>();\n    /**\n     * Data to display.\n     * @group Props\n     */\n    data = input<ChartData>();\n    /**\n     * Options to customize the chart.\n     * @group Props\n     */\n    options = input<ChartOptions>({});\n    /**\n     * Callback to execute when an element on chart is clicked.\n     * @group Emits\n     */\n    onDataSelect = output<ChartDataSelectEvent>();\n\n    _componentStyle = inject(ChartStyle);\n\n    initialized = false;\n\n    chart: Chart | null = null;\n\n    constructor() {\n        super();\n\n        effect(() => {\n            const data = this.data();\n            const options = this.options();\n            if (this.initialized && (data || options)) {\n                this.reinit();\n            }\n        });\n    }\n\n    canvasWidth() {\n        return this.responsive() && !this.width() ? null : this.width();\n    }\n\n    canvasHeight() {\n        return this.responsive() && !this.height() ? null : this.height();\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 as unknown as globalThis.Event, 'nearest', { intersect: true }, false);\n            const dataset = this.chart.getElementsAtEventForMode(event as unknown as globalThis.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            const 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            const type = this.type();\n            const data = this.data();\n            if (!type || !data) return;\n\n            this.chart = new Chart(this.el.nativeElement.children[0] as HTMLCanvasElement, {\n                type,\n                data,\n                options: this.options(),\n                plugins: this.plugins()\n            });\n        }\n    }\n\n    getCanvas(): HTMLCanvasElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    getBase64Image(): string {\n        return this.chart?.toBase64Image() ?? '';\n    }\n\n    generateLegend() {\n        if (this.chart) {\n            return (this.chart as any).generateLegend();\n        }\n        return undefined;\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":";;;;;;;;;;AAGA,MAAM,YAAY,GAAG;AACjB,IAAA,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE;CAC1H;AAED,MAAM,OAAO,GAAG;AACZ,IAAA,IAAI,EAAE;CACT;AAGK,MAAO,UAAW,SAAQ,SAAS,CAAA;IACrC,IAAI,GAAG,OAAO;IAEd,OAAO,GAAG,OAAO;IAEjB,YAAY,GAAG,YAAY;uGALlB,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAV,UAAU,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB;;AASD;;;;;;;;AAQG;IACS;AAAZ,CAAA,UAAY,YAAY,EAAA;AACpB;;AAEG;AACH,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,SAAgB;AACpB,CAAC,EALW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;ACpBxB,MAAM,cAAc,GAAG,IAAI,cAAc,CAAU,gBAAgB,CAAC;AAEpE;;;;AAIG;AAeG,MAAO,OAAQ,SAAQ,aAA+B,CAAA;IACxD,aAAa,GAAG,OAAO;AAEvB,IAAA,QAAQ,GAAwB,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,SAAS;IAEvG,qBAAqB,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEpD,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE;AAEA;;;AAGG;AACH,IAAA,IAAI,GAAG,KAAK;wFAAa;AACzB;;;AAGG;IACH,OAAO,GAAG,KAAK,CAAgB,EAAE;gFAAC;AAClC;;;AAGG;AACH,IAAA,KAAK,GAAG,KAAK;yFAAU;AACvB;;;AAGG;AACH,IAAA,MAAM,GAAG,KAAK;0FAAU;AACxB;;;AAGG;IACH,UAAU,GAAG,KAAK,CAAC,IAAI,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACzD;;;AAGG;AACH,IAAA,SAAS,GAAG,KAAK;6FAAU;AAC3B;;;AAGG;AACH,IAAA,cAAc,GAAG,KAAK;kGAAU;AAChC;;;AAGG;AACH,IAAA,IAAI,GAAG,KAAK;wFAAa;AACzB;;;AAGG;IACH,OAAO,GAAG,KAAK,CAAe,EAAE;gFAAC;AACjC;;;AAGG;IACH,YAAY,GAAG,MAAM,EAAwB;AAE7C,IAAA,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC;IAEpC,WAAW,GAAG,KAAK;IAEnB,KAAK,GAAiB,IAAI;AAE1B,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QAEP,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAC9B,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,OAAO,CAAC,EAAE;gBACvC,IAAI,CAAC,MAAM,EAAE;YACjB;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACP,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;IACnE;IAEA,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;IACrE;IAEA,eAAe,GAAA;QACX,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IAC3B;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,KAAoC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC;YACjI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,KAAoC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC;YAEjI,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;gBAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YAC3F;QACJ;IACJ;IAEA,SAAS,GAAA;AACL,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;;AAGnC,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AACpD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;YACpC;AAEA,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;gBAAE;AAEpB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAsB,EAAE;gBAC3E,IAAI;gBACJ,IAAI;AACJ,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,aAAA,CAAC;QACN;IACJ;IAEA,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C;IAEA,cAAc,GAAA;QACV,OAAO,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;IAC5C;IAEA,cAAc,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,OAAQ,IAAI,CAAC,KAAa,CAAC,cAAc,EAAE;QAC/C;AACA,QAAA,OAAO,SAAS;IACpB;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACvB;IACJ;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,SAAS,EAAE;QACpB;IACJ;IAEA,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACrB;IACJ;uGAjKS,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,4yCAHL,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPhE,8NAA8N,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAD9N,YAAY,8BAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAWzB,OAAO,EAAA,UAAA,EAAA,CAAA;kBAdnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC;AACnC,oBAAA,QAAQ,EAAE,CAAA,4NAAA,CAA8N;oBACxO,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,SAAS,EAAE;AACd,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAA,OAAS,EAAE,CAAC;oBAC1E,cAAc,EAAE,CAAC,IAAI;AACxB,iBAAA;;MAyKY,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAxKX,OAAO,EAqKG,YAAY,CAAA,EAAA,OAAA,EAAA,CArKtB,OAAO,EAsKG,YAAY,CAAA,EAAA,CAAA;AAEtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAAA,OAAA,EAAA,CAHV,OAAO,EAAE,YAAY,EACZ,YAAY,CAAA,EAAA,CAAA;;2FAEtB,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;AAChC,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY;AAClC,iBAAA;;;ACrMD;;AAEG;;;;"}