private pointerMoveEvent()

in src/visualComponent/svgComponent.ts [233:293]


    private pointerMoveEvent(options: ISvgComponentRenderOptions): void {
        const { data: { settings, variance } } = options;

        const isSecondTooltipShown: boolean = variance
            && !isNaN(variance[1])
            && settings.secondTooltipVariance.show;

        if (!settings.tooltipLabel.show
            && !settings.tooltipValues.show
            && !settings.tooltipVariance.show
            && !isSecondTooltipShown
        ) {
            this.pointerLeaveHandler();

            return;
        }

        const event: MouseEvent | TouchEvent = require("d3-selection").event;

        event.preventDefault();
        event.stopPropagation();
        event.stopImmediatePropagation();

        let offsetX: number = Number.MAX_VALUE;
        let originalXPosition: number = Number.MAX_VALUE;
        let originalYPosition: number = Number.MAX_VALUE;

        switch (event.type) {
            case "mousemove": {
                originalXPosition = (event as MouseEvent).pageX;
                originalYPosition = (event as MouseEvent).pageY;

                offsetX = (event as MouseEvent).offsetX;

                break;
            }
            case "touchmove": {
                const touch: TouchEvent = event as TouchEvent;

                if (touch && touch.touches && touch.touches[0]) {
                    originalXPosition = touch.touches[0].pageX;
                    originalYPosition = touch.touches[0].pageY;

                    const element: SVGElement = this.element.node() as SVGElement;

                    const xScaleViewport: number = this.getXScale(element);

                    offsetX = (originalXPosition - element.getBoundingClientRect().left) / xScaleViewport;
                }

                break;
            }
        }

        this.renderDynamicComponentByPosition(
            offsetX,
            originalXPosition,
            originalYPosition,
            options,
        );
    }