{"version":3,"file":"bd2-ngx-heatmap.mjs","sources":["../../../projects/bd2-ngx-heatmap/src/lib/bd2-heatmap.dom.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/tooltip/tooltip.service.ts","../../../projects/bd2-ngx-heatmap/src/lib/bd2-num-heatmap/heatmap-data-util.ts","../../../projects/bd2-ngx-heatmap/src/lib/color-util.ts","../../../projects/bd2-ngx-heatmap/src/lib/heatmap-graph-util.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/labels/label-box/label-box.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/labels/labels.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/tooltip/tooltip.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/pane-back/pane-back.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/series-box/serie-row/data-point-box/data-point-box.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/series-box/serie-row/serie-row.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/series-box/series-box.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/axis/axis-box/x-axis/v-tick-mark/v-tick-mark.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/axis/axis-box/x-axis/num-x-axis.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/axis/axis-box/y-axis/y-axis.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/axis/axis-box/axis-box.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/bd2-num-heatmap/bd2-num-heatmap/bd2-num-heatmap.component.ts","../../../projects/bd2-ngx-heatmap/src/lib/bd2-num-heatmap/bd2-num-heatmap/bd2-num-heatmap.component.html","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/axis/axis.module.ts","../../../projects/bd2-ngx-heatmap/src/lib/plot-elements/plot-elements.module.ts","../../../projects/bd2-ngx-heatmap/src/lib/bd2-num-heatmap/bd2-num-heatmap.module.ts","../../../projects/bd2-ngx-heatmap/src/lib/bd2-ngx-heatmap.module.ts","../../../projects/bd2-ngx-heatmap/src/public-api.ts","../../../projects/bd2-ngx-heatmap/src/bd2-ngx-heatmap.ts"],"sourcesContent":["// import * as d3Scale from 'd3-scale';\r\nimport {ScaleBand, ScaleLinear, ScaleQuantize} from 'd3-scale';\r\n\r\nexport class LookAndFeelSizing {\r\n  vMargin = 25;\r\n  hMargin = 20;\r\n\r\n  smallRowWidth = 6;\r\n  midRowWidth = 12;\r\n  bigRowWidth = 25;\r\n\r\n  rowGap = 0.05;\r\n}\r\n\r\nexport class GraphicContext {\r\n\r\n  viewBox: string;\r\n  mainPaneTransform: string;\r\n\r\n  pWidth: number;\r\n  pHeight: number;\r\n\r\n  workspaceWidth: number;\r\n  workspaceHeight: number;\r\n\r\n  xDomain: [number, number];\r\n  yDomain: any[];\r\n\r\n  xScale: ScaleLinear<number, number>;\r\n  yScale: ScaleBand<any>;\r\n\r\n  colorScale: ScaleQuantize<string>;\r\n  labelsColors: (n: number) => string;\r\n\r\n  valuesFormatter: (n: number | { valueOf(): number }) => string;\r\n  domainFormatter: (n: number | { valueOf(): number }) => string;\r\n}\r\n\r\n\r\nexport type Serie = {\r\n\r\n  key?: any;\r\n  label?: string;\r\n  data: Point[];\r\n\r\n  min: number;\r\n  max: number;\r\n  mean: number;\r\n\r\n};\r\n\r\n\r\nexport type Point = {\r\n\r\n  x: number;\r\n  y: number;\r\n  width?: number;\r\n\r\n};\r\n\r\nexport class Tick {\r\n\r\n  // tslint:disable-next-line:no-unnecessary-initializer\r\n  constructor(public x = 0, public y = 0, public label: any = undefined,\r\n              public top = false, public left = false) {\r\n  }\r\n\r\n}\r\n\r\nexport class BoxDef {\r\n\r\n  width: number;\r\n\r\n  constructor(public x: number,\r\n              public y: number,\r\n              public left: number,\r\n              public right: number) {\r\n\r\n    this.width = right - left;\r\n  }\r\n}\r\n\r\nexport class BoxSerie {\r\n\r\n  key?: any;\r\n  label?: string;\r\n  data: BoxDef[];\r\n\r\n  min: number;\r\n  max: number;\r\n  mean: number;\r\n\r\n}\r\n","import {Injectable, OnDestroy} from '@angular/core';\r\nimport {Point} from '../../bd2-heatmap.dom';\r\nimport {Subject} from 'rxjs';\r\n\r\n@Injectable()\r\nexport class TooltipService implements OnDestroy{\r\n\r\n  request$ = new Subject<[boolean, string, Point, Point]>();\r\n\r\n  constructor() {\r\n  }\r\n\r\n  showTooltip(label: string, point: Point, location: Point) {\r\n    this.request$.next([true, label, point, location]);\r\n  }\r\n\r\n  hideTooltip(point: Point, location: Point) {\r\n    this.request$.next([false, undefined, point, location]);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.request$.complete();\r\n  }\r\n\r\n}\r\n","import {BoxDef, BoxSerie, Point, Serie} from '../bd2-heatmap.dom';\r\n\r\nexport class HeatmapDataUtil {\r\n\r\n\r\n\r\n  seriesToBoxes(series: Serie[], asymmetric = false): BoxSerie[] {\r\n    return series.map(s => this.serieToBoxes(s, asymmetric));\r\n  }\r\n\r\n  serieToBoxes(org: Serie, asymmetric = false): BoxSerie {\r\n\r\n    const cpy = Object.assign(new BoxSerie(), org);\r\n    cpy.data = asymmetric ? this.pointsToAsymBoxes(org.data) : this.pointsToSymBoxes(org.data);\r\n    return cpy;\r\n  }\r\n\r\n  pointsToAsymBoxes(points: Point[], defMargin = 0.5): BoxDef[] {\r\n    if (!points || points.length === 0) { return []; }\r\n\r\n    if (points.length === 1) {\r\n      const point = points[0];\r\n      return [new BoxDef(point.x, point.y, point.x - defMargin, point.x + defMargin)];\r\n    }\r\n\r\n    const boxes = [];\r\n    const first = points[0];\r\n    boxes.push(new BoxDef(first.x, first.y, (3 * first.x - points[1].x) / 2, (first.x + points[1].x) / 2));\r\n\r\n    for (let i = 1; i < (points.length - 1); i++) {\r\n      boxes.push(this.asymBoxFromPoints(points[i], points[i - 1], points[i + 1]));\r\n    }\r\n\r\n    const last = points[points.length - 1];\r\n    boxes.push(new BoxDef(last.x, last.y, (points[points.length - 2].x + last.x) / 2, (3 * last.x - points[points.length - 2].x) / 2));\r\n\r\n    return boxes;\r\n  }\r\n\r\n  asymBoxFromPoints(point: Point, prev: Point, next: Point) {\r\n    return new BoxDef(point.x, point.y, (prev.x + point.x) / 2, (point.x + next.x) / 2);\r\n  }\r\n\r\n  pointsToSymBoxes(points: Point[], defMargin = 0.5): BoxDef[] {\r\n    if (!points || points.length === 0) { return []; }\r\n\r\n    if (points.length === 1) {\r\n      const point = points[0];\r\n      return [new BoxDef(point.x, point.y, point.x - defMargin, point.x + defMargin)];\r\n    }\r\n\r\n    const boxes = [];\r\n    const first = points[0];\r\n    boxes.push(new BoxDef(first.x, first.y, (3 * first.x - points[1].x) / 2, (first.x + points[1].x) / 2));\r\n\r\n    for (let i = 1; i < (points.length - 1); i++) {\r\n      boxes.push(this.symBoxFromPoints(points[i], points[i - 1], points[i + 1]));\r\n    }\r\n\r\n    const last = points[points.length - 1];\r\n    boxes.push(new BoxDef(last.x, last.y, (points[points.length - 2].x + last.x) / 2, (3 * last.x - points[points.length - 2].x) / 2));\r\n\r\n    return boxes;\r\n  }\r\n\r\n  symBoxFromPoints(point: Point, prev: Point, next: Point) {\r\n    const defL = point.x - prev.x;\r\n    const defR = next.x - point.x;\r\n    const def = Math.min(defL, defR) / 2;\r\n    return new BoxDef(point.x, point.y, point.x - def, point.x + def);\r\n  }\r\n}\r\n","import {scaleLinear} from 'd3-scale';\r\nimport {rgb} from 'd3-color';\r\nimport {range} from 'd3-array';\r\n\r\nexport function colors(minColor = '#d62728', zeroColor = 'white', maxColor = '#1f77b4', step = 0.1) {\r\n\r\n  const scale = (scaleLinear()\r\n    .domain([-1, 0, 1]) as any)\r\n    .range([rgb(minColor), rgb(zeroColor), rgb(maxColor)]);\r\n\r\n  const points = range(-1, 1 + step, step);\r\n\r\n  const ranges = points.map(point => rgb(scale(point)).hex());\r\n\r\n  return ranges;\r\n}\r\n","import {BoxDef, GraphicContext, LookAndFeelSizing, Serie} from './bd2-heatmap.dom';\r\nimport {scaleBand, scaleLinear, scaleQuantize} from 'd3-scale';\r\nimport {colors} from './color-util';\r\nimport {format} from 'd3-format';\r\nimport {interpolateSpectral} from 'd3-scale-chromatic';\r\n\r\nexport class HeatmapGraphUtil {\r\n\r\n  prepareGraphicContext(data: Serie[], lookAndFeel: LookAndFeelSizing, middleZero: boolean=false): GraphicContext {\r\n\r\n    const context = new GraphicContext();\r\n\r\n    this.calculateDimensions(context, data, lookAndFeel);\r\n    this.addPaneAttributes(context, lookAndFeel);\r\n\r\n    this.addScales(context, data, lookAndFeel, middleZero);\r\n    this.addFormatters(context, data);\r\n\r\n    context.labelsColors = this.labelsColors(data);\r\n    return context;\r\n  }\r\n\r\n  calculateDimensions(context: GraphicContext, data: any[], lookAndFeel: LookAndFeelSizing) {\r\n\r\n    context.pWidth = 500;\r\n    context.workspaceWidth = context.pWidth - 3 * lookAndFeel.hMargin;\r\n\r\n    context.workspaceHeight = this.calculateWorkspaceHeight(data, lookAndFeel);\r\n    context.pHeight = context.workspaceHeight + 2 * lookAndFeel.vMargin;\r\n  }\r\n\r\n  calculateWorkspaceHeight(data: any[], lookAndFeel: LookAndFeelSizing) {\r\n    if (data.length <= 25) {\r\n      return data.length * lookAndFeel.bigRowWidth;\r\n    }\r\n    if (data.length <= 100) {\r\n      return data.length * lookAndFeel.midRowWidth;\r\n    }\r\n    return data.length * lookAndFeel.smallRowWidth;\r\n  }\r\n\r\n  addPaneAttributes(context: GraphicContext, lookAndFeel: LookAndFeelSizing) {\r\n    context.viewBox = `0 0 500 ${context.pHeight}`;\r\n\r\n    context.mainPaneTransform = `translate(${2 * lookAndFeel.hMargin}, ${lookAndFeel.vMargin})`;\r\n  }\r\n\r\n  addScales(context: GraphicContext, data: Serie[], lookAndFeel: LookAndFeelSizing, middleZero: boolean) {\r\n\r\n    let timeDomain = this.timeDomain(data);\r\n    context.xDomain = timeDomain;\r\n\r\n    const margin = this.timeMargin(data, timeDomain);\r\n    timeDomain = [timeDomain[0] - margin, timeDomain[1] + margin];\r\n\r\n    context.xScale = scaleLinear()\r\n      .clamp(true)\r\n      .domain(timeDomain)\r\n      .range([0, context.workspaceWidth]);\r\n\r\n    const yDomain = data.map(s => s.key);\r\n    context.yDomain = yDomain;\r\n\r\n    context.yScale = scaleBand()\r\n      .paddingInner(lookAndFeel.rowGap)\r\n      .paddingOuter(0)\r\n      .domain(yDomain)\r\n      .range([0, context.workspaceHeight]);\r\n\r\n    context.colorScale = this.heatmapScale(data, middleZero);\r\n\r\n\r\n  }\r\n\r\n  addFormatters(context: GraphicContext, data: Serie[]) {\r\n    const timeDomain = this.timeDomain(data);\r\n    context.domainFormatter = this.formatForDomain(timeDomain);\r\n\r\n    const valuesRange = this.valuesRange(data);\r\n    context.valuesFormatter = this.formatForDomain(valuesRange);\r\n  }\r\n\r\n  timeMargin(data: Serie[], timeDomain: [number, number]) {\r\n\r\n    const min = timeDomain[0];\r\n    let margin = 0.5;\r\n\r\n    data.filter( serie => serie.data && serie.data.length > 0 && serie.data[0].x === min)\r\n        .forEach(serie => {\r\n          const p = serie.data[0];\r\n          if (p instanceof BoxDef) {\r\n            margin = Math.max(margin, p.x - p.left);\r\n          }\r\n        });\r\n\r\n    return margin;\r\n  }\r\n\r\n  timeDomain(data: Serie[]): [number, number] {\r\n\r\n    let min = Number.POSITIVE_INFINITY;\r\n    let max = Number.NEGATIVE_INFINITY;\r\n\r\n    data.forEach(serie => {\r\n      if (serie.data && serie.data.length > 0) {\r\n        min = Math.min(min, serie.data[0].x);\r\n        max = Math.max(max, serie.data[serie.data.length - 1].x);\r\n      }\r\n    });\r\n\r\n    min = isFinite(min) ? min : 0;\r\n    max = isFinite(max) ? max : 1;\r\n\r\n    return [min, max];\r\n\r\n  }\r\n\r\n\r\n\r\n  heatmapScale(data: Serie[], middleZero: boolean) {\r\n\r\n    let domain = this.valuesRange(data);\r\n    if (middleZero) {\r\n      const max = Math.max(Math.abs(domain[0]), Math.abs(domain[1]));\r\n      domain = [-max, max];\r\n    }\r\n    const range = colors();\r\n\r\n    return scaleQuantize<string>().domain(domain).range(range);\r\n  }\r\n\r\n  valuesRange(traces: Serie[]): [number, number] {\r\n\r\n    if (traces.length === 0) {\r\n      return [NaN, NaN];\r\n    }\r\n    let min = traces[0].min;\r\n    let max = traces[0].max;\r\n\r\n    traces.forEach(tr => {\r\n      min = Math.min(min, tr.min);\r\n      max = Math.max(max, tr.max);\r\n    });\r\n\r\n    return [min, max];\r\n  }\r\n\r\n  formatForDomain([min, max]: [number, number]) {\r\n    const range = max - min;\r\n    if (range < 1) {\r\n      return format('.2~e');\r\n    }\r\n    if (range < 100) {\r\n      return format('.2~f');\r\n    }\r\n    if (range < 100000) {\r\n      return format('d');\r\n    }\r\n    return format('.2~e');\r\n  }\r\n\r\n  labelsColors(traces: Serie[]) {\r\n    const size = traces.length;\r\n\r\n    // tslint:disable-next-line:only-arrow-functions\r\n    return function(i: number) {\r\n      return interpolateSpectral(i / size);\r\n    };\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  OnChanges,\r\n  OnInit,\r\n  SimpleChanges,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {Serie} from '../../../bd2-heatmap.dom';\r\nimport {Observable, timer} from 'rxjs';\r\nimport {map, tap} from 'rxjs/operators';\r\n\r\n@Component({\r\n  selector: '[bd2hm-label-box]',\r\n  template: `\r\n    <svg:g *ngIf=\"serie\" class=\"bd2hm-label\">\r\n      <svg:text *ngIf=\"alwaysOn\" x=\"5\" [attr.y]=\"yMiddle\" class=\"bd2hm-onLabel\"\r\n                [attr.font-size]=\"fontSize()\"\r\n      >{{serie.label}}</svg:text>\r\n\r\n      <g (mouseout)=\"toggleLabel(false)\" (mouseover)=\"toggleLabel(true)\">\r\n        <svg:rect x=\"-7\" width=\"7\" [attr.y]=\"triggerY\" [attr.height]=\"triggerHeight\" [attr.fill]=\"color\"\r\n        ></svg:rect>\r\n\r\n        <!--<svg:circle [attr.cx]=\"-cirR()-2\" [attr.cy]=\"yMiddle\" [attr.r]=\"cirR()\" [attr.fill]=\"'rgb(67, 125, 179)'\"\r\n                    [attr.filter]=\"band < 7 ? undefined : 'url(#bd2hm-shadow)'\"\r\n        ></svg:circle>-->\r\n\r\n        <svg:g class=\"bd2hm-hover\" [attr.opacity]=\"ready ? 1 : 0\" [attr.display]=\"toggled ? undefined : 'none'\">\r\n          <svg:rect x=\"0\" [attr.width]=\"textBWidth\" [attr.y]=\"textBY\" [attr.height]=\"textBHeight\"\r\n          ></svg:rect>\r\n          <svg:text #text x=\"5\" [attr.y]=\"yMiddle\"\r\n          >{{serie.label}}</svg:text>\r\n        </svg:g>\r\n      </g>\r\n    </svg:g>\r\n  `,\r\n  styles: [],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LabelBoxComponent implements OnInit, OnChanges {\r\n\r\n  @Input()\r\n  serie: Serie;\r\n\r\n  @Input()\r\n  yStart: number;\r\n\r\n  @Input()\r\n  maxHeight: number;\r\n\r\n  @Input()\r\n  alwaysOn = true;\r\n\r\n  @Input()\r\n  color = 'rgb(67, 125, 179)';\r\n\r\n  margin: number;\r\n  triggerY: number;\r\n  triggerHeight: number;\r\n\r\n  yMiddle: number;\r\n\r\n\r\n  @ViewChild('text')\r\n  textNode: ElementRef<SVGGraphicsElement>;\r\n\r\n  textBWidth = 0;\r\n  textBY = 0;\r\n  textBHeight;\r\n\r\n  toggled = false;\r\n  ready = false;\r\n\r\n  constructor(private changeDetector: ChangeDetectorRef) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    this.margin = this.marginSize();\r\n    this.triggerY = this.yStart + this.margin;\r\n    this.triggerHeight = this.margin > 1 ? this.maxHeight - 2 * this.margin : this.maxHeight - 1;\r\n    this.yMiddle = this.yStart + this.maxHeight / 2;\r\n\r\n  }\r\n\r\n  marginSize() {\r\n    if (this.maxHeight >= 20) {\r\n      return 4;\r\n    }\r\n    if (this.maxHeight >= 12) {\r\n      return 2;\r\n    }\r\n    return 1;\r\n  }\r\n\r\n  fontSize() {\r\n    if (this.maxHeight > 12) {\r\n      return 10;\r\n    }\r\n    if (this.maxHeight >= 6) {\r\n      return this.maxHeight - 3;\r\n    }\r\n    return 0;\r\n  }\r\n\r\n  toggleLabel(val?: boolean) {\r\n\r\n    if (val === undefined) {\r\n      val = !this.toggled;\r\n    }\r\n\r\n    this.ready = false;\r\n    this.toggled = val;\r\n\r\n    if (this.toggled) {\r\n      this.updateTextBBox().subscribe(\r\n        rect => {\r\n          if (this.toggled) {\r\n            this.ready = true;\r\n          }\r\n          this.changeDetector.markForCheck();\r\n        }\r\n      );\r\n    }\r\n\r\n  }\r\n\r\n  updateTextBBox(): Observable<SVGRect> {\r\n\r\n    return timer(0).pipe(\r\n      map(r => this.textBBox()),\r\n      tap(rect => this.setTextBBox(rect))\r\n    );\r\n  }\r\n\r\n  setTextBBox(rect: SVGRect) {\r\n    this.textBY = rect.y - 4;\r\n    this.textBHeight = rect.height + 8;\r\n    this.textBWidth = rect.x + rect.width + 4;\r\n  }\r\n\r\n  textBBox(): SVGRect {\r\n    if (!this.textNode) {\r\n      return {x: 0, y: 0, height: 0, width: 0} as SVGRect;\r\n    }\r\n    return this.textNode.nativeElement.getBBox();\r\n  }\r\n\r\n  /*\r\n  cirR() {\r\n    if (this.band >= 20) { return 9; }\r\n    if (this.band <= 5 ) { return 2; }\r\n    return this.band / 2 - 1;\r\n  } */\r\n\r\n\r\n}\r\n","import {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\r\nimport {GraphicContext, Serie} from '../../bd2-heatmap.dom';\r\n\r\n@Component({\r\n  selector: '[bd2hm-labels]',\r\n  template: `\r\n    <svg:g *ngIf=\"graphic && data\" class=\"bd2hm-labels\">\r\n      <svg:g bd2hm-label-box *ngFor=\"let serie of data; let ix = index; trackBy: trackByIndex\"\r\n             [serie]=\"serie\"\r\n             [yStart]=\"yStart(serie)\" [maxHeight]=\"maxHeight()\" [alwaysOn]=\"alwaysOn\"\r\n      ></svg:g>\r\n    </svg:g>\r\n  `,\r\n  styles: [],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LabelsComponent implements OnInit {\r\n\r\n  @Input()\r\n  graphic: GraphicContext;\r\n\r\n  @Input()\r\n  data: Serie[];\r\n\r\n  @Input()\r\n  alwaysOn = true;\r\n\r\n  constructor() {\r\n  }\r\n\r\n  trackByIndex(index: number, item: any) {\r\n    return index;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  yStart(serie: Serie) {\r\n    // return this.graphic.yScale(serie.key) + this.graphic.yScale.bandwidth() / 4;\r\n    return this.graphic.yScale(serie.key);\r\n  }\r\n\r\n  maxHeight() {\r\n    return this.graphic.yScale.bandwidth();\r\n  }\r\n\r\n  color(ix: number) {\r\n    return this.graphic.labelsColors(ix);\r\n  }\r\n\r\n  /*\r\n  yMiddle(serie: Serie) {\r\n    // console.log(\"Band\", this.graphic.yScale.bandwidth());\r\n    return this.graphic.yScale(serie.key) + this.graphic.yScale.bandwidth() / 2;\r\n  }*/\r\n\r\n\r\n  /*yHeight() {\r\n    return 2 + this.graphic.yScale.bandwidth() / 2;\r\n  }*/\r\n\r\n\r\n}\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, OnInit, ViewChild} from '@angular/core';\r\nimport {TooltipService} from './tooltip.service';\r\nimport {Observable, Subscription, timer} from 'rxjs';\r\nimport {GraphicContext, Point} from '../../bd2-heatmap.dom';\r\nimport {debounceTime, map, tap} from 'rxjs/operators';\r\n\r\n\r\n// [attr.display]=\"showBack ? undefined : 'none'\"\r\n// [style.visibility]=\"showBack ? undefined :'hidden'\"\r\n\r\n@Component({\r\n  selector: '[bd2hm-tooltip]',\r\n  template: `\r\n    <svg:g *ngIf=\"graphic\" class=\"bd2hm-tooltipBox\" [attr.display]=\"show ? undefined : 'none'\" [attr.transform]=\"position\">\r\n\r\n      <svg:g [attr.opacity]=\"ready ? 1 : 0\">\r\n        <svg:rect [attr.x]=\"textBX\" [attr.width]=\"textBWidth\" [attr.y]=\"textBY\" [attr.height]=\"textBHeight\"\r\n        ></svg:rect>\r\n\r\n        <svg:text #text>\r\n          <tspan x=\"0\">{{label}}</tspan>\r\n          <tspan x=\"0\" dy=\"1.2em\">{{values}}</tspan>\r\n        </svg:text>\r\n      </svg:g>\r\n\r\n    </svg:g>\r\n  `,\r\n  styles: [],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TooltipComponent implements OnInit, OnDestroy {\r\n\r\n\r\n  @Input()\r\n  graphic: GraphicContext;\r\n\r\n  @Input()\r\n  boxMargin = 4;\r\n\r\n  @ViewChild('text')\r\n  textNode: ElementRef<SVGGraphicsElement>;\r\n\r\n  show = false;\r\n  label: string;\r\n  values: string;\r\n  subscription: Subscription;\r\n  position: string;\r\n\r\n  ready = false;\r\n  textBX: number;\r\n  textBY: number;\r\n  textBWidth: number;\r\n  textBHeight: number;\r\n\r\n  constructor(private tooltip: TooltipService, private changeDetector: ChangeDetectorRef) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n\r\n    this.subscription = this.tooltip.request$.pipe(\r\n      debounceTime(100)\r\n    ).subscribe(request => this.handleRequest(request));\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  handleRequest([show, label, point, location]: [boolean, string, Point, Point]) {\r\n    if (show) {\r\n      this.showTooltip(label, point, location);\r\n    } else {\r\n      this.hideTooltip(point, location);\r\n    }\r\n  }\r\n\r\n  showTooltip(label: string, point: Point, location: Point) {\r\n\r\n    this.ready = false;\r\n    this.label = this.formatLabel(label);\r\n    this.values = this.formatValues(point);\r\n\r\n    this.show = true;\r\n    // change detection not mark as it can be called outside ngzone\r\n\r\n    this.changeDetector.detectChanges();\r\n    this.updateTextBBox().subscribe(\r\n      rect => {\r\n        if (this.show) {\r\n          this.position = this.translateToDataLocation(location, this.textBWidth, this.graphic.workspaceWidth);\r\n          this.ready = true;\r\n        }\r\n        // change detection not mark as it can be called outside ngzone\r\n        // it has to be called again as textobox is determined after the timer so does the new position\r\n        // this.changeDetector.markForCheck();\r\n        this.changeDetector.detectChanges();\r\n      }\r\n    );\r\n\r\n  }\r\n\r\n  translateToDataLocation(location: Point, textBoxWidth: number, workspaceWidth: number) {\r\n    let x = location.x + location.width + 2 * this.boxMargin;\r\n    if ((x + textBoxWidth) >= workspaceWidth) {\r\n      x = location.x - textBoxWidth;\r\n    }\r\n    const y = location.y;\r\n    return `translate(${x}, ${y})`;\r\n  }\r\n\r\n  hideTooltip(point: Point, location: Point) {\r\n    this.show = false;\r\n    // this.changeDetector.markForCheck();\r\n    this.changeDetector.detectChanges();\r\n  }\r\n\r\n  formatValues(point: Point) {\r\n\r\n    return `${this.graphic.domainFormatter(point.x)} : ${this.graphic.valuesFormatter(point.y)}`;\r\n  }\r\n\r\n\r\n  updateTextBBox(): Observable<SVGRect> {\r\n\r\n    return timer(0).pipe(\r\n      map(r => this.textBBox()),\r\n      tap(rect => this.setTextBBox(rect))\r\n    );\r\n  }\r\n\r\n  setTextBBox(rect: SVGRect) {\r\n    this.textBX = rect.x - this.boxMargin;\r\n    this.textBY = rect.y - this.boxMargin;\r\n    this.textBHeight = rect.height + 2 * this.boxMargin;\r\n    this.textBWidth = rect.width + 2 * this.boxMargin;\r\n  }\r\n\r\n  textBBox(): SVGRect {\r\n    if (!this.textNode) {\r\n      return {x: 0, y: 0, height: 0, width: 0} as SVGRect;\r\n    }\r\n    return this.textNode.nativeElement.getBBox();\r\n  }\r\n\r\n  formatLabel(label: string) {\r\n    if (!label) { return ''; }\r\n    if (label.length < 40) {\r\n      return label;\r\n    }\r\n\r\n    return label.substring(0, 38) + '...';\r\n  }\r\n}\r\n","import {ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\r\nimport {GraphicContext} from '../../bd2-heatmap.dom';\r\n\r\n@Component({\r\n  selector: '[bd2hm-pane-back]',\r\n  template: `\r\n    <svg:rect class=\"bd2hm-dataBackground\" [attr.x]=\"margin\" [attr.y]=\"margin\"\r\n              [attr.width]=\"width\" [attr.height]=\"height\"\r\n    >\r\n    </svg:rect>\r\n  `,\r\n  styles: [],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PaneBackComponent implements OnInit, OnChanges {\r\n\r\n  @Input()\r\n  graphic: GraphicContext;\r\n\r\n  @Input()\r\n  margin = 2;\r\n\r\n  width: number;\r\n  height: number;\r\n\r\n  constructor() {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    this.width = this.graphic.workspaceWidth - 2 * this.margin;\r\n    this.height = this.graphic.workspaceHeight - 2 * this.margin;\r\n    if (this.width < 0) {\r\n      this.width = 0;\r\n    }\r\n    if (this.height < 0) {\r\n      this.height = 0;\r\n    }\r\n  }\r\n\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  SimpleChanges,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {BoxDef} from '../../../../bd2-heatmap.dom';\r\nimport {ScaleLinear, ScaleQuantize} from 'd3-scale';\r\nimport {TooltipService} from '../../../tooltip/tooltip.service';\r\n\r\n\r\n@Component({\r\n  selector: '[bd2hm-data-point-box]',\r\n  template: `\r\n    <svg:rect #box *ngIf=\"point && xScale\" [attr.x]=\"xPosition\" [attr.y]=\"yPosition\"\r\n              [attr.width]=\"xWidth\"\r\n              [attr.height]=\"yHeight\" [attr.fill]=\"colorScale(point.y)\" [attr.stroke]=\"colorScale(point.y)\"\r\n    >\r\n    </svg:rect>\r\n  `,\r\n  styles: [],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DataPointBoxComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {\r\n\r\n  @ViewChild('box')\r\n  boxNode: ElementRef<SVGGraphicsElement>;\r\n\r\n  prevBoxNode: ElementRef<SVGGraphicsElement>;\r\n\r\n  @Input()\r\n  point: BoxDef;\r\n\r\n  @Input()\r\n  yPosition: number;\r\n\r\n  @Input()\r\n  yHeight: number;\r\n\r\n  @Input()\r\n  xScale: ScaleLinear<number, number>;\r\n\r\n  @Input()\r\n  colorScale: ScaleQuantize<string>;\r\n\r\n  @Input()\r\n  label: string;\r\n\r\n  xPosition: number;\r\n  xWidth: number;\r\n\r\n  constructor(private tooltip: TooltipService, private zone: NgZone) {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (this.xScale && this.point) {\r\n        this.xPosition = this.xScale(this.point.left);\r\n        const band = this.xScale(this.point.right) - this.xScale(this.point.left);\r\n        this.xWidth = band >= 2 ? band - 1 : 1;\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (this.boxNode) {\r\n\r\n      if ((this.prevBoxNode !== this.boxNode)) {\r\n        this.removeMouseListeners(this.prevBoxNode);\r\n        this.zone.runOutsideAngular(() => {\r\n          this.addMouseListeners(this.boxNode);\r\n        });\r\n        this.prevBoxNode = this.boxNode;\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n\r\n  ngOnDestroy(): void {\r\n    this.removeMouseListeners(this.boxNode);\r\n  }\r\n\r\n  addMouseListeners(elm: ElementRef<SVGGraphicsElement>) {\r\n    if (elm) {\r\n      elm.nativeElement.addEventListener('mouseover', this.showTooltip.bind(this));\r\n      elm.nativeElement.addEventListener('mouseout', this.hideTooltip.bind(this));\r\n    }\r\n  }\r\n\r\n  removeMouseListeners(elm: ElementRef<SVGGraphicsElement>) {\r\n    if (elm) {\r\n      elm.nativeElement.removeEventListener('mouseover', this.showTooltip);\r\n      elm.nativeElement.removeEventListener('mouseout', this.hideTooltip);\r\n    }\r\n  }\r\n\r\n  hideTooltip($event: any) {\r\n    const location = {x: this.xPosition, y: this.yPosition, width: this.xWidth};\r\n    this.tooltip.hideTooltip(this.point, location);\r\n  }\r\n\r\n  showTooltip($event: any) {\r\n    const location = {x: this.xPosition, y: this.yPosition, width: this.xWidth};\r\n    this.tooltip.showTooltip(this.label, this.point, location);\r\n  }\r\n\r\n\r\n}\r\n\r\n\r\n","import {ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\r\nimport {BoxSerie, GraphicContext} from '../../../bd2-heatmap.dom';\r\n\r\n@Component({\r\n  selector: '[bd2hm-serie-row]',\r\n  template: `\r\n    <svg:g *ngIf=\"graphic && serie\" class=\"bd2hm-serie\">\r\n      <svg:g *ngFor=\"let point of serie.data; trackBy: trackByIndex\" bd2hm-data-point-box\r\n             [point]=\"point\" [xScale]=\"graphic.xScale\"\r\n             [yPosition]=\"yPosition\"\r\n             [yHeight]=\"yHeight\" [colorScale]=\"graphic.colorScale\"\r\n             [label]=\"serie.label\"\r\n      ></svg:g>\r\n    </svg:g>\r\n  `,\r\n  styles: [],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SerieRowComponent implements OnInit, OnChanges {\r\n\r\n  @Input()\r\n  graphic: GraphicContext;\r\n\r\n  @Input()\r\n  serie: BoxSerie;\r\n\r\n  yPosition: number;\r\n\r\n  yHeight: number;\r\n\r\n  constructor() {\r\n  }\r\n\r\n  trackByIndex(index: number, item: any) {\r\n    return index;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n\r\n    if (this.graphic && this.serie) {\r\n      this.yPosition = this.graphic.yScale(this.serie.key);\r\n      this.yHeight = this.graphic.yScale.bandwidth();\r\n    }\r\n  }\r\n\r\n}\r\n","import {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\r\nimport {BoxSerie, GraphicContext} from '../../bd2-heatmap.dom';\r\n\r\n@Component({\r\n  selector: '[bd2hm-series-box]',\r\n  template: `\r\n    <svg:g *ngFor=\"let serie of series; trackBy: trackByIndex\"\r\n           bd2hm-serie-row [graphic]=\"graphic\" [serie]=\"serie\"></svg:g>\r\n  `,\r\n  styles: [],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SeriesBoxComponent implements OnInit {\r\n\r\n  @Input()\r\n  series: BoxSerie[];\r\n\r\n  @Input()\r\n  graphic: GraphicContext;\r\n\r\n  constructor() {\r\n  }\r\n\r\n  trackByIndex(index: number, item: any) {\r\n    return index;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n\r\n}\r\n","import {Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\r\nimport {Tick} from '../../../../../bd2-heatmap.dom';\r\n\r\n@Component({\r\n  selector: '[bd2hm-vtick-mark]',\r\n  template: `\r\n    <svg:line *ngIf=\"tick\"\r\n              [attr.x1]=\"tick.x\" [attr.x2]=\"tick.x\"\r\n              y1=\"0\" [attr.y2]=\"marky2\"\r\n    ></svg:line>\r\n    <svg:text *ngIf=\"tick\" [attr.x]=\"tick.x\" [attr.y]=\"texty2\" [attr.dy]=\"textdy\">{{tick.label}}</svg:text>\r\n  `,\r\n  styles: []\r\n})\r\nexport class VTickMarkComponent implements OnInit, OnChanges {\r\n\r\n  @Input()\r\n  tick: Tick;\r\n\r\n  @Input()\r\n  length = 5;\r\n\r\n  marky2: number;\r\n  texty2: number;\r\n  textdy: number | string;\r\n\r\n  constructor() {\r\n  }\r\n\r\n\r\n  ngOnInit(): void {\r\n    this.calculatePositions();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    this.calculatePositions();\r\n  }\r\n\r\n\r\n  calculatePositions() {\r\n    this.marky2 = this.tick?.top ? -this.length : this.length;\r\n    this.texty2 = this.tick?.top ? -(this.length + 4) : (this.length + 4);\r\n    this.textdy = this.tick?.top ? 0 : '0.6em';\r\n  }\r\n\r\n}\r\n","import {ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\r\nimport {ScaleLinear} from 'd3-scale';\r\nimport {Tick} from '../../../../bd2-heatmap.dom';\r\n\r\n//\r\n\r\n@Component({\r\n  selector: '[bd2hm-num-x-axis]',\r\n  template: `\r\n    <svg:g class=\"bd2hm-x-axis\" [attr.transform]=\"axisTransform\" >\r\n      <svg:line x1=\"0\" y1=\"0\" y2=\"0\" [attr.x2]=\"x2\"></svg:line>\r\n      <svg:g *ngFor=\"let tick of ticks; trackBy: trackByIndex\" bd2hm-vtick-mark class=\"bd2hm-tickMark\" [tick]=\"tick\"></svg:g>\r\n    </svg:g>\r\n  `,\r\n  styles: [],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NumXAxisComponent implements OnInit, OnChanges {\r\n\r\n  @Input()\r\n  xScale: ScaleLinear<number, number>;\r\n\r\n  @Input()\r\n  xDomain: [number, number];\r\n\r\n  @Input()\r\n  yPosition: number;\r\n\r\n  @Input()\r\n  top = false;\r\n\r\n  axisTransform: string;\r\n  x2: number;\r\n  ticks: Tick[] = [];\r\n\r\n  constructor() {\r\n  }\r\n\r\n  trackByIndex(index: number, item: any) {\r\n    return index;\r\n  }\r\n\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n\r\n    this.axisTransform = `translate(0,${this.yPosition})`;\r\n    this.x2 = this.xScale?.range()[1];\r\n    this.ticks = this.prepareTicks(this.xScale);\r\n  }\r\n\r\n\r\n  prepareTicks(xScale: ScaleLinear<number, number>): Tick[] {\r\n    const positions = this.calculateTicksPosition(xScale);\r\n\r\n    return positions.map(tick => new Tick(xScale(tick), 0, tick, this.top, false));\r\n  }\r\n\r\n\r\n\r\n  calculateTicksPosition(xScale: ScaleLinear<number, number>) {\r\n    if (!xScale) {\r\n      return [];\r\n    }\r\n    const ticks = [];\r\n    const domain = this.xDomain || xScale.domain();\r\n    const first = Math.round(domain[0]);\r\n    const last = Math.round(domain[1]);\r\n    const step = this.domainStep(last - first);\r\n    for (let i = first; i <= last; i += step) {\r\n      ticks.push(i);\r\n    }\r\n    return ticks;\r\n  }\r\n\r\n  domainStep(range: number) {\r\n    if (range <= 25) {\r\n      return 4;\r\n    }\r\n    if (range <= 73) {\r\n      return 6;\r\n    }\r\n    if (range <= 169) {\r\n      return 12;\r\n    }\r\n    return 24;\r\n  }\r\n\r\n}\r\n","import {ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\r\nimport {ScaleBand} from 'd3-scale';\r\n\r\n@Component({\r\n  selector: '[bd2hm-y-axis]',\r\n  template: `\r\n    <svg:g class=\"bd2hm-y-axis\" [attr.transform]=\"axisTransform\">\r\n      <svg:line x1=\"0\" y1=\"0\" x2=\"0\" [attr.y2]=\"y2\"></svg:line>\r\n    </svg:g>\r\n  `,\r\n  styles: [],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class YAxisComponent implements OnInit, OnChanges {\r\n\r\n  @Input()\r\n  yScale: ScaleBand<any>;\r\n\r\n  @Input()\r\n  xPosition: number;\r\n\r\n  @Input()\r\n  left = false;\r\n\r\n  axisTransform: string;\r\n  y2: number;\r\n\r\n  constructor() {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n\r\n    this.axisTransform = `translate(${this.xPosition},0)`;\r\n    this.y2 = this.yScale?.range()[1];\r\n  }\r\n\r\n}\r\n","import {ChangeDetectionStrategy, Component, Input, OnInit} from '@angular/core';\r\nimport {GraphicContext} from '../../../bd2-heatmap.dom';\r\n\r\n@Component({\r\n  selector: '[bd2hm-axis-box]',\r\n  template: `\r\n    <svg:g *ngIf=\"graphic\" class=\"bd2hm-axisWrapper\">\r\n      <g bd2hm-num-x-axis class=\"xTopAxis\" [top]=\"true\" [xScale]=\"graphic.xScale\"\r\n         [yPosition]=\"0\" [xDomain]=\"graphic.xDomain\"></g>\r\n      <g bd2hm-num-x-axis class=\"xBottomAxis\" [top]=\"false\" [xScale]=\"graphic.xScale\"\r\n         [yPosition]=\"graphic.workspaceHeight\" [xDomain]=\"graphic.xDomain\"></g>\r\n\r\n      <g bd2hm-y-axis class=\"yLeftAxis\" [left]=\"true\" [yScale]=\"graphic.yScale\" [xPosition]=\"0\"></g>\r\n      <g bd2hm-y-axis class=\"yRightAxis\" [left]=\"false\" [yScale]=\"graphic.yScale\" [xPosition]=\"graphic.workspaceWidth\"></g>\r\n    </svg:g>\r\n  `,\r\n  styles: [],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AxisBoxComponent implements OnInit {\r\n\r\n  @Input()\r\n  graphic: GraphicContext;\r\n\r\n  constructor() {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n\r\n}\r\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges} from '@angular/core';\r\nimport {BoxSerie, GraphicContext, LookAndFeelSizing, Serie} from '../../bd2-heatmap.dom';\r\nimport {TooltipService} from '../../plot-elements/tooltip/tooltip.service';\r\nimport {HeatmapDataUtil} from '../heatmap-data-util';\r\nimport {HeatmapGraphUtil} from '../../heatmap-graph-util';\r\n\r\n@Component({\r\n  selector: 'bd2-num-heatmap',\r\n  templateUrl: './bd2-num-heatmap.component.html',\r\n  styleUrls: ['./bd2-num-heatmap.component.css'],\r\n  providers: [TooltipService],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class Bd2NumHeatmapComponent implements OnInit, OnDestroy, OnChanges {\r\n\r\n  series: BoxSerie[];\r\n\r\n  @Input()\r\n  data: Serie[];\r\n\r\n  @Input()\r\n  asymmetric = false;\r\n\r\n  @Input()\r\n  middleZero = false;\r\n\r\n  @Input()\r\n  hidden = false;\r\n\r\n  @Input()\r\n  labelsAlwaysOn = true;\r\n\r\n  @Input()\r\n  lookAndFeel = new LookAndFeelSizing();\r\n\r\n  graphic: GraphicContext;\r\n\r\n  heatmapDataUtil = new HeatmapDataUtil();\r\n  heatmapGraphUtil = new HeatmapGraphUtil();\r\n\r\n  constructor(private changeDetector: ChangeDetectorRef, private tooltip: TooltipService) {\r\n  }\r\n\r\n\r\n  ngOnInit(): void {\r\n    // this.changeDetector.detach();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.tooltip) {\r\n      this.tooltip.ngOnDestroy();\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (this.data && this.data.length > 0) {\r\n      this.series = this.heatmapDataUtil.seriesToBoxes(this.data, this.asymmetric);\r\n      this.graphic = this.heatmapGraphUtil.prepareGraphicContext(this.series, this.lookAndFeel, this.middleZero);\r\n    } else {\r\n      this.graphic = undefined;\r\n      this.series = undefined;\r\n    }\r\n  }\r\n\r\n\r\n}\r\n","<div class=\"bd2hm-heatmap\" [hidden]=\"hidden\">\r\n  <svg *ngIf=\"graphic\" width=\"100%\" [attr.viewBox]=\"graphic.viewBox\">\r\n    <defs>\r\n      <filter id=\"bd2hm-shadow\">\r\n        <feDropShadow dx=\"1\" dy=\"1\" stdDeviation=\"1\"/>\r\n      </filter>\r\n      <pattern id=\"bd2hm-pattern-diagonal\" width=\"10\" height=\"10\" patternTransform=\"rotate(45 0 0)\"\r\n               patternUnits=\"userSpaceOnUse\">\r\n        <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"10\" style=\"stroke:lightgrey; stroke-width:1\"/>\r\n      </pattern>\r\n    </defs>\r\n\r\n    <g class=\"bd2hm-mainPane\" [attr.transform]=\"graphic.mainPaneTransform\">\r\n\r\n      <g bd2hm-pane-back [graphic]=\"graphic\" class=\"bd2hm-paneBack\"></g>\r\n\r\n\r\n      <g bd2hm-axis-box [graphic]=\"graphic\"></g>\r\n\r\n\r\n\r\n      <g bd2hm-series-box [graphic]=\"graphic\" [series]=\"series\" class=\"bd2hm-seriesBox\"></g>\r\n\r\n\r\n      <g bd2hm-labels [graphic]=\"graphic\" [data]=\"series\" [alwaysOn]=\"labelsAlwaysOn\"></g>\r\n\r\n      <g bd2hm-tooltip [graphic]=\"graphic\"></g>\r\n    </g>\r\n  </svg>\r\n  <!--{{ series | json }}-->\r\n</div>\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {AxisBoxComponent} from './axis-box/axis-box.component';\r\nimport {YAxisComponent} from './axis-box/y-axis/y-axis.component';\r\nimport {VTickMarkComponent} from './axis-box/x-axis/v-tick-mark/v-tick-mark.component';\r\nimport {NumXAxisComponent} from './axis-box/x-axis/num-x-axis.component';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    AxisBoxComponent,\r\n    NumXAxisComponent,\r\n    YAxisComponent,\r\n    VTickMarkComponent,\r\n  ],\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  exports: [\r\n    AxisBoxComponent,\r\n    NumXAxisComponent,\r\n    YAxisComponent,\r\n    VTickMarkComponent,\r\n  ],\r\n})\r\nexport class AxisModule { }\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {TooltipComponent} from './tooltip/tooltip.component';\r\nimport {LabelsComponent} from './labels/labels.component';\r\nimport {LabelBoxComponent} from './labels/label-box/label-box.component';\r\nimport {SerieRowComponent} from './series-box/serie-row/serie-row.component';\r\nimport {DataPointBoxComponent} from './series-box/serie-row/data-point-box/data-point-box.component';\r\nimport {SeriesBoxComponent} from './series-box/series-box.component';\r\nimport {PaneBackComponent} from './pane-back/pane-back.component';\r\nimport {AxisModule} from './axis/axis.module';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    LabelsComponent,\r\n    LabelBoxComponent,\r\n    TooltipComponent,\r\n    PaneBackComponent,\r\n    SeriesBoxComponent,\r\n    SerieRowComponent,\r\n    DataPointBoxComponent,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    AxisModule\r\n  ],\r\n  exports: [\r\n    LabelsComponent,\r\n    LabelBoxComponent,\r\n    TooltipComponent,\r\n    PaneBackComponent,\r\n    SeriesBoxComponent,\r\n    SerieRowComponent,\r\n    DataPointBoxComponent,\r\n    AxisModule\r\n  ]\r\n\r\n})\r\nexport class PlotElementsModule { }\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {Bd2NumHeatmapComponent} from './bd2-num-heatmap/bd2-num-heatmap.component';\r\nimport {PlotElementsModule} from '../plot-elements/plot-elements.module';\r\n\r\n\r\n@NgModule({\r\n  declarations: [Bd2NumHeatmapComponent],\r\n  imports: [\r\n    CommonModule,\r\n    PlotElementsModule\r\n  ],\r\n  exports: [Bd2NumHeatmapComponent]\r\n})\r\nexport class Bd2NumHeatmapModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport {Bd2NumHeatmapModule} from './bd2-num-heatmap/bd2-num-heatmap.module';\r\nimport {Bd2NumHeatmapComponent} from './bd2-num-heatmap/bd2-num-heatmap/bd2-num-heatmap.component';\r\n\r\n\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  imports: [\r\n    Bd2NumHeatmapModule\r\n  ],\r\n  exports: [Bd2NumHeatmapComponent]\r\n})\r\nexport class Bd2NgxHeatmapModule { }\r\n","/*\r\n * Public API Surface of bd2-ngx-heatmap\r\n */\r\n\r\nexport * from './lib/bd2-heatmap.dom';\r\nexport * from './lib/bd2-num-heatmap/bd2-num-heatmap/bd2-num-heatmap.component';\r\nexport * from './lib/bd2-ngx-heatmap.module';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.LabelBoxComponent","i1.TooltipService","i2","i2.DataPointBoxComponent","i2.SerieRowComponent","i2.VTickMarkComponent","i2.NumXAxisComponent","i3.YAxisComponent","i3.LabelsComponent","i4.TooltipComponent","i5.PaneBackComponent","i6.SeriesBoxComponent","i7.AxisBoxComponent"],"mappings":"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"}