diff --git a/src/index.ts b/src/index.ts index 1fcb196..d83cfee 100755 --- a/src/index.ts +++ b/src/index.ts @@ -75,9 +75,9 @@ export class ChartwerkBarPod extends ChartwerkPod { .attr('width', this.barWidth) .attr('height', (val: number) => this.getBarHeight(val)) .on('contextmenu', this.contextMenu.bind(this)) - .on('mouseover', () => { this.overlay.node().dispatchEvent(new MouseEvent(d3.event.type, d3.event)); }) - .on('mousemove', () => { this.overlay.node().dispatchEvent(new MouseEvent(d3.event.type, d3.event)); }) - .on('mouseout', () => { this.overlay.node().dispatchEvent(new MouseEvent(d3.event.type, d3.event)); }) + .on('mouseover', this.redirectEventToOverlay.bind(this)) + .on('mousemove', this.redirectEventToOverlay.bind(this)) + .on('mouseout', this.redirectEventToOverlay.bind(this)) .on('mousedown', () => { d3.event.stopPropagation(); }); // render bar annotations, its all hardcoded @@ -105,13 +105,17 @@ export class ChartwerkBarPod extends ChartwerkPod { return this.getTrianglePath(x, y, this.barWidth, options); }) .attr('fill', annotation.color) - .on('mouseover', () => { this.overlay.node().dispatchEvent(new MouseEvent(d3.event.type, d3.event)); }) - .on('mousemove', () => { this.overlay.node().dispatchEvent(new MouseEvent(d3.event.type, d3.event)); }) - .on('mouseout', () => { this.overlay.node().dispatchEvent(new MouseEvent(d3.event.type, d3.event)); }) + .on('mouseover', this.redirectEventToOverlay.bind(this)) + .on('mousemove', this.redirectEventToOverlay.bind(this)) + .on('mouseout', this.redirectEventToOverlay.bind(this)) .on('mousedown', () => { d3.event.stopPropagation(); }); }); } + redirectEventToOverlay(): void { + this.overlay.node().dispatchEvent(new MouseEvent(d3.event.type, d3.event)); + } + getTrianglePath(x: number, y: number, length: number, options?: { max: number, min: number }): string { // (x, y) - top left corner of bar const minTriangleSize = options?.min || 6;