UNPKG

@wordpress/data

Version:
49 lines (48 loc) • 1.03 kB
// packages/data/src/utils/emitter.ts function createEmitter() { let isPaused = false; let isPending = false; const listeners = /* @__PURE__ */ new Set(); let clonedListeners = null; const notifyListeners = () => { clonedListeners ??= Array.from(listeners); const currentListeners = clonedListeners; for (let i = 0; i < currentListeners.length; i++) { currentListeners[i](); } }; return { get isPaused() { return isPaused; }, subscribe(listener) { listeners.add(listener); clonedListeners = null; return () => { listeners.delete(listener); clonedListeners = null; }; }, pause() { isPaused = true; }, resume() { isPaused = false; if (isPending) { isPending = false; notifyListeners(); } }, emit() { if (isPaused) { isPending = true; return; } notifyListeners(); } }; } export { createEmitter }; //# sourceMappingURL=emitter.mjs.map