{"version":3,"file":"pioneer-code-pioneer-charts.mjs","sources":["../../../projects/pioneer-charts/src/lib/core/chart.model.ts","../../../projects/pioneer-charts/src/lib/core/axis.builder.ts","../../../projects/pioneer-charts/src/lib/core/grid.builder.ts","../../../projects/pioneer-charts/src/lib/core/color.service.ts","../../../projects/pioneer-charts/src/lib/core/transition.service.ts","../../../projects/pioneer-charts/src/lib/core/tooltip.builder.ts","../../../projects/pioneer-charts/src/lib/core/chart.ts","../../../projects/pioneer-charts/src/lib/bar-chart/bar-horizontal-chart/bar-horizontal-chart.builder.ts","../../../projects/pioneer-charts/src/lib/bar-chart/bar-horizontal-chart/bar-horizontal-chart.component.ts","../../../projects/pioneer-charts/src/lib/bar-chart/bar-horizontal-chart/bar-horizontal-chart.component.html","../../../projects/pioneer-charts/src/lib/bar-chart/bar-horizontal-chart/bar-horizontal-chart.model.ts","../../../projects/pioneer-charts/src/lib/bar-chart/bar-vertical-chart/bar-vertical-chart.builder.ts","../../../projects/pioneer-charts/src/lib/bar-chart/bar-vertical-chart/bar-vertical-chart.component.ts","../../../projects/pioneer-charts/src/lib/bar-chart/bar-vertical-chart/bar-vertical-chart.component.html","../../../projects/pioneer-charts/src/lib/bar-chart/bar-vertical-chart/bar-vertical-chart.model.ts","../../../projects/pioneer-charts/src/lib/legend/legend.component.ts","../../../projects/pioneer-charts/src/lib/legend/legend.component.html","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/core/builders/effects.builders.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/plot-line-area-chart.model.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/core/builders/scales.builder.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/core/x-format.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/core/builders/line-generator.builder.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/core/builders/area-generator.builder.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/core/builders/zoom-behavior.builder.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/core/builders/chart.builder.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/plot-line-area-chart.component.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/plot-line-area-chart.component.html","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/plot/plot.component.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/plot/plot.component.html","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/plot/plot.model.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/line/line.component.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/line/line.component.html","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/line/line.model.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/area/area.component.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/area/area.component.html","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/area/area.model.ts","../../../projects/pioneer-charts/src/lib/plot-line-area-chart/public-api.ts","../../../projects/pioneer-charts/src/lib/pie-chart/pie-chart.builder.ts","../../../projects/pioneer-charts/src/lib/pie-chart/pie-chart.component.ts","../../../projects/pioneer-charts/src/lib/pie-chart/pie-chart.component.html","../../../projects/pioneer-charts/src/lib/pie-chart/pie-chart.model.ts","../../../projects/pioneer-charts/src/public-api.ts","../../../projects/pioneer-charts/src/pioneer-code-pioneer-charts.ts"],"sourcesContent":["/**\n * Base configuration for all charts.\n *    INewChart extends IChart\n */\nexport class PcacChartConfig {\n  /**\n   * Height in pixels\n   */\n  data: PcacData[] = []\n  height: number = 200\n}\n\nexport class PcacData {\n  key: string | number | null = null\n  value: string | number| null = null\n  hide: boolean = false\n  data: PcacData[] = []\n}\n\nexport enum PcacFormatEnum {\n  None = 'none',\n  Decimal = 'decimal',\n  DatasetLength = 'datasetLength',\n  Percentage = 'percentage',\n  Minutes = 'minutes',\n  DateTime = 'dateTime',\n  Fahrenheit = 'fahrenheit',\n\n  /**\n   * Expectation is we will be given a range of data from 0-23\n   * and we will map that to a 12 hour clock with am/pm\n   * e.g. 0 = 12am, 1 = 1am, 13 = 1pm, 23 = 11pm\n   */\n  OneDayHours = 'oneDayHours'\n}\n\n","import { Injectable } from '@angular/core';\nimport { axisBottom, axisLeft } from 'd3-axis';\nimport { BaseType, Selection } from 'd3-selection';\nimport { PcacFormatEnum } from './chart.model';\nimport { format } from 'd3-format';\n\nexport interface IPcacAxisBuilderConfig {\n  svg: Selection<BaseType, {}, HTMLElement, any>;\n  height: number;\n  xScale: any;\n  yScale: any;\n  numberOfTicks: number;\n  yFormat?: PcacFormatEnum;\n  xFormat?: PcacFormatEnum;\n  hideYAxis?: boolean;\n  hideXAxis?: boolean;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PcacAxisBuilder {\n  drawAxis(config: IPcacAxisBuilderConfig): void {\n    this.drawXAxis(config);\n    this.drawYAxis(config);\n  }\n\n  drawYAxis(config: IPcacAxisBuilderConfig) {\n    if (config.hideYAxis) return;\n\n    const yAxis = axisLeft(config.yScale).ticks(config.numberOfTicks);\n\n    if (config.yFormat) {\n      switch (config.yFormat.toLocaleLowerCase()) {\n        case PcacFormatEnum.Percentage:\n          yAxis.tickFormat(d => d + \"%\");\n          break;\n        case PcacFormatEnum.Minutes:\n          yAxis.tickFormat((d) => d + 'm');\n          break;\n        case PcacFormatEnum.Fahrenheit:\n          yAxis.tickFormat((d) => d + ' F');\n          break;\n      }\n    }\n\n    config.svg.append('g')\n      .attr('class', 'pcac-y-axis')\n      .call(yAxis);\n  }\n\n  drawXAxis(config: IPcacAxisBuilderConfig) {\n    if (config.hideYAxis) return;\n    config.svg.selectAll('.pcac-x-axis').remove();\n\n    const xAxis = axisBottom(config.xScale).ticks(config.numberOfTicks);\n\n    if (config.xFormat) {\n      switch (config.xFormat) {\n        case PcacFormatEnum.Percentage:\n          xAxis.tickFormat(d => d + \"%\");\n          break;\n        case PcacFormatEnum.Minutes:\n          xAxis.tickFormat((d) => d + 'm');\n          break;\n        case PcacFormatEnum.Fahrenheit:\n          xAxis.tickFormat((d) => d + 'f');\n          break;\n        case PcacFormatEnum.OneDayHours:\n          xAxis.tickFormat((d, i) => {\n            const h = d as number;\n            const hour = h % 12 === 0 ? 12 : h % 12;\n            const period = h < 12 ? 'am' : 'pm';\n            return `${hour}${period}`;\n          });\n          break;\n        case PcacFormatEnum.Decimal:\n          xAxis.tickFormat((d: any, i: number) => format(\".2s\")(d));\n          break;\n      }\n    }\n\n    config.svg.append('g')\n      .attr('class', 'pcac-x-axis')\n      .attr('transform', 'translate(0,' + config.height + ')')\n      .call(xAxis);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseType, Selection } from 'd3-selection';\n\nexport interface IPcacGridBuilderConfig {\n  svg: Selection<BaseType, {}, HTMLElement, any>;\n  /**\n   * Required for horizontal grid\n   */\n  width: number;\n  /**\n   * Required for vertical grid\n   */\n  height: number;\n  xScale: any;\n  yScale: any;\n  numberOfTicks: number;\n}\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PcacGridBuilder {\n  drawVerticalGrid(config: IPcacGridBuilderConfig): void {\n    config.svg.append('g')\n      .attr('class', 'pcac-grid')\n      .selectAll('g.rule')\n      .data(config.xScale.ticks(5))\n      .enter().append('svg:g')\n      .attr('class', 'pcac-grid-rule')\n      .attr('transform', (d): string => (`translate(${config.xScale(d)}, 0)`))\n      .append('svg:line')\n      .attr('y1', 0)\n      .attr('y2', config.height)\n      .attr('class', (d, i: number) => (i === 0 ? 'pcac-grid-rule-last' : ''));\n  }\n\n  drawHorizontalGrid(config: IPcacGridBuilderConfig): void {\n    config.svg.append('g')\n      .attr('class', 'pcac-grid')\n      .selectAll('g.pcac-grid-rule')\n      .data(config.yScale.ticks(config.numberOfTicks))\n      .enter().append('svg:g')\n      .attr('class', 'pcac-grid-rule')\n      .append('svg:line')\n      .attr('y1', (d) => config.yScale(d))\n      .attr('y2', (d) => config.yScale(d))\n      .attr('x1', 0)\n      .attr('x2', config.width)\n      .attr('class', (_, i) => (i === 0 ? 'pcac-grid-rule-last' : ''));\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PcacColorService {\n  private primary = '#43425d';\n  private primaryLight = '#a3a1fb';\n  private success = '#5ee2a0';\n  private danger = '#ff6565';\n  private warning = '#fec163';\n  private orange = '#ffa177';\n  private blue = '#55d8fe';\n  private scale = [\n    this.primaryLight,\n    this.success,\n    this.danger,\n    this.warning,\n    this.orange,\n    this.blue\n  ] as string[];\n  private alert = 'red';\n\n  /**\n   * Get a scale of colors dynamically\n   * @param numberOfNodes Number of items in dynamically build collection of colors\n   */\n  getColorScale(numberOfNodes: number): string[] {\n    const pallette = [] as string[];\n    for (let i = 0; i < numberOfNodes; i++) {\n      const mark = i % this.scale.length;\n      pallette.push(this.scale[mark]);\n    }\n    return pallette;\n  }\n\n  getAlert(): string {\n    return this.alert;\n  }\n\n  /**\n   * Set the scale that charts use to set colors of data[x] on the UI.\n   * @param colors A collection of hex values\n   */\n  setScale(colors: string[]): void {\n    this.scale = colors;\n  }\n\n  setPrimary(color: string): void {\n    this.primary = color;\n  }\n\n  setPrimaryLight(color: string): void {\n    this.primaryLight = color;\n  }\n\n  setSuccess(color: string): void {\n    this.success = color;\n  }\n\n  setDanger(color: string): void {\n    this.danger = color;\n  }\n\n  setOrange(color: string): void {\n    this.orange = color;\n  }\n\n  setBlue(color: string): void {\n    this.blue = color;\n  }\n\n  setAlert(): string {\n    return this.alert;\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PcacTransitionService {\n  private transitionDuration = 750;\n\n  getTransitionDuration(): number {\n    return this.transitionDuration;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { PcacData, PcacFormatEnum } from './chart.model';\nimport { select } from 'd3';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PcacTooltipBuilder {\n  public tooltip = select('body')\n    .append('div')\n    .attr('class', 'pcac-d3-tooltip') as any; // TODO: Strongly type\n\n  showBarTooltip(event: MouseEvent, data: PcacData, valueFormat?: PcacFormatEnum, keyFormat?: PcacFormatEnum): void {\n    this.tooltip.style('left', event.pageX - 60 + 'px')\n      .style('top', event.pageY - 55 + 'px')\n      .style('display', 'inline-block')\n      .html(this.getBarTipData(data, valueFormat, keyFormat));\n  }\n\n  hideTooltip(): void {\n    this.tooltip.style('display', 'none');\n  }\n\n  private getBarTipData(data: PcacData, valueFormat?: PcacFormatEnum, keyFormat?: PcacFormatEnum): string | null {\n    let value = data.value;\n    let key = data.key\n\n    if (valueFormat) {\n      switch (valueFormat) {\n        case PcacFormatEnum.Percentage:\n          value = value as number * 100 + '%';\n          break;\n        case PcacFormatEnum.Fahrenheit:\n          value = `${value} F`;\n          break;\n      }\n    }\n\n    if (key && keyFormat) {\n      switch (keyFormat) {\n        case PcacFormatEnum.DateTime:\n          key = new Date(key).toLocaleDateString('en-US', {\n            day: '2-digit',\n            month: '2-digit',\n            year: 'numeric',\n            hour: '2-digit',\n            minute: '2-digit',\n            second: '2-digit'\n          })\n          break;\n      }\n    }\n\n    let finalValue = value ? value.toString() : value;\n\n    return key ? key + '</br>' + finalValue : `${finalValue}`;\n  }\n}\n","import { axisLeft } from 'd3-axis';\nimport { BaseType, Selection } from 'd3-selection';\nimport { PcacAxisBuilder } from './axis.builder';\nimport { PcacGridBuilder } from './grid.builder';\nimport { PcacChartConfig } from './chart.model';\nimport { PcacColorService } from './color.service';\nimport { select } from 'd3-selection';\nimport { ElementRef, inject } from '@angular/core';\nimport { PcacData } from '.';\nimport { PcacTransitionService } from './transition.service';\nimport { PcacTooltipBuilder } from './tooltip.builder';\n\n\nexport class PcacChart {\n  axisBuilder = inject(PcacAxisBuilder);\n  gridBuilder = inject(PcacGridBuilder);\n  transitionService = inject(PcacTransitionService);\n  tooltipBuilder = inject(PcacTooltipBuilder);\n  colorService = inject(PcacColorService);\n\n  margin = { top: 8, right: 16, bottom: 20, left: 40 };\n  svg: Selection<BaseType, {}, HTMLElement, any> | any; // Typing?\n  width = 400;\n  height = 400;\n  colors = [] as string[];\n  startData = [] as any[]; // TODO: Strongly type\n  endData = [] as any[];\n\n  /**\n   * Prior to building a chart, we need to initialize the state of the chart\n   * @param chartElm Reference to SVG on dom\n   * @param config Chart specific configuration\n   */\n  initializeChartState(chartElm: ElementRef, config: PcacChartConfig): void {\n    select(chartElm.nativeElement).select('g').remove();\n    this.width = chartElm.nativeElement.parentNode.clientWidth - this.margin.left - this.margin.right;\n    this.height = config.height;\n    this.colors = this.colorService.getColorScale(Math.max(config.data.length, config.data[0].data ? config.data[0].data.length : 0));\n  }\n\n  /**\n   * 1) Set the width and height of the SVG\n   * 2) Add a group and translate it to state of {{center}} option\n   * @param chartElm Reference to SVG on dom\n   * @param center Are we pinning x,y to the top,left, or are we centering our drawing group inside the SVG.\n   */\n  buildContainer(chartElm: ElementRef, center = false): void {\n    const combinedHeight = this.height + this.margin.top + this.margin.bottom;\n    const combinedWidth = this.width + this.margin.left + this.margin.right;\n    this.svg = select(chartElm.nativeElement)\n      .attr('width', combinedWidth)\n      .attr('height', combinedHeight);\n    if (center) {\n      this.svg = this.svg\n        .append('g')\n        .attr('transform', 'translate(' + combinedWidth / 2 + ',' + combinedHeight / 2 + ')');\n      return;\n    }\n    this.svg = this.svg\n      .append('g')\n      .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')');\n  }\n\n  /**\n   * Most charts share a default margin(s) state.\n   * In some cases, that state needs to be calculated based on the content that resides in that margin.\n   * For example, labels on a horizontal bar chart are dynamic and such the margin needs to be calculated ahead of\n   * chart axis construction.\n   * @param chartElm Reference to SVG on dom\n   * @param data Generic multi-dimensional PcacData structure\n   * @param yScale D3 scale transformation object (d3.ScaleBand)\n   */\n  setHorizontalMarginsBasedOnContent(chartElm: ElementRef, data: PcacData[], yScale: any): void {\n    const axisY = axisLeft(yScale).ticks(5);\n    let max = 0;\n    select(chartElm.nativeElement).append('g')\n      .call(axisY)\n      .each((d, i, n: any) => {\n        if (n[i].getBBox().width > max) {\n          max = n[i].getBBox().width;\n        }\n      })\n      .remove();\n    this.margin.left = max;\n    this.margin.bottom = this.margin.bottom;\n    this.width = this.width - this.margin.left;\n  }\n}\n","import { Injectable, ElementRef } from '@angular/core';\nimport { color } from 'd3-color';\nimport { scaleBand, ScaleBand, scaleLinear, ScaleLinear } from 'd3-scale';\nimport { select, Selection, EnterElement } from 'd3-selection';\nimport { BaseType } from 'd3-selection';\nimport { Subject } from 'rxjs';\n\n/**\n * Lib\n */\nimport { PcacBarHorizontalChartConfig } from './bar-horizontal-chart.model';\nimport { IPcacGridBuilderConfig } from '../../core/grid.builder';\nimport { PcacChart } from '../../core/chart';\nimport { PcacData, PcacFormatEnum } from '../../core/chart.model';\n\ntype GroupType = Selection<Element |\n  EnterElement |\n  Document |\n  Window,\n  PcacData,\n  Element |\n  EnterElement |\n  Document |\n  Window,\n  PcacData>;\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class BarHorizontalChartBuilder extends PcacChart {\n  private xScale!: ScaleLinear<number, number>;\n  private yScaleStacked!: ScaleBand<string>;\n  private yScaleGrouped!: ScaleBand<string>;\n  private barClickedSource = new Subject<PcacData>();\n  private config!: PcacBarHorizontalChartConfig;\n  private cachedMargins: any;\n  barClicked$ = this.barClickedSource.asObservable();\n\n  buildChart(chartElm: ElementRef, config: PcacBarHorizontalChartConfig): void {\n    this.config = JSON.parse(JSON.stringify(config));\n    if (this.config.hideAxis) {\n      this.adjustForHiddenAxis();\n    }\n    this.initializeChartState(chartElm, this.config);\n\n    if(this.width <= 0) {\n      return; // TODO: Figure out why this is happening on initial load sometimes\n    }\n\n    if (config.colorOverride && config.colorOverride.colors) {\n      this.colors = config.colorOverride.colors.reverse();\n    }\n    this.buildScales(chartElm, this.config);\n    this.drawChart(chartElm, this.config);\n  }\n\n  private adjustForHiddenAxis() {\n    if (!this.cachedMargins) {\n      this.cachedMargins = JSON.parse(JSON.stringify(this.margin));\n    }\n    this.margin = JSON.parse(JSON.stringify(this.cachedMargins));\n    this.config.height = this.config.height + this.margin.top + this.margin.bottom;\n    this.margin.top = 0;\n    this.margin.bottom = 0;\n    this.margin.left = 0;\n    this.margin.right = 0;\n  }\n\n  private setStartState(data: PcacData): void {\n    if (data && data.data) {\n      for (let i = 0, l = data.data.length; i < l; ++i) {\n        data.data[i].value = 0;\n        this.setStartState(data.data[i]);\n      }\n    }\n  }\n\n  private buildScales(chartElm: ElementRef, config: PcacBarHorizontalChartConfig) {\n    config.data[0].data.map((d) => {\n      return d.value;\n    });\n\n    this.xScale = scaleLinear()\n      .domain([0, config.domainMax]);\n\n\n    this.yScaleStacked = scaleBand()\n      .domain(config.data.map((d) => d.key as string))\n      .range([this.height, 0])\n      .padding(0.1);\n\n    this.yScaleGrouped = scaleBand()\n      .padding(0.05)\n      .rangeRound([0, this.yScaleStacked.bandwidth()])\n      .domain(config.data[0].data.map((d) => d.key as string));\n\n    this.setHorizontalMarginsBasedOnContent(chartElm, config.data, this.yScaleStacked);\n\n    this.xScale.range([0, this.width]);\n  }\n\n  private drawChart(chartElm: ElementRef, config: PcacBarHorizontalChartConfig): void {\n    this.buildContainer(chartElm);\n    this.axisBuilder.drawAxis({\n      svg: this.svg,\n      numberOfTicks: config.numberOfTicks || 5,\n      height: this.height,\n      xScale: this.xScale,\n      yScale: this.yScaleStacked,\n      xFormat: config.tickFormat || PcacFormatEnum.None,\n      yFormat: PcacFormatEnum.None,\n      hideXAxis: config.hideAxis\n    });\n    if (!config.hideGrid) {\n      this.gridBuilder.drawVerticalGrid({\n        svg: this.svg,\n        numberOfTicks: config.numberOfTicks || 5,\n        height: this.height,\n        xScale: this.xScale,\n        yScale: this.yScaleStacked\n      } as IPcacGridBuilderConfig);\n    }\n    this.addGroups(config);\n  }\n\n  private addGroups(config: PcacBarHorizontalChartConfig) {\n    const groupsContainer = this.svg.append('g')\n      .attr('class', 'pcac-bars')\n      .selectAll('g')\n      .data(config.data)\n      .enter().append('g')\n      .attr('class', 'pcac-bar-group')\n      .attr('data-group-id', (d: PcacData, i: number) => {\n        return i;\n      })\n      .attr('transform', (d: PcacData) => 'translate(0,' + this.yScaleStacked(d.key as string) + ')');\n\n    const group = groupsContainer.selectAll('rect')\n      .data((d: PcacData) => {\n        return d.data;\n      });\n\n    this.drawBarsPerGroup(group, config);\n\n    // We have no thresholds to draw\n    if (!config.thresholds) {\n      return;\n    }\n\n    // Draw threshold across entire chart\n    if (config.thresholds.length === 1 && !config.thresholds[0].data) {\n      this.drawThresholdAcrossChart(config);\n    }\n\n    // Draw threshold across each group\n    if (config.thresholds.length > 1 && (!config.thresholds[0].data || config.isStacked)) {\n      this.drawThresholdsPerGroup(group, config);\n    }\n\n    // Draw threshold across each bar in group\n    if (config.thresholds.length > 1 && config.thresholds[0].data && !config.isStacked) {\n      this.drawThresholdsPerBarInGroup(group, config);\n    }\n  }\n\n  private drawBarsPerGroup(groups: GroupType, config: PcacBarHorizontalChartConfig) {\n    const self = this;\n    groups.enter().append('rect')\n      .attr('class', 'pcac-bar')\n      .attr('x', 0)\n      .attr('y', (d: PcacData) => {\n        let value = !config.isStacked ? this.yScaleGrouped(d.key as string) : this.yScaleStacked(d.key as string)\n        return value ? value : 0;\n      })\n      .attr('data-group-bar-id', (_: PcacData, i: number) => {\n        return i;\n      })\n      .attr('height', !config.isStacked ? this.yScaleGrouped.bandwidth() : this.yScaleStacked.bandwidth())\n      .style('fill', (d: PcacData, i: number, n: any) => {\n        if (config.spreadColorsPerGroup) {\n          const groupIndex = parseInt(n[0].parentNode.getAttribute('data-group-id'), 10);\n          return this.colors[groupIndex];\n        }\n        return this.colors[i];\n      })\n      .attr('width', 0)\n      .on('mouseover', function (this: any, event: MouseEvent, d: PcacData) {\n        select(this\n          .transition()\n          .duration(this.transitionService.getTransitionDuration() / 7.5))\n          .style('fill', () => {\n            if (config.spreadColorsPerGroup) {\n              const groupIndex = parseInt(this.parentNode.getAttribute('data-group-id'), 10);\n              const c = color(self.colors[groupIndex])\n              const ct = c ? c.darker(1).toString() : self.colors[groupIndex]\n              return ct\n            }\n            const groupIndex = parseInt(this.getAttribute('data-group-bar-id'), 10);\n            const c = color(self.colors[groupIndex])\n            const ct = c ? c.darker(1).toString() : self.colors[groupIndex]\n            return ct\n          });\n      })\n      .on('mousemove', (event: MouseEvent, d: PcacData) => {\n        self.tooltipBuilder.showBarTooltip(event, d, config.tickFormat || PcacFormatEnum.None);\n      })\n      .on('mouseout', function (this: any, event: MouseEvent, d: PcacData) {\n        self.tooltipBuilder.hideTooltip();\n        select(this)\n          .transition()\n          .duration(this.transitionService.getTransitionDuration() / 5)\n          .style('fill', () => {\n            if (config.spreadColorsPerGroup) {\n              const groupIndex = parseInt(this.parentNode.getAttribute('data-group-id'), 10);\n              return self.colors[groupIndex];\n            }\n            const groupIndex = parseInt(this.getAttribute('data-group-bar-id'), 10);\n            return self.colors[groupIndex];\n          });\n      })\n      .on('click', (d: PcacData) => {\n        this.barClickedSource.next(d);\n      })\n      .transition()\n      .duration(this.transitionService.getTransitionDuration())\n      .attr('width', (d: PcacData) => {\n        return this.xScale(d.value as number);\n      });\n  }\n\n  private drawThresholdAcrossChart(config: PcacBarHorizontalChartConfig) {\n    this.applyPreTransitionThresholdStyles(this.svg.select('.pcac-bars').append('rect'), config)\n      .attr('height', this.height)\n      .attr('data-group-threshold-id', (_: PcacData, i: number) => {\n        return i;\n      })\n      .on('mousemove', (event: MouseEvent, _: PcacData) => {\n        this.tooltipBuilder.showBarTooltip(event, config.thresholds[0], config.tickFormat || PcacFormatEnum.None);\n      })\n      .transition()\n      .duration(this.transitionService.getTransitionDuration())\n      .attr('x', (d: PcacData, i: number) => {\n        return this.xScale(config.thresholds[i].value as number);\n      });\n  }\n\n  private drawThresholdsPerGroup(group: GroupType, config: PcacBarHorizontalChartConfig) {\n    const self = this\n    this.applyPreTransitionThresholdStyles(this.svg.selectAll('.pcac-bar-group').append('rect'), config)\n      .attr('height', this.yScaleStacked.bandwidth())\n      .attr('data-group-threshold-id', (_: PcacData, i: number) => {\n        return i;\n      })\n      .on('mousemove', function (this: any, event: MouseEvent, d: PcacData, i: number) {\n        const index = Number(this.parentElement.dataset['groupId'])\n        self.tooltipBuilder.showBarTooltip(event,\n          config.isStacked ?\n            config.thresholds[index].data[0] :\n            config.thresholds[index],\n          config.tickFormat || PcacFormatEnum.None\n        );\n      })\n      .transition()\n      .duration(this.transitionService.getTransitionDuration())\n      .attr('x', (_: PcacData, i: number) => {\n        return this.xScale(config.isStacked ? config.thresholds[i].data[0].value as number : config.thresholds[i].value as number);\n      });\n  }\n\n  private drawThresholdsPerBarInGroup(group: GroupType, config: PcacBarHorizontalChartConfig) {\n    const self = this\n    this.applyPreTransitionThresholdStyles(group.enter().append('rect'), config)\n      .attr('data-group-threshold-id', (_: PcacData, i: number) => {\n        return i;\n      })\n      .attr('height', this.yScaleGrouped.bandwidth())\n      .on('mousemove', function (this: any, event: MouseEvent, d: PcacData, i: number, n: any) {\n        const target = event.target as Element\n        const index = Number(target.getAttribute(\"data-group-threshold-id\"))\n        self.tooltipBuilder.showBarTooltip(event,\n          config.thresholds[Number(this.parentElement.dataset['groupId'])].data[index],\n          config.tickFormat || PcacFormatEnum.None\n        );\n      })\n      .transition()\n      .duration(this.transitionService.getTransitionDuration())\n      .attr('y', (d: PcacData) => {\n        return this.yScaleGrouped(d.key as string);\n      })\n      .attr('x', (d: PcacData, i: number, n: any) => {\n        return this.xScale(config.thresholds[n[0].parentElement.dataset['groupId']].data[i].value as number);\n      });\n  }\n\n  private applyPreTransitionThresholdStyles(elm: Selection<BaseType, {}, HTMLElement, any> | any, config: PcacBarHorizontalChartConfig) {\n    return elm.attr('class', 'pcac-threshold')\n      .style('fill', () => {\n        return this.colorService.getAlert();\n      })\n      .style('stroke', () => {\n        return this.colorService.getAlert();\n      })\n      .style('stroke-width', () => {\n        return 2;\n      })\n      .attr('width', '3px')\n      .on('mouseout', () => {\n        this.tooltipBuilder.hideTooltip();\n      });\n  }\n}\n","import { Component, ElementRef, OnChanges, HostListener, ViewEncapsulation, inject, viewChild, output, input, ChangeDetectionStrategy } from '@angular/core';\nimport { BarHorizontalChartBuilder } from './bar-horizontal-chart.builder';\nimport { PcacBarHorizontalChartConfig } from './bar-horizontal-chart.model';\nimport { PcacData } from '../../core';\n\n@Component({\n  selector: 'pcac-bar-horizontal-chart',\n  templateUrl: './bar-horizontal-chart.component.html',\n  styleUrls: ['./bar-horizontal-chart.component.scss'],\n  changeDetection: ChangeDetectionStrategy.Eager,\n  encapsulation: ViewEncapsulation.None\n})\nexport class PcacBarHorizontalChartComponent implements OnChanges {\n  private chartBuilder = inject(BarHorizontalChartBuilder);\n\n  readonly config = input.required<PcacBarHorizontalChartConfig>();\n  readonly chartElm = viewChild.required<ElementRef>('chart');\n  readonly barClicked = output<PcacData>();\n\n  private resizeWindowTimeout: any;\n\n  constructor() {\n    this.chartBuilder.barClicked$.subscribe(data => {\n      this.barClicked.emit(data);\n    });\n  }\n\n  ngOnChanges() {\n    this.buildChart();\n  }\n\n  buildChart(): void {\n    const config = this.config();\n    if (config && config.data && config.data.length > 0) {\n      this.chartBuilder.buildChart(this.chartElm(), config);\n    }\n  }\n\n  /**\n   * Opting against fromEvent due to incompatibility with rxjs 5 => 6\n   */\n  @HostListener('window:resize')\n  onResize() {\n    const self = this;\n    clearTimeout(this.resizeWindowTimeout);\n    this.resizeWindowTimeout = setTimeout(() => {\n        self.buildChart();\n    }, 300);\n  }\n}\n","<section class=\"pcac-bar-horizontal-chart\">\n  <svg #chart></svg>\n</section>\n","import { PcacChartConfig, PcacData, PcacFormatEnum } from '../../core/chart.model';\n\nexport class PcacBarHorizontalChartConfig extends PcacChartConfig {\n  domainMax: number = 100;\n  numberOfTicks: number = 5;\n  isStacked: boolean = false;\n  thresholds: PcacData[] = [];\n  tickFormat: PcacFormatEnum = PcacFormatEnum.None\n  hideGrid: boolean = false\n  hideAxis: boolean = false\n  spreadColorsPerGroup: boolean = false\n  colorOverride: PcacBarHorizontalChartColorOverrideConfig = new PcacBarHorizontalChartColorOverrideConfig()\n}\n\nexport class PcacBarHorizontalChartColorOverrideConfig {\n  colors: string[] = []\n}\n","import { Injectable, ElementRef } from '@angular/core';\n\nimport { select, Selection, EnterElement, BaseType } from 'd3-selection';\nimport { scaleBand, ScaleBand, scaleLinear, ScaleLinear } from 'd3-scale';\nimport { color } from 'd3-color';\nimport { transition } from 'd3-transition';\n\n/**\n * Lib\n */\nimport { PcacBarVerticalChartConfig } from './bar-vertical-chart.model';\nimport { IPcacGridBuilderConfig } from '../../core/grid.builder';\nimport { PcacChart } from '../../core/chart';\nimport { PcacData, PcacFormatEnum } from '../../core/chart.model';\n\nimport { Subject } from 'rxjs';\n\ntype GroupType = Selection<Element |\n  EnterElement |\n  Document |\n  Window,\n  PcacData,\n  Element |\n  EnterElement |\n  Document |\n  Window,\n  PcacData>;\n\nexport interface IBarVerticalChartBuilder {\n  buildChart(chartElm: ElementRef, config: PcacBarVerticalChartConfig): void;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class BarVerticalChartBuilder extends PcacChart {\n  private xScaleStacked!: ScaleBand<string>;\n  private xScaleGrouped!: ScaleBand<string>;\n  private yScale!: ScaleLinear<number, number>;\n  private barClickedSource = new Subject<PcacData>();\n  barClicked$ = this.barClickedSource.asObservable();\n\n\n\n  buildChart(chartElm: ElementRef, config: PcacBarVerticalChartConfig): void {\n    if (config.colorOverride && config.colorOverride.colors) {\n      this.colors = config.colorOverride.colors;\n    }\n    if (config.hideAxis) {\n      this.adjustForHiddenAxis(config);\n    }\n    this.initializeChartState(chartElm, config);\n\n    if(this.width <= 0) {\n      return; // TODO: Figure out why this is happening on initial load sometimes\n    }\n\n    if (config.colorOverride && config.colorOverride.colors) {\n      this.colors = config.colorOverride.colors.reverse();\n    }\n    this.buildScales(config);\n    this.drawChart(chartElm, config);\n  }\n\n  private adjustForHiddenAxis(config: PcacBarVerticalChartConfig) {\n    const hasGroupLabel = this.hasGroupLabel(config);\n\n    config.height = config.height + this.margin.top;\n    if (!hasGroupLabel) {\n      config.height = config.height + this.margin.bottom;\n    }\n    this.margin.top = 0;\n    this.margin.bottom = hasGroupLabel ? this.margin.bottom : 0;\n    this.margin.left = 0;\n    this.margin.right = 0;\n  }\n\n  private hasGroupLabel(config: PcacBarVerticalChartConfig) {\n    let hasGroupLabel = false;\n    config.data.forEach(node => {\n      if (node.key) {\n        hasGroupLabel = true;\n      }\n    });\n    return hasGroupLabel;\n  }\n\n  private buildScales(config: PcacBarVerticalChartConfig) {\n    this.yScale = scaleLinear()\n      .rangeRound([0, config.height])\n      .domain([config.domainMax, 0]);\n\n    this.xScaleStacked = scaleBand()\n      .domain(config.data.map((d) => d.key as string))\n      .rangeRound([0, this.width])\n      .padding(0.1);\n\n    this.xScaleGrouped = scaleBand()\n      .padding(0.2)\n      .rangeRound([0, this.xScaleStacked.bandwidth()])\n      .domain(config.data[0].data.map((d) => d.key as string));\n  }\n\n  private drawChart(chartElm: ElementRef, config: PcacBarVerticalChartConfig): void {\n    this.buildContainer(chartElm);\n    this.axisBuilder.drawAxis({\n      svg: this.svg,\n      numberOfTicks: config.numberOfTicks || 5,\n      height: this.height,\n      xScale: this.xScaleStacked,\n      yScale: this.yScale,\n      xFormat: PcacFormatEnum.None,\n      yFormat: config.tickFormat || PcacFormatEnum.None,\n      hideYAxis: config.hideAxis\n    });\n    if (!config.hideGrid) {\n      this.gridBuilder.drawHorizontalGrid({\n        svg: this.svg,\n        numberOfTicks: config.numberOfTicks || 5,\n        width: this.width,\n        xScale: this.xScaleStacked,\n        yScale: this.yScale\n      } as IPcacGridBuilderConfig);\n    }\n    this.addGroups(config);\n  }\n\n  private addGroups(config: PcacBarVerticalChartConfig) {\n    const groupsContainer = this.svg.append('g')\n      .attr('class', 'pcac-bars')\n      .selectAll('g')\n      .data(config.data)\n      .enter().append('g')\n      .attr('class', 'pcac-bar-group')\n      .attr('data-group-id', (d: PcacData, i: number) => {\n        return i;\n      })\n      .attr('transform', (d: PcacData, i: number) => {\n        return 'translate(' + this.xScaleStacked(d.key as string) + ',0)';\n      });\n\n    const group = groupsContainer.selectAll('rect')\n      .data((d: PcacData, i: number) => {\n        return d.data;\n      });\n\n    this.drawBarsPerGroup(group, config);\n\n    // We have no thresholds to draw\n    if (!config.thresholds) {\n      return;\n    }\n\n    // Draw threshold across entire chart\n    if (config.thresholds.length === 1 && !config.thresholds[0].data) {\n      this.drawThresholdAcrossChart(config);\n    }\n\n    // Draw threshold across each group\n    if (config.thresholds.length > 1 && (!config.thresholds[0].data || config.isStacked)) {\n      this.drawThresholdsPerGroup(group, config);\n    }\n\n    // Draw threshold across each bar in group\n    if (config.thresholds.length > 1 && config.thresholds[0].data && !config.isStacked) {\n      this.drawThresholdsPerBarInGroup(group, config);\n    }\n  }\n\n  private drawBarsPerGroup(group: GroupType, config: PcacBarVerticalChartConfig) {\n    const self = this;\n    group.enter().append('rect')\n      .attr('class', 'pcac-bar')\n      .attr('x', (d: PcacData, i: number) => {\n        let value = !config.isStacked ? this.xScaleGrouped(d.key as string) : this.xScaleStacked(d.key as string)\n        return value ? value : 0;\n      })\n      .attr('data-group-bar-id', (_: PcacData, i: number) => {\n        return i;\n      })\n      .style('fill', (d: PcacData, i: number, n: any) => {\n        if (config.spreadColorsPerGroup) {\n          const groupIndex = parseInt(n[0].parentNode.getAttribute('data-group-id'), 10);\n          return this.colors[groupIndex];\n        }\n        return this.colors[i];\n      })\n      .attr('y', () => {\n        return this.height;\n      })\n      .attr('height', 0)\n      .on('mouseover', function (this: any, event: MouseEvent, d: PcacData) {\n        select(this)\n          .transition()\n          .duration(self.transitionService.getTransitionDuration() / 5)\n          .style('fill', () => {\n            if (config.spreadColorsPerGroup) {\n              const groupIndex = parseInt(this.parentNode.getAttribute('data-group-id'), 10);\n              const c = color(self.colors[groupIndex])\n              const ct = c ? c.darker(1).toString() : self.colors[groupIndex]\n              return ct\n            }\n            const groupIndex = parseInt(this.getAttribute('data-group-bar-id'), 10);\n            const c = color(self.colors[groupIndex])\n            const ct = c ? c.darker(1).toString() : self.colors[groupIndex]\n            return ct\n          });\n      })\n      .on('mousemove', (event: MouseEvent, d: PcacData) => {\n        self.tooltipBuilder.showBarTooltip(event, d, config.tickFormat || PcacFormatEnum.None);\n      })\n      .on('mouseout', function (this: any, d: PcacData) {\n        self.tooltipBuilder.hideTooltip();\n        select(this)\n          .transition()\n          .duration(self.transitionService.getTransitionDuration() / 5)\n          .style('fill', () => {\n            if (config.spreadColorsPerGroup) {\n              const groupIndex = parseInt(this.parentNode.getAttribute('data-group-id'), 10);\n              return self.colors[groupIndex];\n            }\n            const groupIndex = parseInt(this.getAttribute('data-group-bar-id'), 10);\n            return self.colors[groupIndex];\n          });\n      })\n      .on('click', (_, d: PcacData) => {\n        this.barClickedSource.next(d);\n      })\n      .transition()\n      .duration(this.transitionService.getTransitionDuration())\n      // .transition(\n      //   transition().duration(this.transitionService.getTransitionDuration())\n      // )\n      .attr('width', !config.isStacked ? this.xScaleGrouped.bandwidth() : this.xScaleStacked.bandwidth())\n      .attr('y', (d: PcacData) => {\n        return this.yScale(d.value as number);\n      })\n      .attr('height', (d: PcacData) => {\n        return this.height - this.yScale(d.value as number);\n      });\n  }\n\n  private drawThresholdAcrossChart(config: PcacBarVerticalChartConfig) {\n    this.applyPreTransitionThresholdStyles(this.svg.select('.pcac-bars').append('rect'), config)\n      .attr('width', this.width)\n      .attr('data-group-threshold-id', (_: PcacData, i: number) => {\n        return i;\n      })\n      .on('mousemove', (event: MouseEvent, d: PcacData, i: number) => {\n        this.tooltipBuilder.showBarTooltip(event, config.thresholds[0], config.tickFormat || PcacFormatEnum.None);\n      })\n      .transition()\n      .duration(this.transitionService.getTransitionDuration())\n      .attr('y', (d: PcacData, i: number) => {\n        return this.yScale(config.thresholds[i].value as number);\n      });\n  }\n\n  private drawThresholdsPerGroup(group: GroupType, config: PcacBarVerticalChartConfig) {\n    const self = this\n    this.applyPreTransitionThresholdStyles(this.svg.selectAll('.pcac-bar-group').append('rect'), config)\n      .attr('width', this.xScaleStacked.bandwidth())\n      .attr('data-group-threshold-id', (_: PcacData, i: number) => {\n        return i;\n      })\n      .on('mousemove', function (this: any, event: MouseEvent) {\n        const index = Number(this.parentElement.dataset['groupId'])\n        self.tooltipBuilder.showBarTooltip(event, config.isStacked ?\n          config.thresholds[index].data[0] :\n          config.thresholds[index],\n          config.tickFormat || PcacFormatEnum.None\n        );\n      })\n      .transition()\n      .duration(this.transitionService.getTransitionDuration())\n      .attr('y', (d: PcacData, i: number) => {\n        return this.yScale(config.isStacked ? config.thresholds[i].data[0].value as number : config.thresholds[i].value as number);\n      });\n  }\n\n  private drawThresholdsPerBarInGroup(group: GroupType, config: PcacBarVerticalChartConfig) {\n    const self = this\n    this.applyPreTransitionThresholdStyles(group.enter().append('rect'), config)\n      .attr('data-group-threshold-id', (_: PcacData, i: number) => {\n        return i;\n      })\n      .on('mousemove', function (this: any, event: MouseEvent, _: PcacData) {\n        const target = event.target as Element\n        const index = Number(target.getAttribute(\"data-group-threshold-id\"))\n        self.tooltipBuilder.showBarTooltip(\n          event,\n          config.thresholds[Number(this.parentElement.dataset['groupId'])].data[index],\n          config.tickFormat || PcacFormatEnum.None\n        );\n      })\n      .attr('width', this.xScaleGrouped.bandwidth())\n      .transition()\n      .duration(this.transitionService.getTransitionDuration())\n      .attr('y', (d: PcacData, i: number, n: any) => {\n        return this.yScale(config.thresholds[n[0].parentElement.dataset['groupId']].data[i].value as number);\n      });\n  }\n\n  private applyPreTransitionThresholdStyles(elm: Selection<BaseType, {}, HTMLElement, any> | any, config: PcacBarVerticalChartConfig) {\n    return elm.attr('class', 'pcac-threshold')\n      .attr('x', (d: PcacData) => {\n        return this.xScaleGrouped(d ? d.key as string : '');\n      })\n      .attr('y', () => {\n        return this.height;\n      })\n      .attr('height', 0)\n      .style('fill', () => {\n        return this.colorService.getAlert();\n      })\n      .style('stroke', () => {\n        return this.colorService.getAlert();\n      })\n      .style('stroke-width', () => {\n        return 2;\n      })\n      .on('mouseout', () => {\n        this.tooltipBuilder.hideTooltip();\n      })\n      .attr('height', () => {\n        return '3px';\n      });\n  }\n}\n","import { Component, ElementRef, OnChanges, HostListener, ViewEncapsulation, inject, viewChild, output, input, ChangeDetectionStrategy } from '@angular/core';\nimport { BarVerticalChartBuilder } from './bar-vertical-chart.builder';\nimport { PcacBarVerticalChartConfig } from './bar-vertical-chart.model';\nimport { PcacData } from '../../core';\n\n@Component({\n  selector: 'pcac-bar-vertical-chart',\n  templateUrl: './bar-vertical-chart.component.html',\n  styleUrls: ['./bar-vertical-chart.component.scss'],\n  changeDetection: ChangeDetectionStrategy.Eager,\n  encapsulation: ViewEncapsulation.None\n})\nexport class PcacBarVerticalChartComponent implements OnChanges {\n  private chartBuilder = inject(BarVerticalChartBuilder);\n\n  readonly config = input.required<PcacBarVerticalChartConfig>();\n  readonly chartElm = viewChild.required<ElementRef>('chart');\n  readonly barClicked = output<PcacData>();\n\n  private resizeWindowTimeout: any;\n\n  constructor() {\n    this.chartBuilder.barClicked$.subscribe(data => {\n      this.barClicked.emit(data);\n    });\n  }\n\n  ngOnChanges() {\n    this.buildChart();\n  }\n\n  buildChart(): void {\n    const config = this.config();\n    if (config && config.data && config.data.length > 0) {\n      this.chartBuilder.buildChart(this.chartElm(), config);\n    }\n  }\n\n  /**\n   * Opting against fromEvent due to incompatibility with rxjs 5 => 6\n   */\n  @HostListener('window:resize')\n  onResize() {\n    const self = this;\n    clearTimeout(this.resizeWindowTimeout);\n    this.resizeWindowTimeout = setTimeout(() => {\n      self.buildChart();\n    }, 300);\n  }\n}\n","<section class=\"pcac-bar-vertical-chart\">\n  <svg #chart></svg>\n</section>\n","import { PcacChartConfig, PcacData, PcacFormatEnum } from '../../core/chart.model';\n\nexport class PcacBarVerticalChartConfig extends PcacChartConfig {\n  domainMax: number = 100;\n  numberOfTicks: number = 5;\n  isStacked: boolean = false;\n  thresholds: PcacData[] = [];\n  tickFormat: PcacFormatEnum = PcacFormatEnum.None\n  hideGrid: boolean = false\n  hideAxis: boolean = false\n  spreadColorsPerGroup: boolean = false\n  colorOverride: PcacBarVerticalChartColorOverrideConfig = new PcacBarVerticalChartColorOverrideConfig()\n}\n\nexport class PcacBarVerticalChartColorOverrideConfig {\n  colors: string[] = []\n}\n","import { Component, computed, inject, model, output, ChangeDetectionStrategy } from '@angular/core';\nimport { PcacColorService } from '../core';\n\nexport class PcacLegendConfigItem {\n  label!: string;\n  checked: boolean = true;\n  colorOverride: string | null = null;\n}\n\nexport class PcacLegendConfig {\n  heading: string | null = null;\n  items: PcacLegendConfigItem[] = [];\n}\n\n@Component({\n  selector: 'pcac-legend',\n  templateUrl: './legend.component.html',\n  changeDetection: ChangeDetectionStrategy.Eager,\n  styleUrls: ['./legend.component.scss'],\n})\nexport class PcacLegend {\n  readonly colorService = inject(PcacColorService);\n  config = model.required<PcacLegendConfig>();\n  itemClicked = output<PcacLegendConfigItem[]>();\n\n  colorScale = computed(() => \n    this.colorService.getColorScale(this.config().items.length)\n  );\n\n  onItemClicked(index: number) {\n    const data = this.config();\n    data.items[index].checked = !data.items[index].checked;\n    this.config.set(data);\n    this.itemClicked.emit(data.items);\n  }\n}\n","<label class=\"pcac-legend-label\"><small>{{config().heading}}</small></label>\n@for(item of config().items; track item; let i = $index; let first = $first; let last = $last;) {\n<div class=\"pcac-legend-item\" [class.pcac-legend-item-last]=\"last\" [class.pcac-legend-unchecked]=\"!item.checked\"\n  (click)=\"onItemClicked(i)\">\n  @let color =  item.colorOverride ? item.colorOverride : colorScale()[i];\n  <div class=\"pcac-legend-circle\" [style.backgroundColor]=\"color\"></div>\n  <small>{{ item.label }}</small>\n</div>\n}","import { Selection, BaseType } from 'd3-selection';\nimport { ScaleLinear } from 'd3-scale';\nimport { PcacData } from '../../../core';\nimport { Injectable } from '@angular/core';\nimport { select } from 'd3-selection';\nimport { ScaleTime } from 'd3';\n\nexport interface IPlaChartEffectsBuilderConfig {\n  colors: string[];\n  data: PcacData[];\n  width: number;\n  height: number;\n  svg: Selection<BaseType, {}, HTMLElement, any>;\n  x: ScaleLinear<number, number> | ScaleTime<number, number, never>;\n  y: ScaleLinear<number, number> | ScaleTime<number, number, never>;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PlaChartEffectsBuilder {\n  private config!: IPlaChartEffectsBuilderConfig;\n  private lines = [] as any[];\n\n  buildEffects(config: IPlaChartEffectsBuilderConfig): void {\n    this.config = config;\n    this.lines = [] as any[];\n    this.config.svg.selectAll('.line').each((d, i, n) => {\n      this.lines.push(n[i]);\n    });\n    this.buildCollection();\n    this.buildCanvas();\n  }\n\n  private buildCollection() {\n    const collection = this.config.svg.append('g')\n      .attr('class', 'effects');\n\n    collection.append('path')\n      .attr('class', 'effect-line');\n\n    const mousePerLine = collection.selectAll('.effect-group')\n      .data(this.config.data.filter((elm) => {\n        return elm.data.length > 0;\n      }))\n      .enter().append('g')\n      .attr('class', 'effect-group')\n      .attr('style', (d: PcacData) => d.hide ? 'display: none' : null);\n\n    mousePerLine.append('circle')\n      .attr('r', 7)\n      .attr('class', 'effect-circle')\n      .style('stroke', (d: PcacData, i: number) => {\n        return this.config.colors[i];\n      });\n\n    mousePerLine.append('text')\n      .attr('class', 'effect-text')\n      .attr('y', 1.5)\n      .attr('transform', 'translate(10,3)');\n  }\n\n  private buildCanvas(): void {\n    this.config.svg.append('rect')\n      .attr('class', 'effects-canvas')\n      .attr('width', this.config.width)\n      .attr('height', this.config.height)\n      .attr('pointer-events', 'all')\n      .on('mouseout', () => {\n        this.hideEffects();\n      })\n      .on('mouseover', () => {\n        this.showEffects();\n      })\n      .on('mousemove', (event: MouseEvent) => {\n        const current = event.currentTarget as Element\n        const parent = current.parentElement\n        const xForms = parent?.getAttribute('transform')\n        if(!xForms)  \n          return  this.onMouseMove([event.offsetX, event.offsetY]);\n        \n        const parts  = /translate\\(\\s*([^\\s,)]+)[ ,]([^\\s,)]+)/.exec(xForms);\n        if(!parts)  \n          return  this.onMouseMove([event.offsetX, event.offsetY]);\n        const x = Number(parts[1])\n        this.onMouseMove([event.offsetX - x, event.offsetY]);\n      });\n  }\n\n  private showEffects() {\n    this.config.svg.select('.effect-line')\n      .style('opacity', '1');\n    this.config.svg.selectAll('.effect-group circle')\n      .style('opacity', '1');\n    this.config.svg.selectAll('.effect-group text')\n      .style('opacity', '1');\n  }\n\n  private hideEffects() {\n    this.config.svg.select('.effect-line')\n      .style('opacity', '0');\n    this.config.svg.selectAll('.effect-group circle')\n      .style('opacity', '0');\n    this.config.svg.selectAll('.effect-group text')\n      .style('opacity', '0');\n  }\n\n  private onMouseMove(mousePos: [number, number]) {\n    this.updateLine(mousePos);\n    this.updateEffects(mousePos);\n  }\n\n  private updateLine(mousePos: [number, number]) {\n    this.config.svg.select('.effect-line')\n      .attr('d', () => 'M' + mousePos[0] + ',' + this.config.height + ' ' + mousePos[0] + ',' + 0);\n  }\n\n  private updateEffects(mousePos: [number, number]) {\n    this.config.svg.selectAll('.effect-group')\n      .attr('transform', (data, index: number, nodes: any) => {\n        let beginning = 0;\n        let end = this.lines[index].getTotalLength();\n        let target = 0;\n        let pos;\n\n        while (true) {\n          target = Math.floor((beginning + end) / 2);\n          pos = this.lines[index].getPointAtLength(target);\n          if ((target === end || target === beginning) && pos.x !== mousePos[0]) {\n            break;\n          }\n\n          if (pos.x > mousePos[0]) {\n            end = target;\n          } else if (pos.x < mousePos[0]) {\n            beginning = target;\n          } else {\n            break;\n          }\n        }\n\n        let textTarget = this.config.y.invert(pos.y) as number\n        select(nodes[index]).select('text')\n          .text(textTarget.toFixed(0));\n\n        return 'translate(' + mousePos[0] + ',' + pos.y + ')';\n      });\n  }\n}\n","import { PcacChartConfig, PcacFormatEnum } from '../core/chart.model';\n\nexport enum PcacLineAreaPlotChartConfigType {\n  Line = 'line',\n  Area = 'area',\n  Plot = 'plot'\n}\n\nexport class PcacLineAreaChartConfig extends PcacChartConfig {\n  enableEffects: boolean = true\n  enableZoom: boolean = true\n  numberOfTicks: number = 5\n  hideGrid: boolean = false\n  hideAxis: boolean = false\n  yFormat: PcacFormatEnum = PcacFormatEnum.DatasetLength\n  xFormat: PcacFormatEnum = PcacFormatEnum.DatasetLength\n  yDomainMax!: number | string\n  yDomainMin!: number | string\n  xDomainMin!: number | string\n  xDomainMax!: number | string\n\n  /**\n   * Hex color codes to override the default colors\n   */\n  colorOverride: string[] = []\n}\n","\nimport { scaleTime } from 'd3';\nimport { ScaleLinear, scaleLinear, ScaleTime } from 'd3-scale';\n\n\nimport { PcacLineAreaChartConfig } from '../../plot-line-area-chart.model';\nimport { PcacFormatEnum } from '../../../core/chart.model';\n\nexport class PlaChartScales {\n  x!: ScaleLinear<number, number> | ScaleTime<number, number, never>;\n  y!: ScaleLinear<number, number>;\n}\n\nexport class PlaChartScalesBuilder {\n  build(config: PcacLineAreaChartConfig, chartWidth: number, chartHeight: number): PlaChartScales {\n    let resp = new PlaChartScales();\n    resp.x = this.buildXScale(config, chartWidth);\n    resp.y = this.buildYScale(config, chartHeight);\n    return resp;\n  }\n\n  private buildXScale(config: PcacLineAreaChartConfig, chartWidth: number): ScaleLinear<number, number> | ScaleTime<number, number, never> {\n    let resp: ScaleLinear<number, number> | ScaleTime<number, number, never>;\n\n    switch (config.xFormat) {\n      case PcacFormatEnum.DateTime:\n        resp = scaleTime()\n          .domain([new Date(config.xDomainMin), new Date(config.xDomainMax)])\n          .range([0, chartWidth]);\n        break;\n      case PcacFormatEnum.Decimal:\n        resp = scaleLinear()\n          .domain([config.xDomainMin as number || 0, config.xDomainMax as number || 100])\n          .range([0, chartWidth]);\n        break;\n      case PcacFormatEnum.DatasetLength:\n        resp = scaleLinear()\n          .domain([0, config.data[0].data.length - 1])\n          .range([0, chartWidth]);\n        break;\n      default:\n        resp = scaleLinear()\n          .domain([0, config.data[0].data.length - 1])\n          .range([0, chartWidth]);\n        break;\n    }\n\n    return resp;\n  }\n\n  private buildYScale(config: PcacLineAreaChartConfig, chartHeight: number): ScaleLinear<number, number> {\n    return scaleLinear()\n      .domain([config.yDomainMin as number || 0, config.yDomainMax as number || 100])\n      .range([chartHeight, 0]);\n  }\n}\n","import { ScaleLinear, ScaleTime } from \"d3\";\nimport { PcacData, PcacFormatEnum } from \"../../core\";\n\nexport function getXFormat(type: PcacFormatEnum, data: PcacData, index: number, xScale: ScaleLinear<number, number> | ScaleTime<number, number, never>) {\n    switch (type) {\n      case PcacFormatEnum.DateTime:\n        if (data.key) {\n          return xScale(new Date(data.key));\n        }\n        return 0\n      case PcacFormatEnum.Decimal:\n        if (data.key) {\n          return xScale(data.key as unknown as number);\n        }\n        return 0\n      default:\n        return xScale(index)\n    }\n}","import { line, Line } from 'd3-shape';\nimport { getXFormat } from '../x-format';\nimport { PcacFormatEnum } from '../../../core';\nimport { PlaChartScales } from './scales.builder';\n\nexport function buildLineGenerator(format: PcacFormatEnum, scales: PlaChartScales): Line<[number, number]> {\n  return line()\n    .x((d: any, i) => {\n      return getXFormat(format, d, i, scales.x)\n    })\n    .y((d: any) => {\n      return scales.y(d.value);\n    });\n}","import { Area, area } from 'd3-shape';\nimport { getXFormat } from '../x-format';\nimport { PcacFormatEnum } from '../../../core';\nimport { PlaChartScales } from './scales.builder';\n\nexport function buildAreaGenerator(format: PcacFormatEnum, scales: PlaChartScales, chartHeight: number): Area<[number, number]> {\n  return area()\n    .x((d: any, i) => {\n      return getXFormat(format, d, i, scales.x);\n    })\n    .y0(chartHeight)\n    .y1((d: any) => {\n      return scales.y(d.value);\n    });\n}","import { zoom } from \"d3\";\n\nexport function buildZoomBehavior(width: number, height: number, zoomedFn: (event: d3.D3ZoomEvent<Element, unknown>) => void): d3.ZoomBehavior<Element, unknown> {\n  return zoom()\n    .scaleExtent([1, 10])\n    .translateExtent([[0, 0], [width, height]])\n    .on(\"zoom\", zoomedFn);\n}\n","import { Injectable, ElementRef } from '@angular/core';\nimport { select } from 'd3-selection';\nimport { Line, Area } from 'd3-shape';\nimport { range } from 'd3-array';\nimport { Subject } from 'rxjs';\n\n/**\n * Lib\n */\nimport { PlaChartEffectsBuilder } from './effects.builders';\nimport { PcacLineAreaChartConfig, PcacLineAreaPlotChartConfigType } from '../../plot-line-area-chart.model';\nimport { IPcacAxisBuilderConfig } from '../../../core/axis.builder';\nimport { IPcacGridBuilderConfig } from '../../../core/grid.builder';\nimport { PcacChart } from '../../../core/chart';\nimport { PcacData } from '../../../core/chart.model';\nimport { PlaChartScalesBuilder, PlaChartScales } from './scales.builder';\nimport { getXFormat } from '../x-format';\nimport { buildLineGenerator } from './line-generator.builder';\nimport { buildAreaGenerator } from './area-generator.builder';\nimport { buildZoomBehavior } from './zoom-behavior.builder';\n\n\nexport class PlaChartBuilder extends PcacChart {\n  private scales!: PlaChartScales;\n  private lineGenerator!: Line<[number, number]>;\n  private areaGenerator!: Area<[number, number]>;\n  private zoomBehavior!: d3.ZoomBehavior<Element, unknown>;\n  private dotClickedSource = new Subject<PcacData>();\n  private config!: PcacLineAreaChartConfig;\n  private clipPathId!: string; // <-- added\n  dotClicked$ = this.dotClickedSource.asObservable();\n\n\n  buildChart(chartElm: ElementRef, config: PcacLineAreaChartConfig, type: PcacLineAreaPlotChartConfigType): void {\n    this.config = JSON.parse(JSON.stringify(config));\n    this.startData = range(this.config.data[0].data.length).map(() => {\n      return {\n        value: 0,\n        key: ''\n      };\n    });\n\n    if (this.config.hideAxis) {\n      this.config.height = this.config.height + 12;\n      this.margin.top = 8;\n      this.margin.bottom = 8;\n      this.margin.left = 8;\n      this.margin.right = 8;\n    }\n\n    this.initializeChartState(chartElm, this.config);\n    if (this.config.colorOverride) {\n      this.colors = this.config.colorOverride;\n    }\n\n    this.scales = new PlaChartScalesBuilder().build(config, this.width, this.height);\n    this.lineGenerator = buildLineGenerator(config.xFormat, this.scales);\n    this.areaGenerator = buildAreaGenerator(config.xFormat, this.scales, this.height);\n\n    if (this.config.enableZoom) {\n      this.zoomBehavior = buildZoomBehavior(this.width, this.height, (event) => {\n        console.log('Zoom Event', event);\n        // Rescale x\n        const newX = event.transform.rescaleX(this.scales.x);\n\n        // Update axis\n        this.axisBuilder.drawXAxis({\n          svg: this.svg,\n          numberOfTicks: this.config.numberOfTicks || 5,\n          height: this.height,\n          xScale: newX,\n          yScale: this.scales.y,\n          yFormat: this.config.yFormat,\n          xFormat: this.config.xFormat\n        } as IPcacAxisBuilderConfig);\n\n        // Update lines/areas\n        this.svg.selectAll('.line')\n          .attr('d', (d: any) => this.lineGenerator.x((_: any, i: number) => newX(i))(d));\n\n        this.svg.selectAll('.area')\n          .attr('d', (d: any) => this.areaGenerator.x((_: any, i: number) => newX(i))(d));\n\n        // Update dots\n        this.svg.selectAll('.dot')\n          .attr('cx', (d: PcacData, i: number) => getXFormat(this.config.xFormat, d, i, newX));\n      });\n    }\n\n    this.drawChart(chartElm, this.config, type);\n  }\n\n  private drawChart(chartElm: ElementRef, config: PcacLineAreaChartConfig, type: PcacLineAreaPlotChartConfigType): void {\n    this.buildContainer(chartElm);\n    this.attachZoomBehavior();\n    this.createReusableClipPath(); \n\n    if (!config.hideAxis) {\n      this.axisBuilder.drawAxis({\n        svg: this.svg,\n        numberOfTicks: config.numberOfTicks || 5,\n        height: this.height,\n        xScale: this.scales.x,\n        yScale: this.scales.y,\n        yFormat: config.yFormat,\n        xFormat: config.xFormat\n      } as IPcacAxisBuilderConfig);\n    }\n\n    if (!config.hideGrid) {\n      this.gridBuilder.drawHorizontalGrid({\n        svg: this.svg,\n        numberOfTicks: config.numberOfTicks || 5,\n        width: this.width,\n        xScale: this.scales.x,\n        yScale: this.scales.y\n      } as IPcacGridBuilderConfig);\n    }\n\n    this.drawLineArea(config, type);\n\n    if (config.enableEffects) {\n      new PlaChartEffectsBuilder().buildEffects({\n        svg: this.svg,\n        height: this.height,\n        width: this.width,\n        data: config.data,\n        colors: this.colors,\n        x: this.scales.x,\n        y: this.scales.y\n      });\n    }\n\n    this.drawDots(config);\n  }\n\n  private createReusableClipPath(): void {\n    this.clipPathId = `pcac-clip-${Date.now()}-${Math.floor(Math.random() * 10000)}`;\n    this.svg.selectAll(`defs #${this.clipPathId}`).remove();\n    this.svg.append('defs')\n      .append('clipPath')\n      .attr('id', this.clipPathId)\n      .append('rect')\n      .attr('x', 0)\n      .attr('y', -10) // extend clip-path a bit above to avoid cutting off top of line\n      .attr('width', this.width)\n      .attr('height', this.height + 20); // +20 to ensure dots at bottom are not clipped\n  }\n\n  private attachZoomBehavior(): void {\n    if (!this.config.enableZoom) return;\n\n    // Add a transparent rect to capture zoom events\n    this.svg.insert('rect', ':first-child')\n      .attr('width', this.width)\n      .attr('height', this.height)\n      .attr('fill', 'none')\n      .attr('pointer-events', 'all')\n      .call(this.zoomBehavior)\n      .transition()\n      .duration(750)\n\n    this.svg.call(this.zoomBehavior)\n      .transition()\n      .duration(750)\n  }\n\n  private drawLineArea(config: PcacLineAreaChartConfig, type: PcacLineAreaPlotChartConfigType): void {\n    for (let i = 0; i < config.data.length; i++) {\n      if (type === PcacLineAreaPlotChartConfigType.Area) {\n        this.drawArea(config.data[i].data, i);\n      } else if (type === PcacLineAreaPlotChartConfigType.Line) {\n        this.drawLine(config.data[i].data, i, config.data[i].hide);\n      }\n    }\n  }\n\n  private drawLine(lineData: PcacData[], index: number, hide = false): void {\n    this.svg.append('g')\n      .attr('class', 'lines')\n      .attr('clip-path', `url(#${this.clipPathId})`) // <-- apply clip-path to line group\n      .append('path')\n      .datum(lineData)\n      .attr('class', 'line')\n      .attr('d', this.lineGenerator(this.startData))\n      .transition()\n      .duration(this.transitionService.getTransitionDuration())\n      .attr('d', this.lineGenerator as any) // TODO: strongly type\n      .attr('stroke', () => {\n        return this.colors[index];\n      })\n      .attr('fill', 'none')\n      .attr('style', () => hide ? 'display: none' : null);\n  }\n\n  private drawArea(lineData: PcacData[], index: number) {\n    this.svg.append('g')\n      .attr('class', 'areas')\n      .attr('clip-path', `url(#${this.clipPathId})`) // <-- apply clip\n      .append('path')\n      .datum(lineData)\n      .attr('class', 'area')\n      .style('opacity', 0.5)\n      .style('fill', () => {\n        return this.colors[index];  // TODO: strongly type\n      })\n      .attr('d', this.lineGenerator(this.startData))\n      .transition()\n      .duration(this.transitionService.getTransitionDuration())\n      .attr('d', this.areaGenerator as any);  // TODO: strongly type\n  }\n\n  private drawDots(config: PcacLineAreaChartConfig): void {\n    const self = this;\n    for (let index = 0; index < config.data.length; index++) {\n      this.svg.append('g')\n        .attr('class', 'dots')\n        .attr('clip-path', `url(#${this.clipPathId})`) // <-- apply clip\n        .selectAll('.dot')\n        .data(config.data[index].data)\n        .enter().append('circle')\n        .attr('class', 'dot')\n        .attr('stroke', (_: PcacData) => {\n          return this.colors[index];\n        })\n        .attr('cx', (d: PcacData, i: number) => {\n          return getXFormat(config.xFormat, d, i, this.scales.x);\n        })\n        .attr('cy', (d: PcacData) => {\n          return this.scales.y(0);\n        })\n        .attr('fill', '#fff')\n        .on('mouseover', function (this: any, event: MouseEvent, d: PcacData) {\n          self.tooltipBuilder.showBarTooltip(event, d, self.config.yFormat, self.config.xFormat);\n          select(this)\n            .transition()\n            .duration(self.transitionService.getTransitionDuration() / 3)\n            .attr('r', 6)\n            .attr('fill', self.colors[index]);\n        })\n        .on('mouseout', function (this: any) {\n          self.tooltipBuilder.hideTooltip();\n          select(this)\n            .transition()\n            .duration(self.transitionService.getTransitionDuration() / 3)\n            .attr('r', 4)\n            .attr('fill', '#fff');\n        })\n        .on('click', (d: PcacData, i: number) => {\n          this.dotClickedSource.next(d);\n        })\n        .transition()\n        .duration(this.transitionService.getTransitionDuration())\n        .attr('cy', (d: PcacData) => {\n          return this.scales.y(d.value as number);\n        })\n        .attr('r', 4)\n        .attr('style', () => config.data[index].hide ? 'display: none' : null);\n    }\n  }\n}\n","import { Component, ElementRef, HostListener, ViewEncapsulation, SimpleChanges, inject, viewChild, output, input, ChangeDetectionStrategy } from '@angular/core';\n\nimport { PcacLineAreaChartConfig, PcacLineAreaPlotChartConfigType } from './plot-line-area-chart.model';\nimport { PlaChartBuilder } from './core/builders/chart.builder';\nimport { PcacData } from '../core';\n\n@Component({\n  selector: 'pcac-line-area-chart',\n  templateUrl: './plot-line-area-chart.component.html',\n  styleUrls: ['./plot-line-area-chart.component.scss'],\n  changeDetection: ChangeDetectionStrategy.Eager,\n  encapsulation: ViewEncapsulation.None\n})\nexport class PcacLineAreaChartComponent {\n  private chartBuilder = new PlaChartBuilder();\n\n  readonly config = input.required<PcacLineAreaChartConfig>();\n  readonly type = input.required<PcacLineAreaPlotChartConfigType>();\n\n\n  readonly chartElm = viewChild.required<ElementRef>('chart');\n  readonly dotClicked = output<PcacData>();\n\n  private resizeWindowTimeout: any;\n\n  constructor() {\n    this.chartBuilder.dotClicked$.subscribe(data => {\n      this.dotClicked.emit(data);\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['config'].currentValue !== changes['config'].previousValue) {\n      this.buildChart()\n    }\n  }\n\n  buildChart(): void {\n    const config = this.config();\n    if (config && config.data && config.data.length > 0) {\n      this.chartBuilder.buildChart(this.chartElm(), config, this.type());\n    }\n  }\n\n  /**\n   * Opting against fromEvent due to incompatibility with rxjs 5 => 6\n   */\n  @HostListener('window:resize')\n  onResize() {\n    const self = this;\n    clearTimeout(this.resizeWindowTimeout);\n    this.resizeWindowTimeout = setTimeout(() => {\n      self.buildChart();\n    }, 300);\n  }\n}\n","<section class=\"pcac-line-area-chart\">\n  <svg #chart></svg>\n</section>\n\n","import { Component, input, output, viewChild, ChangeDetectionStrategy } from \"@angular/core\";\nimport { PcacLineAreaChartComponent } from \"../plot-line-area-chart.component\";\nimport { PcacPlotChartConfig } from \"./plot.model\";\nimport { PcacLineAreaPlotChartConfigType } from \"../plot-line-area-chart.model\";\nimport { PcacData } from \"../../core\";\n\n@Component({\n  selector: 'pcac-plot-chart',\n  templateUrl: './plot.component.html',\n  changeDetection: ChangeDetectionStrategy.Eager,\n  imports: [PcacLineAreaChartComponent]\n})\nexport class PcacPlotChart {\n  readonly config = input.required<PcacPlotChartConfig>();\n  readonly types = PcacLineAreaPlotChartConfigType;\n  readonly dotClicked = output<PcacData>();\n\n  private chart = viewChild(PcacLineAreaChartComponent);\n\n  onResize() {\n    this.chart()?.onResize();\n  }\n}","<pcac-line-area-chart [config]=\"config()\" [type]=\"types.Plot\" (dotClicked)=\"dotClicked.emit($event)\"/>","import { PcacLineAreaChartConfig } from \"../plot-line-area-chart.model\";\n\nexport class PcacPlotChartConfig extends PcacLineAreaChartConfig {\n\n}","import { Component, input, output, viewChild, ChangeDetectionStrategy } from \"@angular/core\";\nimport { PcacLineAreaChartComponent } from \"../plot-line-area-chart.component\";\nimport { PcacLineChartConfig } from \"./line.model\";\nimport { PcacLineAreaPlotChartConfigType } from \"../plot-line-area-chart.model\";\nimport { PcacData } from \"../../core\";\n\n@Component({\n  selector: 'pcac-line-chart',\n  templateUrl: \"./line.component.html\",\n  changeDetection: ChangeDetectionStrategy.Eager,\n  imports: [PcacLineAreaChartComponent]\n})\nexport class PcacLineChart {\n  readonly config = input.required<PcacLineChartConfig>();\n  readonly types = PcacLineAreaPlotChartConfigType;\n  readonly dotClicked = output<PcacData>()\n\n  private chart = viewChild(PcacLineAreaChartComponent);\n\n  onResize() {\n    this.chart()?.onResize();\n  }\n}","<pcac-line-area-chart [config]=\"config()\" [type]=\"types.Line\" />","import { PcacLineAreaChartConfig } from \"../plot-line-area-chart.model\";\n\nexport class PcacLineChartConfig extends PcacLineAreaChartConfig {\n\n}","import { Component, input, output, viewChild, ChangeDetectionStrategy } from \"@angular/core\";\nimport { PcacAreaChartConfig } from \"./area.model\";\nimport { PcacLineAreaChartComponent } from \"../plot-line-area-chart.component\";\nimport { PcacLineAreaPlotChartConfigType } from \"../plot-line-area-chart.model\";\nimport { PcacData } from \"../../core\";\n\n@Component({\n  selector: 'pcac-area-chart',\n  templateUrl: './area.component.html',\n  changeDetection: ChangeDetectionStrategy.Eager,\n  imports: [PcacLineAreaChartComponent]\n})\nexport class PcacAreaChart {\n  readonly config = input.required<PcacAreaChartConfig>();\n  readonly types = PcacLineAreaPlotChartConfigType;\n  readonly dotClicked = output<PcacData>()\n\n  private chart = viewChild(PcacLineAreaChartComponent);\n\n  onResize() {\n    this.chart()?.onResize();\n  }\n}","<pcac-line-area-chart [config]=\"config()\" [type]=\"types.Area\" />","import { PcacLineAreaChartConfig } from \"../plot-line-area-chart.model\";\n\nexport class PcacAreaChartConfig extends PcacLineAreaChartConfig {\n\n}","// export * from './plot-line-area-chart.builder';\n// export * from './plot-line-area-chart.component';\n// export * from './plot-line-area-chart.model';\nexport * from './plot/plot.component';\nexport * from './plot/plot.model';\nexport * from './line/line.component';\nexport * from './line/line.model';\nexport * from './area/area.component';\nexport * from './area/area.model';","import { Injectable, ElementRef } from '@angular/core';\n\n/**\n * D3\n */\nimport { arc, pie, DefaultArcObject, Arc, Pie, PieArcDatum } from 'd3-shape';\nimport { select } from 'd3-selection';\nimport { interpolate } from 'd3-interpolate';\nimport { transition } from 'd3-transition';\nimport { color } from 'd3-color';\n\n/**\n * Lib\n */\nimport { PcacPieChartConfig } from './pie-chart.model';\nimport { PcacChart } from '../core/chart';\nimport { PcacData } from '../core/chart.model';\n\nimport { Subject } from 'rxjs';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PieChartBuilder extends PcacChart {\n  private radius!: number;\n  private arcShape!: Arc<any, DefaultArcObject> | any;\n  private arcOverShape!: Arc<any, DefaultArcObject> | any;\n  private pieAngles!: Pie<any, number | {}> | any;\n  private sliceClickedSource = new Subject<PcacData>();\n  sliceClicked$ = this.sliceClickedSource.asObservable();\n\n  buildChart(chartElm: ElementRef, config: PcacPieChartConfig): void {\n    this.initializeChartState(chartElm, config);\n    this.radius = Math.min(Math.min(this.height, this.width), Math.min(this.height, this.width)) / 2;\n    this.buildShapes(config);\n    this.drawChart(chartElm, config);\n  }\n\n  private buildShapes(config: PcacPieChartConfig): void {\n    const radiusOffset = 10;\n\n    this.arcShape = arc()\n      .innerRadius(0)\n      .outerRadius(this.radius - radiusOffset);\n\n    this.arcOverShape = arc()\n      .innerRadius(0)\n      .outerRadius(this.radius - radiusOffset + radiusOffset);\n\n    this.pieAngles = pie()\n      .sort(null)\n      .value((d: any) => d.value);  // TODO: Strongly type\n  }\n\n  private drawChart(chartElm: ElementRef, config: PcacPieChartConfig): void {\n    this.buildContainer(chartElm, true);\n    const self = this;\n    this.svg.selectAll('.pcac-arc')\n      .data(this.pieAngles(config.data))\n      .enter().append('g')\n      .attr('class', 'pcac-arc')\n      .append('path')\n      .style('fill', (d: PieArcDatum<PcacData>, i: number) => {\n        return this.colors[i];\n      })\n      .on('mouseover', function (this: any, _: MouseEvent, d: PieArcDatum<PcacData>) {\n        const t = transition().duration(self.transitionService.getTransitionDuration() / 3)\n        const c = color(self.colors[d.index])\n        const ct = c ? c.darker(1).toString() : self.colors[d.index]\n        select(this).transition(t)\n          .attr('d', self.arcOverShape)\n          .style('fill', ct);\n      })\n      .on('mousemove', (event: MouseEvent, d: PieArcDatum<PcacData>) => {\n        self.tooltipBuilder.showBarTooltip(event, d.data);\n      })\n      .on('mouseout', function (this: any, _: MouseEvent, d: PieArcDatum<PcacData>) {\n        self.tooltipBuilder.hideTooltip();\n        select(this)\n          .transition()\n          .duration(self.transitionService.getTransitionDuration() / 3)\n          .attr('d', self.arcShape)\n          .style('fill', self.colors[d.index]);\n      })\n      .on('click', (d: PieArcDatum<PcacData>, i: number) => {\n        this.sliceClickedSource.next(d.data);\n      })\n      .transition()\n      .duration(this.transitionService.getTransitionDuration())\n      .attrTween('d', (b: PieArcDatum<PcacData>) => {\n        return this.tweenChart(b);\n      });\n  }\n\n  private tweenChart(b: any) {  // TODO: Strongly type\n    b.innerRadius = 0;\n    const i = interpolate({ startAngle: 0, endAngle: 0 }, b);\n    return (t: any) => this.arcShape(i(t));  // TODO: Strongly type\n  }\n}\n","import { Component, ElementRef, OnChanges, HostListener, ViewEncapsulation, inject, viewChild, output, input, ChangeDetectionStrategy } from '@angular/core';\nimport { PcacPieChartConfig } from './pie-chart.model';\nimport { PieChartBuilder } from './pie-chart.builder';\nimport { PcacData } from '../core';\n\n@Component({\n  selector: 'pcac-pie-chart',\n  templateUrl: './pie-chart.component.html',\n  styleUrls: ['./pie-chart.component.scss'],\n  changeDetection: ChangeDetectionStrategy.Eager,\n  encapsulation: ViewEncapsulation.None\n})\nexport class PcacPieChartComponent implements OnChanges {\n  private chartBuilder = inject(PieChartBuilder);\n\n  readonly config = input.required<PcacPieChartConfig>();\n  readonly chartElm = viewChild.required<ElementRef>('chart');\n  readonly sliceClicked = output<PcacData>();\n\n  private resizeWindowTimeout: any;\n\n  constructor() {\n    this.chartBuilder.sliceClicked$.subscribe(data => {\n      this.sliceClicked.emit(data);\n    });\n  }\n\n  ngOnChanges() {\n    this.buildChart();\n  }\n\n  buildChart(): void {\n    const config = this.config();\n    if (config && config.data && config.data.length > 0) {\n      this.chartBuilder.buildChart(this.chartElm(), config);\n    }\n  }\n\n  /**\n   * Opting against fromEvent due to incompatibility with rxjs 5 => 6\n   */\n  @HostListener('window:resize')\n  onResize() {\n    const self = this;\n    clearTimeout(this.resizeWindowTimeout);\n    this.resizeWindowTimeout = setTimeout(() => {\n      self.buildChart();\n    }, 300);\n  }\n}\n","<section class=\"pcac-pie-chart\">\n  <svg #chart></svg>\n</section>\n\n","import { PcacChartConfig } from '../core/chart.model';\n\nexport class PcacPieChartConfig extends PcacChartConfig  {\n  numberOfTicks: number = 5\n}\n","/*\n * Public API Surface of pioneer-charts\n */\n\nexport * from './lib/bar-chart/bar-horizontal-chart/public-api';\nexport * from './lib/bar-chart/bar-vertical-chart/public-api';\nexport * from './lib/core/public-api';\nexport * from './lib/legend/public-api';\nexport * from './lib/plot-line-area-chart/public-api';\nexport * from './lib/pie-chart/public-api';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["select"],"mappings":"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"}