highcharts-angular
Version:
Highcharts component for Angular.
1 lines • 22.5 kB
Source Map (JSON)
{"version":3,"file":"highcharts-angular.mjs","sources":["../../../highcharts-angular/src/lib/highcharts-chart.token.ts","../../../highcharts-angular/src/lib/highcharts-chart.service.ts","../../../highcharts-angular/src/lib/highcharts-chart.directive.ts","../../../highcharts-angular/src/lib/highcharts-chart.component.ts","../../../highcharts-angular/src/lib/highcharts-chart.provider.ts","../../../highcharts-angular/src/public_api.ts","../../../highcharts-angular/src/highcharts-angular.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { InstanceFactoryFunction, ModuleFactoryFunction, PartialHighchartsConfig } from './types';\nimport type Highcharts from 'highcharts/esm/highcharts';\n\nexport const HIGHCHARTS_LOADER = new InjectionToken<InstanceFactoryFunction>('HIGHCHARTS_LOADER');\nexport const HIGHCHARTS_ROOT_MODULES = new InjectionToken<ModuleFactoryFunction>('HIGHCHARTS_ROOT_MODULES');\nexport const HIGHCHARTS_OPTIONS = new InjectionToken<Highcharts.Options>('HIGHCHARTS_OPTIONS');\nexport const HIGHCHARTS_CONFIG = new InjectionToken<PartialHighchartsConfig>('HIGHCHARTS_CONFIG');\nexport const HIGHCHARTS_TIMEOUT = new InjectionToken<number>('HIGHCHARTS_TIMEOUT');\n","import { inject, Injectable, signal } from '@angular/core';\nimport { HIGHCHARTS_ROOT_MODULES, HIGHCHARTS_LOADER, HIGHCHARTS_OPTIONS } from './highcharts-chart.token';\nimport { ModuleFactoryFunction, PartialHighchartsConfig } from './types';\nimport type Highcharts from 'highcharts/esm/highcharts';\n\n@Injectable({ providedIn: 'root' })\nexport class HighchartsChartService {\n public readonly highcharts = signal<typeof Highcharts | null>(null);\n\n private readonly loader = inject(HIGHCHARTS_LOADER);\n private readonly globalOptions = inject(HIGHCHARTS_OPTIONS, {\n optional: true,\n });\n private readonly globalModules = inject(HIGHCHARTS_ROOT_MODULES, {\n optional: true,\n });\n\n private sharedHighchartsPromise: Promise<typeof Highcharts> | null = null;\n private readonly moduleLoadCache = new WeakMap<ModuleFactoryFunction, Promise<void>>();\n\n private async loadModules(modulesFactory?: ModuleFactoryFunction | null): Promise<void> {\n if (!modulesFactory) {\n return;\n }\n\n const cachedLoad = this.moduleLoadCache.get(modulesFactory);\n if (cachedLoad) {\n return cachedLoad;\n }\n\n const moduleLoad = Promise.allSettled(modulesFactory()).then(moduleResults => {\n const rejectedModules = moduleResults.filter(\n (result): result is PromiseRejectedResult => result.status === 'rejected',\n );\n\n if (rejectedModules.length) {\n const reasons = rejectedModules.map(({ reason }) =>\n reason instanceof Error ? reason.message : String(reason),\n );\n\n throw new Error(`Failed to load Highcharts modules: ${reasons.join('; ')}`);\n }\n });\n\n this.moduleLoadCache.set(modulesFactory, moduleLoad);\n\n // Drop the memo if the load fails so an identical factory can be retried\n // instead of reusing a permanently rejected promise.\n moduleLoad.catch(() => {\n if (this.moduleLoadCache.get(modulesFactory) === moduleLoad) {\n this.moduleLoadCache.delete(modulesFactory);\n }\n });\n\n return moduleLoad;\n }\n\n private async ensureSharedHighcharts(): Promise<typeof Highcharts> {\n if (!this.sharedHighchartsPromise) {\n const load = (async () => {\n const highcharts = await this.loader();\n\n // Root-level modules and options mutate a shared Highcharts singleton,\n // so initialize them once and reuse the same ready instance afterwards.\n await this.loadModules(this.globalModules);\n\n if (this.globalOptions) {\n highcharts.setOptions(this.globalOptions);\n }\n\n return highcharts;\n })();\n\n // Cache the in-flight load, but drop the memo if it fails so a later\n // load() can retry instead of reusing a permanently rejected promise.\n this.sharedHighchartsPromise = load;\n load.catch(() => {\n if (this.sharedHighchartsPromise === load) {\n this.sharedHighchartsPromise = null;\n }\n });\n }\n\n return this.sharedHighchartsPromise;\n }\n\n public async load(partialConfig: PartialHighchartsConfig | null): Promise<typeof Highcharts> {\n const highcharts = await this.ensureSharedHighcharts();\n\n // Component-level modules are still loaded per config, but cached by the\n // factory function so identical providers do not repeat the same work.\n await this.loadModules(partialConfig?.modules);\n\n this.highcharts.set(highcharts);\n return highcharts;\n }\n}\n","import {\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n PendingTasks,\n PLATFORM_ID,\n signal,\n untracked,\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { HighchartsChartService } from './highcharts-chart.service';\nimport { HIGHCHARTS_CONFIG, HIGHCHARTS_TIMEOUT } from './highcharts-chart.token';\nimport { ChartConstructorType, ConstructorChart, HighchartsWithModuleConstructors } from './types';\nimport type Highcharts from 'highcharts/esm/highcharts';\n\n@Directive({\n selector: '[highchartsChart]',\n})\nexport class HighchartsChartDirective {\n /**\n * Type of the chart constructor.\n * Changing it recreates the chart because Highcharts constructors are not update-compatible.\n */\n public readonly constructorType = input<ChartConstructorType>('chart');\n\n /**\n * @deprecated Will be removed in a future release.\n * When enabled, Updates `series`, `xAxis`, `yAxis`, and `annotations` to match new options.\n * Items are added/removed as needed. Series with `id`s are matched by `id`;\n * unmatched items are removed. Omitted `series` leaves existing ones unchanged.\n */\n public readonly oneToOne = input<boolean>(false);\n\n /**\n * Options for the Highcharts chart.\n */\n public readonly options = input.required<Highcharts.Options>();\n\n /**\n * @deprecated Will be removed in a future release.\n * Whether to redraw the chart.\n * Check how update works in Highcharts\n * API doc here: https://api.highcharts.com/class-reference/Highcharts.Chart#update\n */\n public readonly update = model<boolean>(true);\n\n public readonly chartInstance = output<Highcharts.Chart>();\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly relativeConfig = inject(HIGHCHARTS_CONFIG, { optional: true });\n private readonly timeout = inject(HIGHCHARTS_TIMEOUT, { optional: true });\n private readonly highchartsChartService = inject(HighchartsChartService);\n private readonly pendingTasks = inject(PendingTasks);\n\n private readonly loadedHighcharts = signal<typeof Highcharts | null>(null);\n private readonly chart = signal<Highcharts.Chart | null>(null);\n private isDestroyed = false;\n\n private delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n private getChartFactory(highcharts: typeof Highcharts, constructorType: ChartConstructorType): ConstructorChart {\n if (constructorType === 'chart') {\n return highcharts.chart;\n }\n\n const highchartsWithModuleConstructors: HighchartsWithModuleConstructors = highcharts;\n const chartFactory = highchartsWithModuleConstructors[constructorType];\n\n if (!chartFactory) {\n throw new Error(\n `Highcharts constructor \"${constructorType}\" is not available. Did you load the required module?`,\n );\n }\n\n return chartFactory;\n }\n\n private createChart(): void {\n effect(onCleanup => {\n const highcharts = this.loadedHighcharts();\n const constructorType = this.constructorType();\n\n if (!highcharts || this.isDestroyed) {\n return;\n }\n\n const callback: Highcharts.ChartCallbackFunction = (chart: Highcharts.Chart) => {\n if (chart.renderer.forExport || this.isDestroyed) return;\n return this.chartInstance.emit(chart);\n };\n\n const chart = this.getChartFactory(highcharts, constructorType)(\n this.el.nativeElement,\n // Read options without tracking them here: option changes should update\n // the existing chart, not tear it down and create a new one.\n untracked(() => this.options()),\n callback,\n );\n\n this.chart.set(chart);\n\n onCleanup(() => {\n if (this.chart() === chart) {\n this.chart.set(null);\n }\n\n chart.destroy();\n });\n });\n }\n\n private keepChartUpToDate(): void {\n let lastChart: Highcharts.Chart | null = null;\n\n effect(() => {\n const chart = this.chart();\n // Deprecated inputs remain supported internally until they are removed.\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const update = this.update();\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const oneToOne = this.oneToOne();\n const options = this.options();\n\n if (!chart) {\n return;\n }\n\n // Skip the first pass after creation. The constructor already consumed\n // the initial options, so calling `update` immediately would duplicate work.\n if (chart !== lastChart) {\n lastChart = chart;\n return;\n }\n\n if (update) {\n chart.update(options, true, oneToOne);\n }\n });\n }\n\n private async initializeHighcharts(): Promise<void> {\n await this.pendingTasks.run(async () => {\n try {\n const highcharts = await this.highchartsChartService.load(this.relativeConfig);\n const delayMs = this.relativeConfig?.timeout ?? this.timeout ?? 0;\n\n // Optional escape hatch: defer chart creation after Highcharts is ready\n // (e.g. to let the container settle). Skipped entirely by default.\n if (delayMs > 0) {\n await this.delay(delayMs);\n }\n\n if (!this.isDestroyed) {\n this.loadedHighcharts.set(highcharts);\n }\n } catch (error) {\n // Core/module loading failed: leave the chart uncreated and surface the\n // reason instead of letting it become an unhandled promise rejection.\n console.error('Highcharts failed to load; chart was not created.', error);\n }\n });\n }\n\n public constructor() {\n if (this.platformId && isPlatformServer(this.platformId)) {\n return;\n }\n\n this.destroyRef.onDestroy(() => {\n this.isDestroyed = true;\n });\n\n this.createChart();\n this.keepChartUpToDate();\n void this.initializeHighcharts();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { HighchartsChartDirective } from './highcharts-chart.directive';\n\n@Component({\n selector: 'highcharts-chart',\n template: '',\n hostDirectives: [\n {\n directive: HighchartsChartDirective,\n inputs: ['constructorType', 'oneToOne', 'options', 'update'],\n outputs: ['chartInstance', 'updateChange'],\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HighchartsChartComponent {}\n","import { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport {\n HIGHCHARTS_LOADER,\n HIGHCHARTS_CONFIG,\n HIGHCHARTS_ROOT_MODULES,\n HIGHCHARTS_OPTIONS,\n HIGHCHARTS_TIMEOUT,\n} from './highcharts-chart.token';\nimport { ModuleFactoryFunction, HighchartsConfig, PartialHighchartsConfig, InstanceFactoryFunction } from './types';\nimport type Highcharts from 'highcharts/esm/highcharts';\n\nconst emptyModuleFactoryFunction: ModuleFactoryFunction = () => [];\nconst defaultInstanceFactoryFunction: InstanceFactoryFunction = () =>\n import('highcharts/esm/highcharts').then(m => m.default);\n\nfunction provideHighchartsInstance(instance: InstanceFactoryFunction | undefined): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: HIGHCHARTS_LOADER,\n useValue: instance ?? defaultInstanceFactoryFunction,\n },\n ]);\n}\n\nfunction provideHighchartsOptions(options: Highcharts.Options): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: HIGHCHARTS_OPTIONS, useValue: options }]);\n}\n\nfunction provideHighchartsRootModules(modules: ModuleFactoryFunction): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: HIGHCHARTS_ROOT_MODULES, useValue: modules }]);\n}\n\nexport function providePartialHighcharts(config: PartialHighchartsConfig): Provider {\n return { provide: HIGHCHARTS_CONFIG, useValue: config };\n}\n\nexport function provideHighcharts(config: HighchartsConfig = {}): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n provideHighchartsInstance(config.instance),\n provideHighchartsRootModules(config.modules ?? emptyModuleFactoryFunction),\n { provide: HIGHCHARTS_TIMEOUT, useValue: config.timeout },\n ];\n if (config.options) {\n providers.push(provideHighchartsOptions(config.options));\n }\n return makeEnvironmentProviders(providers);\n}\n","/*\n * Public API Surface of highcharts-angular\n */\n\nexport { HighchartsChartComponent } from './lib/highcharts-chart.component';\nexport { HighchartsChartDirective } from './lib/highcharts-chart.directive';\nexport { provideHighcharts, providePartialHighcharts } from './lib/highcharts-chart.provider';\nexport { HighchartsConfig, PartialHighchartsConfig, ChartConstructorType } from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}