import type { FloatingEvents } from "../types"; /** * Minimal typed pub/sub emitter used by `FloatingContext.events`. * Ported verbatim from the React source — no framework coupling, just a * topic-keyed `Map>`. */ export function createEventEmitter(): FloatingEvents { // biome-ignore lint/suspicious/noExplicitAny: emitter payloads are type-erased. const map = new Map void>>(); return { emit(event, data) { map.get(event)?.forEach((listener) => { listener(data); }); }, on(event, listener) { if (!map.has(event)) { map.set(event, new Set()); } // biome-ignore lint/style/noNonNullAssertion: just set it above. map.get(event)!.add(listener); }, off(event, listener) { map.get(event)?.delete(listener); }, }; }