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

37 lines (29 loc) 785 B
var LazyWatcher = require('./lib/lazy-watcher') var watchThrottle = require('./watch-throttle') var resolve = require('./resolve') module.exports = function Throttle (input, minDelay) { // default delay is 20 ms minDelay = minDelay || 20 var binder = LazyWatcher(update, listen, unlisten) binder.value = resolve(input) var releases = [] var result = function MutantThrottle (listener) { if (!listener) { return binder.getValue() } return binder.addListener(listener) } function update () { binder.value = resolve(input) return true } function listen () { releases.push(watchThrottle(input, minDelay, binder.onUpdate)) } function unlisten () { while (releases.length) { releases.pop()() } } return result }