{"version":3,"file":"angular-google-charts-test.mjs","sources":["../../../libs/angular-google-charts/src/lib/components/chart-editor/chart-editor-ref.ts","../../../libs/angular-google-charts/src/lib/types/chart-type.ts","../../../libs/angular-google-charts/src/lib/helpers/chart.helper.ts","../../../libs/angular-google-charts/src/lib/types/google-charts-config.ts","../../../libs/angular-google-charts/src/lib/services/script-loader.service.ts","../../../libs/angular-google-charts/src/lib/components/chart-editor/chart-editor.component.ts","../../../libs/angular-google-charts/src/lib/services/data-table.service.ts","../../../libs/angular-google-charts/src/lib/helpers/id.helper.ts","../../../libs/angular-google-charts/src/lib/types/control-type.ts","../../../libs/angular-google-charts/src/lib/components/control-wrapper/control-wrapper.component.ts","../../../libs/angular-google-charts/src/lib/components/dashboard/dashboard.component.ts","../../../libs/angular-google-charts/src/lib/components/google-chart/google-chart.component.ts","../../../libs/angular-google-charts/src/lib/components/chart-wrapper/chart-wrapper.component.ts","../../../libs/angular-google-charts/src/lib/google-charts.module.ts","../../../libs/angular-google-charts/src/index.ts","../../../libs/angular-google-charts/src/angular-google-charts-test.ts"],"sourcesContent":["/// <reference path=\"./types.ts\" />\r\n\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport type EditChartResult = google.visualization.ChartWrapper | null;\r\n\r\nexport class ChartEditorRef {\r\n  private readonly doneSubject = new Subject<EditChartResult>();\r\n\r\n  constructor(private readonly editor: google.visualization.ChartEditor) {\r\n    this.addEventListeners();\r\n  }\r\n\r\n  /**\r\n   * Gets an observable that is notified when the dialog is saved.\r\n   * Emits either the result if the dialog was saved or `null` if editing was cancelled.\r\n   */\r\n  public afterClosed(): Observable<EditChartResult> {\r\n    return this.doneSubject.asObservable();\r\n  }\r\n\r\n  /**\r\n   * Stops editing the chart and closes the dialog.\r\n   */\r\n  public cancel() {\r\n    this.editor.closeDialog();\r\n  }\r\n\r\n  private addEventListeners() {\r\n    google.visualization.events.addOneTimeListener(this.editor, 'ok', () => {\r\n      google.visualization.events.removeAllListeners(this.editor);\r\n\r\n      const updatedChartWrapper = this.editor.getChartWrapper();\r\n\r\n      this.doneSubject.next(updatedChartWrapper);\r\n      this.doneSubject.complete();\r\n    });\r\n\r\n    google.visualization.events.addOneTimeListener(this.editor, 'cancel', () => {\r\n      google.visualization.events.removeAllListeners(this.editor);\r\n\r\n      this.doneSubject.next(null);\r\n      this.doneSubject.complete();\r\n    });\r\n  }\r\n}\r\n","export enum ChartType {\r\n  AnnotationChart = 'AnnotationChart',\r\n  AreaChart = 'AreaChart',\r\n  Bar = 'Bar',\r\n  BarChart = 'BarChart',\r\n  BubbleChart = 'BubbleChart',\r\n  Calendar = 'Calendar',\r\n  CandlestickChart = 'CandlestickChart',\r\n  ColumnChart = 'ColumnChart',\r\n  ComboChart = 'ComboChart',\r\n  PieChart = 'PieChart',\r\n  Gantt = 'Gantt',\r\n  Gauge = 'Gauge',\r\n  GeoChart = 'GeoChart',\r\n  Histogram = 'Histogram',\r\n  Line = 'Line',\r\n  LineChart = 'LineChart',\r\n  Map = 'Map',\r\n  OrgChart = 'OrgChart',\r\n  Sankey = 'Sankey',\r\n  Scatter = 'Scatter',\r\n  ScatterChart = 'ScatterChart',\r\n  SteppedAreaChart = 'SteppedAreaChart',\r\n  Table = 'Table',\r\n  Timeline = 'Timeline',\r\n  TreeMap = 'TreeMap',\r\n  WordTree = 'wordtree'\r\n}\r\n","import { ChartType } from '../types/chart-type';\r\nimport { GoogleChartsConfig } from '../types/google-charts-config';\r\n\r\nconst ChartTypesToPackages = {\r\n  [ChartType.AnnotationChart]: 'annotationchart',\r\n  [ChartType.AreaChart]: 'corechart',\r\n  [ChartType.Bar]: 'bar',\r\n  [ChartType.BarChart]: 'corechart',\r\n  [ChartType.BubbleChart]: 'corechart',\r\n  [ChartType.Calendar]: 'calendar',\r\n  [ChartType.CandlestickChart]: 'corechart',\r\n  [ChartType.ColumnChart]: 'corechart',\r\n  [ChartType.ComboChart]: 'corechart',\r\n  [ChartType.PieChart]: 'corechart',\r\n  [ChartType.Gantt]: 'gantt',\r\n  [ChartType.Gauge]: 'gauge',\r\n  [ChartType.GeoChart]: 'geochart',\r\n  [ChartType.Histogram]: 'corechart',\r\n  [ChartType.Line]: 'line',\r\n  [ChartType.LineChart]: 'corechart',\r\n  [ChartType.Map]: 'map',\r\n  [ChartType.OrgChart]: 'orgchart',\r\n  [ChartType.Sankey]: 'sankey',\r\n  [ChartType.Scatter]: 'scatter',\r\n  [ChartType.ScatterChart]: 'corechart',\r\n  [ChartType.SteppedAreaChart]: 'corechart',\r\n  [ChartType.Table]: 'table',\r\n  [ChartType.Timeline]: 'timeline',\r\n  [ChartType.TreeMap]: 'treemap',\r\n  [ChartType.WordTree]: 'wordtree'\r\n};\r\n\r\nexport function getPackageForChart(type: ChartType): string {\r\n  return ChartTypesToPackages[type];\r\n}\r\n\r\nexport function getDefaultConfig(): GoogleChartsConfig {\r\n  return {\r\n    version: 'current',\r\n    safeMode: false\r\n  };\r\n}\r\n","import { inject, InjectFlags, InjectionToken } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\n\r\nimport { getDefaultConfig } from '../helpers/chart.helper';\r\n\r\nexport interface GoogleChartsConfig {\r\n  /**\r\n   * This setting lets you specify a key that you may use with Geochart and Map Chart.\r\n   * You may want to do this rather than using the default behavior which may result in\r\n   * occasional throttling of service for your users.\r\n   *\r\n   * Only available when using Google Charts 45 or higher.\r\n   *\r\n   * {@link https://developers.google.com/chart/interactive/docs/basic_load_libs#load-settings Parameter documentation }\r\n   * {@link https://developers.google.com/chart/interactive/docs/gallery/geochart GeoChart Documentation}\r\n   */\r\n  mapsApiKey?: string;\r\n\r\n  /**\r\n   * Which version of Google Charts to use.\r\n   *\r\n   * Please note that this library does only work with Google Charts 45 or higher.\r\n   *\r\n   * @description\r\n   * Can be either a number specifying a\r\n   * {@link https://developers.google.com/chart/interactive/docs/release_notes#current:-january-6,-2020 frozen version } of Google Charts\r\n   * or one of the special versions `current` and `upcoming`.\r\n   *\r\n   * Defaults to `current`.\r\n   *\r\n   * {@link https://developers.google.com/chart/interactive/docs/basic_load_libs#basic-library-loading Offical Documentation}\r\n   */\r\n  version?: string;\r\n\r\n  /**\r\n   * When set to true, all charts and tooltips that generate HTML from user-supplied data will sanitize it\r\n   * by stripping out unsafe elements and attributes.\r\n   *\r\n   * Only available when using GoogleCharts 47 or higher.\r\n   *\r\n   * {@link https://developers.google.com/chart/interactive/docs/basic_load_libs#load-settings Parameter documentation }\r\n   */\r\n  safeMode?: boolean;\r\n}\r\n\r\nexport const GOOGLE_CHARTS_CONFIG = new InjectionToken<Observable<GoogleChartsConfig>>('GOOGLE_CHARTS_CONFIG');\r\nexport const GOOGLE_CHARTS_LAZY_CONFIG = new InjectionToken<Observable<GoogleChartsConfig>>(\r\n  'GOOGLE_CHARTS_LAZY_CONFIG',\r\n  {\r\n    providedIn: 'root',\r\n    factory: () => {\r\n      const configFromModule = inject(GOOGLE_CHARTS_CONFIG, InjectFlags.Optional);\r\n      return of({ ...getDefaultConfig(), ...(configFromModule || {}) });\r\n    }\r\n  }\r\n);\r\n","import { Inject, Injectable, LOCALE_ID, NgZone } from '@angular/core';\r\nimport { Observable, of, Subject } from 'rxjs';\r\nimport { map, mergeMap, switchMap } from 'rxjs/operators';\r\n\r\nimport { getDefaultConfig } from '../helpers/chart.helper';\r\nimport { GoogleChartsConfig, GOOGLE_CHARTS_LAZY_CONFIG } from '../types/google-charts-config';\r\n\r\n@Injectable()\r\nexport class ScriptLoaderService {\r\n  private readonly scriptSource = 'https://www.gstatic.com/charts/loader.js';\r\n  private readonly scriptLoadSubject = new Subject<void>();\r\n\r\n  constructor(\r\n    private zone: NgZone,\r\n    @Inject(LOCALE_ID) private localeId: string,\r\n    @Inject(GOOGLE_CHARTS_LAZY_CONFIG) private readonly config$: Observable<GoogleChartsConfig>\r\n  ) { }\r\n\r\n  /**\r\n   * Checks whether `google.charts` is available.\r\n   *\r\n   * If not, it can be loaded by calling `loadChartPackages`.\r\n   *\r\n   * @returns `true` if `google.charts` is available, `false` otherwise.\r\n   */\r\n  public isGoogleChartsAvailable(): boolean {\r\n    if (typeof google === 'undefined' || typeof google.charts === 'undefined') {\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * Loads the Google Chart script and the provided chart packages.\r\n   * Can be called multiple times to load more packages.\r\n   *\r\n   * When called without any arguments, this will just load the default package\r\n   * containing the namespaces `google.charts` and `google.visualization` without any charts.\r\n   *\r\n   * @param packages The packages to load.\r\n   * @returns A stream emitting as soon as the chart packages are loaded.\r\n   */\r\n  public loadChartPackages(...packages: string[]): Observable<null> {\r\n    return this.loadGoogleCharts().pipe(\r\n      mergeMap(() => this.config$),\r\n      map(config => {\r\n        return { ...getDefaultConfig(), ...(config || {}) };\r\n      }),\r\n      switchMap((googleChartsConfig: GoogleChartsConfig) => {\r\n        return new Observable<null>(observer => {\r\n          const config = {\r\n            packages,\r\n            language: this.localeId,\r\n            mapsApiKey: googleChartsConfig.mapsApiKey,\r\n            safeMode: googleChartsConfig.safeMode\r\n          };\r\n\r\n          google.charts.load(googleChartsConfig.version!, config);\r\n          google.charts.setOnLoadCallback(() => {\r\n            this.zone.run(() => {\r\n              observer.next();\r\n              observer.complete();\r\n            });\r\n          });\r\n        });\r\n      })\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Loads the Google Charts script. After the script is loaded, `google.charts` is defined.\r\n   *\r\n   * @returns A stream emitting as soon as loading has completed.\r\n   * If the google charts script is already loaded, the stream emits immediately.\r\n   */\r\n  private loadGoogleCharts(): Observable<void> {\r\n    if (this.isGoogleChartsAvailable()) {\r\n      return of(undefined);\r\n    } else if (!this.isLoadingGoogleCharts()) {\r\n      const script = this.createGoogleChartsScript();\r\n      script.onload = () => {\r\n        this.zone.run(() => {\r\n          this.scriptLoadSubject.next();\r\n          this.scriptLoadSubject.complete();\r\n        });\r\n      };\r\n\r\n      script.onerror = () => {\r\n        this.zone.run(() => {\r\n          console.error('Failed to load the google charts script!');\r\n          this.scriptLoadSubject.error(new Error('Failed to load the google charts script!'));\r\n        });\r\n      };\r\n    }\r\n\r\n    return this.scriptLoadSubject.asObservable();\r\n  }\r\n\r\n  private isLoadingGoogleCharts() {\r\n    return this.getGoogleChartsScript() != null;\r\n  }\r\n\r\n  private getGoogleChartsScript(): HTMLScriptElement | undefined {\r\n    const pageScripts = Array.from(document.getElementsByTagName('script'));\r\n    return pageScripts.find(script => script.src === this.scriptSource);\r\n  }\r\n\r\n  private createGoogleChartsScript(): HTMLScriptElement {\r\n    const script = document.createElement('script');\r\n    script.type = 'text/javascript';\r\n    script.src = this.scriptSource;\r\n    script.async = true;\r\n    document.getElementsByTagName('head')[0].appendChild(script);\r\n    return script;\r\n  }\r\n}\r\n","/// <reference path=\"./types.ts\" />\r\n\r\nimport { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { ScriptLoaderService } from '../../services/script-loader.service';\r\nimport { ChartBase } from '../chart-base/chart-base.component';\r\n\r\nimport { ChartEditorRef } from './chart-editor-ref';\r\n\r\n@Component({\r\n  selector: 'chart-editor',\r\n  template: `<ng-content></ng-content>`,\r\n  host: { class: 'chart-editor' },\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ChartEditorComponent implements OnInit {\r\n  private editor: google.visualization.ChartEditor | undefined;\r\n  private initializedSubject = new Subject<google.visualization.ChartEditor>();\r\n\r\n  constructor(private scriptLoaderService: ScriptLoaderService) {}\r\n\r\n  /**\r\n   * Emits as soon as the chart editor is fully initialized.\r\n   */\r\n  public get initialized$() {\r\n    return this.initializedSubject.asObservable();\r\n  }\r\n\r\n  public ngOnInit() {\r\n    this.scriptLoaderService.loadChartPackages('charteditor').subscribe(() => {\r\n      this.editor = new google.visualization.ChartEditor();\r\n      this.initializedSubject.next(this.editor);\r\n      this.initializedSubject.complete();\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Opens the chart editor as an embedded dialog box on the page.\r\n   * If the editor gets saved, the components' chart will be updated with the result.\r\n   *\r\n   * @param component The chart to be edited.\r\n   * @returns A reference to the open editor.\r\n   */\r\n  public editChart(component: ChartBase): ChartEditorRef;\r\n  public editChart(component: ChartBase, options: google.visualization.ChartEditorOptions): ChartEditorRef;\r\n  public editChart(component: ChartBase, options?: google.visualization.ChartEditorOptions) {\r\n    if (!component.chartWrapper) {\r\n      throw new Error(\r\n        'Chart wrapper is `undefined`. Please wait for the `initialized$` observable before trying to edit a chart.'\r\n      );\r\n    }\r\n    if (!this.editor) {\r\n      throw new Error(\r\n        'Chart editor is `undefined`. Please wait for the `initialized$` observable before trying to edit a chart.'\r\n      );\r\n    }\r\n\r\n    const handle = new ChartEditorRef(this.editor);\r\n    this.editor.openDialog(component.chartWrapper, options || {});\r\n\r\n    handle.afterClosed().subscribe(result => {\r\n      if (result) {\r\n        component.chartWrapper = result;\r\n      }\r\n    });\r\n\r\n    return handle;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Column, Row } from '../components/chart-base/chart-base.component';\r\nimport { Formatter } from '../types/formatter';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DataTableService {\r\n  public create(\r\n    data: Row[] | undefined,\r\n    columns?: Column[],\r\n    formatters?: Formatter[]\r\n  ): google.visualization.DataTable | undefined {\r\n    if (data == null) {\r\n      return undefined;\r\n    }\r\n\r\n    let firstRowIsData = true;\r\n    if (columns != null) {\r\n      firstRowIsData = false;\r\n    }\r\n\r\n    const dataTable = google.visualization.arrayToDataTable(this.getDataAsTable(data, columns), firstRowIsData);\r\n    if (formatters) {\r\n      this.applyFormatters(dataTable, formatters);\r\n    }\r\n\r\n    return dataTable;\r\n  }\r\n\r\n  private getDataAsTable(data: Row[], columns: Column[] | undefined): (Row | Column[])[] {\r\n    if (columns) {\r\n      return [columns, ...data];\r\n    } else {\r\n      return data;\r\n    }\r\n  }\r\n\r\n  private applyFormatters(dataTable: google.visualization.DataTable, formatters: Formatter[]): void {\r\n    for (const val of formatters) {\r\n      val.formatter.format(dataTable, val.colIndex);\r\n    }\r\n  }\r\n}\r\n","/**\r\n * Generates a random ID which can be used to uniquely identify an element.\r\n */\r\nexport function generateRandomId() {\r\n  // Math.random should be unique because of its seeding algorithm.\r\n  // Convert it to base 36 (numbers + letters), and grab the first 9 characters\r\n  // after the decimal.\r\n  return '_' + Math.random().toString(36).substr(2, 9);\r\n}\r\n","export enum FilterType {\r\n  Category = 'CategoryFilter',\r\n  ChartRange = 'ChartRangeFilter',\r\n  DateRange = 'DateRangeFilter',\r\n  NumberRange = 'NumberRangeFilter',\r\n  String = 'StringFilter'\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Input,\r\n  OnChanges,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\n\r\nimport { generateRandomId } from '../../helpers/id.helper';\r\nimport { ScriptLoaderService } from '../../services/script-loader.service';\r\nimport { FilterType } from '../../types/control-type';\r\nimport { ChartErrorEvent, ChartReadyEvent } from '../../types/events';\r\nimport { ChartBase } from '../chart-base/chart-base.component';\r\n\r\n@Component({\r\n  selector: 'control-wrapper',\r\n  template: '',\r\n  host: { class: 'control-wrapper' },\r\n  exportAs: 'controlWrapper',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ControlWrapperComponent implements OnInit, OnChanges {\r\n  /**\r\n   * Charts controlled by this control wrapper. Can be a single chart or an array of charts.\r\n   */\r\n  @Input()\r\n  public for!: ChartBase | ChartBase[];\r\n\r\n  /**\r\n   * The class name of the control.\r\n   * The `google.visualization` package name can be omitted for Google controls.\r\n   *\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <control-wrapper type=\"CategoryFilter\"></control-wrapper>\r\n   * ```\r\n   */\r\n  @Input()\r\n  public type!: FilterType;\r\n\r\n  /**\r\n   * An object describing the options for the control.\r\n   * You can use either JavaScript literal notation, or provide a handle to the object.\r\n   *\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <control-wrapper [options]=\"{'filterColumnLabel': 'Age', 'minValue': 10, 'maxValue': 80}\"></control-wrapper>\r\n   * ```\r\n   */\r\n  @Input()\r\n  public options?: object;\r\n\r\n  /**\r\n   * An object describing the state of the control.\r\n   * The state collects all the variables that the user operating the control can affect.\r\n   *\r\n   * For example, a range slider state can be described in term of the positions that the low and high thumb\r\n   * of the slider occupy.\r\n   * You can use either Javascript literal notation, or provide a handle to the object.\r\n   *\r\n   * @example\r\n   *\r\n   *  ```html\r\n   * <control-wrapper [state]=\"{'lowValue': 20, 'highValue': 50}\"></control-wrapper>\r\n   * ```\r\n   */\r\n  @Input()\r\n  public state?: object;\r\n\r\n  /**\r\n   * Emits when an error occurs when attempting to render the control.\r\n   */\r\n  @Output()\r\n  public error = new EventEmitter<ChartErrorEvent>();\r\n\r\n  /**\r\n   * The control is ready to accept user interaction and for external method calls.\r\n   *\r\n   * Alternatively, you can listen for a ready event on the dashboard holding the control\r\n   * and call control methods only after the event was fired.\r\n   */\r\n  @Output()\r\n  public ready = new EventEmitter<ChartReadyEvent>();\r\n\r\n  /**\r\n   * Emits when the user interacts with the control, affecting its state.\r\n   * For example, a `stateChange` event will be emitted whenever you move the thumbs of a range slider control.\r\n   *\r\n   * To retrieve an updated control state after the event fired, call `ControlWrapper.getState()`.\r\n   */\r\n  @Output()\r\n  public stateChange = new EventEmitter<unknown>();\r\n\r\n  /**\r\n   * A generated id assigned to this components DOM element.\r\n   */\r\n  @HostBinding('id')\r\n  public readonly id = generateRandomId();\r\n\r\n  private _controlWrapper?: google.visualization.ControlWrapper;\r\n  private wrapperReadySubject = new ReplaySubject<google.visualization.ControlWrapper>(1);\r\n\r\n  constructor(private loaderService: ScriptLoaderService) {}\r\n\r\n  /**\r\n   * Emits after the `ControlWrapper` was created.\r\n   */\r\n  public get wrapperReady$() {\r\n    return this.wrapperReadySubject.asObservable();\r\n  }\r\n\r\n  public get controlWrapper(): google.visualization.ControlWrapper {\r\n    if (!this._controlWrapper) {\r\n      throw new Error(`Cannot access the control wrapper before it being initialized.`);\r\n    }\r\n\r\n    return this._controlWrapper;\r\n  }\r\n\r\n  public ngOnInit() {\r\n    this.loaderService.loadChartPackages('controls').subscribe(() => {\r\n      this.createControlWrapper();\r\n    });\r\n  }\r\n\r\n  public ngOnChanges(changes: SimpleChanges): void {\r\n    if (!this._controlWrapper) {\r\n      return;\r\n    }\r\n\r\n    if (changes['type']) {\r\n      this._controlWrapper.setControlType(this.type);\r\n    }\r\n\r\n    if (changes['options']) {\r\n      this._controlWrapper.setOptions(this.options || {});\r\n    }\r\n\r\n    if (changes['state']) {\r\n      this._controlWrapper.setState(this.state || {});\r\n    }\r\n  }\r\n\r\n  private createControlWrapper() {\r\n    this._controlWrapper = new google.visualization.ControlWrapper({\r\n      containerId: this.id,\r\n      controlType: this.type,\r\n      state: this.state,\r\n      options: this.options\r\n    });\r\n\r\n    this.addEventListeners();\r\n    this.wrapperReadySubject.next(this._controlWrapper);\r\n  }\r\n\r\n  private addEventListeners() {\r\n    google.visualization.events.removeAllListeners(this._controlWrapper);\r\n\r\n    google.visualization.events.addListener(this._controlWrapper, 'ready', (event: ChartReadyEvent) =>\r\n      this.ready.emit(event)\r\n    );\r\n    google.visualization.events.addListener(this._controlWrapper, 'error', (event: ChartErrorEvent) =>\r\n      this.error.emit(event)\r\n    );\r\n    google.visualization.events.addListener(this._controlWrapper, 'statechange', (event: unknown) =>\r\n      this.stateChange.emit(event)\r\n    );\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChildren,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnInit,\r\n  Output,\r\n  QueryList,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { combineLatest } from 'rxjs';\r\n\r\nimport { DataTableService } from '../../services/data-table.service';\r\nimport { ScriptLoaderService } from '../../services/script-loader.service';\r\nimport { ChartErrorEvent } from '../../types/events';\r\nimport { Formatter } from '../../types/formatter';\r\nimport { Column, Row } from '../chart-base/chart-base.component';\r\nimport { ControlWrapperComponent } from '../control-wrapper/control-wrapper.component';\r\n\r\n@Component({\r\n  selector: 'dashboard',\r\n  template: '<ng-content></ng-content>',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  exportAs: 'dashboard',\r\n  host: { class: 'dashboard' }\r\n})\r\nexport class DashboardComponent implements OnInit, OnChanges {\r\n  /**\r\n   * Data used to initialize the table.\r\n   *\r\n   * This must also contain all roles that are set in the `columns` property.\r\n   */\r\n  @Input()\r\n  public data!: Row[];\r\n\r\n  /**\r\n   * The columns the `data` consists of.\r\n   * The length of this array must match the length of each row in the `data` object.\r\n   *\r\n   * If {@link https://developers.google.com/chart/interactive/docs/roles roles} should be applied, they must be included in this array as well.\r\n   */\r\n  @Input()\r\n  public columns?: Column[];\r\n\r\n  /**\r\n   * Used to change the displayed value of the specified column in all rows.\r\n   *\r\n   * Each array element must consist of an instance of a [`formatter`](https://developers.google.com/chart/interactive/docs/reference#formatters)\r\n   * and the index of the column you want the formatter to get applied to.\r\n   */\r\n  @Input()\r\n  public formatters?: Formatter[];\r\n\r\n  /**\r\n   * The dashboard has completed drawing and is ready to accept changes.\r\n   *\r\n   * The ready event will also fire:\r\n   * - after the completion of a dashboard refresh triggered by a user or programmatic interaction with one of the controls,\r\n   * - after redrawing any chart on the dashboard.\r\n   */\r\n  @Output()\r\n  public ready = new EventEmitter<void>();\r\n\r\n  /**\r\n   * Emits when an error occurs when attempting to render the dashboard.\r\n   * One or more of the controls and charts that are part of the dashboard may have failed rendering.\r\n   */\r\n  @Output()\r\n  public error = new EventEmitter<ChartErrorEvent>();\r\n\r\n  @ContentChildren(ControlWrapperComponent)\r\n  private controlWrappers!: QueryList<ControlWrapperComponent>;\r\n\r\n  private dashboard?: google.visualization.Dashboard;\r\n  private dataTable?: google.visualization.DataTable;\r\n  private initialized = false;\r\n\r\n  constructor(\r\n    private element: ElementRef,\r\n    private loaderService: ScriptLoaderService,\r\n    private dataTableService: DataTableService\r\n  ) {}\r\n\r\n  public ngOnInit() {\r\n    this.loaderService.loadChartPackages('controls').subscribe(() => {\r\n      this.dataTable = this.dataTableService.create(this.data, this.columns, this.formatters);\r\n      this.createDashboard();\r\n      this.initialized = true;\r\n    });\r\n  }\r\n\r\n  public ngOnChanges(changes: SimpleChanges): void {\r\n    if (!this.initialized) {\r\n      return;\r\n    }\r\n\r\n    if (changes['data'] || changes['columns'] || changes['formatters']) {\r\n      this.dataTable = this.dataTableService.create(this.data, this.columns, this.formatters);\r\n      this.dashboard!.draw(this.dataTable!);\r\n    }\r\n  }\r\n\r\n  private createDashboard(): void {\r\n    // TODO: This should happen in the control wrapper\r\n    // However, I don't yet know how to do this because then `bind()` would get called multiple times\r\n    // for the same control if something changes. This is not supported by google charts as far as I can tell\r\n    // from their source code.\r\n    const controlWrappersReady$ = this.controlWrappers.map(control => control.wrapperReady$);\r\n    const chartsReady$ = this.controlWrappers\r\n      .map(control => control.for)\r\n      .map(charts => {\r\n        if (Array.isArray(charts)) {\r\n          // CombineLatest waits for all observables\r\n          return combineLatest(charts.map(chart => chart.wrapperReady$));\r\n        } else {\r\n          return charts.wrapperReady$;\r\n        }\r\n      });\r\n\r\n    // We have to wait for all chart wrappers and control wrappers to be initialized\r\n    // before we can compose them together to create the dashboard\r\n    combineLatest([...controlWrappersReady$, ...chartsReady$]).subscribe(() => {\r\n      this.dashboard = new google.visualization.Dashboard(this.element.nativeElement);\r\n      this.initializeBindings();\r\n      this.registerEvents();\r\n      this.dashboard.draw(this.dataTable!);\r\n    });\r\n  }\r\n\r\n  private registerEvents(): void {\r\n    google.visualization.events.removeAllListeners(this.dashboard);\r\n\r\n    const registerDashEvent = (object: any, eventName: string, callback: Function) => {\r\n      google.visualization.events.addListener(object, eventName, callback);\r\n    };\r\n\r\n    registerDashEvent(this.dashboard, 'ready', () => this.ready.emit());\r\n    registerDashEvent(this.dashboard, 'error', (error: ChartErrorEvent) => this.error.emit(error));\r\n  }\r\n\r\n  private initializeBindings(): void {\r\n    this.controlWrappers.forEach(control => {\r\n      if (Array.isArray(control.for)) {\r\n        const chartWrappers = control.for.map(chart => chart.chartWrapper);\r\n        this.dashboard!.bind(control.controlWrapper, chartWrappers);\r\n      } else {\r\n        this.dashboard!.bind(control.controlWrapper, control.for.chartWrapper);\r\n      }\r\n    });\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n  Output,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { fromEvent, Observable, ReplaySubject, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { getPackageForChart } from '../../helpers/chart.helper';\r\nimport { DataTableService } from '../../services/data-table.service';\r\nimport { ScriptLoaderService } from '../../services/script-loader.service';\r\nimport { ChartType } from '../../types/chart-type';\r\nimport {\r\n  ChartErrorEvent,\r\n  ChartMouseLeaveEvent,\r\n  ChartMouseOverEvent,\r\n  ChartReadyEvent,\r\n  ChartSelectionChangedEvent\r\n} from '../../types/events';\r\nimport { Formatter } from '../../types/formatter';\r\nimport { ChartBase, Column, Row } from '../chart-base/chart-base.component';\r\nimport { DashboardComponent } from '../dashboard/dashboard.component';\r\n\r\n@Component({\r\n  selector: 'google-chart',\r\n  template: '',\r\n  styles: [':host { width: fit-content; display: block; }'],\r\n  host: { class: 'google-chart' },\r\n  exportAs: 'googleChart',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class GoogleChartComponent implements ChartBase, OnInit, OnChanges, OnDestroy {\r\n  /**\r\n   * The type of the chart to create.\r\n   */\r\n  @Input()\r\n  public type!: ChartType;\r\n\r\n  /**\r\n   * Data used to initialize the table.\r\n   *\r\n   * This must also contain all roles that are set in the `columns` property.\r\n   */\r\n  @Input()\r\n  public data!: Row[];\r\n\r\n  /**\r\n   * The columns the `data` consists of.\r\n   * The length of this array must match the length of each row in the `data` object.\r\n   *\r\n   * If {@link https://developers.google.com/chart/interactive/docs/roles roles} should be applied, they must be included in this array as well.\r\n   */\r\n  @Input()\r\n  public columns?: Column[];\r\n\r\n  /**\r\n   * A convenience property used to set the title of the chart.\r\n   *\r\n   * This can also be set using `options.title`, which, if existant, will overwrite this value.\r\n   */\r\n  @Input()\r\n  public title?: string;\r\n\r\n  /**\r\n   * A convenience property used to set the width of the chart in pixels.\r\n   *\r\n   * This can also be set using `options.width`, which, if existant, will overwrite this value.\r\n   */\r\n  @Input()\r\n  public width?: number;\r\n\r\n  /**\r\n   * A convenience property used to set the height of the chart in pixels.\r\n   *\r\n   * This can also be set using `options.height`, which, if existant, will overwrite this value.\r\n   */\r\n  @Input()\r\n  public height?: number;\r\n\r\n  /**\r\n   * The chart-specific options. All options listen in the Google Charts documentation applying\r\n   * to the chart type specified can be used here.\r\n   */\r\n  @Input()\r\n  public options: object = {};\r\n\r\n  /**\r\n   * Used to change the displayed value of the specified column in all rows.\r\n   *\r\n   * Each array element must consist of an instance of a [`formatter`](https://developers.google.com/chart/interactive/docs/reference#formatters)\r\n   * and the index of the column you want the formatter to get applied to.\r\n   */\r\n  @Input()\r\n  public formatters?: Formatter[];\r\n\r\n  /**\r\n   * If this is set to `true`, the chart will be redrawn if the browser window is resized.\r\n   * Defaults to `false` and should only be used when specifying the width or height of the chart\r\n   * in percent.\r\n   *\r\n   * Note that this can impact performance.\r\n   */\r\n  @Input()\r\n  public dynamicResize = false;\r\n\r\n  /**\r\n   * Used to set trendlines\r\n   */\r\n  @Input()\r\n  public trendlines?: object = {};\r\n\r\n  @Output()\r\n  public ready = new EventEmitter<ChartReadyEvent>();\r\n\r\n  @Output()\r\n  public error = new EventEmitter<ChartErrorEvent>();\r\n\r\n  @Output()\r\n  public select = new EventEmitter<ChartSelectionChangedEvent>();\r\n\r\n  @Output()\r\n  public mouseover = new EventEmitter<ChartMouseOverEvent>();\r\n\r\n  @Output()\r\n  public mouseleave = new EventEmitter<ChartMouseLeaveEvent>();\r\n\r\n  private resizeSubscription?: Subscription;\r\n\r\n  private dataTable: google.visualization.DataTable | undefined;\r\n  private wrapper: google.visualization.ChartWrapper | undefined;\r\n  private wrapperReadySubject = new ReplaySubject<google.visualization.ChartWrapper>(1);\r\n  private initialized = false;\r\n  private eventListeners = new Map<any, { eventName: string; callback: Function; handle: any }>();\r\n\r\n  constructor(\r\n    private element: ElementRef,\r\n    private scriptLoaderService: ScriptLoaderService,\r\n    private dataTableService: DataTableService,\r\n    @Optional() private dashboard?: DashboardComponent\r\n  ) {}\r\n\r\n  public get chart(): google.visualization.ChartBase | null {\r\n    return this.chartWrapper.getChart();\r\n  }\r\n\r\n  public get wrapperReady$(): Observable<google.visualization.ChartWrapper> {\r\n    return this.wrapperReadySubject.asObservable();\r\n  }\r\n\r\n  public get chartWrapper(): google.visualization.ChartWrapper {\r\n    if (!this.wrapper) {\r\n      throw new Error('Trying to access the chart wrapper before it was fully initialized');\r\n    }\r\n\r\n    return this.wrapper;\r\n  }\r\n\r\n  public set chartWrapper(wrapper: google.visualization.ChartWrapper) {\r\n    this.wrapper = wrapper;\r\n    this.drawChart();\r\n  }\r\n\r\n  public ngOnInit() {\r\n    // We don't need to load any chart packages, the chart wrapper will handle this for us\r\n    this.scriptLoaderService.loadChartPackages(getPackageForChart(this.type)).subscribe(() => {\r\n      this.dataTable = this.dataTableService.create(this.data, this.columns, this.formatters);\r\n\r\n      // Only ever create the wrapper once to allow animations to happen when something changes.\r\n      this.wrapper = new google.visualization.ChartWrapper({\r\n        container: this.element.nativeElement,\r\n        chartType: this.type,\r\n        dataTable: this.dataTable,\r\n        options: this.mergeOptions(),\r\n      });\r\n\r\n      this.registerChartEvents();\r\n\r\n      this.wrapperReadySubject.next(this.wrapper);\r\n      this.initialized = true;\r\n\r\n      this.drawChart();\r\n    });\r\n  }\r\n\r\n  public ngOnChanges(changes: SimpleChanges) {\r\n    if (changes['dynamicResize']) {\r\n      this.updateResizeListener();\r\n    }\r\n\r\n    if (this.initialized) {\r\n      let shouldRedraw = false;\r\n      if (changes['data'] || changes['columns'] || changes['formatters']) {\r\n        this.dataTable = this.dataTableService.create(this.data, this.columns, this.formatters);\r\n        this.wrapper!.setDataTable(this.dataTable!);\r\n        shouldRedraw = true;\r\n      }\r\n\r\n      if (changes['type']) {\r\n        this.wrapper!.setChartType(this.type);\r\n        shouldRedraw = true;\r\n      }\r\n\r\n      if (changes['options'] || changes['width'] || changes['height'] || changes['title'] || changes['trendlines']) {\r\n        console.log(this.mergeOptions());\r\n        this.wrapper!.setOptions(this.mergeOptions());\r\n        shouldRedraw = true;\r\n      }\r\n\r\n      if (shouldRedraw) {\r\n        this.drawChart();\r\n      }\r\n    }\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.unsubscribeToResizeIfSubscribed();\r\n  }\r\n\r\n  /**\r\n   * For listening to events other than the most common ones (available via Output properties).\r\n   *\r\n   * Can be called after the chart emits that it's \"ready\".\r\n   *\r\n   * Returns a handle that can be used for `removeEventListener`.\r\n   */\r\n  public addEventListener(eventName: string, callback: Function): any {\r\n    const handle = this.registerChartEvent(this.chart, eventName, callback);\r\n    this.eventListeners.set(handle, { eventName, callback, handle });\r\n    return handle;\r\n  }\r\n\r\n  public removeEventListener(handle: any): void {\r\n    const entry = this.eventListeners.get(handle);\r\n    if (entry) {\r\n      google.visualization.events.removeListener(entry.handle);\r\n      this.eventListeners.delete(handle);\r\n    }\r\n  }\r\n\r\n  private updateResizeListener() {\r\n    this.unsubscribeToResizeIfSubscribed();\r\n\r\n    if (this.dynamicResize) {\r\n      this.resizeSubscription = fromEvent(window, 'resize', { passive: true })\r\n        .pipe(debounceTime(100))\r\n        .subscribe(() => {\r\n          if (this.initialized) {\r\n            this.drawChart();\r\n          }\r\n        });\r\n    }\r\n  }\r\n\r\n  private unsubscribeToResizeIfSubscribed() {\r\n    if (this.resizeSubscription != null) {\r\n      this.resizeSubscription.unsubscribe();\r\n      this.resizeSubscription = undefined;\r\n    }\r\n  }\r\n\r\n  private mergeOptions(): object {\r\n    return {\r\n      title: this.title,\r\n      width: this.width,\r\n      height: this.height,\r\n      trendlines: this.trendlines,\r\n      ...this.options\r\n    };\r\n  }\r\n\r\n  private registerChartEvents() {\r\n    google.visualization.events.removeAllListeners(this.wrapper);\r\n\r\n    this.registerChartEvent(this.wrapper, 'ready', () => {\r\n      // This could also be done by checking if we already subscribed to the events\r\n      google.visualization.events.removeAllListeners(this.chart);\r\n      this.registerChartEvent(this.chart, 'onmouseover', (event: ChartMouseOverEvent) => this.mouseover.emit(event));\r\n      this.registerChartEvent(this.chart, 'onmouseout', (event: ChartMouseLeaveEvent) => this.mouseleave.emit(event));\r\n      this.registerChartEvent(this.chart, 'select', () => {\r\n        const selection = this.chart!.getSelection();\r\n        this.select.emit({ selection });\r\n      });\r\n      this.eventListeners.forEach(x => (x.handle = this.registerChartEvent(this.chart, x.eventName, x.callback)));\r\n\r\n      this.ready.emit({ chart: this.chart! });\r\n    });\r\n\r\n    this.registerChartEvent(this.wrapper, 'error', (error: ChartErrorEvent) => this.error.emit(error));\r\n  }\r\n\r\n  private registerChartEvent(object: any, eventName: string, callback: Function): any {\r\n    return google.visualization.events.addListener(object, eventName, callback);\r\n  }\r\n\r\n  private drawChart() {\r\n    if (this.dashboard != null) {\r\n      // If this chart is part of a dashboard, the dashboard takes care of drawing\r\n      return;\r\n    }\r\n\r\n    this.wrapper!.draw();\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\n\r\nimport { ScriptLoaderService } from '../../services/script-loader.service';\r\nimport { ChartErrorEvent, ChartReadyEvent, ChartSelectionChangedEvent } from '../../types/events';\r\nimport { ChartBase } from '../chart-base/chart-base.component';\r\n\r\n@Component({\r\n  selector: 'chart-wrapper',\r\n  template: '',\r\n  styles: [':host { width: fit-content; display: block; }'],\r\n  host: { class: 'chart-wrapper' },\r\n  exportAs: 'chartWrapper',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ChartWrapperComponent implements ChartBase, OnChanges, OnInit {\r\n  /**\r\n   * Either a JSON object defining the chart, or a serialized string version of that object.\r\n   * The format of this object is shown in the\r\n   * {@link https://developers.google.com/chart/interactive/docs/reference#google.visualization.drawchart `drawChart()`} documentation.\r\n   *\r\n   * The `container` and `containerId` will be overwritten by this component to allow\r\n   * rendering the chart into the components' template.\r\n   */\r\n  @Input()\r\n  public specs?: google.visualization.ChartSpecs;\r\n\r\n  @Output()\r\n  public error = new EventEmitter<ChartErrorEvent>();\r\n\r\n  @Output()\r\n  public ready = new EventEmitter<ChartReadyEvent>();\r\n\r\n  @Output()\r\n  public select = new EventEmitter<ChartSelectionChangedEvent>();\r\n\r\n  private wrapper: google.visualization.ChartWrapper | undefined;\r\n  private wrapperReadySubject = new ReplaySubject<google.visualization.ChartWrapper>(1);\r\n  private initialized = false;\r\n\r\n  constructor(private element: ElementRef, private scriptLoaderService: ScriptLoaderService) {}\r\n\r\n  public get chart(): google.visualization.ChartBase | null {\r\n    return this.chartWrapper.getChart();\r\n  }\r\n\r\n  public get wrapperReady$() {\r\n    return this.wrapperReadySubject.asObservable();\r\n  }\r\n\r\n  public get chartWrapper(): google.visualization.ChartWrapper {\r\n    if (!this.wrapper) {\r\n      throw new Error('Cannot access the chart wrapper before initialization.');\r\n    }\r\n\r\n    return this.wrapper;\r\n  }\r\n\r\n  public set chartWrapper(wrapper: google.visualization.ChartWrapper) {\r\n    this.wrapper = wrapper;\r\n    this.drawChart();\r\n  }\r\n\r\n  public ngOnInit() {\r\n    // We don't need to load any chart packages, the chart wrapper will handle this else for us\r\n    this.scriptLoaderService.loadChartPackages().subscribe(() => {\r\n      if (!this.specs) {\r\n        this.specs = {} as google.visualization.ChartSpecs;\r\n      }\r\n\r\n      const { containerId, container, ...specs } = this.specs;\r\n\r\n      // Only ever create the wrapper once to allow animations to happen if something changes.\r\n      this.wrapper = new google.visualization.ChartWrapper({\r\n        ...specs,\r\n        container: this.element.nativeElement\r\n      });\r\n      this.registerChartEvents();\r\n\r\n      this.wrapperReadySubject.next(this.wrapper);\r\n\r\n      this.drawChart();\r\n      this.initialized = true;\r\n    });\r\n  }\r\n\r\n  public ngOnChanges(changes: SimpleChanges) {\r\n    if (!this.initialized) {\r\n      return;\r\n    }\r\n\r\n    if (changes['specs']) {\r\n      this.updateChart();\r\n      this.drawChart();\r\n    }\r\n  }\r\n\r\n  private updateChart() {\r\n    if (!this.specs) {\r\n      // When creating the wrapper with empty specs, the google charts library will show an error\r\n      // If we don't do this, a javascript error will be thrown, which is not as visible to the user\r\n      this.specs = {} as google.visualization.ChartSpecs;\r\n    }\r\n\r\n    // The typing here are not correct. These methods accept `undefined` as well.\r\n    // That's why we have to cast to `any`\r\n\r\n    this.wrapper!.setChartType(this.specs.chartType);\r\n    this.wrapper!.setDataTable(this.specs.dataTable as any);\r\n    this.wrapper!.setDataSourceUrl(this.specs.dataSourceUrl as any);\r\n    this.wrapper!.setDataSourceUrl(this.specs.dataSourceUrl as any);\r\n    this.wrapper!.setQuery(this.specs.query as any);\r\n    this.wrapper!.setOptions(this.specs.options as any);\r\n    this.wrapper!.setRefreshInterval(this.specs.refreshInterval as any);\r\n    this.wrapper!.setView(this.specs.view);\r\n  }\r\n\r\n  private drawChart() {\r\n    if (this.wrapper) {\r\n      this.wrapper.draw();\r\n    }\r\n  }\r\n\r\n  private registerChartEvents() {\r\n    google.visualization.events.removeAllListeners(this.wrapper);\r\n\r\n    const registerChartEvent = (object: any, eventName: string, callback: Function) => {\r\n      google.visualization.events.addListener(object, eventName, callback);\r\n    };\r\n\r\n    registerChartEvent(this.wrapper, 'ready', () => this.ready.emit({ chart: this.chart! }));\r\n    registerChartEvent(this.wrapper, 'error', (error: ChartErrorEvent) => this.error.emit(error));\r\n    registerChartEvent(this.wrapper, 'select', () => {\r\n      const selection = this.chart!.getSelection();\r\n      this.select.emit({ selection });\r\n    });\r\n  }\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { ChartEditorComponent } from './components/chart-editor/chart-editor.component';\r\nimport { ChartWrapperComponent } from './components/chart-wrapper/chart-wrapper.component';\r\nimport { ControlWrapperComponent } from './components/control-wrapper/control-wrapper.component';\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\nimport { GoogleChartComponent } from './components/google-chart/google-chart.component';\r\nimport { ScriptLoaderService } from './services/script-loader.service';\r\nimport { GoogleChartsConfig, GOOGLE_CHARTS_CONFIG } from './types/google-charts-config';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    GoogleChartComponent,\r\n    ChartWrapperComponent,\r\n    DashboardComponent,\r\n    ControlWrapperComponent,\r\n    ChartEditorComponent\r\n  ],\r\n  providers: [ScriptLoaderService],\r\n  exports: [\r\n    GoogleChartComponent,\r\n    ChartWrapperComponent,\r\n    DashboardComponent,\r\n    ControlWrapperComponent,\r\n    ChartEditorComponent\r\n  ]\r\n})\r\nexport class GoogleChartsModule {\r\n  public static forRoot(config: GoogleChartsConfig = {}): ModuleWithProviders<GoogleChartsModule> {\r\n    return {\r\n      ngModule: GoogleChartsModule,\r\n      providers: [{ provide: GOOGLE_CHARTS_CONFIG, useValue: config }]\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of angular-google-charts\r\n */\r\n\r\nexport * from './lib/components/chart-editor/chart-editor-ref';\r\nexport * from './lib/components/chart-editor/chart-editor.component';\r\nexport * from './lib/components/google-chart/google-chart.component';\r\nexport * from './lib/components/chart-wrapper/chart-wrapper.component';\r\nexport * from './lib/components/dashboard/dashboard.component';\r\nexport * from './lib/components/control-wrapper/control-wrapper.component';\r\nexport * from './lib/components/chart-base/chart-base.component';\r\n\r\nexport * from './lib/helpers/chart.helper';\r\n\r\nexport * from './lib/types/chart-type';\r\nexport * from './lib/types/control-type';\r\nexport * from './lib/types/events';\r\nexport * from './lib/types/formatter';\r\nexport * from './lib/types/google-charts-config';\r\n\r\nexport * from './lib/services/script-loader.service';\r\n\r\nexport * from './lib/google-charts.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ScriptLoaderService","i2.DataTableService","i3.DashboardComponent"],"mappings":"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"}