UNPKG

mutant

Version:

Create observables and map them to DOM elements. Massively inspired by hyperscript and observ-*. No virtual dom, just direct observable bindings. Unnecessary garbage collection is avoided by using mutable objects instead of blasting immutable junk all ove

29 lines (26 loc) 680 B
module.exports = MutantChannel function MutantChannel () { var listeners = [] return { listen (listener) { if (typeof listener !== 'function') { throw new Error('Listeners must be functions.') } listeners.push(listener) return function remove () { for (var i = 0, len = listeners.length; i < len; i++) { if (listeners[i] === listener) { listeners.splice(i, 1) break } } } }, broadcast (value) { var cachedListeners = listeners.slice(0) for (var i = 0, len = cachedListeners.length; i < len; i++) { cachedListeners[i](value) } } } }