@folklore/events
Advanced tools
Comparing version 0.0.4 to 0.0.5
@@ -13,3 +13,2 @@ 'use strict'; | ||
const passiveEvents = ['scroll', 'touchstart', 'touchend', 'touchmove']; | ||
class EventsManager extends EventEmitter__default["default"] { | ||
@@ -22,9 +21,8 @@ constructor(element) { | ||
} | ||
subscribe(event, callback) { | ||
this.on(event, callback); | ||
this.events = { ...this.events, | ||
this.events = { | ||
...this.events, | ||
[event]: [...(this.events[event] || []), callback] | ||
}; | ||
if (this.events[event].length === 1) { | ||
@@ -34,3 +32,2 @@ this.addEventListener(event); | ||
} | ||
unsubscribe(event, callback) { | ||
@@ -40,13 +37,13 @@ this.off(event, callback); | ||
if (eventName !== event) { | ||
return { ...newEvents, | ||
return { | ||
...newEvents, | ||
[eventName]: this.events[eventName] | ||
}; | ||
} | ||
const newListeners = this.events[eventName].filter(listener => listener !== callback); | ||
return newListeners.length > 0 ? { ...newEvents, | ||
return newListeners.length > 0 ? { | ||
...newEvents, | ||
[eventName]: newListeners | ||
} : newEvents; | ||
}, {}); | ||
if (typeof this.events[event] === 'undefined') { | ||
@@ -56,6 +53,4 @@ this.removeEventListener(event); | ||
} | ||
addEventListener(event) { | ||
var _this = this; | ||
if (typeof this.listeners[event] === 'undefined') { | ||
@@ -66,9 +61,6 @@ this.listeners[event] = function () { | ||
} | ||
return _this.emit(event, ...args); | ||
}; | ||
} | ||
const needsPassive = passiveEvents.indexOf(event) !== -1; | ||
if (needsPassive && detectPassiveEvents.supportsPassiveEvents === true) { | ||
@@ -80,3 +72,2 @@ this.element.addEventListener(event, this.listeners[event], { | ||
} | ||
if (needsPassive && detectPassiveEvents.supportsPassiveEvents === false) { | ||
@@ -86,14 +77,12 @@ this.element.addEventListener(event, this.listeners[event], false); | ||
} | ||
this.element.addEventListener(event, this.listeners[event]); | ||
} | ||
removeEventListener(event) { | ||
this.element.removeEventListener(event, this.listeners[event]); | ||
} | ||
} | ||
var EventsManager$1 = EventsManager; | ||
exports.EventsManager = EventsManager; | ||
exports["default"] = EventsManager; | ||
exports.EventsManager = EventsManager$1; | ||
exports["default"] = EventsManager$1; | ||
exports.passiveEvents = passiveEvents; |
@@ -5,3 +5,2 @@ import EventEmitter from 'wolfy87-eventemitter'; | ||
const passiveEvents = ['scroll', 'touchstart', 'touchend', 'touchmove']; | ||
class EventsManager extends EventEmitter { | ||
@@ -14,9 +13,8 @@ constructor(element) { | ||
} | ||
subscribe(event, callback) { | ||
this.on(event, callback); | ||
this.events = { ...this.events, | ||
this.events = { | ||
...this.events, | ||
[event]: [...(this.events[event] || []), callback] | ||
}; | ||
if (this.events[event].length === 1) { | ||
@@ -26,3 +24,2 @@ this.addEventListener(event); | ||
} | ||
unsubscribe(event, callback) { | ||
@@ -32,13 +29,13 @@ this.off(event, callback); | ||
if (eventName !== event) { | ||
return { ...newEvents, | ||
return { | ||
...newEvents, | ||
[eventName]: this.events[eventName] | ||
}; | ||
} | ||
const newListeners = this.events[eventName].filter(listener => listener !== callback); | ||
return newListeners.length > 0 ? { ...newEvents, | ||
return newListeners.length > 0 ? { | ||
...newEvents, | ||
[eventName]: newListeners | ||
} : newEvents; | ||
}, {}); | ||
if (typeof this.events[event] === 'undefined') { | ||
@@ -48,6 +45,4 @@ this.removeEventListener(event); | ||
} | ||
addEventListener(event) { | ||
var _this = this; | ||
if (typeof this.listeners[event] === 'undefined') { | ||
@@ -58,9 +53,6 @@ this.listeners[event] = function () { | ||
} | ||
return _this.emit(event, ...args); | ||
}; | ||
} | ||
const needsPassive = passiveEvents.indexOf(event) !== -1; | ||
if (needsPassive && supportsPassiveEvents === true) { | ||
@@ -72,3 +64,2 @@ this.element.addEventListener(event, this.listeners[event], { | ||
} | ||
if (needsPassive && supportsPassiveEvents === false) { | ||
@@ -78,12 +69,10 @@ this.element.addEventListener(event, this.listeners[event], false); | ||
} | ||
this.element.addEventListener(event, this.listeners[event]); | ||
} | ||
removeEventListener(event) { | ||
this.element.removeEventListener(event, this.listeners[event]); | ||
} | ||
} | ||
var EventsManager$1 = EventsManager; | ||
export { EventsManager, EventsManager as default, passiveEvents }; | ||
export { EventsManager$1 as EventsManager, EventsManager$1 as default, passiveEvents }; |
{ | ||
"name": "@folklore/events", | ||
"version": "0.0.4", | ||
"version": "0.0.5", | ||
"description": "Events manager", | ||
@@ -35,2 +35,3 @@ "keywords": [ | ||
], | ||
"sideEffects": false, | ||
"scripts": { | ||
@@ -52,3 +53,3 @@ "clean": "rm -rf dist", | ||
}, | ||
"gitHead": "80b0b5301d3c79cca819327b0f95d8fac1a0b77d", | ||
"gitHead": "70dbe4b90d2eb18c30ed8ee5cad7b1a69ded2024", | ||
"dependencies": { | ||
@@ -55,0 +56,0 @@ "detect-passive-events": "^2.0.3", |
6347
142