{"version":3,"file":"usitsdasdesign-dds-ng-charts.mjs","sources":["../../src/app/dds/charts/chart-menu/chart-menu.component.ts","../../src/app/dds/charts/chart-menu/chart-menu.component.html","../../src/app/dds/charts/chart-table-view/chart-table-view.component.ts","../../src/app/dds/charts/chart-table-view/chart-table-view.component.html","../../src/app/dds/charts/typings.ts","../../src/app/dds/charts/services/base.chart.ts","../../src/app/dds/charts/area-chart/contants.ts","../../src/app/dds/charts/services/color.service.ts","../../src/app/dds/charts/services/tools.service.ts","../../src/app/dds/charts/area-chart/area-chart.component.ts","../../src/app/dds/charts/area-chart/area-chart.component.html","../../src/app/dds/charts/area-stacked-chart/constants.ts","../../src/app/dds/charts/area-stacked-chart/area-stacked-chart.component.ts","../../src/app/dds/charts/area-stacked-chart/area-stacked-chart.component.html","../../src/app/dds/charts/bar-chart/constants.ts","../../src/app/dds/charts/bar-chart/bar-chart.component.ts","../../src/app/dds/charts/bar-chart/bar-chart.component.html","../../src/app/dds/charts/bubble-chart/constants.ts","../../src/app/dds/charts/bubble-chart/bubble-chart.component.ts","../../src/app/dds/charts/bubble-chart/bubble-chart.component.html","../../src/app/dds/charts/funnel-chart/constants.ts","../../src/app/dds/charts/funnel-chart/funnel-chart.component.ts","../../src/app/dds/charts/funnel-chart/funnel-chart.component.html","../../src/app/dds/charts/heat-map-chart/contants.ts","../../src/app/dds/charts/heat-map-chart/heat-map-chart.component.ts","../../src/app/dds/charts/heat-map-chart/heat-map-chart.component.html","../../src/app/dds/charts/histogram-chart/constants.ts","../../src/app/dds/charts/histogram-chart/histogram-chart.component.ts","../../src/app/dds/charts/histogram-chart/histogram-chart.component.html","../../src/app/dds/charts/horizontal-bar-chart/contants.ts","../../src/app/dds/charts/horizontal-bar-chart/horizontal-bar-chart.component.ts","../../src/app/dds/charts/horizontal-bar-chart/horizontal-bar-chart.component.html","../../src/app/dds/charts/horizontal-stacked-bar-chart/constants.ts","../../src/app/dds/charts/horizontal-stacked-bar-chart/horizontal-stacked-bar-chart.component.ts","../../src/app/dds/charts/horizontal-stacked-bar-chart/horizontal-stacked-bar-chart.component.html","../../src/app/dds/charts/line-chart/constants.ts","../../src/app/dds/charts/line-chart/line-chart.component.ts","../../src/app/dds/charts/line-chart/line-chart.component.html","../../src/app/dds/charts/pie-chart-progress/constants.ts","../../src/app/dds/charts/pie-chart-progress/pie-chart-progress.component.ts","../../src/app/dds/charts/pie-chart-progress/pie-chart-progress.component.html","../../src/app/dds/charts/pie-chart/constants.ts","../../src/app/dds/charts/pie-chart/pie-chart.component.ts","../../src/app/dds/charts/pie-chart/pie-chart.component.html","../../src/app/dds/charts/speedometer-chart/constants.ts","../../src/app/dds/charts/speedometer-chart/speedometer-chart.component.ts","../../src/app/dds/charts/speedometer-chart/speedometer-chart.component.html","../../src/app/dds/charts/stacked-bar-chart/constants.ts","../../src/app/dds/charts/stacked-bar-chart/stacked-bar-chart.component.ts","../../src/app/dds/charts/stacked-bar-chart/stacked-bar-chart.component.html","../../src/app/dds/charts/charts.module.ts","../../src/app/dds/charts/services/colors.tools.ts","../../src/app/dds/charts/usitsdasdesign-dds-ng-charts.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ButtonComponent } from '@usitsdasdesign/dds-ng/button';\nimport { ContextMenuComponent, ContextMenuItemComponent } from '@usitsdasdesign/dds-ng/context-menu';\nimport { FocusHandlerDirective } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { generateId } from '@usitsdasdesign/dds-ng/core/utils';\nimport { ButtonKind, PositionState, Size } from '@usitsdasdesign/dds-ng/shared';\nimport { StickerDirective } from '@usitsdasdesign/dds-ng/sticker';\n\n@Component({\n  selector: 'dds-chart-menu',\n  templateUrl: './chart-menu.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [FocusHandlerDirective, ButtonComponent, StickerDirective, ContextMenuComponent, ContextMenuItemComponent],\n})\nexport class ChartMenuComponent {\n  // ViewChild decorator to access the StickerDirective instance\n  @ViewChild('stickerDir') stickerDir: StickerDirective;\n\n  // Input properties to control fullscreen and table view states\n  @Input() withFullScreen: boolean | undefined;\n  @Input() hasTableView: boolean | undefined;\n\n  // Output events to notify parent components about fullscreen and table view toggles\n  @Output() toggleFullScreen = new EventEmitter<void>();\n  @Output() toggleTableView = new EventEmitter<void>();\n\n  // Menu settings configuration\n  menuSettings = {\n    label: '',\n    icon: 'dds-icon_setting__l__stroke',\n    size: Size.md,\n    stickerWidth: 150,\n    stickerIndent: 0,\n    kind: ButtonKind.silent,\n    stickerPosition: PositionState.bottomLeft,\n  };\n\n  // State to track whether the menu is expanded\n  expandedStatus = false;\n\n  // Unique component ID\n  componentId: string;\n\n  // Constructor to generate a unique component ID\n  constructor() {\n    this.componentId = generateId();\n  }\n\n  // Handler to toggle fullscreen mode and close the sticker\n  toggleFullScreenHandler(): void {\n    this.toggleFullScreen.emit();\n    this.closeSticker();\n  }\n\n  // Handler to toggle table view mode and close the sticker\n  toggleTableViewHandler(): void {\n    this.toggleTableView.emit();\n    this.closeSticker();\n  }\n\n  // Method to open the sticker\n  openSticker(): void {\n    this.stickerDir.show();\n  }\n\n  // Method to close the sticker\n  closeSticker(): void {\n    this.stickerDir.hide();\n  }\n}\n","<button ddsButton\n  [icon]=\"menuSettings.icon\"\n  [ddsSticker]=\"list\"\n  [stickerWidth]=\"menuSettings.stickerWidth\"\n  [stickerPosition]=\"menuSettings.stickerPosition\"\n  [stickerIndent]=\"menuSettings.stickerIndent\"\n  [size]=\"menuSettings.size\"\n  [kind]=\"menuSettings.kind\"\n  [attr.aria-expanded]=\"expandedStatus\"\n  [attr.aria-controls]=\"componentId\"\n  aria-label=\"menu\"\n  aria-haspopup=\"dialog\"\n  [hostRole]=\"'combobox'\"\n  (clicked)=\"openSticker()\"\n  (onShown)=\"expandedStatus = true\"\n  (onHidden)=\"expandedStatus = false\"\n  #stickerDir=\"dds-sticker\">\n</button>\n\n<ng-template #list>\n  <dds-context-menu [id]=\"componentId\"\n    [size]=\"menuSettings.size\"\n    ariaLabel=\"Context menu for charts\">\n    @if (withFullScreen) {\n      <dds-context-menu-item\n        (selectedItem)=\"toggleFullScreenHandler()\">\n        Full screen\n      </dds-context-menu-item>\n    }\n    @if (hasTableView) {\n      <dds-context-menu-item\n        (selectedItem)=\"toggleTableViewHandler()\">\n        Table view\n      </dds-context-menu-item>\n    }\n  </dds-context-menu>\n</ng-template>\n","import { NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Column } from '@usitsdasdesign/dds-ng/shared';\n\n@Component({\n  selector: 'dds-chart-table-view',\n  templateUrl: './chart-table-view.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [NgStyle],\n})\nexport class ChartTableViewComponent {\n  // Input property to receive data for the chart table view\n  @Input() data: unknown[] | undefined;\n\n  // Input property to receive column definitions for the chart table view\n  @Input() columns: Column[] | undefined;\n}\n","<div class=\"dds-chart-table-view\">\n  <table class=\"dds-data-table\">\n\n    <thead class=\"dds-data-table__header\">\n      <tr>\n        @for (column of columns; track column) {\n          <th\n            class=\"dds-data-table__header-cell\"\n            [ngStyle]=\"{ width: column.width, minWidth: column.minWidth }\">\n            <div class=\"dds-data-table__content\">\n              <span>{{column.header || column.name}}</span>\n            </div>\n          </th>\n        }\n      </tr>\n    </thead>\n\n    <tbody class=\"dds-data-table__body\">\n      @for (row of data; track row; let index = $index) {\n        <tr\n          class=\"dds-data-table__row\">\n          @for (column of columns; track column) {\n            <td\n              class=\"dds-data-table__cell\">\n              {{row[column.name]}}\n            </td>\n          }\n        </tr>\n      }\n\n    </tbody>\n  </table>\n</div>\n","import { Column } from '@usitsdasdesign/dds-ng/shared';\n\nexport interface ChartOptions {\n  colors?: string[];\n  axisColor?: string;\n  data?: ChartData[];\n  chartWidth?: number;\n  chartHeight?: number;\n  padding?: number;\n  barPadding?: number;\n  hasGrid?: boolean;\n  hasX_Axis?: boolean;\n  hasY_Axis?: boolean;\n  hasTooltip?: boolean;\n  hasLabels?: boolean;\n  hasPatterns?: boolean;\n  tableViewColumns?: Column[];\n  isResponsive?: boolean;\n  patternIds?: string[];\n  strokeWidth?: number;\n  innerRadius?: number;\n}\n\nexport interface ChartsSettingProps {\n  axisColor?: string;\n  nonGroupNameFields?: string[];\n  chartWidth?: number;\n  chartHeight?: number;\n  padding?: number;\n  barPadding?: number;\n  hasBarPadding?: boolean;\n  initColors?: string[];\n  colors?: string[];\n  xAxisDescription?: string;\n  yAxisDescription?: string;\n  dotsEnabled?: boolean;\n  hasDots?: boolean;\n  dotRadius?: number;\n  data?: ChartData[];\n  hasBubbleRadius?: boolean;\n  maxBubbleRadius?: number;\n  hasAxis?: boolean;\n  hasY_Axis?: boolean;\n  hasX_Axis?: boolean;\n  hasLabelsOrDots?: boolean;\n  hasGrid?: boolean;\n  hasTooltip?: boolean;\n  labelsEnabled?: boolean;\n  hasLabels?: boolean;\n  hasInnerRadius?: boolean;\n  innerRadius?: number;\n  hasStrokeWidth?: boolean;\n  strokeWidth?: number;\n  legendEnable?: boolean;\n  hasLegend?: boolean;\n  axisLabelsEnabled?: boolean;\n  hasAxisLabels?: boolean;\n  colorsSectionDesc?: string;\n  hasColorSettings?: boolean;\n  hasPatterns?: boolean;\n  patternsDisabledBg?: boolean;\n  tableViewColumns?: Column[];\n  isResponsive?: boolean;\n  patternIds?: string[];\n  enableArrowNav?: boolean;\n  bottomPadding?: number;\n  leftPadding?: number;\n  rightPadding?: number;\n  topPadding?: number;\n  fullScreenPadding?: number;\n  axisDescSpacing?: number;\n}\n\nexport interface ChartData {\n  name: string;\n  value: number;\n  hidden: boolean;\n}\n\nexport const DEFAULT_CHART_COLORS = [\n  '#007CB0',\n  '#D17A00',\n  '#23A75D',\n  '#71150F',\n  '#A61F15',\n  '#53565A',\n  '#012169',\n  '#2C5234',\n  '#007680',\n  '#2A4581',\n];\n\nexport const DEFAULT_CHART_SETTINGS: ChartsSettingProps = {\n  axisColor: '#75787B',\n  nonGroupNameFields: ['time'],\n  chartWidth: 800,\n  chartHeight: 500,\n  padding: 50,\n  barPadding: 0.05,\n  hasBarPadding: true,\n  initColors: [],\n  colors: [],\n  dotsEnabled: true,\n  hasDots: true,\n  dotRadius: 5,\n  hasBubbleRadius: false,\n  maxBubbleRadius: 30,\n  hasAxis: true,\n  hasY_Axis: true,\n  hasX_Axis: true,\n  hasLabelsOrDots: true,\n  hasGrid: true,\n  hasTooltip: true,\n  labelsEnabled: true,\n  hasLabels: false,\n  hasInnerRadius: false,\n  innerRadius: 100,\n  hasStrokeWidth: false,\n  strokeWidth: 0,\n  legendEnable: false,\n  hasLegend: true,\n  axisLabelsEnabled: false,\n  hasAxisLabels: false,\n  colorsSectionDesc: '',\n  hasColorSettings: true,\n  hasPatterns: false,\n  patternsDisabledBg: false,\n  enableArrowNav: true,\n  bottomPadding: 50,\n  leftPadding: 50,\n  rightPadding: 50,\n  topPadding: 50,\n  fullScreenPadding: 24,\n  axisDescSpacing: 25,\n};\n\nexport enum EPatternKind {\n  path = 'path',\n  circle = 'circle',\n}\n\nexport interface IChartPattern {\n  kind: EPatternKind;\n  width: number;\n  height: number;\n  fill?: string;\n  bg?: string;\n  strokeWidth?: number;\n  path?: string;\n  cx?: number;\n  cy?: number;\n  r?: number;\n}\n\nexport interface IListManagerChartItem {\n  element: HTMLElement;\n  disabled?: boolean;\n}\n\nexport const DEFAULT_PATTERNS: IChartPattern[] = [\n  {\n    path: 'M 2.5,2.5l5,5M2.5,7.5l5,-5',\n    strokeWidth: 1,\n    kind: EPatternKind.path,\n    width: 10,\n    height: 10,\n  },\n  {\n    path: 'M 0,15 l 20,-10 M 0,5 l 20,-10 M 0,25 l 20,-10',\n    strokeWidth: 2,\n    kind: EPatternKind.path,\n    width: 20,\n    height: 20,\n  },\n  {\n    path: 'M 2.5,2.5l5,5M7.5,2.5l5,-5 M2.5,7.5l-5,5M7.5,12.5l5,-5 M-2.5,2.5l5,-5',\n    strokeWidth: 2,\n    kind: EPatternKind.path,\n    width: 10,\n    height: 10,\n  },\n  {\n    path: 'M 2.5,7.5l2.5,-5l2.5,5',\n    strokeWidth: 1,\n    kind: EPatternKind.path,\n    width: 10,\n    height: 10,\n  },\n  {\n    cx: 5,\n    cy: 5,\n    r: 2,\n    kind: EPatternKind.circle,\n    width: 10,\n    height: 10,\n  },\n  {\n    path: 'M 0 5 c 1.25 -2.5 , 3.75 -2.5 , 5 0 c 1.25 2.5 , 3.75 2.5 , 5 0 M -5 5 c 1.25 2.5 , 3.75 2.5 , 5 0 M 10 5 c 1.25 -2.5 , 3.75 -2.5 , 5 0',\n    strokeWidth: 2,\n    kind: EPatternKind.path,\n    width: 10,\n    height: 10,\n  },\n  {\n    cx: 10,\n    cy: 10,\n    r: 3,\n    fill: 'transparent',\n    strokeWidth: 2,\n    kind: EPatternKind.circle,\n    width: 20,\n    height: 20,\n  },\n  {\n    path: 'M 0 5 l 5 0 l 0 -5 M 15 20 l 0 -5 l 5 0 M 5 10 l 0 5 l 5 0 M 10 5 l 5 0 l 0 5',\n    strokeWidth: 2,\n    kind: EPatternKind.path,\n    width: 20,\n    height: 20,\n  },\n  {\n    path: 'M 0,60 l 60,-60 M -15,15 l 30,-30 M 45,75 l 30,-30',\n    strokeWidth: 40,\n    kind: EPatternKind.path,\n    width: 60,\n    height: 60,\n  },\n  {\n    path: 'M 5 5 l 10 0 l 0 10 l -10 0 Z',\n    strokeWidth: 2,\n    kind: EPatternKind.path,\n    width: 20,\n    height: 20,\n    fill: 'transparent',\n  },\n  {\n    cx: 10,\n    cy: 10,\n    r: 4,\n    kind: EPatternKind.circle,\n    width: 20,\n    height: 20,\n  },\n];\n","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { ListManager } from '@usitsdasdesign/dds-ng/core/list-manager';\nimport { generateId } from '@usitsdasdesign/dds-ng/core/utils';\nimport { KeyCodes } from '@usitsdasdesign/dds-ng/shared';\nimport * as d3 from 'd3';\nimport { Subject, takeUntil } from 'rxjs';\nimport {\n  ChartsSettingProps,\n  DEFAULT_CHART_SETTINGS,\n  DEFAULT_PATTERNS,\n  EPatternKind,\n  IChartPattern,\n  IListManagerChartItem,\n} from '../typings';\n\ninterface IConstParams {\n  chartSelector?: string;\n  chartContainer?: ElementRef<HTMLElement>;\n  initColors?: string[];\n  data?: any;\n}\n\nexport const fullPropsList = [\n  'chartWidth',\n  'chartHeight',\n  'padding',\n  'hasBarPadding',\n  'barPadding',\n  'initColors',\n  'colors',\n  'axisColor',\n  'dotsEnabled',\n  'hasDots',\n  'dotRadius',\n  'data',\n  'hasBubbleRadius',\n  'maxBubbleRadius',\n  'hasAxis',\n  'hasX_Axis',\n  'hasY_Axis',\n  'hasLabelsOrDots',\n  'hasGrid',\n  'labelsEnabled',\n  'hasLabels',\n  'hasPatterns',\n  'patternsDisabledBg',\n  'patternIds',\n  'hasTooltip',\n  'hasInnerRadius',\n  'innerRadius',\n  'hasStrokeWidth',\n  'strokeWidth',\n  'legendEnable',\n  'hasLegend',\n  'axisLabelsEnabled',\n  'hasAxisLabels',\n  'colorsSectionDesc',\n  'hasColorSettings',\n  'xAxisDescription',\n  'yAxisDescription',\n  'isResponsive',\n  'bottomPadding',\n  'leftPadding',\n  'rightPadding',\n  'topPadding',\n];\nexport const returnedPropsList = [\n  'chartWidth',\n  'chartHeight',\n  'padding',\n  'barPadding',\n  'initColors',\n  'colors',\n  'axisColor',\n  'data',\n  'maxBubbleRadius',\n  'hasY_Axis',\n  'hasX_Axis',\n  'hasGrid',\n  'hasLabels',\n  'hasPatterns',\n  'patternsDisabledBg',\n  'patternIds',\n  'hasTooltip',\n  'hasDots',\n  'dotRadius',\n  'innerRadius',\n  'strokeWidth',\n  'hasLegend',\n  'hasAxisLabels',\n  'xAxisDescription',\n  'yAxisDescription',\n  'isResponsive',\n  'bottomPadding',\n  'leftPadding',\n  'rightPadding',\n  'topPadding',\n];\n\n@Injectable({\n  providedIn: 'root'\n})\nexport abstract class BaseChart implements OnDestroy {\n  chartSelector;\n  svg;\n  xScale;\n  yScale;\n  rScale;\n  xAxis;\n  yAxis;\n  data;\n\n  chartProps = JSON.parse(JSON.stringify(DEFAULT_CHART_SETTINGS));\n  isFullScreen: boolean;\n  tableViewStatus: boolean;\n  chartInitParams: ChartsSettingProps;\n  isContainerReady: boolean;\n  generatedColors = [];\n\n  private chartWrap: HTMLElement;\n  private destroy = new Subject<void>();\n\n  constructor(params?: IConstParams) { }\n\n  static nullCheck(value): boolean {\n    return value !== undefined && value != null && !Number.isNaN(value);\n  }\n\n  static getValidValue<P, D>(param: P, defValue: D): P | D {\n    return BaseChart.nullCheck(param) ? param : defValue;\n  }\n\n  ngOnDestroy() {\n    this.removeListener();\n    this.destroy.next();\n    this.destroy.complete();\n  }\n\n  init(chartContainer: ElementRef<HTMLElement>): void {\n    this.setUniqChartSelector(chartContainer);\n  }\n\n  private setUniqChartSelector(chartContainer: ElementRef<HTMLElement>): void {\n    const uniqId = `chart-${generateId()}`;\n\n    chartContainer.nativeElement.setAttribute('id', uniqId);\n    this.chartSelector = `#${uniqId}`;\n    this.isContainerReady = true;\n  }\n\n  getProps(): ChartsSettingProps {\n    const resultObj = {};\n\n    fullPropsList.forEach((propName) => {\n      if (propName === 'data') {\n        resultObj['data'] = JSON.stringify(this.data, undefined, 2);\n      } else {\n        resultObj[propName] = this.chartProps[propName];\n      }\n    });\n\n    return <ChartsSettingProps>resultObj;\n  }\n\n  clearChart(selector?) {\n    if (selector) {\n      this.svg.selectAll(selector).selectAll('*').remove();\n    } else {\n      d3.selectAll(this.chartSelector).selectAll('*').remove();\n    }\n  }\n\n  setTooltips(d3obj, fieldName?, isObject = false) {\n    if (this.chartProps.hasTooltip) {\n      const { mouseover, mousemove, mouseleave, focus, blur } = this.getTooltipsEvents(fieldName, isObject);\n      d3obj\n        .on('mouseover', this.chartProps.hasTooltip ? mouseover : null)\n        .on('mousemove', this.chartProps.hasTooltip ? mousemove : null)\n        .on('mouseleave', this.chartProps.hasTooltip ? mouseleave : null)\n        .on('focus', this.chartProps.hasTooltip ? focus : null)\n        .on('blur', this.chartProps.hasTooltip ? blur : null);\n    }\n  }\n\n  getTooltipsEvents(fieldName?, isObject = false) {\n    const Tooltip = d3\n      .select(this.chartSelector)\n      .append('div')\n      .style('opacity', 0)\n      .attr('class', 'tooltip')\n      .attr('cursor', 'pointer')\n      .style('background-color', '#000')\n      .style('color', '#fff')\n      .style('padding', '7px 12px 9px')\n      .style('position', 'fixed')\n      .style('font-size', '12px')\n      .style('z-index', '1000');\n\n    const mouseover = () => {\n      Tooltip.style('opacity', 1);\n    };\n\n    const focus = (event, d) => {\n      const focusedElem = document.activeElement;\n      const html = isObject ? d[fieldName].value : d[fieldName];\n      const posEl = focusedElem.getBoundingClientRect();\n\n      Tooltip.html(`Exact value: ${html ? html : d}`)\n        .style('opacity', 1)\n        .style('left', posEl.left + 20 + 'px')\n        .style('top', posEl.top + 20 + 'px');\n    };\n\n    const mousemove = (event, d) => {\n      const html = isObject ? d[fieldName].value : d[fieldName];\n      Tooltip.html(`Exact value: ${html ? html : d}`)\n        .style('left', event.clientX + 20 + 'px')\n        .style('top', event.clientY + 'px');\n    };\n    const mouseleave = () => {\n      Tooltip.style('opacity', 0);\n    };\n\n    const blur = () => {\n      Tooltip.style('opacity', 0);\n    };\n\n    return { mouseover, mousemove, mouseleave, focus, blur };\n  }\n\n  setSvg() {\n    d3.select(this.chartSelector).selectAll('*').remove();\n\n    this.svg = d3\n      .select(this.chartSelector)\n      .append('svg')\n      .attr('width', this.chartProps.chartWidth)\n      .attr('height', this.chartProps.chartHeight + this.chartProps.bottomPadding);\n  }\n\n  setPropVal(propName, params: ChartsSettingProps) {\n    this.chartProps[propName] = BaseChart.getValidValue(params[propName], this.chartProps[propName]);\n  }\n\n  setPropsFromParams(params?: ChartsSettingProps): void {\n    if (!params) return;\n\n    returnedPropsList.forEach((propName) => {\n      if (propName === 'data') {\n        this.data = BaseChart.getValidValue(params.data ? JSON.parse(JSON.stringify(params.data)) : this.data, this.data);\n      } else {\n        this.setPropVal(propName, params);\n      }\n    });\n\n    if (!this.chartInitParams) {\n      this.chartInitParams = JSON.parse(JSON.stringify(this.chartProps));\n    }\n  }\n\n  calculateColors(service) {\n    this.chartProps.colors = service.calculate(this.chartProps.initColors.length > 1 ? this.data.length : 1, this.chartProps.initColors);\n  }\n\n  getSkeletonStyles(): void {\n    d3.select('.dds-chart__skeleton img').attr('width', this.chartProps.chartWidth);\n    d3.select('.dds-chart__skeleton img').attr('height', this.chartProps.chartHeight);\n  }\n\n  draw(params?: ChartsSettingProps): void {\n    if (params && !params.chartWidth) {\n      params.chartWidth = d3.select(this.chartSelector).node().offsetWidth;\n    }\n\n    if (this.chartProps.isResponsive) {\n      this.chartProps.chartWidth = parseInt(d3.select(this.chartSelector).style('width'), 10);\n    }\n    setTimeout(() => this.getSkeletonStyles(), 100);\n\n    this.setPropsFromParams(params);\n    this.setSvg();\n    this.addListener();\n\n    if (this.chartProps.xAxisDescription || this.chartProps.yAxisDescription) {\n      this.setDescriptionPadding();\n      this.chartProps.axisDescSpacing = this.chartInitParams.axisDescSpacing;\n    } else {\n      this.chartProps.axisDescSpacing = 0;\n    }\n  }\n\n  addPatterns(data, colors?: string[]): void {\n    const defs = this.svg.append('defs');\n    const colorsArray = colors || this.chartProps.colors;\n    const patterns = this.checkPatternsLength(DEFAULT_PATTERNS, data);\n\n    patterns.slice(0, data.length).forEach((item, index) => {\n      defs\n        .append('pattern')\n        .attr('id', 'pattern' + index)\n        .attr('patternUnits', 'userSpaceOnUse')\n        .attr('width', item.width)\n        .attr('height', item.height)\n        .append('rect')\n        .attr('class', 'pattern-bg')\n        .attr('width', item.width)\n        .attr('height', item.height)\n        .attr('fill', this.chartProps.patternsDisabledBg ? '#fff' : colorsArray[index]);\n\n      if (item.kind === EPatternKind.path) {\n        defs\n          .select('#pattern' + index)\n          .append(item.kind)\n          .attr('d', item.path)\n          .attr('stroke-width', item.strokeWidth)\n          .attr('stroke', '#343434')\n          .attr('fill', item.fill)\n          .style('opacity', 1);\n      } else {\n        defs\n          .select('#pattern' + index)\n          .append(item.kind)\n          .attr('cy', item.cy)\n          .attr('cx', item.cx)\n          .attr('r', item.r)\n          .attr('stroke-width', item.strokeWidth)\n          .attr('stroke', '#343434')\n          .attr('fill', item.fill)\n          .style('opacity', 1);\n      }\n    });\n  }\n\n  setDescriptionPadding(): void {\n    const minPadding = 80;\n    const padding = this.chartProps.padding || minPadding;\n\n    this.chartProps.padding = padding < minPadding ? minPadding : padding;\n  }\n\n  getChartItemFill(index: number, colors: string[], data = this.data, filtersHiddenColor = true, getColor?: boolean): string {\n    const genPatternIds = Array.from({ length: data.length }).map((_, i) => `pattern${i}`);\n    let patternIds = this.chartProps.patternIds?.length ? this.chartProps.patternIds : genPatternIds;\n\n    if (!this.generatedColors?.length) {\n      const numberOfNewColors = data.length;\n      const newColors = d3.scaleOrdinal(d3.schemeCategory10).domain(d3.range(numberOfNewColors)).range();\n\n      this.generatedColors = colors.concat(newColors);\n    }\n\n    let updColors = this.generatedColors;\n\n    if (filtersHiddenColor) {\n      patternIds = patternIds.filter((_, i) => !data[i]?.hidden);\n      updColors = updColors.filter((_, i) => !data[i]?.hidden);\n    }\n\n    const patternId = patternIds[index];\n\n    return this.chartProps.hasPatterns && !getColor ? `url(#${patternId})` : updColors[index];\n  }\n\n  toggleFullScreenMode(chartWrap: HTMLElement, params?: ChartsSettingProps): void {\n    this.chartWrap = chartWrap;\n    this.chartWrap.addEventListener('fullscreenchange', this.exitFullScreen);\n\n    if (!document.fullscreenElement) {\n      const fullScreenPadding = this.chartProps.fullScreenPadding * 2;\n\n      this.isFullScreen = true;\n      document.querySelector(this.chartSelector).classList.add('full-screen');\n      chartWrap.requestFullscreen();\n      chartWrap.classList.add('dds-chart_full-screen');\n      this.chartProps.chartWidth = document.documentElement.clientWidth - fullScreenPadding;\n      this.chartProps.chartHeight = document.documentElement.clientHeight;\n      this.draw();\n    } else if (document.exitFullscreen) {\n      this.exitFullScreen();\n    }\n  }\n\n  toggleTableView(): void {\n    this.tableViewStatus = !this.tableViewStatus;\n  }\n\n  setCustomColors(colors: string): string[] {\n    let colorsArray: string[] = [];\n    if (colors) {\n      colorsArray = colors.split(',');\n    }\n    return colorsArray;\n  }\n\n  initListManager(): void {\n    const focusableElements = this.svg.selectAll('[tabindex=\"0\"]').nodes();\n\n    focusableElements.forEach((item) => item.setAttribute('tabindex', '-1'));\n\n    const listManagerItems: IListManagerChartItem[] = focusableElements.map((element: HTMLElement) => ({\n      element,\n    }));\n    const keyManager = new ListManager(listManagerItems).withHomeAndEnd();\n\n    keyManager.change.pipe(takeUntil(this.destroy)).subscribe(() => {\n      if (keyManager.previousActiveItem) keyManager.previousActiveItem.element.blur();\n      if (keyManager.activeItem) {\n        keyManager.activeItem.element.focus();\n      }\n    });\n\n    d3.select(`${this.chartSelector} svg`).attr('role', 'listbox').attr('aria-label', 'Chart').attr('tabindex', 0);\n\n    document.querySelector(this.chartSelector).addEventListener('keydown', (event) => {\n      keyManager.onKeydown(event, false);\n    });\n\n    keyManager.tabOut.pipe(takeUntil(this.destroy)).subscribe(() => {\n      keyManager.setActiveItem(-1);\n    });\n  }\n\n  addLegend({ keys, checkHiddenFunc, mouseover, mouseleave, keydown, click, legendTitleFunc = (d) => d, data = this.data }): void {\n    const size = 20;\n    const legend = d3\n      .select(this.chartSelector)\n      .append('div')\n      .style('display', 'flex')\n      .attr('class', 'legend')\n      .attr('aria-label', 'Legend')\n      .attr('role', 'listbox');\n\n    const legendItem = legend\n      .selectAll('.legend__item')\n      .data(keys)\n      .enter()\n      .append('div')\n      .style('display', 'flex')\n      .attr('tabindex', '0')\n      .attr('data-index', (d, index) => index)\n      .attr('aria-label', (d) => d)\n      .attr('role', 'option')\n      .attr('role', 'option')\n      .attr('class', (d) => checkHiddenFunc(d))\n      .on('mouseover', mouseover)\n      .on('mouseleave', mouseleave)\n      .on('keydown', keydown)\n      .on('focus', mouseover)\n      .on('blur', mouseleave)\n      .on('click', click);\n\n    legendItem\n      .append('svg')\n      .style('width', size)\n      .style('height', size)\n      .append('rect')\n      .style('width', size)\n      .style('height', size)\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 3)\n      .style('fill', (d, i) => this.getChartItemFill(i, this.chartInitParams.initColors, data, false));\n    legendItem.append('div').attr('class', 'legend__title').html(legendTitleFunc);\n  }\n\n  legendUpdColors(data, params) {\n    const updData = JSON.parse(JSON.stringify(params));\n\n    updData.colors = updData.initColors.filter((item, i) => !data[i]?.hidden);\n\n    return updData;\n  }\n\n  legendKeyHandler(event: KeyboardEvent, itemLabel: string, func) {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n\n      func(event, itemLabel);\n    }\n\n    const dataIndex = (event.target as HTMLElement).dataset.index;\n    const focusedEl = document.querySelector(`${this.chartSelector} [data-index=\"${dataIndex}\"]`) as HTMLElement;\n\n    focusedEl.focus();\n  }\n\n  private checkPatternsLength(patterns, data): IChartPattern[] {\n    if (data.length > patterns.length) {\n      const result = data.length - patterns.length;\n\n      for (let i = 0; i < result; i++) {\n        patterns.push(patterns[i]);\n      }\n    }\n\n    return patterns;\n  }\n\n  private addListener() {\n    window.addEventListener('resize', this.responsiveChart);\n  }\n\n  private removeListener() {\n    window.removeEventListener('resize', this.responsiveChart);\n    this.chartWrap?.removeEventListener('fullscreenchange', this.exitFullScreen);\n  }\n\n  private responsiveChart = (): void => {\n    if (this.chartProps.isResponsive) {\n      this.draw();\n    }\n    this.getSkeletonStyles();\n  };\n\n  private exitFullScreen = (): void => {\n    if (!document.fullscreenElement && this.chartWrap) {\n      this.isFullScreen = false;\n      document.querySelector(this.chartSelector).classList.remove('full-screen');\n      this.chartWrap.classList.remove('dds-chart_full-screen');\n      this.chartProps.chartWidth = this.chartInitParams.chartWidth;\n      this.chartProps.chartHeight = this.chartInitParams.chartHeight;\n      this.draw(this.chartInitParams);\n    }\n  };\n}\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_AREA_CHART_ARIA_LABEL = 'Exact value';\nexport const DEFAULT_AREA_CHART_X_VALUE = 'time';\nexport const DEFAULT_AREA_CHART_BOTTOM_PADDING = 10;\nexport const DEFAULT_AREA_CHART_LEFT_PADDING = 30;\n\nexport const DEFAULT_AREA_CHART_DATA = [\n  {\n    time: 39,\n    valueA: 30,\n    valueB: 52,\n    valueC: 35,\n  },\n  {\n    time: 43,\n    valueA: 24,\n    valueB: 58,\n    valueC: 40,\n  },\n  {\n    time: 48,\n    valueA: 40,\n    valueB: 66,\n    valueC: 35,\n  },\n  {\n    time: 51,\n    valueA: 34,\n    valueB: 90,\n    valueC: 60,\n  },\n  {\n    time: 54,\n    valueA: 48,\n    valueB: 60,\n    valueC: 40,\n  },\n  {\n    time: 59,\n    valueA: 40,\n    valueB: 60,\n    valueC: 80,\n  },\n  {\n    time: 63,\n    valueA: 59,\n    valueB: 60,\n    valueC: 30,\n  },\n  {\n    time: 65,\n    valueA: 50,\n    valueB: 68,\n    valueC: 45,\n  },\n  {\n    time: 68,\n    valueA: 56,\n    valueB: 59,\n    valueC: 35,\n  },\n  {\n    time: 69,\n    valueA: 60,\n    valueB: 64,\n    valueC: 45,\n  },\n];\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'time', header: 'Time', dataType: TableDataTypes.number },\n  { name: 'valueA', header: 'Value A', dataType: TableDataTypes.number },\n  { name: 'valueB', header: 'Value B', dataType: TableDataTypes.number },\n  { name: 'valueC', header: 'Value C', dataType: TableDataTypes.number },\n];\n","import { Injectable } from '@angular/core';\nimport colorConvert from 'color-convert';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ColorService {\n  constructor() { }\n\n  // Adds two numbers\n  private plus(a, b) {\n    return a + b;\n  }\n\n  // Subtracts the second number from the first\n  private minus(a, b) {\n    return a - b;\n  }\n\n  // Generates pairs of colors from the input array\n  private getColorsPair(colors: string[]) {\n    if (colors.length <= 1) {\n      return;\n    }\n    const result = [];\n\n    for (let index = 1; index < colors.length; index++) {\n      result.push({\n        start: this.getHslObject(colors[index - 1]),\n        end: this.getHslObject(colors[index]),\n      });\n    }\n    return result;\n  }\n\n  // Converts a hex color to an HSL object\n  private getHslObject(color: string) {\n    const hsl = colorConvert.hex.hsl(color);\n    return {\n      h: hsl[0],\n      s: hsl[1],\n      l: hsl[2],\n    };\n  }\n\n  // Calculates the step size for color interpolation\n  private calculateStep(someStart, someEnd, iterations) {\n    const resultStart = someStart < someEnd ? someStart : someEnd;\n    const resultEnd = resultStart !== someEnd ? someEnd : someStart;\n    const step = (resultEnd - resultStart) / (iterations + 1);\n    const operator = someStart < someEnd ? 'plus' : 'minus';\n    return { step, operator };\n  }\n\n  // Generates an array of interpolated colors from color pairs\n  private getColorsFromPairs(colorPairs) {\n    const resultColors = [];\n    const lastCoolor = colorPairs[colorPairs.length - 1];\n\n    colorPairs.forEach((pair) => {\n      // calculate steps\n      if (pair.iterations) {\n        pair.step = {\n          h: this.calculateStep(pair.start.h, pair.end.h, pair.iterations),\n          s: this.calculateStep(pair.start.s, pair.end.s, pair.iterations),\n          l: this.calculateStep(pair.start.l, pair.end.l, pair.iterations),\n        };\n      }\n\n      resultColors.push([pair.start.h, pair.start.s, pair.start.l]);\n      for (let i = 1; i <= pair.iterations; i++) {\n        pair.start.h = this[pair.step.h.operator](pair.start.h, pair.step.h.step);\n        pair.start.s = this[pair.step.s.operator](pair.start.s, pair.step.s.step);\n        pair.start.l = this[pair.step.l.operator](pair.start.l, pair.step.l.step);\n        resultColors.push([pair.start.h, pair.start.s, pair.start.l]);\n      }\n    });\n\n    resultColors.push([lastCoolor.end.h, lastCoolor.end.s, lastCoolor.end.l]);\n    return resultColors;\n  }\n\n  // Generates a contrast color palette from the result colors\n  private getContrastColors(resultColors) {\n    const halfColorsCount = Math.round(resultColors.length / 2);\n    let halfStartIndex = Math.round(resultColors.length / 2);\n    let i = 0;\n\n    const contrastResult = [];\n\n    while (i < halfColorsCount) {\n      contrastResult.push(resultColors[i]);\n      if (resultColors[halfStartIndex]) {\n        contrastResult.push(resultColors[halfStartIndex]);\n      }\n      i++;\n      halfStartIndex++;\n    }\n    return contrastResult;\n  }\n\n  // Validates the inputs for the color calculation\n  private isValidCalculateInputs(requestedColorsCount, inputColors) {\n    return !(requestedColorsCount < 2 || inputColors.length === 1 || inputColors.length === requestedColorsCount);\n  }\n\n  // Main function to calculate the color palette\n  calculate(requestedColorsCount: number, inputColors: string[] | [] = [], isContrast = false): string[] {\n    if (!this.isValidCalculateInputs(requestedColorsCount, inputColors)) return inputColors;\n\n    const colorPairs = this.getColorsPair(inputColors);\n    const colorsLeft = +requestedColorsCount - inputColors.length;\n    const iterations = Math.floor(colorsLeft / colorPairs.length);\n    let remainders = colorsLeft % colorPairs.length;\n\n    // add full iterations\n    if (iterations) {\n      colorPairs.forEach((item) => {\n        item.iterations = iterations;\n        if (remainders) {\n          item.iterations += 1;\n          remainders--;\n        }\n      });\n    }\n\n    // add iterations by remainders\n    if (remainders) {\n      for (let i = 0; i < remainders; i++) {\n        colorPairs[i].iterations ? (colorPairs[i].iterations += 1) : (colorPairs[i].iterations = 1);\n      }\n    }\n\n    const colorsFromPairs = this.getColorsFromPairs(colorPairs);\n    const finalColors = isContrast ? this.getContrastColors(colorsFromPairs) : colorsFromPairs;\n\n    return finalColors.map((hslItem) => {\n      return '#' + colorConvert.hsl.hex(hslItem);\n    });\n  }\n}\n","import {Injectable} from '@angular/core';\nimport * as d3 from 'd3';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class ToolsService {\n    constructor() { }\n\n    static plus(a, b) { return a + b; }\n\n    static minus(a, b) { return a - b; }\n\n    static sort(a, b) {\n        if (a < b) {\n            return -1;\n        }\n        if (a > b) {\n            return 1;\n        }\n        return 0;\n    }\n\n    // noinspection JSMethodCanBeStatic\n    timeParse(value, pattern = '%Y') {\n        const parse = d3.timeParse(pattern);\n        return parse(value);\n    }\n\n    // noinspection JSMethodCanBeStatic\n    timeFormat(value, pattern = '%Y') {\n        const format = d3.timeFormat(pattern);\n        return format(value);\n    }\n\n    getDomain(data, fieldName, exclude = false) {\n        const domainSet = new Set();\n        if (exclude) {\n            data.forEach(item => {\n                Object.getOwnPropertyNames(item).forEach(propName => {\n                    if (propName !== fieldName) domainSet.add(item[propName]);\n                });\n            });\n        } else {\n            data.forEach(item => {\n                domainSet.add(item[fieldName]);\n            });\n        }\n\n\n        return Array.from(domainSet).sort(ToolsService.sort);\n    }\n\n    getGroups(someData: {\n        data: any[];\n        nonGroupNameFields: string[] | string;\n    }): string[] {\n\n        // get field's name collection\n        const groups = new Set();\n        someData.data.forEach(dataItem => {\n            Object.getOwnPropertyNames(dataItem)\n                .forEach(propName => {\n                    groups.add(propName);\n                });\n        });\n\n        // remove unnecessary names\n        if (Array.isArray(someData.nonGroupNameFields)) {\n            someData.nonGroupNameFields.forEach(fieldName => {\n                groups.delete(fieldName);\n            });\n        } else {\n            groups.delete(someData.nonGroupNameFields);\n        }\n\n        // @ts-ignore\n      return Array.from(groups);\n    }\n\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { ToolsService } from '../services/tools.service';\nimport { ChartOptions, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport {\n  DEFAULT_AREA_CHART_ARIA_LABEL,\n  DEFAULT_AREA_CHART_BOTTOM_PADDING,\n  DEFAULT_AREA_CHART_DATA,\n  DEFAULT_AREA_CHART_LEFT_PADDING,\n  DEFAULT_AREA_CHART_X_VALUE,\n  DEFAULT_TABLE_VIEW_COLUMNS,\n} from './contants';\nimport { AreaChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-area-chart',\n  templateUrl: './area-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class AreaChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() colors: string | undefined;\n  @Input() axisColor: string | undefined = DEFAULT_CHART_SETTINGS.axisColor;\n  @Input() xAxisDescription: string | undefined;\n  @Input() yAxisDescription: string | undefined;\n  @Input() xValue: string | undefined = DEFAULT_AREA_CHART_X_VALUE;\n  @Input() data: AreaChartData[] | undefined = DEFAULT_AREA_CHART_DATA;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() padding: number | undefined;\n  @Input() barPadding: number | undefined;\n  @Input() strokeWidth: number | undefined = 3;\n  @Input() hasX_Axis: boolean | undefined;\n  @Input() hasY_Axis: boolean | undefined;\n  @Input() bottomPadding: number | undefined = DEFAULT_AREA_CHART_BOTTOM_PADDING;\n  @Input() leftPadding: number | undefined = DEFAULT_AREA_CHART_LEFT_PADDING;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() hasLegend: boolean | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() ariaLabel: string | undefined = DEFAULT_AREA_CHART_ARIA_LABEL;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial colors and data\n  initColors = DEFAULT_CHART_COLORS;\n  initData: string[];\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService, protected toolsService: ToolsService) {\n    super();\n  }\n\n  // Variables for stacked data and groups\n  stackedData;\n  initStackedData;\n  groups;\n\n  // Lifecycle hook for after view initialization\n  ngAfterViewInit(): void {\n    this.init();\n    this.getGroups();\n    this.getStackedData();\n    this.initData = this.groups;\n    this.initStackedData = this.stackedData;\n    this.draw(this.getResultObj());\n  }\n\n  // Lifecycle hook for changes detection\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) {\n      this.initData = this.groups;\n      this.initStackedData = this.stackedData;\n      this.draw(this.getResultObj());\n    }\n  }\n\n  // Get the result object for chart options\n  getResultObj(): ChartOptions {\n    const resultObj = <any>{};\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n    return resultObj;\n  }\n\n  // Initialize the chart\n  init(): void {\n    super.init(this.chartContainer);\n    this.chartProps.strokeWidth = DEFAULT_CHART_SETTINGS.strokeWidth;\n  }\n\n  // Set the X scale for the chart\n  setX_Scale(): void {\n    this.xScale = d3\n      .scaleLinear()\n      .domain([d3.min(this.data.map((item) => item[this.xValue])), d3.max(this.data.map((item) => item[this.xValue]))])\n      .range([0, this.chartProps.chartWidth - this.chartProps.leftPadding]);\n  }\n\n  // Set the Y scale for the chart\n  setY_Scale(): void {\n    let total = 0;\n    this.yScale = d3\n      .scaleLinear()\n      .domain([\n        0,\n        d3.max(\n          this.data.map((item, index) => {\n            total += Number(item[this.groups[index + 1]]);\n            return total + 125;\n          })\n        ),\n      ])\n      .range([this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing, 0]);\n  }\n\n  // Get the groups for the chart\n  getGroups(): void {\n    this.groups = this.toolsService.getGroups({\n      data: this.data,\n      nonGroupNameFields: DEFAULT_AREA_CHART_X_VALUE,\n    });\n  }\n\n  // Get the stacked data for the chart\n  getStackedData(): void {\n    this.stackedData = d3.stack().keys(this.groups)(<any>this.data);\n  }\n\n  // Set the X axis for the chart\n  setX_Axis(): void {\n    const axis = d3\n      .axisBottom(this.xScale)\n      .ticks(10)\n      .tickFormat((d) => `'${d}`)\n      .tickSize(0);\n\n    this.xAxis = this.svg\n      .append('g')\n      .attr('class', 'x-axis')\n      .attr('transform', `translate(0,${this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing})`)\n      .style('color', this.axisColor)\n      .call(axis);\n  }\n\n  // Set the Y axis for the chart\n  setY_Axis(): void {\n    const axis = d3.axisLeft(this.yScale).ticks(5).tickSize(0);\n\n    this.yAxis = this.svg.append('g').attr('class', 'y-axis').style('font-size', 12).style('color', this.axisColor).call(axis);\n  }\n\n  // Set the legend for the chart\n  setLegend(): void {\n    const keys = [];\n\n    this.initData?.forEach((item) => {\n      keys.push(item);\n    });\n\n    const mouseover = (event, d) => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      const activeChartItem = document.querySelector<HTMLElement>(`${this.chartSelector} .chart__item__${d.replace(' ', '')}`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.6'));\n      if (activeChartItem) activeChartItem.style['opacity'] = '1';\n    };\n\n    const mouseleave = () => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.6'));\n    };\n\n    const click = (event, d) => {\n      this.initStackedData.forEach((item) => {\n        if (item.key === d) {\n          item.hidden = !item.hidden;\n        }\n      });\n\n      const enabledGroup = this.initStackedData.filter((item) => !item.hidden).map((item) => item.key);\n      const updParams = this.legendUpdColors(this.initStackedData, this.getResultObj());\n\n      this.stackedData = d3.stack().keys(enabledGroup)(this.data);\n      this.draw(updParams, false);\n    };\n\n    const keydown = (event, itemLabel) => {\n      this.legendKeyHandler(event, itemLabel, click);\n    };\n\n    const checkHiddenFunc = (d) => {\n      const item = this.initStackedData.find((item) => item.key === d);\n      return item.hidden ? 'legend__item legend__item_active' : 'legend__item';\n    };\n\n    this.addLegend({\n      keys,\n      checkHiddenFunc,\n      mouseover,\n      mouseleave,\n      keydown,\n      click,\n      data: this.initStackedData,\n    });\n  }\n\n  // Set the layers for the chart\n  setLayers(): void {\n    this.svg\n      .selectAll('.fillLayer')\n      .append('g')\n      .attr('class', 'fillLayer')\n      .data(this.stackedData.filter((item) => !item.hidden))\n      .enter()\n      .append('path')\n      .attr('fill', (d, i) => this.getChartItemFill(i, this.chartProps.colors, this.initStackedData))\n      .style('opacity', 0.6)\n      .attr('class', (d) => `chart__item chart__item__${d.key}`)\n      .attr(\n        'd',\n        d3\n          .area()\n          .x((d: any) => this.xScale(d.data[this.xValue]))\n          .y0((d) => this.yScale(d[0]))\n          .y1((d) => this.yScale(d[1]))\n      );\n  }\n\n  // Set the lines for the chart\n  setLines(): void {\n    this.svg\n      .selectAll('.myLines')\n      .append('g')\n      .attr('class', 'myLines')\n      .data(this.stackedData.filter((item) => !item.hidden))\n      .enter()\n      .append('path')\n      .style('fill', 'transparent')\n      .attr('stroke-width', this.chartProps.strokeWidth)\n      .attr('stroke', (d, i) =>\n        this.chartProps.patternsDisabledBg ? '#000' : this.getChartItemFill(i, this.chartProps.initColors, this.initStackedData, true, true)\n      )\n      .attr(\n        'd',\n        d3\n          .line<any>()\n          .x((d) => this.xScale(d.data[this.xValue]))\n          .y((d) => this.yScale(d[1]))\n      );\n  }\n\n  // Set the dots for the chart\n  setDots(): void {\n    this.clearChart('.myDots');\n    const dots = this.svg\n      .append('g')\n      .selectAll('.myDots')\n      .data(this.stackedData.filter((item) => !item.hidden))\n      .enter()\n      .append('g')\n      .attr('class', 'myDots')\n      .attr('fill', (d, i) =>\n        this.chartProps.patternsDisabledBg ? '#000' : this.getChartItemFill(i, this.chartProps.initColors, this.initStackedData, true, true)\n      )\n      .selectAll('.myPoints')\n      .data((values) => values)\n      .enter()\n      .append('circle')\n      .attr('class', 'myPoints')\n      .attr('role', 'option')\n      .attr('cx', (d) => this.xScale(d.data[this.xValue]))\n      .attr('cy', (d) => this.yScale(d[1]))\n      .attr('r', 2)\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d.data[this.xValue] + ' ' + d[1])\n      .style('border-radius', '50%');\n\n    this.setTooltips(dots, '1');\n  }\n\n  // Draw the chart\n  draw(params?: ChartOptions, update = true): void {\n    super.draw(params);\n    if (this.isLoading) return;\n\n    this.svg = this.svg.append('g').attr('transform', `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing},0)`);\n\n    this.getGroups();\n    if (update) this.getStackedData();\n\n    this.chartProps.colors = this.colorsService.calculate(this.groups.length, this.chartProps.initColors);\n\n    this.setX_Scale();\n    this.setY_Scale();\n\n    this.chartProps.hasX_Axis && this.setX_Axis();\n    this.chartProps.hasY_Axis && this.setY_Axis();\n\n    this.setLayers();\n    this.setLines();\n    this.setDots();\n    this.chartProps.hasLabels && this.setLabels();\n    this.chartProps.hasPatterns && this.addPatterns(this.initStackedData);\n    this.chartProps.hasLegend && this.setLegend();\n    this.addAxisDescription();\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Set the labels for the chart\n  private setLabels(): void {\n    const labelXSpacing = 3;\n    const labelYSpacing = 5;\n\n    this.svg\n      .append('g')\n      .selectAll('.myLabels')\n      .data(this.stackedData.filter((item) => !item.hidden))\n      .enter()\n      .append('g')\n      .selectAll('.myPoints')\n      .data((values) => values)\n      .enter()\n      .append('text')\n      .attr('class', 'myLabels')\n      .attr('x', (d) => this.xScale(d.data[this.xValue]) + labelXSpacing)\n      .text((d) => d[1] - d[0])\n      .attr('y', (d) => this.yScale(d[1] + labelYSpacing))\n      .attr('font-size', 13)\n      .attr('text-anchor', 'start');\n  }\n\n  // Add axis descriptions to the chart\n  private addAxisDescription(): void {\n    const xPadding = this.bottomPadding || 0;\n    const yAxisSpacing = 40;\n\n    if (this.xAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'x-axis-description')\n        .attr('transform', 'translate(' + this.chartProps.chartWidth / 2 + ',' + (this.chartProps.chartHeight + xPadding / 2) + ')')\n        .style('text-anchor', 'middle')\n        .text(this.xAxisDescription);\n    }\n\n    if (this.yAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'y-axis-description')\n        .attr('transform', 'rotate(-90)')\n        .attr('y', -55)\n        .attr('x', 0 - (this.chartProps.chartHeight / 2 - yAxisSpacing))\n        .attr('dy', '1em')\n        .style('text-anchor', 'middle')\n        .text(this.yAxisDescription);\n    }\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_area-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"data\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_STROKE_WIDTH = 2;\nexport const DEFAULT_TICK_SIZE = 8;\nexport const DEFAULT_AREA_STACKED_CHART_ARIA_LABEL = 'Exact value';\nexport const DEFAULT_AREA_CHART_X_VALUE = 'time';\nexport const DEFAULT_AREA_STACKED_CHART_BOTTOM_PADDING = 10;\nexport const DEFAULT_AREA_STACKED_CHART_LEFT_PADDING = 40;\nexport const DEFAULT_AREA_STACKED_CHART_DATA = [\n  {\n    time: 1,\n    valueA: 25,\n    valueB: 25,\n    valueC: 25,\n    valueD: 25,\n  },\n  {\n    time: 2,\n    valueA: 25,\n    valueB: 30,\n    valueC: 20,\n    valueD: 25,\n  },\n  {\n    time: 3,\n    valueA: 7,\n    valueB: 23,\n    valueC: 35,\n    valueD: 35,\n  },\n  {\n    time: 4,\n    valueA: 25,\n    valueB: 26,\n    valueC: 24,\n    valueD: 25,\n  },\n  {\n    time: 5,\n    valueA: 11,\n    valueB: 39,\n    valueC: 27,\n    valueD: 23,\n  },\n];\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'time', header: 'Time', dataType: TableDataTypes.number },\n  { name: 'valueA', header: 'Value A', dataType: TableDataTypes.number },\n  { name: 'valueB', header: 'Value B', dataType: TableDataTypes.number },\n  { name: 'valueC', header: 'Value C', dataType: TableDataTypes.number },\n  { name: 'valueD', header: 'Value D', dataType: TableDataTypes.number },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { ToolsService } from '../services/tools.service';\nimport { ChartOptions, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport {\n  DEFAULT_AREA_CHART_X_VALUE,\n  DEFAULT_AREA_STACKED_CHART_ARIA_LABEL,\n  DEFAULT_AREA_STACKED_CHART_BOTTOM_PADDING,\n  DEFAULT_AREA_STACKED_CHART_DATA,\n  DEFAULT_AREA_STACKED_CHART_LEFT_PADDING,\n  DEFAULT_STROKE_WIDTH,\n  DEFAULT_TABLE_VIEW_COLUMNS,\n  DEFAULT_TICK_SIZE,\n} from './constants';\nimport { AreaStackedChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-area-stacked-chart',\n  templateUrl: './area-stacked-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class AreaStackedChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    // Redraw the chart when exiting fullscreen mode\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() data: AreaStackedChartData[] = DEFAULT_AREA_STACKED_CHART_DATA;\n  @Input() colors: string | undefined;\n  @Input() axisColor: string = DEFAULT_CHART_SETTINGS.axisColor;\n  @Input() xAxisDescription: string | undefined;\n  @Input() yAxisDescription: string | undefined;\n  @Input() xValue: string | undefined = DEFAULT_AREA_CHART_X_VALUE;\n  @Input() strokeWidth: number | undefined = DEFAULT_STROKE_WIDTH;\n  @Input() tickSize: number | undefined = DEFAULT_TICK_SIZE;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() bottomPadding: number | undefined = DEFAULT_AREA_STACKED_CHART_BOTTOM_PADDING;\n  @Input() leftPadding: number | undefined = DEFAULT_AREA_STACKED_CHART_LEFT_PADDING;\n  @Input() hasX_Axis: boolean | undefined;\n  @Input() hasY_Axis: boolean | undefined;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() hasLegend: boolean | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() ariaLabel: string | undefined = DEFAULT_AREA_STACKED_CHART_ARIA_LABEL;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial chart properties\n  initColors: string[] = DEFAULT_CHART_COLORS;\n  initData: string[];\n  groups: string[];\n  stackedData;\n  initStackedData;\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService, protected toolsService: ToolsService) {\n    super();\n  }\n\n  // Lifecycle hook to initialize the chart after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.getGroups();\n    this.getStackedData();\n    this.initData = this.groups;\n    this.initStackedData = this.stackedData;\n    this.draw(this.getResultObj());\n  }\n\n  // Lifecycle hook to handle changes to input properties\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) {\n      this.initData = this.groups;\n      this.initStackedData = this.stackedData;\n      this.draw(this.getResultObj());\n    }\n  }\n\n  // Initialize the chart properties\n  init(): void {\n    super.init(this.chartContainer);\n    this.chartProps.strokeWidth = this.strokeWidth;\n  }\n\n  // Draw the chart with the given parameters\n  draw(params?: ChartOptions, update = true): void {\n    super.draw(params);\n    if (this.isLoading) return;\n\n    this.svg = this.svg.append('g').attr('transform', `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing},5)`);\n\n    this.getGroups();\n    if (update) this.getStackedData();\n\n    this.chartProps.colors = this.colorsService.calculate(this.groups.length, this.chartProps.initColors);\n\n    this.setX_Scale();\n    this.setY_Scale();\n\n    this.chartProps.hasX_Axis && this.setX_Axis();\n    this.chartProps.hasY_Axis && this.setY_Axis();\n\n    this.setLayers();\n    this.setLines();\n    this.setDots();\n    this.chartProps.hasLabels && this.setLabels();\n    this.chartProps.hasPatterns && this.addPatterns(this.initStackedData);\n    this.chartProps.hasLegend && this.setLegend();\n    this.addAxisDescription();\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Get the result object with chart options\n  private getResultObj(): ChartOptions {\n    const resultObj = <ChartOptions>{};\n\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n\n    return resultObj;\n  }\n\n  // Set the X scale for the chart\n  private setX_Scale(): void {\n    this.xScale = d3\n      .scaleLinear()\n      .domain([\n        d3.min(\n          this.data.map((item) => {\n            const objKeys = Object.keys(item);\n            return item[objKeys[0]];\n          })\n        ),\n        d3.max(\n          this.data.map((item) => {\n            const objKeys = Object.keys(item);\n            return item[objKeys[0]];\n          })\n        ),\n      ])\n      .range([0, this.chartProps.chartWidth - this.chartProps.leftPadding]);\n  }\n\n  // Set the Y scale for the chart\n  private setY_Scale(): void {\n    this.yScale = d3\n      .scaleLinear()\n      .domain([\n        0,\n        d3.max(\n          this.data.map((item) => {\n            let result = 0;\n\n            Object.keys(item).forEach((key, index) => {\n              if (index > 0) {\n                result += item[key];\n              }\n            });\n\n            return result;\n          })\n        ),\n      ])\n      .range([this.chartProps.chartHeight - this.chartProps.bottomPadding - (this.xAxisDescription ? 30 : 5), 0]);\n  }\n\n  // Get the groups for the chart data\n  private getGroups(): void {\n    this.groups = this.toolsService.getGroups({\n      data: this.data,\n      nonGroupNameFields: DEFAULT_AREA_CHART_X_VALUE,\n    });\n  }\n\n  // Get the stacked data for the chart\n  private getStackedData(): void {\n    this.stackedData = d3.stack().keys(this.groups)(this.data);\n  }\n\n  // Set the X axis for the chart\n  private setX_Axis(): void {\n    const axis = d3\n      .axisBottom(this.xScale)\n      .ticks(this.data.length)\n      .tickFormat((d) => d)\n      .tickSize(this.tickSize);\n\n    this.xAxis = this.svg\n      .append('g')\n      .attr('class', 'x-axis')\n      .attr('transform', `translate(0,${this.chartProps.chartHeight - this.chartProps.bottomPadding - (this.xAxisDescription ? 30 : 5)})`)\n      .style('font-size', 12)\n      .style('text-anchor', 'end')\n      .style('color', this.axisColor)\n      .call(axis);\n  }\n\n  // Set the Y axis for the chart\n  private setY_Axis(): void {\n    const axis = d3.axisLeft(this.yScale).ticks(this.data.length).tickSize(this.tickSize);\n\n    this.yAxis = this.svg.append('g').attr('class', 'y-axis').style('font-size', 12).style('color', this.axisColor).call(axis);\n  }\n\n  // Set the legend for the chart\n  setLegend(): void {\n    const keys = [];\n\n    this.initData?.forEach((item) => {\n      keys.push(item);\n    });\n\n    const mouseover = (event, d) => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      const activeChartItem = document.querySelector<HTMLElement>(`${this.chartSelector} .chart__item__${d.replace(' ', '')}`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.6'));\n      if (activeChartItem) activeChartItem.style['opacity'] = '1';\n    };\n\n    const mouseleave = () => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.6'));\n    };\n\n    const click = (event, d) => {\n      this.initStackedData.forEach((item) => {\n        if (item.key === d) {\n          item.hidden = !item.hidden;\n        }\n      });\n\n      const enabledGroup = this.initStackedData.filter((item) => !item.hidden).map((item) => item.key);\n      const updParams = this.legendUpdColors(this.initStackedData, this.getResultObj());\n\n      this.stackedData = d3.stack().keys(enabledGroup)(this.data);\n      this.draw(updParams, false);\n    };\n\n    const keydown = (event, itemLabel) => {\n      this.legendKeyHandler(event, itemLabel, click);\n    };\n\n    const checkHiddenFunc = (d) => {\n      const item = this.initStackedData.find((item) => item.key === d);\n      return item.hidden ? 'legend__item legend__item_active' : 'legend__item';\n    };\n\n    this.addLegend({\n      keys,\n      checkHiddenFunc,\n      mouseover,\n      mouseleave,\n      keydown,\n      click,\n      data: this.initStackedData,\n    });\n  }\n\n  // Set the layers for the chart\n  private setLayers(): void {\n    this.svg\n      .selectAll('.fillLayer')\n      .data(this.stackedData.filter((item) => !item.hidden))\n      .enter()\n      .append('path')\n      .attr('fill', (d, i) => this.getChartItemFill(i, this.chartProps.colors, this.initStackedData))\n      .style('opacity', this.strokeWidth ? 0.6 : 1)\n      .attr('class', (d) => `chart__item chart__item__${d.key}`)\n      .attr(\n        'd',\n        d3\n          .area()\n          .x((d: any) => this.xScale(d.data[this.xValue]))\n          .y0((d) => this.yScale(d[0]))\n          .y1((d) => this.yScale(d[1]))\n      );\n  }\n\n  // Set the lines for the chart\n  private setLines(): void {\n    this.svg\n      .selectAll('.myLines')\n      .append('g')\n      .attr('class', 'myLines')\n      .data(this.stackedData.filter((item) => !item.hidden))\n      .enter()\n      .append('path')\n      .style('fill', 'transparent')\n      .attr('stroke-width', this.strokeWidth)\n      .attr('stroke', (d, i) =>\n        this.chartProps.patternsDisabledBg ? '#000' : this.getChartItemFill(i, this.chartProps.initColors, this.initStackedData, true, true)\n      )\n      .attr(\n        'd',\n        d3\n          .line<any>()\n          .x((d) => this.xScale(d.data[this.xValue]))\n          .y((d) => this.yScale(d[1]))\n      );\n  }\n\n  // Set the dots for the chart\n  private setDots(): void {\n    this.clearChart('.myDots');\n    const dots = this.svg\n      .append('g')\n      .selectAll('.myDots')\n      .data(this.stackedData.filter((item) => !item.hidden))\n      .enter()\n      .append('g')\n      .attr('class', 'myDots')\n      .attr('fill', (d, i) =>\n        this.chartProps.patternsDisabledBg ? '#000' : this.getChartItemFill(i, this.chartProps.initColors, this.initStackedData, true, true)\n      )\n      .selectAll('.myPoints')\n      .data((values) => values)\n      .enter()\n      .append('circle')\n      .attr('class', 'myPoints')\n      .attr('cx', (d) => this.xScale(d.data[this.xValue]))\n      .attr('cy', (d) => this.yScale(d[1]))\n      .attr('r', 2)\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('role', 'option')\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d.data[this.xValue] + ' ' + d[1])\n      .style('border-radius', '50%');\n\n    this.setTooltips(dots, '1');\n  }\n\n  // Set the labels for the chart\n  private setLabels(): void {\n    const labelXSpacing = 3;\n    const labelYSpacing = 7;\n\n    this.svg\n      .append('g')\n      .selectAll('.myLabels')\n      .data(this.stackedData.filter((item) => !item.hidden))\n      .enter()\n      .append('g')\n      .selectAll('.myPoints')\n      .data((values) => values)\n      .enter()\n      .append('text')\n      .attr('class', 'myLabels')\n      .text((d) => d.data[this.xValue])\n      .attr('x', (d) => this.xScale(d.data[this.xValue]) + labelXSpacing)\n      .attr('y', (d) => this.yScale(d[1]) - labelYSpacing)\n      .attr('font-size', 13)\n      .attr('text-anchor', 'start');\n  }\n\n  // Add axis descriptions to the chart\n  private addAxisDescription(): void {\n    const xPadding = this.bottomPadding || 0;\n    const xAxisSpacing = -5;\n    const yAxisSpacing = 40;\n\n    if (this.xAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'x-axis-description')\n        .attr(\n          'transform',\n          'translate(' + this.chartProps.chartWidth / 2 + ',' + (this.chartProps.chartHeight + xAxisSpacing + xPadding / 2) + ')'\n        )\n        .style('text-anchor', 'middle')\n        .text(this.xAxisDescription);\n    }\n\n    if (this.yAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'y-axis-description')\n        .attr('transform', 'rotate(-90)')\n        .attr('y', -55)\n        .attr('x', 0 - (this.chartProps.chartHeight / 2 - yAxisSpacing))\n        .attr('dy', '1em')\n        .style('text-anchor', 'middle')\n        .text(this.yAxisDescription);\n    }\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_area-stacked-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div class=\"dds-area-stacked-chart\"\n  #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"data\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_BAR_CHART_ARIA_LABEL = 'Exact value';\nexport const DEFAULT_BAR_CHART_X_VALUE = 'name';\nexport const DEFAULT_BAR_CHART_Y_VALUE = 'value';\nexport const DEFAULT_BAR_CHART_BOTTOM_PADDING = 15;\nexport const DEFAULT_BAR_CHART_LEFT_PADDING = 20;\n\nexport const DEFAULT_BAR_CHART_DATA = [\n  {\n    name: 'Production',\n    value: 1,\n  },\n  {\n    name: 'Staging',\n    value: 2,\n  },\n  {\n    name: 'QA',\n    value: 1,\n  },\n  {\n    name: 'DEV',\n    value: 3,\n  },\n  {\n    name: 'UAT',\n    value: 4,\n  },\n];\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'name', header: 'Name', dataType: TableDataTypes.string },\n  { name: 'value', header: 'Value', dataType: TableDataTypes.number },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport {\n  DEFAULT_BAR_CHART_ARIA_LABEL,\n  DEFAULT_BAR_CHART_BOTTOM_PADDING,\n  DEFAULT_BAR_CHART_DATA,\n  DEFAULT_BAR_CHART_LEFT_PADDING,\n  DEFAULT_BAR_CHART_X_VALUE,\n  DEFAULT_BAR_CHART_Y_VALUE,\n  DEFAULT_TABLE_VIEW_COLUMNS,\n} from './constants';\nimport { BarChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-bar-chart',\n  templateUrl: './bar-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class BarChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() colors: string | undefined;\n  @Input() axisColor: string | undefined = DEFAULT_CHART_SETTINGS.axisColor;\n  @Input() xAxisDescription: string | undefined;\n  @Input() yAxisDescription: string | undefined;\n  @Input() bottomPadding: number | undefined = DEFAULT_BAR_CHART_BOTTOM_PADDING;\n  @Input() leftPadding: number | undefined = DEFAULT_BAR_CHART_LEFT_PADDING;\n  @Input() data: BarChartData[] | undefined = DEFAULT_BAR_CHART_DATA;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() xValue: string | undefined = DEFAULT_BAR_CHART_X_VALUE;\n  @Input() yValue: string | undefined = DEFAULT_BAR_CHART_Y_VALUE;\n  @Input() barPadding: number | undefined;\n  @Input() hasGrid: boolean | undefined;\n  @Input() hasX_Axis: boolean | undefined;\n  @Input() hasY_Axis: boolean | undefined;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasLegend: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() ariaLabel: string | undefined = DEFAULT_BAR_CHART_ARIA_LABEL;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial colors and data for the chart\n  initColors = DEFAULT_CHART_COLORS;\n  initData: BarChartData[];\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService) {\n    super();\n  }\n\n  // Lifecycle hook to initialize the chart after the view is initialized\n  ngAfterViewInit() {\n    this.init();\n    this.initData = this.data;\n    this.draw(this.getResultObj());\n  }\n\n  // Lifecycle hook to handle changes to input properties\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) {\n      this.initData = this.data;\n      this.draw(this.getResultObj());\n    }\n  }\n\n  // Initialize the chart\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Set the X-axis for the chart\n  setX_Axis(): void {\n    const axis = d3\n      .axisBottom(this.xScale)\n      .tickFormat((d) => `${d}`)\n      .tickPadding(10)\n      .tickSizeInner(10)\n      .tickSizeOuter(0);\n\n    this.xAxis = this.svg\n      .append('g')\n      .attr('class', 'x-axis')\n      .attr(\n        'transform',\n        `translate(\n          ${0 - this.chartProps.axisDescSpacing / 2},\n          ${this.chartProps.chartHeight - this.bottomPadding - this.chartProps.axisDescSpacing + this.getLabelSpacing()})`\n      )\n      .interrupt()\n      .style('color', this.axisColor)\n      .transition()\n      .call(axis);\n  }\n\n  // Set the Y-axis for the chart\n  setY_Axis(): void {\n    const axis = d3\n      .axisLeft(this.yScale)\n      .tickFormat((d) => `${d}`)\n      .tickPadding(10)\n      .ticks(5);\n\n    if (this.chartProps.hasGrid) axis.tickSize(this.chartProps.leftPadding / 2 - this.chartProps.chartWidth);\n\n    this.yAxis = this.svg\n      .append('g')\n      .attr('class', 'y-axis')\n      .attr('transform', `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing},${this.getLabelSpacing()})`)\n      .style('color', this.axisColor)\n      .transition()\n      .call(axis);\n    !this.chartProps.hasY_Axis && this.yAxis.select('.domain').remove();\n  }\n\n  // Set the Y-scale for the chart\n  setY_Scale(): void {\n    this.yScale = d3\n      .scaleLinear()\n      .domain([0, d3.max(this.data.map((item) => item[this.yValue]))])\n      .range([this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing, 5]);\n  }\n\n  // Set the X-scale for the chart\n  setX_Scale(): void {\n    this.xScale = d3\n      .scaleBand()\n      .domain(this.data.filter((item) => !item.hidden).map((item) => item[this.xValue]))\n      .rangeRound([\n        this.chartProps.leftPadding + this.chartProps.axisDescSpacing,\n        this.chartProps.chartWidth + this.chartProps.axisDescSpacing,\n      ])\n      .paddingInner(this.chartProps.barPadding);\n  }\n\n  // Set the bars for the chart\n  setBars(): void {\n    const getY = (d) => this.yScale(d[this.yValue]) + this.getLabelSpacing();\n    const getHeight = (d) => this.yScale(0) - this.yScale(d[this.yValue]);\n\n    this.clearChart('.myBars');\n\n    const bars = this.svg\n      .append('g')\n      .attr('class', 'myBars')\n      .selectAll('rect')\n      .data(this.data.filter((item) => !item.hidden))\n      .enter()\n      .append('rect')\n      .attr('x', (d) => this.xScale(d[this.xValue]))\n      .attr('width', this.xScale.bandwidth() - this.chartProps.axisDescSpacing)\n      .attr('y', getY)\n      .attr('height', getHeight)\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('class', (d) => `chart__item chart__item__${d[this.xValue]}`)\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d[this.yValue])\n      .attr('role', 'option')\n      .attr('fill', (d, i) => this.getChartItemFill(i, this.chartProps.colors))\n      .attr('y', getY)\n      .attr('height', getHeight)\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2);\n\n    this.setTooltips(bars, this.yValue);\n  }\n\n  // Set the legend for the chart\n  setLegend(): void {\n    const keys = [];\n\n    this.initData.forEach((item) => {\n      keys.push(item[this.xValue]);\n    });\n\n    const mouseover = (event, d) => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      const activeChartItem = document.querySelector<HTMLElement>(`${this.chartSelector} .chart__item__${d}`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.5'));\n      if (activeChartItem) activeChartItem.style['opacity'] = '1';\n    };\n\n    const mouseleave = () => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '1'));\n    };\n\n    const click = (event, d) => {\n      this.data.forEach((item, index) => {\n        if (item[this.xValue] === d) {\n          item.hidden = !item.hidden;\n        }\n      });\n\n      const updParams = this.legendUpdColors(this.data, this.getResultObj());\n\n      this.draw(updParams);\n    };\n\n    const keydown = (event, itemLabel) => {\n      this.legendKeyHandler(event, itemLabel, click);\n    };\n\n    const checkHiddenFunc = (d) => {\n      const item = this.data.find((item) => item[this.xValue] === d);\n      return item.hidden ? 'legend__item legend__item_active' : 'legend__item';\n    };\n\n    this.addLegend({\n      keys,\n      checkHiddenFunc,\n      mouseover,\n      mouseleave,\n      keydown,\n      click,\n    });\n  }\n\n  // Set the labels for the chart\n  setLabels(): void {\n    const getX = (d) => this.xScale(d[this.xValue]) + this.xScale.bandwidth() / 2;\n    const getY = (d) => this.yScale(d[this.yValue]) - 10 + this.getLabelSpacing();\n    const getText = (d) => d[this.yValue];\n\n    this.svg\n      .append('g')\n      .selectAll('.myLabels')\n      .data(this.data.filter((item) => !item.hidden))\n      .enter()\n      .append('text')\n      .attr('class', 'myLabels')\n      .text(getText)\n      .attr('x', getX)\n      .attr('y', getY)\n      .attr('font-size', 14)\n      .attr('fill', '#000')\n      .attr('text-anchor', 'middle');\n  }\n\n  // Get the result object for the chart\n  getResultObj() {\n    const resultObj = <any>{};\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n    return resultObj;\n  }\n\n  // Draw the chart with the given parameters\n  draw(params?): void {\n    super.draw(params);\n    const svgHeight = Number(this.svg.attr('height'));\n\n    if (this.isLoading) return;\n\n    this.svg.attr('height', svgHeight + this.getLabelSpacing());\n    this.calculateColors(this.colorsService);\n    this.setX_Scale();\n    this.setY_Scale();\n    this.chartProps.hasX_Axis && this.setX_Axis();\n    (this.chartProps.hasY_Axis || this.chartProps.hasGrid) && this.setY_Axis();\n    this.setBars();\n    this.chartProps.hasLabels && this.setLabels();\n    this.chartProps.hasPatterns && this.addPatterns(this.data);\n    this.chartProps.hasLegend && this.setLegend();\n    this.addAxisDescription();\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Add axis descriptions to the chart\n  private addAxisDescription(): void {\n    const xPadding = this.bottomPadding || 0;\n\n    if (this.xAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'x-axis-description')\n        .attr('transform', 'translate(' + this.chartProps.chartWidth / 2 + ',' + (this.chartProps.chartHeight + xPadding / 2) + ')')\n        .style('text-anchor', 'middle')\n        .text(this.xAxisDescription);\n    }\n\n    if (this.yAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'y-axis-description')\n        .attr('transform', 'rotate(-90)')\n        .attr('y', 0)\n        .attr('x', 0 - this.chartProps.chartHeight / 2)\n        .attr('dy', '1em')\n        .style('text-anchor', 'middle')\n        .text(this.yAxisDescription);\n    }\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n\n  // Get the spacing for labels\n  private getLabelSpacing(): number {\n    return this.hasLabels ? 20 : 0;\n  }\n}\n","<div class=\"dds-chart dds-chart_bar-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"data\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_CIRCLE_OPACITY = 0.7;\nexport const DEFAULT_BUBBLE_CHART_BOTTOM_PADDING = 10;\nexport const DEFAULT_BUBBLE_CHART_LEFT_PADDING = 30;\nexport const DEFAULT_X_AXIS_PROP = 'gdpPercent';\nexport const DEFAULT_Y_AXIS_PROP = 'lifeExp';\nexport const DEFAULT_CIRCLE_RADIUS_PROP = 'pop';\nexport const DEFAULT_VALUE_PROP = 'country';\nexport const DEFAULT_BUBBLE_CHART_ARIA_LABEL = 'Exact value';\nexport const DEFAULT_BUBBLE_CHART_DATA = [\n  {\n    country: 'Albania',\n    lifeExp: 73.828,\n    pop: 931,\n    gdpPercent: 89.58,\n  },\n  {\n    country: 'Bolivia',\n    lifeExp: 63.828,\n    pop: 333,\n    gdpPercent: 19.58,\n  },\n  {\n    country: 'Cameroon',\n    lifeExp: 53.828,\n    pop: 617,\n    gdpPercent: 49.58,\n  },\n  {\n    country: 'New Zealand',\n    lifeExp: 83.828,\n    pop: 418,\n    gdpPercent: 79.58,\n  },\n];\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'country', header: 'Country', dataType: TableDataTypes.string },\n  { name: 'lifeExp', header: 'Life Exp', dataType: TableDataTypes.number },\n  { name: 'pop', header: 'Population', dataType: TableDataTypes.number },\n  { name: 'gdpPercent', header: 'GDP Percent', dataType: TableDataTypes.number },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { ToolsService } from '../services/tools.service';\nimport { ChartOptions, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport {\n  DEFAULT_BUBBLE_CHART_ARIA_LABEL,\n  DEFAULT_BUBBLE_CHART_BOTTOM_PADDING,\n  DEFAULT_BUBBLE_CHART_DATA,\n  DEFAULT_BUBBLE_CHART_LEFT_PADDING,\n  DEFAULT_CIRCLE_OPACITY,\n  DEFAULT_CIRCLE_RADIUS_PROP,\n  DEFAULT_TABLE_VIEW_COLUMNS,\n  DEFAULT_VALUE_PROP,\n  DEFAULT_X_AXIS_PROP,\n  DEFAULT_Y_AXIS_PROP,\n} from './constants';\nimport { BubbleChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-bubble-chart',\n  templateUrl: './bubble-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class BubbleChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    // Redraw the chart when exiting fullscreen mode\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() data: BubbleChartData[] = DEFAULT_BUBBLE_CHART_DATA;\n  @Input() colors: string | undefined;\n  @Input() axisColor: string | undefined = DEFAULT_CHART_SETTINGS.axisColor;\n  @Input() xAxisDescription: string | undefined;\n  @Input() yAxisDescription: string | undefined;\n  @Input() bottomPadding: number | undefined = DEFAULT_BUBBLE_CHART_BOTTOM_PADDING;\n  @Input() leftPadding: number | undefined = DEFAULT_BUBBLE_CHART_LEFT_PADDING;\n  @Input() xAxisProp: string | undefined = DEFAULT_X_AXIS_PROP;\n  @Input() yAxisProp: string | undefined = DEFAULT_Y_AXIS_PROP;\n  @Input() circleRadiusProp: string | undefined = DEFAULT_CIRCLE_RADIUS_PROP;\n  @Input() valueProp: string | undefined = DEFAULT_CIRCLE_RADIUS_PROP;\n  @Input() defaultValueProp: string | undefined = DEFAULT_VALUE_PROP;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() hasX_Axis: boolean | undefined;\n  @Input() hasY_Axis: boolean | undefined;\n  @Input() hasTransparency: boolean | undefined;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() hasLegend: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() tableViewColumns: Column[] = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() ariaLabel: string | undefined = DEFAULT_BUBBLE_CHART_ARIA_LABEL;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial colors and data for the chart\n  initColors: string[] = DEFAULT_CHART_COLORS;\n  groups: string[];\n  initData: BubbleChartData[];\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService, protected toolsService: ToolsService) {\n    super();\n  }\n\n  // Lifecycle hook to initialize the chart after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.initData = this.data;\n    this.draw(this.getResultObj());\n  }\n\n  // Lifecycle hook to handle changes to input properties\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) {\n      this.initData = this.data;\n      this.draw(this.getResultObj());\n    }\n  }\n\n  // Initialize the chart\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Draw the chart with the given parameters\n  draw(params?: ChartOptions): void {\n    super.draw(params);\n    if (this.isLoading) return;\n\n    // Calculate colors for the chart\n    this.chartProps.colors = this.colorsService.calculate(this.data.length, this.chartProps.initColors);\n\n    // Set scales and axes\n    this.setX_Scale();\n    this.setY_Scale();\n    this.setR_Scale();\n    this.chartProps.hasX_Axis && this.setX_Axis();\n    this.chartProps.hasY_Axis && this.setY_Axis();\n\n    // Set circles, labels, patterns, and legend\n    this.setCircles();\n    this.chartProps.hasLabels && this.setLabels();\n    this.chartProps.hasPatterns && this.addPatterns(this.data);\n    this.chartProps.hasLegend && this.setLegend();\n    this.addAxisDescription();\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Set the legend for the chart\n  setLegend(): void {\n    const keys = [];\n\n    this.initData.forEach((item) => {\n      keys.push(item[this.defaultValueProp]);\n    });\n\n    const mouseover = (event, d) => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      const activeChartItem = document.querySelector<HTMLElement>(`${this.chartSelector} .chart__item__${d.replace(' ', '')}`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.5'));\n      if (activeChartItem) activeChartItem.style['opacity'] = '1';\n    };\n\n    const mouseleave = () => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '1'));\n    };\n\n    const click = (event, d) => {\n      this.data.forEach((item, index) => {\n        if (item[this.defaultValueProp] === d) {\n          item.hidden = !item.hidden;\n        }\n      });\n\n      const updParams = this.legendUpdColors(this.data, this.getResultObj());\n\n      this.draw(updParams);\n    };\n\n    const keydown = (event, itemLabel) => {\n      this.legendKeyHandler(event, itemLabel, click);\n    };\n\n    const checkHiddenFunc = (d) => {\n      const item = this.data.find((item) => item[this.defaultValueProp] === d);\n      return item.hidden ? 'legend__item legend__item_active' : 'legend__item';\n    };\n\n    this.addLegend({\n      keys,\n      checkHiddenFunc,\n      mouseover,\n      mouseleave,\n      keydown,\n      click,\n    });\n  }\n\n  // Add axis descriptions to the chart\n  private addAxisDescription(): void {\n    const xPadding = this.bottomPadding || 0;\n\n    if (this.xAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'x-axis-description')\n        .attr('transform', 'translate(' + this.chartProps.chartWidth / 2 + ',' + (this.chartProps.chartHeight + xPadding / 2) + ')')\n        .style('text-anchor', 'middle')\n        .text(this.xAxisDescription);\n    }\n\n    if (this.yAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'y-axis-description')\n        .attr('transform', 'rotate(-90)')\n        .attr('y', 0)\n        .attr('x', 0 - this.chartProps.chartHeight / 2)\n        .attr('dy', '1em')\n        .style('text-anchor', 'middle')\n        .text(this.yAxisDescription);\n    }\n  }\n\n  // Get the result object for the chart options\n  private getResultObj(): ChartOptions {\n    const resultObj = <ChartOptions>{};\n\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n\n    return resultObj;\n  }\n\n  // Set the X scale for the chart\n  private setX_Scale(): void {\n    this.xScale = d3\n      .scaleLinear()\n      .domain([0, d3.max(this.data, (d) => d[this.xAxisProp]) * 1.3])\n      .rangeRound([this.chartProps.leftPadding + this.chartProps.axisDescSpacing, this.chartProps.chartWidth - 1]);\n  }\n\n  // Set the Y scale for the chart\n  private setY_Scale(): void {\n    this.yScale = d3\n      .scaleLinear()\n      .domain([30, d3.max(this.data, (d) => d[this.yAxisProp]) * 1.3])\n      .rangeRound([this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing, 0]);\n  }\n\n  // Set the radius scale for the chart\n  private setR_Scale() {\n    this.rScale = d3\n      .scaleSqrt()\n      .domain([0, d3.max(this.data, (d) => d[this.circleRadiusProp])])\n      .range([2, this.chartProps.maxBubbleRadius]);\n  }\n\n  // Set the X axis for the chart\n  private setX_Axis(): void {\n    const axis = d3\n      .axisBottom(this.xScale)\n      .tickPadding(10)\n      .tickSize(this.chartProps.bottomPadding - this.chartProps.axisDescSpacing - this.chartProps.chartHeight);\n\n    this.xAxis = this.svg\n      .append('g')\n      .attr('class', 'x-axis')\n      .attr('transform', `translate(0,${this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing})`)\n      .style('font-size', 12)\n      .style('color', this.axisColor)\n      .call(axis);\n  }\n\n  // Set the Y axis for the chart\n  private setY_Axis(): void {\n    const axis = d3\n      .axisLeft(this.yScale)\n      .tickPadding(10)\n      .tickSize(this.chartProps.leftPadding + this.chartProps.axisDescSpacing - this.chartProps.chartWidth);\n\n    this.yAxis = this.svg\n      .append('g')\n      .attr('class', 'y-axis')\n      .attr('transform', `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing},0)`)\n      .style('font-size', 12)\n      .style('color', this.axisColor)\n      .call(axis);\n  }\n\n  // Set the circles for the chart\n  private setCircles() {\n    const circles = this.svg\n      .selectAll('circle')\n      .data(this.data.filter((item) => !item.hidden))\n      .enter()\n      .append('circle')\n      .attr('cx', (d) => this.xScale(d[this.xAxisProp]))\n      .attr('cy', (d) => this.yScale(d[this.yAxisProp]))\n      .attr('r', (d) => this.rScale(d[this.circleRadiusProp]))\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2)\n      .attr('fill', (d, i) => this.getChartItemFill(i, this.chartProps.colors))\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('class', (d) => `chart__item chart__item__${d[this.defaultValueProp].replace(' ', '')}`)\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d[this.valueProp])\n      .attr('role', 'option')\n      .style('opacity', this.hasTransparency ? DEFAULT_CIRCLE_OPACITY : 1)\n      .style('border-radius', '50%');\n    this.setTooltips(circles, this.valueProp);\n  }\n\n  // Set the labels for the chart\n  private setLabels(): void {\n    const valueSpacing = 5;\n    const getX = (d) => this.xScale(d[this.xAxisProp]);\n    const getY = (d) => this.yScale(d[this.yAxisProp]) - this.rScale(d[this.circleRadiusProp]) - valueSpacing;\n    const getText = (d) => d[this.valueProp];\n\n    this.svg\n      .append('g')\n      .selectAll('.myLabels')\n      .data(this.data.filter((item) => !item.hidden))\n      .enter()\n      .append('text')\n      .attr('class', 'myLabels')\n      .text(getText)\n      .attr('x', getX)\n      .attr('y', getY)\n      .attr('font-size', 13)\n      .attr('text-anchor', 'middle');\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_bubble-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div class=\"dds-bubble-chart\"\n  #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"data\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const FUNNEL_CHART_MIN_HEIGHT = 50;\nexport const DEFAULT_FUNNEL_CHART_VALUE_PROP = 'value';\nexport const DEFAULT_FUNNEL_CHART_DATA = [\n  {\n    label: 'Qualify',\n    value: 1800,\n  },\n  {\n    label: 'Develop',\n    value: 1100,\n  },\n  {\n    label: 'Propose',\n    value: 800,\n  },\n  {\n    label: 'Close',\n    value: 500,\n  },\n];\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'label', header: 'Label', dataType: TableDataTypes.string },\n  { name: 'value', header: 'Value', dataType: TableDataTypes.number },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { select } from 'd3';\nimport D3Funnel from 'd3-funnel';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { ToolsService } from '../services/tools.service';\nimport { ChartOptions, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport {\n  DEFAULT_FUNNEL_CHART_DATA,\n  DEFAULT_FUNNEL_CHART_VALUE_PROP,\n  DEFAULT_TABLE_VIEW_COLUMNS,\n  FUNNEL_CHART_MIN_HEIGHT,\n} from './constants';\nimport { FunnelChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-funnel-chart',\n  templateUrl: './funnel-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class FunnelChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events and redraw the chart if exiting fullscreen\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() data: FunnelChartData[] | undefined = DEFAULT_FUNNEL_CHART_DATA;\n  @Input() colors: string | undefined;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasLegend: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n\n  // Initial colors and data for the chart\n  initColors: string[] = DEFAULT_CHART_COLORS;\n  initData: FunnelChartData[];\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService, protected toolsService: ToolsService) {\n    super();\n  }\n\n  // Lifecycle hook to initialize the chart after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.initData = this.data;\n    this.draw(this.getResultObj());\n  }\n\n  // Lifecycle hook to handle changes to input properties\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) {\n      this.initData = this.data;\n      this.draw(this.getResultObj());\n    }\n  }\n\n  // Initialize the chart container\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Set up the legend for the chart\n  setLegend(): void {\n    const keys = [];\n\n    this.initData.forEach((item) => {\n      keys.push(item.label);\n    });\n\n    const mouseover = (event, d) => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      const activeChartItem = document.querySelector<HTMLElement>(`${this.chartSelector} .chart__item__${d.replace(' ', '')}`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.5'));\n      if (activeChartItem) activeChartItem.style['opacity'] = '1';\n    };\n\n    const mouseleave = () => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '1'));\n    };\n\n    const click = (event, d) => {\n      this.data.forEach((item, index) => {\n        if (item.label === d) {\n          item.hidden = !item.hidden;\n        }\n      });\n\n      const updParams = this.legendUpdColors(this.data, this.getResultObj());\n\n      this.draw(updParams);\n    };\n\n    const keydown = (event, itemLabel) => {\n      this.legendKeyHandler(event, itemLabel, click);\n    };\n\n    const checkHiddenFunc = (d) => {\n      const item = this.data.find((item) => item.label === d);\n      return item.hidden ? 'legend__item legend__item_active' : 'legend__item';\n    };\n\n    this.addLegend({\n      keys,\n      checkHiddenFunc,\n      mouseover,\n      mouseleave,\n      keydown,\n      click,\n    });\n  }\n\n  // Draw the chart with the given parameters\n  draw(params?: ChartOptions): void {\n    super.draw(params);\n    if (this.isLoading) return;\n\n    this.chartProps.colors = this.colorsService.calculate(this.data.length, this.chartProps.initColors);\n\n    this.data = this.data.map((item, index) => {\n      item.backgroundColor = this.chartProps.colors[index];\n      return item;\n    });\n\n    const options = {\n      chart: {\n        width: this.chartProps.chartWidth,\n        height: this.chartProps.chartHeight,\n      },\n      block: {\n        dynamicHeight: true,\n        minHeight: FUNNEL_CHART_MIN_HEIGHT,\n      },\n      label: {\n        enabled: this.chartProps.hasLabels,\n        fill: '#000',\n      },\n    };\n\n    const data = this.data.filter((item) => !item.hidden);\n\n    if (data.length) {\n      new D3Funnel(this.chartSelector).draw(data, options);\n    }\n\n    const container = select(this.chartSelector).node();\n    this.svg = select(container).select('svg');\n\n    this.svg\n      .selectAll('g')\n      .select('path')\n      .attr('role', 'option')\n      .attr('aria-label', (d) => d.label.formatted)\n      .attr('class', (d) => `chart__item chart__item__${d.label.raw}`);\n\n    this.setTooltips(this.svg.selectAll('path'), DEFAULT_FUNNEL_CHART_VALUE_PROP);\n\n    this.setPatterns();\n    this.chartProps.hasLegend && this.setLegend();\n    this.setTabIndexToBlocks();\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Set patterns for the chart\n  private setPatterns(): void {\n    const container = select(this.chartSelector).node();\n\n    this.svg = select(container).select('svg');\n    this.chartProps.hasPatterns && this.addPatterns(this.data, this.chartProps.colors);\n\n    this.svg\n      .selectAll('g')\n      .select('path')\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2)\n      .attr('fill', (d, i) => this.getChartItemFill(i, this.chartProps.colors));\n  }\n\n  // Get the result object for the chart options\n  private getResultObj(): ChartOptions {\n    const resultObj = <ChartOptions>{};\n\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n\n    return resultObj;\n  }\n\n  // Set tabindex attribute to chart blocks for accessibility\n  setTabIndexToBlocks(): void {\n    const paths = document.querySelectorAll(`${this.chartSelector}.dds-funnel-chart path`);\n    paths.forEach((path) => {\n      path.setAttribute('tabindex', '0');\n    });\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_funnel-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div class=\"dds-funnel-chart\"\n  #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"data\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_HEAT_MAP_GROUP_PROP = 'group';\n\nexport const DEFAULT_HEAT_MAP_VARIABLE_PROP = 'variable';\n\nexport const DEFAULT_HEAT_MAP_VALUE_PROP = 'value';\n\nexport const DEFAULT_HEAT_MAP_ARIA_LABEL = 'Exact value';\n\nexport const DEFAULT_HEAT_MAP_TOP_PADDING = 0;\n\nexport const DEFAULT_HEAT_MAP_RIGHT_PADDING = 40;\n\nexport const DEFAULT_HEAT_MAP_CHART_DATA = [\n  {\n    group: 'Production',\n    variable: 'Cloud',\n    value: 10,\n  },\n  {\n    group: 'Staging',\n    variable: 'Cloud',\n    value: 97,\n  },\n  {\n    group: 'QA',\n    variable: 'Cloud',\n    value: 70,\n  },\n  {\n    group: 'DEV',\n    variable: 'Cloud',\n    value: 10,\n  },\n  {\n    group: 'UAT',\n    variable: 'Cloud',\n    value: 60,\n  },\n  {\n    group: 'Production',\n    variable: 'On-prem',\n    value: 55,\n  },\n  {\n    group: 'Staging',\n    variable: 'On-prem',\n    value: 67,\n  },\n  {\n    group: 'QA',\n    variable: 'On-prem',\n    value: 50,\n  },\n  {\n    group: 'DEV',\n    variable: 'On-prem',\n    value: 100,\n  },\n  {\n    group: 'UAT',\n    variable: 'On-prem',\n    value: 40,\n  },\n];\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'group', header: 'Group', dataType: TableDataTypes.string },\n  { name: 'variable', header: 'Variable', dataType: TableDataTypes.string },\n  { name: 'value', header: 'Value', dataType: TableDataTypes.number },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { ChartOptions, ChartsSettingProps, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport {\n  DEFAULT_HEAT_MAP_ARIA_LABEL,\n  DEFAULT_HEAT_MAP_CHART_DATA,\n  DEFAULT_HEAT_MAP_GROUP_PROP,\n  DEFAULT_HEAT_MAP_RIGHT_PADDING,\n  DEFAULT_HEAT_MAP_TOP_PADDING,\n  DEFAULT_HEAT_MAP_VALUE_PROP,\n  DEFAULT_HEAT_MAP_VARIABLE_PROP,\n  DEFAULT_TABLE_VIEW_COLUMNS,\n} from './contants';\nimport { HeatMapChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-heat-map-chart',\n  templateUrl: './heat-map-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class HeatMapChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events and redraw the chart if exiting fullscreen\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() colors: string | undefined;\n  @Input() axisColor: string | undefined = DEFAULT_CHART_SETTINGS.axisColor;\n  @Input() data: HeatMapChartData[] | undefined = DEFAULT_HEAT_MAP_CHART_DATA;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() padding: number | undefined;\n  @Input() topPadding: number | undefined = DEFAULT_HEAT_MAP_TOP_PADDING;\n  @Input() rightPadding: number | undefined = DEFAULT_HEAT_MAP_RIGHT_PADDING;\n  @Input() groupField: string | undefined = DEFAULT_HEAT_MAP_GROUP_PROP;\n  @Input() variableField: string | undefined = DEFAULT_HEAT_MAP_VARIABLE_PROP;\n  @Input() valueProp: string | undefined = DEFAULT_HEAT_MAP_VALUE_PROP;\n  @Input() ariaLabel: string | undefined = DEFAULT_HEAT_MAP_ARIA_LABEL;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial chart colors\n  initColors = DEFAULT_CHART_COLORS;\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService) {\n    super();\n  }\n\n  // Lifecycle hook to initialize and draw the chart after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.draw(this.getResultObj());\n  }\n\n  // Lifecycle hook to handle changes to input properties\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) this.draw(this.getResultObj());\n  }\n\n  // Initialize the chart container\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Get the chart options based on input properties\n  private getResultObj(): ChartOptions {\n    const resultObj = <ChartOptions>{};\n\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n\n    return resultObj;\n  }\n\n  // Set the X scale for the chart\n  setX_Scale() {\n    const groups = new Set();\n    this.data.forEach((item) => {\n      groups.add(item[this.groupField]);\n    });\n\n    this.xScale = d3\n      .scaleBand()\n      .domain(Array.from(groups))\n      .range([0, this.chartProps.chartWidth - this.chartProps.rightPadding * 2])\n      .padding(0.05);\n  }\n\n  // Set the Y scale for the chart\n  setY_Scale() {\n    const groups = new Set();\n    this.data.forEach((item) => {\n      groups.add(item[this.variableField]);\n    });\n    this.yScale = d3\n      .scaleBand()\n      .domain(Array.from(groups))\n      .range([this.chartProps.chartHeight - this.chartProps.topPadding * 2, 0])\n      .padding(0.05);\n  }\n\n  // Set the X axis for the chart\n  setX_Axis() {\n    const axis = d3.axisBottom(this.xScale).tickSize(0).tickPadding(5);\n\n    this.xAxis = this.svg\n      .append('g')\n      .attr('class', 'x-axis')\n      .attr('transform', `translate(0, -25)`)\n      .style('font-size', 12)\n      .style('color', this.axisColor)\n      .call(axis)\n      .select('.domain')\n      .remove();\n  }\n\n  // Set the Y axis for the chart\n  setY_Axis() {\n    const axis = d3.axisLeft(this.yScale).tickSize(0).tickPadding(5);\n\n    this.yAxis = this.svg\n      .append('g')\n      .attr('class', 'y-axis')\n      .attr('transform', `translate(${this.chartProps.chartWidth - this.chartProps.rightPadding * 2 + 15},0)`)\n      .style('font-size', 12)\n      .style('color', this.axisColor)\n      .style('text-anchor', 'start')\n      .call(axis)\n      .select('.domain')\n      .remove();\n  }\n\n  // Set the rectangles for the heat map\n  setRect() {\n    const myColor = d3.scaleLinear<string>().range(this.chartProps.initColors).domain([1, 100]);\n\n    const rect = this.svg\n      .selectAll('rect')\n      .data(this.data)\n      .enter()\n      .append('rect')\n      .attr('stroke-linecap', 'square')\n      .attr('x', (d) => this.xScale(d[this.groupField]))\n      .attr('y', (d) => this.yScale(d[this.variableField]))\n      .attr('rx', 1)\n      .attr('width', this.xScale.bandwidth())\n      .attr('height', this.yScale.bandwidth())\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d[this.groupField] + ' ' + d[this.variableField])\n      .attr('role', 'option')\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2)\n      .attr('fill', (d, i) =>\n        this.chartProps.hasPatterns ? this.getChartItemFill(i, myColor(d[this.valueProp])) : myColor(d[this.valueProp])\n      );\n\n    this.setTooltips(rect, this.valueProp);\n  }\n\n  // Draw the chart with the given parameters\n  draw(params?: ChartsSettingProps): void {\n    super.draw(params);\n    if (this.isLoading) return;\n\n    this.svg = this.svg.append('g').attr('transform', `translate(0,${this.chartProps.padding})`);\n\n    this.setX_Scale();\n    this.setY_Scale();\n\n    this.setX_Axis();\n    this.setY_Axis();\n\n    this.setRect();\n    this.chartProps.hasLabels && this.setLabels();\n    this.chartProps.hasPatterns && this.addPatterns(this.data, this.chartProps.initColors);\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Set the labels for the chart\n  private setLabels(): void {\n    const textYSpacing = 20;\n    const getX = (d) => this.xScale(d[this.groupField]) + this.xScale.bandwidth() / 2;\n    const getY = (d) => this.yScale(d[this.variableField]) + textYSpacing;\n    const getText = (d) => d.value;\n\n    this.svg\n      .append('g')\n      .selectAll('.myLabels')\n      .data(this.data)\n      .enter()\n      .append('text')\n      .attr('class', 'myLabels')\n      .text(getText)\n      .attr('x', getX)\n      .attr('y', getY)\n      .attr('font-size', 14)\n      .attr('text-anchor', 'middle');\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_heat-map-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"data\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_HISTOGRAM_FIELD_PROP = 'field1';\n\nexport const DEFAULT_HISTOGRAM_FIELD2_PROP = 'field2';\nexport const DEFAULT_HISTOGRAM_DISPLAY_VALUE_PROP = 'month';\n\nexport const DEFAULT_HISTOGRAM_BOTTOM_PADDING = 15;\nexport const DEFAULT_HISTOGRAM_CHART_LEFT_PADDING = 25;\n\nexport const DEFAULT_HISTOGRAM_ARIA_LABEL = 'Exact value';\n\nexport const DEFAULT_HISTOGRAM_CHART_DATA = [\n  {\n    month: '2018-07-01',\n    field1: 19,\n    field2: 83,\n  },\n  {\n    month: '2018-08-01',\n    field1: 67,\n    field2: 93,\n  },\n  {\n    month: '2018-09-01',\n    field1: 19,\n    field2: 83,\n  },\n  {\n    month: '2018-10-01',\n    field1: 67,\n    field2: 93,\n  },\n  {\n    month: '2018-11-01',\n    field1: 10,\n    field2: 56,\n  },\n  {\n    month: '2018-12-01',\n    field1: 98,\n    field2: 43,\n  },\n];\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'month', header: 'Month', dataType: TableDataTypes.string },\n  { name: 'field1', header: 'Field 1', dataType: TableDataTypes.number },\n  { name: 'field2', header: 'Field 2', dataType: TableDataTypes.number },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { ChartOptions, ChartsSettingProps, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport {\n  DEFAULT_HISTOGRAM_ARIA_LABEL,\n  DEFAULT_HISTOGRAM_BOTTOM_PADDING,\n  DEFAULT_HISTOGRAM_CHART_DATA,\n  DEFAULT_HISTOGRAM_CHART_LEFT_PADDING,\n  DEFAULT_HISTOGRAM_DISPLAY_VALUE_PROP,\n  DEFAULT_HISTOGRAM_FIELD2_PROP,\n  DEFAULT_HISTOGRAM_FIELD_PROP,\n  DEFAULT_TABLE_VIEW_COLUMNS,\n} from './constants';\nimport { HistogramChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-histogram-chart',\n  templateUrl: './histogram-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class HistogramChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events and redraw the chart if exiting fullscreen\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() colors: string | undefined;\n  @Input() axisColor: string | undefined = DEFAULT_CHART_SETTINGS.axisColor;\n  @Input() xAxisDescription: string | undefined;\n  @Input() yAxisDescription: string | undefined;\n  @Input() data: HistogramChartData[] | undefined = DEFAULT_HISTOGRAM_CHART_DATA;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() bottomPadding: number | undefined = DEFAULT_HISTOGRAM_BOTTOM_PADDING;\n  @Input() leftPadding: number | undefined = DEFAULT_HISTOGRAM_CHART_LEFT_PADDING;\n  @Input() barPadding: number | undefined;\n  @Input() hasGrid: boolean | undefined;\n  @Input() hasX_Axis: boolean | undefined;\n  @Input() hasY_Axis: boolean | undefined;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasLegend: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() fieldName: string | undefined = DEFAULT_HISTOGRAM_FIELD_PROP;\n  @Input() fieldName2: string | undefined = DEFAULT_HISTOGRAM_FIELD2_PROP;\n  @Input() displayValue: string | undefined = DEFAULT_HISTOGRAM_DISPLAY_VALUE_PROP;\n  @Input() ariaLabel: string | undefined = DEFAULT_HISTOGRAM_ARIA_LABEL;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial colors and formatted data\n  initColors = DEFAULT_CHART_COLORS;\n  formattedData: any[];\n  initFormattedData: any[];\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService) {\n    super();\n  }\n\n  // Lifecycle hook to initialize the chart after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.draw(this.getResultObj());\n    this.initFormattedData = this.formattedData;\n  }\n\n  // Lifecycle hook to handle changes to input properties\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) {\n      this.draw(this.getResultObj());\n      this.initFormattedData = this.formattedData;\n    }\n  }\n\n  // Initialize the chart\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Get the result object with chart options\n  private getResultObj(): ChartOptions {\n    const resultObj = <ChartOptions>{};\n\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n\n    return resultObj;\n  }\n\n  // Set the X axis\n  setX_Axis(isUpdate = false) {\n    const axis = d3\n      .axisBottom(this.xScale)\n      .tickFormat((d) => `${d}`)\n      .tickPadding(10)\n      .tickSizeInner(10)\n      .tickSizeOuter(0);\n\n    if (isUpdate) {\n      this.xAxis && this.xAxis.call(axis);\n    } else {\n      this.xAxis = this.svg\n        .append('g')\n        .attr('class', 'x-axis')\n        .attr(\n          'transform',\n          `translate(\n          ${0 - this.chartProps.axisDescSpacing / 2},\n          ${this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing})`\n        )\n        .interrupt()\n        .style('color', this.axisColor)\n        .transition()\n        .call(axis);\n    }\n  }\n\n  // Set the Y axis\n  setY_Axis(isUpdate = false) {\n    const axis = d3\n      .axisLeft(this.yScale)\n      .tickFormat((d) => `${d}`)\n      .tickPadding(10)\n      .ticks(5);\n\n    if (this.chartProps.hasGrid) axis.tickSize(this.chartProps.leftPadding / 2 - this.chartProps.chartWidth);\n\n    if (isUpdate) {\n      this.yAxis && this.yAxis.call(axis);\n    } else {\n      this.yAxis = this.svg\n        .append('g')\n        .attr('class', 'y-axis')\n        .attr('transform', `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing},0)`)\n        .style('color', this.axisColor)\n        .transition()\n        .call(axis);\n      !this.chartProps.hasY_Axis && this.yAxis.select('.domain').remove();\n    }\n  }\n\n  // Set the Y scale\n  setY_Scale() {\n    const valuesArr = [];\n    this.data.forEach((item) => {\n      valuesArr.push(item[this.fieldName]);\n      valuesArr.push(item[this.fieldName2]);\n    });\n\n    this.yScale = d3\n      .scaleLinear()\n      .domain([0, d3.max(valuesArr)])\n      .range([this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing, 0]);\n  }\n\n  // Set the X scale\n  setX_Scale() {\n    this.xScale = d3\n      .scaleBand()\n      .domain(this.data.map((item) => item[this.displayValue]))\n      .rangeRound([\n        this.chartProps.leftPadding + this.chartProps.axisDescSpacing,\n        this.chartProps.chartWidth + this.chartProps.axisDescSpacing,\n      ])\n      .paddingInner(this.chartProps.barPadding);\n  }\n\n  // Set the bars for the histogram\n  setBars() {\n    this.clearChart('.myBars');\n\n    const getY = (d) => this.yScale(d[this.fieldName].value);\n    const getHeight = (d) => this.yScale(0) - this.yScale(d[this.fieldName].value);\n\n    const bars = this.svg\n      .append('g')\n      .attr('class', 'myBars')\n      .selectAll('rect')\n      .data(this.formattedData.filter((item) => !item[this.fieldName].hidden))\n      .enter()\n      .append('rect')\n      .attr('x', (d) => this.xScale(d[this.displayValue]) + this.chartProps.axisDescSpacing / 2)\n      .attr('width', this.xScale.bandwidth() / 2 - this.chartProps.axisDescSpacing)\n      .attr('y', getY)\n      .attr('height', getHeight)\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2)\n      .attr('fill', this.getChartItemFill(0, this.chartProps.initColors))\n      .attr('class', (d) => `chart__item chart__item__${this.fieldName}`)\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d[this.displayValue] + ' ' + d[this.fieldName].value)\n      .attr('role', 'option')\n      .attr('y', getY)\n      .attr('height', getHeight);\n\n    this.setTooltips(bars, this.fieldName, true);\n  }\n\n  // Set the second set of bars for the histogram\n  setBars2() {\n    this.clearChart('.myBars2');\n\n    const getY = (d) => this.yScale(d[this.fieldName2].value);\n    const getHeight = (d) => this.yScale(0) - this.yScale(d[this.fieldName2].value);\n\n    const bars = this.svg\n      .append('g')\n      .attr('class', 'myBars2')\n      .selectAll('rect')\n      .data(this.formattedData.filter((item) => !item[this.fieldName2].hidden))\n      .enter()\n      .append('rect')\n      .attr('x', (d) => this.xScale(d[this.displayValue]) + this.xScale.bandwidth() / 2 - this.chartProps.axisDescSpacing / 2)\n      .attr('width', this.xScale.bandwidth() / 2 - this.chartProps.axisDescSpacing)\n      .attr('y', getY)\n      .attr('height', getHeight)\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2)\n      .attr('fill', this.getChartItemFill(1, this.chartProps.initColors))\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('class', (d) => `chart__item chart__item__${this.fieldName2}`)\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d[this.displayValue] + ' ' + d[this.fieldName2].value)\n      .attr('role', 'option')\n      .attr('y', getY)\n      .attr('height', getHeight);\n\n    this.setTooltips(bars, this.fieldName2, true);\n  }\n\n  // Set the labels for the bars\n  setLabels(isUpdate = false) {\n    const getX = (d) => this.xScale(d[this.displayValue]) + this.xScale.bandwidth() / 2 / 2;\n    const getY = (d) => this.yScale(d[this.fieldName].value) + 20;\n    const getText = (d) => d[this.fieldName].value;\n\n    if (isUpdate) {\n      this.svg.selectAll('.myLabels1').data(this.data).transition().text(getText).attr('x', getX).attr('y', getY);\n    } else {\n      this.svg\n        .append('g')\n        .selectAll('.myLabels1')\n        .data(this.formattedData.filter((item) => !item[this.fieldName].hidden))\n        .enter()\n        .append('text')\n        .attr('class', 'myLabels1')\n        .text(getText)\n        .attr('x', getX)\n        .attr('y', getY)\n        .attr('font-size', 14)\n        .attr('text-anchor', 'middle');\n    }\n  }\n\n  // Set the second set of labels for the bars\n  setLabels2(isUpdate = false) {\n    const getX = (d) => this.xScale(d[this.displayValue]) + (this.xScale.bandwidth() - this.xScale.bandwidth() / 2 / 2);\n    const getY = (d) => this.yScale(d[this.fieldName2].value) + 20;\n    const getText = (d) => d[this.fieldName2].value;\n\n    if (isUpdate) {\n      this.svg.selectAll('.myLabels2').data(this.data).transition().text(getText).attr('x', getX).attr('y', getY);\n    } else {\n      this.svg\n        .append('g')\n        .selectAll('.myLabels2')\n        .data(this.formattedData.filter((item) => !item[this.fieldName2].hidden))\n        .enter()\n        .append('text')\n        .attr('class', 'myLabels2')\n        .text(getText)\n        .attr('x', getX)\n        .attr('y', getY)\n        .attr('font-size', 14)\n        .attr('text-anchor', 'middle');\n    }\n  }\n\n  // Set the legend for the chart\n  setLegend(): void {\n    const keys = [];\n\n    keys.push(this.fieldName, this.fieldName2);\n\n    const mouseover = (event, d) => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      const activeChartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item__${d}`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.5'));\n      if (activeChartItems) activeChartItems.forEach((activeChartItem) => (activeChartItem.style['opacity'] = '1'));\n    };\n\n    const mouseleave = () => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '1'));\n    };\n\n    const click = (event, d) => {\n      this.initFormattedData.forEach((item) =>\n        Object.keys(item).forEach((key) => {\n          if (key === d) item[d].hidden = !item[d].hidden;\n        })\n      );\n\n      this.formattedData = this.initFormattedData;\n\n      const updParams = this.legendUpdColors(this.initFormattedData, this.getResultObj());\n\n      this.draw(updParams, false);\n    };\n\n    const keydown = (event, itemLabel) => {\n      this.legendKeyHandler(event, itemLabel, click);\n    };\n\n    const checkHiddenFunc = (d) => {\n      let item;\n      this.formattedData.forEach((dataItem) =>\n        Object.keys(dataItem).forEach((key) => {\n          if (key === d) item = dataItem;\n        })\n      );\n      return item[d]?.hidden ? 'legend__item legend__item_active' : 'legend__item';\n    };\n\n    this.addLegend({\n      keys,\n      checkHiddenFunc,\n      mouseover,\n      mouseleave,\n      keydown,\n      click,\n    });\n  }\n\n  // Prepare the data for the chart\n  prepareData(): void {\n    this.formattedData = this.data.map((item) => {\n      return {\n        [this.displayValue]: item[this.displayValue],\n        [this.fieldName]: {\n          value: item[this.fieldName],\n          hidden: false,\n        },\n        [this.fieldName2]: {\n          value: item[this.fieldName2],\n          hidden: false,\n        },\n      };\n    });\n  }\n\n  // Draw the chart\n  draw(params?: ChartsSettingProps, update = true): void {\n    super.draw(params);\n    if (this.isLoading) return;\n    if (update) this.prepareData();\n\n    this.chartProps.colors = this.colorsService.calculate(\n      this.chartProps.initColors.length > 1 ? this.data.length : 1,\n      this.chartProps.initColors\n    );\n\n    this.setX_Scale();\n    this.setY_Scale();\n    this.chartProps.hasX_Axis && this.setX_Axis();\n    (this.chartProps.hasY_Axis || this.chartProps.hasGrid) && this.setY_Axis();\n    this.setBars();\n    this.setBars2();\n    this.chartProps.hasLabels && this.setLabels();\n    this.chartProps.hasLabels && this.setLabels2();\n    this.chartProps.hasLegend && this.setLegend();\n    this.chartProps.hasPatterns && this.addPatterns(this.data);\n\n    this.svg.select('defs').select('#pattern0').attr('fill', this.chartProps.initColors[0]);\n    this.svg.select('defs').select('#pattern1').attr('fill', this.chartProps.initColors[1]);\n    this.addAxisDescription();\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n\n  // Add axis descriptions to the chart\n  private addAxisDescription(): void {\n    const xPadding = this.bottomPadding || 0;\n\n    if (this.xAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'x-axis-description')\n        .attr('transform', 'translate(' + this.chartProps.chartWidth / 2 + ',' + (this.chartProps.chartHeight + xPadding / 2) + ')')\n        .style('text-anchor', 'middle')\n        .text(this.xAxisDescription);\n    }\n\n    if (this.yAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'y-axis-description')\n        .attr('transform', 'rotate(-90)')\n        .attr('y', 0)\n        .attr('x', 0 - this.chartProps.chartHeight / 2)\n        .attr('dy', '1em')\n        .style('text-anchor', 'middle')\n        .text(this.yAxisDescription);\n    }\n  }\n}\n","<div class=\"dds-chart dds-chart_histogram-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"data\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_HORIZONTAL_BAR_CHART_ARIA_LABEL = 'Exact value';\nexport const DEFAULT_BAR_CHART_X_VALUE = 'name';\nexport const DEFAULT_BAR_CHART_Y_VALUE = 'value';\nexport const DEFAULT_HORIZONTAL_BAR_CHART_BOTTOM_PADDING = 15;\nexport const DEFAULT_HORIZONTAL_BAR_CHART_LEFT_PADDING = 75;\n\nexport const DEFAULT_HORIZONTAL_BAR_CHART_DATA = [\n  {\n    name: 'Production',\n    value: 1,\n  },\n  {\n    name: 'Staging',\n    value: 2,\n  },\n  {\n    name: 'QA',\n    value: 1,\n  },\n  {\n    name: 'DEV',\n    value: 3,\n  },\n  {\n    name: 'UAT',\n    value: 4,\n  },\n];\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'name', header: 'Name', dataType: TableDataTypes.number },\n  { name: 'value', header: 'Value', dataType: TableDataTypes.number },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { DEFAULT_BAR_CHART_X_VALUE, DEFAULT_BAR_CHART_Y_VALUE } from '../bar-chart/constants';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport {\n  DEFAULT_HORIZONTAL_BAR_CHART_ARIA_LABEL,\n  DEFAULT_HORIZONTAL_BAR_CHART_BOTTOM_PADDING,\n  DEFAULT_HORIZONTAL_BAR_CHART_DATA,\n  DEFAULT_HORIZONTAL_BAR_CHART_LEFT_PADDING,\n  DEFAULT_TABLE_VIEW_COLUMNS,\n} from './contants';\nimport { HorizontalBarChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-horizontal-bar-chart',\n  templateUrl: './horizontal-bar-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class HorizontalBarChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events and redraw the chart if exiting fullscreen\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() colors: string | undefined;\n  @Input() axisColor: string | undefined = DEFAULT_CHART_SETTINGS.axisColor;\n  @Input() xAxisDescription: string | undefined;\n  @Input() yAxisDescription: string | undefined;\n  @Input() data: HorizontalBarChartData[] | undefined = DEFAULT_HORIZONTAL_BAR_CHART_DATA;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() xValue: string | undefined = DEFAULT_BAR_CHART_X_VALUE;\n  @Input() yValue: string | undefined = DEFAULT_BAR_CHART_Y_VALUE;\n  @Input() padding: number | undefined;\n  @Input() bottomPadding: number | undefined = DEFAULT_HORIZONTAL_BAR_CHART_BOTTOM_PADDING;\n  @Input() leftPadding: number | undefined = DEFAULT_HORIZONTAL_BAR_CHART_LEFT_PADDING;\n  @Input() barPadding: number | undefined;\n  @Input() hasGrid: boolean | undefined;\n  @Input() hasX_Axis: boolean | undefined;\n  @Input() hasY_Axis: boolean | undefined;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() hasLegend: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() ariaLabel: string | undefined = DEFAULT_HORIZONTAL_BAR_CHART_ARIA_LABEL;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial colors and data for the chart\n  initColors = DEFAULT_CHART_COLORS;\n  initData: HorizontalBarChartData[];\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService) {\n    super();\n  }\n\n  // Lifecycle hook to initialize the chart after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.initData = this.data;\n    this.draw(this.getResultObj());\n  }\n\n  // Lifecycle hook to handle changes to input properties\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) {\n      this.initData = this.data;\n      this.draw(this.getResultObj());\n    }\n  }\n\n  // Initialize the chart\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Get the result object with chart properties\n  getResultObj() {\n    const resultObj = <any>{};\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n    return resultObj;\n  }\n\n  // Set the X axis for the chart\n  setX_Axis(): void {\n    const axis = d3\n      .axisBottom(this.xScale)\n      .tickFormat((d) => `${d}`)\n      .tickPadding(10)\n      .tickSizeInner(10)\n      .tickSizeOuter(0)\n      .ticks(5);\n\n    if (this.chartProps.hasGrid) axis.tickSize(-this.chartProps.chartHeight);\n\n    this.xAxis = this.svg\n      .append('g')\n      .attr('class', 'x-axis')\n      .attr(\n        'transform',\n        `translate(\n        ${this.chartProps.axisDescSpacing},\n        ${this.chartProps.chartHeight - this.bottomPadding - this.chartProps.axisDescSpacing})`\n      )\n      .interrupt()\n      .style('color', this.axisColor)\n      .transition()\n      .call(axis);\n  }\n\n  // Set the Y axis for the chart\n  setY_Axis(isUpdate = false): void {\n    const axis = d3\n      .axisLeft(this.yScale)\n      .tickFormat((d) => `${d}`)\n      .tickPadding(10);\n    if (isUpdate) {\n      this.yAxis && this.yAxis.call(axis);\n    } else {\n      this.yAxis = this.svg\n        .append('g')\n        .attr('class', 'y-axis')\n        .attr('transform', `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing},0)`)\n        .style('color', this.axisColor)\n        .transition()\n        .call(axis);\n      !this.chartProps.hasY_Axis && this.yAxis.select('.domain').remove();\n    }\n  }\n\n  // Set the Y scale for the chart\n  setY_Scale() {\n    this.yScale = d3\n      .scaleBand()\n      .domain(this.data.filter((item) => !item.hidden).map((item) => item[this.xValue]))\n      .rangeRound([0, this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing])\n      .paddingInner(this.chartProps.barPadding);\n  }\n\n  // Set the X scale for the chart\n  setX_Scale() {\n    this.xScale = d3\n      .scaleLinear()\n      .domain([d3.max(this.data.map((item) => item[this.yValue])), 0])\n      .range([this.chartProps.chartWidth - this.chartProps.leftPadding + this.chartProps.axisDescSpacing, this.chartProps.leftPadding]);\n  }\n\n  // Set the bars for the chart\n  setBars() {\n    const getY = (d) => this.yScale(d[this.xValue]);\n    const getWidth = (d) => this.xScale(d[this.yValue]) - (this.chartProps.leftPadding + 1 + this.chartProps.axisDescSpacing);\n\n    this.clearChart('.myBars');\n\n    const bars = this.svg\n      .append('g')\n      .attr('class', 'myBars')\n      .selectAll('rect')\n      .data(this.data.filter((item) => !item.hidden))\n      .enter()\n      .append('rect')\n      .attr('x', this.chartProps.leftPadding + 1 + this.chartProps.axisDescSpacing)\n      .attr('width', getWidth)\n      .attr('y', getY)\n      .attr('height', this.yScale.bandwidth())\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2)\n      .attr('fill', (d, i) => this.getChartItemFill(i, this.chartProps.colors))\n      .attr('y', getY)\n      .attr('height', this.yScale.bandwidth())\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('class', (d) => `chart__item chart__item__${d[this.xValue]}`)\n      .attr('role', 'option')\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d[this.yValue]);\n\n    this.setTooltips(bars, this.yValue);\n  }\n\n  // Set the legend for the chart\n  setLegend(): void {\n    const keys = [];\n    this.initData.forEach((item) => {\n      keys.push(item[this.xValue]);\n    });\n\n    const mouseover = (event, d) => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      const activeChartItem = document.querySelector<HTMLElement>(`${this.chartSelector} .chart__item__${d}`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.5'));\n      if (activeChartItem) activeChartItem.style['opacity'] = '1';\n    };\n\n    const mouseleave = () => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '1'));\n    };\n\n    const click = (event, d) => {\n      this.data.forEach((item, index) => {\n        if (item[this.xValue] === d) {\n          item.hidden = !item.hidden;\n        }\n      });\n\n      const updParams = this.legendUpdColors(this.data, this.getResultObj());\n\n      this.draw(updParams);\n    };\n\n    const keydown = (event, itemLabel) => {\n      this.legendKeyHandler(event, itemLabel, click);\n    };\n\n    const checkHiddenFunc = (d) => {\n      const item = this.data.find((item) => item[this.xValue] === d);\n      return item.hidden ? 'legend__item legend__item_active' : 'legend__item';\n    };\n\n    this.addLegend({\n      keys,\n      checkHiddenFunc,\n      mouseover,\n      mouseleave,\n      keydown,\n      click,\n    });\n  }\n\n  // Set the labels for the chart\n  setLabels() {\n    const getX = (d) => this.xScale(d[this.yValue]) - 25;\n    const getY = (d) => this.yScale(d[this.xValue]) + this.yScale.bandwidth() / 2 + 5;\n    const getText = (d) => d[this.yValue];\n\n    this.svg\n      .append('g')\n      .selectAll('.myLabels')\n      .data(() => this.data.filter((item) => !item.hidden))\n      .enter()\n      .append('text')\n      .attr('class', 'myLabels')\n      .text(getText)\n      .attr('x', getX)\n      .attr('y', getY)\n      .attr('font-size', 14)\n      .attr('text-anchor', 'middle');\n  }\n\n  // Draw the chart with the given parameters\n  draw(params?) {\n    super.draw(params);\n    if (this.isLoading) return;\n\n    this.calculateColors(this.colorsService);\n\n    this.setX_Scale();\n    this.setY_Scale();\n    this.chartProps.hasX_Axis && this.setX_Axis();\n    (this.chartProps.hasY_Axis || this.chartProps.hasGrid) && this.setY_Axis();\n    this.setBars();\n    this.chartProps.hasLabels && this.setLabels();\n    this.chartProps.hasPatterns && this.addPatterns(this.data);\n    this.chartProps.hasLegend && this.setLegend();\n\n    this.addAxisDescription();\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Add axis descriptions to the chart\n  private addAxisDescription(): void {\n    const padding = this.bottomPadding || 0;\n\n    if (this.xAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'x-axis-description')\n        .attr('transform', 'translate(' + this.chartProps.chartWidth / 2 + ',' + (this.chartProps.chartHeight + padding / 2) + ')')\n        .style('text-anchor', 'middle')\n        .text(this.xAxisDescription);\n    }\n\n    if (this.yAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'y-axis-description')\n        .attr('transform', 'rotate(-90)')\n        .attr('y', 0)\n        .attr('x', 0 - this.chartProps.chartHeight / 2)\n        .attr('dy', '1em')\n        .style('text-anchor', 'middle')\n        .text(this.yAxisDescription);\n    }\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_horizontal-bar-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"data\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_HORIZONTAL_STACKED_BAR_CHART_ARIA_LABEL = 'Exact value';\nexport const DEFAULT_HORIZONTAL_STACKED_BAR_CHART_BOTTOM_PADDING = 10;\nexport const DEFAULT_HORIZONTAL_STACKED_BAR_CHART_LEFT_PADDING = 15;\nexport const DEFAULT_HORIZONTAL_STACKED_BAR_CHART_RIGHT_PADDING = 15;\n\nexport const DEFAULT_HORIZONTAL_STACKED_BAR_CHART_DATA = [\n  {\n    date: '3/1854',\n    total: 1463,\n    parameter_1: 503,\n    parameter_2: 532,\n    parameter_3: 428,\n  },\n  {\n    date: '6/1854',\n    total: 2037,\n    parameter_1: 844,\n    parameter_2: 687,\n    parameter_3: 506,\n  },\n  {\n    date: '4/1854',\n    total: 1480,\n    parameter_1: 425,\n    parameter_2: 624,\n    parameter_3: 431,\n  },\n  {\n    date: '5/1855',\n    total: 1968,\n    parameter_1: 861,\n    parameter_2: 683,\n    parameter_3: 424,\n  },\n  {\n    date: '1/1855',\n    total: 923,\n    parameter_1: 420,\n    parameter_2: 342,\n    parameter_3: 361,\n  },\n  {\n    date: '2/1855',\n    total: 1209,\n    parameter_1: 405,\n    parameter_2: 432,\n    parameter_3: 372,\n  },\n];\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'date', header: 'Date', dataType: TableDataTypes.string },\n  { name: 'total', header: 'Total', dataType: TableDataTypes.number },\n  { name: 'parameter_1', header: 'Parameter 1', dataType: TableDataTypes.number },\n  { name: 'parameter_2', header: 'Parameter 2', dataType: TableDataTypes.number },\n  { name: 'parameter_3', header: 'Parameter 3', dataType: TableDataTypes.number },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { ToolsService } from '../services/tools.service';\nimport { ChartOptions, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport {\n  DEFAULT_HORIZONTAL_STACKED_BAR_CHART_ARIA_LABEL,\n  DEFAULT_HORIZONTAL_STACKED_BAR_CHART_BOTTOM_PADDING,\n  DEFAULT_HORIZONTAL_STACKED_BAR_CHART_DATA,\n  DEFAULT_HORIZONTAL_STACKED_BAR_CHART_LEFT_PADDING,\n  DEFAULT_HORIZONTAL_STACKED_BAR_CHART_RIGHT_PADDING,\n  DEFAULT_TABLE_VIEW_COLUMNS,\n} from './constants';\nimport { HorizontalStackedBarChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-horizontal-stacked-bar-chart',\n  templateUrl: './horizontal-stacked-bar-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class HorizontalStackedBarChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component's host element\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events and redraw the chart if exiting fullscreen\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() colors: string | undefined;\n  @Input() axisColor: string | undefined = DEFAULT_CHART_SETTINGS.axisColor;\n  @Input() xAxisDescription: string | undefined;\n  @Input() yAxisDescription: string | undefined;\n  @Input() data: HorizontalStackedBarChartData[] | undefined = DEFAULT_HORIZONTAL_STACKED_BAR_CHART_DATA;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() padding: number | undefined;\n  @Input() bottomPadding: number | undefined = DEFAULT_HORIZONTAL_STACKED_BAR_CHART_BOTTOM_PADDING;\n  @Input() leftPadding: number | undefined = DEFAULT_HORIZONTAL_STACKED_BAR_CHART_LEFT_PADDING;\n  @Input() rightPadding: number | undefined = DEFAULT_HORIZONTAL_STACKED_BAR_CHART_RIGHT_PADDING;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasLegend: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() ariaLabel: string | undefined = DEFAULT_HORIZONTAL_STACKED_BAR_CHART_ARIA_LABEL;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial chart colors and data\n  initColors = DEFAULT_CHART_COLORS;\n  domain: any;\n  initData: HorizontalStackedBarChartData[];\n  layers: any[];\n  initLayers: any[];\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService, protected toolsService: ToolsService) {\n    super({\n      chartSelector: '#horizontal-stacked-bar-chart',\n    });\n  }\n\n  // Lifecycle hook to initialize the chart after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.initData = this.data;\n    this.draw(this.getResultObj());\n    this.initLayers = this.layers;\n  }\n\n  // Lifecycle hook to handle changes to input properties\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) {\n      this.initData = this.data;\n      this.draw(this.getResultObj());\n      this.initLayers = this.layers;\n    }\n  }\n\n  // Initialize the chart\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Get the chart options object\n  getResultObj(): ChartOptions {\n    const resultObj = <any>{};\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n    return resultObj;\n  }\n\n  // Set up the tooltip for the chart\n  setTooltip() {\n    const Tooltip = d3\n      .select(this.chartSelector)\n      .style('position', 'relative')\n      .append('div')\n      .style('opacity', 0)\n      .attr('class', 'tooltip')\n      .attr('cursor', 'pointer')\n      .style('background-color', '#000')\n      .style('color', '#fff')\n      .style('padding', '7px 12px 9px')\n      .style('position', 'fixed')\n      .style('font-size', '12px')\n      .style('z-index', '1000');\n\n    const mouseover = function (d) {\n      Tooltip.style('opacity', 1);\n    };\n    const mousemove = function (event, d) {\n      Tooltip.html(this.ariaLabel)\n        .style('left', event.clientX + 20 + 'px')\n        .style('top', event.clientY + 'px');\n    };\n\n    const focus = function (d) {\n      const focusedElem = document.activeElement;\n      const posEl = focusedElem.getBoundingClientRect();\n\n      Tooltip.html(this.ariaLabel)\n        .style('opacity', 1)\n        .style('left', posEl.left + 20 + 'px')\n        .style('top', posEl.top + 20 + 'px');\n    };\n    const mouseleave = function (d) {\n      Tooltip.style('opacity', 0);\n    };\n\n    const blur = function (d) {\n      Tooltip.style('opacity', 0);\n    };\n\n    return {\n      mouseover,\n      mousemove,\n      mouseleave,\n      focus,\n      blur,\n    };\n  }\n\n  // Set up the legend for the chart\n  setLegend() {\n    const stackKey = this.toolsService.getGroups({\n      data: this.initData,\n      nonGroupNameFields: ['date', 'total'],\n    });\n    const stack = d3.stack().keys(stackKey).offset(d3.stackOffsetNone);\n\n    this.layers = stack(this.initData);\n\n    const mouseover = (event, d) => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      const activeChartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item__${d.key}`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.5'));\n      if (activeChartItems) activeChartItems.forEach((activeChartItem) => (activeChartItem.style['opacity'] = '1'));\n    };\n\n    const mouseleave = () => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '1'));\n    };\n\n    const click = (event, d) => {\n      this.initLayers.forEach((item) => {\n        if (item.key === d.key) item.hidden = !item.hidden;\n      });\n\n      const enabledGroup = this.initLayers.filter((item) => !item.hidden).map((item) => item.key);\n      const updParams = this.legendUpdColors(this.initLayers, this.getResultObj());\n\n      this.layers = d3.stack().keys(enabledGroup)(this.data);\n      this.draw(updParams, false);\n    };\n\n    const keydown = (event, itemLabel) => {\n      this.legendKeyHandler(event, itemLabel, click);\n    };\n\n    const checkHiddenFunc = (d) => {\n      const item = this.initLayers?.find((item) => item.key === d.key);\n      return item?.hidden ? 'legend__item legend__item_active' : 'legend__item';\n    };\n\n    this.addLegend({\n      keys: this.layers,\n      checkHiddenFunc,\n      mouseover,\n      mouseleave,\n      keydown,\n      click,\n      legendTitleFunc: (d) => d.key,\n    });\n  }\n\n  // Draw the chart\n  draw(params?: ChartOptions, update = true): void {\n    super.draw(params);\n    if (this.isLoading) return;\n\n    this.domain = this.toolsService.getDomain(this.data, ['date', 'total']);\n    this.chartProps.colors = this.colorsService.calculate(this.domain.length, this.chartProps.initColors);\n\n    this.svg = this.svg.append('g').attr('transform', `translate(${this.chartProps.leftPadding},0)`);\n\n    const stackKey = this.toolsService.getGroups({\n      data: this.data,\n      nonGroupNameFields: ['date', 'total'],\n    });\n\n    const parseDate = d3.timeParse('%m/%Y');\n    const xScale = d3\n      .scaleLinear()\n      .rangeRound([0, this.chartProps.chartWidth + this.chartProps.leftPadding + this.chartProps.axisDescSpacing]);\n    const yScale = d3\n      .scaleBand()\n      .rangeRound([this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing, 0])\n      .padding(0.1);\n    const xAxis = d3.axisBottom(xScale);\n    const yAxis = d3.axisLeft(yScale).tickFormat(<any>d3.timeFormat('%b'));\n\n    const stack = d3.stack().keys(stackKey).offset(d3.stackOffsetNone);\n    if (update) this.layers = stack(this.data);\n\n    this.data.sort((a, b) => b.total - a.total);\n    yScale.domain(this.data.map((d) => parseDate(d.date)));\n\n    xScale.domain([0, d3.max(this.layers[this.layers.length - 1] || [], (d) => d[0] + d[1])]).nice();\n\n    const layer = this.svg\n      .selectAll('.layer')\n      .data(this.layers.filter((item) => !item.hidden))\n      .enter()\n      .append('g')\n      .attr('transform', `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing},0)`)\n      .attr('class', (d) => `chart__item chart__item__${d.key}`)\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2)\n      .attr('fill', (d, i) => this.getChartItemFill(i, this.chartProps.colors, this.initLayers));\n\n    const { mouseover, mousemove, mouseleave, focus, blur } = this.setTooltip();\n\n    layer\n      .selectAll('rect')\n      .data((d: any) => d)\n      .enter()\n      .append('rect')\n      .attr('y', (d: any) => yScale(parseDate(d.data.date)))\n      .attr('x', (d) => xScale(d[0]))\n      .attr('height', yScale.bandwidth())\n      .attr('width', (d) => xScale(d[1]) - xScale(d[0]))\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d[1])\n      .attr('role', 'option')\n      .on('mouseover', this.chartProps.hasTooltip ? mouseover : null)\n      .on('mousemove', this.chartProps.hasTooltip ? mousemove : null)\n      .on('mouseleave', this.chartProps.hasTooltip ? mouseleave : null)\n      .on('focus', this.chartProps.hasTooltip ? focus : null)\n      .on('blur', this.chartProps.hasTooltip ? blur : null);\n\n    this.svg\n      .append('g')\n      .attr('class', 'x-axis')\n      .attr(\n        'transform',\n        `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing},${this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing\n        })`\n      )\n      .style('color', this.axisColor)\n      .call(xAxis);\n\n    this.svg\n      .append('g')\n      .attr('class', 'y-axis')\n      .attr('transform', `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing},0)`)\n      .style('color', this.axisColor)\n      .call(yAxis);\n    this.chartProps.hasLegend && this.setLegend();\n    this.chartProps.hasLabels && this.setLabels(layer, xScale, yScale, parseDate);\n    this.chartProps.hasPatterns && this.addPatterns(this.data);\n\n    this.addAxisDescription();\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Add axis descriptions to the chart\n  private addAxisDescription(): void {\n    const padding = this.bottomPadding || 0;\n    const yAxisSpacing = 30;\n\n    if (this.xAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'x-axis-description')\n        .attr('transform', 'translate(' + this.chartProps.chartWidth / 2 + ',' + (this.chartProps.chartHeight + padding / 2) + ')')\n        .style('text-anchor', 'middle')\n        .text(this.xAxisDescription);\n    }\n\n    if (this.yAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'y-axis-description')\n        .attr('transform', 'rotate(-90)')\n        .attr('y', -15)\n        .attr('x', 0 - (this.chartProps.chartHeight / 2 - yAxisSpacing))\n        .attr('dy', '1em')\n        .style('text-anchor', 'middle')\n        .text(this.yAxisDescription);\n    }\n  }\n\n  // Set labels for the chart items\n  private setLabels(layer, xScale, yScale, parseDate): void {\n    const ySpacing = 3;\n    const xSpacing = 0;\n\n    layer\n      .selectAll('.myLabels')\n      .data((d) => d)\n      .enter()\n      .append('text')\n      .attr('class', 'myLabels')\n      .attr('y', (d) => yScale(parseDate(d.data.date)) + yScale.bandwidth() / 2 + ySpacing)\n      .attr('x', (d) => xScale(d[0]) + (xScale(d[1]) - xScale(d[0])) / 2 + xSpacing)\n      .text((d) => d[1])\n      .attr('font-size', 13)\n      .attr('fill', '#000')\n      .attr('text-anchor', 'middle');\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_horizontal-stacked-bar-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"data\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const NON_GROUP_NAME_FIELDS = 'time';\nexport const DEFAULT_LINE_CHART_DOT_RADIUS = 5;\nexport const DEFAULT_LINE_CHART_ARIA_LABEL = 'Exact value';\nexport const DEFAULT_LINE_CHART_ARIA_BOTTOM_PADDING = 15;\nexport const DEFAULT_LINE_CHART_ARIA_LEFT_PADDING = 35;\n\nexport const DEFAULT_LINE_CHART_DATA = [\n  {\n    time: 2017,\n    Bears: 7,\n    Dolphins: 80,\n    Whales: 157,\n  },\n  {\n    time: 2018,\n    Bears: 60,\n    Dolphins: 56,\n    Whales: 79,\n  },\n  {\n    time: 2019,\n    Bears: 90,\n    Dolphins: 100,\n    Whales: 39,\n  },\n  {\n    time: 2020,\n    Bears: 120,\n    Dolphins: 76,\n    Whales: 19,\n  },\n  {\n    time: 2021,\n    Bears: 140,\n    Dolphins: 90,\n    Whales: 4,\n  },\n  {\n    time: 2022,\n    Bears: 180,\n    Dolphins: 75,\n    Whales: 0,\n  },\n  {\n    time: 2023,\n    Bears: 180,\n    Dolphins: 75,\n    Whales: 0,\n  },\n];\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'time', header: 'Time', dataType: TableDataTypes.number },\n  { name: 'Bears', header: 'Bears', dataType: TableDataTypes.number },\n  { name: 'Dolphins', header: 'Dolphins', dataType: TableDataTypes.number },\n  { name: 'Whales', header: 'Whales', dataType: TableDataTypes.number },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { ToolsService } from '../services/tools.service';\nimport { ChartOptions, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport {\n  DEFAULT_LINE_CHART_ARIA_BOTTOM_PADDING,\n  DEFAULT_LINE_CHART_ARIA_LABEL,\n  DEFAULT_LINE_CHART_ARIA_LEFT_PADDING,\n  DEFAULT_LINE_CHART_DATA,\n  DEFAULT_LINE_CHART_DOT_RADIUS,\n  DEFAULT_TABLE_VIEW_COLUMNS,\n  NON_GROUP_NAME_FIELDS,\n} from './constants';\nimport { LineChartData, LineChartMappedData } from './typings';\n\n\n@Component({\n  selector: 'dds-line-chart',\n  templateUrl: './line-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class LineChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events and redraw the chart if exiting fullscreen\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() inputData: LineChartData[] = DEFAULT_LINE_CHART_DATA;\n  @Input() colors: string | undefined;\n  @Input() axisColor: string | undefined = DEFAULT_CHART_SETTINGS.axisColor;\n  @Input() xAxisDescription: string | undefined;\n  @Input() yAxisDescription: string | undefined;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() padding: number | undefined;\n  @Input() bottomPadding: number | undefined = DEFAULT_LINE_CHART_ARIA_BOTTOM_PADDING;\n  @Input() leftPadding: number | undefined = DEFAULT_LINE_CHART_ARIA_LEFT_PADDING;\n  @Input() hasX_Axis: boolean | undefined;\n  @Input() hasY_Axis: boolean | undefined;\n  @Input() hasGrid: boolean | undefined;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasLegend: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined = false;\n  @Input() patternIds: string[] | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() hasDots: boolean | undefined = true;\n  @Input() dotRadius: number | undefined = DEFAULT_LINE_CHART_DOT_RADIUS;\n  @Input() nonGroupNameFields: string | undefined = NON_GROUP_NAME_FIELDS;\n  @Input() ariaLabel: string | undefined = DEFAULT_LINE_CHART_ARIA_LABEL;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial colors and data for the chart\n  initColors = DEFAULT_CHART_COLORS;\n  data: LineChartMappedData[];\n  initData: LineChartMappedData[];\n\n  // Constructor to inject services and initialize data\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService, protected tools: ToolsService) {\n    super();\n    this.data = this.getRemappedData(this.inputData);\n  }\n\n  // Lifecycle hook to initialize the chart after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.initData = this.data;\n    this.draw(this.getResultObj());\n  }\n\n  // Lifecycle hook to handle changes to input properties\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) {\n      this.initData = this.data;\n      this.draw(this.getResultObj());\n    }\n  }\n\n  // Initialize the chart container\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Generate the chart options object based on input properties\n  private getResultObj(): ChartOptions {\n    const resultObj = <ChartOptions>{};\n\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n\n    return resultObj;\n  }\n\n  // Set the X-axis scale based on input data\n  setX_Scale(inputData): void {\n    const domain = this.tools.getDomain(inputData, this.nonGroupNameFields).map((item) => this.tools.timeParse(item));\n\n    this.xScale = d3\n      .scaleTime()\n      .domain([d3.min(domain), d3.max(domain)])\n      .range([this.chartProps.leftPadding + this.chartProps.axisDescSpacing, this.chartProps.chartWidth - 20]);\n  }\n\n  // Set the Y-axis scale based on input data\n  setY_Scale(inputData): void {\n    const domain = this.tools.getDomain(inputData, this.nonGroupNameFields, true);\n\n    this.yScale = d3\n      .scaleLinear()\n      .domain([0, d3.max(domain)])\n      .range([this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing - 5, 0]);\n  }\n\n  // Remap the input data for the chart\n  getRemappedData(inputData): any {\n    const groups = this.tools.getGroups({ data: inputData, nonGroupNameFields: this.nonGroupNameFields });\n    return groups.map((groupName) => {\n      return {\n        groupName: groupName,\n        values: inputData.map((item) => {\n          return {\n            time: this.tools.timeParse(`${item[this.nonGroupNameFields]}`),\n            value: item[groupName] || 0,\n          };\n        }),\n      };\n    });\n  }\n\n  // Set the X-axis for the chart\n  setX_Axis(isUpdate = false): void {\n    const axis = d3\n      .axisBottom(this.xScale)\n      .ticks(10)\n      .tickPadding(15)\n      .tickFormat((d) => this.tools.timeFormat(d));\n    if (this.chartProps.hasGrid)\n      axis.tickSize(this.chartProps.bottomPadding + this.chartProps.axisDescSpacing - this.chartProps.chartHeight);\n\n    if (isUpdate) {\n      this.xAxis && this.xAxis.transition().call(axis);\n    } else {\n      this.xAxis = this.svg\n        .append('g')\n        .attr('class', 'x-axis')\n        .attr('transform', `translate(0,${this.chartProps.chartHeight - this.chartProps.bottomPadding - (this.xAxisDescription ? 20 : 0)})`)\n        .style('color', this.axisColor)\n        .call(axis)\n        .select('.domain')\n        .remove();\n    }\n  }\n\n  // Set the Y-axis for the chart\n  setY_Axis(isUpdate = false): void {\n    const axis = d3.axisLeft(this.yScale).tickPadding(15).ticks(12);\n\n    if (this.chartProps.hasGrid) axis.tickSize(this.chartProps.leftPadding + this.chartProps.axisDescSpacing - this.chartProps.chartWidth);\n\n    if (isUpdate) {\n      this.yAxis && this.yAxis.transition().call(axis);\n    } else {\n      this.yAxis = this.svg\n        .append('g')\n        .attr('class', 'y-axis')\n        .attr('transform', `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing},5)`)\n        .style('color', this.axisColor)\n        .call(axis)\n        .select('.domain')\n        .remove();\n    }\n  }\n\n  // Add labels to the chart\n  private setLabels(): void {\n    const xSpacing = 8;\n    const ySpacing = 5;\n\n    this.svg\n      .append('g')\n      .selectAll('.myLabels')\n      .data(this.data.filter((item) => !item.hidden))\n      .enter()\n      .append('g')\n      .attr('class', 'myGLabels')\n      .selectAll('.myPoints')\n      .data((d) => d.values)\n      .enter()\n      .append('text')\n      .attr('class', 'myLabels')\n      .text((d) => d.value)\n      .attr('x', (d) => this.xScale(d[this.nonGroupNameFields]) + xSpacing)\n      .attr('y', (d) => this.yScale(d.value) + ySpacing)\n      .style('font-size', 14);\n  }\n\n  // Add dots to the chart\n  setDots(): void {\n    this.clearChart('.myDots');\n    const dots = this.svg\n      .append('g')\n      .selectAll('.myDots')\n      .data(this.data.filter((item) => !item.hidden))\n      .enter()\n      .append('g')\n      .attr('class', 'myDots')\n      .attr('fill', (d, i) => this.getChartItemFill(i, this.chartProps.colors))\n      .selectAll('.myPoints')\n      .data((d) => d.values)\n      .enter()\n      .append('circle')\n      .attr('class', 'myPoints')\n      .attr('cx', (d) => this.xScale(d[this.nonGroupNameFields]))\n      .attr('cy', (d) => this.yScale(d.value) + 5)\n      .attr('r', this.chartProps.dotRadius)\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d[this.nonGroupNameFields] + ' ' + d.value)\n      .attr('role', 'option')\n      .style('border-radius', '50%');\n\n    this.setTooltips(dots, 'value');\n  }\n\n  // Add lines to the chart\n  setLines(isUpdate = false): void {\n    const getLine = d3\n      .line()\n      .x((d: any) => this.xScale(d[this.nonGroupNameFields]))\n      .y((d: any) => this.yScale(d.value) + 5);\n\n    if (isUpdate) {\n      this.svg\n        .selectAll('.myLines')\n        .data(this.data)\n        .transition()\n        .attr('d', (d) => getLine(d.values));\n    } else {\n      this.svg\n        .append('g')\n        .selectAll('.myLines')\n        .data(this.data.filter((item) => !item.hidden))\n        .enter()\n        .append('path')\n        .transition()\n        .attr('class', 'myLines')\n        .attr('fill', 'none')\n        .attr('stroke', (d, i) => this.getChartItemFill(i, this.chartProps.colors))\n        .attr('class', (d) => `chart__item chart__item__${d.groupName}`)\n        .attr('stroke-width', 5)\n        .attr('d', (d) => getLine(d.values));\n    }\n  }\n\n  // Add legend to the chart\n  setLegend(): void {\n    const keys = [];\n\n    this.initData.forEach((item) => {\n      keys.push(item.groupName);\n    });\n\n    const mouseover = (event, d) => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      const activeChartItem = document.querySelector<HTMLElement>(`${this.chartSelector} .chart__item__${d}`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.5'));\n      if (activeChartItem) activeChartItem.style['opacity'] = '1';\n    };\n\n    const mouseleave = () => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '1'));\n    };\n\n    const click = (event, d) => {\n      this.data.forEach((item, index) => {\n        if (item.groupName === d) {\n          item.hidden = !item.hidden;\n        }\n      });\n\n      const updParams = this.legendUpdColors(this.data, this.getResultObj());\n\n      this.draw(updParams);\n    };\n\n    const keydown = (event, itemLabel) => {\n      this.legendKeyHandler(event, itemLabel, click);\n    };\n\n    const checkHiddenFunc = (d) => {\n      const item = this.data.find((item) => item.groupName === d);\n      return item.hidden ? 'legend__item legend__item_active' : 'legend__item';\n    };\n\n    this.addLegend({\n      keys,\n      checkHiddenFunc,\n      mouseover,\n      mouseleave,\n      keydown,\n      click,\n    });\n  }\n\n  // Draw the chart with the given parameters\n  draw(params?: ChartOptions): void {\n    super.draw(params);\n    if (this.isLoading) return;\n\n    if (params && params.data) {\n      const JSONdata = typeof params.data === 'string' ? JSON.parse(params.data) : params.data;\n\n      this.data = JSONdata.map((dataItem) => {\n        return {\n          groupName: dataItem.groupName,\n          values: dataItem.values.map((valItem) => {\n            const fdate = new Date(valItem[this.nonGroupNameFields]);\n            return {\n              [this.nonGroupNameFields]: this.tools.timeParse(fdate.getFullYear()),\n              value: valItem.value,\n            };\n          }),\n          hidden: dataItem.hidden,\n        };\n      });\n    }\n\n    this.chartProps.colors = this.colorsService.calculate(this.data.length, this.chartProps.initColors);\n\n    this.setX_Scale(this.inputData);\n    this.setY_Scale(this.inputData);\n\n    this.chartProps.hasX_Axis && this.setX_Axis();\n    this.chartProps.hasY_Axis && this.setY_Axis();\n\n    this.setLines();\n    this.chartProps.hasDots && this.setDots();\n    this.chartProps.hasLabels && this.setLabels();\n    this.chartProps.hasPatterns && this.addPatterns(this.data);\n    this.chartProps.hasLegend && this.setLegend();\n    this.svg.select('defs').selectAll('path').style('opacity', 1);\n    this.addAxisDescription();\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Add axis descriptions to the chart\n  private addAxisDescription(): void {\n    const padding = this.bottomPadding || 0;\n    const yAxisSpacing = 5;\n\n    if (this.xAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'x-axis-description')\n        .attr('transform', 'translate(' + this.chartProps.chartWidth / 2 + ',' + (this.chartProps.chartHeight + padding / 2) + ')')\n        .style('text-anchor', 'middle')\n        .text(this.xAxisDescription);\n    }\n\n    if (this.yAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'y-axis-description')\n        .attr('transform', 'rotate(-90)')\n        .attr('y', padding / 2 - yAxisSpacing)\n        .attr('x', 0 - this.chartProps.chartHeight / 2)\n        .attr('dy', '1em')\n        .style('text-anchor', 'middle')\n        .text(this.yAxisDescription);\n    }\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_line-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"inputData\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_PIE_CHART_PROGRESS_ARIA_LABEL = 'Exact value';\n\nexport const DEFAULT_PIE_CHART_PROGRESS_DATA = {\n  progress: 55,\n};\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [{ name: 'progress', header: 'Progress', dataType: TableDataTypes.number }];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ChartOptions, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport { DEFAULT_PIE_CHART_PROGRESS_ARIA_LABEL, DEFAULT_PIE_CHART_PROGRESS_DATA, DEFAULT_TABLE_VIEW_COLUMNS } from './constants';\nimport { PieProgressData } from './typings';\n\n\n@Component({\n  selector: 'dds-pie-chart-progress',\n  templateUrl: './pie-chart-progress.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class PieChartProgressComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events and redraw the chart if exiting fullscreen\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() colors: string | undefined;\n  @Input() data: PieProgressData | undefined = DEFAULT_PIE_CHART_PROGRESS_DATA;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() innerRadius: number | undefined;\n  @Input() padding: number | undefined;\n  @Input() bottomPadding: number | undefined;\n  @Input() ariaLabel: string | undefined = DEFAULT_PIE_CHART_PROGRESS_ARIA_LABEL;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial colors for the chart\n  initColors = DEFAULT_CHART_COLORS;\n\n  // Constructor to inject the DdsConfigService\n  constructor(private ddsConfig: DdsConfigService) {\n    super();\n  }\n\n  // Lifecycle hook called after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.draw(this.getResultObj());\n  }\n\n  // Lifecycle hook called when input properties change\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) this.draw(this.getResultObj());\n  }\n\n  // Initialize the chart\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Get the chart options object\n  getResultObj(): ChartOptions {\n    const resultObj = <any>{};\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n    return resultObj;\n  }\n\n  // Set the total value in the chart\n  setTotal(): void {\n    this.svg\n      .append('g')\n      .append('text')\n      .attr('class', 'pieSubTitle')\n      .style('font-size', '18')\n      .style('font-weight', '600')\n      .attr('transform', 'translate(0, 50)')\n      .attr('text-anchor', 'middle')\n      .text('Progress');\n\n    this.svg\n      .append('g')\n      .append('text')\n      .attr('class', 'pieTitle')\n      .style('font-size', '40')\n      .style('font-weight', '600')\n      .attr('text-anchor', 'middle')\n      .attr('transform', 'translate(0, 9)')\n      .text(() => {\n        let result = 0;\n        Object.keys(this.data).forEach((propName) => {\n          result += +this.data[propName];\n        });\n        return result;\n      });\n  }\n\n  // Convert data for the progress chart\n  convertDataForProgressChart(value: { [key: string]: number }): any {\n    const progress = value.progress > 100 ? 100 : value.progress;\n    return { loading: Math.round(progress), left: Math.round(100 - progress) };\n  }\n\n  // Draw the chart\n  draw(params?: ChartOptions): void {\n    super.draw(params);\n    if (this.isLoading) return;\n    this.clearChart('.myPieChartProg');\n\n    const { mouseover, mousemove, mouseleave, focus, blur } = this.setTooltip();\n\n    if (!this.chartHeight) {\n      this.svg.attr('height', this.chartProps.chartHeight - this.chartProps.bottomPadding / 2);\n    }\n\n    this.svg = this.svg\n      .append('g')\n      .attr('class', 'myPieChartProg')\n      .attr('transform', `translate(${this.chartProps.chartWidth / 2},${this.chartProps.chartHeight / 2})`);\n\n    const radius = Math.min(this.chartProps.chartWidth, this.chartProps.chartHeight) / 2 - this.chartProps.padding;\n\n    const pie = d3.pie().value((d: any) => d.value);\n    const mappedData = Object.entries(this.convertDataForProgressChart(this.data)).map(([key, value]) => {\n      return { key: key, value: value };\n    });\n    const data_ready = pie(<any>mappedData);\n\n    this.svg\n      .selectAll('whatever')\n      .data(data_ready)\n      .enter()\n      .append('path')\n      .attr('class', 'myPieChartProg')\n      .attr('d', <any>d3.arc().innerRadius(this.chartProps.innerRadius).outerRadius(radius))\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2)\n      .attr('fill', (d, i) => this.getChartItemFill(i, this.chartProps.initColors, data_ready, false))\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d.value)\n      .attr('role', 'option')\n      .on('mouseover', this.chartProps.hasTooltip ? mouseover : null)\n      .on('mousemove', this.chartProps.hasTooltip ? mousemove : null)\n      .on('mouseleave', this.chartProps.hasTooltip ? mouseleave : null)\n      .on('focus', this.chartProps.hasTooltip ? focus : null)\n      .on('blur', this.chartProps.hasTooltip ? blur : null);\n\n    if (this.data.progress < 50) this.svg.selectAll('.myPieChartProg').attr('transform', 'scale(-1, 1)');\n\n    this.setTotal();\n    this.chartProps.hasLabels && this.setLabels(data_ready);\n    this.chartProps.hasPatterns && this.addPatterns(data_ready, this.chartProps.initColors);\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Set the tooltip for the chart\n  setTooltip() {\n    const fullScreen = this.isFullScreen;\n    const Tooltip = d3\n      .select(this.chartSelector)\n      .style('position', 'relative')\n      .append('div')\n      .style('opacity', 0)\n      .attr('class', 'tooltip')\n      .attr('cursor', 'pointer')\n      .style('background-color', '#000')\n      .style('color', '#fff')\n      .style('padding', '7px 12px 9px')\n      .style('position', 'fixed')\n      .style('font-size', '12px')\n      .style('z-index', '1000');\n\n    const mouseover = function (d) {\n      Tooltip.style('opacity', 1);\n    };\n\n    const mousemove = function (event, d) {\n      Tooltip.html(this.ariaLabel)\n        .style('left', event.clientX + 20 + 'px')\n        .style('top', event.clientY + 'px');\n    };\n\n    const focus = function (d) {\n      const focusedElem = document.activeElement;\n      const posEl = focusedElem.getBoundingClientRect();\n\n      Tooltip.html(this.ariaLabel)\n        .style('opacity', 1)\n        .style('left', posEl.left + 20 + 'px')\n        .style('top', posEl.top + 20 + 'px');\n    };\n    const mouseleave = function (d) {\n      Tooltip.style('opacity', 0);\n    };\n\n    const blur = function (d) {\n      Tooltip.style('opacity', 0);\n    };\n\n    return {\n      mouseover,\n      mousemove,\n      mouseleave,\n      focus,\n      blur,\n    };\n  }\n\n  // Set labels for the chart\n  private setLabels(data_ready): void {\n    const spacing = this.chartProps.innerRadius / 2;\n    const radius = Math.min(this.chartProps.chartWidth, this.chartProps.chartHeight) / 2 + spacing;\n    const arcGenerator = d3.arc().innerRadius(0).outerRadius(radius);\n\n    this.svg\n      .selectAll('mySlices')\n      .data(data_ready)\n      .enter()\n      .append('text')\n      .text(function (d) {\n        return d.data.value;\n      })\n      .attr('transform', function (d) {\n        return 'translate(' + arcGenerator.centroid(d) + ')';\n      })\n      .style('text-anchor', 'middle')\n      .style('font-size', 17);\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_pie-progress-chart dds-chart_rounded\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"[data]\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_PIE_CHART_LABEL = 'Exact value';\n\nexport const DEFAULT_PIE_CHART_DATA = {\n  bears: 150,\n  dolphins: 120,\n  whales: 117,\n  shark: 80,\n  bull: 80,\n};\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'bears', header: 'Bears', dataType: TableDataTypes.number },\n  { name: 'dolphins', header: 'Dolphins', dataType: TableDataTypes.number },\n  { name: 'whales', header: 'Whales', dataType: TableDataTypes.number },\n  { name: 'shark', header: 'Shark', dataType: TableDataTypes.number },\n  { name: 'bull', header: 'Bull', dataType: TableDataTypes.number },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { ChartOptions, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport { DEFAULT_PIE_CHART_DATA, DEFAULT_PIE_CHART_LABEL, DEFAULT_TABLE_VIEW_COLUMNS } from './constants';\nimport { PieChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-pie-chart',\n  templateUrl: './pie-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class PieChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events and redraw the chart if exiting fullscreen\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the pie chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() colors: string | undefined;\n  @Input() data: PieChartData | undefined = DEFAULT_PIE_CHART_DATA;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() innerRadius: number | undefined;\n  @Input() padding: number | undefined = 0;\n  @Input() bottomPadding: number | undefined = 0;\n  @Input() ariaLabel: string | undefined = DEFAULT_PIE_CHART_LABEL;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() hasLegend: boolean | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial colors for the chart\n  initColors = DEFAULT_CHART_COLORS;\n  // Data ready for rendering\n  dataReady: any[];\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService) {\n    super();\n  }\n\n  // Lifecycle hook called after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.draw(this.getResultObj());\n  }\n\n  // Lifecycle hook called when input properties change\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) this.draw(this.getResultObj());\n  }\n\n  // Initialize the chart\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Get the result object with chart options\n  getResultObj(): ChartOptions {\n    const resultObj = <any>{};\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n    return resultObj;\n  }\n\n  // Set the total value in the chart\n  setTotal(): void {\n    this.svg\n      .append('g')\n      .append('text')\n      .attr('class', 'pieSubTitle')\n      .style('font-size', '18')\n      .style('font-weight', '600')\n      .attr('transform', 'translate(0, 50)')\n      .attr('text-anchor', 'middle')\n      .text('Total');\n\n    this.svg\n      .append('g')\n      .append('text')\n      .attr('class', 'pieTitle')\n      .style('font-size', '40')\n      .style('font-weight', '600')\n      .attr('text-anchor', 'middle')\n      .attr('transform', 'translate(0, 9)')\n      .text(() => {\n        let result = 0;\n        this.dataReady\n          .filter((item) => !item.hidden)\n          .forEach((dataItem) => {\n            result += dataItem.value;\n          });\n        return result;\n      });\n  }\n\n  // Set the legend for the chart\n  setLegend(): void {\n    const keys = [];\n\n    this.dataReady.forEach((item) => {\n      keys.push(item.data.key);\n    });\n\n    const mouseover = (event, d) => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      const activeChartItem = document.querySelector<HTMLElement>(`${this.chartSelector} .chart__item__${d}`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.5'));\n      if (activeChartItem) activeChartItem.style['opacity'] = '1';\n    };\n\n    const mouseleave = () => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '1'));\n    };\n\n    const click = (event, d) => {\n      this.dataReady.forEach((item, index) => {\n        if (item.data.key === d) {\n          item.hidden = !item.hidden;\n        }\n      });\n\n      const updParams = this.legendUpdColors(this.dataReady, this.getResultObj());\n\n      this.draw(updParams, false);\n    };\n\n    const keydown = (event, itemLabel) => {\n      this.legendKeyHandler(event, itemLabel, click);\n    };\n\n    const checkHiddenFunc = (d) => {\n      const item = this.dataReady.find((item) => item.data.key === d);\n      return item.hidden ? 'legend__item legend__item_active' : 'legend__item';\n    };\n\n    this.addLegend({\n      keys,\n      checkHiddenFunc,\n      mouseover,\n      mouseleave,\n      keydown,\n      click,\n      data: this.dataReady,\n    });\n  }\n\n  // Draw the chart\n  draw(params?: ChartOptions, update = true): void {\n    super.draw(params);\n    if (this.isLoading) return;\n    this.clearChart('.myPieChart');\n    const width = this.chartProps.chartWidth;\n    const height = this.chartProps.chartHeight + this.chartProps.bottomPadding + this.chartProps.padding;\n\n    if (!this.chartHeight) {\n      this.svg.attr('height', height);\n    }\n\n    this.svg = this.svg\n      .append('g')\n      .attr('class', 'myPieChart')\n      .attr('transform', `translate(${this.chartProps.chartWidth / 2},${(this.chartProps.chartHeight + this.chartProps.padding) / 2})`);\n\n    const radius = Math.min(width - this.chartProps.padding, height - this.chartProps.bottomPadding - this.chartProps.padding) / 2;\n    const resultColors = this.colorsService.calculate(Object.keys(this.data).length, this.chartProps.initColors);\n\n    let pie = d3.pie().value((d: any) => d.value);\n    let mappedData = Object.entries(this.data).map(([key, value]) => {\n      return { key: key, value: value, hidden: false };\n    });\n    const data_ready = pie(update ? <any>mappedData : this.dataReady.filter((item) => !item.hidden));\n    if (update) this.dataReady = data_ready;\n\n    const { mouseover, mousemove, mouseleave, focus, blur } = this.setTooltip();\n\n    this.svg\n      .selectAll('.myPieChart')\n      .data(data_ready)\n      .enter()\n      .append('path')\n      .attr('d', <any>d3.arc().innerRadius(this.chartProps.innerRadius).outerRadius(radius))\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d.value)\n      .attr('role', 'option')\n      .on('mouseover', this.chartProps.hasTooltip ? mouseover : null)\n      .on('mousemove', this.chartProps.hasTooltip ? mousemove : null)\n      .on('mouseleave', this.chartProps.hasTooltip ? mouseleave : null)\n      .on('focus', this.chartProps.hasTooltip ? focus : null)\n      .on('blur', this.chartProps.hasTooltip ? blur : null)\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2)\n      .attr('fill', (d, i) => this.getChartItemFill(i, resultColors, this.dataReady))\n      .attr('class', (d) => `chart__item chart__item__${update ? d.data.key : d.data.data.key}`);\n\n    this.setTotal();\n    this.chartProps.hasLegend && this.setLegend();\n    this.chartProps.hasLabels && this.setLabels(data_ready);\n    this.chartProps.hasPatterns && this.addPatterns(this.dataReady, this.chartProps.initColors);\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Set the tooltip for the chart\n  setTooltip() {\n    const fullScreen = this.isFullScreen;\n    const Tooltip = d3\n      .select(this.chartSelector)\n      .style('position', 'relative')\n      .append('div')\n      .style('opacity', 0)\n      .attr('class', 'tooltip')\n      .attr('cursor', 'pointer')\n      .style('background-color', '#000')\n      .style('color', '#fff')\n      .style('padding', '7px 12px 9px')\n      .style('position', 'fixed')\n      .style('font-size', '12px')\n      .style('z-index', '1000');\n\n    const mouseover = function (d) {\n      Tooltip.style('opacity', 1);\n    };\n\n    const mousemove = function (event, d) {\n      Tooltip.html(this.ariaLabel)\n        .style('left', event.clientX + 20 + 'px')\n        .style('top', event.clientY + 'px');\n    };\n\n    const focus = function (d) {\n      const focusedElem = document.activeElement;\n      const posEl = focusedElem.getBoundingClientRect();\n\n      Tooltip.html(this.ariaLabel)\n        .style('opacity', 1)\n        .style('left', posEl.left + 20 + 'px')\n        .style('top', posEl.top + 20 + 'px');\n    };\n    const mouseleave = function (d) {\n      Tooltip.style('opacity', 0);\n    };\n\n    const blur = function (d) {\n      Tooltip.style('opacity', 0);\n    };\n\n    return {\n      mouseover,\n      mousemove,\n      mouseleave,\n      focus,\n      blur,\n    };\n  }\n\n  // Set the labels for the chart\n  private setLabels(data_ready): void {\n    const spacing = this.chartProps.innerRadius / 2;\n    const radius = Math.min(this.chartProps.chartWidth, this.chartProps.chartHeight) / 2 + spacing;\n    const arcGenerator = d3.arc().innerRadius(0).outerRadius(radius);\n\n    this.svg\n      .selectAll('mySlices')\n      .data(data_ready)\n      .enter()\n      .append('text')\n      .text(function (d) {\n        return d.value;\n      })\n      .attr('transform', function (d) {\n        return 'translate(' + arcGenerator.centroid(d) + ')';\n      })\n      .style('text-anchor', 'middle')\n      .style('font-size', 17);\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_pie-chart dds-chart_rounded\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"[data]\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_SPEEDOMETER_BAR_WIDTH = 60;\n\nexport const DEFAULT_SPEEDOMETER_DATA = {\n  minValue: 0,\n  maxValue: 100,\n  sections: 5,\n  value: 83,\n};\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'minValue', header: 'Min value', dataType: TableDataTypes.number },\n  { name: 'maxValue', header: 'Max value', dataType: TableDataTypes.number },\n  { name: 'sections', header: 'Sections', dataType: TableDataTypes.number },\n  { name: 'value', header: 'Value', dataType: TableDataTypes.number },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { ChartOptions, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport { DEFAULT_SPEEDOMETER_BAR_WIDTH, DEFAULT_SPEEDOMETER_DATA, DEFAULT_TABLE_VIEW_COLUMNS } from './constants';\nimport { SpeedometerChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-speedometer-chart',\n  templateUrl: './speedometer-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class SpeedometerChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events and redraw the chart if exiting fullscreen\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() colors: string | undefined;\n  @Input() axisColor: string | undefined;\n  @Input() data: SpeedometerChartData | undefined = DEFAULT_SPEEDOMETER_DATA;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() padding: number | undefined;\n  @Input() bottomPadding: number | undefined;\n  @Input() barWidth: number | undefined = DEFAULT_SPEEDOMETER_BAR_WIDTH;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() tableViewColumns: Column[] = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial colors and D3 arc and scale variables\n  initColors = DEFAULT_CHART_COLORS;\n  arc: any;\n  scale: any;\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService) {\n    super();\n  }\n\n  // Lifecycle hook to initialize and draw the chart after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.draw(this.getResultObj());\n  }\n\n  // Lifecycle hook to redraw the chart when input properties change\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) this.draw(this.getResultObj());\n  }\n\n  // Initialize the chart container\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Generate the chart options object based on input properties\n  private getResultObj(): ChartOptions {\n    const resultObj = <ChartOptions>{};\n\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n\n    return resultObj;\n  }\n\n  // Generate data for the arcs of the speedometer\n  getDataForArcs(): any[] {\n    const resultArr = [];\n    for (let i = 0; i < this.data.sections; i++) {\n      resultArr.push(1 / this.data.sections);\n    }\n    return resultArr;\n  }\n\n  // Convert degrees to radians\n  static deg2rad(deg): number {\n    return (deg * Math.PI) / 180;\n  }\n\n  // Set the scale for the speedometer\n  setScale(): void {\n    this.scale = d3.scaleLinear().range([0, 1]).domain([this.data.minValue, this.data.maxValue]);\n  }\n\n  // Set the pointer for the speedometer\n  setPointer(config): void {\n    const pointerWidth = 10;\n    const pointerTailLength = 0;\n    const pointerHeadLengthPercent = 0.9;\n    const pointerHeadLength = Math.round(config.r * pointerHeadLengthPercent);\n    const lineData = [\n      [pointerWidth / 2, 0],\n      [0, -pointerHeadLength],\n      [-(pointerWidth / 2), 0],\n      [0, pointerTailLength],\n      [pointerWidth / 2, 0],\n    ];\n    const pointerLine = d3.line().curve(d3.curveLinear);\n    const ratio = this.scale(this.data.value);\n    const newAngle = config.minAngle + ratio * config.range;\n\n    this.svg\n      .append('g')\n      .data([lineData])\n      .attr('class', 'pointer')\n      .attr('transform', `translate(${config.r},${config.r})`)\n      .append('path')\n      .attr('d', pointerLine)\n      .attr('transform', `rotate(${config.minAngle})`)\n      .transition()\n      .delay(200)\n      .duration(400)\n      .ease(d3.easeElastic)\n      .attr('transform', `rotate(${newAngle})`);\n  }\n\n  // Set the labels for the sections of the speedometer\n  setSectionLabels(config): void {\n    const lg = this.svg.append('g').attr('class', 'label').attr('transform', `translate(${config.r},${config.r})`);\n    lg.selectAll('text')\n      .data(this.scale.ticks(this.data.sections))\n      .enter()\n      .append('text')\n      .text((d) => d)\n      .attr('transform', (d) => {\n        const ratio = this.scale(d);\n        const newAngle = config.minAngle + ratio * config.range;\n        return `rotate(${newAngle}) translate(0,${config.labelInset - config.r})`;\n      });\n  }\n\n  // Set the label for the current value of the speedometer\n  setLabelProc(config): void {\n    this.svg\n      .append('g')\n      .append('text')\n      .attr('class', 'value')\n      .style('fill', '#000')\n      .style('font-size', 17)\n      .attr('transform', `translate(${config.r},${config.r + 30})`)\n      .attr('text-anchor', 'middle')\n      .text(this.data.value + '%');\n  }\n\n  // Set the arcs for the speedometer\n  setArcs(config): void {\n    const arcs = this.svg.append('g').attr('class', 'arc').attr('transform', `translate(${config.r},${config.r})`);\n\n    arcs\n      .selectAll('path')\n      .data(config.dataForArcs)\n      .enter()\n      .append('path')\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2)\n      .attr('fill', (d, i) => this.getChartItemFill(i, config.arcColorFn, config.dataForArcs, false))\n      .attr('d', this.arc);\n  }\n\n  // Set the arc generator for the speedometer\n  setArc(config): void {\n    this.arc = d3\n      .arc()\n      .innerRadius(config.r - config.ringWidth - config.ringInset)\n      .outerRadius(config.r - config.ringInset)\n      .startAngle(function (d, i) {\n        const ratio = <any>d * i;\n        return SpeedometerChartComponent.deg2rad(config.minAngle + ratio * config.range);\n      })\n      .endAngle(function (d, i) {\n        const ratio = <any>d * (i + 1);\n        return SpeedometerChartComponent.deg2rad(config.minAngle + ratio * config.range);\n      });\n  }\n\n  // Draw the speedometer chart\n  draw(params?: ChartOptions): void {\n    super.draw(params);\n    if (this.isLoading) return;\n\n    const height = this.chartProps.chartWidth / 2;\n    const config = {\n      size: height + height / 1.05,\n      ringWidth: this.barWidth,\n      ringInset: 50,\n      dataForArcs: [],\n\n      minAngle: -90,\n      maxAngle: 90,\n\n      labelInset: 25,\n\n      arcColorFn: this.colorsService.calculate(this.data.sections, this.chartProps.initColors),\n      r: 0,\n      range: 0,\n    };\n\n    if (!this.chartHeight) {\n      this.svg.attr('height', height + this.chartProps.bottomPadding / 2);\n    }\n\n    config.range = config.maxAngle - config.minAngle;\n    config.r = config.size / 2;\n    config.dataForArcs = this.getDataForArcs();\n\n    this.setScale();\n    this.setArc(config);\n    this.setArcs(config);\n    this.setSectionLabels(config);\n    this.setPointer(config);\n    this.chartProps.hasLabels && this.setLabelProc(config);\n    this.chartProps.hasPatterns && this.addPatterns(config.dataForArcs, config.arcColorFn);\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_speedometer-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"[data]\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { Column, TableDataTypes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const DEFAULT_STACKED_BAR_CHART_ARIA_LABEL = 'Exact value';\nexport const DEFAULT_STACKED_BAR_CHART_GROUPING_PROP = 'strategy';\nexport const DEFAULT_STACKED_BAR_CHART_BOTTOM_PADDING = 10;\nexport const DEFAULT_STACKED_BAR_CHART_LEFT_PADDING = 15;\n\nexport const DEFAULT_STACKED_BAR_CHART_DATA = [\n  {\n    strategy: 'Strategy 01',\n    productA: '5',\n    productB: '3',\n    productC: '1',\n  },\n  {\n    strategy: 'Strategy 02',\n    productA: '4',\n    productB: '3',\n    productC: '2',\n  },\n  {\n    strategy: 'Strategy 03',\n    productA: '6',\n    productB: '4',\n    productC: '3',\n  },\n  {\n    strategy: 'Strategy 04',\n    productA: '5',\n    productB: '3',\n    productC: '2',\n  },\n  {\n    strategy: 'Strategy 05',\n    productA: '5',\n    productB: '4',\n    productC: '2',\n  },\n];\n\nexport const DEFAULT_TABLE_VIEW_COLUMNS: Column[] = [\n  { name: 'strategy', header: 'Strategy', dataType: TableDataTypes.string },\n  { name: 'productA', header: 'Product A', dataType: TableDataTypes.string },\n  { name: 'productB', header: 'Product B', dataType: TableDataTypes.string },\n  { name: 'productC', header: 'Product C', dataType: TableDataTypes.string },\n];\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { AdditionalClass, Column } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport * as d3 from 'd3';\nimport { ChartMenuComponent } from '../chart-menu/chart-menu.component';\nimport { ChartTableViewComponent } from '../chart-table-view/chart-table-view.component';\nimport { BaseChart, returnedPropsList } from '../services/base.chart';\nimport { ColorService } from '../services/color.service';\nimport { ToolsService } from '../services/tools.service';\nimport { ChartOptions, DEFAULT_CHART_COLORS, DEFAULT_CHART_SETTINGS } from '../typings';\nimport {\n  DEFAULT_STACKED_BAR_CHART_ARIA_LABEL,\n  DEFAULT_STACKED_BAR_CHART_BOTTOM_PADDING,\n  DEFAULT_STACKED_BAR_CHART_DATA,\n  DEFAULT_STACKED_BAR_CHART_GROUPING_PROP,\n  DEFAULT_STACKED_BAR_CHART_LEFT_PADDING,\n  DEFAULT_TABLE_VIEW_COLUMNS,\n} from './constants';\nimport { StackedBarChartData } from './typings';\n\n\n@Component({\n  selector: 'dds-stacked-bar-chart',\n  templateUrl: './stacked-bar-chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    ChartMenuComponent,\n    ChartTableViewComponent\n  ],\n})\nexport class StackedBarChartComponent extends BaseChart implements AfterViewInit, OnChanges {\n  // Bind the fullWidth class to the component\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) fullWidth = true;\n\n  // Listen for fullscreen change events and redraw the chart if exiting fullscreen\n  @HostListener('document:fullscreenchange')\n  onFullScreenChange() {\n    if (!Boolean(document.fullscreenElement)) this.draw(this.getResultObj());\n  }\n\n  // Reference to the chart container element\n  @ViewChild('chartContainer') chartContainer: ElementRef<HTMLElement>;\n\n  // Input properties for the chart component\n  @Input() chartTitle: string | undefined;\n  @Input() chartSubtitle: string | undefined;\n  @Input() chartDescription: string | undefined;\n  @Input() colors: string | undefined;\n  @Input() axisColor: string | undefined = DEFAULT_CHART_SETTINGS.axisColor;\n  @Input() xAxisDescription: string | undefined;\n  @Input() yAxisDescription: string | undefined;\n  @Input() groupingProp: string | undefined = DEFAULT_STACKED_BAR_CHART_GROUPING_PROP;\n  @Input() data: StackedBarChartData[] | undefined = DEFAULT_STACKED_BAR_CHART_DATA;\n  @Input() chartWidth: number | undefined;\n  @Input() chartHeight: number | undefined;\n  @Input() padding: number | undefined;\n  @Input() bottomPadding: number | undefined = DEFAULT_STACKED_BAR_CHART_BOTTOM_PADDING;\n  @Input() leftPadding: number | undefined = DEFAULT_STACKED_BAR_CHART_LEFT_PADDING;\n  @Input() barPadding: number | undefined;\n  @Input() ariaLabel: string | undefined = DEFAULT_STACKED_BAR_CHART_ARIA_LABEL;\n  @Input() hasLabels: boolean | undefined;\n  @Input() hasLegend: boolean | undefined;\n  @Input() hasTooltip: boolean | undefined;\n  @Input() hasPatterns: boolean | undefined;\n  @Input() patternsDisabledBg: boolean | undefined;\n  @Input() patternIds: string[] | undefined;\n  @Input() tableViewColumns: Column[] | undefined = DEFAULT_TABLE_VIEW_COLUMNS;\n  @Input() withFullScreen: boolean | undefined = true;\n  @Input() enableArrowNav: boolean | undefined = DEFAULT_CHART_SETTINGS.enableArrowNav;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isLoading: boolean | undefined;\n\n  // Initial chart colors and data properties\n  initColors = DEFAULT_CHART_COLORS;\n  formattedData: any;\n  groups: any;\n  domain: any;\n  initFormattedData: any[];\n\n  // Constructor to inject services\n  constructor(private ddsConfig: DdsConfigService, protected colorsService: ColorService, protected toolsService: ToolsService) {\n    super();\n  }\n\n  // Lifecycle hook to initialize the chart after the view is initialized\n  ngAfterViewInit(): void {\n    this.init();\n    this.draw(this.getResultObj());\n    this.initFormattedData = this.formattedData;\n  }\n\n  // Lifecycle hook to handle changes to input properties\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes && this.isContainerReady) {\n      this.draw(this.getResultObj());\n      this.initFormattedData = this.formattedData;\n    }\n  }\n\n  // Initialize the chart container\n  init(): void {\n    super.init(this.chartContainer);\n  }\n\n  // Get the chart options object\n  getResultObj(): ChartOptions {\n    const resultObj = <any>{};\n    this.initColors =\n      this.setCustomColors(this.colors) && this.setCustomColors(this.colors).length ? this.setCustomColors(this.colors) : this.initColors;\n    returnedPropsList.forEach((propName) => {\n      resultObj[propName] = this[propName];\n    });\n    return resultObj;\n  }\n\n  // Set the X scale for the chart\n  setX_Scale() {\n    this.xScale = d3\n      .scaleBand()\n      .domain(this.domain)\n      .rangeRound([10, this.chartProps.chartWidth - this.chartProps.leftPadding - this.chartProps.axisDescSpacing])\n      .padding(this.chartProps.barPadding);\n  }\n\n  // Set the Y scale for the chart\n  setY_Scale() {\n    this.yScale = d3\n      .scaleLinear()\n      .domain([0, d3.max(this.toolsService.getDomain(this.data, this.groupingProp, true).map((item) => +item)) + 2])\n      .range([this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing, 0]);\n  }\n\n  // Set the X axis for the chart\n  setX_Axis() {\n    const axis = d3.axisBottom(this.xScale);\n\n    this.svg\n      .append('g')\n      .attr('class', 'x-axis')\n      .attr(\n        'transform',\n        `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing - 10},${this.chartProps.chartHeight - this.chartProps.bottomPadding - this.chartProps.axisDescSpacing\n        })`\n      )\n      .style('color', this.axisColor)\n      .call(axis);\n  }\n\n  // Set the Y axis for the chart\n  setY_Axis() {\n    const axis = d3.axisLeft(this.yScale).ticks(10).tickSize(0);\n\n    this.svg\n      .append('g')\n      .attr('class', 'y-axis')\n      .attr('transform', `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing}, 5)`)\n      .style('color', this.axisColor)\n      .call(axis);\n  }\n\n  // Set the bars for the chart\n  setBars() {\n    const { mouseover, mousemove, mouseleave, focus, blur } = this.setTooltip();\n\n    const groups = this.svg\n      .selectAll('.cost')\n      .data(this.formattedData)\n      .enter()\n      .append('g')\n      .attr('transform', `translate(${this.chartProps.leftPadding + this.chartProps.axisDescSpacing}, 0)`)\n      .attr('class', 'cost')\n      .attr('stroke', this.chartProps.patternsDisabledBg ? '#000' : 'transparent')\n      .attr('stroke-width', 2)\n      .attr('fill', (d, i) => this.getChartItemFill(i, this.chartProps.colors));\n\n    groups\n      .selectAll('rect')\n      .data((d) => d.filter((item) => !item.hidden))\n      .enter()\n      .append('rect')\n      .attr('x', (d) => this.xScale(d.x))\n      .attr('y', (d: any) => this.yScale(d.y))\n      .attr('height', (d: any) => this.yScale(0) - this.yScale(d.y))\n      .attr('width', this.xScale.bandwidth())\n      .attr('tabindex', 0)\n      .attr('ddsFocus', '')\n      .attr('aria-label', (d) => this.ariaLabel + ' ' + d.x + ' ' + d.y)\n      .attr('role', 'option')\n      .attr('class', (d) => `chart__item chart__item__${d.group}`)\n      .on('mouseover', this.chartProps.hasTooltip ? mouseover : null)\n      .on('mousemove', this.chartProps.hasTooltip ? mousemove : null)\n      .on('mouseleave', this.chartProps.hasTooltip ? mouseleave : null)\n      .on('focus', this.chartProps.hasTooltip ? focus : null)\n      .on('blur', this.chartProps.hasTooltip ? blur : null);\n  }\n\n  // Set the tooltip for the chart\n  setTooltip() {\n    const Tooltip = d3\n      .select(this.chartSelector)\n      .style('position', 'relative')\n      .append('div')\n      .style('opacity', 0)\n      .attr('class', 'tooltip')\n      .attr('cursor', 'pointer')\n      .style('background-color', '#000')\n      .style('color', '#fff')\n      .style('padding', '7px 12px 9px')\n      .style('position', 'fixed')\n      .style('font-size', '12px')\n      .style('z-index', '1000');\n\n    const mouseover = function (d) {\n      Tooltip.style('opacity', 1);\n    };\n\n    const focus = function (d) {\n      const focusedElem = document.activeElement;\n      const posEl = focusedElem.getBoundingClientRect();\n\n      Tooltip.html(this.ariaLabel)\n        .style('opacity', 1)\n        .style('left', posEl.left + 20 + 'px')\n        .style('top', posEl.top + 20 + 'px');\n    };\n\n    const mousemove = function (event, d) {\n      Tooltip.html(this.ariaLabel)\n        .style('left', event.clientX + 20 + 'px')\n        .style('top', event.clientY + 'px');\n    };\n    const mouseleave = function (d) {\n      Tooltip.style('opacity', 0);\n    };\n\n    const blur = function (d) {\n      Tooltip.style('opacity', 0);\n    };\n\n    return {\n      mouseover,\n      mousemove,\n      mouseleave,\n      focus,\n      blur,\n    };\n  }\n\n  // Set the legend for the chart\n  setLegend(): void {\n    const keys = [];\n\n    this.groups.forEach((item) => {\n      keys.push(item);\n    });\n\n    const mouseover = (event, d) => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      const activeChartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item__${d}`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '0.1'));\n      if (activeChartItems) activeChartItems.forEach((activeChartItem) => (activeChartItem.style['opacity'] = '1'));\n    };\n\n    const mouseleave = () => {\n      const chartItems = document.querySelectorAll<HTMLElement>(`${this.chartSelector} .chart__item`);\n      chartItems.forEach((chartItem) => (chartItem.style['opacity'] = '1'));\n    };\n\n    const click = (event, d) => {\n      this.initFormattedData.forEach((array) =>\n        array.some((item) => {\n          if (item.group === d) {\n            item.hidden = !item.hidden;\n          }\n        })\n      );\n\n      this.formattedData = this.initFormattedData;\n\n      const updParams = this.legendUpdColors(this.initFormattedData, this.getResultObj());\n\n      this.draw(updParams, false);\n    };\n\n    const keydown = (event, itemLabel) => {\n      this.legendKeyHandler(event, itemLabel, click);\n    };\n\n    const checkHiddenFunc = (d) => {\n      let item;\n      this.formattedData.forEach((array) =>\n        array.filter((arrayItem) => {\n          if (arrayItem.group === d) item = arrayItem;\n        })\n      );\n      return item && item?.hidden ? 'legend__item legend__item_active' : 'legend__item';\n    };\n\n    this.addLegend({\n      keys,\n      checkHiddenFunc,\n      mouseover,\n      mouseleave,\n      keydown,\n      click,\n    });\n  }\n\n  // Prepare the data for the chart\n  prepareData(update = true) {\n    if (update) {\n      this.groups = this.toolsService.getGroups({ data: this.data, nonGroupNameFields: [this.groupingProp] });\n      this.domain = this.toolsService.getDomain(this.data, this.groupingProp);\n\n      this.formattedData = this.groups.map((propItem) => {\n        return this.data.map((dataItem) => {\n          return {\n            x: dataItem[this.groupingProp],\n            y: +dataItem[propItem],\n            group: propItem,\n            hidden: false,\n          };\n        });\n      });\n    }\n\n    this.chartProps.colors = this.colorsService.calculate(this.domain.length, this.chartProps.initColors);\n  }\n\n  // Draw the chart\n  draw(params?: ChartOptions, update = true): void {\n    super.draw(params);\n    if (this.isLoading) return;\n\n    this.prepareData(update);\n\n    this.setX_Scale();\n    this.setY_Scale();\n    this.setX_Axis();\n    this.setY_Axis();\n\n    this.setBars();\n    this.chartProps.hasLegend && this.setLegend();\n    this.chartProps.hasLabels && this.setLabels();\n    this.chartProps.hasPatterns && this.addPatterns(this.formattedData);\n\n    this.addAxisDescription();\n    this.enableArrowNav && this.initListManager();\n  }\n\n  // Add axis descriptions to the chart\n  private addAxisDescription(): void {\n    const descriptionSpacing = 25;\n    const padding = (this.bottomPadding || 0) - descriptionSpacing;\n\n    if (this.xAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'x-axis-description')\n        .attr('transform', 'translate(' + this.chartProps.chartWidth / 2 + ',' + (this.chartProps.chartHeight - padding / 2) + ')')\n        .style('text-anchor', 'middle')\n        .text(this.xAxisDescription);\n    }\n\n    if (this.yAxisDescription) {\n      this.svg\n        .append('text')\n        .attr('class', 'y-axis-description')\n        .attr('transform', 'rotate(-90)')\n        .attr('y', 0)\n        .attr('x', 0 - this.chartProps.chartHeight / 2)\n        .attr('dy', '1em')\n        .style('text-anchor', 'middle')\n        .text(this.yAxisDescription);\n    }\n  }\n\n  // Set labels for the chart\n  private setLabels(): void {\n    const labelYSpacing = 15;\n    const groups = this.svg.selectAll('.cost');\n\n    groups\n      .append('g')\n      .selectAll('.myLabels')\n      .data(this.formattedData)\n      .enter()\n      .append('g')\n      .selectAll('.myPoints')\n      .data((values) => values.filter((item) => !item.hidden))\n      .enter()\n      .append('text')\n      .attr('class', 'myLabels')\n      .text((d) => d.y)\n      .attr('x', (d) => this.xScale(d.x) + this.xScale.bandwidth() / 2)\n      .attr('y', (d: any) => this.yScale(d.y) + labelYSpacing)\n      .attr('font-size', 14)\n      .attr('fill', '#000')\n      .attr('text-anchor', 'middle');\n  }\n\n  // Toggle fullscreen mode for the chart\n  toggleFullScreen(chartWrap: HTMLElement): void {\n    this.toggleFullScreenMode(chartWrap, this.getResultObj());\n  }\n}\n","<div class=\"dds-chart dds-chart_stacked-bar-chart\"\n  #chartWrap>\n  <div class=\"dds-chart__header\">\n    @if (!isLoading) {\n      <dds-chart-menu\n        [withFullScreen]=\"withFullScreen\"\n        [hasTableView]=\"!!tableViewColumns\"\n        class=\"dds-chart__menu\"\n        (toggleFullScreen)=\"toggleFullScreen(chartWrap)\"\n      (toggleTableView)=\"toggleTableView()\"></dds-chart-menu>\n    }\n\n    @if (chartTitle || chartSubtitle) {\n      <div\n        class=\"dds-chart__info\">\n        @if (chartTitle) {\n          <h4\n          class=\"dds-h4 dds-chart__title\">{{chartTitle}}</h4>\n        }\n        @if (chartSubtitle) {\n          <h5\n          class=\"dds-h5 dds-chart__subtitle\">{{chartSubtitle}}</h5>\n        }\n      </div>\n    }\n\n  </div>\n\n  @if (isLoading) {\n    <div class=\"dds-chart__skeleton\">\n      <img src=\"assets/images/user.jpg\" alt=\"Loading\">\n    </div>\n  }\n\n  <div #chartContainer></div>\n\n  @if (tableViewStatus) {\n    <dds-chart-table-view\n      [data]=\"data\"\n    [columns]=\"tableViewColumns\"></dds-chart-table-view>\n  }\n\n  @if (chartDescription) {\n    <div\n    class=\"dds-chart__description\">{{chartDescription}}</div>\n  }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from '@usitsdasdesign/dds-ng/button';\nimport { ContextMenuModule } from '@usitsdasdesign/dds-ng/context-menu';\nimport { StickerModule } from '@usitsdasdesign/dds-ng/sticker';\nimport { AreaChartComponent } from './area-chart/area-chart.component';\nimport { AreaStackedChartComponent } from './area-stacked-chart/area-stacked-chart.component';\nimport { BarChartComponent } from './bar-chart/bar-chart.component';\nimport { BubbleChartComponent } from './bubble-chart/bubble-chart.component';\nimport { ChartMenuComponent } from './chart-menu/chart-menu.component';\nimport { FunnelChartComponent } from './funnel-chart/funnel-chart.component';\nimport { HeatMapChartComponent } from './heat-map-chart/heat-map-chart.component';\nimport { HistogramChartComponent } from './histogram-chart/histogram-chart.component';\nimport { HorizontalBarChartComponent } from './horizontal-bar-chart/horizontal-bar-chart.component';\nimport { HorizontalStackedBarChartComponent } from './horizontal-stacked-bar-chart/horizontal-stacked-bar-chart.component';\nimport { LineChartComponent } from './line-chart/line-chart.component';\nimport { PieChartProgressComponent } from './pie-chart-progress/pie-chart-progress.component';\nimport { PieChartComponent } from './pie-chart/pie-chart.component';\nimport { SpeedometerChartComponent } from './speedometer-chart/speedometer-chart.component';\nimport { StackedBarChartComponent } from './stacked-bar-chart/stacked-bar-chart.component';\nimport { ChartTableViewComponent } from './chart-table-view/chart-table-view.component';\n\n@NgModule({\n    imports: [CommonModule, ButtonModule, ContextMenuModule, StickerModule, BarChartComponent,\n        AreaChartComponent,\n        AreaStackedChartComponent,\n        BubbleChartComponent,\n        FunnelChartComponent,\n        HorizontalBarChartComponent,\n        PieChartComponent,\n        PieChartProgressComponent,\n        StackedBarChartComponent,\n        HorizontalStackedBarChartComponent,\n        HistogramChartComponent,\n        HeatMapChartComponent,\n        LineChartComponent,\n        SpeedometerChartComponent,\n        ChartMenuComponent,\n        ChartTableViewComponent],\n    exports: [\n        BarChartComponent,\n        AreaChartComponent,\n        AreaStackedChartComponent,\n        BubbleChartComponent,\n        FunnelChartComponent,\n        HorizontalBarChartComponent,\n        PieChartComponent,\n        PieChartProgressComponent,\n        StackedBarChartComponent,\n        HorizontalStackedBarChartComponent,\n        HistogramChartComponent,\n        HeatMapChartComponent,\n        LineChartComponent,\n        SpeedometerChartComponent,\n    ],\n})\nexport class ChartsModule {}\n","import colorConvert from 'color-convert';\n\nexport default class ColorsTools {\n  static plus(a, b) {\n    return a + b;\n  }\n\n  static minus(a, b) {\n    return a - b;\n  }\n\n  static getColorsPair(colors: string[]) {\n    if (colors.length <= 1) {\n      return;\n    }\n    const result = [];\n\n    for (let index = 1; index < colors.length; index++) {\n      result.push({\n        start: ColorsTools.getHslObject(colors[index - 1]),\n        end: ColorsTools.getHslObject(colors[index]),\n      });\n    }\n    return result;\n  }\n\n  static getHslObject(color: string) {\n    const hsl = colorConvert.hex.hsl(color);\n    return {\n      h: hsl[0],\n      s: hsl[1],\n      l: hsl[2],\n    };\n  }\n\n  static calculateStep(someStart, someEnd, iterations) {\n    const resultStart = someStart < someEnd ? someStart : someEnd;\n    const resultEnd = resultStart !== someEnd ? someEnd : someStart;\n    const step = (resultEnd - resultStart) / (iterations + 1);\n    const operator = someStart < someEnd ? 'plus' : 'minus';\n    return { step, operator };\n  }\n\n  static getColorsFromPairs(colorPairs) {\n    const resultColors = [];\n    const lastCoolor = colorPairs[colorPairs.length - 1];\n\n    colorPairs.forEach((pair) => {\n      // calculate steps\n      if (pair.iterations) {\n        pair.step = {\n          h: ColorsTools.calculateStep(pair.start.h, pair.end.h, pair.iterations),\n          s: ColorsTools.calculateStep(pair.start.s, pair.end.s, pair.iterations),\n          l: ColorsTools.calculateStep(pair.start.l, pair.end.l, pair.iterations),\n        };\n      }\n\n      resultColors.push([pair.start.h, pair.start.s, pair.start.l]);\n      for (let i = 1; i <= pair.iterations; i++) {\n        pair.start.h = ColorsTools[pair.step.h.operator](pair.start.h, pair.step.h.step);\n        pair.start.s = ColorsTools[pair.step.s.operator](pair.start.s, pair.step.s.step);\n        pair.start.l = ColorsTools[pair.step.l.operator](pair.start.l, pair.step.l.step);\n        resultColors.push([pair.start.h, pair.start.s, pair.start.l]);\n      }\n    });\n\n    resultColors.push([lastCoolor.end.h, lastCoolor.end.s, lastCoolor.end.l]);\n    return resultColors;\n  }\n\n  static getContrastColors(resultColors) {\n    const halfColorsCount = Math.round(resultColors.length / 2);\n    let halfStartIndex = Math.round(resultColors.length / 2);\n    let i = 0;\n\n    const contrastResult = [];\n\n    while (i < halfColorsCount) {\n      contrastResult.push(resultColors[i]);\n      if (resultColors[halfStartIndex]) {\n        contrastResult.push(resultColors[halfStartIndex]);\n      }\n      i++;\n      halfStartIndex++;\n    }\n    return contrastResult;\n  }\n\n  static isValidCalculateInputs(requestedColorsCount, inputColors) {\n    return !(requestedColorsCount < 2 || inputColors.length === 1 || inputColors.length === requestedColorsCount);\n  }\n\n  static calculate(requestedColorsCount: number, inputColors: string[] | [] = [], isContrast = false): string[] {\n    if (!this.isValidCalculateInputs(requestedColorsCount, inputColors)) return inputColors;\n\n    const colorPairs = this.getColorsPair(inputColors);\n    const colorsLeft = +requestedColorsCount - inputColors.length;\n    const iterations = Math.floor(colorsLeft / colorPairs.length);\n    let remainders = colorsLeft % colorPairs.length;\n\n    // add full iterations\n    if (iterations) {\n      colorPairs.forEach((item) => {\n        item.iterations = iterations;\n        if (remainders) {\n          item.iterations += 1;\n          remainders--;\n        }\n      });\n    }\n\n    // add iterations by remainders\n    if (remainders) {\n      for (let i = 0; i < remainders; i++) {\n        colorPairs[i].iterations ? (colorPairs[i].iterations += 1) : (colorPairs[i].iterations = 1);\n      }\n    }\n\n    const colorsFromPairs = ColorsTools.getColorsFromPairs(colorPairs);\n    const finalColors = isContrast ? ColorsTools.getContrastColors(colorsFromPairs) : colorsFromPairs;\n\n    return finalColors.map((hslItem) => {\n      return colorConvert.hsl.hex(hslItem);\n    });\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DEFAULT_AREA_CHART_X_VALUE","DEFAULT_TABLE_VIEW_COLUMNS","i2.ColorService","i3.ToolsService","DEFAULT_BAR_CHART_X_VALUE","DEFAULT_BAR_CHART_Y_VALUE"],"mappings":"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"}