UNPKG

interactjs

Version:

Drag and drop, resizing and multi-touch gestures with inertia and snapping for modern browsers (and also IE9+)

45 lines (34 loc) 796 B
class Signals { constructor () { this.listeners = { // signalName: [listeners], }; } on (name, listener) { if (!this.listeners[name]) { this.listeners[name] = [listener]; return; } this.listeners[name].push(listener); } off (name, listener) { if (!this.listeners[name]) { return; } const index = this.listeners[name].indexOf(listener); if (index !== -1) { this.listeners[name].splice(index, 1); } } fire (name, arg) { const targetListeners = this.listeners[name]; if (!targetListeners) { return; } for (const listener of targetListeners) { if (listener(arg, name) === false) { return; } } } } Signals.new = function () { return new Signals(); }; module.exports = Signals;