Артем Андреев, она не совсем глобальная, а доступна только внутри myChart.js. Пошарьтесь по папке node_modules там внутри модулей куча 'глобальных' переменных. Так что нормально.
VegasChickiChicki, в lastMousePosition сохраняются координаты мыши в конце каждого вызова onmousemove, в начале же вызова вычисляется разница (дельта) между старыми значениями и новыми координатами. Зная эту разницу можно понять куда передвинулась мышь относительно своей прошлой позиции. Например было x: 78 стало x: 81, deltaX == 3, то есть мышь по Х сдвинулась на 3px вправо. Тоже самое и для Y. Потом смотрим куда больше передвинулась мышь, по X или по Y. Если deltaX больше чем deltaY, то она передвинулась больше по оси X, то есть горизонтально. Проверку второго условия в else if кстати можно убрать и оставить просто else.
В упоре лежа и в противогазе =)
А если серьезно, я бы не стал на твоем месте сейчас об этом задумываться. Позже через полгодика хотя бы и выбрал бы основы Computer Science и алгоритмы. Легкой тебе службы)
partyzanx, ну разрывы можно подогнать, я в файрфоксе вижу что там 1px не хватает .searchicon input+div svg.line {right: 24px;}
С анимацией тоже можно поиграть=)