UNPKG

@oddbird/popover-polyfill

Version:
8 lines (7 loc) 39 kB
{ "version": 3, "sources": ["../src/events.ts", "../src/popover-helpers.ts", "../src/popover.ts"], "sourcesContent": ["export interface ToggleInit extends EventInit {\n oldState: string;\n newState: string;\n}\n\nexport class ToggleEvent extends Event {\n public oldState: string;\n public newState: string;\n constructor(\n type: string,\n { oldState = '', newState = '', ...init }: Partial<ToggleInit> = {},\n ) {\n super(type, init);\n this.oldState = String(oldState || '');\n this.newState = String(newState || '');\n }\n}\n\nconst popoverToggleTaskQueue = new WeakMap<HTMLElement, unknown>();\nexport function queuePopoverToggleEventTask(\n element: HTMLElement,\n oldState: string,\n newState: string,\n) {\n popoverToggleTaskQueue.set(\n element,\n setTimeout(() => {\n if (!popoverToggleTaskQueue.has(element)) return;\n element.dispatchEvent(\n new ToggleEvent('toggle', {\n cancelable: false,\n oldState,\n newState,\n }),\n );\n }, 0),\n );\n}\n", "import { queuePopoverToggleEventTask, ToggleEvent } from './events.js';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst ShadowRoot = globalThis.ShadowRoot || function () {};\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst HTMLDialogElement = globalThis.HTMLDialogElement || function () {};\n\nconst topLayerElements = new WeakMap<Document, Set<HTMLElement>>();\nconst autoPopoverList = new WeakMap<Document, Set<HTMLElement>>();\nexport const visibilityState = new WeakMap<HTMLElement, 'hidden' | 'showing'>();\nfunction getPopoverVisibilityState(popover: HTMLElement): 'hidden' | 'showing' {\n return visibilityState.get(popover) || 'hidden';\n}\n\nconst popoverInvoker = new WeakMap<\n HTMLElement,\n HTMLButtonElement | HTMLInputElement\n>();\n\n// https://html.spec.whatwg.org/#popover-target-attribute-activation-behavior\nexport function popoverTargetAttributeActivationBehavior(\n element: HTMLButtonElement | HTMLInputElement,\n) {\n const popover = element.popoverTargetElement;\n if (!(popover instanceof HTMLElement)) {\n return;\n }\n const visibility = getPopoverVisibilityState(popover);\n if (element.popoverTargetAction === 'show' && visibility === 'showing') {\n return;\n }\n if (element.popoverTargetAction === 'hide' && visibility === 'hidden') return;\n if (visibility === 'showing') {\n hidePopover(popover, true, true);\n } else if (checkPopoverValidity(popover, false)) {\n popoverInvoker.set(popover, element);\n showPopover(popover);\n }\n}\n\n// https://whatpr.org/html/8221/popover.html#check-popover-validity\nfunction checkPopoverValidity(\n element: HTMLElement,\n expectedToBeShowing: boolean,\n) {\n if (element.popover !== 'auto' && element.popover !== 'manual') {\n return false;\n }\n if (!element.isConnected) return false;\n if (expectedToBeShowing && getPopoverVisibilityState(element) !== 'showing') {\n return false;\n }\n if (!expectedToBeShowing && getPopoverVisibilityState(element) !== 'hidden') {\n return false;\n }\n if (element instanceof HTMLDialogElement && element.hasAttribute('open')) {\n return false;\n }\n if (document.fullscreenElement === element) return false;\n return true;\n}\n\nfunction getStackPosition(popover?: Element) {\n if (!popover) return 0;\n return (\n Array.from(autoPopoverList.get(popover.ownerDocument) || []).indexOf(\n popover as HTMLElement,\n ) + 1\n );\n}\n\nfunction topMostClickedPopover(target: HTMLElement) {\n const clickedPopover = nearestInclusiveOpenPopover(target);\n const invokerPopover = nearestInclusiveTargetPopoverForInvoker(target);\n if (getStackPosition(clickedPopover) > getStackPosition(invokerPopover)) {\n return clickedPopover;\n }\n return invokerPopover;\n}\n\n// https://html.spec.whatwg.org/#topmost-auto-popover\nfunction topMostAutoPopover(document: Document): HTMLElement | null {\n const documentPopovers = autoPopoverList.get(document);\n for (const popover of documentPopovers || []) {\n if (!popover.isConnected) {\n documentPopovers!.delete(popover);\n } else {\n return popover;\n }\n }\n return null;\n}\n\nexport function getRootNode(node: Node): Node {\n if (typeof node.getRootNode === 'function') {\n return node.getRootNode();\n }\n if (node.parentNode) return getRootNode(node.parentNode);\n return node;\n}\n\n// https://html.spec.whatwg.org/#nearest-inclusive-open-popover\nfunction nearestInclusiveOpenPopover(\n node: Node | null,\n): HTMLElement | undefined {\n while (node) {\n if (\n node instanceof HTMLElement &&\n node.popover === 'auto' &&\n visibilityState.get(node) === 'showing'\n ) {\n return node;\n }\n node =\n (node instanceof Element && node.assignedSlot) ||\n node.parentElement ||\n getRootNode(node);\n if (node instanceof ShadowRoot) node = node.host;\n if (node instanceof Document) return;\n }\n}\n\n// https://html.spec.whatwg.org/#popover-light-dismiss:nearest-inclusive-target-popover-for-invoker\nfunction nearestInclusiveTargetPopoverForInvoker(\n node: Node | null,\n): HTMLElement | undefined {\n while (node) {\n const nodePopover = (node as HTMLButtonElement).popoverTargetElement;\n if (nodePopover instanceof HTMLElement) return nodePopover;\n node = node.parentElement || getRootNode(node);\n if (node instanceof ShadowRoot) node = node.host;\n if (node instanceof Document) return;\n }\n}\n\n// https://html.spec.whatwg.org/#topmost-popover-ancestor\nfunction topMostPopoverAncestor(newPopover: HTMLElement): HTMLElement | null {\n const popoverPositions = new Map();\n let i = 0;\n for (const popover of autoPopoverList.get(newPopover.ownerDocument) || []) {\n popoverPositions.set(popover, i);\n i += 1;\n }\n popoverPositions.set(newPopover, i);\n i += 1;\n let topMostPopoverAncestor: HTMLElement | null = null;\n function checkAncestor(candidate: Node | null) {\n const candidateAncestor = nearestInclusiveOpenPopover(candidate);\n if (candidateAncestor === null) return null;\n const candidatePosition = popoverPositions.get(candidateAncestor);\n if (\n topMostPopoverAncestor === null ||\n popoverPositions.get(topMostPopoverAncestor) < candidatePosition\n ) {\n topMostPopoverAncestor = candidateAncestor!;\n }\n }\n checkAncestor(newPopover.parentElement || getRootNode(newPopover));\n return topMostPopoverAncestor;\n}\n\nfunction isFocusable(focusTarget: HTMLElement) {\n if (focusTarget.hidden || focusTarget instanceof ShadowRoot) return false;\n if (\n focusTarget instanceof HTMLButtonElement ||\n focusTarget instanceof HTMLInputElement ||\n focusTarget instanceof HTMLSelectElement ||\n focusTarget instanceof HTMLTextAreaElement ||\n focusTarget instanceof HTMLOptGroupElement ||\n focusTarget instanceof HTMLOptionElement ||\n focusTarget instanceof HTMLFieldSetElement\n ) {\n if (focusTarget.disabled) return false;\n }\n if (\n focusTarget instanceof HTMLInputElement &&\n focusTarget.type === 'hidden'\n ) {\n return false;\n }\n if (focusTarget instanceof HTMLAnchorElement && focusTarget.href === '') {\n return false;\n }\n return (\n typeof focusTarget.tabIndex === 'number' && focusTarget.tabIndex !== -1\n );\n}\n\n// This method is not spec compliant, as it also looks in slotted content\n// for autofocus elements.\n// See: https://github.com/oddbird/popover-polyfill/issues/149\n// Spec: https://html.spec.whatwg.org/#focus-delegate\nfunction focusDelegate(focusTarget: HTMLElement) {\n if (\n focusTarget.shadowRoot &&\n focusTarget.shadowRoot.delegatesFocus !== true\n ) {\n return null;\n }\n let whereToLook: DocumentFragment | HTMLElement = focusTarget;\n if (whereToLook.shadowRoot) {\n whereToLook = whereToLook.shadowRoot;\n }\n let autoFocusDelegate = whereToLook.querySelector('[autofocus]');\n if (autoFocusDelegate) {\n return autoFocusDelegate;\n } else {\n const slots = whereToLook.querySelectorAll('slot');\n for (const slot of slots) {\n const assignedElements = slot.assignedElements({ flatten: true });\n for (const el of assignedElements) {\n if (el.hasAttribute('autofocus')) {\n return el;\n } else {\n autoFocusDelegate = el.querySelector('[autofocus]');\n if (autoFocusDelegate) {\n return autoFocusDelegate;\n }\n }\n }\n }\n }\n const walker = focusTarget.ownerDocument.createTreeWalker(\n whereToLook,\n NodeFilter.SHOW_ELEMENT,\n );\n let descendant: Node | null = walker.currentNode;\n while (descendant) {\n // this is not spec compliant\n if (isFocusable(descendant as HTMLElement)) {\n return descendant;\n }\n descendant = walker.nextNode();\n }\n}\n\n// https://html.spec.whatwg.org/#popover-focusing-steps\nfunction popoverFocusingSteps(subject: HTMLElement) {\n (focusDelegate(subject) as HTMLElement)?.focus();\n}\n\nconst previouslyFocusedElements = new WeakMap<HTMLElement, HTMLElement>();\n\n// https://html.spec.whatwg.org/#show-popover\nexport function showPopover(element: HTMLElement) {\n if (!checkPopoverValidity(element, false)) {\n return;\n }\n const document = element.ownerDocument;\n if (\n !element.dispatchEvent(\n new ToggleEvent('beforetoggle', {\n cancelable: true,\n oldState: 'closed',\n newState: 'open',\n }),\n )\n ) {\n return;\n }\n if (!checkPopoverValidity(element, false)) {\n return;\n }\n let shouldRestoreFocus = false;\n if (element.popover === 'auto') {\n const originalType = element.getAttribute('popover');\n const ancestor = topMostPopoverAncestor(element) || document;\n hideAllPopoversUntil(ancestor, false, true);\n if (\n originalType !== element.getAttribute('popover') ||\n !checkPopoverValidity(element, false)\n ) {\n return;\n }\n }\n if (!topMostAutoPopover(document)) {\n shouldRestoreFocus = true;\n }\n previouslyFocusedElements.delete(element);\n const originallyFocusedElement = document.activeElement as HTMLElement;\n element.classList.add(':popover-open');\n visibilityState.set(element, 'showing');\n if (!topLayerElements.has(document)) {\n topLayerElements.set(document, new Set());\n }\n topLayerElements.get(document)!.add(element);\n popoverFocusingSteps(element);\n if (element.popover === 'auto') {\n if (!autoPopoverList.has(document)) {\n autoPopoverList.set(document, new Set());\n }\n autoPopoverList.get(document)!.add(element);\n setInvokerAriaExpanded(popoverInvoker.get(element), true);\n }\n if (\n shouldRestoreFocus &&\n originallyFocusedElement &&\n element.popover === 'auto'\n ) {\n previouslyFocusedElements.set(element, originallyFocusedElement);\n }\n queuePopoverToggleEventTask(element, 'closed', 'open');\n}\n\n// https://html.spec.whatwg.org/#hide-popover\nexport function hidePopover(\n element: HTMLElement,\n focusPreviousElement = false,\n fireEvents = false,\n) {\n // https://whatpr.org/html/8221/popover.html#hide-popover\n if (!checkPopoverValidity(element, true)) {\n return;\n }\n const document = element.ownerDocument;\n if (element.popover === 'auto') {\n hideAllPopoversUntil(element, focusPreviousElement, fireEvents);\n if (!checkPopoverValidity(element, true)) {\n return;\n }\n }\n setInvokerAriaExpanded(popoverInvoker.get(element), false);\n popoverInvoker.delete(element);\n if (fireEvents) {\n element.dispatchEvent(\n new ToggleEvent('beforetoggle', {\n oldState: 'open',\n newState: 'closed',\n }),\n );\n if (!checkPopoverValidity(element, true)) {\n return;\n }\n }\n topLayerElements.get(document)?.delete(element);\n autoPopoverList.get(document)?.delete(element);\n element.classList.remove(':popover-open');\n visibilityState.set(element, 'hidden');\n if (fireEvents) {\n queuePopoverToggleEventTask(element, 'open', 'closed');\n }\n const previouslyFocusedElement = previouslyFocusedElements.get(element);\n if (previouslyFocusedElement) {\n previouslyFocusedElements.delete(element);\n if (focusPreviousElement) {\n previouslyFocusedElement.focus();\n }\n }\n}\n\nfunction closeAllOpenPopovers(\n document: Document,\n focusPreviousElement = false,\n fireEvents = false,\n) {\n let popover = topMostAutoPopover(document);\n while (popover) {\n hidePopover(popover, focusPreviousElement, fireEvents);\n popover = topMostAutoPopover(document);\n }\n}\n\n// https://html.spec.whatwg.org/#hide-all-popovers-until\nexport function hideAllPopoversUntil(\n endpoint: Element | Document,\n focusPreviousElement: boolean,\n fireEvents: boolean,\n) {\n const document = endpoint.ownerDocument || endpoint;\n if (endpoint instanceof Document) {\n return closeAllOpenPopovers(document, focusPreviousElement, fireEvents);\n }\n let lastToHide = null;\n let foundEndpoint = false;\n for (const popover of autoPopoverList.get(document) || []) {\n if (popover === endpoint) {\n foundEndpoint = true;\n } else if (foundEndpoint) {\n lastToHide = popover;\n break;\n }\n }\n if (!foundEndpoint) {\n return closeAllOpenPopovers(document, focusPreviousElement, fireEvents);\n }\n while (\n lastToHide &&\n getPopoverVisibilityState(lastToHide) === 'showing' &&\n autoPopoverList.get(document)?.size\n ) {\n hidePopover(lastToHide, focusPreviousElement, fireEvents);\n }\n}\n\nconst popoverPointerDownTargets = new WeakMap<Document, HTMLElement>();\n// https://html.spec.whatwg.org/#topmost-clicked-popover\nexport function lightDismissOpenPopovers(event: Event) {\n if (!event.isTrusted) return;\n // Composed path allows us to find the target within shadowroots\n const target = event.composedPath()[0] as HTMLElement;\n if (!target) return;\n const document = target.ownerDocument;\n const topMostPopover = topMostAutoPopover(document);\n if (!topMostPopover) return;\n const ancestor = topMostClickedPopover(target);\n if (ancestor && event.type === 'pointerdown') {\n popoverPointerDownTargets.set(document, ancestor);\n } else if (event.type === 'pointerup') {\n const sameTarget = popoverPointerDownTargets.get(document) === ancestor;\n popoverPointerDownTargets.delete(document);\n if (sameTarget) {\n hideAllPopoversUntil(ancestor || document, false, true);\n }\n }\n}\n\nconst initialAriaExpandedValue = new WeakMap<\n HTMLButtonElement | HTMLInputElement,\n null | string\n>();\n\nfunction setInvokerAriaExpanded(\n el?: HTMLButtonElement | HTMLInputElement,\n force = false,\n) {\n if (!el) return;\n if (!initialAriaExpandedValue.has(el)) {\n initialAriaExpandedValue.set(el, el.getAttribute('aria-expanded'));\n }\n const popover = el.popoverTargetElement;\n if (popover instanceof HTMLElement && popover.popover === 'auto') {\n el.setAttribute('aria-expanded', String(force));\n } else {\n const initialValue = initialAriaExpandedValue.get(el);\n if (!initialValue) {\n el.removeAttribute('aria-expanded');\n } else {\n el.setAttribute('aria-expanded', initialValue);\n }\n }\n}\n", "import { ToggleEvent } from './events.js';\nimport {\n getRootNode,\n hideAllPopoversUntil,\n hidePopover,\n lightDismissOpenPopovers,\n popoverTargetAttributeActivationBehavior,\n showPopover,\n visibilityState,\n} from './popover-helpers.js';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst ShadowRoot = globalThis.ShadowRoot || function () {};\n\nexport function isSupported() {\n return (\n typeof HTMLElement !== 'undefined' &&\n typeof HTMLElement.prototype === 'object' &&\n 'popover' in HTMLElement.prototype\n );\n}\n\nexport function isPolyfilled() {\n // if the `showPopover` method is defined but is not \"native code\"\n // then we can infer it's been polyfilled\n return Boolean(\n document.body?.showPopover &&\n !/native code/i.test(document.body.showPopover.toString()),\n );\n}\n\nfunction patchSelectorFn<K extends string>(\n object: Record<PropertyKey & K, unknown>,\n name: K,\n mapper: (selector: string) => string,\n) {\n const original = object[name] as (selectors: string) => NodeList;\n Object.defineProperty(object, name, {\n value(selector: string) {\n return original.call(this, mapper(selector));\n },\n });\n}\n\nconst nonEscapedPopoverSelector = /(^|[^\\\\]):popover-open\\b/g;\n\nfunction hasLayerSupport() {\n return typeof globalThis.CSSLayerBlockRule === 'function';\n}\n\n// To emulate a UA stylesheet which is the lowest priority in the cascade,\n// all selectors must be wrapped in a :where() which has a specificity of zero.\nfunction getStyles() {\n const useLayer = hasLayerSupport();\n return `\n${useLayer ? '@layer popover-polyfill {' : ''}\n :where([popover]) {\n position: fixed;\n z-index: 2147483647;\n inset: 0;\n padding: 0.25em;\n width: fit-content;\n height: fit-content;\n border-width: initial;\n border-color: initial;\n border-image: initial;\n border-style: solid;\n background-color: canvas;\n color: canvastext;\n overflow: auto;\n margin: auto;\n }\n\n :where([popover]:not(.\\\\:popover-open)) {\n display: none;\n }\n\n :where(dialog[popover].\\\\:popover-open) {\n display: block;\n }\n\n :where(dialog[popover][open]) {\n display: revert;\n }\n\n :where([anchor].\\\\:popover-open) {\n inset: auto;\n }\n\n :where([anchor]:popover-open) {\n inset: auto;\n }\n\n @supports not (background-color: canvas) {\n :where([popover]) {\n background-color: white;\n color: black;\n }\n }\n\n @supports (width: -moz-fit-content) {\n :where([popover]) {\n width: -moz-fit-content;\n height: -moz-fit-content;\n }\n }\n\n @supports not (inset: 0) {\n :where([popover]) {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n }\n${useLayer ? '}' : ''}\n`;\n}\n\nlet popoverStyleSheet: null | false | CSSStyleSheet = null;\nexport function injectStyles(root: Document | ShadowRoot) {\n const styles = getStyles();\n if (popoverStyleSheet === null) {\n try {\n popoverStyleSheet = new CSSStyleSheet();\n popoverStyleSheet.replaceSync(styles);\n } catch {\n popoverStyleSheet = false;\n }\n }\n if (popoverStyleSheet === false) {\n const sheet = document.createElement('style');\n sheet.textContent = styles;\n if (root instanceof Document) {\n root.head.prepend(sheet);\n } else {\n root.prepend(sheet);\n }\n } else {\n root.adoptedStyleSheets = [popoverStyleSheet, ...root.adoptedStyleSheets];\n }\n}\n\nexport function apply() {\n if (typeof window === 'undefined') return;\n\n window.ToggleEvent = window.ToggleEvent || ToggleEvent;\n\n function rewriteSelector(selector: string) {\n if (selector?.includes(':popover-open')) {\n selector = selector.replace(\n nonEscapedPopoverSelector,\n '$1.\\\\:popover-open',\n );\n }\n return selector;\n }\n\n patchSelectorFn(Document.prototype, 'querySelector', rewriteSelector);\n patchSelectorFn(Document.prototype, 'querySelectorAll', rewriteSelector);\n patchSelectorFn(Element.prototype, 'querySelector', rewriteSelector);\n patchSelectorFn(Element.prototype, 'querySelectorAll', rewriteSelector);\n patchSelectorFn(Element.prototype, 'matches', rewriteSelector);\n patchSelectorFn(Element.prototype, 'closest', rewriteSelector);\n patchSelectorFn(\n DocumentFragment.prototype,\n 'querySelectorAll',\n rewriteSelector,\n );\n\n Object.defineProperties(HTMLElement.prototype, {\n popover: {\n enumerable: true,\n configurable: true,\n get() {\n if (!this.hasAttribute('popover')) return null;\n const value = (this.getAttribute('popover') || '').toLowerCase();\n if (value === '' || value == 'auto') return 'auto';\n return 'manual';\n },\n set(value) {\n if (value === null) {\n this.removeAttribute('popover');\n } else {\n this.setAttribute('popover', value);\n }\n },\n },\n\n showPopover: {\n enumerable: true,\n configurable: true,\n value() {\n showPopover(this);\n },\n },\n\n hidePopover: {\n enumerable: true,\n configurable: true,\n value() {\n hidePopover(this, true, true);\n },\n },\n\n togglePopover: {\n enumerable: true,\n configurable: true,\n value(force: boolean) {\n if (\n (visibilityState.get(this) === 'showing' && force === undefined) ||\n force === false\n ) {\n hidePopover(this, true, true);\n } else if (force === undefined || force === true) {\n showPopover(this);\n }\n },\n },\n });\n\n const originalAttachShadow = Element.prototype.attachShadow;\n if (originalAttachShadow) {\n Object.defineProperties(Element.prototype, {\n attachShadow: {\n enumerable: true,\n configurable: true,\n writable: true,\n value(options: ShadowRootInit) {\n const shadowRoot = originalAttachShadow.call(this, options);\n injectStyles(shadowRoot);\n return shadowRoot;\n },\n },\n });\n }\n const originalAttachInternals = HTMLElement.prototype.attachInternals;\n if (originalAttachInternals) {\n Object.defineProperties(HTMLElement.prototype, {\n attachInternals: {\n enumerable: true,\n configurable: true,\n writable: true,\n value() {\n const internals = originalAttachInternals.call(this);\n if (internals.shadowRoot) {\n injectStyles(internals.shadowRoot);\n }\n return internals;\n },\n },\n });\n }\n\n const popoverTargetAssociatedElements = new WeakMap<Element, Element>();\n function applyPopoverInvokerElementMixin(ElementClass: typeof HTMLElement) {\n Object.defineProperties(ElementClass.prototype, {\n popoverTargetElement: {\n enumerable: true,\n configurable: true,\n set(targetElement: unknown) {\n if (targetElement === null) {\n this.removeAttribute('popovertarget');\n popoverTargetAssociatedElements.delete(this);\n } else if (!(targetElement instanceof Element)) {\n throw new TypeError(\n `popoverTargetElement must be an element or null`,\n );\n } else {\n this.setAttribute('popovertarget', '');\n popoverTargetAssociatedElements.set(this, targetElement);\n }\n },\n get() {\n if (this.localName !== 'button' && this.localName !== 'input') {\n return null;\n }\n if (\n this.localName === 'input' &&\n this.type !== 'reset' &&\n this.type !== 'image' &&\n this.type !== 'button'\n ) {\n return null;\n }\n if (this.disabled) {\n return null;\n }\n if (this.form && this.type === 'submit') {\n return null;\n }\n const targetElement = popoverTargetAssociatedElements.get(this);\n if (targetElement && targetElement.isConnected) {\n return targetElement;\n } else if (targetElement && !targetElement.isConnected) {\n popoverTargetAssociatedElements.delete(this);\n return null;\n }\n const root = getRootNode(this);\n const idref = this.getAttribute('popovertarget');\n if (\n (root instanceof Document || root instanceof ShadowRoot) &&\n idref\n ) {\n return root.getElementById(idref) || null;\n }\n return null;\n },\n },\n popoverTargetAction: {\n enumerable: true,\n configurable: true,\n get() {\n const value = (\n this.getAttribute('popovertargetaction') || ''\n ).toLowerCase();\n if (value === 'show' || value === 'hide') return value;\n return 'toggle';\n },\n set(value) {\n this.setAttribute('popovertargetaction', value);\n },\n },\n });\n }\n\n applyPopoverInvokerElementMixin(HTMLButtonElement);\n applyPopoverInvokerElementMixin(HTMLInputElement);\n\n const handleInvokerActivation = (event: Event) => {\n // Composed path allows us to find the target within shadowroots\n const composedPath = event.composedPath() as HTMLElement[];\n const target = composedPath[0];\n if (!(target instanceof Element) || target?.shadowRoot) {\n return;\n }\n const root = getRootNode(target);\n if (!(root instanceof ShadowRoot || root instanceof Document)) {\n return;\n }\n const invoker = composedPath.find((el) =>\n el.matches?.('[popovertargetaction],[popovertarget]'),\n );\n if (invoker) {\n popoverTargetAttributeActivationBehavior(invoker as HTMLButtonElement);\n event.preventDefault();\n return;\n }\n };\n\n const onKeydown = (event: Event) => {\n const key = (event as KeyboardEvent).key;\n const target = event.target as Element;\n if (\n !event.defaultPrevented &&\n target &&\n (key === 'Escape' || key === 'Esc')\n ) {\n hideAllPopoversUntil(target.ownerDocument, true, true);\n }\n };\n\n const addEventListeners = (root: Document | ShadowRoot) => {\n root.addEventListener('click', handleInvokerActivation);\n root.addEventListener('keydown', onKeydown);\n root.addEventListener('pointerdown', lightDismissOpenPopovers);\n root.addEventListener('pointerup', lightDismissOpenPopovers);\n };\n\n addEventListeners(document);\n injectStyles(document);\n}\n"], "mappings": "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", "names": ["document", "topMostPopoverAncestor", "ShadowRoot"] }