nw-style-guide 20.2.0-beta.0 → 20.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ {
2
+ "module": "../fesm2022/nw-style-guide-animations.mjs"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "module": "../fesm2022/nw-style-guide-autofocus.mjs"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "module": "../fesm2022/nw-style-guide-carousel.mjs"
3
+ }
package/charts/index.d.ts CHANGED
@@ -15,7 +15,7 @@ declare class ChartUtils {
15
15
  private _chartResize$;
16
16
  chartResize$: Observable<any>;
17
17
  constructor();
18
- static areDatasetsEqual(a: [number, number][], b: [number, number][]): boolean;
18
+ static areDatasetsEqual(a: Array<[number, number]>, b: Array<[number, number]>): boolean;
19
19
  static haveDomainsChanged(xDomain: SimpleChange, yDomain: SimpleChange): boolean;
20
20
  static hasInputChanged(input: SimpleChange): boolean;
21
21
  notifyChartResize(): void;
@@ -72,7 +72,7 @@ declare class PathDirective implements OnInit, OnChanges, OnDestroy {
72
72
  private _elRef;
73
73
  private _chart;
74
74
  private _chartUtils;
75
- data: [number, number][];
75
+ data: Array<[number, number]>;
76
76
  xDomain: [number, number];
77
77
  yDomain: [number, number];
78
78
  animDuration: number;
@@ -81,7 +81,7 @@ declare class PathDirective implements OnInit, OnChanges, OnDestroy {
81
81
  xScale: NwXAxisScale;
82
82
  animEnd: EventEmitter<void>;
83
83
  line: Line<[number, number]>;
84
- path: Selection<SVGPathElement, [number, number][], SVGElement, any>;
84
+ path: Selection<SVGPathElement, Array<[number, number]>, SVGElement, any>;
85
85
  yScale: ScaleLinear<number, number>;
86
86
  private _chartResizeSub;
87
87
  constructor(_elRef: ElementRef, _chart: ChartComponent, _chartUtils: ChartUtils);
@@ -114,7 +114,7 @@ declare abstract class AxisBase implements OnInit, OnChanges, OnDestroy {
114
114
  axis: Axis<number | Date | {
115
115
  valueOf(): number;
116
116
  }>;
117
- axisSelection: Selection<SVGGElement, [number, number][], SVGElement, any>;
117
+ axisSelection: Selection<SVGGElement, Array<[number, number]>, SVGElement, any>;
118
118
  axisLabelSelection: Selection<SVGTextElement, any, HTMLElement, any>;
119
119
  private _chartResizeSub;
120
120
  constructor(_elRef: ElementRef, chart: ChartComponent, _chartUtils: ChartUtils);
@@ -258,14 +258,14 @@ declare class AreaDirective implements OnInit, OnChanges, OnDestroy {
258
258
  *
259
259
  * If there are 2 the area is drawn to the chart height
260
260
  */
261
- data: AreaDatum[];
261
+ data: Array<AreaDatum>;
262
262
  xDomain: [number, number];
263
263
  yDomain: [number, number];
264
264
  animDuration: number;
265
265
  curve: CurveFactory;
266
266
  easing: (normalizedTime: number) => number;
267
267
  xScale: NwXAxisScale;
268
- areaSelection: Selection<SVGPathElement, AreaDatum[], SVGElement, any>;
268
+ areaSelection: Selection<SVGPathElement, Array<AreaDatum>, SVGElement, any>;
269
269
  area: Area<AreaDatum>;
270
270
  yScale: ScaleLinear<number, number>;
271
271
  private _chartResizeSub;
@@ -0,0 +1,3 @@
1
+ {
2
+ "module": "../fesm2022/nw-style-guide-charts.mjs"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "module": "../fesm2022/nw-style-guide-email-input.mjs"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "module": "../fesm2022/nw-style-guide-feature-alerts.mjs"
3
+ }
@@ -80,6 +80,7 @@ class ChartComponent {
80
80
  .attr("transform", "translate(" + this.margins.left + "," + this.margins.top + ")");
81
81
  }
82
82
  setHoverOverlay() {
83
+ const self = this;
83
84
  // This full height / width rect ensures that all mouse events will
84
85
  // be captured and delegated to the parent mouseEventCaptureContainer
85
86
  select(this.hoverOverlay.nativeElement)
@@ -92,7 +93,7 @@ class ChartComponent {
92
93
  .on('mouseleave', () => this.nwMouseleave.emit())
93
94
  .on('mousemove', e => {
94
95
  // emits the current mouse position
95
- this.nwMousemove.emit(pointer(e));
96
+ self.nwMousemove.emit(pointer(e));
96
97
  });
97
98
  }
98
99
  onBackgroundClick() {
@@ -1 +1 @@
1
- {"version":3,"file":"nw-style-guide-charts.mjs","sources":["../../../projects/nw-style-guide/charts/chart.utils.ts","../../../projects/nw-style-guide/charts/chart.component.ts","../../../projects/nw-style-guide/charts/path/path.directive.ts","../../../projects/nw-style-guide/charts/axis/axis-base.ts","../../../projects/nw-style-guide/charts/axis/x-axis.directive.ts","../../../projects/nw-style-guide/charts/axis/y-axis.directive.ts","../../../projects/nw-style-guide/charts/circle/circle.directive.ts","../../../projects/nw-style-guide/charts/brush/brush.directive.ts","../../../projects/nw-style-guide/charts/bar/bar.directive.ts","../../../projects/nw-style-guide/charts/area/area.directive.ts","../../../projects/nw-style-guide/charts/tooltip/chart-tooltip.directive.ts","../../../projects/nw-style-guide/charts/foreign-object/foreign-object.directive.ts","../../../projects/nw-style-guide/charts/text/text.directive.ts","../../../projects/nw-style-guide/charts/charts.module.ts","../../../projects/nw-style-guide/charts/nw-style-guide-charts.ts"],"sourcesContent":["import { Injectable, SimpleChange } from \"@angular/core\";\nimport { easeCubicInOut } from \"d3-ease\";\nimport { Subject, Observable } from \"rxjs\";\n\n@Injectable()\nexport class ChartUtils {\n\n public static ANIMATION_DURATION: number = 1000;\n public static ANIMATION_EASING: (normalizedTime: number) => number = easeCubicInOut;\n\n private _chartResize$: Subject<void>;\n public chartResize$: Observable<any>;\n\n constructor() {\n this._chartResize$ = new Subject();\n this.chartResize$ = this._chartResize$.asObservable();\n }\n\n static areDatasetsEqual(a: [number, number][], b: [number, number][]) {\n return a.length === b.length &&\n a.every((value, index) => {\n return value[0] === b[index][0] && value[1] === b[index][1];\n });\n }\n\n static haveDomainsChanged(xDomain: SimpleChange, yDomain: SimpleChange): boolean {\n return this.hasInputChanged(xDomain) || this.hasInputChanged(yDomain);\n }\n\n static hasInputChanged(input: SimpleChange): boolean {\n return input &&\n !input.firstChange &&\n input.previousValue !== input.currentValue;\n }\n\n notifyChartResize(): void {\n this._chartResize$.next();\n }\n\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild, AfterViewInit, ChangeDetectionStrategy, Output, EventEmitter, OnDestroy } from '@angular/core';\nimport { select, Selection, pointer } from 'd3-selection';\nimport { ChartUtils } from './chart.utils';\nimport { fromEvent, Subject, merge } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'svg[nw-chart]',\n template: `\n <svg:g #chartContainer\n nwResizeObserver\n [element]=\"parentElement\"\n (nwResize)=\"onChartDimensionsChange()\">\n <!-- Keep axes outside the main rendering container so\n that we only get mouse events from graphical elements -->\n <ng-content select=\"[nw-x-axis],[nw-y-axis]\"></ng-content>\n <svg:g #mouseEventCaptureContainer class=\"mouse-event-capture-container\">\n <ng-content select=\".nw-slot-1\"></ng-content>\n <svg:rect #hoverOverlay (click)=\"onBackgroundClick()\"></svg:rect>\n <ng-content select=\".nw-slot-2\"></ng-content>\n <ng-content></ng-content>\n </svg:g>\n </svg:g>\n `,\n providers: [ChartUtils],\n exportAs: 'nw-chart',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class ChartComponent implements OnInit, AfterViewInit, OnDestroy {\n\n @Input('width') w: number;\n @Input('height') h: number;\n @Input() margins: {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n } = { top: 0, bottom: 0, left: 0, right: 0 };\n\n @ViewChild('chartContainer', { static: true }) chartContainer: ElementRef<SVGGElement>;\n @ViewChild('mouseEventCaptureContainer', { static: true }) mouseEventCaptureContainer: ElementRef<SVGGElement>;\n @ViewChild('hoverOverlay', { static: true }) hoverOverlay: ElementRef<SVGRectElement>;\n\n @Output() nwMousemove: EventEmitter<[number, number]> = new EventEmitter();\n @Output() nwMouseleave: EventEmitter<null> = new EventEmitter();\n @Output() bgClick: EventEmitter<null> = new EventEmitter();\n\n public svg: Selection<SVGSVGElement, any, HTMLElement, any>;\n public parentElement: HTMLElement;\n\n private _destroyed$: Subject<void> = new Subject();\n private _chartDimensionsChange$: Subject<void> = new Subject();\n\n constructor(\n private _elRef: ElementRef<SVGSVGElement>,\n public chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.parentElement = this._elRef.nativeElement.parentElement;\n\n this.setSvg();\n this.setHoverOverlay();\n this.subscribeToChartResize();\n }\n\n ngAfterViewInit() {\n this.appendContainer();\n }\n\n get width(): number {\n return (this.w || this._elRef.nativeElement.getBoundingClientRect().width) - this.margins.left - this.margins.right;\n }\n\n get height(): number {\n return (this.h || this._elRef.nativeElement.getBoundingClientRect().height) - this.margins.top - this.margins.bottom;\n }\n\n setSvg(): void {\n this.svg = select(this._elRef.nativeElement)\n .attr(\"width\", this.width + this.margins.left + this.margins.right)\n .attr(\"height\", this.height + this.margins.top + this.margins.bottom);\n }\n\n appendContainer(): void {\n select(this.chartContainer.nativeElement)\n .attr(\"transform\", \"translate(\" + this.margins.left + \",\" + this.margins.top + \")\");\n }\n\n setHoverOverlay() {\n // This full height / width rect ensures that all mouse events will\n // be captured and delegated to the parent mouseEventCaptureContainer\n select(this.hoverOverlay.nativeElement)\n .attr(\"width\", this.width)\n .attr(\"height\", this.height)\n .style('fill', 'none')\n .style('pointer-events', 'all');\n\n select(this.mouseEventCaptureContainer.nativeElement)\n .style('pointer-events', 'all')\n .on('mouseleave', () => this.nwMouseleave.emit())\n .on('mousemove', e => {\n // emits the current mouse position\n this.nwMousemove.emit(pointer(e));\n });\n }\n\n onBackgroundClick() {\n this.bgClick.emit();\n }\n\n /**\n * As well charts being resized due to the window being resized, another scenario is that\n * the parent element is squeezed or stretched in a reponsive design due to the appearance\n * or disappearance of other elements. For this we use our nwResizeObserver which utilizes\n * ResizeObserver under the hood.\n */\n subscribeToChartResize() {\n const windowResize$ = fromEvent(window, 'resize');\n\n merge(windowResize$, this._chartDimensionsChange$)\n .pipe(\n debounceTime(100),\n takeUntil(this._destroyed$)\n )\n .subscribe(_ => this.chartUtils.notifyChartResize());\n }\n\n onChartDimensionsChange() {\n this._chartDimensionsChange$.next();\n }\n\n ngOnDestroy() {\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n}\n","import { Directive, OnInit, Input, ElementRef, OnChanges, SimpleChanges, Output, EventEmitter, OnDestroy } from '@angular/core';\nimport { select, Selection } from 'd3-selection';\nimport { line, Line, curveLinear, CurveFactory } from 'd3-shape';\nimport { ScaleLinear, scaleTime, scaleLinear } from 'd3-scale';\nimport { ChartUtils } from '../chart.utils';\nimport 'd3-transition';\nimport { ChartComponent } from '../chart.component';\nimport { Subscription } from 'rxjs';\nimport { NwXAxisScale } from '../axis/models/XAxisScale';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'path[nw-path]',\n exportAs: 'nw-path',\n standalone: false\n})\nexport class PathDirective implements OnInit, OnChanges, OnDestroy {\n\n @Input('nw-path') data: [number, number][] = [];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() curve: CurveFactory = curveLinear;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n @Output() animEnd: EventEmitter<void> = new EventEmitter();\n\n public line: Line<[number, number]>;\n public path: Selection<SVGPathElement, [number, number][], SVGElement, any>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.path = select(this._elRef.nativeElement as SVGPathElement);\n\n this.setDomains();\n this.setLine();\n this.drawLine();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.data && !changes.data.firstChange && !ChartUtils.areDatasetsEqual(changes.data.previousValue, changes.data.currentValue);\n const isCurveChange = changes.curve && !changes.curve.firstChange && (changes.curve.currentValue !== changes.curve.previousValue);\n\n if (isDomainChange || isDataChange || isCurveChange) {\n this.setDomains();\n this.setLine();\n this.updateLine();\n }\n }\n\n setDomains() {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n setLine(): void {\n this.line = line().curve(this.curve)\n .x(d => this.xScale(d[0]))\n .y(d => this.yScale(d[1]));\n }\n\n drawLine(): void {\n this.path\n .datum(this.data)\n .attr('d', this.line);\n }\n\n updateLine(): void {\n this.path\n .datum(this.data)\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .attr('d', this.line)\n .on('end', e => this.animEnd.next());\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.drawLine();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import { Input, OnInit, ElementRef, OnChanges, SimpleChanges, OnDestroy, Directive } from \"@angular/core\";\nimport { Axis, AxisTimeInterval } from 'd3-axis';\nimport { ChartUtils } from \"../chart.utils\";\nimport { select, Selection } from \"d3-selection\";\nimport { ChartComponent } from \"../chart.component\";\nimport { Subscription } from \"rxjs\";\n\n@Directive()\nexport abstract class AxisBase implements OnInit, OnChanges, OnDestroy {\n\n @Input() tickFormat: (value: number | Date | { valueOf(): number }) => string;\n @Input() tickCount: number | AxisTimeInterval;\n @Input() tickSizeOuter: number = 6;\n @Input() tickValues: any[];\n @Input() showGuidlines: boolean = false;\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() label: string = '';\n\n public axis: Axis<number | Date | { valueOf(): number }>;\n public axisSelection: Selection<SVGGElement, [number, number][], SVGElement, any>;\n public axisLabelSelection: Selection<SVGTextElement, any, HTMLElement, any>;\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n public chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.axisSelection = select(this._elRef.nativeElement as SVGGElement);\n\n this.createAxis();\n this.setDomain();\n this.setTicks();\n this.createLabel();\n this.render();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(c: SimpleChanges) {\n const isDomainChange = ChartUtils.hasInputChanged(c.domain);\n const isTickSettingsChange = ChartUtils.hasInputChanged(c.tickCount) ||\n ChartUtils.hasInputChanged(c.tickSizeOuter) ||\n ChartUtils.hasInputChanged(c.showGuidlines) ||\n ChartUtils.hasInputChanged(c.tickValues);\n\n if (isDomainChange || isTickSettingsChange) {\n this.setDomain();\n this.setTicks();\n this.update();\n }\n }\n\n createAxis(): any {\n throw new Error(\"Method not implemented.\");\n }\n\n setTicks() {\n this.axis\n .ticks(this.tickCount)\n .tickFormat(this.tickFormat)\n .tickSizeOuter(this.tickSizeOuter)\n .tickValues(this.tickValues);\n }\n\n setDomain() {\n throw new Error(\"Method not implemented.\");\n }\n\n createLabel() {\n this.axisLabelSelection = this.chart.svg.append('text')\n .style('text-anchor', 'middle');\n }\n\n render(): any {\n throw new Error(\"Method not implemented.\");\n }\n\n update() {\n this.axisSelection\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .call(this.axis);\n }\n\n get fullWidth() {\n return this.chart.width + this.chart.margins.left + this.chart.margins.right;\n }\n\n get fullHeight() {\n return this.chart.height + this.chart.margins.top + this.chart.margins.bottom;\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomain();\n this.setTicks();\n this.render();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import { Directive, ElementRef, Input, Output, EventEmitter } from '@angular/core';\nimport { axisBottom, axisTop } from 'd3-axis';\nimport { AxisBase } from './axis-base';\nimport { scaleTime } from 'd3-scale';\nimport { ChartComponent } from '../chart.component';\nimport { ChartUtils } from \"../chart.utils\";\nimport { NwXAxisScale } from './models/XAxisScale';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[nw-x-axis]',\n exportAs: 'nw-x-axis',\n standalone: false\n})\nexport class XAxisDirective extends AxisBase {\n\n @Input() align: 'top' | 'bottom' | 'center' = 'bottom';\n @Input() domain: [number, number];\n @Input() scale: NwXAxisScale = scaleTime();\n\n @Output() scaleUpdated: EventEmitter<NwXAxisScale> = new EventEmitter();\n\n constructor(\n elRef: ElementRef,\n chart: ChartComponent,\n chartUtils: ChartUtils) {\n\n super(elRef, chart, chartUtils);\n }\n\n createAxis() {\n this.axis = this.align === \"bottom\" ?\n axisBottom(this.scale) :\n axisTop(this.scale);\n }\n\n setTicks() {\n super.setTicks();\n\n if (this.showGuidlines) {\n this.axis.tickSizeInner(-this.chart.height);\n } else {\n this.axis.tickSizeInner(6);\n }\n\n this.scaleUpdated.emit(this.scale.copy());\n }\n\n setDomain() {\n (this.scale.domain(this.domain) as NwXAxisScale).range([0, this.chart.width]);\n }\n\n positionLabel() {\n if (this.label) {\n const y = this.align === 'top' ? 0 : this.fullHeight;\n const dy = this.align === 'top' ? \"1em\" : \"-0.5em\";\n\n this.axisLabelSelection\n .attr('class', 'axis-label ' + this.align)\n .attr('dy', dy)\n .attr('transform', `translate(${this.fullWidth / 2}, ${y})`)\n .text(this.label);\n }\n }\n\n render() {\n const yTranslation = this._getAxisTranslation();\n\n this.axisSelection\n .attr('transform', \"translate(0,\" + yTranslation + \")\")\n .call(this.axis);\n\n this.positionLabel();\n }\n\n private _getAxisTranslation(): number {\n if (this.align === 'bottom') {\n return this.chart.height;\n }\n\n if (this.align === 'center') {\n return this.chart.height / 2;\n }\n\n return 0;\n }\n\n}\n","import { Directive, ElementRef, Input, Output, EventEmitter } from '@angular/core';\nimport { axisLeft, axisRight } from 'd3-axis';\nimport { AxisBase } from './axis-base';\nimport { ScaleLinear, scaleLinear } from 'd3-scale';\nimport { ChartComponent } from '../chart.component';\nimport { ChartUtils } from \"../chart.utils\";\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[nw-y-axis]',\n exportAs: 'nw-y-axis',\n standalone: false\n})\nexport class YAxisDirective extends AxisBase {\n\n @Input() align: 'left' | 'right' | 'center' = 'left';\n @Input() domain: [number, number];\n\n @Output() scaleUpdated: EventEmitter<ScaleLinear<number, number>> = new EventEmitter();\n\n public scale: ScaleLinear<number, number> = scaleLinear();\n\n constructor(\n elRef: ElementRef,\n chart: ChartComponent,\n chartUtils: ChartUtils) {\n\n super(elRef, chart, chartUtils);\n }\n\n createAxis() {\n this.axis = this.align === \"left\" ?\n axisLeft(this.scale) :\n axisRight(this.scale);\n }\n\n setTicks() {\n super.setTicks();\n\n if (this.showGuidlines) {\n this.axis.tickSizeInner(-this.chart.width);\n } else {\n this.axis.tickSizeInner(6);\n }\n\n this.scaleUpdated.emit(this.scale.copy());\n }\n\n setDomain() {\n this.scale.domain(this.domain).range([this.chart.height, 0]);\n }\n\n positionLabel() {\n if (this.label) {\n const rotationAngle = this.align === 'left' ? '-90' : '90';\n const y = this.align === 'left' ? 0 : -this.fullWidth;\n const x = this.align === 'left' ? -(this.fullHeight / 2) : (this.fullHeight / 2);\n\n this.axisLabelSelection\n .attr('class', 'axis-label ' + this.align)\n .attr('transform', `rotate(${rotationAngle})`)\n .attr('y', y)\n .attr('x', x)\n .attr('dy', \"1em\")\n .text(this.label);\n }\n }\n\n render() {\n const xTranslation = this._getAxisTranslation();\n\n this.axisSelection\n .attr('transform', \"translate(\" + xTranslation + \", 0)\")\n .call(this.axis);\n\n this.positionLabel();\n }\n\n private _getAxisTranslation(): number {\n if (this.align === 'right') {\n return this.chart.width;\n }\n\n if (this.align === 'center') {\n return this.chart.width / 2;\n }\n\n return 0;\n }\n\n}\n","import { Directive, Input, OnInit, ElementRef, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\nimport { ChartUtils } from '../chart.utils';\nimport { select, Selection } from 'd3-selection';\nimport { ScaleLinear, scaleTime, scaleLinear } from 'd3-scale';\nimport { ChartComponent } from '../chart.component';\nimport { Subscription } from 'rxjs';\nimport { NwXAxisScale } from '../axis/models/XAxisScale';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'circle[nw-circle]',\n exportAs: 'nw-circle',\n standalone: false\n})\nexport class CircleDirective implements OnInit, OnChanges, OnDestroy {\n\n @Input('nw-circle') point: [number, number];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n public circle: Selection<SVGCircleElement, [number, number], SVGElement, any>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.circle = select(this._elRef.nativeElement as SVGCircleElement);\n\n this.setDomains();\n this.draw();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.point && !changes.point.firstChange && !ChartUtils.areDatasetsEqual([changes.point.previousValue], [changes.point.currentValue]);\n\n if (isDomainChange || isDataChange) {\n this.setDomains();\n this.update();\n }\n }\n\n setDomains() {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n draw(): void {\n this.circle\n .attr(\"transform\", this.transform);\n }\n\n update() {\n this.circle\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .attr(\"transform\", this.transform);\n }\n\n get transform(): string {\n return `translate(${this.x}, ${this.y})`;\n }\n\n get x(): number {\n return this.xScale(this.point[0]);\n }\n\n get y(): number {\n return this.yScale(this.point[1]);\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.draw();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import { Directive, ElementRef, OnInit, Input, OnDestroy, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { select, Selection } from 'd3-selection';\nimport { brush, BrushBehavior, brushX, brushY } from 'd3-brush';\nimport { ChartComponent } from '../chart.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'svg:g[nw-brush]',\n exportAs: 'nw-brush',\n standalone: false\n})\nexport class BrushDirective implements OnInit, OnDestroy, OnChanges {\n\n @Input() extent: [[number, number], [number, number]];\n @Input() dimension: 'x' | 'y' | '' = '';\n\n @Output() brushEnd: EventEmitter<[[number, number], [number, number]]> = new EventEmitter();\n\n public brushSelection: Selection<SVGGElement, any, HTMLElement, any>;\n public brush: BrushBehavior<any>;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent) {}\n\n ngOnInit() {\n this.initialize();\n this._subscribeToBrushEndEvent();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.dimension && !changes.dimension.firstChange && changes.dimension.previousValue !== changes.dimension.currentValue) {\n this.reset();\n }\n }\n\n initialize() {\n this.brushSelection = select(this._elRef.nativeElement as SVGSVGElement);\n this.brushSelection.attr('class', 'nw-brush');\n this._createBrush();\n }\n\n reset() {\n this._unbindEvents();\n this._clearBrush();\n this._createBrush();\n this._subscribeToBrushEndEvent();\n }\n\n private _createBrush() {\n switch (this.dimension) {\n case 'x':\n this.brush = brushX();\n break;\n\n case 'y':\n this.brush = brushY();\n break;\n\n default:\n this.brush = brush();\n break;\n }\n\n this.brush.extent(this.getExtent());\n\n this.brushSelection.call(this.brush);\n }\n\n getExtent(): [[number, number], [number, number]] {\n return this.extent || [\n [0, 0],\n [this._chart.width, this._chart.height]\n ];\n }\n\n private _subscribeToBrushEndEvent() {\n this.brush.on('end', () => {\n const selection = this.brushSelection.select('rect.selection');\n const nw: [number, number] = [+selection.attr('x'), +selection.attr('y')];\n const se: [number, number] = [\n +selection.attr('x') + +selection.attr('width'),\n +selection.attr('y') + +selection.attr('height')\n ];\n const emission: [[number, number], [number, number]] = nw[0] === se[0] && nw[1] === se[1] ?\n null :\n [nw, se];\n\n this.brushEnd.emit(emission);\n });\n }\n\n private _clearBrush() {\n this.brush.move(this.brushSelection, null);\n this.brushEnd.emit(null);\n }\n\n private _unbindEvents() {\n this.brush.on('end', null);\n }\n\n ngOnDestroy() {\n this._unbindEvents();\n }\n\n}\n","import { Directive, Input, OnInit, OnChanges, ElementRef, SimpleChanges, OnDestroy } from '@angular/core';\nimport { select, Selection } from 'd3-selection';\nimport { ScaleLinear, scaleTime, scaleLinear } from 'd3-scale';\nimport { ChartUtils } from '../chart.utils';\nimport { ChartComponent } from '../chart.component';\nimport { Subscription } from 'rxjs';\nimport { NwXAxisScale } from '../axis/models/XAxisScale';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'rect[nw-bar]',\n standalone: false\n})\nexport class BarDirective implements OnInit, OnChanges, OnDestroy {\n\n /**\n * [number, number] corresponds to a coordinate of [x, y]\n * [number, number, number] corresponds to a coordinate of [x, y2, y1] where y1 is the lower\n * y-value and y2 is the upper y-value. Where y1 is not provided the bar will span from the\n * provided y-value to 0 (the full chart height)\n */\n @Input('nw-bar') value: [number, number] | [number, number, number];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() barWidth: number = 20;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n public rect: Selection<SVGRectElement, [number, number], SVGElement, any>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) { }\n\n ngOnInit() {\n this.rect = select(this._elRef.nativeElement as SVGRectElement);\n\n this.setDomains();\n this.draw();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.value && !changes.value.firstChange && !ChartUtils.areDatasetsEqual([changes.value.previousValue], [changes.value.currentValue]);\n const barWidthChange = changes.barWidth && !changes.barWidth.firstChange && (changes.barWidth.previousValue !== changes.barWidth.currentValue);\n\n if (isDomainChange || isDataChange || barWidthChange) {\n this.setDomains();\n this.draw(this.animDuration);\n }\n }\n\n setDomains() {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n draw(animDuration: number = 0) {\n const x = this.value[0];\n const y2 = this.value[1];\n const y1 = this.value[2];\n const height = y1 ? y2 - y1 : y2;\n\n this.rect\n .transition()\n .duration(animDuration)\n .ease(this.easing)\n .attr('x', this.xScale(x) - (this.barWidth / 2))\n .attr('y', this.yScale(y2))\n .attr(\"width\", this.barWidth)\n .attr(\"height\", this._chart.height - this.yScale(height));\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.draw();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import { Directive, Input, ElementRef, OnInit, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\nimport { area, Area, CurveFactory, curveLinear } from 'd3-shape';\nimport { ChartComponent } from '../chart.component';\nimport { ScaleLinear, scaleTime, scaleLinear } from 'd3-scale';\nimport { select, Selection } from 'd3-selection';\nimport { ChartUtils } from '../chart.utils';\nimport { Subscription } from 'rxjs';\nimport { NwXAxisScale } from '../axis/models/XAxisScale';\n\ntype AreaDatum = [number, number] | [number, number, number];\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'path[nw-area]',\n exportAs: 'nw-area',\n standalone: false\n})\nexport class AreaDirective implements OnInit, OnChanges, OnDestroy {\n\n /**\n * Each data entry may have 2 or 3 values. If there are 3 the area is drawn within the bounds.\n *\n * If there are 2 the area is drawn to the chart height\n */\n @Input('nw-area') data: AreaDatum[] = [];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() curve: CurveFactory = curveLinear;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n public areaSelection: Selection<SVGPathElement, AreaDatum[], SVGElement, any>;\n public area: Area<AreaDatum>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.areaSelection = select(this._elRef.nativeElement as SVGPathElement);\n\n this.setDomains();\n this.setArea();\n this.drawArea();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.data && !changes.data.firstChange && !ChartUtils.areDatasetsEqual(changes.data.previousValue, changes.data.currentValue);\n const isCurveChange = changes.curve && !changes.curve.firstChange && (changes.curve.currentValue !== changes.curve.previousValue);\n\n if (isDomainChange || isDataChange || isCurveChange) {\n this.setDomains();\n this.setArea();\n this.updateArea();\n }\n }\n\n setDomains(): void {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n setArea(): void {\n this.area = area<AreaDatum>()\n .x(d => this.xScale(d[0]))\n .y0(d => d[2] ? this.yScale(d[2]) : this._chart.height)\n .y1(d => this.yScale(d[1]));\n }\n\n drawArea(): void {\n this.areaSelection\n .datum(this.data)\n .attr('d', this.area);\n }\n\n updateArea(): void {\n this.areaSelection\n .datum(this.data)\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .attr('d', this.area);\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.setArea();\n this.drawArea();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import {AfterViewInit, Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges} from '@angular/core';\n\n@Directive({\n selector: '[nwChartTooltip]',\n standalone: false\n})\nexport class ChartTooltipDirective implements OnChanges, AfterViewInit {\n @Input() position: [number, number];\n @Input() chartWidth: number;\n @Input() chartHeight: number;\n @Input() chartMargins: {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n };\n @Input() offsetX: number = 16;\n private _width: number;\n private _height: number;\n\n constructor(\n private _elRef: ElementRef,\n private _renderer: Renderer2) {\n }\n\n ngAfterViewInit() {\n this._setTooltipSize();\n\n this._renderer.setStyle(this._elRef.nativeElement, 'pointer-events', 'none');\n this._renderer.setStyle(this._elRef.nativeElement, 'position', 'absolute');\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.position && changes.position.previousValue !== changes.position.currentValue) {\n\n const offsetLeft = changes.position.currentValue[0] + this.chartMargins.left;\n const offsetTop = changes.position.currentValue[1] + this.chartMargins.top;\n\n const isFlippedX = offsetLeft > this.chartWidth + this.chartMargins.left + this.chartMargins.right - this.offsetX - this._width;\n const isFlippedY = offsetTop > this.chartHeight + this.chartMargins.top + this.chartMargins.bottom - this._height;\n\n const x: string = isFlippedX ? `calc(${offsetLeft - this.offsetX}px - 100%)` : `${offsetLeft + this.offsetX}px`;\n const y: string = isFlippedY ? `calc(${offsetTop}px - 100%)` : `${offsetTop}px`;\n\n this._renderer.setStyle(this._elRef.nativeElement, 'transform', `translate(${x}, ${y})`);\n }\n }\n\n private _setTooltipSize(): void {\n if (this._width === undefined || this._height === undefined) {\n const rect = this._elRef.nativeElement.getBoundingClientRect();\n this._width = rect.width;\n this._height = rect.height;\n }\n }\n}\n","import { Directive, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from \"@angular/core\";\nimport { scaleTime, ScaleLinear, scaleLinear } from \"d3-scale\";\nimport { select, Selection } from 'd3-selection';\nimport { Subscription } from \"rxjs\";\nimport { NwXAxisScale } from \"../axis/models/XAxisScale\";\nimport { ChartComponent } from \"../chart.component\";\nimport { ChartUtils } from \"../chart.utils\";\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[nw-foreign-object]',\n exportAs: 'nw-foreign-object',\n standalone: false\n})\nexport class ForeignObjectDirective implements OnInit, OnChanges, OnDestroy {\n\n @Input() point: [number, number];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n public foreignObject: Selection<SVGForeignObjectElement, [number, number], SVGElement, any>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.foreignObject = select(this._elRef.nativeElement as SVGForeignObjectElement);\n\n this.setDomains();\n this.draw();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.point && !changes.point.firstChange && !ChartUtils.areDatasetsEqual([changes.point.previousValue], [changes.point.currentValue]);\n\n if (isDomainChange || isDataChange) {\n this.setDomains();\n this.update();\n }\n }\n\n setDomains() {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n draw(): void {\n this.foreignObject.attr(\"transform\", this.transform);\n }\n\n update() {\n this.foreignObject\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .attr(\"transform\", this.transform);\n }\n\n get transform(): string {\n return `translate(${this.x}, ${this.y})`;\n }\n\n get x(): number {\n return this.xScale(this.point[0]);\n }\n\n get y(): number {\n return this.yScale(this.point[1]);\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.draw();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n}\n","import { Directive, Input, OnInit, ElementRef, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\nimport { ChartUtils } from '../chart.utils';\nimport { select, Selection } from 'd3-selection';\nimport { ScaleLinear, scaleTime, scaleLinear } from 'd3-scale';\nimport { ChartComponent } from '../chart.component';\nimport { Subscription } from 'rxjs';\nimport { NwXAxisScale } from '../axis/models/XAxisScale';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'text[nw-text]',\n exportAs: 'nw-text',\n standalone: false\n})\nexport class TextDirective implements OnInit, OnChanges, OnDestroy {\n\n @Input('nw-text') point: [number, number];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n public text: Selection<SVGTextElement, [number, number], SVGElement, any>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef<SVGTextElement>,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.text = select(this._elRef.nativeElement);\n\n this.setDomains();\n this.draw();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.point && !changes.point.firstChange && !ChartUtils.areDatasetsEqual([changes.point.previousValue], [changes.point.currentValue]);\n\n if (isDomainChange || isDataChange) {\n this.setDomains();\n this.update();\n }\n }\n\n setDomains() {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n draw(): void {\n this.text\n .attr(\"x\", this.x)\n .attr(\"y\", this.y);\n }\n\n update() {\n this.text\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .attr(\"x\", this.x)\n .attr(\"y\", this.y);\n }\n\n get x(): number {\n return this.xScale(this.point[0]);\n }\n\n get y(): number {\n return this.yScale(this.point[1]);\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.draw();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChartComponent } from './chart.component';\nimport { PathDirective } from './path/path.directive';\nimport { XAxisDirective } from './axis/x-axis.directive';\nimport { YAxisDirective } from './axis/y-axis.directive';\nimport { CircleDirective } from './circle/circle.directive';\nimport { BrushDirective } from './brush/brush.directive';\nimport { BarDirective } from './bar/bar.directive';\nimport { AreaDirective } from './area/area.directive';\nimport { ChartTooltipDirective } from './tooltip/chart-tooltip.directive';\nimport { ResizeObserverModule } from 'nw-style-guide/resize-observer';\nimport { ForeignObjectDirective } from './foreign-object/foreign-object.directive';\nimport { TextDirective } from './text/text.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n ResizeObserverModule\n ],\n declarations: [\n ChartComponent,\n PathDirective,\n XAxisDirective,\n YAxisDirective,\n CircleDirective,\n BrushDirective,\n BarDirective,\n AreaDirective,\n ChartTooltipDirective,\n ForeignObjectDirective,\n TextDirective\n ],\n exports: [\n ChartComponent,\n PathDirective,\n XAxisDirective,\n YAxisDirective,\n CircleDirective,\n BrushDirective,\n BarDirective,\n AreaDirective,\n ChartTooltipDirective,\n ForeignObjectDirective,\n TextDirective\n ]\n})\nexport class ChartsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ChartUtils","i1.ChartComponent","i2.ChartUtils"],"mappings":"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"}
1
+ {"version":3,"file":"nw-style-guide-charts.mjs","sources":["../../../projects/nw-style-guide/charts/chart.utils.ts","../../../projects/nw-style-guide/charts/chart.component.ts","../../../projects/nw-style-guide/charts/path/path.directive.ts","../../../projects/nw-style-guide/charts/axis/axis-base.ts","../../../projects/nw-style-guide/charts/axis/x-axis.directive.ts","../../../projects/nw-style-guide/charts/axis/y-axis.directive.ts","../../../projects/nw-style-guide/charts/circle/circle.directive.ts","../../../projects/nw-style-guide/charts/brush/brush.directive.ts","../../../projects/nw-style-guide/charts/bar/bar.directive.ts","../../../projects/nw-style-guide/charts/area/area.directive.ts","../../../projects/nw-style-guide/charts/tooltip/chart-tooltip.directive.ts","../../../projects/nw-style-guide/charts/foreign-object/foreign-object.directive.ts","../../../projects/nw-style-guide/charts/text/text.directive.ts","../../../projects/nw-style-guide/charts/charts.module.ts","../../../projects/nw-style-guide/charts/nw-style-guide-charts.ts"],"sourcesContent":["import { Injectable, SimpleChange } from \"@angular/core\";\nimport { easeCubicInOut } from \"d3-ease\";\nimport { Subject, Observable } from \"rxjs\";\n\n@Injectable()\nexport class ChartUtils {\n\n public static ANIMATION_DURATION: number = 1000;\n public static ANIMATION_EASING: (normalizedTime: number) => number = easeCubicInOut;\n\n private _chartResize$: Subject<void>;\n public chartResize$: Observable<any>;\n\n constructor() {\n this._chartResize$ = new Subject();\n this.chartResize$ = this._chartResize$.asObservable();\n }\n\n static areDatasetsEqual(a: Array<[number, number]>, b: Array<[number, number]>) {\n return a.length === b.length &&\n a.every((value, index) => {\n return value[0] === b[index][0] && value[1] === b[index][1];\n });\n }\n\n static haveDomainsChanged(xDomain: SimpleChange, yDomain: SimpleChange): boolean {\n return this.hasInputChanged(xDomain) || this.hasInputChanged(yDomain);\n }\n\n static hasInputChanged(input: SimpleChange): boolean {\n return input &&\n !input.firstChange &&\n input.previousValue !== input.currentValue;\n }\n\n notifyChartResize(): void {\n this._chartResize$.next();\n }\n\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild, AfterViewInit, ChangeDetectionStrategy, Output, EventEmitter, OnDestroy } from '@angular/core';\nimport { select, Selection, pointer } from 'd3-selection';\nimport { ChartUtils } from './chart.utils';\nimport { fromEvent, Subject, merge } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'svg[nw-chart]',\n template: `\n <svg:g #chartContainer\n nwResizeObserver\n [element]=\"parentElement\"\n (nwResize)=\"onChartDimensionsChange()\">\n <!-- Keep axes outside the main rendering container so\n that we only get mouse events from graphical elements -->\n <ng-content select=\"[nw-x-axis],[nw-y-axis]\"></ng-content>\n <svg:g #mouseEventCaptureContainer class=\"mouse-event-capture-container\">\n <ng-content select=\".nw-slot-1\"></ng-content>\n <svg:rect #hoverOverlay (click)=\"onBackgroundClick()\"></svg:rect>\n <ng-content select=\".nw-slot-2\"></ng-content>\n <ng-content></ng-content>\n </svg:g>\n </svg:g>\n `,\n providers: [ChartUtils],\n exportAs: 'nw-chart',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class ChartComponent implements OnInit, AfterViewInit, OnDestroy {\n\n @Input('width') w: number;\n @Input('height') h: number;\n @Input() margins: {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n } = { top: 0, bottom: 0, left: 0, right: 0 };\n\n @ViewChild('chartContainer', { static: true }) chartContainer: ElementRef<SVGGElement>;\n @ViewChild('mouseEventCaptureContainer', { static: true }) mouseEventCaptureContainer: ElementRef<SVGGElement>;\n @ViewChild('hoverOverlay', { static: true }) hoverOverlay: ElementRef<SVGRectElement>;\n\n @Output() nwMousemove: EventEmitter<[number, number]> = new EventEmitter();\n @Output() nwMouseleave: EventEmitter<null> = new EventEmitter();\n @Output() bgClick: EventEmitter<null> = new EventEmitter();\n\n public svg: Selection<SVGSVGElement, any, HTMLElement, any>;\n public parentElement: HTMLElement;\n\n private _destroyed$: Subject<void> = new Subject();\n private _chartDimensionsChange$: Subject<void> = new Subject();\n\n constructor(\n private _elRef: ElementRef<SVGSVGElement>,\n public chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.parentElement = this._elRef.nativeElement.parentElement;\n\n this.setSvg();\n this.setHoverOverlay();\n this.subscribeToChartResize();\n }\n\n ngAfterViewInit() {\n this.appendContainer();\n }\n\n get width(): number {\n return (this.w || this._elRef.nativeElement.getBoundingClientRect().width) - this.margins.left - this.margins.right;\n }\n\n get height(): number {\n return (this.h || this._elRef.nativeElement.getBoundingClientRect().height) - this.margins.top - this.margins.bottom;\n }\n\n setSvg(): void {\n this.svg = select(this._elRef.nativeElement)\n .attr(\"width\", this.width + this.margins.left + this.margins.right)\n .attr(\"height\", this.height + this.margins.top + this.margins.bottom);\n }\n\n appendContainer(): void {\n select(this.chartContainer.nativeElement)\n .attr(\"transform\", \"translate(\" + this.margins.left + \",\" + this.margins.top + \")\");\n }\n\n setHoverOverlay() {\n const self = this;\n\n // This full height / width rect ensures that all mouse events will\n // be captured and delegated to the parent mouseEventCaptureContainer\n select(this.hoverOverlay.nativeElement)\n .attr(\"width\", this.width)\n .attr(\"height\", this.height)\n .style('fill', 'none')\n .style('pointer-events', 'all');\n\n select(this.mouseEventCaptureContainer.nativeElement)\n .style('pointer-events', 'all')\n .on('mouseleave', () => this.nwMouseleave.emit())\n .on('mousemove', e => {\n // emits the current mouse position\n self.nwMousemove.emit(pointer(e));\n });\n }\n\n onBackgroundClick() {\n this.bgClick.emit();\n }\n\n /**\n * As well charts being resized due to the window being resized, another scenario is that\n * the parent element is squeezed or stretched in a reponsive design due to the appearance\n * or disappearance of other elements. For this we use our nwResizeObserver which utilizes\n * ResizeObserver under the hood.\n */\n subscribeToChartResize() {\n const windowResize$ = fromEvent(window, 'resize');\n\n merge(windowResize$, this._chartDimensionsChange$)\n .pipe(\n debounceTime(100),\n takeUntil(this._destroyed$)\n )\n .subscribe(_ => this.chartUtils.notifyChartResize());\n }\n\n onChartDimensionsChange() {\n this._chartDimensionsChange$.next();\n }\n\n ngOnDestroy() {\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n}\n","import { Directive, OnInit, Input, ElementRef, OnChanges, SimpleChanges, Output, EventEmitter, OnDestroy } from '@angular/core';\nimport { select, Selection } from 'd3-selection';\nimport { line, Line, curveLinear, CurveFactory } from 'd3-shape';\nimport { ScaleLinear, scaleTime, scaleLinear } from 'd3-scale';\nimport { ChartUtils } from '../chart.utils';\nimport 'd3-transition';\nimport { ChartComponent } from '../chart.component';\nimport { Subscription } from 'rxjs';\nimport { NwXAxisScale } from '../axis/models/XAxisScale';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'path[nw-path]',\n exportAs: 'nw-path',\n standalone: false\n})\nexport class PathDirective implements OnInit, OnChanges, OnDestroy {\n\n @Input('nw-path') data: Array<[number, number]> = [];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() curve: CurveFactory = curveLinear;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n @Output() animEnd: EventEmitter<void> = new EventEmitter();\n\n public line: Line<[number, number]>;\n public path: Selection<SVGPathElement, Array<[number, number]>, SVGElement, any>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.path = select(this._elRef.nativeElement as SVGPathElement);\n\n this.setDomains();\n this.setLine();\n this.drawLine();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.data && !changes.data.firstChange && !ChartUtils.areDatasetsEqual(changes.data.previousValue, changes.data.currentValue);\n const isCurveChange = changes.curve && !changes.curve.firstChange && (changes.curve.currentValue !== changes.curve.previousValue);\n\n if (isDomainChange || isDataChange || isCurveChange) {\n this.setDomains();\n this.setLine();\n this.updateLine();\n }\n }\n\n setDomains() {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n setLine(): void {\n this.line = line().curve(this.curve)\n .x(d => this.xScale(d[0]))\n .y(d => this.yScale(d[1]));\n }\n\n drawLine(): void {\n this.path\n .datum(this.data)\n .attr('d', this.line);\n }\n\n updateLine(): void {\n this.path\n .datum(this.data)\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .attr('d', this.line)\n .on('end', e => this.animEnd.next());\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.drawLine();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import { Input, OnInit, ElementRef, OnChanges, SimpleChanges, OnDestroy, Directive } from \"@angular/core\";\nimport { Axis, AxisTimeInterval } from 'd3-axis';\nimport { ChartUtils } from \"../chart.utils\";\nimport { select, Selection } from \"d3-selection\";\nimport { ChartComponent } from \"../chart.component\";\nimport { Subscription } from \"rxjs\";\n\n@Directive()\nexport abstract class AxisBase implements OnInit, OnChanges, OnDestroy {\n\n @Input() tickFormat: (value: number | Date | { valueOf(): number }) => string;\n @Input() tickCount: number | AxisTimeInterval;\n @Input() tickSizeOuter: number = 6;\n @Input() tickValues: any[];\n @Input() showGuidlines: boolean = false;\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() label: string = '';\n\n public axis: Axis<number | Date | { valueOf(): number }>;\n public axisSelection: Selection<SVGGElement, Array<[number, number]>, SVGElement, any>;\n public axisLabelSelection: Selection<SVGTextElement, any, HTMLElement, any>;\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n public chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.axisSelection = select(this._elRef.nativeElement as SVGGElement);\n\n this.createAxis();\n this.setDomain();\n this.setTicks();\n this.createLabel();\n this.render();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(c: SimpleChanges) {\n const isDomainChange = ChartUtils.hasInputChanged(c.domain);\n const isTickSettingsChange = ChartUtils.hasInputChanged(c.tickCount) ||\n ChartUtils.hasInputChanged(c.tickSizeOuter) ||\n ChartUtils.hasInputChanged(c.showGuidlines) ||\n ChartUtils.hasInputChanged(c.tickValues);\n\n if (isDomainChange || isTickSettingsChange) {\n this.setDomain();\n this.setTicks();\n this.update();\n }\n }\n\n createAxis(): any {\n throw new Error(\"Method not implemented.\");\n }\n\n setTicks() {\n this.axis\n .ticks(this.tickCount)\n .tickFormat(this.tickFormat)\n .tickSizeOuter(this.tickSizeOuter)\n .tickValues(this.tickValues);\n }\n\n setDomain() {\n throw new Error(\"Method not implemented.\");\n }\n\n createLabel() {\n this.axisLabelSelection = this.chart.svg.append('text')\n .style('text-anchor', 'middle');\n }\n\n render(): any {\n throw new Error(\"Method not implemented.\");\n }\n\n update() {\n this.axisSelection\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .call(this.axis);\n }\n\n get fullWidth() {\n return this.chart.width + this.chart.margins.left + this.chart.margins.right;\n }\n\n get fullHeight() {\n return this.chart.height + this.chart.margins.top + this.chart.margins.bottom;\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomain();\n this.setTicks();\n this.render();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import { Directive, ElementRef, Input, Output, EventEmitter } from '@angular/core';\nimport { axisBottom, axisTop } from 'd3-axis';\nimport { AxisBase } from './axis-base';\nimport { scaleTime } from 'd3-scale';\nimport { ChartComponent } from '../chart.component';\nimport { ChartUtils } from \"../chart.utils\";\nimport { NwXAxisScale } from './models/XAxisScale';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[nw-x-axis]',\n exportAs: 'nw-x-axis',\n standalone: false\n})\nexport class XAxisDirective extends AxisBase {\n\n @Input() align: 'top' | 'bottom' | 'center' = 'bottom';\n @Input() domain: [number, number];\n @Input() scale: NwXAxisScale = scaleTime();\n\n @Output() scaleUpdated: EventEmitter<NwXAxisScale> = new EventEmitter();\n\n constructor(\n elRef: ElementRef,\n chart: ChartComponent,\n chartUtils: ChartUtils) {\n\n super(elRef, chart, chartUtils);\n }\n\n createAxis() {\n this.axis = this.align === \"bottom\" ?\n axisBottom(this.scale) :\n axisTop(this.scale);\n }\n\n setTicks() {\n super.setTicks();\n\n if (this.showGuidlines) {\n this.axis.tickSizeInner(-this.chart.height);\n } else {\n this.axis.tickSizeInner(6);\n }\n\n this.scaleUpdated.emit(this.scale.copy());\n }\n\n setDomain() {\n (this.scale.domain(this.domain) as NwXAxisScale).range([0, this.chart.width]);\n }\n\n positionLabel() {\n if (this.label) {\n const y = this.align === 'top' ? 0 : this.fullHeight;\n const dy = this.align === 'top' ? \"1em\" : \"-0.5em\";\n\n this.axisLabelSelection\n .attr('class', 'axis-label ' + this.align)\n .attr('dy', dy)\n .attr('transform', `translate(${this.fullWidth / 2}, ${y})`)\n .text(this.label);\n }\n }\n\n render() {\n const yTranslation = this._getAxisTranslation();\n\n this.axisSelection\n .attr('transform', \"translate(0,\" + yTranslation + \")\")\n .call(this.axis);\n\n this.positionLabel();\n }\n\n private _getAxisTranslation(): number {\n if (this.align === 'bottom') {\n return this.chart.height;\n }\n\n if (this.align === 'center') {\n return this.chart.height / 2;\n }\n\n return 0;\n }\n\n}\n","import { Directive, ElementRef, Input, Output, EventEmitter } from '@angular/core';\nimport { axisLeft, axisRight } from 'd3-axis';\nimport { AxisBase } from './axis-base';\nimport { ScaleLinear, scaleLinear } from 'd3-scale';\nimport { ChartComponent } from '../chart.component';\nimport { ChartUtils } from \"../chart.utils\";\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[nw-y-axis]',\n exportAs: 'nw-y-axis',\n standalone: false\n})\nexport class YAxisDirective extends AxisBase {\n\n @Input() align: 'left' | 'right' | 'center' = 'left';\n @Input() domain: [number, number];\n\n @Output() scaleUpdated: EventEmitter<ScaleLinear<number, number>> = new EventEmitter();\n\n public scale: ScaleLinear<number, number> = scaleLinear();\n\n constructor(\n elRef: ElementRef,\n chart: ChartComponent,\n chartUtils: ChartUtils) {\n\n super(elRef, chart, chartUtils);\n }\n\n createAxis() {\n this.axis = this.align === \"left\" ?\n axisLeft(this.scale) :\n axisRight(this.scale);\n }\n\n setTicks() {\n super.setTicks();\n\n if (this.showGuidlines) {\n this.axis.tickSizeInner(-this.chart.width);\n } else {\n this.axis.tickSizeInner(6);\n }\n\n this.scaleUpdated.emit(this.scale.copy());\n }\n\n setDomain() {\n this.scale.domain(this.domain).range([this.chart.height, 0]);\n }\n\n positionLabel() {\n if (this.label) {\n const rotationAngle = this.align === 'left' ? '-90' : '90';\n const y = this.align === 'left' ? 0 : -this.fullWidth;\n const x = this.align === 'left' ? -(this.fullHeight / 2) : (this.fullHeight / 2);\n\n this.axisLabelSelection\n .attr('class', 'axis-label ' + this.align)\n .attr('transform', `rotate(${rotationAngle})`)\n .attr('y', y)\n .attr('x', x)\n .attr('dy', \"1em\")\n .text(this.label);\n }\n }\n\n render() {\n const xTranslation = this._getAxisTranslation();\n\n this.axisSelection\n .attr('transform', \"translate(\" + xTranslation + \", 0)\")\n .call(this.axis);\n\n this.positionLabel();\n }\n\n private _getAxisTranslation(): number {\n if (this.align === 'right') {\n return this.chart.width;\n }\n\n if (this.align === 'center') {\n return this.chart.width / 2;\n }\n\n return 0;\n }\n\n}\n","import { Directive, Input, OnInit, ElementRef, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\nimport { ChartUtils } from '../chart.utils';\nimport { select, Selection } from 'd3-selection';\nimport { ScaleLinear, scaleTime, scaleLinear } from 'd3-scale';\nimport { ChartComponent } from '../chart.component';\nimport { Subscription } from 'rxjs';\nimport { NwXAxisScale } from '../axis/models/XAxisScale';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'circle[nw-circle]',\n exportAs: 'nw-circle',\n standalone: false\n})\nexport class CircleDirective implements OnInit, OnChanges, OnDestroy {\n\n @Input('nw-circle') point: [number, number];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n public circle: Selection<SVGCircleElement, [number, number], SVGElement, any>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.circle = select(this._elRef.nativeElement as SVGCircleElement);\n\n this.setDomains();\n this.draw();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.point && !changes.point.firstChange && !ChartUtils.areDatasetsEqual([changes.point.previousValue], [changes.point.currentValue]);\n\n if (isDomainChange || isDataChange) {\n this.setDomains();\n this.update();\n }\n }\n\n setDomains() {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n draw(): void {\n this.circle\n .attr(\"transform\", this.transform);\n }\n\n update() {\n this.circle\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .attr(\"transform\", this.transform);\n }\n\n get transform(): string {\n return `translate(${this.x}, ${this.y})`;\n }\n\n get x(): number {\n return this.xScale(this.point[0]);\n }\n\n get y(): number {\n return this.yScale(this.point[1]);\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.draw();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import { Directive, ElementRef, OnInit, Input, OnDestroy, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { select, Selection } from 'd3-selection';\nimport { brush, BrushBehavior, brushX, brushY } from 'd3-brush';\nimport { ChartComponent } from '../chart.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'svg:g[nw-brush]',\n exportAs: 'nw-brush',\n standalone: false\n})\nexport class BrushDirective implements OnInit, OnDestroy, OnChanges {\n\n @Input() extent: [[number, number], [number, number]];\n @Input() dimension: 'x' | 'y' | '' = '';\n\n @Output() brushEnd: EventEmitter<[[number, number], [number, number]]> = new EventEmitter();\n\n public brushSelection: Selection<SVGGElement, any, HTMLElement, any>;\n public brush: BrushBehavior<any>;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent) {}\n\n ngOnInit() {\n this.initialize();\n this._subscribeToBrushEndEvent();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.dimension && !changes.dimension.firstChange && changes.dimension.previousValue !== changes.dimension.currentValue) {\n this.reset();\n }\n }\n\n initialize() {\n this.brushSelection = select(this._elRef.nativeElement as SVGSVGElement);\n this.brushSelection.attr('class', 'nw-brush');\n this._createBrush();\n }\n\n reset() {\n this._unbindEvents();\n this._clearBrush();\n this._createBrush();\n this._subscribeToBrushEndEvent();\n }\n\n private _createBrush() {\n switch (this.dimension) {\n case 'x':\n this.brush = brushX();\n break;\n\n case 'y':\n this.brush = brushY();\n break;\n\n default:\n this.brush = brush();\n break;\n }\n\n this.brush.extent(this.getExtent());\n\n this.brushSelection.call(this.brush);\n }\n\n getExtent(): [[number, number], [number, number]] {\n return this.extent || [\n [0, 0],\n [this._chart.width, this._chart.height]\n ];\n }\n\n private _subscribeToBrushEndEvent() {\n this.brush.on('end', () => {\n const selection = this.brushSelection.select('rect.selection');\n const nw: [number, number] = [+selection.attr('x'), +selection.attr('y')];\n const se: [number, number] = [\n +selection.attr('x') + +selection.attr('width'),\n +selection.attr('y') + +selection.attr('height')\n ];\n const emission: [[number, number], [number, number]] = nw[0] === se[0] && nw[1] === se[1] ?\n null :\n [nw, se];\n\n this.brushEnd.emit(emission);\n });\n }\n\n private _clearBrush() {\n this.brush.move(this.brushSelection, null);\n this.brushEnd.emit(null);\n }\n\n private _unbindEvents() {\n this.brush.on('end', null);\n }\n\n ngOnDestroy() {\n this._unbindEvents();\n }\n\n}\n","import { Directive, Input, OnInit, OnChanges, ElementRef, SimpleChanges, OnDestroy } from '@angular/core';\nimport { select, Selection } from 'd3-selection';\nimport { ScaleLinear, scaleTime, scaleLinear } from 'd3-scale';\nimport { ChartUtils } from '../chart.utils';\nimport { ChartComponent } from '../chart.component';\nimport { Subscription } from 'rxjs';\nimport { NwXAxisScale } from '../axis/models/XAxisScale';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'rect[nw-bar]',\n standalone: false\n})\nexport class BarDirective implements OnInit, OnChanges, OnDestroy {\n\n /**\n * [number, number] corresponds to a coordinate of [x, y]\n * [number, number, number] corresponds to a coordinate of [x, y2, y1] where y1 is the lower\n * y-value and y2 is the upper y-value. Where y1 is not provided the bar will span from the\n * provided y-value to 0 (the full chart height)\n */\n @Input('nw-bar') value: [number, number] | [number, number, number];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() barWidth: number = 20;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n public rect: Selection<SVGRectElement, [number, number], SVGElement, any>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) { }\n\n ngOnInit() {\n this.rect = select(this._elRef.nativeElement as SVGRectElement);\n\n this.setDomains();\n this.draw();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.value && !changes.value.firstChange && !ChartUtils.areDatasetsEqual([changes.value.previousValue], [changes.value.currentValue]);\n const barWidthChange = changes.barWidth && !changes.barWidth.firstChange && (changes.barWidth.previousValue !== changes.barWidth.currentValue);\n\n if (isDomainChange || isDataChange || barWidthChange) {\n this.setDomains();\n this.draw(this.animDuration);\n }\n }\n\n setDomains() {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n draw(animDuration: number = 0) {\n const x = this.value[0];\n const y2 = this.value[1];\n const y1 = this.value[2];\n const height = y1 ? y2 - y1 : y2;\n\n this.rect\n .transition()\n .duration(animDuration)\n .ease(this.easing)\n .attr('x', this.xScale(x) - (this.barWidth / 2))\n .attr('y', this.yScale(y2))\n .attr(\"width\", this.barWidth)\n .attr(\"height\", this._chart.height - this.yScale(height));\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.draw();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import { Directive, Input, ElementRef, OnInit, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\nimport { area, Area, CurveFactory, curveLinear } from 'd3-shape';\nimport { ChartComponent } from '../chart.component';\nimport { ScaleLinear, scaleTime, scaleLinear } from 'd3-scale';\nimport { select, Selection } from 'd3-selection';\nimport { ChartUtils } from '../chart.utils';\nimport { Subscription } from 'rxjs';\nimport { NwXAxisScale } from '../axis/models/XAxisScale';\n\ntype AreaDatum = [number, number] | [number, number, number];\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'path[nw-area]',\n exportAs: 'nw-area',\n standalone: false\n})\nexport class AreaDirective implements OnInit, OnChanges, OnDestroy {\n\n /**\n * Each data entry may have 2 or 3 values. If there are 3 the area is drawn within the bounds.\n *\n * If there are 2 the area is drawn to the chart height\n */\n @Input('nw-area') data: Array<AreaDatum> = [];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() curve: CurveFactory = curveLinear;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n public areaSelection: Selection<SVGPathElement, Array<AreaDatum>, SVGElement, any>;\n public area: Area<AreaDatum>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.areaSelection = select(this._elRef.nativeElement as SVGPathElement);\n\n this.setDomains();\n this.setArea();\n this.drawArea();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.data && !changes.data.firstChange && !ChartUtils.areDatasetsEqual(changes.data.previousValue, changes.data.currentValue);\n const isCurveChange = changes.curve && !changes.curve.firstChange && (changes.curve.currentValue !== changes.curve.previousValue);\n\n if (isDomainChange || isDataChange || isCurveChange) {\n this.setDomains();\n this.setArea();\n this.updateArea();\n }\n }\n\n setDomains(): void {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n setArea(): void {\n this.area = area<AreaDatum>()\n .x(d => this.xScale(d[0]))\n .y0(d => d[2] ? this.yScale(d[2]) : this._chart.height)\n .y1(d => this.yScale(d[1]));\n }\n\n drawArea(): void {\n this.areaSelection\n .datum(this.data)\n .attr('d', this.area);\n }\n\n updateArea(): void {\n this.areaSelection\n .datum(this.data)\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .attr('d', this.area);\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.setArea();\n this.drawArea();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import {AfterViewInit, Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges} from '@angular/core';\n\n@Directive({\n selector: '[nwChartTooltip]',\n standalone: false\n})\nexport class ChartTooltipDirective implements OnChanges, AfterViewInit {\n @Input() position: [number, number];\n @Input() chartWidth: number;\n @Input() chartHeight: number;\n @Input() chartMargins: {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n };\n @Input() offsetX: number = 16;\n private _width: number;\n private _height: number;\n\n constructor(\n private _elRef: ElementRef,\n private _renderer: Renderer2) {\n }\n\n ngAfterViewInit() {\n this._setTooltipSize();\n\n this._renderer.setStyle(this._elRef.nativeElement, 'pointer-events', 'none');\n this._renderer.setStyle(this._elRef.nativeElement, 'position', 'absolute');\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.position && changes.position.previousValue !== changes.position.currentValue) {\n\n const offsetLeft = changes.position.currentValue[0] + this.chartMargins.left;\n const offsetTop = changes.position.currentValue[1] + this.chartMargins.top;\n\n const isFlippedX = offsetLeft > this.chartWidth + this.chartMargins.left + this.chartMargins.right - this.offsetX - this._width;\n const isFlippedY = offsetTop > this.chartHeight + this.chartMargins.top + this.chartMargins.bottom - this._height;\n\n const x: string = isFlippedX ? `calc(${offsetLeft - this.offsetX}px - 100%)` : `${offsetLeft + this.offsetX}px`;\n const y: string = isFlippedY ? `calc(${offsetTop}px - 100%)` : `${offsetTop}px`;\n\n this._renderer.setStyle(this._elRef.nativeElement, 'transform', `translate(${x}, ${y})`);\n }\n }\n\n private _setTooltipSize(): void {\n if (this._width === undefined || this._height === undefined) {\n const rect = this._elRef.nativeElement.getBoundingClientRect();\n this._width = rect.width;\n this._height = rect.height;\n }\n }\n}\n","import { Directive, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from \"@angular/core\";\nimport { scaleTime, ScaleLinear, scaleLinear } from \"d3-scale\";\nimport { select, Selection } from 'd3-selection';\nimport { Subscription } from \"rxjs\";\nimport { NwXAxisScale } from \"../axis/models/XAxisScale\";\nimport { ChartComponent } from \"../chart.component\";\nimport { ChartUtils } from \"../chart.utils\";\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[nw-foreign-object]',\n exportAs: 'nw-foreign-object',\n standalone: false\n})\nexport class ForeignObjectDirective implements OnInit, OnChanges, OnDestroy {\n\n @Input() point: [number, number];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n public foreignObject: Selection<SVGForeignObjectElement, [number, number], SVGElement, any>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.foreignObject = select(this._elRef.nativeElement as SVGForeignObjectElement);\n\n this.setDomains();\n this.draw();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.point && !changes.point.firstChange && !ChartUtils.areDatasetsEqual([changes.point.previousValue], [changes.point.currentValue]);\n\n if (isDomainChange || isDataChange) {\n this.setDomains();\n this.update();\n }\n }\n\n setDomains() {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n draw(): void {\n this.foreignObject.attr(\"transform\", this.transform);\n }\n\n update() {\n this.foreignObject\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .attr(\"transform\", this.transform);\n }\n\n get transform(): string {\n return `translate(${this.x}, ${this.y})`;\n }\n\n get x(): number {\n return this.xScale(this.point[0]);\n }\n\n get y(): number {\n return this.yScale(this.point[1]);\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.draw();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n}\n","import { Directive, Input, OnInit, ElementRef, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\nimport { ChartUtils } from '../chart.utils';\nimport { select, Selection } from 'd3-selection';\nimport { ScaleLinear, scaleTime, scaleLinear } from 'd3-scale';\nimport { ChartComponent } from '../chart.component';\nimport { Subscription } from 'rxjs';\nimport { NwXAxisScale } from '../axis/models/XAxisScale';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'text[nw-text]',\n exportAs: 'nw-text',\n standalone: false\n})\nexport class TextDirective implements OnInit, OnChanges, OnDestroy {\n\n @Input('nw-text') point: [number, number];\n @Input() xDomain: [number, number];\n @Input() yDomain: [number, number];\n @Input() animDuration: number = ChartUtils.ANIMATION_DURATION;\n @Input() easing: (normalizedTime: number) => number = ChartUtils.ANIMATION_EASING;\n @Input() xScale: NwXAxisScale = scaleTime();\n\n public text: Selection<SVGTextElement, [number, number], SVGElement, any>;\n public yScale: ScaleLinear<number, number> = scaleLinear();\n\n private _chartResizeSub: Subscription;\n\n constructor(\n private _elRef: ElementRef<SVGTextElement>,\n private _chart: ChartComponent,\n private _chartUtils: ChartUtils) {}\n\n ngOnInit() {\n this.text = select(this._elRef.nativeElement);\n\n this.setDomains();\n this.draw();\n\n this._subscribeToChartResize();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const isDomainChange = (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n const isDataChange = changes.point && !changes.point.firstChange && !ChartUtils.areDatasetsEqual([changes.point.previousValue], [changes.point.currentValue]);\n\n if (isDomainChange || isDataChange) {\n this.setDomains();\n this.update();\n }\n }\n\n setDomains() {\n (this.xScale.domain(this.xDomain) as NwXAxisScale).range([0, this._chart.width]);\n this.yScale.domain(this.yDomain).range([this._chart.height, 0]);\n }\n\n draw(): void {\n this.text\n .attr(\"x\", this.x)\n .attr(\"y\", this.y);\n }\n\n update() {\n this.text\n .transition()\n .duration(this.animDuration)\n .ease(this.easing)\n .attr(\"x\", this.x)\n .attr(\"y\", this.y);\n }\n\n get x(): number {\n return this.xScale(this.point[0]);\n }\n\n get y(): number {\n return this.yScale(this.point[1]);\n }\n\n private _subscribeToChartResize() {\n this._chartResizeSub = this._chartUtils.chartResize$\n .subscribe(_ => {\n this.setDomains();\n this.draw();\n });\n }\n\n ngOnDestroy() {\n this._chartResizeSub.unsubscribe();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChartComponent } from './chart.component';\nimport { PathDirective } from './path/path.directive';\nimport { XAxisDirective } from './axis/x-axis.directive';\nimport { YAxisDirective } from './axis/y-axis.directive';\nimport { CircleDirective } from './circle/circle.directive';\nimport { BrushDirective } from './brush/brush.directive';\nimport { BarDirective } from './bar/bar.directive';\nimport { AreaDirective } from './area/area.directive';\nimport { ChartTooltipDirective } from './tooltip/chart-tooltip.directive';\nimport { ResizeObserverModule } from 'nw-style-guide/resize-observer';\nimport { ForeignObjectDirective } from './foreign-object/foreign-object.directive';\nimport { TextDirective } from './text/text.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n ResizeObserverModule\n ],\n declarations: [\n ChartComponent,\n PathDirective,\n XAxisDirective,\n YAxisDirective,\n CircleDirective,\n BrushDirective,\n BarDirective,\n AreaDirective,\n ChartTooltipDirective,\n ForeignObjectDirective,\n TextDirective\n ],\n exports: [\n ChartComponent,\n PathDirective,\n XAxisDirective,\n YAxisDirective,\n CircleDirective,\n BrushDirective,\n BarDirective,\n AreaDirective,\n ChartTooltipDirective,\n ForeignObjectDirective,\n TextDirective\n ]\n})\nexport class ChartsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ChartUtils","i1.ChartComponent","i2.ChartUtils"],"mappings":"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"}
@@ -45,7 +45,7 @@ class FeatureAlertsService {
45
45
  }
46
46
  wasAlertDismissed(id) {
47
47
  const alerts = this._get();
48
- if (alerts && Object.hasOwn(alerts, id)) {
48
+ if (alerts && alerts.hasOwnProperty(id)) {
49
49
  return alerts[id].dismissed;
50
50
  }
51
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nw-style-guide-feature-alerts.mjs","sources":["../../../projects/nw-style-guide/feature-alerts/windowref.ts","../../../projects/nw-style-guide/feature-alerts/feature-alerts.service.ts","../../../projects/nw-style-guide/feature-alerts/hotspot.component.ts","../../../projects/nw-style-guide/feature-alerts/feature-alerts.directive.ts","../../../projects/nw-style-guide/feature-alerts/feature-alerts.module.ts","../../../projects/nw-style-guide/feature-alerts/nw-style-guide-feature-alerts.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nconst _window = () => {\n // return the global native browser window object\n return window;\n};\n\n@Injectable()\nexport class WindowRef {\n\n get nativeWindow() {\n return _window();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { WindowRef } from './windowref';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class FeatureAlertsService {\n LOCAL_STORAGE_KEY = 'nwAlerts';\n\n private _dismissSubject = new Subject<string>();\n public dismiss$ = new Observable<string>();\n\n constructor(private _w: WindowRef) {\n this.dismiss$ = this._dismissSubject.asObservable();\n }\n\n dismiss(id: string) {\n this._set({\n ...this._get(),\n [id]: { dismissed: true }\n });\n this._dismissSubject.next(id);\n }\n\n enable(id: string) {\n this._set({\n ...this._get(),\n [id]: { dismissed: false }\n });\n this._dismissSubject.next(id);\n }\n\n wasAlertDismissed(id: string): boolean {\n const alerts = this._get();\n\n if (alerts && Object.hasOwn(alerts, id)) {\n return alerts[id].dismissed;\n }\n }\n\n private _get(): object {\n return JSON.parse(this._w.nativeWindow.localStorage.getItem(this.LOCAL_STORAGE_KEY));\n }\n\n private _set(alerts: object) {\n this._w.nativeWindow.localStorage.setItem(this.LOCAL_STORAGE_KEY, JSON.stringify(alerts));\n }\n}\n","import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef } from \"@angular/core\";\nimport { FeatureAlertsService } from \"./feature-alerts.service\";\nimport { trigger, transition, animate, style } from \"@angular/animations\";\n\n@Component({\n selector: 'nw-hotspot',\n template: `\n <div [@fadeOut] *ngIf=\"isOpen\" class=\"hotspot hotspot-{{position}}\"></div>\n `,\n animations: [\n trigger('fadeOut', [\n transition(':leave', [\n style({ opacity: 0.5 }),\n animate(300, style({ opacity: 0 }))\n ])\n ])\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class HotspotComponent {\n\n @Input() position: string = \"left\";\n @Input() id: any;\n\n constructor(\n private _featureAlertsService: FeatureAlertsService,\n private _cdRef: ChangeDetectorRef) {}\n\n get isOpen(): boolean {\n return !this._featureAlertsService.wasAlertDismissed(this.id);\n }\n\n dismiss() {\n this._featureAlertsService.dismiss(this.id);\n this._cdRef.detectChanges();\n }\n}","import { Input, Directive, TemplateRef, ViewContainerRef, OnInit, inject, OnDestroy } from '@angular/core';\nimport { FeatureAlertsService } from './feature-alerts.service';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Directive({\n selector: '[nwFeatureAlert]',\n standalone: false\n})\nexport class FeatureAlertsDirective implements OnInit, OnDestroy {\n\n /**\n * This directive shows/hides content depending on whether or not a given feature ID is enabled/disabled in local storage\n * It listens for changes on the FeatureAlertsService _dismissSubject and shows/hides accordingly\n *\n * Implementation :\n *\n * HTML\n * <a (click)=dismiss('feature-id')> New Feature </a>\n * <span *nwFeatureAlert=\"'feature-id'\" class=\"label label-round label-new ml-4\">New</span>\n *\n * Typescript\n * _featureAlertsService = inject(FeatureAlertsService);\n * dismiss(id) {\n * this._featureAlertsService.dismiss(id);\n * }\n */\n\n\n /**\n * ID of the new feature to be stored in local storage\n */\n @Input() nwFeatureAlert: string;\n\n private _isInView = false;\n private _templateRef = inject(TemplateRef<any>);\n private _viewContainer = inject(ViewContainerRef);\n private _featureAlertsService = inject(FeatureAlertsService);\n private _destroyed$: Subject<void> = new Subject();\n\n ngOnInit(): void {\n this._toggleFeatureAlert(this.nwFeatureAlert);\n this._featureAlertsService.dismiss$.pipe(\n filter((id: string) => id === this.nwFeatureAlert),\n takeUntil(this._destroyed$)\n\n ).subscribe(id => this._toggleFeatureAlert(id));\n }\n\n private _toggleFeatureAlert(id: string) {\n const wasAlertDismissed = this._featureAlertsService.wasAlertDismissed(id);\n if (!wasAlertDismissed && !this._isInView) {\n this._viewContainer.createEmbeddedView(this._templateRef);\n this._isInView = true;\n } else if (wasAlertDismissed && this._isInView) {\n this._viewContainer.clear();\n this._isInView = false;\n }\n }\n\n ngOnDestroy(): void {\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FeatureAlertsService } from './feature-alerts.service';\nimport { WindowRef } from './windowref';\nimport { HotspotComponent } from \"./hotspot.component\";\nimport { FeatureAlertsDirective } from './feature-alerts.directive';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n providers: [WindowRef],\n declarations: [\n HotspotComponent,\n FeatureAlertsDirective\n ],\n exports: [\n HotspotComponent,\n FeatureAlertsDirective\n ]\n})\nexport class FeatureAlertsModule {\n static forRoot(): ModuleWithProviders<FeatureAlertsModule> {\n return {\n ngModule: FeatureAlertsModule,\n providers: [FeatureAlertsService]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.WindowRef","i1.FeatureAlertsService"],"mappings":"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"}
1
+ {"version":3,"file":"nw-style-guide-feature-alerts.mjs","sources":["../../../projects/nw-style-guide/feature-alerts/windowref.ts","../../../projects/nw-style-guide/feature-alerts/feature-alerts.service.ts","../../../projects/nw-style-guide/feature-alerts/hotspot.component.ts","../../../projects/nw-style-guide/feature-alerts/feature-alerts.directive.ts","../../../projects/nw-style-guide/feature-alerts/feature-alerts.module.ts","../../../projects/nw-style-guide/feature-alerts/nw-style-guide-feature-alerts.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nconst _window = () => {\n // return the global native browser window object\n return window;\n};\n\n@Injectable()\nexport class WindowRef {\n\n get nativeWindow() {\n return _window();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { WindowRef } from './windowref';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class FeatureAlertsService {\n LOCAL_STORAGE_KEY = 'nwAlerts';\n\n private _dismissSubject = new Subject<string>();\n public dismiss$ = new Observable<string>();\n\n constructor(private _w: WindowRef) {\n this.dismiss$ = this._dismissSubject.asObservable();\n }\n\n dismiss(id: string) {\n this._set({\n ...this._get(),\n [id]: { dismissed: true }\n });\n this._dismissSubject.next(id);\n }\n\n enable(id: string) {\n this._set({\n ...this._get(),\n [id]: { dismissed: false }\n });\n this._dismissSubject.next(id);\n }\n\n wasAlertDismissed(id: string): boolean {\n const alerts = this._get();\n\n if (alerts && alerts.hasOwnProperty(id)) {\n return alerts[id].dismissed;\n }\n }\n\n private _get(): object {\n return JSON.parse(this._w.nativeWindow.localStorage.getItem(this.LOCAL_STORAGE_KEY));\n }\n\n private _set(alerts: object) {\n this._w.nativeWindow.localStorage.setItem(this.LOCAL_STORAGE_KEY, JSON.stringify(alerts));\n }\n}\n","import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef } from \"@angular/core\";\nimport { FeatureAlertsService } from \"./feature-alerts.service\";\nimport { trigger, transition, animate, style } from \"@angular/animations\";\n\n@Component({\n selector: 'nw-hotspot',\n template: `\n <div [@fadeOut] *ngIf=\"isOpen\" class=\"hotspot hotspot-{{position}}\"></div>\n `,\n animations: [\n trigger('fadeOut', [\n transition(':leave', [\n style({ opacity: 0.5 }),\n animate(300, style({ opacity: 0 }))\n ])\n ])\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class HotspotComponent {\n\n @Input() position: string = \"left\";\n @Input() id: any;\n\n constructor(\n private _featureAlertsService: FeatureAlertsService,\n private _cdRef: ChangeDetectorRef) {}\n\n get isOpen(): boolean {\n return !this._featureAlertsService.wasAlertDismissed(this.id);\n }\n\n dismiss() {\n this._featureAlertsService.dismiss(this.id);\n this._cdRef.detectChanges();\n }\n}","import { Input, Directive, TemplateRef, ViewContainerRef, OnInit, inject, OnDestroy } from '@angular/core';\nimport { FeatureAlertsService } from './feature-alerts.service';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Directive({\n selector: '[nwFeatureAlert]',\n standalone: false\n})\nexport class FeatureAlertsDirective implements OnInit, OnDestroy {\n\n /**\n * This directive shows/hides content depending on whether or not a given feature ID is enabled/disabled in local storage\n * It listens for changes on the FeatureAlertsService _dismissSubject and shows/hides accordingly\n *\n * Implementation :\n *\n * HTML\n * <a (click)=dismiss('feature-id')> New Feature </a>\n * <span *nwFeatureAlert=\"'feature-id'\" class=\"label label-round label-new ml-4\">New</span>\n *\n * Typescript\n * _featureAlertsService = inject(FeatureAlertsService);\n * dismiss(id) {\n * this._featureAlertsService.dismiss(id);\n * }\n */\n\n\n /**\n * ID of the new feature to be stored in local storage\n */\n @Input() nwFeatureAlert: string;\n\n private _isInView = false;\n private _templateRef = inject(TemplateRef<any>);\n private _viewContainer = inject(ViewContainerRef);\n private _featureAlertsService = inject(FeatureAlertsService);\n private _destroyed$: Subject<void> = new Subject();\n\n ngOnInit(): void {\n this._toggleFeatureAlert(this.nwFeatureAlert);\n this._featureAlertsService.dismiss$.pipe(\n filter((id: string) => id === this.nwFeatureAlert),\n takeUntil(this._destroyed$)\n\n ).subscribe(id => this._toggleFeatureAlert(id));\n }\n\n private _toggleFeatureAlert(id: string) {\n const wasAlertDismissed = this._featureAlertsService.wasAlertDismissed(id);\n if (!wasAlertDismissed && !this._isInView) {\n this._viewContainer.createEmbeddedView(this._templateRef);\n this._isInView = true;\n } else if (wasAlertDismissed && this._isInView) {\n this._viewContainer.clear();\n this._isInView = false;\n }\n }\n\n ngOnDestroy(): void {\n this._destroyed$.next();\n this._destroyed$.complete();\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FeatureAlertsService } from './feature-alerts.service';\nimport { WindowRef } from './windowref';\nimport { HotspotComponent } from \"./hotspot.component\";\nimport { FeatureAlertsDirective } from './feature-alerts.directive';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n providers: [WindowRef],\n declarations: [\n HotspotComponent,\n FeatureAlertsDirective\n ],\n exports: [\n HotspotComponent,\n FeatureAlertsDirective\n ]\n})\nexport class FeatureAlertsModule {\n static forRoot(): ModuleWithProviders<FeatureAlertsModule> {\n return {\n ngModule: FeatureAlertsModule,\n providers: [FeatureAlertsService]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.WindowRef","i1.FeatureAlertsService"],"mappings":"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"}