UNPKG

recompact

Version:

A set of React high order components based on Rx.

44 lines (34 loc) 970 B
"use strict"; exports.__esModule = true; var createChangeEmitter = function createChangeEmitter() { var currentListeners = []; var nextListeners = currentListeners; function ensureCanMutateNextListeners() { if (nextListeners === currentListeners) { nextListeners = currentListeners.slice(); } } function listen(listener) { var isSubscribed = true; ensureCanMutateNextListeners(); nextListeners.push(listener); return function () { if (!isSubscribed) { return; } isSubscribed = false; ensureCanMutateNextListeners(); var index = nextListeners.indexOf(listener); nextListeners.splice(index, 1); }; } function emit(value) { currentListeners = nextListeners; var listeners = currentListeners; for (var i = 0; i < listeners.length; i += 1) { listeners[i](value); } } return { listen: listen, emit: emit }; }; exports.default = createChangeEmitter;