UNPKG

@hitachivantara/uikit-react-core

Version:
51 lines (50 loc) 1.59 kB
//#region src/TreeView/internals/utils/EventManager.ts var EventManager = class { 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); }); } }; //#endregion export { EventManager };