{"version":3,"file":"siemens-charts-ng-common.mjs","sources":["../../../../projects/charts-ng/common/echarts.custom.ts","../../../../projects/charts-ng/common/themes/element.ts","../../../../projects/charts-ng/common/theme-support.ts","../../../../projects/charts-ng/common/si-chart-base.component.ts","../../../../projects/charts-ng/common/si-chart-base.component.html","../../../../projects/charts-ng/common/index.ts","../../../../projects/charts-ng/common/siemens-charts-ng-common.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { TitleComponent, TooltipComponent } from 'echarts/components';\nimport * as echarts from 'echarts/core';\nimport { CanvasRenderer, SVGRenderer } from 'echarts/renderers';\n\necharts.use([\n  // renderers\n  CanvasRenderer,\n  SVGRenderer,\n\n  // core components used by all charts\n  TitleComponent,\n  TooltipComponent\n]);\n\nexport { echarts };\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { echarts } from '../echarts.custom';\n\nconst getProp = (style: CSSStyleDeclaration, prop: string): string => {\n  return style.getPropertyValue(prop);\n};\n\nconst candleStickValues = ['open', 'close', 'lowest', 'highest'];\n\nconst tooltipFormatter = (p: object | object[]): string => {\n  const params = Array.isArray(p) ? p : [p];\n  const label: string = params[0]?.axisValueLabel ?? '';\n\n  let html = label;\n  for (const series of params) {\n    const isCandle = series.componentSubType === 'candlestick';\n    const isPie = series.componentSubType === 'pie';\n    const useName = series.name != series.axisValue;\n    const name = isPie\n      ? series.data.name\n      : useName\n        ? // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n          series.name || series.seriesName\n        : series.seriesName;\n    const valIndex = (series.encode.value ?? series.encode.y)[0];\n    const value = isCandle\n      ? ''\n      : isPie\n        ? series.percent + '%'\n        : Array.isArray(series.value)\n          ? series.value[valIndex]\n          : series.value;\n\n    html += '<div style=\"display: flex; align-items: center;\">';\n    html += series.marker?.replace('margin-right', 'margin-inline-end');\n    html += `<span style=\"margin-inline: 4px 8px\">${name}</span>`;\n    html += `<span style=\"margin-inline-start: auto\">${value}</span>`;\n    html += '</div>';\n\n    if (isCandle) {\n      const miniMarker = `<span style=\"display:inline-block;vertical-align:middle;margin-inline:3px 8px;border-radius:4px;width:4px;height:4px;background:${series.color};\"></span>`;\n      for (let i = 0; i < candleStickValues.length; i++) {\n        const v = candleStickValues[i];\n        const idx = series.encode.y[i];\n        html += '<div style=\"display: flex; align-items: center;\">';\n        html += miniMarker;\n        html += `<span style=\"margin-inline-end: 8px\">${v}</span>`;\n        html += `<span style=\"margin-inline-start: auto\">${series.value[idx]}</span>`;\n        html += '</div>';\n      }\n    }\n  }\n  return html;\n};\n\nexport const themeElement = {\n  name: 'element',\n  style: () => {\n    const style = window.getComputedStyle(document.documentElement);\n\n    const backgroundAccent = getProp(style, '--si-sys-background-accent');\n    const backgroundAccentHover = getProp(style, '--si-sys-background-accent-hover');\n    const background1 = getProp(style, '--si-sys-background-1');\n    const background3 = getProp(style, '--si-sys-background-3');\n    const backgroundNeutral = getProp(style, '--si-sys-background-neutral');\n    const border1 = getProp(style, '--si-sys-border-1');\n    const border3 = getProp(style, '--si-sys-border-3');\n    const border4 = getProp(style, '--si-sys-border-4');\n    const borderNeutral = getProp(style, '--si-sys-border-neutral');\n    const borderAccent = getProp(style, '--si-sys-border-accent');\n    const textPrimary = getProp(style, '--si-sys-text-primary');\n    const textSecondary = getProp(style, '--si-sys-text-secondary');\n    const textInverse = getProp(style, '--si-sys-text-inverse');\n    const textDisabled = getProp(style, '--si-sys-text-disabled');\n\n    // The order of colors is provided by ux.\n    const colorPalettes = {\n      default: [\n        getProp(style, '--si-sys-data-categorical-1'),\n        getProp(style, '--si-sys-data-categorical-2'),\n        getProp(style, '--si-sys-data-categorical-4'),\n        getProp(style, '--si-sys-data-categorical-6'),\n        getProp(style, '--si-sys-data-categorical-5'),\n        getProp(style, '--si-sys-data-categorical-7'),\n        getProp(style, '--si-sys-data-categorical-8'),\n        getProp(style, '--si-sys-data-categorical-9'),\n        getProp(style, '--si-sys-data-categorical-11'),\n        getProp(style, '--si-sys-data-categorical-12'),\n        getProp(style, '--si-sys-data-categorical-13'),\n        getProp(style, '--si-sys-data-categorical-16'),\n        getProp(style, '--si-sys-data-categorical-17'),\n        getProp(style, '--si-sys-data-categorical-3'),\n        getProp(style, '--si-sys-data-categorical-10'),\n        getProp(style, '--si-sys-data-categorical-14'),\n        getProp(style, '--si-sys-data-categorical-15')\n      ]\n    };\n\n    const gradientColors = {\n      default: [\n        getProp(style, '--si-sys-data-categorical-1'),\n        getProp(style, '--si-sys-data-categorical-2')\n      ]\n    };\n\n    const axisFontSize = 12;\n    const axisLineHeight = 12;\n    const axisLineColor = border4;\n\n    const rootFontSizeRaw = getProp(style, 'font-size');\n    const rootFontSize = rootFontSizeRaw.endsWith('px') ? parseInt(rootFontSizeRaw) : 16;\n\n    // value based on body-2\n    const fontSize = rootFontSize * 0.875;\n    // diverging here by intention\n    const lineHeight = fontSize;\n    const textColor = textPrimary;\n\n    const candlestickBull = colorPalettes.default[4];\n    const candlestickBear = colorPalettes.default[12];\n\n    const dataZoomFillerColor = echarts.color.modifyAlpha(backgroundNeutral, 0.2);\n    const dataZoomBrushColor = backgroundAccent;\n    const dataZoomAreaColor = backgroundNeutral;\n    const dataZoomLineColor = border3;\n\n    const dataZoomHandleIcon =\n      'path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z';\n    const dataZoomHandleColor = borderAccent;\n\n    const rtl = style.direction === 'rtl';\n\n    // For E2E testing to get rid of font-loading instability.\n    const fontFamily = navigator.webdriver ? 'sans-serif' : undefined;\n\n    return {\n      textStyle: {\n        fontFamily\n      },\n      richInheritPlainLabel: false,\n      color: colorPalettes.default,\n      gradientColor: gradientColors.default,\n      backgroundColor: 'transparent',\n      animationDuration: 700,\n\n      title: {\n        left: 0,\n        top: 0,\n        padding: [10, 0, 0, 10],\n        textStyle: {\n          fontFamily,\n          lineHeight,\n          fontSize,\n          color: textColor\n        },\n        subtextStyle: {\n          fontFamily,\n          lineHeight,\n          fontSize,\n          color: textSecondary\n        }\n      },\n\n      legend: {\n        backgroundColor: 'transparent',\n        inactiveColor: textDisabled,\n        left: 'auto',\n        right: 20,\n        top: 35,\n        itemGap: 10,\n        textStyle: {\n          fontFamily,\n          color: textColor,\n          lineHeight,\n          fontSize\n        },\n        icon: 'circle',\n        pageTextStyle: {\n          color: textColor\n        },\n        itemStyle: {\n          borderWidth: 0,\n          itemGap: 12\n        }\n      },\n\n      tooltip: {\n        borderWidth: 0,\n        backgroundColor: background3,\n        textStyle: {\n          fontFamily,\n          color: textPrimary,\n          fontWeight: 400\n        },\n        padding: [8, 12, 8, 12],\n        axisPointer: {\n          crossStyle: {\n            color: border3,\n            width: 1\n          }\n        },\n        formatter: tooltipFormatter\n      },\n\n      axisPointer: {\n        label: {\n          fontFamily,\n          color: textInverse,\n          backgroundColor: border1,\n          lineHeight: axisLineHeight,\n          fontSize: axisFontSize\n        },\n        lineStyle: {\n          color: border3,\n          width: 2\n        },\n        handle: {\n          color: 'rgba(0,0,0,0)',\n          margin: 0\n        }\n      },\n\n      grid: {\n        top: 85,\n        left: 32,\n        right: 32,\n        bottom: 30,\n        containLabel: true\n      },\n\n      valueAxis: {\n        nameTextStyle: {\n          fontFamily,\n          color: textSecondary\n        },\n        axisLine: {\n          show: true,\n          lineStyle: {\n            color: axisLineColor\n          }\n        },\n        axisLabel: {\n          fontFamily,\n          color: textColor,\n          lineHeight: axisLineHeight,\n          fontSize: axisFontSize,\n          hideOverlap: true\n        },\n        axisTick: {\n          alignWithLabel: true\n        },\n        splitLine: {\n          lineStyle: {\n            color: axisLineColor\n          }\n        }\n      },\n      timeAxis: {\n        inverse: rtl,\n        nameTextStyle: {\n          fontFamily,\n          color: textSecondary\n        },\n        axisLine: {\n          show: true,\n          lineStyle: {\n            color: axisLineColor\n          }\n        },\n        axisLabel: {\n          fontFamily,\n          color: textColor,\n          lineHeight: axisLineHeight,\n          fontSize: axisFontSize,\n          hideOverlap: true\n        },\n        axisTick: {\n          show: true,\n          alignWithLabel: true\n        },\n        splitLine: {\n          lineStyle: {\n            color: axisLineColor\n          }\n        }\n      },\n      categoryAxis: {\n        inverse: rtl,\n        nameTextStyle: {\n          fontFamily,\n          color: textSecondary\n        },\n        axisLine: {\n          show: true,\n          lineStyle: {\n            color: axisLineColor\n          }\n        },\n        axisLabel: {\n          fontFamily,\n          color: textColor,\n          lineHeight: axisLineHeight,\n          fontSize: axisFontSize,\n          hideOverlap: true\n        },\n        axisTick: {\n          show: true,\n          alignWithLabel: true\n        },\n        splitLine: {\n          lineStyle: {\n            color: axisLineColor\n          }\n        }\n      },\n\n      dataZoom: {\n        textStyle: {\n          fontFamily,\n          color: textColor,\n          lineHeight: axisLineHeight,\n          fontSize: axisFontSize\n        },\n        borderColor: border4,\n        fillerColor: dataZoomFillerColor,\n        handleIcon: dataZoomHandleIcon,\n        handleStyle: {\n          color: dataZoomHandleColor,\n          borderColor: border4\n        },\n        moveHandleStyle: {\n          color: borderNeutral,\n          opacity: 1\n        },\n        brushStyle: {\n          color: dataZoomBrushColor\n        },\n        dataBackground: {\n          areaStyle: {\n            color: dataZoomAreaColor\n          },\n          lineStyle: {\n            color: dataZoomLineColor\n          }\n        },\n        selectedDataBackground: {\n          areaStyle: {\n            color: dataZoomLineColor,\n            opacity: 0.2\n          },\n          lineStyle: {\n            color: dataZoomLineColor\n          }\n        },\n        emphasis: {\n          moveHandleStyle: {\n            color: backgroundAccentHover,\n            opacity: 1\n          },\n          handleStyle: {\n            color: backgroundAccentHover,\n            borderColor: border4\n          }\n        }\n      },\n\n      toolbox: {\n        feature: {\n          dataZoom: {\n            brushStyle: {\n              color: dataZoomFillerColor\n            }\n          }\n        }\n      },\n\n      visualMap: {\n        textStyle: {\n          color: textColor\n        }\n      },\n\n      // different chart types\n      graph: {\n        color: colorPalettes.default\n      },\n\n      bar: {\n        barGap: 0,\n        label: {\n          fontFamily,\n          color: textSecondary,\n          fontSize\n        }\n      },\n\n      line: {\n        areaStyle: {\n          opacity: 0.3\n        },\n        symbol: 'circle',\n        symbolSize: 4\n      },\n\n      pie: {\n        radius: [0, '75%'],\n        label: {\n          distanceToLabelLine: 2,\n          fontFamily,\n          formatter: '{d}%',\n          color: textSecondary,\n          lineHeight,\n          fontSize\n        },\n        labelLine: {\n          length: 15,\n          length2: 8,\n          lineStyle: {\n            color: textSecondary\n          }\n        },\n        itemStyle: {\n          borderWidth: 2,\n          borderColor: background1\n        }\n      },\n\n      candlestick: {\n        itemStyle: {\n          color: candlestickBull,\n          color0: candlestickBear,\n          borderColor: candlestickBull,\n          borderColor0: candlestickBear\n        }\n      },\n\n      gauge: {\n        detail: {\n          color: textPrimary,\n          rich: {\n            value: {\n              color: textPrimary\n            },\n            unit: {\n              color: textPrimary\n            }\n          }\n        },\n        axisLabel: {\n          fontFamily,\n          color: textPrimary\n        },\n        axisTick: {\n          lineStyle: {\n            color: axisLineColor\n          }\n        },\n        splitLine: {\n          lineStyle: {\n            color: axisLineColor\n          }\n        }\n      },\n\n      sankey: {\n        label: {\n          fontFamily,\n          textBorderColor: 'transparent',\n          color: textColor\n        }\n      },\n      sunburst: {\n        label: {\n          fontFamily,\n          textBorderColor: 'transparent',\n          color: textColor\n        }\n      },\n\n      simpl: {\n        colorPalettes,\n\n        dataZoom: {\n          options: {\n            height: 36,\n            bottom: 20\n          },\n          grid: {\n            bottom: 80\n          }\n        },\n\n        timeRangeBar: {\n          height: 32\n        },\n\n        externalZoomSlider: {\n          grid: {\n            bottom: 10\n          }\n        },\n\n        legendLeft: {\n          left: 10,\n          width: '45%'\n        },\n        legendRight: {\n          right: 20,\n          width: '45%'\n        },\n\n        noTitle: {\n          grid: {\n            top: 60\n          },\n          legend: {\n            top: 15\n          }\n        },\n\n        subTitle: {\n          grid: {\n            top: 110\n          },\n          legend: {\n            top: 65\n          }\n        },\n\n        customLegend: {\n          grid: {\n            top: 64\n          }\n        },\n\n        progress: {\n          itemWidth: 6,\n          itemGap: 6,\n          grey: border4\n        },\n\n        progressBar: {\n          labelColor: textColor,\n          itemWidth: 20,\n          grid: {\n            left: 16,\n            right: 52,\n            containLabel: true\n          }\n        },\n\n        gauge: {\n          grey: border4,\n          value: textPrimary,\n          unit: textSecondary,\n          defaultColor: borderAccent\n        }\n      }\n    };\n  }\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { themeElement } from './themes/element';\n\nexport const themeSupport = {\n  _defaultTheme: themeElement,\n  _themes: {} as { [key: string]: any },\n\n  registerTheme(theme: any) {\n    if (theme.name) {\n      this._themes[theme.name] = theme;\n    }\n  },\n\n  getThemeNames() {\n    return Object.keys(this._themes);\n  },\n\n  getThemeByName(name: string) {\n    return this._themes[name];\n  },\n\n  setDefault(theme: any) {\n    this._defaultTheme = theme;\n  },\n\n  getDefault(): any {\n    return this._defaultTheme;\n  }\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  inject,\n  input,\n  model,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  output,\n  signal,\n  SimpleChanges,\n  viewChild,\n  viewChildren\n} from '@angular/core';\nimport {\n  CustomLegend,\n  CustomLegendItem,\n  CustomLegendProps,\n  SiCustomLegendComponent\n} from '@siemens/charts-ng/custom-legend';\nimport { SiChartLoadingSpinnerComponent } from '@siemens/charts-ng/loading-spinner';\n\nimport { echarts } from './echarts.custom';\nimport {\n  DataZoomComponentOption,\n  EChartOption,\n  EChartSeries,\n  GridComponentOption\n} from './echarts.model';\nimport {\n  AxisPointerEvent,\n  CustomLegendMultiLineInfo,\n  DataZoomEvent,\n  DataZoomRange,\n  FilterMode,\n  GridRectCoordinate,\n  LegendItem,\n  LineColor,\n  SelectedLegendItem,\n  SeriesSelectionState,\n  SeriesUpdate\n} from './si-chart.interfaces';\nimport { themeSupport } from './theme-support';\n\n@Component({\n  selector: 'si-chart-base',\n  imports: [SiCustomLegendComponent, SiChartLoadingSpinnerComponent],\n  templateUrl: './si-chart-base.component.html',\n  styleUrl: './si-chart-base.component.scss',\n  changeDetection: ChangeDetectionStrategy.Eager,\n  host: {\n    '(window:theme-switch)': 'themeSwitch()'\n  }\n})\nexport class SiChartBaseComponent implements AfterViewInit, OnChanges, OnInit, OnDestroy {\n  /**\n   * reference to the wrapper container. Used for setting scroll position, etc.\n   *\n   * @defaultValue\n   * ```\n   * viewChild.required<ElementRef>('chartContainerWrapper')\n   * ```\n   */\n  readonly chartContainerWrapper = viewChild.required<ElementRef>('chartContainerWrapper');\n  protected readonly chartContainer = viewChild<ElementRef>('chart');\n  protected readonly externalZoomSliderContainer = viewChild<ElementRef>('externalZoomSlider');\n  protected readonly siCustomLegend = viewChildren('siCustomLegend', {\n    read: SiCustomLegendComponent\n  });\n\n  /**\n   * See [ECharts 5.x Documentation]{@link https://echarts.apache.org/en/option.html}\n   * for all available options.\n   */\n  readonly options = input<EChartOption>();\n  /** Used to override specific properties set in `options`. */\n  readonly additionalOptions = input<EChartOption>();\n  /** The title of the chart. */\n  readonly title = input<string>();\n  /** The subtitle of the chart. */\n  readonly subTitle = input<string>();\n  /**\n   * Show Echarts legend\n   *\n   * @defaultValue true\n   */\n  readonly showLegend = model(true);\n  /**\n   * Enable to show a custom legend.\n   * The custom legend offers additional features such as, scroll bar to avoid legend and chart overlapping,\n   * Left and right alignment of legends based on y-axis, etc and many more.\n   * @defaultValue false\n   */\n  readonly showCustomLegend = input(false);\n  /**\n   * the renderer to use: canvas or svg\n   *\n   * @defaultValue 'canvas'\n   */\n  readonly renderer = input<'canvas' | 'svg'>('canvas');\n  /**\n   * Enables the zoom slider below the chart.\n   *\n   * @defaultValue false\n   */\n  readonly zoomSlider = input(false);\n  /**\n   * Shows data shadow in dataZoom slider, use together with `zoomSlider`.\n   *\n   * @defaultValue true\n   */\n  readonly zoomSliderShadow = input(true);\n  /**\n   * realtime update mode for zoom slider\n   *\n   * @defaultValue true\n   */\n  readonly zoomSliderRealtime = input(true);\n  /**\n   * enable brush mode for zoom slider\n   *\n   * @defaultValue true\n   */\n  readonly zoomSliderBrush = input(true);\n  /**\n   * Enables zooming inside the chart with the mouse wheel/touch.\n   *\n   * Whether zooming inside the chart is possible with mouse.\n   *\n   * @defaultValue false\n   */\n  readonly zoomInside = input(false);\n  /**\n   * Maximum number of series data points shown in the chart.\n   *\n   * @defaultValue 1000\n   */\n  readonly maxEntries = input(1000);\n  /**\n   * No auto dataZoom update) by default. Use together with `autoZoomSeriesIndex`.\n   *\n   * @defaultValue -1\n   */\n  readonly visibleEntries = model(-1);\n  /**\n   * No auto dataZoom update) by default. Use together with `autoZoomSeriesIndex`.\n   *\n   * @defaultValue -1\n   */\n  readonly visibleRange = model(-1);\n  /**\n   * No auto dataZoom update) by default. Use together with `visibleEntries`.\n   *\n   * @defaultValue -1\n   */\n  readonly autoZoomSeriesIndex = input(-1);\n  /** The desired theme to load. */\n  readonly theme = input<any>();\n  /** Used to override specific options of loaded `theme`. */\n  readonly themeCustomization = input<any>();\n  /**\n   * The name of the color palette (if any) of the loaded `theme`.\n   *\n   * @defaultValue undefined\n   */\n  readonly palette = input<string | undefined>();\n  /**\n   * Used to display `axisPointer` line either by click or mouse-move.\n   *\n   * @defaultValue false\n   */\n  readonly axisPointer = input<(boolean | string) | undefined>(false);\n  /**\n   * Apply a specific zoom range (see {@link https://echarts.apache.org/en/option.html#dataZoom-inside}).\n   */\n  readonly dataZoomRange = input<DataZoomRange>();\n  /**\n   * The lower limit of the data zoom slider (see {@link https://echarts.apache.org/en/option.html#dataZoom-slider.minValueSpan}).\n   */\n  readonly dataZoomMinValueSpan = input<number>();\n  /**\n   * The upper limit of the data zoom slider (see {@link https://echarts.apache.org/en/option.html#dataZoom-slider.maxValueSpan}).\n   */\n  readonly dataZoomMaxValueSpan = input<number>();\n  /**\n   * The data zoom filter mode. (see {@link https://echarts.apache.org/en/option.html#dataZoom-inside.filterMode})\n   *\n   * The value 'filter' will cause the lines to be disconnected to the outside of the chart.\n   *\n   * @defaultValue 'none'\n   */\n  readonly dataZoomFilterMode = input<FilterMode>('none');\n  /**\n   * Enable custom legend click actions exposed by the `selectionChanged` event.\n   */\n  readonly customLegendAction = input<boolean>();\n  /**\n   * Specify selected legend item.\n   *\n   * @defaultValue\n   * ```\n   * { legendItemName: '' }\n   * ```\n   */\n  readonly selectedItem = input<SelectedLegendItem>({ legendItemName: '' });\n  /**\n   * The height of the ECharts container as decimal.\n   */\n  readonly eChartContainerHeight = input<string | null>();\n  /**\n   * Flag to use external zoom slider\n   *\n   * @defaultValue false\n   */\n  readonly externalZoomSlider = input(false);\n  /** External XAxis Formatter from consumer */\n  readonly externalXAxisFormatter = input<(value: any, visibleRange: number) => string>();\n  /**\n   * If true, add consumer-provided time range bar. Use together with `zoomSlider`.\n   * @deprecated The input will be removed in future versions as the time range bar slot is deprecated.\n   *\n   * @defaultValue false\n   */\n  readonly showTimeRangeBar = input(false);\n\n  /** Event emitted when data zoom changes. */\n  readonly dataZoom = output<DataZoomEvent>();\n  /** Event emitted when axis pointer moves. */\n  readonly pointer = output<AxisPointerEvent>();\n  /** Event emitted when selection changes e.g. clicking on a legend item. */\n  readonly selectionChanged = output<any>();\n  /** Event emitted when a chart series is clicked. */\n  readonly chartSeriesClick = output<LegendItem>();\n  /** Event emitted when chart grid is resized. */\n  readonly chartGridResized = output<GridRectCoordinate>();\n  /** Event emitted when custom legend multi-line info changes. */\n  readonly customLegendMultiLineInfoEvent = output<CustomLegendMultiLineInfo[]>();\n  /** Emitted when data zoom changes, indicating the time range in milliseconds, 0 for full range */\n  readonly timeRangeChange = output<number>();\n\n  /** Allow to override options specific for a chart type. */\n  protected actualOptions: EChartOption = {};\n\n  protected customLegend: CustomLegend[] = [\n    {\n      customLegends: [\n        { list: [], unit: '' },\n        { list: [], unit: '' }\n      ],\n      legendAxis: 'both'\n    }\n  ];\n  /** @internal */\n  chart!: echarts.ECharts;\n  private extZoomSliderChart!: echarts.ECharts;\n  private echartElement!: HTMLElement;\n  private eChartExtSliderElement!: HTMLElement;\n  protected readonly inProgress = signal(false);\n  protected readonly backgroundColor = signal('');\n  protected readonly textColor = signal('');\n  protected readonly titleColor = signal('');\n  protected readonly subTitleColor = signal('');\n  private selectedSeriesColors: LineColor = {};\n  private unselectedSeriesColors: LineColor = {};\n  private seriesSelectionState: SeriesSelectionState = {};\n  protected readonly containerHeight = signal<number | null>(null);\n\n  protected activeTheme: any;\n  protected autoZoomUpdate = true;\n\n  private prevAxisPointer: any = {};\n  private lastValidDataZoom: any = {};\n  private presetDataZoomRange?: DataZoomRange;\n  private dataZoomSetupDone = false;\n  private requestedDataZoom?: DataZoomRange;\n  private measureCanvas?: CanvasRenderingContext2D;\n  private readonly cdRef = inject(ChangeDetectorRef);\n  private readonly ngZone = inject(NgZone);\n\n  protected curWidth = 0;\n  protected curHeight = 0;\n  protected readonly timeBarBottom = signal(50);\n  protected readonly timeBarLeft = signal(32);\n  protected readonly timeBarRight = signal(32);\n  protected readonly timeBarHeight = signal(32);\n\n  private gridCoordinates: GridRectCoordinate = {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0,\n    containerWidth: 0,\n    containerHeight: 0\n  };\n  private customLegendsMultiLineInfo: CustomLegendMultiLineInfo[] = [];\n  protected extZoomSliderOptions: EChartOption = {\n    animation: false,\n    dataZoom: [\n      { type: 'slider', showDataShadow: false },\n      { type: 'inside', showDataShadow: false }\n    ],\n    grid: [{ left: 32, right: 32, top: 0, height: 0, containLabel: false }],\n    xAxis: [{ type: 'time', axisLine: { onZero: true }, zlevel: 1 }],\n    yAxis: [{ type: 'value', boundaryGap: [0, '100%'], splitLine: { show: false }, show: false }],\n    series: [{ type: 'line', showSymbol: false, lineStyle: { opacity: 0 }, data: [] }]\n  };\n\n  private readonly echartMouseDown = (): void => this.handleChartMouseDown();\n  private readonly echartMouseUp = (event: MouseEvent): void => this.handleChartMouseUp(event);\n\n  private readonly echartExtSliderMouseDown = (): void => this.handleExtChartMouseDown();\n  private readonly echartExtSliderMouseUp = (event: MouseEvent): void =>\n    this.handleExtChartMouseUp(event);\n\n  protected readonly shapePaths: Record<string, string> = {\n    circle: 'M6 0A6 6 0 1 1 6 12A6 6 0 1 1 6 0Z',\n    rect: 'M0 0H12V12H0Z',\n    roundRect: 'M2 0H10A2 2 0 0 1 12 2V10A2 2 0 0 1 10 12H2A2 2 0 0 1 0 10V2A2 2 0 0 1 2 0Z',\n    triangle: 'M6 0L12 12H0L6 0Z',\n    diamond: 'M6 0L12 6L6 12L0 6L6 0Z',\n    pin: 'M6.00049 0C8.48577 0 10.5005 2.01472 10.5005 4.5C10.5005 5.51817 10.0175 6.461 9.46826 7.31836C8.42358 8.94924 7.16317 10.4497 6.00049 12C4.83781 10.4497 3.57642 8.94924 2.53174 7.31836C1.98255 6.461 1.49951 5.51817 1.49951 4.5C1.49951 2.01472 3.51521 0 6.00049 0Z'\n  };\n  /**\n   * Allow consuming applications to re-draw chart on window resizes.\n   */\n  resize(): void {\n    if (!this.chart) {\n      return;\n    }\n    const rect = this.chartContainer()?.nativeElement.getBoundingClientRect();\n    const width = Math.floor(rect.width);\n    const height = Math.floor(rect.height);\n    if (width && height && (width !== this.curWidth || height !== this.curHeight)) {\n      this.curWidth = width;\n      this.curHeight = height;\n\n      this.ngZone.runOutsideAngular(() => {\n        this.chart.resize({ width, height: this.containerHeight() ?? height });\n        if (this.externalZoomSlider()) {\n          this.extZoomSliderChart.resize();\n        }\n        setTimeout(() => this.checkGridSizeChange());\n      });\n      this.afterChartResize();\n    }\n    this.updateCustomLegendMultiLineInfo();\n  }\n\n  ngOnChanges(changes: SimpleChanges<unknown>): void {\n    if (changes.options?.currentValue) {\n      this.actualOptions = this.options()!;\n    }\n\n    if (!this.chart) {\n      return;\n    }\n\n    if (changes.eChartContainerHeight) {\n      this.setContainerHeight();\n    }\n\n    const selectedLegendItem = changes.selectedItem;\n    if (\n      selectedLegendItem &&\n      !selectedLegendItem.isFirstChange() &&\n      selectedLegendItem.currentValue\n    ) {\n      const event = {\n        name: selectedLegendItem.currentValue.legendItemName,\n        type: 'legendToggleSelect'\n      };\n      this.dispatchEChartAction(event);\n    }\n\n    if (\n      this.customLegendAction() &&\n      changes.options &&\n      !changes.options.isFirstChange() &&\n      !changes.options.currentValue.color.length\n    ) {\n      this.actualOptions.color = changes.options.previousValue.color;\n    }\n    if (changes.theme || changes.renderer) {\n      // need to completely redo the chart for the theme change to take effect\n      return this.resetChart();\n    }\n\n    let updates = 0;\n    let applyAll = false;\n    let skipMerge = false;\n\n    if (\n      changes.forceAll ||\n      changes.yAxis ||\n      changes.xAxis ||\n      changes.options ||\n      changes.series ||\n      changes.value\n    ) {\n      // this is to clean the legend item list\n      if (this.showCustomLegend() && this.customLegend && this.customLegend.length > 0) {\n        this.customLegend.forEach(cl => {\n          cl.customLegends = [\n            { list: [], unit: '' },\n            { list: [], unit: '' }\n          ];\n        });\n      }\n      this.applyOptions();\n      applyAll = true;\n      skipMerge =\n        changes.series?.previousValue &&\n        changes.series.currentValue &&\n        changes.series.currentValue.length < changes.series.previousValue.length;\n      updates++;\n    }\n\n    if (!applyAll && (changes.title || changes.subTitle)) {\n      // already called when `applyOptions()` has been called\n      this.applyTitles();\n      updates++;\n    }\n\n    if (\n      applyAll ||\n      changes.forceAll ||\n      changes.zoomSlider ||\n      changes.zoomSliderShadow ||\n      changes.zoomSliderRealtime ||\n      changes.zoomSliderBrush ||\n      changes.zoomInside ||\n      changes.axisPointer ||\n      changes.autoZoomSeriesIndex ||\n      changes.visibleEntries ||\n      changes.visibleRange\n    ) {\n      this.applyDataZoom();\n      updates++;\n    }\n\n    if (applyAll || changes.forceAll || changes.palette || changes.additionalOptions) {\n      this.applyAdditionalOptions();\n      updates++;\n    }\n\n    if (applyAll) {\n      this.applyStyles();\n      setTimeout(() => this.updateCustomLegendMultiLineInfo());\n    }\n\n    let skipDz = false;\n\n    if (updates) {\n      if (changes.dataZoomRange) {\n        this.setDataZoomRange(true);\n        skipDz = true;\n      }\n\n      const dz = this.actualOptions.dataZoom!;\n      let currentDataZoom: DataZoomComponentOption | undefined;\n      if (skipMerge && this.hasDataZoom() && this.hasData() && !skipDz) {\n        // forced updated is required when adding/removing series, see:\n        //   https://github.com/apache/incubator-echarts/issues/6202\n        // in order not to mess up current datazoom, save the current value and add it to options\n        this.saveCurrentDataZoom();\n        if (this.lastValidDataZoom) {\n          currentDataZoom = dz[0];\n          const newDataZoom: DataZoomComponentOption = {};\n          echarts.util.merge(newDataZoom, dz[0], true);\n          echarts.util.merge(newDataZoom, this.lastValidDataZoom, true);\n          dz[0] = newDataZoom;\n        }\n      }\n\n      this.updateEChart(skipMerge);\n\n      if (currentDataZoom) {\n        dz[0] = currentDataZoom;\n        this.updateEChart(false, { dataZoom: this.actualOptions.dataZoom });\n      }\n      this.applyColorsToCustomLegends();\n    }\n\n    if (!skipDz && changes.dataZoomRange) {\n      // this is done after a possible setOptions call to ensure echarts has all the desired states\n      this.setDataZoomRange();\n    }\n\n    this.cdRef.markForCheck();\n  }\n\n  ngOnInit(): void {\n    const canvas = document.createElement('canvas') as HTMLCanvasElement;\n    this.measureCanvas = canvas.getContext('2d') as CanvasRenderingContext2D;\n    this.measureCanvas.font = '12px \"SiemensSans Pro\"';\n    const externalXAxisFormatter = this.externalXAxisFormatter();\n    if (this.externalZoomSlider() && externalXAxisFormatter) {\n      const consumerFormatter = externalXAxisFormatter;\n      this.extZoomSliderOptions.xAxis[0].axisLabel = {\n        formatter: (value: any) => consumerFormatter(value, this.visibleRange())\n      };\n    }\n    this.applyTheme();\n    // this is to clean the legend item list\n    if (this.showCustomLegend() && this.customLegend && this.customLegend.length > 0) {\n      this.customLegend.forEach(cl => {\n        cl.customLegends = [\n          { list: [], unit: '' },\n          { list: [], unit: '' }\n        ];\n      });\n    }\n    this.applyOptions();\n    this.applyAdditionalOptions();\n    this.applyDataZoom();\n    this.applyStyles();\n    if (this.customLegendAction()) {\n      this.fetchSeriesColors();\n    }\n  }\n\n  ngAfterViewInit(skipZoom?: boolean): void {\n    this.ngZone.runOutsideAngular(() => {\n      const chartContainerEl = this.chartContainer()!.nativeElement;\n      // set current dimension to avoid initial resize() call on chart\n      const rect = chartContainerEl.getBoundingClientRect();\n      this.curWidth = Math.floor(rect.width);\n      this.curHeight = Math.floor(rect.height);\n\n      const opts = { renderer: this.renderer() };\n      this.chart = echarts.init(chartContainerEl, this.activeTheme, opts);\n      this.echartElement = chartContainerEl as HTMLElement;\n      this.getEChartInner()?.addEventListener('mousedown', this.echartMouseDown);\n      this.chart.setOption(this.actualOptions);\n      setTimeout(() => this.checkGridSizeChange());\n\n      if (this.externalZoomSlider()) {\n        this.extZoomSliderChart = echarts.init(\n          this.externalZoomSliderContainer()!.nativeElement,\n          this.activeTheme,\n          opts\n        );\n        this.eChartExtSliderElement = this.externalZoomSliderContainer()!\n          .nativeElement as HTMLElement;\n        this.getEChartExternalSliderInner()?.addEventListener(\n          'mousedown',\n          this.echartExtSliderMouseDown\n        );\n        this.extZoomSliderChart.setOption(this.extZoomSliderOptions);\n        this.extZoomSliderChart.on('datazoom', (event: any) => this.handleExtDataZoom(event));\n      }\n      this.afterChartInit(skipZoom);\n    });\n    setTimeout(() => {\n      this.resize();\n      this.applyColorsToCustomLegends();\n    });\n  }\n\n  private calculateTextWidth(text: string): number {\n    if (!this.measureCanvas) {\n      return 150;\n    }\n    return Math.ceil(this.measureCanvas.measureText(text).width);\n  }\n\n  private disposeChart(): void {\n    if (this.chart && !this.chart.isDisposed()) {\n      this.chart.dispose();\n    }\n    if (this.extZoomSliderChart && !this.extZoomSliderChart.isDisposed()) {\n      this.extZoomSliderChart.dispose();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.disposeChart();\n  }\n\n  /**\n   * Switch theme using echarts api, which does not need reloading the whole chart.\n   */\n  themeSwitch(): void {\n    if (!this.chart) {\n      return;\n    }\n\n    this.applyTheme();\n    this.chart.setTheme(this.activeTheme);\n\n    // Since color palette is set thorugh options, it needs to be set again.\n    this.themeChanged();\n    this.applyPalette();\n    this.applyStyles();\n    this.applyTitles();\n\n    setTimeout(() => {\n      this.applyColorsToCustomLegends();\n    });\n    this.chart.setOption(this.actualOptions);\n\n    if (this.externalZoomSlider()) {\n      this.extZoomSliderChart.setTheme(this.activeTheme);\n      this.extZoomSliderChart.setOption(this.extZoomSliderOptions);\n    }\n    this.cdRef.markForCheck();\n  }\n\n  /**\n   * Re-render the whole chart.\n   * @deprecated The method is deprecated and should not be used directly by the consumer.\n   */\n  resetChart(): void {\n    this.applyTheme();\n\n    if (!this.actualOptions) {\n      // this can happen if the SiThemeService fires the theme switch when the chart is not\n      // yet completely initialized\n      return;\n    }\n\n    this.disposeChart();\n    this.applyPalette();\n    const addOpts = this.additionalOptions();\n    if (addOpts?.palette) {\n      echarts.util.merge(this.actualOptions.palette, addOpts.palette, true);\n    }\n    this.themeChanged();\n    this.applyStyles();\n    this.applyTitles();\n    this.ngAfterViewInit(true); // eslint-disable-line @angular-eslint/no-lifecycle-call\n    this.cdRef.markForCheck();\n  }\n\n  protected handleLegendClick(legend: CustomLegendItem): void {\n    this.doToggleSeriesVisibility(legend.name, legend.selected, legend);\n    this.cdRef.markForCheck();\n  }\n\n  protected handleLegendHover(legend: CustomLegendItem, start: boolean): void {\n    this.dispatchEChartAction({\n      type: start ? 'highlight' : 'downplay',\n      [legend.alternativeNaming ? 'name' : 'seriesName']: legend.name\n    });\n  }\n\n  /**\n   * Toggle visibility of a series.\n   */\n  toggleSeriesVisibility(name: string, visible: boolean): void {\n    const legendItem = this.findCustomLegendItem(name);\n    this.doToggleSeriesVisibility(name, visible, legendItem);\n    this.cdRef.markForCheck();\n  }\n\n  private doToggleSeriesVisibility(\n    name: string,\n    visible: boolean,\n    legendItem?: CustomLegendItem\n  ): void {\n    if (legendItem) {\n      legendItem.selected = visible;\n    }\n    this.dispatchEChartAction({ type: visible ? 'legendSelect' : 'legendUnSelect', name });\n\n    if (this.externalZoomSlider()) {\n      this.ngZone.runOutsideAngular(() => {\n        this.extZoomSliderChart.dispatchAction({\n          type: visible ? 'legendSelect' : 'legendUnSelect',\n          name\n        });\n      });\n    }\n    const opt = this.getOptionNoClone();\n    if (Array.isArray(opt.legend)) {\n      const selection: any = {};\n      opt.legend.forEach((l: any) => Object.assign(selection, l.selected));\n      this.handleSelectionChanged({ selected: selection });\n    }\n  }\n\n  private findCustomLegendItem(name: string): CustomLegendItem | undefined {\n    if (this.showCustomLegend()) {\n      for (const cl of this.customLegend) {\n        for (const l of cl.customLegends) {\n          for (const item of l.list) {\n            if (item.name === name) {\n              return item;\n            }\n          }\n        }\n      }\n    }\n    return undefined;\n  }\n\n  protected getValidXAxis(): Set<number> | undefined {\n    return undefined;\n  }\n\n  protected setZoomMode(): void {}\n\n  private applyTheme(): void {\n    // Set default theme if no theme provided\n    const theme = this.theme();\n    if (theme?.style) {\n      this.activeTheme = theme.style();\n    } else if (themeSupport._defaultTheme?.style) {\n      this.activeTheme = themeSupport._defaultTheme.style();\n    }\n    const themeCustomization = this.themeCustomization();\n    if (themeCustomization) {\n      const custom = echarts.util.merge({}, themeCustomization);\n      this.activeTheme = echarts.util.merge(custom, this.activeTheme);\n    }\n  }\n\n  protected themeChanged(): void {}\n\n  protected applyOptions(): void {}\n\n  protected applyCustomLegendPosition(): void {\n    if (this.showLegend() && this.showCustomLegend()) {\n      this.customLegend.forEach(cl => {\n        if (cl.customLegends?.[0].list && cl.customLegends?.[1].list) {\n          const leftLegend = cl.customLegends[0];\n          const rightLegend = cl.customLegends[1];\n\n          // if we have left and right axis\n          if (leftLegend.list.length > 0 && rightLegend.list.length > 0) {\n            cl.legendAxis = 'both';\n          } else if (leftLegend.list.length > 0 && rightLegend.list.length === 0) {\n            // if we have only left axis data\n            cl.legendAxis = 'left';\n          } else if (leftLegend.list.length === 0 && rightLegend.list.length > 0) {\n            // if we have only right axis data\n            cl.legendAxis = 'right';\n          } else {\n            cl.legendAxis = 'both';\n          }\n        } else {\n          cl.legendAxis = 'both';\n        }\n      });\n      this.cdRef.markForCheck();\n    }\n  }\n\n  private applyAdditionalOptions(): void {\n    // need to merge palette before the additionalOptions so that overrides work as expected\n    this.applyPalette();\n\n    if (this.additionalOptions()) {\n      echarts.util.merge(this.actualOptions, this.additionalOptions(), true);\n    }\n  }\n\n  private applyPalette(): void {\n    const paletteValue = this.palette() ?? 'default';\n    if (paletteValue) {\n      const palette = this.getThemeCustomValue(['colorPalettes', paletteValue], null);\n      if (palette) {\n        this.actualOptions.color = palette;\n        if (this.customLegendAction()) {\n          this.fetchSeriesColors(palette);\n        }\n      }\n    }\n  }\n\n  protected applyDataZoom(): void {\n    if (!this.actualOptions.grid) {\n      return;\n    }\n    this.actualOptions.dataZoom ??= [];\n\n    const sliderOptions: any = {};\n    const dataZoomMinValueSpan = this.dataZoomMinValueSpan();\n    if (dataZoomMinValueSpan) {\n      sliderOptions.minValueSpan = dataZoomMinValueSpan;\n    }\n    const dataZoomMaxValueSpan = this.dataZoomMaxValueSpan();\n    if (dataZoomMaxValueSpan) {\n      sliderOptions.maxValueSpan = dataZoomMaxValueSpan;\n    }\n    sliderOptions.realtime = this.zoomSliderRealtime();\n    sliderOptions.brushSelect = this.zoomSliderBrush();\n    sliderOptions.showDataShadow = this.zoomSliderShadow();\n    sliderOptions.filterMode = this.dataZoomFilterMode();\n    sliderOptions.showDetail = false;\n    // keep external zoom slider in sync, always at index 0\n    Object.assign(this.extZoomSliderOptions.dataZoom![0], sliderOptions);\n\n    const dz = this.actualOptions.dataZoom!;\n    const sliderIdx = dz.findIndex(z => z.type === 'slider');\n    const insideIdx = dz.findIndex(z => z.type === 'inside');\n    const zoomSlider = this.zoomSlider();\n    if (zoomSlider && sliderIdx === -1) {\n      // for the non-external, merge with other options\n      const customOptions = this.getThemeCustomValue(['dataZoom', 'options'], {});\n      const dzSliderOptions: any = Object.assign({ type: 'slider' }, customOptions, sliderOptions);\n      Object.assign(this.extZoomSliderOptions.dataZoom![0], customOptions);\n\n      const externalZoomSlider = this.externalZoomSlider();\n      if (externalZoomSlider) {\n        dzSliderOptions.show = false;\n      }\n      dz.push(dzSliderOptions);\n\n      const gridOptions = externalZoomSlider\n        ? this.getThemeCustomValue(['externalZoomSlider', 'grid'], {})\n        : this.getThemeCustomValue(['dataZoom', 'grid'], {});\n\n      if (this.showTimeRangeBar()) {\n        const timeBarOptions = this.getThemeCustomValue(['timeRangeBar'], {});\n        if (customOptions.height && customOptions.bottom) {\n          this.timeBarBottom.set(customOptions.height + customOptions.bottom);\n        }\n        this.timeBarHeight.set(timeBarOptions?.height ?? 32);\n\n        if (!externalZoomSlider) {\n          gridOptions.bottom = (gridOptions?.bottom ?? 0) + this.timeBarHeight();\n        }\n      }\n\n      echarts.util.merge(this.actualOptions.grid, gridOptions, true);\n    } else if (zoomSlider && sliderIdx >= 0) {\n      // update existing\n      const dzSliderOptions = dz[sliderIdx];\n      Object.assign(dzSliderOptions, sliderOptions);\n    } else if (!zoomSlider && sliderIdx >= 0) {\n      dz.splice(sliderIdx, 1);\n    }\n    const zoomInside = this.zoomInside();\n    if (zoomInside && insideIdx === -1) {\n      dz.push({ type: 'inside', filterMode: this.dataZoomFilterMode() });\n    } else if (!zoomInside && insideIdx >= 0) {\n      dz.splice(insideIdx, 1);\n    }\n\n    if (this.actualOptions.xAxis) {\n      this.handleAxisPointer(this.actualOptions);\n    }\n    this.cdRef.markForCheck();\n  }\n\n  private handleAxisPointer(options: EChartOption): void {\n    const axisPointer = this.axisPointer();\n    if (axisPointer !== undefined) {\n      options.axisPointer ??= {};\n    }\n    if (axisPointer === true) {\n      options.axisPointer.triggerOn = 'click';\n    } else if (axisPointer === false) {\n      options.axisPointer.triggerOn = 'mousemove|click';\n    } else if (typeof axisPointer === 'string') {\n      options.axisPointer.triggerOn = axisPointer;\n    }\n    if (Array.isArray(options.xAxis)) {\n      const xAxisArray: any[] = options.xAxis;\n      xAxisArray.forEach(axis => this.handleAxisPointerSingleAxis(axis));\n    } else {\n      this.handleAxisPointerSingleAxis(options.xAxis);\n    }\n  }\n\n  private handleAxisPointerSingleAxis(xAxis: any): void {\n    if (this.axisPointer()) {\n      echarts.util.merge(xAxis, { axisPointer: { handle: { show: true } } }, true);\n    } else {\n      echarts.util.merge(xAxis, { axisPointer: { handle: { show: false } } }, true);\n    }\n  }\n\n  protected hasDataZoom(): boolean {\n    return !!this.actualOptions.dataZoom?.length;\n  }\n\n  protected getThemeValue(props: string[], defaultValue: any, ns?: string): any {\n    if (!this.activeTheme) {\n      return defaultValue;\n    }\n\n    let currentValue = this.activeTheme;\n    if (ns) {\n      currentValue = currentValue[ns];\n    }\n    for (let i = 0; currentValue && i < props.length; i++) {\n      currentValue = currentValue[props[i]];\n    }\n    return currentValue ?? defaultValue;\n  }\n\n  protected getThemeCustomValue(props: string[], defaultValue: any): any {\n    return this.getThemeValue(props, defaultValue, 'simpl');\n  }\n\n  protected applyTitles(): void {\n    const title = this.title();\n    const subTitle = this.subTitle();\n    const options = this.actualOptions;\n    if (this.showLegend() && this.showCustomLegend()) {\n      if (options.title) {\n        options.title.show = false;\n      }\n      options.legend?.forEach(legend => {\n        legend.show = false;\n        legend.height = 0;\n      });\n      if (options.grid) {\n        const gridOptions = this.getThemeCustomValue(['customLegend', 'grid'], {});\n        echarts.util.merge(options.grid, gridOptions, true);\n      }\n\n      this.titleColor.set(this.getThemeValue(['title', 'textStyle', 'color'], null));\n      this.subTitleColor.set(\n        this.getThemeValue(['title', 'subtextStyle', 'color'], this.titleColor)\n      );\n      this.textColor.set(this.getThemeValue(['legend', 'textStyle', 'color'], null));\n      this.backgroundColor.set(this.getThemeValue(['backgroundColor'], null));\n    } else if (title || subTitle) {\n      options.title = {\n        text: title,\n        subtext: subTitle\n      };\n      if (subTitle) {\n        this.modifyTopAlignment('subTitle');\n      }\n    } else if (!title && !subTitle && !options.title) {\n      this.modifyTopAlignment('noTitle');\n    }\n  }\n\n  private modifyTopAlignment(key: string): void {\n    const options = this.actualOptions;\n    if (options.grid && !this.options()?.grid) {\n      const gridOptions = this.getThemeCustomValue([key, 'grid'], {});\n      echarts.util.merge(options.grid, gridOptions, true);\n    }\n\n    if (!this.options()?.legend) {\n      const legendOptions = this.getThemeCustomValue([key, 'legend'], {});\n      options.legend?.forEach(legend => echarts.util.merge(legend, legendOptions, true));\n    }\n  }\n\n  protected afterChartInit(skipZoom?: boolean): void {\n    this.chart.on('datazoom', (event: any) => this.handleDataZoom(event, 'echart'));\n    if (!this.customLegendAction()) {\n      // default generic si-chart behavior\n      this.chart.on('legendselectchanged', (event: any) => this.handleSelectionChanged(event));\n      this.chart.on('click', (event: any) => this.handleClickOnChart(event, false));\n    } else {\n      // custom chart behaviour\n      this.chart.on('legendselectchanged', (event: any) =>\n        this.handleSelectionChangedCustom(event)\n      );\n      this.chart.on('click', (event: any) => this.handleClickOnChart(event, true));\n    }\n    this.chart.on('updateaxispointer', (event: any) => this.handleUpdateAxisPointer(event));\n    if (!skipZoom) {\n      this.setDataZoomRange();\n    }\n    this.cdRef.markForCheck();\n  }\n\n  protected afterChartResize(): void {}\n\n  private getEChartInner(): Element | null {\n    return this.echartElement.querySelector(':scope > div:first-child');\n  }\n\n  private getEChartExternalSliderInner(): Element | null {\n    return this.eChartExtSliderElement.querySelector(':scope > div:first-child');\n  }\n\n  private handleExtChartMouseDown(): void {\n    window.addEventListener('mouseup', this.echartExtSliderMouseUp);\n  }\n\n  private handleExtChartMouseUp(event: MouseEvent): void {\n    window.removeEventListener('mouseup', this.echartExtSliderMouseUp);\n    const newEvent = new MouseEvent('mouseup', event);\n    setTimeout(() => {\n      this.getEChartExternalSliderInner()?.dispatchEvent(newEvent);\n      this.cdRef.markForCheck();\n    }, 1);\n  }\n\n  private handleChartMouseDown(): void {\n    window.addEventListener('mouseup', this.echartMouseUp);\n  }\n\n  private handleChartMouseUp(event: MouseEvent): void {\n    window.removeEventListener('mouseup', this.echartMouseUp);\n    const newEvent = new MouseEvent('mouseup', event);\n    setTimeout(() => {\n      this.getEChartInner()?.dispatchEvent(newEvent);\n      this.cdRef.markForCheck();\n    }, 1);\n  }\n\n  private setDataZoomRange(skipUpdate?: boolean): void {\n    // Checking if we received a valid dataZoomRange Object\n    const dataZoomRange = this.dataZoomRange();\n    if (dataZoomRange && Object.keys(dataZoomRange).length > 0) {\n      // If series has data, then directly dispatch action for the dataZoom event\n      // Else, Store the dataZoomRange values in presetDataZoomRange variable for applying zoom\n      // after data is received in chart\n      // No need to reassign presetDataZoomRange if earlier value is not consumed\n      if (this.hasData()) {\n        const dz = this.getPresetDataZoom(dataZoomRange);\n        if (dz) {\n          const requested = { ...dataZoomRange };\n          this.presetDataZoomRange = undefined;\n\n          this.updateDataZoom(dz);\n          if (!skipUpdate) {\n            this.updateEChart(false, { dataZoom: [dz] });\n          }\n\n          // update user with proper data\n          setTimeout(() => {\n            this.ngZone.runOutsideAngular(() => {\n              this.requestedDataZoom = requested;\n              this.handleDataZoom(dz, 'setDataZoomRange');\n            });\n          });\n\n          return;\n        }\n      }\n      this.presetDataZoomRange = dataZoomRange;\n    }\n  }\n\n  private handleDataZoom(event: any, source?: string): void {\n    // events can be batched\n    if (event.batch?.length) {\n      event = event.batch[0];\n    }\n    if (Number.isNaN(event.start) || Number.isNaN(event.end)) {\n      // need to fix to the last valid dataZoom setting, see below\n      this.chart.dispatchAction({ type: 'dataZoom', ...this.lastValidDataZoom });\n      return;\n    }\n\n    const effectiveOpts = this.getOptionNoClone();\n    // in case of pane by chart area, event.start and event.end are always undefined.\n    // and in case of slider move, they has values in percentage(0-100)\n    // so, to handle in case of pane, we need to get start and end values from datazoom property\n    // following condition will be executed only if autozoom is false; and start and end are undefined(undefined means call is from pane)\n    const dz = effectiveOpts.dataZoom[0];\n    this.autoZoomUpdate = !!dz && dz.end === 100;\n    // Due to chart updates outside Angular, we need to emit events back\n    // inside Angular to activate Angular's change detection.\n    const range = this.getVisibleRange();\n    if (range) {\n      range.source = source ?? event.source;\n      this.calculateVisibleRange(range);\n      if (this.requestedDataZoom) {\n        range.requested = this.requestedDataZoom;\n        this.requestedDataZoom = undefined;\n      }\n\n      this.ngZone.run(() => {\n        this.dataZoom.emit(range);\n        this.timeRangeChange.emit(\n          dz.start === 0 && dz.end === 100 ? 0 : range.rangeEnd - range.rangeStart\n        );\n      });\n\n      setTimeout(() => this.checkGridSizeChange());\n      this.presetDataZoomRange = undefined;\n      this.dataZoomSetupDone = true;\n\n      // sync/store values\n      this.updateDataZoom({ startValue: range.rangeStart, endValue: range.rangeEnd });\n\n      if (event.source !== 'extSlider') {\n        this.extZoomSliderChart?.dispatchAction({\n          type: 'dataZoom',\n          source: 'mainChart',\n          startValue: range.rangeStart,\n          endValue: range.rangeEnd\n        });\n      }\n    }\n    this.cdRef.markForCheck();\n  }\n\n  private handleExtDataZoom(event: any): void {\n    if (event.batch?.length) {\n      event = event.batch[0];\n    }\n\n    if (event.source === 'mainChart') {\n      return;\n    }\n\n    const zoomModel = (this.extZoomSliderChart as any)._model;\n    const range = this.doGetVisibleRange(zoomModel);\n    if (range) {\n      this.calculateVisibleRange(range);\n      this.chart?.dispatchAction({\n        type: 'dataZoom',\n        source: 'extSlider',\n        startValue: range.rangeStart,\n        endValue: range.rangeEnd\n      });\n    }\n  }\n\n  protected handleSelectionChanged(event: any): void {\n    this.selectionChanged.emit(event);\n\n    for (const a in event.selected) {\n      if (event.selected[a] !== false) {\n        return;\n      }\n    }\n\n    this.saveCurrentDataZoom();\n  }\n\n  /**\n   * Creates two objects that stores the colors for selected and unselected series. Used only for custom legend actions.\n   */\n  protected fetchSeriesColors(colorsToBeUSed?: any): void {\n    const options = this.actualOptions;\n    if (!options.color?.length && this.activeTheme) {\n      options.color = [...this.activeTheme.color];\n    }\n    if (!colorsToBeUSed && !this.activeTheme) {\n      return;\n    }\n    options.series?.forEach((element, index) => {\n      this.unselectedSeriesColors[element.name!] = {\n        color: this.getThemeValue(['legend', 'unselected', 'color'], '#ccc'),\n        index\n      };\n      const colors = colorsToBeUSed ?? this.activeTheme.color;\n      this.selectedSeriesColors[element.name!] = { color: colors[index], index };\n    });\n  }\n\n  /**\n   * Handles legend select event in non echart native way.\n   * @param event -  legend select\n   */\n  protected handleSelectionChangedCustom(event: any): void {\n    const optionsToChange = this.styleSelectedSeries(event.name, false, event.dataIndex);\n    this.ngZone.runOutsideAngular(() => {\n      this.chart.setOption(optionsToChange);\n      this.chart.dispatchAction({ type: 'legendSelect', name: event.name });\n    });\n  }\n\n  /**\n   * Handles click on series in non echart native way.\n   * @param event -  click\n   */\n  protected handleClickOnChart(event: any, toggleVisibility: boolean): void {\n    if (event.componentType !== 'series') {\n      return;\n    }\n    if (toggleVisibility) {\n      const optionsToChange = this.styleSelectedSeries(event.seriesName, true, event.dataIndex);\n      this.chart.setOption(optionsToChange);\n    } else {\n      this.ngZone.run(() =>\n        this.chartSeriesClick.emit({\n          itemName: event.seriesName,\n          dataIndex: event.dataIndex\n        })\n      );\n    }\n  }\n\n  /**\n   * Selects or unselects the series based on series state object\n   * @param seriesName -  series to be selected/unselected\n   * @param emit -  if true event is emitted otherwise no event is emitted\n   */\n  protected styleSelectedSeries(seriesName: string, emit: boolean, seriesDataIndex: number): any {\n    if (this.seriesSelectionState?.[seriesName]) {\n      const elementToStyle = this.actualOptions.series?.find(\n        element => element.name === seriesName\n      );\n      this.seriesSelectionState[seriesName] = false;\n      return this.selectSeries(elementToStyle, emit, seriesDataIndex);\n    } else {\n      const elementToStyle = this.actualOptions.series?.find(\n        element => element.name === seriesName\n      );\n      this.seriesSelectionState[seriesName] = true;\n      return this.unselectSeries(elementToStyle, emit, seriesDataIndex);\n    }\n  }\n\n  /**\n   * Selects the series\n   * @param element -  to be styled as selected\n   * @param emit -  if true event is emitted otherwise no event is emitted\n   */\n  protected selectSeries(element: any, emit: boolean, seriesDataIndex: number): any {\n    const options = this.actualOptions;\n    const optionsToChange = { color: options.color, series: [options.series] };\n    const optionsColorIndex = this.selectedSeriesColors[element.name].index;\n    optionsToChange.color[optionsColorIndex] = this.selectedSeriesColors[element.name].color;\n    if (element.areaStyle) {\n      element.areaStyle.opacity = 0.4;\n      optionsToChange.series[this.selectedSeriesColors[element.name].index] = element;\n    }\n    if (emit) {\n      this.chartSeriesClick.emit({\n        itemName: element.name,\n        dataIndex: seriesDataIndex,\n        selected: false,\n        color: this.selectedSeriesColors[element.name].color\n      });\n    }\n    return optionsToChange;\n  }\n\n  /**\n   * Unselects the series\n   * @param element - to be styled as unselected\n   * @param emit - if true event is emitted otherwise no event is emitted\n   */\n  protected unselectSeries(\n    element: any,\n    emit: boolean,\n    seriesDataIndex: number\n  ): {\n    color: any;\n    series: (EChartSeries | undefined)[];\n  } {\n    const options = this.actualOptions;\n    const optionsToChange = { color: options.color, series: [options.series] };\n    const optionsColorIndex = this.selectedSeriesColors[element.name].index;\n    optionsToChange.color[optionsColorIndex] = this.unselectedSeriesColors[element.name].color;\n    if (element.areaStyle) {\n      element.areaStyle.opacity = 0;\n      optionsToChange.series[this.unselectedSeriesColors[element.name].index] = element;\n    }\n    if (emit) {\n      this.chartSeriesClick.emit({\n        itemName: element.name,\n        dataIndex: seriesDataIndex,\n        selected: true,\n        color: this.selectedSeriesColors[element.name].color\n      });\n    }\n    return optionsToChange;\n  }\n\n  private isValidDataZoomValue(val: any): boolean {\n    return val !== null && val !== undefined && !Number.isNaN(val);\n  }\n\n  private saveCurrentDataZoom(): void {\n    const options = this.actualOptions;\n    if (!options.grid || !options.dataZoom) {\n      return;\n    }\n\n    // When the last item on the legend is disabled, remember the current valid\n    // dataZoom setting. Due to a bug in ECharts it happens\n    // that the zoom slider disappears not to ever reappear again. To work around\n    // the problem, we simply inject the last valid dataZoom settings saved here\n    // once the invalid values (NaN) are detected\n    const currentOpts = this.getOptionNoClone();\n    if (!currentOpts?.dataZoom?.[0]) {\n      return;\n    }\n\n    const dz = currentOpts.dataZoom[0];\n    if (dz) {\n      this.lastValidDataZoom = {};\n      if (this.isValidDataZoomValue(dz.startValue)) {\n        this.lastValidDataZoom.startValue = dz.startValue;\n      } else if (this.isValidDataZoomValue(dz.start)) {\n        this.lastValidDataZoom.start = dz.start;\n      }\n      if (this.isValidDataZoomValue(dz.endValue)) {\n        this.lastValidDataZoom.endValue = dz.endValue;\n      } else if (this.isValidDataZoomValue(dz.end)) {\n        this.lastValidDataZoom.end = dz.end;\n      }\n    }\n  }\n\n  /**\n   * Get color by series name.\n   */\n  getSeriesColorBySeriesName(seriesName: string): string | undefined {\n    return this.doGetSeriesColorBySeriesName(seriesName).color;\n  }\n\n  private doGetSeriesColorBySeriesName(seriesName: string): {\n    color: string | undefined;\n    altName: boolean;\n  } {\n    const ecModel = this.internalGetModel();\n    const ecSeries = ecModel.getSeriesByName(seriesName);\n    if (ecSeries && ecSeries.length > 0) {\n      return { color: ecSeries[0].getData().getVisual('style')?.fill as string, altName: false };\n    }\n\n    let ret = { color: undefined as string | undefined, altName: false };\n    ecModel.eachRawSeries((seriesModel: any) => {\n      const idx = seriesModel.legendVisualProvider?.indexOfName(seriesName) ?? -1;\n      if (idx >= 0) {\n        ret = {\n          color: seriesModel.legendVisualProvider.getItemVisual(idx, 'style')?.fill as string,\n          altName: true\n        };\n      }\n    });\n    return ret;\n  }\n\n  private applyColorsToCustomLegends(): void {\n    if (!this.showLegend() || !this.showCustomLegend()) {\n      return;\n    }\n    this.customLegend.forEach(cl => {\n      cl.customLegends.forEach(legendAxis => {\n        legendAxis?.list.forEach(legend => {\n          const color = this.doGetSeriesColorBySeriesName(legend.name);\n          legend.color = color.color;\n          legend.alternativeNaming = color.altName;\n        });\n      });\n    });\n    this.cdRef.markForCheck();\n  }\n\n  private handleUpdateAxisPointer(event: any): void {\n    if (\n      event.seriesIndex !== this.prevAxisPointer.seriesIndex ||\n      event.dataIndex !== this.prevAxisPointer.dataIndex\n    ) {\n      this.prevAxisPointer.seriesIndex = event.seriesIndex;\n      this.prevAxisPointer.dataIndex = event.dataIndex;\n\n      if (this.axisPointer() && event.seriesIndex === undefined) {\n        return;\n      }\n\n      // Due to chart updates outside Angular, we need to emit events back\n      // inside Angular to activate Angular's change detection.\n      this.ngZone.run(() => {\n        this.pointer.emit({\n          seriesIndex: event.seriesIndex,\n          dataIndex: event.dataIndex\n        });\n      });\n    }\n  }\n\n  /**\n   * Get current data zoom range.\n   */\n  getVisibleRange(): DataZoomEvent | undefined {\n    return this.doGetVisibleRange(this.internalGetModel());\n  }\n\n  protected internalGetModel(): any {\n    return (this.chart as any)._model;\n  }\n\n  /**\n   * returns the current EChart options, w/o cloning anything. Be very careful\n   * not to change anything in the data structure in it.\n   */\n  getOptionNoClone(): any {\n    return this.internalGetModel().option;\n  }\n\n  protected parsePercent(percent: string | number, all: number): number {\n    if (typeof percent === 'string') {\n      if (percent.match(/\\d+%/)) {\n        return (parseFloat(percent) / 100) * all;\n      }\n      return parseFloat(percent);\n    }\n    return percent;\n  }\n\n  private doGetVisibleRange(zoomModel: any): DataZoomEvent | undefined {\n    const effectiveOpts: any = zoomModel.option;\n    const xAxis = effectiveOpts.xAxis?.[0];\n    const dz = effectiveOpts.dataZoom[0];\n\n    const rangeStartArray: number[] = [];\n    const rangeEndArray: number[] = [];\n    for (let i = 0; i < effectiveOpts.xAxis?.length; i++) {\n      const axis = zoomModel.getComponent('xAxis', i);\n      const extent = axis?.axis?.scale?.getExtent();\n      if (extent?.length) {\n        if (this.isValidDataZoomValue(extent[0])) {\n          rangeStartArray.push(extent[0]);\n        }\n        if (this.isValidDataZoomValue(extent[1])) {\n          rangeEndArray.push(extent[1]);\n        }\n      }\n    }\n\n    const rangeStart = rangeStartArray.length ? Math.min(...rangeStartArray) : dz?.startValue;\n    const rangeEnd = rangeEndArray.length ? Math.max(...rangeEndArray) : dz?.endValue;\n\n    if (!this.isValidDataZoomValue(rangeEnd)) {\n      return;\n    }\n\n    let gridWidth: number | undefined;\n    if (effectiveOpts.grid && effectiveOpts.grid.length > 0) {\n      const width = this.chart.getWidth();\n      const grid = effectiveOpts.grid[0];\n      gridWidth =\n        width - this.parsePercent(grid.left, width) - this.parsePercent(grid.right, width);\n    }\n\n    return {\n      rangeType: xAxis.type,\n      rangeStart,\n      rangeEnd,\n      width: gridWidth,\n      autoZoomUpdate: this.autoZoomUpdate\n    };\n  }\n\n  protected updateEChart(force = false, options?: EChartOption): void {\n    if (!this.chart) {\n      return;\n    }\n    let axisDZUpdated = this.updateAxisAndDataZoom(options);\n    options ??= this.actualOptions;\n    const isFilledArray = (v: any): boolean => Array.isArray(v) && v.length > 0;\n    if (\n      isFilledArray(options.grid) &&\n      isFilledArray(options.xAxis) &&\n      isFilledArray(options.dataZoom)\n    ) {\n      // adjust grid for axis labels\n      let max = 0;\n      options.yAxis.forEach((axis: any) => {\n        if (axis.position !== 'right' && isFilledArray(axis.data)) {\n          axis.data.forEach((label: string) => {\n            const width = this.calculateTextWidth(label);\n            max = Math.max(max, width);\n          });\n        }\n      });\n      max += 16; // long text getting truncated, so add some padding\n      const grids = options.grid as GridComponentOption[];\n      grids.forEach(g => (g.left = Math.max(g.left as number, max)));\n\n      // update dataZoom if not already set\n      const zoom = options.dataZoom![0];\n      if (\n        !this.isValidDataZoomValue(zoom?.startValue) &&\n        !this.isValidDataZoomValue(zoom?.endValue) &&\n        !this.isValidDataZoomValue(zoom?.end)\n      ) {\n        const range = this.getVisibleRange();\n        if (range) {\n          this.updateDataZoom({ startValue: range.rangeStart, endValue: range.rangeEnd });\n        }\n      }\n\n      // change in grid/axis requires a full update\n      force = true;\n      axisDZUpdated = true;\n    }\n\n    this.ngZone.runOutsideAngular(() => {\n      this.chart.setOption(options!, force);\n      this.setZoomMode();\n      if (axisDZUpdated && this.externalZoomSlider()) {\n        this.extZoomSliderChart.setOption(this.extZoomSliderOptions, false);\n      }\n    });\n\n    setTimeout(() => this.checkGridSizeChange());\n  }\n\n  protected updateAxisAndDataZoom(inOptions?: EChartOption): boolean {\n    const options = this.actualOptions;\n    if (!options.xAxis) {\n      return false;\n    }\n\n    const isFull = !inOptions || inOptions === options;\n    inOptions = inOptions ?? {};\n    if (!isFull && !inOptions.series && !options.dataZoom) {\n      return false;\n    }\n\n    const xAxis = Array.isArray(options.xAxis) ? options.xAxis : [options.xAxis];\n    if (!isFull && !inOptions.xAxis) {\n      // for delta update, make sure we have same-sized axis array\n      inOptions.xAxis = xAxis.map(() => ({}));\n    }\n\n    const minMax = this.getSeriesMinMax();\n\n    // extend range if DZ is bigger than actual data\n    const dz = inOptions?.dataZoom?.[0];\n    if (\n      dz?.startValue != null &&\n      (minMax.min === undefined || (dz.startValue as number) < minMax.min)\n    ) {\n      minMax.min = dz.startValue as number;\n    }\n    if (\n      dz?.endValue != null &&\n      (minMax.max === undefined || (dz.endValue as number) > minMax.max)\n    ) {\n      minMax.max = dz.endValue as number;\n    }\n\n    // Update all sub chart index to be controlled by the dataZoom\n    let xAxisIndexes: number[] = [];\n    xAxis.forEach((axis, index) => {\n      if (axis.gridIndex >= 0) {\n        // set min/max the same on all axis so that datazoom can work\n        axis.min = minMax.min;\n        axis.max = minMax.max;\n\n        if (!isFull) {\n          inOptions.xAxis[index].min = minMax.min;\n          inOptions.xAxis[index].max = minMax.max;\n        }\n\n        xAxisIndexes.push(index);\n      }\n    });\n\n    // update dataZoom\n    const effectiveOpts = this.getOptionNoClone();\n    const effectiveXAxis = effectiveOpts.xAxis;\n    if (effectiveXAxis.length > 1) {\n      // 1. find out all visible series\n      // 2. find out valid x index\n      // 3. remove invalid x axis from the xAxisIndex array\n      const validXAxis = this.getValidXAxis();\n      if (validXAxis) {\n        xAxisIndexes = xAxisIndexes.filter(index => validXAxis.has(index));\n      }\n    }\n\n    if (xAxisIndexes.length) {\n      const allDataZoom = options.dataZoom!;\n      allDataZoom.forEach(zoom => (zoom.xAxisIndex = xAxisIndexes));\n      if (!isFull && inOptions.dataZoom) {\n        inOptions.dataZoom.forEach(zoom => (zoom.xAxisIndex = xAxisIndexes));\n      }\n    }\n\n    // update external slider if required\n    if (this.externalZoomSlider()) {\n      const extSliderAxis = this.extZoomSliderOptions.xAxis[0];\n      if (extSliderAxis.min !== minMax.min || extSliderAxis.max !== minMax.max) {\n        extSliderAxis.min = minMax.min;\n        extSliderAxis.max = minMax.max;\n        this.extZoomSliderOptions.series![0].data = [\n          [minMax.min, null],\n          [minMax.max, null]\n        ];\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Send action to echart.\n   * @see https://echarts.apache.org/en/api.html#action\n   */\n  dispatchEChartAction(action: echarts.Payload): void {\n    if (!this.chart) {\n      return;\n    }\n    this.ngZone.runOutsideAngular(() => {\n      this.chart.dispatchAction(action);\n    });\n    this.cdRef.markForCheck();\n  }\n\n  private getSeriesMinMax(visibleOnly = false): {\n    min: number | undefined;\n    max: number | undefined;\n  } {\n    const legend = visibleOnly ? this.internalGetModel().getComponent('legend') : undefined;\n    let min: number | undefined;\n    let max: number | undefined;\n    this.actualOptions.series?.forEach(s => {\n      const seriesData = s.data as any[];\n      if (seriesData?.length > 1 && (!legend || legend.isSelected(s.name))) {\n        const start = seriesData[0][0]?.valueOf();\n        const last = seriesData[seriesData.length - 1];\n        // end value is can be undefined sometimes, if we don't have milliseconds as a value, instead\n        // we have value[] array of Date, so to handle that scenario we are taking value[0].valueOf() to\n        // calculate the millisecond value i.e from Date(value[0])\n        const end = last[0]?.valueOf() ?? last.value?.[0]?.valueOf();\n        if (this.isValidDataZoomValue(start) && this.isValidDataZoomValue(end)) {\n          if (min === undefined || start < min) {\n            min = start;\n          }\n          if (max === undefined || end > max) {\n            max = end;\n          }\n        }\n      }\n    });\n    return { min, max };\n  }\n\n  private calculateVisibleRange(range: DataZoomEvent | undefined): void {\n    const options = this.actualOptions;\n    if (!options.xAxis || !this.hasDataZoom() || !range) {\n      return;\n    }\n    if (!Array.isArray(options.xAxis) && options.xAxis.type === 'category') {\n      this.visibleRange.set(Math.ceil(range.rangeEnd) - Math.floor(range.rangeStart));\n    } else {\n      this.visibleRange.set(Math.round(range.rangeEnd - range.rangeStart));\n    }\n\n    // once in range mode, disable the entries mode to prevent overriding the user\n    this.visibleEntries.set(-1);\n  }\n\n  private getValueFromSeriesPoint(point: any): any[] {\n    return Array.isArray(point) ? point : point.value;\n  }\n\n  private calculateZoomStartValue(): any {\n    const options = this.actualOptions;\n    if (!options.series) {\n      return null;\n    }\n\n    const seriesData = options.series[this.autoZoomSeriesIndex()]?.data as any[];\n    if (!seriesData) {\n      return null;\n    }\n\n    if (this.visibleEntries() > -1) {\n      const offset = Math.min(seriesData.length, this.visibleEntries());\n      const data = seriesData[seriesData.length - offset];\n      return data ? this.getValueFromSeriesPoint(data)[0] : null;\n    } else if (this.visibleRange() > -1) {\n      const minMax = this.getSeriesMinMax(true);\n      if (minMax.min && minMax.max) {\n        // make sure startValue is >= the min data value\n        return Math.max(minMax.min, minMax.max - this.visibleRange());\n      }\n      const data = seriesData[seriesData.length - 1];\n      return data ? this.getValueFromSeriesPoint(data)[0] - this.visibleRange() : null;\n    }\n    return null;\n  }\n\n  protected hasData(): boolean {\n    return this.actualOptions.series?.some(s => (s.data as any[])?.length > 0) ?? false;\n  }\n\n  /**\n   * Re-render the chart series data. This method should be called on series data changes.\n   */\n  refreshSeries(isLive: boolean = true, dzToSet?: DataZoomRange): void {\n    dzToSet ??= this.presetDataZoomRange;\n    const optionsToUpdate: any = {\n      series: this.actualOptions.series\n    };\n\n    if (!isLive) {\n      this.updateEChart(false, optionsToUpdate);\n      return;\n    }\n\n    if (this.hasDataZoom() && this.hasData()) {\n      if (dzToSet) {\n        this.dataZoomSetupDone = true;\n\n        const dz = this.getPresetDataZoom(dzToSet);\n        if (dz) {\n          const requested = { ...dzToSet };\n          this.presetDataZoomRange = undefined;\n          this.updateDataZoom(dz, optionsToUpdate);\n\n          // dispatch the same async. reasoning: the sync here is needed to prevent\n          // flickering, the async dispatch to ensure a DataZoomEvent is fired so\n          // that any consumer of this event work as expected\n          setTimeout(() => {\n            this.ngZone.runOutsideAngular(() => {\n              this.requestedDataZoom = requested;\n              this.handleDataZoom(dz, 'refreshSeries');\n            });\n          });\n        }\n      } else if (!this.dataZoomSetupDone) {\n        // need to do this async to have the data in ECharts\n        setTimeout(() => {\n          if (!this.dataZoomSetupDone && !this.dataZoomRange() && this.chart) {\n            this.calculateVisibleRange(this.getVisibleRange());\n          }\n          this.dataZoomSetupDone = true;\n        });\n      } else if (this.zoomSlider() && this.autoZoomUpdate && this.autoZoomSeriesIndex() !== -1) {\n        // this ensures the slider is at the end and the window size remains stable, showing new data\n        const startValue = this.calculateZoomStartValue();\n        if (this.isValidDataZoomValue(startValue)) {\n          this.updateDataZoom({ startValue, end: 100 }, optionsToUpdate);\n        }\n        if (isLive) {\n          this.dispatchEChartAction({ type: 'hideTip' });\n        }\n      } else {\n        // this ensures the current displayed window stays stable as new data arrives\n        const dz = this.getOptionNoClone().dataZoom[0];\n        if (\n          this.isValidDataZoomValue(dz.startValue) &&\n          this.isValidDataZoomValue(dz.endValue) &&\n          dz.end !== 100\n        ) {\n          this.updateDataZoom(\n            { startValue: dz.startValue, endValue: dz.endValue },\n            optionsToUpdate\n          );\n        }\n      }\n    }\n\n    this.updateEChart(false, optionsToUpdate);\n  }\n\n  // this ensures DZ is in sync everywhere\n  private updateDataZoom(dz: DataZoomRange, optionsToUpdate?: EChartOption): void {\n    const options = this.actualOptions;\n    if (options.dataZoom?.[0]) {\n      this.doUpdateDZ(dz, options.dataZoom[0]);\n    }\n    if (optionsToUpdate && optionsToUpdate !== options) {\n      if (Array.isArray(optionsToUpdate.dataZoom)) {\n        this.doUpdateDZ(dz, optionsToUpdate.dataZoom[0]);\n      } else if (optionsToUpdate.dataZoom) {\n        this.doUpdateDZ(dz, optionsToUpdate.dataZoom);\n      } else {\n        optionsToUpdate.dataZoom = [{ ...dz }];\n      }\n    }\n    if (this.externalZoomSlider()) {\n      this.doUpdateDZ(dz, this.extZoomSliderOptions.dataZoom![0]);\n    }\n  }\n\n  private doUpdateDZ(dz: DataZoomRange, dzOptions: DataZoomComponentOption): void {\n    // make sure only to have value or percent\n    if (this.isValidDataZoomValue(dz.startValue)) {\n      dzOptions.startValue = dz.startValue;\n      dzOptions.start = undefined;\n    } else if (this.isValidDataZoomValue(dz.start)) {\n      dzOptions.start = dz.start;\n      dzOptions.startValue = undefined;\n    }\n    if (this.isValidDataZoomValue(dz.endValue)) {\n      dzOptions.endValue = dz.endValue;\n      dzOptions.end = undefined;\n    } else if (this.isValidDataZoomValue(dz.end)) {\n      dzOptions.end = dz.end;\n      dzOptions.endValue = undefined;\n    }\n  }\n\n  protected applyStyles(): void {\n    const bodyStyle: CSSStyleDeclaration = window.getComputedStyle(document.body);\n    const options = this.actualOptions;\n    options.textStyle = {\n      fontFamily: navigator.webdriver ? 'sans-serif' : bodyStyle.fontFamily,\n      fontSize: bodyStyle.fontSize\n    };\n    this.extZoomSliderOptions.textStyle = options.textStyle;\n  }\n\n  protected addLegendItem(\n    name: string,\n    visible?: boolean | null,\n    index: number = 0,\n    gridIndex: number = 0,\n    customLegendProp?: CustomLegendProps,\n    seriesSymbol?: string\n  ): void {\n    const options = this.actualOptions;\n    if (!options.legend?.length) {\n      return;\n    }\n\n    const legend = options.legend[options.legend.length > index ? index : 0];\n    const unitText = customLegendProp ? customLegendProp.unit : undefined;\n    const customLegendItem: CustomLegendItem = {\n      name: '',\n      displayName: '',\n      color: '',\n      selected: false,\n      tooltip: customLegendProp ? customLegendProp.tooltip : '',\n      symbol: this.getPath(seriesSymbol, false)\n    };\n    legend.data?.push({\n      name,\n      icon: this.getPath(seriesSymbol, true)\n    });\n\n    legend.selected ??= {};\n\n    if (visible !== null && visible !== undefined) {\n      legend.selected[name] = visible;\n      customLegendItem.selected = visible;\n    }\n    const showCustomLegend = this.showCustomLegend();\n    if (this.showLegend() && showCustomLegend) {\n      if (visible !== false) {\n        customLegendItem.selected = true;\n      }\n      customLegendItem.name = name;\n      customLegendItem.displayName = customLegendProp?.displayName ?? name;\n\n      if (showCustomLegend) {\n        this.addCustomLegend(customLegendItem, unitText, index, gridIndex);\n      }\n    }\n    this.cdRef.markForCheck();\n  }\n\n  private getPath(seriesSymbol: string | undefined, prefix: boolean): string {\n    const path = seriesSymbol ? this.shapePaths[seriesSymbol] : this.shapePaths.circle;\n    return prefix ? 'path://' + path : path;\n  }\n\n  private addCustomLegend(\n    customLegendItem: CustomLegendItem,\n    unitText: string | undefined,\n    index: number,\n    gridIndex: number = 0\n  ): void {\n    if (this.actualOptions.legend) {\n      if (!this.customLegend[gridIndex].customLegends) {\n        this.customLegend[gridIndex].customLegends = [\n          { list: [], unit: '' },\n          { list: [], unit: '' }\n        ];\n      }\n      // index = 0 means left legend\n      if (index === 0) {\n        if (!this.customLegend[gridIndex]?.customLegends[0]?.list) {\n          this.customLegend[gridIndex].customLegends[0] = { list: [customLegendItem] };\n        } else {\n          // legend with same id and name not found\n          this.customLegend[gridIndex].customLegends[0].list.push(customLegendItem);\n        }\n        this.customLegend[gridIndex].customLegends[0].unit = unitText;\n      } else {\n        // index = 1 means right legend\n        if (!this.customLegend[gridIndex]?.customLegends[1]?.list) {\n          this.customLegend[gridIndex].customLegends[1] = { list: [customLegendItem] };\n        } else {\n          this.customLegend[gridIndex].customLegends[1].list.push(customLegendItem);\n        }\n        this.customLegend[gridIndex].customLegends[1].unit = unitText;\n      }\n      this.applyCustomLegendPosition();\n    }\n  }\n\n  /**\n   * Show loading indicator.\n   */\n  public startProgressIndication(): void {\n    this.inProgress.set(true);\n  }\n\n  /**\n   * Hide loading indicator.\n   */\n  public stopProgressIndication(): void {\n    this.inProgress.set(false);\n  }\n\n  /**\n   * Set the data zoom range for the chart in milliseconds.\n   * As an example one hour is the value 3600000.\n   */\n  setTimeRange(range: number): void {\n    const currentDZ = this.getVisibleRange();\n    const minMax = this.getSeriesMinMax(true);\n    if (!currentDZ || minMax.min == null || minMax.max == null) {\n      return;\n    }\n\n    const mid = (currentDZ.rangeStart + currentDZ.rangeEnd) / 2;\n    const halfRange = range / 2;\n\n    let start: number;\n    let end: number;\n\n    if (range === 0 || range > minMax.max - minMax.min) {\n      start = minMax.min;\n      end = minMax.max;\n    } else {\n      start = mid - halfRange;\n      end = mid + halfRange;\n\n      // at start\n      if (start < minMax.min) {\n        start = minMax.min;\n        end = start + range;\n      }\n\n      // at end. Special case: if already at end, keep end\n      if (end > minMax.max || currentDZ.rangeEnd === minMax.max) {\n        start = minMax.max - range;\n        end = minMax.max;\n      }\n    }\n\n    this.dispatchEChartAction({ type: 'dataZoom', startValue: start, endValue: end });\n  }\n\n  protected addDataInternal(series: SeriesUpdate<any>[]): void {\n    const options = this.actualOptions;\n    series.forEach(update => {\n      const currentSeries = options.series![update.index];\n      if (!currentSeries) {\n        return;\n      }\n      const seriesData = currentSeries.data as any[];\n      seriesData.push(update.data);\n      if (this.maxEntries() > 0 && seriesData.length > this.maxEntries()) {\n        seriesData.splice(0, seriesData.length - this.maxEntries());\n      }\n    });\n\n    this.refreshSeries();\n  }\n\n  private getPresetDataZoom(range: DataZoomRange): any {\n    let ret: any;\n    if (range.visibleWidth && this.autoZoomSeriesIndex() !== -1) {\n      this.visibleRange.set(range.visibleWidth);\n\n      const startValue = this.calculateZoomStartValue();\n      if (this.isValidDataZoomValue(startValue)) {\n        this.autoZoomUpdate = true;\n        ret = { startValue, end: 100 };\n      }\n    } else if (\n      this.isValidDataZoomValue(range.startValue) &&\n      this.isValidDataZoomValue(range.endValue)\n    ) {\n      // handling the case when startValue and endValue is given as a fixed time interval\n      ret = {\n        startValue: range.startValue,\n        endValue: range.endValue\n      };\n      this.autoZoomUpdate = false;\n    } else {\n      ret = { ...range };\n    }\n\n    return ret;\n  }\n\n  private checkGridSizeChange(): void {\n    if (!this.chart) {\n      return;\n    }\n    const gridRectNew: GridRectCoordinate =\n      this.internalGetModel()?.getComponent('grid')?.coordinateSystem?._rect;\n    if (gridRectNew) {\n      const nativeWrapper = this.chartContainerWrapper().nativeElement as HTMLElement;\n      gridRectNew.containerWidth = nativeWrapper.offsetWidth;\n      gridRectNew.containerHeight = nativeWrapper.offsetHeight;\n\n      let isGridResized = false;\n\n      for (const objKey of Object.keys(this.gridCoordinates) as (keyof GridRectCoordinate)[]) {\n        if (this.gridSizeItemChanged(gridRectNew[objKey], this.gridCoordinates[objKey])) {\n          isGridResized = true;\n          break;\n        }\n      }\n\n      if (isGridResized) {\n        // update new coordinates and emit event\n        this.gridCoordinates = gridRectNew;\n        this.timeBarLeft.set(this.gridCoordinates.x);\n        this.timeBarRight.set(\n          this.gridCoordinates.containerWidth - this.gridCoordinates.x - this.gridCoordinates.width\n        );\n\n        if (this.externalZoomSlider() && Array.isArray(this.extZoomSliderOptions?.grid)) {\n          this.extZoomSliderOptions.grid[0].left = this.timeBarLeft();\n          this.extZoomSliderOptions.grid[0].right = this.timeBarRight();\n          this.extZoomSliderChart.setOption({ grid: this.extZoomSliderOptions.grid }, false);\n        }\n        this.ngZone.run(() => this.chartGridResized.emit(this.gridCoordinates));\n      }\n    }\n    this.cdRef.markForCheck();\n  }\n\n  private gridSizeItemChanged(a: any, b: any): boolean {\n    return Array.isArray(a)\n      ? a.length !== b.length || (a as any[]).some((item, index) => item !== b[index])\n      : a !== b;\n  }\n\n  private setContainerHeight(): void {\n    const newHeight = parseInt(this.eChartContainerHeight()!, 10) || null;\n    if (newHeight !== this.containerHeight()) {\n      this.containerHeight.set(newHeight);\n\n      this.ngZone.runOutsideAngular(() => {\n        this.chart?.resize({ width: this.curWidth, height: newHeight ?? this.curHeight });\n        if (this.externalZoomSlider()) {\n          this.extZoomSliderChart.resize();\n        }\n      });\n    }\n  }\n\n  private updateCustomLegendMultiLineInfo(): void {\n    const event: CustomLegendMultiLineInfo[] = [];\n    this.siCustomLegend().forEach((legend, index) => {\n      event.push({\n        customLegendId: index,\n        isCustomLegendMultilined: legend.customLegendContainer().nativeElement.offsetHeight > 20\n      });\n    });\n    if (\n      event.length !== this.customLegendsMultiLineInfo.length ||\n      event.some(\n        (e, index) =>\n          e.isCustomLegendMultilined !==\n          this.customLegendsMultiLineInfo[index].isCustomLegendMultilined\n      )\n    ) {\n      this.customLegendsMultiLineInfo = event;\n      this.customLegendMultiLineInfoEvent.emit(event);\n    }\n    this.cdRef.markForCheck();\n  }\n}\n","@if (showCustomLegend() && (title() || subTitle())) {\n  <div class=\"si-h5 chart-title chart-title-width\" [style.background-color]=\"backgroundColor()\">\n    <div class=\"chart-title-text\" [style.color]=\"titleColor()\">{{ title() }}</div>\n    @if (subTitle()) {\n      <div class=\"si-body\" [style.color]=\"subTitleColor()\">{{ subTitle() }}</div>\n    }\n  </div>\n}\n\n<div\n  #chartContainerWrapper\n  class=\"chart-container-wrapper\"\n  [class.chart-scroll]=\"containerHeight()\"\n  [attr.tabindex]=\"containerHeight() ? '0' : null\"\n>\n  <div class=\"chart-container\" [style.height.px]=\"containerHeight()\">\n    @if (showCustomLegend()) {\n      @for (cl of customLegend; track $index) {\n        <si-custom-legend\n          #siCustomLegend\n          class=\"custom-legend\"\n          [style.top.px]=\"cl.top\"\n          [title]=\"title()\"\n          [subTitle]=\"subTitle()\"\n          [customLegend]=\"cl\"\n          [style.background-color]=\"backgroundColor()\"\n          [titleColor]=\"titleColor()\"\n          [subTitleColor]=\"subTitleColor()\"\n          [textColor]=\"textColor()\"\n          (legendIconClickEvent)=\"handleLegendClick($event)\"\n          (legendClickEvent)=\"handleLegendClick($event)\"\n          (legendHoverStartEvent)=\"handleLegendHover($event, true)\"\n          (legendHoverEndEvent)=\"handleLegendHover($event, false)\"\n        />\n      }\n    }\n    <div #chart class=\"echart-container\" [style.height.px]=\"containerHeight()\"></div>\n  </div>\n</div>\n@if (externalZoomSlider()) {\n  <div\n    #externalZoomSlider\n    class=\"external-zoom-container\"\n    [class.has-time-range-bar]=\"showTimeRangeBar()\"\n    [style.--time-bar-height.px]=\"timeBarHeight()\"\n  ></div>\n}\n\n@if (showTimeRangeBar() && zoomSlider()) {\n  <div\n    class=\"time-range-bar\"\n    [style.bottom.px]=\"timeBarBottom()\"\n    [style.padding-left.px]=\"timeBarLeft()\"\n    [style.padding-right.px]=\"timeBarRight()\"\n  >\n    <ng-content select=\"[slot=timeRangeBar]\" />\n  </div>\n}\n\n@if (inProgress()) {\n  <div class=\"progress-container\">\n    <si-chart-loading-spinner />\n  </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './echarts.custom';\nexport * from './echarts.model';\nexport * from './si-chart-base.component';\nexport * from './si-chart.interfaces';\nexport * from './theme-support';\nexport * from './themes/element';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}