{"version":3,"file":"ngx-echarts.mjs","sources":["../../../projects/ngx-echarts/src/lib/config.ts","../../../projects/ngx-echarts/src/lib/change-filter-v2.ts","../../../projects/ngx-echarts/src/lib/ngx-echarts.directive.ts","../../../projects/ngx-echarts/src/lib/provide.ts","../../../projects/ngx-echarts/src/lib/ngx-echarts.module.ts","../../../projects/ngx-echarts/src/public-api.ts","../../../projects/ngx-echarts/src/ngx-echarts.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport type ThemeOption = Record<string, any>;\n\nexport interface NgxEchartsConfig {\n  echarts: any | (() => Promise<any>);\n  theme?: string | ThemeOption;\n}\n\nexport const NGX_ECHARTS_CONFIG = new InjectionToken<NgxEchartsConfig>('NGX_ECHARTS_CONFIG');\n","import { SimpleChanges } from '@angular/core';\nimport { ReplaySubject, Subscription } from 'rxjs';\n\nexport class ChangeFilterV2 {\n  private subject = new ReplaySubject<SimpleChanges>(1);\n  private subscriptions: Subscription = new Subscription();\n\n  doFilter(changes: SimpleChanges) {\n    this.subject.next(changes);\n  }\n\n  dispose() {\n    this.subscriptions.unsubscribe();\n  }\n\n  notEmpty<T>(key: string, handler: (t: T) => void) {\n    this.subscriptions.add(\n      this.subject.subscribe((changes) => {\n        if (changes[key]) {\n          const value: T = changes[key].currentValue;\n          if (value !== undefined && value !== null) {\n            handler(value);\n          }\n        }\n      })\n    );\n  }\n\n  has<T>(key: string, handler: (t: T) => void) {\n    this.subscriptions.add(\n      this.subject.subscribe((changes) => {\n        if (changes[key]) {\n          const value: T = changes[key].currentValue;\n          handler(value);\n        }\n      })\n    );\n  }\n\n  notFirst<T>(key: string, handler: (t: T) => void) {\n    this.subscriptions.add(\n      this.subject.subscribe((changes) => {\n        if (changes[key] && !changes[key].isFirstChange()) {\n          const value: T = changes[key].currentValue;\n          handler(value);\n        }\n      })\n    );\n  }\n\n  notFirstAndEmpty<T>(key: string, handler: (t: T) => void) {\n    this.subscriptions.add(\n      this.subject.subscribe((changes) => {\n        if (changes[key] && !changes[key].isFirstChange()) {\n          const value: T = changes[key].currentValue;\n          if (value !== undefined && value !== null) {\n            handler(value);\n          }\n        }\n      })\n    );\n  }\n}\n","import {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  inject,\n  input,\n  output,\n} from '@angular/core';\nimport { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';\nimport type { ECElementEvent, ECharts, EChartsCoreOption, EChartsInitOpts } from 'echarts/core';\nimport { Observable, ReplaySubject, Subject, Subscription, asyncScheduler } from 'rxjs';\nimport { switchMap, throttleTime } from 'rxjs/operators';\nimport { ChangeFilterV2 } from './change-filter-v2';\nimport { NGX_ECHARTS_CONFIG, NgxEchartsConfig, ThemeOption } from './config';\n\n@Directive({\n  standalone: true,\n  selector: 'echarts, [echarts]',\n  exportAs: 'echarts',\n})\nexport class NgxEchartsDirective implements OnChanges, OnDestroy, OnInit, AfterViewInit {\n  private el = inject(ElementRef);\n  private ngZone = inject(NgZone);\n  private readonly config = inject<NgxEchartsConfig>(NGX_ECHARTS_CONFIG);\n\n  readonly options = input<EChartsCoreOption | null>(null);\n  readonly theme = input<string | ThemeOption | null>(this.config.theme ?? null);\n  readonly initOpts = input<EChartsInitOpts | null>(null);\n  readonly merge = input<EChartsCoreOption | null>(null);\n  readonly autoResize = input(true);\n  readonly loading = input(false);\n  readonly loadingType = input('default');\n  readonly loadingOpts = input<object | null>(null);\n\n  // ngx-echarts events\n  readonly chartInit = output<ECharts>();\n  readonly optionsError = output<Error>();\n\n  // echarts mouse events\n  readonly chartClick = outputFromObservable(this.createLazyEvent<ECElementEvent>('click'));\n  readonly chartDblClick = outputFromObservable(this.createLazyEvent<ECElementEvent>('dblclick'));\n  readonly chartMouseDown = outputFromObservable(this.createLazyEvent<ECElementEvent>('mousedown'));\n  readonly chartMouseMove = outputFromObservable(this.createLazyEvent<ECElementEvent>('mousemove'));\n  readonly chartMouseUp = outputFromObservable(this.createLazyEvent<ECElementEvent>('mouseup'));\n  readonly chartMouseOver = outputFromObservable(this.createLazyEvent<ECElementEvent>('mouseover'));\n  readonly chartMouseOut = outputFromObservable(this.createLazyEvent<ECElementEvent>('mouseout'));\n  readonly chartGlobalOut = outputFromObservable(this.createLazyEvent<ECElementEvent>('globalout'));\n  readonly chartContextMenu = outputFromObservable(\n    this.createLazyEvent<ECElementEvent>('contextmenu')\n  );\n\n  // echarts events\n  readonly chartHighlight = outputFromObservable(this.createLazyEvent<any>('highlight'));\n  readonly chartDownplay = outputFromObservable(this.createLazyEvent<any>('downplay'));\n  readonly chartSelectChanged = outputFromObservable(this.createLazyEvent<any>('selectchanged'));\n  readonly chartLegendSelectChanged = outputFromObservable(\n    this.createLazyEvent<any>('legendselectchanged')\n  );\n  readonly chartLegendSelected = outputFromObservable(this.createLazyEvent<any>('legendselected'));\n  readonly chartLegendUnselected = outputFromObservable(\n    this.createLazyEvent<any>('legendunselected')\n  );\n  readonly chartLegendLegendSelectAll = outputFromObservable(\n    this.createLazyEvent<any>('legendselectall')\n  );\n  readonly chartLegendLegendInverseSelect = outputFromObservable(\n    this.createLazyEvent<any>('legendinverseselect')\n  );\n  readonly chartLegendScroll = outputFromObservable(this.createLazyEvent<any>('legendscroll'));\n  readonly chartDataZoom = outputFromObservable(this.createLazyEvent<any>('datazoom'));\n  readonly chartDataRangeSelected = outputFromObservable(\n    this.createLazyEvent<any>('datarangeselected')\n  );\n  readonly chartGraphRoam = outputFromObservable(this.createLazyEvent<any>('graphroam'));\n  readonly chartGeoRoam = outputFromObservable(this.createLazyEvent<any>('georoam'));\n  readonly chartTreeRoam = outputFromObservable(this.createLazyEvent<any>('treeroam'));\n  readonly chartTimelineChanged = outputFromObservable(\n    this.createLazyEvent<any>('timelinechanged')\n  );\n  readonly chartTimelinePlayChanged = outputFromObservable(\n    this.createLazyEvent<any>('timelineplaychanged')\n  );\n  readonly chartRestore = outputFromObservable(this.createLazyEvent<any>('restore'));\n  readonly chartDataViewChanged = outputFromObservable(\n    this.createLazyEvent<any>('dataviewchanged')\n  );\n  readonly chartMagicTypeChanged = outputFromObservable(\n    this.createLazyEvent<any>('magictypechanged')\n  );\n  readonly chartGeoSelectChanged = outputFromObservable(\n    this.createLazyEvent<any>('geoselectchanged')\n  );\n  readonly chartGeoSelected = outputFromObservable(this.createLazyEvent<any>('geoselected'));\n  readonly chartGeoUnselected = outputFromObservable(this.createLazyEvent<any>('geounselected'));\n  readonly chartAxisAreaSelected = outputFromObservable(\n    this.createLazyEvent<any>('axisareaselected')\n  );\n  readonly chartBrush = outputFromObservable(this.createLazyEvent<any>('brush'));\n  readonly chartBrushEnd = outputFromObservable(this.createLazyEvent<any>('brushend'));\n  readonly chartBrushSelected = outputFromObservable(this.createLazyEvent<any>('brushselected'));\n  readonly chartGlobalCursorTaken = outputFromObservable(\n    this.createLazyEvent<any>('globalcursortaken')\n  );\n  readonly chartRendered = outputFromObservable(this.createLazyEvent<any>('rendered'));\n  readonly chartFinished = outputFromObservable(this.createLazyEvent<any>('finished'));\n\n  public animationFrameID: number | null = null;\n  private chart: ECharts | null = null;\n  private chart$ = new ReplaySubject<ECharts>(1);\n  private resizeOb?: ResizeObserver;\n  private resize$ = new Subject<void>();\n  private resizeSub?: Subscription;\n  private initChartTimer?: number;\n  private changeFilter = new ChangeFilterV2();\n  private loadingSub?: Subscription;\n  private resizeObFired: boolean = false;\n  private echarts: any = this.config.echarts;\n\n  ngOnChanges(changes: SimpleChanges) {\n    this.changeFilter.doFilter(changes);\n  }\n\n  ngOnInit() {\n    if (!window.ResizeObserver) {\n      throw new Error('please install a polyfill for ResizeObserver');\n    }\n    this.resizeSub = this.resize$\n      .pipe(throttleTime(100, asyncScheduler, { leading: false, trailing: true }))\n      .subscribe(() => this.resize());\n\n    if (this.autoResize()) {\n      // https://github.com/xieziyu/ngx-echarts/issues/413\n      this.resizeOb = this.ngZone.runOutsideAngular(\n        () =>\n          new window.ResizeObserver((entries) => {\n            for (const entry of entries) {\n              if (entry.target === this.el.nativeElement) {\n                // Ignore first fire on insertion, no resize actually happened\n                if (!this.resizeObFired) {\n                  this.resizeObFired = true;\n                } else {\n                  this.animationFrameID = window.requestAnimationFrame(() => {\n                    this.resize$.next();\n                  });\n                }\n              }\n            }\n          })\n      );\n      this.resizeOb.observe(this.el.nativeElement);\n    }\n\n    this.changeFilter.notFirstAndEmpty('options', (opt) => this.onOptionsChange(opt));\n    this.changeFilter.notFirstAndEmpty('merge', (opt) => this.setOption(opt));\n    this.changeFilter.has<boolean>('loading', (v) => this.toggleLoading(!!v));\n    this.changeFilter.notFirst<string | ThemeOption>('theme', () => this.refreshChart());\n  }\n\n  ngOnDestroy() {\n    window.clearTimeout(this.initChartTimer);\n    if (this.resizeSub) {\n      this.resizeSub.unsubscribe();\n    }\n    if (this.animationFrameID) {\n      window.cancelAnimationFrame(this.animationFrameID);\n    }\n    if (this.resizeOb) {\n      this.resizeOb.unobserve(this.el.nativeElement);\n    }\n    if (this.loadingSub) {\n      this.loadingSub.unsubscribe();\n    }\n    this.changeFilter.dispose();\n    this.dispose();\n  }\n\n  ngAfterViewInit() {\n    this.initChartTimer = window.setTimeout(() => this.initChart());\n  }\n\n  private dispose() {\n    if (this.chart) {\n      if (!this.chart.isDisposed()) {\n        this.chart.dispose();\n      }\n      this.chart = null;\n    }\n  }\n\n  /**\n   * resize chart\n   */\n  resize() {\n    if (this.chart) {\n      this.chart.resize();\n    }\n  }\n\n  private toggleLoading(loading: boolean) {\n    if (this.chart) {\n      loading\n        ? this.chart.showLoading(this.loadingType(), this.loadingOpts() ?? undefined)\n        : this.chart.hideLoading();\n    } else {\n      this.loadingSub = this.chart$.subscribe((chart) =>\n        loading\n          ? chart.showLoading(this.loadingType(), this.loadingOpts() ?? undefined)\n          : chart.hideLoading()\n      );\n    }\n  }\n\n  private setOption(option: any, opts?: any) {\n    if (this.chart) {\n      try {\n        this.chart.setOption(option, opts);\n      } catch (e) {\n        console.error(e);\n        this.optionsError.emit(e instanceof Error ? e : new Error(String(e)));\n      }\n    }\n  }\n\n  /**\n   * dispose old chart and create a new one.\n   */\n  async refreshChart() {\n    this.dispose();\n    await this.initChart();\n  }\n\n  private createChart() {\n    const dom = this.el.nativeElement;\n\n    if (window && window.getComputedStyle) {\n      const prop = window.getComputedStyle(dom, null).getPropertyValue('height');\n      if ((!prop || prop === '0px') && (!dom.style.height || dom.style.height === '0px')) {\n        dom.style.height = '400px';\n      }\n    }\n\n    // here a bit tricky: we check if the echarts module is provided as function returning native import('...') then use the promise\n    // otherwise create the function that imitates behaviour above with a provided as is module\n    return this.ngZone.runOutsideAngular(() => {\n      const load =\n        typeof this.echarts === 'function' ? this.echarts : () => Promise.resolve(this.echarts);\n\n      return load().then(({ init }: { init: (typeof import('echarts/core'))['init'] }) =>\n        init(dom, this.theme() ?? this.config?.theme, this.initOpts() ?? undefined)\n      );\n    });\n  }\n\n  private async initChart() {\n    await this.onOptionsChange(this.options());\n\n    const merge = this.merge();\n    if (merge && this.chart) {\n      this.setOption(merge);\n    }\n  }\n\n  private async onOptionsChange(opt: any) {\n    if (!opt) {\n      return;\n    }\n\n    if (this.chart) {\n      this.setOption(this.options(), true);\n    } else {\n      const chart = await this.createChart();\n      this.chart = chart;\n      this.chart$.next(chart);\n      this.chartInit.emit(chart);\n      this.setOption(this.options(), true);\n    }\n  }\n\n  // allows to lazily bind to only those events that are requested through the `output()` by parent components\n  // see https://stackoverflow.com/questions/51787972/optimal-reentering-the-ngzone-from-eventemitter-event for more info\n  private createLazyEvent<T>(eventName: string): Observable<T> {\n    return outputToObservable(this.chartInit).pipe(\n      switchMap(\n        (chart: any) =>\n          new Observable((observer) => {\n            chart.on(eventName, (data: T) => this.ngZone.run(() => observer.next(data)));\n            return () => {\n              if (this.chart) {\n                if (!this.chart.isDisposed()) {\n                  chart.off(eventName);\n                }\n              }\n            };\n          })\n      )\n    ) as EventEmitter<T>;\n  }\n}\n","import { Provider } from '@angular/core';\nimport { NGX_ECHARTS_CONFIG, NgxEchartsConfig } from './config';\n\nexport function provideEchartsCore(config: NgxEchartsConfig): Provider {\n  return {\n    provide: NGX_ECHARTS_CONFIG,\n    useValue: config,\n  };\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgxEchartsConfig } from './config';\nimport { NgxEchartsDirective } from './ngx-echarts.directive';\nimport { provideEchartsCore } from './provide';\n\n@NgModule({\n  imports: [NgxEchartsDirective],\n  exports: [NgxEchartsDirective],\n})\nexport class NgxEchartsModule {\n  static forRoot(config: NgxEchartsConfig): ModuleWithProviders<NgxEchartsModule> {\n    return {\n      ngModule: NgxEchartsModule,\n      providers: [provideEchartsCore(config)],\n    };\n  }\n  static forChild(): ModuleWithProviders<NgxEchartsModule> {\n    return {\n      ngModule: NgxEchartsModule,\n    };\n  }\n}\n","/*\n * Public API Surface of ngx-echarts\n */\n\nexport * from './lib/config';\nexport * from './lib/ngx-echarts.directive';\nexport * from './lib/ngx-echarts.module';\nexport * from './lib/provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}