const init = () => {
    window.addEventListener('click', evt => {
        emit('click', {
            x: evt.pageX,
            y: evt.pageY
        })
    })

    window.addEventListener('mousemove', evt => {
        emit('move', {
            x: evt.pageX,
            y: evt.pageY
        })
    })

    window.addEventListener('mousedown', evt => {
        emit('down', {
            x: evt.pageX,
            y: evt.pageY
        })
    })

    window.addEventListener('mouseup', evt => {
        emit('up', {
            x: evt.pageX,
            y: evt.pageY
        })
    })

    const onWheel = e => {
        e = e || window.event

        // wheelDelta не дает возможность узнать количество пикселей
        var delta = e.deltaY || e.detail || e.wheelDelta
        emit('zoom', {
            delta
        })

      }

    if (window.addEventListener) {
        if ('onwheel' in document) {
          // IE9+, FF17+, Ch31+
          window.addEventListener('wheel', onWheel)
        } else if ('onmousewheel' in document) {
          // устаревший вариант события
          window.addEventListener('mousewheel', onWheel)
        } else {
          // Firefox < 17
          window.addEventListener('MozMousePixelScroll', onWheel)
        }
      } else { // IE8-
        // @ts-ignore
        window.attachEvent('onmousewheel', onWheel)
      }
}

init()

let events = {}
const on = (event, fn) => {
    if (!events[event]) {
        events[event] = []
    }
    events[event].push(fn)
}

const emit = (event, data) => {
    if (events[event]) {
        events[event].forEach(ev => ev(data))
    }
}

export default {
    on
}
