| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | 
							- /*!
 
-  * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
 
-  * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
 
-  * v1.0.0-beta.97
 
-  */
 
- import { isPrimaryPointerButton } from "../../utils/dom";
 
- import { isActivationKey } from "../../utils/key";
 
- export default class PopoverManager {
 
-   constructor() {
 
-     // --------------------------------------------------------------------------
 
-     //
 
-     //  Private Properties
 
-     //
 
-     // --------------------------------------------------------------------------
 
-     this.registeredElements = new Map();
 
-     this.registeredElementCount = 0;
 
-     // --------------------------------------------------------------------------
 
-     //
 
-     //  Private Methods
 
-     //
 
-     // --------------------------------------------------------------------------
 
-     this.queryPopover = (composedPath) => {
 
-       const { registeredElements } = this;
 
-       const registeredElement = composedPath.find((pathEl) => registeredElements.has(pathEl));
 
-       return registeredElements.get(registeredElement);
 
-     };
 
-     this.togglePopovers = (event) => {
 
-       const composedPath = event.composedPath();
 
-       const togglePopover = this.queryPopover(composedPath);
 
-       if (togglePopover && !togglePopover.triggerDisabled) {
 
-         togglePopover.toggle();
 
-       }
 
-       Array.from(this.registeredElements.values())
 
-         .filter((popover) => popover !== togglePopover && popover.autoClose && popover.open && !composedPath.includes(popover))
 
-         .forEach((popover) => popover.toggle(false));
 
-     };
 
-     this.keyHandler = (event) => {
 
-       if (event.defaultPrevented || !isActivationKey(event.key)) {
 
-         return;
 
-       }
 
-       this.togglePopovers(event);
 
-     };
 
-     this.clickHandler = (event) => {
 
-       if (isPrimaryPointerButton(event)) {
 
-         this.togglePopovers(event);
 
-       }
 
-     };
 
-   }
 
-   // --------------------------------------------------------------------------
 
-   //
 
-   //  Public Methods
 
-   //
 
-   // --------------------------------------------------------------------------
 
-   registerElement(referenceEl, popover) {
 
-     this.registeredElementCount++;
 
-     this.registeredElements.set(referenceEl, popover);
 
-     if (this.registeredElementCount === 1) {
 
-       this.addListeners();
 
-     }
 
-   }
 
-   unregisterElement(referenceEl) {
 
-     if (this.registeredElements.delete(referenceEl)) {
 
-       this.registeredElementCount--;
 
-     }
 
-     if (this.registeredElementCount === 0) {
 
-       this.removeListeners();
 
-     }
 
-   }
 
-   addListeners() {
 
-     document.addEventListener("pointerdown", this.clickHandler, { capture: true });
 
-     document.addEventListener("keydown", this.keyHandler, { capture: true });
 
-   }
 
-   removeListeners() {
 
-     document.removeEventListener("pointerdown", this.clickHandler, { capture: true });
 
-     document.removeEventListener("keydown", this.keyHandler, { capture: true });
 
-   }
 
- }
 
 
  |