/**
 * Data structure tracking popup trigger elements by ID.
 *
 * Ported 1:1 from Base UI React's `packages/react/src/utils/popups/popupTriggerMap.ts`.
 * Used by `FloatingRootStore` and the click-outside / safe-polygon logic to
 * decide whether a given target is "inside" one of the registered triggers.
 */
export class PopupTriggerMap {
  constructor() {
    this.elementsSet = new Set();
    this.idMap = new Map();
  }
  add(id, element) {
    const existingElement = this.idMap.get(id);
    if (existingElement === element) {
      return;
    }
    if (existingElement !== undefined) {
      this.elementsSet.delete(existingElement);
    }
    this.elementsSet.add(element);
    this.idMap.set(id, element);
  }
  delete(id) {
    const element = this.idMap.get(id);
    if (element) {
      this.elementsSet.delete(element);
      this.idMap.delete(id);
    }
  }
  hasElement(element) {
    return this.elementsSet.has(element);
  }
  hasMatchingElement(predicate) {
    for (const element of this.elementsSet) {
      if (predicate(element)) {
        return true;
      }
    }
    return false;
  }
  getById(id) {
    return this.idMap.get(id);
  }
  entries() {
    return this.idMap.entries();
  }
  elements() {
    return this.elementsSet.values();
  }
  get size() {
    return this.idMap.size;
  }
}
//# sourceMappingURL=popup-trigger-map.jsx.map
