export default {
    once: function once(el, type, callback) {
        var typeArray = type ? type.split(' ') : [];
        var recursiveFunction = function recursiveFunction(event) {
            event.target.removeEventListener(event.type, recursiveFunction);
            return callback(event);
        };

        for (var i = typeArray.length - 1; i >= 0; i--) {
            this.on(el, typeArray[i], recursiveFunction);
        }
    },
    on: function on(el, type, callback) {
        if (el.addEventListener) {
            el.addEventListener(type, callback);
        } else {
            // IE8+ Support
            el.attachEvent('on' + type, function () {
                callback.call(el);
            });
        }
    },
    off: function off(el, type, callback) {
        if (el.removeEventListener) {
            el.removeEventListener(type, callback);
        } else {
            // IE8+ Support
            el.detachEvent('on' + type, callback);
        }
    },
    isKeyboard: function isKeyboard(event) {
        return ['keydown', 'keypress', 'keyup'].indexOf(event.type) !== -1;
    }
};