UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

60 lines (59 loc) 1.78 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); class EventManager { maxListeners = 20; warnOnce = false; events = {}; on(eventName, listener, options = {}) { let collection = this.events[eventName]; if (!collection) { collection = { highPriority: /* @__PURE__ */ new Map(), regular: /* @__PURE__ */ new Map() }; this.events[eventName] = collection; } if (options.isFirst) { collection.highPriority.set(listener, true); } else { collection.regular.set(listener, true); } } removeListener(eventName, listener) { if (this.events[eventName]) { this.events[eventName].regular.delete(listener); this.events[eventName].highPriority.delete(listener); } } removeAllListeners() { this.events = {}; } emit(eventName, ...args) { const collection = this.events[eventName]; if (!collection) { return; } const highPriorityListeners = Array.from(collection.highPriority.keys()); const regularListeners = Array.from(collection.regular.keys()); for (let i = highPriorityListeners.length - 1; i >= 0; i -= 1) { const listener = highPriorityListeners[i]; if (collection.highPriority.has(listener)) { listener.apply(this, args); } } for (let i = 0; i < regularListeners.length; i += 1) { const listener = regularListeners[i]; if (collection.regular.has(listener)) { listener.apply(this, args); } } } once(eventName, listener) { const that = this; this.on(eventName, function oneTimeListener(...args) { that.removeListener(eventName, oneTimeListener); listener.apply(that, args); }); } } exports.EventManager = EventManager;