UNPKG

@swimlane/ngx-charts

Version:

Declarative Charting Framework for Angular

1 lines 1.11 MB
{"version":3,"file":"swimlane-ngx-charts.mjs","sources":["../../../../projects/swimlane/ngx-charts/src/lib/utils/throttle.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/position/placement-type.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/position/position.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/tooltip.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/injection-registery.service.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/injection.service.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/tooltip.service.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/types/legend.model.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/types/scale-type.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/label.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/legend/legend-entry.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/legend/legend.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/legend/scale-legend.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/charts/chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/visibility-observer.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/types.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/base-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/types/orientation.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/axis-label.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/trim-label.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/ticks.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/types/text-anchor.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/shape.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/x-axis-ticks.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/x-axis.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/y-axis-ticks.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/y-axis.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/axes/axes.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/style.type.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/show.type.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/tooltip.directive.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip/tooltip.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/id.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/types/bar-orientation.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/circle.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/svg-linear-gradient.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/circle-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/grid-panel.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/grid-panel-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/svg-radial-gradient.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/area.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/count/count.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/count/count.directive.ts","../../../../projects/swimlane/ngx-charts/src/lib/events.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tooltip-area.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/timeline/timeline.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/legend/advanced-legend.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/chart-common.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/view-dimensions.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/color-sets.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/color.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/domain.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/sort.ts","../../../../projects/swimlane/ngx-charts/src/lib/area-chart/area-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/area-chart/area-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/area-chart/area-chart-normalized.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/area-chart/area-chart-stacked.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/area-chart/area-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/types/bar-chart-type.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/types/d0-type.enum.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-label.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/series-horizontal.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-horizontal.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-horizontal-2d.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-horizontal-normalized.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-horizontal-stacked.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/series-vertical.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-vertical.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-vertical-2d.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-vertical-normalized.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-vertical-stacked.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bar-chart/bar-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/box-chart/box.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/box-chart/box-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/box-chart/box-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/box-chart/box-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/bubble-chart/bubble-chart.utils.ts","../../../../projects/swimlane/ngx-charts/src/lib/bubble-chart/bubble-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bubble-chart/bubble-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/bubble-chart/bubble-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/heat-map/heat-map-cell.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/heat-map/heat-map-cell-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/heat-map/heat-map.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/heat-map/heat-map.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/line-chart/line.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/line-chart/line-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/line-chart/line-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/line-chart/line-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-label.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/polar-chart/polar-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/polar-chart/polar-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-arc.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/advanced-pie-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-chart.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/grid-layout.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-grid-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-grid.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/pie-chart/pie-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/polar-chart/polar-chart.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/calculate-width.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/constants/font-widths.ts","../../../../projects/swimlane/ngx-charts/src/lib/number-card/card.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/utils/color-utils.ts","../../../../projects/swimlane/ngx-charts/src/lib/number-card/card-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/number-card/number-card.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/number-card/number-card.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/tree-map/tree-map-cell.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/tree-map/tree-map-cell-series.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/tree-map/tree-map.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/tree-map/tree-map.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/gauge/linear-gauge.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/gauge/gauge-arc.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/gauge/gauge-axis.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/gauge/gauge.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/gauge/percent-gauge/percent-gauge.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/gauge/gauge.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/polyfills.ts","../../../../projects/swimlane/ngx-charts/src/lib/sankey/sankey.component.ts","../../../../projects/swimlane/ngx-charts/src/lib/sankey/sankey.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/ngx-charts.module.ts","../../../../projects/swimlane/ngx-charts/src/lib/common/tick-format.helper.ts","../../../../projects/swimlane/ngx-charts/src/lib/models/chart-data.model.ts","../../../../projects/swimlane/ngx-charts/src/public-api.ts","../../../../projects/swimlane/ngx-charts/src/swimlane-ngx-charts.ts"],"sourcesContent":["/**\n * Throttle a function\n *\n */\nexport function throttle(func: any, wait: number, options?: any) {\n  options = options || {};\n  let context;\n  let args;\n  let result;\n  let timeout = null;\n  let previous = 0;\n\n  function later() {\n    previous = options.leading === false ? 0 : +new Date();\n    timeout = null;\n    result = func.apply(context, args);\n  }\n\n  return function () {\n    const now = +new Date();\n\n    if (!previous && options.leading === false) {\n      previous = now;\n    }\n\n    const remaining = wait - (now - previous);\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    context = this;\n    // eslint-disable-next-line prefer-rest-params\n    args = arguments;\n\n    if (remaining <= 0) {\n      clearTimeout(timeout);\n      timeout = null;\n      previous = now;\n      result = func.apply(context, args);\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(later, remaining);\n    }\n\n    return result;\n  };\n}\n\n/**\n * Throttle decorator\n *\n *  class MyClass {\n *    throttleable(10)\n *    myFn() { ... }\n *  }\n */\nexport function throttleable(duration: number, options?: any) {\n  return function innerDecorator(target, key, descriptor) {\n    return {\n      configurable: true,\n      enumerable: descriptor.enumerable,\n      get: function getter() {\n        Object.defineProperty(this, key, {\n          configurable: true,\n          enumerable: descriptor.enumerable,\n          value: throttle(descriptor.value, duration, options)\n        });\n\n        return this[key];\n      }\n    };\n  };\n}\n","export enum PlacementTypes {\n  Top = 'top',\n  Bottom = 'bottom',\n  Left = 'left',\n  Right = 'right',\n  Center = 'center'\n}\n","import { PlacementTypes } from './placement-type.enum';\n\nconst caretOffset = 7;\n\nfunction verticalPosition(elDimensions: DOMRect, popoverDimensions: DOMRect, alignment: PlacementTypes): number {\n  if (alignment === PlacementTypes.Top) {\n    return elDimensions.top - caretOffset;\n  }\n\n  if (alignment === PlacementTypes.Bottom) {\n    return elDimensions.top + elDimensions.height - popoverDimensions.height + caretOffset;\n  }\n\n  if (alignment === PlacementTypes.Center) {\n    return elDimensions.top + elDimensions.height / 2 - popoverDimensions.height / 2;\n  }\n\n  return undefined;\n}\n\nfunction horizontalPosition(elDimensions: DOMRect, popoverDimensions: DOMRect, alignment: PlacementTypes): number {\n  if (alignment === PlacementTypes.Left) {\n    return elDimensions.left - caretOffset;\n  }\n\n  if (alignment === PlacementTypes.Right) {\n    return elDimensions.left + elDimensions.width - popoverDimensions.width + caretOffset;\n  }\n\n  if (alignment === PlacementTypes.Center) {\n    return elDimensions.left + elDimensions.width / 2 - popoverDimensions.width / 2;\n  }\n\n  return undefined;\n}\n\n/**\n * Position helper for the popover directive.\n *\n * @export\n */\nexport class PositionHelper {\n  /**\n   * Calculate vertical alignment position\n   *\n   * @memberOf PositionHelper\n   */\n  static calculateVerticalAlignment(\n    elDimensions: DOMRect,\n    popoverDimensions: DOMRect,\n    alignment: PlacementTypes\n  ): number {\n    let result = verticalPosition(elDimensions, popoverDimensions, alignment);\n\n    if (result + popoverDimensions.height > window.innerHeight) {\n      result = window.innerHeight - popoverDimensions.height;\n    }\n\n    return result;\n  }\n\n  /**\n   * Calculate vertical caret position\n   *\n   * @memberOf PositionHelper\n   */\n  static calculateVerticalCaret(\n    elDimensions: DOMRect,\n    popoverDimensions: DOMRect,\n    caretDimensions: DOMRect,\n    alignment: PlacementTypes\n  ): number {\n    let result;\n\n    if (alignment === PlacementTypes.Top) {\n      result = elDimensions.height / 2 - caretDimensions.height / 2 + caretOffset;\n    }\n\n    if (alignment === PlacementTypes.Bottom) {\n      result = popoverDimensions.height - elDimensions.height / 2 - caretDimensions.height / 2 - caretOffset;\n    }\n\n    if (alignment === PlacementTypes.Center) {\n      result = popoverDimensions.height / 2 - caretDimensions.height / 2;\n    }\n\n    const popoverPosition = verticalPosition(elDimensions, popoverDimensions, alignment);\n    if (popoverPosition + popoverDimensions.height > window.innerHeight) {\n      result += popoverPosition + popoverDimensions.height - window.innerHeight;\n    }\n\n    return result;\n  }\n\n  /**\n   * Calculate horz alignment position\n   *\n   * @memberOf PositionHelper\n   */\n  static calculateHorizontalAlignment(\n    elDimensions: DOMRect,\n    popoverDimensions: DOMRect,\n    alignment: PlacementTypes\n  ): number {\n    let result = horizontalPosition(elDimensions, popoverDimensions, alignment);\n\n    if (result + popoverDimensions.width > window.innerWidth) {\n      result = window.innerWidth - popoverDimensions.width;\n    }\n\n    return result;\n  }\n\n  /**\n   * Calculate horz caret position\n   *\n   * @memberOf PositionHelper\n   */\n  static calculateHorizontalCaret(\n    elDimensions: DOMRect,\n    popoverDimensions: DOMRect,\n    caretDimensions: DOMRect,\n    alignment: PlacementTypes\n  ): number {\n    let result;\n\n    if (alignment === PlacementTypes.Left) {\n      result = elDimensions.width / 2 - caretDimensions.width / 2 + caretOffset;\n    }\n\n    if (alignment === PlacementTypes.Right) {\n      result = popoverDimensions.width - elDimensions.width / 2 - caretDimensions.width / 2 - caretOffset;\n    }\n\n    if (alignment === PlacementTypes.Center) {\n      result = popoverDimensions.width / 2 - caretDimensions.width / 2;\n    }\n\n    const popoverPosition = horizontalPosition(elDimensions, popoverDimensions, alignment);\n    if (popoverPosition + popoverDimensions.width > window.innerWidth) {\n      result += popoverPosition + popoverDimensions.width - window.innerWidth;\n    }\n\n    return result;\n  }\n\n  /**\n   * Checks if the element's position should be flipped\n   *\n   * @memberOf PositionHelper\n   */\n  static shouldFlip(\n    elDimensions: DOMRect,\n    popoverDimensions: DOMRect,\n    placement: PlacementTypes,\n    spacing: number\n  ): boolean {\n    let flip = false;\n\n    if (placement === PlacementTypes.Right) {\n      if (elDimensions.left + elDimensions.width + popoverDimensions.width + spacing > window.innerWidth) {\n        flip = true;\n      }\n    }\n\n    if (placement === PlacementTypes.Left) {\n      if (elDimensions.left - popoverDimensions.width - spacing < 0) {\n        flip = true;\n      }\n    }\n\n    if (placement === PlacementTypes.Top) {\n      if (elDimensions.top - popoverDimensions.height - spacing < 0) {\n        flip = true;\n      }\n    }\n\n    if (placement === PlacementTypes.Bottom) {\n      if (elDimensions.top + elDimensions.height + popoverDimensions.height + spacing > window.innerHeight) {\n        flip = true;\n      }\n    }\n\n    return flip;\n  }\n\n  /**\n   * Position caret\n   *\n   * @memberOf PositionHelper\n   */\n  static positionCaret(placement, elmDim, hostDim, caretDimensions, alignment: PlacementTypes): any {\n    let top = 0;\n    let left = 0;\n\n    if (placement === PlacementTypes.Right) {\n      left = -7;\n      top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n    } else if (placement === PlacementTypes.Left) {\n      left = elmDim.width;\n      top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n    } else if (placement === PlacementTypes.Top) {\n      top = elmDim.height;\n      left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n    } else if (placement === PlacementTypes.Bottom) {\n      top = -7;\n      left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n    }\n\n    return { top, left };\n  }\n\n  /**\n   * Position content\n   *\n   * @memberOf PositionHelper\n   */\n  static positionContent(placement, elmDim, hostDim, spacing, alignment): any {\n    let top = 0;\n    let left = 0;\n\n    if (placement === PlacementTypes.Right) {\n      left = hostDim.left + hostDim.width + spacing;\n      top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n    } else if (placement === PlacementTypes.Left) {\n      left = hostDim.left - elmDim.width - spacing;\n      top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n    } else if (placement === PlacementTypes.Top) {\n      top = hostDim.top - elmDim.height - spacing;\n      left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n    } else if (placement === PlacementTypes.Bottom) {\n      top = hostDim.top + hostDim.height + spacing;\n      left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n    }\n\n    return { top, left };\n  }\n\n  /**\n   * Determine placement based on flip\n   *\n   * @memberOf PositionHelper\n   */\n  static determinePlacement(placement: PlacementTypes, elmDim: DOMRect, hostDim: DOMRect, spacing: number): any {\n    const shouldFlip = PositionHelper.shouldFlip(hostDim, elmDim, placement, spacing);\n\n    if (shouldFlip) {\n      if (placement === PlacementTypes.Right) {\n        return PlacementTypes.Left;\n      } else if (placement === PlacementTypes.Left) {\n        return PlacementTypes.Right;\n      } else if (placement === PlacementTypes.Top) {\n        return PlacementTypes.Bottom;\n      } else if (placement === PlacementTypes.Bottom) {\n        return PlacementTypes.Top;\n      }\n    }\n\n    return placement;\n  }\n}\n","import {\n  Input,\n  Component,\n  ElementRef,\n  AfterViewInit,\n  ViewEncapsulation,\n  HostListener,\n  ViewChild,\n  HostBinding,\n  Renderer2,\n  PLATFORM_ID,\n  Inject,\n  TemplateRef\n} from '@angular/core';\n\nimport { throttleable } from '../../utils/throttle';\nimport { PositionHelper, PlacementTypes } from './position';\n\nimport { StyleTypes } from './style.type';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Component({\n  selector: 'ngx-tooltip-content',\n  template: `\n    <div>\n      <span #caretElm [hidden]=\"!showCaret\" class=\"tooltip-caret position-{{ this.placement }}\"> </span>\n      <div class=\"tooltip-content\">\n        <span *ngIf=\"!title\">\n          <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ model: context }\"> </ng-template>\n        </span>\n        <span *ngIf=\"title\" [innerHTML]=\"title\"> </span>\n      </div>\n    </div>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./tooltip.component.scss'],\n  standalone: false\n})\nexport class TooltipContentComponent implements AfterViewInit {\n  @Input() host: ElementRef;\n  @Input() showCaret: boolean;\n  @Input() type: StyleTypes;\n  @Input() placement: PlacementTypes;\n  @Input() alignment: PlacementTypes;\n  @Input() spacing: number;\n  @Input() cssClass: string;\n  @Input() title: string;\n  @Input() template: TemplateRef<any>;\n  @Input() context: any;\n\n  @ViewChild('caretElm') caretElm: ElementRef;\n\n  @HostBinding('class')\n  get cssClasses(): string {\n    let clz = 'ngx-charts-tooltip-content';\n    clz += ` position-${this.placement}`;\n    clz += ` type-${this.type}`;\n    clz += ` ${this.cssClass}`;\n    return clz;\n  }\n\n  constructor(public element: ElementRef, private renderer: Renderer2, @Inject(PLATFORM_ID) private platformId: any) {}\n\n  ngAfterViewInit(): void {\n    setTimeout(this.position.bind(this));\n  }\n\n  position(): void {\n    if (!isPlatformBrowser(this.platformId)) {\n      return;\n    }\n\n    const nativeElm = this.element.nativeElement;\n    const hostDim = this.host.nativeElement.getBoundingClientRect();\n\n    // if no dims were found, never show\n    if (!hostDim.height && !hostDim.width) return;\n\n    const elmDim = nativeElm.getBoundingClientRect();\n    this.checkFlip(hostDim, elmDim);\n    this.positionContent(nativeElm, hostDim, elmDim);\n\n    if (this.showCaret) {\n      this.positionCaret(hostDim, elmDim);\n    }\n\n    // animate its entry\n    setTimeout(() => this.renderer.addClass(nativeElm, 'animate'), 1);\n  }\n\n  positionContent(nativeElm: HTMLElement, hostDim: DOMRect, elmDim: DOMRect): void {\n    const { top, left } = PositionHelper.positionContent(this.placement, elmDim, hostDim, this.spacing, this.alignment);\n\n    this.renderer.setStyle(nativeElm, 'top', `${top}px`);\n    this.renderer.setStyle(nativeElm, 'left', `${left}px`);\n  }\n\n  positionCaret(hostDim: DOMRect, elmDim: DOMRect): void {\n    const caretElm = this.caretElm.nativeElement;\n    const caretDimensions = caretElm.getBoundingClientRect();\n    const { top, left } = PositionHelper.positionCaret(\n      this.placement,\n      elmDim,\n      hostDim,\n      caretDimensions,\n      this.alignment\n    );\n\n    this.renderer.setStyle(caretElm, 'top', `${top}px`);\n    this.renderer.setStyle(caretElm, 'left', `${left}px`);\n  }\n\n  checkFlip(hostDim: DOMRect, elmDim: DOMRect): void {\n    this.placement = PositionHelper.determinePlacement(this.placement, elmDim, hostDim, this.spacing);\n  }\n\n  @HostListener('window:resize')\n  @throttleable(100)\n  onWindowResize(): void {\n    this.position();\n  }\n}\n","import { ComponentRef, Type } from '@angular/core';\nimport { InjectionService } from './injection.service';\n\nexport interface PartialBindings {\n  inputs?: object;\n  outputs?: object;\n}\n\nexport abstract class InjectionRegisteryService<T = any> {\n  protected abstract type: Type<T>;\n\n  protected defaults: PartialBindings = {};\n  protected components: Map<any, Array<ComponentRef<T>>> = new Map();\n\n  constructor(public injectionService: InjectionService) {}\n\n  getByType(type: Type<T> = this.type) {\n    return this.components.get(type);\n  }\n\n  create(bindings: object): ComponentRef<T> {\n    return this.createByType(this.type, bindings);\n  }\n\n  createByType(type: Type<T>, bindings: PartialBindings): ComponentRef<T> {\n    bindings = this.assignDefaults(bindings);\n\n    const component = this.injectComponent(type, bindings);\n    this.register(type, component);\n\n    return component;\n  }\n\n  destroy(instance: ComponentRef<T>): void {\n    const compsByType = this.components.get(instance.componentType);\n\n    if (compsByType && compsByType.length) {\n      const idx = compsByType.indexOf(instance);\n\n      if (idx > -1) {\n        const component = compsByType[idx];\n        component.destroy();\n        compsByType.splice(idx, 1);\n      }\n    }\n  }\n\n  destroyAll(): void {\n    this.destroyByType(this.type);\n  }\n\n  destroyByType(type: Type<T>): void {\n    const comps = this.components.get(type);\n\n    if (comps && comps.length) {\n      let i = comps.length - 1;\n      while (i >= 0) {\n        this.destroy(comps[i--]);\n      }\n    }\n  }\n\n  protected injectComponent(type: Type<T>, bindings: PartialBindings): ComponentRef<T> {\n    return this.injectionService.appendComponent(type, bindings);\n  }\n\n  protected assignDefaults(bindings: PartialBindings): PartialBindings {\n    const inputs = { ...this.defaults.inputs };\n    const outputs = { ...this.defaults.outputs };\n\n    if (!bindings.inputs && !bindings.outputs) {\n      bindings = { inputs: bindings };\n    }\n\n    if (inputs) {\n      bindings.inputs = { ...inputs, ...bindings.inputs };\n    }\n\n    if (outputs) {\n      bindings.outputs = { ...outputs, ...bindings.outputs };\n    }\n\n    return bindings;\n  }\n\n  protected register(type: Type<T>, component: ComponentRef<T>): void {\n    if (!this.components.has(type)) {\n      this.components.set(type, []);\n    }\n\n    const types = this.components.get(type);\n    types.push(component);\n  }\n}\n","import {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Injectable,\n  Injector,\n  ViewContainerRef,\n  EmbeddedViewRef,\n  Type\n} from '@angular/core';\nimport { DomPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\n\nfunction isViewContainerRef(x: any): x is ViewContainerRef {\n  return x.element;\n}\n\n/**\n * Injection service is a helper to append components\n * dynamically to a known location in the DOM, most\n * noteably for dialogs/tooltips appending to body.\n *\n * @export\n */\n@Injectable()\nexport class InjectionService {\n  static globalRootViewContainer: ViewContainerRef = null;\n\n  /**\n   * Sets a default global root view container. This is useful for\n   * things like ngUpgrade that doesn't have a ApplicationRef root.\n   *\n   * @param container\n   */\n  static setGlobalRootViewContainer(container: ViewContainerRef): void {\n    InjectionService.globalRootViewContainer = container;\n  }\n\n  private _container: ViewContainerRef;\n\n  constructor(private applicationRef: ApplicationRef, private injector: Injector) {}\n\n  /**\n   * Gets the root view container to inject the component to.\n   *\n   * @memberOf InjectionService\n   */\n  getRootViewContainer(): ViewContainerRef | ComponentRef<any> {\n    if (this._container) return this._container;\n    if (InjectionService.globalRootViewContainer) return InjectionService.globalRootViewContainer;\n\n    if (this.applicationRef.components.length) return this.applicationRef.components[0];\n\n    throw new Error(\n      'View Container not found! ngUpgrade needs to manually set this via setRootViewContainer or setGlobalRootViewContainer.'\n    );\n  }\n\n  /**\n   * Overrides the default root view container. This is useful for\n   * things like ngUpgrade that doesn't have a ApplicationRef root.\n   *\n   * @param container\n   *\n   * @memberOf InjectionService\n   */\n  setRootViewContainer(container: ViewContainerRef): void {\n    this._container = container;\n  }\n\n  /**\n   * Gets the html element for a component ref.\n   *\n   * @param componentRef\n   *\n   * @memberOf InjectionService\n   */\n  getComponentRootNode(component: ViewContainerRef | ComponentRef<any>): HTMLElement {\n    if (isViewContainerRef(component)) {\n      return component.element.nativeElement;\n    }\n    if (component.hostView && (component.hostView as EmbeddedViewRef<any>).rootNodes.length > 0) {\n      return (component.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n    }\n\n    // the top most component root node has no `hostView`\n    return component.location.nativeElement;\n  }\n\n  /**\n   * Gets the root component container html element.\n   *\n   * @memberOf InjectionService\n   */\n  getRootViewContainerNode(component: ViewContainerRef | ComponentRef<any>): HTMLElement {\n    return this.getComponentRootNode(component);\n  }\n\n  /**\n   * Projects the bindings onto the component\n   *\n   * @param component\n   * @param options\n   *\n   * @memberOf InjectionService\n   */\n  projectComponentBindings(component: ComponentRef<any>, bindings: any): ComponentRef<any> {\n    if (bindings) {\n      if (bindings.inputs !== undefined) {\n        const bindingKeys = Object.getOwnPropertyNames(bindings.inputs);\n        for (const bindingName of bindingKeys) {\n          component.instance[bindingName] = bindings.inputs[bindingName];\n        }\n      }\n\n      if (bindings.outputs !== undefined) {\n        const eventKeys = Object.getOwnPropertyNames(bindings.outputs);\n        for (const eventName of eventKeys) {\n          component.instance[eventName] = bindings.outputs[eventName];\n        }\n      }\n    }\n\n    return component;\n  }\n\n  /**\n   * Appends a component to a adjacent location\n   *\n   * @param componentClass\n   * @param [options={}]\n   * @param [location]\n   *\n   * @memberOf InjectionService\n   */\n  appendComponent<T>(componentClass: Type<T>, bindings: any = {}, location?: any): ComponentRef<any> {\n    if (!location) location = this.getRootViewContainer();\n    const appendLocation = this.getComponentRootNode(location);\n\n    const portalHost = new DomPortalOutlet(appendLocation, this.applicationRef, this.injector);\n\n    const portal = new ComponentPortal(componentClass);\n\n    const componentRef = portalHost.attach(portal);\n    this.projectComponentBindings(componentRef, bindings);\n    return componentRef;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { InjectionService } from './injection.service';\nimport { TooltipContentComponent } from './tooltip.component';\nimport { InjectionRegisteryService } from './injection-registery.service';\n@Injectable()\nexport class TooltipService extends InjectionRegisteryService<TooltipContentComponent> {\n  type: any = TooltipContentComponent;\n\n  constructor(injectionService: InjectionService) {\n    super(injectionService);\n  }\n}\n","import { ScaleType } from './scale-type.enum';\n\nexport interface LegendOptions {\n  colors: any;\n  domain: any[];\n  position: LegendPosition;\n  title: string;\n  scaleType: ScaleType;\n}\n\nexport enum LegendPosition {\n  Right = 'right',\n  Below = 'below'\n}\n\nexport enum LegendType {\n  ScaleLegend = 'scaleLegend',\n  Legend = 'legend'\n}\n","export enum ScaleType {\n  Time = 'time',\n  Linear = 'linear',\n  Ordinal = 'ordinal',\n  Quantile = 'quantile'\n}\n","/**\n * Formats a label given a date, number or string.\n *\n * @export\n */\nexport function formatLabel(label: any): string {\n  if (label instanceof Date) {\n    label = label.toLocaleDateString();\n  } else {\n    label = label.toLocaleString();\n  }\n\n  return label;\n}\n\n/**\n * Escapes a label.\n *\n * @export\n */\nexport function escapeLabel(label: any): string {\n  return label.toLocaleString().replace(/[&'`\"<>]/g, match => {\n    return {\n      '&': '&amp;',\n      // tslint:disable-next-line: quotemark\n      \"'\": '&#x27;',\n      '`': '&#x60;',\n      '\"': '&quot;',\n      '<': '&lt;',\n      '>': '&gt;'\n    }[match];\n  });\n}\n","import { Component, Input, Output, ChangeDetectionStrategy, HostListener, EventEmitter } from '@angular/core';\n\n@Component({\n  selector: 'ngx-charts-legend-entry',\n  template: `\n    <span [title]=\"formattedLabel\" tabindex=\"-1\" [class.active]=\"isActive\" (click)=\"select.emit(formattedLabel)\">\n      <span class=\"legend-label-color\" [style.background-color]=\"color\" (click)=\"toggle.emit(formattedLabel)\"> </span>\n      <span class=\"legend-label-text\">\n        {{ trimmedLabel }}\n      </span>\n    </span>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class LegendEntryComponent {\n  @Input() color: string;\n  @Input() label: string;\n  @Input() formattedLabel: string;\n  @Input() isActive: boolean = false;\n\n  @Output() select: EventEmitter<string> = new EventEmitter();\n  @Output() activate: EventEmitter<{ name: string }> = new EventEmitter();\n  @Output() deactivate: EventEmitter<{ name: string }> = new EventEmitter();\n  @Output() toggle: EventEmitter<string> = new EventEmitter();\n\n  get trimmedLabel(): string {\n    return this.formattedLabel || '(empty)';\n  }\n\n  @HostListener('mouseenter')\n  onMouseEnter(): void {\n    this.activate.emit({ name: this.label });\n  }\n\n  @HostListener('mouseleave')\n  onMouseLeave(): void {\n    this.deactivate.emit({ name: this.label });\n  }\n}\n","import {\n  Component,\n  Input,\n  ChangeDetectionStrategy,\n  Output,\n  EventEmitter,\n  SimpleChanges,\n  OnChanges,\n  ChangeDetectorRef,\n  ViewEncapsulation\n} from '@angular/core';\nimport { formatLabel } from '../label.helper';\nimport { ColorHelper } from '../color.helper';\n\nexport interface LegendEntry {\n  color: string;\n  formattedLabel: string;\n  label: string;\n}\n\n@Component({\n  selector: 'ngx-charts-legend',\n  template: `\n    <div [style.width.px]=\"width\">\n      <header class=\"legend-title\" *ngIf=\"title?.length > 0\">\n        <span class=\"legend-title-text\">{{ title }}</span>\n      </header>\n      <div class=\"legend-wrap\">\n        <ul class=\"legend-labels\" [class.horizontal-legend]=\"horizontal\" [style.max-height.px]=\"height - 45\">\n          <li *ngFor=\"let entry of legendEntries; trackBy: trackBy\" class=\"legend-label\">\n            <ngx-charts-legend-entry\n              [label]=\"entry.label\"\n              [formattedLabel]=\"entry.formattedLabel\"\n              [color]=\"entry.color\"\n              [isActive]=\"isActive(entry)\"\n              (select)=\"labelClick.emit($event)\"\n              (activate)=\"activate($event)\"\n              (deactivate)=\"deactivate($event)\"\n            >\n            </ngx-charts-legend-entry>\n          </li>\n        </ul>\n      </div>\n    </div>\n  `,\n  styleUrls: ['./legend.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class LegendComponent implements OnChanges {\n  @Input() data: string[];\n  @Input() title: string;\n  @Input() colors: ColorHelper;\n  @Input() height: number;\n  @Input() width: number;\n  @Input() activeEntries;\n  @Input() horizontal = false;\n\n  @Output() labelClick: EventEmitter<string> = new EventEmitter();\n  @Output() labelActivate: EventEmitter<{ name: string }> = new EventEmitter();\n  @Output() labelDeactivate: EventEmitter<{ name: string }> = new EventEmitter();\n\n  legendEntries: LegendEntry[] = [];\n\n  constructor(private cd: ChangeDetectorRef) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    this.cd.markForCheck();\n    this.legendEntries = this.getLegendEntries();\n  }\n\n  getLegendEntries(): LegendEntry[] {\n    const items = [];\n    for (const label of this.data) {\n      const formattedLabel = formatLabel(label);\n\n      const idx = items.findIndex(i => {\n        return i.label === formattedLabel;\n      });\n\n      if (idx === -1) {\n        items.push({\n          label,\n          formattedLabel,\n          color: this.colors.getColor(label)\n        });\n      }\n    }\n\n    return items;\n  }\n\n  isActive(entry: LegendEntry): boolean {\n    if (!this.activeEntries) return false;\n    const item = this.activeEntries.find(d => {\n      return entry.label === d.name;\n    });\n    return item !== undefined;\n  }\n\n  activate(item: { name: string }) {\n    this.labelActivate.emit(item);\n  }\n\n  deactivate(item: { name: string }) {\n    this.labelDeactivate.emit(item);\n  }\n\n  trackBy(index: number, item: LegendEntry): string {\n    return item.label;\n  }\n}\n","import { Component, Input, OnChanges, ChangeDetectionStrategy, SimpleChanges, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'ngx-charts-scale-legend',\n  template: `\n    <div\n      class=\"scale-legend\"\n      [class.horizontal-legend]=\"horizontal\"\n      [style.height.px]=\"horizontal ? undefined : height\"\n      [style.width.px]=\"width\"\n    >\n      <div class=\"scale-legend-label\">\n        <span>{{ valueRange[1].toLocaleString() }}</span>\n      </div>\n      <div class=\"scale-legend-wrap\" [style.background]=\"gradient\"></div>\n      <div class=\"scale-legend-label\">\n        <span>{{ valueRange[0].toLocaleString() }}</span>\n      </div>\n    </div>\n  `,\n  styleUrls: ['./scale-legend.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class ScaleLegendComponent implements OnChanges {\n  @Input() valueRange: number[];\n  @Input() colors: any;\n  @Input() height: number;\n  @Input() width: number;\n  @Input() horizontal: boolean = false;\n\n  gradient: string;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const gradientValues = this.gradientString(this.colors.range(), this.colors.domain());\n    const direction = this.horizontal ? 'right' : 'bottom';\n    this.gradient = `linear-gradient(to ${direction}, ${gradientValues})`;\n  }\n\n  /**\n   * Generates the string used in the gradient stylesheet properties\n   * @param colors array of colors\n   * @param splits array of splits on a scale of (0, 1)\n   */\n  gradientString(colors: string[], splits: number[]): string {\n    // add the 100%\n    splits.push(1);\n    const pairs = [];\n    colors.reverse().forEach((c, i) => {\n      pairs.push(`${c} ${Math.round(splits[i] * 100)}%`);\n    });\n\n    return pairs.join(', ');\n  }\n}\n","import {\n  Component,\n  Input,\n  OnChanges,\n  ChangeDetectionStrategy,\n  EventEmitter,\n  Output,\n  SimpleChanges\n} from '@angular/core';\nimport { TooltipService } from '../tooltip/tooltip.service';\nimport { LegendOptions, LegendType, LegendPosition } from '../types/legend.model';\nimport { ScaleType } from '../types/scale-type.enum';\n\n@Component({\n  providers: [TooltipService],\n  selector: 'ngx-charts-chart',\n  template: `\n    <div class=\"ngx-charts-outer\" [style.width.px]=\"view[0]\" [style.height.px]=\"view[1]\">\n      <svg class=\"ngx-charts\" [attr.width]=\"chartWidth\" [attr.height]=\"view[1]\">\n        <ng-content></ng-content>\n      </svg>\n      <ngx-charts-scale-legend\n        *ngIf=\"showLegend && legendType === LegendType.ScaleLegend\"\n        class=\"chart-legend\"\n        [horizontal]=\"legendOptions && legendOptions.position === LegendPosition.Below\"\n        [valueRange]=\"legendOptions.domain\"\n        [colors]=\"legendOptions.colors\"\n        [height]=\"view[1]\"\n        [width]=\"legendWidth\"\n      >\n      </ngx-charts-scale-legend>\n      <ngx-charts-legend\n        *ngIf=\"showLegend && legendType === LegendType.Legend\"\n        class=\"chart-legend\"\n        [horizontal]=\"legendOptions && legendOptions.position === LegendPosition.Below\"\n        [data]=\"legendOptions.domain\"\n        [title]=\"legendOptions.title\"\n        [colors]=\"legendOptions.colors\"\n        [height]=\"view[1]\"\n        [width]=\"legendWidth\"\n        [activeEntries]=\"activeEntries\"\n        (labelClick)=\"legendLabelClick.emit($event)\"\n        (labelActivate)=\"legendLabelActivate.emit($event)\"\n        (labelDeactivate)=\"legendLabelDeactivate.emit($event)\"\n      >\n      </ngx-charts-legend>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class ChartComponent implements OnChanges {\n  @Input() view: [number, number];\n  @Input() showLegend: boolean = false;\n  @Input() legendOptions: LegendOptions;\n  @Input() legendType: LegendType;\n  @Input() activeEntries: any[];\n  @Input() animations: boolean = true;\n\n  @Output() legendLabelClick = new EventEmitter<string>();\n  @Output() legendLabelActivate = new EventEmitter<{ name: string }>();\n  @Output() legendLabelDeactivate = new EventEmitter<{ name: string }>();\n\n  chartWidth: number;\n  title: string;\n  legendWidth: number;\n\n  readonly LegendPosition = LegendPosition;\n  readonly LegendType = LegendType;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    let legendColumns = 0;\n    if (this.showLegend) {\n      this.legendType = this.getLegendType();\n\n      if (!this.legendOptions || this.legendOptions.position === LegendPosition.Right) {\n        if (this.legendType === LegendType.ScaleLegend) {\n          legendColumns = 1;\n        } else {\n          legendColumns = 2;\n        }\n      }\n    }\n\n    const chartColumns = 12 - legendColumns;\n\n    this.chartWidth = Math.floor((this.view[0] * chartColumns) / 12.0);\n    this.legendWidth =\n      !this.legendOptions || this.legendOptions.position === LegendPosition.Right\n        ? Math.floor((this.view[0] * legendColumns) / 12.0)\n        : this.chartWidth;\n  }\n\n  getLegendType(): LegendType {\n    return this.legendOptions.scaleType === ScaleType.Linear ? LegendType.ScaleLegend : LegendType.Legend;\n  }\n}\n","import { Output, EventEmitter, NgZone, Directive, ElementRef } from '@angular/core';\n\n/**\n * Visibility Observer\n */\n@Directive({\n  selector: 'visibility-observer',\n  standalone: false\n})\nexport class VisibilityObserver {\n  @Output() visible: EventEmitter<any> = new EventEmitter();\n\n  timeout: any;\n  isVisible: boolean = false;\n\n  constructor(private element: ElementRef, private zone: NgZone) {\n    this.runCheck();\n  }\n\n  destroy(): void {\n    clearTimeout(this.timeout);\n  }\n\n  onVisibilityChange(): void {\n    // trigger zone recalc for columns\n    this.zone.run(() => {\n      this.isVisible = true;\n      this.visible.emit(true);\n    });\n  }\n\n  runCheck(): void {\n    const check = () => {\n      if (!this.element) {\n        return;\n      }\n\n      // https://davidwalsh.name/offsetheight-visibility\n      const { offsetHeight, offsetWidth } = this.element.nativeElement;\n\n      if (offsetHeight && offsetWidth) {\n        clearTimeout(this.timeout);\n        this.onVisibilityChange();\n      } else {\n        clearTimeout(this.timeout);\n        this.zone.runOutsideAngular(() => {\n          this.timeout = setTimeout(() => check(), 100);\n        });\n      }\n    };\n\n    this.zone.runOutsideAngular(() => {\n      this.timeout = setTimeout(() => check());\n    });\n  }\n}\n","export function isDate(value): boolean {\n  return toString.call(value) === '[object Date]';\n}\n\nexport function isNumber(value): boolean {\n  return typeof value === 'number';\n}\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport {\n  ElementRef,\n  NgZone,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  AfterViewInit,\n  OnDestroy,\n  OnChanges,\n  SimpleChanges,\n  PLATFORM_ID,\n  Inject,\n  OnInit\n} from '@angular/core';\n\nimport { fromEvent as observableFromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { VisibilityObserver } from '../utils/visibility-observer';\nimport { isDate } from '../utils/types';\nimport { Color } from '../utils/color-sets';\nimport { ScaleType } from './types/scale-type.enum';\nimport { ViewDimensions } from './types/view-dimension.interface';\n\n@Component({\n  selector: 'base-chart',\n  template: ` <div></div> `,\n  standalone: false\n})\nexport class BaseChartComponent implements OnChanges, AfterViewInit, OnDestroy, OnInit {\n  @Input() declare results: any;\n  @Input() view: [number, number];\n  @Input() scheme: string | Color = 'cool';\n  @Input() schemeType: ScaleType = ScaleType.Ordinal;\n  @Input() customColors: any;\n  @Input() animations: boolean = true;\n\n  @Output() select = new EventEmitter();\n\n  width: number;\n  height: number;\n  resizeSubscription: any;\n  visibilityObserver: VisibilityObserver;\n\n  constructor(\n    protected chartElement: ElementRef,\n    protected zone: NgZone,\n    protected cd: ChangeDetectorRef,\n    @Inject(PLATFORM_ID) public platformId: any\n  ) {}\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.animations = false;\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.bindWindowResizeEvent();\n\n    // listen for visibility of the element for hidden by default scenario\n    this.visibilityObserver = new VisibilityObserver(this.chartElement, this.zone);\n    this.visibilityObserver.visible.subscribe(this.update.bind(this));\n  }\n\n  ngOnDestroy(): void {\n    this.unbindEvents();\n    if (this.visibilityObserver) {\n      this.visibilityObserver.visible.unsubscribe();\n      this.visibilityObserver.destroy();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    if (this.results) {\n      this.results = this.cloneData(this.results);\n    } else {\n      this.results = [];\n    }\n\n    if (this.view) {\n      this.width = this.view[0];\n      this.height = this.view[1];\n    } else {\n      const dims = this.getContainerDims();\n      if (dims) {\n        this.width = dims.width;\n        this.height = dims.height;\n      }\n    }\n\n    // default values if width or height are 0 or undefined\n    if (!this.width) {\n      this.width = 600;\n    }\n\n    if (!this.height) {\n      this.height = 400;\n    }\n\n    this.width = Math.floor(this.width);\n    this.height = Math.floor(this.height);\n\n    if (this.cd) {\n      this.cd.markForCheck();\n    }\n  }\n\n  getContainerDims(): ViewDimensions {\n    let width;\n    let height;\n    const hostElem = this.chartElement.nativeElement;\n\n    if (isPlatformBrowser(this.platformId) && hostElem.parentNode !== null) {\n      // Get the container dimensions\n      const dims = hostElem.parentNode.getBoundingClientRect();\n      width = dims.width;\n      height = dims.height;\n    }\n\n    if (width && height) {\n      return { width, height };\n    }\n\n    return null;\n  }\n\n  /**\n   * Converts all date objects that appear as name\n   * into formatted date strings\n   */\n  formatDates(): void {\n    for (let i = 0; i < this.results.length; i++) {\n      const g = this.results[i];\n      g.label = g.name;\n      if (isDate(g.label)) {\n        g.label = g.label.toLocaleDateString();\n      }\n\n      if (g.series) {\n        for (let j = 0; j < g.series.length; j++) {\n          const d = g.series[j];\n          d.label = d.name;\n          if (isDate(d.label)) {\n            d.label = d.label.toLocaleDateString();\n          }\n        }\n      }\n    }\n  }\n\n  protected unbindEvents(): void {\n    if (this.resizeSubscription) {\n      this.resizeSubscription.unsubscribe();\n    }\n  }\n\n  private bindWindowResizeEvent(): void {\n    if (!isPlatformBrowser(this.platformId)) {\n      return;\n    }\n\n    const source = observableFromEvent(window, 'resize');\n    const subscription = source.pipe(debounceTime(200)).subscribe(e => {\n      this.update();\n      if (this.cd) {\n        this.cd.markForCheck();\n      }\n    });\n    this.resizeSubscription = subscription;\n  }\n\n  /**\n   * Clones the data into a new object\n   *\n   * @memberOf BaseChart\n   */\n  private cloneData(data): any {\n    const results = [];\n\n    for (const item of data) {\n      const copy = {};\n\n      if (item['name'] !== undefined) {\n        copy['name'] = item['name'];\n      }\n\n      if (item['value'] !== undefined) {\n        copy['value'] = item['value'];\n      }\n\n      if (item['series'] !== undefined) {\n        copy['series'] = [];\n        for (const seriesItem of item['series']) {\n          const seriesItemCopy = Object.assign({}, seriesItem);\n          copy['series'].push(seriesItemCopy);\n        }\n      }\n\n      if (item['extra'] !== undefined) {\n        copy['extra'] = JSON.parse(JSON.stringify(item['extra']));\n      }\n\n      if (item['source'] !== undefined) {\n        copy['source'] = item['source'];\n      }\n\n      if (item['target'] !== undefined) {\n        copy['target'] = item['target'];\n      }\n\n      results.push(copy);\n    }\n\n    return results;\n  }\n}\n","export enum Orientation {\n  Top = 'top',\n  Bottom = 'bottom',\n  Left = 'left',\n  Right = 'right'\n}\n","import { Component, Input, ElementRef, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { Orientation } from '../types/orientation.enum';\n\n@Component({\n  selector: 'g[ngx-charts-axis-label]',\n  template: `\n    <svg:text\n      [attr.stroke-width]=\"strokeWidth\"\n      [attr.x]=\"x\"\n      [attr.y]=\"y\"\n      [attr.text-anchor]=\"textAnchor\"\n      [attr.transform]=\"transform\"\n    >\n      {{ label }}\n    </svg:text>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class AxisLabelComponent implements OnChanges {\n  @Input() orient: Orientation;\n  @Input() label: string;\n  @Input() offset: number;\n  @Input() width: number;\n  @Input() height: number;\n\n  x: number;\n  y: number;\n  transform: string;\n  strokeWidth: string;\n  textAnchor: string;\n  element: ElementRef;\n  textHeight = 25;\n  margin = 5;\n\n  constructor(element: ElementRef) {\n    this.element = element.nativeElement;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    this.strokeWidth = '0.01';\n    this.textAnchor = 'middle';\n    this.transform = '';\n\n    switch (this.orient) {\n      case Orientation.Top:\n        this.y = this.offset;\n        this.x = this.width / 2;\n        break;\n      case Orientation.Bottom:\n        this.y = this.offset;\n        this.x = this.width / 2;\n        break;\n      case Orientation.Left:\n        this.y = -(this.offset + this.textHeight + this.margin);\n        this.x = -this.height / 2;\n        this.transform = 'rotate(270)';\n        break;\n      case Orientation.Right:\n        this.y = this.offset + this.margin;\n        this.x = -this.height / 2;\n        this.transform = 'rotate(270)';\n        break;\n      default:\n    }\n  }\n}\n","export function trimLabel(s: any, max: number = 16): string {\n  if (typeof s !== 'string') {\n    if (typeof s === 'number') {\n      return s + '';\n    } else {\n      return '';\n    }\n  }\n\n  s = s.trim();\n  if (s.length <= max) {\n    return s;\n  } else {\n    return `${s.slice(0, max)}...`;\n  }\n}\n","export function reduceTicks(ticks: any[], maxTicks: number): any[] {\n  if (ticks.length > maxTicks) {\n    const reduced = [];\n    const modulus = Math.floor(ticks.length / maxTicks);\n    for (let i = 0; i < ticks.length; i++) {\n      if (i % modulus === 0) {\n        reduced.push(ticks[i]);\n      }\n    }\n    ticks = reduced;\n  }\n\n  return ticks;\n}\n\nexport function getTickLines(label: string, maxLength: number, maxLines: number): string[] {\n  const labelString = (label || '').toString();\n  let totalLines = [];\n\n  if (/\\s/.test(labelString)) {\n    totalLines = labelString.split(/\\s+/).reduce((lines: string[], line: string) => {\n      const last = (lines.pop() || '') + ' ';\n      return last.length + line.length > maxLength ? [...lines, last.trim(), line.trim()] : [...lines, last + line];\n    }, []);\n  } else {\n    let startIndex = 0;\n    while (startIndex < labelString.length) {\n      totalLines.push(labelString.substring(startIndex, startIndex + maxLength));\n      startIndex += maxLength;\n    }\n  }\n\n  if (totalLines.length > maxLines) {\n    totalLines = totalLines.splice(0, maxLines);\n    totalLines[totalLines.length - 1] += '...';\n  }\n\n  return totalLines;\n}\n","export enum TextAnchor {\n  Start = 'start',\n  Middle = 'middle',\n  End = 'end'\n}\n","/**\n * Generates a rounded rectanglar path\n *\n * @export\n * @param x, y, w, h, r, tl, tr, bl, br\n */\nexport function roundedRect(\n  x: number,\n  y: number,\n  w: number,\n  h: number,\n  r: number,\n  [tl, tr, bl, br]: boolean[]\n): string {\n  let retval = '';\n\n  w = Math.floor(w);\n  h = Math.floor(h);\n\n  w = w === 0 ? 1 : w;\n  h = h === 0 ? 1 : h;\n\n  retval = `M${[x + r, y]}`;\n  retval += `h${w - 2 * r}`;\n\n  if (tr) {\n    retval += `a${[r, r]} 0 0 1 ${[r, r]}`;\n  } else {\n    retval += `h${r}v${r}`;\n  }\n\n  retval += `v${h - 2 * r}`;\n\n  if (br) {\n    retval += `a${[r, r]} 0 0 1 ${[-r, r]}`;\n  } else {\n    retval += `v${r}h${-r}`;\n  }\n\n  retval += `h${2 * r - w}`;\n\n  if (bl) {\n    retval += `a${[r, r]} 0 0 1 ${[-r, -r]}`;\n  } else {\n    retval += `h${-r}v${-r}`;\n  }\n\n  retval += `v${2 * r - h}`;\n\n  if (tl) {\n    retval += `a${[r, r]} 0 0 1 ${[r, -r]}`;\n  } else {\n    retval += `v${-r}h${r}`;\n  }\n\n  retval += `z`;\n\n  return retval;\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  ElementRef,\n  ViewChild,\n  SimpleChanges,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Inject,\n  PLATFORM_ID\n} from '@angular/core';\nimport { trimLabel } from '../trim-label.helper';\nimport { getTickLines, reduceTicks } from './ticks.helper';\nimport { Orientation } from '../types/orientation.enum';\nimport { TextAnchor } from '../types/text-anchor.enum';\nimport { roundedRect } from '../../common/shape.helper';\n\n@Component({\n  selector: 'g[ngx-charts-x-axis-ticks]',\n  template: `\n    <svg:g #ticksel>\n      <svg:g *ngFor=\"let tick of ticks\" class=\"tick\" [attr.transform]=\"tickTransform(tick)\">\n        <ng-container *ngIf=\"tickFormat(tick) as tickFormatted\">\n          <title>{{ tickFormatted }}</title>\n          <svg:text\n            stroke-width=\"0.01\"\n            font-size=\"12px\"\n            [attr.text-anchor]=\"textAnchor\"\n            [attr.transform]=\"textTransform\"\n          >\n            <ng-container *ngIf=\"isWrapTicksSupported; then tmplMultilineTick; else tmplSinglelineTick\"></ng-container>\n          </svg:text>\n\n          <ng-template #tmplMultilineTick>\n            <ng-container *ngIf=\"tickChunks(tick) as tickLines\">\n              <svg:tspan *ngFor=\"let tickLine of tickLines; let i = index\" x=\"0\" [attr.y]=\"i * 12\">\n                {{ tickLine }}\n              </svg:tspan>\n            </ng-container>\n          </ng-template>\n\n          <ng-template #tmplSinglelineTick>\n            {{ tickTrim(tickFormatted) }}\n          </ng-template>\n        </ng-container>\n      </svg:g>\n    </svg:g>\n\n    <svg:g *ngFor=\"let tick of ticks\" [attr.transform]=\"tickTransform(tick)\">\n      <svg:g *ngIf=\"showGridLines\" [attr.transform]=\"gridLineTransform()\">\n        <svg:line class=\"gridline-path gridline-path-vertical\" [attr.y1]=\"-gridLineHeight\" y2=\"0\" />\n      </svg:g>\n    </svg:g>\n\n    <svg:path\n      *ngIf=\"referenceLineLength > 1 && refMax && refMin && showRefLines\"\n      class=\"reference-area\"\n      [attr.d]=\"referenceAreaPath\"\n      [attr.transform]=\"gridLineTransform()\"\n    />\n\n    <svg:g *ngFor=\"let refLine of referenceLines\" class=\"ref-line\">\n      <svg:g *ngIf=\"showRefLines\" [attr.transform]=\"transform(refLine.value)\">\n        <svg:line\n          class=\"refline-path gridline-path-vertical\"\n          y1=\"25\"\n          [attr.y2]=\"25 + gridLineHeight\"\n          [attr.transform]=\"gridLineTransform()\"\n        />\n        <svg:g *ngIf=\"showRefLabels\">\n          <title>{{ tickTrim(tickFormat(refLine.value)) }}</title>\n          <svg:text class=\"refline-label\" transform=\"rotate(-270) translate(5, -5)\">\n            {{ refLine.name }}\n          </svg:text>\n        </svg:g>\n      </svg:g>\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class XAxisTicksComponent implements OnChanges, AfterViewInit {\n  @Input() scale;\n  @Input() orient: Orientation;\n  @Input() tickArguments: number[] = [5];\n  @Input() tickValues: string[] | number[];\n  @Input() tickStroke: string = '#ccc';\n  @Input() trimTicks: boolean = true;\n  @Input() maxTickLength: number = 16;\n  @Input() tickFormatting;\n  @Input() showGridLines = false;\n  @Input() gridLineHeight: number;\n  @Input() width: number;\n  @Input() rotateTicks: boolean = true;\n  @Input() wrapTicks = false;\n  @Input() referenceLines: any[];\n  @Input() showRefLabels: boolean = false;\n  @Input() showRefLines: boolean = false;\n\n  @Output() dimensionsChanged = new EventEmitter();\n\n  verticalSpacing: number = 20;\n  rotateLabels: boolean = false;\n  innerTickSize: number = 6;\n  outerTickSize: number = 6;\n  tickPadding: number = 3;\n  textAnchor: TextAnchor = TextAnchor.Middle;\n  maxTicksLength: number = 0;\n  maxAllowedLength: number = 16;\n  adjustedScale: any;\n  textTransform: string;\n  ticks: any[];\n  tickFormat: (o: any) => any;\n  height: number = 0;\n  approxHeight: number = 10;\n  maxPossibleLengthForTickIfWrapped = 16;\n  transform: (o: any) => string;\n  refMax: number;\n  refMin: number;\n  referenceLineLength: number = 0;\n  referenceAreaPath: string;\n  dx: string;\n  x1: number;\n  x2: number;\n  y1: number;\n  y2: number;\n  tickSpacing: number;\n\n  @ViewChild('ticksel') ticksElement: ElementRef;\n\n  get isWrapTicksSupported() {\n    return this.wrapTicks && this.scale.step;\n  }\n\n  constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => this.updateDims());\n  }\n\n  updateDims(): void {\n    if (!isPlatformBrowser(this.platformId)) {\n      // for SSR, use approximate value instead of measured\n      this.dimensionsChanged.emit({ height: this.approxHeight });\n      return;\n    }\n\n    const height = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().height, 10);\n    if (height !== this.height) {\n      this.height = height;\n      this.dimensionsChanged.emit({ height: this.height });\n      setTimeout(() => this.updateDims());\n    }\n  }\n\n  update(): void {\n    const scale = this.scale;\n    this.adjustedScale = this.scale.bandwidth\n      ? function (d) {\n          return this.scale(d) + this.scale.bandwidth() * 0.5;\n        }\n      : this.scale;\n    this.ticks = this.getTicks();\n    const sign = this.orient === Orientation.Top || this.orient === Orientation.Right ? -1 : 1;\n    this.tickSpacing = Math.max(this.innerTickSize, 0) + this.tickPadding;\n\n    switch (this.orient) {\n      case Orientation.Bottom:\n        this.transform = function (tick) {\n          return 'translate(' + this.adjustedScale(tick) + ',0)';\n        };\n        this.textAnchor = TextAnchor.Middle;\n        this.x2 = this.innerTickSize * sign;\n        this.x1 = this.tickSpacing * sign;\n        this.dx = sign < 0 ? '0em' : '.71em';\n        break;\n      case Orientation.Left:\n        this.transform = function (tick) {\n          return 'translate(0,' + this.adjustedScale(tick) + ')';\n        };\n        this.textAnchor = TextAnchor.End;\n        this.y2 = this.innerTickSize * -sign;\n        this.y1 = this.tickSpacing * -sign;\n        this.dx = '.32em';\n        break;\n      case Orientation.Top:\n        this.transform = function (tick) {\n          return 'translate(' + this.adjustedScale(tick) + ',0)';\n        };\n        this.textAnchor = TextAnchor.Middle;\n        this.y2 = this.innerTickSize * sign;\n        this.y1 = this.tickSpacing * sign;\n        this.dx = sign < 0 ? '0em' : '.71em';\n        break;\n      case Orientation.Right:\n        this.transform = function (tick) {\n          return 'translate(0,' + this.adjustedScale(tick) + ')';\n        };\n        this.textAnchor = TextAnchor.Start;\n        this.x2 = this.innerTickSize * -sign;\n        this.x1 = this.tickSpacing * -sign;\n        this.dx = '.32em';\n        break;\n      default:\n    }\n\n    if (this.tickFormatting) {\n      this.tickFormat = this.tickFormatting;\n    } else if (scale.tickFormat) {\n      // eslint-disable-next-line prefer-spread\n      this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n    } else {\n      this.tickFormat = function (d) {\n        if (d.constructor.name === 'Date') {\n          return d.toLocaleDateString();\n        }\n        return d.toLocaleString();\n      };\n    }\n\n    const angle = this.rotateTicks ? this.getRotationAngle(this.ticks) : null;\n\n    this.textTransform = '';\n    if (angle && angle !== 0) {\n      this.textTransform = `rotate(${angle})`;\n      this.textAnchor = TextAnchor.End;\n      this.verticalSpacing = 10;\n    } else {\n      this.textAnchor = TextAnchor.Middle;\n    }\n\n    setTimeout(() => this.updateDims());\n  }\n\n  setReferencelines(): void {\n    this.refMin = this.adjustedScale(\n      Math.min.apply(\n        null,\n        this.referenceLines.map(item => item.value)\n      )\n    );\n    this.refMax = this.adjustedScale(\n      Math.max.apply(\n        null,\n        this.referenceLines.map(item => item.value)\n      )\n    );\n    this.referenceLineLength = this.referenceLines.length;\n\n    this.referenceAreaPath = roundedRect(\n      this.refMax,\n      -this.gridLineHeight + 25,\n      this.refMin - this.refMax,\n      this.gridLineHeight,\n      0,\n      [false, false, false, false]\n    );\n  }\n\n  getRotationAngle(ticks: any[]): number {\n    let angle = 0;\n    this.maxTicksLength = 0;\n    for (let i = 0; i < ticks.length; i++) {\n      const tick = this.tickFormat(ticks[i]).toString();\n      let tickLength = tick.length;\n      if (this.trimTicks) {\n        tickLength = this.tickTrim(tick).length;\n      }\n\n      if (tickLength > this.maxTicksLength) {\n        this.maxTicksLength = tickLength;\n      }\n    }\n\n    const len = Math.min(this.maxTicksLength, this.maxAllowedLength);\n    const charWidth = 7; // need to measure this\n    const wordWidth = len * charWidth;\n\n    let baseWidth = wordWidth;\n    const maxBaseWidth = Math.floor(this.width / ticks.length);\n\n    // calculate optimal angle\n    while (baseWidth > maxBaseWidth && angle > -90) {\n      angle -= 30;\n      baseWidth = Math.cos(angle * (Math.PI / 180)) * wordWidth;\n    }\n\n    let labelHeight = 14;\n    if (this.isWrapTicksSupported) {\n      const longestTick = this.ticks.reduce(\n        (earlier, current) => (current.length > earlier.length ? current : earlier),\n        ''\n      );\n\n      const tickLines = this.tickChunks(longestTick);\n      labelHeight = 14 * (tickLines.length || 1);\n\n      this.maxPossibleLengthForTickIfWrapped = this.getMaxPossibleLengthForTick(longestTick);\n    }\n\n    const requiredHeight =\n      angle !== 0\n        ? Math.max(Math.abs(Math.sin((angle * Math.PI) / 180)) * this.maxTickLength * charWidth, 10)\n        : labelHeight;\n\n    this.approxHeight = Math.min(requiredHeight, 200);\n\n    if (this.showRefLines && this.referenceLines) {\n      this.setReferencelines();\n    }\n\n    return angle;\n  }\n\n  getTicks(): any[] {\n    let ticks;\n    const maxTicks = this.getMaxTicks(20);\n    const maxScaleTicks = this.getMaxTicks(100);\n\n    if (this.tickValues) {\n      ticks = this.tickValues;\n    } else if (this.scale.ticks) {\n      ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n    } else {\n      ticks = this.scale.domain();\n      ticks = reduceTicks(ticks, maxTicks);\n    }\n\n    return ticks;\n  }\n\n  getMaxTicks(tickWidth: number): number {\n    return Math.floor(this.width / tickWidth);\n  }\n\n  tickTransform(tick: number): string {\n    return 'translate(' + this.adjustedScale(tick) + ',' + this.verticalSpacing + ')';\n  }\n\n  gridLineTransform(): string {\n    return `translate(0,${-this.verticalSpacing - 5})`;\n  }\n\n  tickTrim(label: string): string {\n    return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n  }\n\n  getMaxPossibleLengthForTick(longestLabel: string): number {\n    if (this.scale.bandwidth) {\n      const averageCharacterWidth = 7; // approximate char width\n      const maxCharacters = Math.floor(this.scale.bandwidth() / averageCharacterWidth);\n      const truncatedText = longestLabel.slice(0, maxCharacters);\n      return Math.max(truncatedText.length, this.maxTickLength);\n    }\n\n    return this.maxTickLength;\n  }\n\n  tickChunks(label: string): string[] {\n    if (label.toString().length > this.maxTickLength && this.scale.bandwidth) {\n      const maxAllowedLines = 5;\n\n      let maxLines = this.rotateTicks ? Math.floor(this.scale.step() / 14) : maxAllowedLines;\n\n      if (maxLines <= 1) {\n        return [this.tickTrim(label)];\n      }\n\n      let possibleStringLength = Math.max(this.maxPossibleLengthForTickIfWrapped, this.maxTickLength);\n\n      if (!isPlatformBrowser(this.platformId)) {\n        possibleStringLength = Math.floor(\n          Math.min(\n            this.approxHeight / maxAllowedLines,\n            Math.max(this.maxPossibleLengthForTickIfWrapped, this.maxTickLength)\n          )\n        );\n      }\n\n      maxLines = Math.min(maxLines, maxAllowedLines);\n      const lines = getTickLines(label, possibleStringLength, maxLines < 1 ? 1 : maxLines);\n      return lines;\n    }\n\n    return [this.tickTrim(label)];\n  }\n}\n","import {\n  Component,\n  Input,\n  SimpleChanges,\n  Output,\n  EventEmitter,\n  OnChanges,\n  ViewChild,\n  ChangeDetectionStrategy\n} from '@angular/core';\n\nimport { XAxisTicksComponent } from './x-axis-ticks.component';\nimport { Orientation } from '../types/orientation.enum';\nimport { ViewDimensions } from '../types/view-dimension.interface';\n\n@Component({\n  selector: 'g[ngx-charts-x-axis]',\n  template: `\n    <svg:g [attr.class]=\"xAxisClassName\" [attr.transform]=\"transform\">\n      <svg:g\n        ngx-charts-x-axis-ticks\n        *ngIf=\"xScale\"\n        [trimTicks]=\"trimTicks\"\n        [rotateTicks]=\"rotateTicks\"\n        [maxTickLength]=\"maxTickLength\"\n        [tickFormatting]=\"tickFormatting\"\n        [tickArguments]=\"tickArguments\"\n        [tickStroke]=\"tickStroke\"\n        [scale]=\"xScale\"\n        [orient]=\"xOrient\"\n        [showGridLines]=\"showGridLines\"\n        [gridLineHeight]=\"dims.height\"\n        [referenceLines]=\"referenceLines\"\n        [showRefLines]=\"showRefLines\"\n        [showRefLabels]=\"showRefLabels\"\n        [width]=\"dims.width\"\n        [tickValues]=\"ticks\"\n        [wrapTicks]=\"wrapTicks\"\n        (dimensionsChanged)=\"emitTicksHeight($event)\"\n      />\n      <svg:g\n        ngx-charts-axis-label\n        *ngIf=\"showLabel\"\n        [label]=\"labelText\"\n        [offset]=\"labelOffset\"\n        [orient]=\"orientation.Bottom\"\n        [height]=\"dims.height\"\n        [width]=\"dims.width\"\n      ></svg:g>\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class XAxisComponent implements OnChanges {\n  @Input() xScale;\n  @Input() dims: ViewDimensions;\n  @Input() trimTicks: boolean;\n  @Input() rotateTicks: boolean = true;\n  @Input() maxTickLength: number;\n  @Input() tickFormatting;\n  @Input() showGridLines = false;\n  @Input() showLabel: boolean;\n  @Input() labelText: string;\n  @Input() ticks: any[];\n  @Input() xAxisTickCount: number;\n  @Input() xOrient: Orientation = Orientation.Bottom;\n  @Input() referenceLines: any[];\n  @Input() showRefLines: boolean;\n  @Input() showRefLabels: boolean;\n  @Input() xAxisOffset: number = 0;\n  @Input() wrapTicks = false;\n\n  @Output() dimensionsChanged = new EventEmitter();\n\n  xAxisClassName: string = 'x axis';\n\n  tickArguments: number[];\n  transform: string;\n  labelOffset: number = 0;\n  fill: string = 'none';\n  stroke: string = 'stroke';\n  tickStroke: string = '#ccc';\n  strokeWidth: string = 'none';\n  padding: number = 5;\n\n  readonly orientation = Orientation;\n\n  @ViewChild(XAxisTicksComponent) ticksComponent: XAxisTicksComponent;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    this.transform = `translate(0,${this.xAxisOffset + this.padding + this.dims.height})`;\n\n    if (typeof this.xAxisTickCount !== 'undefined') {\n      this.tickArguments = [this.xAxisTickCount];\n    }\n  }\n\n  emitTicksHeight({ height }): void {\n    const newLabelOffset = height + 25 + 5;\n    if (newLabelOffset !== this.labelOffset) {\n      this.labelOffset = newLabelOffset;\n      setTimeout(() => {\n        this.dimensionsChanged.emit({ height });\n      }, 0);\n    }\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  OnChanges,\n  ElementRef,\n  ViewChild,\n  EventEmitter,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  SimpleChanges,\n  PLATFORM_ID,\n  Inject\n} from '@angular/core';\nimport { trimLabel } from '../trim-label.helper';\nimport { getTickLines, reduceTicks } from './ticks.helper';\nimport { roundedRect } from '../../common/shape.helper';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Orientation } from '../types/orientation.enum';\nimport { TextAnchor } from '../types/text-anchor.enum';\n\n@Component({\n  selector: 'g[ngx-charts-y-axis-ticks]',\n  template: `\n    <svg:g #ticksel>\n      <svg:g *ngFor=\"let tick of ticks\" class=\"tick\" [attr.transform]=\"transform(tick)\">\n        <ng-container *ngIf=\"tickFormat(tick) as tickFormatted\">\n          <title>{{ tickFormatted }}</title>\n          <svg:text\n            stroke-width=\"0.01\"\n            [attr.dy]=\"dy\"\n            [attr.x]=\"x1\"\n            [attr.y]=\"y1\"\n            [attr.text-anchor]=\"textAnchor\"\n            [style.font-size]=\"'12px'\"\n          >\n            <ng-container *ngIf=\"wrapTicks; then tmplMultilineTick; else tmplSinglelineTick\"></ng-container>\n          </svg:text>\n\n          <ng-template #tmplMultilineTick>\n            <ng-container *ngIf=\"tickChunks(tick) as tickLines\">\n              <ng-container *ngIf=\"tickLines.length > 1; else tmplSinglelineTick\">\n                <svg:tspan *ngFor=\"let tickLine of tickLines; let i = index\" x=\"0\" [attr.y]=\"i * (8 + tickSpacing)\">\n                  {{ tickLine }}\n                </svg:tspan>\n              </ng-container>\n            </ng-container>\n          </ng-template>\n\n          <ng-template #tmplSinglelineTick>\n            {{ tickTrim(tickFormatted) }}\n          </ng-template>\n        </ng-container>\n      </svg:g>\n    </svg:g>\n\n    <svg:path\n      *ngIf=\"referenceLineLength > 1 && refMax && refMin && showRefLines\"\n      class=\"reference-area\"\n      [attr.d]=\"referenceAreaPath\"\n      [attr.transform]=\"gridLineTransform()\"\n    />\n    <svg:g *ngFor=\"let tick of ticks\" [attr.transform]=\"transform(tick)\">\n      <svg:g *ngIf=\"showGridLines\" [attr.transform]=\"gridLineTransform()\">\n        <svg:line\n          *ngIf=\"orient === Orientation.Left\"\n          class=\"gridline-path gridline-path-horizontal\"\n          x1=\"0\"\n          [attr.x2]=\"gridLineWidth\"\n        />\n        <svg:line\n          *ngIf=\"orient === Orientation.Right\"\n          class=\"gridline-path gridline-path-horizontal\"\n          x1=\"0\"\n          [attr.x2]=\"-gridLineWidth\"\n        />\n      </svg:g>\n    </svg:g>\n\n    <svg:g *ngFor=\"let refLine of referenceLines\" class=\"ref-line\">\n      <svg:g *ngIf=\"showRefLines\" [attr.transform]=\"transform(refLine.value)\">\n        <svg:line class=\"refline-path gridline-path-horizontal\" x1=\"0\" [attr.x2]=\"gridLineWidth\" />\n        <svg:g *ngIf=\"showRefLabels\">\n          <title>{{ tickTrim(tickFormat(refLine.value)) }}</title>\n          <svg:text\n            class=\"refline-label\"\n            [attr.dy]=\"dy\"\n            [attr.y]=\"-6\"\n            [attr.x]=\"gridLineWidth\"\n            [attr.text-anchor]=\"textAnchor\"\n          >\n            {{ refLine.name }}\n          </svg:text>\n        </svg:g>\n      </svg:g>\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class YAxisTicksComponent implements OnChanges, AfterViewInit {\n  @Input() scale;\n  @Input() orient: Orientation;\n  @Input() tickArguments: number[] = [5];\n  @Input() tickValues: string[] | number[];\n  @Input() tickStroke = '#ccc';\n  @Input() trimTicks: boolean = true;\n  @Input() maxTickLength: number = 16;\n  @Input() tickFormatting;\n  @Input() showGridLines: boolean = false;\n  @Input() gridLineWidth: number;\n  @Input() height: number;\n  @Input() referenceLines;\n  @Input() showRefLabels: boolean = false;\n  @Input() showRefLines: boolean = false;\n  @Input() wrapTicks = false;\n\n  @Output() dimensionsChanged = new EventEmitter();\n\n  innerTickSize: number = 6;\n  tickPadding: number = 3;\n  tickSpacing: number;\n  verticalSpacing: number = 20;\n  textAnchor: TextAnchor = TextAnchor.Middle;\n  dy: string;\n  x1: number;\n  x2: number;\n  y1: number;\n  y2: number;\n  adjustedScale: any;\n  transform: (o: any) => string;\n  tickFormat: (o: any) => string;\n  ticks: any[];\n  width: number = 0;\n  outerTickSize: number = 6;\n  rotateLabels: boolean = false;\n  refMax: number;\n  refMin: number;\n  referenceLineLength: number = 0;\n  referenceAreaPath: string;\n\n  readonly Orientation = Orientation;\n\n  @ViewChild('ticksel') ticksElement: ElementRef;\n\n  constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => this.updateDims());\n  }\n\n  updateDims(): void {\n    if (!isPlatformBrowser(this.platformId)) {\n      // for SSR, use approximate value instead of measured\n      this.width = this.getApproximateAxisWidth();\n      this.dimensionsChanged.emit({ width: this.width });\n      return;\n    }\n\n    const width = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().width, 10);\n    if (width !== this.width) {\n      this.width = width;\n      this.dimensionsChanged.emit({ width });\n      setTimeout(() => this.updateDims());\n    }\n  }\n\n  update(): void {\n    const scale = this.scale;\n    const sign = this.orient === Orientation.Top || this.orient === Orientation.Right ? -1 : 1;\n    this.tickSpacing = Math.max(this.innerTickSize, 0) + this.tickPadding;\n\n    this.ticks = this.getTicks();\n\n    if (this.tickFormatting) {\n      this.tickFormat = this.tickFormatting;\n    } else if (scale.tickFormat) {\n      // eslint-disable-next-line prefer-spread\n      this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n    } else {\n      this.tickFormat = function (d) {\n        if (d.constructor.name === 'Date') {\n          return d.toLocaleDateString();\n        }\n        return d.toLocaleString();\n      };\n    }\n\n    this.adjustedScale = scale.bandwidth\n      ? d => {\n          // position the tick to middle considering number of lines of the tick\n          const positionMiddle = scale(d) + scale.bandwidth() * 0.5;\n          if (this.wrapTicks && d.toString().length > this.maxTickLength) {\n            const chunksLength = this.tickChunks(d).length;\n\n            if (chunksLength === 1) {\n              return positionMiddle;\n            }\n\n            const bandWidth = scale.bandwidth();\n            const heightOfLines = chunksLength * 8;\n            const availableFreeSpace = bandWidth * 0.5 - heightOfLines * 0.5;\n\n            return scale(d) + availableFreeSpace;\n          }\n\n          return positionMiddle;\n        }\n      : scale;\n\n    if (this.showRefLines && this.referenceLines) {\n      this.setReferencelines();\n    }\n\n    switch (this.orient) {\n      case Orientation.Top:\n        this.transform = function (tick) {\n          return 'translate(' + this.adjustedScale(tick) + ',0)';\n        };\n        this.textAnchor = TextAnchor.Middle;\n        this.y2 = this.innerTickSize * sign;\n        this.y1 = this.tickSpacing * sign;\n        this.dy = sign < 0 ? '0em' : '.71em';\n        break;\n      case Orientation.Bottom:\n        this.transform = function (tick) {\n          return 'translate(' + this.adjustedScale(tick) + ',0)';\n        };\n        this.textAnchor = TextAnchor.Middle;\n        this.y2 = this.innerTickSize * sign;\n        this.y1 = this.tickSpacing * sign;\n        this.dy = sign < 0 ? '0em' : '.71em';\n        break;\n      case Orientation.Left:\n        this.transform = function (tick) {\n          return 'translate(0,' + this.adjustedScale(tick) + ')';\n        };\n        this.textAnchor = TextAnchor.End;\n        this.x2 = this.innerTickSize * -sign;\n        this.x1 = this.tickSpacing * -sign;\n        this.dy = '.32em';\n        break;\n      case Orientation.Right:\n        this.transform = function (tick) {\n          return 'translate(0,' + this.adjustedScale(tick) + ')';\n        };\n        this.textAnchor = TextAnchor.Start;\n        this.x2 = this.innerTickSize * -sign;\n        this.x1 = this.tickSpacing * -sign;\n        this.dy = '.32em';\n        break;\n      default:\n    }\n    setTimeout(() => this.updateDims());\n  }\n\n  setReferencelines(): void {\n    this.refMin = this.adjustedScale(\n      Math.min.apply(\n        null,\n        this.referenceLines.map(item => item.value)\n      )\n    );\n    this.refMax = this.adjustedScale(\n      Math.max.apply(\n        null,\n        this.referenceLines.map(item => item.value)\n      )\n    );\n    this.referenceLineLength = this.referenceLines.length;\n\n    this.referenceAreaPath = roundedRect(0, this.refMax, this.gridLineWidth, this.refMin - this.refMax, 0, [\n      false,\n      false,\n      false,\n      false\n    ]);\n  }\n\n  getTicks(): any[] {\n    let ticks;\n    const maxTicks = this.getMaxTicks(20);\n    const maxScaleTicks = this.getMaxTicks(50);\n\n    if (this.tickValues) {\n      ticks = this.tickValues;\n    } else if (this.scale.ticks) {\n      ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n    } else {\n      ticks = this.scale.domain();\n      ticks = reduceTicks(ticks, maxTicks);\n    }\n\n    return ticks;\n  }\n\n  getMaxTicks(tickHeight: number): number {\n    return Math.floor(this.height / tickHeight);\n  }\n\n  tickTransform(tick: number): string {\n    return `translate(${this.adjustedScale(tick)},${this.verticalSpacing})`;\n  }\n\n  gridLineTransform(): string {\n    return `translate(5,0)`;\n  }\n\n  tickTrim(label: string): string {\n    return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n  }\n\n  getApproximateAxisWidth(): number {\n    const maxChars = Math.max(...this.ticks.map(t => this.tickTrim(this.tickFormat(t)).length));\n    const charWidth = 7;\n    return maxChars * charWidth;\n  }\n\n  tickChunks(label: string): string[] {\n    if (label.toString().length > this.maxTickLength && this.scale.bandwidth) {\n      // for y-axis the width of the tick is fixed\n      const preferredWidth = this.maxTickLength;\n      const maxLines = Math.floor(this.scale.bandwidth() / 15);\n\n      if (maxLines <= 1) {\n        return [this.tickTrim(label)];\n      }\n\n      return getTickLines(label, preferredWidth, Math.min(maxLines, 5));\n    }\n\n    return [this.tickFormat(label)];\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  ViewChild,\n  SimpleChanges,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { YAxisTicksComponent } from './y-axis-ticks.component';\nimport { Orientation } from '../types/orientation.enum';\nimport { ViewDimensions } from '../types/view-dimension.interface';\n\n@Component({\n  selector: 'g[ngx-charts-y-axis]',\n  template: `\n    <svg:g [attr.class]=\"yAxisClassName\" [attr.transform]=\"transform\">\n      <svg:g\n        ngx-charts-y-axis-ticks\n        *ngIf=\"yScale\"\n        [trimTicks]=\"trimTicks\"\n        [maxTickLength]=\"maxTickLength\"\n        [tickFormatting]=\"tickFormatting\"\n        [tickArguments]=\"tickArguments\"\n        [tickValues]=\"ticks\"\n        [tickStroke]=\"tickStroke\"\n        [scale]=\"yScale\"\n        [orient]=\"yOrient\"\n        [showGridLines]=\"showGridLines\"\n        [gridLineWidth]=\"dims.width\"\n        [referenceLines]=\"referenceLines\"\n        [showRefLines]=\"showRefLines\"\n        [showRefLabels]=\"showRefLabels\"\n        [height]=\"dims.height\"\n        [wrapTicks]=\"wrapTicks\"\n        (dimensionsChanged)=\"emitTicksWidth($event)\"\n      />\n\n      <svg:g\n        ngx-charts-axis-label\n        *ngIf=\"showLabel\"\n        [label]=\"labelText\"\n        [offset]=\"labelOffset\"\n        [orient]=\"yOrient\"\n        [height]=\"dims.height\"\n        [width]=\"dims.width\"\n      ></svg:g>\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class YAxisComponent implements OnChanges {\n  @Input() yScale;\n  @Input() dims: ViewDimensions;\n  @Input() trimTicks: boolean;\n  @Input() maxTickLength: number;\n  @Input() tickFormatting;\n  @Input() ticks: any[];\n  @Input() showGridLines: boolean = false;\n  @Input() showLabel: boolean;\n  @Input() labelText: string;\n  @Input() yAxisTickCount: any;\n  @Input() yOrient: Orientation = Orientation.Left;\n  @Input() referenceLines;\n  @Input() showRefLines: boolean;\n  @Input() showRefLabels: boolean;\n  @Input() yAxisOffset: number = 0;\n  @Input() wrapTicks = false;\n  @Output() dimensionsChanged = new EventEmitter();\n\n  yAxisClassName: string = 'y axis';\n  tickArguments: number[];\n  offset: number;\n  transform: string;\n  labelOffset: number = 15;\n  fill: string = 'none';\n  stroke: string = '#CCC';\n  tickStroke: string = '#CCC';\n  strokeWidth: number = 1;\n  padding: number = 5;\n\n  @ViewChild(YAxisTicksComponent) ticksComponent: YAxisTicksComponent;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    this.offset = -(this.yAxisOffset + this.padding);\n    if (this.yOrient === Orientation.Right) {\n      this.labelOffset = 65;\n      this.transform = `translate(${this.offset + this.dims.width} , 0)`;\n    } else {\n      this.transform = `translate(${this.offset} , 0)`;\n    }\n\n    if (this.yAxisTickCount !== undefined) {\n      this.tickArguments = [this.yAxisTickCount];\n    }\n  }\n\n  emitTicksWidth({ width }): void {\n    if (width !== this.labelOffset && this.yOrient === Orientation.Right) {\n      this.labelOffset = width + this.labelOffset;\n      setTimeout(() => {\n        this.dimensionsChanged.emit({ width });\n      }, 0);\n    } else if (width !== this.labelOffset) {\n      this.labelOffset = width;\n      setTimeout(() => {\n        this.dimensionsChanged.emit({ width });\n      }, 0);\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { AxisLabelComponent } from './axis-label.component';\nimport { XAxisComponent } from './x-axis.component';\nimport { XAxisTicksComponent } from './x-axis-ticks.component';\nimport { YAxisComponent } from './y-axis.component';\nimport { YAxisTicksComponent } from './y-axis-ticks.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent],\n  exports: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent]\n})\nexport class AxesModule {}\n","export enum StyleTypes {\n  popover = 'popover',\n  tooltip = 'tooltip'\n}\n","export enum ShowTypes {\n  all = 'all' as any,\n  focus = 'focus' as any,\n  mouseover = 'mouseover' as any\n}\n","import {\n  Directive,\n  Input,\n  Output,\n  EventEmitter,\n  HostListener,\n  ViewContainerRef,\n  Renderer2,\n  OnDestroy,\n  TemplateRef,\n  ComponentRef\n} from '@angular/core';\n\nimport { PlacementTypes } from './position';\nimport { StyleTypes } from './style.type';\nimport { ShowTypes } from './show.type';\n\nimport { TooltipService } from './tooltip.service';\n\n@Directive({\n  selector: '[ngx-tooltip]',\n  standalone: false\n})\nexport class TooltipDirective implements OnDestroy {\n  @Input() tooltipCssClass: string = '';\n  @Input() tooltipTitle?: string;\n  @Input() tooltipAppendToBody: boolean = true;\n  @Input() tooltipSpacing: number = 10;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipShowCaret: boolean = true;\n  @Input() tooltipPlacement: PlacementTypes = PlacementTypes.Top;\n  @Input() tooltipAlignment: PlacementTypes = PlacementTypes.Center;\n  @Input() tooltipType: StyleTypes = StyleTypes.popover;\n  @Input() tooltipCloseOnClickOutside: boolean = true;\n  @Input() tooltipCloseOnMouseLeave: boolean = true;\n  @Input() tooltipHideTimeout: number = 300;\n  @Input() tooltipShowTimeout: number = 100;\n  @Input() tooltipTemplate: TemplateRef<any>;\n  @Input() tooltipShowEvent: ShowTypes = ShowTypes.all;\n  @Input() tooltipContext: any;\n  @Input() tooltipImmediateExit: boolean = false;\n\n  @Output() show: EventEmitter<boolean> = new EventEmitter();\n  @Output() hide: EventEmitter<boolean> = new EventEmitter();\n\n  private get listensForFocus(): boolean {\n    return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.focus;\n  }\n\n  private get listensForHover(): boolean {\n    return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.mouseover;\n  }\n\n  private component: ComponentRef<any>;\n  private timeout: ReturnType<typeof setTimeout>;\n  private mouseLeaveContentEvent: any;\n  private mouseEnterContentEvent: any;\n  private documentClickEvent: any;\n\n  constructor(\n    private tooltipService: TooltipService,\n    private viewContainerRef: ViewContainerRef,\n    private renderer: Renderer2\n  ) {}\n\n  ngOnDestroy(): void {\n    this.hideTooltip(true);\n  }\n\n  @HostListener('focusin')\n  onFocus(): void {\n    if (this.listensForFocus) {\n      this.showTooltip();\n    }\n  }\n\n  @HostListener('blur')\n  onBlur(): void {\n    if (this.listensForFocus) {\n      this.hideTooltip(true);\n    }\n  }\n\n  @HostListener('mouseenter')\n  onMouseEnter(): void {\n    if (this.listensForHover) {\n      this.showTooltip();\n    }\n  }\n\n  @HostListener('mouseleave', ['$event.target'])\n  onMouseLeave(target): void {\n    if (this.listensForHover && this.tooltipCloseOnMouseLeave) {\n      clearTimeout(this.timeout);\n\n      if (this.component) {\n        const contentDom = this.component.instance.element.nativeElement;\n        const contains = contentDom.contains(target);\n        if (contains) return;\n      }\n\n      this.hideTooltip(this.tooltipImmediateExit);\n    }\n  }\n\n  @HostListener('click')\n  onMouseClick() {\n    if (this.listensForHover) {\n      this.hideTooltip(true);\n    }\n  }\n\n  showTooltip(immediate?: boolean): void {\n    if (this.component || this.tooltipDisabled) return;\n\n    const time = immediate\n      ? 0\n      : this.tooltipShowTimeout + (navigator.userAgent.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/) ? 400 : 0);\n\n    clearTimeout(this.timeout);\n    this.timeout = setTimeout(() => {\n      this.tooltipService.destroyAll();\n\n      const options = this.createBoundOptions();\n      this.component = this.tooltipService.create(options);\n\n      // add a tiny timeout to avoid event re-triggers\n      setTimeout(() => {\n        if (this.component) {\n          this.addHideListeners(this.component.instance.element.nativeElement);\n        }\n      }, 10);\n\n      this.show.emit(true);\n    }, time);\n  }\n\n  addHideListeners(tooltip: HTMLElement): void {\n    // on mouse enter, cancel the hide triggered by the leave\n    this.mouseEnterContentEvent = this.renderer.listen(tooltip, 'mouseenter', () => {\n      clearTimeout(this.timeout);\n    });\n\n    // content mouse leave listener\n    if (this.tooltipCloseOnMouseLeave) {\n      this.mouseLeaveContentEvent = this.renderer.listen(tooltip, 'mouseleave', () => {\n        this.hideTooltip(this.tooltipImmediateExit);\n      });\n    }\n\n    // content close on click outside\n    if (this.tooltipCloseOnClickOutside) {\n      this.documentClickEvent = this.renderer.listen('window', 'click', event => {\n        const contains = tooltip.contains(event.target);\n        if (!contains) this.hideTooltip();\n      });\n    }\n  }\n\n  hideTooltip(immediate: boolean = false): void {\n    if (!this.component) return;\n\n    const destroyFn = () => {\n      // remove events\n      if (this.mouseLeaveContentEvent) this.mouseLeaveContentEvent();\n      if (this.mouseEnterContentEvent) this.mouseEnterContentEvent();\n      if (this.documentClickEvent) this.documentClickEvent();\n\n      // emit events\n      this.hide.emit(true);\n\n      // destroy component\n      this.tooltipService.destroy(this.component);\n      this.component = undefined;\n    };\n\n    clearTimeout(this.timeout);\n    if (!immediate) {\n      this.timeout = setTimeout(destroyFn, this.tooltipHideTimeout);\n    } else {\n      destroyFn();\n    }\n  }\n\n  private createBoundOptions(): any {\n    return {\n      title: this.tooltipTitle,\n      template: this.tooltipTemplate,\n      host: this.viewContainerRef.element,\n      placement: this.tooltipPlacement,\n      alignment: this.tooltipAlignment,\n      type: this.tooltipType,\n      showCaret: this.tooltipShowCaret,\n      cssClass: this.tooltipCssClass,\n      spacing: this.tooltipSpacing,\n      context: this.tooltipContext\n    };\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TooltipDirective } from './tooltip.directive';\nimport { TooltipContentComponent } from './tooltip.component';\nimport { TooltipService } from './tooltip.service';\n\nimport { InjectionService } from './injection.service';\n\n@NgModule({\n  declarations: [TooltipContentComponent, TooltipDirective],\n  providers: [InjectionService, TooltipService],\n  exports: [TooltipContentComponent, TooltipDirective],\n  imports: [CommonModule]\n})\nexport class TooltipModule {}\n","const cache = {};\n\n/**\n * Generates a short id.\n *\n * Description:\n *   A 4-character alphanumeric sequence (364 = 1.6 million)\n *   This should only be used for JavaScript specific models.\n *   http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n *\n *   Example: `ebgf`\n */\nexport function id(): string {\n  let newId = ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n\n  // append a 'a' because neo gets mad\n  newId = `a${newId}`;\n\n  // ensure not already used\n  if (!cache[newId]) {\n    cache[newId] = true;\n    return newId;\n  }\n\n  return id();\n}\n","export enum BarOrientation {\n  Vertical = 'vertical',\n  Horizontal = 'horizontal'\n}\n","import {\n  Component,\n  Input,\n  SimpleChanges,\n  Output,\n  EventEmitter,\n  OnChanges,\n  ChangeDetectionStrategy,\n  HostListener\n} from '@angular/core';\n\n@Component({\n  selector: 'g[ngx-charts-circle]',\n  template: `\n    <svg:circle\n      [attr.cx]=\"cx\"\n      [attr.cy]=\"cy\"\n      [attr.r]=\"r\"\n      [attr.fill]=\"fill\"\n      [attr.stroke]=\"stroke\"\n      [attr.opacity]=\"circleOpacity\"\n      [attr.class]=\"classNames\"\n      [attr.pointer-events]=\"pointerEvents\"\n    />\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class CircleComponent implements OnChanges {\n  @Input() cx: number;\n  @Input() cy: number;\n  @Input() r: number;\n  @Input() fill: string;\n  @Input() stroke: string;\n  @Input() data: number | string;\n  @Input() classNames: string[] | string;\n  @Input() circleOpacity: number;\n  @Input() pointerEvents: string;\n\n  @Output() select: EventEmitter<number | string> = new EventEmitter();\n  @Output() activate: EventEmitter<number | string> = new EventEmitter();\n  @Output() deactivate: EventEmitter<number | string> = new EventEmitter();\n\n  @HostListener('click')\n  onClick() {\n    this.select.emit(this.data);\n  }\n\n  @HostListener('mouseenter')\n  onMouseEnter(): void {\n    this.activate.emit(this.data);\n  }\n\n  @HostListener('mouseleave')\n  onMouseLeave(): void {\n    this.deactivate.emit(this.data);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.classNames = Array.isArray(this.classNames) ? this.classNames.join(' ') : '';\n    this.classNames += 'circle';\n  }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { BarOrientation } from './types/bar-orientation.enum';\nimport { Gradient } from './types/gradient.interface';\n\n@Component({\n  selector: 'g[ngx-charts-svg-linear-gradient]',\n  template: `\n    <svg:linearGradient [id]=\"name\" [attr.x1]=\"x1\" [attr.y1]=\"y1\" [attr.x2]=\"x2\" [attr.y2]=\"y2\">\n      <svg:stop\n        *ngFor=\"let stop of stops\"\n        [attr.offset]=\"stop.offset + '%'\"\n        [style.stop-color]=\"stop.color\"\n        [style.stop-opacity]=\"stop.opacity\"\n      />\n    </svg:linearGradient>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class SvgLinearGradientComponent implements OnChanges {\n  @Input() orientation = BarOrientation.Vertical;\n  @Input() name: string;\n  @Input() stops: Gradient[];\n\n  x1: string;\n  x2: string;\n  y1: string;\n  y2: string;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.x1 = '0%';\n    this.x2 = '0%';\n    this.y1 = '0%';\n    this.y2 = '0%';\n\n    if (this.orientation === BarOrientation.Horizontal) {\n      this.x2 = '100%';\n    } else if (this.orientation === BarOrientation.Vertical) {\n      this.y1 = '100%';\n    }\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  OnInit,\n  ChangeDetectionStrategy,\n  TemplateRef,\n  PLATFORM_ID,\n  Inject\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { formatLabel, escapeLabel } from './label.helper';\nimport { id } from '../utils/id';\nimport { ColorHelper } from './color.helper';\nimport { DataItem, Series, StringOrNumberOrDate } from '../models/chart-data.model';\nimport { PlacementTypes } from './tooltip/position';\nimport { StyleTypes } from './tooltip/style.type';\nimport { BarOrientation } from './types/bar-orientation.enum';\nimport { Gradient } from './types/gradient.interface';\nimport { ScaleType } from './types/scale-type.enum';\nimport { isPlatformServer } from '@angular/common';\n\nexport enum SeriesType {\n  Standard = 'standard',\n  Stacked = 'stacked'\n}\n\nexport interface Circle {\n  classNames: string[];\n  value: string | number;\n  label: string;\n  data: DataItem;\n  cx: number;\n  cy: number;\n  radius: number;\n  height: number;\n  tooltipLabel: string;\n  color: string;\n  opacity: number;\n  seriesName: string;\n  gradientStops: Gradient[];\n  min: number;\n  max: number;\n}\n\n@Component({\n  selector: 'g[ngx-charts-circle-series]',\n  template: `\n    <svg:g *ngIf=\"circle\">\n      <defs>\n        <svg:g\n          ngx-charts-svg-linear-gradient\n          [orientation]=\"barOrientation.Vertical\"\n          [name]=\"gradientId\"\n          [stops]=\"circle.gradientStops\"\n        />\n      </defs>\n      <svg:rect\n        *ngIf=\"!isSSR && barVisible && type === 'standard'\"\n        [@animationState]=\"'active'\"\n        [attr.x]=\"circle.cx - circle.radius\"\n        [attr.y]=\"circle.cy\"\n        [attr.width]=\"circle.radius * 2\"\n        [attr.height]=\"circle.height\"\n        [attr.fill]=\"gradientFill\"\n        class=\"tooltip-bar\"\n      />\n      <svg:rect\n        *ngIf=\"isSSR && barVisible && type === 'standard'\"\n        [attr.x]=\"circle.cx - circle.radius\"\n        [attr.y]=\"circle.cy\"\n        [attr.width]=\"circle.radius * 2\"\n        [attr.height]=\"circle.height\"\n        [attr.fill]=\"gradientFill\"\n        class=\"tooltip-bar\"\n      />\n      <svg:g\n        ngx-charts-circle\n        class=\"circle\"\n        [cx]=\"circle.cx\"\n        [cy]=\"circle.cy\"\n        [r]=\"circle.radius\"\n        [fill]=\"circle.color\"\n        [class.active]=\"isActive({ name: circle.seriesName })\"\n        [pointerEvents]=\"circle.value === 0 ? 'none' : 'all'\"\n        [data]=\"circle.value\"\n        [classNames]=\"circle.classNames\"\n        (select)=\"onClick(circle.data)\"\n        (activate)=\"activateCircle()\"\n        (deactivate)=\"deactivateCircle()\"\n        ngx-tooltip\n        [tooltipDisabled]=\"tooltipDisabled\"\n        [tooltipPlacement]=\"placementTypes.Top\"\n        [tooltipType]=\"styleTypes.tooltip\"\n        [tooltipTitle]=\"tooltipTemplate ? undefined : getTooltipText(circle)\"\n        [tooltipTemplate]=\"tooltipTemplate\"\n        [tooltipContext]=\"circle.data\"\n      />\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition(':enter', [\n        style({\n          opacity: 0\n        }),\n        animate(250, style({ opacity: 1 }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class CircleSeriesComponent implements OnChanges, OnInit {\n  @Input() data: Series;\n  @Input() type: SeriesType = SeriesType.Standard;\n  @Input() xScale;\n  @Input() yScale;\n  @Input() colors: ColorHelper;\n  @Input() scaleType: ScaleType;\n  @Input() visibleValue: boolean;\n  @Input() activeEntries: any[];\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipTemplate: TemplateRef<any>;\n\n  @Output() select: EventEmitter<DataItem> = new EventEmitter();\n  @Output() activate: EventEmitter<{ name: StringOrNumberOrDate }> = new EventEmitter();\n  @Output() deactivate: EventEmitter<{ name: StringOrNumberOrDate }> = new EventEmitter();\n\n  areaPath: any;\n  circle: Circle; // active circle\n  barVisible: boolean = false;\n  gradientId: string;\n  gradientFill: string;\n\n  barOrientation = BarOrientation;\n  placementTypes = PlacementTypes;\n  styleTypes = StyleTypes;\n\n  isSSR = false;\n\n  constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n  ngOnInit() {\n    this.gradientId = 'grad' + id().toString();\n    this.gradientFill = `url(#${this.gradientId})`;\n\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    this.circle = this.getActiveCircle();\n  }\n\n  getActiveCircle(): Circle {\n    const indexActiveDataPoint = this.data.series.findIndex(d => {\n      const label = d.name;\n      return label && this.visibleValue && label.toString() === this.visibleValue.toString() && d.value !== undefined;\n    });\n\n    if (indexActiveDataPoint === -1) {\n      // No valid point is 'active/hovered over' at this moment.\n      return undefined;\n    }\n\n    return this.mapDataPointToCircle(this.data.series[indexActiveDataPoint], indexActiveDataPoint);\n  }\n\n  mapDataPointToCircle(d: any, i: number): Circle {\n    const seriesName = this.data.name as string;\n\n    const value = d.value;\n    const label = d.name;\n    const tooltipLabel = formatLabel(label);\n\n    let cx;\n    if (this.scaleType === ScaleType.Time) {\n      cx = this.xScale(label);\n    } else if (this.scaleType === ScaleType.Linear) {\n      cx = this.xScale(Number(label));\n    } else {\n      cx = this.xScale(label);\n    }\n\n    const cy = this.yScale(this.type === SeriesType.Standard ? value : d.d1);\n    const radius = 5;\n    const height = this.yScale.range()[0] - cy;\n    const opacity = 1;\n\n    let color;\n    if (this.colors.scaleType === ScaleType.Linear) {\n      if (this.type === SeriesType.Standard) {\n        color = this.colors.getColor(value);\n      } else {\n        color = this.colors.getColor(d.d1);\n      }\n    } else {\n      color = this.colors.getColor(seriesName);\n    }\n\n    const data = Object.assign({}, d, {\n      series: seriesName,\n      value,\n      name: label\n    });\n\n    return {\n      classNames: [`circle-data-${i}`],\n      value,\n      label,\n      data,\n      cx,\n      cy,\n      radius,\n      height,\n      tooltipLabel,\n      color,\n      opacity,\n      seriesName,\n      gradientStops: this.getGradientStops(color),\n      min: d.min,\n      max: d.max\n    };\n  }\n\n  getTooltipText({\n    tooltipLabel,\n    value,\n    seriesName,\n    min,\n    max\n  }: {\n    tooltipLabel: string;\n    value: any;\n    seriesName: string;\n    min: number;\n    max: number;\n  }): string {\n    return `\n      <span class=\"tooltip-label\">${escapeLabel(seriesName)} • ${escapeLabel(tooltipLabel)}</span>\n      <span class=\"tooltip-val\">${value.toLocaleString()}${this.getTooltipMinMaxText(min, max)}</span>\n    `;\n  }\n\n  getTooltipMinMaxText(min: number, max: number): string {\n    if (min !== undefined || max !== undefined) {\n      let result = ' (';\n      if (min !== undefined) {\n        if (max === undefined) {\n          result += '≥';\n        }\n        result += min.toLocaleString();\n        if (max !== undefined) {\n          result += ' - ';\n        }\n      } else if (max !== undefined) {\n        result += '≤';\n      }\n      if (max !== undefined) {\n        result += max.toLocaleString();\n      }\n      result += ')';\n      return result;\n    } else {\n      return '';\n    }\n  }\n\n  getGradientStops(color: string): Gradient[] {\n    return [\n      {\n        offset: 0,\n        color,\n        opacity: 0.2\n      },\n      {\n        offset: 100,\n        color,\n        opacity: 1\n      }\n    ];\n  }\n\n  onClick(data: DataItem): void {\n    this.select.emit(data);\n  }\n\n  isActive(entry): boolean {\n    if (!this.activeEntries) return false;\n    const item = this.activeEntries.find(d => {\n      return entry.name === d.name;\n    });\n    return item !== undefined;\n  }\n\n  activateCircle(): void {\n    this.barVisible = true;\n    this.activate.emit({ name: this.data.name });\n  }\n\n  deactivateCircle(): void {\n    this.barVisible = false;\n    this.circle.opacity = 0;\n    this.deactivate.emit({ name: this.data.name });\n  }\n}\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n  selector: 'g[ngx-charts-grid-panel]',\n  template: `\n    <svg:rect [attr.height]=\"height\" [attr.width]=\"width\" [attr.x]=\"x\" [attr.y]=\"y\" stroke=\"none\" class=\"gridpanel\" />\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class GridPanelComponent {\n  @Input() width: number;\n  @Input() height: number;\n  @Input() x: number;\n  @Input() y: number;\n}\n","import { Component, SimpleChanges, Input, OnChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { BarOrientation } from './types/bar-orientation.enum';\nimport { ViewDimensions } from './types/view-dimension.interface';\n\ninterface GridPanel {\n  class: ClassEnum;\n  height: number;\n  name: string;\n  width: number;\n  x: number;\n  y: number;\n}\n\nenum ClassEnum {\n  Odd = 'odd',\n  Even = 'even'\n}\n\n@Component({\n  selector: 'g[ngx-charts-grid-panel-series]',\n  template: `\n    <svg:g\n      ngx-charts-grid-panel\n      *ngFor=\"let gridPanel of gridPanels\"\n      [height]=\"gridPanel.height\"\n      [width]=\"gridPanel.width\"\n      [x]=\"gridPanel.x\"\n      [y]=\"gridPanel.y\"\n      [class.grid-panel]=\"true\"\n      [class.odd]=\"gridPanel.class === 'odd'\"\n      [class.even]=\"gridPanel.class === 'even'\"\n    ></svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class GridPanelSeriesComponent implements OnChanges {\n  gridPanels: GridPanel[];\n\n  @Input() data: any[];\n\n  @Input() dims: ViewDimensions;\n\n  @Input() xScale: any;\n\n  @Input() yScale: any;\n\n  @Input() orient: BarOrientation;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    this.gridPanels = this.getGridPanels();\n  }\n\n  getGridPanels(): GridPanel[] {\n    return this.data.map(d => {\n      let offset;\n      let width;\n      let height;\n      let x;\n      let y;\n      let className = ClassEnum.Odd;\n\n      if (this.orient === BarOrientation.Vertical) {\n        const position: number = this.xScale(d.name);\n        const positionIndex = Number.parseInt((position / this.xScale.step()).toString(), 10);\n\n        if (positionIndex % 2 === 1) {\n          className = ClassEnum.Even;\n        }\n        offset = this.xScale.bandwidth() * this.xScale.paddingInner();\n        width = this.xScale.bandwidth() + offset;\n        height = this.dims.height;\n        x = this.xScale(d.name) - offset / 2;\n        y = 0;\n      } else if (this.orient === BarOrientation.Horizontal) {\n        const position = this.yScale(d.name);\n        const positionIndex = Number.parseInt((position / this.yScale.step()).toString(), 10);\n\n        if (positionIndex % 2 === 1) {\n          className = ClassEnum.Even;\n        }\n        offset = this.yScale.bandwidth() * this.yScale.paddingInner();\n\n        width = this.dims.width;\n        height = this.yScale.bandwidth() + offset;\n        x = 0;\n        y = this.yScale(d.name) - offset / 2;\n      }\n\n      return {\n        name: d.name,\n        class: className,\n        height,\n        width,\n        x,\n        y\n      };\n    });\n  }\n}\n","import { Component, Input, OnChanges, ChangeDetectionStrategy, SimpleChanges } from '@angular/core';\nimport { Gradient } from './types/gradient.interface';\n\n@Component({\n  selector: 'g[ngx-charts-svg-radial-gradient]',\n  template: `\n    <svg:radialGradient [id]=\"name\" [attr.cx]=\"cx\" [attr.cy]=\"cy\" [attr.r]=\"r\" gradientUnits=\"userSpaceOnUse\">\n      <svg:stop\n        *ngFor=\"let stop of stops\"\n        [attr.offset]=\"stop.offset + '%'\"\n        [style.stop-color]=\"stop.color\"\n        [style.stop-opacity]=\"stop.opacity\"\n      />\n    </svg:radialGradient>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class SvgRadialGradientComponent implements OnChanges {\n  @Input() color: string;\n  @Input() name: string;\n  @Input() startOpacity: number;\n  @Input() endOpacity = 1;\n  @Input() cx: number = 0;\n  @Input() cy: number = 0;\n\n  @Input()\n  get stops(): Gradient[] {\n    return this.stopsInput || this.stopsDefault;\n  }\n\n  set stops(value: Gradient[]) {\n    this.stopsInput = value;\n  }\n\n  r: string;\n\n  private stopsInput: Gradient[];\n  private stopsDefault: Gradient[];\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.r = '30%';\n    if ('color' in changes || 'startOpacity' in changes || 'endOpacity' in changes) {\n      this.stopsDefault = [\n        {\n          offset: 0,\n          color: this.color,\n          opacity: this.startOpacity\n        },\n        {\n          offset: 100,\n          color: this.color,\n          opacity: this.endOpacity\n        }\n      ];\n    }\n  }\n}\n","import { Component, Input, Output, EventEmitter, ElementRef, OnChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { select } from 'd3-selection';\nimport { id } from '../utils/id';\nimport { AreaChartSeries } from '../models/chart-data.model';\nimport { BarOrientation } from './types/bar-orientation.enum';\nimport { Gradient } from './types/gradient.interface';\n\n@Component({\n  selector: 'g[ngx-charts-area]',\n  template: `\n    <svg:defs *ngIf=\"gradient\">\n      <svg:g\n        ngx-charts-svg-linear-gradient\n        [orientation]=\"barOrientation.Vertical\"\n        [name]=\"gradientId\"\n        [stops]=\"gradientStops\"\n      />\n    </svg:defs>\n    <svg:path class=\"area\" [attr.d]=\"areaPath\" [attr.fill]=\"gradient ? gradientFill : fill\" [style.opacity]=\"opacity\" />\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class AreaComponent implements OnChanges {\n  @Input() data: AreaChartSeries;\n  @Input() path: string;\n  @Input() startingPath: string;\n  @Input() fill: string;\n  @Input() opacity: number = 1;\n  @Input() startOpacity: number = 0.5;\n  @Input() endOpacity: number = 1;\n  @Input() gradient: boolean = false;\n  @Input() stops: Gradient[];\n  @Input() animations: boolean = true;\n\n  @Output() select = new EventEmitter();\n\n  element: HTMLElement;\n  gradientId: string;\n  gradientFill: string;\n  areaPath: string;\n  animationsLoaded: boolean = false;\n  gradientStops: Gradient[];\n  hasGradient: boolean = false;\n\n  barOrientation = BarOrientation;\n\n  constructor(element: ElementRef) {\n    this.element = element.nativeElement;\n  }\n\n  ngOnChanges(): void {\n    this.update();\n\n    if (!this.animationsLoaded) {\n      this.loadAnimation();\n      this.animationsLoaded = true;\n    }\n  }\n\n  update(): void {\n    this.gradientId = 'grad' + id().toString();\n    this.gradientFill = `url(#${this.gradientId})`;\n\n    if (this.gradient || this.stops) {\n      this.gradientStops = this.getGradient();\n      this.hasGradient = true;\n    } else {\n      this.hasGradient = false;\n    }\n\n    this.updatePathEl();\n  }\n\n  loadAnimation(): void {\n    this.areaPath = this.startingPath;\n    setTimeout(this.updatePathEl.bind(this), 100);\n  }\n\n  updatePathEl(): void {\n    const node = select(this.element).select('.area');\n\n    if (this.animations) {\n      node.transition().duration(750).attr('d', this.path);\n    } else {\n      node.attr('d', this.path);\n    }\n  }\n\n  getGradient(): Gradient[] {\n    if (this.stops) {\n      return this.stops;\n    }\n\n    return [\n      {\n        offset: 0,\n        color: this.fill,\n        opacity: this.startOpacity\n      },\n      {\n        offset: 100,\n        color: this.fill,\n        opacity: this.endOpacity\n      }\n    ];\n  }\n}\n","// Robert Penner's easeOutExpo\nfunction easeOutExpo(t, b, c, d): number {\n  return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b;\n}\n\n/**\n * Counts from a number to the end incrementally.\n */\nexport function count(countFrom: number, countTo: number, countDecimals: number, countDuration: number, callback: any) {\n  const startVal = Number(countFrom);\n  const endVal = Number(countTo);\n  const countDown = startVal > endVal;\n  const decimals = Math.max(0, countDecimals);\n  const dec = Math.pow(10, decimals);\n  const duration = Number(countDuration) * 1000;\n  let startTime;\n\n  function runCount(timestamp: number) {\n    let frameVal;\n    const progress = timestamp - startTime;\n\n    if (countDown) {\n      frameVal = startVal - easeOutExpo(progress, 0, startVal - endVal, duration);\n    } else {\n      frameVal = easeOutExpo(progress, startVal, endVal - startVal, duration);\n    }\n\n    if (countDown) {\n      frameVal = frameVal < endVal ? endVal : frameVal;\n    } else {\n      frameVal = frameVal > endVal ? endVal : frameVal;\n    }\n\n    frameVal = Math.round(frameVal * dec) / dec;\n\n    const tick = progress < duration;\n    callback({\n      value: frameVal,\n      progress,\n      timestamp,\n      finished: !tick\n    });\n\n    if (tick) {\n      return requestAnimationFrame(val => runCount(val));\n    }\n  }\n\n  return requestAnimationFrame(timestamp => {\n    startTime = timestamp;\n    return runCount(timestamp);\n  });\n}\n\n/**\n * Determine decimals places\n *\n * @export\n */\nexport function decimalChecker(countTo: number): number {\n  const endVal = Number(countTo);\n\n  if (endVal % 1 !== 0 && Math.abs(endVal) <= 10) {\n    return 2;\n  }\n\n  return 0;\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, OnDestroy, ElementRef } from '@angular/core';\nimport { count, decimalChecker } from './count.helper';\n\n/**\n * Count up component\n *\n * Loosely inspired by:\n *  - https://github.com/izupet/angular2-counto\n *  - https://inorganik.github.io/countUp.js/\n *\n * @export\n */\n@Component({\n  selector: '[ngx-charts-count-up]',\n  template: ` {{ value }} `,\n  standalone: false\n})\nexport class CountUpDirective implements OnDestroy {\n  @Input() countDuration: number = 1;\n  @Input() countPrefix: string = '';\n  @Input() countSuffix: string = '';\n  @Input() valueFormatting: any;\n\n  @Input()\n  set countDecimals(val: number) {\n    this._countDecimals = val;\n  }\n\n  get countDecimals(): number {\n    if (this._countDecimals) return this._countDecimals;\n    return decimalChecker(this.countTo);\n  }\n\n  @Input()\n  set countTo(val) {\n    this._countTo = parseFloat(val);\n    this.start();\n  }\n\n  get countTo(): any {\n    return this._countTo;\n  }\n\n  @Input()\n  set countFrom(val) {\n    this._countFrom = parseFloat(val);\n    this.start();\n  }\n\n  get countFrom(): any {\n    return this._countFrom;\n  }\n\n  @Output() countChange = new EventEmitter();\n  @Output() countFinish = new EventEmitter();\n\n  nativeElement: any;\n\n  value: any = '';\n  formattedValue: string;\n\n  private animationReq: any;\n\n  private _countDecimals: number = 0;\n  private _countTo: number = 0;\n  private _countFrom: number = 0;\n\n  constructor(private cd: ChangeDetectorRef, element: ElementRef) {\n    this.nativeElement = element.nativeElement;\n  }\n\n  ngOnDestroy(): void {\n    cancelAnimationFrame(this.animationReq);\n  }\n\n  start(): void {\n    cancelAnimationFrame(this.animationReq);\n\n    const valueFormatting =\n      this.valueFormatting || (value => `${this.countPrefix}${value.toLocaleString()}${this.countSuffix}`);\n\n    const callback = ({ value, progress, finished }) => {\n      this.value = valueFormatting(value);\n      this.cd.markForCheck();\n      if (!finished) this.countChange.emit({ value: this.value, progress });\n      if (finished) this.countFinish.emit({ value: this.value, progress });\n    };\n\n    this.animationReq = count(this.countFrom, this.countTo, this.countDecimals, this.countDuration, callback);\n  }\n}\n","declare let global: any;\n\n// If we don't check whether 'window' and 'global' variables are defined,\n// code will fail in browser/node with 'variable is undefined' error.\nlet root: any;\nif (typeof window !== 'undefined') {\n  root = window;\n} else if (typeof global !== 'undefined') {\n  root = global;\n}\n\n// tslint:disable-next-line:variable-name\nexport const MouseEvent = root.MouseEvent as any & {\n  prototype?: MouseEvent;\n  new (typeArg: string, eventInitDict?: MouseEventInit): MouseEvent;\n};\n\nexport function createMouseEvent(name: string, bubbles: boolean = false, cancelable: boolean = true): MouseEvent {\n  // Calling new of an event does not work correctly on IE. The following is a tested workaround\n  // See https://stackoverflow.com/questions/27176983/dispatchevent-not-working-in-ie11\n  if (typeof MouseEvent === 'function') {\n    // Sane browsers\n    return new MouseEvent(name, { bubbles, cancelable });\n  } else {\n    // IE\n    const event = document.createEvent('MouseEvent');\n    event.initEvent(name, bubbles, cancelable);\n    return event;\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewChild,\n  ChangeDetectionStrategy,\n  TemplateRef,\n  PLATFORM_ID,\n  Inject\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { createMouseEvent } from '../events';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ColorHelper } from '../common/color.helper';\nimport { PlacementTypes } from './tooltip/position';\nimport { StyleTypes } from './tooltip/style.type';\nimport { ViewDimensions } from './types/view-dimension.interface';\nimport { ScaleType } from './types/scale-type.enum';\n\nexport interface Tooltip {\n  color: string;\n  d0: number;\n  d1: number;\n  max: number;\n  min: number;\n  name: any;\n  series: any;\n  value: any;\n}\n\n@Component({\n  selector: 'g[ngx-charts-tooltip-area]',\n  template: `\n    <svg:g>\n      <svg:rect\n        class=\"tooltip-area\"\n        [attr.x]=\"0\"\n        y=\"0\"\n        [attr.width]=\"dims.width\"\n        [attr.height]=\"dims.height\"\n        style=\"opacity: 0; cursor: 'auto';\"\n        (mousemove)=\"mouseMove($event)\"\n        (mouseleave)=\"hideTooltip()\"\n      />\n      <ng-template #defaultTooltipTemplate let-model=\"model\">\n        <xhtml:div class=\"area-tooltip-container\">\n          <xhtml:div *ngFor=\"let tooltipItem of model\" class=\"tooltip-item\">\n            <xhtml:span class=\"tooltip-item-color\" [style.background-color]=\"tooltipItem.color\"></xhtml:span>\n            {{ getToolTipText(tooltipItem) }}\n          </xhtml:div>\n        </xhtml:div>\n      </ng-template>\n      <svg:rect\n        #tooltipAnchor\n        [@animationState]=\"anchorOpacity !== 0 ? 'active' : 'inactive'\"\n        class=\"tooltip-anchor\"\n        [attr.x]=\"anchorPos\"\n        y=\"0\"\n        [attr.width]=\"1\"\n        [attr.height]=\"dims.height\"\n        [style.opacity]=\"anchorOpacity\"\n        [style.pointer-events]=\"'none'\"\n        ngx-tooltip\n        [tooltipDisabled]=\"tooltipDisabled\"\n        [tooltipPlacement]=\"placementTypes.Right\"\n        [tooltipType]=\"styleTypes.tooltip\"\n        [tooltipSpacing]=\"15\"\n        [tooltipTemplate]=\"tooltipTemplate ? tooltipTemplate : defaultTooltipTemplate\"\n        [tooltipContext]=\"anchorValues\"\n        [tooltipImmediateExit]=\"true\"\n      />\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition('inactive => active', [\n        style({\n          opacity: 0\n        }),\n        animate(250, style({ opacity: 0.7 }))\n      ]),\n      transition('active => inactive', [\n        style({\n          opacity: 0.7\n        }),\n        animate(250, style({ opacity: 0 }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class TooltipArea {\n  anchorOpacity: number = 0;\n  anchorPos: number = -1;\n  anchorValues: Tooltip[] = [];\n  lastAnchorPos: number;\n\n  placementTypes = PlacementTypes;\n  styleTypes = StyleTypes;\n\n  @Input() dims: ViewDimensions;\n  @Input() xSet: any[];\n  @Input() xScale;\n  @Input() yScale;\n  @Input() declare results: any[];\n  @Input() colors: ColorHelper;\n  @Input() showPercentage: boolean = false;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipTemplate: TemplateRef<any>;\n\n  @Output() hover: EventEmitter<{ value: any }> = new EventEmitter();\n\n  @ViewChild('tooltipAnchor', { static: false }) tooltipAnchor;\n\n  constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n  getValues(xVal): Tooltip[] {\n    const results = [];\n\n    for (const group of this.results) {\n      const item = group.series.find(d => d.name.toString() === xVal.toString());\n      let groupName = group.name;\n      if (groupName instanceof Date) {\n        groupName = groupName.toLocaleDateString();\n      }\n\n      if (item) {\n        const label = item.name;\n        let val = item.value;\n        if (this.showPercentage) {\n          val = (item.d1 - item.d0).toFixed(2) + '%';\n        }\n        let color;\n        if (this.colors.scaleType === ScaleType.Linear) {\n          let v = val;\n          if (item.d1) {\n            v = item.d1;\n          }\n          color = this.colors.getColor(v);\n        } else {\n          color = this.colors.getColor(group.name);\n        }\n\n        const data = Object.assign({}, item, {\n          value: val,\n          name: label,\n          series: groupName,\n          min: item.min,\n          max: item.max,\n          color\n        });\n\n        results.push(data);\n      }\n    }\n\n    return results;\n  }\n\n  mouseMove(event) {\n    if (!isPlatformBrowser(this.platformId)) {\n      return;\n    }\n\n    const xPos = event.pageX - event.target.getBoundingClientRect().left;\n\n    const closestIndex = this.findClosestPointIndex(xPos);\n    const closestPoint = this.xSet[closestIndex];\n    this.anchorPos = this.xScale(closestPoint);\n    this.anchorPos = Math.max(0, this.anchorPos);\n    this.anchorPos = Math.min(this.dims.width, this.anchorPos);\n\n    this.anchorValues = this.getValues(closestPoint);\n    if (this.anchorPos !== this.lastAnchorPos) {\n      const ev = createMouseEvent('mouseleave');\n      this.tooltipAnchor.nativeElement.dispatchEvent(ev);\n      this.anchorOpacity = 0.7;\n      this.hover.emit({\n        value: closestPoint\n      });\n      this.showTooltip();\n\n      this.lastAnchorPos = this.anchorPos;\n    }\n  }\n\n  findClosestPointIndex(xPos: number): number {\n    let minIndex = 0;\n    let maxIndex = this.xSet.length - 1;\n    let minDiff = Number.MAX_VALUE;\n    let closestIndex = 0;\n\n    while (minIndex <= maxIndex) {\n      const currentIndex = ((minIndex + maxIndex) / 2) | 0;\n      const currentElement = this.xScale(this.xSet[currentIndex]);\n\n      const curDiff = Math.abs(currentElement - xPos);\n\n      if (curDiff < minDiff) {\n        minDiff = curDiff;\n        closestIndex = currentIndex;\n      }\n\n      if (currentElement < xPos) {\n        minIndex = currentIndex + 1;\n      } else if (currentElement > xPos) {\n        maxIndex = currentIndex - 1;\n      } else {\n        minDiff = 0;\n        closestIndex = currentIndex;\n        break;\n      }\n    }\n\n    return closestIndex;\n  }\n\n  showTooltip(): void {\n    const event = createMouseEvent('mouseenter');\n    this.tooltipAnchor.nativeElement.dispatchEvent(event);\n  }\n\n  hideTooltip(): void {\n    const event = createMouseEvent('mouseleave');\n    this.tooltipAnchor.nativeElement.dispatchEvent(event);\n    this.anchorOpacity = 0;\n    this.lastAnchorPos = -1;\n  }\n\n  getToolTipText(tooltipItem: Tooltip): string {\n    let result: string = '';\n    if (tooltipItem.series !== undefined) {\n      result += tooltipItem.series;\n    } else {\n      result += '???';\n    }\n    result += ': ';\n    if (tooltipItem.value !== undefined) {\n      result += tooltipItem.value.toLocaleString();\n    }\n    if (tooltipItem.min !== undefined || tooltipItem.max !== undefined) {\n      result += ' (';\n      if (tooltipItem.min !== undefined) {\n        if (tooltipItem.max === undefined) {\n          result += '≥';\n        }\n        result += tooltipItem.min.toLocaleString();\n        if (tooltipItem.max !== undefined) {\n          result += ' - ';\n        }\n      } else if (tooltipItem.max !== undefined) {\n        result += '≤';\n      }\n      if (tooltipItem.max !== undefined) {\n        result += tooltipItem.max.toLocaleString();\n      }\n      result += ')';\n    }\n    return result;\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ElementRef,\n  OnChanges,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  SimpleChanges,\n  ViewEncapsulation,\n  OnInit\n} from '@angular/core';\nimport { brushX } from 'd3-brush';\nimport { scaleLinear, scaleTime, scalePoint } from 'd3-scale';\nimport { select } from 'd3-selection';\nimport { id } from '../../utils/id';\nimport { ScaleType } from '../types/scale-type.enum';\nimport { ViewDimensions } from '../types/view-dimension.interface';\n\n@Component({\n  selector: 'g[ngx-charts-timeline]',\n  template: `\n    <svg:g class=\"timeline\" [attr.transform]=\"transform\">\n      <svg:filter [attr.id]=\"filterId\">\n        <svg:feColorMatrix\n          in=\"SourceGraphic\"\n          type=\"matrix\"\n          values=\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"\n        />\n      </svg:filter>\n      <svg:g class=\"embedded-chart\">\n        <ng-content></ng-content>\n      </svg:g>\n      <svg:rect x=\"0\" [attr.width]=\"view[0]\" y=\"0\" [attr.height]=\"height\" class=\"brush-background\" />\n      <svg:g class=\"brush\"></svg:g>\n    </svg:g>\n  `,\n  styleUrls: ['./timeline.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class Timeline implements OnChanges {\n  @Input() view: [number, number];\n  @Input() declare results; // type this\n  @Input() scheme; // type this\n  @Input() customColors; // type this\n  @Input() legend: boolean;\n  @Input() autoScale: boolean;\n  @Input() scaleType: ScaleType;\n  @Input() height: number = 50;\n\n  @Output() select = new EventEmitter();\n  @Output() onDomainChange = new EventEmitter();\n\n  element: HTMLElement;\n  dims: ViewDimensions;\n  xDomain: any[];\n  xScale: any;\n  brush: any;\n  transform: string;\n  initialized: boolean = false;\n  filterId: string;\n  filter: string;\n\n  constructor(element: ElementRef, private cd: ChangeDetectorRef) {\n    this.element = element.nativeElement;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n\n    if (!this.initialized) {\n      this.addBrush();\n      this.initialized = true;\n    }\n  }\n\n  update(): void {\n    this.dims = this.getDims();\n    this.height = this.dims.height;\n    const offsetY = this.view[1] - this.height;\n\n    this.xDomain = this.getXDomain();\n    this.xScale = this.getXScale();\n\n    if (this.brush) {\n      this.updateBrush();\n    }\n\n    this.transform = `translate(0 , ${offsetY})`;\n\n    this.filterId = 'filter' + id().toString();\n    this.filter = `url(#${this.filterId})`;\n\n    this.cd.markForCheck();\n  }\n\n  getXDomain(): any[] {\n    let values = [];\n\n    for (const results of this.results) {\n      for (const d of results.series) {\n        if (!values.includes(d.name)) {\n          values.push(d.name);\n        }\n      }\n    }\n\n    let domain = [];\n    if (this.scaleType === ScaleType.Time) {\n      const min = Math.min(...values);\n      const max = Math.max(...values);\n      domain = [min, max];\n    } else if (this.scaleType === ScaleType.Linear) {\n      values = values.map(v => Number(v));\n      const min = Math.min(...values);\n      const max = Math.max(...values);\n      domain = [min, max];\n    } else {\n      domain = values;\n    }\n\n    return domain;\n  }\n\n  getXScale() {\n    let scale;\n\n    if (this.scaleType === ScaleType.Time) {\n      scale = scaleTime().range([0, this.dims.width]).domain(this.xDomain);\n    } else if (this.scaleType === ScaleType.Linear) {\n      scale = scaleLinear().range([0, this.dims.width]).domain(this.xDomain);\n    } else if (this.scaleType === ScaleType.Ordinal) {\n      scale = scalePoint().range([0, this.dims.width]).padding(0.1).domain(this.xDomain);\n    }\n\n    return scale;\n  }\n\n  addBrush(): void {\n    if (this.brush) return;\n\n    const height = this.height;\n    const width = this.view[0];\n\n    this.brush = brushX()\n      .extent([\n        [0, 0],\n        [width, height]\n      ])\n      .on('brush end', ({ selection }) => {\n        const newSelection = selection || this.xScale.range();\n        const newDomain = newSelection.map(this.xScale.invert);\n\n        this.onDomainChange.emit(newDomain);\n        this.cd.markForCheck();\n      });\n\n    select(this.element).select('.brush').call(this.brush);\n  }\n\n  updateBrush(): void {\n    if (!this.brush) return;\n\n    const height = this.height;\n    const width = this.view[0];\n\n    this.brush.extent([\n      [0, 0],\n      [width, height]\n    ]);\n    select(this.element).select('.brush').call(this.brush);\n\n    // clear hardcoded properties so they can be defined by CSS\n    select(this.element)\n      .select('.selection')\n      .attr('fill', undefined)\n      .attr('stroke', undefined)\n      .attr('fill-opacity', undefined);\n\n    this.cd.markForCheck();\n  }\n\n  getDims(): ViewDimensions {\n    const width = this.view[0];\n\n    const dims = {\n      width,\n      height: this.height\n    };\n\n    return dims;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport { trimLabel } from '../trim-label.helper';\nimport { formatLabel } from '../label.helper';\nimport { DataItem, StringOrNumberOrDate } from '../../models/chart-data.model';\nimport { ColorHelper } from '../color.helper';\n\nexport interface AdvancedLegendItem {\n  value: StringOrNumberOrDate;\n  _value: StringOrNumberOrDate;\n  color: string;\n  data: DataItem;\n  label: string;\n  displayLabel: string;\n  originalLabel: string;\n  percentage: string;\n}\n\n@Component({\n  selector: 'ngx-charts-advanced-legend',\n  template: `\n    <div class=\"advanced-pie-legend\" [style.width.px]=\"width\">\n      <div\n        *ngIf=\"animations\"\n        class=\"total-value\"\n        ngx-charts-count-up\n        [countTo]=\"roundedTotal\"\n        [valueFormatting]=\"valueFormatting\"\n      ></div>\n      <div class=\"total-value\" *ngIf=\"!animations\">\n        {{ valueFormatting ? valueFormatting(roundedTotal) : defaultValueFormatting(roundedTotal) }}\n      </div>\n      <div class=\"total-label\">\n        {{ label }}\n      </div>\n      <div class=\"legend-items-container\">\n        <div class=\"legend-items\">\n          <div\n            *ngFor=\"let legendItem of legendItems; trackBy: trackBy\"\n            tabindex=\"-1\"\n            class=\"legend-item\"\n            (mouseenter)=\"activate.emit(legendItem.data)\"\n            (mouseleave)=\"deactivate.emit(legendItem.data)\"\n            (click)=\"select.emit(legendItem.data)\"\n          >\n            <div class=\"item-color\" [style.border-left-color]=\"legendItem.color\"></div>\n            <div\n              *ngIf=\"animations\"\n              class=\"item-value\"\n              ngx-charts-count-up\n              [countTo]=\"legendItem._value\"\n              [valueFormatting]=\"valueFormatting\"\n            ></div>\n            <div *ngIf=\"!animations\" class=\"item-value\">\n              {{ valueFormatting ? valueFormatting(legendItem.value) : defaultValueFormatting(legendItem.value) }}\n            </div>\n            <div class=\"item-label\">{{ legendItem.displayLabel }}</div>\n            <div\n              *ngIf=\"animations\"\n              class=\"item-percent\"\n              ngx-charts-count-up\n              [countTo]=\"legendItem.percentage\"\n              [countSuffix]=\"'%'\"\n            ></div>\n            <div *ngIf=\"!animations\" class=\"item-percent\">{{ legendItem.percentage.toLocaleString() }}%</div>\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n  styleUrls: ['./advanced-legend.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class AdvancedLegendComponent implements OnChanges {\n  @Input() width: number;\n  @Input() data: DataItem[];\n  @Input() colors: ColorHelper;\n  @Input() label: string = 'Total';\n  @Input() animations: boolean = true;\n\n  @Output() select: EventEmitter<DataItem> = new EventEmitter();\n  @Output() activate: EventEmitter<DataItem> = new EventEmitter();\n  @Output() deactivate: EventEmitter<DataItem> = new EventEmitter();\n\n  legendItems: AdvancedLegendItem[] = [];\n  total: number;\n  roundedTotal: number;\n\n  @Input() valueFormatting: (value: StringOrNumberOrDate) => any;\n  @Input() labelFormatting: (value: string) => string = label => label;\n  @Input() percentageFormatting: (value: number) => number = percentage => percentage;\n\n  defaultValueFormatting: (value: StringOrNumberOrDate) => string = value => value.toLocaleString();\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  getTotal(): number {\n    return this.data.map(d => Number(d.value)).reduce((sum, d) => sum + d, 0);\n  }\n\n  update(): void {\n    this.total = this.getTotal();\n    this.roundedTotal = this.total;\n\n    this.legendItems = this.getLegendItems();\n  }\n\n  getLegendItems(): AdvancedLegendItem[] {\n    return (this.data as any).map(d => {\n      const label = formatLabel(d.name);\n      const value = d.value;\n      const color = this.colors.getColor(label);\n      const percentage = this.total > 0 ? (value / this.total) * 100 : 0;\n      const formattedLabel = typeof this.labelFormatting === 'function' ? this.labelFormatting(label) : label;\n\n      return {\n        _value: value,\n        data: d,\n        value,\n        color,\n        label: formattedLabel,\n        displayLabel: trimLabel(formattedLabel, 20),\n        origialLabel: d.name,\n        percentage: this.percentageFormatting ? this.percentageFormatting(percentage) : percentage.toLocaleString()\n      };\n    });\n  }\n\n  trackBy(index: number, item: AdvancedLegendItem) {\n    return item.label;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ChartComponent } from './charts/chart.component';\nimport { BaseChartComponent } from './base-chart.component';\nimport { AxesModule } from './axes/axes.module';\nimport { TooltipModule } from './tooltip/tooltip.module';\nimport { CircleSeriesComponent } from './circle-series.component';\nimport { CircleComponent } from './circle.component';\nimport { GridPanelComponent } from './grid-panel.component';\nimport { GridPanelSeriesComponent } from './grid-panel-series.component';\nimport { SvgLinearGradientComponent } from './svg-linear-gradient.component';\nimport { SvgRadialGradientComponent } from './svg-radial-gradient.component';\nimport { AreaComponent } from './area.component';\nimport { CountUpDirective } from './count/count.directive';\nimport { TooltipArea } from './tooltip-area.component';\nimport { Timeline } from './timeline/timeline.component';\nimport { VisibilityObserver } from '../utils/visibility-observer';\nimport { LegendComponent } from './legend/legend.component';\nimport { LegendEntryComponent } from './legend/legend-entry.component';\nimport { ScaleLegendComponent } from './legend/scale-legend.component';\nimport { AdvancedLegendComponent } from './legend/advanced-legend.component';\n\nconst COMPONENTS = [\n  AreaComponent,\n  BaseChartComponent,\n  CountUpDirective,\n  TooltipArea,\n  ChartComponent,\n  LegendComponent,\n  LegendEntryComponent,\n  ScaleLegendComponent,\n  CircleComponent,\n  CircleSeriesComponent,\n  GridPanelComponent,\n  GridPanelSeriesComponent,\n  SvgLinearGradientComponent,\n  SvgRadialGradientComponent,\n  Timeline,\n  AdvancedLegendComponent\n];\n\n@NgModule({\n  imports: [CommonModule, AxesModule, TooltipModule],\n  declarations: [...COMPONENTS, VisibilityObserver],\n  exports: [CommonModule, AxesModule, TooltipModule, ...COMPONENTS, VisibilityObserver]\n})\nexport class ChartCommonModule {}\n","import { LegendPosition } from './types/legend.model';\nimport { ScaleType } from './types/scale-type.enum';\nimport { ViewDimensions } from './types/view-dimension.interface';\n\nexport function calculateViewDimensions({\n  width,\n  height,\n  margins,\n  showXAxis = false,\n  showYAxis = false,\n  xAxisHeight = 0,\n  yAxisWidth = 0,\n  showXLabel = false,\n  showYLabel = false,\n  showLegend = false,\n  legendType = ScaleType.Ordinal,\n  legendPosition = LegendPosition.Right,\n  columns = 12\n}): ViewDimensions {\n  let xOffset = margins[3];\n  let chartWidth = width;\n  let chartHeight = height - margins[0] - margins[2];\n\n  if (showLegend && legendPosition === LegendPosition.Right) {\n    if (legendType === ScaleType.Ordinal) {\n      columns -= 2;\n    } else {\n      columns -= 1;\n    }\n  }\n\n  chartWidth = (chartWidth * columns) / 12;\n\n  chartWidth = chartWidth - margins[1] - margins[3];\n\n  if (showXAxis) {\n    chartHeight -= 5;\n    chartHeight -= xAxisHeight;\n\n    if (showXLabel) {\n      // text height + spacing between axis label and tick labels\n      const offset = 25 + 5;\n      chartHeight -= offset;\n    }\n  }\n\n  if (showYAxis) {\n    chartWidth -= 5;\n    chartWidth -= yAxisWidth;\n    xOffset += yAxisWidth;\n    xOffset += 10;\n\n    if (showYLabel) {\n      // text height + spacing between axis label and tick labels\n      const offset = 25 + 5;\n      chartWidth -= offset;\n      xOffset += offset;\n    }\n  }\n\n  chartWidth = Math.max(0, chartWidth);\n  chartHeight = Math.max(0, chartHeight);\n\n  return {\n    width: Math.floor(chartWidth),\n    height: Math.floor(chartHeight),\n    xOffset: Math.floor(xOffset)\n  };\n}\n","import { ScaleType } from '../common/types/scale-type.enum';\n\nexport interface Color {\n  name: string;\n  selectable: boolean;\n  group: ScaleType;\n  domain: string[];\n}\n\nexport const colorSets: Color[] = [\n  {\n    name: 'vivid',\n    selectable: true,\n    group: ScaleType.Ordinal,\n    domain: [\n      '#647c8a',\n      '#3f51b5',\n      '#2196f3',\n      '#00b862',\n      '#afdf0a',\n      '#a7b61a',\n      '#f3e562',\n      '#ff9800',\n      '#ff5722',\n      '#ff4514'\n    ]\n  },\n  {\n    name: 'natural',\n    selectable: true,\n    group: ScaleType.Ordinal,\n    domain: [\n      '#bf9d76',\n      '#e99450',\n      '#d89f59',\n      '#f2dfa7',\n      '#a5d7c6',\n      '#7794b1',\n      '#afafaf',\n      '#707160',\n      '#ba9383',\n      '#d9d5c3'\n    ]\n  },\n  {\n    name: 'cool',\n    selectable: true,\n    group: ScaleType.Ordinal,\n    domain: [\n      '#a8385d',\n      '#7aa3e5',\n      '#a27ea8',\n      '#aae3f5',\n      '#adcded',\n      '#a95963',\n      '#8796c0',\n      '#7ed3ed',\n      '#50abcc',\n      '#ad6886'\n    ]\n  },\n  {\n    name: 'fire',\n    selectable: true,\n    group: ScaleType.Ordinal,\n    domain: ['#ff3d00', '#bf360c', '#ff8f00', '#ff6f00', '#ff5722', '#e65100', '#ffca28', '#ffab00']\n  },\n  {\n    name: 'solar',\n    selectable: true,\n    group: ScaleType.Linear,\n    domain: [\n      '#fff8e1',\n      '#ffecb3',\n      '#ffe082',\n      '#ffd54f',\n      '#ffca28',\n      '#ffc107',\n      '#ffb300',\n      '#ffa000',\n      '#ff8f00',\n      '#ff6f00'\n    ]\n  },\n  {\n    name: 'air',\n    selectable: true,\n    group: ScaleType.Linear,\n    domain: [\n      '#e1f5fe',\n      '#b3e5fc',\n      '#81d4fa',\n      '#4fc3f7',\n      '#29b6f6',\n      '#03a9f4',\n      '#039be5',\n      '#0288d1',\n      '#0277bd',\n      '#01579b'\n    ]\n  },\n  {\n    name: 'aqua',\n    selectable: true,\n    group: ScaleType.Linear,\n    domain: [\n      '#e0f7fa',\n      '#b2ebf2',\n      '#80deea',\n      '#4dd0e1',\n      '#26c6da',\n      '#00bcd4',\n      '#00acc1',\n      '#0097a7',\n      '#00838f',\n      '#006064'\n    ]\n  },\n  {\n    name: 'flame',\n    selectable: false,\n    group: ScaleType.Ordinal,\n    domain: [\n      '#A10A28',\n      '#D3342D',\n      '#EF6D49',\n      '#FAAD67',\n      '#FDDE90',\n      '#DBED91',\n      '#A9D770',\n      '#6CBA67',\n      '#2C9653',\n      '#146738'\n    ]\n  },\n  {\n    name: 'ocean',\n    selectable: false,\n    group: ScaleType.Ordinal,\n    domain: [\n      '#1D68FB',\n      '#33C0FC',\n      '#4AFFFE',\n      '#AFFFFF',\n      '#FFFC63',\n      '#FDBD2D',\n      '#FC8A25',\n      '#FA4F1E',\n      '#FA141B',\n      '#BA38D1'\n    ]\n  },\n  {\n    name: 'forest',\n    selectable: false,\n    group: ScaleType.Ordinal,\n    domain: [\n      '#55C22D',\n      '#C1F33D',\n      '#3CC099',\n      '#AFFFFF',\n      '#8CFC9D',\n      '#76CFFA',\n      '#BA60FB',\n      '#EE6490',\n      '#C42A1C',\n      '#FC9F32'\n    ]\n  },\n  {\n    name: 'horizon',\n    selectable: false,\n    group: ScaleType.Ordinal,\n    domain: [\n      '#2597FB',\n      '#65EBFD',\n      '#99FDD0',\n      '#FCEE4B',\n      '#FEFCFA',\n      '#FDD6E3',\n      '#FCB1A8',\n      '#EF6F7B',\n      '#CB96E8',\n      '#EFDEE0'\n    ]\n  },\n  {\n    name: 'neons',\n    selectable: false,\n    group: ScaleType.Ordinal,\n    domain: [\n      '#FF3333',\n      '#FF33FF',\n      '#CC33FF',\n      '#0000FF',\n      '#33CCFF',\n      '#33FFFF',\n      '#33FF66',\n      '#CCFF33',\n      '#FFCC00',\n      '#FF6600'\n    ]\n  },\n  {\n    name: 'picnic',\n    selectable: false,\n    group: ScaleType.Ordinal,\n    domain: [\n      '#FAC51D',\n      '#66BD6D',\n      '#FAA026',\n      '#29BB9C',\n      '#E96B56',\n      '#55ACD2',\n      '#B7332F',\n      '#2C83C9',\n      '#9166B8',\n      '#92E7E8'\n    ]\n  },\n  {\n    name: 'night',\n    selectable: false,\n    group: ScaleType.Ordinal,\n    domain: [\n      '#2B1B5A',\n      '#501356',\n      '#183356',\n      '#28203F',\n      '#391B3C',\n      '#1E2B3C',\n      '#120634',\n      '#2D0432',\n      '#051932',\n      '#453080',\n      '#75267D',\n      '#2C507D',\n      '#4B3880',\n      '#752F7D',\n      '#35547D'\n    ]\n  },\n  {\n    name: 'nightLights',\n    selectable: false,\n    group: ScaleType.Ordinal,\n    domain: [\n      '#4e31a5',\n      '#9c25a7',\n      '#3065ab',\n      '#57468b',\n      '#904497',\n      '#46648b',\n      '#32118d',\n      '#a00fb3',\n      '#1052a2',\n      '#6e51bd',\n      '#b63cc3',\n      '#6c97cb',\n      '#8671c1',\n      '#b455be',\n      '#7496c3'\n    ]\n  }\n];\n","import { range } from 'd3-array';\nimport {\n  scaleBand,\n  ScaleLinear,\n  scaleLinear,\n  ScaleOrdinal,\n  scaleOrdinal,\n  ScaleQuantile,\n  scaleQuantile\n} from 'd3-scale';\n\nimport { Color, colorSets } from '../utils/color-sets';\nimport { StringOrNumberOrDate } from '../models/chart-data.model';\nimport { ScaleType } from './types/scale-type.enum';\nimport { Gradient } from './types/gradient.interface';\n\nexport class ColorHelper {\n  scale: any;\n  scaleType: ScaleType;\n  colorDomain: string[];\n  domain: number[] | string[];\n  customColors: any;\n\n  constructor(scheme: string | Color, type: ScaleType, domain: number[] | string[], customColors?) {\n    if (typeof scheme === 'string') {\n      scheme = colorSets.find(cs => {\n        return cs.name === scheme;\n      });\n    }\n    this.colorDomain = scheme.domain;\n    this.scaleType = type;\n    this.domain = domain;\n    this.customColors = customColors;\n\n    this.scale = this.generateColorScheme(scheme, type, this.domain);\n  }\n\n  generateColorScheme(scheme: string | Color, type: ScaleType, domain: number[] | string[]): any {\n    if (typeof scheme === 'string') {\n      scheme = colorSets.find(cs => {\n        return cs.name === scheme;\n      });\n    }\n\n    let colorScale: ScaleQuantile<number> | ScaleOrdinal<string, unknown> | ScaleLinear<number, number>;\n    switch (type) {\n      case ScaleType.Quantile:\n        colorScale = scaleQuantile()\n          .range(scheme.domain as any)\n          .domain(domain as number[]);\n        break;\n      case ScaleType.Ordinal:\n        colorScale = scaleOrdinal()\n          .range(scheme.domain)\n          .domain(domain as string[]);\n        break;\n      case ScaleType.Linear:\n        {\n          const colorDomain = [...scheme.domain];\n          if (colorDomain.length === 1) {\n            colorDomain.push(colorDomain[0]);\n            this.colorDomain = colorDomain;\n          }\n\n          const points = range(0, 1, 1.0 / colorDomain.length);\n          colorScale = scaleLinear()\n            .range(colorDomain as any)\n            .domain(points);\n        }\n        break;\n      default:\n        break;\n    }\n\n    return colorScale;\n  }\n\n  getColor(value: StringOrNumberOrDate): string {\n    if (value === undefined || value === null) {\n      throw new Error('Value can not be null');\n    }\n    if (this.scaleType === ScaleType.Linear) {\n      const valueScale = scaleLinear()\n        .domain(this.domain as number[])\n        .range([0, 1]);\n\n      return this.scale(valueScale(value as number));\n    } else {\n      if (typeof this.customColors === 'function') {\n        return this.customColors(value);\n      }\n\n      const formattedValue = value.toString();\n      let found: any; // todo type customColors\n      if (this.customColors && this.customColors.length > 0) {\n        found = this.customColors.find(mapping => {\n          return mapping.name.toLowerCase() === formattedValue.toLowerCase();\n        });\n      }\n\n      if (found) {\n        return found.value;\n      } else {\n        return this.scale(value);\n      }\n    }\n  }\n\n  getLinearGradientStops(value: number | string, start?: number | string): Gradient[] {\n    if (start === undefined) {\n      start = this.domain[0];\n    }\n    const valueScale = scaleLinear()\n      .domain(this.domain as number[])\n      .range([0, 1]);\n\n    const colorValueScale = scaleBand().domain(this.colorDomain).range([0, 1]);\n\n    const endColor = this.getColor(value);\n\n    // generate the stops\n    const startVal = valueScale(start as number);\n    const startColor = this.getColor(start);\n\n    const endVal = valueScale(value as number);\n    let i = 1;\n    let currentVal = startVal;\n    const stops: Gradient[] = [];\n\n    stops.push({\n      color: startColor,\n      offset: startVal,\n      originalOffset: startVal,\n      opacity: 1\n    });\n\n    while (currentVal < endVal && i < this.colorDomain.length) {\n      const color = this.colorDomain[i];\n      const offset = colorValueScale(color);\n      if (offset <= startVal) {\n        i++;\n        continue;\n      }\n\n      if (offset.toFixed(4) >= (endVal - colorValueScale.bandwidth()).toFixed(4)) {\n        break;\n      }\n\n      stops.push({\n        color,\n        offset,\n        opacity: 1\n      });\n      currentVal = offset;\n      i++;\n    }\n\n    if (stops[stops.length - 1].offset < 100) {\n      stops.push({\n        color: endColor,\n        offset: endVal,\n        opacity: 1\n      });\n    }\n\n    if (endVal === startVal) {\n      stops[0].offset = 0;\n      stops[1].offset = 100;\n    } else {\n      // normalize the offsets into percentages\n      if (stops[stops.length - 1].offset !== 100) {\n        for (const s of stops) {\n          s.offset = ((s.offset - startVal) / (endVal - startVal)) * 100;\n        }\n      }\n    }\n\n    return stops;\n  }\n}\n","import { ScaleType } from './types/scale-type.enum';\nimport { StringOrNumberOrDate } from '../models/chart-data.model';\n/**\n * Based on the data, return an array with unique values.\n *\n * @export\n * @returns array\n */\nexport function getUniqueXDomainValues(results: any[]): any[] {\n  const valueSet = new Set();\n  for (const result of results) {\n    for (const d of result.series) {\n      valueSet.add(d.name);\n    }\n  }\n  return Array.from(valueSet);\n}\n\n/**\n * Get the scaleType of enumerable of values.\n * @returns  'time', 'linear' or 'ordinal'\n */\nexport function getScaleType(values: any[], checkDateType: boolean = true): ScaleType {\n  if (checkDateType) {\n    const allDates = values.every(value => value instanceof Date);\n    if (allDates) {\n      return ScaleType.Time;\n    }\n  }\n\n  const allNumbers = values.every(value => typeof value === 'number');\n  if (allNumbers) {\n    return ScaleType.Linear;\n  }\n\n  return ScaleType.Ordinal;\n}\n\nexport function getXDomainArray(\n  values: Array<string | number | Date>,\n  xScaleMin?: number,\n  xScaleMax?: number\n): { domain: any[]; xSet: any[]; scaleType: string } {\n  const scaleType = getScaleType(values);\n  let xSet: StringOrNumberOrDate[] = [];\n  let domain: StringOrNumberOrDate[] = [];\n\n  if (scaleType === ScaleType.Linear) {\n    values = values.map(v => Number(v));\n  }\n\n  let min: number;\n  let max: number;\n  if (scaleType === ScaleType.Time || scaleType === ScaleType.Linear) {\n    const mappedValues = values.map(v => Number(v));\n    min = xScaleMin ? xScaleMin : Math.min(...mappedValues);\n    max = xScaleMax ? xScaleMax : Math.max(...mappedValues);\n  }\n\n  if (scaleType === ScaleType.Time) {\n    domain = [new Date(min), new Date(max)];\n    xSet = [...values].sort((a: Date, b: Date) => {\n      const aDate = a.getTime();\n      const bDate = b.getTime();\n      if (aDate > bDate) return 1;\n      if (bDate > aDate) return -1;\n      return 0;\n    });\n  } else if (scaleType === ScaleType.Linear) {\n    domain = [min, max];\n    // Use compare function to sort numbers numerically\n    xSet = [...values].sort((a: number, b: number) => a - b);\n  } else {\n    domain = values;\n    xSet = values;\n  }\n\n  return { domain, xSet, scaleType };\n}\n","export function sortLinear(data, property: string, direction = 'asc'): any[] {\n  return data.sort((a, b) => {\n    if (direction === 'asc') {\n      return a[property] - b[property];\n    } else {\n      return b[property] - a[property];\n    }\n  });\n}\n\nexport function sortByDomain(data, property: string, direction = 'asc', domain): any[] {\n  return data.sort((a, b) => {\n    const aVal = a[property];\n    const bVal = b[property];\n\n    const aIdx = domain.indexOf(aVal);\n    const bIdx = domain.indexOf(bVal);\n\n    if (direction === 'asc') {\n      return aIdx - bIdx;\n    } else {\n      return bIdx - aIdx;\n    }\n  });\n}\n\nexport function sortByTime(data, property: string, direction = 'asc'): any[] {\n  return data.sort((a, b) => {\n    const aDate = a[property].getTime();\n    const bDate = b[property].getTime();\n\n    if (direction === 'asc') {\n      if (aDate > bDate) return 1;\n      if (bDate > aDate) return -1;\n      return 0;\n    } else {\n      if (aDate > bDate) return -1;\n      if (bDate > aDate) return 1;\n      return 0;\n    }\n  });\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  SimpleChanges,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { area } from 'd3-shape';\nimport { ColorHelper } from '../common/color.helper';\nimport { Gradient } from '../common/types/gradient.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { AreaChartSeries } from '../models/chart-data.model';\nimport { sortLinear, sortByTime, sortByDomain } from '../utils/sort';\n\n@Component({\n  selector: 'g[ngx-charts-area-series]',\n  template: `\n    <svg:g\n      ngx-charts-area\n      class=\"area-series\"\n      [data]=\"data\"\n      [path]=\"path\"\n      [fill]=\"colors.getColor(data.name)\"\n      [stops]=\"gradientStops\"\n      [startingPath]=\"startingPath\"\n      [opacity]=\"opacity\"\n      [gradient]=\"gradient || hasGradient\"\n      [animations]=\"animations\"\n      [class.active]=\"isActive(data)\"\n      [class.inactive]=\"isInactive(data)\"\n    />\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class AreaSeriesComponent implements OnChanges {\n  @Input() data: AreaChartSeries;\n  @Input() xScale: any;\n  @Input() yScale: any;\n  @Input() baseValue: any = 'auto';\n  @Input() colors: ColorHelper;\n  @Input() scaleType: ScaleType;\n  @Input() stacked: boolean = false;\n  @Input() normalized: boolean = false;\n  @Input() gradient: boolean;\n  @Input() curve: any;\n  @Input() activeEntries: any[];\n  @Input() animations: boolean = true;\n\n  @Output() select = new EventEmitter();\n\n  opacity: number;\n  path: string;\n  startingPath: string;\n\n  hasGradient: boolean;\n  gradientStops: Gradient[];\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    this.updateGradient();\n\n    let currentArea;\n    let startingArea;\n\n    const xProperty = d => {\n      const label = d.name;\n      return this.xScale(label);\n    };\n\n    if (this.stacked || this.normalized) {\n      currentArea = area<any>()\n        .x(xProperty)\n        .y0((d, i) => this.yScale(d.d0))\n        .y1((d, i) => this.yScale(d.d1));\n\n      startingArea = area<any>()\n        .x(xProperty)\n        .y0(d => this.yScale.range()[0])\n        .y1(d => this.yScale.range()[0]);\n    } else {\n      currentArea = area<any>()\n        .x(xProperty)\n        .y0(() => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n        .y1(d => this.yScale(d.value));\n\n      startingArea = area<any>()\n        .x(xProperty)\n        .y0(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n        .y1(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)));\n    }\n\n    currentArea.curve(this.curve);\n    startingArea.curve(this.curve);\n\n    this.opacity = 0.8;\n\n    let data = this.data.series;\n    if (this.scaleType === ScaleType.Linear) {\n      data = sortLinear(data, 'name');\n    } else if (this.scaleType === ScaleType.Time) {\n      data = sortByTime(data, 'name');\n    } else {\n      data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n    }\n\n    this.path = currentArea(data);\n    this.startingPath = startingArea(data);\n  }\n\n  updateGradient() {\n    if (this.colors.scaleType === ScaleType.Linear) {\n      this.hasGradient = true;\n      if (this.stacked || this.normalized) {\n        const d0values = this.data.series.map(d => d.d0);\n        const d1values = this.data.series.map(d => d.d1);\n        const max = Math.max(...d1values);\n        const min = Math.min(...d0values);\n        this.gradientStops = this.colors.getLinearGradientStops(max, min);\n      } else {\n        const values = this.data.series.map(d => d.value);\n        const max = Math.max(...values);\n        this.gradientStops = this.colors.getLinearGradientStops(max);\n      }\n    } else {\n      this.hasGradient = false;\n      this.gradientStops = undefined;\n    }\n  }\n\n  isActive(entry): boolean {\n    if (!this.activeEntries) return false;\n    const item = this.activeEntries.find(d => {\n      return entry.name === d.name;\n    });\n    return item !== undefined;\n  }\n\n  isInactive(entry): boolean {\n    if (!this.activeEntries || this.activeEntries.length === 0) return false;\n    const item = this.activeEntries.find(d => {\n      return entry.name === d.name;\n    });\n    return item === undefined;\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  HostListener,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  TrackByFunction\n} from '@angular/core';\nimport { scaleLinear, scalePoint, scaleTime } from 'd3-scale';\nimport { CurveFactory, curveLinear } from 'd3-shape';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { id } from '../utils/id';\nimport { getUniqueXDomainValues, getScaleType } from '../common/domain.helper';\nimport { isDate, isNumber } from '../utils/types';\nimport { Series } from '../models/chart-data.model';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { select } from 'd3-selection';\n\n@Component({\n  selector: 'ngx-charts-area-chart',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:defs>\n        <svg:clipPath [attr.id]=\"clipPathId\">\n          <svg:rect\n            [attr.width]=\"dims.width + 10\"\n            [attr.height]=\"dims.height + 10\"\n            [attr.transform]=\"'translate(-5, -5)'\"\n          />\n        </svg:clipPath>\n      </svg:defs>\n      <svg:g [attr.transform]=\"transform\" class=\"area-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [referenceLines]=\"referenceLines\"\n          [showRefLines]=\"showRefLines\"\n          [showRefLabels]=\"showRefLabels\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g [attr.clip-path]=\"clipPath\">\n          <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n            <svg:g\n              ngx-charts-area-series\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [baseValue]=\"baseValue\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [activeEntries]=\"activeEntries\"\n              [scaleType]=\"scaleType\"\n              [gradient]=\"gradient\"\n              [curve]=\"curve\"\n              [animations]=\"animations\"\n            />\n          </svg:g>\n\n          <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n            <svg:g\n              ngx-charts-tooltip-area\n              [dims]=\"dims\"\n              [xSet]=\"xSet\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [results]=\"results\"\n              [colors]=\"colors\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"seriesTooltipTemplate\"\n              (hover)=\"updateHoveredVertical($event)\"\n            />\n\n            <svg:g *ngFor=\"let series of results\">\n              <svg:g\n                ngx-charts-circle-series\n                [xScale]=\"xScale\"\n                [yScale]=\"yScale\"\n                [colors]=\"colors\"\n                [activeEntries]=\"activeEntries\"\n                [data]=\"series\"\n                [scaleType]=\"scaleType\"\n                [visibleValue]=\"hoveredVertical\"\n                [tooltipDisabled]=\"tooltipDisabled\"\n                [tooltipTemplate]=\"tooltipTemplate\"\n                (select)=\"onClick($event, series)\"\n                (activate)=\"onActivate($event)\"\n                (deactivate)=\"onDeactivate($event)\"\n              />\n            </svg:g>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n      <svg:g\n        ngx-charts-timeline\n        *ngIf=\"timeline && scaleType != 'ordinal'\"\n        [attr.transform]=\"timelineTransform\"\n        [results]=\"results\"\n        [view]=\"[timelineWidth, height]\"\n        [height]=\"timelineHeight\"\n        [scheme]=\"scheme\"\n        [customColors]=\"customColors\"\n        [legend]=\"legend\"\n        [scaleType]=\"scaleType\"\n        (onDomainChange)=\"updateDomain($event)\"\n      >\n        <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n          <svg:g\n            ngx-charts-area-series\n            [xScale]=\"timelineXScale\"\n            [yScale]=\"timelineYScale\"\n            [baseValue]=\"baseValue\"\n            [colors]=\"colors\"\n            [data]=\"series\"\n            [scaleType]=\"scaleType\"\n            [gradient]=\"gradient\"\n            [curve]=\"curve\"\n            [animations]=\"animations\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false\n})\nexport class AreaChartComponent extends BaseChartComponent {\n  @Input() legend: boolean = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis: boolean = false;\n  @Input() yAxis: boolean = false;\n  @Input() baseValue: any = 'auto';\n  @Input() autoScale: boolean = false;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() timeline: boolean = false;\n  @Input() gradient: boolean;\n  @Input() showGridLines: boolean = true;\n  @Input() curve: CurveFactory = curveLinear;\n  @Input() activeEntries: any[] = [];\n  @Input() declare schemeType: ScaleType;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() roundDomains: boolean = false;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() referenceLines: any[];\n  @Input() showRefLines: boolean = false;\n  @Input() showRefLabels: boolean = false;\n  @Input() xScaleMin: any;\n  @Input() xScaleMax: any;\n  @Input() yScaleMin: number;\n  @Input() yScaleMax: number;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n  @ContentChild('seriesTooltipTemplate') seriesTooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  xSet: any;\n  xDomain: any[];\n  yDomain: [number, number];\n  seriesDomain: string[];\n  xScale: any;\n  yScale: any;\n  transform: string;\n  colors: ColorHelper;\n  clipPathId: string;\n  clipPath: string;\n  scaleType: ScaleType;\n  series: Series;\n  margin: number[] = [10, 20, 10, 20];\n  hoveredVertical: any; // the value of the x axis that is hovered over\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  filteredDomain: any;\n  legendOptions: LegendOptions;\n\n  timelineWidth: number;\n  timelineHeight: number = 50;\n  timelineXScale: any;\n  timelineYScale: any;\n  timelineXDomain: any[];\n  timelineTransform: any;\n  timelinePadding: number = 10;\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    if (this.timeline) {\n      this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n    }\n\n    this.xDomain = this.getXDomain();\n    if (this.filteredDomain) {\n      this.xDomain = this.filteredDomain;\n    }\n\n    this.yDomain = this.getYDomain();\n    this.seriesDomain = this.getSeriesDomain();\n\n    this.xScale = this.getXScale(this.xDomain, this.dims.width);\n    this.yScale = this.getYScale(this.yDomain, this.dims.height);\n\n    this.updateTimeline();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n\n    this.clipPathId = 'clip' + id().toString();\n    this.clipPath = `url(#${this.clipPathId})`;\n\n    const parent = select(this.chartElement.nativeElement).select('.area-chart').node() as HTMLElement;\n    const refLines = select(this.chartElement.nativeElement).selectAll('.ref-line').nodes() as HTMLElement[];\n    refLines.forEach(line => parent.appendChild(line));\n  }\n\n  updateTimeline(): void {\n    if (this.timeline) {\n      this.timelineWidth = this.dims.width;\n      this.timelineXDomain = this.getXDomain();\n      this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n      this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n      this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n    }\n  }\n\n  getXDomain(): any[] {\n    let values = getUniqueXDomainValues(this.results);\n\n    this.scaleType = getScaleType(values);\n    let domain = [];\n\n    if (this.scaleType === ScaleType.Linear) {\n      values = values.map(v => Number(v));\n    }\n\n    let min;\n    let max;\n    if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n      min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n\n      max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n    }\n\n    if (this.scaleType === ScaleType.Time) {\n      domain = [new Date(min), new Date(max)];\n      this.xSet = [...values].sort((a, b) => {\n        const aDate = a.getTime();\n        const bDate = b.getTime();\n        if (aDate > bDate) return 1;\n        if (bDate > aDate) return -1;\n        return 0;\n      });\n    } else if (this.scaleType === ScaleType.Linear) {\n      domain = [min, max];\n      // Use compare function to sort numbers numerically\n      this.xSet = [...values].sort((a, b) => a - b);\n    } else {\n      domain = values;\n      this.xSet = values;\n    }\n\n    return domain;\n  }\n\n  getYDomain(): [number, number] {\n    const domain = [];\n\n    for (const results of this.results) {\n      for (const d of results.series) {\n        if (!domain.includes(d.value)) {\n          domain.push(d.value);\n        }\n      }\n    }\n\n    const values = [...domain];\n    if (!this.autoScale) {\n      values.push(0);\n    }\n    if (this.baseValue !== 'auto') {\n      values.push(this.baseValue);\n    }\n\n    const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n\n    const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n\n    return [min, max];\n  }\n\n  getSeriesDomain(): string[] {\n    return this.results.map(d => d.name);\n  }\n\n  getXScale(domain, width: number): number {\n    let scale;\n\n    if (this.scaleType === ScaleType.Time) {\n      scale = scaleTime();\n    } else if (this.scaleType === ScaleType.Linear) {\n      scale = scaleLinear();\n    } else if (this.scaleType === ScaleType.Ordinal) {\n      scale = scalePoint().padding(0.1);\n    }\n\n    scale.range([0, width]).domain(domain);\n\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  getYScale(domain: [number, number], height: number): any {\n    const scale = scaleLinear().range([height, 0]).domain(domain);\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  getScaleType(values): ScaleType {\n    let date = true;\n    let num = true;\n    for (const value of values) {\n      if (isDate(value)) {\n        date = false;\n      }\n      if (isNumber(value)) {\n        num = false;\n      }\n    }\n\n    if (date) {\n      return ScaleType.Time;\n    }\n\n    if (num) {\n      return ScaleType.Linear;\n    }\n\n    return ScaleType.Ordinal;\n  }\n\n  updateDomain(domain): void {\n    this.filteredDomain = domain;\n    this.xDomain = this.filteredDomain;\n    this.xScale = this.getXScale(this.xDomain, this.dims.width);\n  }\n\n  updateHoveredVertical(item): void {\n    this.hoveredVertical = item.value;\n    this.deactivateAll();\n  }\n\n  @HostListener('mouseleave')\n  hideCircles(): void {\n    this.hoveredVertical = null;\n    this.deactivateAll();\n  }\n\n  onClick(data, series?: Series): void {\n    if (series) {\n      data.series = series.name;\n    }\n\n    this.select.emit(data);\n  }\n\n  trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n    return item.name;\n  };\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.seriesDomain;\n    } else {\n      domain = this.yDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts: LegendOptions = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.seriesDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.yDomain;\n      opts.colors = this.colors.scale;\n    }\n    return opts;\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onActivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n    if (idx > -1) {\n      return;\n    }\n\n    this.activeEntries = [item, ...this.activeEntries];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  deactivateAll(): void {\n    this.activeEntries = [...this.activeEntries];\n    for (const entry of this.activeEntries) {\n      this.deactivate.emit({ value: entry, entries: [] });\n    }\n    this.activeEntries = [];\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  HostListener,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  TrackByFunction\n} from '@angular/core';\nimport { scaleLinear, scalePoint, scaleTime } from 'd3-scale';\nimport { curveLinear } from 'd3-shape';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { id } from '../utils/id';\nimport { getUniqueXDomainValues, getScaleType } from '../common/domain.helper';\nimport { Series } from '../models/chart-data.model';\nimport { SeriesType } from '../common/circle-series.component';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n  selector: 'ngx-charts-area-chart-normalized',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:defs>\n        <svg:clipPath [attr.id]=\"clipPathId\">\n          <svg:rect\n            [attr.width]=\"dims.width + 10\"\n            [attr.height]=\"dims.height + 10\"\n            [attr.transform]=\"'translate(-5, -5)'\"\n          />\n        </svg:clipPath>\n      </svg:defs>\n      <svg:g [attr.transform]=\"transform\" class=\"area-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g [attr.clip-path]=\"clipPath\">\n          <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n            <svg:g\n              ngx-charts-area-series\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [scaleType]=\"scaleType\"\n              [activeEntries]=\"activeEntries\"\n              [gradient]=\"gradient\"\n              [normalized]=\"true\"\n              [curve]=\"curve\"\n              [animations]=\"animations\"\n            />\n          </svg:g>\n\n          <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n            <svg:g\n              ngx-charts-tooltip-area\n              [dims]=\"dims\"\n              [xSet]=\"xSet\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [results]=\"results\"\n              [colors]=\"colors\"\n              [showPercentage]=\"true\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"seriesTooltipTemplate\"\n              (hover)=\"updateHoveredVertical($event)\"\n            />\n\n            <svg:g *ngFor=\"let series of results\">\n              <svg:g\n                ngx-charts-circle-series\n                [type]=\"seriesType.Stacked\"\n                [xScale]=\"xScale\"\n                [yScale]=\"yScale\"\n                [colors]=\"colors\"\n                [activeEntries]=\"activeEntries\"\n                [data]=\"series\"\n                [scaleType]=\"scaleType\"\n                [visibleValue]=\"hoveredVertical\"\n                [tooltipDisabled]=\"tooltipDisabled\"\n                [tooltipTemplate]=\"tooltipTemplate\"\n                (select)=\"onClick($event, series)\"\n                (activate)=\"onActivate($event)\"\n                (deactivate)=\"onDeactivate($event)\"\n              />\n            </svg:g>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n      <svg:g\n        ngx-charts-timeline\n        *ngIf=\"timeline && scaleType != 'ordinal'\"\n        [attr.transform]=\"timelineTransform\"\n        [results]=\"results\"\n        [view]=\"[timelineWidth, height]\"\n        [height]=\"timelineHeight\"\n        [scheme]=\"scheme\"\n        [customColors]=\"customColors\"\n        [legend]=\"legend\"\n        [scaleType]=\"scaleType\"\n        (onDomainChange)=\"updateDomain($event)\"\n      >\n        <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n          <svg:g\n            ngx-charts-area-series\n            [xScale]=\"timelineXScale\"\n            [yScale]=\"timelineYScale\"\n            [colors]=\"colors\"\n            [data]=\"series\"\n            [scaleType]=\"scaleType\"\n            [gradient]=\"gradient\"\n            [normalized]=\"true\"\n            [curve]=\"curve\"\n            [animations]=\"animations\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false\n})\nexport class AreaChartNormalizedComponent extends BaseChartComponent {\n  @Input() legend = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis: boolean;\n  @Input() yAxis: boolean;\n  @Input() showXAxisLabel: boolean = false;\n  @Input() showYAxisLabel: boolean = false;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() timeline;\n  @Input() gradient;\n  @Input() showGridLines: boolean = true;\n  @Input() curve: any = curveLinear;\n  @Input() activeEntries: any[] = [];\n  @Input() declare schemeType: ScaleType;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() roundDomains: boolean = false;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n  @ContentChild('seriesTooltipTemplate') seriesTooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  scaleType: ScaleType;\n  xDomain: any[];\n  xSet: any[]; // the set of all values on the X Axis\n  yDomain: [number, number] = [0, 100];\n  seriesDomain: any;\n  xScale: any;\n  yScale: any;\n  transform: string;\n  clipPathId: string;\n  clipPath: string;\n  colors: ColorHelper;\n  margin: number[] = [10, 20, 10, 20];\n  tooltipAreas: any[];\n  hoveredVertical: any; // the value of the x axis that is hovered over\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  filteredDomain: any;\n  legendOptions: LegendOptions;\n\n  seriesType = SeriesType;\n\n  timelineWidth: any;\n  timelineHeight: number = 50;\n  timelineXScale: any;\n  timelineYScale: any;\n  timelineXDomain: any;\n  timelineTransform: any;\n  timelinePadding: number = 10;\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    if (this.timeline) {\n      this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n    }\n\n    this.xDomain = this.getXDomain();\n    if (this.filteredDomain) {\n      this.xDomain = this.filteredDomain;\n    }\n\n    this.seriesDomain = this.getSeriesDomain();\n\n    this.xScale = this.getXScale(this.xDomain, this.dims.width);\n    this.yScale = this.getYScale(this.yDomain, this.dims.height);\n\n    for (let i = 0; i < this.xSet.length; i++) {\n      const val = this.xSet[i];\n      let d0 = 0;\n\n      let total = 0;\n      for (const group of this.results) {\n        const d = group.series.find(item => {\n          let a = item.name;\n          let b = val;\n          if (this.scaleType === ScaleType.Time) {\n            a = a.valueOf();\n            b = b.valueOf();\n          }\n          return a === b;\n        });\n        if (d) {\n          total += d.value;\n        }\n      }\n\n      for (const group of this.results) {\n        let d = group.series.find(item => {\n          let a = item.name;\n          let b = val;\n          if (this.scaleType === ScaleType.Time) {\n            a = a.valueOf();\n            b = b.valueOf();\n          }\n          return a === b;\n        });\n\n        if (d) {\n          d.d0 = d0;\n          d.d1 = d0 + d.value;\n          d0 += d.value;\n        } else {\n          d = {\n            name: val,\n            value: 0,\n            d0,\n            d1: d0\n          };\n          group.series.push(d);\n        }\n\n        if (total > 0) {\n          d.d0 = (d.d0 * 100) / total;\n          d.d1 = (d.d1 * 100) / total;\n        } else {\n          d.d0 = 0;\n          d.d1 = 0;\n        }\n      }\n    }\n\n    this.updateTimeline();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n\n    this.clipPathId = 'clip' + id().toString();\n    this.clipPath = `url(#${this.clipPathId})`;\n  }\n\n  updateTimeline(): void {\n    if (this.timeline) {\n      this.timelineWidth = this.dims.width;\n      this.timelineXDomain = this.getXDomain();\n      this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n      this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n      this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n    }\n  }\n\n  getXDomain(): any[] {\n    let values = getUniqueXDomainValues(this.results);\n\n    this.scaleType = getScaleType(values);\n    let domain = [];\n\n    if (this.scaleType === ScaleType.Time) {\n      const min = Math.min(...values);\n      const max = Math.max(...values);\n      domain = [new Date(min), new Date(max)];\n      this.xSet = [...values].sort((a, b) => {\n        const aDate = a.getTime();\n        const bDate = b.getTime();\n        if (aDate > bDate) return 1;\n        if (bDate > aDate) return -1;\n        return 0;\n      });\n    } else if (this.scaleType === ScaleType.Linear) {\n      values = values.map(v => Number(v));\n      const min = Math.min(...values);\n      const max = Math.max(...values);\n      domain = [min, max];\n      // Use compare function to sort numbers numerically\n      this.xSet = [...values].sort((a, b) => a - b);\n    } else {\n      domain = values;\n      this.xSet = values;\n    }\n\n    return domain;\n  }\n\n  getSeriesDomain(): string[] {\n    return this.results.map(d => d.name);\n  }\n\n  getXScale(domain, width: number): any {\n    let scale;\n\n    if (this.scaleType === ScaleType.Time) {\n      scale = scaleTime();\n    } else if (this.scaleType === ScaleType.Linear) {\n      scale = scaleLinear();\n    } else if (this.scaleType === ScaleType.Ordinal) {\n      scale = scalePoint().padding(0.1);\n    }\n\n    scale.range([0, width]).domain(domain);\n\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  getYScale(domain, height: number): any {\n    const scale = scaleLinear().range([height, 0]).domain(domain);\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  updateDomain(domain): void {\n    this.filteredDomain = domain;\n    this.xDomain = this.filteredDomain;\n    this.xScale = this.getXScale(this.xDomain, this.dims.width);\n  }\n\n  updateHoveredVertical(item): void {\n    this.hoveredVertical = item.value;\n    this.deactivateAll();\n  }\n\n  @HostListener('mouseleave')\n  hideCircles(): void {\n    this.hoveredVertical = null;\n    this.deactivateAll();\n  }\n\n  onClick(data, series?): void {\n    if (series) {\n      data.series = series.name;\n    }\n\n    this.select.emit(data);\n  }\n\n  trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n    return item.name;\n  };\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.seriesDomain;\n    } else {\n      domain = this.yDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts: LegendOptions = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.seriesDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.yDomain;\n      opts.colors = this.colors.scale;\n    }\n    return opts;\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onActivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n    if (idx > -1) {\n      return;\n    }\n\n    this.activeEntries = [item, ...this.activeEntries];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  deactivateAll(): void {\n    this.activeEntries = [...this.activeEntries];\n    for (const entry of this.activeEntries) {\n      this.deactivate.emit({ value: entry, entries: [] });\n    }\n    this.activeEntries = [];\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  HostListener,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef\n} from '@angular/core';\nimport { scaleLinear, scalePoint, scaleTime } from 'd3-scale';\nimport { curveLinear } from 'd3-shape';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { id } from '../utils/id';\nimport { getUniqueXDomainValues, getScaleType } from '../common/domain.helper';\nimport { SeriesType } from '../common/circle-series.component';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n  selector: 'ngx-charts-area-chart-stacked',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:defs>\n        <svg:clipPath [attr.id]=\"clipPathId\">\n          <svg:rect\n            [attr.width]=\"dims.width + 10\"\n            [attr.height]=\"dims.height + 10\"\n            [attr.transform]=\"'translate(-5, -5)'\"\n          />\n        </svg:clipPath>\n      </svg:defs>\n      <svg:g [attr.transform]=\"transform\" class=\"area-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g [attr.clip-path]=\"clipPath\">\n          <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n            <svg:g\n              ngx-charts-area-series\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [scaleType]=\"scaleType\"\n              [gradient]=\"gradient\"\n              [activeEntries]=\"activeEntries\"\n              [stacked]=\"true\"\n              [curve]=\"curve\"\n              [animations]=\"animations\"\n            />\n          </svg:g>\n\n          <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n            <svg:g\n              ngx-charts-tooltip-area\n              [dims]=\"dims\"\n              [xSet]=\"xSet\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [results]=\"results\"\n              [colors]=\"colors\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"seriesTooltipTemplate\"\n              (hover)=\"updateHoveredVertical($event)\"\n            />\n\n            <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n              <svg:g\n                ngx-charts-circle-series\n                [type]=\"seriesType.Stacked\"\n                [xScale]=\"xScale\"\n                [yScale]=\"yScale\"\n                [colors]=\"colors\"\n                [activeEntries]=\"activeEntries\"\n                [data]=\"series\"\n                [scaleType]=\"scaleType\"\n                [visibleValue]=\"hoveredVertical\"\n                [tooltipDisabled]=\"tooltipDisabled\"\n                [tooltipTemplate]=\"tooltipTemplate\"\n                (select)=\"onClick($event, series)\"\n                (activate)=\"onActivate($event)\"\n                (deactivate)=\"onDeactivate($event)\"\n              />\n            </svg:g>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n      <svg:g\n        ngx-charts-timeline\n        *ngIf=\"timeline && scaleType != 'ordinal'\"\n        [attr.transform]=\"timelineTransform\"\n        [results]=\"results\"\n        [view]=\"[timelineWidth, height]\"\n        [height]=\"timelineHeight\"\n        [scheme]=\"scheme\"\n        [customColors]=\"customColors\"\n        [legend]=\"legend\"\n        [scaleType]=\"scaleType\"\n        (onDomainChange)=\"updateDomain($event)\"\n      >\n        <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n          <svg:g\n            ngx-charts-area-series\n            [xScale]=\"timelineXScale\"\n            [yScale]=\"timelineYScale\"\n            [colors]=\"colors\"\n            [data]=\"series\"\n            [scaleType]=\"scaleType\"\n            [gradient]=\"gradient\"\n            [stacked]=\"true\"\n            [curve]=\"curve\"\n            [animations]=\"animations\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false\n})\nexport class AreaChartStackedComponent extends BaseChartComponent {\n  @Input() legend: boolean = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis: boolean = false;\n  @Input() yAxis: boolean = false;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() timeline: boolean = false;\n  @Input() gradient: boolean;\n  @Input() showGridLines: boolean = true;\n  @Input() curve: any = curveLinear;\n  @Input() activeEntries: any[] = [];\n  @Input() declare schemeType: ScaleType;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() roundDomains: boolean = false;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() xScaleMin: any;\n  @Input() xScaleMax: any;\n  @Input() yScaleMin: number;\n  @Input() yScaleMax: number;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n  @ContentChild('seriesTooltipTemplate') seriesTooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  scaleType: ScaleType;\n  xDomain: any[];\n  xSet: any[]; // the set of all values on the X Axis\n  yDomain: [number, number];\n  seriesDomain: any;\n  xScale: any;\n  yScale: any;\n  transform: string;\n  clipPathId: string;\n  clipPath: string;\n  colors: ColorHelper;\n  margin: number[] = [10, 20, 10, 20];\n  hoveredVertical: any; // the value of the x axis that is hovered over\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  filteredDomain: any;\n  legendOptions: any;\n\n  timelineWidth: number;\n  timelineHeight: number = 50;\n  timelineXScale: any;\n  timelineYScale: any;\n  timelineXDomain: any;\n  timelineTransform: any;\n  timelinePadding: number = 10;\n\n  seriesType = SeriesType;\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    if (this.timeline) {\n      this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n    }\n\n    this.xDomain = this.getXDomain();\n    if (this.filteredDomain) {\n      this.xDomain = this.filteredDomain;\n    }\n\n    this.yDomain = this.getYDomain();\n    this.seriesDomain = this.getSeriesDomain();\n\n    this.xScale = this.getXScale(this.xDomain, this.dims.width);\n    this.yScale = this.getYScale(this.yDomain, this.dims.height);\n\n    for (let i = 0; i < this.xSet.length; i++) {\n      const val = this.xSet[i];\n      let d0 = 0;\n      for (const group of this.results) {\n        let d = group.series.find(item => {\n          let a = item.name;\n          let b = val;\n          if (this.scaleType === ScaleType.Time) {\n            a = a.valueOf();\n            b = b.valueOf();\n          }\n          return a === b;\n        });\n\n        if (d) {\n          d.d0 = d0;\n          d.d1 = d0 + d.value;\n          d0 += d.value;\n        } else {\n          d = {\n            name: val,\n            value: 0,\n            d0,\n            d1: d0\n          };\n          group.series.push(d);\n        }\n      }\n    }\n\n    this.updateTimeline();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n\n    this.clipPathId = 'clip' + id().toString();\n    this.clipPath = `url(#${this.clipPathId})`;\n  }\n\n  updateTimeline(): void {\n    if (this.timeline) {\n      this.timelineWidth = this.dims.width;\n      this.timelineXDomain = this.getXDomain();\n      this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n      this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n      this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n    }\n  }\n\n  getXDomain(): any[] {\n    let values = getUniqueXDomainValues(this.results);\n\n    this.scaleType = getScaleType(values);\n    let domain = [];\n\n    if (this.scaleType === ScaleType.Linear) {\n      values = values.map(v => Number(v));\n    }\n\n    let min;\n    let max;\n    if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n      min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n\n      max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n    }\n\n    if (this.scaleType === ScaleType.Time) {\n      domain = [new Date(min), new Date(max)];\n      this.xSet = [...values].sort((a, b) => {\n        const aDate = a.getTime();\n        const bDate = b.getTime();\n        if (aDate > bDate) return 1;\n        if (bDate > aDate) return -1;\n        return 0;\n      });\n    } else if (this.scaleType === ScaleType.Linear) {\n      domain = [min, max];\n      // Use compare function to sort numbers numerically\n      this.xSet = [...values].sort((a, b) => a - b);\n    } else {\n      domain = values;\n      this.xSet = values;\n    }\n\n    return domain;\n  }\n\n  getYDomain(): [number, number] {\n    const domain = [];\n\n    for (let i = 0; i < this.xSet.length; i++) {\n      const val = this.xSet[i];\n      let sum = 0;\n      for (const group of this.results) {\n        const d = group.series.find(item => {\n          let a = item.name;\n          let b = val;\n          if (this.scaleType === ScaleType.Time) {\n            a = a.valueOf();\n            b = b.valueOf();\n          }\n          return a === b;\n        });\n\n        if (d) {\n          sum += d.value;\n        }\n      }\n\n      domain.push(sum);\n    }\n\n    const min = this.yScaleMin ? this.yScaleMin : Math.min(0, ...domain);\n\n    const max = this.yScaleMax ? this.yScaleMax : Math.max(...domain);\n    return [min, max];\n  }\n\n  getSeriesDomain(): string[] {\n    return this.results.map(d => d.name);\n  }\n\n  getXScale(domain, width: number): any {\n    let scale;\n\n    if (this.scaleType === ScaleType.Time) {\n      scale = scaleTime();\n    } else if (this.scaleType === ScaleType.Linear) {\n      scale = scaleLinear();\n    } else if (this.scaleType === ScaleType.Ordinal) {\n      scale = scalePoint().padding(0.1);\n    }\n\n    scale.range([0, width]).domain(domain);\n\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  getYScale(domain, height: number): any {\n    const scale = scaleLinear().range([height, 0]).domain(domain);\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  updateDomain(domain): void {\n    this.filteredDomain = domain;\n    this.xDomain = this.filteredDomain;\n    this.xScale = this.getXScale(this.xDomain, this.dims.width);\n  }\n\n  updateHoveredVertical(item) {\n    this.hoveredVertical = item.value;\n    this.deactivateAll();\n  }\n\n  @HostListener('mouseleave')\n  hideCircles(): void {\n    this.hoveredVertical = null;\n    this.deactivateAll();\n  }\n\n  onClick(data, series?): void {\n    if (series) {\n      data.series = series.name;\n    }\n\n    this.select.emit(data);\n  }\n\n  trackBy(index, item): string {\n    return `${item.name}`;\n  }\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.seriesDomain;\n    } else {\n      domain = this.yDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.seriesDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.yDomain;\n      opts.colors = this.colors.scale;\n    }\n    return opts;\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onActivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n    if (idx > -1) {\n      return;\n    }\n\n    this.activeEntries = [item, ...this.activeEntries];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  deactivateAll() {\n    this.activeEntries = [...this.activeEntries];\n    for (const entry of this.activeEntries) {\n      this.deactivate.emit({ value: entry, entries: [] });\n    }\n    this.activeEntries = [];\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { AreaChartComponent } from './area-chart.component';\nimport { AreaChartNormalizedComponent } from './area-chart-normalized.component';\nimport { AreaChartStackedComponent } from './area-chart-stacked.component';\nimport { AreaSeriesComponent } from './area-series.component';\nimport { ChartCommonModule } from '../common/chart-common.module';\n\n@NgModule({\n  imports: [ChartCommonModule],\n  declarations: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent],\n  exports: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent]\n})\nexport class AreaChartModule {}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges\n} from '@angular/core';\nimport { select } from 'd3-selection';\nimport { roundedRect } from '../common/shape.helper';\nimport { id } from '../utils/id';\nimport { DataItem } from '../models/chart-data.model';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { Gradient } from '../common/types/gradient.interface';\n\n@Component({\n  selector: 'g[ngx-charts-bar]',\n  template: `\n    <svg:defs *ngIf=\"hasGradient\">\n      <svg:g ngx-charts-svg-linear-gradient [orientation]=\"orientation\" [name]=\"gradientId\" [stops]=\"gradientStops\" />\n    </svg:defs>\n    <svg:path\n      class=\"bar\"\n      stroke=\"none\"\n      role=\"img\"\n      tabIndex=\"-1\"\n      [class.active]=\"isActive\"\n      [class.hidden]=\"hideBar\"\n      [attr.d]=\"path\"\n      [attr.aria-label]=\"ariaLabel\"\n      [attr.fill]=\"hasGradient ? gradientFill : fill\"\n      (click)=\"select.emit(data)\"\n    />\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class BarComponent implements OnChanges {\n  @Input() fill: string;\n  @Input() data: DataItem;\n  @Input() width: number;\n  @Input() height: number;\n  @Input() x: number;\n  @Input() y: number;\n  @Input() orientation: BarOrientation;\n  @Input() roundEdges: boolean = true;\n  @Input() gradient: boolean = false;\n  @Input() offset: number = 0;\n  @Input() isActive: boolean = false;\n  @Input() stops: Gradient[];\n  @Input() animations: boolean = true;\n  @Input() ariaLabel: string;\n  @Input() noBarWhenZero: boolean = true;\n\n  @Output() select: EventEmitter<DataItem> = new EventEmitter();\n  @Output() activate: EventEmitter<DataItem> = new EventEmitter();\n  @Output() deactivate: EventEmitter<DataItem> = new EventEmitter();\n\n  element: HTMLElement;\n  path: string;\n  gradientId: string;\n  gradientFill: string;\n  gradientStops: Gradient[];\n  hasGradient: boolean = false;\n  hideBar: boolean = false;\n\n  constructor(element: ElementRef) {\n    this.element = element.nativeElement;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.roundEdges) {\n      this.loadAnimation();\n    }\n    this.update();\n  }\n\n  update(): void {\n    this.gradientId = 'grad' + id().toString();\n    this.gradientFill = `url(#${this.gradientId})`;\n\n    if (this.gradient || this.stops) {\n      this.gradientStops = this.getGradient();\n      this.hasGradient = true;\n    } else {\n      this.hasGradient = false;\n    }\n\n    this.updatePathEl();\n    this.checkToHideBar();\n  }\n\n  loadAnimation(): void {\n    this.path = this.getStartingPath();\n    setTimeout(this.update.bind(this), 100);\n  }\n\n  updatePathEl(): void {\n    const node = select(this.element).select('.bar');\n    const path = this.getPath();\n    if (this.animations) {\n      node.transition().duration(500).attr('d', path);\n    } else {\n      node.attr('d', path);\n    }\n  }\n\n  getGradient(): Gradient[] {\n    if (this.stops) {\n      return this.stops;\n    }\n\n    return [\n      {\n        offset: 0,\n        color: this.fill,\n        opacity: this.getStartOpacity()\n      },\n      {\n        offset: 100,\n        color: this.fill,\n        opacity: 1\n      }\n    ];\n  }\n\n  getStartingPath(): string {\n    if (!this.animations) {\n      return this.getPath();\n    }\n\n    let radius = this.getRadius();\n    let path;\n\n    if (this.roundEdges) {\n      if (this.orientation === BarOrientation.Vertical) {\n        radius = Math.min(this.height, radius);\n        path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n      } else if (this.orientation === BarOrientation.Horizontal) {\n        radius = Math.min(this.width, radius);\n        path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n      }\n    } else {\n      if (this.orientation === BarOrientation.Vertical) {\n        path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n      } else if (this.orientation === BarOrientation.Horizontal) {\n        path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n      }\n    }\n\n    return path;\n  }\n\n  getPath(): string {\n    let radius = this.getRadius();\n    let path;\n\n    if (this.roundEdges) {\n      if (this.orientation === BarOrientation.Vertical) {\n        radius = Math.min(this.height, radius);\n        path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n      } else if (this.orientation === BarOrientation.Horizontal) {\n        radius = Math.min(this.width, radius);\n        path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n      }\n    } else {\n      path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n    }\n\n    return path;\n  }\n\n  getRadius(): number {\n    let radius = 0;\n\n    if (this.roundEdges && this.height > 5 && this.width > 5) {\n      radius = Math.floor(Math.min(5, this.height / 2, this.width / 2));\n    }\n\n    return radius;\n  }\n\n  getStartOpacity(): number {\n    if (this.roundEdges) {\n      return 0.2;\n    } else {\n      return 0.5;\n    }\n  }\n\n  get edges(): boolean[] {\n    let edges = [false, false, false, false];\n    if (this.roundEdges) {\n      if (this.orientation === BarOrientation.Vertical) {\n        if (this.data.value > 0) {\n          edges = [true, true, false, false];\n        } else {\n          edges = [false, false, true, true];\n        }\n      } else if (this.orientation === BarOrientation.Horizontal) {\n        if (this.data.value > 0) {\n          edges = [false, true, false, true];\n        } else {\n          edges = [true, false, true, false];\n        }\n      }\n    }\n    return edges;\n  }\n\n  @HostListener('mouseenter')\n  onMouseEnter(): void {\n    this.activate.emit(this.data);\n  }\n\n  @HostListener('mouseleave')\n  onMouseLeave(): void {\n    this.deactivate.emit(this.data);\n  }\n\n  private checkToHideBar(): void {\n    this.hideBar =\n      this.noBarWhenZero &&\n      ((this.orientation === BarOrientation.Vertical && this.height === 0) ||\n        (this.orientation === BarOrientation.Horizontal && this.width === 0));\n  }\n}\n","export enum BarChartType {\n  Standard = 'standard',\n  Normalized = 'normalized',\n  Stacked = 'stacked'\n}\n","export enum D0Types {\n  positive = 'positive',\n  negative = 'negative'\n}\n","import {\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ChangeDetectionStrategy,\n  ElementRef,\n  Output,\n  EventEmitter\n} from '@angular/core';\nimport { formatLabel } from '../common/label.helper';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\n\n@Component({\n  selector: 'g[ngx-charts-bar-label]',\n  template: `\n    <svg:text\n      class=\"textDataLabel\"\n      alignment-baseline=\"middle\"\n      [attr.text-anchor]=\"textAnchor\"\n      [attr.transform]=\"transform\"\n      [attr.x]=\"x\"\n      [attr.y]=\"y\"\n    >\n      {{ formatedValue }}\n    </svg:text>\n  `,\n  styleUrls: ['./bar-label.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class BarLabelComponent implements OnChanges {\n  @Input() value;\n  @Input() valueFormatting: any;\n  @Input() barX;\n  @Input() barY;\n  @Input() barWidth;\n  @Input() barHeight;\n  @Input() orientation: BarOrientation;\n\n  @Output() dimensionsChanged: EventEmitter<any> = new EventEmitter();\n\n  element: any;\n  x: number;\n  y: number;\n  horizontalPadding: number = 2;\n  verticalPadding: number = 5;\n  formatedValue: string;\n  transform: string;\n  textAnchor: string;\n\n  constructor(element: ElementRef) {\n    this.element = element.nativeElement;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  getSize(): any {\n    const h = this.element.getBoundingClientRect().height;\n    const w = this.element.getBoundingClientRect().width;\n    return { height: h, width: w, negative: this.value < 0 };\n  }\n\n  ngAfterViewInit() {\n    this.dimensionsChanged.emit(this.getSize());\n  }\n\n  update(): void {\n    if (this.valueFormatting) {\n      this.formatedValue = this.valueFormatting(this.value);\n    } else {\n      this.formatedValue = formatLabel(this.value);\n    }\n\n    if (this.orientation === 'horizontal') {\n      this.x = this.barX + this.barWidth;\n      // if the value is negative then it's on the left of the x0.\n      // we need to put the data label in front of the bar\n      if (this.value < 0) {\n        this.x = this.x - this.horizontalPadding;\n        this.textAnchor = 'end';\n      } else {\n        this.x = this.x + this.horizontalPadding;\n        this.textAnchor = 'start';\n      }\n      this.y = this.barY + this.barHeight / 2;\n    } else {\n      // orientation must be \"vertical\"\n      this.x = this.barX + this.barWidth / 2;\n      this.y = this.barY + this.barHeight;\n\n      if (this.value < 0) {\n        this.y = this.y + this.verticalPadding;\n        this.textAnchor = 'end';\n      } else {\n        this.y = this.y - this.verticalPadding;\n        this.textAnchor = 'start';\n      }\n      this.transform = `rotate(-45, ${this.x} , ${this.y})`;\n    }\n  }\n}\n","import { Component, Input, Output, EventEmitter, OnChanges, ChangeDetectionStrategy, TemplateRef } from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { DataItem, StringOrNumberOrDate } from '../models/chart-data.model';\nimport { ColorHelper } from '../common/color.helper';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { Bar } from './types/bar.model';\nimport { D0Types } from './types/d0-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n  selector: 'g[ngx-charts-series-horizontal]',\n  template: `\n    <svg:g\n      ngx-charts-bar\n      *ngFor=\"let bar of bars; trackBy: trackBy\"\n      [@animationState]=\"'active'\"\n      [width]=\"bar.width\"\n      [height]=\"bar.height\"\n      [x]=\"bar.x\"\n      [y]=\"bar.y\"\n      [fill]=\"bar.color\"\n      [stops]=\"bar.gradientStops\"\n      [data]=\"bar.data\"\n      [orientation]=\"barOrientation.Horizontal\"\n      [roundEdges]=\"bar.roundEdges\"\n      (select)=\"click($event)\"\n      [gradient]=\"gradient\"\n      [isActive]=\"isActive(bar.data)\"\n      [ariaLabel]=\"bar.ariaLabel\"\n      [animations]=\"animations\"\n      (activate)=\"activate.emit($event)\"\n      (deactivate)=\"deactivate.emit($event)\"\n      ngx-tooltip\n      [tooltipDisabled]=\"tooltipDisabled\"\n      [tooltipPlacement]=\"tooltipPlacement\"\n      [tooltipType]=\"tooltipType\"\n      [tooltipTitle]=\"tooltipTemplate ? undefined : bar.tooltipText\"\n      [tooltipTemplate]=\"tooltipTemplate\"\n      [tooltipContext]=\"bar.data\"\n      [noBarWhenZero]=\"noBarWhenZero\"\n    ></svg:g>\n    <svg:g *ngIf=\"showDataLabel\">\n      <svg:g\n        ngx-charts-bar-label\n        *ngFor=\"let b of barsForDataLabels; let i = index; trackBy: trackDataLabelBy\"\n        [barX]=\"b.x\"\n        [barY]=\"b.y\"\n        [barWidth]=\"b.width\"\n        [barHeight]=\"b.height\"\n        [value]=\"b.total\"\n        [valueFormatting]=\"dataLabelFormatting\"\n        [orientation]=\"barOrientation.Horizontal\"\n        (dimensionsChanged)=\"dataLabelWidthChanged.emit({ size: $event, index: i })\"\n      />\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1\n        }),\n        animate(500, style({ opacity: 0 }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class SeriesHorizontal implements OnChanges {\n  @Input() dims: ViewDimensions;\n  @Input() type: BarChartType = BarChartType.Standard;\n  @Input() series: DataItem[];\n  @Input() xScale;\n  @Input() yScale;\n  @Input() colors: ColorHelper;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() gradient: boolean;\n  @Input() activeEntries: DataItem[];\n  @Input() seriesName: StringOrNumberOrDate;\n  @Input() tooltipTemplate: TemplateRef<any>;\n  @Input() roundEdges: boolean;\n  @Input() animations: boolean = true;\n  @Input() showDataLabel: boolean = false;\n  @Input() dataLabelFormatting: any;\n  @Input() noBarWhenZero: boolean = true;\n\n  @Output() select: EventEmitter<DataItem> = new EventEmitter();\n  @Output() activate = new EventEmitter();\n  @Output() deactivate = new EventEmitter();\n  @Output() dataLabelWidthChanged = new EventEmitter<{ size: Event; index: number }>();\n\n  tooltipPlacement: PlacementTypes;\n  tooltipType: StyleTypes;\n  bars: Bar[];\n  barsForDataLabels: Array<{ x: number; y: number; width: number; height: number; total: number; series: string }> = [];\n\n  barOrientation = BarOrientation;\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    this.updateTooltipSettings();\n    const d0 = {\n      [D0Types.positive]: 0,\n      [D0Types.negative]: 0\n    };\n    let d0Type: D0Types;\n    d0Type = D0Types.positive;\n    let total;\n    if (this.type === BarChartType.Normalized) {\n      total = this.series.map(d => d.value).reduce((sum, d) => (sum as any) + d, 0);\n    }\n    const xScaleMin = Math.max(this.xScale.domain()[0], 0);\n\n    this.bars = this.series.map(d => {\n      let value = d.value as any;\n      const label = this.getLabel(d);\n      const formattedLabel = formatLabel(label);\n      const roundEdges = this.roundEdges;\n      d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n\n      const bar: any = {\n        value,\n        label,\n        roundEdges,\n        data: d,\n        formattedLabel\n      };\n\n      bar.height = this.yScale.bandwidth();\n\n      if (this.type === BarChartType.Standard) {\n        bar.width = Math.abs(this.xScale(value) - this.xScale(xScaleMin));\n        if (value < 0) {\n          bar.x = this.xScale(value);\n        } else {\n          bar.x = this.xScale(xScaleMin);\n        }\n        bar.y = this.yScale(label);\n      } else if (this.type === BarChartType.Stacked) {\n        const offset0 = d0[d0Type];\n        const offset1 = offset0 + value;\n        d0[d0Type] += value;\n\n        bar.width = this.xScale(offset1) - this.xScale(offset0);\n        bar.x = this.xScale(offset0);\n        bar.y = 0;\n        bar.offset0 = offset0;\n        bar.offset1 = offset1;\n      } else if (this.type === BarChartType.Normalized) {\n        let offset0 = d0[d0Type];\n        let offset1 = offset0 + value;\n        d0[d0Type] += value;\n\n        if (total > 0) {\n          offset0 = (offset0 * 100) / total;\n          offset1 = (offset1 * 100) / total;\n        } else {\n          offset0 = 0;\n          offset1 = 0;\n        }\n\n        bar.width = this.xScale(offset1) - this.xScale(offset0);\n        bar.x = this.xScale(offset0);\n        bar.y = 0;\n        bar.offset0 = offset0;\n        bar.offset1 = offset1;\n        value = (offset1 - offset0).toFixed(2) + '%';\n      }\n\n      if (this.colors.scaleType === ScaleType.Ordinal) {\n        bar.color = this.colors.getColor(label);\n      } else {\n        if (this.type === BarChartType.Standard) {\n          bar.color = this.colors.getColor(value);\n          bar.gradientStops = this.colors.getLinearGradientStops(value);\n        } else {\n          bar.color = this.colors.getColor(bar.offset1);\n          bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n        }\n      }\n\n      let tooltipLabel = formattedLabel;\n      bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n      if (this.seriesName !== null && this.seriesName !== undefined) {\n        tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n        bar.data.series = this.seriesName;\n        bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n      }\n\n      bar.tooltipText = this.tooltipDisabled\n        ? undefined\n        : `\n        <span class=\"tooltip-label\">${escapeLabel(tooltipLabel)}</span>\n        <span class=\"tooltip-val\">${\n          this.dataLabelFormatting ? this.dataLabelFormatting(value) : value.toLocaleString()\n        }</span>\n      `;\n\n      return bar;\n    });\n\n    this.updateDataLabels();\n  }\n\n  updateDataLabels(): void {\n    if (this.type === BarChartType.Stacked) {\n      this.barsForDataLabels = [];\n      const section: any = {};\n      section.series = this.seriesName;\n      const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n      const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n      section.total = totalPositive + totalNegative;\n      section.x = 0;\n      section.y = 0;\n      // if total is positive then we show it on the right, otherwise on the left\n      if (section.total > 0) {\n        section.width = this.xScale(totalPositive);\n      } else {\n        section.width = this.xScale(totalNegative);\n      }\n      section.height = this.yScale.bandwidth();\n      this.barsForDataLabels.push(section);\n    } else {\n      this.barsForDataLabels = this.series.map(d => {\n        const section: any = {};\n        section.series = this.seriesName ?? d.label;\n        section.total = d.value;\n        section.x = this.xScale(0);\n        section.y = this.yScale(d.label);\n        section.width = this.xScale(section.total) - this.xScale(0);\n        section.height = this.yScale.bandwidth();\n        return section;\n      });\n    }\n  }\n\n  updateTooltipSettings(): void {\n    this.tooltipPlacement = this.tooltipDisabled ? undefined : PlacementTypes.Top;\n    this.tooltipType = this.tooltipDisabled ? undefined : StyleTypes.tooltip;\n  }\n\n  isActive(entry: DataItem): boolean {\n    if (!this.activeEntries) return false;\n\n    const item = this.activeEntries.find(active => {\n      return entry.name === active.name && entry.value === active.value;\n    });\n\n    return item !== undefined;\n  }\n\n  getLabel(dataItem: DataItem): StringOrNumberOrDate {\n    if (dataItem.label) {\n      return dataItem.label;\n    }\n    return dataItem.name;\n  }\n\n  trackBy(index: number, bar: Bar): string {\n    return bar.label;\n  }\n\n  trackDataLabelBy(index: number, barLabel: any): string {\n    return index + '#' + barLabel.series + '#' + barLabel.total;\n  }\n\n  click(data: DataItem): void {\n    this.select.emit(data);\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef\n} from '@angular/core';\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { select } from 'd3-selection';\n\n@Component({\n  selector: 'ngx-charts-bar-horizontal',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, true)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [referenceLines]=\"referenceLines\"\n          [showRefLines]=\"showRefLines\"\n          [showRefLabels]=\"showRefLabels\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [yAxisOffset]=\"dataLabelMaxWidth.negative\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-series-horizontal\n          [xScale]=\"xScale\"\n          [yScale]=\"yScale\"\n          [colors]=\"colors\"\n          [series]=\"results\"\n          [dims]=\"dims\"\n          [gradient]=\"gradient\"\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [activeEntries]=\"activeEntries\"\n          [roundEdges]=\"roundEdges\"\n          [animations]=\"animations\"\n          [showDataLabel]=\"showDataLabel\"\n          [dataLabelFormatting]=\"dataLabelFormatting\"\n          [noBarWhenZero]=\"noBarWhenZero\"\n          (select)=\"onClick($event)\"\n          (activate)=\"onActivate($event)\"\n          (deactivate)=\"onDeactivate($event)\"\n          (dataLabelWidthChanged)=\"onDataLabelMaxWidthChanged($event)\"\n        ></svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false\n})\nexport class BarHorizontalComponent extends BaseChartComponent {\n  @Input() legend = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis;\n  @Input() yAxis;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() referenceLines: any;\n  @Input() showRefLines: boolean = false;\n  @Input() showRefLabels: boolean = false;\n  @Input() gradient: boolean;\n  @Input() showGridLines: boolean = true;\n  @Input() activeEntries: any[] = [];\n  @Input() declare schemeType: ScaleType;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() barPadding: number = 8;\n  @Input() roundDomains: boolean = false;\n  @Input() roundEdges: boolean = true;\n  @Input() xScaleMax: number;\n  @Input() xScaleMin: number;\n  @Input() showDataLabel: boolean = false;\n  @Input() dataLabelFormatting: any;\n  @Input() noBarWhenZero: boolean = true;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  yScale: any;\n  xScale: any;\n  xDomain: [number, number];\n  yDomain: string[];\n  transform: string;\n  colors: ColorHelper;\n  margin: number[] = [10, 20, 10, 20];\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  legendOptions: LegendOptions;\n  dataLabelMaxWidth: any = { negative: 0, positive: 0 };\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    if (!this.showDataLabel) {\n      this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n    }\n\n    this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    this.formatDates();\n\n    this.xScale = this.getXScale();\n    this.yScale = this.getYScale();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n\n    if (this.showRefLines) {\n      const parent = select(this.chartElement.nativeElement).select('.bar-chart').node() as HTMLElement;\n      const refLines = select(this.chartElement.nativeElement).selectAll('.ref-line').nodes() as HTMLElement[];\n      refLines.forEach(line => parent.appendChild(line));\n    }\n  }\n\n  getXScale(): any {\n    this.xDomain = this.getXDomain();\n\n    const scale = scaleLinear().range([0, this.dims.width]).domain(this.xDomain);\n\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  getYScale(): any {\n    this.yDomain = this.getYDomain();\n    const spacing = this.yDomain.length / (this.dims.height / this.barPadding + 1);\n\n    return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.yDomain);\n  }\n\n  getXDomain(): [number, number] {\n    const values = this.results.map(d => d.value);\n    const min = this.xScaleMin ? Math.min(this.xScaleMin, ...values) : Math.min(0, ...values);\n\n    const max = this.xScaleMax ? Math.max(this.xScaleMax, ...values) : Math.max(0, ...values);\n    return [min, max];\n  }\n\n  getYDomain(): string[] {\n    return this.results.map(d => d.label);\n  }\n\n  onClick(data): void {\n    this.select.emit(data);\n  }\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.yDomain;\n    } else {\n      domain = this.xDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === 'ordinal') {\n      opts.domain = this.yDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.xDomain;\n      opts.colors = this.colors.scale;\n    }\n\n    return opts;\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onDataLabelMaxWidthChanged(event) {\n    if (event.size.negative) {\n      this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n    } else {\n      this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n    }\n    if (event.index === this.results.length - 1) {\n      setTimeout(() => this.update());\n    }\n  }\n\n  onActivate(item, fromLegend: boolean = false) {\n    item = this.results.find(d => {\n      if (fromLegend) {\n        return d.label === item.name;\n      } else {\n        return d.name === item.name;\n      }\n    });\n\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value && d.series === item.series;\n    });\n    if (idx > -1) {\n      return;\n    }\n\n    this.activeEntries = [item, ...this.activeEntries];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item, fromLegend: boolean = false) {\n    item = this.results.find(d => {\n      if (fromLegend) {\n        return d.label === item.name;\n      } else {\n        return d.name === item.name;\n      }\n    });\n\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value && d.series === item.series;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n}\n","import {\n  Component,\n  Input,\n  ViewEncapsulation,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  TrackByFunction\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { trigger, style, animate, transition } from '@angular/animations';\n\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { DataItem } from '../models/chart-data.model';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\n\n@Component({\n  selector: 'ngx-charts-bar-horizontal-2d',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-grid-panel-series\n          [xScale]=\"valueScale\"\n          [yScale]=\"groupScale\"\n          [data]=\"results\"\n          [dims]=\"dims\"\n          [orient]=\"barOrientation.Horizontal\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"valueScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"groupScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [yAxisOffset]=\"dataLabelMaxWidth.negative\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n\n        <svg:g *ngIf=\"!isSSR\">\n          <svg:g\n            *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n            [@animationState]=\"'active'\"\n            [attr.transform]=\"groupTransform(group)\"\n          >\n            <svg:g\n              ngx-charts-series-horizontal\n              [xScale]=\"valueScale\"\n              [activeEntries]=\"activeEntries\"\n              [yScale]=\"innerScale\"\n              [colors]=\"colors\"\n              [series]=\"group.series\"\n              [dims]=\"dims\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [seriesName]=\"group.name\"\n              [roundEdges]=\"roundEdges\"\n              [animations]=\"animations\"\n              [showDataLabel]=\"showDataLabel\"\n              [dataLabelFormatting]=\"dataLabelFormatting\"\n              [noBarWhenZero]=\"noBarWhenZero\"\n              (select)=\"onClick($event, group)\"\n              (activate)=\"onActivate($event, group)\"\n              (deactivate)=\"onDeactivate($event, group)\"\n              (dataLabelWidthChanged)=\"onDataLabelMaxWidthChanged($event, index)\"\n            />\n          </svg:g>\n        </svg:g>\n        <svg:g *ngIf=\"isSSR\">\n          <svg:g\n            *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n            [attr.transform]=\"groupTransform(group)\"\n          >\n            <svg:g\n              ngx-charts-series-horizontal\n              [xScale]=\"valueScale\"\n              [activeEntries]=\"activeEntries\"\n              [yScale]=\"innerScale\"\n              [colors]=\"colors\"\n              [series]=\"group.series\"\n              [dims]=\"dims\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [seriesName]=\"group.name\"\n              [roundEdges]=\"roundEdges\"\n              [animations]=\"animations\"\n              [showDataLabel]=\"showDataLabel\"\n              [dataLabelFormatting]=\"dataLabelFormatting\"\n              [noBarWhenZero]=\"noBarWhenZero\"\n              (select)=\"onClick($event, group)\"\n              (activate)=\"onActivate($event, group)\"\n              (deactivate)=\"onDeactivate($event, group)\"\n              (dataLabelWidthChanged)=\"onDataLabelMaxWidthChanged($event, index)\"\n            />\n          </svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1,\n          transform: '*'\n        }),\n        animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class BarHorizontal2DComponent extends BaseChartComponent {\n  @Input() legend: boolean = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis;\n  @Input() yAxis;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() gradient: boolean;\n  @Input() showGridLines: boolean = true;\n  @Input() activeEntries: any[] = [];\n  @Input() declare schemeType: ScaleType;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() groupPadding: number = 16;\n  @Input() barPadding: number = 8;\n  @Input() roundDomains: boolean = false;\n  @Input() roundEdges: boolean = true;\n  @Input() xScaleMax: number;\n  @Input() showDataLabel: boolean = false;\n  @Input() dataLabelFormatting: any;\n  @Input() noBarWhenZero: boolean = true;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  groupDomain: string[];\n  innerDomain: string[];\n  valueDomain: [number, number];\n  groupScale: any;\n  innerScale: any;\n  valueScale: any;\n  transform: string;\n  colors: ColorHelper;\n  margin: number[] = [10, 20, 10, 20];\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  legendOptions: LegendOptions;\n  dataLabelMaxWidth: any = { negative: 0, positive: 0 };\n  isSSR = false;\n\n  barOrientation = BarOrientation;\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    if (!this.showDataLabel) {\n      this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n    }\n\n    this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    this.formatDates();\n\n    this.groupDomain = this.getGroupDomain();\n    this.innerDomain = this.getInnerDomain();\n    this.valueDomain = this.getValueDomain();\n\n    this.groupScale = this.getGroupScale();\n    this.innerScale = this.getInnerScale();\n    this.valueScale = this.getValueScale();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n  }\n\n  getGroupScale(): any {\n    const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n\n    return scaleBand()\n      .rangeRound([0, this.dims.height])\n      .paddingInner(spacing)\n      .paddingOuter(spacing / 2)\n      .domain(this.groupDomain);\n  }\n\n  getInnerScale(): any {\n    const height = this.groupScale.bandwidth();\n    const spacing = this.innerDomain.length / (height / this.barPadding + 1);\n\n    return scaleBand().rangeRound([0, height]).paddingInner(spacing).domain(this.innerDomain);\n  }\n\n  getValueScale(): any {\n    const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  getGroupDomain(): string[] {\n    const domain = [];\n\n    for (const group of this.results) {\n      if (!domain.includes(group.label)) {\n        domain.push(group.label);\n      }\n    }\n\n    return domain;\n  }\n\n  getInnerDomain(): string[] {\n    const domain = [];\n\n    for (const group of this.results) {\n      for (const d of group.series) {\n        if (!domain.includes(d.label)) {\n          domain.push(d.label);\n        }\n      }\n    }\n\n    return domain;\n  }\n\n  getValueDomain(): [number, number] {\n    const domain = [];\n\n    for (const group of this.results) {\n      for (const d of group.series) {\n        if (!domain.includes(d.value)) {\n          domain.push(d.value);\n        }\n      }\n    }\n\n    const min = Math.min(0, ...domain);\n    const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(0, ...domain);\n    return [min, max];\n  }\n\n  groupTransform(group: DataItem): string {\n    return `translate(0, ${this.groupScale(group.label)})`;\n  }\n\n  onClick(data, group?: DataItem): void {\n    if (group) {\n      data.series = group.name;\n    }\n\n    this.select.emit(data);\n  }\n\n  trackBy: TrackByFunction<DataItem> = (index: number, item: DataItem) => {\n    return item.name;\n  };\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.innerDomain;\n    } else {\n      domain = this.valueDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.innerDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.valueDomain;\n      opts.colors = this.colors.scale;\n    }\n\n    return opts;\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onDataLabelMaxWidthChanged(event, groupIndex: number): void {\n    if (event.size.negative) {\n      this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n    } else {\n      this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n    }\n    if (groupIndex === this.results.length - 1) {\n      setTimeout(() => this.update());\n    }\n  }\n\n  onActivate(event, group: DataItem, fromLegend: boolean = false): void {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    const items = this.results\n      .map(g => g.series)\n      .flat()\n      .filter(i => {\n        if (fromLegend) {\n          return i.label === item.name;\n        } else {\n          return i.name === item.name && i.series === item.series;\n        }\n      });\n\n    this.activeEntries = [...items];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(event, group: DataItem, fromLegend: boolean = false): void {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    this.activeEntries = this.activeEntries.filter(i => {\n      if (fromLegend) {\n        return i.label !== item.name;\n      } else {\n        return !(i.name === item.name && i.series === item.series);\n      }\n    });\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  ViewEncapsulation,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  TrackByFunction\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\n\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { Series } from '../models/chart-data.model';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { isPlatformServer } from '@angular/common';\n\n@Component({\n  selector: 'ngx-charts-bar-horizontal-normalized',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g *ngIf=\"!isSSR\">\n          <svg:g\n            *ngFor=\"let group of results; trackBy: trackBy\"\n            [@animationState]=\"'active'\"\n            [attr.transform]=\"groupTransform(group)\"\n          >\n            <svg:g\n              ngx-charts-series-horizontal\n              [type]=\"barChartType.Normalized\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [activeEntries]=\"activeEntries\"\n              [colors]=\"colors\"\n              [series]=\"group.series\"\n              [dims]=\"dims\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [seriesName]=\"group.name\"\n              [animations]=\"animations\"\n              (select)=\"onClick($event, group)\"\n              (activate)=\"onActivate($event, group)\"\n              (deactivate)=\"onDeactivate($event, group)\"\n              [noBarWhenZero]=\"noBarWhenZero\"\n            />\n          </svg:g>\n        </svg:g>\n        <svg:g *ngIf=\"isSSR\">\n          <svg:g *ngFor=\"let group of results; trackBy: trackBy\" [attr.transform]=\"groupTransform(group)\">\n            <svg:g\n              ngx-charts-series-horizontal\n              [type]=\"barChartType.Normalized\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [activeEntries]=\"activeEntries\"\n              [colors]=\"colors\"\n              [series]=\"group.series\"\n              [dims]=\"dims\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [seriesName]=\"group.name\"\n              [animations]=\"animations\"\n              (select)=\"onClick($event, group)\"\n              (activate)=\"onActivate($event, group)\"\n              (deactivate)=\"onDeactivate($event, group)\"\n              [noBarWhenZero]=\"noBarWhenZero\"\n            />\n          </svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1,\n          transform: '*'\n        }),\n        animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class BarHorizontalNormalizedComponent extends BaseChartComponent {\n  @Input() legend: boolean = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis;\n  @Input() yAxis;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() gradient: boolean;\n  @Input() showGridLines: boolean = true;\n  @Input() activeEntries: any[] = [];\n  @Input() declare schemeType: ScaleType;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() barPadding: number = 8;\n  @Input() roundDomains: boolean = false;\n  @Input() noBarWhenZero: boolean = true;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  groupDomain: string[];\n  innerDomain: string[];\n  valueDomain: [number, number] = [0, 100];\n  xScale: any;\n  yScale: any;\n  transform: string;\n  colors: ColorHelper;\n  margin: number[] = [10, 20, 10, 20];\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  legendOptions: LegendOptions;\n  barChartType = BarChartType;\n  isSSR = false;\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    this.formatDates();\n\n    this.groupDomain = this.getGroupDomain();\n    this.innerDomain = this.getInnerDomain();\n\n    this.xScale = this.getXScale();\n    this.yScale = this.getYScale();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n  }\n\n  getGroupDomain(): string[] {\n    const domain = [];\n\n    for (const group of this.results) {\n      if (!domain.includes(group.label)) {\n        domain.push(group.label);\n      }\n    }\n\n    return domain;\n  }\n\n  getInnerDomain(): string[] {\n    const domain = [];\n\n    for (const group of this.results) {\n      for (const d of group.series) {\n        if (!domain.includes(d.label)) {\n          domain.push(d.label);\n        }\n      }\n    }\n\n    return domain;\n  }\n\n  getYScale(): any {\n    const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n\n    return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.groupDomain);\n  }\n\n  getXScale(): any {\n    const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  groupTransform(group: Series): string {\n    return `translate(0, ${this.yScale(group.name)})`;\n  }\n\n  onClick(data, group?: Series): void {\n    if (group) {\n      data.series = group.name;\n    }\n\n    this.select.emit(data);\n  }\n\n  trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n    return item.name;\n  };\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.innerDomain;\n    } else {\n      domain = this.valueDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.innerDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.valueDomain;\n      opts.colors = this.colors.scale;\n    }\n\n    return opts;\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onActivate(event, group: Series, fromLegend: boolean = false) {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    const items = this.results\n      .map(g => g.series)\n      .flat()\n      .filter(i => {\n        if (fromLegend) {\n          return i.label === item.name;\n        } else {\n          return i.name === item.name && i.series === item.series;\n        }\n      });\n\n    this.activeEntries = [...items];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(event, group: Series, fromLegend: boolean = false) {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    this.activeEntries = this.activeEntries.filter(i => {\n      if (fromLegend) {\n        return i.label !== item.name;\n      } else {\n        return !(i.name === item.name && i.series === item.series);\n      }\n    });\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  TrackByFunction\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { trigger, style, animate, transition } from '@angular/animations';\n\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { Series } from '../models/chart-data.model';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n  selector: 'ngx-charts-bar-horizontal-stacked',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [yAxisOffset]=\"dataLabelMaxWidth.negative\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g *ngIf=\"!isSSR\">\n          <svg:g\n            *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n            [@animationState]=\"'active'\"\n            [attr.transform]=\"groupTransform(group)\"\n          >\n            <svg:g\n              ngx-charts-series-horizontal\n              [type]=\"barChartType.Stacked\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [colors]=\"colors\"\n              [series]=\"group.series\"\n              [activeEntries]=\"activeEntries\"\n              [dims]=\"dims\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [seriesName]=\"group.name\"\n              [animations]=\"animations\"\n              [showDataLabel]=\"showDataLabel\"\n              [dataLabelFormatting]=\"dataLabelFormatting\"\n              [noBarWhenZero]=\"noBarWhenZero\"\n              (select)=\"onClick($event, group)\"\n              (activate)=\"onActivate($event, group)\"\n              (deactivate)=\"onDeactivate($event, group)\"\n              (dataLabelWidthChanged)=\"onDataLabelMaxWidthChanged($event, index)\"\n            />\n          </svg:g>\n        </svg:g>\n        <svg:g *ngIf=\"isSSR\">\n          <svg:g\n            *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n            [attr.transform]=\"groupTransform(group)\"\n          >\n            <svg:g\n              ngx-charts-series-horizontal\n              [type]=\"barChartType.Stacked\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [colors]=\"colors\"\n              [series]=\"group.series\"\n              [activeEntries]=\"activeEntries\"\n              [dims]=\"dims\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [seriesName]=\"group.name\"\n              [animations]=\"animations\"\n              [showDataLabel]=\"showDataLabel\"\n              [dataLabelFormatting]=\"dataLabelFormatting\"\n              [noBarWhenZero]=\"noBarWhenZero\"\n              (select)=\"onClick($event, group)\"\n              (activate)=\"onActivate($event, group)\"\n              (deactivate)=\"onDeactivate($event, group)\"\n              (dataLabelWidthChanged)=\"onDataLabelMaxWidthChanged($event, index)\"\n            />\n          </svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1,\n          transform: '*'\n        }),\n        animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class BarHorizontalStackedComponent extends BaseChartComponent {\n  @Input() legend: boolean = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis;\n  @Input() yAxis;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() gradient: boolean;\n  @Input() showGridLines: boolean = true;\n  @Input() activeEntries: any[] = [];\n  @Input() declare schemeType: ScaleType;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() barPadding: number = 8;\n  @Input() roundDomains: boolean = false;\n  @Input() xScaleMax: number;\n  @Input() showDataLabel: boolean = false;\n  @Input() dataLabelFormatting: any;\n  @Input() noBarWhenZero: boolean = true;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  groupDomain: string[];\n  innerDomain: string[];\n  valueDomain: [number, number];\n  xScale: any;\n  yScale: any;\n  transform: string;\n  colors: ColorHelper;\n  margin = [10, 20, 10, 20];\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  legendOptions: LegendOptions;\n  dataLabelMaxWidth: any = { negative: 0, positive: 0 };\n\n  barChartType = BarChartType;\n  isSSR = false;\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  update(): void {\n    super.update();\n\n    if (!this.showDataLabel) {\n      this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n    }\n\n    this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    this.formatDates();\n\n    this.groupDomain = this.getGroupDomain();\n    this.innerDomain = this.getInnerDomain();\n    this.valueDomain = this.getValueDomain();\n\n    this.xScale = this.getXScale();\n    this.yScale = this.getYScale();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n  }\n\n  getGroupDomain(): string[] {\n    const domain = [];\n\n    for (const group of this.results) {\n      if (!domain.includes(group.label)) {\n        domain.push(group.label);\n      }\n    }\n\n    return domain;\n  }\n\n  getInnerDomain(): string[] {\n    const domain = [];\n\n    for (const group of this.results) {\n      for (const d of group.series) {\n        if (!domain.includes(d.label)) {\n          domain.push(d.label);\n        }\n      }\n    }\n\n    return domain;\n  }\n\n  getValueDomain(): [number, number] {\n    const domain = [];\n    let smallest = 0;\n    let biggest = 0;\n    for (const group of this.results) {\n      let smallestSum = 0;\n      let biggestSum = 0;\n      for (const d of group.series) {\n        if (d.value < 0) {\n          smallestSum += d.value;\n        } else {\n          biggestSum += d.value;\n        }\n        smallest = d.value < smallest ? d.value : smallest;\n        biggest = d.value > biggest ? d.value : biggest;\n      }\n      domain.push(smallestSum);\n      domain.push(biggestSum);\n    }\n    domain.push(smallest);\n    domain.push(biggest);\n\n    const min = Math.min(0, ...domain);\n    const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(...domain);\n    return [min, max];\n  }\n\n  getYScale(): any {\n    const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n\n    return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.groupDomain);\n  }\n\n  getXScale(): any {\n    const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  groupTransform(group: Series): string {\n    return `translate(0, ${this.yScale(group.name)})`;\n  }\n\n  onClick(data, group?: Series): void {\n    if (group) {\n      data.series = group.name;\n    }\n\n    this.select.emit(data);\n  }\n\n  trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n    return item.name;\n  };\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.innerDomain;\n    } else {\n      domain = this.valueDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.innerDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.valueDomain;\n      opts.colors = this.colors.scale;\n    }\n\n    return opts;\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onDataLabelMaxWidthChanged(event, groupIndex: number) {\n    if (event.size.negative) {\n      this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n    } else {\n      this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n    }\n    if (groupIndex === this.results.length - 1) {\n      setTimeout(() => this.update());\n    }\n  }\n\n  onActivate(event, group: Series, fromLegend: boolean = false) {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    const items = this.results\n      .map(g => g.series)\n      .flat()\n      .filter(i => {\n        if (fromLegend) {\n          return i.label === item.name;\n        } else {\n          return i.name === item.name && i.series === item.series;\n        }\n      });\n\n    this.activeEntries = [...items];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(event, group: Series, fromLegend: boolean = false) {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    this.activeEntries = this.activeEntries.filter(i => {\n      if (fromLegend) {\n        return i.label !== item.name;\n      } else {\n        return !(i.name === item.name && i.series === item.series);\n      }\n    });\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  ChangeDetectionStrategy,\n  TemplateRef,\n  PLATFORM_ID,\n  Inject\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { DataItem, StringOrNumberOrDate } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { ColorHelper } from '../common/color.helper';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { D0Types } from './types/d0-type.enum';\nimport { Bar } from './types/bar.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { isPlatformServer } from '@angular/common';\n\n@Component({\n  selector: 'g[ngx-charts-series-vertical]',\n  template: `\n    <svg:g *ngIf=\"!isSSR\">\n      <svg:g\n        ngx-charts-bar\n        *ngFor=\"let bar of bars; trackBy: trackBy\"\n        [@animationState]=\"'active'\"\n        [@.disabled]=\"!animations\"\n        [width]=\"bar.width\"\n        [height]=\"bar.height\"\n        [x]=\"bar.x\"\n        [y]=\"bar.y\"\n        [fill]=\"bar.color\"\n        [stops]=\"bar.gradientStops\"\n        [data]=\"bar.data\"\n        [orientation]=\"barOrientation.Vertical\"\n        [roundEdges]=\"bar.roundEdges\"\n        [gradient]=\"gradient\"\n        [ariaLabel]=\"bar.ariaLabel\"\n        [isActive]=\"isActive(bar.data)\"\n        (select)=\"onClick($event)\"\n        (activate)=\"activate.emit($event)\"\n        (deactivate)=\"deactivate.emit($event)\"\n        ngx-tooltip\n        [tooltipDisabled]=\"tooltipDisabled\"\n        [tooltipPlacement]=\"tooltipPlacement\"\n        [tooltipType]=\"tooltipType\"\n        [tooltipTitle]=\"tooltipTemplate ? undefined : bar.tooltipText\"\n        [tooltipTemplate]=\"tooltipTemplate\"\n        [tooltipContext]=\"bar.data\"\n        [noBarWhenZero]=\"noBarWhenZero\"\n        [animations]=\"animations\"\n      ></svg:g>\n    </svg:g>\n    <svg:g *ngIf=\"isSSR\">\n      <svg:g\n        ngx-charts-bar\n        *ngFor=\"let bar of bars; trackBy: trackBy\"\n        [width]=\"bar.width\"\n        [height]=\"bar.height\"\n        [x]=\"bar.x\"\n        [y]=\"bar.y\"\n        [fill]=\"bar.color\"\n        [stops]=\"bar.gradientStops\"\n        [data]=\"bar.data\"\n        [orientation]=\"barOrientation.Vertical\"\n        [roundEdges]=\"bar.roundEdges\"\n        [gradient]=\"gradient\"\n        [ariaLabel]=\"bar.ariaLabel\"\n        [isActive]=\"isActive(bar.data)\"\n        (select)=\"onClick($event)\"\n        (activate)=\"activate.emit($event)\"\n        (deactivate)=\"deactivate.emit($event)\"\n        ngx-tooltip\n        [tooltipDisabled]=\"tooltipDisabled\"\n        [tooltipPlacement]=\"tooltipPlacement\"\n        [tooltipType]=\"tooltipType\"\n        [tooltipTitle]=\"tooltipTemplate ? undefined : bar.tooltipText\"\n        [tooltipTemplate]=\"tooltipTemplate\"\n        [tooltipContext]=\"bar.data\"\n        [noBarWhenZero]=\"noBarWhenZero\"\n        [animations]=\"animations\"\n      ></svg:g>\n    </svg:g>\n    <svg:g *ngIf=\"showDataLabel\">\n      <svg:g\n        ngx-charts-bar-label\n        *ngFor=\"let b of barsForDataLabels; let i = index; trackBy: trackDataLabelBy\"\n        [barX]=\"b.x\"\n        [barY]=\"b.y\"\n        [barWidth]=\"b.width\"\n        [barHeight]=\"b.height\"\n        [value]=\"b.total\"\n        [valueFormatting]=\"dataLabelFormatting\"\n        [orientation]=\"barOrientation.Vertical\"\n        (dimensionsChanged)=\"dataLabelHeightChanged.emit({ size: $event, index: i })\"\n      />\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1\n        }),\n        animate(500, style({ opacity: 0 }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class SeriesVerticalComponent implements OnChanges {\n  @Input() dims: ViewDimensions;\n  @Input() type: BarChartType = BarChartType.Standard;\n  @Input() series: DataItem[];\n  @Input() xScale;\n  @Input() yScale;\n  @Input() colors: ColorHelper;\n  @Input() gradient: boolean;\n  @Input() activeEntries: DataItem[];\n  @Input() seriesName: StringOrNumberOrDate;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipTemplate: TemplateRef<any>;\n  @Input() roundEdges: boolean;\n  @Input() animations: boolean = true;\n  @Input() showDataLabel: boolean = false;\n  @Input() dataLabelFormatting: any;\n  @Input() noBarWhenZero: boolean = true;\n\n  @Output() select: EventEmitter<DataItem> = new EventEmitter();\n  @Output() activate = new EventEmitter();\n  @Output() deactivate = new EventEmitter();\n  @Output() dataLabelHeightChanged = new EventEmitter();\n\n  tooltipPlacement: PlacementTypes;\n  tooltipType: StyleTypes;\n\n  bars: Bar[];\n  barsForDataLabels: Array<{ x: number; y: number; width: number; height: number; total: number; series: string }> = [];\n\n  barOrientation = BarOrientation;\n\n  isSSR = false;\n\n  constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    this.updateTooltipSettings();\n    let width;\n    if (this.series.length) {\n      width = this.xScale.bandwidth();\n    }\n    width = Math.round(width);\n    const yScaleMin = Math.max(this.yScale.domain()[0], 0);\n\n    const d0 = {\n      [D0Types.positive]: 0,\n      [D0Types.negative]: 0\n    };\n    let d0Type = D0Types.positive;\n\n    let total;\n    if (this.type === BarChartType.Normalized) {\n      total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n    }\n\n    this.bars = this.series.map((d, index) => {\n      let value = d.value as any;\n      const label = this.getLabel(d);\n      const formattedLabel = formatLabel(label);\n      const roundEdges = this.roundEdges;\n      d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n\n      const bar: any = {\n        value,\n        label,\n        roundEdges,\n        data: d,\n        width,\n        formattedLabel,\n        height: 0,\n        x: 0,\n        y: 0\n      };\n\n      if (this.type === BarChartType.Standard) {\n        bar.height = Math.abs(this.yScale(value) - this.yScale(yScaleMin));\n        bar.x = this.xScale(label);\n\n        if (value < 0) {\n          bar.y = this.yScale(0);\n        } else {\n          bar.y = this.yScale(value);\n        }\n      } else if (this.type === BarChartType.Stacked) {\n        const offset0 = d0[d0Type];\n        const offset1 = offset0 + value;\n        d0[d0Type] += value;\n\n        bar.height = this.yScale(offset0) - this.yScale(offset1);\n        bar.x = 0;\n        bar.y = this.yScale(offset1);\n        bar.offset0 = offset0;\n        bar.offset1 = offset1;\n      } else if (this.type === BarChartType.Normalized) {\n        let offset0 = d0[d0Type];\n        let offset1 = offset0 + value;\n        d0[d0Type] += value;\n\n        if (total > 0) {\n          offset0 = (offset0 * 100) / total;\n          offset1 = (offset1 * 100) / total;\n        } else {\n          offset0 = 0;\n          offset1 = 0;\n        }\n\n        bar.height = this.yScale(offset0) - this.yScale(offset1);\n        bar.x = 0;\n        bar.y = this.yScale(offset1);\n        bar.offset0 = offset0;\n        bar.offset1 = offset1;\n        value = (offset1 - offset0).toFixed(2) + '%';\n      }\n\n      if (this.colors.scaleType === ScaleType.Ordinal) {\n        bar.color = this.colors.getColor(label);\n      } else {\n        if (this.type === BarChartType.Standard) {\n          bar.color = this.colors.getColor(value);\n          bar.gradientStops = this.colors.getLinearGradientStops(value);\n        } else {\n          bar.color = this.colors.getColor(bar.offset1);\n          bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n        }\n      }\n\n      let tooltipLabel = formattedLabel;\n      bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n      if (this.seriesName !== null && this.seriesName !== undefined) {\n        tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n        bar.data.series = this.seriesName;\n        bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n      }\n\n      bar.tooltipText = this.tooltipDisabled\n        ? undefined\n        : `\n        <span class=\"tooltip-label\">${escapeLabel(tooltipLabel)}</span>\n        <span class=\"tooltip-val\">${\n          this.dataLabelFormatting ? this.dataLabelFormatting(value) : value.toLocaleString()\n        }</span>\n      `;\n\n      return bar;\n    });\n\n    this.updateDataLabels();\n  }\n\n  updateDataLabels(): void {\n    if (this.type === BarChartType.Stacked) {\n      this.barsForDataLabels = [];\n      const section: any = {};\n      section.series = this.seriesName;\n      const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n      const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n      section.total = totalPositive + totalNegative;\n      section.x = 0;\n      section.y = 0;\n      if (section.total > 0) {\n        section.height = this.yScale(totalPositive);\n      } else {\n        section.height = this.yScale(totalNegative);\n      }\n      section.width = this.xScale.bandwidth();\n      this.barsForDataLabels.push(section);\n    } else {\n      this.barsForDataLabels = this.series.map(d => {\n        const section: any = {};\n        section.series = this.seriesName ?? d.label;\n        section.total = d.value;\n        section.x = this.xScale(d.label);\n        section.y = this.yScale(0);\n        section.height = this.yScale(section.total) - this.yScale(0);\n        section.width = this.xScale.bandwidth();\n        return section;\n      });\n    }\n  }\n\n  updateTooltipSettings(): void {\n    this.tooltipPlacement = this.tooltipDisabled ? undefined : PlacementTypes.Top;\n    this.tooltipType = this.tooltipDisabled ? undefined : StyleTypes.tooltip;\n  }\n\n  isActive(entry: DataItem): boolean {\n    if (!this.activeEntries) return false;\n\n    const item = this.activeEntries.find(active => {\n      return entry.name === active.name && entry.value === active.value;\n    });\n\n    return item !== undefined;\n  }\n\n  onClick(data: DataItem): void {\n    this.select.emit(data);\n  }\n\n  getLabel(dataItem: DataItem): StringOrNumberOrDate {\n    if (dataItem.label) {\n      return dataItem.label;\n    }\n    return dataItem.name;\n  }\n\n  trackBy(index: number, bar: Bar): string {\n    return bar.label;\n  }\n\n  trackDataLabelBy(index: number, barLabel: any): string {\n    return index + '#' + barLabel.series + '#' + barLabel.total;\n  }\n}\n","import {\n  Component,\n  Input,\n  ViewEncapsulation,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef\n} from '@angular/core';\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { DataItem } from '../models/chart-data.model';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { select } from 'd3-selection';\n\n@Component({\n  selector: 'ngx-charts-bar-vertical',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, true)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [xAxisOffset]=\"dataLabelMaxHeight.negative\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [referenceLines]=\"referenceLines\"\n          [showRefLines]=\"showRefLines\"\n          [showRefLabels]=\"showRefLabels\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-series-vertical\n          [xScale]=\"xScale\"\n          [yScale]=\"yScale\"\n          [colors]=\"colors\"\n          [series]=\"results\"\n          [dims]=\"dims\"\n          [gradient]=\"gradient\"\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [showDataLabel]=\"showDataLabel\"\n          [dataLabelFormatting]=\"dataLabelFormatting\"\n          [activeEntries]=\"activeEntries\"\n          [roundEdges]=\"roundEdges\"\n          [animations]=\"animations\"\n          [noBarWhenZero]=\"noBarWhenZero\"\n          (activate)=\"onActivate($event)\"\n          (deactivate)=\"onDeactivate($event)\"\n          (select)=\"onClick($event)\"\n          (dataLabelHeightChanged)=\"onDataLabelMaxHeightChanged($event)\"\n        ></svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false\n})\nexport class BarVerticalComponent extends BaseChartComponent {\n  @Input() legend = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis;\n  @Input() yAxis;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() gradient: boolean;\n  @Input() referenceLines: any[];\n  @Input() showRefLines;\n  @Input() showRefLabels;\n  @Input() showGridLines: boolean = true;\n  @Input() activeEntries: any[] = [];\n  @Input() declare schemeType: ScaleType;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() barPadding = 8;\n  @Input() roundDomains: boolean = false;\n  @Input() roundEdges: boolean = true;\n  @Input() yScaleMax: number;\n  @Input() yScaleMin: number;\n  @Input() showDataLabel: boolean = false;\n  @Input() dataLabelFormatting: any;\n  @Input() noBarWhenZero: boolean = true;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  xScale: any;\n  yScale: any;\n  xDomain: any;\n  yDomain: any;\n  transform: string;\n  colors: ColorHelper;\n  margin: number[] = [10, 20, 10, 20];\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  legendOptions: LegendOptions;\n  dataLabelMaxHeight: any = { negative: 0, positive: 0 };\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    if (!this.showDataLabel) {\n      this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n    }\n    this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    this.formatDates();\n\n    if (this.showDataLabel) {\n      this.dims.height -= this.dataLabelMaxHeight.negative;\n    }\n    this.xScale = this.getXScale();\n    this.yScale = this.getYScale();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n\n    if (this.showRefLines) {\n      const parent = select(this.chartElement.nativeElement).select('.bar-chart').node() as HTMLElement;\n      const refLines = select(this.chartElement.nativeElement).selectAll('.ref-line').nodes() as HTMLElement[];\n      refLines.forEach(line => parent.appendChild(line));\n    }\n  }\n\n  getXScale(): any {\n    this.xDomain = this.getXDomain();\n    const spacing = this.xDomain.length / (this.dims.width / this.barPadding + 1);\n    return scaleBand().range([0, this.dims.width]).paddingInner(spacing).domain(this.xDomain);\n  }\n\n  getYScale(): any {\n    this.yDomain = this.getYDomain();\n    const scale = scaleLinear().range([this.dims.height, 0]).domain(this.yDomain);\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  getXDomain(): any[] {\n    return this.results.map(d => d.label);\n  }\n\n  getYDomain(): [number, number] {\n    const values = this.results.map(d => d.value);\n\n    let min = this.yScaleMin ? Math.min(this.yScaleMin, ...values) : Math.min(0, ...values);\n    if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n      min = Math.min(min, ...this.yAxisTicks);\n    }\n\n    let max = this.yScaleMax ? Math.max(this.yScaleMax, ...values) : Math.max(0, ...values);\n    if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n      max = Math.max(max, ...this.yAxisTicks);\n    }\n    return [min, max];\n  }\n\n  onClick(data: DataItem | string) {\n    this.select.emit(data);\n  }\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.xDomain;\n    } else {\n      domain = this.yDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions() {\n    const opts = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.xDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.yDomain;\n      opts.colors = this.colors.scale;\n    }\n    return opts;\n  }\n\n  updateYAxisWidth({ width }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onDataLabelMaxHeightChanged(event) {\n    if (event.size.negative) {\n      this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n    } else {\n      this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n    }\n    if (event.index === this.results.length - 1) {\n      setTimeout(() => this.update());\n    }\n  }\n\n  onActivate(item, fromLegend = false) {\n    item = this.results.find(d => {\n      if (fromLegend) {\n        return d.label === item.name;\n      } else {\n        return d.name === item.name;\n      }\n    });\n\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value && d.series === item.series;\n    });\n    if (idx > -1) {\n      return;\n    }\n\n    this.activeEntries = [item, ...this.activeEntries];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item, fromLegend = false) {\n    item = this.results.find(d => {\n      if (fromLegend) {\n        return d.label === item.name;\n      } else {\n        return d.name === item.name;\n      }\n    });\n\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value && d.series === item.series;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  ViewEncapsulation,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  TrackByFunction\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { DataItem } from '../models/chart-data.model';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { isPlatformServer } from '@angular/common';\n\n@Component({\n  selector: 'ngx-charts-bar-vertical-2d',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-grid-panel-series\n          [xScale]=\"groupScale\"\n          [yScale]=\"valueScale\"\n          [data]=\"results\"\n          [dims]=\"dims\"\n          [orient]=\"barOrientation.Vertical\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"groupScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [xAxisOffset]=\"dataLabelMaxHeight.negative\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"valueScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g *ngIf=\"!isSSR\">\n          <svg:g\n            ngx-charts-series-vertical\n            *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n            [@animationState]=\"'active'\"\n            [attr.transform]=\"groupTransform(group)\"\n            [activeEntries]=\"activeEntries\"\n            [xScale]=\"innerScale\"\n            [yScale]=\"valueScale\"\n            [colors]=\"colors\"\n            [series]=\"group.series\"\n            [dims]=\"dims\"\n            [gradient]=\"gradient\"\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [showDataLabel]=\"showDataLabel\"\n            [dataLabelFormatting]=\"dataLabelFormatting\"\n            [seriesName]=\"group.name\"\n            [roundEdges]=\"roundEdges\"\n            [animations]=\"animations\"\n            [noBarWhenZero]=\"noBarWhenZero\"\n            (select)=\"onClick($event, group)\"\n            (activate)=\"onActivate($event, group)\"\n            (deactivate)=\"onDeactivate($event, group)\"\n            (dataLabelHeightChanged)=\"onDataLabelMaxHeightChanged($event, index)\"\n          ></svg:g>\n        </svg:g>\n        <svg:g *ngIf=\"isSSR\">\n          <svg:g\n            ngx-charts-series-vertical\n            *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n            [attr.transform]=\"groupTransform(group)\"\n            [activeEntries]=\"activeEntries\"\n            [xScale]=\"innerScale\"\n            [yScale]=\"valueScale\"\n            [colors]=\"colors\"\n            [series]=\"group.series\"\n            [dims]=\"dims\"\n            [gradient]=\"gradient\"\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [showDataLabel]=\"showDataLabel\"\n            [dataLabelFormatting]=\"dataLabelFormatting\"\n            [seriesName]=\"group.name\"\n            [roundEdges]=\"roundEdges\"\n            [animations]=\"animations\"\n            [noBarWhenZero]=\"noBarWhenZero\"\n            (select)=\"onClick($event, group)\"\n            (activate)=\"onActivate($event, group)\"\n            (deactivate)=\"onDeactivate($event, group)\"\n            (dataLabelHeightChanged)=\"onDataLabelMaxHeightChanged($event, index)\"\n          ></svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1,\n          transform: '*'\n        }),\n        animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class BarVertical2DComponent extends BaseChartComponent {\n  @Input() legend: boolean = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis;\n  @Input() yAxis;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() scaleType: ScaleType = ScaleType.Ordinal;\n  @Input() gradient: boolean;\n  @Input() showGridLines: boolean = true;\n  @Input() activeEntries: any[] = [];\n  @Input() schemeType: ScaleType = ScaleType.Ordinal;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() groupPadding: number = 16;\n  @Input() barPadding: number = 8;\n  @Input() roundDomains: boolean = false;\n  @Input() roundEdges: boolean = true;\n  @Input() yScaleMax: number;\n  @Input() showDataLabel: boolean = false;\n  @Input() dataLabelFormatting: any;\n  @Input() noBarWhenZero: boolean = true;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  groupDomain: string[];\n  innerDomain: string[];\n  valueDomain: [number, number];\n  groupScale: any;\n  innerScale: any;\n  valueScale: any;\n  transform: string;\n  colors: ColorHelper;\n  margin: number[] = [10, 20, 10, 20];\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  legendOptions: LegendOptions;\n  dataLabelMaxHeight: any = { negative: 0, positive: 0 };\n  isSSR = false;\n\n  barOrientation = BarOrientation;\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  update(): void {\n    super.update();\n\n    if (!this.showDataLabel) {\n      this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n    }\n    this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    if (this.showDataLabel) {\n      this.dims.height -= this.dataLabelMaxHeight.negative;\n    }\n\n    this.formatDates();\n\n    this.groupDomain = this.getGroupDomain();\n    this.innerDomain = this.getInnerDomain();\n    this.valueDomain = this.getValueDomain();\n\n    this.groupScale = this.getGroupScale();\n    this.innerScale = this.getInnerScale();\n    this.valueScale = this.getValueScale();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n  }\n\n  onDataLabelMaxHeightChanged(event, groupIndex: number): void {\n    if (event.size.negative) {\n      this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n    } else {\n      this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n    }\n    if (groupIndex === this.results.length - 1) {\n      setTimeout(() => this.update());\n    }\n  }\n\n  getGroupScale(): any {\n    const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n\n    return scaleBand()\n      .rangeRound([0, this.dims.width])\n      .paddingInner(spacing)\n      .paddingOuter(spacing / 2)\n      .domain(this.groupDomain);\n  }\n\n  getInnerScale(): any {\n    const width = this.groupScale.bandwidth();\n    const spacing = this.innerDomain.length / (width / this.barPadding + 1);\n    return scaleBand().rangeRound([0, width]).paddingInner(spacing).domain(this.innerDomain);\n  }\n\n  getValueScale(): any {\n    const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  getGroupDomain(): string[] {\n    const domain = [];\n    for (const group of this.results) {\n      if (!domain.includes(group.label)) {\n        domain.push(group.label);\n      }\n    }\n\n    return domain;\n  }\n\n  getInnerDomain(): string[] {\n    const domain = [];\n    for (const group of this.results) {\n      for (const d of group.series) {\n        if (!domain.includes(d.label)) {\n          domain.push(d.label);\n        }\n      }\n    }\n\n    return domain;\n  }\n\n  getValueDomain(): [number, number] {\n    const domain = [];\n    for (const group of this.results) {\n      for (const d of group.series) {\n        if (!domain.includes(d.value)) {\n          domain.push(d.value);\n        }\n      }\n    }\n\n    const min = Math.min(0, ...domain);\n    const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(0, ...domain);\n\n    return [min, max];\n  }\n\n  groupTransform(group: DataItem): string {\n    return `translate(${this.groupScale(group.label)}, 0)`;\n  }\n\n  onClick(data, group?: DataItem): void {\n    if (group) {\n      data.series = group.name;\n    }\n\n    this.select.emit(data);\n  }\n\n  trackBy: TrackByFunction<DataItem> = (index: number, item: DataItem) => {\n    return item.name;\n  };\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.innerDomain;\n    } else {\n      domain = this.valueDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.innerDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.valueDomain;\n      opts.colors = this.colors.scale;\n    }\n\n    return opts;\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onActivate(event, group: DataItem, fromLegend: boolean = false): void {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    const items = this.results\n      .map(g => g.series)\n      .flat()\n      .filter(i => {\n        if (fromLegend) {\n          return i.label === item.name;\n        } else {\n          return i.name === item.name && i.series === item.series;\n        }\n      });\n\n    this.activeEntries = [...items];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(event, group: DataItem, fromLegend: boolean = false): void {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    this.activeEntries = this.activeEntries.filter(i => {\n      if (fromLegend) {\n        return i.label !== item.name;\n      } else {\n        return !(i.name === item.name && i.series === item.series);\n      }\n    });\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  TrackByFunction\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { Series } from '../models/chart-data.model';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n  selector: 'ngx-charts-bar-vertical-normalized',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g *ngIf=\"!isSSR\">\n          <svg:g\n            *ngFor=\"let group of results; trackBy: trackBy\"\n            [@animationState]=\"'active'\"\n            [attr.transform]=\"groupTransform(group)\"\n          >\n            <svg:g\n              ngx-charts-series-vertical\n              [type]=\"barChartType.Normalized\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [activeEntries]=\"activeEntries\"\n              [colors]=\"colors\"\n              [series]=\"group.series\"\n              [dims]=\"dims\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [seriesName]=\"group.name\"\n              [animations]=\"animations\"\n              [noBarWhenZero]=\"noBarWhenZero\"\n              (select)=\"onClick($event, group)\"\n              (activate)=\"onActivate($event, group)\"\n              (deactivate)=\"onDeactivate($event, group)\"\n            ></svg:g>\n          </svg:g>\n        </svg:g>\n        <svg:g *ngIf=\"isSSR\">\n          <svg:g *ngFor=\"let group of results; trackBy: trackBy\" [attr.transform]=\"groupTransform(group)\">\n            <svg:g\n              ngx-charts-series-vertical\n              [type]=\"barChartType.Normalized\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [activeEntries]=\"activeEntries\"\n              [colors]=\"colors\"\n              [series]=\"group.series\"\n              [dims]=\"dims\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [seriesName]=\"group.name\"\n              [animations]=\"animations\"\n              [noBarWhenZero]=\"noBarWhenZero\"\n              (select)=\"onClick($event, group)\"\n              (activate)=\"onActivate($event, group)\"\n              (deactivate)=\"onDeactivate($event, group)\"\n            ></svg:g>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1,\n          transform: '*'\n        }),\n        animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class BarVerticalNormalizedComponent extends BaseChartComponent {\n  @Input() legend: boolean = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis;\n  @Input() yAxis;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() gradient: boolean;\n  @Input() showGridLines: boolean = true;\n  @Input() activeEntries: any[] = [];\n  @Input() schemeType: ScaleType = ScaleType.Ordinal;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() barPadding: number = 8;\n  @Input() roundDomains: boolean = false;\n  @Input() noBarWhenZero: boolean = true;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  groupDomain: string[];\n  innerDomain: string[];\n  valueDomain: [number, number] = [0, 100];\n  xScale: any;\n  yScale: any;\n  transform: string;\n  colors: ColorHelper;\n  margin: number[] = [10, 20, 10, 20];\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  legendOptions: LegendOptions;\n  isSSR = false;\n\n  barChartType = BarChartType;\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    this.formatDates();\n\n    this.groupDomain = this.getGroupDomain();\n    this.innerDomain = this.getInnerDomain();\n\n    this.xScale = this.getXScale();\n    this.yScale = this.getYScale();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n  }\n\n  getGroupDomain(): string[] {\n    const domain = [];\n    for (const group of this.results) {\n      if (!domain.includes(group.label)) {\n        domain.push(group.label);\n      }\n    }\n\n    return domain;\n  }\n\n  getInnerDomain(): string[] {\n    const domain = [];\n    for (const group of this.results) {\n      for (const d of group.series) {\n        if (!domain.includes(d.label)) {\n          domain.push(d.label);\n        }\n      }\n    }\n\n    return domain;\n  }\n\n  getXScale(): any {\n    const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n\n    return scaleBand().rangeRound([0, this.dims.width]).paddingInner(spacing).domain(this.groupDomain);\n  }\n\n  getYScale(): any {\n    const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  groupTransform(group: Series): string {\n    return `translate(${this.xScale(group.name)}, 0)`;\n  }\n\n  onClick(data, group?: Series) {\n    if (group) {\n      data.series = group.name;\n    }\n\n    this.select.emit(data);\n  }\n\n  trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n    return item.name;\n  };\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.innerDomain;\n    } else {\n      domain = this.valueDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.innerDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.valueDomain;\n      opts.colors = this.colors.scale;\n    }\n\n    return opts;\n  }\n\n  updateYAxisWidth({ width }: { width: number }) {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }) {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onActivate(event, group: Series, fromLegend: boolean = false) {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    const items = this.results\n      .map(g => g.series)\n      .flat()\n      .filter(i => {\n        if (fromLegend) {\n          return i.label === item.name;\n        } else {\n          return i.name === item.name && i.series === item.series;\n        }\n      });\n\n    this.activeEntries = [...items];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(event, group: Series, fromLegend: boolean = false) {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    this.activeEntries = this.activeEntries.filter(i => {\n      if (fromLegend) {\n        return i.label !== item.name;\n      } else {\n        return !(i.name === item.name && i.series === item.series);\n      }\n    });\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  TrackByFunction\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleBand, scaleLinear } from 'd3-scale';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { Series } from '../models/chart-data.model';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { BarChartType } from './types/bar-chart-type.enum';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n  selector: 'ngx-charts-bar-vertical-stacked',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [xAxisOffset]=\"dataLabelMaxHeight.negative\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g *ngIf=\"!isSSR\">\n          <svg:g\n            *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n            [@animationState]=\"'active'\"\n            [attr.transform]=\"groupTransform(group)\"\n          >\n            <svg:g\n              ngx-charts-series-vertical\n              [type]=\"barChartType.Stacked\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [activeEntries]=\"activeEntries\"\n              [colors]=\"colors\"\n              [series]=\"group.series\"\n              [dims]=\"dims\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [showDataLabel]=\"showDataLabel\"\n              [dataLabelFormatting]=\"dataLabelFormatting\"\n              [seriesName]=\"group.name\"\n              [animations]=\"animations\"\n              [noBarWhenZero]=\"noBarWhenZero\"\n              (select)=\"onClick($event, group)\"\n              (activate)=\"onActivate($event, group)\"\n              (deactivate)=\"onDeactivate($event, group)\"\n              (dataLabelHeightChanged)=\"onDataLabelMaxHeightChanged($event, index)\"\n            ></svg:g>\n          </svg:g>\n        </svg:g>\n        <svg:g *ngIf=\"isSSR\">\n          <svg:g\n            *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n            [attr.transform]=\"groupTransform(group)\"\n          >\n            <svg:g\n              ngx-charts-series-vertical\n              [type]=\"barChartType.Stacked\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [activeEntries]=\"activeEntries\"\n              [colors]=\"colors\"\n              [series]=\"group.series\"\n              [dims]=\"dims\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [showDataLabel]=\"showDataLabel\"\n              [dataLabelFormatting]=\"dataLabelFormatting\"\n              [seriesName]=\"group.name\"\n              [animations]=\"animations\"\n              [noBarWhenZero]=\"noBarWhenZero\"\n              (select)=\"onClick($event, group)\"\n              (activate)=\"onActivate($event, group)\"\n              (deactivate)=\"onDeactivate($event, group)\"\n              (dataLabelHeightChanged)=\"onDataLabelMaxHeightChanged($event, index)\"\n            ></svg:g>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1,\n          transform: '*'\n        }),\n        animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class BarVerticalStackedComponent extends BaseChartComponent {\n  @Input() legend: boolean = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis;\n  @Input() yAxis;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() gradient: boolean;\n  @Input() showGridLines: boolean = true;\n  @Input() activeEntries: any[] = [];\n  @Input() declare schemeType: ScaleType;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() barPadding: number = 8;\n  @Input() roundDomains: boolean = false;\n  @Input() yScaleMax: number;\n  @Input() showDataLabel: boolean = false;\n  @Input() dataLabelFormatting: any;\n  @Input() noBarWhenZero: boolean = true;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  groupDomain: string[];\n  innerDomain: string[];\n  valueDomain: [number, number];\n  xScale: any;\n  yScale: any;\n  transform: string;\n  tickFormatting: (label: string) => string;\n  colors: ColorHelper;\n  margin: number[] = [10, 20, 10, 20];\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  legendOptions: LegendOptions;\n  dataLabelMaxHeight: any = { negative: 0, positive: 0 };\n  isSSR = false;\n\n  barChartType = BarChartType;\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    if (!this.showDataLabel) {\n      this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n    }\n    this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    if (this.showDataLabel) {\n      this.dims.height -= this.dataLabelMaxHeight.negative;\n    }\n\n    this.formatDates();\n\n    this.groupDomain = this.getGroupDomain();\n    this.innerDomain = this.getInnerDomain();\n    this.valueDomain = this.getValueDomain();\n\n    this.xScale = this.getXScale();\n    this.yScale = this.getYScale();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n  }\n\n  getGroupDomain(): string[] {\n    const domain = [];\n    for (const group of this.results) {\n      if (!domain.includes(group.label)) {\n        domain.push(group.label);\n      }\n    }\n    return domain;\n  }\n\n  getInnerDomain(): string[] {\n    const domain = [];\n    for (const group of this.results) {\n      for (const d of group.series) {\n        if (!domain.includes(d.label)) {\n          domain.push(d.label);\n        }\n      }\n    }\n    return domain;\n  }\n\n  getValueDomain(): [number, number] {\n    const domain = [];\n    let smallest = 0;\n    let biggest = 0;\n    for (const group of this.results) {\n      let smallestSum = 0;\n      let biggestSum = 0;\n      for (const d of group.series) {\n        if (d.value < 0) {\n          smallestSum += d.value;\n        } else {\n          biggestSum += d.value;\n        }\n        smallest = d.value < smallest ? d.value : smallest;\n        biggest = d.value > biggest ? d.value : biggest;\n      }\n      domain.push(smallestSum);\n      domain.push(biggestSum);\n    }\n    domain.push(smallest);\n    domain.push(biggest);\n\n    const min = Math.min(0, ...domain);\n    const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(...domain);\n    return [min, max];\n  }\n\n  getXScale(): any {\n    const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n    return scaleBand().rangeRound([0, this.dims.width]).paddingInner(spacing).domain(this.groupDomain);\n  }\n\n  getYScale(): any {\n    const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  onDataLabelMaxHeightChanged(event, groupIndex: number) {\n    if (event.size.negative) {\n      this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n    } else {\n      this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n    }\n    if (groupIndex === this.results.length - 1) {\n      setTimeout(() => this.update());\n    }\n  }\n\n  groupTransform(group: Series): string {\n    return `translate(${this.xScale(group.name) || 0}, 0)`;\n  }\n\n  onClick(data, group?: Series) {\n    if (group) {\n      data.series = group.name;\n    }\n\n    this.select.emit(data);\n  }\n\n  trackBy: TrackByFunction<Series> = (index: number, item: Series) => {\n    return item.name;\n  };\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.innerDomain;\n    } else {\n      domain = this.valueDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.innerDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.valueDomain;\n      opts.colors = this.colors.scale;\n    }\n\n    return opts;\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onActivate(event, group, fromLegend: boolean = false): void {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    const items = this.results\n      .map(g => g.series)\n      .flat()\n      .filter(i => {\n        if (fromLegend) {\n          return i.label === item.name;\n        } else {\n          return i.name === item.name && i.series === item.series;\n        }\n      });\n\n    this.activeEntries = [...items];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(event, group: Series, fromLegend: boolean = false) {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    this.activeEntries = this.activeEntries.filter(i => {\n      if (fromLegend) {\n        return i.label !== item.name;\n      } else {\n        return !(i.name === item.name && i.series === item.series);\n      }\n    });\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { BarComponent } from './bar.component';\nimport { BarHorizontalComponent } from './bar-horizontal.component';\nimport { BarHorizontal2DComponent } from './bar-horizontal-2d.component';\nimport { BarHorizontalNormalizedComponent } from './bar-horizontal-normalized.component';\nimport { BarHorizontalStackedComponent } from './bar-horizontal-stacked.component';\nimport { BarVerticalComponent } from './bar-vertical.component';\nimport { BarVertical2DComponent } from './bar-vertical-2d.component';\nimport { BarVerticalNormalizedComponent } from './bar-vertical-normalized.component';\nimport { BarVerticalStackedComponent } from './bar-vertical-stacked.component';\nimport { SeriesHorizontal } from './series-horizontal.component';\nimport { SeriesVerticalComponent } from './series-vertical.component';\nimport { BarLabelComponent } from './bar-label.component';\n\n@NgModule({\n  imports: [ChartCommonModule],\n  declarations: [\n    BarComponent,\n    BarHorizontalComponent,\n    BarHorizontal2DComponent,\n    BarHorizontalNormalizedComponent,\n    BarHorizontalStackedComponent,\n    BarVerticalComponent,\n    BarVertical2DComponent,\n    BarVerticalNormalizedComponent,\n    BarVerticalStackedComponent,\n    BarLabelComponent,\n    SeriesHorizontal,\n    SeriesVerticalComponent\n  ],\n  exports: [\n    BarComponent,\n    BarHorizontalComponent,\n    BarHorizontal2DComponent,\n    BarHorizontalNormalizedComponent,\n    BarHorizontalStackedComponent,\n    BarVerticalComponent,\n    BarVertical2DComponent,\n    BarVerticalNormalizedComponent,\n    BarVerticalStackedComponent,\n    BarLabelComponent,\n    SeriesHorizontal,\n    SeriesVerticalComponent\n  ]\n})\nexport class BarChartModule {}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  HostListener,\n  ElementRef,\n  SimpleChanges,\n  OnChanges,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef\n} from '@angular/core';\nimport { select, BaseType } from 'd3-selection';\nimport { interpolate } from 'd3-interpolate';\nimport { easeSinInOut } from 'd3-ease';\n\nimport { roundedRect } from '../common/shape.helper';\nimport { id } from '../utils/id';\nimport { IBoxModel } from '../models/chart-data.model';\nimport { IPoint, IVector2D } from '../models/coordinates.model';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { Gradient } from '../common/types/gradient.interface';\n\ntype LineCoordinates = [IVector2D, IVector2D, IVector2D, IVector2D];\n\nexport function clonePoint(original: IPoint): IPoint {\n  if (!original) {\n    return original;\n  }\n  return {\n    x: original.x,\n    y: original.y\n  };\n}\n\nexport function cloneVector2d(original: IVector2D): IVector2D {\n  if (!original) {\n    return original;\n  }\n  return {\n    v1: clonePoint(original.v1),\n    v2: clonePoint(original.v2)\n  };\n}\n\nexport function cloneLineCoordinates(original: LineCoordinates): LineCoordinates {\n  if (!original) {\n    return original;\n  }\n  return [\n    cloneVector2d(original[0]),\n    cloneVector2d(original[1]),\n    cloneVector2d(original[2]),\n    cloneVector2d(original[3])\n  ];\n}\n\n@Component({\n  selector: 'g[ngx-charts-box]',\n  template: `\n    <svg:defs>\n      <svg:g\n        *ngIf=\"hasGradient\"\n        ngx-charts-svg-linear-gradient\n        [orientation]=\"BarOrientation.Vertical\"\n        [name]=\"gradientId\"\n        [stops]=\"gradientStops\"\n      />\n      <svg:mask [attr.id]=\"maskLineId\">\n        <svg:g>\n          <rect height=\"100%\" width=\"100%\" fill=\"white\" fill-opacity=\"1\" />\n          <path class=\"bar\" [attr.d]=\"boxPath\" fill=\"black\" fill-opacity=\"1\" />\n        </svg:g>\n      </svg:mask>\n    </svg:defs>\n    <svg:g>\n      <svg:path\n        class=\"bar\"\n        role=\"img\"\n        tabIndex=\"-1\"\n        [class.active]=\"isActive\"\n        [class.hidden]=\"hideBar\"\n        [attr.d]=\"boxPath\"\n        [attr.stroke]=\"strokeColor\"\n        [attr.stroke-width]=\"boxStrokeWidth\"\n        [attr.aria-label]=\"ariaLabel\"\n        [attr.fill]=\"hasGradient ? gradientFill : fill\"\n        (click)=\"select.emit(data)\"\n      />\n      <svg:line\n        *ngFor=\"let line of lineCoordinates; let i = index\"\n        class=\"bar-line\"\n        [class.hidden]=\"hideBar\"\n        [attr.x1]=\"line.v1.x\"\n        [attr.y1]=\"line.v1.y\"\n        [attr.x2]=\"line.v2.x\"\n        [attr.y2]=\"line.v2.y\"\n        [attr.stroke]=\"strokeColor\"\n        [attr.stroke-width]=\"i === 2 ? medianLineWidth : whiskerStrokeWidth\"\n        [attr.mask]=\"i ? undefined : maskLine\"\n        fill=\"none\"\n      />\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class BoxComponent implements OnChanges {\n  @Input() strokeColor: string;\n  @Input() strokeWidth: number;\n  @Input() fill: string;\n  @Input() data: IBoxModel;\n  @Input() width: number;\n  @Input() height: number;\n  @Input() x: number;\n  @Input() y: number;\n  @Input() lineCoordinates: LineCoordinates;\n  @Input() roundEdges: boolean = true;\n  @Input() gradient: boolean = false;\n  @Input() gradientStops: Gradient[];\n  @Input() offset: number = 0;\n  @Input() isActive: boolean = false;\n  @Input() animations: boolean = true;\n  @Input() ariaLabel: string;\n  @Input() noBarWhenZero: boolean = true;\n\n  @Output() select: EventEmitter<IBoxModel> = new EventEmitter();\n  @Output() activate: EventEmitter<IBoxModel> = new EventEmitter();\n  @Output() deactivate: EventEmitter<IBoxModel> = new EventEmitter();\n\n  BarOrientation = BarOrientation;\n\n  nativeElm: any;\n\n  // Path related properties.\n  oldPath: string;\n  boxPath: string;\n  oldLineCoordinates: LineCoordinates;\n\n  // Color related properties.\n  gradientId: string;\n  gradientFill: string;\n  initialized: boolean = false;\n  hasGradient: boolean = false;\n  hideBar: boolean = false;\n\n  /** Mask Path to cut the line on the box part. */\n  maskLine: string;\n  /** Mask Path Id to keep track of the mask element */\n  maskLineId: string;\n\n  boxStrokeWidth: number;\n  whiskerStrokeWidth: number;\n  medianLineWidth: number;\n\n  constructor(element: ElementRef, protected cd: ChangeDetectorRef) {\n    this.nativeElm = element.nativeElement;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!this.initialized) {\n      this.loadAnimation();\n      this.initialized = true;\n    } else {\n      this.update();\n    }\n  }\n\n  update(): void {\n    this.boxStrokeWidth = Math.max(this.strokeWidth, 1);\n    this.whiskerStrokeWidth = Math.max(this.strokeWidth / 2, 1);\n    this.medianLineWidth = 1.5 * this.strokeWidth;\n\n    this.gradientId = 'grad' + id().toString();\n    this.gradientFill = `url(#${this.gradientId})`;\n\n    if (this.gradient) {\n      this.gradientStops = this.getGradient();\n      this.hasGradient = true;\n    } else {\n      this.hasGradient = false;\n    }\n\n    this.updateLineEl();\n    this.updatePathEl();\n    this.checkToHideBar();\n    this.maskLineId = 'mask' + id().toString();\n    this.maskLine = `url(#${this.maskLineId})`;\n\n    if (this.cd) {\n      this.cd.markForCheck();\n    }\n  }\n\n  loadAnimation(): void {\n    this.boxPath = this.oldPath = this.getStartingPath();\n    this.oldLineCoordinates = this.getStartingLineCoordinates();\n    setTimeout(this.update.bind(this), 100);\n  }\n\n  updatePathEl(): void {\n    const nodeBar = select(this.nativeElm).selectAll('.bar');\n    const path = this.getPath();\n    if (this.animations) {\n      nodeBar\n        .attr('d', this.oldPath)\n        .transition()\n        .ease(easeSinInOut)\n        .duration(500)\n        .attrTween('d', this.pathTween(path, 4));\n    } else {\n      nodeBar.attr('d', path);\n    }\n    this.oldPath = path;\n  }\n\n  updateLineEl(): void {\n    const lineEl = select(this.nativeElm).selectAll('.bar-line');\n    const lineCoordinates = this.lineCoordinates;\n    const oldLineCoordinates = this.oldLineCoordinates;\n    if (this.animations) {\n      lineEl\n        .attr('x1', (_, index) => oldLineCoordinates[index].v1.x)\n        .attr('y1', (_, index) => oldLineCoordinates[index].v1.y)\n        .attr('x2', (_, index) => oldLineCoordinates[index].v2.x)\n        .attr('y2', (_, index) => oldLineCoordinates[index].v2.y)\n        .transition()\n        .ease(easeSinInOut)\n        .duration(500)\n        .attr('x1', (_, index) => lineCoordinates[index].v1.x)\n        .attr('y1', (_, index) => lineCoordinates[index].v1.y)\n        .attr('x2', (_, index) => lineCoordinates[index].v2.x)\n        .attr('y2', (_, index) => lineCoordinates[index].v2.y);\n    } else {\n      lineEl\n        .attr('x1', (_, index) => lineCoordinates[index].v1.x)\n        .attr('y1', (_, index) => lineCoordinates[index].v1.y)\n        .attr('x2', (_, index) => lineCoordinates[index].v2.x)\n        .attr('y2', (_, index) => lineCoordinates[index].v2.y);\n    }\n    this.oldLineCoordinates = [...lineCoordinates];\n  }\n\n  /**\n   * See [D3 Selections](https://www.d3indepth.com/selections/)\n   * @param d The joined data.\n   * @param index The index of the element within the selection\n   * @param node The node element (Line).\n   */\n  lineTween(attr: string, d: any, index: number, node: BaseType[] | ArrayLike<BaseType>) {\n    const nodeLineEl = node[index] as SVGLineElement;\n    return nodeLineEl[attr].baseVal.value;\n  }\n\n  // TODO: Refactor into another .ts file if https://github.com/swimlane/ngx-charts/pull/1179 gets merged.\n  pathTween(d1: string, precision: number) {\n    return function () {\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      const path0 = this;\n      const path1 = this.cloneNode();\n      path1.setAttribute('d', d1);\n      const n0 = path0?.getTotalLength();\n      const n1 = path1?.getTotalLength();\n      // Uniform sampling of distance based on specified precision.\n      const distances = [0];\n      let i = 0;\n      const dt = precision / Math.max(n0, n1);\n      while (i < 1) {\n        distances.push(i);\n        i += dt;\n      }\n      distances.push(1);\n\n      // Compute point-interpolators at each distance.\n      const points = distances.map((t: number) => {\n        const p0 = path0.getPointAtLength(t * n0);\n        const p1 = path1.getPointAtLength(t * n1);\n        return interpolate([p0.x, p0.y], [p1.x, p1.y]);\n      });\n\n      // 't': T is the fraction of time (between 0 and 1) since the transition began.\n      return (t: any) => {\n        return t < 1 ? 'M' + points.map((p: (t: number) => any[]) => p(t)).join('L') : d1;\n      };\n    };\n  }\n\n  getStartingPath(): string {\n    if (!this.animations) {\n      return this.getPath();\n    }\n\n    const radius = this.roundEdges ? 1 : 0;\n    const { x, y } = this.lineCoordinates[2].v1;\n\n    return roundedRect(x - this.width, y - 1, this.width, 2, radius, this.edges);\n  }\n\n  getPath(): string {\n    const radius = this.getRadius();\n    let path = '';\n\n    path = roundedRect(this.x, this.y, this.width, this.height, Math.min(this.height, radius), this.edges);\n\n    return path;\n  }\n\n  getStartingLineCoordinates(): LineCoordinates {\n    if (!this.animations) {\n      return [...this.lineCoordinates];\n    }\n\n    const lineCoordinates: LineCoordinates = cloneLineCoordinates(this.lineCoordinates);\n\n    lineCoordinates[1].v1.y =\n      lineCoordinates[1].v2.y =\n      lineCoordinates[3].v1.y =\n      lineCoordinates[3].v2.y =\n      lineCoordinates[0].v1.y =\n      lineCoordinates[0].v2.y =\n        lineCoordinates[2].v1.y;\n\n    return lineCoordinates;\n  }\n\n  getRadius(): number {\n    let radius = 0;\n\n    if (this.roundEdges && this.height > 5 && this.width > 5) {\n      radius = Math.floor(Math.min(5, this.height / 2, this.width / 2));\n    }\n\n    return radius;\n  }\n\n  getGradient(): Gradient[] {\n    return [\n      {\n        offset: 0,\n        color: this.fill,\n        opacity: this.getStartOpacity()\n      },\n      {\n        offset: 100,\n        color: this.fill,\n        opacity: 1\n      }\n    ];\n  }\n\n  getStartOpacity(): number {\n    if (this.roundEdges) {\n      return 0.2;\n    } else {\n      return 0.5;\n    }\n  }\n\n  get edges(): boolean[] {\n    let edges: [boolean, boolean, boolean, boolean] = [false, false, false, false];\n    if (this.roundEdges) {\n      edges = [true, true, true, true];\n    }\n    return edges;\n  }\n\n  @HostListener('mouseenter')\n  onMouseEnter(): void {\n    this.activate.emit(this.data);\n  }\n\n  @HostListener('mouseleave')\n  onMouseLeave(): void {\n    this.deactivate.emit(this.data);\n  }\n\n  private checkToHideBar(): void {\n    this.hideBar = this.noBarWhenZero && this.height === 0;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  TemplateRef\n} from '@angular/core';\nimport { min, max, quantile } from 'd3-array';\nimport { ScaleLinear, ScaleBand } from 'd3-scale';\nimport { IBoxModel, BoxChartSeries, DataItem } from '../models/chart-data.model';\nimport { IVector2D } from '../models/coordinates.model';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { ColorHelper } from '../common/color.helper';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n  selector: 'g[ngx-charts-box-series]',\n  template: `\n    <svg:g\n      ngx-charts-box\n      [@animationState]=\"'active'\"\n      [@.disabled]=\"!animations\"\n      [width]=\"box.width\"\n      [height]=\"box.height\"\n      [x]=\"box.x\"\n      [y]=\"box.y\"\n      [roundEdges]=\"box.roundEdges\"\n      [fill]=\"box.color\"\n      [gradientStops]=\"box.gradientStops\"\n      [strokeColor]=\"strokeColor\"\n      [strokeWidth]=\"strokeWidth\"\n      [data]=\"box.data\"\n      [lineCoordinates]=\"box.lineCoordinates\"\n      [gradient]=\"gradient\"\n      [ariaLabel]=\"box.ariaLabel\"\n      (select)=\"onClick($event)\"\n      (activate)=\"activate.emit($event)\"\n      (deactivate)=\"deactivate.emit($event)\"\n      ngx-tooltip\n      [tooltipDisabled]=\"tooltipDisabled\"\n      [tooltipPlacement]=\"tooltipPlacement\"\n      [tooltipType]=\"tooltipType\"\n      [tooltipTitle]=\"tooltipTitle\"\n      [tooltipTemplate]=\"tooltipTemplate\"\n      [tooltipContext]=\"box.data\"\n      [animations]=\"animations\"\n    ></svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1\n        }),\n        animate(500, style({ opacity: 0 }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class BoxSeriesComponent implements OnChanges {\n  @Input() dims: ViewDimensions;\n  @Input() series: BoxChartSeries;\n  @Input() xScale: ScaleBand<string>;\n  @Input() yScale: ScaleLinear<number, number>;\n  @Input() colors: ColorHelper;\n  @Input() animations: boolean = true;\n  @Input() strokeColor: string;\n  @Input() strokeWidth: number;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipTemplate: TemplateRef<any>;\n  @Input() tooltipPlacement: PlacementTypes;\n  @Input() tooltipType: StyleTypes;\n  @Input() roundEdges: boolean;\n  @Input() gradient: boolean = false;\n\n  @Output() select: EventEmitter<IBoxModel> = new EventEmitter();\n  @Output() activate: EventEmitter<IBoxModel> = new EventEmitter();\n  @Output() deactivate: EventEmitter<IBoxModel> = new EventEmitter();\n\n  box: IBoxModel;\n  counts: DataItem[];\n  quartiles: [number, number, number];\n  whiskers: [number, number];\n  lineCoordinates: [IVector2D, IVector2D, IVector2D, IVector2D];\n  tooltipTitle: string;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  onClick(data: IBoxModel): void {\n    this.select.emit(data);\n  }\n\n  update(): void {\n    this.updateTooltipSettings();\n    const width = this.series && this.series.series.length ? Math.round(this.xScale.bandwidth()) : null;\n    const seriesName = this.series.name;\n\n    // Calculate Quantile and Whiskers for each box serie.\n    this.counts = this.series.series;\n\n    const mappedCounts = this.counts.map(serie => Number(serie.value));\n    this.whiskers = [min(mappedCounts), max(mappedCounts)];\n\n    // We get the group count and must sort it in order to retrieve quantiles.\n    const groupCounts = this.counts.map(item => item.value).sort((a, b) => Number(a) - Number(b));\n    this.quartiles = this.getBoxQuantiles(groupCounts);\n    this.lineCoordinates = this.getLinesCoordinates(seriesName.toString(), this.whiskers, this.quartiles, width);\n\n    const value = this.quartiles[1];\n    const formattedLabel = formatLabel(seriesName);\n    const box: IBoxModel = {\n      value,\n      data: this.counts,\n      label: seriesName,\n      formattedLabel,\n      width,\n      height: 0,\n      x: 0,\n      y: 0,\n      roundEdges: this.roundEdges,\n      quartiles: this.quartiles,\n      lineCoordinates: this.lineCoordinates\n    };\n\n    box.height = Math.abs(this.yScale(this.quartiles[0]) - this.yScale(this.quartiles[2]));\n    box.x = this.xScale(seriesName.toString());\n    box.y = this.yScale(this.quartiles[2]);\n    box.ariaLabel = formattedLabel + ' - Median: ' + value.toLocaleString();\n\n    if (this.colors.scaleType === ScaleType.Ordinal) {\n      box.color = this.colors.getColor(seriesName);\n    } else {\n      box.color = this.colors.getColor(this.quartiles[1]);\n      box.gradientStops = this.colors.getLinearGradientStops(this.quartiles[0], this.quartiles[2]);\n    }\n\n    const tooltipLabel = formattedLabel;\n    const formattedTooltipLabel = `\n    <span class=\"tooltip-label\">${escapeLabel(tooltipLabel)}</span>\n    <span class=\"tooltip-val\">\n      • Q1: ${this.quartiles[0]} • Q2: ${this.quartiles[1]} • Q3: ${this.quartiles[2]}<br>\n      • Min: ${this.whiskers[0]} • Max: ${this.whiskers[1]}\n    </span>`;\n\n    box.tooltipText = this.tooltipDisabled ? undefined : formattedTooltipLabel;\n    this.tooltipTitle = this.tooltipDisabled ? undefined : box.tooltipText;\n\n    this.box = box;\n  }\n\n  getBoxQuantiles(inputData: Array<number | Date>): [number, number, number] {\n    return [quantile(inputData, 0.25), quantile(inputData, 0.5), quantile(inputData, 0.75)];\n  }\n\n  getLinesCoordinates(\n    seriesName: string,\n    whiskers: [number, number],\n    quartiles: [number, number, number],\n    barWidth: number\n  ): [IVector2D, IVector2D, IVector2D, IVector2D] {\n    // The X value is not being centered, so had to sum half the width to align it.\n    const commonX = this.xScale(seriesName);\n    const offsetX = commonX + barWidth / 2;\n\n    const medianLineWidth = Math.max(barWidth + 4 * this.strokeWidth, 1);\n    const whiskerLineWidth = Math.max(barWidth / 3, 1);\n\n    const whiskerZero = this.yScale(whiskers[0]);\n    const whiskerOne = this.yScale(whiskers[1]);\n    const median = this.yScale(quartiles[1]);\n\n    const topLine: IVector2D = {\n      v1: { x: offsetX + whiskerLineWidth / 2, y: whiskerZero },\n      v2: { x: offsetX - whiskerLineWidth / 2, y: whiskerZero }\n    };\n    const medianLine: IVector2D = {\n      v1: { x: offsetX + medianLineWidth / 2, y: median },\n      v2: { x: offsetX - medianLineWidth / 2, y: median }\n    };\n    const bottomLine: IVector2D = {\n      v1: { x: offsetX + whiskerLineWidth / 2, y: whiskerOne },\n      v2: { x: offsetX - whiskerLineWidth / 2, y: whiskerOne }\n    };\n    const verticalLine: IVector2D = {\n      v1: { x: offsetX, y: whiskerZero },\n      v2: { x: offsetX, y: whiskerOne }\n    };\n    return [verticalLine, topLine, medianLine, bottomLine];\n  }\n\n  updateTooltipSettings() {\n    if (this.tooltipDisabled) {\n      this.tooltipPlacement = undefined;\n      this.tooltipType = undefined;\n    } else {\n      if (!this.tooltipPlacement) {\n        this.tooltipPlacement = PlacementTypes.Top;\n      }\n      if (!this.tooltipType) {\n        this.tooltipType = StyleTypes.tooltip;\n      }\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef,\n  ViewEncapsulation\n} from '@angular/core';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { ColorHelper } from '../common/color.helper';\nimport { BoxChartMultiSeries, BoxChartSeries, IBoxModel, StringOrNumberOrDate } from '../models/chart-data.model';\nimport { scaleLinear, ScaleLinear, scaleBand, ScaleBand } from 'd3-scale';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { LegendPosition, LegendOptions } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n  selector: 'ngx-charts-box-chart',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"box-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          [showGridLines]=\"showGridLines\"\n          [dims]=\"dims\"\n          [xScale]=\"xScale\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        />\n        <svg:g\n          ngx-charts-y-axis\n          [showGridLines]=\"showGridLines\"\n          [dims]=\"dims\"\n          [yScale]=\"yScale\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        />\n      </svg:g>\n      <svg:g [attr.transform]=\"transform\">\n        <svg:g *ngFor=\"let result of results; trackBy: trackBy\">\n          <svg:g\n            ngx-charts-box-series\n            [xScale]=\"xScale\"\n            [yScale]=\"yScale\"\n            [colors]=\"colors\"\n            [roundEdges]=\"roundEdges\"\n            [strokeColor]=\"strokeColor\"\n            [strokeWidth]=\"strokeWidth\"\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [series]=\"result\"\n            [dims]=\"dims\"\n            [animations]=\"animations\"\n            [gradient]=\"gradient\"\n            (activate)=\"onActivate($event)\"\n            (deactivate)=\"onDeactivate($event)\"\n            (select)=\"onClick($event)\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../common/base-chart.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  standalone: false\n})\nexport class BoxChartComponent extends BaseChartComponent {\n  /** Show or hide the legend. */\n  @Input() legend: boolean = false;\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() legendTitle: string = 'Legend';\n  /** I think it is better to handle legend options as single Input object of type ILegendOptions */\n  @Input() legendOptionsConfig: LegendOptions;\n  @Input() showGridLines: boolean = true;\n  @Input() xAxis: boolean = true;\n  @Input() yAxis: boolean = true;\n  @Input() showXAxisLabel: boolean = true;\n  @Input() showYAxisLabel: boolean = true;\n  @Input() roundDomains: boolean = false;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() roundEdges: boolean = true;\n  @Input() strokeColor: string = '#FFFFFF';\n  @Input() strokeWidth: number = 2;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() gradient: boolean;\n  @Input() wrapTicks = false;\n\n  @Output() select: EventEmitter<IBoxModel> = new EventEmitter();\n  @Output() activate: EventEmitter<IBoxModel> = new EventEmitter();\n  @Output() deactivate: EventEmitter<IBoxModel> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate', { static: false }) tooltipTemplate: TemplateRef<any>;\n\n  /** Input Data, this came from Base Chart Component. */\n  declare results: BoxChartMultiSeries;\n  /** Chart Dimensions, this came from Base Chart Component. */\n  dims: ViewDimensions;\n  /** Color data. */\n  colors: ColorHelper;\n  /** Transform string css attribute for the chart container */\n  transform: string;\n\n  /** Chart Margins (For each side, counterclock wise). */\n  margin: [number, number, number, number] = [10, 20, 10, 20];\n\n  /** Legend Options object to handle positioning, title, colors and domain. */\n  legendOptions: LegendOptions;\n\n  xScale: ScaleBand<string>;\n  yScale: ScaleLinear<number, number>;\n  xDomain: StringOrNumberOrDate[];\n  yDomain: number[];\n  seriesDomain: string[];\n  /** Chart X axis dimension. */\n  xAxisHeight: number = 0;\n  /** Chart Y axis dimension. */\n  yAxisWidth: number = 0;\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  trackBy(index: number, item: BoxChartSeries): StringOrNumberOrDate {\n    return item.name;\n  }\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendPosition: this.legendPosition\n    });\n\n    this.xDomain = this.getXDomain();\n    this.yDomain = this.getYDomain();\n    this.seriesDomain = this.getSeriesDomain();\n    this.setScales();\n    this.setColors();\n\n    this.legendOptions = this.getLegendOptions();\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n  }\n\n  setColors(): void {\n    let domain: string[] | number[] = [];\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.seriesDomain;\n    } else {\n      domain = this.yDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  setScales() {\n    this.xScale = this.getXScale(this.xDomain, this.dims.width);\n    this.yScale = this.getYScale(this.yDomain, this.dims.height);\n  }\n\n  getXScale(domain: Array<string | number | Date>, width: number): ScaleBand<string> {\n    const scale = scaleBand()\n      .domain(domain.map(d => d.toString()))\n      .rangeRound([0, width])\n      .padding(0.5);\n\n    return scale;\n  }\n\n  getYScale(domain: number[], height: number): ScaleLinear<number, number> {\n    const scale = scaleLinear().domain(domain).range([height, 0]);\n\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  getUniqueBoxChartXDomainValues(results: BoxChartMultiSeries) {\n    const valueSet = new Set<string | number | Date>();\n    for (const result of results) {\n      valueSet.add(result.name);\n    }\n    return Array.from(valueSet);\n  }\n\n  getXDomain(): Array<string | number | Date> {\n    let domain: Array<string | number | Date> = [];\n    const values: Array<string | number | Date> = this.getUniqueBoxChartXDomainValues(this.results);\n    let min: number;\n    let max: number;\n    if (typeof values[0] === 'string') {\n      domain = values.map(val => val.toString());\n    } else if (typeof values[0] === 'number') {\n      const mappedValues = values.map(v => Number(v));\n      min = Math.min(...mappedValues);\n      max = Math.max(...mappedValues);\n      domain = [min, max];\n    } else {\n      const mappedValues = values.map(v => Number(new Date(v)));\n      min = Math.min(...mappedValues);\n      max = Math.max(...mappedValues);\n      domain = [new Date(min), new Date(max)];\n    }\n    return domain;\n  }\n\n  getYDomain(): number[] {\n    const domain: Array<number | Date> = [];\n    for (const results of this.results) {\n      for (const d of results.series) {\n        if (domain.indexOf(d.value) < 0) {\n          domain.push(d.value);\n        }\n      }\n    }\n\n    const values = [...domain];\n    const mappedValues = values.map(v => Number(v));\n\n    const min: number = Math.min(...mappedValues);\n    const max: number = Math.max(...mappedValues);\n\n    return [min, max];\n  }\n\n  getSeriesDomain(): string[] {\n    return this.results.map(d => `${d.name}`);\n  }\n\n  updateYAxisWidth({ width }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onClick(data: IBoxModel): void {\n    this.select.emit(data);\n  }\n\n  onActivate(data: IBoxModel): void {\n    this.activate.emit(data);\n  }\n\n  onDeactivate(data: IBoxModel): void {\n    this.deactivate.emit(data);\n  }\n\n  private getLegendOptions(): LegendOptions {\n    const legendOpts: LegendOptions = {\n      scaleType: this.schemeType,\n      colors: this.colors,\n      domain: [],\n      position: this.legendPosition,\n      title: this.legendTitle\n    };\n    if (this.schemeType === ScaleType.Ordinal) {\n      legendOpts.domain = this.xDomain;\n      legendOpts.colors = this.colors;\n    } else {\n      legendOpts.domain = this.yDomain;\n      legendOpts.colors = this.colors.scale;\n    }\n    return legendOpts;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { BoxChartComponent } from './box-chart.component';\nimport { BoxSeriesComponent } from './box-series.component';\nimport { BoxComponent } from './box.component';\n\n@NgModule({\n  imports: [ChartCommonModule],\n  declarations: [BoxChartComponent, BoxSeriesComponent, BoxComponent],\n  exports: [BoxChartComponent, BoxSeriesComponent, BoxComponent]\n})\nexport class BoxChartModule {}\n","import { ScaleLinear, scaleLinear, ScalePoint, scalePoint, ScaleTime, scaleTime } from 'd3-scale';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\nexport function getDomain(\n  values: any[],\n  scaleType: ScaleType,\n  autoScale: boolean,\n  minVal?: number,\n  maxVal?: number\n): number[] {\n  let domain: number[] = [];\n  if (scaleType === ScaleType.Linear) {\n    values = values.map(v => Number(v));\n    if (!autoScale) {\n      values.push(0);\n    }\n  }\n\n  if (scaleType === ScaleType.Time || scaleType === ScaleType.Linear) {\n    const min = minVal || minVal === 0 ? minVal : Math.min(...values);\n    const max = maxVal ? maxVal : Math.max(...values);\n\n    domain = [min, max];\n  } else {\n    domain = values;\n  }\n\n  return domain;\n}\n\nexport function getScale(\n  domain: number[],\n  range: number[],\n  scaleType: ScaleType,\n  roundDomains: boolean\n): ScaleTime<number, number> | ScaleLinear<number, number> | ScalePoint<string> {\n  switch (scaleType) {\n    case ScaleType.Time:\n      return scaleTime().range(range).domain(domain);\n    case ScaleType.Linear: {\n      const scale = scaleLinear().range(range).domain(domain);\n      if (roundDomains) {\n        return scale.nice();\n      }\n      return scale;\n    }\n    case ScaleType.Ordinal:\n      return scalePoint()\n        .range([range[0], range[1]])\n        .domain(domain.map(r => r.toString()));\n    default:\n      return undefined;\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  SimpleChanges,\n  EventEmitter,\n  OnChanges,\n  ChangeDetectionStrategy,\n  TemplateRef,\n  PLATFORM_ID,\n  Inject,\n  OnInit\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BubbleChartSeries } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { isPlatformServer } from '@angular/common';\n\n@Component({\n  selector: 'g[ngx-charts-bubble-series]',\n  template: `\n    <svg:g *ngFor=\"let circle of circles; trackBy: trackBy\">\n      <svg:g [attr.transform]=\"circle.transform\">\n        <svg:g\n          *ngIf=\"!isSSR\"\n          ngx-charts-circle\n          [@animationState]=\"'active'\"\n          class=\"circle\"\n          [cx]=\"0\"\n          [cy]=\"0\"\n          [r]=\"circle.radius\"\n          [fill]=\"circle.color\"\n          [style.opacity]=\"circle.opacity\"\n          [class.active]=\"circle.isActive\"\n          [pointerEvents]=\"'all'\"\n          [data]=\"circle.value\"\n          [classNames]=\"circle.classNames\"\n          (select)=\"onClick(circle.data)\"\n          (activate)=\"activateCircle(circle)\"\n          (deactivate)=\"deactivateCircle(circle)\"\n          ngx-tooltip\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipPlacement]=\"placementTypes.Top\"\n          [tooltipType]=\"styleTypes.tooltip\"\n          [tooltipTitle]=\"tooltipTemplate ? undefined : getTooltipText(circle)\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [tooltipContext]=\"circle.data\"\n        />\n        <svg:g\n          *ngIf=\"isSSR\"\n          ngx-charts-circle\n          class=\"circle\"\n          [cx]=\"0\"\n          [cy]=\"0\"\n          [r]=\"circle.radius\"\n          [fill]=\"circle.color\"\n          [style.opacity]=\"circle.opacity\"\n          [class.active]=\"circle.isActive\"\n          [pointerEvents]=\"'all'\"\n          [data]=\"circle.value\"\n          [classNames]=\"circle.classNames\"\n          (select)=\"onClick(circle.data)\"\n          (activate)=\"activateCircle(circle)\"\n          (deactivate)=\"deactivateCircle(circle)\"\n          ngx-tooltip\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipPlacement]=\"placementTypes.Top\"\n          [tooltipType]=\"styleTypes.tooltip\"\n          [tooltipTitle]=\"tooltipTemplate ? undefined : getTooltipText(circle)\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [tooltipContext]=\"circle.data\"\n        />\n      </svg:g>\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition(':enter', [\n        style({\n          opacity: 0,\n          transform: 'scale(0)'\n        }),\n        animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class BubbleSeriesComponent implements OnChanges, OnInit {\n  @Input() data: BubbleChartSeries;\n  @Input() xScale;\n  @Input() yScale;\n  @Input() rScale;\n  @Input() xScaleType: ScaleType;\n  @Input() yScaleType: ScaleType;\n  @Input() colors: ColorHelper;\n  @Input() visibleValue;\n  @Input() activeEntries: any[];\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipTemplate: TemplateRef<any>;\n\n  @Output() select = new EventEmitter();\n  @Output() activate = new EventEmitter();\n  @Output() deactivate = new EventEmitter();\n\n  areaPath: any;\n  circles: any[]; // TODO type this\n\n  placementTypes = PlacementTypes;\n  styleTypes = StyleTypes;\n\n  isSSR = false;\n\n  constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    this.circles = this.getCircles();\n  }\n\n  getCircles(): any[] {\n    const seriesName = this.data.name;\n\n    return this.data.series\n      .map((d, i) => {\n        if (typeof d.y !== 'undefined' && typeof d.x !== 'undefined') {\n          const y = d.y;\n          const x = d.x;\n          const r = d.r;\n\n          const radius = this.rScale(r || 1);\n          const tooltipLabel = formatLabel(d.name);\n\n          const cx = this.xScaleType === ScaleType.Linear ? this.xScale(Number(x)) : this.xScale(x);\n          const cy = this.yScaleType === ScaleType.Linear ? this.yScale(Number(y)) : this.yScale(y);\n\n          const color =\n            this.colors.scaleType === ScaleType.Linear ? this.colors.getColor(r) : this.colors.getColor(seriesName);\n\n          const isActive = !this.activeEntries.length ? true : this.isActive({ name: seriesName });\n          const opacity = isActive ? 1 : 0.3;\n\n          const data = Object.assign({}, d, {\n            series: seriesName,\n            name: d.name,\n            value: d.y,\n            x: d.x,\n            radius: d.r\n          });\n\n          return {\n            data,\n            x,\n            y,\n            r,\n            classNames: [`circle-data-${i}`],\n            value: y,\n            label: x,\n            cx,\n            cy,\n            radius,\n            tooltipLabel,\n            color,\n            opacity,\n            seriesName,\n            isActive,\n            transform: `translate(${cx},${cy})`\n          };\n        }\n      })\n      .filter(circle => circle !== undefined);\n  }\n\n  getTooltipText(circle): string {\n    const hasRadius = typeof circle.r !== 'undefined';\n    const hasTooltipLabel = circle.tooltipLabel && circle.tooltipLabel.length;\n    const hasSeriesName = circle.seriesName && circle.seriesName.length;\n\n    const radiusValue = hasRadius ? formatLabel(circle.r) : '';\n    const xAxisLabel = this.xAxisLabel && this.xAxisLabel !== '' ? `${this.xAxisLabel}:` : '';\n    const yAxisLabel = this.yAxisLabel && this.yAxisLabel !== '' ? `${this.yAxisLabel}:` : '';\n    const x = formatLabel(circle.x);\n    const y = formatLabel(circle.y);\n    const name =\n      hasSeriesName && hasTooltipLabel\n        ? `${circle.seriesName} • ${circle.tooltipLabel}`\n        : circle.seriesName + circle.tooltipLabel;\n    const tooltipTitle =\n      hasSeriesName || hasTooltipLabel ? `<span class=\"tooltip-label\">${escapeLabel(name)}</span>` : '';\n\n    return `\n      ${tooltipTitle}\n      <span class=\"tooltip-label\">\n        <label>${escapeLabel(xAxisLabel)}</label> ${escapeLabel(x)}<br />\n        <label>${escapeLabel(yAxisLabel)}</label> ${escapeLabel(y)}\n      </span>\n      <span class=\"tooltip-val\">\n        ${escapeLabel(radiusValue)}\n      </span>\n    `;\n  }\n\n  onClick(data): void {\n    this.select.emit(data);\n  }\n\n  isActive(entry): boolean {\n    if (!this.activeEntries) return false;\n    const item = this.activeEntries.find(d => {\n      return entry.name === d.name;\n    });\n    return item !== undefined;\n  }\n\n  isVisible(circle): boolean {\n    if (this.activeEntries.length > 0) {\n      return this.isActive({ name: circle.seriesName });\n    }\n\n    return circle.opacity !== 0;\n  }\n\n  activateCircle(circle): void {\n    circle.barVisible = true;\n    this.activate.emit({ name: this.data.name });\n  }\n\n  deactivateCircle(circle): void {\n    circle.barVisible = false;\n    this.deactivate.emit({ name: this.data.name });\n  }\n\n  trackBy(index, circle): string {\n    return `${circle.data.series} ${circle.data.name}`;\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  HostListener,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleLinear } from 'd3-scale';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { getScaleType } from '../common/domain.helper';\nimport { getDomain, getScale } from './bubble-chart.utils';\nimport { id } from '../utils/id';\nimport { BubbleChartSeries } from '../models/chart-data.model';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { isPlatformServer } from '@angular/common';\n\n@Component({\n  selector: 'ngx-charts-bubble-chart',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [activeEntries]=\"activeEntries\"\n      [legendOptions]=\"legendOptions\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:defs>\n        <svg:clipPath [attr.id]=\"clipPathId\">\n          <svg:rect\n            [attr.width]=\"dims.width + 10\"\n            [attr.height]=\"dims.height + 10\"\n            [attr.transform]=\"'translate(-5, -5)'\"\n          />\n        </svg:clipPath>\n      </svg:defs>\n      <svg:g [attr.transform]=\"transform\" class=\"bubble-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [showGridLines]=\"showGridLines\"\n          [dims]=\"dims\"\n          [xScale]=\"xScale\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        />\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [showGridLines]=\"showGridLines\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        />\n        <svg:rect\n          class=\"bubble-chart-area\"\n          x=\"0\"\n          y=\"0\"\n          [attr.width]=\"dims.width\"\n          [attr.height]=\"dims.height\"\n          style=\"fill: rgb(255, 0, 0); opacity: 0; cursor: 'auto';\"\n          (mouseenter)=\"deactivateAll()\"\n        />\n        <svg:g *ngIf=\"!isSSR\" [attr.clip-path]=\"clipPath\">\n          <svg:g *ngFor=\"let series of data; trackBy: trackBy\" [@animationState]=\"'active'\">\n            <svg:g\n              ngx-charts-bubble-series\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [rScale]=\"rScale\"\n              [xScaleType]=\"xScaleType\"\n              [yScaleType]=\"yScaleType\"\n              [xAxisLabel]=\"xAxisLabel\"\n              [yAxisLabel]=\"yAxisLabel\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [activeEntries]=\"activeEntries\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              (select)=\"onClick($event, series)\"\n              (activate)=\"onActivate($event)\"\n              (deactivate)=\"onDeactivate($event)\"\n            />\n          </svg:g>\n        </svg:g>\n        <svg:g *ngIf=\"isSSR\" [attr.clip-path]=\"clipPath\">\n          <svg:g *ngFor=\"let series of data; trackBy: trackBy\">\n            <svg:g\n              ngx-charts-bubble-series\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [rScale]=\"rScale\"\n              [xScaleType]=\"xScaleType\"\n              [yScaleType]=\"yScaleType\"\n              [xAxisLabel]=\"xAxisLabel\"\n              [yAxisLabel]=\"yAxisLabel\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [activeEntries]=\"activeEntries\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              (select)=\"onClick($event, series)\"\n              (activate)=\"onActivate($event)\"\n              (deactivate)=\"onDeactivate($event)\"\n            />\n          </svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../common/base-chart.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1\n        }),\n        animate(\n          500,\n          style({\n            opacity: 0\n          })\n        )\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class BubbleChartComponent extends BaseChartComponent {\n  @Input() showGridLines: boolean = true;\n  @Input() legend = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis: boolean = true;\n  @Input() yAxis: boolean = true;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() roundDomains: boolean = false;\n  @Input() maxRadius: number = 10;\n  @Input() minRadius: number = 3;\n  @Input() autoScale: boolean;\n  @Input() schemeType: ScaleType = ScaleType.Ordinal;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() xScaleMin: number;\n  @Input() xScaleMax: number;\n  @Input() yScaleMin: number;\n  @Input() yScaleMax: number;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  colors: ColorHelper;\n  scaleType: ScaleType = ScaleType.Linear;\n  margin: number[] = [10, 20, 10, 20];\n  bubblePadding: number[] = [0, 0, 0, 0];\n  data: BubbleChartSeries[];\n\n  legendOptions: LegendOptions;\n  transform: string;\n\n  clipPath: string;\n  clipPathId: string;\n\n  seriesDomain: number[];\n  xDomain: number[];\n  yDomain: number[];\n  rDomain: number[];\n\n  xScaleType: ScaleType;\n  yScaleType: ScaleType;\n\n  yScale: any;\n  xScale: any;\n  rScale: any;\n\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n\n  activeEntries: any[] = [];\n\n  isSSR = false;\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    this.seriesDomain = this.results.map(d => d.name);\n    this.rDomain = this.getRDomain();\n    this.xDomain = this.getXDomain();\n    this.yDomain = this.getYDomain();\n\n    this.transform = `translate(${this.dims.xOffset},${this.margin[0]})`;\n\n    const colorDomain = this.schemeType === ScaleType.Ordinal ? this.seriesDomain : this.rDomain;\n    this.colors = new ColorHelper(this.scheme, this.schemeType, colorDomain, this.customColors);\n\n    this.data = this.results;\n\n    this.minRadius = Math.max(this.minRadius, 1);\n    this.maxRadius = Math.max(this.maxRadius, 1);\n\n    this.rScale = this.getRScale(this.rDomain, [this.minRadius, this.maxRadius]);\n\n    this.bubblePadding = [0, 0, 0, 0];\n    this.setScales();\n\n    this.bubblePadding = this.getBubblePadding();\n    this.setScales();\n\n    this.legendOptions = this.getLegendOptions();\n\n    this.clipPathId = 'clip' + id().toString();\n    this.clipPath = `url(#${this.clipPathId})`;\n  }\n\n  @HostListener('mouseleave')\n  hideCircles(): void {\n    this.deactivateAll();\n  }\n\n  onClick(data, series?): void {\n    if (series) {\n      data.series = series.name;\n    }\n\n    this.select.emit(data);\n  }\n\n  getBubblePadding(): number[] {\n    let yMin = 0;\n    let xMin = 0;\n    let yMax = this.dims.height;\n    let xMax = this.dims.width;\n\n    for (const s of this.data) {\n      for (const d of s.series) {\n        const r = this.rScale(d.r);\n        const cx = this.xScaleType === ScaleType.Linear ? this.xScale(Number(d.x)) : this.xScale(d.x);\n        const cy = this.yScaleType === ScaleType.Linear ? this.yScale(Number(d.y)) : this.yScale(d.y);\n        xMin = Math.max(r - cx, xMin);\n        yMin = Math.max(r - cy, yMin);\n        yMax = Math.max(cy + r, yMax);\n        xMax = Math.max(cx + r, xMax);\n      }\n    }\n\n    xMax = Math.max(xMax - this.dims.width, 0);\n    yMax = Math.max(yMax - this.dims.height, 0);\n\n    return [yMin, xMax, yMax, xMin];\n  }\n\n  setScales() {\n    let width = this.dims.width;\n    if (this.xScaleMin === undefined && this.xScaleMax === undefined) {\n      width = width - this.bubblePadding[1];\n    }\n    let height = this.dims.height;\n    if (this.yScaleMin === undefined && this.yScaleMax === undefined) {\n      height = height - this.bubblePadding[2];\n    }\n    this.xScale = this.getXScale(this.xDomain, width);\n    this.yScale = this.getYScale(this.yDomain, height);\n  }\n\n  getYScale(domain, height: number): any {\n    return getScale(domain, [height, this.bubblePadding[0]], this.yScaleType, this.roundDomains);\n  }\n\n  getXScale(domain, width: number): any {\n    return getScale(domain, [this.bubblePadding[3], width], this.xScaleType, this.roundDomains);\n  }\n\n  getRScale(domain, range): any {\n    const scale = scaleLinear().range(range).domain(domain);\n\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      position: this.legendPosition,\n      title: undefined\n    };\n\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.seriesDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.rDomain;\n      opts.colors = this.colors.scale;\n    }\n\n    return opts;\n  }\n\n  getXDomain(): number[] {\n    const values = [];\n\n    for (const results of this.results) {\n      for (const d of results.series) {\n        if (!values.includes(d.x)) {\n          values.push(d.x);\n        }\n      }\n    }\n\n    this.xScaleType = getScaleType(values);\n    return getDomain(values, this.xScaleType, this.autoScale, this.xScaleMin, this.xScaleMax);\n  }\n\n  getYDomain(): number[] {\n    const values = [];\n\n    for (const results of this.results) {\n      for (const d of results.series) {\n        if (!values.includes(d.y)) {\n          values.push(d.y);\n        }\n      }\n    }\n\n    this.yScaleType = getScaleType(values);\n    return getDomain(values, this.yScaleType, this.autoScale, this.yScaleMin, this.yScaleMax);\n  }\n\n  getRDomain(): [number, number] {\n    let min = Infinity;\n    let max = -Infinity;\n\n    for (const results of this.results) {\n      for (const d of results.series) {\n        const value = Number(d.r) || 1;\n        min = Math.min(min, value);\n        max = Math.max(max, value);\n      }\n    }\n\n    return [min, max];\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onActivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name;\n    });\n    if (idx > -1) {\n      return;\n    }\n\n    this.activeEntries = [item, ...this.activeEntries];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  deactivateAll(): void {\n    this.activeEntries = [...this.activeEntries];\n    for (const entry of this.activeEntries) {\n      this.deactivate.emit({ value: entry, entries: [] });\n    }\n    this.activeEntries = [];\n  }\n\n  trackBy(index: number, item): string {\n    return `${item.name}`;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { BubbleChartComponent } from './bubble-chart.component';\nimport { BubbleSeriesComponent } from './bubble-series.component';\n\n@NgModule({\n  imports: [ChartCommonModule],\n  declarations: [BubbleChartComponent, BubbleSeriesComponent],\n  exports: [BubbleChartComponent, BubbleSeriesComponent]\n})\nexport class BubbleChartModule {}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  SimpleChanges,\n  ElementRef,\n  OnChanges,\n  ChangeDetectionStrategy,\n  HostListener\n} from '@angular/core';\nimport { select } from 'd3-selection';\nimport { Transition } from 'd3-transition';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { Gradient } from '../common/types/gradient.interface';\nimport { id } from '../utils/id';\n\n@Component({\n  selector: 'g[ngx-charts-heat-map-cell]',\n  template: `\n    <svg:g [attr.transform]=\"transform\" class=\"cell\">\n      <defs *ngIf=\"gradient\">\n        <svg:g\n          ngx-charts-svg-linear-gradient\n          [orientation]=\"barOrientation.Vertical\"\n          [name]=\"gradientId\"\n          [stops]=\"gradientStops\"\n        />\n      </defs>\n      <svg:rect\n        [attr.fill]=\"gradient ? gradientUrl : fill\"\n        rx=\"3\"\n        [attr.width]=\"width\"\n        [attr.height]=\"height\"\n        class=\"cell\"\n        (click)=\"onClick()\"\n      />\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class HeatMapCellComponent implements OnChanges {\n  @Input() fill: string;\n  @Input() x: number;\n  @Input() y: number;\n  @Input() width: number;\n  @Input() height: number;\n  @Input() data: number;\n  @Input() gradient: boolean = false;\n  @Input() animations: boolean = true;\n\n  @Output() select: EventEmitter<number> = new EventEmitter();\n  @Output() activate: EventEmitter<number> = new EventEmitter();\n  @Output() deactivate: EventEmitter<number> = new EventEmitter();\n\n  element: HTMLElement;\n  transform: string;\n  startOpacity: number;\n  gradientId: string;\n  gradientUrl: string;\n  gradientStops: Gradient[];\n\n  barOrientation = BarOrientation;\n\n  constructor(element: ElementRef) {\n    this.element = element.nativeElement;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.transform = `translate(${this.x} , ${this.y})`;\n\n    this.startOpacity = 0.3;\n    this.gradientId = 'grad' + id().toString();\n    this.gradientUrl = `url(#${this.gradientId})`;\n    this.gradientStops = this.getGradientStops();\n\n    if (this.animations) {\n      this.loadAnimation();\n    }\n  }\n\n  getGradientStops(): Gradient[] {\n    return [\n      {\n        offset: 0,\n        color: this.fill,\n        opacity: this.startOpacity\n      },\n      {\n        offset: 100,\n        color: this.fill,\n        opacity: 1\n      }\n    ];\n  }\n\n  loadAnimation(): void {\n    const node = select(this.element).select('.cell');\n    node.attr('opacity', 0);\n    this.animateToCurrentForm();\n  }\n\n  animateToCurrentForm(): void {\n    const node = select(this.element).select('.cell');\n\n    node.transition().duration(750).attr('opacity', 1);\n  }\n\n  onClick(): void {\n    this.select.emit(this.data);\n  }\n\n  @HostListener('mouseenter')\n  onMouseEnter(): void {\n    this.activate.emit(this.data);\n  }\n\n  @HostListener('mouseleave')\n  onMouseLeave(): void {\n    this.deactivate.emit(this.data);\n  }\n}\n","import {\n  Component,\n  Input,\n  SimpleChanges,\n  Output,\n  EventEmitter,\n  OnChanges,\n  OnInit,\n  ChangeDetectionStrategy,\n  TemplateRef\n} from '@angular/core';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { DataItem, Series } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\n\ninterface Cell {\n  cell: DataItem;\n  data: number;\n  fill: string;\n  height: number;\n  label: string;\n  row: Series;\n  series: string;\n  width: number;\n  x: number;\n  y: number;\n}\n@Component({\n  selector: 'g[ngx-charts-heat-map-cell-series]',\n  template: `\n    <svg:g\n      ngx-charts-heat-map-cell\n      *ngFor=\"let c of cells; trackBy: trackBy\"\n      [x]=\"c.x\"\n      [y]=\"c.y\"\n      [width]=\"c.width\"\n      [height]=\"c.height\"\n      [fill]=\"c.fill\"\n      [data]=\"c.data\"\n      (select)=\"onClick(c.cell)\"\n      (activate)=\"activate.emit(c.cell)\"\n      (deactivate)=\"deactivate.emit(c.cell)\"\n      [gradient]=\"gradient\"\n      [animations]=\"animations\"\n      ngx-tooltip\n      [tooltipDisabled]=\"tooltipDisabled\"\n      [tooltipPlacement]=\"placementTypes.Top\"\n      [tooltipType]=\"styleTypes.tooltip\"\n      [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText(c)\"\n      [tooltipTemplate]=\"tooltipTemplate\"\n      [tooltipContext]=\"{ series: c.series, name: c.label, value: c.data }\"\n    ></svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class HeatCellSeriesComponent implements OnChanges, OnInit {\n  @Input() data;\n  @Input() colors;\n  @Input() xScale;\n  @Input() yScale;\n  @Input() gradient: boolean;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipText: any;\n  @Input() tooltipTemplate: TemplateRef<any>;\n  @Input() animations: boolean = true;\n\n  @Output() select: EventEmitter<DataItem> = new EventEmitter();\n  @Output() activate: EventEmitter<DataItem> = new EventEmitter();\n  @Output() deactivate: EventEmitter<DataItem> = new EventEmitter();\n\n  cells: Cell[];\n\n  placementTypes = PlacementTypes;\n  styleTypes = StyleTypes;\n\n  ngOnInit() {\n    if (!this.tooltipText) {\n      this.tooltipText = this.getTooltipText;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    this.cells = this.getCells();\n  }\n\n  getCells(): Cell[] {\n    const cells = [];\n\n    this.data.map(row => {\n      row.series.map(cell => {\n        const value = cell.value;\n        cell.series = row.name;\n\n        cells.push({\n          row,\n          cell,\n          x: this.xScale(row.name),\n          y: this.yScale(cell.name),\n          width: this.xScale.bandwidth(),\n          height: this.yScale.bandwidth(),\n          fill: this.colors.getColor(value),\n          data: value,\n          label: formatLabel(cell.name),\n          series: row.name\n        });\n      });\n    });\n\n    return cells;\n  }\n\n  getTooltipText({ label, data, series }: { label: string; data: number; series: string }): string {\n    return `\n      <span class=\"tooltip-label\">${escapeLabel(series)} • ${escapeLabel(label)}</span>\n      <span class=\"tooltip-val\">${data.toLocaleString()}</span>\n    `;\n  }\n\n  trackBy(index: number, item): string {\n    return item.label;\n  }\n\n  onClick(data): void {\n    this.select.emit(data);\n  }\n}\n","import {\n  Component,\n  Input,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  Output,\n  EventEmitter\n} from '@angular/core';\nimport { scaleBand } from 'd3-scale';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { getScaleType } from '../common/domain.helper';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\ninterface RectItem {\n  fill: string;\n  height: number;\n  rx: number;\n  width: number;\n  x: number;\n  y: number;\n}\n\n@Component({\n  selector: 'ngx-charts-heat-map',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [animations]=\"animations\"\n      [legendOptions]=\"legendOptions\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"heat-map chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:rect\n          *ngFor=\"let rect of rects\"\n          [attr.x]=\"rect.x\"\n          [attr.y]=\"rect.y\"\n          [attr.rx]=\"rect.rx\"\n          [attr.width]=\"rect.width\"\n          [attr.height]=\"rect.height\"\n          [attr.fill]=\"rect.fill\"\n        />\n        <svg:g\n          ngx-charts-heat-map-cell-series\n          [xScale]=\"xScale\"\n          [yScale]=\"yScale\"\n          [colors]=\"colors\"\n          [data]=\"results\"\n          [gradient]=\"gradient\"\n          [animations]=\"animations\"\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [tooltipText]=\"tooltipText\"\n          (select)=\"onClick($event)\"\n          (activate)=\"onActivate($event, undefined)\"\n          (deactivate)=\"onDeactivate($event, undefined)\"\n        />\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false\n})\nexport class HeatMapComponent extends BaseChartComponent {\n  @Input() legend: boolean;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis: boolean;\n  @Input() yAxis: boolean;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() gradient: boolean;\n  @Input() innerPadding: number | number[] | string | string[] = 8;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipText: any;\n  @Input() min: number;\n  @Input() max: number;\n  @Input() activeEntries: any[] = [];\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  xDomain: string[];\n  yDomain: string[];\n  valueDomain: any[];\n  xScale: any;\n  yScale: any;\n  colors: ColorHelper;\n  colorScale: any;\n  transform: string;\n  rects: RectItem[];\n  margin: number[] = [10, 20, 10, 20];\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  legendOptions: LegendOptions;\n  scaleType: ScaleType = ScaleType.Linear;\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    this.formatDates();\n\n    this.xDomain = this.getXDomain();\n    this.yDomain = this.getYDomain();\n    this.valueDomain = this.getValueDomain();\n\n    this.scaleType = getScaleType(this.valueDomain, false);\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.scaleType as any,\n      legendPosition: this.legendPosition\n    });\n\n    if (this.scaleType === ScaleType.Linear) {\n      let min = this.min;\n      let max = this.max;\n      if (!this.min) {\n        min = Math.min(0, ...this.valueDomain);\n      }\n      if (!this.max) {\n        max = Math.max(...this.valueDomain);\n      }\n      this.valueDomain = [min, max];\n    }\n\n    this.xScale = this.getXScale();\n    this.yScale = this.getYScale();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n    this.rects = this.getRects();\n  }\n\n  getXDomain(): string[] {\n    const domain = [];\n    for (const group of this.results) {\n      if (!domain.includes(group.name)) {\n        domain.push(group.name);\n      }\n    }\n\n    return domain;\n  }\n\n  getYDomain(): string[] {\n    const domain = [];\n\n    for (const group of this.results) {\n      for (const d of group.series) {\n        if (!domain.includes(d.name)) {\n          domain.push(d.name);\n        }\n      }\n    }\n\n    return domain;\n  }\n\n  getValueDomain(): any[] {\n    const domain = [];\n\n    for (const group of this.results) {\n      for (const d of group.series) {\n        if (!domain.includes(d.value)) {\n          domain.push(d.value);\n        }\n      }\n    }\n\n    return domain;\n  }\n\n  /**\n   * Converts the input to gap paddingInner in fraction\n   * Supports the following inputs:\n   *    Numbers: 8\n   *    Strings: \"8\", \"8px\", \"8%\"\n   *    Arrays: [8,2], \"8,2\", \"[8,2]\"\n   *    Mixed: [8,\"2%\"], [\"8px\",\"2%\"], \"8,2%\", \"[8,2%]\"\n   *\n   * @memberOf HeatMapComponent\n   */\n  getDimension(value: string | number | Array<string | number>, index: number = 0, N: number, L: number): number {\n    if (typeof value === 'string') {\n      value = value\n        .replace('[', '')\n        .replace(']', '')\n        .replace('px', '')\n        // tslint:disable-next-line: quotemark\n        .replace(\"'\", '');\n\n      if (value.includes(',')) {\n        value = value.split(',');\n      }\n    }\n    if (Array.isArray(value) && typeof index === 'number') {\n      return this.getDimension(value[index], null, N, L);\n    }\n    if (typeof value === 'string' && value.includes('%')) {\n      return +value.replace('%', '') / 100;\n    }\n    return N / (L / +value + 1);\n  }\n\n  getXScale(): any {\n    const f = this.getDimension(this.innerPadding, 0, this.xDomain.length, this.dims.width);\n    return scaleBand().rangeRound([0, this.dims.width]).domain(this.xDomain).paddingInner(f);\n  }\n\n  getYScale(): any {\n    const f = this.getDimension(this.innerPadding, 1, this.yDomain.length, this.dims.height);\n    return scaleBand().rangeRound([this.dims.height, 0]).domain(this.yDomain).paddingInner(f);\n  }\n\n  getRects(): RectItem[] {\n    const rects = [];\n\n    this.xDomain.map(xVal => {\n      this.yDomain.map(yVal => {\n        rects.push({\n          x: this.xScale(xVal),\n          y: this.yScale(yVal),\n          rx: 3,\n          width: this.xScale.bandwidth(),\n          height: this.yScale.bandwidth(),\n          fill: 'rgba(200,200,200,0.03)'\n        });\n      });\n    });\n\n    return rects;\n  }\n\n  onClick(data): void {\n    this.select.emit(data);\n  }\n\n  setColors(): void {\n    this.colors = new ColorHelper(this.scheme, this.scaleType, this.valueDomain);\n  }\n\n  getLegendOptions(): LegendOptions {\n    return {\n      scaleType: this.scaleType,\n      domain: this.valueDomain,\n      colors: this.scaleType === ScaleType.Ordinal ? this.colors : this.colors.scale,\n      title: this.scaleType === ScaleType.Ordinal ? this.legendTitle : undefined,\n      position: this.legendPosition\n    };\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onActivate(event, group, fromLegend: boolean = false) {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    const items = this.results\n      .map(g => g.series)\n      .flat()\n      .filter(i => {\n        if (fromLegend) {\n          return i.label === item.name;\n        } else {\n          return i.name === item.name && i.series === item.series;\n        }\n      });\n\n    this.activeEntries = [...items];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(event, group, fromLegend: boolean = false) {\n    const item = Object.assign({}, event);\n    if (group) {\n      item.series = group.name;\n    }\n\n    this.activeEntries = this.activeEntries.filter(i => {\n      if (fromLegend) {\n        return i.label !== item.name;\n      } else {\n        return !(i.name === item.name && i.series === item.series);\n      }\n    });\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { HeatMapCellComponent } from './heat-map-cell.component';\nimport { HeatCellSeriesComponent } from './heat-map-cell-series.component';\nimport { HeatMapComponent } from './heat-map.component';\n\n@NgModule({\n  imports: [ChartCommonModule],\n  declarations: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent],\n  exports: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent]\n})\nexport class HeatMapModule {}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  ElementRef,\n  ChangeDetectionStrategy,\n  SimpleChanges,\n  PLATFORM_ID,\n  Inject,\n  OnInit\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { select } from 'd3-selection';\nimport { Series } from '../models/chart-data.model';\nimport { isPlatformServer } from '@angular/common';\n\n@Component({\n  selector: 'g[ngx-charts-line]',\n  template: `\n    <svg:g *ngIf=\"!isSSR\">\n      <svg:path\n        [@animationState]=\"'active'\"\n        class=\"line\"\n        [attr.d]=\"initialPath\"\n        [attr.fill]=\"fill\"\n        [attr.stroke]=\"stroke\"\n        stroke-width=\"1.5px\"\n      />\n    </svg:g>\n    <svg:g *ngIf=\"isSSR\">\n      <svg:path class=\"line\" [attr.d]=\"initialPath\" [attr.fill]=\"fill\" [attr.stroke]=\"stroke\" stroke-width=\"1.5px\" />\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition(':enter', [\n        style({\n          strokeDasharray: 2000,\n          strokeDashoffset: 2000\n        }),\n        animate(\n          1000,\n          style({\n            strokeDashoffset: 0\n          })\n        )\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class LineComponent implements OnChanges, OnInit {\n  @Input() path: string;\n  @Input() stroke: string;\n  @Input() data: Series;\n  @Input() fill: string = 'none';\n  @Input() animations: boolean = true;\n\n  // @Output() select = new EventEmitter();\n\n  initialized: boolean = false;\n  initialPath: string;\n\n  isSSR = false;\n\n  constructor(private element: ElementRef, @Inject(PLATFORM_ID) private platformId: any) {}\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!this.initialized) {\n      this.initialized = true;\n      this.initialPath = this.path;\n    } else {\n      this.updatePathEl();\n    }\n  }\n\n  updatePathEl(): void {\n    const node = select(this.element.nativeElement).select('.line');\n\n    if (this.animations) {\n      node.transition().duration(750).attr('d', this.path);\n    } else {\n      node.attr('d', this.path);\n    }\n  }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { area, line } from 'd3-shape';\n\nimport { id } from '../utils/id';\nimport { sortLinear, sortByTime, sortByDomain } from '../utils/sort';\nimport { ColorHelper } from '../common/color.helper';\nimport { Series } from '../models/chart-data.model';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { Gradient } from '../common/types/gradient.interface';\n\n@Component({\n  selector: 'g[ngx-charts-line-series]',\n  template: `\n    <svg:g>\n      <defs>\n        <svg:g\n          ngx-charts-svg-linear-gradient\n          *ngIf=\"hasGradient\"\n          [orientation]=\"barOrientation.Vertical\"\n          [name]=\"gradientId\"\n          [stops]=\"gradientStops\"\n        />\n      </defs>\n      <svg:g\n        ngx-charts-area\n        class=\"line-highlight\"\n        [data]=\"data\"\n        [path]=\"areaPath\"\n        [fill]=\"hasGradient ? gradientUrl : colors.getColor(data.name)\"\n        [opacity]=\"0.25\"\n        [startOpacity]=\"0\"\n        [gradient]=\"true\"\n        [stops]=\"areaGradientStops\"\n        [class.active]=\"isActive(data)\"\n        [class.inactive]=\"isInactive(data)\"\n        [animations]=\"animations\"\n      />\n      <svg:g\n        ngx-charts-line\n        class=\"line-series\"\n        [data]=\"data\"\n        [path]=\"path\"\n        [stroke]=\"stroke\"\n        [animations]=\"animations\"\n        [class.active]=\"isActive(data)\"\n        [class.inactive]=\"isInactive(data)\"\n      />\n      <svg:g\n        ngx-charts-area\n        *ngIf=\"hasRange\"\n        class=\"line-series-range\"\n        [data]=\"data\"\n        [path]=\"outerPath\"\n        [fill]=\"hasGradient ? gradientUrl : colors.getColor(data.name)\"\n        [class.active]=\"isActive(data)\"\n        [class.inactive]=\"isInactive(data)\"\n        [opacity]=\"rangeFillOpacity\"\n        [animations]=\"animations\"\n      />\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class LineSeriesComponent implements OnChanges {\n  @Input() data: Series;\n  @Input() xScale;\n  @Input() yScale;\n  @Input() colors: ColorHelper;\n  @Input() scaleType: ScaleType;\n  @Input() curve: any;\n  @Input() activeEntries: any[];\n  @Input() rangeFillOpacity: number;\n  @Input() hasRange: boolean;\n  @Input() animations: boolean = true;\n\n  path: string;\n  outerPath: string;\n  areaPath: string;\n  gradientId: string;\n  gradientUrl: string;\n  hasGradient: boolean;\n  gradientStops: Gradient[];\n  areaGradientStops: Gradient[];\n  stroke: string;\n\n  barOrientation = BarOrientation;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    this.updateGradients();\n\n    const data = this.sortData(this.data.series);\n\n    const lineGen = this.getLineGenerator();\n    this.path = lineGen(data) || '';\n\n    const areaGen = this.getAreaGenerator();\n    this.areaPath = areaGen(data) || '';\n\n    if (this.hasRange) {\n      const range = this.getRangeGenerator();\n      this.outerPath = range(data) || '';\n    }\n\n    if (this.hasGradient) {\n      this.stroke = this.gradientUrl;\n      const values = this.data.series.map(d => d.value);\n      const max = Math.max(...values);\n      const min = Math.min(...values);\n      if (max === min) {\n        this.stroke = this.colors.getColor(max);\n      }\n    } else {\n      this.stroke = this.colors.getColor(this.data.name);\n    }\n  }\n\n  getLineGenerator(): any {\n    return line<any>()\n      .x(d => {\n        const label = d.name;\n        let value;\n        if (this.scaleType === ScaleType.Time) {\n          value = this.xScale(label);\n        } else if (this.scaleType === ScaleType.Linear) {\n          value = this.xScale(Number(label));\n        } else {\n          value = this.xScale(label);\n        }\n        return value;\n      })\n      .y(d => this.yScale(d.value))\n      .curve(this.curve);\n  }\n\n  getRangeGenerator(): any {\n    return area<any>()\n      .x(d => {\n        const label = d.name;\n        let value;\n        if (this.scaleType === ScaleType.Time) {\n          value = this.xScale(label);\n        } else if (this.scaleType === ScaleType.Linear) {\n          value = this.xScale(Number(label));\n        } else {\n          value = this.xScale(label);\n        }\n        return value;\n      })\n      .y0(d => this.yScale(typeof d.min === 'number' ? d.min : d.value))\n      .y1(d => this.yScale(typeof d.max === 'number' ? d.max : d.value))\n      .curve(this.curve);\n  }\n\n  getAreaGenerator(): any {\n    const xProperty = d => {\n      const label = d.name;\n      return this.xScale(label);\n    };\n\n    return area<any>()\n      .x(xProperty)\n      .y0(() => this.yScale.range()[0])\n      .y1(d => this.yScale(d.value))\n      .curve(this.curve);\n  }\n\n  sortData(data) {\n    if (this.scaleType === ScaleType.Linear) {\n      data = sortLinear(data, 'name');\n    } else if (this.scaleType === ScaleType.Time) {\n      data = sortByTime(data, 'name');\n    } else {\n      data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n    }\n\n    return data;\n  }\n\n  updateGradients() {\n    if (this.colors.scaleType === ScaleType.Linear) {\n      this.hasGradient = true;\n      this.gradientId = 'grad' + id().toString();\n      this.gradientUrl = `url(#${this.gradientId})`;\n      const values = this.data.series.map(d => d.value);\n      const max = Math.max(...values);\n      const min = Math.min(...values);\n      this.gradientStops = this.colors.getLinearGradientStops(max, min);\n      this.areaGradientStops = this.colors.getLinearGradientStops(max);\n    } else {\n      this.hasGradient = false;\n      this.gradientStops = undefined;\n      this.areaGradientStops = undefined;\n    }\n  }\n\n  isActive(entry): boolean {\n    if (!this.activeEntries) return false;\n    const item = this.activeEntries.find(d => {\n      return entry.name === d.name;\n    });\n    return item !== undefined;\n  }\n\n  isInactive(entry): boolean {\n    if (!this.activeEntries || this.activeEntries.length === 0) return false;\n    const item = this.activeEntries.find(d => {\n      return entry.name === d.name;\n    });\n    return item === undefined;\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  HostListener,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  OnInit\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleLinear, scaleTime, scalePoint } from 'd3-scale';\nimport { curveLinear } from 'd3-shape';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { id } from '../utils/id';\nimport { getUniqueXDomainValues, getScaleType } from '../common/domain.helper';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { isPlatformServer } from '@angular/common';\n\n@Component({\n  selector: 'ngx-charts-line-chart',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:defs>\n        <svg:clipPath [attr.id]=\"clipPathId\">\n          <svg:rect\n            [attr.width]=\"dims.width + 10\"\n            [attr.height]=\"dims.height + 10\"\n            [attr.transform]=\"'translate(-5, -5)'\"\n          />\n        </svg:clipPath>\n      </svg:defs>\n      <svg:g [attr.transform]=\"transform\" class=\"line-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [referenceLines]=\"referenceLines\"\n          [showRefLines]=\"showRefLines\"\n          [showRefLabels]=\"showRefLabels\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g [attr.clip-path]=\"clipPath\">\n          <svg:g *ngIf=\"!isSSR\">\n            <svg:g *ngFor=\"let series of results; trackBy: trackBy\" [@animationState]=\"'active'\">\n              <svg:g\n                ngx-charts-line-series\n                [xScale]=\"xScale\"\n                [yScale]=\"yScale\"\n                [colors]=\"colors\"\n                [data]=\"series\"\n                [activeEntries]=\"activeEntries\"\n                [scaleType]=\"scaleType\"\n                [curve]=\"curve\"\n                [rangeFillOpacity]=\"rangeFillOpacity\"\n                [hasRange]=\"hasRange\"\n                [animations]=\"animations\"\n              />\n            </svg:g>\n          </svg:g>\n          <svg:g *ngIf=\"isSSR\">\n            <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n              <svg:g\n                ngx-charts-line-series\n                [xScale]=\"xScale\"\n                [yScale]=\"yScale\"\n                [colors]=\"colors\"\n                [data]=\"series\"\n                [activeEntries]=\"activeEntries\"\n                [scaleType]=\"scaleType\"\n                [curve]=\"curve\"\n                [rangeFillOpacity]=\"rangeFillOpacity\"\n                [hasRange]=\"hasRange\"\n                [animations]=\"animations\"\n              />\n            </svg:g>\n          </svg:g>\n\n          <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n            <svg:g\n              ngx-charts-tooltip-area\n              [dims]=\"dims\"\n              [xSet]=\"xSet\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [results]=\"results\"\n              [colors]=\"colors\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"seriesTooltipTemplate\"\n              (hover)=\"updateHoveredVertical($event)\"\n            />\n\n            <svg:g *ngFor=\"let series of results\">\n              <svg:g\n                ngx-charts-circle-series\n                [xScale]=\"xScale\"\n                [yScale]=\"yScale\"\n                [colors]=\"colors\"\n                [data]=\"series\"\n                [scaleType]=\"scaleType\"\n                [visibleValue]=\"hoveredVertical\"\n                [activeEntries]=\"activeEntries\"\n                [tooltipDisabled]=\"tooltipDisabled\"\n                [tooltipTemplate]=\"tooltipTemplate\"\n                (select)=\"onClick($event)\"\n                (activate)=\"onActivate($event)\"\n                (deactivate)=\"onDeactivate($event)\"\n              />\n            </svg:g>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n      <svg:g\n        ngx-charts-timeline\n        *ngIf=\"timeline && scaleType != 'ordinal'\"\n        [attr.transform]=\"timelineTransform\"\n        [results]=\"results\"\n        [view]=\"[timelineWidth, height]\"\n        [height]=\"timelineHeight\"\n        [scheme]=\"scheme\"\n        [customColors]=\"customColors\"\n        [scaleType]=\"scaleType\"\n        [legend]=\"legend\"\n        (onDomainChange)=\"updateDomain($event)\"\n      >\n        <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n          <svg:g\n            ngx-charts-line-series\n            [xScale]=\"timelineXScale\"\n            [yScale]=\"timelineYScale\"\n            [colors]=\"colors\"\n            [data]=\"series\"\n            [scaleType]=\"scaleType\"\n            [curve]=\"curve\"\n            [hasRange]=\"hasRange\"\n            [animations]=\"animations\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1\n        }),\n        animate(\n          500,\n          style({\n            opacity: 0\n          })\n        )\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class LineChartComponent extends BaseChartComponent implements OnInit {\n  @Input() legend: boolean;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis: boolean;\n  @Input() yAxis: boolean;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() autoScale: boolean;\n  @Input() timeline: boolean;\n  @Input() gradient: boolean;\n  @Input() showGridLines: boolean = true;\n  @Input() curve: any = curveLinear;\n  @Input() activeEntries: any[] = [];\n  @Input() declare schemeType: ScaleType;\n  @Input() rangeFillOpacity: number;\n  @Input() trimXAxisTicks: boolean = true;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() rotateXAxisTicks: boolean = true;\n  @Input() maxXAxisTickLength: number = 16;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: any;\n  @Input() yAxisTickFormatting: any;\n  @Input() xAxisTicks: any[];\n  @Input() yAxisTicks: any[];\n  @Input() roundDomains: boolean = false;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() showRefLines: boolean = false;\n  @Input() referenceLines: any;\n  @Input() showRefLabels: boolean = true;\n  @Input() xScaleMin: number;\n  @Input() xScaleMax: number;\n  @Input() yScaleMin: number;\n  @Input() yScaleMax: number;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n  @ContentChild('seriesTooltipTemplate') seriesTooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  xSet: any;\n  xDomain: any;\n  yDomain: [number, number];\n  seriesDomain: any;\n  yScale: any;\n  xScale: any;\n  colors: ColorHelper;\n  scaleType: ScaleType;\n  transform: string;\n  clipPath: string;\n  clipPathId: string;\n  areaPath: any;\n  margin: number[] = [10, 20, 10, 20];\n  hoveredVertical: any; // the value of the x axis that is hovered over\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  filteredDomain: any;\n  legendOptions: any;\n  hasRange: boolean; // whether the line has a min-max range around it\n  timelineWidth: any;\n  timelineHeight: number = 50;\n  timelineXScale: any;\n  timelineYScale: any;\n  timelineXDomain: any;\n  timelineTransform: any;\n  timelinePadding: number = 10;\n\n  isSSR = false;\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    if (this.timeline) {\n      this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n    }\n\n    this.xDomain = this.getXDomain();\n    if (this.filteredDomain) {\n      this.xDomain = this.filteredDomain;\n    }\n\n    this.yDomain = this.getYDomain();\n    this.seriesDomain = this.getSeriesDomain();\n\n    this.xScale = this.getXScale(this.xDomain, this.dims.width);\n    this.yScale = this.getYScale(this.yDomain, this.dims.height);\n\n    this.updateTimeline();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n\n    this.clipPathId = 'clip' + id().toString();\n    this.clipPath = `url(#${this.clipPathId})`;\n  }\n\n  updateTimeline(): void {\n    if (this.timeline) {\n      this.timelineWidth = this.dims.width;\n      this.timelineXDomain = this.getXDomain();\n      this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n      this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n      this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n    }\n  }\n\n  getXDomain(): any[] {\n    let values = getUniqueXDomainValues(this.results);\n\n    this.scaleType = getScaleType(values);\n    let domain = [];\n\n    if (this.scaleType === ScaleType.Linear) {\n      values = values.map(v => Number(v));\n    }\n\n    let min;\n    let max;\n    if (this.scaleType === ScaleType.Time || this.scaleType === ScaleType.Linear) {\n      min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n\n      max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n    }\n\n    if (this.scaleType === ScaleType.Time) {\n      domain = [new Date(min), new Date(max)];\n      this.xSet = [...values].sort((a, b) => {\n        const aDate = a.getTime();\n        const bDate = b.getTime();\n        if (aDate > bDate) return 1;\n        if (bDate > aDate) return -1;\n        return 0;\n      });\n    } else if (this.scaleType === ScaleType.Linear) {\n      domain = [min, max];\n      // Use compare function to sort numbers numerically\n      this.xSet = [...values].sort((a, b) => a - b);\n    } else {\n      domain = values;\n      this.xSet = values;\n    }\n\n    return domain;\n  }\n\n  getYDomain(): [number, number] {\n    const domain = [];\n    for (const results of this.results) {\n      for (const d of results.series) {\n        if (domain.indexOf(d.value) < 0) {\n          domain.push(d.value);\n        }\n        if (d.min !== undefined) {\n          this.hasRange = true;\n          if (domain.indexOf(d.min) < 0) {\n            domain.push(d.min);\n          }\n        }\n        if (d.max !== undefined) {\n          this.hasRange = true;\n          if (domain.indexOf(d.max) < 0) {\n            domain.push(d.max);\n          }\n        }\n      }\n    }\n\n    const values = [...domain];\n    if (!this.autoScale) {\n      values.push(0);\n    }\n\n    const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n\n    const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n\n    return [min, max];\n  }\n\n  getSeriesDomain(): string[] {\n    return this.results.map(d => d.name);\n  }\n\n  getXScale(domain, width: number): any {\n    let scale;\n\n    if (this.scaleType === ScaleType.Time) {\n      scale = scaleTime().range([0, width]).domain(domain);\n    } else if (this.scaleType === ScaleType.Linear) {\n      scale = scaleLinear().range([0, width]).domain(domain);\n\n      if (this.roundDomains) {\n        scale = scale.nice();\n      }\n    } else if (this.scaleType === ScaleType.Ordinal) {\n      scale = scalePoint().range([0, width]).padding(0.1).domain(domain);\n    }\n\n    return scale;\n  }\n\n  getYScale(domain, height: number): any {\n    const scale = scaleLinear().range([height, 0]).domain(domain);\n\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  updateDomain(domain): void {\n    this.filteredDomain = domain;\n    this.xDomain = this.filteredDomain;\n    this.xScale = this.getXScale(this.xDomain, this.dims.width);\n  }\n\n  updateHoveredVertical(item): void {\n    this.hoveredVertical = item.value;\n    this.deactivateAll();\n  }\n\n  @HostListener('mouseleave')\n  hideCircles(): void {\n    this.hoveredVertical = null;\n    this.deactivateAll();\n  }\n\n  onClick(data): void {\n    this.select.emit(data);\n  }\n\n  trackBy(index: number, item): string {\n    return `${item.name}`;\n  }\n\n  setColors(): void {\n    let domain;\n    if (this.schemeType === ScaleType.Ordinal) {\n      domain = this.seriesDomain;\n    } else {\n      domain = this.yDomain;\n    }\n\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    const opts = {\n      scaleType: this.schemeType as any,\n      colors: undefined,\n      domain: [],\n      title: undefined,\n      position: this.legendPosition\n    };\n    if (opts.scaleType === ScaleType.Ordinal) {\n      opts.domain = this.seriesDomain;\n      opts.colors = this.colors;\n      opts.title = this.legendTitle;\n    } else {\n      opts.domain = this.yDomain;\n      opts.colors = this.colors.scale;\n    }\n    return opts;\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onActivate(item): void {\n    this.deactivateAll();\n\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n    if (idx > -1) {\n      return;\n    }\n\n    this.activeEntries = [item];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  deactivateAll(): void {\n    this.activeEntries = [...this.activeEntries];\n    for (const entry of this.activeEntries) {\n      this.deactivate.emit({ value: entry, entries: [] });\n    }\n    this.activeEntries = [];\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { LineComponent } from './line.component';\nimport { LineChartComponent } from './line-chart.component';\nimport { LineSeriesComponent } from './line-series.component';\n\n@NgModule({\n  imports: [ChartCommonModule],\n  declarations: [LineComponent, LineChartComponent, LineSeriesComponent],\n  exports: [LineComponent, LineChartComponent, LineSeriesComponent]\n})\nexport class LineChartModule {}\n","import { isPlatformServer } from '@angular/common';\nimport {\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ChangeDetectionStrategy,\n  PLATFORM_ID,\n  Inject\n} from '@angular/core';\nimport { arc, DefaultArcObject } from 'd3-shape';\n\nimport { trimLabel } from '../common/trim-label.helper';\nimport { TextAnchor } from '../common/types/text-anchor.enum';\nimport { DataItem } from '../models/chart-data.model';\n\nexport interface PieData extends DefaultArcObject {\n  data: DataItem;\n  index: number;\n  pos: [number, number];\n  value: number;\n}\n\n@Component({\n  selector: 'g[ngx-charts-pie-label]',\n  template: `\n    <title>{{ label }}</title>\n    <svg:g [attr.transform]=\"attrTransform\" [style.transform]=\"styleTransform\" [style.transition]=\"textTransition\">\n      <svg:text\n        class=\"pie-label\"\n        [class.animation]=\"animations\"\n        dy=\".35em\"\n        [style.textAnchor]=\"textAnchor()\"\n        [style.shapeRendering]=\"'crispEdges'\"\n      >\n        {{ labelTrim ? trimLabel(label, labelTrimSize) : label }}\n      </svg:text>\n    </svg:g>\n    <svg:path\n      [attr.d]=\"line\"\n      [attr.stroke]=\"color\"\n      fill=\"none\"\n      class=\"pie-label-line line\"\n      [class.animation]=\"animations\"\n    ></svg:path>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PieLabelComponent implements OnChanges {\n  @Input() data: PieData;\n  @Input() radius: number;\n  @Input() label: string;\n  @Input() color: string;\n  @Input() max: number;\n  @Input() value: number;\n  @Input() explodeSlices: boolean;\n  @Input() animations: boolean = true;\n  @Input() labelTrim: boolean = true;\n  @Input() labelTrimSize: number = 10;\n\n  trimLabel: (label: string, max?: number) => string;\n  line: string;\n  styleTransform: string;\n  attrTransform: string;\n  textTransition: string;\n\n  constructor(@Inject(PLATFORM_ID) public platformId: any) {\n    this.trimLabel = trimLabel;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.setTransforms();\n    this.update();\n  }\n\n  setTransforms() {\n    if (isPlatformServer(this.platformId)) {\n      this.styleTransform = `translate3d(${this.textX}px,${this.textY}px, 0)`;\n      this.attrTransform = `translate(${this.textX},${this.textY})`;\n      this.textTransition = !this.animations ? null : 'transform 0.75s';\n    } else {\n      const isIE = /(edge|msie|trident)/i.test(navigator.userAgent);\n      this.styleTransform = isIE ? null : `translate3d(${this.textX}px,${this.textY}px, 0)`;\n      this.attrTransform = !isIE ? null : `translate(${this.textX},${this.textY})`;\n      this.textTransition = isIE || !this.animations ? null : 'transform 0.75s';\n    }\n  }\n\n  update(): void {\n    let startRadius = this.radius;\n    if (this.explodeSlices) {\n      startRadius = (this.radius * this.value) / this.max;\n    }\n\n    const innerArc = arc().innerRadius(startRadius).outerRadius(startRadius);\n\n    // Calculate innerPos then scale outer position to match label position\n    const innerPos = innerArc.centroid(this.data);\n\n    let scale = this.data.pos[1] / innerPos[1];\n    if (this.data.pos[1] === 0 || innerPos[1] === 0) {\n      scale = 1;\n    }\n    const outerPos = [scale * innerPos[0], scale * innerPos[1]];\n\n    this.line = `M${innerPos}L${outerPos}L${this.data.pos}`;\n  }\n\n  get textX(): number {\n    return this.data.pos[0];\n  }\n\n  get textY(): number {\n    return this.data.pos[1];\n  }\n\n  textAnchor(): TextAnchor {\n    return this.midAngle(this.data) < Math.PI ? TextAnchor.Start : TextAnchor.End;\n  }\n\n  midAngle(d): number {\n    return d.startAngle + (d.endAngle - d.startAngle) / 2;\n  }\n}\n","import {\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ChangeDetectionStrategy,\n  TemplateRef,\n  Output,\n  EventEmitter\n} from '@angular/core';\nimport { lineRadial } from 'd3-shape';\n\nimport { id } from '../utils/id';\nimport { sortLinear, sortByTime, sortByDomain } from '../utils/sort';\nimport { escapeLabel } from '../common/label.helper';\nimport { Series, DataItem } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\ninterface PolarChartCircle {\n  color: string;\n  cx: number;\n  cy: number;\n  data: Series;\n  label: string;\n  value: number;\n}\n\n@Component({\n  selector: 'g[ngx-charts-polar-series]',\n  template: `\n    <svg:g class=\"polar-charts-series\">\n      <defs>\n        <svg:g\n          ngx-charts-svg-radial-gradient\n          *ngIf=\"hasGradient\"\n          [color]=\"seriesColor\"\n          [name]=\"gradientId\"\n          [startOpacity]=\"0.25\"\n          [endOpacity]=\"1\"\n          [stops]=\"gradientStops\"\n        />\n      </defs>\n      <svg:g\n        ngx-charts-line\n        class=\"polar-series-path\"\n        [path]=\"path\"\n        [stroke]=\"hasGradient ? gradientUrl : seriesColor\"\n        [class.active]=\"active\"\n        [class.inactive]=\"inactive\"\n        [attr.fill-opacity]=\"rangeFillOpacity\"\n        [fill]=\"hasGradient ? gradientUrl : seriesColor\"\n        [animations]=\"animations\"\n      />\n      <svg:g\n        ngx-charts-circle\n        *ngFor=\"let circle of circles\"\n        class=\"circle\"\n        [cx]=\"circle.cx\"\n        [cy]=\"circle.cy\"\n        [r]=\"circleRadius\"\n        [fill]=\"circle.color\"\n        [style.opacity]=\"inactive ? 0.2 : 1\"\n        ngx-tooltip\n        [tooltipDisabled]=\"tooltipDisabled\"\n        [tooltipPlacement]=\"placementTypes.Top\"\n        [tooltipType]=\"styleTypes.tooltip\"\n        [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText(circle)\"\n        [tooltipTemplate]=\"tooltipTemplate\"\n        [tooltipContext]=\"circle.data\"\n        (select)=\"select.emit(circle.data)\"\n        (activate)=\"activate.emit({ name: circle.data.series })\"\n        (deactivate)=\"deactivate.emit({ name: circle.data.series })\"\n      ></svg:g>\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PolarSeriesComponent implements OnChanges {\n  @Input() name;\n  @Input() data;\n  @Input() xScale; // Theta\n  @Input() yScale; // R\n  @Input() colors;\n  @Input() scaleType;\n  @Input() curve: any;\n  @Input() activeEntries: any[];\n  @Input() rangeFillOpacity: number;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipText: (o: any) => string;\n  @Input() gradient: boolean = false;\n  @Input() tooltipTemplate: TemplateRef<any>;\n  @Input() animations: boolean = true;\n\n  @Output() select = new EventEmitter();\n  @Output() activate = new EventEmitter();\n  @Output() deactivate = new EventEmitter();\n\n  path: string;\n  circles: PolarChartCircle[];\n  circleRadius: number = 3;\n\n  areaPath: string;\n  gradientId: string;\n  gradientUrl: string;\n  hasGradient: boolean;\n  gradientStops: any[];\n  areaGradientStops: any[];\n  seriesColor: string;\n\n  active: boolean;\n  inactive: boolean;\n\n  barOrientation = BarOrientation;\n  placementTypes = PlacementTypes;\n  styleTypes = StyleTypes;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    this.updateGradients();\n\n    const line = this.getLineGenerator();\n\n    const data = this.sortData(this.data.series);\n\n    const seriesName = this.data.name;\n    const linearScaleType = this.colors.scaleType === ScaleType.Linear;\n    const min = this.yScale.domain()[0];\n    this.seriesColor = this.colors.getColor(linearScaleType ? min : seriesName);\n\n    this.path = line(data) || '';\n\n    this.circles = data.map(d => {\n      const a = this.getAngle(d);\n      const r = this.getRadius(d);\n      const value = d.value;\n\n      const color = this.colors.getColor(linearScaleType ? Math.abs(value) : seriesName);\n\n      const cData = Object.assign({}, d, {\n        series: seriesName,\n        value,\n        name: d.name\n      });\n\n      return {\n        data: cData,\n        cx: r * Math.sin(a),\n        cy: -r * Math.cos(a),\n        value,\n        color,\n        label: d.name\n      };\n    });\n\n    this.active = this.isActive(this.data);\n    this.inactive = this.isInactive(this.data);\n    this.tooltipText = this.tooltipText || (c => this.defaultTooltipText(c));\n  }\n\n  getAngle(d: DataItem) {\n    const label = d.name;\n    if (this.scaleType === ScaleType.Time) {\n      return this.xScale(label);\n    } else if (this.scaleType === ScaleType.Linear) {\n      return this.xScale(Number(label));\n    }\n    return this.xScale(label);\n  }\n\n  getRadius(d: DataItem) {\n    return this.yScale(d.value);\n  }\n\n  getLineGenerator(): any {\n    return lineRadial<any>()\n      .angle(d => this.getAngle(d))\n      .radius(d => this.getRadius(d))\n      .curve(this.curve);\n  }\n\n  sortData(data: DataItem) {\n    if (this.scaleType === ScaleType.Linear) {\n      return sortLinear(data, 'name');\n    } else if (this.scaleType === ScaleType.Time) {\n      return sortByTime(data, 'name');\n    }\n    return sortByDomain(data, 'name', 'asc', this.xScale.domain());\n  }\n\n  isActive(entry: DataItem): boolean {\n    if (!this.activeEntries) return false;\n    const item = this.activeEntries.find(d => {\n      return entry.name === d.name;\n    });\n    return item !== undefined;\n  }\n\n  isInactive(entry: DataItem): boolean {\n    if (!this.activeEntries || this.activeEntries.length === 0) return false;\n    const item = this.activeEntries.find(d => {\n      return entry.name === d.name;\n    });\n    return item === undefined;\n  }\n\n  defaultTooltipText({ label, value }: { label: string; value: number }): string {\n    return `\n      <span class=\"tooltip-label\">${escapeLabel(this.data.name)} • ${escapeLabel(label)}</span>\n      <span class=\"tooltip-val\">${value.toLocaleString()}</span>\n    `;\n  }\n\n  updateGradients() {\n    this.hasGradient = this.gradient || this.colors.scaleType === ScaleType.Linear;\n\n    if (!this.hasGradient) {\n      return;\n    }\n\n    this.gradientId = 'grad' + id().toString();\n    this.gradientUrl = `url(#${this.gradientId})`;\n\n    if (this.colors.scaleType === ScaleType.Linear) {\n      const values = this.data.series.map(d => d.value);\n      const max = Math.max(...values);\n      const min = Math.min(...values);\n      this.gradientStops = this.colors.getLinearGradientStops(max, min);\n    } else {\n      this.gradientStops = undefined;\n    }\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  OnInit\n} from '@angular/core';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { scaleLinear, scaleTime, scalePoint } from 'd3-scale';\nimport { curveCardinalClosed } from 'd3-shape';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { getScaleType } from '../common/domain.helper';\nimport { isDate } from '../utils/types';\nimport { LegendPosition } from '../common/types/legend.model';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { Orientation } from '../common/types/orientation.enum';\nimport { isPlatformServer } from '@angular/common';\n\nconst twoPI = 2 * Math.PI;\n\n@Component({\n  selector: 'ngx-charts-polar-chart',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:g class=\"polar-chart chart\" [attr.transform]=\"transform\">\n        <svg:g [attr.transform]=\"transformPlot\">\n          <svg:circle class=\"polar-chart-background\" cx=\"0\" cy=\"0\" [attr.r]=\"this.outerRadius\" />\n          <svg:g *ngIf=\"showGridLines\">\n            <svg:circle\n              *ngFor=\"let r of radiusTicks\"\n              class=\"gridline-path radial-gridline-path\"\n              cx=\"0\"\n              cy=\"0\"\n              [attr.r]=\"r\"\n            />\n          </svg:g>\n          <svg:g *ngIf=\"xAxis\">\n            <svg:g\n              ngx-charts-pie-label\n              *ngFor=\"let tick of thetaTicks\"\n              [data]=\"tick\"\n              [radius]=\"outerRadius\"\n              [label]=\"tick.label\"\n              [max]=\"outerRadius\"\n              [value]=\"showGridLines ? 1 : outerRadius\"\n              [explodeSlices]=\"true\"\n              [animations]=\"animations\"\n              [labelTrim]=\"labelTrim\"\n              [labelTrimSize]=\"labelTrimSize\"\n            ></svg:g>\n          </svg:g>\n        </svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          [attr.transform]=\"transformYAxis\"\n          *ngIf=\"yAxis\"\n          [yScale]=\"yAxisScale\"\n          [dims]=\"yAxisDims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [wrapTicks]=\"wrapTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-axis-label\n          *ngIf=\"xAxis && showXAxisLabel\"\n          [label]=\"xAxisLabel\"\n          [offset]=\"labelOffset\"\n          [orient]=\"orientation.Bottom\"\n          [height]=\"dims.height\"\n          [width]=\"dims.width\"\n        ></svg:g>\n        <svg:g *ngIf=\"!isSSR\" [attr.transform]=\"transformPlot\">\n          <svg:g *ngFor=\"let series of results; trackBy: trackBy\" [@animationState]=\"'active'\">\n            <svg:g\n              ngx-charts-polar-series\n              [gradient]=\"gradient\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [activeEntries]=\"activeEntries\"\n              [scaleType]=\"scaleType\"\n              [curve]=\"curve\"\n              [rangeFillOpacity]=\"rangeFillOpacity\"\n              [animations]=\"animations\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              (select)=\"onClick($event)\"\n              (activate)=\"onActivate($event)\"\n              (deactivate)=\"onDeactivate($event)\"\n            />\n          </svg:g>\n        </svg:g>\n        <svg:g *ngIf=\"isSSR\" [attr.transform]=\"transformPlot\">\n          <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n            <svg:g\n              ngx-charts-polar-series\n              [gradient]=\"gradient\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [activeEntries]=\"activeEntries\"\n              [scaleType]=\"scaleType\"\n              [curve]=\"curve\"\n              [rangeFillOpacity]=\"rangeFillOpacity\"\n              [animations]=\"animations\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              (select)=\"onClick($event)\"\n              (activate)=\"onActivate($event)\"\n              (deactivate)=\"onDeactivate($event)\"\n            />\n          </svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: [\n    '../common/base-chart.component.scss',\n    '../pie-chart/pie-chart.component.scss',\n    './polar-chart.component.scss'\n  ],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('animationState', [\n      transition(':leave', [\n        style({\n          opacity: 1\n        }),\n        animate(\n          500,\n          style({\n            opacity: 0\n          })\n        )\n      ])\n    ])\n  ],\n  standalone: false\n})\nexport class PolarChartComponent extends BaseChartComponent implements OnInit {\n  @Input() legend: boolean;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() xAxis: boolean;\n  @Input() yAxis: boolean;\n  @Input() showXAxisLabel: boolean;\n  @Input() showYAxisLabel: boolean;\n  @Input() xAxisLabel: string;\n  @Input() yAxisLabel: string;\n  @Input() autoScale: boolean;\n  @Input() showGridLines: boolean = true;\n  @Input() curve: any = curveCardinalClosed;\n  @Input() activeEntries: any[] = [];\n  @Input() declare schemeType: ScaleType;\n  @Input() rangeFillOpacity: number = 0.15;\n  @Input() trimYAxisTicks: boolean = true;\n  @Input() maxYAxisTickLength: number = 16;\n  @Input() xAxisTickFormatting: (o: any) => any;\n  @Input() yAxisTickFormatting: (o: any) => any;\n  @Input() roundDomains: boolean = false;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() showSeriesOnHover: boolean = true;\n  @Input() gradient: boolean = false;\n  @Input() yAxisMinScale: number = 0;\n  @Input() labelTrim: boolean = true;\n  @Input() labelTrimSize: number = 10;\n  @Input() wrapTicks = false;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  yAxisDims: ViewDimensions;\n  labelOffset: number;\n  xDomain: any;\n  yDomain: any;\n  seriesDomain: any;\n  yScale: any; // -> rScale\n  xScale: any; // -> tScale\n  yAxisScale: any; // -> yScale\n  colors: ColorHelper;\n  scaleType: ScaleType;\n  transform: string;\n  transformPlot: string;\n  transformYAxis: string;\n  transformXAxis: string;\n  // series: any; // ???\n  margin: number[] = [10, 20, 10, 20];\n  xAxisHeight: number = 0;\n  yAxisWidth: number = 0;\n  filteredDomain: any;\n  legendOptions: any;\n  thetaTicks: any[];\n  radiusTicks: number[];\n  outerRadius: number;\n\n  orientation = Orientation;\n\n  isSSR = false;\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.isSSR = true;\n    }\n  }\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    this.setDims();\n\n    this.setScales();\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    this.setTicks();\n  }\n\n  setDims() {\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showXAxis: this.xAxis,\n      showYAxis: this.yAxis,\n      xAxisHeight: this.xAxisHeight,\n      yAxisWidth: this.yAxisWidth,\n      showXLabel: this.showXAxisLabel,\n      showYLabel: this.showYAxisLabel,\n      showLegend: this.legend,\n      legendType: this.schemeType,\n      legendPosition: this.legendPosition\n    });\n\n    const halfWidth = Math.floor(this.dims.width / 2);\n    const halfHeight = Math.floor(this.dims.height / 2);\n\n    const outerRadius = (this.outerRadius = Math.min(halfHeight / 1.5, halfWidth / 1.5));\n\n    const yOffset = Math.max(0, halfHeight - outerRadius);\n\n    this.yAxisDims = {\n      ...this.dims,\n      width: halfWidth\n    };\n\n    this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n    this.transformYAxis = `translate(0, ${yOffset})`;\n    this.labelOffset = this.dims.height + 40;\n    this.transformPlot = `translate(${halfWidth}, ${halfHeight})`;\n  }\n\n  setScales() {\n    const xValues = this.getXValues();\n    this.scaleType = getScaleType(xValues);\n    this.xDomain = this.filteredDomain || this.getXDomain(xValues);\n\n    this.yDomain = this.getYDomain();\n    this.seriesDomain = this.getSeriesDomain();\n\n    this.xScale = this.getXScale(this.xDomain, twoPI);\n    this.yScale = this.getYScale(this.yDomain, this.outerRadius);\n    this.yAxisScale = this.getYScale(this.yDomain.reverse(), this.outerRadius);\n  }\n\n  setTicks() {\n    let tickFormat;\n    if (this.xAxisTickFormatting) {\n      tickFormat = this.xAxisTickFormatting;\n    } else if (this.xScale.tickFormat) {\n      tickFormat = this.xScale.tickFormat.apply(this.xScale, [5]);\n    } else {\n      tickFormat = d => {\n        if (isDate(d)) {\n          return d.toLocaleDateString();\n        }\n        return d.toLocaleString();\n      };\n    }\n\n    const outerRadius = this.outerRadius;\n    const s = 1.1;\n\n    this.thetaTicks = this.xDomain.map(d => {\n      const startAngle = this.xScale(d);\n      const dd = s * outerRadius * (startAngle > Math.PI ? -1 : 1);\n      const label = tickFormat(d);\n\n      const startPos = [outerRadius * Math.sin(startAngle), -outerRadius * Math.cos(startAngle)];\n      const pos = [dd, s * startPos[1]];\n      return {\n        innerRadius: 0,\n        outerRadius,\n        startAngle,\n        endAngle: startAngle,\n        value: outerRadius,\n        label,\n        startPos,\n        pos\n      };\n    });\n\n    const minDistance = 10;\n\n    /* from pie chart, abstract out -*/\n    for (let i = 0; i < this.thetaTicks.length - 1; i++) {\n      const a = this.thetaTicks[i];\n\n      for (let j = i + 1; j < this.thetaTicks.length; j++) {\n        const b = this.thetaTicks[j];\n        // if they're on the same side\n        if (b.pos[0] * a.pos[0] > 0) {\n          // if they're overlapping\n          const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n          if (o > 0) {\n            // push the second up or down\n            b.pos[1] += Math.sign(b.pos[0]) * o;\n          }\n        }\n      }\n    }\n\n    this.radiusTicks = this.yAxisScale.ticks(Math.floor(this.dims.height / 50)).map(d => this.yScale(d));\n  }\n\n  getXValues(): any[] {\n    const values = [];\n    for (const results of this.results) {\n      for (const d of results.series) {\n        if (!values.includes(d.name)) {\n          values.push(d.name);\n        }\n      }\n    }\n    return values;\n  }\n\n  getXDomain(values = this.getXValues()): any[] {\n    if (this.scaleType === ScaleType.Time) {\n      const min = Math.min(...values);\n      const max = Math.max(...values);\n      return [min, max];\n    } else if (this.scaleType === ScaleType.Linear) {\n      values = values.map(v => Number(v));\n      const min = Math.min(...values);\n      const max = Math.max(...values);\n      return [min, max];\n    }\n    return values;\n  }\n\n  getYValues(): any[] {\n    const domain = [];\n\n    for (const results of this.results) {\n      for (const d of results.series) {\n        if (domain.indexOf(d.value) < 0) {\n          domain.push(d.value);\n        }\n        if (d.min !== undefined) {\n          if (domain.indexOf(d.min) < 0) {\n            domain.push(d.min);\n          }\n        }\n        if (d.max !== undefined) {\n          if (domain.indexOf(d.max) < 0) {\n            domain.push(d.max);\n          }\n        }\n      }\n    }\n    return domain;\n  }\n\n  getYDomain(domain = this.getYValues()): any[] {\n    let min = Math.min(...domain);\n    const max = Math.max(this.yAxisMinScale, ...domain);\n\n    min = Math.max(0, min);\n    if (!this.autoScale) {\n      min = Math.min(0, min);\n    }\n\n    return [min, max];\n  }\n\n  getSeriesDomain(): any[] {\n    return this.results.map(d => d.name);\n  }\n\n  getXScale(domain, width: number): any {\n    switch (this.scaleType) {\n      case ScaleType.Time:\n        return scaleTime().range([0, width]).domain(domain);\n      case ScaleType.Linear: {\n        const scale = scaleLinear().range([0, width]).domain(domain);\n        return this.roundDomains ? scale.nice() : scale;\n      }\n      default:\n        return scalePoint()\n          .range([0, width - twoPI / domain.length])\n          .padding(0)\n          .domain(domain);\n    }\n  }\n\n  getYScale(domain, height: number): any {\n    const scale = scaleLinear().range([0, height]).domain(domain);\n\n    return this.roundDomains ? scale.nice() : scale;\n  }\n\n  onClick(data, series?): void {\n    if (series) {\n      data.series = series.name;\n    }\n\n    this.select.emit(data);\n  }\n\n  setColors(): void {\n    const domain = this.schemeType === ScaleType.Ordinal ? this.seriesDomain : this.yDomain.reverse();\n    this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n  }\n\n  getLegendOptions() {\n    if (this.schemeType === ScaleType.Ordinal) {\n      return {\n        scaleType: this.schemeType,\n        colors: this.colors,\n        domain: this.seriesDomain,\n        title: this.legendTitle,\n        position: this.legendPosition\n      };\n    }\n    return {\n      scaleType: this.schemeType,\n      colors: this.colors.scale,\n      domain: this.yDomain,\n      title: undefined,\n      position: this.legendPosition\n    };\n  }\n\n  updateYAxisWidth({ width }: { width: number }): void {\n    this.yAxisWidth = width;\n    this.update();\n  }\n\n  updateXAxisHeight({ height }: { height: number }): void {\n    this.xAxisHeight = height;\n    this.update();\n  }\n\n  onActivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n    if (idx > -1) {\n      return;\n    }\n    this.activeEntries = this.showSeriesOnHover ? [item, ...this.activeEntries] : this.activeEntries;\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  deactivateAll(): void {\n    this.activeEntries = [...this.activeEntries];\n    for (const entry of this.activeEntries) {\n      this.deactivate.emit({ value: entry, entries: [] });\n    }\n    this.activeEntries = [];\n  }\n\n  trackBy(index: number, item): string {\n    return `${item.name}`;\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ElementRef,\n  SimpleChanges,\n  OnChanges,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { interpolate } from 'd3-interpolate';\nimport { select } from 'd3-selection';\nimport { arc } from 'd3-shape';\nimport { id } from '../utils/id';\nimport { DataItem } from '../models/chart-data.model';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\n\n@Component({\n  selector: 'g[ngx-charts-pie-arc]',\n  template: `\n    <svg:g class=\"arc-group\">\n      <svg:defs *ngIf=\"gradient\">\n        <svg:g ngx-charts-svg-radial-gradient [color]=\"fill\" [name]=\"radialGradientId\" [startOpacity]=\"startOpacity\" />\n      </svg:defs>\n      <svg:path\n        [attr.d]=\"path\"\n        class=\"arc\"\n        [class.active]=\"isActive\"\n        [attr.fill]=\"getGradient()\"\n        (click)=\"onClick()\"\n        (dblclick)=\"onDblClick($event)\"\n        (mouseenter)=\"activate.emit(data)\"\n        (mouseleave)=\"deactivate.emit(data)\"\n        [style.pointer-events]=\"getPointerEvents()\"\n      />\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PieArcComponent implements OnChanges {\n  @Input() fill: string;\n  @Input() startAngle: number = 0;\n  @Input() endAngle: number = Math.PI * 2;\n  @Input() innerRadius: number;\n  @Input() outerRadius: number;\n  @Input() cornerRadius: number = 0;\n  @Input() value: number;\n  @Input() max: number;\n  @Input() data: DataItem;\n  @Input() explodeSlices: boolean = false;\n  @Input() gradient: boolean = false;\n  @Input() animate: boolean = true;\n  @Input() pointerEvents: boolean = true;\n  @Input() isActive: boolean = false;\n\n  @Output() select = new EventEmitter();\n  @Output() activate = new EventEmitter();\n  @Output() deactivate = new EventEmitter();\n  @Output() dblclick = new EventEmitter();\n\n  barOrientation = BarOrientation;\n\n  element: HTMLElement;\n  path: any;\n  startOpacity: number;\n  radialGradientId: string;\n  gradientFill: string;\n  initialized: boolean = false;\n\n  private _timeout;\n\n  constructor(element: ElementRef) {\n    this.element = element.nativeElement;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  getGradient(): string {\n    return this.gradient ? this.gradientFill : this.fill;\n  }\n\n  getPointerEvents(): string {\n    return this.pointerEvents ? 'auto' : 'none';\n  }\n\n  update(): void {\n    const calc = this.calculateArc();\n    this.startOpacity = 0.5;\n    this.radialGradientId = 'linearGrad' + id().toString();\n    this.gradientFill = `url(#${this.radialGradientId})`;\n\n    if (this.animate) {\n      if (this.initialized) {\n        this.updateAnimation();\n      } else {\n        this.loadAnimation();\n        this.initialized = true;\n      }\n    } else {\n      this.path = calc.startAngle(this.startAngle).endAngle(this.endAngle)();\n    }\n  }\n\n  calculateArc(): any {\n    let outerRadius = this.outerRadius;\n    if (this.explodeSlices && this.innerRadius === 0) {\n      outerRadius = (this.outerRadius * this.value) / this.max;\n    }\n\n    return arc().innerRadius(this.innerRadius).outerRadius(outerRadius).cornerRadius(this.cornerRadius);\n  }\n\n  loadAnimation(): void {\n    const node = select(this.element)\n      .selectAll('.arc')\n      .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n\n    const calc = this.calculateArc();\n\n    node\n      .transition()\n      .attrTween('d', function (d) {\n        (<any>this)._current = (<any>this)._current || d;\n        const copyOfD = Object.assign({}, d);\n        copyOfD.endAngle = copyOfD.startAngle;\n        const interpolater = interpolate(copyOfD, copyOfD);\n        (<any>this)._current = interpolater(0);\n        return function (t) {\n          return calc(interpolater(t));\n        };\n      })\n      .transition()\n      .duration(750)\n      .attrTween('d', function (d) {\n        (<any>this)._current = (<any>this)._current || d;\n        const interpolater = interpolate((<any>this)._current, d);\n        (<any>this)._current = interpolater(0);\n        return function (t) {\n          return calc(interpolater(t));\n        };\n      });\n  }\n\n  updateAnimation(): void {\n    const node = select(this.element)\n      .selectAll('.arc')\n      .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n\n    const calc = this.calculateArc();\n\n    node\n      .transition()\n      .duration(750)\n      .attrTween('d', function (d) {\n        (<any>this)._current = (<any>this)._current || d;\n        const interpolater = interpolate((<any>this)._current, d);\n        (<any>this)._current = interpolater(0);\n        return function (t) {\n          return calc(interpolater(t));\n        };\n      });\n  }\n\n  onClick(): void {\n    clearTimeout(this._timeout);\n    this._timeout = setTimeout(() => this.select.emit(this.data), 200);\n  }\n\n  onDblClick(event: MouseEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n    clearTimeout(this._timeout);\n\n    this.dblclick.emit({\n      data: this.data,\n      nativeEvent: event\n    });\n  }\n}\n","import {\n  Component,\n  SimpleChanges,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  ChangeDetectionStrategy,\n  TemplateRef\n} from '@angular/core';\nimport { max } from 'd3-array';\nimport { arc, pie } from 'd3-shape';\nimport { ColorHelper } from '../common/color.helper';\n\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { DataItem } from '../models/chart-data.model';\nimport { PieData } from './pie-label.component';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\n@Component({\n  selector: 'g[ngx-charts-pie-series]',\n  template: `\n    <svg:g *ngFor=\"let arc of data; trackBy: trackBy\">\n      <svg:g\n        ngx-charts-pie-label\n        *ngIf=\"labelVisible(arc)\"\n        [data]=\"arc\"\n        [radius]=\"outerRadius\"\n        [color]=\"color(arc)\"\n        [label]=\"labelText(arc)\"\n        [labelTrim]=\"trimLabels\"\n        [labelTrimSize]=\"maxLabelLength\"\n        [max]=\"max\"\n        [value]=\"arc.value\"\n        [explodeSlices]=\"explodeSlices\"\n        [animations]=\"animations\"\n      ></svg:g>\n      <svg:g\n        ngx-charts-pie-arc\n        [startAngle]=\"arc.startAngle\"\n        [endAngle]=\"arc.endAngle\"\n        [innerRadius]=\"innerRadius\"\n        [outerRadius]=\"outerRadius\"\n        [fill]=\"color(arc)\"\n        [value]=\"arc.data.value\"\n        [gradient]=\"gradient\"\n        [data]=\"arc.data\"\n        [max]=\"max\"\n        [explodeSlices]=\"explodeSlices\"\n        [isActive]=\"isActive(arc.data)\"\n        [animate]=\"animations\"\n        (select)=\"onClick($event)\"\n        (activate)=\"activate.emit($event)\"\n        (deactivate)=\"deactivate.emit($event)\"\n        (dblclick)=\"dblclick.emit($event)\"\n        ngx-tooltip\n        [tooltipDisabled]=\"tooltipDisabled\"\n        [tooltipPlacement]=\"placementTypes.Top\"\n        [tooltipType]=\"styleTypes.tooltip\"\n        [tooltipTitle]=\"getTooltipTitle(arc)\"\n        [tooltipTemplate]=\"tooltipTemplate\"\n        [tooltipContext]=\"arc.data\"\n      ></svg:g>\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PieSeriesComponent implements OnChanges {\n  @Input() colors: ColorHelper;\n  @Input() series: DataItem[] = [];\n  @Input() dims: ViewDimensions;\n  @Input() innerRadius: number = 60;\n  @Input() outerRadius: number = 80;\n  @Input() explodeSlices: boolean;\n  @Input() showLabels: boolean;\n  @Input() gradient: boolean;\n  @Input() activeEntries: any[];\n  @Input() labelFormatting: any;\n  @Input() trimLabels: boolean = true;\n  @Input() maxLabelLength: number = 10;\n  @Input() tooltipText: (o: any) => any;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipTemplate: TemplateRef<any>;\n  @Input() animations: boolean = true;\n\n  @Output() select = new EventEmitter();\n  @Output() activate = new EventEmitter();\n  @Output() deactivate = new EventEmitter();\n  @Output() dblclick = new EventEmitter();\n\n  max: number;\n  data: PieData[];\n\n  placementTypes = PlacementTypes;\n  styleTypes = StyleTypes;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    const pieGenerator = pie<any, any>()\n      .value(d => d.value)\n      .sort(null);\n\n    const arcData = pieGenerator(this.series);\n\n    this.max = max(arcData, d => {\n      return d.value;\n    });\n\n    this.data = this.calculateLabelPositions(arcData);\n    this.tooltipText = this.tooltipText || this.defaultTooltipText;\n  }\n\n  midAngle(d): number {\n    return d.startAngle + (d.endAngle - d.startAngle) / 2;\n  }\n\n  outerArc(): any {\n    const factor = 1.5;\n\n    return arc()\n      .innerRadius(this.outerRadius * factor)\n      .outerRadius(this.outerRadius * factor);\n  }\n\n  calculateLabelPositions(pieData): any {\n    const factor = 1.5;\n    const minDistance = 10;\n    const labelPositions = pieData;\n\n    labelPositions.forEach(d => {\n      d.pos = this.outerArc().centroid(d);\n      d.pos[0] = factor * this.outerRadius * (this.midAngle(d) < Math.PI ? 1 : -1);\n    });\n\n    for (let i = 0; i < labelPositions.length - 1; i++) {\n      const a = labelPositions[i];\n      if (!this.labelVisible(a)) {\n        continue;\n      }\n\n      for (let j = i + 1; j < labelPositions.length; j++) {\n        const b = labelPositions[j];\n        if (!this.labelVisible(b)) {\n          continue;\n        }\n        // if they're on the same side\n        if (b.pos[0] * a.pos[0] > 0) {\n          // if they're overlapping\n          const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n          if (o > 0) {\n            // push the second up or down\n            b.pos[1] += Math.sign(b.pos[0]) * o;\n          }\n        }\n      }\n    }\n\n    return labelPositions;\n  }\n\n  labelVisible(myArc): boolean {\n    return this.showLabels && myArc.endAngle - myArc.startAngle > Math.PI / 30;\n  }\n\n  getTooltipTitle(a) {\n    return this.tooltipTemplate ? undefined : this.tooltipText(a);\n  }\n\n  labelText(myArc): string {\n    if (this.labelFormatting) {\n      return this.labelFormatting(myArc.data.name);\n    }\n    return this.label(myArc);\n  }\n\n  label(myArc): string {\n    return formatLabel(myArc.data.name);\n  }\n\n  defaultTooltipText(myArc): string {\n    const label = this.label(myArc);\n    const val = formatLabel(myArc.data.value);\n\n    return `\n      <span class=\"tooltip-label\">${escapeLabel(label)}</span>\n      <span class=\"tooltip-val\">${val}</span>\n    `;\n  }\n\n  color(myArc): any {\n    return this.colors.getColor(this.label(myArc));\n  }\n\n  trackBy(index, item): string {\n    return item.data.name;\n  }\n\n  onClick(data): void {\n    this.select.emit(data);\n  }\n\n  isActive(entry): boolean {\n    if (!this.activeEntries) return false;\n    const item = this.activeEntries.find(d => {\n      return entry.name === d.name && entry.series === d.series;\n    });\n    return item !== undefined;\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef,\n  ViewEncapsulation\n} from '@angular/core';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { DataItem } from '../models/chart-data.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n  selector: 'ngx-charts-advanced-pie-chart',\n  template: `\n    <div [style.width.px]=\"width\" [style.height.px]=\"height\">\n      <div class=\"advanced-pie chart\" [style.width.px]=\"dims.width\" [style.height.px]=\"dims.height\">\n        <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n          <svg:g [attr.transform]=\"transform\" class=\"pie chart\">\n            <svg:g\n              ngx-charts-pie-series\n              [colors]=\"colors\"\n              [series]=\"results\"\n              [innerRadius]=\"innerRadius\"\n              [activeEntries]=\"activeEntries\"\n              [outerRadius]=\"outerRadius\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [tooltipText]=\"tooltipText\"\n              (select)=\"onClick($event)\"\n              (activate)=\"onActivate($event)\"\n              (deactivate)=\"onDeactivate($event)\"\n              [animations]=\"animations\"\n            ></svg:g>\n          </svg:g>\n        </ngx-charts-chart>\n      </div>\n      <div class=\"advanced-pie-legend-wrapper\" [style.width.px]=\"width - dims.width\" [style.height.px]=\"height\">\n        <ngx-charts-advanced-legend\n          [data]=\"results\"\n          [colors]=\"colors\"\n          [width]=\"width - dims.width - margin[1]\"\n          [label]=\"label\"\n          [animations]=\"animations\"\n          [valueFormatting]=\"valueFormatting\"\n          [labelFormatting]=\"nameFormatting\"\n          [percentageFormatting]=\"percentageFormatting\"\n          (select)=\"onClick($event)\"\n          (activate)=\"onActivate($event, true)\"\n          (deactivate)=\"onDeactivate($event, true)\"\n        >\n        </ngx-charts-advanced-legend>\n      </div>\n    </div>\n  `,\n  styleUrls: ['../common/base-chart.component.scss', './advanced-pie-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class AdvancedPieChartComponent extends BaseChartComponent {\n  @Input() gradient: boolean;\n  @Input() activeEntries: any[] = [];\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipText: any;\n  @Input() label: string = 'Total';\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  domain: string[];\n  outerRadius: number;\n  innerRadius: number;\n  transform: string;\n  colors: ColorHelper;\n  legendWidth: number;\n  margin: number[] = [20, 20, 20, 20];\n\n  @Input() valueFormatting: (value: number) => any;\n  @Input() nameFormatting: (value: string) => any;\n  @Input() percentageFormatting: (value: number) => any;\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: (this.width * 4) / 12.0,\n      height: this.height,\n      margins: this.margin\n    });\n\n    this.formatDates();\n\n    this.domain = this.getDomain();\n    this.setColors();\n\n    const xOffset = this.dims.width / 2;\n    const yOffset = this.margin[0] + this.dims.height / 2;\n    this.legendWidth = this.width - this.dims.width - this.margin[1];\n\n    this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2.5;\n    this.innerRadius = this.outerRadius * 0.75;\n\n    this.transform = `translate(${xOffset} , ${yOffset})`;\n  }\n\n  getDomain(): string[] {\n    return this.results.map(d => d.label);\n  }\n\n  onClick(data: DataItem) {\n    this.select.emit(data);\n  }\n\n  setColors(): void {\n    this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n  }\n\n  onActivate(item, fromLegend = false) {\n    item = this.results.find(d => {\n      if (fromLegend) {\n        return d.label === item.name;\n      } else {\n        return d.name === item.name;\n      }\n    });\n\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value && d.series === item.series;\n    });\n    if (idx > -1) {\n      return;\n    }\n\n    this.activeEntries = [item, ...this.activeEntries];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item, fromLegend = false) {\n    item = this.results.find(d => {\n      if (fromLegend) {\n        return d.label === item.name;\n      } else {\n        return d.name === item.name;\n      }\n    });\n\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value && d.series === item.series;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  ViewEncapsulation,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef\n} from '@angular/core';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { DataItem } from '../models/chart-data.model';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n  selector: 'ngx-charts-pie-chart',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"translation\" class=\"pie-chart chart\">\n        <svg:g\n          ngx-charts-pie-series\n          [colors]=\"colors\"\n          [series]=\"data\"\n          [showLabels]=\"labels\"\n          [labelFormatting]=\"labelFormatting\"\n          [trimLabels]=\"trimLabels\"\n          [maxLabelLength]=\"maxLabelLength\"\n          [activeEntries]=\"activeEntries\"\n          [innerRadius]=\"innerRadius\"\n          [outerRadius]=\"outerRadius\"\n          [explodeSlices]=\"explodeSlices\"\n          [gradient]=\"gradient\"\n          [animations]=\"animations\"\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [tooltipText]=\"tooltipText\"\n          (dblclick)=\"dblclick.emit($event)\"\n          (select)=\"onClick($event)\"\n          (activate)=\"onActivate($event)\"\n          (deactivate)=\"onDeactivate($event)\"\n        />\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../common/base-chart.component.scss', './pie-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PieChartComponent extends BaseChartComponent {\n  @Input() labels: boolean = false;\n  @Input() legend: boolean = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() explodeSlices: boolean = false;\n  @Input() doughnut: boolean = false;\n  @Input() arcWidth: number = 0.25;\n  @Input() gradient: boolean;\n  @Input() activeEntries: any[] = [];\n  @Input() tooltipDisabled: boolean = false;\n  @Input() labelFormatting: any;\n  @Input() trimLabels: boolean = true;\n  @Input() maxLabelLength: number = 10;\n  @Input() tooltipText: any;\n  @Output() dblclick = new EventEmitter();\n  // optional margins\n  @Input() margins: number[];\n  @Output() select = new EventEmitter();\n  @Output() activate = new EventEmitter();\n  @Output() deactivate = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  translation: string;\n  outerRadius: number;\n  innerRadius: number;\n  data: DataItem[];\n  colors: ColorHelper;\n  domain: string[];\n  dims: ViewDimensions;\n  legendOptions: LegendOptions;\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    if (this.labels && this.hasNoOptionalMarginsSet()) {\n      this.margins = [30, 80, 30, 80];\n    } else if (!this.labels && this.hasNoOptionalMarginsSet()) {\n      // default value for margins\n      this.margins = [20, 20, 20, 20];\n    }\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margins,\n      showLegend: this.legend,\n      legendPosition: this.legendPosition\n    });\n\n    this.formatDates();\n\n    const xOffset = this.margins[3] + this.dims.width / 2;\n    const yOffset = this.margins[0] + this.dims.height / 2;\n    this.translation = `translate(${xOffset}, ${yOffset})`;\n    this.outerRadius = Math.min(this.dims.width, this.dims.height);\n    if (this.labels) {\n      // make room for labels\n      this.outerRadius /= 3;\n    } else {\n      this.outerRadius /= 2;\n    }\n    this.innerRadius = 0;\n    if (this.doughnut) {\n      this.innerRadius = this.outerRadius * (1 - this.arcWidth);\n    }\n\n    this.domain = this.getDomain();\n\n    // sort data according to domain\n    this.data = this.results.sort((a, b) => {\n      return this.domain.indexOf(a.name) - this.domain.indexOf(b.name);\n    });\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n  }\n\n  getDomain(): string[] {\n    return this.results.map(d => d.label);\n  }\n\n  onClick(data: DataItem | string): void {\n    this.select.emit(data);\n  }\n\n  setColors(): void {\n    this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n  }\n\n  getLegendOptions(): LegendOptions {\n    return {\n      scaleType: ScaleType.Ordinal,\n      domain: this.domain,\n      colors: this.colors,\n      title: this.legendTitle,\n      position: this.legendPosition\n    };\n  }\n\n  onActivate(item, fromLegend = false): void {\n    item = this.results.find(d => {\n      if (fromLegend) {\n        return d.label === item.name;\n      } else {\n        return d.name === item.name;\n      }\n    });\n\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value && d.series === item.series;\n    });\n    if (idx > -1) {\n      return;\n    }\n\n    this.activeEntries = [item, ...this.activeEntries];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item, fromLegend = false): void {\n    item = this.results.find(d => {\n      if (fromLegend) {\n        return d.label === item.name;\n      } else {\n        return d.name === item.name;\n      }\n    });\n\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value && d.series === item.series;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  private hasNoOptionalMarginsSet(): boolean {\n    return !this.margins || this.margins.length <= 0;\n  }\n}\n","import { scaleBand } from 'd3-scale';\nimport { ViewDimensions } from './types/view-dimension.interface';\nimport { StringOrNumberOrDate } from '../models/chart-data.model';\n\nexport interface GridItem {\n  data: GridData;\n  height: number;\n  width: number;\n  x: number;\n  y: number;\n}\n\nexport interface GridData {\n  extra?: any;\n  label: string;\n  name: StringOrNumberOrDate;\n  percent: number;\n  total: number;\n  value: number;\n}\n\nexport function gridSize(dims: ViewDimensions, len: number, minWidth: number): [number, number] {\n  let rows = 1;\n  let cols = len;\n  const width = dims.width;\n\n  if (width > minWidth) {\n    while (width / cols < minWidth) {\n      rows += 1;\n      cols = Math.ceil(len / rows);\n    }\n  }\n\n  return [cols, rows];\n}\n\nexport function gridLayout(\n  dims: ViewDimensions,\n  data: GridData[],\n  minWidth: number,\n  designatedTotal: number\n): GridItem[] {\n  const xScale: any = scaleBand<number>();\n  const yScale: any = scaleBand<number>();\n  const width = dims.width;\n  const height = dims.height;\n\n  const [columns, rows] = gridSize(dims, data.length, minWidth);\n\n  const xDomain = [];\n  const yDomain = [];\n  for (let i = 0; i < rows; i++) {\n    yDomain.push(i);\n  }\n  for (let i = 0; i < columns; i++) {\n    xDomain.push(i);\n  }\n  xScale.domain(xDomain);\n  yScale.domain(yDomain);\n\n  xScale.rangeRound([0, width], 0.1);\n  yScale.rangeRound([0, height], 0.1);\n\n  const res = [];\n  const total = designatedTotal ? designatedTotal : getTotal(data);\n  const cardWidth = xScale.bandwidth();\n  const cardHeight = yScale.bandwidth();\n\n  for (let i = 0; i < data.length; i++) {\n    res[i] = {};\n    res[i].data = {\n      name: data[i] ? data[i].name : '',\n      value: data[i] ? data[i].value : undefined,\n      extra: data[i] ? data[i].extra : undefined,\n      label: data[i] ? data[i].label : ''\n    };\n    res[i].x = xScale(i % columns);\n    res[i].y = yScale(Math.floor(i / columns));\n    res[i].width = cardWidth;\n    res[i].height = cardHeight;\n    res[i].data.percent = total > 0 ? res[i].data.value / total : 0;\n    res[i].data.total = total;\n  }\n  return res;\n}\n\nfunction getTotal(results: any): number {\n  return results.map(d => (d ? d.value : 0)).reduce((sum, val) => sum + val, 0);\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ElementRef,\n  OnChanges,\n  SimpleChanges,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { pie } from 'd3-shape';\nimport { PieGridData, PieGridDataItem } from '../models/chart-data.model';\n\nexport interface PieArc {\n  animate: boolean;\n  class: string;\n  data: PieGridDataItem;\n  endAngle: number;\n  fill: string;\n  pointerEvents: boolean;\n  startAngle: number;\n}\n\n@Component({\n  selector: 'g[ngx-charts-pie-grid-series]',\n  template: `\n    <svg:g class=\"pie-grid-arcs\">\n      <svg:g\n        ngx-charts-pie-arc\n        *ngFor=\"let arc of arcs; trackBy: trackBy\"\n        [attr.class]=\"arc.class\"\n        [startAngle]=\"arc.startAngle\"\n        [endAngle]=\"arc.endAngle\"\n        [innerRadius]=\"innerRadius\"\n        [outerRadius]=\"outerRadius\"\n        [fill]=\"color(arc)\"\n        [value]=\"arc.data.value\"\n        [data]=\"arc.data\"\n        [gradient]=\"false\"\n        [pointerEvents]=\"arc.pointerEvents\"\n        [animate]=\"arc.animate\"\n        (select)=\"onClick($event)\"\n        (activate)=\"activate.emit($event)\"\n        (deactivate)=\"deactivate.emit($event)\"\n      ></svg:g>\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PieGridSeriesComponent implements OnChanges {\n  @Input() colors;\n  @Input() data: PieGridData[];\n  @Input() innerRadius = 70;\n  @Input() outerRadius = 80;\n  @Input() animations: boolean = true;\n\n  @Output() select = new EventEmitter();\n  @Output() activate = new EventEmitter();\n  @Output() deactivate = new EventEmitter();\n\n  element: HTMLElement;\n  layout: any;\n  arcs: PieArc[];\n\n  constructor(element: ElementRef) {\n    this.element = element.nativeElement;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    this.layout = pie<any, any>()\n      .value(d => d.data.value)\n      .sort(null);\n\n    this.arcs = this.getArcs();\n  }\n\n  getArcs(): PieArc[] {\n    return this.layout(this.data).map((arc, index) => {\n      const label = arc.data.data.name;\n      const other = arc.data.data.other;\n\n      if (index === 0) {\n        arc.startAngle = 0;\n      }\n\n      const color = this.colors(label);\n      return {\n        data: arc.data.data,\n        class: 'arc ' + 'arc' + index,\n        fill: color,\n        startAngle: other ? 0 : arc.startAngle,\n        endAngle: arc.endAngle,\n        animate: this.animations && !other,\n        pointerEvents: !other\n      };\n    });\n  }\n\n  onClick(data): void {\n    this.select.emit(this.data[0].data);\n  }\n\n  trackBy(index, item): string {\n    return item.data.name;\n  }\n\n  label(arc): string {\n    return arc.data.name;\n  }\n\n  color(arc): string {\n    return this.colors(this.label(arc));\n  }\n}\n","import {\n  Component,\n  Input,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  Output,\n  EventEmitter\n} from '@angular/core';\nimport { min } from 'd3-array';\nimport { format } from 'd3-format';\n\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { trimLabel } from '../common/trim-label.helper';\nimport { gridLayout } from '../common/grid-layout.helper';\nimport { formatLabel } from '../common/label.helper';\nimport { DataItem, PieGridData, PieGridDataItem } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n  selector: 'ngx-charts-pie-grid',\n  template: `\n    <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n      <svg:g [attr.transform]=\"transform\" class=\"pie-grid chart\">\n        <svg:g *ngFor=\"let series of series\" class=\"pie-grid-item\" [attr.transform]=\"series.transform\">\n          <svg:g\n            ngx-charts-pie-grid-series\n            [colors]=\"series.colors\"\n            [data]=\"series.data\"\n            [innerRadius]=\"series.innerRadius\"\n            [outerRadius]=\"series.outerRadius\"\n            [animations]=\"animations\"\n            (select)=\"onClick($event)\"\n            ngx-tooltip\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipPlacement]=\"placementTypes.Top\"\n            [tooltipType]=\"styleTypes.tooltip\"\n            [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText({ data: series })\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [tooltipContext]=\"series.data[0].data\"\n            (activate)=\"onActivate($event)\"\n            (deactivate)=\"onDeactivate($event)\"\n          />\n          <svg:text\n            *ngIf=\"animations\"\n            class=\"label percent-label\"\n            dy=\"-0.5em\"\n            x=\"0\"\n            y=\"5\"\n            ngx-charts-count-up\n            [countTo]=\"series.percent\"\n            [countSuffix]=\"'%'\"\n            text-anchor=\"middle\"\n          ></svg:text>\n          <svg:text *ngIf=\"!animations\" class=\"label percent-label\" dy=\"-0.5em\" x=\"0\" y=\"5\" text-anchor=\"middle\">\n            {{ series.percent.toLocaleString() }}\n          </svg:text>\n          <svg:text class=\"label\" dy=\"0.5em\" x=\"0\" y=\"5\" text-anchor=\"middle\">\n            {{ series.label }}\n          </svg:text>\n          <svg:text\n            *ngIf=\"animations\"\n            class=\"label\"\n            dy=\"1.23em\"\n            x=\"0\"\n            [attr.y]=\"series.outerRadius\"\n            text-anchor=\"middle\"\n            ngx-charts-count-up\n            [countTo]=\"series.total\"\n            [countPrefix]=\"label + ': '\"\n          ></svg:text>\n          <svg:text\n            *ngIf=\"!animations\"\n            class=\"label\"\n            dy=\"1.23em\"\n            x=\"0\"\n            [attr.y]=\"series.outerRadius\"\n            text-anchor=\"middle\"\n          >\n            {{ label }}: {{ series.total.toLocaleString() }}\n          </svg:text>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../common/base-chart.component.scss', './pie-grid.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PieGridComponent extends BaseChartComponent {\n  @Input() designatedTotal: number;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipText: (o: any) => any;\n  @Input() label: string = 'Total';\n  @Input() minWidth: number = 150;\n  @Input() activeEntries: any[] = [];\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  dims: ViewDimensions;\n  data: PieGridData[];\n  transform: string;\n  series: any[];\n  domain: string[];\n  colorScale: ColorHelper;\n  margin: number[] = [20, 20, 20, 20];\n\n  placementTypes = PlacementTypes;\n  styleTypes = StyleTypes;\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin\n    });\n\n    this.formatDates();\n\n    this.domain = this.getDomain();\n\n    this.data = gridLayout(this.dims, this.results, this.minWidth, this.designatedTotal);\n    this.transform = `translate(${this.margin[3]} , ${this.margin[0]})`;\n\n    this.series = this.getSeries();\n    this.setColors();\n\n    this.tooltipText = this.tooltipText || this.defaultTooltipText;\n  }\n\n  defaultTooltipText({ data }): string {\n    const label = trimLabel(formatLabel(data.name));\n    const val = data.value.toLocaleString();\n    return `\n      <span class=\"tooltip-label\">${label}</span>\n      <span class=\"tooltip-val\">${val}</span>\n    `;\n  }\n\n  getDomain(): string[] {\n    return this.results.map(d => d.label);\n  }\n\n  getSeries(): any[] {\n    const total = this.designatedTotal ? this.designatedTotal : this.getTotal();\n\n    return this.data.map(d => {\n      const baselineLabelHeight = 20;\n      const padding = 10;\n      const name = d.data.name;\n      const label = formatLabel(name);\n      const value = d.data.value;\n      const radius = min([d.width - padding, d.height - baselineLabelHeight]) / 2 - 5;\n      const innerRadius = radius * 0.9;\n\n      let count = 0;\n      const colors = () => {\n        count += 1;\n        if (count === 1) {\n          return 'rgba(100,100,100,0.3)';\n        } else {\n          return this.colorScale.getColor(label);\n        }\n      };\n\n      const xPos = d.x + (d.width - padding) / 2;\n      const yPos = d.y + (d.height - baselineLabelHeight) / 2;\n\n      return {\n        transform: `translate(${xPos}, ${yPos})`,\n        colors,\n        innerRadius,\n        outerRadius: radius,\n        name,\n        label: trimLabel(label),\n        total: value,\n        value,\n        percent: format('.1%')(d.data.percent),\n        data: [\n          d,\n          {\n            data: {\n              other: true,\n              value: total - value,\n              name: d.data.name\n            }\n          }\n        ]\n      };\n    });\n  }\n\n  getTotal(): any {\n    return this.results.map(d => d.value).reduce((sum, d) => sum + d, 0);\n  }\n\n  onClick(data: DataItem): void {\n    this.select.emit(data);\n  }\n\n  setColors(): void {\n    this.colorScale = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n  }\n\n  onActivate(item, fromLegend = false) {\n    item = this.results.find(d => {\n      if (fromLegend) {\n        return d.label === item.name;\n      } else {\n        return d.name === item.name;\n      }\n    });\n\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value && d.series === item.series;\n    });\n    if (idx > -1) {\n      return;\n    }\n\n    this.activeEntries = [item, ...this.activeEntries];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item, fromLegend = false) {\n    item = this.results.find(d => {\n      if (fromLegend) {\n        return d.label === item.name;\n      } else {\n        return d.name === item.name;\n      }\n    });\n\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value && d.series === item.series;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { AdvancedPieChartComponent } from './advanced-pie-chart.component';\nimport { PieLabelComponent } from './pie-label.component';\nimport { PieArcComponent } from './pie-arc.component';\nimport { PieChartComponent } from './pie-chart.component';\nimport { PieGridComponent } from './pie-grid.component';\nimport { PieGridSeriesComponent } from './pie-grid-series.component';\nimport { PieSeriesComponent } from './pie-series.component';\n\n@NgModule({\n  imports: [ChartCommonModule],\n  declarations: [\n    AdvancedPieChartComponent,\n    PieLabelComponent,\n    PieArcComponent,\n    PieChartComponent,\n    PieGridComponent,\n    PieGridSeriesComponent,\n    PieSeriesComponent\n  ],\n  exports: [\n    AdvancedPieChartComponent,\n    PieLabelComponent,\n    PieArcComponent,\n    PieChartComponent,\n    PieGridComponent,\n    PieGridSeriesComponent,\n    PieSeriesComponent\n  ]\n})\nexport class PieChartModule {}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { PolarChartComponent } from './polar-chart.component';\nimport { PolarSeriesComponent } from './polar-series.component';\nimport { PieChartModule } from '../pie-chart/pie-chart.module';\nimport { LineChartModule } from '../line-chart/line-chart.module';\n\n@NgModule({\n  imports: [ChartCommonModule, PieChartModule, LineChartModule],\n  declarations: [PolarChartComponent, PolarSeriesComponent],\n  exports: [PolarChartComponent, PolarSeriesComponent]\n})\nexport class PolarChartModule {}\n","export function calculateTextWidth(fontFamilyKey: Record<string, any>, text: string, defaultWidth = 8) {\n  return text.split('').reduce((acc, curr) => {\n    const width = fontFamilyKey[curr] || defaultWidth;\n    return acc + width;\n  }, 0);\n}\n","export const VERDANA_FONT_WIDTHS_16_PX = {\n  '0': 10,\n  '1': 10,\n  '2': 10,\n  '3': 10,\n  '4': 10,\n  '5': 10,\n  '6': 10,\n  '7': 10,\n  '8': 10,\n  '9': 10,\n  A: 11,\n  B: 11,\n  C: 11,\n  D: 12,\n  E: 10,\n  F: 9,\n  G: 12,\n  H: 12,\n  I: 7,\n  J: 7,\n  K: 11,\n  L: 9,\n  M: 13,\n  N: 12,\n  O: 13,\n  P: 10,\n  Q: 13,\n  R: 11,\n  S: 11,\n  T: 10,\n  U: 12,\n  V: 11,\n  W: 16,\n  X: 11,\n  Y: 10,\n  Z: 11,\n  a: 10,\n  b: 10,\n  c: 8,\n  d: 10,\n  e: 10,\n  f: 6,\n  g: 10,\n  h: 10,\n  i: 4,\n  j: 6,\n  k: 9,\n  l: 4,\n  m: 16,\n  n: 10,\n  o: 10,\n  p: 10,\n  q: 10,\n  r: 7,\n  s: 8,\n  t: 6,\n  u: 10,\n  v: 9,\n  w: 13,\n  x: 9,\n  y: 9,\n  z: 8,\n  '!': 6,\n  '@': 16,\n  '#': 13,\n  $: 10,\n  '%': 17,\n  '^': 13,\n  '&': 12,\n  '*': 10,\n  '(': 7,\n  ')': 7,\n  _: 10,\n  '-': 7,\n  '+': 13,\n  '=': 13,\n  ',': 6,\n  '.': 6,\n  '/': 7,\n  \"'\": 4,\n  ':': 7,\n  '|': 7,\n  '?': 9,\n  ';': 7,\n  '<': 13,\n  '>': 13\n};\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ElementRef,\n  SimpleChanges,\n  OnChanges,\n  ViewChild,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  NgZone,\n  OnDestroy,\n  PLATFORM_ID,\n  Inject,\n  OnInit\n} from '@angular/core';\nimport { trimLabel } from '../common/trim-label.helper';\nimport { roundedRect } from '../common/shape.helper';\nimport { escapeLabel } from '../common/label.helper';\nimport { decimalChecker, count } from '../common/count/count.helper';\nimport { GridData } from '../common/grid-layout.helper';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { calculateTextWidth } from '../utils/calculate-width';\nimport { VERDANA_FONT_WIDTHS_16_PX } from '../common/constants/font-widths';\n\n@Component({\n  selector: 'g[ngx-charts-card]',\n  template: `\n    <svg:g [attr.transform]=\"transform\" class=\"cell\" (click)=\"onClick()\">\n      <svg:rect class=\"card\" [style.fill]=\"color\" [attr.width]=\"cardWidth\" [attr.height]=\"cardHeight\" rx=\"3\" ry=\"3\" />\n      <svg:path\n        *ngIf=\"bandColor && bandColor !== color\"\n        class=\"card-band\"\n        [attr.fill]=\"bandColor\"\n        [attr.transform]=\"transformBand\"\n        stroke=\"none\"\n        [attr.d]=\"bandPath\"\n      />\n      <title>{{ label }}</title>\n      <svg:foreignObject\n        class=\"trimmed-label\"\n        x=\"5\"\n        [attr.x]=\"textPadding[3]\"\n        [attr.y]=\"cardHeight - textPadding[2]\"\n        [attr.width]=\"textWidth\"\n        [attr.height]=\"labelFontSize + textPadding[2]\"\n        alignment-baseline=\"hanging\"\n      >\n        <xhtml:p\n          [style.color]=\"textColor\"\n          [style.fontSize.px]=\"labelFontSize\"\n          [style.lineHeight.px]=\"labelFontSize\"\n          [innerHTML]=\"formattedLabel\"\n        >\n        </xhtml:p>\n      </svg:foreignObject>\n      <svg:text\n        #textEl\n        class=\"value-text\"\n        [attr.x]=\"textPadding[3]\"\n        [attr.y]=\"textPadding[0]\"\n        [style.fill]=\"textColor\"\n        text-anchor=\"start\"\n        alignment-baseline=\"hanging\"\n        [style.font-size.pt]=\"textFontSize\"\n      >\n        {{ value }}\n      </svg:text>\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class CardComponent implements OnChanges, OnDestroy, OnInit {\n  @Input() color: string;\n  @Input() bandColor: string;\n  @Input() textColor: string;\n  @Input() x: number;\n  @Input() y: number;\n  @Input() width: number;\n  @Input() height: number;\n  @Input() label: string;\n  @Input() data: GridData;\n  @Input() medianSize: number;\n  @Input() valueFormatting: any;\n  @Input() labelFormatting: any;\n  @Input() animations: boolean = true;\n\n  @Output() select = new EventEmitter();\n\n  @ViewChild('textEl', { static: false }) textEl: ElementRef;\n\n  element: HTMLElement;\n  value: string = '';\n  transform: string;\n  formattedLabel: string;\n  cardWidth: number;\n  cardHeight: number;\n  textWidth: number;\n  textFontSize: number = 12;\n  textTransform: string = '';\n  initialized: boolean = false;\n  animationReq: number;\n\n  bandHeight: number = 10;\n  transformBand: string;\n  textPadding: number[] = [10, 20, 5, 20];\n  labelFontSize: number = 15;\n\n  bandPath: string;\n\n  constructor(\n    element: ElementRef,\n    private cd: ChangeDetectorRef,\n    private zone: NgZone,\n    @Inject(PLATFORM_ID) private platformId: any\n  ) {\n    this.element = element.nativeElement;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  ngOnInit() {\n    if (isPlatformServer(this.platformId)) {\n      this.scaleTextSSR();\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (isPlatformBrowser(this.platformId)) {\n      cancelAnimationFrame(this.animationReq);\n    }\n  }\n\n  update(): void {\n    this.zone.run(() => {\n      const hasValue = this.data && typeof this.data.value !== 'undefined';\n      const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n      const labelFormatting = this.labelFormatting || (card => escapeLabel(trimLabel(card.label, 55)));\n\n      this.transform = `translate(${this.x} , ${this.y})`;\n\n      this.textWidth = Math.max(0, this.width) - this.textPadding[1] - this.textPadding[3];\n      this.cardWidth = Math.max(0, this.width);\n      this.cardHeight = Math.max(0, this.height);\n\n      this.label = this.label ? this.label : (this.data.name as any);\n\n      const cardData = {\n        label: this.label,\n        data: this.data,\n        value: this.data.value\n      };\n\n      this.formattedLabel = labelFormatting(cardData);\n      this.transformBand = `translate(0 , ${this.cardHeight - this.bandHeight})`;\n\n      const value = hasValue ? valueFormatting(cardData) : '';\n\n      this.value = this.paddedValue(value);\n      this.setPadding();\n\n      this.bandPath = roundedRect(0, 0, this.cardWidth, this.bandHeight, 3, [false, false, true, true]);\n\n      setTimeout(() => {\n        if (isPlatformBrowser(this.platformId)) {\n          this.scaleText();\n        }\n        this.value = value;\n        if (hasValue && !this.initialized) {\n          setTimeout(() => this.startCount(), 20);\n        }\n      }, 8);\n    });\n  }\n\n  paddedValue(value: string): string {\n    if (this.medianSize && this.medianSize > value.length) {\n      value += '\\u2007'.repeat(this.medianSize - value.length);\n    }\n    return value;\n  }\n\n  startCount(): void {\n    if (!this.initialized && this.animations) {\n      cancelAnimationFrame(this.animationReq);\n\n      const val = this.data.value;\n      const decs = decimalChecker(val);\n      const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n\n      const callback = ({ value, finished }) => {\n        this.zone.run(() => {\n          value = finished ? val : value;\n          this.value = valueFormatting({ label: this.label, data: this.data, value });\n          if (!finished) {\n            this.value = this.paddedValue(this.value);\n          }\n          this.cd.markForCheck();\n        });\n      };\n\n      this.animationReq = count(0, val, decs, 1, callback);\n      this.initialized = true;\n    }\n  }\n\n  scaleText(): void {\n    this.zone.run(() => {\n      const { width, height } = this.textEl.nativeElement.getBoundingClientRect();\n      if (width === 0 || height === 0) {\n        return;\n      }\n\n      const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n      const availableWidth = this.cardWidth - 2 * textPadding;\n      const availableHeight = this.cardHeight / 3;\n\n      const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n      this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n      this.labelFontSize = Math.min(this.textFontSize, 15);\n\n      this.setPadding();\n      this.cd.markForCheck();\n    });\n  }\n\n  scaleTextSSR() {\n    const width = calculateTextWidth(VERDANA_FONT_WIDTHS_16_PX, this.value, 10);\n    const height = 18;\n    const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n    const availableWidth = this.cardWidth - 2 * textPadding;\n    const availableHeight = this.cardHeight / 3;\n\n    const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n\n    this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n    this.labelFontSize = Math.min(this.textFontSize, 15);\n\n    this.setPadding();\n  }\n\n  setPadding() {\n    this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8;\n    const padding = this.cardHeight / 2;\n    this.textPadding[0] = padding - this.textFontSize - this.labelFontSize / 2;\n    this.textPadding[2] = padding - this.labelFontSize;\n  }\n\n  onClick(): void {\n    this.select.emit(this.data);\n  }\n}\n","import * as d3_color from 'd3-color';\n\n/**\n * Converts a hex to RGB\n *\n * @export\n */\nexport function hexToRgb(value: string): any {\n  // deprecated, use d3.color()\n  return d3_color.rgb(value);\n}\n\n/**\n * Accepts a color (string) and returns a inverted hex color (string)\n * http://stackoverflow.com/questions/9600295/automatically-change-text-color-to-assure-readability\n *\n * @export\n */\nexport function invertColor(value: string): string {\n  const color = d3_color.rgb(value);\n  const { r, g, b, opacity } = color;\n  if (opacity === 0) {\n    return color.toString();\n  }\n  const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n  const depth = yiq >= 128 ? -0.8 : 0.8;\n\n  return shadeRGBColor(color, depth);\n}\n\n/**\n * Given a rgb, it will darken/lighten\n * http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors\n *\n * @export\n * @param \\{ r, g, b }\n */\nexport function shadeRGBColor({ r, g, b }, percent: number): string {\n  const t = percent < 0 ? 0 : 255;\n  const p = percent < 0 ? percent * -1 : percent;\n\n  r = Math.round((t - r) * p) + r;\n  g = Math.round((t - g) * p) + g;\n  b = Math.round((t - b) * p) + b;\n\n  return `rgb(${r}, ${g}, ${b})`;\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  SimpleChanges,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { invertColor } from '../utils/color-utils';\nimport { GridItem, GridData } from '../common/grid-layout.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\nexport interface CardModel extends GridItem {\n  color: string;\n  tooltipText: string;\n  textColor: string;\n  bandColor: string;\n  label: string;\n}\n\n@Component({\n  selector: 'g[ngx-charts-card-series]',\n  template: `\n    <svg:rect\n      *ngFor=\"let c of emptySlots; trackBy: trackBy\"\n      class=\"card-empty\"\n      [attr.x]=\"c.x\"\n      [attr.y]=\"c.y\"\n      [style.fill]=\"emptyColor\"\n      [attr.width]=\"c.width\"\n      [attr.height]=\"c.height\"\n      rx=\"3\"\n      ry=\"3\"\n    />\n    <svg:g\n      ngx-charts-card\n      *ngFor=\"let c of cards; trackBy: trackBy\"\n      [x]=\"c.x\"\n      [y]=\"c.y\"\n      [width]=\"c.width\"\n      [height]=\"c.height\"\n      [color]=\"c.color\"\n      [bandColor]=\"c.bandColor\"\n      [textColor]=\"c.textColor\"\n      [data]=\"c.data\"\n      [label]=\"c.label\"\n      [medianSize]=\"medianSize\"\n      [valueFormatting]=\"valueFormatting\"\n      [labelFormatting]=\"labelFormatting\"\n      [animations]=\"animations\"\n      (select)=\"onClick($event)\"\n    />\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class CardSeriesComponent implements OnChanges {\n  @Input() data: CardModel[];\n  @Input() dims: ViewDimensions;\n  @Input() colors: ColorHelper;\n  @Input() innerPadding: number = 15;\n\n  @Input() cardColor: string;\n  @Input() bandColor: string;\n  @Input() emptyColor = 'rgba(0, 0, 0, 0)';\n  @Input() textColor: string;\n  @Input() valueFormatting: any;\n  @Input() labelFormatting: any;\n  @Input() animations: boolean = true;\n\n  @Output() select = new EventEmitter();\n\n  cards: CardModel[];\n  emptySlots: any[];\n  medianSize: number;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.update();\n  }\n\n  update(): void {\n    if (this.data.length > 2) {\n      const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n\n      const sortedLengths = this.data\n        .map(d => {\n          const hasValue = d && d.data && typeof d.data.value !== 'undefined' && d.data.value !== null;\n          return hasValue\n            ? valueFormatting({\n                data: d.data,\n                label: d ? d.data.name : '',\n                value: d && d.data ? d.data.value : ''\n              }).length\n            : 0;\n        })\n        .sort((a, b) => b - a);\n      const idx = Math.ceil(this.data.length / 2);\n      this.medianSize = sortedLengths[idx];\n    }\n\n    const cards = this.getCards();\n    this.cards = cards.filter(d => d.data.value !== null);\n    this.emptySlots = cards.filter(d => d.data.value === null);\n  }\n\n  getCards(): CardModel[] {\n    const yPadding =\n      typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[0] + this.innerPadding[2];\n    const xPadding =\n      typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[1] + this.innerPadding[3];\n\n    return this.data.map((d, index) => {\n      let label = d.data.name as any;\n      if (label && label.constructor.name === 'Date') {\n        label = label.toLocaleDateString();\n      } else {\n        label = label ? label.toLocaleString() : label;\n      }\n\n      const value = d.data.value;\n      const valueColor = label ? this.colors.getColor(label) : this.emptyColor;\n      const color = this.cardColor || valueColor || '#000';\n      return {\n        x: d.x,\n        y: d.y,\n        width: d.width - xPadding,\n        height: d.height - yPadding,\n        color,\n        bandColor: this.bandColor || valueColor,\n        textColor: this.textColor || invertColor(color),\n        label,\n        data: d.data,\n        tooltipText: `${label}: ${value}`\n      };\n    });\n  }\n\n  trackBy(index, card): string {\n    return card.label;\n  }\n\n  onClick(data): void {\n    this.select.emit(data);\n  }\n}\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { gridLayout, gridSize } from '../common/grid-layout.helper';\nimport { CardModel } from './card-series.component';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n  selector: 'ngx-charts-number-card',\n  template: `\n    <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n      <svg:g [attr.transform]=\"transform\" class=\"number-card chart\" [class.clickable]=\"clickable\">\n        <svg:g\n          ngx-charts-card-series\n          [colors]=\"colors\"\n          [cardColor]=\"cardColor\"\n          [bandColor]=\"bandColor\"\n          [textColor]=\"textColor\"\n          [emptyColor]=\"emptyColor\"\n          [data]=\"data\"\n          [dims]=\"dims\"\n          [innerPadding]=\"innerPadding\"\n          [valueFormatting]=\"valueFormatting\"\n          [labelFormatting]=\"labelFormatting\"\n          [animations]=\"animations\"\n          (select)=\"onClick($event)\"\n        />\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../common/base-chart.component.scss', './card.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class NumberCardComponent extends BaseChartComponent {\n  @Input() cardColor: string;\n  @Input() bandColor: string;\n  @Input() emptyColor: string = 'rgba(0, 0, 0, 0)';\n  @Input() innerPadding: number = 15;\n  @Input() textColor: string;\n  @Input() valueFormatting: any;\n  @Input() labelFormatting: any;\n  @Input() designatedTotal: number;\n\n  dims: ViewDimensions;\n  data: CardModel[];\n  colors: ColorHelper;\n  transform: string;\n  domain: any[];\n  margin: number[] = [10, 10, 10, 10];\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  get clickable(): boolean {\n    return !!this.select.observers.length;\n  }\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin\n    });\n\n    this.formatDates();\n\n    this.domain = this.getDomain();\n\n    this.setColors();\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n\n    const size = gridSize(this.dims, this.results.length, 150);\n    const N = size[0] * size[1];\n\n    const data = this.results.slice();\n\n    while (data.length < N) {\n      data.push({ value: null });\n    }\n\n    this.data = gridLayout(this.dims, data, 150, this.designatedTotal) as any;\n  }\n\n  getDomain(): string[] {\n    return this.results.map(d => d.label);\n  }\n\n  onClick(data): void {\n    this.select.emit(data);\n  }\n\n  setColors(): void {\n    this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { CardComponent } from './card.component';\nimport { CardSeriesComponent } from './card-series.component';\nimport { NumberCardComponent } from './number-card.component';\n\n@NgModule({\n  imports: [ChartCommonModule],\n  declarations: [CardComponent, CardSeriesComponent, NumberCardComponent],\n  exports: [CardComponent, CardSeriesComponent, NumberCardComponent]\n})\nexport class NumberCardModule {}\n","import { Component, Input, Output, EventEmitter, ElementRef, OnChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { select } from 'd3-selection';\nimport { invertColor } from '../utils/color-utils';\nimport { trimLabel } from '../common/trim-label.helper';\nimport { escapeLabel } from '../common/label.helper';\nimport { id } from '../utils/id';\nimport { DataItem } from '../models/chart-data.model';\nimport { Gradient } from '../common/types/gradient.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\n\n@Component({\n  selector: 'g[ngx-charts-tree-map-cell]',\n  template: `\n    <svg:g>\n      <defs *ngIf=\"gradient\">\n        <svg:g\n          ngx-charts-svg-linear-gradient\n          [orientation]=\"orientation.Vertical\"\n          [name]=\"gradientId\"\n          [stops]=\"gradientStops\"\n        />\n      </defs>\n      <svg:rect\n        [attr.fill]=\"gradient ? gradientUrl : fill\"\n        [attr.width]=\"width\"\n        [attr.height]=\"height\"\n        [attr.x]=\"x\"\n        [attr.y]=\"y\"\n        class=\"cell\"\n        (click)=\"onClick()\"\n      />\n      <svg:foreignObject\n        *ngIf=\"width >= 70 && height >= 35\"\n        [attr.x]=\"x\"\n        [attr.y]=\"y\"\n        [attr.width]=\"width\"\n        [attr.height]=\"height\"\n        class=\"treemap-label\"\n        [style.pointer-events]=\"'none'\"\n      >\n        <xhtml:p [style.color]=\"getTextColor()\" [style.height]=\"height + 'px'\" [style.width]=\"width + 'px'\">\n          <xhtml:span class=\"treemap-label\" [innerHTML]=\"formattedLabel\"> </xhtml:span>\n          <xhtml:br />\n          <xhtml:span\n            *ngIf=\"animations\"\n            class=\"treemap-val\"\n            ngx-charts-count-up\n            [countTo]=\"value\"\n            [valueFormatting]=\"valueFormatting\"\n          >\n          </xhtml:span>\n          <xhtml:span *ngIf=\"!animations\" class=\"treemap-val\">\n            {{ formattedValue }}\n          </xhtml:span>\n        </xhtml:p>\n      </svg:foreignObject>\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class TreeMapCellComponent implements OnChanges {\n  @Input() data: DataItem;\n  @Input() fill: string;\n  @Input() x: number;\n  @Input() y: number;\n  @Input() width: number;\n  @Input() height: number;\n  @Input() label: string;\n  @Input() value: any;\n  // @Input() valueType;\n  @Input() valueFormatting: any;\n  @Input() labelFormatting: any;\n  @Input() gradient: boolean = false;\n  @Input() animations: boolean = true;\n\n  @Output() select = new EventEmitter();\n\n  gradientStops: Gradient[];\n  gradientId: string;\n  gradientUrl: string;\n\n  element: HTMLElement;\n  transform: string;\n  formattedLabel: string;\n  formattedValue: string;\n  initialized: boolean = false;\n\n  orientation = BarOrientation;\n\n  constructor(element: ElementRef) {\n    this.element = element.nativeElement;\n  }\n\n  ngOnChanges(): void {\n    this.update();\n\n    this.valueFormatting = this.valueFormatting || (value => value.toLocaleString());\n    const labelFormatting = this.labelFormatting || (cell => escapeLabel(trimLabel(cell.label, 55)));\n\n    const cellData = {\n      data: this.data,\n      label: this.label,\n      value: this.value\n    };\n\n    this.formattedValue = this.valueFormatting(cellData.value);\n    this.formattedLabel = labelFormatting(cellData);\n\n    this.gradientId = 'grad' + id().toString();\n    this.gradientUrl = `url(#${this.gradientId})`;\n    this.gradientStops = this.getGradientStops();\n  }\n\n  update(): void {\n    if (this.initialized) {\n      this.animateToCurrentForm();\n    } else {\n      if (this.animations) {\n        this.loadAnimation();\n      }\n      this.initialized = true;\n    }\n  }\n\n  loadAnimation(): void {\n    const node = select(this.element).select('.cell');\n\n    node.attr('opacity', 0).attr('x', this.x).attr('y', this.y);\n\n    this.animateToCurrentForm();\n  }\n\n  getTextColor(): string {\n    return invertColor(this.fill);\n  }\n\n  animateToCurrentForm(): void {\n    const node = select(this.element).select('.cell');\n\n    if (this.animations) {\n      node\n        .transition()\n        .duration(750)\n        .attr('opacity', 1)\n        .attr('x', this.x)\n        .attr('y', this.y)\n        .attr('width', this.width)\n        .attr('height', this.height);\n    } else {\n      node.attr('opacity', 1).attr('x', this.x).attr('y', this.y).attr('width', this.width).attr('height', this.height);\n    }\n  }\n\n  onClick(): void {\n    this.select.emit(this.data);\n  }\n\n  getGradientStops(): Gradient[] {\n    return [\n      {\n        offset: 0,\n        color: this.fill,\n        opacity: 0.3\n      },\n      {\n        offset: 100,\n        color: this.fill,\n        opacity: 1\n      }\n    ];\n  }\n}\n","import {\n  Component,\n  OnChanges,\n  Input,\n  Output,\n  SimpleChanges,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  TemplateRef\n} from '@angular/core';\nimport { ColorHelper } from '../common/color.helper';\nimport { escapeLabel } from '../common/label.helper';\nimport { DataItem } from '../models/chart-data.model';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\n\ninterface TreeMapCell {\n  data: DataItem;\n  fill: string;\n  height: number;\n  label: string;\n  value: any;\n  width: number;\n  x: number;\n  y: number;\n}\n\n@Component({\n  selector: 'g[ngx-charts-tree-map-cell-series]',\n  template: `\n    <svg:g\n      ngx-charts-tree-map-cell\n      *ngFor=\"let c of cells; trackBy: trackBy\"\n      [data]=\"c.data\"\n      [x]=\"c.x\"\n      [y]=\"c.y\"\n      [width]=\"c.width\"\n      [height]=\"c.height\"\n      [fill]=\"c.fill\"\n      [label]=\"c.label\"\n      [value]=\"c.value\"\n      [valueFormatting]=\"valueFormatting\"\n      [labelFormatting]=\"labelFormatting\"\n      [gradient]=\"gradient\"\n      [animations]=\"animations\"\n      (select)=\"onClick($event)\"\n      ngx-tooltip\n      [tooltipDisabled]=\"tooltipDisabled\"\n      [tooltipPlacement]=\"placementTypes.Top\"\n      [tooltipType]=\"styleTypes.tooltip\"\n      [tooltipTitle]=\"tooltipTemplate ? undefined : getTooltipText(c)\"\n      [tooltipTemplate]=\"tooltipTemplate\"\n      [tooltipContext]=\"c.data\"\n    ></svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class TreeMapCellSeriesComponent implements OnChanges {\n  @Input() data: any; // type this\n  @Input() dims: ViewDimensions;\n  @Input() colors: ColorHelper;\n  @Input() valueFormatting: any;\n  @Input() labelFormatting: any;\n  @Input() gradient: boolean = false;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() tooltipTemplate: TemplateRef<any>;\n  @Input() animations: boolean = true;\n\n  @Output() select = new EventEmitter();\n\n  cells: TreeMapCell[];\n  styleTypes = StyleTypes;\n  placementTypes = PlacementTypes;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.cells = this.getCells();\n  }\n\n  getCells(): TreeMapCell[] {\n    return this.data.children\n      .filter(d => {\n        return d.depth === 1;\n      })\n      .map((d, index) => {\n        const label = d.id;\n\n        return {\n          data: d.data,\n          x: d.x0,\n          y: d.y0,\n          width: d.x1 - d.x0,\n          height: d.y1 - d.y0,\n          fill: this.colors.getColor(label),\n          label,\n          value: d.value\n        };\n      });\n  }\n\n  getTooltipText({ label, value }: { label: any; value: any }): string {\n    return `\n      <span class=\"tooltip-label\">${escapeLabel(label)}</span>\n      <span class=\"tooltip-val\">${value.toLocaleString()}</span>\n    `;\n  }\n\n  onClick(data): void {\n    this.select.emit(data);\n  }\n\n  trackBy(index, item): string {\n    return item.label;\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef\n} from '@angular/core';\nimport { treemap, stratify } from 'd3-hierarchy';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { DataItem } from '../models/chart-data.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\n@Component({\n  selector: 'ngx-charts-tree-map',\n  template: `\n    <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n      <svg:g [attr.transform]=\"transform\" class=\"tree-map chart\">\n        <svg:g\n          ngx-charts-tree-map-cell-series\n          [colors]=\"colors\"\n          [data]=\"data\"\n          [dims]=\"dims\"\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [valueFormatting]=\"valueFormatting\"\n          [labelFormatting]=\"labelFormatting\"\n          [gradient]=\"gradient\"\n          [animations]=\"animations\"\n          (select)=\"onClick($event)\"\n        />\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['./tree-map.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class TreeMapComponent extends BaseChartComponent {\n  @Input() declare results: DataItem[];\n  @Input() tooltipDisabled: boolean = false;\n  @Input() valueFormatting: any;\n  @Input() labelFormatting: any;\n  @Input() gradient: boolean = false;\n\n  @Output() select = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  domain: any;\n  transform: any;\n  colors: ColorHelper;\n  treemap: any;\n  data: DataItem;\n  margin: number[] = [10, 10, 10, 10];\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin\n    });\n\n    this.domain = this.getDomain();\n\n    this.treemap = treemap<any>().size([this.dims.width, this.dims.height]);\n\n    const rootNode = {\n      name: 'root',\n      value: 0,\n      isRoot: true\n    };\n\n    const root = stratify<any>()\n      .id(d => {\n        let label = d.name;\n\n        if (label.constructor.name === 'Date') {\n          label = label.toLocaleDateString();\n        } else {\n          label = label.toLocaleString();\n        }\n        return label;\n      })\n      .parentId(d => (d.isRoot ? null : 'root'))([rootNode, ...this.results])\n      .sum(d => d.value);\n\n    this.data = this.treemap(root);\n\n    this.setColors();\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n  }\n\n  getDomain(): any[] {\n    return this.results.map(d => d.name);\n  }\n\n  onClick(data: DataItem): void {\n    this.select.emit(data);\n  }\n\n  setColors(): void {\n    this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { TreeMapCellComponent } from './tree-map-cell.component';\nimport { TreeMapCellSeriesComponent } from './tree-map-cell-series.component';\nimport { TreeMapComponent } from './tree-map.component';\n\n@NgModule({\n  imports: [ChartCommonModule],\n  declarations: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent],\n  exports: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent]\n})\nexport class TreeMapModule {}\n","import {\n  Component,\n  Input,\n  ElementRef,\n  ViewChild,\n  AfterViewInit,\n  ViewEncapsulation,\n  ChangeDetectionStrategy\n} from '@angular/core';\nimport { scaleLinear } from 'd3-scale';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { calculateTextWidth } from '../utils/calculate-width';\nimport { VERDANA_FONT_WIDTHS_16_PX } from '../common/constants/font-widths';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { BarOrientation } from '../common/types/bar-orientation.enum';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\nenum ElementType {\n  Value = 'value',\n  Units = 'units'\n}\n\n@Component({\n  selector: 'ngx-charts-linear-gauge',\n  template: `\n    <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\" (click)=\"onClick()\">\n      <svg:g class=\"linear-gauge chart\">\n        <svg:g\n          ngx-charts-bar\n          class=\"background-bar\"\n          [width]=\"dims.width\"\n          [height]=\"3\"\n          [x]=\"margin[3]\"\n          [y]=\"dims.height / 2 + margin[0] - 2\"\n          [data]=\"{}\"\n          [orientation]=\"barOrientation.Horizontal\"\n          [roundEdges]=\"true\"\n          [animations]=\"animations\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-bar\n          [width]=\"valueScale(value)\"\n          [height]=\"3\"\n          [x]=\"margin[3]\"\n          [y]=\"dims.height / 2 + margin[0] - 2\"\n          [fill]=\"colors.getColor(units)\"\n          [data]=\"{}\"\n          [orientation]=\"barOrientation.Horizontal\"\n          [roundEdges]=\"true\"\n          [animations]=\"animations\"\n        ></svg:g>\n\n        <svg:line\n          *ngIf=\"hasPreviousValue\"\n          [attr.transform]=\"transformLine\"\n          x1=\"0\"\n          y1=\"5\"\n          x2=\"0\"\n          y2=\"15\"\n          [attr.stroke]=\"colors.getColor(units)\"\n        />\n\n        <svg:line\n          *ngIf=\"hasPreviousValue\"\n          [attr.transform]=\"transformLine\"\n          x1=\"0\"\n          y1=\"-5\"\n          x2=\"0\"\n          y2=\"-15\"\n          [attr.stroke]=\"colors.getColor(units)\"\n        />\n\n        <svg:g [attr.transform]=\"transform\">\n          <svg:g [attr.transform]=\"valueTranslate\">\n            <svg:text\n              #valueTextEl\n              class=\"value\"\n              [style.textAnchor]=\"'middle'\"\n              [attr.transform]=\"valueTextTransform\"\n              alignment-baseline=\"after-edge\"\n            >\n              {{ displayValue }}\n            </svg:text>\n          </svg:g>\n\n          <svg:g [attr.transform]=\"unitsTranslate\">\n            <svg:text\n              #unitsTextEl\n              class=\"units\"\n              [style.textAnchor]=\"'middle'\"\n              [attr.transform]=\"unitsTextTransform\"\n              alignment-baseline=\"before-edge\"\n            >\n              {{ units }}\n            </svg:text>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../common/base-chart.component.scss', './linear-gauge.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class LinearGaugeComponent extends BaseChartComponent implements AfterViewInit {\n  @Input() min: number = 0;\n  @Input() max: number = 100;\n  @Input() value: number = 0;\n  @Input() units: string;\n  @Input() previousValue: number;\n  @Input() valueFormatting: any;\n\n  @ViewChild('valueTextEl') valueTextEl: ElementRef;\n  @ViewChild('unitsTextEl') unitsTextEl: ElementRef;\n\n  dims: ViewDimensions;\n  valueDomain: [number, number];\n  valueScale: any;\n\n  colors: ColorHelper;\n  transform: string;\n  margin: number[] = [10, 20, 10, 20];\n  transformLine: string;\n\n  valueResizeScale: number = 1;\n  unitsResizeScale: number = 1;\n  valueTextTransform: string = '';\n  valueTranslate: string = '';\n  unitsTextTransform: string = '';\n  unitsTranslate: string = '';\n  displayValue: string;\n  hasPreviousValue: boolean;\n\n  barOrientation = BarOrientation;\n\n  ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    setTimeout(() => {\n      this.scaleText(ElementType.Value);\n      this.scaleText(ElementType.Units);\n    });\n  }\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    this.hasPreviousValue = this.previousValue !== undefined;\n    this.max = Math.max(this.max, this.value);\n    this.min = Math.min(this.min, this.value);\n    if (this.hasPreviousValue) {\n      this.max = Math.max(this.max, this.previousValue);\n      this.min = Math.min(this.min, this.previousValue);\n    }\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin\n    });\n\n    this.valueDomain = this.getValueDomain();\n    this.valueScale = this.getValueScale();\n    this.displayValue = this.getDisplayValue();\n\n    this.setColors();\n\n    const xOffset = this.margin[3] + this.dims.width / 2;\n    const yOffset = this.margin[0] + this.dims.height / 2;\n\n    this.transform = `translate(${xOffset}, ${yOffset})`;\n    this.transformLine = `translate(${this.margin[3] + this.valueScale(this.previousValue)}, ${yOffset})`;\n    this.valueTranslate = `translate(0, -15)`;\n    this.unitsTranslate = `translate(0, 15)`;\n\n    if (isPlatformServer(this.platformId)) {\n      this.scaleTextSSR('value');\n      this.scaleTextSSR('units');\n    } else {\n      setTimeout(() => this.scaleText(ElementType.Value), 50);\n      setTimeout(() => this.scaleText(ElementType.Units), 50);\n    }\n  }\n\n  getValueDomain(): [number, number] {\n    return [this.min, this.max];\n  }\n\n  getValueScale(): any {\n    return scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n  }\n\n  getDisplayValue(): string {\n    if (this.valueFormatting) {\n      return this.valueFormatting(this.value);\n    }\n    return this.value.toLocaleString();\n  }\n\n  scaleText(element: ElementType, repeat: boolean = true): void {\n    let el;\n    let resizeScale;\n    if (element === ElementType.Value) {\n      el = this.valueTextEl;\n      resizeScale = this.valueResizeScale;\n    } else {\n      el = this.unitsTextEl;\n      resizeScale = this.unitsResizeScale;\n    }\n\n    const { width, height } = el.nativeElement.getBoundingClientRect();\n    if (width === 0 || height === 0) return;\n    const oldScale = resizeScale;\n    const availableWidth = this.dims.width;\n    const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n    const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n    const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n    resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n\n    if (resizeScale !== oldScale) {\n      if (element === ElementType.Value) {\n        this.valueResizeScale = resizeScale;\n        this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n      } else {\n        this.unitsResizeScale = resizeScale;\n        this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n      }\n      this.cd.markForCheck();\n      if (repeat && isPlatformBrowser(this.platformId)) {\n        setTimeout(() => {\n          this.scaleText(element, false);\n        }, 50);\n      }\n    }\n  }\n\n  scaleTextSSR(element) {\n    let resizeScale = 1;\n\n    const value = element === 'value' ? this.displayValue : this.units;\n    const width = calculateTextWidth(VERDANA_FONT_WIDTHS_16_PX, value, 10);\n    const height = 25;\n\n    const availableWidth = this.dims.width;\n    const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n    const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n    const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n    resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n\n    if (element === 'value') {\n      this.valueResizeScale = resizeScale;\n      this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n    } else {\n      this.unitsResizeScale = resizeScale;\n      this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n    }\n\n    this.cd.markForCheck();\n  }\n\n  onClick(): void {\n    this.select.emit({\n      name: 'Value',\n      value: this.value\n    });\n  }\n\n  setColors(): void {\n    this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, [this.value], this.customColors);\n  }\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, TemplateRef } from '@angular/core';\nimport { formatLabel, escapeLabel } from '../common/label.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { DataItem } from '../models/chart-data.model';\nimport { PlacementTypes } from '../common/tooltip/position';\nimport { StyleTypes } from '../common/tooltip/style.type';\n\nexport interface ArcItem {\n  data: DataItem;\n  endAngle: number;\n  innerRadius: number;\n  outerRadius: number;\n}\n\n@Component({\n  selector: 'g[ngx-charts-gauge-arc]',\n  template: `\n    <svg:g\n      ngx-charts-pie-arc\n      class=\"background-arc\"\n      [startAngle]=\"0\"\n      [endAngle]=\"backgroundArc.endAngle\"\n      [innerRadius]=\"backgroundArc.innerRadius\"\n      [outerRadius]=\"backgroundArc.outerRadius\"\n      [cornerRadius]=\"cornerRadius\"\n      [data]=\"backgroundArc.data\"\n      [animate]=\"false\"\n      [pointerEvents]=\"false\"\n    ></svg:g>\n    <svg:g\n      ngx-charts-pie-arc\n      [startAngle]=\"0\"\n      [endAngle]=\"valueArc.endAngle\"\n      [innerRadius]=\"valueArc.innerRadius\"\n      [outerRadius]=\"valueArc.outerRadius\"\n      [cornerRadius]=\"cornerRadius\"\n      [fill]=\"colors.getColor(valueArc.data.name)\"\n      [data]=\"valueArc.data\"\n      [animate]=\"animations\"\n      [isActive]=\"isActive\"\n      (select)=\"select.emit($event)\"\n      (activate)=\"activate.emit($event)\"\n      (deactivate)=\"deactivate.emit($event)\"\n      ngx-tooltip\n      [tooltipDisabled]=\"tooltipDisabled\"\n      [tooltipPlacement]=\"placementTypes.Top\"\n      [tooltipType]=\"styleTypes.tooltip\"\n      [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText(valueArc)\"\n      [tooltipTemplate]=\"tooltipTemplate\"\n      [tooltipContext]=\"valueArc.data\"\n    ></svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class GaugeArcComponent {\n  @Input() backgroundArc: ArcItem;\n  @Input() valueArc: ArcItem;\n  @Input() cornerRadius: number;\n  @Input() colors: ColorHelper;\n  @Input() isActive: boolean = false;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() valueFormatting: (value: any) => string;\n  @Input() tooltipTemplate: TemplateRef<any>;\n  @Input() animations: boolean = true;\n\n  @Output() select = new EventEmitter();\n  @Output() activate = new EventEmitter();\n  @Output() deactivate = new EventEmitter();\n\n  placementTypes = PlacementTypes;\n  styleTypes = StyleTypes;\n\n  tooltipText(arc: ArcItem): string {\n    const label = formatLabel(arc.data.name);\n    let val;\n\n    if (this.valueFormatting) {\n      val = this.valueFormatting(arc.data.value);\n    } else {\n      val = formatLabel(arc.data.value);\n    }\n\n    return `\n      <span class=\"tooltip-label\">${escapeLabel(label)}</span>\n      <span class=\"tooltip-val\">${val}</span>\n    `;\n  }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\nimport { line } from 'd3-shape';\nimport { TextAnchor } from '../common/types/text-anchor.enum';\n\ninterface Big {\n  line: string;\n  text: string;\n  textAnchor: string;\n  textTransform: string;\n}\n\ninterface Ticks {\n  big: Big[];\n  small: Array<{ line: string }>;\n}\n\n@Component({\n  selector: 'g[ngx-charts-gauge-axis]',\n  template: `\n    <svg:g [attr.transform]=\"rotate\">\n      <svg:g *ngFor=\"let tick of ticks.big\" class=\"gauge-tick gauge-tick-large\">\n        <svg:path [attr.d]=\"tick.line\" />\n      </svg:g>\n      <svg:g *ngFor=\"let tick of ticks.big\" class=\"gauge-tick gauge-tick-large\">\n        <svg:text\n          [style.textAnchor]=\"tick.textAnchor\"\n          [attr.transform]=\"tick.textTransform\"\n          alignment-baseline=\"central\"\n        >\n          {{ tick.text }}\n        </svg:text>\n      </svg:g>\n      <svg:g *ngFor=\"let tick of ticks.small\" class=\"gauge-tick gauge-tick-small\">\n        <svg:path [attr.d]=\"tick.line\" />\n      </svg:g>\n    </svg:g>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class GaugeAxisComponent implements OnChanges {\n  @Input() bigSegments: number;\n  @Input() smallSegments: number;\n  @Input() min: number;\n  @Input() max: number;\n  @Input() angleSpan: number;\n  @Input() startAngle: number;\n  @Input() radius: number;\n  @Input() valueScale: any;\n  @Input() tickFormatting: any;\n\n  ticks: Ticks;\n  rotationAngle: number;\n  rotate: string = '';\n\n  ngOnChanges(changes: SimpleChanges) {\n    this.update();\n  }\n\n  update(): void {\n    this.rotationAngle = -90 + this.startAngle;\n    this.rotate = `rotate(${this.rotationAngle})`;\n    this.ticks = this.getTicks();\n  }\n\n  getTicks(): Ticks {\n    const bigTickSegment = this.angleSpan / this.bigSegments;\n    const smallTickSegment = bigTickSegment / this.smallSegments;\n    const tickLength = 20;\n    const ticks = {\n      big: [],\n      small: []\n    };\n\n    const startDistance = this.radius + 10;\n    const textDist = startDistance + tickLength + 10;\n\n    for (let i = 0; i <= this.bigSegments; i++) {\n      const angleDeg = i * bigTickSegment;\n      const angle = (angleDeg * Math.PI) / 180;\n\n      const textAnchor = this.getTextAnchor(angleDeg);\n\n      let skip = false;\n      if (i === 0 && this.angleSpan === 360) {\n        skip = true;\n      }\n\n      if (!skip) {\n        let text = Number.parseFloat(this.valueScale.invert(angleDeg).toString()).toLocaleString();\n        if (this.tickFormatting) {\n          text = this.tickFormatting(text);\n        }\n        ticks.big.push({\n          line: this.getTickPath(startDistance, tickLength, angle),\n          textAnchor,\n          text,\n          textTransform: `\n            translate(${textDist * Math.cos(angle)}, ${textDist * Math.sin(angle)}) rotate(${-this.rotationAngle})\n          `\n        });\n      }\n\n      if (i === this.bigSegments) {\n        continue;\n      }\n\n      for (let j = 1; j <= this.smallSegments; j++) {\n        const smallAngleDeg = angleDeg + j * smallTickSegment;\n        const smallAngle = (smallAngleDeg * Math.PI) / 180;\n\n        ticks.small.push({\n          line: this.getTickPath(startDistance, tickLength / 2, smallAngle)\n        });\n      }\n    }\n\n    return ticks;\n  }\n\n  getTextAnchor(angle: number): TextAnchor {\n    // [0, 45] = 'middle';\n    // [46, 135] = 'start';\n    // [136, 225] = 'middle';\n    // [226, 315] = 'end';\n\n    angle = (this.startAngle + angle) % 360;\n    let textAnchor = TextAnchor.Middle;\n    if (angle > 45 && angle <= 135) {\n      textAnchor = TextAnchor.Start;\n    } else if (angle > 225 && angle <= 315) {\n      textAnchor = TextAnchor.End;\n    }\n    return textAnchor;\n  }\n\n  getTickPath(startDistance: number, tickLength: number, angle: number): any {\n    const y1 = startDistance * Math.sin(angle);\n    const y2 = (startDistance + tickLength) * Math.sin(angle);\n    const x1 = startDistance * Math.cos(angle);\n    const x2 = (startDistance + tickLength) * Math.cos(angle);\n\n    const points = [\n      { x: x1, y: y1 },\n      { x: x2, y: y2 }\n    ];\n    const lineGenerator = line<any>()\n      .x(d => d.x)\n      .y(d => d.y);\n    return lineGenerator(points);\n  }\n}\n","import {\n  Component,\n  Input,\n  ElementRef,\n  ViewChild,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  ContentChild,\n  TemplateRef\n} from '@angular/core';\nimport { scaleLinear } from 'd3-scale';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { ArcItem } from './gauge-arc.component';\nimport { LegendOptions, LegendPosition } from '../common/types/legend.model';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\n\ninterface Arcs {\n  backgroundArc: ArcItem;\n  valueArc: ArcItem;\n}\n\n@Component({\n  selector: 'ngx-charts-gauge',\n  template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"gauge chart\">\n        <svg:g *ngFor=\"let arc of arcs; trackBy: trackBy\" [attr.transform]=\"rotation\">\n          <svg:g\n            ngx-charts-gauge-arc\n            [backgroundArc]=\"arc.backgroundArc\"\n            [valueArc]=\"arc.valueArc\"\n            [cornerRadius]=\"cornerRadius\"\n            [colors]=\"colors\"\n            [isActive]=\"isActive(arc.valueArc.data)\"\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [valueFormatting]=\"valueFormatting\"\n            [animations]=\"animations\"\n            (select)=\"onClick($event)\"\n            (activate)=\"onActivate($event)\"\n            (deactivate)=\"onDeactivate($event)\"\n          ></svg:g>\n        </svg:g>\n\n        <svg:g\n          ngx-charts-gauge-axis\n          *ngIf=\"showAxis\"\n          [bigSegments]=\"bigSegments\"\n          [smallSegments]=\"smallSegments\"\n          [min]=\"min\"\n          [max]=\"max\"\n          [radius]=\"outerRadius\"\n          [angleSpan]=\"angleSpan\"\n          [valueScale]=\"valueScale\"\n          [startAngle]=\"startAngle\"\n          [tickFormatting]=\"axisTickFormatting\"\n        ></svg:g>\n\n        <svg:text\n          #textEl\n          *ngIf=\"showText\"\n          [style.textAnchor]=\"'middle'\"\n          [attr.transform]=\"textTransform\"\n          alignment-baseline=\"central\"\n        >\n          <tspan x=\"0\" dy=\"0\">{{ displayValue }}</tspan>\n          <tspan x=\"0\" dy=\"1.2em\">{{ units }}</tspan>\n        </svg:text>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../common/base-chart.component.scss', './gauge.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class GaugeComponent extends BaseChartComponent implements AfterViewInit {\n  @Input() legend: boolean = false;\n  @Input() legendTitle: string = 'Legend';\n  @Input() legendPosition: LegendPosition = LegendPosition.Right;\n  @Input() min: number = 0;\n  @Input() max: number = 100;\n  @Input() textValue: string;\n  @Input() units: string;\n  @Input() bigSegments: number = 10;\n  @Input() smallSegments: number = 5;\n  @Input() declare results: any[];\n  @Input() showAxis: boolean = true;\n  @Input() startAngle: number = -120;\n  @Input() angleSpan: number = 240;\n  @Input() activeEntries: any[] = [];\n  @Input() axisTickFormatting: any;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() valueFormatting: (value: any) => string;\n  @Input() showText: boolean = true;\n\n  // Specify margins\n  @Input() margin: number[];\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  @ViewChild('textEl') textEl: ElementRef;\n\n  dims: ViewDimensions;\n  domain: any[];\n  valueDomain: [number, number];\n  valueScale: any;\n\n  colors: ColorHelper;\n  transform: string;\n\n  outerRadius: number;\n  textRadius: number; // max available radius for the text\n  resizeScale: number = 1;\n  rotation: string = '';\n  textTransform: string = 'scale(1, 1)';\n  cornerRadius: number = 10;\n  arcs: Arcs[];\n  displayValue: string;\n  legendOptions: LegendOptions;\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    setTimeout(() => this.scaleText());\n  }\n\n  update(): void {\n    super.update();\n\n    if (!this.showAxis) {\n      if (!this.margin) {\n        this.margin = [10, 20, 10, 20];\n      }\n    } else {\n      if (!this.margin) {\n        this.margin = [60, 100, 60, 100];\n      }\n    }\n\n    // make the starting angle positive\n    if (this.startAngle < 0) {\n      this.startAngle = (this.startAngle % 360) + 360;\n    }\n\n    this.angleSpan = Math.min(this.angleSpan, 360);\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      showLegend: this.legend,\n      legendPosition: this.legendPosition\n    });\n\n    this.domain = this.getDomain();\n    this.valueDomain = this.getValueDomain();\n    this.valueScale = this.getValueScale();\n    this.displayValue = this.getDisplayValue();\n\n    this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2;\n\n    this.arcs = this.getArcs();\n\n    this.setColors();\n    this.legendOptions = this.getLegendOptions();\n\n    const xOffset = this.margin[3] + this.dims.width / 2;\n    const yOffset = this.margin[0] + this.dims.height / 2;\n\n    this.transform = `translate(${xOffset}, ${yOffset})`;\n    this.rotation = `rotate(${this.startAngle})`;\n    setTimeout(() => this.scaleText(), 50);\n  }\n\n  getArcs(): any[] {\n    const arcs = [];\n\n    const availableRadius = this.outerRadius * 0.7;\n\n    const radiusPerArc = Math.min(availableRadius / this.results.length, 10);\n    const arcWidth = radiusPerArc * 0.7;\n    this.textRadius = this.outerRadius - this.results.length * radiusPerArc;\n    this.cornerRadius = Math.floor(arcWidth / 2);\n\n    let i = 0;\n    for (const d of this.results) {\n      const outerRadius = this.outerRadius - i * radiusPerArc;\n      const innerRadius = outerRadius - arcWidth;\n\n      const backgroundArc = {\n        endAngle: (this.angleSpan * Math.PI) / 180,\n        innerRadius,\n        outerRadius,\n        data: {\n          value: this.max,\n          name: d.name\n        }\n      };\n\n      const valueArc = {\n        endAngle: (Math.min(this.valueScale(d.value), this.angleSpan) * Math.PI) / 180,\n        innerRadius,\n        outerRadius,\n        data: {\n          value: d.value,\n          name: d.name\n        }\n      };\n\n      const arc = {\n        backgroundArc,\n        valueArc\n      };\n\n      arcs.push(arc);\n      i++;\n    }\n\n    return arcs;\n  }\n\n  getDomain(): string[] {\n    return this.results.map(d => d.name);\n  }\n\n  getValueDomain(): [number, number] {\n    const values = this.results.map(d => d.value);\n    const dataMin = Math.min(...values);\n    const dataMax = Math.max(...values);\n\n    if (this.min !== undefined) {\n      this.min = Math.min(this.min, dataMin);\n    } else {\n      this.min = dataMin;\n    }\n\n    if (this.max !== undefined) {\n      this.max = Math.max(this.max, dataMax);\n    } else {\n      this.max = dataMax;\n    }\n\n    return [this.min, this.max];\n  }\n\n  getValueScale(): any {\n    return scaleLinear().range([0, this.angleSpan]).nice().domain(this.valueDomain);\n  }\n\n  getDisplayValue(): string {\n    const value = this.results.map(d => d.value).reduce((a, b) => a + b, 0);\n\n    if (this.textValue && 0 !== this.textValue.length) {\n      return this.textValue.toLocaleString();\n    }\n\n    if (this.valueFormatting) {\n      return this.valueFormatting(value);\n    }\n\n    return value.toLocaleString();\n  }\n\n  scaleText(repeat: boolean = true): void {\n    if (!this.showText) {\n      return;\n    }\n    const { width } = this.textEl.nativeElement.getBoundingClientRect();\n    const oldScale = this.resizeScale;\n\n    if (width === 0) {\n      this.resizeScale = 1;\n    } else {\n      const availableSpace = this.textRadius;\n      this.resizeScale = Math.floor((availableSpace / (width / this.resizeScale)) * 100) / 100;\n    }\n\n    if (this.resizeScale !== oldScale) {\n      this.textTransform = `scale(${this.resizeScale}, ${this.resizeScale})`;\n      this.cd.markForCheck();\n      if (repeat) {\n        setTimeout(() => this.scaleText(false), 50);\n      }\n    }\n  }\n\n  onClick(data): void {\n    this.select.emit(data);\n  }\n\n  getLegendOptions(): LegendOptions {\n    return {\n      scaleType: ScaleType.Ordinal,\n      colors: this.colors,\n      domain: this.domain,\n      title: this.legendTitle,\n      position: this.legendPosition\n    };\n  }\n\n  setColors(): void {\n    this.colors = new ColorHelper(this.scheme, ScaleType.Ordinal, this.domain, this.customColors);\n  }\n\n  onActivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n    if (idx > -1) {\n      return;\n    }\n\n    this.activeEntries = [item, ...this.activeEntries];\n    this.activate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  onDeactivate(item): void {\n    const idx = this.activeEntries.findIndex(d => {\n      return d.name === item.name && d.value === item.value;\n    });\n\n    this.activeEntries.splice(idx, 1);\n    this.activeEntries = [...this.activeEntries];\n\n    this.deactivate.emit({ value: item, entries: this.activeEntries });\n  }\n\n  isActive(entry): boolean {\n    if (!this.activeEntries) return false;\n    const item = this.activeEntries.find(d => {\n      return entry.name === d.name && entry.series === d.series;\n    });\n    return item !== undefined;\n  }\n\n  trackBy(index: number, item: Arcs): any {\n    return item.valueArc.data.name;\n  }\n}\n","import { Component, Input, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\nimport { BaseChartComponent } from '../../common/base-chart.component';\nimport { calculateViewDimensions } from '../../common/view-dimensions.helper';\nimport { ColorHelper } from '../../common/color.helper';\nimport { ViewDimensions } from '../../common/types/view-dimension.interface';\nimport { ScaleType } from '../../common/types/scale-type.enum';\nimport { id } from '../../utils/id';\n\n@Component({\n  selector: 'ngx-charts-percent-gauge',\n  template: `\n    <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n      <svg:g class=\"percent-gauge chart\" (click)=\"onClick()\">\n        <svg:g [attr.transform]=\"transform\">\n          <mask [attr.id]=\"circleMaskId\">\n            <circle\n              [attr.r]=\"radius\"\n              [style.stroke-width]=\"radius / 5\"\n              cx=\"0\"\n              cy=\"0\"\n              stroke=\"white\"\n              fill=\"transparent\"\n              [attr.stroke-dasharray]=\"circumference\"\n              transform=\"rotate(-90,0,0)\"\n              [style.stroke-dashoffset]=\"circumference * (1 - percent / 100)\"\n            />\n          </mask>\n          <text x=\"0\" y=\"0\" stroke=\"none\" class=\"total\" [style.font-size]=\"valueFontSize\">\n            {{ displayValue }}\n          </text>\n          <circle\n            class=\"dashes-back\"\n            [style.stroke-width]=\"radius / 5\"\n            [attr.r]=\"radius\"\n            cx=\"0\"\n            cy=\"0\"\n            fill=\"none\"\n            [style.stroke-dasharray]=\"dashes\"\n          />\n\n          <svg:g [attr.mask]=\"'url(#' + circleMaskId + ')'\">\n            <svg:g [attr.transform]=\"circleTransform\">\n              <svg:g *ngFor=\"let tic of ticks\" [attr.transform]=\"tic.transform\">\n                <rect\n                  [attr.y]=\"-tic.height / 2\"\n                  [attr.x]=\"-tic.width\"\n                  [attr.width]=\"tic.width\"\n                  [attr.height]=\"tic.height\"\n                  [attr.fill]=\"tic.fill\"\n                />\n              </svg:g>\n            </svg:g>\n          </svg:g>\n\n          <svg:g [attr.transform]=\"targetTransform\">\n            <circle\n              class=\"target-circle-bg\"\n              [attr.r]=\"targetRadius\"\n              [style.stroke-width]=\"targetRadius / 10\"\n              [attr.cx]=\"-targetRadius / 2\"\n              [attr.cy]=\"-targetRadius / 2\"\n            />\n            <circle\n              *ngIf=\"percent >= target\"\n              class=\"target-circle\"\n              [attr.r]=\"targetRadius\"\n              [style.stroke-width]=\"targetRadius / 10\"\n              [attr.stroke]=\"targetColor\"\n              [attr.cx]=\"-targetRadius / 2\"\n              [attr.cy]=\"-targetRadius / 2\"\n            />\n            <svg:g [attr.transform]=\"targetTextTransform\">\n              <text\n                transform=\"translate(0, -4)\"\n                class=\"target-label\"\n                stroke=\"none\"\n                text-anchor=\"middle\"\n                [style.font-size]=\"12\"\n              >\n                {{ targetLabel }}\n              </text>\n              <text\n                transform=\"translate(0, 11)\"\n                class=\"target-value\"\n                stroke=\"none\"\n                text-anchor=\"middle\"\n                [style.font-size]=\"14\"\n              >\n                {{ target }}%\n              </text>\n            </svg:g>\n          </svg:g>\n        </svg:g>\n        <svg:g *ngIf=\"showLabel\" [attr.transform]=\"labelTransform\">\n          <text class=\"gauge-label\" x=\"50%\" dominant-baseline=\"middle\" text-anchor=\"middle\" stroke=\"none\">\n            {{ label }}\n          </text>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  styleUrls: ['../../common/base-chart.component.scss', './percent-gauge.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class PercentGaugeComponent extends BaseChartComponent {\n  @Input() max: number = 100;\n  @Input() value: number = 0;\n  @Input() target: number = 75;\n  @Input() targetLabel: string = 'Target';\n  @Input() label: string;\n  @Input() valueFormatting: any;\n  @Input() showLabel = true;\n\n  defaultMargin: number[] = [20, 40, 20, 40];\n  margin: number[] = [20, 40, 20, 40];\n  dims: ViewDimensions;\n\n  colors: ColorHelper;\n  radius: number;\n  transform: string;\n\n  targetTransform: string;\n  targetColor: string;\n  targetRadius: number;\n  targetTextTransform: string;\n\n  circleMaskId = `circleMask${id()}`;\n  circleTransform: string;\n  ticks: any[] = [];\n  ticHeight: number;\n\n  dashes: string;\n\n  valueDomain: [number, number];\n  valueFontSize: number;\n  displayValue: string;\n  percent: number;\n  circumference: number;\n\n  labelTransform: string;\n\n  update(): void {\n    super.update();\n\n    this.margin = [...this.defaultMargin];\n    if (this.showLabel) {\n      this.margin[2] = 50;\n    }\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin\n    });\n\n    this.percent = this.getPercentage();\n    this.ticHeight = Math.min(this.dims.width, this.dims.height) / 10;\n    this.radius = Math.min(this.dims.width, this.dims.height) / 2 - this.ticHeight / 2;\n    this.circumference = 2 * Math.PI * this.radius;\n    this.dashes = `${this.radius / 60} ${this.circumference / 60 - this.radius / 60}`;\n    this.valueFontSize = Math.floor(this.radius / 3);\n    this.targetRadius = this.radius / 4;\n    this.targetTextTransform = `translate(${-this.targetRadius / 2}, ${-this.targetRadius / 2}), scale(${\n      this.targetRadius / 28\n    })`;\n\n    this.valueDomain = this.getValueDomain();\n    this.displayValue = this.getDisplayValue();\n\n    this.setColors();\n    this.targetColor = this.colors.getColor((this.target / 100) * this.max);\n\n    const xOffset = this.margin[3] + this.dims.width / 2;\n    const yOffset = this.margin[0] + this.dims.height / 2;\n\n    this.transform = `translate(${xOffset}, ${yOffset})`;\n    this.labelTransform = `translate(0, ${this.height / 2 + this.radius + this.margin[0] + this.ticHeight / 2 - 3})`;\n\n    const angle = (this.target / 100) * Math.PI * 2 - Math.PI / 2;\n    this.targetTransform = `translate(${this.radius * 0.97 * Math.cos(angle) + this.targetRadius / 2}, ${\n      this.radius * 0.97 * Math.sin(angle) + this.targetRadius / 2\n    })`;\n\n    this.generateticks();\n\n    this.cd.markForCheck();\n  }\n\n  generateCirclePoints(radius: number, numPoints: number): { x: number; y: number }[] {\n    const points = [];\n    for (let i = 0; i < numPoints; i++) {\n      const angle = (i / numPoints) * 2 * Math.PI;\n      const x = radius * Math.cos(angle);\n      const y = radius * Math.sin(angle);\n      points.push({ x, y });\n    }\n    return points;\n  }\n\n  generateticks() {\n    const numPoints = 60;\n    const points = this.generateCirclePoints(this.radius, numPoints);\n    this.ticks = [];\n    this.circleTransform = `rotate(-90,0,0)`;\n    for (let j = 0; j < points.length; j++) {\n      const { x, y } = points[j];\n      let progress = j / numPoints;\n      if (progress === 1) {\n        progress = 0;\n      }\n      this.ticks.push({\n        height: this.ticHeight,\n        width: this.radius / 60,\n        fill: this.colors.getColor(progress * this.max),\n        transform: `translate(${x}, ${y}), rotate(${360 * progress - 90})`\n      });\n    }\n  }\n\n  getValueDomain(): [number, number] {\n    return [0, this.max];\n  }\n\n  getDisplayValue(): string {\n    if (this.valueFormatting) {\n      return this.valueFormatting(this.value);\n    }\n    return this.percent + '%';\n  }\n\n  getPercentage(): number {\n    return Math.round((this.value / this.max) * 100);\n  }\n\n  onClick(): void {\n    this.select.emit({\n      name: 'Value',\n      value: this.value\n    });\n  }\n\n  setColors(): void {\n    this.colors = new ColorHelper(this.scheme, ScaleType.Linear, this.valueDomain, this.customColors);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { LinearGaugeComponent } from './linear-gauge.component';\nimport { GaugeComponent } from './gauge.component';\nimport { GaugeArcComponent } from './gauge-arc.component';\nimport { GaugeAxisComponent } from './gauge-axis.component';\nimport { PieChartModule } from '../pie-chart/pie-chart.module';\nimport { BarChartModule } from '../bar-chart/bar-chart.module';\nimport { PercentGaugeComponent } from './percent-gauge/percent-gauge.component';\n\n@NgModule({\n  imports: [ChartCommonModule, PieChartModule, BarChartModule],\n  declarations: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent, PercentGaugeComponent],\n  exports: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent, PercentGaugeComponent]\n})\nexport class GaugeModule {}\n","// The export is needed here to generate a valid polyfills.metadata.json file\nexport function ngxChartsPolyfills() {\n  // IE11 fix\n  // Ref: https://github.com/swimlane/ngx-charts/issues/386\n  if (typeof SVGElement !== 'undefined' && typeof SVGElement.prototype.contains === 'undefined') {\n    SVGElement.prototype.contains = HTMLDivElement.prototype.contains;\n  }\n}\n","import {\n  Component,\n  Input,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ContentChild,\n  TemplateRef,\n  Output,\n  EventEmitter\n} from '@angular/core';\nimport { sankey, sankeyLeft, sankeyLinkHorizontal } from 'd3-sankey';\n\nimport { BaseChartComponent } from '../common/base-chart.component';\nimport { calculateViewDimensions } from '../common/view-dimensions.helper';\nimport { ColorHelper } from '../common/color.helper';\nimport { ViewDimensions } from '../common/types/view-dimension.interface';\nimport { ScaleType } from '../common/types/scale-type.enum';\nimport { StyleTypes } from '../common/tooltip/style.type';\nimport { escapeLabel } from '../common/label.helper';\nimport { id } from '../utils/id';\nimport { TextAnchor } from '../common/types/text-anchor.enum';\n\ninterface RectItem {\n  fill: string;\n  height: number;\n  rx: number;\n  width: number;\n  x: number;\n  y: number;\n  label: string;\n  labelAnchor: string;\n  tooltip: string;\n  transform: string;\n  data: any;\n  active?: boolean;\n}\n\n@Component({\n  selector: 'ngx-charts-sankey',\n  template: `\n    <ngx-charts-chart [view]=\"[width, height]\" [animations]=\"animations\">\n      <svg:g [attr.transform]=\"transform\" class=\"sankey chart\">\n        <svg:g\n          *ngFor=\"let link of linkPaths\"\n          class=\"link\"\n          ngx-tooltip\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipType]=\"styleTypes.tooltip\"\n          [tooltipPlacement]=\"'top'\"\n          [tooltipTitle]=\"tooltipTemplate ? undefined : link.tooltip\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [tooltipContext]=\"link.data\"\n        >\n          <svg:defs>\n            <svg:linearGradient\n              [attr.id]=\"link.id\"\n              gradientUnits=\"userSpaceOnUse\"\n              [attr.x1]=\"link.source.x1\"\n              [attr.x2]=\"link.target.x0\"\n            >\n              <svg:stop offset=\"0%\" [attr.stop-color]=\"link.startColor\"></svg:stop>\n              <svg:stop offset=\"100%\" [attr.stop-color]=\"link.endColor\"></svg:stop>\n            </svg:linearGradient>\n          </svg:defs>\n          <svg:path\n            [attr.d]=\"link.path\"\n            [attr.stroke]=\"link.gradientFill\"\n            [attr.stroke-width]=\"link.strokeWidth\"\n            [attr.stroke-opacity]=\"link.active ? 0.5 : hasActive ? 0.1 : 0.5\"\n            fill=\"none\"\n            (click)=\"select.emit(link.data)\"\n            (mouseenter)=\"activateLink(link)\"\n            (mouseleave)=\"deactivateLink(link)\"\n          ></svg:path>\n        </svg:g>\n\n        <svg:g *ngFor=\"let rect of nodeRects\" [attr.transform]=\"rect.transform\" class=\"node\">\n          <svg:rect\n            [attr.x]=\"0\"\n            [attr.y]=\"0\"\n            [attr.width]=\"rect.width\"\n            [attr.height]=\"rect.height\"\n            [attr.fill]=\"rect.fill\"\n            [attr.fill-opacity]=\"rect.active ? 1 : hasActive ? 0.3 : 1\"\n            ngx-tooltip\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipType]=\"styleTypes.tooltip\"\n            [tooltipPlacement]=\"'top'\"\n            [tooltipTitle]=\"tooltipTemplate ? undefined : rect.tooltip\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [tooltipContext]=\"rect.data\"\n            (click)=\"select.emit(rect.data)\"\n            (mouseenter)=\"activateRect(rect)\"\n            (mouseleave)=\"deactivateRect(rect)\"\n          ></svg:rect>\n        </svg:g>\n\n        <svg:g *ngFor=\"let rect of nodeRects\" [attr.transform]=\"rect.transform\">\n          <svg:text\n            *ngIf=\"showLabels && rect.height > 15\"\n            class=\"label\"\n            [attr.x]=\"rect.width + 5\"\n            [attr.y]=\"rect.height / 2\"\n            [attr.fill-opacity]=\"rect.active ? 1 : hasActive ? 0.3 : 1\"\n            [attr.text-anchor]=\"rect.labelAnchor\"\n            dy=\"0.35em\"\n            [attr.dx]=\"rect.labelAnchor === 'end' ? -25 : 0\"\n          >\n            {{ rect.label }}\n          </svg:text>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['../common/base-chart.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false\n})\nexport class SankeyComponent extends BaseChartComponent {\n  @Input() showLabels: boolean = true;\n  @Input() gradient: boolean;\n  @Input() tooltipDisabled: boolean = false;\n  @Input() activeEntries: any[] = [];\n  @Input() labelFormatting: any;\n\n  @Output() activate: EventEmitter<any> = new EventEmitter();\n  @Output() deactivate: EventEmitter<any> = new EventEmitter();\n\n  @ContentChild('tooltipTemplate') tooltipTemplate: TemplateRef<any>;\n\n  dims: ViewDimensions;\n  colors: ColorHelper;\n  colorScale: any;\n  transform: string;\n  margin: number[] = [10, 10, 10, 10];\n  scaleType: ScaleType = ScaleType.Ordinal;\n  valueDomain: any[];\n  styleTypes = StyleTypes;\n\n  nodeRects: RectItem[];\n  linkPaths: any[];\n  chartHasActive: boolean = false;\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  update(): void {\n    super.update();\n\n    this.dims = calculateViewDimensions({\n      width: this.width,\n      height: this.height,\n      margins: this.margin,\n      legendType: this.scaleType as any\n    });\n\n    const linkDefs = this.results;\n    const nodeDefs = Array.from(new Set(linkDefs.flatMap(l => [l.source, l.target])), (name: string) => ({\n      name,\n      value: linkDefs.filter(l => l.source === name).reduce((acc, l) => acc + l.value, 0)\n    }));\n\n    // Configure generator\n    const sankeyGenerator = sankey()\n      .nodeId(d => d.name)\n      .nodeAlign(sankeyLeft)\n      .nodeWidth(15)\n      .nodePadding(10)\n      .extent([\n        [1, 5],\n        [this.dims.width - 1, this.dims.height - 5]\n      ]);\n\n    // Generate links and nodes\n    const data = sankeyGenerator({\n      nodes: nodeDefs.map(d => Object.assign({}, d)),\n      links: linkDefs.map(d => Object.assign({}, d))\n    });\n\n    this.valueDomain = this.getValueDomain(data.nodes);\n    this.setColors();\n\n    this.nodeRects = data.nodes.map(node => {\n      const rect: RectItem = {\n        x: node.x0,\n        y: node.y0,\n        height: node.y1 - node.y0,\n        width: node.x1 - node.x0,\n        fill: this.colors.getColor(node.name),\n        tooltip: this.getNodeTooltipText(node),\n        rx: 5,\n        data: {\n          name: node.name,\n          value: node.value\n        },\n        transform: '',\n        label: this.labelFormatting ? this.labelFormatting(node.name) : node.name,\n        labelAnchor: TextAnchor.Start\n      };\n      rect.labelAnchor = this.getTextAnchor(node);\n      rect.transform = `translate(${rect.x},${rect.y})`;\n      return rect;\n    });\n\n    this.linkPaths = data.links.map(link => {\n      const gradientId = 'mask' + id().toString();\n      const linkPath = {\n        path: sankeyLinkHorizontal()(link),\n        strokeWidth: Math.max(1, link.width),\n        tooltip: this.getLinkTooltipText(link.source, link.target, link.value),\n        id: gradientId,\n        gradientFill: `url(#${gradientId})`,\n        source: link.source,\n        target: link.target,\n        startColor: this.colors.getColor(link.source.name),\n        endColor: this.colors.getColor(link.target.name),\n        data: {\n          source: link.source.name,\n          target: link.target.name,\n          value: link.value\n        }\n      };\n      return linkPath;\n    });\n\n    this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n  }\n\n  getNodeTooltipText(node): string {\n    return `\n      <span class=\"tooltip-label\">${escapeLabel(node.name)}</span>\n      <span class=\"tooltip-val\">${node.value.toLocaleString()}</span>\n    `;\n  }\n\n  getLinkTooltipText(sourceNode, targetNode, value: number): string {\n    return `\n      <span class=\"tooltip-label\">${escapeLabel(sourceNode.name)} • ${escapeLabel(targetNode.name)}</span>\n      <span class=\"tooltip-val\">${value.toLocaleString()} (${(value / sourceNode.value).toLocaleString(undefined, {\n      style: 'percent',\n      maximumFractionDigits: 2\n    })})</span>\n    `;\n  }\n\n  getTextAnchor(node): TextAnchor {\n    if (node.layer === 0) {\n      return TextAnchor.Start;\n    } else {\n      return TextAnchor.End;\n    }\n  }\n\n  onClick(data): void {\n    this.select.emit(data);\n  }\n\n  setColors(): void {\n    this.colors = new ColorHelper(this.scheme, this.scaleType, this.valueDomain, this.customColors);\n  }\n\n  getValueDomain(nodes): any[] {\n    return nodes.map(n => n.name);\n  }\n\n  activateLink(link) {\n    this.linkPaths.forEach(l => {\n      l.active = false;\n    });\n\n    this.nodeRects.forEach(r => {\n      if (r.data.name === link.source.name || r.data.name === link.target.name) {\n        r.active = true;\n      } else {\n        r.active = false;\n      }\n    });\n\n    link.active = true;\n\n    this.activate.emit(link.data);\n  }\n\n  deactivateLink(link) {\n    link.active = false;\n\n    this.nodeRects.forEach(r => {\n      r.active = false;\n    });\n\n    this.deactivate.emit(link.data);\n  }\n\n  activateRect(rect) {\n    const links = this.linkPaths.filter(l => l.source.name === rect.data.name || l.target.name === rect.data.name);\n\n    this.nodeRects.forEach(r => {\n      if (links.some(l => l.source.name === r.data.name || l.target.name === r.data.name)) {\n        r.active = true;\n      } else {\n        r.active = false;\n      }\n    });\n\n    this.linkPaths.forEach(l => {\n      if (l.source.name === rect.data.name || l.target.name === rect.data.name) {\n        l.active = true;\n      } else {\n        l.active = false;\n      }\n    });\n\n    this.activate.emit(rect.data);\n  }\n\n  deactivateRect(rect) {\n    this.nodeRects.forEach(r => {\n      r.active = false;\n    });\n\n    this.linkPaths.forEach(l => {\n      l.active = false;\n    });\n\n    this.deactivate.emit(rect.data);\n  }\n\n  get hasActive(): boolean {\n    return this.linkPaths.some(l => l.active) || this.nodeRects.some(r => r.active);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from '../common/chart-common.module';\nimport { SankeyComponent } from './sankey.component';\n\n@NgModule({\n  imports: [ChartCommonModule],\n  declarations: [SankeyComponent],\n  exports: [SankeyComponent]\n})\nexport class SankeyModule {}\n","import { NgModule } from '@angular/core';\nimport { ChartCommonModule } from './common/chart-common.module';\nimport { AreaChartModule } from './area-chart/area-chart.module';\nimport { BarChartModule } from './bar-chart/bar-chart.module';\nimport { BoxChartModule } from './box-chart/box-chart.module';\nimport { BubbleChartModule } from './bubble-chart/bubble-chart.module';\nimport { HeatMapModule } from './heat-map/heat-map.module';\nimport { LineChartModule } from './line-chart/line-chart.module';\nimport { PolarChartModule } from './polar-chart/polar-chart.module';\nimport { NumberCardModule } from './number-card/number-card.module';\nimport { PieChartModule } from './pie-chart/pie-chart.module';\nimport { TreeMapModule } from './tree-map/tree-map.module';\nimport { GaugeModule } from './gauge/gauge.module';\nimport { ngxChartsPolyfills } from './polyfills';\nimport { SankeyModule } from './sankey/sankey.module';\n\n@NgModule({\n  exports: [\n    ChartCommonModule,\n    AreaChartModule,\n    BarChartModule,\n    BoxChartModule,\n    BubbleChartModule,\n    HeatMapModule,\n    SankeyModule,\n    LineChartModule,\n    PolarChartModule,\n    NumberCardModule,\n    PieChartModule,\n    TreeMapModule,\n    GaugeModule\n  ]\n})\nexport class NgxChartsModule {\n  constructor() {\n    ngxChartsPolyfills();\n  }\n}\n","import { timeFormat } from 'd3-time-format';\n\nexport function tickFormat(fieldType, groupByType): (label: string) => string {\n  return function (label: string): string {\n    if (label === 'No Value' || label === 'Other') {\n      return label;\n    }\n    if (fieldType === 'date' && groupByType === 'groupBy') {\n      const formatter = timeFormat('MM/DD/YYYY');\n      return formatter(<any>label);\n    }\n\n    return label.toString();\n  };\n}\n","/* eslint-disable @typescript-eslint/no-empty-interface */\n\nimport { IVector2D } from './coordinates.model';\n\nexport type StringOrNumberOrDate = string | number | Date;\n\nexport interface DataItem {\n  name: StringOrNumberOrDate;\n  value: number;\n  extra?: any;\n  min?: number;\n  max?: number;\n  label?: string;\n}\n\nexport interface SingleSeries extends Array<DataItem> {}\n\nexport interface Series {\n  name: StringOrNumberOrDate;\n  series: DataItem[];\n}\n\nexport interface MultiSeries extends Array<Series> {}\n\nexport interface AreaChartDataItem extends DataItem {\n  d0: number;\n  d1: number;\n}\n\nexport interface AreaChartSeries {\n  name: StringOrNumberOrDate;\n  series: AreaChartDataItem[];\n}\n\nexport interface PieGridData {\n  data: PieGridDataItem;\n  height: number;\n  width: number;\n  x: number;\n  y: number;\n}\n\nexport interface PieGridDataItem extends DataItem {\n  percent: number;\n  total: number;\n  value: number;\n}\n\nexport interface BubbleChartDataItem {\n  name: StringOrNumberOrDate;\n  x: StringOrNumberOrDate;\n  y: StringOrNumberOrDate;\n  r: number;\n  extra?: any;\n}\n\nexport interface BubbleChartSeries {\n  name: StringOrNumberOrDate;\n  series: BubbleChartDataItem[];\n}\n\nexport interface BubbleChartMultiSeries extends Array<BubbleChartSeries> {}\n\nexport interface TreeMapDataItem {\n  name: StringOrNumberOrDate;\n  size?: number;\n  children?: TreeMapDataItem[];\n  extra?: any;\n}\n\nexport interface TreeMapData extends Array<TreeMapDataItem> {}\n\nexport interface SankeyObject {\n  source: string;\n  target: string;\n  value: number;\n}\n\nexport interface SankeyData extends Array<SankeyObject> {}\n\nexport interface BoxChartSeries {\n  name: StringOrNumberOrDate;\n  series: DataItem[];\n}\n\nexport interface BoxChartMultiSeries extends Array<BoxChartSeries> {}\n\nexport interface IBoxModel {\n  value: number | Date;\n  label: StringOrNumberOrDate;\n  data: DataItem[];\n  formattedLabel: string;\n  height: number;\n  width: number;\n  x: number;\n  y: number;\n  roundEdges: boolean;\n  lineCoordinates: IVector2D[];\n  quartiles: number[];\n  tooltipText?: string;\n  ariaLabel?: string;\n  color?: string;\n  // TODO: Replace by IColorGradient Interface\n  gradientStops?: Array<{ offset: number; color: string; opacity: number }>;\n}\n","/*\n * Public API Surface of ngx-charts\n */\n\nexport * from './lib/ngx-charts.module';\n\nexport * from './lib/area-chart/area-chart.module';\nexport * from './lib/area-chart/area-chart.component';\nexport * from './lib/area-chart/area-chart-normalized.component';\nexport * from './lib/area-chart/area-chart-stacked.component';\nexport * from './lib/area-chart/area-series.component';\n\nexport * from './lib/bar-chart/bar-chart.module';\nexport * from './lib/bar-chart/bar.component';\nexport * from './lib/bar-chart/bar-horizontal.component';\nexport * from './lib/bar-chart/bar-horizontal-2d.component';\nexport * from './lib/bar-chart/bar-horizontal-normalized.component';\nexport * from './lib/bar-chart/bar-horizontal-stacked.component';\nexport * from './lib/bar-chart/series-horizontal.component';\nexport * from './lib/bar-chart/bar-label.component';\nexport * from './lib/bar-chart/bar-vertical.component';\nexport * from './lib/bar-chart/bar-vertical-2d.component';\nexport * from './lib/bar-chart/bar-vertical-normalized.component';\nexport * from './lib/bar-chart/bar-vertical-stacked.component';\nexport * from './lib/bar-chart/series-vertical.component';\nexport * from './lib/bar-chart/types/bar.model';\nexport * from './lib/bar-chart/types/bar-chart-type.enum';\nexport * from './lib/bar-chart/types/d0-type.enum';\n\nexport * from './lib/box-chart/box-chart.module';\nexport * from './lib/box-chart/box.component';\nexport * from './lib/box-chart/box-chart.component';\nexport * from './lib/box-chart/box-series.component';\n\nexport * from './lib/bubble-chart/bubble-chart.module';\nexport * from './lib/bubble-chart/bubble-chart.component';\nexport * from './lib/bubble-chart/bubble-chart.utils';\nexport * from './lib/bubble-chart/bubble-series.component';\n\nexport * from './lib/common/chart-common.module';\nexport * from './lib/common/legend/legend.component';\nexport * from './lib/common/legend/scale-legend.component';\nexport * from './lib/common/legend/legend-entry.component';\nexport * from './lib/common/legend/advanced-legend.component';\n\nexport * from './lib/common/tooltip/tooltip.module';\nexport * from './lib/common/tooltip/tooltip.service';\nexport * from './lib/common/tooltip/tooltip.component';\nexport * from './lib/common/tooltip/tooltip.directive';\nexport * from './lib/common/tooltip/style.type';\nexport * from './lib/common/tooltip/show.type';\nexport * from './lib/common/tooltip/position/placement-type.enum';\n\nexport * from './lib/common/types/bar-orientation.enum';\nexport * from './lib/common/types/gradient.interface';\nexport * from './lib/common/types/legend.model';\nexport * from './lib/common/types/orientation.enum';\nexport * from './lib/common/types/scale-type.enum';\nexport * from './lib/common/types/text-anchor.enum';\nexport * from './lib/common/types/view-dimension.interface';\n\nexport * from './lib/common/axes/axes.module';\nexport * from './lib/common/axes/axis-label.component';\nexport * from './lib/common/axes/x-axis.component';\nexport * from './lib/common/axes/x-axis-ticks.component';\nexport * from './lib/common/axes/y-axis.component';\nexport * from './lib/common/axes/y-axis-ticks.component';\nexport * from './lib/common/axes/ticks.helper';\n\nexport * from './lib/common/count/count.directive';\nexport * from './lib/common/count/count.helper';\nexport * from './lib/common/timeline/timeline.component';\nexport * from './lib/common/color.helper';\nexport * from './lib/common/charts/chart.component';\n\nexport * from './lib/common/area.component';\nexport * from './lib/common/base-chart.component';\nexport * from './lib/common/circle.component';\nexport * from './lib/common/circle-series.component';\nexport * from './lib/common/grid-layout.helper';\nexport * from './lib/common/grid-panel.component';\nexport * from './lib/common/grid-panel-series.component';\nexport * from './lib/common/svg-linear-gradient.component';\nexport * from './lib/common/svg-radial-gradient.component';\nexport * from './lib/common/tooltip-area.component';\nexport * from './lib/common/tick-format.helper';\nexport * from './lib/common/trim-label.helper';\nexport * from './lib/common/view-dimensions.helper';\nexport * from './lib/common/label.helper';\nexport * from './lib/common/domain.helper';\n\nexport * from './lib/gauge/gauge.module';\nexport * from './lib/gauge/gauge-arc.component';\nexport * from './lib/gauge/gauge-axis.component';\nexport * from './lib/gauge/gauge.component';\nexport * from './lib/gauge/linear-gauge.component';\nexport * from './lib/gauge/percent-gauge/percent-gauge.component';\n\nexport * from './lib/heat-map/heat-map.module';\nexport * from './lib/heat-map/heat-map.component';\nexport * from './lib/heat-map/heat-map-cell.component';\nexport * from './lib/heat-map/heat-map-cell-series.component';\n\nexport * from './lib/sankey/sankey.module';\nexport * from './lib/sankey/sankey.component';\n\nexport * from './lib/line-chart/line-chart.module';\nexport * from './lib/line-chart/line-chart.component';\nexport * from './lib/line-chart/line.component';\nexport * from './lib/line-chart/line-series.component';\n\nexport * from './lib/models/chart-data.model';\n\nexport * from './lib/number-card/number-card.module';\nexport * from './lib/number-card/number-card.component';\nexport * from './lib/number-card/card.component';\nexport * from './lib/number-card/card-series.component';\n\nexport * from './lib/pie-chart/pie-chart.module';\nexport * from './lib/pie-chart/advanced-pie-chart.component';\nexport * from './lib/pie-chart/pie-chart.component';\nexport * from './lib/pie-chart/pie-arc.component';\nexport * from './lib/pie-chart/pie-grid.component';\nexport * from './lib/pie-chart/pie-grid-series.component';\nexport * from './lib/pie-chart/pie-series.component';\nexport * from './lib/pie-chart/pie-label.component';\n\nexport * from './lib/polar-chart/polar-chart.module';\nexport * from './lib/polar-chart/polar-chart.component';\nexport * from './lib/polar-chart/polar-series.component';\n\nexport * from './lib/tree-map/tree-map.module';\nexport * from './lib/tree-map/tree-map.component';\nexport * from './lib/tree-map/tree-map-cell.component';\nexport * from './lib/tree-map/tree-map-cell-series.component';\n\nexport * from './lib/utils/id';\nexport * from './lib/utils/color-sets';\nexport * from './lib/utils/sort';\nexport * from './lib/utils/throttle';\nexport * from './lib/utils/color-utils';\nexport * from './lib/utils/visibility-observer';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InjectionService","i2.LegendEntryComponent","i2.LegendComponent","i3.ScaleLegendComponent","observableFromEvent","i2.AxisLabelComponent","i3.XAxisTicksComponent","i3.YAxisTicksComponent","i1.TooltipService","i2.TooltipDirective","i3.CircleComponent","i4.SvgLinearGradientComponent","i2.GridPanelComponent","i2.SvgLinearGradientComponent","i2.CountUpDirective","i1.AreaComponent","i2.XAxisComponent","i3.YAxisComponent","i4.TooltipArea","i5.ChartComponent","i6.CircleSeriesComponent","i7.Timeline","i8.AreaSeriesComponent","i3.BarComponent","i4.BarLabelComponent","i4.ChartComponent","i5.SeriesHorizontal","i5.GridPanelSeriesComponent","i6.SeriesHorizontal","i5.SeriesVerticalComponent","i6.SeriesVerticalComponent","i1.TooltipDirective","i2.BoxComponent","i5.BoxSeriesComponent","i5.BubbleSeriesComponent","i3.HeatMapCellComponent","i5.HeatCellSeriesComponent","i2.AreaComponent","i3.SvgLinearGradientComponent","i4.LineComponent","i8.LineSeriesComponent","i4.SvgRadialGradientComponent","i5.LineComponent","i5.PieLabelComponent","i6.PolarSeriesComponent","i2.SvgRadialGradientComponent","i3.PieLabelComponent","i4.PieArcComponent","i1.ChartComponent","i2.AdvancedLegendComponent","i3.PieSeriesComponent","i2.PieSeriesComponent","i2.PieArcComponent","i3.CountUpDirective","i5.PieGridSeriesComponent","i2.CardComponent","i2.CardSeriesComponent","i3.TreeMapCellComponent","i2.TreeMapCellSeriesComponent","i2.ChartComponent","i3.GaugeArcComponent","i4.GaugeAxisComponent","i3.ChartComponent"],"mappings":"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E;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,GAAG,EAAE,CAA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"}