UNPKG

ng-apexcharts

Version:
1 lines 36.3 kB
{"version":3,"file":"ng-apexcharts.mjs","sources":["../../../projects/ng-apexcharts/src/lib/chart/chart.component.ts","../../../projects/ng-apexcharts/src/lib/chart-core/chart-core.component.ts","../../../projects/ng-apexcharts/src/lib/services/chart-ssr.service.ts","../../../projects/ng-apexcharts/src/lib/chart-ssr/chart-ssr.component.ts","../../../projects/ng-apexcharts/src/lib/chart-hydrate/chart-hydrate.component.ts","../../../projects/ng-apexcharts/src/lib/ng-apexcharts.module.ts","../../../projects/ng-apexcharts/src/public_api.ts","../../../projects/ng-apexcharts/src/ng-apexcharts.ts"],"sourcesContent":["import { isPlatformBrowser } from \"@angular/common\";\nimport {\n afterEveryRender,\n afterNextRender,\n AfterRenderRef,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n Injector,\n input,\n NgZone,\n OnChanges,\n OnDestroy,\n output,\n PLATFORM_ID,\n signal,\n SimpleChanges,\n viewChild,\n} from \"@angular/core\";\nimport {\n ApexAnnotations,\n ApexAxisChartSeries,\n ApexChart,\n ApexDataLabels,\n ApexFill,\n ApexForecastDataPoints,\n ApexGrid,\n ApexLegend,\n ApexMarkers,\n ApexNoData,\n ApexParsing,\n ApexNonAxisChartSeries,\n ApexPlotOptions,\n ApexResponsive,\n ApexStates,\n ApexStroke,\n ApexTheme,\n ApexTitleSubtitle,\n ApexTooltip,\n ApexXAxis,\n ApexYAxis,\n} from \"../model/apex-types\";\nimport type ApexChartsType from \"apexcharts\";\n\n@Component({\n selector: \"apx-chart\",\n template: `<div #chart></div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ChartComponent implements OnChanges, OnDestroy {\n readonly chart = input<ApexChart>();\n readonly annotations = input<ApexAnnotations>();\n readonly colors = input<any[]>();\n readonly dataLabels = input<ApexDataLabels>();\n readonly series = input<ApexAxisChartSeries | ApexNonAxisChartSeries>();\n readonly stroke = input<ApexStroke>();\n readonly labels = input<string[]>();\n readonly legend = input<ApexLegend>();\n readonly markers = input<ApexMarkers>();\n readonly noData = input<ApexNoData>();\n readonly parsing = input<ApexParsing>();\n readonly fill = input<ApexFill>();\n readonly tooltip = input<ApexTooltip>();\n readonly plotOptions = input<ApexPlotOptions>();\n readonly responsive = input<ApexResponsive[]>();\n readonly xaxis = input<ApexXAxis>();\n readonly yaxis = input<ApexYAxis | ApexYAxis[]>();\n readonly forecastDataPoints = input<ApexForecastDataPoints>();\n readonly grid = input<ApexGrid>();\n readonly states = input<ApexStates>();\n readonly title = input<ApexTitleSubtitle>();\n readonly subtitle = input<ApexTitleSubtitle>();\n readonly theme = input<ApexTheme>();\n\n readonly autoUpdateSeries = input(true);\n\n readonly chartReady = output<{ chartObj: ApexChartsType }>();\n\n // If consumers need to capture the `chartInstance` for use, consumers\n // can access the component instance through `viewChild` and use `computed`\n // or `effect` on `component.chartInstance()` to monitor its changes and\n // recompute effects or computations whenever `chartInstance` is updated.\n readonly chartInstance = signal<ApexChartsType | null>(null);\n\n private readonly chartElement =\n viewChild.required<ElementRef<HTMLElement>>(\"chart\");\n\n private ngZone = inject(NgZone);\n private isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n private _destroyed = false;\n private readonly _injector = inject(Injector);\n private waitingForConnectedRef: AfterRenderRef | null = null;\n\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.isBrowser) return;\n\n this.hydrate(changes);\n }\n\n ngOnDestroy() {\n this.destroy();\n this._destroyed = true;\n }\n\n /** Determine if the host element is connected to the document */\n private get isConnected() {\n return this.chartElement()?.nativeElement.isConnected;\n }\n\n private hydrate(changes: SimpleChanges): void {\n if (this.waitingForConnectedRef) {\n return;\n }\n\n const shouldUpdateSeries =\n this.chartInstance() &&\n this.autoUpdateSeries() &&\n Object.keys(changes).filter((c) => c !== \"series\").length === 0;\n\n if (shouldUpdateSeries) {\n this.updateSeries(this.series(), true);\n return;\n }\n\n // Create the chart after the layout is finalized and ready to be measured.\n afterNextRender({\n read: () => this.createElement(),\n }, { injector: this._injector });\n }\n\n /** @internal Extracted to allow subclasses and tests to swap the ApexCharts bundle. */\n protected importApexCharts() {\n return import(\"apexcharts/client\");\n }\n\n private async createElement() {\n const { default: ApexCharts } = await this.importApexCharts();\n (window as any).ApexCharts ||= ApexCharts;\n\n if (this._destroyed) return;\n if (!this.isConnected) {\n this.waitForConnected();\n return;\n }\n\n const options: any = {};\n\n const properties = [\n \"annotations\",\n \"chart\",\n \"colors\",\n \"dataLabels\",\n \"series\",\n \"stroke\",\n \"labels\",\n \"legend\",\n \"fill\",\n \"tooltip\",\n \"plotOptions\",\n \"responsive\",\n \"markers\",\n \"noData\",\n \"parsing\",\n \"xaxis\",\n \"yaxis\",\n \"forecastDataPoints\",\n \"grid\",\n \"states\",\n \"title\",\n \"subtitle\",\n \"theme\",\n ] as const;\n\n properties.forEach((property) => {\n const value = this[property]();\n if (value) {\n options[property] = value;\n }\n });\n\n this.destroy();\n\n const chartInstance = this.ngZone.runOutsideAngular(\n () => new ApexCharts(this.chartElement().nativeElement, options)\n );\n\n this.chartInstance.set(chartInstance);\n\n this.render();\n this.chartReady.emit({ chartObj: chartInstance });\n }\n\n public render() {\n if (this.isConnected) {\n return this.ngZone.runOutsideAngular(() => this.chartInstance()?.render());\n } else {\n this.waitForConnected();\n }\n }\n\n public updateOptions(\n options: any,\n redrawPaths?: boolean,\n animate?: boolean,\n updateSyncedCharts?: boolean\n ) {\n return this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.updateOptions(\n options,\n redrawPaths,\n animate,\n updateSyncedCharts\n )\n );\n }\n\n public updateSeries(\n newSeries: ApexAxisChartSeries | ApexNonAxisChartSeries,\n animate?: boolean\n ) {\n return this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.updateSeries(newSeries as any, animate)\n );\n }\n\n public appendSeries(\n newSeries: ApexAxisChartSeries | ApexNonAxisChartSeries,\n animate?: boolean\n ) {\n this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.appendSeries(newSeries as any, animate)\n );\n }\n\n public appendData(newData: any[]) {\n this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.appendData(newData)\n );\n }\n\n public highlightSeries(seriesName: string): any {\n return this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.highlightSeries(seriesName)\n );\n }\n\n public toggleSeries(seriesName: string): any {\n return this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.toggleSeries(seriesName)\n );\n }\n\n public showSeries(seriesName: string) {\n this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.showSeries(seriesName)\n );\n }\n\n public hideSeries(seriesName: string) {\n this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.hideSeries(seriesName)\n );\n }\n\n public resetSeries() {\n this.ngZone.runOutsideAngular(() => this.chartInstance()?.resetSeries());\n }\n\n public zoomX(min: number, max: number) {\n this.ngZone.runOutsideAngular(() => this.chartInstance()?.zoomX(min, max));\n }\n\n public toggleDataPointSelection(\n seriesIndex: number,\n dataPointIndex?: number\n ) {\n this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.toggleDataPointSelection(\n seriesIndex,\n dataPointIndex\n )\n );\n }\n\n public destroy() {\n this.chartInstance()?.destroy();\n this.chartInstance.set(null);\n }\n\n public setLocale(localeName: string) {\n this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.setLocale(localeName)\n );\n }\n\n public paper() {\n this.ngZone.runOutsideAngular(() => (this.chartInstance() as any)?.paper());\n }\n\n public addXaxisAnnotation(\n options: any,\n pushToMemory?: boolean,\n context?: any\n ) {\n this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.addXaxisAnnotation(options, pushToMemory, context)\n );\n }\n\n public addYaxisAnnotation(\n options: any,\n pushToMemory?: boolean,\n context?: any\n ) {\n this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.addYaxisAnnotation(options, pushToMemory, context)\n );\n }\n\n public addPointAnnotation(\n options: any,\n pushToMemory?: boolean,\n context?: any\n ) {\n this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.addPointAnnotation(options, pushToMemory, context)\n );\n }\n\n public removeAnnotation(id: string, options?: any) {\n this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.removeAnnotation(id, options)\n );\n }\n\n public clearAnnotations(options?: any) {\n this.ngZone.runOutsideAngular(() =>\n this.chartInstance()?.clearAnnotations(options)\n );\n }\n\n public dataURI(options?: any) {\n return this.chartInstance()?.dataURI(options);\n }\n\n private waitForConnected() {\n if (this.waitingForConnectedRef) {\n return;\n }\n\n this.waitingForConnectedRef = afterEveryRender({\n read: () => {\n if (this.isConnected) {\n this.waitingForConnectedRef.destroy();\n this.waitingForConnectedRef = null;\n this.createElement();\n }\n },\n }, { injector: this._injector });\n }\n}\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\nimport { ChartComponent } from \"../chart/chart.component\";\n\n/**\n * Tree-shakeable variant of `<apx-chart>`.\n *\n * Loads `apexcharts/core` (~611 KB) instead of the full `apexcharts/client`\n * bundle (~942 KB). To register chart types and features, add side-effect\n * imports **before** this component is rendered — typically in `app.config.ts`\n * or at the top of the component that bootstraps the charts:\n *\n * ```ts\n * import \"apexcharts/line\"; // line, area, scatter, bubble\n * import \"apexcharts/bar\"; // bar, column, rangeBar\n * import \"apexcharts/features/legend\"; // opt-in legend\n * import \"apexcharts/features/toolbar\"; // opt-in toolbar\n * ```\n *\n * All inputs/outputs/methods are identical to `<apx-chart>`.\n */\n@Component({\n selector: \"apx-chart-core\",\n template: `<div #chart></div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ChartCoreComponent extends ChartComponent {\n protected override importApexCharts() {\n return import(\"apexcharts/core\");\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ApexOptions } from \"../model/apex-types\";\n\nexport interface ApexSSROptions {\n width?: number;\n height?: number;\n}\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class ChartSSRService {\n /** Per-app-instance counter for stable TransferState keys. Resets on each server bootstrap. */\n private instanceCounter = 0;\n\n nextInstanceId(): number {\n return this.instanceCounter++;\n }\n /** @internal Extracted to allow spying in unit tests without importing actual SSR bundle. */\n protected importSSRModule() {\n return import(\"apexcharts/ssr\");\n }\n\n async renderToHTML(options: ApexOptions, ssrOptions: ApexSSROptions = {}): Promise<string> {\n const { default: ApexCharts } = await this.importSSRModule();\n return (ApexCharts as any).renderToHTML(options, ssrOptions);\n }\n\n async renderToString(options: ApexOptions, ssrOptions: ApexSSROptions = {}): Promise<string> {\n const { default: ApexCharts } = await this.importSSRModule();\n return (ApexCharts as any).renderToString(options, ssrOptions);\n }\n}\n","import {\n afterNextRender,\n Component,\n ElementRef,\n inject,\n Inject,\n input,\n makeStateKey,\n OnInit,\n PLATFORM_ID,\n PendingTasks,\n TransferState,\n} from \"@angular/core\";\nimport { isPlatformServer } from \"@angular/common\";\nimport { ApexOptions } from \"../model/apex-types\";\nimport { ChartSSRService } from \"../services/chart-ssr.service\";\n\n/**\n * Server-side rendering component for ApexCharts.\n *\n * On the server: renders SVG imperatively into the host element, stores HTML in TransferState.\n * On the client: ngSkipHydration tells Angular to leave the host DOM alone.\n * afterNextRender then injects the HTML from TransferState into the host imperatively\n * (as a fallback if ngSkipHydration stripped the content, which it does with empty templates).\n * ChartHydrateComponent also uses afterNextRender so it runs after this, guaranteeing\n * [data-apexcharts-hydrate] is present when Pattern B calls hydrate().\n *\n * @example\n * <apx-chart-ssr [options]=\"chartOptions\" [width]=\"500\" [height]=\"300\" />\n */\n@Component({\n selector: \"apx-chart-ssr\",\n template: ``,\n standalone: true,\n host: { ngSkipHydration: \"true\" },\n})\nexport class ChartSSRComponent implements OnInit {\n readonly options = input.required<ApexOptions>();\n readonly width = input<number>(400);\n readonly height = input<number>(300);\n\n private readonly chartSSRService = inject(ChartSSRService);\n private readonly pendingTasks = inject(PendingTasks);\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly transferState = inject(TransferState);\n private readonly stateKey = makeStateKey<string>(`apx-chart-ssr-${this.chartSSRService.nextInstanceId()}`);\n private readonly isServer: boolean;\n\n constructor(@Inject(PLATFORM_ID) platformId: object) {\n this.isServer = isPlatformServer(platformId);\n\n if (!this.isServer) {\n afterNextRender(() => {\n const host = this.el.nativeElement;\n const html = this.transferState.get(this.stateKey, \"\");\n this.transferState.remove(this.stateKey);\n\n if (html) {\n // html is a JSON string: { svgOuter: \"<svg ...>...</svg>\", config: \"base64...\" }\n const { svgOuter, config } = JSON.parse(html) as { svgOuter: string; config: string };\n\n // Parse SVG via XML parser to correctly handle self-closing tags and namespaces.\n // Using innerHTML on an HTML element would corrupt the SVG tree (HTML parser mode).\n const parser = new DOMParser();\n const svgDoc = parser.parseFromString(svgOuter, 'image/svg+xml');\n const svgEl = document.importNode(svgDoc.documentElement, true);\n\n // Create wrapper div with attributes needed by ApexCharts.hydrate()\n const wrapper = document.createElement('div');\n wrapper.className = 'apexcharts-ssr-wrapper';\n wrapper.setAttribute('data-apexcharts-hydrate', '');\n if (config) wrapper.setAttribute('data-apexcharts-config', config);\n\n wrapper.appendChild(svgEl);\n host.innerHTML = '';\n host.appendChild(wrapper);\n }\n });\n }\n }\n\n async ngOnInit(): Promise<void> {\n if (!this.isServer) return;\n\n const done = this.pendingTasks.add();\n const ssrOptions = { width: this.width(), height: this.height() };\n try {\n const [html, svgOuter] = await Promise.all([\n this.chartSSRService.renderToHTML(this.options(), ssrOptions),\n this.chartSSRService.renderToString(this.options(), ssrOptions),\n ]);\n const configMatch = html.match(/data-apexcharts-config=\"([^\"]*)\"/);\n const config = configMatch?.[1] ?? '';\n this.transferState.set(this.stateKey, JSON.stringify({ svgOuter, config }));\n this.el.nativeElement.innerHTML = html;\n } finally {\n done();\n }\n }\n}\n","import {\n afterNextRender,\n Component,\n ElementRef,\n inject,\n Inject,\n Injector,\n input,\n NgZone,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n runInInjectionContext,\n} from \"@angular/core\";\nimport { isPlatformBrowser } from \"@angular/common\";\nimport { ApexOptions } from \"../model/apex-types\";\nimport type ApexChartsType from \"apexcharts\";\n\n/**\n * Client-side hydration component for ApexCharts SSR output.\n *\n * Must be placed immediately after `<apx-chart-ssr>` in the DOM. It finds\n * the server-rendered `[data-apexcharts-hydrate]` element in the preceding\n * `<apx-chart-ssr>` sibling and calls `ApexCharts.hydrate()` on it to\n * attach full interactivity (animations, tooltips, zoom, etc.).\n *\n * Uses afterNextRender so it runs after ChartSSRComponent has injected the\n * server HTML into the DOM (which also happens in afterNextRender).\n *\n * On the server this component does nothing.\n *\n * @example\n * <apx-chart-ssr [options]=\"chartOptions\" />\n * <apx-chart-hydrate [clientOptions]=\"{ chart: { animations: { enabled: true } } }\" />\n */\n@Component({\n selector: \"apx-chart-hydrate\",\n template: ``,\n standalone: true,\n})\nexport class ChartHydrateComponent implements OnInit, OnDestroy {\n readonly clientOptions = input<Partial<ApexOptions>>({});\n\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly ngZone = inject(NgZone);\n private readonly injector = inject(Injector);\n private readonly isBrowser: boolean;\n private chartObj: ApexChartsType | null = null;\n\n constructor(@Inject(PLATFORM_ID) platformId: object) {\n this.isBrowser = isPlatformBrowser(platformId);\n }\n\n ngOnInit(): void {\n if (!this.isBrowser) return;\n\n runInInjectionContext(this.injector, () => afterNextRender(async () => {\n // By this point ChartSSRComponent's afterNextRender has already run,\n // so [data-apexcharts-hydrate] is guaranteed to be in the DOM.\n const host = this.el.nativeElement;\n const ssrEl = host.parentElement?.querySelector(\"[data-apexcharts-hydrate]\") as HTMLElement | null;\n\n if (!ssrEl) {\n console.warn(\"[ng-apexcharts] ChartHydrateComponent: No [data-apexcharts-hydrate] element found. Ensure <apx-chart-ssr> precedes <apx-chart-hydrate> in the same container.\");\n return;\n }\n\n const { default: ApexCharts } = await this.importClientModule();\n try {\n this.chartObj = this.ngZone.runOutsideAngular(() =>\n (ApexCharts as any).hydrate(ssrEl, this.clientOptions())\n );\n } catch (error) {\n console.error(\"[ng-apexcharts] ChartHydrateComponent: Failed to hydrate chart.\", error);\n }\n }));\n }\n\n /** @internal Extracted to allow spying in unit tests without importing actual SSR/hydrate bundle. */\n protected importClientModule() {\n return import(\"apexcharts/ssr\");\n }\n\n ngOnDestroy(): void {\n this.chartObj?.destroy();\n this.chartObj = null;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { ChartComponent } from \"./chart/chart.component\";\nimport { ChartCoreComponent } from \"./chart-core/chart-core.component\";\nimport { ChartSSRComponent } from \"./chart-ssr/chart-ssr.component\";\nimport { ChartHydrateComponent } from \"./chart-hydrate/chart-hydrate.component\";\n\nconst declarations = [ChartComponent, ChartCoreComponent, ChartSSRComponent, ChartHydrateComponent];\n\n@NgModule({\n imports: [declarations],\n exports: [declarations],\n})\nexport class NgApexchartsModule {}\n","/*\n * Public API Surface of ng-apexcharts\n */\n\nexport * from './lib/ng-apexcharts.module';\nexport * from './lib/chart/chart.component';\nexport * from './lib/chart-core/chart-core.component';\nexport * from './lib/chart-ssr/chart-ssr.component';\nexport * from './lib/chart-hydrate/chart-hydrate.component';\nexport * from './lib/services/chart-ssr.service';\nexport * from './lib/model/apex-types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}