{"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/public-api.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    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 (\n            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\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 && !input.firstChange && input.previousValue !== input.currentValue;\n    }\n\n    notifyChartResize(): void {\n        this._chartResize$.next();\n    }\n}\n","import {\n    Component,\n    ElementRef,\n    Input,\n    OnInit,\n    ViewChild,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Output,\n    EventEmitter,\n    OnDestroy,\n    inject\n} 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';\nimport { ResizeObserverDirective } from 'nw-style-guide/resize-observer';\n\n@Component({\n    selector: 'svg[nw-chart]',\n    template: `\n        <svg:g\n            #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\n                #mouseEventCaptureContainer\n                class=\"mouse-event-capture-container\">\n                <ng-content select=\".nw-slot-1\"></ng-content>\n                <svg:rect\n                    #hoverOverlay\n                    (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    imports: [ResizeObserverDirective]\n})\nexport class ChartComponent implements OnInit, AfterViewInit, OnDestroy {\n    private _elRef = inject<ElementRef<SVGSVGElement>>(ElementRef);\n    chartUtils = inject(ChartUtils);\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    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 (\n            (this.w || this._elRef.nativeElement.getBoundingClientRect().width) - this.margins.left - this.margins.right\n        );\n    }\n\n    get height(): number {\n        return (\n            (this.h || this._elRef.nativeElement.getBoundingClientRect().height) -\n            this.margins.top -\n            this.margins.bottom\n        );\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).attr(\n            'transform',\n            'translate(' + this.margins.left + ',' + this.margins.top + ')'\n        );\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(debounceTime(100), takeUntil(this._destroyed$))\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 {\n    Directive,\n    OnInit,\n    Input,\n    ElementRef,\n    OnChanges,\n    SimpleChanges,\n    Output,\n    EventEmitter,\n    OnDestroy,\n    inject\n} 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})\nexport class PathDirective implements OnInit, OnChanges, OnDestroy {\n    private _elRef = inject(ElementRef);\n    private _chart = inject(ChartComponent);\n    private _chartUtils = inject(ChartUtils);\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    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 =\n            (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n        const isDataChange =\n            changes.data &&\n            !changes.data.firstChange &&\n            !ChartUtils.areDatasetsEqual(changes.data.previousValue, changes.data.currentValue);\n        const isCurveChange =\n            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()\n            .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.datum(this.data).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$.subscribe(_ => {\n            this.setDomains();\n            this.drawLine();\n        });\n    }\n\n    ngOnDestroy() {\n        this._chartResizeSub.unsubscribe();\n    }\n}\n","import { Input, OnInit, ElementRef, OnChanges, SimpleChanges, OnDestroy, Directive, inject } 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    private _elRef = inject(ElementRef);\n    chart = inject(ChartComponent);\n    private _chartUtils = inject(ChartUtils);\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    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 =\n            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').style('text-anchor', 'middle');\n    }\n\n    render(): any {\n        throw new Error('Method not implemented.');\n    }\n\n    update() {\n        this.axisSelection.transition().duration(this.animDuration).ease(this.easing).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$.subscribe(_ => {\n            this.setDomain();\n            this.setTicks();\n            this.render();\n        });\n    }\n\n    ngOnDestroy() {\n        this._chartResizeSub.unsubscribe();\n    }\n}\n","import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { axisBottom, axisTop } from 'd3-axis';\nimport { AxisBase } from './axis-base';\nimport { scaleTime } from 'd3-scale';\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})\nexport class XAxisDirective extends AxisBase {\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    createAxis() {\n        this.axis = this.align === 'bottom' ? axisBottom(this.scale) : 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.attr('transform', 'translate(0,' + yTranslation + ')').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","import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { axisLeft, axisRight } from 'd3-axis';\nimport { AxisBase } from './axis-base';\nimport { ScaleLinear, scaleLinear } from 'd3-scale';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[nw-y-axis]',\n    exportAs: 'nw-y-axis'\n})\nexport class YAxisDirective extends AxisBase {\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    createAxis() {\n        this.axis = this.align === 'left' ? axisLeft(this.scale) : 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.attr('transform', 'translate(' + xTranslation + ', 0)').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","import { Directive, Input, OnInit, ElementRef, OnChanges, SimpleChanges, OnDestroy, inject } 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})\nexport class CircleDirective implements OnInit, OnChanges, OnDestroy {\n    private _elRef = inject(ElementRef);\n    private _chart = inject(ChartComponent);\n    private _chartUtils = inject(ChartUtils);\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    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 =\n            (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n        const isDataChange =\n            changes.point &&\n            !changes.point.firstChange &&\n            !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.attr('transform', this.transform);\n    }\n\n    update() {\n        this.circle.transition().duration(this.animDuration).ease(this.easing).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$.subscribe(_ => {\n            this.setDomains();\n            this.draw();\n        });\n    }\n\n    ngOnDestroy() {\n        this._chartResizeSub.unsubscribe();\n    }\n}\n","import {\n    Directive,\n    ElementRef,\n    OnInit,\n    Input,\n    OnDestroy,\n    Output,\n    EventEmitter,\n    OnChanges,\n    SimpleChanges,\n    inject\n} 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})\nexport class BrushDirective implements OnInit, OnDestroy, OnChanges {\n    private _elRef = inject(ElementRef);\n    private _chart = inject(ChartComponent);\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    ngOnInit() {\n        this.initialize();\n        this._subscribeToBrushEndEvent();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (\n            changes.dimension &&\n            !changes.dimension.firstChange &&\n            changes.dimension.previousValue !== changes.dimension.currentValue\n        ) {\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 (\n            this.extent || [\n                [0, 0],\n                [this._chart.width, this._chart.height]\n            ]\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] ? null : [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","import { Directive, Input, OnInit, OnChanges, ElementRef, SimpleChanges, OnDestroy, inject } 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})\nexport class BarDirective implements OnInit, OnChanges, OnDestroy {\n    private _elRef = inject(ElementRef);\n    private _chart = inject(ChartComponent);\n    private _chartUtils = inject(ChartUtils);\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    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 =\n            (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n        const isDataChange =\n            changes.value &&\n            !changes.value.firstChange &&\n            !ChartUtils.areDatasetsEqual([changes.value.previousValue], [changes.value.currentValue]);\n        const barWidthChange =\n            changes.barWidth &&\n            !changes.barWidth.firstChange &&\n            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$.subscribe(_ => {\n            this.setDomains();\n            this.draw();\n        });\n    }\n\n    ngOnDestroy() {\n        this._chartResizeSub.unsubscribe();\n    }\n}\n","import { Directive, Input, ElementRef, OnInit, OnChanges, SimpleChanges, OnDestroy, inject } 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})\nexport class AreaDirective implements OnInit, OnChanges, OnDestroy {\n    private _elRef = inject(ElementRef);\n    private _chart = inject(ChartComponent);\n    private _chartUtils = inject(ChartUtils);\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    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 =\n            (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n        const isDataChange =\n            changes.data &&\n            !changes.data.firstChange &&\n            !ChartUtils.areDatasetsEqual(changes.data.previousValue, changes.data.currentValue);\n        const isCurveChange =\n            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.datum(this.data).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$.subscribe(_ => {\n            this.setDomains();\n            this.setArea();\n            this.drawArea();\n        });\n    }\n\n    ngOnDestroy() {\n        this._chartResizeSub.unsubscribe();\n    }\n}\n","import {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    Input,\n    OnChanges,\n    Renderer2,\n    SimpleChanges,\n    inject\n} from '@angular/core';\n\n@Directive({ selector: '[nwChartTooltip]' })\nexport class ChartTooltipDirective implements OnChanges, AfterViewInit {\n    private _elRef = inject(ElementRef);\n    private _renderer = inject(Renderer2);\n\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    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            const offsetLeft = changes.position.currentValue[0] + this.chartMargins.left;\n            const offsetTop = changes.position.currentValue[1] + this.chartMargins.top;\n\n            const isFlippedX =\n                offsetLeft >\n                this.chartWidth + this.chartMargins.left + this.chartMargins.right - this.offsetX - this._width;\n            const isFlippedY =\n                offsetTop > this.chartHeight + this.chartMargins.top + this.chartMargins.bottom - this._height;\n\n            const x: string = isFlippedX\n                ? `calc(${offsetLeft - this.offsetX}px - 100%)`\n                : `${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, inject } 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})\nexport class ForeignObjectDirective implements OnInit, OnChanges, OnDestroy {\n    private _elRef = inject(ElementRef);\n    private _chart = inject(ChartComponent);\n    private _chartUtils = inject(ChartUtils);\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    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 =\n            (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n        const isDataChange =\n            changes.point &&\n            !changes.point.firstChange &&\n            !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.transition().duration(this.animDuration).ease(this.easing).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$.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, inject } 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})\nexport class TextDirective implements OnInit, OnChanges, OnDestroy {\n    private _elRef = inject<ElementRef<SVGTextElement>>(ElementRef);\n    private _chart = inject(ChartComponent);\n    private _chartUtils = inject(ChartUtils);\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    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 =\n            (changes.xDomain || changes.yDomain) && ChartUtils.haveDomainsChanged(changes.xDomain, changes.yDomain);\n        const isDataChange =\n            changes.point &&\n            !changes.point.firstChange &&\n            !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.attr('x', this.x).attr('y', this.y);\n    }\n\n    update() {\n        this.text.transition().duration(this.animDuration).ease(this.easing).attr('x', this.x).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$.subscribe(_ => {\n            this.setDomains();\n            this.draw();\n        });\n    }\n\n    ngOnDestroy() {\n        this._chartResizeSub.unsubscribe();\n    }\n}\n","export { ChartComponent } from './chart.component';\nexport { PathDirective } from './path/path.directive';\nexport { XAxisDirective } from './axis/x-axis.directive';\nexport { YAxisDirective } from './axis/y-axis.directive';\nexport { CircleDirective } from './circle/circle.directive';\nexport { BrushDirective } from './brush/brush.directive';\nexport { BarDirective } from './bar/bar.directive';\nexport { AreaDirective } from './area/area.directive';\nexport { ChartTooltipDirective } from './tooltip/chart-tooltip.directive';\nexport { ForeignObjectDirective } from './foreign-object/foreign-object.directive';\nexport { TextDirective } from './text/text.directive';\n\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 { ForeignObjectDirective } from './foreign-object/foreign-object.directive';\nimport { TextDirective } from './text/text.directive';\n\n/**\n * Export cooperating directives\n * https://v17.angular.io/guide/standalone-components#standalone-components-for-library-authors\n */\nexport const CHARTS_DIRECTIVES = [\n    ChartComponent,\n    PathDirective,\n    XAxisDirective,\n    YAxisDirective,\n    CircleDirective,\n    BrushDirective,\n    BarDirective,\n    AreaDirective,\n    ChartTooltipDirective,\n    ForeignObjectDirective,\n    TextDirective\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}