{"version":3,"file":"primer_view_components.js","sources":["../../../node_modules/@oddbird/popover-polyfill/dist/popover.js","../../../node_modules/@github/details-menu-element/dist/index.js","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/@primer/behaviors/dist/esm/anchored-position.js","../../../node_modules/@primer/behaviors/dist/esm/utils/iterate-focusable-elements.js","../../../node_modules/@primer/behaviors/dist/esm/polyfills/event-listener-signal.js","../../../node_modules/@primer/behaviors/dist/esm/focus-trap.js","../../components/primer/anchored_position.ts","../../components/primer/focus_group.ts","../../../node_modules/@github/image-crop-element/dist/index.js","../../components/primer/alpha/modal_dialog.ts","../../../node_modules/@github/catalyst/lib/bind.js","../../../node_modules/@github/catalyst/lib/dasherize.js","../../../node_modules/@github/catalyst/lib/attr.js","../../../node_modules/@github/catalyst/lib/core.js","../../../node_modules/@github/catalyst/lib/register.js","../../../node_modules/@github/catalyst/lib/auto-shadow-root.js","../../../node_modules/@github/catalyst/lib/target.js","../../../node_modules/@github/catalyst/lib/findtarget.js","../../../node_modules/@github/catalyst/lib/controller.js","../../../node_modules/@github/catalyst/lib/lazy-define.js","../../components/primer/alpha/nav_list.ts","../../components/primer/alpha/segmented_control.ts","../../../node_modules/@github/mini-throttle/dist/index.js","../../components/primer/alpha/toggle_switch.ts","../../../node_modules/@github/mini-throttle/dist/decorators.js","../../components/primer/alpha/tool_tip.ts","../../components/primer/alpha/x_banner.ts","../../../node_modules/@github/combobox-nav/dist/index.js","../../../node_modules/@github/auto-complete-element/dist/autocomplete.js","../../../node_modules/@github/auto-complete-element/dist/debounce.js","../../../node_modules/@github/auto-complete-element/dist/auto-complete-element.js","../../../node_modules/@github/auto-complete-element/dist/auto-complete-element-define.js","../../../node_modules/@github/clipboard-copy-element/dist/index.esm.js","../../components/primer/beta/clipboard_copy.ts","../../../node_modules/@github/relative-time-element/dist/duration-format-ponyfill.js","../../../node_modules/@github/relative-time-element/dist/duration.js","../../../node_modules/@github/relative-time-element/dist/relative-time-element.js","../../../node_modules/@github/relative-time-element/dist/relative-time-element-define.js","../../../node_modules/@github/tab-container-element/dist/index.js","../../../lib/primer/forms/primer_multi_input.ts","../../../node_modules/@github/auto-check-element/dist/auto-check-element.js","../../../node_modules/@github/auto-check-element/dist/auto-check-element-define.js","../../../lib/primer/forms/primer_text_field.ts","../../../lib/primer/forms/toggle_switch_input.ts","../../../node_modules/@github/include-fragment-element/dist/index.js","../../components/primer/alpha/action_menu/action_menu_element.ts"],"sourcesContent":["// src/events.ts\nvar ToggleEvent = class extends Event {\n constructor(type, { oldState = \"\", newState = \"\", ...init } = {}) {\n super(type, init);\n this.oldState = String(oldState || \"\");\n this.newState = String(newState || \"\");\n }\n};\nvar popoverToggleTaskQueue = /* @__PURE__ */ new WeakMap();\nfunction queuePopoverToggleEventTask(element, oldState, newState) {\n popoverToggleTaskQueue.set(\n element,\n setTimeout(() => {\n if (!popoverToggleTaskQueue.has(element))\n return;\n element.dispatchEvent(\n new ToggleEvent(\"toggle\", {\n cancelable: false,\n oldState,\n newState\n })\n );\n }, 0)\n );\n}\n\n// src/popover-helpers.ts\nvar topLayerElements = /* @__PURE__ */ new WeakMap();\nvar autoPopoverList = /* @__PURE__ */ new WeakMap();\nvar visibilityState = /* @__PURE__ */ new WeakMap();\nfunction getPopoverVisibilityState(popover) {\n return visibilityState.get(popover) || \"hidden\";\n}\nvar popoverInvoker = /* @__PURE__ */ new WeakMap();\nfunction popoverTargetAttributeActivationBehavior(element) {\n const popover = element.popoverTargetElement;\n if (!popover) {\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\")\n 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}\nfunction checkPopoverValidity(element, expectedToBeShowing) {\n if (element.popover !== \"auto\" && element.popover !== \"manual\") {\n return false;\n }\n if (!element.isConnected)\n 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)\n return false;\n return true;\n}\nfunction getStackPosition(popover) {\n if (!popover)\n return 0;\n return Array.from(autoPopoverList.get(popover.ownerDocument) || []).indexOf(\n popover\n ) + 1;\n}\nfunction topMostClickedPopover(target) {\n const clickedPopover = nearestInclusiveOpenPopover(target);\n const invokerPopover = nearestInclusiveTargetPopoverForInvoker(target);\n if (getStackPosition(clickedPopover) > getStackPosition(invokerPopover)) {\n return clickedPopover;\n }\n return invokerPopover;\n}\nfunction topMostAutoPopover(document2) {\n return Array.from(autoPopoverList.get(document2) || []).pop() || null;\n}\nfunction nearestInclusiveOpenPopover(node) {\n while (node) {\n if (node instanceof HTMLElement && node.popover === \"auto\" && visibilityState.get(node) === \"showing\") {\n return node;\n }\n node = node.parentElement || node.getRootNode();\n if (node instanceof ShadowRoot)\n node = node.host;\n if (node instanceof Document)\n return;\n }\n}\nfunction nearestInclusiveTargetPopoverForInvoker(node) {\n while (node) {\n const nodePopover = node.popoverTargetElement;\n if (nodePopover)\n return nodePopover;\n node = node.parentElement || node.getRootNode();\n if (node instanceof ShadowRoot)\n node = node.host;\n if (node instanceof Document)\n return;\n }\n}\nfunction topMostPopoverAncestor(newPopover) {\n const popoverPositions = /* @__PURE__ */ new Map();\n let i = 0;\n const document2 = newPopover.ownerDocument;\n for (const popover of autoPopoverList.get(document2) || []) {\n popoverPositions.set(popover, i);\n i += 1;\n }\n popoverPositions.set(newPopover, i);\n i += 1;\n let topMostPopoverAncestor2 = null;\n function checkAncestor(candidate) {\n const candidateAncestor = nearestInclusiveOpenPopover(candidate);\n if (candidateAncestor === null)\n return null;\n const candidatePosition = popoverPositions.get(candidateAncestor);\n if (topMostPopoverAncestor2 === null || popoverPositions.get(topMostPopoverAncestor2) < candidatePosition) {\n topMostPopoverAncestor2 = candidateAncestor;\n }\n }\n checkAncestor(newPopover?.parentElement);\n return topMostPopoverAncestor2;\n}\nfunction isFocusable(focusTarget) {\n if (focusTarget.hidden)\n return false;\n if (focusTarget instanceof HTMLButtonElement || focusTarget instanceof HTMLInputElement || focusTarget instanceof HTMLSelectElement || focusTarget instanceof HTMLTextAreaElement || focusTarget instanceof HTMLOptGroupElement || focusTarget instanceof HTMLOptionElement || focusTarget instanceof HTMLFieldSetElement) {\n if (focusTarget.disabled)\n return false;\n }\n if (focusTarget instanceof HTMLInputElement && focusTarget.type === \"hidden\") {\n return false;\n }\n if (focusTarget instanceof HTMLAnchorElement && focusTarget.href === \"\") {\n return false;\n }\n return focusTarget.tabIndex !== -1;\n}\nfunction focusDelegate(focusTarget) {\n if (focusTarget.shadowRoot && focusTarget.shadowRoot.delegatesFocus !== true) {\n return null;\n }\n let whereToLook = focusTarget;\n if (whereToLook.shadowRoot) {\n whereToLook = whereToLook.shadowRoot;\n }\n const autoFocusDelegate = whereToLook.querySelector(\"[autofocus]\");\n if (autoFocusDelegate) {\n return autoFocusDelegate;\n }\n const walker = focusTarget.ownerDocument.createTreeWalker(\n whereToLook,\n NodeFilter.SHOW_ELEMENT\n );\n let descendant = walker.currentNode;\n while (descendant) {\n if (isFocusable(descendant)) {\n return descendant;\n }\n descendant = walker.nextNode();\n }\n}\nfunction popoverFocusingSteps(subject) {\n focusDelegate(subject)?.focus();\n}\nvar previouslyFocusedElements = /* @__PURE__ */ new WeakMap();\nfunction showPopover(element) {\n if (!checkPopoverValidity(element, false)) {\n return;\n }\n const document2 = element.ownerDocument;\n if (!element.dispatchEvent(\n new ToggleEvent(\"beforetoggle\", {\n cancelable: true,\n oldState: \"closed\",\n newState: \"open\"\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) || document2;\n hideAllPopoversUntil(ancestor, false, true);\n if (originalType !== element.getAttribute(\"popover\") || !checkPopoverValidity(element, false)) {\n return;\n }\n }\n if (!topMostAutoPopover(document2)) {\n shouldRestoreFocus = true;\n }\n previouslyFocusedElements.delete(element);\n const originallyFocusedElement = document2.activeElement;\n element.classList.add(\":open\");\n visibilityState.set(element, \"showing\");\n if (!topLayerElements.has(document2)) {\n topLayerElements.set(document2, /* @__PURE__ */ new Set());\n }\n topLayerElements.get(document2).add(element);\n popoverFocusingSteps(element);\n if (element.popover === \"auto\") {\n if (!autoPopoverList.has(document2)) {\n autoPopoverList.set(document2, /* @__PURE__ */ new Set());\n }\n autoPopoverList.get(document2).add(element);\n setInvokerAriaExpanded(popoverInvoker.get(element), true);\n }\n if (shouldRestoreFocus && originallyFocusedElement && element.popover === \"auto\") {\n previouslyFocusedElements.set(element, originallyFocusedElement);\n }\n queuePopoverToggleEventTask(element, \"closed\", \"open\");\n}\nfunction hidePopover(element, focusPreviousElement = false, fireEvents = false) {\n if (!checkPopoverValidity(element, true)) {\n return;\n }\n const document2 = 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(document2)?.delete(element);\n autoPopoverList.get(document2)?.delete(element);\n element.classList.remove(\":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}\nfunction closeAllOpenPopovers(document2, focusPreviousElement = false, fireEvents = false) {\n let popover = topMostAutoPopover(document2);\n while (popover) {\n hidePopover(popover, focusPreviousElement, fireEvents);\n popover = topMostAutoPopover(document2);\n }\n}\nfunction hideAllPopoversUntil(endpoint, focusPreviousElement, fireEvents) {\n const document2 = endpoint.ownerDocument || endpoint;\n if (endpoint instanceof Document) {\n return closeAllOpenPopovers(document2, focusPreviousElement, fireEvents);\n }\n let lastToHide = null;\n let foundEndpoint = false;\n for (const popover of autoPopoverList.get(document2) || []) {\n if (popover === endpoint) {\n foundEndpoint = true;\n } else if (foundEndpoint) {\n lastToHide = popover;\n break;\n }\n }\n if (!foundEndpoint) {\n return closeAllOpenPopovers(document2, focusPreviousElement, fireEvents);\n }\n while (lastToHide && getPopoverVisibilityState(lastToHide) === \"showing\" && autoPopoverList.get(document2)?.size) {\n hidePopover(lastToHide, focusPreviousElement, fireEvents);\n }\n}\nvar popoverPointerDownTargets = /* @__PURE__ */ new WeakMap();\nfunction lightDismissOpenPopovers(event) {\n if (!event.isTrusted)\n return;\n const target = event.composedPath()[0];\n if (!target)\n return;\n const document2 = target.ownerDocument;\n const topMostPopover = topMostAutoPopover(document2);\n if (!topMostPopover)\n return;\n const ancestor = topMostClickedPopover(target);\n if (ancestor && event.type === \"pointerdown\") {\n popoverPointerDownTargets.set(document2, ancestor);\n } else if (event.type === \"pointerup\") {\n const sameTarget = popoverPointerDownTargets.get(document2) === ancestor;\n popoverPointerDownTargets.delete(document2);\n if (sameTarget) {\n hideAllPopoversUntil(ancestor || document2, false, true);\n }\n }\n}\nvar initialAriaExpandedValue = /* @__PURE__ */ new WeakMap();\nfunction setInvokerAriaExpanded(el, force = false) {\n if (!el)\n return;\n if (!initialAriaExpandedValue.has(el)) {\n initialAriaExpandedValue.set(el, el.getAttribute(\"aria-expanded\"));\n }\n const popover = el.popoverTargetElement;\n if (popover && 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\n// src/popover.ts\nfunction isSupported() {\n return typeof HTMLElement !== \"undefined\" && typeof HTMLElement.prototype === \"object\" && \"popover\" in HTMLElement.prototype;\n}\nfunction apply() {\n window.ToggleEvent = window.ToggleEvent || ToggleEvent;\n Object.defineProperties(HTMLElement.prototype, {\n popover: {\n enumerable: true,\n configurable: true,\n get() {\n if (!this.hasAttribute(\"popover\"))\n return null;\n const value = (this.getAttribute(\"popover\") || \"\").toLowerCase();\n if (value === \"\" || value == \"auto\")\n return \"auto\";\n return \"manual\";\n },\n set(value) {\n this.setAttribute(\"popover\", value);\n }\n },\n showPopover: {\n enumerable: true,\n configurable: true,\n value() {\n showPopover(this);\n }\n },\n hidePopover: {\n enumerable: true,\n configurable: true,\n value() {\n hidePopover(this, true, true);\n }\n },\n togglePopover: {\n enumerable: true,\n configurable: true,\n value(force) {\n if (visibilityState.get(this) === \"showing\" && force === void 0 || force === false) {\n hidePopover(this, true, true);\n } else if (force === void 0 || force === true) {\n showPopover(this);\n }\n }\n }\n });\n const popoverTargetAssociatedElements = /* @__PURE__ */ new WeakMap();\n function applyPopoverInvokerElementMixin(ElementClass) {\n Object.defineProperties(ElementClass.prototype, {\n popoverTargetElement: {\n enumerable: true,\n configurable: true,\n set(targetElement) {\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 (this.localName === \"input\" && this.type !== \"reset\" && this.type !== \"image\" && this.type !== \"button\") {\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?.isConnected) {\n popoverTargetAssociatedElements.delete(this);\n }\n if (targetElement) {\n return targetElement;\n }\n const root = this.getRootNode();\n const idref = this.getAttribute(\"popovertarget\");\n if ((root instanceof Document || root instanceof ShadowRoot) && idref) {\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 = (this.getAttribute(\"popovertargetaction\") || \"\").toLowerCase();\n if (value === \"show\" || value === \"hide\")\n return value;\n return \"toggle\";\n },\n set(value) {\n this.setAttribute(\"popovertargetaction\", value);\n }\n }\n });\n }\n applyPopoverInvokerElementMixin(HTMLButtonElement);\n applyPopoverInvokerElementMixin(HTMLInputElement);\n const handleInvokerActivation = (event) => {\n if (!event.isTrusted)\n return;\n const target = event.composedPath()[0];\n if (!(target instanceof Element) || target?.shadowRoot) {\n return;\n }\n const root = target.getRootNode();\n if (!(root instanceof ShadowRoot || root instanceof Document)) {\n return;\n }\n const invoker = target.closest(\"[popovertargetaction],[popovertarget]\");\n if (invoker) {\n popoverTargetAttributeActivationBehavior(invoker);\n return;\n }\n };\n const onKeydown = (event) => {\n const key = event.key;\n const target = event.target;\n if (target && (key === \"Escape\" || key === \"Esc\")) {\n hideAllPopoversUntil(target.ownerDocument, true, true);\n }\n };\n const addEventListeners = (root) => {\n root.addEventListener(\"click\", handleInvokerActivation);\n root.addEventListener(\"keydown\", onKeydown);\n root.addEventListener(\"pointerdown\", lightDismissOpenPopovers);\n root.addEventListener(\"pointerup\", lightDismissOpenPopovers);\n };\n addEventListeners(document);\n}\n\n// src/index.ts\nif (!isSupported())\n apply();\n//# sourceMappingURL=popover.js.map\n","class DetailsMenuElement extends HTMLElement {\n get preload() {\n return this.hasAttribute('preload');\n }\n set preload(value) {\n if (value) {\n this.setAttribute('preload', '');\n }\n else {\n this.removeAttribute('preload');\n }\n }\n get src() {\n return this.getAttribute('src') || '';\n }\n set src(value) {\n this.setAttribute('src', value);\n }\n connectedCallback() {\n if (!this.hasAttribute('role'))\n this.setAttribute('role', 'menu');\n const details = this.parentElement;\n if (!details)\n return;\n const summary = details.querySelector('summary');\n if (summary) {\n summary.setAttribute('aria-haspopup', 'menu');\n if (!summary.hasAttribute('role'))\n summary.setAttribute('role', 'button');\n }\n const subscriptions = [\n fromEvent(details, 'compositionstart', e => trackComposition(this, e)),\n fromEvent(details, 'compositionend', e => trackComposition(this, e)),\n fromEvent(details, 'click', e => shouldCommit(details, e)),\n fromEvent(details, 'change', e => shouldCommit(details, e)),\n fromEvent(details, 'keydown', e => keydown(details, this, e)),\n fromEvent(details, 'toggle', () => loadFragment(details, this), { once: true }),\n fromEvent(details, 'toggle', () => closeCurrentMenu(details)),\n this.preload\n ? fromEvent(details, 'mouseover', () => loadFragment(details, this), { once: true })\n : NullSubscription,\n ...focusOnOpen(details)\n ];\n states.set(this, { subscriptions, loaded: false, isComposing: false });\n }\n disconnectedCallback() {\n const state = states.get(this);\n if (!state)\n return;\n states.delete(this);\n for (const sub of state.subscriptions) {\n sub.unsubscribe();\n }\n }\n}\nconst states = new WeakMap();\nconst NullSubscription = {\n unsubscribe() {\n }\n};\nfunction fromEvent(target, eventName, onNext, options = false) {\n target.addEventListener(eventName, onNext, options);\n return {\n unsubscribe: () => {\n target.removeEventListener(eventName, onNext, options);\n }\n };\n}\nfunction loadFragment(details, menu) {\n const src = menu.getAttribute('src');\n if (!src)\n return;\n const state = states.get(menu);\n if (!state)\n return;\n if (state.loaded)\n return;\n state.loaded = true;\n const loader = menu.querySelector('include-fragment');\n if (loader && !loader.hasAttribute('src')) {\n loader.addEventListener('loadend', () => autofocus(details));\n loader.setAttribute('src', src);\n }\n}\nfunction focusOnOpen(details) {\n let isMouse = false;\n const onmousedown = () => (isMouse = true);\n const onkeydown = () => (isMouse = false);\n const ontoggle = () => {\n if (!details.hasAttribute('open'))\n return;\n if (autofocus(details))\n return;\n if (!isMouse)\n focusFirstItem(details);\n };\n return [\n fromEvent(details, 'mousedown', onmousedown),\n fromEvent(details, 'keydown', onkeydown),\n fromEvent(details, 'toggle', ontoggle)\n ];\n}\nfunction closeCurrentMenu(details) {\n if (!details.hasAttribute('open'))\n return;\n for (const menu of document.querySelectorAll('details[open] > details-menu')) {\n const opened = menu.closest('details');\n if (opened && opened !== details && !opened.contains(details)) {\n opened.removeAttribute('open');\n }\n }\n}\nfunction autofocus(details) {\n if (!details.hasAttribute('open'))\n return false;\n const input = details.querySelector('details-menu [autofocus]');\n if (input) {\n input.focus();\n return true;\n }\n else {\n return false;\n }\n}\nfunction focusFirstItem(details) {\n const selected = document.activeElement;\n if (selected && isMenuItem(selected) && details.contains(selected))\n return;\n const target = sibling(details, true);\n if (target)\n target.focus();\n}\nfunction sibling(details, next) {\n const options = Array.from(details.querySelectorAll('[role^=\"menuitem\"]:not([hidden]):not([disabled])'));\n const selected = document.activeElement;\n const index = selected instanceof HTMLElement ? options.indexOf(selected) : -1;\n const found = next ? options[index + 1] : options[index - 1];\n const def = next ? options[0] : options[options.length - 1];\n return found || def;\n}\nconst ctrlBindings = navigator.userAgent.match(/Macintosh/);\nfunction shouldCommit(details, event) {\n const target = event.target;\n if (!(target instanceof Element))\n return;\n if (target.closest('details') !== details)\n return;\n if (event.type === 'click') {\n const menuitem = target.closest('[role=\"menuitem\"], [role=\"menuitemradio\"]');\n if (!menuitem)\n return;\n const input = menuitem.querySelector('input');\n if (menuitem.tagName === 'LABEL' && target === input)\n return;\n const onlyCommitOnChangeEvent = menuitem.tagName === 'LABEL' && input && !input.checked;\n if (!onlyCommitOnChangeEvent) {\n commit(menuitem, details);\n }\n }\n else if (event.type === 'change') {\n const menuitem = target.closest('[role=\"menuitemradio\"], [role=\"menuitemcheckbox\"]');\n if (menuitem)\n commit(menuitem, details);\n }\n}\nfunction updateChecked(selected, details) {\n for (const el of details.querySelectorAll('[role=\"menuitemradio\"], [role=\"menuitemcheckbox\"]')) {\n const input = el.querySelector('input[type=\"radio\"], input[type=\"checkbox\"]');\n let checkState = (el === selected).toString();\n if (input instanceof HTMLInputElement) {\n checkState = input.indeterminate ? 'mixed' : input.checked.toString();\n }\n el.setAttribute('aria-checked', checkState);\n }\n}\nfunction commit(selected, details) {\n if (selected.hasAttribute('disabled') || selected.getAttribute('aria-disabled') === 'true')\n return;\n const menu = selected.closest('details-menu');\n if (!menu)\n return;\n const dispatched = menu.dispatchEvent(new CustomEvent('details-menu-select', {\n cancelable: true,\n detail: { relatedTarget: selected }\n }));\n if (!dispatched)\n return;\n updateLabel(selected, details);\n updateChecked(selected, details);\n if (selected.getAttribute('role') !== 'menuitemcheckbox')\n close(details);\n menu.dispatchEvent(new CustomEvent('details-menu-selected', {\n detail: { relatedTarget: selected }\n }));\n}\nfunction keydown(details, menu, event) {\n if (!(event instanceof KeyboardEvent))\n return;\n if (details.querySelector('details[open]'))\n return;\n const state = states.get(menu);\n if (!state || state.isComposing)\n return;\n const isSummaryFocused = event.target instanceof Element && event.target.tagName === 'SUMMARY';\n switch (event.key) {\n case 'Escape':\n if (details.hasAttribute('open')) {\n close(details);\n event.preventDefault();\n event.stopPropagation();\n }\n break;\n case 'ArrowDown':\n {\n if (isSummaryFocused && !details.hasAttribute('open')) {\n details.setAttribute('open', '');\n }\n const target = sibling(details, true);\n if (target)\n target.focus();\n event.preventDefault();\n }\n break;\n case 'ArrowUp':\n {\n if (isSummaryFocused && !details.hasAttribute('open')) {\n details.setAttribute('open', '');\n }\n const target = sibling(details, false);\n if (target)\n target.focus();\n event.preventDefault();\n }\n break;\n case 'n':\n {\n if (ctrlBindings && event.ctrlKey) {\n const target = sibling(details, true);\n if (target)\n target.focus();\n event.preventDefault();\n }\n }\n break;\n case 'p':\n {\n if (ctrlBindings && event.ctrlKey) {\n const target = sibling(details, false);\n if (target)\n target.focus();\n event.preventDefault();\n }\n }\n break;\n case ' ':\n case 'Enter':\n {\n const selected = document.activeElement;\n if (selected instanceof HTMLElement && isMenuItem(selected) && selected.closest('details') === details) {\n event.preventDefault();\n event.stopPropagation();\n selected.click();\n }\n }\n break;\n }\n}\nfunction isMenuItem(el) {\n const role = el.getAttribute('role');\n return role === 'menuitem' || role === 'menuitemcheckbox' || role === 'menuitemradio';\n}\nfunction close(details) {\n const wasOpen = details.hasAttribute('open');\n if (!wasOpen)\n return;\n details.removeAttribute('open');\n const summary = details.querySelector('summary');\n if (summary)\n summary.focus();\n}\nfunction updateLabel(item, details) {\n const button = details.querySelector('[data-menu-button]');\n if (!button)\n return;\n const text = labelText(item);\n if (text) {\n button.textContent = text;\n }\n else {\n const html = labelHTML(item);\n if (html)\n button.innerHTML = html;\n }\n}\nfunction labelText(el) {\n if (!el)\n return null;\n const textEl = el.hasAttribute('data-menu-button-text') ? el : el.querySelector('[data-menu-button-text]');\n if (!textEl)\n return null;\n return textEl.getAttribute('data-menu-button-text') || textEl.textContent;\n}\nfunction labelHTML(el) {\n if (!el)\n return null;\n const contentsEl = el.hasAttribute('data-menu-button-contents') ? el : el.querySelector('[data-menu-button-contents]');\n return contentsEl ? contentsEl.innerHTML : null;\n}\nfunction trackComposition(menu, event) {\n const state = states.get(menu);\n if (!state)\n return;\n state.isComposing = event.type === 'compositionstart';\n}\nexport default DetailsMenuElement;\nif (!window.customElements.get('details-menu')) {\n window.DetailsMenuElement = DetailsMenuElement;\n window.customElements.define('details-menu', DetailsMenuElement);\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","const alternateOrders = {\n 'outside-top': ['outside-bottom', 'outside-right', 'outside-left', 'outside-bottom'],\n 'outside-bottom': ['outside-top', 'outside-right', 'outside-left', 'outside-bottom'],\n 'outside-left': ['outside-right', 'outside-bottom', 'outside-top', 'outside-bottom'],\n 'outside-right': ['outside-left', 'outside-bottom', 'outside-top', 'outside-bottom']\n};\nconst alternateAlignments = {\n start: ['end', 'center'],\n end: ['start', 'center'],\n center: ['end', 'start']\n};\nexport function getAnchoredPosition(floatingElement, anchorElement, settings = {}) {\n const parentElement = getPositionedParent(floatingElement);\n const clippingRect = getClippingRect(parentElement);\n const parentElementStyle = getComputedStyle(parentElement);\n const parentElementRect = parentElement.getBoundingClientRect();\n const [borderTop, borderLeft] = [parentElementStyle.borderTopWidth, parentElementStyle.borderLeftWidth].map(v => parseInt(v, 10) || 0);\n const relativeRect = {\n top: parentElementRect.top + borderTop,\n left: parentElementRect.left + borderLeft\n };\n return pureCalculateAnchoredPosition(clippingRect, relativeRect, floatingElement.getBoundingClientRect(), anchorElement instanceof Element ? anchorElement.getBoundingClientRect() : anchorElement, getDefaultSettings(settings));\n}\nfunction getPositionedParent(element) {\n let parentNode = element.parentNode;\n while (parentNode !== null) {\n if (parentNode instanceof HTMLElement && getComputedStyle(parentNode).position !== 'static') {\n return parentNode;\n }\n parentNode = parentNode.parentNode;\n }\n return document.body;\n}\nfunction getClippingRect(element) {\n let parentNode = element;\n while (parentNode !== null) {\n if (parentNode === document.body) {\n break;\n }\n const parentNodeStyle = getComputedStyle(parentNode);\n if (parentNodeStyle.overflow !== 'visible') {\n break;\n }\n parentNode = parentNode.parentNode;\n }\n const clippingNode = parentNode === document.body || !(parentNode instanceof HTMLElement) ? document.body : parentNode;\n const elemRect = clippingNode.getBoundingClientRect();\n const elemStyle = getComputedStyle(clippingNode);\n const [borderTop, borderLeft, borderRight, borderBottom] = [\n elemStyle.borderTopWidth,\n elemStyle.borderLeftWidth,\n elemStyle.borderRightWidth,\n elemStyle.borderBottomWidth\n ].map(v => parseInt(v, 10) || 0);\n return {\n top: elemRect.top + borderTop,\n left: elemRect.left + borderLeft,\n width: elemRect.width - borderRight - borderLeft,\n height: Math.max(elemRect.height - borderTop - borderBottom, clippingNode === document.body ? window.innerHeight : -Infinity)\n };\n}\nconst positionDefaults = {\n side: 'outside-bottom',\n align: 'start',\n anchorOffset: 4,\n alignmentOffset: 4,\n allowOutOfBounds: false\n};\nfunction getDefaultSettings(settings = {}) {\n var _a, _b, _c, _d, _e;\n const side = (_a = settings.side) !== null && _a !== void 0 ? _a : positionDefaults.side;\n const align = (_b = settings.align) !== null && _b !== void 0 ? _b : positionDefaults.align;\n return {\n side,\n align,\n anchorOffset: (_c = settings.anchorOffset) !== null && _c !== void 0 ? _c : (side === 'inside-center' ? 0 : positionDefaults.anchorOffset),\n alignmentOffset: (_d = settings.alignmentOffset) !== null && _d !== void 0 ? _d : (align !== 'center' && side.startsWith('inside') ? positionDefaults.alignmentOffset : 0),\n allowOutOfBounds: (_e = settings.allowOutOfBounds) !== null && _e !== void 0 ? _e : positionDefaults.allowOutOfBounds\n };\n}\nfunction pureCalculateAnchoredPosition(viewportRect, relativePosition, floatingRect, anchorRect, { side, align, allowOutOfBounds, anchorOffset, alignmentOffset }) {\n const relativeViewportRect = {\n top: viewportRect.top - relativePosition.top,\n left: viewportRect.left - relativePosition.left,\n width: viewportRect.width,\n height: viewportRect.height\n };\n let pos = calculatePosition(floatingRect, anchorRect, side, align, anchorOffset, alignmentOffset);\n let anchorSide = side;\n let anchorAlign = align;\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n if (!allowOutOfBounds) {\n const alternateOrder = alternateOrders[side];\n let positionAttempt = 0;\n if (alternateOrder) {\n let prevSide = side;\n while (positionAttempt < alternateOrder.length &&\n shouldRecalculatePosition(prevSide, pos, relativeViewportRect, floatingRect)) {\n const nextSide = alternateOrder[positionAttempt++];\n prevSide = nextSide;\n pos = calculatePosition(floatingRect, anchorRect, nextSide, align, anchorOffset, alignmentOffset);\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n anchorSide = nextSide;\n }\n }\n const alternateAlignment = alternateAlignments[align];\n let alignmentAttempt = 0;\n if (alternateAlignment) {\n let prevAlign = align;\n while (alignmentAttempt < alternateAlignment.length &&\n shouldRecalculateAlignment(prevAlign, pos, relativeViewportRect, floatingRect)) {\n const nextAlign = alternateAlignment[alignmentAttempt++];\n prevAlign = nextAlign;\n pos = calculatePosition(floatingRect, anchorRect, anchorSide, nextAlign, anchorOffset, alignmentOffset);\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n anchorAlign = nextAlign;\n }\n }\n if (pos.top < relativeViewportRect.top) {\n pos.top = relativeViewportRect.top;\n }\n if (pos.left < relativeViewportRect.left) {\n pos.left = relativeViewportRect.left;\n }\n if (pos.left + floatingRect.width > viewportRect.width + relativeViewportRect.left) {\n pos.left = viewportRect.width + relativeViewportRect.left - floatingRect.width;\n }\n if (alternateOrder && positionAttempt < alternateOrder.length) {\n if (pos.top + floatingRect.height > viewportRect.height + relativeViewportRect.top) {\n pos.top = viewportRect.height + relativeViewportRect.top - floatingRect.height;\n }\n }\n }\n return Object.assign(Object.assign({}, pos), { anchorSide, anchorAlign });\n}\nfunction calculatePosition(elementDimensions, anchorPosition, side, align, anchorOffset, alignmentOffset) {\n const anchorRight = anchorPosition.left + anchorPosition.width;\n const anchorBottom = anchorPosition.top + anchorPosition.height;\n let top = -1;\n let left = -1;\n if (side === 'outside-top') {\n top = anchorPosition.top - anchorOffset - elementDimensions.height;\n }\n else if (side === 'outside-bottom') {\n top = anchorBottom + anchorOffset;\n }\n else if (side === 'outside-left') {\n left = anchorPosition.left - anchorOffset - elementDimensions.width;\n }\n else if (side === 'outside-right') {\n left = anchorRight + anchorOffset;\n }\n if (side === 'outside-top' || side === 'outside-bottom') {\n if (align === 'start') {\n left = anchorPosition.left + alignmentOffset;\n }\n else if (align === 'center') {\n left = anchorPosition.left - (elementDimensions.width - anchorPosition.width) / 2 + alignmentOffset;\n }\n else {\n left = anchorRight - elementDimensions.width - alignmentOffset;\n }\n }\n if (side === 'outside-left' || side === 'outside-right') {\n if (align === 'start') {\n top = anchorPosition.top + alignmentOffset;\n }\n else if (align === 'center') {\n top = anchorPosition.top - (elementDimensions.height - anchorPosition.height) / 2 + alignmentOffset;\n }\n else {\n top = anchorBottom - elementDimensions.height - alignmentOffset;\n }\n }\n if (side === 'inside-top') {\n top = anchorPosition.top + anchorOffset;\n }\n else if (side === 'inside-bottom') {\n top = anchorBottom - anchorOffset - elementDimensions.height;\n }\n else if (side === 'inside-left') {\n left = anchorPosition.left + anchorOffset;\n }\n else if (side === 'inside-right') {\n left = anchorRight - anchorOffset - elementDimensions.width;\n }\n else if (side === 'inside-center') {\n left = (anchorRight + anchorPosition.left) / 2 - elementDimensions.width / 2 + anchorOffset;\n }\n if (side === 'inside-top' || side === 'inside-bottom') {\n if (align === 'start') {\n left = anchorPosition.left + alignmentOffset;\n }\n else if (align === 'center') {\n left = anchorPosition.left - (elementDimensions.width - anchorPosition.width) / 2 + alignmentOffset;\n }\n else {\n left = anchorRight - elementDimensions.width - alignmentOffset;\n }\n }\n else if (side === 'inside-left' || side === 'inside-right' || side === 'inside-center') {\n if (align === 'start') {\n top = anchorPosition.top + alignmentOffset;\n }\n else if (align === 'center') {\n top = anchorPosition.top - (elementDimensions.height - anchorPosition.height) / 2 + alignmentOffset;\n }\n else {\n top = anchorBottom - elementDimensions.height - alignmentOffset;\n }\n }\n return { top, left };\n}\nfunction shouldRecalculatePosition(side, currentPos, containerDimensions, elementDimensions) {\n if (side === 'outside-top' || side === 'outside-bottom') {\n return (currentPos.top < containerDimensions.top ||\n currentPos.top + elementDimensions.height > containerDimensions.height + containerDimensions.top);\n }\n else {\n return (currentPos.left < containerDimensions.left ||\n currentPos.left + elementDimensions.width > containerDimensions.width + containerDimensions.left);\n }\n}\nfunction shouldRecalculateAlignment(align, currentPos, containerDimensions, elementDimensions) {\n if (align === 'end') {\n return currentPos.left < containerDimensions.left;\n }\n else if (align === 'start' || align === 'center') {\n return (currentPos.left + elementDimensions.width > containerDimensions.left + containerDimensions.width ||\n currentPos.left < containerDimensions.left);\n }\n}\n","export function* iterateFocusableElements(container, options = {}) {\n var _a, _b;\n const strict = (_a = options.strict) !== null && _a !== void 0 ? _a : false;\n const acceptFn = ((_b = options.onlyTabbable) !== null && _b !== void 0 ? _b : false) ? isTabbable : isFocusable;\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: node => node instanceof HTMLElement && acceptFn(node, strict) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP\n });\n let nextNode = null;\n if (!options.reverse && acceptFn(container, strict)) {\n yield container;\n }\n if (options.reverse) {\n let lastChild = walker.lastChild();\n while (lastChild) {\n nextNode = lastChild;\n lastChild = walker.lastChild();\n }\n }\n else {\n nextNode = walker.firstChild();\n }\n while (nextNode instanceof HTMLElement) {\n yield nextNode;\n nextNode = options.reverse ? walker.previousNode() : walker.nextNode();\n }\n if (options.reverse && acceptFn(container, strict)) {\n yield container;\n }\n return undefined;\n}\nexport function getFocusableChild(container, lastChild = false) {\n return iterateFocusableElements(container, { reverse: lastChild, strict: true, onlyTabbable: true }).next().value;\n}\nexport function isFocusable(elem, strict = false) {\n const disabledAttrInert = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA', 'OPTGROUP', 'OPTION', 'FIELDSET'].includes(elem.tagName) &&\n elem.disabled;\n const hiddenInert = elem.hidden;\n const hiddenInputInert = elem instanceof HTMLInputElement && elem.type === 'hidden';\n const sentinelInert = elem.classList.contains('sentinel');\n if (disabledAttrInert || hiddenInert || hiddenInputInert || sentinelInert) {\n return false;\n }\n if (strict) {\n const sizeInert = elem.offsetWidth === 0 || elem.offsetHeight === 0;\n const visibilityInert = ['hidden', 'collapse'].includes(getComputedStyle(elem).visibility);\n const clientRectsInert = elem.getClientRects().length === 0;\n if (sizeInert || visibilityInert || clientRectsInert) {\n return false;\n }\n }\n if (elem.getAttribute('tabindex') != null) {\n return true;\n }\n if (elem instanceof HTMLAnchorElement && elem.getAttribute('href') == null) {\n return false;\n }\n return elem.tabIndex !== -1;\n}\nexport function isTabbable(elem, strict = false) {\n return isFocusable(elem, strict) && elem.getAttribute('tabindex') !== '-1';\n}\n","let signalSupported = false;\nfunction noop() { }\ntry {\n const options = Object.create({}, {\n signal: {\n get() {\n signalSupported = true;\n }\n }\n });\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop, options);\n}\ncatch (e) {\n}\nfunction featureSupported() {\n return signalSupported;\n}\nfunction monkeyPatch() {\n if (typeof window === 'undefined') {\n return;\n }\n const originalAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function (name, originalCallback, optionsOrCapture) {\n if (typeof optionsOrCapture === 'object' &&\n 'signal' in optionsOrCapture &&\n optionsOrCapture.signal instanceof AbortSignal) {\n originalAddEventListener.call(optionsOrCapture.signal, 'abort', () => {\n this.removeEventListener(name, originalCallback, optionsOrCapture);\n });\n }\n return originalAddEventListener.call(this, name, originalCallback, optionsOrCapture);\n };\n}\nexport function polyfill() {\n if (!featureSupported()) {\n monkeyPatch();\n signalSupported = true;\n }\n}\n","import { getFocusableChild, isTabbable } from './utils/iterate-focusable-elements.js';\nimport { polyfill as eventListenerSignalPolyfill } from './polyfills/event-listener-signal.js';\neventListenerSignalPolyfill();\nconst suspendedTrapStack = [];\nlet activeTrap = undefined;\nfunction tryReactivate() {\n const trapToReactivate = suspendedTrapStack.pop();\n if (trapToReactivate) {\n focusTrap(trapToReactivate.container, trapToReactivate.initialFocus, trapToReactivate.originalSignal);\n }\n}\nfunction followSignal(signal) {\n const controller = new AbortController();\n signal.addEventListener('abort', () => {\n controller.abort();\n });\n return controller;\n}\nexport function focusTrap(container, initialFocus, abortSignal) {\n const controller = new AbortController();\n const signal = abortSignal !== null && abortSignal !== void 0 ? abortSignal : controller.signal;\n container.setAttribute('data-focus-trap', 'active');\n const sentinelStart = document.createElement('span');\n sentinelStart.setAttribute('class', 'sentinel');\n sentinelStart.setAttribute('tabindex', '0');\n sentinelStart.setAttribute('aria-hidden', 'true');\n sentinelStart.onfocus = () => {\n const lastFocusableChild = getFocusableChild(container, true);\n lastFocusableChild === null || lastFocusableChild === void 0 ? void 0 : lastFocusableChild.focus();\n };\n const sentinelEnd = document.createElement('span');\n sentinelEnd.setAttribute('class', 'sentinel');\n sentinelEnd.setAttribute('tabindex', '0');\n sentinelEnd.setAttribute('aria-hidden', 'true');\n sentinelEnd.onfocus = () => {\n const firstFocusableChild = getFocusableChild(container);\n firstFocusableChild === null || firstFocusableChild === void 0 ? void 0 : firstFocusableChild.focus();\n };\n container.prepend(sentinelStart);\n container.append(sentinelEnd);\n let lastFocusedChild = undefined;\n function ensureTrapZoneHasFocus(focusedElement) {\n if (focusedElement instanceof HTMLElement && document.contains(container)) {\n if (container.contains(focusedElement)) {\n lastFocusedChild = focusedElement;\n return;\n }\n else {\n if (lastFocusedChild && isTabbable(lastFocusedChild) && container.contains(lastFocusedChild)) {\n lastFocusedChild.focus();\n return;\n }\n else if (initialFocus && container.contains(initialFocus)) {\n initialFocus.focus();\n return;\n }\n else {\n const firstFocusableChild = getFocusableChild(container);\n firstFocusableChild === null || firstFocusableChild === void 0 ? void 0 : firstFocusableChild.focus();\n return;\n }\n }\n }\n }\n const wrappingController = followSignal(signal);\n if (activeTrap) {\n const suspendedTrap = activeTrap;\n activeTrap.container.setAttribute('data-focus-trap', 'suspended');\n activeTrap.controller.abort();\n suspendedTrapStack.push(suspendedTrap);\n }\n wrappingController.signal.addEventListener('abort', () => {\n activeTrap = undefined;\n });\n signal.addEventListener('abort', () => {\n container.removeAttribute('data-focus-trap');\n const sentinels = container.getElementsByClassName('sentinel');\n while (sentinels.length > 0)\n sentinels[0].remove();\n const suspendedTrapIndex = suspendedTrapStack.findIndex(t => t.container === container);\n if (suspendedTrapIndex >= 0) {\n suspendedTrapStack.splice(suspendedTrapIndex, 1);\n }\n tryReactivate();\n });\n document.addEventListener('focus', event => {\n ensureTrapZoneHasFocus(event.target);\n }, { signal: wrappingController.signal, capture: true });\n ensureTrapZoneHasFocus(document.activeElement);\n activeTrap = {\n container,\n controller: wrappingController,\n initialFocus,\n originalSignal: signal\n };\n const suspendedTrapIndex = suspendedTrapStack.findIndex(t => t.container === container);\n if (suspendedTrapIndex >= 0) {\n suspendedTrapStack.splice(suspendedTrapIndex, 1);\n }\n if (!abortSignal) {\n return controller;\n }\n}\n","import type {AnchorAlignment, AnchorSide, PositionSettings} from '@primer/behaviors'\nimport {getAnchoredPosition} from '@primer/behaviors'\n\nconst updateWhenVisible = (() => {\n const anchors = new Set()\n let intersectionObserver: IntersectionObserver | null = null\n let resizeObserver: ResizeObserver | null = null\n function updateVisibleAnchors() {\n for (const anchor of anchors) {\n anchor.update()\n }\n }\n return (el: AnchoredPositionElement) => {\n // eslint-disable-next-line github/prefer-observers\n window.addEventListener('resize', updateVisibleAnchors)\n intersectionObserver ||= new IntersectionObserver(entries => {\n for (const entry of entries) {\n const target = entry.target as AnchoredPositionElement\n if (entry.isIntersecting) {\n target.update()\n anchors.add(target)\n } else {\n anchors.delete(target)\n }\n }\n })\n resizeObserver ||= new ResizeObserver(() => {\n for (const anchor of anchors) {\n anchor.update()\n }\n })\n resizeObserver.observe(el.ownerDocument.documentElement)\n intersectionObserver.observe(el)\n }\n})()\n\nexport default class AnchoredPositionElement extends HTMLElement implements PositionSettings {\n get align(): AnchorAlignment {\n const value = this.getAttribute('align')\n if (value === 'center' || value === 'end') return value\n return 'start'\n }\n\n set align(value: AnchorAlignment) {\n this.setAttribute('align', `${value}`)\n }\n\n get side(): AnchorSide {\n const value = this.getAttribute('side')\n if (\n value === 'inside-top' ||\n value === 'inside-bottom' ||\n value === 'inside-left' ||\n value === 'inside-right' ||\n value === 'inside-center' ||\n value === 'outside-top' ||\n value === 'outside-left' ||\n value === 'outside-right'\n ) {\n return value\n }\n return 'outside-bottom'\n }\n\n set side(value: AnchorSide) {\n this.setAttribute('side', `${value}`)\n }\n\n get anchorOffset(): number {\n const alias = this.getAttribute('anchor-offset')\n if (alias === 'spacious' || alias === '8') return 8\n return 4\n }\n\n set anchorOffset(value: number | 'normal' | 'spacious') {\n this.setAttribute('anchor-offset', `${value}`)\n }\n\n get anchor() {\n return this.getAttribute('anchor') || ''\n }\n\n set anchor(value: string) {\n this.setAttribute('anchor', `${value}`)\n }\n\n #anchorElement: HTMLElement | null = null\n get anchorElement(): HTMLElement | null {\n if (this.#anchorElement) return this.#anchorElement\n const idRef = this.anchor\n if (!idRef) return null\n return this.ownerDocument.getElementById(idRef)\n }\n\n set anchorElement(value: HTMLElement | null) {\n this.#anchorElement = value\n if (!this.#anchorElement) {\n this.removeAttribute('anchor')\n }\n }\n\n get alignmentOffset(): number {\n return Number(this.getAttribute('alignment-offset'))\n }\n\n set alignmentOffset(value: number) {\n this.setAttribute('alignment-offset', `${value}`)\n }\n\n get allowOutOfBounds() {\n return this.hasAttribute('allow-out-of-bounds')\n }\n\n set allowOutOfBounds(value: boolean) {\n this.toggleAttribute('allow-out-of-bounds', value)\n }\n\n connectedCallback() {\n this.update()\n this.addEventListener('beforetoggle', () => this.update())\n updateWhenVisible(this)\n }\n\n static observedAttributes = ['align', 'side', 'anchor', 'alignment-offset', 'allow-out-of-bounds']\n attributeChangedCallback() {\n this.update()\n }\n\n #animationFrame: ReturnType\n update() {\n if (!this.isConnected) return\n cancelAnimationFrame(this.#animationFrame)\n\n this.#animationFrame = requestAnimationFrame(() => {\n const anchor = this.anchorElement\n if (!anchor) return\n const {left, top, anchorSide, anchorAlign} = getAnchoredPosition(this, anchor, this)\n this.style.top = `${top}px`\n this.style.left = `${left}px`\n this.classList.remove(\n 'Overlay--anchorAlign-start',\n 'Overlay--anchorAlign-center',\n 'Overlay--anchorAlign-end',\n 'Overlay--anchorSide-insideTop',\n 'Overlay--anchorSide-insideBottom',\n 'Overlay--anchorSide-insideLeft',\n 'Overlay--anchorSide-insideRight',\n 'Overlay--anchorSide-insideCenter',\n 'Overlay--anchorSide-outsideTop',\n 'Overlay--anchorSide-outsideLeft',\n 'Overlay--anchorSide-outsideRight'\n )\n this.classList.add(`Overlay--anchorAlign-${anchorAlign}`, `Overlay--anchorSide-${anchorSide}`)\n })\n }\n}\n\nif (!customElements.get('anchored-position')) {\n window.AnchoredPositionElement = AnchoredPositionElement\n customElements.define('anchored-position', AnchoredPositionElement)\n}\n\ndeclare global {\n interface Window {\n AnchoredPositionElement: typeof AnchoredPositionElement\n }\n}\n","import '@oddbird/popover-polyfill'\n\nconst menuItemSelector = '[role=\"menuitem\"],[role=\"menuitemcheckbox\"],[role=\"menuitemradio\"]'\n\nconst popoverSelector = (() => {\n try {\n document.querySelector(':open')\n return ':open'\n } catch {\n return '.\\\\:open'\n }\n})()\n\nconst getMnemonicFor = (item: Element) => item.textContent?.trim()[0].toLowerCase()\n\nconst printable = /^\\S$/\n\nexport default class FocusGroupElement extends HTMLElement {\n get nowrap(): boolean {\n return this.hasAttribute('nowrap')\n }\n\n set nowrap(value: boolean) {\n this.toggleAttribute('nowrap', value)\n }\n\n get direction(): 'horizontal' | 'vertical' | 'both' {\n if (this.getAttribute('direction') === 'horizontal') return 'horizontal'\n return 'vertical'\n }\n\n set direction(value: 'horizontal' | 'vertical' | 'both') {\n this.setAttribute('direction', `${value}`)\n }\n\n get retain() {\n return this.hasAttribute('retain')\n }\n\n set retain(value: boolean) {\n this.toggleAttribute('retain', value)\n }\n\n get mnemonics() {\n return this.hasAttribute('mnemonics')\n }\n\n #abortController: AbortController | null = null\n connectedCallback() {\n this.#abortController = new AbortController()\n const {signal} = this.#abortController\n\n this.addEventListener('keydown', this, {signal})\n this.addEventListener('click', this, {signal})\n this.addEventListener('mouseover', this, {signal})\n this.addEventListener('focusin', this, {signal})\n }\n\n disconnectedCallback() {\n this.#abortController?.abort()\n }\n\n get #items() {\n return this.querySelectorAll(menuItemSelector)\n }\n\n handleEvent(event: Event) {\n const {direction, nowrap} = this\n if (event.type === 'focusin') {\n if (this.retain && event.target instanceof Element && event.target.matches(menuItemSelector)) {\n for (const item of this.#items) {\n item.setAttribute('tabindex', item === event.target ? '0' : '-1')\n }\n }\n } else if (event instanceof KeyboardEvent) {\n const items = Array.from(this.#items)\n let index = items.indexOf(event.target as Element)\n const key = event.key\n if (key === 'Up' || key === 'ArrowUp') {\n if (direction === 'vertical' || direction === 'both') {\n index -= index < 0 ? 0 : 1\n }\n } else if (key === 'Down' || key === 'ArrowDown') {\n if (direction === 'vertical' || direction === 'both') {\n index += 1\n }\n } else if (event.key === 'Left' || event.key === 'ArrowLeft') {\n if (direction === 'horizontal' || direction === 'both') {\n index -= 1\n }\n } else if (event.key === 'Right' || event.key === 'ArrowRight') {\n if (direction === 'horizontal' || direction === 'both') {\n index += 1\n }\n } else if (event.key === 'Home' || event.key === 'PageUp') {\n index = 0\n } else if (event.key === 'End' || event.key === 'PageDown') {\n index = items.length - 1\n } else if (this.mnemonics && printable.test(key)) {\n const mnemonic = key.toLowerCase()\n const offset = index > 0 && getMnemonicFor(event.target as Element) === mnemonic ? index : 0\n index = items.findIndex((item, i) => i > offset && getMnemonicFor(item) === mnemonic)\n if (index < 0 && !nowrap) {\n index = items.findIndex(item => getMnemonicFor(item) === mnemonic)\n }\n } else {\n return\n }\n if (nowrap && index < 0) index = 0\n if (!nowrap && index >= items.length) index = 0\n const focusEl = items.at(Math.min(index, items.length - 1)) as HTMLElement\n {\n let el: HTMLElement | null = focusEl\n do {\n el = el.closest(`[popover]:not(${popoverSelector})`)\n if (el?.popover === 'auto') {\n el.showPopover()\n } else {\n el = el?.parentElement || null\n }\n } while (el)\n }\n focusEl?.focus()\n }\n }\n}\n\nif (!customElements.get('focus-group')) {\n window.FocusGroupElement = FocusGroupElement\n customElements.define('focus-group', FocusGroupElement)\n}\n\ndeclare global {\n interface Window {\n FocusGroupElement: typeof FocusGroupElement\n }\n}\n","const startPositions = new WeakMap();\nconst dragStartPositions = new WeakMap();\nconst constructedElements = new WeakMap();\nfunction moveCropArea(event) {\n const el = event.currentTarget;\n if (!(el instanceof ImageCropElement))\n return;\n const { box, image } = constructedElements.get(el) || {};\n if (!box || !image)\n return;\n let deltaX = 0;\n let deltaY = 0;\n if (event instanceof KeyboardEvent) {\n if (event.key === 'ArrowUp') {\n deltaY = -1;\n }\n else if (event.key === 'ArrowDown') {\n deltaY = 1;\n }\n else if (event.key === 'ArrowLeft') {\n deltaX = -1;\n }\n else if (event.key === 'ArrowRight') {\n deltaX = 1;\n }\n }\n else if (dragStartPositions.has(el) && event instanceof MouseEvent) {\n const pos = dragStartPositions.get(el);\n deltaX = event.pageX - pos.dragStartX;\n deltaY = event.pageY - pos.dragStartY;\n }\n else if (dragStartPositions.has(el) && event instanceof TouchEvent) {\n const { pageX, pageY } = event.changedTouches[0];\n const { dragStartX, dragStartY } = dragStartPositions.get(el);\n deltaX = pageX - dragStartX;\n deltaY = pageY - dragStartY;\n }\n if (deltaX !== 0 || deltaY !== 0) {\n const x = Math.min(Math.max(0, box.offsetLeft + deltaX), image.width - box.offsetWidth);\n const y = Math.min(Math.max(0, box.offsetTop + deltaY), image.height - box.offsetHeight);\n box.style.left = `${x}px`;\n box.style.top = `${y}px`;\n fireChangeEvent(el, { x, y, width: box.offsetWidth, height: box.offsetHeight });\n }\n if (event instanceof MouseEvent) {\n dragStartPositions.set(el, {\n dragStartX: event.pageX,\n dragStartY: event.pageY\n });\n }\n else if (event instanceof TouchEvent) {\n const { pageX, pageY } = event.changedTouches[0];\n dragStartPositions.set(el, {\n dragStartX: pageX,\n dragStartY: pageY\n });\n }\n}\nfunction updateCropArea(event) {\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n const el = getShadowHost(target);\n if (!(el instanceof ImageCropElement))\n return;\n const { box } = constructedElements.get(el) || {};\n if (!box)\n return;\n const rect = el.getBoundingClientRect();\n let deltaX, deltaY, delta;\n if (event instanceof KeyboardEvent) {\n if (event.key === 'Escape')\n return setInitialPosition(el);\n if (event.key === '-')\n delta = -10;\n if (event.key === '=')\n delta = +10;\n if (!delta)\n return;\n deltaX = box.offsetWidth + delta;\n deltaY = box.offsetHeight + delta;\n startPositions.set(el, { startX: box.offsetLeft, startY: box.offsetTop });\n }\n else if (event instanceof MouseEvent) {\n const pos = startPositions.get(el);\n if (!pos)\n return;\n deltaX = event.pageX - pos.startX - rect.left - window.pageXOffset;\n deltaY = event.pageY - pos.startY - rect.top - window.pageYOffset;\n }\n else if (event instanceof TouchEvent) {\n const pos = startPositions.get(el);\n if (!pos)\n return;\n deltaX = event.changedTouches[0].pageX - pos.startX - rect.left - window.pageXOffset;\n deltaY = event.changedTouches[0].pageY - pos.startY - rect.top - window.pageYOffset;\n }\n if (deltaX && deltaY)\n updateDimensions(el, deltaX, deltaY, !(event instanceof KeyboardEvent));\n}\nfunction getShadowHost(el) {\n const rootNode = el.getRootNode();\n if (!(rootNode instanceof ShadowRoot))\n return el;\n return rootNode.host;\n}\nfunction startUpdate(event) {\n const currentTarget = event.currentTarget;\n if (!(currentTarget instanceof HTMLElement))\n return;\n const el = getShadowHost(currentTarget);\n if (!(el instanceof ImageCropElement))\n return;\n const { box } = constructedElements.get(el) || {};\n if (!box)\n return;\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n if (target.hasAttribute('data-direction')) {\n const direction = target.getAttribute('data-direction') || '';\n el.addEventListener('mousemove', updateCropArea);\n el.addEventListener('touchmove', updateCropArea, { passive: true });\n if (['nw', 'se'].indexOf(direction) >= 0)\n el.classList.add('nwse');\n if (['ne', 'sw'].indexOf(direction) >= 0)\n el.classList.add('nesw');\n startPositions.set(el, {\n startX: box.offsetLeft + (['se', 'ne'].indexOf(direction) >= 0 ? 0 : box.offsetWidth),\n startY: box.offsetTop + (['se', 'sw'].indexOf(direction) >= 0 ? 0 : box.offsetHeight)\n });\n updateCropArea(event);\n }\n else {\n el.addEventListener('mousemove', moveCropArea);\n el.addEventListener('touchmove', moveCropArea, { passive: true });\n }\n}\nfunction updateDimensions(target, deltaX, deltaY, reposition = true) {\n let newSide = Math.max(Math.abs(deltaX), Math.abs(deltaY), 10);\n const pos = startPositions.get(target);\n if (!pos)\n return;\n const { box, image } = constructedElements.get(target) || {};\n if (!box || !image)\n return;\n newSide = Math.min(newSide, deltaY > 0 ? image.height - pos.startY : pos.startY, deltaX > 0 ? image.width - pos.startX : pos.startX);\n const x = reposition ? Math.round(Math.max(0, deltaX > 0 ? pos.startX : pos.startX - newSide)) : box.offsetLeft;\n const y = reposition ? Math.round(Math.max(0, deltaY > 0 ? pos.startY : pos.startY - newSide)) : box.offsetTop;\n box.style.left = `${x}px`;\n box.style.top = `${y}px`;\n box.style.width = `${newSide}px`;\n box.style.height = `${newSide}px`;\n fireChangeEvent(target, { x, y, width: newSide, height: newSide });\n}\nfunction setInitialPosition(el) {\n const { image } = constructedElements.get(el) || {};\n if (!image)\n return;\n const side = Math.round(image.clientWidth > image.clientHeight ? image.clientHeight : image.clientWidth);\n startPositions.set(el, {\n startX: (image.clientWidth - side) / 2,\n startY: (image.clientHeight - side) / 2\n });\n updateDimensions(el, side, side);\n}\nfunction stopUpdate(event) {\n const el = event.currentTarget;\n if (!(el instanceof ImageCropElement))\n return;\n dragStartPositions.delete(el);\n el.classList.remove('nwse', 'nesw');\n el.removeEventListener('mousemove', updateCropArea);\n el.removeEventListener('mousemove', moveCropArea);\n el.removeEventListener('touchmove', updateCropArea);\n el.removeEventListener('touchmove', moveCropArea);\n}\nfunction fireChangeEvent(target, result) {\n const { image } = constructedElements.get(target) || {};\n if (!image)\n return;\n const ratio = image.naturalWidth / image.width;\n for (const key in result) {\n const value = Math.round(result[key] * ratio);\n result[key] = value;\n const slottedInput = target.querySelector(`[data-image-crop-input='${key}']`);\n if (slottedInput instanceof HTMLInputElement)\n slottedInput.value = value.toString();\n }\n target.dispatchEvent(new CustomEvent('image-crop-change', { bubbles: true, detail: result }));\n}\nclass ImageCropElement extends HTMLElement {\n connectedCallback() {\n if (constructedElements.has(this))\n return;\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.innerHTML = `\n\n\n
\n \"\"\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n`;\n const box = shadowRoot.querySelector('[data-crop-box]');\n if (!(box instanceof HTMLElement))\n return;\n const image = shadowRoot.querySelector('img');\n if (!(image instanceof HTMLImageElement))\n return;\n constructedElements.set(this, { box, image });\n image.addEventListener('load', () => {\n this.loaded = true;\n setInitialPosition(this);\n });\n this.addEventListener('mouseleave', stopUpdate);\n this.addEventListener('touchend', stopUpdate);\n this.addEventListener('mouseup', stopUpdate);\n box.addEventListener('mousedown', startUpdate);\n box.addEventListener('touchstart', startUpdate, { passive: true });\n this.addEventListener('keydown', moveCropArea);\n this.addEventListener('keydown', updateCropArea);\n if (this.src)\n image.src = this.src;\n }\n static get observedAttributes() {\n return ['src'];\n }\n get src() {\n return this.getAttribute('src');\n }\n set src(val) {\n if (val) {\n this.setAttribute('src', val);\n }\n else {\n this.removeAttribute('src');\n }\n }\n get loaded() {\n return this.hasAttribute('loaded');\n }\n set loaded(val) {\n if (val) {\n this.setAttribute('loaded', '');\n }\n else {\n this.removeAttribute('loaded');\n }\n }\n attributeChangedCallback(attribute, oldValue, newValue) {\n const { image } = constructedElements.get(this) || {};\n if (attribute === 'src') {\n this.loaded = false;\n if (image)\n image.src = newValue;\n }\n }\n}\nexport default ImageCropElement;\nif (!window.customElements.get('image-crop')) {\n window.ImageCropElement = ImageCropElement;\n window.customElements.define('image-crop', ImageCropElement);\n}\n","import {focusTrap} from '@primer/behaviors'\nimport {getFocusableChild} from '@primer/behaviors/utils'\n\nfunction focusIfNeeded(elem: HTMLElement | undefined | null) {\n if (document.activeElement !== elem) {\n elem?.focus()\n }\n}\n\nconst overlayStack: ModalDialogElement[] = []\n\nfunction clickHandler(event: Event) {\n const target = event.target as HTMLElement\n const button = target?.closest('button')\n\n if (!button) return\n\n // If the user is clicking a valid dialog trigger\n let dialogId = button?.getAttribute('data-show-dialog-id')\n if (dialogId) {\n event.stopPropagation()\n const dialog = document.getElementById(dialogId)\n if (dialog instanceof ModalDialogElement) {\n dialog.openButton = button\n dialog.show()\n return\n }\n }\n // Find the top level dialog that is open.\n const topLevelDialog = overlayStack[overlayStack.length - 1]\n if (!topLevelDialog) return\n\n dialogId = button.getAttribute('data-close-dialog-id')\n if (dialogId === topLevelDialog.id) {\n overlayStack.pop()\n topLevelDialog.close()\n }\n\n dialogId = button.getAttribute('data-submit-dialog-id')\n if (dialogId === topLevelDialog.id) {\n overlayStack.pop()\n topLevelDialog.close(true)\n }\n}\n\nfunction keydownHandler(event: Event) {\n if (\n !(event instanceof KeyboardEvent) ||\n event.type !== 'keydown' ||\n event.key !== 'Enter' ||\n event.ctrlKey ||\n event.altKey ||\n event.metaKey ||\n event.shiftKey\n )\n return\n\n clickHandler(event)\n}\n\nfunction mousedownHandler(event: Event) {\n const target = event.target as HTMLElement\n if (target?.closest('button')) return\n\n // Find the top level dialog that is open.\n const topLevelDialog = overlayStack[overlayStack.length - 1]\n if (!topLevelDialog) return\n\n // Check if the mousedown happened outside the boundary of the top level dialog\n const mouseDownOutsideDialog = !target.closest(`#${topLevelDialog.getAttribute('id')}`)\n\n // Only close dialog if it's a click outside the dialog and the dialog has a button?\n if (mouseDownOutsideDialog) {\n target.ownerDocument.addEventListener(\n 'mouseup',\n (upEvent: Event) => {\n if (upEvent.target === target) {\n overlayStack.pop()\n topLevelDialog.close()\n }\n },\n {once: true}\n )\n }\n}\n\nexport class ModalDialogElement extends HTMLElement {\n //TODO: Do we remove the abortController from focusTrap?\n #focusAbortController = new AbortController()\n openButton: HTMLButtonElement | null\n\n get open() {\n return this.hasAttribute('open')\n }\n set open(value: boolean) {\n if (value) {\n if (this.open) return\n this.setAttribute('open', '')\n this.#overlayBackdrop?.classList.remove('Overlay--hidden')\n document.body.style.paddingRight = `${window.innerWidth - document.body.clientWidth}px`\n document.body.style.overflow = 'hidden'\n if (this.#focusAbortController.signal.aborted) {\n this.#focusAbortController = new AbortController()\n }\n focusTrap(this, undefined, this.#focusAbortController.signal)\n overlayStack.push(this)\n } else {\n if (!this.open) return\n this.removeAttribute('open')\n this.#overlayBackdrop?.classList.add('Overlay--hidden')\n document.body.style.paddingRight = '0'\n document.body.style.overflow = 'initial'\n this.#focusAbortController.abort()\n // if #openButton is a child of a menu, we need to focus a suitable child of the menu\n // element since it is expected for the menu to close on click\n const menu = this.openButton?.closest('details') || this.openButton?.closest('action-menu')\n if (menu) {\n focusIfNeeded(getFocusableChild(menu))\n } else {\n focusIfNeeded(this.openButton)\n }\n this.openButton = null\n }\n }\n\n get #overlayBackdrop(): HTMLElement | null {\n if (this.parentElement?.hasAttribute('data-modal-dialog-overlay')) {\n return this.parentElement\n }\n\n return null\n }\n\n get showButtons(): NodeList {\n // Dialogs may also be opened from any arbitrary button with a matching show-dialog-id data attribute\n return document.querySelectorAll(`button[data-show-dialog-id='${this.id}']`)\n }\n\n connectedCallback(): void {\n if (!this.hasAttribute('role')) this.setAttribute('role', 'dialog')\n\n document.addEventListener('click', clickHandler)\n document.addEventListener('keydown', keydownHandler)\n document.addEventListener('mousedown', mousedownHandler)\n\n this.addEventListener('keydown', e => this.#keydown(e))\n }\n\n show() {\n this.open = true\n }\n\n close(closedNotCancelled = false) {\n if (this.open === false) return\n const eventType = closedNotCancelled ? 'close' : 'cancel'\n const dialogEvent = new Event(eventType)\n this.dispatchEvent(dialogEvent)\n this.open = false\n }\n\n #keydown(event: Event) {\n if (!(event instanceof KeyboardEvent)) return\n if (event.isComposing) return\n\n switch (event.key) {\n case 'Escape':\n if (this.open) {\n this.close()\n event.preventDefault()\n event.stopPropagation()\n }\n break\n }\n }\n}\n\ndeclare global {\n interface Window {\n ModalDialogElement: typeof ModalDialogElement\n }\n interface HTMLElementTagNameMap {\n 'modal-dialog': ModalDialogElement\n }\n}\n\nif (!window.customElements.get('modal-dialog')) {\n window.ModalDialogElement = ModalDialogElement\n window.customElements.define('modal-dialog', ModalDialogElement)\n}\n","const controllers = new WeakSet();\n/*\n * Bind `[data-action]` elements from the DOM to their actions.\n *\n */\nexport function bind(controller) {\n controllers.add(controller);\n if (controller.shadowRoot)\n bindShadow(controller.shadowRoot);\n bindElements(controller);\n listenForBind(controller.ownerDocument);\n}\nexport function bindShadow(root) {\n bindElements(root);\n listenForBind(root);\n}\nconst observers = new WeakMap();\n/**\n * Set up observer that will make sure any actions that are dynamically\n * injected into `el` will be bound to it's controller.\n *\n * This returns a Subscription object which you can call `unsubscribe()` on to\n * stop further live updates.\n */\nexport function listenForBind(el = document) {\n if (observers.has(el))\n return observers.get(el);\n let closed = false;\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.target instanceof Element) {\n bindActions(mutation.target);\n }\n else if (mutation.type === 'childList' && mutation.addedNodes.length) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element) {\n bindElements(node);\n }\n }\n }\n }\n });\n observer.observe(el, { childList: true, subtree: true, attributeFilter: ['data-action'] });\n const subscription = {\n get closed() {\n return closed;\n },\n unsubscribe() {\n closed = true;\n observers.delete(el);\n observer.disconnect();\n }\n };\n observers.set(el, subscription);\n return subscription;\n}\nfunction bindElements(root) {\n for (const el of root.querySelectorAll('[data-action]')) {\n bindActions(el);\n }\n // Also bind the controller to itself\n if (root instanceof Element && root.hasAttribute('data-action')) {\n bindActions(root);\n }\n}\n// Bind a single function to all events to avoid anonymous closure performance penalty.\nfunction handleEvent(event) {\n const el = event.currentTarget;\n for (const binding of bindings(el)) {\n if (event.type === binding.type) {\n const controller = el.closest(binding.tag);\n if (controllers.has(controller) && typeof controller[binding.method] === 'function') {\n controller[binding.method](event);\n }\n const root = el.getRootNode();\n if (root instanceof ShadowRoot && controllers.has(root.host) && root.host.matches(binding.tag)) {\n const shadowController = root.host;\n if (typeof shadowController[binding.method] === 'function') {\n shadowController[binding.method](event);\n }\n }\n }\n }\n}\nfunction* bindings(el) {\n for (const action of (el.getAttribute('data-action') || '').trim().split(/\\s+/)) {\n const eventSep = action.lastIndexOf(':');\n const methodSep = Math.max(0, action.lastIndexOf('#')) || action.length;\n yield {\n type: action.slice(0, eventSep),\n tag: action.slice(eventSep + 1, methodSep),\n method: action.slice(methodSep + 1) || 'handleEvent'\n } || 'handleEvent';\n }\n}\nfunction bindActions(el) {\n for (const binding of bindings(el)) {\n el.addEventListener(binding.type, handleEvent);\n }\n}\n//# sourceMappingURL=bind.js.map","export const dasherize = (str) => String(typeof str === 'symbol' ? str.description : str)\n .replace(/([A-Z]($|[a-z]))/g, '-$1')\n .replace(/--/g, '-')\n .replace(/^-|-$/, '')\n .toLowerCase();\nexport const mustDasherize = (str, type = 'property') => {\n const dashed = dasherize(str);\n if (!dashed.includes('-')) {\n throw new DOMException(`${type}: ${String(str)} is not a valid ${type} name`, 'SyntaxError');\n }\n return dashed;\n};\n//# sourceMappingURL=dasherize.js.map","import { mustDasherize } from './dasherize.js';\nimport { meta } from './core.js';\nconst attrKey = 'attr';\n/**\n * Attr is a decorator which tags a property as one to be initialized via\n * `initializeAttrs`.\n *\n * The signature is typed such that the property must be one of a String,\n * Number or Boolean. This matches the behavior of `initializeAttrs`.\n */\nexport function attr(proto, key) {\n meta(proto, attrKey).add(key);\n}\n/**\n * initializeAttrs is called with a set of class property names (if omitted, it\n * will look for any properties tagged with the `@attr` decorator). With this\n * list it defines property descriptors for each property that map to `data-*`\n * attributes on the HTMLElement instance.\n *\n * It works around Native Class Property semantics - which are equivalent to\n * calling `Object.defineProperty` on the instance upon creation, but before\n * `constructor()` is called.\n *\n * If a class property is assigned to the class body, it will infer the type\n * (using `typeof`) and define an appropriate getter/setter combo that aligns\n * to that type. This means class properties assigned to Numbers can only ever\n * be Numbers, assigned to Booleans can only ever be Booleans, and assigned to\n * Strings can only ever be Strings.\n *\n * This is automatically called as part of `@controller`. If a class uses the\n * `@controller` decorator it should not call this manually.\n */\nconst initialized = new WeakSet();\nexport function initializeAttrs(instance, names) {\n if (initialized.has(instance))\n return;\n initialized.add(instance);\n const proto = Object.getPrototypeOf(instance);\n const prefix = proto?.constructor?.attrPrefix ?? 'data-';\n if (!names)\n names = meta(proto, attrKey);\n for (const key of names) {\n const value = instance[key];\n const name = mustDasherize(`${prefix}${key}`);\n let descriptor = {\n configurable: true,\n get() {\n return this.getAttribute(name) || '';\n },\n set(newValue) {\n this.setAttribute(name, newValue || '');\n }\n };\n if (typeof value === 'number') {\n descriptor = {\n configurable: true,\n get() {\n return Number(this.getAttribute(name) || 0);\n },\n set(newValue) {\n this.setAttribute(name, newValue);\n }\n };\n }\n else if (typeof value === 'boolean') {\n descriptor = {\n configurable: true,\n get() {\n return this.hasAttribute(name);\n },\n set(newValue) {\n this.toggleAttribute(name, newValue);\n }\n };\n }\n Object.defineProperty(instance, key, descriptor);\n if (key in instance && !instance.hasAttribute(name)) {\n descriptor.set.call(instance, value);\n }\n }\n}\nexport function defineObservedAttributes(classObject) {\n let observed = classObject.observedAttributes || [];\n const prefix = classObject.attrPrefix ?? 'data-';\n const attrToAttributeName = (name) => mustDasherize(`${prefix}${name}`);\n Object.defineProperty(classObject, 'observedAttributes', {\n configurable: true,\n get() {\n return [...meta(classObject.prototype, attrKey)].map(attrToAttributeName).concat(observed);\n },\n set(attributes) {\n observed = attributes;\n }\n });\n}\n//# sourceMappingURL=attr.js.map","import { register } from './register.js';\nimport { bind, bindShadow } from './bind.js';\nimport { autoShadowRoot } from './auto-shadow-root.js';\nimport { defineObservedAttributes, initializeAttrs } from './attr.js';\nconst symbol = Symbol.for('catalyst');\nexport class CatalystDelegate {\n constructor(classObject) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const delegate = this;\n const connectedCallback = classObject.prototype.connectedCallback;\n classObject.prototype.connectedCallback = function () {\n delegate.connectedCallback(this, connectedCallback);\n };\n const disconnectedCallback = classObject.prototype.disconnectedCallback;\n classObject.prototype.disconnectedCallback = function () {\n delegate.disconnectedCallback(this, disconnectedCallback);\n };\n const attributeChangedCallback = classObject.prototype.attributeChangedCallback;\n classObject.prototype.attributeChangedCallback = function (name, oldValue, newValue) {\n delegate.attributeChangedCallback(this, name, oldValue, newValue, attributeChangedCallback);\n };\n let observedAttributes = classObject.observedAttributes || [];\n Object.defineProperty(classObject, 'observedAttributes', {\n configurable: true,\n get() {\n return delegate.observedAttributes(this, observedAttributes);\n },\n set(attributes) {\n observedAttributes = attributes;\n }\n });\n defineObservedAttributes(classObject);\n register(classObject);\n }\n observedAttributes(instance, observedAttributes) {\n return observedAttributes;\n }\n connectedCallback(instance, connectedCallback) {\n instance.toggleAttribute('data-catalyst', true);\n customElements.upgrade(instance);\n autoShadowRoot(instance);\n initializeAttrs(instance);\n bind(instance);\n connectedCallback?.call(instance);\n if (instance.shadowRoot)\n bindShadow(instance.shadowRoot);\n }\n disconnectedCallback(element, disconnectedCallback) {\n disconnectedCallback?.call(element);\n }\n attributeChangedCallback(instance, name, oldValue, newValue, attributeChangedCallback) {\n initializeAttrs(instance);\n if (name !== 'data-catalyst' && attributeChangedCallback) {\n attributeChangedCallback.call(instance, name, oldValue, newValue);\n }\n }\n}\nexport function meta(proto, name) {\n if (!Object.prototype.hasOwnProperty.call(proto, symbol)) {\n const parent = proto[symbol];\n const map = (proto[symbol] = new Map());\n if (parent) {\n for (const [key, value] of parent) {\n map.set(key, new Set(value));\n }\n }\n }\n const map = proto[symbol];\n if (!map.has(name))\n map.set(name, new Set());\n return map.get(name);\n}\n//# sourceMappingURL=core.js.map","import { dasherize } from './dasherize.js';\n/**\n * Register the controller as a custom element.\n *\n * The classname is converted to a approriate tag name.\n *\n * Example: HelloController => hello-controller\n */\nexport function register(classObject) {\n const name = dasherize(classObject.name).replace(/-element$/, '');\n try {\n window.customElements.define(name, classObject);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window[classObject.name] = customElements.get(name);\n }\n catch (e) {\n // The only reason for window.customElements.define to throw a `NotSupportedError`\n // is if the element has already been defined.\n if (!(e instanceof DOMException && e.name === 'NotSupportedError'))\n throw e;\n }\n return classObject;\n}\n//# sourceMappingURL=register.js.map","export function autoShadowRoot(element) {\n for (const template of element.querySelectorAll('template[data-shadowroot]')) {\n if (template.parentElement === element) {\n element\n .attachShadow({\n mode: template.getAttribute('data-shadowroot') === 'closed' ? 'closed' : 'open'\n })\n .append(template.content.cloneNode(true));\n }\n }\n}\n//# sourceMappingURL=auto-shadow-root.js.map","import { findTarget, findTargets } from './findtarget.js';\nimport { meta } from './core.js';\n/**\n * Target is a decorator which - when assigned to a property field on the\n * class - will override that class field, turning it into a Getter which\n * returns a call to `findTarget(this, key)` where `key` is the name of the\n * property field. In other words, `@target foo` becomes a getter for\n * `findTarget(this, 'foo')`.\n */\nexport function target(proto, key) {\n meta(proto, 'target').add(key);\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n return findTarget(this, key);\n }\n });\n}\n/**\n * Targets is a decorator which - when assigned to a property field on the\n * class - will override that class field, turning it into a Getter which\n * returns a call to `findTargets(this, key)` where `key` is the name of the\n * property field. In other words, `@targets foo` becomes a getter for\n * `findTargets(this, 'foo')`.\n */\nexport function targets(proto, key) {\n meta(proto, 'targets').add(key);\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n return findTargets(this, key);\n }\n });\n}\n//# sourceMappingURL=target.js.map","/**\n * findTarget will run `querySelectorAll` against the given controller, plus\n * its shadowRoot, returning any the first child that:\n *\n * - Matches the selector of `[data-target~=\"tag.name\"]` where tag is the\n * tagName of the given HTMLElement, and `name` is the given `name` argument.\n *\n * - Closest ascendant of the element, that matches the tagname of the\n * controller, is the specific instance of the controller itself - in other\n * words it is not nested in other controllers of the same type.\n *\n */\nexport function findTarget(controller, name) {\n const tag = controller.tagName.toLowerCase();\n if (controller.shadowRoot) {\n for (const el of controller.shadowRoot.querySelectorAll(`[data-target~=\"${tag}.${name}\"]`)) {\n if (!el.closest(tag))\n return el;\n }\n }\n for (const el of controller.querySelectorAll(`[data-target~=\"${tag}.${name}\"]`)) {\n if (el.closest(tag) === controller)\n return el;\n }\n}\nexport function findTargets(controller, name) {\n const tag = controller.tagName.toLowerCase();\n const targets = [];\n if (controller.shadowRoot) {\n for (const el of controller.shadowRoot.querySelectorAll(`[data-targets~=\"${tag}.${name}\"]`)) {\n if (!el.closest(tag))\n targets.push(el);\n }\n }\n for (const el of controller.querySelectorAll(`[data-targets~=\"${tag}.${name}\"]`)) {\n if (el.closest(tag) === controller)\n targets.push(el);\n }\n return targets;\n}\n//# sourceMappingURL=findtarget.js.map","import { CatalystDelegate } from './core.js';\n/**\n * Controller is a decorator to be used over a class that extends HTMLElement.\n * It will automatically `register()` the component in the customElement\n * registry, as well as ensuring `bind(this)` is called on `connectedCallback`,\n * wrapping the classes `connectedCallback` method if needed.\n */\nexport function controller(classObject) {\n new CatalystDelegate(classObject);\n}\n//# sourceMappingURL=controller.js.map","const dynamicElements = new Map();\nconst ready = new Promise(resolve => {\n if (document.readyState !== 'loading') {\n resolve();\n }\n else {\n document.addEventListener('readystatechange', () => resolve(), { once: true });\n }\n});\nconst firstInteraction = new Promise(resolve => {\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => resolve());\n const listenerOptions = { once: true, passive: true, signal: controller.signal };\n const handler = () => controller.abort();\n document.addEventListener('mousedown', handler, listenerOptions);\n // eslint-disable-next-line github/require-passive-events\n document.addEventListener('touchstart', handler, listenerOptions);\n document.addEventListener('keydown', handler, listenerOptions);\n document.addEventListener('pointerdown', handler, listenerOptions);\n});\nconst visible = (tagName) => new Promise(resolve => {\n const observer = new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n resolve();\n observer.disconnect();\n return;\n }\n }\n }, {\n // Currently the threshold is set to 256px from the bottom of the viewport\n // with a threshold of 0.1. This means the element will not load until about\n // 2 keyboard-down-arrow presses away from being visible in the viewport,\n // giving us some time to fetch it before the contents are made visible\n rootMargin: '0px 0px 256px 0px',\n threshold: 0.01\n });\n for (const el of document.querySelectorAll(tagName)) {\n observer.observe(el);\n }\n});\nconst strategies = {\n ready: () => ready,\n firstInteraction: () => firstInteraction,\n visible\n};\nconst timers = new WeakMap();\nfunction scan(node) {\n cancelAnimationFrame(timers.get(node) || 0);\n timers.set(node, requestAnimationFrame(() => {\n for (const tagName of dynamicElements.keys()) {\n const child = node.matches(tagName) ? node : node.querySelector(tagName);\n if (customElements.get(tagName) || child) {\n const strategyName = (child?.getAttribute('data-load-on') || 'ready');\n const strategy = strategyName in strategies ? strategies[strategyName] : strategies.ready;\n // eslint-disable-next-line github/no-then\n for (const cb of dynamicElements.get(tagName) || [])\n strategy(tagName).then(cb);\n dynamicElements.delete(tagName);\n timers.delete(node);\n }\n }\n }));\n}\nlet elementLoader;\nexport function lazyDefine(tagName, callback) {\n if (!dynamicElements.has(tagName))\n dynamicElements.set(tagName, new Set());\n dynamicElements.get(tagName).add(callback);\n scan(document.body);\n if (!elementLoader) {\n elementLoader = new MutationObserver(mutations => {\n if (!dynamicElements.size)\n return;\n for (const mutation of mutations) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element)\n scan(node);\n }\n }\n });\n elementLoader.observe(document, { subtree: true, childList: true });\n }\n}\n//# sourceMappingURL=lazy-define.js.map","/* eslint-disable custom-elements/expose-class-on-global */\nimport {controller, target, targets} from '@github/catalyst'\n\n@controller\nexport class NavListElement extends HTMLElement {\n @targets items: HTMLElement[]\n @target showMoreItem: HTMLElement\n @targets focusMarkers: HTMLElement[]\n\n connectedCallback(): void {\n this.setShowMoreItemState()\n }\n\n get showMoreDisabled(): boolean {\n return this.showMoreItem.hasAttribute('aria-disabled')\n }\n\n set showMoreDisabled(value: boolean) {\n if (value) {\n this.showMoreItem.setAttribute('aria-disabled', 'true')\n } else {\n this.showMoreItem.removeAttribute('aria-disabled')\n }\n this.showMoreItem.classList.toggle('disabled', value)\n }\n\n set currentPage(value: number) {\n this.showMoreItem.setAttribute('data-current-page', value.toString())\n }\n\n get currentPage(): number {\n return parseInt(this.showMoreItem.getAttribute('data-current-page') as string) || 1\n }\n\n get totalPages(): number {\n return parseInt(this.showMoreItem.getAttribute('data-total-pages') as string) || 1\n }\n\n get paginationSrc(): string {\n return this.showMoreItem.getAttribute('src') || ''\n }\n\n selectItemById(itemId: string | null): boolean {\n if (!itemId) return false\n\n const selectedItem = this.#findSelectedNavItemById(itemId)\n\n if (selectedItem) {\n this.#select(selectedItem)\n return true\n }\n\n return false\n }\n\n selectItemByHref(href: string | null): boolean {\n if (!href) return false\n\n const selectedItem = this.#findSelectedNavItemByHref(href)\n\n if (selectedItem) {\n this.#select(selectedItem)\n return true\n }\n\n return false\n }\n\n selectItemByCurrentLocation(): boolean {\n const selectedItem = this.#findSelectedNavItemByCurrentLocation()\n\n if (selectedItem) {\n this.#select(selectedItem)\n return true\n }\n\n return false\n }\n\n // expand collapsible item onClick\n expandItem(item: HTMLElement) {\n item.nextElementSibling?.removeAttribute('data-hidden')\n item.setAttribute('aria-expanded', 'true')\n }\n\n collapseItem(item: HTMLElement) {\n item.nextElementSibling?.setAttribute('data-hidden', '')\n item.setAttribute('aria-expanded', 'false')\n item.focus()\n }\n\n itemIsExpanded(item: HTMLElement | null) {\n if (item?.tagName === 'A') {\n return true\n }\n return item?.getAttribute('aria-expanded') === 'true'\n }\n\n // expand/collapse item\n handleItemWithSubItemClick(e: Event) {\n const el = e.target\n if (!(el instanceof HTMLElement)) return\n\n const button = el.closest('button')\n if (!button) return\n if (this.itemIsExpanded(button)) {\n this.collapseItem(button)\n } else {\n this.expandItem(button)\n }\n\n e.stopPropagation()\n }\n\n // collapse item\n handleItemWithSubItemKeydown(e: KeyboardEvent) {\n const el = e.currentTarget\n if (!(el instanceof HTMLElement)) return\n\n let button = el.closest('button')\n if (!button) {\n const button_id = el.getAttribute('aria-labelledby')\n if (button_id) {\n button = document.getElementById(button_id) as HTMLButtonElement\n } else {\n return\n }\n }\n\n if (this.itemIsExpanded(button) && e.key === 'Escape') {\n this.collapseItem(button)\n }\n\n e.stopPropagation()\n }\n\n private async showMore(e: Event) {\n e.preventDefault()\n if (this.showMoreDisabled) return\n this.showMoreDisabled = true\n let html\n try {\n const paginationURL = new URL(this.paginationSrc, window.location.origin)\n this.currentPage++\n paginationURL.searchParams.append('page', this.currentPage.toString())\n const response = await fetch(paginationURL)\n if (!response.ok) return\n html = await response.text()\n if (this.currentPage === this.totalPages) {\n this.showMoreItem.hidden = true\n }\n } catch (err) {\n // Ignore network errors\n this.showMoreDisabled = false\n this.currentPage--\n return\n }\n const fragment = this.#parseHTML(document, html)\n fragment?.querySelector('li > a')?.setAttribute('data-targets', 'nav-list.focusMarkers')\n const listId = (e.target as HTMLElement).closest('button')!.getAttribute('data-list-id')!\n const list = document.getElementById(listId)!\n list.append(fragment)\n this.focusMarkers.pop()?.focus()\n this.showMoreDisabled = false\n }\n\n private setShowMoreItemState() {\n if (!this.showMoreItem) {\n return\n }\n\n if (this.currentPage < this.totalPages) {\n this.showMoreItem.hidden = false\n } else {\n this.showMoreItem.hidden = true\n }\n }\n\n #parseHTML(document: Document, html: string): DocumentFragment {\n const template = document.createElement('template')\n // eslint-disable-next-line github/no-inner-html\n template.innerHTML = html\n return document.importNode(template.content, true)\n }\n\n #findSelectedNavItemById(itemId: string): HTMLElement | null {\n // First we compare the selected link to data-item-id for each nav item\n for (const navItem of this.items) {\n if (navItem.classList.contains('ActionListItem--hasSubItem')) {\n continue\n }\n\n const keys = navItem.getAttribute('data-item-id')?.split(' ') || []\n\n if (keys.includes(itemId)) {\n return navItem\n }\n }\n\n return null\n }\n\n #findSelectedNavItemByHref(href: string): HTMLElement | null {\n // If we didn't find a match, we compare the selected link to the href of each nav item\n const selectedNavItem = this.querySelector(`.ActionListContent[href=\"${href}\"]`)\n if (selectedNavItem) {\n return selectedNavItem.closest('.ActionListItem')\n }\n\n return null\n }\n\n #findSelectedNavItemByCurrentLocation(): HTMLElement | null {\n return this.#findSelectedNavItemByHref(window.location.pathname)\n }\n\n #select(navItem: HTMLElement) {\n const currentlySelectedItem = this.querySelector('.ActionListItem--navActive') as HTMLElement\n if (currentlySelectedItem) this.#deselect(currentlySelectedItem)\n\n navItem.classList.add('ActionListItem--navActive')\n\n const parentMenu = this.#findParentMenu(navItem)\n\n if (parentMenu) {\n this.expandItem(parentMenu)\n parentMenu.classList.add('ActionListContent--hasActiveSubItem')\n }\n }\n\n #deselect(navItem: HTMLElement) {\n navItem.classList.remove('ActionListItem--navActive')\n\n const parentMenu = this.#findParentMenu(navItem)\n\n if (parentMenu) {\n this.collapseItem(parentMenu)\n parentMenu.classList.remove('ActionListContent--hasActiveSubItem')\n }\n }\n\n #findParentMenu(navItem: HTMLElement): HTMLElement | null {\n if (!navItem.classList.contains('ActionListItem--subItem')) return null\n\n const parent = navItem.closest('li.ActionListItem--hasSubItem')?.querySelector('button.ActionListContent')\n\n if (parent) {\n return parent as HTMLElement\n } else {\n return null\n }\n }\n}\n\ndeclare global {\n interface Window {\n NavListElement: typeof NavListElement\n }\n}\n","import {controller, targets} from '@github/catalyst'\n\n@controller\nclass SegmentedControlElement extends HTMLElement {\n @targets items: HTMLElement[]\n\n connectedCallback() {\n this.#updateButtonLabels()\n }\n\n select(event: Event) {\n const button = event.currentTarget as HTMLButtonElement\n for (const item of this.items) {\n item.classList.remove('SegmentedControl-item--selected')\n item.querySelector('[aria-current]')?.setAttribute('aria-current', 'false')\n }\n\n button.closest('li.SegmentedControl-item')?.classList.add('SegmentedControl-item--selected')\n button.setAttribute('aria-current', 'true')\n }\n\n // Updates the button labels to have a data-content attribute with the text\n // This is for selection styling to avoid the text jumping. It only needs to be\n // setup when the component is first loaded.\n #updateButtonLabels() {\n for (const label of this.querySelectorAll('.Button-label')) {\n label.setAttribute('data-content', label.textContent || '')\n }\n }\n}\n\ndeclare global {\n interface Window {\n SegmentedControlElement: typeof SegmentedControlElement\n }\n}\n\nif (!window.customElements.get('segmented-control')) {\n window.SegmentedControlElement = SegmentedControlElement\n window.customElements.define('segmented-control', SegmentedControlElement)\n}\n","export function throttle(callback, wait = 0, { start = true, middle = true, once = false } = {}) {\n let last = 0;\n let timer;\n let cancelled = false;\n function fn(...args) {\n if (cancelled)\n return;\n const delta = Date.now() - last;\n last = Date.now();\n if (start) {\n start = false;\n callback.apply(this, args);\n if (once)\n fn.cancel();\n }\n else if ((middle && delta < wait) || !middle) {\n clearTimeout(timer);\n timer = setTimeout(() => {\n last = Date.now();\n callback.apply(this, args);\n if (once)\n fn.cancel();\n }, !middle ? wait : wait - delta);\n }\n }\n fn.cancel = () => {\n clearTimeout(timer);\n cancelled = true;\n };\n return fn;\n}\nexport function debounce(callback, wait = 0, { start = false, middle = false, once = false } = {}) {\n return throttle(callback, wait, { start, middle, once });\n}\n","import {controller, target} from '@github/catalyst'\nimport {debounce} from '@github/mini-throttle/decorators'\n\n@controller\nclass ToggleSwitchElement extends HTMLElement {\n @target switch: HTMLElement\n @target loadingSpinner: HTMLElement\n @target errorIcon: HTMLElement\n\n get src(): string | null {\n const src = this.getAttribute('src')\n if (!src) return null\n\n const link = this.ownerDocument.createElement('a')\n link.href = src\n return link.href\n }\n\n get csrf(): string | null {\n const csrfElement = this.querySelector('[data-csrf]')\n return this.getAttribute('csrf') || (csrfElement instanceof HTMLInputElement && csrfElement.value) || null\n }\n\n get csrfField(): string {\n // the authenticity token is passed into the element and is not generated in js land\n\n return this.getAttribute('csrf-field') || 'authenticity_token'\n }\n\n isRemote(): boolean {\n return this.src != null\n }\n\n toggle() {\n if (this.isDisabled()) {\n return\n }\n\n if (this.isRemote()) {\n this.setLoadingState()\n this.submitForm()\n } else {\n this.performToggle()\n }\n }\n\n turnOn(): void {\n if (this.isDisabled()) {\n return\n }\n\n this.switch.setAttribute('aria-checked', 'true')\n this.classList.add('ToggleSwitch--checked')\n }\n\n turnOff(): void {\n if (this.isDisabled()) {\n return\n }\n\n this.switch.setAttribute('aria-checked', 'false')\n this.classList.remove('ToggleSwitch--checked')\n }\n\n isOn(): boolean {\n return this.switch.getAttribute('aria-checked') === 'true'\n }\n\n isOff(): boolean {\n return !this.isOn()\n }\n\n isDisabled(): boolean {\n return this.switch.getAttribute('aria-disabled') === 'true'\n }\n\n disable(): void {\n this.switch.setAttribute('aria-disabled', 'true')\n }\n\n enable(): void {\n this.switch.setAttribute('aria-disabled', 'false')\n }\n\n private performToggle(): void {\n if (this.isOn()) {\n this.turnOff()\n } else {\n this.turnOn()\n }\n }\n\n private setLoadingState(): void {\n this.disable()\n this.errorIcon.setAttribute('hidden', 'hidden')\n this.loadingSpinner.removeAttribute('hidden')\n }\n\n private setSuccessState(): void {\n const event = new CustomEvent('toggleSwitchSuccess', {bubbles: true})\n this.dispatchEvent(event)\n\n this.setFinishedState(false)\n }\n\n private setErrorState(message: string): void {\n const event = new CustomEvent('toggleSwitchError', {bubbles: true, detail: message})\n this.dispatchEvent(event)\n\n this.setFinishedState(true)\n }\n\n private setFinishedState(error: boolean): void {\n if (error) {\n this.errorIcon.removeAttribute('hidden')\n }\n\n this.loadingSpinner.setAttribute('hidden', 'hidden')\n this.enable()\n }\n\n @debounce(300)\n private async submitForm() {\n const body = new FormData()\n\n if (this.csrf) {\n body.append(this.csrfField, this.csrf)\n }\n\n body.append('value', this.isOn() ? '0' : '1')\n\n try {\n if (!this.src) throw new Error('invalid src')\n\n let response\n\n try {\n response = await fetch(this.src, {\n credentials: 'same-origin',\n method: 'POST',\n headers: {\n 'Requested-With': 'XMLHttpRequest'\n },\n body\n })\n } catch (error) {\n throw new Error('A network error occurred, please try again.')\n }\n\n if (response.ok) {\n this.setSuccessState()\n this.performToggle()\n } else {\n throw new Error(await response.text())\n }\n } catch (error) {\n if (error instanceof Error) {\n this.setErrorState(error.message || 'An error occurred, please try again.')\n }\n }\n }\n}\n\ndeclare global {\n interface Window {\n ToggleSwitchElement: typeof ToggleSwitchElement\n }\n}\n\nif (!window.customElements.get('toggle-switch')) {\n window.ToggleSwitchElement = ToggleSwitchElement\n window.customElements.define('toggle-switch', ToggleSwitchElement)\n}\n","import { debounce as db, throttle as th } from './index';\nexport function throttle(wait = 0, opts = {}) {\n return (proto, name, descriptor) => {\n if (!descriptor || typeof descriptor.value !== 'function') {\n throw new Error('debounce can only decorate functions');\n }\n const fn = descriptor.value;\n descriptor.value = th(fn, wait, opts);\n Object.defineProperty(proto, name, descriptor);\n };\n}\nexport function debounce(wait = 0, opts = {}) {\n return (proto, name, descriptor) => {\n if (!descriptor || typeof descriptor.value !== 'function') {\n throw new Error('debounce can only decorate functions');\n }\n const fn = descriptor.value;\n descriptor.value = db(fn, wait, opts);\n Object.defineProperty(proto, name, descriptor);\n };\n}\n","import type {AnchorAlignment, AnchorSide} from '@primer/behaviors'\nimport {getAnchoredPosition} from '@primer/behaviors'\n\nconst TOOLTIP_OPEN_CLASS = 'tooltip-open'\nconst TOOLTIP_ARROW_EDGE_OFFSET = 6\nconst TOOLTIP_SR_ONLY_CLASS = 'sr-only'\n\ntype Direction = 'n' | 's' | 'e' | 'w' | 'ne' | 'se' | 'nw' | 'sw'\n\nconst DIRECTION_CLASSES = [\n 'tooltip-n',\n 'tooltip-s',\n 'tooltip-e',\n 'tooltip-w',\n 'tooltip-ne',\n 'tooltip-se',\n 'tooltip-nw',\n 'tooltip-sw'\n]\n\nclass ToolTipElement extends HTMLElement {\n styles() {\n return `\n :host {\n position: absolute;\n z-index: 1000000;\n padding: .5em .75em;\n font: normal normal 11px/1.5 -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\n -webkit-font-smoothing: subpixel-antialiased;\n color: var(--color-fg-on-emphasis);\n text-align: center;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-wrap: break-word;\n white-space: pre;\n background: var(--color-neutral-emphasis-plus);\n border-radius: 6px;\n opacity: 0;\n max-width: 250px;\n word-wrap: break-word;\n white-space: normal;\n width: max-content;\n }\n\n :host:before{\n position: absolute;\n z-index: 1000001;\n color: var(--color-neutral-emphasis-plus);\n content: \"\";\n border: 6px solid transparent;\n opacity: 0\n }\n\n @keyframes tooltip-appear {\n from {\n opacity: 0\n }\n to {\n opacity: 1\n }\n }\n\n :host:after{\n position: absolute;\n display: block;\n right: 0;\n left: 0;\n height: 12px;\n content: \"\"\n }\n\n :host(.${TOOLTIP_OPEN_CLASS}),\n :host(.${TOOLTIP_OPEN_CLASS}):before {\n animation-name: tooltip-appear;\n animation-duration: .1s;\n animation-fill-mode: forwards;\n animation-timing-function: ease-in;\n animation-delay: .4s\n }\n\n :host(.tooltip-s):before,\n :host(.tooltip-n):before {\n right: 50%;\n margin-right: -${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n\n :host(.tooltip-s):before,\n :host(.tooltip-se):before,\n :host(.tooltip-sw):before {\n bottom: 100%;\n border-bottom-color: var(--color-neutral-emphasis-plus)\n }\n\n :host(.tooltip-s):after,\n :host(.tooltip-se):after,\n :host(.tooltip-sw):after {\n bottom: 100%\n }\n\n :host(.tooltip-n):before,\n :host(.tooltip-ne):before,\n :host(.tooltip-nw):before {\n top: 100%;\n border-top-color: var(--color-neutral-emphasis-plus)\n }\n\n :host(.tooltip-n):after,\n :host(.tooltip-ne):after,\n :host(.tooltip-nw):after {\n top: 100%\n }\n\n :host(.tooltip-se):before,\n :host(.tooltip-ne):before {\n left: 0;\n margin-left: ${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n\n :host(.tooltip-sw):before,\n :host(.tooltip-nw):before {\n right: 0;\n margin-right: ${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n\n :host(.tooltip-w):before {\n top: 50%;\n bottom: 50%;\n left: 100%;\n margin-top: -6px;\n border-left-color: var(--color-neutral-emphasis-plus)\n }\n\n :host(.tooltip-e):before {\n top: 50%;\n right: 100%;\n bottom: 50%;\n margin-top: -6px;\n border-right-color: var(--color-neutral-emphasis-plus)\n }\n `\n }\n\n #abortController: AbortController | undefined\n #align: AnchorAlignment = 'center'\n #side: AnchorSide = 'outside-bottom'\n #allowUpdatePosition = false\n\n get htmlFor(): string {\n return this.getAttribute('for') || ''\n }\n\n set htmlFor(value: string) {\n this.setAttribute('for', value)\n }\n\n get type(): 'description' | 'label' {\n const type = this.getAttribute('data-type')\n return type === 'label' ? 'label' : 'description'\n }\n\n set type(value: 'description' | 'label') {\n this.setAttribute('data-type', value)\n }\n\n get direction(): Direction {\n return (this.getAttribute('data-direction') || 's') as Direction\n }\n\n set direction(value: Direction) {\n this.setAttribute('data-direction', value)\n }\n\n get control(): HTMLElement | null {\n return this.ownerDocument.getElementById(this.htmlFor)\n }\n\n set hiddenFromView(value: true | false) {\n this.classList.toggle(TOOLTIP_SR_ONLY_CLASS, value)\n if (this.isConnected) this.#update()\n }\n\n get hiddenFromView() {\n return this.classList.contains(TOOLTIP_SR_ONLY_CLASS)\n }\n\n connectedCallback() {\n this.#updateControlReference()\n this.#updateDirection()\n if (!this.shadowRoot) {\n const shadow = this.attachShadow({mode: 'open'})\n const style = shadow.appendChild(document.createElement('style'))\n style.textContent = this.styles()\n shadow.appendChild(document.createElement('slot'))\n }\n this.hiddenFromView = true\n this.#allowUpdatePosition = true\n\n if (!this.control) return\n\n this.setAttribute('role', 'tooltip')\n\n this.#abortController?.abort()\n this.#abortController = new AbortController()\n const {signal} = this.#abortController\n\n this.addEventListener('mouseleave', this, {signal})\n this.control.addEventListener('mouseenter', this, {signal})\n this.control.addEventListener('mouseleave', this, {signal})\n this.control.addEventListener('focus', this, {signal})\n this.control.addEventListener('blur', this, {signal})\n this.ownerDocument.addEventListener('keydown', this, {signal})\n this.#update()\n }\n\n disconnectedCallback() {\n this.#abortController?.abort()\n }\n\n handleEvent(event: Event) {\n if (!this.control) return\n\n // Ensures that tooltip stays open when hovering between tooltip and element\n // WCAG Success Criterion 1.4.13 Hoverable\n if ((event.type === 'mouseenter' || event.type === 'focus') && this.hiddenFromView) {\n this.hiddenFromView = false\n } else if (event.type === 'blur') {\n this.hiddenFromView = true\n } else if (\n event.type === 'mouseleave' &&\n (event as MouseEvent).relatedTarget !== this.control &&\n (event as MouseEvent).relatedTarget !== this\n ) {\n this.hiddenFromView = true\n } else if (event.type === 'keydown' && (event as KeyboardEvent).key === 'Escape' && !this.hiddenFromView) {\n this.hiddenFromView = true\n }\n }\n\n static observedAttributes = ['data-type', 'data-direction', 'id']\n\n #update() {\n if (this.hiddenFromView) {\n this.classList.remove(TOOLTIP_OPEN_CLASS, ...DIRECTION_CLASSES)\n } else {\n this.classList.add(TOOLTIP_OPEN_CLASS)\n for (const tooltip of this.ownerDocument.querySelectorAll(this.tagName)) {\n if (tooltip !== this) tooltip.hiddenFromView = true\n }\n this.#updatePosition()\n }\n }\n\n attributeChangedCallback(name: string) {\n if (!this.isConnected) return\n\n if (name === 'id' || name === 'data-type') {\n this.#updateControlReference()\n } else if (name === 'data-direction') {\n this.#updateDirection()\n }\n }\n\n #updateControlReference() {\n if (!this.id || !this.control) return\n if (this.type === 'label') {\n let labelledBy = this.control.getAttribute('aria-labelledby')\n if (labelledBy) {\n if (!labelledBy.split(' ').includes(this.id)) {\n labelledBy = `${labelledBy} ${this.id}`\n } else {\n labelledBy = `${labelledBy}`\n }\n } else {\n labelledBy = this.id\n }\n this.control.setAttribute('aria-labelledby', labelledBy)\n\n // Prevent duplicate accessible name announcements.\n this.setAttribute('aria-hidden', 'true')\n } else {\n let describedBy = this.control.getAttribute('aria-describedby')\n if (describedBy) {\n if (!describedBy.split(' ').includes(this.id)) {\n describedBy = `${describedBy} ${this.id}`\n } else {\n describedBy = `${describedBy}`\n }\n } else {\n describedBy = this.id\n }\n this.control.setAttribute('aria-describedby', describedBy)\n }\n }\n\n #updateDirection() {\n this.classList.remove(...DIRECTION_CLASSES)\n const direction = this.direction\n if (direction === 'n') {\n this.#align = 'center'\n this.#side = 'outside-top'\n } else if (direction === 'ne') {\n this.#align = 'start'\n this.#side = 'outside-top'\n } else if (direction === 'e') {\n this.#align = 'center'\n this.#side = 'outside-right'\n } else if (direction === 'se') {\n this.#align = 'start'\n this.#side = 'outside-bottom'\n } else if (direction === 's') {\n this.#align = 'center'\n this.#side = 'outside-bottom'\n } else if (direction === 'sw') {\n this.#align = 'end'\n this.#side = 'outside-bottom'\n } else if (direction === 'w') {\n this.#align = 'center'\n this.#side = 'outside-left'\n } else if (direction === 'nw') {\n this.#align = 'end'\n this.#side = 'outside-top'\n }\n }\n\n #updatePosition() {\n if (!this.control) return\n if (!this.#allowUpdatePosition || this.hiddenFromView) return\n\n const TOOLTIP_OFFSET = 10\n\n this.style.left = `0px` // Ensures we have reliable tooltip width in `getAnchoredPosition`\n\n const position = getAnchoredPosition(this, this.control, {\n side: this.#side,\n align: this.#align,\n anchorOffset: TOOLTIP_OFFSET\n })\n const anchorSide = position.anchorSide\n const align = position.anchorAlign\n\n this.style.top = `${position.top}px`\n this.style.left = `${position.left}px`\n\n let direction: Direction = 's'\n\n if (anchorSide === 'outside-left') {\n direction = 'w'\n } else if (anchorSide === 'outside-right') {\n direction = 'e'\n } else if (anchorSide === 'outside-top') {\n if (align === 'center') {\n direction = 'n'\n } else if (align === 'start') {\n direction = 'ne'\n } else {\n direction = 'nw'\n }\n } else {\n if (align === 'center') {\n direction = 's'\n } else if (align === 'start') {\n direction = 'se'\n } else {\n direction = 'sw'\n }\n }\n\n this.classList.add(`tooltip-${direction}`)\n }\n}\n\nif (!window.customElements.get('tool-tip')) {\n window.ToolTipElement = ToolTipElement\n window.customElements.define('tool-tip', ToolTipElement)\n}\n\ndeclare global {\n interface Window {\n ToolTipElement: typeof ToolTipElement\n }\n}\n","import {controller, target} from '@github/catalyst'\n\n@controller\nclass XBannerElement extends HTMLElement {\n @target titleText: HTMLElement\n\n dismiss() {\n if (this.shouldReappear()) {\n this.style.setProperty('visibility', 'hidden')\n\n setTimeout(() => {\n this.style.setProperty('visibility', 'visible')\n }, 2000)\n\n return\n }\n\n const parentElement = this.parentElement\n if (!parentElement) return\n\n parentElement.removeChild(this)\n }\n\n private shouldReappear(): boolean {\n return this.getAttribute('data-reappear') === 'true'\n }\n}\n\ndeclare global {\n interface Window {\n XBannerElement: typeof XBannerElement\n }\n}\n\nif (!window.customElements.get('x-banner')) {\n window.XBannerElement = XBannerElement\n window.customElements.define('x-banner', XBannerElement)\n}\n","export default class Combobox {\n constructor(input, list, { tabInsertsSuggestions, defaultFirstOption } = {}) {\n this.input = input;\n this.list = list;\n this.tabInsertsSuggestions = tabInsertsSuggestions !== null && tabInsertsSuggestions !== void 0 ? tabInsertsSuggestions : true;\n this.defaultFirstOption = defaultFirstOption !== null && defaultFirstOption !== void 0 ? defaultFirstOption : false;\n this.isComposing = false;\n if (!list.id) {\n list.id = `combobox-${Math.random().toString().slice(2, 6)}`;\n }\n this.ctrlBindings = !!navigator.userAgent.match(/Macintosh/);\n this.keyboardEventHandler = event => keyboardBindings(event, this);\n this.compositionEventHandler = event => trackComposition(event, this);\n this.inputHandler = this.clearSelection.bind(this);\n input.setAttribute('role', 'combobox');\n input.setAttribute('aria-controls', list.id);\n input.setAttribute('aria-expanded', 'false');\n input.setAttribute('aria-autocomplete', 'list');\n input.setAttribute('aria-haspopup', 'listbox');\n }\n destroy() {\n this.clearSelection();\n this.stop();\n this.input.removeAttribute('role');\n this.input.removeAttribute('aria-controls');\n this.input.removeAttribute('aria-expanded');\n this.input.removeAttribute('aria-autocomplete');\n this.input.removeAttribute('aria-haspopup');\n }\n start() {\n this.input.setAttribute('aria-expanded', 'true');\n this.input.addEventListener('compositionstart', this.compositionEventHandler);\n this.input.addEventListener('compositionend', this.compositionEventHandler);\n this.input.addEventListener('input', this.inputHandler);\n this.input.addEventListener('keydown', this.keyboardEventHandler);\n this.list.addEventListener('click', commitWithElement);\n this.indicateDefaultOption();\n }\n stop() {\n this.clearSelection();\n this.input.setAttribute('aria-expanded', 'false');\n this.input.removeEventListener('compositionstart', this.compositionEventHandler);\n this.input.removeEventListener('compositionend', this.compositionEventHandler);\n this.input.removeEventListener('input', this.inputHandler);\n this.input.removeEventListener('keydown', this.keyboardEventHandler);\n this.list.removeEventListener('click', commitWithElement);\n }\n indicateDefaultOption() {\n var _a;\n if (this.defaultFirstOption) {\n (_a = Array.from(this.list.querySelectorAll('[role=\"option\"]:not([aria-disabled=\"true\"])'))\n .filter(visible)[0]) === null || _a === void 0 ? void 0 : _a.setAttribute('data-combobox-option-default', 'true');\n }\n }\n navigate(indexDiff = 1) {\n const focusEl = Array.from(this.list.querySelectorAll('[aria-selected=\"true\"]')).filter(visible)[0];\n const els = Array.from(this.list.querySelectorAll('[role=\"option\"]')).filter(visible);\n const focusIndex = els.indexOf(focusEl);\n if ((focusIndex === els.length - 1 && indexDiff === 1) || (focusIndex === 0 && indexDiff === -1)) {\n this.clearSelection();\n this.input.focus();\n return;\n }\n let indexOfItem = indexDiff === 1 ? 0 : els.length - 1;\n if (focusEl && focusIndex >= 0) {\n const newIndex = focusIndex + indexDiff;\n if (newIndex >= 0 && newIndex < els.length)\n indexOfItem = newIndex;\n }\n const target = els[indexOfItem];\n if (!target)\n return;\n for (const el of els) {\n el.removeAttribute('data-combobox-option-default');\n if (target === el) {\n this.input.setAttribute('aria-activedescendant', target.id);\n target.setAttribute('aria-selected', 'true');\n scrollTo(this.list, target);\n }\n else {\n el.removeAttribute('aria-selected');\n }\n }\n }\n clearSelection() {\n this.input.removeAttribute('aria-activedescendant');\n for (const el of this.list.querySelectorAll('[aria-selected=\"true\"]')) {\n el.removeAttribute('aria-selected');\n }\n this.indicateDefaultOption();\n }\n}\nfunction keyboardBindings(event, combobox) {\n if (event.shiftKey || event.metaKey || event.altKey)\n return;\n if (!combobox.ctrlBindings && event.ctrlKey)\n return;\n if (combobox.isComposing)\n return;\n switch (event.key) {\n case 'Enter':\n if (commit(combobox.input, combobox.list)) {\n event.preventDefault();\n }\n break;\n case 'Tab':\n if (combobox.tabInsertsSuggestions && commit(combobox.input, combobox.list)) {\n event.preventDefault();\n }\n break;\n case 'Escape':\n combobox.clearSelection();\n break;\n case 'ArrowDown':\n combobox.navigate(1);\n event.preventDefault();\n break;\n case 'ArrowUp':\n combobox.navigate(-1);\n event.preventDefault();\n break;\n case 'n':\n if (combobox.ctrlBindings && event.ctrlKey) {\n combobox.navigate(1);\n event.preventDefault();\n }\n break;\n case 'p':\n if (combobox.ctrlBindings && event.ctrlKey) {\n combobox.navigate(-1);\n event.preventDefault();\n }\n break;\n default:\n if (event.ctrlKey)\n break;\n combobox.clearSelection();\n }\n}\nfunction commitWithElement(event) {\n if (!(event.target instanceof Element))\n return;\n const target = event.target.closest('[role=\"option\"]');\n if (!target)\n return;\n if (target.getAttribute('aria-disabled') === 'true')\n return;\n fireCommitEvent(target, { event });\n}\nfunction commit(input, list) {\n const target = list.querySelector('[aria-selected=\"true\"], [data-combobox-option-default=\"true\"]');\n if (!target)\n return false;\n if (target.getAttribute('aria-disabled') === 'true')\n return true;\n target.click();\n return true;\n}\nfunction fireCommitEvent(target, detail) {\n target.dispatchEvent(new CustomEvent('combobox-commit', { bubbles: true, detail }));\n}\nfunction visible(el) {\n return (!el.hidden &&\n !(el instanceof HTMLInputElement && el.type === 'hidden') &&\n (el.offsetWidth > 0 || el.offsetHeight > 0));\n}\nfunction trackComposition(event, combobox) {\n combobox.isComposing = event.type === 'compositionstart';\n const list = document.getElementById(combobox.input.getAttribute('aria-controls') || '');\n if (!list)\n return;\n combobox.clearSelection();\n}\nfunction scrollTo(container, target) {\n if (!inViewport(container, target)) {\n container.scrollTop = target.offsetTop;\n }\n}\nfunction inViewport(container, element) {\n const scrollTop = container.scrollTop;\n const containerBottom = scrollTop + container.clientHeight;\n const top = element.offsetTop;\n const bottom = top + element.clientHeight;\n return top >= scrollTop && bottom <= containerBottom;\n}\n","import Combobox from '@github/combobox-nav';\nimport debounce from './debounce.js';\nconst SCREEN_READER_DELAY = window.testScreenReaderDelay || 100;\nexport default class Autocomplete {\n constructor(container, input, results, autoselectEnabled = false) {\n var _a;\n this.container = container;\n this.input = input;\n this.results = results;\n this.combobox = new Combobox(input, results);\n this.feedback = container.getRootNode().getElementById(`${this.results.id}-feedback`);\n this.autoselectEnabled = autoselectEnabled;\n this.clearButton = container.getRootNode().getElementById(`${this.input.id || this.input.name}-clear`);\n this.clientOptions = results.querySelectorAll('[role=option]');\n if (this.feedback) {\n this.feedback.setAttribute('aria-live', 'polite');\n this.feedback.setAttribute('aria-atomic', 'true');\n }\n if (this.clearButton && !this.clearButton.getAttribute('aria-label')) {\n const labelElem = document.querySelector(`label[for=\"${this.input.name}\"]`);\n this.clearButton.setAttribute('aria-label', `clear:`);\n this.clearButton.setAttribute('aria-labelledby', `${this.clearButton.id} ${(labelElem === null || labelElem === void 0 ? void 0 : labelElem.id) || ''}`);\n }\n if (!this.input.getAttribute('aria-expanded')) {\n this.input.setAttribute('aria-expanded', 'false');\n }\n this.results.hidden = true;\n if (!this.results.getAttribute('aria-label')) {\n this.results.setAttribute('aria-label', 'results');\n }\n this.input.setAttribute('autocomplete', 'off');\n this.input.setAttribute('spellcheck', 'false');\n this.interactingWithList = false;\n this.onInputChange = debounce(this.onInputChange.bind(this), 300);\n this.onResultsMouseDown = this.onResultsMouseDown.bind(this);\n this.onInputBlur = this.onInputBlur.bind(this);\n this.onInputFocus = this.onInputFocus.bind(this);\n this.onKeydown = this.onKeydown.bind(this);\n this.onCommit = this.onCommit.bind(this);\n this.handleClear = this.handleClear.bind(this);\n this.input.addEventListener('keydown', this.onKeydown);\n this.input.addEventListener('focus', this.onInputFocus);\n this.input.addEventListener('blur', this.onInputBlur);\n this.input.addEventListener('input', this.onInputChange);\n this.results.addEventListener('mousedown', this.onResultsMouseDown);\n this.results.addEventListener('combobox-commit', this.onCommit);\n (_a = this.clearButton) === null || _a === void 0 ? void 0 : _a.addEventListener('click', this.handleClear);\n }\n destroy() {\n this.input.removeEventListener('keydown', this.onKeydown);\n this.input.removeEventListener('focus', this.onInputFocus);\n this.input.removeEventListener('blur', this.onInputBlur);\n this.input.removeEventListener('input', this.onInputChange);\n this.results.removeEventListener('mousedown', this.onResultsMouseDown);\n this.results.removeEventListener('combobox-commit', this.onCommit);\n }\n handleClear(event) {\n event.preventDefault();\n if (this.input.getAttribute('aria-expanded') === 'true') {\n this.input.setAttribute('aria-expanded', 'false');\n this.updateFeedbackForScreenReaders('Results hidden.');\n }\n this.input.value = '';\n this.container.value = '';\n this.input.focus();\n this.input.dispatchEvent(new Event('change'));\n this.container.open = false;\n }\n onKeydown(event) {\n if (event.key === 'Enter' && this.container.open && this.autoselectEnabled) {\n const firstOption = this.results.children[0];\n if (firstOption) {\n event.stopPropagation();\n event.preventDefault();\n this.onCommit({ target: firstOption });\n }\n }\n if (event.key === 'Escape' && this.container.open) {\n this.container.open = false;\n event.stopPropagation();\n event.preventDefault();\n }\n else if (event.altKey && event.key === 'ArrowUp' && this.container.open) {\n this.container.open = false;\n event.stopPropagation();\n event.preventDefault();\n }\n else if (event.altKey && event.key === 'ArrowDown' && !this.container.open) {\n if (!this.input.value.trim())\n return;\n this.container.open = true;\n event.stopPropagation();\n event.preventDefault();\n }\n }\n onInputFocus() {\n this.fetchResults();\n }\n onInputBlur() {\n if (this.interactingWithList) {\n this.interactingWithList = false;\n return;\n }\n this.container.open = false;\n }\n onCommit({ target }) {\n const selected = target;\n if (!(selected instanceof HTMLElement))\n return;\n this.container.open = false;\n if (selected instanceof HTMLAnchorElement)\n return;\n const value = selected.getAttribute('data-autocomplete-value') || selected.textContent;\n this.updateFeedbackForScreenReaders(`${selected.textContent || ''} selected.`);\n this.container.value = value;\n if (!value) {\n this.updateFeedbackForScreenReaders(`Results hidden.`);\n }\n }\n onResultsMouseDown() {\n this.interactingWithList = true;\n }\n onInputChange() {\n if (this.feedback && this.feedback.textContent) {\n this.feedback.textContent = '';\n }\n this.container.removeAttribute('value');\n this.fetchResults();\n }\n identifyOptions() {\n let id = 0;\n for (const el of this.results.querySelectorAll('[role=\"option\"]:not([id])')) {\n el.id = `${this.results.id}-option-${id++}`;\n }\n }\n updateFeedbackForScreenReaders(inputString) {\n setTimeout(() => {\n if (this.feedback) {\n this.feedback.textContent = inputString;\n }\n }, SCREEN_READER_DELAY);\n }\n fetchResults() {\n const query = this.input.value.trim();\n if (!query && !this.container.fetchOnEmpty) {\n this.container.open = false;\n return;\n }\n const src = this.container.src;\n if (!src)\n return;\n const url = new URL(src, window.location.href);\n const params = new URLSearchParams(url.search.slice(1));\n params.append('q', query);\n url.search = params.toString();\n this.container.dispatchEvent(new CustomEvent('loadstart'));\n this.container\n .fetchResult(url)\n .then(html => {\n this.results.innerHTML = html;\n this.identifyOptions();\n const allNewOptions = this.results.querySelectorAll('[role=\"option\"]');\n const hasResults = !!allNewOptions.length;\n const numOptions = allNewOptions.length;\n const [firstOption] = allNewOptions;\n const firstOptionValue = firstOption === null || firstOption === void 0 ? void 0 : firstOption.textContent;\n if (this.autoselectEnabled && firstOptionValue) {\n this.updateFeedbackForScreenReaders(`${numOptions} results. ${firstOptionValue} is the top result: Press Enter to activate.`);\n }\n else {\n this.updateFeedbackForScreenReaders(`${numOptions || 'No'} results.`);\n }\n this.container.open = hasResults;\n this.container.dispatchEvent(new CustomEvent('load'));\n this.container.dispatchEvent(new CustomEvent('loadend'));\n })\n .catch(() => {\n this.container.dispatchEvent(new CustomEvent('error'));\n this.container.dispatchEvent(new CustomEvent('loadend'));\n });\n }\n open() {\n if (!this.results.hidden)\n return;\n this.combobox.start();\n this.results.hidden = false;\n }\n close() {\n if (this.results.hidden)\n return;\n this.combobox.stop();\n this.results.hidden = true;\n }\n}\n","export default function debounce(callback, wait = 0) {\n let timeout;\n return function (...Rest) {\n clearTimeout(timeout);\n timeout = window.setTimeout(() => {\n clearTimeout(timeout);\n callback(...Rest);\n }, wait);\n };\n}\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar _AutoCompleteElement_instances, _AutoCompleteElement_forElement, _AutoCompleteElement_inputElement, _AutoCompleteElement_reattachState, _AutoCompleteElement_requestController;\nimport Autocomplete from './autocomplete.js';\nconst HTMLElement = globalThis.HTMLElement || null;\nexport class AutoCompleteEvent extends Event {\n constructor(type, _a) {\n var { relatedTarget } = _a, init = __rest(_a, [\"relatedTarget\"]);\n super(type, init);\n this.relatedTarget = relatedTarget;\n }\n}\nconst state = new WeakMap();\nlet cspTrustedTypesPolicyPromise = null;\nexport class AutoCompleteElement extends HTMLElement {\n constructor() {\n super(...arguments);\n _AutoCompleteElement_instances.add(this);\n _AutoCompleteElement_forElement.set(this, null);\n _AutoCompleteElement_inputElement.set(this, null);\n _AutoCompleteElement_requestController.set(this, void 0);\n }\n static define(tag = 'auto-complete', registry = customElements) {\n registry.define(tag, this);\n return this;\n }\n static setCSPTrustedTypesPolicy(policy) {\n cspTrustedTypesPolicyPromise = policy === null ? policy : Promise.resolve(policy);\n }\n get forElement() {\n var _a;\n if ((_a = __classPrivateFieldGet(this, _AutoCompleteElement_forElement, \"f\")) === null || _a === void 0 ? void 0 : _a.isConnected) {\n return __classPrivateFieldGet(this, _AutoCompleteElement_forElement, \"f\");\n }\n const id = this.getAttribute('for');\n const root = this.getRootNode();\n if (id && (root instanceof Document || root instanceof ShadowRoot)) {\n return root.getElementById(id);\n }\n return null;\n }\n set forElement(element) {\n __classPrivateFieldSet(this, _AutoCompleteElement_forElement, element, \"f\");\n this.setAttribute('for', '');\n }\n get inputElement() {\n var _a;\n if ((_a = __classPrivateFieldGet(this, _AutoCompleteElement_inputElement, \"f\")) === null || _a === void 0 ? void 0 : _a.isConnected) {\n return __classPrivateFieldGet(this, _AutoCompleteElement_inputElement, \"f\");\n }\n return this.querySelector('input');\n }\n set inputElement(input) {\n __classPrivateFieldSet(this, _AutoCompleteElement_inputElement, input, \"f\");\n __classPrivateFieldGet(this, _AutoCompleteElement_instances, \"m\", _AutoCompleteElement_reattachState).call(this);\n }\n connectedCallback() {\n if (!this.isConnected)\n return;\n __classPrivateFieldGet(this, _AutoCompleteElement_instances, \"m\", _AutoCompleteElement_reattachState).call(this);\n }\n disconnectedCallback() {\n const autocomplete = state.get(this);\n if (autocomplete) {\n autocomplete.destroy();\n state.delete(this);\n }\n }\n get src() {\n return this.getAttribute('src') || '';\n }\n set src(url) {\n this.setAttribute('src', url);\n }\n get value() {\n return this.getAttribute('value') || '';\n }\n set value(value) {\n this.setAttribute('value', value);\n }\n get open() {\n return this.hasAttribute('open');\n }\n set open(value) {\n if (value) {\n this.setAttribute('open', '');\n }\n else {\n this.removeAttribute('open');\n }\n }\n get fetchOnEmpty() {\n return this.hasAttribute('fetch-on-empty');\n }\n set fetchOnEmpty(fetchOnEmpty) {\n this.toggleAttribute('fetch-on-empty', fetchOnEmpty);\n }\n async fetchResult(url) {\n var _a;\n (_a = __classPrivateFieldGet(this, _AutoCompleteElement_requestController, \"f\")) === null || _a === void 0 ? void 0 : _a.abort();\n const { signal } = (__classPrivateFieldSet(this, _AutoCompleteElement_requestController, new AbortController(), \"f\"));\n const res = await fetch(url.toString(), {\n signal,\n headers: {\n Accept: 'text/fragment+html',\n },\n });\n if (!res.ok) {\n throw new Error(await res.text());\n }\n if (cspTrustedTypesPolicyPromise) {\n const cspTrustedTypesPolicy = await cspTrustedTypesPolicyPromise;\n return cspTrustedTypesPolicy.createHTML(await res.text(), res);\n }\n return await res.text();\n }\n static get observedAttributes() {\n return ['open', 'value', 'for'];\n }\n attributeChangedCallback(name, oldValue, newValue) {\n var _a, _b;\n if (oldValue === newValue)\n return;\n const autocomplete = state.get(this);\n if (!autocomplete)\n return;\n if (this.forElement !== ((_a = state.get(this)) === null || _a === void 0 ? void 0 : _a.results) || this.inputElement !== ((_b = state.get(this)) === null || _b === void 0 ? void 0 : _b.input)) {\n __classPrivateFieldGet(this, _AutoCompleteElement_instances, \"m\", _AutoCompleteElement_reattachState).call(this);\n }\n switch (name) {\n case 'open':\n newValue === null ? autocomplete.close() : autocomplete.open();\n break;\n case 'value':\n if (newValue !== null) {\n autocomplete.input.value = newValue;\n }\n this.dispatchEvent(new AutoCompleteEvent('auto-complete-change', {\n bubbles: true,\n relatedTarget: autocomplete.input,\n }));\n break;\n }\n }\n}\n_AutoCompleteElement_forElement = new WeakMap(), _AutoCompleteElement_inputElement = new WeakMap(), _AutoCompleteElement_requestController = new WeakMap(), _AutoCompleteElement_instances = new WeakSet(), _AutoCompleteElement_reattachState = function _AutoCompleteElement_reattachState() {\n var _a;\n (_a = state.get(this)) === null || _a === void 0 ? void 0 : _a.destroy();\n const { forElement, inputElement } = this;\n if (!forElement || !inputElement)\n return;\n const autoselectEnabled = this.getAttribute('data-autoselect') === 'true';\n state.set(this, new Autocomplete(this, inputElement, forElement, autoselectEnabled));\n forElement.setAttribute('role', 'listbox');\n};\nexport default AutoCompleteElement;\n","import { AutoCompleteElement } from './auto-complete-element.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\ntry {\n root.AutocompleteElement = root.AutoCompleteElement = AutoCompleteElement.define();\n}\ncatch (e) {\n if (!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&\n !(e instanceof ReferenceError)) {\n throw e;\n }\n}\nexport default AutoCompleteElement;\nexport * from './auto-complete-element.js';\n","function createNode(text) {\n const node = document.createElement('pre');\n node.style.width = '1px';\n node.style.height = '1px';\n node.style.position = 'fixed';\n node.style.top = '5px';\n node.textContent = text;\n return node;\n}\n\nfunction copyNode(node) {\n if ('clipboard' in navigator) {\n // eslint-disable-next-line flowtype/no-flow-fix-me-comments\n // $FlowFixMe Clipboard is not defined in Flow yet.\n return navigator.clipboard.writeText(node.textContent);\n }\n\n const selection = getSelection();\n\n if (selection == null) {\n return Promise.reject(new Error());\n }\n\n selection.removeAllRanges();\n const range = document.createRange();\n range.selectNodeContents(node);\n selection.addRange(range);\n document.execCommand('copy');\n selection.removeAllRanges();\n return Promise.resolve();\n}\nfunction copyText(text) {\n if ('clipboard' in navigator) {\n // eslint-disable-next-line flowtype/no-flow-fix-me-comments\n // $FlowFixMe Clipboard is not defined in Flow yet.\n return navigator.clipboard.writeText(text);\n }\n\n const body = document.body;\n\n if (!body) {\n return Promise.reject(new Error());\n }\n\n const node = createNode(text);\n body.appendChild(node);\n copyNode(node);\n body.removeChild(node);\n return Promise.resolve();\n}\n\nfunction copy(button) {\n const id = button.getAttribute('for');\n const text = button.getAttribute('value');\n\n function trigger() {\n button.dispatchEvent(new CustomEvent('clipboard-copy', {\n bubbles: true\n }));\n }\n\n if (text) {\n copyText(text).then(trigger);\n } else if (id) {\n const root = 'getRootNode' in Element.prototype ? button.getRootNode() : button.ownerDocument;\n if (!(root instanceof Document || 'ShadowRoot' in window && root instanceof ShadowRoot)) return;\n const node = root.getElementById(id);\n if (node) copyTarget(node).then(trigger);\n }\n}\n\nfunction copyTarget(content) {\n if (content instanceof HTMLInputElement || content instanceof HTMLTextAreaElement) {\n return copyText(content.value);\n } else if (content instanceof HTMLAnchorElement && content.hasAttribute('href')) {\n return copyText(content.href);\n } else {\n return copyNode(content);\n }\n}\n\nfunction clicked(event) {\n const button = event.currentTarget;\n\n if (button instanceof HTMLElement) {\n copy(button);\n }\n}\n\nfunction keydown(event) {\n if (event.key === ' ' || event.key === 'Enter') {\n const button = event.currentTarget;\n\n if (button instanceof HTMLElement) {\n event.preventDefault();\n copy(button);\n }\n }\n}\n\nfunction focused(event) {\n event.currentTarget.addEventListener('keydown', keydown);\n}\n\nfunction blurred(event) {\n event.currentTarget.removeEventListener('keydown', keydown);\n}\n\nclass ClipboardCopyElement extends HTMLElement {\n constructor() {\n super();\n this.addEventListener('click', clicked);\n this.addEventListener('focus', focused);\n this.addEventListener('blur', blurred);\n }\n\n connectedCallback() {\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0');\n }\n\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button');\n }\n }\n\n get value() {\n return this.getAttribute('value') || '';\n }\n\n set value(text) {\n this.setAttribute('value', text);\n }\n\n}\n\nif (!window.customElements.get('clipboard-copy')) {\n window.ClipboardCopyElement = ClipboardCopyElement;\n window.customElements.define('clipboard-copy', ClipboardCopyElement);\n}\n\nexport default ClipboardCopyElement;\n","import '@github/clipboard-copy-element'\n\nconst CLIPBOARD_COPY_TIMER_DURATION = 2000\n\nfunction showSVG(svg: SVGElement) {\n svg.style.display = 'inline-block'\n}\n\nfunction hideSVG(svg: SVGElement) {\n svg.style.display = 'none'\n}\n\n// Toggle a copy button.\nfunction showCopy(button: HTMLElement) {\n const [copyIcon, checkIcon] = button.querySelectorAll('.octicon')\n\n if (!copyIcon || !checkIcon) return\n\n showSVG(copyIcon)\n hideSVG(checkIcon)\n}\n\n// Toggle a copy button.\nfunction showCheck(button: HTMLElement) {\n const [copyIcon, checkIcon] = button.querySelectorAll('.octicon')\n\n if (!copyIcon || !checkIcon) return\n\n hideSVG(copyIcon)\n showSVG(checkIcon)\n}\n\nconst clipboardCopyElementTimers = new WeakMap()\n\ndocument.addEventListener('clipboard-copy', ({target}) => {\n if (!(target instanceof HTMLElement)) return\n if (!target.hasAttribute('data-view-component')) return\n\n const currentTimeout = clipboardCopyElementTimers.get(target)\n\n if (currentTimeout) {\n clearTimeout(currentTimeout)\n clipboardCopyElementTimers.delete(target)\n } else {\n showCheck(target)\n }\n\n clipboardCopyElementTimers.set(\n target,\n setTimeout(() => {\n showCopy(target)\n clipboardCopyElementTimers.delete(target)\n }, CLIPBOARD_COPY_TIMER_DURATION)\n )\n})\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _DurationFormat_options;\nclass ListFormatPonyFill {\n formatToParts(members) {\n const parts = [];\n for (const value of members) {\n parts.push({ type: 'element', value });\n parts.push({ type: 'literal', value: ', ' });\n }\n return parts.slice(0, -1);\n }\n}\nconst ListFormat = (typeof Intl !== 'undefined' && Intl.ListFormat) || ListFormatPonyFill;\nconst partsTable = [\n ['years', 'year'],\n ['months', 'month'],\n ['weeks', 'week'],\n ['days', 'day'],\n ['hours', 'hour'],\n ['minutes', 'minute'],\n ['seconds', 'second'],\n ['milliseconds', 'millisecond'],\n];\nconst twoDigitFormatOptions = { minimumIntegerDigits: 2 };\nexport default class DurationFormat {\n constructor(locale, options = {}) {\n _DurationFormat_options.set(this, void 0);\n let style = String(options.style || 'short');\n if (style !== 'long' && style !== 'short' && style !== 'narrow' && style !== 'digital')\n style = 'short';\n let prevStyle = style === 'digital' ? 'numeric' : style;\n const hours = options.hours || prevStyle;\n prevStyle = hours === '2-digit' ? 'numeric' : hours;\n const minutes = options.minutes || prevStyle;\n prevStyle = minutes === '2-digit' ? 'numeric' : minutes;\n const seconds = options.seconds || prevStyle;\n prevStyle = seconds === '2-digit' ? 'numeric' : seconds;\n const milliseconds = options.milliseconds || prevStyle;\n __classPrivateFieldSet(this, _DurationFormat_options, {\n locale,\n style,\n years: options.years || style === 'digital' ? 'short' : style,\n yearsDisplay: options.yearsDisplay === 'always' ? 'always' : 'auto',\n months: options.months || style === 'digital' ? 'short' : style,\n monthsDisplay: options.monthsDisplay === 'always' ? 'always' : 'auto',\n weeks: options.weeks || style === 'digital' ? 'short' : style,\n weeksDisplay: options.weeksDisplay === 'always' ? 'always' : 'auto',\n days: options.days || style === 'digital' ? 'short' : style,\n daysDisplay: options.daysDisplay === 'always' ? 'always' : 'auto',\n hours,\n hoursDisplay: options.hoursDisplay === 'always' ? 'always' : style === 'digital' ? 'always' : 'auto',\n minutes,\n minutesDisplay: options.minutesDisplay === 'always' ? 'always' : style === 'digital' ? 'always' : 'auto',\n seconds,\n secondsDisplay: options.secondsDisplay === 'always' ? 'always' : style === 'digital' ? 'always' : 'auto',\n milliseconds,\n millisecondsDisplay: options.millisecondsDisplay === 'always' ? 'always' : 'auto',\n }, \"f\");\n }\n resolvedOptions() {\n return __classPrivateFieldGet(this, _DurationFormat_options, \"f\");\n }\n formatToParts(duration) {\n const list = [];\n const options = __classPrivateFieldGet(this, _DurationFormat_options, \"f\");\n const style = options.style;\n const locale = options.locale;\n for (const [unit, nfUnit] of partsTable) {\n const value = duration[unit];\n if (options[`${unit}Display`] === 'auto' && !value)\n continue;\n const unitStyle = options[unit];\n const nfOpts = unitStyle === '2-digit'\n ? twoDigitFormatOptions\n : unitStyle === 'numeric'\n ? {}\n : { style: 'unit', unit: nfUnit, unitDisplay: unitStyle };\n list.push(new Intl.NumberFormat(locale, nfOpts).format(value));\n }\n return new ListFormat(locale, {\n type: 'unit',\n style: style === 'digital' ? 'short' : style,\n }).formatToParts(list);\n }\n format(duration) {\n return this.formatToParts(duration)\n .map(p => p.value)\n .join('');\n }\n}\n_DurationFormat_options = new WeakMap();\n","import DurationFormat from './duration-format-ponyfill.js';\nconst durationRe = /^[-+]?P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)W)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)S)?)?$/;\nexport const unitNames = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\nexport const isDuration = (str) => durationRe.test(str);\nexport class Duration {\n constructor(years = 0, months = 0, weeks = 0, days = 0, hours = 0, minutes = 0, seconds = 0, milliseconds = 0) {\n this.years = years;\n this.months = months;\n this.weeks = weeks;\n this.days = days;\n this.hours = hours;\n this.minutes = minutes;\n this.seconds = seconds;\n this.milliseconds = milliseconds;\n this.years || (this.years = 0);\n this.sign || (this.sign = Math.sign(this.years));\n this.months || (this.months = 0);\n this.sign || (this.sign = Math.sign(this.months));\n this.weeks || (this.weeks = 0);\n this.sign || (this.sign = Math.sign(this.weeks));\n this.days || (this.days = 0);\n this.sign || (this.sign = Math.sign(this.days));\n this.hours || (this.hours = 0);\n this.sign || (this.sign = Math.sign(this.hours));\n this.minutes || (this.minutes = 0);\n this.sign || (this.sign = Math.sign(this.minutes));\n this.seconds || (this.seconds = 0);\n this.sign || (this.sign = Math.sign(this.seconds));\n this.milliseconds || (this.milliseconds = 0);\n this.sign || (this.sign = Math.sign(this.milliseconds));\n this.blank = this.sign === 0;\n }\n abs() {\n return new Duration(Math.abs(this.years), Math.abs(this.months), Math.abs(this.weeks), Math.abs(this.days), Math.abs(this.hours), Math.abs(this.minutes), Math.abs(this.seconds), Math.abs(this.milliseconds));\n }\n static from(durationLike) {\n var _a;\n if (typeof durationLike === 'string') {\n const str = String(durationLike).trim();\n const factor = str.startsWith('-') ? -1 : 1;\n const parsed = (_a = str\n .match(durationRe)) === null || _a === void 0 ? void 0 : _a.slice(1).map(x => (Number(x) || 0) * factor);\n if (!parsed)\n return new Duration();\n return new Duration(...parsed);\n }\n else if (typeof durationLike === 'object') {\n const { years, months, weeks, days, hours, minutes, seconds, milliseconds } = durationLike;\n return new Duration(years, months, weeks, days, hours, minutes, seconds, milliseconds);\n }\n throw new RangeError('invalid duration');\n }\n static compare(one, two) {\n const now = Date.now();\n const oneApplied = Math.abs(applyDuration(now, Duration.from(one)).getTime() - now);\n const twoApplied = Math.abs(applyDuration(now, Duration.from(two)).getTime() - now);\n return oneApplied > twoApplied ? -1 : oneApplied < twoApplied ? 1 : 0;\n }\n toLocaleString(locale, opts) {\n return new DurationFormat(locale, opts).format(this);\n }\n}\nexport function applyDuration(date, duration) {\n const r = new Date(date);\n r.setFullYear(r.getFullYear() + duration.years);\n r.setMonth(r.getMonth() + duration.months);\n r.setDate(r.getDate() + duration.weeks * 7 + duration.days);\n r.setHours(r.getHours() + duration.hours);\n r.setMinutes(r.getMinutes() + duration.minutes);\n r.setSeconds(r.getSeconds() + duration.seconds);\n return r;\n}\nexport function elapsedTime(date, precision = 'second', now = Date.now()) {\n const delta = date.getTime() - now;\n if (delta === 0)\n return new Duration();\n const sign = Math.sign(delta);\n const ms = Math.abs(delta);\n const sec = Math.floor(ms / 1000);\n const min = Math.floor(sec / 60);\n const hr = Math.floor(min / 60);\n const day = Math.floor(hr / 24);\n const month = Math.floor(day / 30);\n const year = Math.floor(month / 12);\n const i = unitNames.indexOf(precision) || unitNames.length;\n return new Duration(i >= 0 ? year * sign : 0, i >= 1 ? (month - year * 12) * sign : 0, 0, i >= 3 ? (day - month * 30) * sign : 0, i >= 4 ? (hr - day * 24) * sign : 0, i >= 5 ? (min - hr * 60) * sign : 0, i >= 6 ? (sec - min * 60) * sign : 0, i >= 7 ? (ms - sec * 1000) * sign : 0);\n}\nexport function roundToSingleUnit(duration, { relativeTo = Date.now() } = {}) {\n relativeTo = new Date(relativeTo);\n if (duration.blank)\n return duration;\n const sign = duration.sign;\n let years = Math.abs(duration.years);\n let months = Math.abs(duration.months);\n let weeks = Math.abs(duration.weeks);\n let days = Math.abs(duration.days);\n let hours = Math.abs(duration.hours);\n let minutes = Math.abs(duration.minutes);\n let seconds = Math.abs(duration.seconds);\n let milliseconds = Math.abs(duration.milliseconds);\n if (milliseconds >= 900)\n seconds += Math.round(milliseconds / 1000);\n if (seconds || minutes || hours || days || weeks || months || years) {\n milliseconds = 0;\n }\n if (seconds >= 55)\n minutes += Math.round(seconds / 60);\n if (minutes || hours || days || weeks || months || years)\n seconds = 0;\n if (minutes >= 55)\n hours += Math.round(minutes / 60);\n if (hours || days || weeks || months || years)\n minutes = 0;\n if (days && hours >= 12)\n days += Math.round(hours / 24);\n if (!days && hours >= 21)\n days += Math.round(hours / 24);\n if (days || weeks || months || years)\n hours = 0;\n const currentYear = relativeTo.getFullYear();\n let currentMonth = relativeTo.getMonth();\n const currentDate = relativeTo.getDate();\n if (days >= 27 || (years + months && days)) {\n relativeTo.setDate(currentDate + days * sign);\n months += Math.abs(relativeTo.getFullYear() >= currentYear\n ? relativeTo.getMonth() - currentMonth\n : relativeTo.getMonth() - currentMonth - 12);\n if (months) {\n days = 0;\n }\n currentMonth = relativeTo.getMonth();\n }\n if (days >= 6)\n weeks += Math.round(days / 7);\n if (weeks || months || years)\n days = 0;\n if (weeks >= 4)\n months += Math.round(weeks / 4);\n if (months || years)\n weeks = 0;\n if (months >= 11 || (years && months)) {\n relativeTo.setMonth(relativeTo.getMonth() + months * sign);\n years += Math.abs(currentYear - relativeTo.getFullYear());\n }\n if (years)\n months = 0;\n return new Duration(years * sign, months * sign, weeks * sign, days * sign, hours * sign, minutes * sign, seconds * sign, milliseconds * sign);\n}\nexport function getRelativeTimeUnit(duration, opts) {\n const rounded = roundToSingleUnit(duration, opts);\n if (rounded.blank)\n return [0, 'second'];\n for (const unit of unitNames) {\n if (unit === 'millisecond')\n continue;\n const val = rounded[`${unit}s`];\n if (val)\n return [val, unit];\n }\n return [0, 'second'];\n}\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RelativeTimeElement_instances, _RelativeTimeElement_customTitle, _RelativeTimeElement_updating, _RelativeTimeElement_lang_get, _RelativeTimeElement_renderRoot, _RelativeTimeElement_getFormattedTitle, _RelativeTimeElement_resolveFormat, _RelativeTimeElement_getDurationFormat, _RelativeTimeElement_getRelativeFormat, _RelativeTimeElement_getDateTimeFormat, _RelativeTimeElement_onRelativeTimeUpdated;\nimport { Duration, elapsedTime, getRelativeTimeUnit, isDuration, roundToSingleUnit, unitNames } from './duration.js';\nconst HTMLElement = globalThis.HTMLElement || null;\nconst emptyDuration = new Duration();\nconst microEmptyDuration = new Duration(0, 0, 0, 0, 0, 1);\nexport class RelativeTimeUpdatedEvent extends Event {\n constructor(oldText, newText, oldTitle, newTitle) {\n super('relative-time-updated', { bubbles: true, composed: true });\n this.oldText = oldText;\n this.newText = newText;\n this.oldTitle = oldTitle;\n this.newTitle = newTitle;\n }\n}\nfunction getUnitFactor(el) {\n if (!el.date)\n return Infinity;\n if (el.format === 'duration' || el.format === 'elapsed') {\n const precision = el.precision;\n if (precision === 'second') {\n return 1000;\n }\n else if (precision === 'minute') {\n return 60 * 1000;\n }\n }\n const ms = Math.abs(Date.now() - el.date.getTime());\n if (ms < 60 * 1000)\n return 1000;\n if (ms < 60 * 60 * 1000)\n return 60 * 1000;\n return 60 * 60 * 1000;\n}\nconst dateObserver = new (class {\n constructor() {\n this.elements = new Set();\n this.time = Infinity;\n this.timer = -1;\n }\n observe(element) {\n if (this.elements.has(element))\n return;\n this.elements.add(element);\n const date = element.date;\n if (date && date.getTime()) {\n const ms = getUnitFactor(element);\n const time = Date.now() + ms;\n if (time < this.time) {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => this.update(), ms);\n this.time = time;\n }\n }\n }\n unobserve(element) {\n if (!this.elements.has(element))\n return;\n this.elements.delete(element);\n }\n update() {\n clearTimeout(this.timer);\n if (!this.elements.size)\n return;\n let nearestDistance = Infinity;\n for (const timeEl of this.elements) {\n nearestDistance = Math.min(nearestDistance, getUnitFactor(timeEl));\n timeEl.update();\n }\n this.time = Math.min(60 * 60 * 1000, nearestDistance);\n this.timer = setTimeout(() => this.update(), this.time);\n this.time += Date.now();\n }\n})();\nexport class RelativeTimeElement extends HTMLElement {\n constructor() {\n super(...arguments);\n _RelativeTimeElement_instances.add(this);\n _RelativeTimeElement_customTitle.set(this, false);\n _RelativeTimeElement_updating.set(this, false);\n _RelativeTimeElement_renderRoot.set(this, this.shadowRoot ? this.shadowRoot : this.attachShadow ? this.attachShadow({ mode: 'open' }) : this);\n _RelativeTimeElement_onRelativeTimeUpdated.set(this, null);\n }\n static define(tag = 'relative-time', registry = customElements) {\n registry.define(tag, this);\n return this;\n }\n static get observedAttributes() {\n return [\n 'second',\n 'minute',\n 'hour',\n 'weekday',\n 'day',\n 'month',\n 'year',\n 'time-zone-name',\n 'prefix',\n 'threshold',\n 'tense',\n 'precision',\n 'format',\n 'format-style',\n 'datetime',\n 'lang',\n 'title',\n ];\n }\n get onRelativeTimeUpdated() {\n return __classPrivateFieldGet(this, _RelativeTimeElement_onRelativeTimeUpdated, \"f\");\n }\n set onRelativeTimeUpdated(listener) {\n if (__classPrivateFieldGet(this, _RelativeTimeElement_onRelativeTimeUpdated, \"f\")) {\n this.removeEventListener('relative-time-updated', __classPrivateFieldGet(this, _RelativeTimeElement_onRelativeTimeUpdated, \"f\"));\n }\n __classPrivateFieldSet(this, _RelativeTimeElement_onRelativeTimeUpdated, typeof listener === 'object' || typeof listener === 'function' ? listener : null, \"f\");\n if (typeof listener === 'function') {\n this.addEventListener('relative-time-updated', listener);\n }\n }\n get second() {\n const second = this.getAttribute('second');\n if (second === 'numeric' || second === '2-digit')\n return second;\n }\n set second(value) {\n this.setAttribute('second', value || '');\n }\n get minute() {\n const minute = this.getAttribute('minute');\n if (minute === 'numeric' || minute === '2-digit')\n return minute;\n }\n set minute(value) {\n this.setAttribute('minute', value || '');\n }\n get hour() {\n const hour = this.getAttribute('hour');\n if (hour === 'numeric' || hour === '2-digit')\n return hour;\n }\n set hour(value) {\n this.setAttribute('hour', value || '');\n }\n get weekday() {\n const weekday = this.getAttribute('weekday');\n if (weekday === 'long' || weekday === 'short' || weekday === 'narrow') {\n return weekday;\n }\n if (this.format === 'datetime' && weekday !== '')\n return this.formatStyle;\n }\n set weekday(value) {\n this.setAttribute('weekday', value || '');\n }\n get day() {\n var _a;\n const day = (_a = this.getAttribute('day')) !== null && _a !== void 0 ? _a : 'numeric';\n if (day === 'numeric' || day === '2-digit')\n return day;\n }\n set day(value) {\n this.setAttribute('day', value || '');\n }\n get month() {\n const format = this.format;\n let month = this.getAttribute('month');\n if (month === '')\n return;\n month !== null && month !== void 0 ? month : (month = format === 'datetime' ? this.formatStyle : 'short');\n if (month === 'numeric' || month === '2-digit' || month === 'short' || month === 'long' || month === 'narrow') {\n return month;\n }\n }\n set month(value) {\n this.setAttribute('month', value || '');\n }\n get year() {\n var _a;\n const year = this.getAttribute('year');\n if (year === 'numeric' || year === '2-digit')\n return year;\n if (!this.hasAttribute('year') && new Date().getUTCFullYear() !== ((_a = this.date) === null || _a === void 0 ? void 0 : _a.getUTCFullYear())) {\n return 'numeric';\n }\n }\n set year(value) {\n this.setAttribute('year', value || '');\n }\n get timeZoneName() {\n const name = this.getAttribute('time-zone-name');\n if (name === 'long' ||\n name === 'short' ||\n name === 'shortOffset' ||\n name === 'longOffset' ||\n name === 'shortGeneric' ||\n name === 'longGeneric') {\n return name;\n }\n }\n set timeZoneName(value) {\n this.setAttribute('time-zone-name', value || '');\n }\n get prefix() {\n var _a;\n return (_a = this.getAttribute('prefix')) !== null && _a !== void 0 ? _a : (this.format === 'datetime' ? '' : 'on');\n }\n set prefix(value) {\n this.setAttribute('prefix', value);\n }\n get threshold() {\n const threshold = this.getAttribute('threshold');\n return threshold && isDuration(threshold) ? threshold : 'P30D';\n }\n set threshold(value) {\n this.setAttribute('threshold', value);\n }\n get tense() {\n const tense = this.getAttribute('tense');\n if (tense === 'past')\n return 'past';\n if (tense === 'future')\n return 'future';\n return 'auto';\n }\n set tense(value) {\n this.setAttribute('tense', value);\n }\n get precision() {\n const precision = this.getAttribute('precision');\n if (unitNames.includes(precision))\n return precision;\n if (this.format === 'micro')\n return 'minute';\n return 'second';\n }\n set precision(value) {\n this.setAttribute('precision', value);\n }\n get format() {\n const format = this.getAttribute('format');\n if (format === 'datetime')\n return 'datetime';\n if (format === 'relative')\n return 'relative';\n if (format === 'duration')\n return 'duration';\n if (format === 'micro')\n return 'micro';\n if (format === 'elapsed')\n return 'elapsed';\n return 'auto';\n }\n set format(value) {\n this.setAttribute('format', value);\n }\n get formatStyle() {\n const formatStyle = this.getAttribute('format-style');\n if (formatStyle === 'long')\n return 'long';\n if (formatStyle === 'short')\n return 'short';\n if (formatStyle === 'narrow')\n return 'narrow';\n const format = this.format;\n if (format === 'elapsed' || format === 'micro')\n return 'narrow';\n if (format === 'datetime')\n return 'short';\n return 'long';\n }\n set formatStyle(value) {\n this.setAttribute('format-style', value);\n }\n get datetime() {\n return this.getAttribute('datetime') || '';\n }\n set datetime(value) {\n this.setAttribute('datetime', value);\n }\n get date() {\n const parsed = Date.parse(this.datetime);\n return Number.isNaN(parsed) ? null : new Date(parsed);\n }\n set date(value) {\n this.datetime = (value === null || value === void 0 ? void 0 : value.toISOString()) || '';\n }\n connectedCallback() {\n this.update();\n }\n disconnectedCallback() {\n dateObserver.unobserve(this);\n }\n attributeChangedCallback(attrName, oldValue, newValue) {\n if (oldValue === newValue)\n return;\n if (attrName === 'title') {\n __classPrivateFieldSet(this, _RelativeTimeElement_customTitle, newValue !== null && (this.date && __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getFormattedTitle).call(this, this.date)) !== newValue, \"f\");\n }\n if (!__classPrivateFieldGet(this, _RelativeTimeElement_updating, \"f\") && !(attrName === 'title' && __classPrivateFieldGet(this, _RelativeTimeElement_customTitle, \"f\"))) {\n __classPrivateFieldSet(this, _RelativeTimeElement_updating, (async () => {\n await Promise.resolve();\n this.update();\n })(), \"f\");\n }\n }\n update() {\n const oldText = __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent || this.textContent || '';\n const oldTitle = this.getAttribute('title') || '';\n let newTitle = oldTitle;\n const date = this.date;\n if (typeof Intl === 'undefined' || !Intl.DateTimeFormat || !date) {\n __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent = oldText;\n return;\n }\n const now = Date.now();\n if (!__classPrivateFieldGet(this, _RelativeTimeElement_customTitle, \"f\")) {\n newTitle = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getFormattedTitle).call(this, date) || '';\n if (newTitle)\n this.setAttribute('title', newTitle);\n }\n const duration = elapsedTime(date, this.precision, now);\n const format = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_resolveFormat).call(this, duration);\n let newText = oldText;\n if (format === 'duration') {\n newText = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getDurationFormat).call(this, duration);\n }\n else if (format === 'relative') {\n newText = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getRelativeFormat).call(this, duration);\n }\n else {\n newText = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getDateTimeFormat).call(this, date);\n }\n if (newText) {\n __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent = newText;\n }\n else if (this.shadowRoot === __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\") && this.textContent) {\n __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent = this.textContent;\n }\n if (newText !== oldText || newTitle !== oldTitle) {\n this.dispatchEvent(new RelativeTimeUpdatedEvent(oldText, newText, oldTitle, newTitle));\n }\n if (format === 'relative' || format === 'duration') {\n dateObserver.observe(this);\n }\n else {\n dateObserver.unobserve(this);\n }\n __classPrivateFieldSet(this, _RelativeTimeElement_updating, false, \"f\");\n }\n}\n_RelativeTimeElement_customTitle = new WeakMap(), _RelativeTimeElement_updating = new WeakMap(), _RelativeTimeElement_renderRoot = new WeakMap(), _RelativeTimeElement_onRelativeTimeUpdated = new WeakMap(), _RelativeTimeElement_instances = new WeakSet(), _RelativeTimeElement_lang_get = function _RelativeTimeElement_lang_get() {\n var _a;\n return (((_a = this.closest('[lang]')) === null || _a === void 0 ? void 0 : _a.getAttribute('lang')) ||\n this.ownerDocument.documentElement.getAttribute('lang') ||\n 'default');\n}, _RelativeTimeElement_getFormattedTitle = function _RelativeTimeElement_getFormattedTitle(date) {\n return new Intl.DateTimeFormat(__classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get), {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n timeZoneName: 'short',\n }).format(date);\n}, _RelativeTimeElement_resolveFormat = function _RelativeTimeElement_resolveFormat(duration) {\n const format = this.format;\n if (format === 'datetime')\n return 'datetime';\n if (format === 'duration')\n return 'duration';\n if (format === 'elapsed')\n return 'duration';\n if (format === 'micro')\n return 'duration';\n if ((format === 'auto' || format === 'relative') && typeof Intl !== 'undefined' && Intl.RelativeTimeFormat) {\n const tense = this.tense;\n if (tense === 'past' || tense === 'future')\n return 'relative';\n if (Duration.compare(duration, this.threshold) === 1)\n return 'relative';\n }\n return 'datetime';\n}, _RelativeTimeElement_getDurationFormat = function _RelativeTimeElement_getDurationFormat(duration) {\n const locale = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get);\n const format = this.format;\n const style = this.formatStyle;\n const tense = this.tense;\n let empty = emptyDuration;\n if (format === 'micro') {\n duration = roundToSingleUnit(duration);\n empty = microEmptyDuration;\n if ((this.tense === 'past' && duration.sign !== -1) || (this.tense === 'future' && duration.sign !== 1)) {\n duration = microEmptyDuration;\n }\n }\n else if ((tense === 'past' && duration.sign !== -1) || (tense === 'future' && duration.sign !== 1)) {\n duration = empty;\n }\n const display = `${this.precision}sDisplay`;\n if (duration.blank) {\n return empty.toLocaleString(locale, { style, [display]: 'always' });\n }\n return duration.abs().toLocaleString(locale, { style });\n}, _RelativeTimeElement_getRelativeFormat = function _RelativeTimeElement_getRelativeFormat(duration) {\n const relativeFormat = new Intl.RelativeTimeFormat(__classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get), {\n numeric: 'auto',\n style: this.formatStyle,\n });\n const tense = this.tense;\n if (tense === 'future' && duration.sign !== 1)\n duration = emptyDuration;\n if (tense === 'past' && duration.sign !== -1)\n duration = emptyDuration;\n const [int, unit] = getRelativeTimeUnit(duration);\n if (unit === 'second' && int < 10) {\n return relativeFormat.format(0, 'second');\n }\n return relativeFormat.format(int, unit);\n}, _RelativeTimeElement_getDateTimeFormat = function _RelativeTimeElement_getDateTimeFormat(date) {\n const formatter = new Intl.DateTimeFormat(__classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get), {\n second: this.second,\n minute: this.minute,\n hour: this.hour,\n weekday: this.weekday,\n day: this.day,\n month: this.month,\n year: this.year,\n timeZoneName: this.timeZoneName,\n });\n return `${this.prefix} ${formatter.format(date)}`.trim();\n};\nexport default RelativeTimeElement;\n","import { RelativeTimeElement } from './relative-time-element.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\ntry {\n root.RelativeTimeElement = RelativeTimeElement.define();\n}\ncatch (e) {\n if (!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&\n !(e instanceof ReferenceError)) {\n throw e;\n }\n}\nexport default RelativeTimeElement;\nexport * from './relative-time-element.js';\n","function getTabs(el) {\n return Array.from(el.querySelectorAll('[role=\"tablist\"] [role=\"tab\"]')).filter(tab => tab instanceof HTMLElement && tab.closest(el.tagName) === el);\n}\nfunction getNavigationKeyCodes(vertical) {\n if (vertical) {\n return [\n ['ArrowDown', 'ArrowRight'],\n ['ArrowUp', 'ArrowLeft']\n ];\n }\n else {\n return [['ArrowRight'], ['ArrowLeft']];\n }\n}\nexport default class TabContainerElement extends HTMLElement {\n constructor() {\n super();\n this.addEventListener('keydown', (event) => {\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n if (target.closest(this.tagName) !== this)\n return;\n if (target.getAttribute('role') !== 'tab' && !target.closest('[role=\"tablist\"]'))\n return;\n const tabs = getTabs(this);\n const currentIndex = tabs.indexOf(tabs.find(tab => tab.matches('[aria-selected=\"true\"]')));\n const [incrementKeys, decrementKeys] = getNavigationKeyCodes(target.closest('[role=\"tablist\"]')?.getAttribute('aria-orientation') === 'vertical');\n if (incrementKeys.some(code => event.code === code)) {\n let index = currentIndex + 1;\n if (index >= tabs.length)\n index = 0;\n this.selectTab(index);\n }\n else if (decrementKeys.some(code => event.code === code)) {\n let index = currentIndex - 1;\n if (index < 0)\n index = tabs.length - 1;\n this.selectTab(index);\n }\n else if (event.code === 'Home') {\n this.selectTab(0);\n event.preventDefault();\n }\n else if (event.code === 'End') {\n this.selectTab(tabs.length - 1);\n event.preventDefault();\n }\n });\n this.addEventListener('click', (event) => {\n const tabs = getTabs(this);\n if (!(event.target instanceof Element))\n return;\n if (event.target.closest(this.tagName) !== this)\n return;\n const tab = event.target.closest('[role=\"tab\"]');\n if (!(tab instanceof HTMLElement) || !tab.closest('[role=\"tablist\"]'))\n return;\n const index = tabs.indexOf(tab);\n this.selectTab(index);\n });\n }\n connectedCallback() {\n for (const tab of getTabs(this)) {\n if (!tab.hasAttribute('aria-selected')) {\n tab.setAttribute('aria-selected', 'false');\n }\n if (!tab.hasAttribute('tabindex')) {\n if (tab.getAttribute('aria-selected') === 'true') {\n tab.setAttribute('tabindex', '0');\n }\n else {\n tab.setAttribute('tabindex', '-1');\n }\n }\n }\n }\n selectTab(index) {\n const tabs = getTabs(this);\n const panels = Array.from(this.querySelectorAll('[role=\"tabpanel\"]')).filter(panel => panel.closest(this.tagName) === this);\n /**\n * Out of bounds index\n */\n if (index > tabs.length - 1) {\n throw new RangeError(`Index \"${index}\" out of bounds`);\n }\n const selectedTab = tabs[index];\n const selectedPanel = panels[index];\n const cancelled = !this.dispatchEvent(new CustomEvent('tab-container-change', {\n bubbles: true,\n cancelable: true,\n detail: { relatedTarget: selectedPanel }\n }));\n if (cancelled)\n return;\n for (const tab of tabs) {\n tab.setAttribute('aria-selected', 'false');\n tab.setAttribute('tabindex', '-1');\n }\n for (const panel of panels) {\n panel.hidden = true;\n if (!panel.hasAttribute('tabindex') && !panel.hasAttribute('data-tab-container-no-tabstop')) {\n panel.setAttribute('tabindex', '0');\n }\n }\n selectedTab.setAttribute('aria-selected', 'true');\n selectedTab.setAttribute('tabindex', '0');\n selectedTab.focus();\n selectedPanel.hidden = false;\n this.dispatchEvent(new CustomEvent('tab-container-changed', {\n bubbles: true,\n detail: { relatedTarget: selectedPanel }\n }));\n }\n}\nif (!window.customElements.get('tab-container')) {\n window.TabContainerElement = TabContainerElement;\n window.customElements.define('tab-container', TabContainerElement);\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable custom-elements/expose-class-on-global */\nimport {controller, targets} from '@github/catalyst'\n\n@controller\nexport class PrimerMultiInputElement extends HTMLElement {\n @targets fields: HTMLInputElement[]\n\n activateField(name: string) {\n const fieldWithName = this.findField(name)\n if (!fieldWithName) return\n\n for (const field of this.fields) {\n if (field === fieldWithName) continue\n\n field.setAttribute('disabled', 'disabled')\n field.setAttribute('hidden', 'hidden')\n\n field.parentElement?.setAttribute('hidden', 'hidden')\n }\n\n fieldWithName.removeAttribute('disabled')\n fieldWithName.removeAttribute('hidden')\n fieldWithName.parentElement?.removeAttribute('hidden')\n }\n\n private findField(name: string): HTMLElement | null {\n for (const field of this.fields) {\n if (field.getAttribute('data-name') === name) {\n return field\n }\n }\n\n return null\n }\n}\n\ndeclare global {\n interface Window {\n PrimerMultiInputElement: typeof PrimerMultiInputElement\n }\n}\n\nif (!window.customElements.get('primer-multi-input')) {\n Object.assign(window, {PrimerMultiInputElement})\n window.customElements.define('primer-multi-input', PrimerMultiInputElement)\n}\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AutoCheckElement_onloadend;\nimport { debounce } from '@github/mini-throttle';\nconst states = new WeakMap();\nclass AutoCheckEvent extends Event {\n constructor(phase) {\n super(`auto-check-${phase}`, { bubbles: true });\n this.phase = phase;\n }\n get detail() {\n return this;\n }\n}\nclass AutoCheckValidationEvent extends AutoCheckEvent {\n constructor(phase, message = '') {\n super(phase);\n this.phase = phase;\n this.message = message;\n }\n setValidity(message) {\n this.message = message;\n }\n}\nexport class AutoCheckCompleteEvent extends AutoCheckEvent {\n constructor() {\n super('complete');\n }\n}\nexport class AutoCheckSuccessEvent extends AutoCheckEvent {\n constructor(response) {\n super('success');\n this.response = response;\n }\n}\nexport class AutoCheckStartEvent extends AutoCheckValidationEvent {\n constructor() {\n super('start', 'Verifying…');\n }\n}\nexport class AutoCheckErrorEvent extends AutoCheckValidationEvent {\n constructor(response) {\n super('error', 'Validation failed');\n this.response = response;\n }\n}\nexport class AutoCheckSendEvent extends AutoCheckEvent {\n constructor(body) {\n super('send');\n this.body = body;\n }\n}\nexport class AutoCheckElement extends HTMLElement {\n constructor() {\n super(...arguments);\n _AutoCheckElement_onloadend.set(this, null);\n }\n static define(tag = 'auto-check', registry = customElements) {\n registry.define(tag, this);\n return this;\n }\n get onloadend() {\n return __classPrivateFieldGet(this, _AutoCheckElement_onloadend, \"f\");\n }\n set onloadend(listener) {\n if (__classPrivateFieldGet(this, _AutoCheckElement_onloadend, \"f\")) {\n this.removeEventListener('loadend', __classPrivateFieldGet(this, _AutoCheckElement_onloadend, \"f\"));\n }\n __classPrivateFieldSet(this, _AutoCheckElement_onloadend, typeof listener === 'object' || typeof listener === 'function' ? listener : null, \"f\");\n if (typeof listener === 'function') {\n this.addEventListener('loadend', listener);\n }\n }\n connectedCallback() {\n const input = this.input;\n if (!input)\n return;\n const checker = debounce(check.bind(null, this), 300);\n const state = { check: checker, controller: null };\n states.set(this, state);\n input.addEventListener('input', setLoadingState);\n input.addEventListener('input', checker);\n input.autocomplete = 'off';\n input.spellcheck = false;\n }\n disconnectedCallback() {\n const input = this.input;\n if (!input)\n return;\n const state = states.get(this);\n if (!state)\n return;\n states.delete(this);\n input.removeEventListener('input', setLoadingState);\n input.removeEventListener('input', state.check);\n input.setCustomValidity('');\n }\n attributeChangedCallback(name) {\n if (name === 'required') {\n const input = this.input;\n if (!input)\n return;\n input.required = this.required;\n }\n }\n static get observedAttributes() {\n return ['required'];\n }\n get input() {\n return this.querySelector('input');\n }\n get src() {\n const src = this.getAttribute('src');\n if (!src)\n return '';\n const link = this.ownerDocument.createElement('a');\n link.href = src;\n return link.href;\n }\n set src(value) {\n this.setAttribute('src', value);\n }\n get csrf() {\n const csrfElement = this.querySelector('[data-csrf]');\n return this.getAttribute('csrf') || (csrfElement instanceof HTMLInputElement && csrfElement.value) || '';\n }\n set csrf(value) {\n this.setAttribute('csrf', value);\n }\n get required() {\n return this.hasAttribute('required');\n }\n set required(required) {\n if (required) {\n this.setAttribute('required', '');\n }\n else {\n this.removeAttribute('required');\n }\n }\n get csrfField() {\n return this.getAttribute('csrf-field') || 'authenticity_token';\n }\n set csrfField(value) {\n this.setAttribute('csrf-field', value);\n }\n}\n_AutoCheckElement_onloadend = new WeakMap();\nfunction setLoadingState(event) {\n const input = event.currentTarget;\n if (!(input instanceof HTMLInputElement))\n return;\n const autoCheckElement = input.closest('auto-check');\n if (!(autoCheckElement instanceof AutoCheckElement))\n return;\n const src = autoCheckElement.src;\n const csrf = autoCheckElement.csrf;\n const state = states.get(autoCheckElement);\n if (!src || !csrf || !state) {\n return;\n }\n const startEvent = new AutoCheckStartEvent();\n input.dispatchEvent(startEvent);\n if (autoCheckElement.required) {\n input.setCustomValidity(startEvent.message);\n }\n}\nfunction makeAbortController() {\n if ('AbortController' in window) {\n return new AbortController();\n }\n return {\n signal: null,\n abort() {\n },\n };\n}\nasync function fetchWithNetworkEvents(el, url, options) {\n try {\n const response = await fetch(url, options);\n el.dispatchEvent(new Event('load'));\n el.dispatchEvent(new Event('loadend'));\n return response;\n }\n catch (error) {\n if (error.name !== 'AbortError') {\n el.dispatchEvent(new Event('error'));\n el.dispatchEvent(new Event('loadend'));\n }\n throw error;\n }\n}\nasync function check(autoCheckElement) {\n const input = autoCheckElement.input;\n if (!input) {\n return;\n }\n const csrfField = autoCheckElement.csrfField;\n const src = autoCheckElement.src;\n const csrf = autoCheckElement.csrf;\n const state = states.get(autoCheckElement);\n if (!src || !csrf || !state) {\n if (autoCheckElement.required) {\n input.setCustomValidity('');\n }\n return;\n }\n if (!input.value.trim()) {\n if (autoCheckElement.required) {\n input.setCustomValidity('');\n }\n return;\n }\n const body = new FormData();\n body.append(csrfField, csrf);\n body.append('value', input.value);\n input.dispatchEvent(new AutoCheckSendEvent(body));\n if (state.controller) {\n state.controller.abort();\n }\n else {\n autoCheckElement.dispatchEvent(new Event('loadstart'));\n }\n state.controller = makeAbortController();\n try {\n const response = await fetchWithNetworkEvents(autoCheckElement, src, {\n credentials: 'same-origin',\n signal: state.controller.signal,\n method: 'POST',\n body,\n });\n if (response.ok) {\n if (autoCheckElement.required) {\n input.setCustomValidity('');\n }\n input.dispatchEvent(new AutoCheckSuccessEvent(response.clone()));\n }\n else {\n const event = new AutoCheckErrorEvent(response.clone());\n input.dispatchEvent(event);\n if (autoCheckElement.required) {\n input.setCustomValidity(event.message);\n }\n }\n state.controller = null;\n input.dispatchEvent(new AutoCheckCompleteEvent());\n }\n catch (error) {\n if (error.name !== 'AbortError') {\n state.controller = null;\n input.dispatchEvent(new AutoCheckCompleteEvent());\n }\n }\n}\nexport default AutoCheckElement;\n","import { AutoCheckElement } from './auto-check-element.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\ntry {\n root.AutoCheckElement = AutoCheckElement.define();\n}\ncatch (e) {\n if (!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&\n !(e instanceof ReferenceError)) {\n throw e;\n }\n}\nexport default AutoCheckElement;\nexport * from './auto-check-element.js';\n","import '@github/auto-check-element'\nimport {controller, target} from '@github/catalyst'\n\n// eslint-disable-next-line custom-elements/expose-class-on-global\n@controller\n// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\nclass PrimerTextFieldElement extends HTMLElement {\n @target inputElement: HTMLInputElement\n @target validationElement: HTMLElement\n @target validationMessageElement: HTMLElement\n\n #abortController: AbortController | null\n\n connectedCallback(): void {\n this.#abortController?.abort()\n const {signal} = (this.#abortController = new AbortController())\n\n this.inputElement.addEventListener(\n 'auto-check-success',\n () => {\n this.clearError()\n },\n {signal}\n )\n\n this.inputElement.addEventListener(\n 'auto-check-error',\n async (event: any) => {\n const errorMessage = await event.detail.response.text()\n this.setError(errorMessage)\n },\n {signal}\n )\n }\n\n disconnectedCallback() {\n this.#abortController?.abort()\n }\n\n clearContents() {\n this.inputElement.value = ''\n this.inputElement.focus()\n }\n\n clearError(): void {\n this.inputElement.removeAttribute('invalid')\n this.validationElement.hidden = true\n this.validationMessageElement.textContent = ''\n }\n\n setError(message: string): void {\n this.validationMessageElement.textContent = message\n this.validationElement.hidden = false\n this.inputElement.setAttribute('invalid', 'true')\n }\n}\n","import {controller, target} from '@github/catalyst'\n\n@controller\nexport class ToggleSwitchInputElement extends HTMLElement {\n @target validationElement: HTMLElement\n @target validationMessageElement: HTMLElement\n\n connectedCallback() {\n this.addEventListener('toggleSwitchError', (event: Event) => {\n this.validationMessageElement.innerText = (event as CustomEvent).detail\n this.validationElement.removeAttribute('hidden')\n })\n\n this.addEventListener('toggleSwitchSuccess', () => {\n this.validationMessageElement.innerText = ''\n this.validationElement.setAttribute('hidden', 'hidden')\n })\n }\n}\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _IncludeFragmentElement_instances, _IncludeFragmentElement_busy, _IncludeFragmentElement_observer, _IncludeFragmentElement_handleData, _IncludeFragmentElement_getData, _IncludeFragmentElement_getStringOrErrorData, _IncludeFragmentElement_task, _IncludeFragmentElement_fetchDataWithEvents;\nconst privateData = new WeakMap();\nfunction isWildcard(accept) {\n return accept && !!accept.split(',').find(x => x.match(/^\\s*\\*\\/\\*/));\n}\nlet cspTrustedTypesPolicyPromise = null;\nexport default class IncludeFragmentElement extends HTMLElement {\n static setCSPTrustedTypesPolicy(policy) {\n cspTrustedTypesPolicyPromise = policy === null ? policy : Promise.resolve(policy);\n }\n static get observedAttributes() {\n return ['src', 'loading'];\n }\n get src() {\n const src = this.getAttribute('src');\n if (src) {\n const link = this.ownerDocument.createElement('a');\n link.href = src;\n return link.href;\n }\n else {\n return '';\n }\n }\n set src(val) {\n this.setAttribute('src', val);\n }\n get loading() {\n if (this.getAttribute('loading') === 'lazy')\n return 'lazy';\n return 'eager';\n }\n set loading(value) {\n this.setAttribute('loading', value);\n }\n get accept() {\n return this.getAttribute('accept') || '';\n }\n set accept(val) {\n this.setAttribute('accept', val);\n }\n get data() {\n return __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_getStringOrErrorData).call(this);\n }\n attributeChangedCallback(attribute, oldVal) {\n if (attribute === 'src') {\n if (this.isConnected && this.loading === 'eager') {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n }\n else if (attribute === 'loading') {\n if (this.isConnected && oldVal !== 'eager' && this.loading === 'eager') {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n }\n }\n constructor() {\n super();\n _IncludeFragmentElement_instances.add(this);\n _IncludeFragmentElement_busy.set(this, false);\n _IncludeFragmentElement_observer.set(this, new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n const { target } = entry;\n __classPrivateFieldGet(this, _IncludeFragmentElement_observer, \"f\").unobserve(target);\n if (!(target instanceof IncludeFragmentElement))\n return;\n if (target.loading === 'lazy') {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n }\n }\n }, {\n rootMargin: '0px 0px 256px 0px',\n threshold: 0.01\n }));\n const shadowRoot = this.attachShadow({ mode: 'open' });\n const style = document.createElement('style');\n style.textContent = `:host {display: block;}`;\n shadowRoot.append(style, document.createElement('slot'));\n }\n connectedCallback() {\n if (this.src && this.loading === 'eager') {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n if (this.loading === 'lazy') {\n __classPrivateFieldGet(this, _IncludeFragmentElement_observer, \"f\").observe(this);\n }\n }\n request() {\n const src = this.src;\n if (!src) {\n throw new Error('missing src');\n }\n return new Request(src, {\n method: 'GET',\n credentials: 'same-origin',\n headers: {\n Accept: this.accept || 'text/html'\n }\n });\n }\n load() {\n return __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_getStringOrErrorData).call(this);\n }\n fetch(request) {\n return fetch(request);\n }\n refetch() {\n privateData.delete(this);\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_handleData).call(this);\n }\n}\n_IncludeFragmentElement_busy = new WeakMap(), _IncludeFragmentElement_observer = new WeakMap(), _IncludeFragmentElement_instances = new WeakSet(), _IncludeFragmentElement_handleData = async function _IncludeFragmentElement_handleData() {\n if (__classPrivateFieldGet(this, _IncludeFragmentElement_busy, \"f\"))\n return;\n __classPrivateFieldSet(this, _IncludeFragmentElement_busy, true, \"f\");\n __classPrivateFieldGet(this, _IncludeFragmentElement_observer, \"f\").unobserve(this);\n try {\n const data = await __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_getData).call(this);\n if (data instanceof Error) {\n throw data;\n }\n const dataTreatedAsString = data;\n const template = document.createElement('template');\n template.innerHTML = dataTreatedAsString;\n const fragment = document.importNode(template.content, true);\n const canceled = !this.dispatchEvent(new CustomEvent('include-fragment-replace', { cancelable: true, detail: { fragment } }));\n if (canceled) {\n __classPrivateFieldSet(this, _IncludeFragmentElement_busy, false, \"f\");\n return;\n }\n this.replaceWith(fragment);\n this.dispatchEvent(new CustomEvent('include-fragment-replaced'));\n }\n catch (_a) {\n this.classList.add('is-error');\n }\n finally {\n __classPrivateFieldSet(this, _IncludeFragmentElement_busy, false, \"f\");\n }\n}, _IncludeFragmentElement_getData = async function _IncludeFragmentElement_getData() {\n const src = this.src;\n const cachedData = privateData.get(this);\n if (cachedData && cachedData.src === src) {\n return cachedData.data;\n }\n else {\n let data;\n if (src) {\n data = __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_fetchDataWithEvents).call(this);\n }\n else {\n data = Promise.reject(new Error('missing src'));\n }\n privateData.set(this, { src, data });\n return data;\n }\n}, _IncludeFragmentElement_getStringOrErrorData = async function _IncludeFragmentElement_getStringOrErrorData() {\n const data = await __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_getData).call(this);\n if (data instanceof Error) {\n throw data;\n }\n return data.toString();\n}, _IncludeFragmentElement_task = async function _IncludeFragmentElement_task(eventsToDispatch) {\n await new Promise(resolve => setTimeout(resolve, 0));\n for (const eventType of eventsToDispatch) {\n this.dispatchEvent(new Event(eventType));\n }\n}, _IncludeFragmentElement_fetchDataWithEvents = async function _IncludeFragmentElement_fetchDataWithEvents() {\n try {\n await __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_task).call(this, ['loadstart']);\n const response = await this.fetch(this.request());\n if (response.status !== 200) {\n throw new Error(`Failed to load resource: the server responded with a status of ${response.status}`);\n }\n const ct = response.headers.get('Content-Type');\n if (!isWildcard(this.accept) && (!ct || !ct.includes(this.accept ? this.accept : 'text/html'))) {\n throw new Error(`Failed to load resource: expected ${this.accept || 'text/html'} but was ${ct}`);\n }\n const responseText = await response.text();\n let data = responseText;\n if (cspTrustedTypesPolicyPromise) {\n const cspTrustedTypesPolicy = await cspTrustedTypesPolicyPromise;\n data = cspTrustedTypesPolicy.createHTML(responseText, response);\n }\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_task).call(this, ['load', 'loadend']);\n return data;\n }\n catch (error) {\n __classPrivateFieldGet(this, _IncludeFragmentElement_instances, \"m\", _IncludeFragmentElement_task).call(this, ['error', 'loadend']);\n throw error;\n }\n};\nif (!window.customElements.get('include-fragment')) {\n window.IncludeFragmentElement = IncludeFragmentElement;\n window.customElements.define('include-fragment', IncludeFragmentElement);\n}\n","import '@github/include-fragment-element'\n\nconst popoverSelector = (() => {\n try {\n document.querySelector(':open')\n return ':open'\n } catch {\n return '.\\\\:open'\n }\n})()\n\ntype SelectVariant = 'none' | 'single' | 'multiple' | null\ntype SelectedItem = {\n label: string | null | undefined\n value: string | null | undefined\n element: Element\n}\n\nconst menuItemSelectors = ['[role=\"menuitem\"]', '[role=\"menuitemcheckbox\"]', '[role=\"menuitemradio\"]']\n\nexport class ActionMenuElement extends HTMLElement {\n #abortController: AbortController\n #originalLabel = ''\n #inputName = ''\n\n get selectVariant(): SelectVariant {\n return this.getAttribute('data-select-variant') as SelectVariant\n }\n\n set selectVariant(variant: SelectVariant) {\n if (variant) {\n this.setAttribute('data-select-variant', variant)\n } else {\n this.removeAttribute('variant')\n }\n }\n\n get dynamicLabelPrefix(): string {\n const prefix = this.getAttribute('data-dynamic-label-prefix')\n if (!prefix) return ''\n return `${prefix}:`\n }\n\n set dynamicLabelPrefix(value: string) {\n this.setAttribute('data-dynamic-label', value)\n }\n\n get dynamicLabel(): boolean {\n return this.hasAttribute('data-dynamic-label')\n }\n\n set dynamicLabel(value: boolean) {\n this.toggleAttribute('data-dynamic-label', value)\n }\n\n get popoverElement(): HTMLElement | null {\n return this.querySelector('[popover]')\n }\n\n get invokerElement(): HTMLElement | null {\n const id = this.querySelector('[role=menu]')?.id\n if (!id) return null\n for (const el of this.querySelectorAll(`[aria-controls]`)) {\n if (el.getAttribute('aria-controls') === id) return el as HTMLElement\n }\n return null\n }\n\n get invokerLabel(): HTMLElement | null {\n if (!this.invokerElement) return null\n return this.invokerElement.querySelector('.Button-label')\n }\n\n get selectedItems(): SelectedItem[] {\n const selectedItems = this.querySelectorAll('[aria-checked=true]')\n const results: SelectedItem[] = []\n\n for (const selectedItem of selectedItems) {\n const labelEl = selectedItem.querySelector('.ActionListItem-label')\n\n results.push({\n label: labelEl?.textContent,\n value: selectedItem?.getAttribute('data-value'),\n element: selectedItem\n })\n }\n\n return results\n }\n\n connectedCallback() {\n const {signal} = (this.#abortController = new AbortController())\n this.addEventListener('keydown', this, {signal})\n this.addEventListener('click', this, {signal})\n this.addEventListener('mouseover', this, {signal})\n this.addEventListener('focusout', this, {signal})\n this.#setDynamicLabel()\n this.#updateInput()\n }\n\n disconnectedCallback() {\n this.#abortController.abort()\n }\n\n handleEvent(event: Event) {\n if (event.target === this.invokerElement && this.#isEnterKeydown(event)) {\n if (this.#firstItem) {\n event.preventDefault()\n this.popoverElement?.showPopover()\n this.#firstItem.focus()\n return\n }\n }\n\n if (!this.popoverElement?.matches(popoverSelector)) return\n\n if (event.type === 'focusout' && !this.contains((event as FocusEvent).relatedTarget as Node)) {\n this.popoverElement?.hidePopover()\n } else if (this.#isEnterKeydown(event) || (event instanceof MouseEvent && event.type === 'click')) {\n const item = (event.target as Element).closest(menuItemSelectors.join(','))?.closest('li')\n if (!item) return\n const ariaChecked = item.getAttribute('aria-checked')\n const checked = ariaChecked !== 'true'\n item.setAttribute('aria-checked', `${checked}`)\n if (this.selectVariant === 'single') {\n const selector = menuItemSelectors.map(s => `li[aria-checked] ${s}`).join(',')\n for (const checkedItemContent of this.querySelectorAll(selector)) {\n const checkedItem = checkedItemContent.closest('li')!\n if (checkedItem !== item) {\n checkedItem.setAttribute('aria-checked', 'false')\n }\n }\n this.#setDynamicLabel()\n }\n\n this.#updateInput()\n\n if (event instanceof KeyboardEvent && event.target instanceof HTMLButtonElement) {\n // prevent buttons from being clicked twice\n event.preventDefault()\n }\n // Hide popover after current event loop to prevent changes in focus from\n // altering the target of the event. Not doing this specifically affects\n // tags. It causes the event to be sent to the currently focused element\n // instead of the anchor, which effectively prevents navigation, i.e. it\n // appears as if hitting enter does nothing. Curiously, clicking instead\n // works fine.\n if (this.selectVariant !== 'multiple') {\n setTimeout(() => this.popoverElement?.hidePopover())\n }\n }\n }\n\n #setDynamicLabel() {\n if (!this.dynamicLabel) return\n const invokerLabel = this.invokerLabel\n if (!invokerLabel) return\n this.#originalLabel ||= invokerLabel.textContent || ''\n const itemLabel = this.querySelector('[aria-checked=true] .ActionListItem-label')\n if (itemLabel && this.dynamicLabel) {\n const prefixSpan = document.createElement('span')\n prefixSpan.classList.add('color-fg-muted')\n const contentSpan = document.createElement('span')\n prefixSpan.textContent = this.dynamicLabelPrefix\n contentSpan.textContent = itemLabel.textContent || ''\n invokerLabel.replaceChildren(prefixSpan, contentSpan)\n } else {\n invokerLabel.textContent = this.#originalLabel\n }\n }\n\n #updateInput() {\n if (this.selectVariant === 'single') {\n const input = this.querySelector(`[data-list-inputs=true] input`) as HTMLInputElement | null\n if (!input) return\n\n const selectedItem = this.selectedItems[0]\n\n if (selectedItem) {\n input.value = (selectedItem.value || selectedItem.label || '').trim()\n input.removeAttribute('disabled')\n } else {\n input.setAttribute('disabled', 'disabled')\n }\n } else if (this.selectVariant !== 'none') {\n // multiple select variant\n const inputList = this.querySelector('[data-list-inputs=true]')\n if (!inputList) return\n\n const inputs = inputList.querySelectorAll('input')\n\n if (inputs.length > 0) {\n this.#inputName ||= (inputs[0] as HTMLInputElement).name\n }\n\n for (const selectedItem of this.selectedItems) {\n const newInput = document.createElement('input')\n newInput.setAttribute('data-list-input', 'true')\n newInput.type = 'hidden'\n newInput.autocomplete = 'off'\n newInput.name = this.#inputName\n newInput.value = (selectedItem.value || selectedItem.label || '').trim()\n\n inputList.append(newInput)\n }\n\n for (const input of inputs) {\n input.remove()\n }\n }\n }\n\n #isEnterKeydown(event: Event): boolean {\n return (\n event instanceof KeyboardEvent &&\n event.type === 'keydown' &&\n !(event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) &&\n event.key === 'Enter'\n )\n }\n\n get #firstItem(): HTMLElement | null {\n return this.querySelector(menuItemSelectors.join(','))\n }\n}\n\nif (!window.customElements.get('action-menu')) {\n window.ActionMenuElement = ActionMenuElement\n window.customElements.define('action-menu', ActionMenuElement)\n}\n\ndeclare global {\n interface Window {\n ActionMenuElement: typeof ActionMenuElement\n }\n}\n"],"names":["ToggleEvent","Event","[object Object]","type","oldState","newState","init","super","this","String","popoverToggleTaskQueue","WeakMap","queuePopoverToggleEventTask","element","set","setTimeout","has","dispatchEvent","cancelable","topLayerElements","autoPopoverList","visibilityState","getPopoverVisibilityState","popover","get","popoverInvoker","checkPopoverValidity","expectedToBeShowing","isConnected","HTMLDialogElement","hasAttribute","document","fullscreenElement","getStackPosition","Array","from","ownerDocument","indexOf","topMostClickedPopover","target","clickedPopover","nearestInclusiveOpenPopover","invokerPopover","node","nodePopover","popoverTargetElement","parentElement","getRootNode","ShadowRoot","host","Document","nearestInclusiveTargetPopoverForInvoker","topMostAutoPopover","document2","pop","HTMLElement","isFocusable","focusTarget","hidden","HTMLButtonElement","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLOptGroupElement","HTMLOptionElement","HTMLFieldSetElement","disabled","HTMLAnchorElement","href","tabIndex","popoverFocusingSteps","subject","shadowRoot","delegatesFocus","whereToLook","autoFocusDelegate","querySelector","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","descendant","currentNode","nextNode","focusDelegate","focus","previouslyFocusedElements","showPopover","shouldRestoreFocus","originalType","getAttribute","hideAllPopoversUntil","newPopover","popoverPositions","Map","i","topMostPopoverAncestor2","candidate","candidateAncestor","candidatePosition","checkAncestor","topMostPopoverAncestor","delete","originallyFocusedElement","activeElement","classList","add","Set","setInvokerAriaExpanded","hidePopover","focusPreviousElement","fireEvents","remove","previouslyFocusedElement","closeAllOpenPopovers","endpoint","lastToHide","foundEndpoint","size","popoverPointerDownTargets","lightDismissOpenPopovers","event","isTrusted","composedPath","ancestor","sameTarget","initialAriaExpandedValue","el","force","setAttribute","initialValue","removeAttribute","prototype","window","Object","defineProperties","enumerable","configurable","value","toLowerCase","togglePopover","popoverTargetAssociatedElements","applyPopoverInvokerElementMixin","ElementClass","targetElement","Element","TypeError","localName","form","root","idref","getElementById","popoverTargetAction","handleInvokerActivation","invoker","closest","visibility","popoverTargetAttributeActivationBehavior","onKeydown","key","addEventListener","addEventListeners","apply","DetailsMenuElement","preload","src","details","summary","subscriptions","fromEvent","e","trackComposition","shouldCommit","menu","KeyboardEvent","state","states","isComposing","isSummaryFocused","tagName","close","preventDefault","stopPropagation","sibling","ctrlBindings","ctrlKey","selected","isMenuItem","click","keydown","loadFragment","once","querySelectorAll","opened","contains","closeCurrentMenu","NullSubscription","focusOnOpen","loaded","sub","unsubscribe","eventName","onNext","options","removeEventListener","loader","autofocus","isMouse","focusFirstItem","input","next","index","found","def","length","navigator","userAgent","match","menuitem","checked","commit","CustomEvent","detail","relatedTarget","item","button","text","textEl","textContent","labelText","html","contentsEl","innerHTML","labelHTML","updateLabel","checkState","toString","indeterminate","updateChecked","role","__decorate","decorators","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__classPrivateFieldGet","receiver","kind","f","call","__classPrivateFieldSet","customElements","define","alternateOrders","outside-top","outside-bottom","outside-left","outside-right","alternateAlignments","start","end","center","getAnchoredPosition","floatingElement","anchorElement","settings","parentNode","getComputedStyle","position","body","getPositionedParent","clippingRect","overflow","clippingNode","elemRect","getBoundingClientRect","elemStyle","borderTop","borderLeft","borderRight","borderBottom","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","map","v","parseInt","top","left","width","height","Math","max","innerHeight","Infinity","getClippingRect","parentElementStyle","parentElementRect","viewportRect","relativePosition","floatingRect","anchorRect","side","align","allowOutOfBounds","anchorOffset","alignmentOffset","relativeViewportRect","pos","calculatePosition","anchorSide","anchorAlign","alternateOrder","positionAttempt","prevSide","shouldRecalculatePosition","nextSide","alternateAlignment","alignmentAttempt","prevAlign","shouldRecalculateAlignment","nextAlign","assign","pureCalculateAnchoredPosition","_a","_b","_c","_d","_e","positionDefaults","startsWith","getDefaultSettings","elementDimensions","anchorPosition","anchorRight","anchorBottom","currentPos","containerDimensions","getFocusableChild","container","lastChild","strict","acceptFn","onlyTabbable","isTabbable","acceptNode","FILTER_ACCEPT","FILTER_SKIP","reverse","firstChild","previousNode","iterateFocusableElements","elem","disabledAttrInert","includes","hiddenInert","hiddenInputInert","sentinelInert","sizeInert","offsetWidth","offsetHeight","visibilityInert","clientRectsInert","getClientRects","signalSupported","noop","create","signal","originalAddEventListener","EventTarget","name","originalCallback","optionsOrCapture","AbortSignal","monkeyPatch","suspendedTrapStack","activeTrap","focusTrap","initialFocus","abortSignal","controller","AbortController","sentinelStart","createElement","onfocus","lastFocusableChild","sentinelEnd","lastFocusedChild","ensureTrapZoneHasFocus","focusedElement","firstFocusableChild","prepend","append","wrappingController","abort","followSignal","suspendedTrap","push","undefined","sentinels","getElementsByClassName","suspendedTrapIndex","findIndex","t","splice","trapToReactivate","originalSignal","tryReactivate","capture","updateWhenVisible","anchors","intersectionObserver","resizeObserver","updateVisibleAnchors","anchor","update","IntersectionObserver","entries","entry","isIntersecting","ResizeObserver","observe","documentElement","AnchoredPositionElement","_AnchoredPositionElement_anchorElement","_AnchoredPositionElement_animationFrame","alias","idRef","Number","toggleAttribute","cancelAnimationFrame","requestAnimationFrame","style","observedAttributes","menuItemSelector","popoverSelector","getMnemonicFor","trim","printable","FocusGroupElement","_FocusGroupElement_abortController","nowrap","direction","retain","mnemonics","matches","items","_FocusGroupElement_instances","_FocusGroupElement_items_get","test","mnemonic","offset","focusEl","at","min","startPositions","dragStartPositions","constructedElements","moveCropArea","currentTarget","ImageCropElement","box","image","deltaX","deltaY","MouseEvent","pageX","dragStartX","pageY","dragStartY","TouchEvent","changedTouches","x","offsetLeft","y","offsetTop","fireChangeEvent","updateCropArea","getShadowHost","rect","delta","setInitialPosition","startX","startY","pageXOffset","pageYOffset","updateDimensions","rootNode","startUpdate","passive","reposition","newSide","abs","round","clientWidth","clientHeight","stopUpdate","result","ratio","naturalWidth","slottedInput","bubbles","attachShadow","mode","HTMLImageElement","val","attribute","oldValue","newValue","focusIfNeeded","overlayStack","clickHandler","dialogId","dialog","ModalDialogElement","openButton","show","topLevelDialog","id","keydownHandler","altKey","metaKey","shiftKey","mousedownHandler","upEvent","_ModalDialogElement_focusAbortController","open","_ModalDialogElement_instances","_ModalDialogElement_overlayBackdrop_get","paddingRight","innerWidth","aborted","showButtons","closedNotCancelled","dialogEvent","controllers","WeakSet","bindShadow","bindElements","listenForBind","observers","closed","observer","MutationObserver","mutations","mutation","bindActions","addedNodes","childList","subtree","attributeFilter","subscription","disconnect","handleEvent","binding","bindings","tag","method","shadowController","action","split","eventSep","lastIndexOf","methodSep","slice","dasherize","str","description","replace","mustDasherize","dashed","DOMException","attrKey","initialized","initializeAttrs","instance","names","proto","getPrototypeOf","prefix","constructor","attrPrefix","meta","descriptor","symbol","Symbol","for","CatalystDelegate","classObject","delegate","connectedCallback","disconnectedCallback","attributeChangedCallback","attributes","observed","attrToAttributeName","concat","defineObservedAttributes","register","upgrade","template","content","cloneNode","autoShadowRoot","bind","hasOwnProperty","parent","findTarget","targets","findTargets","Promise","resolve","readyState","listenerOptions","handler","NavListElement","setShowMoreItemState","showMoreDisabled","showMoreItem","toggle","currentPage","totalPages","paginationSrc","itemId","selectedItem","_NavListElement_instances","_NavListElement_findSelectedNavItemById","_NavListElement_select","_NavListElement_findSelectedNavItemByHref","nextElementSibling","itemIsExpanded","collapseItem","expandItem","button_id","paginationURL","URL","location","origin","searchParams","response","fetch","ok","err","fragment","_NavListElement_parseHTML","listId","focusMarkers","importNode","navItem","selectedNavItem","_NavListElement_findSelectedNavItemByCurrentLocation","pathname","currentlySelectedItem","_NavListElement_deselect","parentMenu","_NavListElement_findParentMenu","SegmentedControlElement","_SegmentedControlElement_instances","_SegmentedControlElement_updateButtonLabels","debounce","callback","wait","middle","timer","last","cancelled","fn","args","Date","now","cancel","clearTimeout","throttle","label","ToggleSwitchElement","link","csrf","csrfElement","csrfField","isDisabled","isRemote","setLoadingState","submitForm","performToggle","switch","isOn","turnOff","turnOn","disable","errorIcon","loadingSpinner","setFinishedState","message","error","enable","FormData","Error","credentials","headers","Requested-With","setSuccessState","setErrorState","opts","db","TOOLTIP_OPEN_CLASS","TOOLTIP_SR_ONLY_CLASS","DIRECTION_CLASSES","ToolTipElement","_ToolTipElement_abortController","_ToolTipElement_align","_ToolTipElement_side","_ToolTipElement_allowUpdatePosition","htmlFor","control","hiddenFromView","_ToolTipElement_instances","_ToolTipElement_update","_ToolTipElement_updateControlReference","_ToolTipElement_updateDirection","shadow","appendChild","styles","tooltip","_ToolTipElement_updatePosition","labelledBy","describedBy","XBannerElement","shouldReappear","setProperty","removeChild","Combobox","list","tabInsertsSuggestions","defaultFirstOption","random","keyboardEventHandler","combobox","clearSelection","navigate","keyboardBindings","compositionEventHandler","inputHandler","stop","commitWithElement","indicateDefaultOption","filter","visible","indexDiff","els","focusIndex","indexOfItem","newIndex","scrollTo","fireCommitEvent","scrollTop","containerBottom","bottom","inViewport","SCREEN_READER_DELAY","testScreenReaderDelay","Autocomplete","results","autoselectEnabled","feedback","clearButton","clientOptions","labelElem","interactingWithList","onInputChange","timeout","Rest","onResultsMouseDown","onInputBlur","onInputFocus","onCommit","handleClear","updateFeedbackForScreenReaders","firstOption","children","fetchResults","inputString","query","fetchOnEmpty","url","params","URLSearchParams","search","fetchResult","then","identifyOptions","allNewOptions","hasResults","numOptions","firstOptionValue","catch","_AutoCompleteElement_instances","_AutoCompleteElement_forElement","_AutoCompleteElement_inputElement","_AutoCompleteElement_reattachState","_AutoCompleteElement_requestController","__rest","s","p","getOwnPropertySymbols","propertyIsEnumerable","globalThis","AutoCompleteEvent","cspTrustedTypesPolicyPromise","AutoCompleteElement","registry","policy","forElement","inputElement","autocomplete","destroy","res","Accept","createHTML","AutocompleteElement","ReferenceError","copyNode","clipboard","writeText","selection","getSelection","reject","removeAllRanges","range","createRange","selectNodeContents","addRange","execCommand","copyText","createNode","copy","trigger","clicked","focused","blurred","ClipboardCopyElement","showSVG","svg","display","hideSVG","clipboardCopyElementTimers","currentTimeout","copyIcon","checkIcon","showCheck","showCopy","_DurationFormat_options","ListFormat","Intl","members","parts","partsTable","twoDigitFormatOptions","minimumIntegerDigits","DurationFormat","locale","prevStyle","hours","minutes","seconds","milliseconds","years","yearsDisplay","months","monthsDisplay","weeks","weeksDisplay","days","daysDisplay","hoursDisplay","minutesDisplay","secondsDisplay","millisecondsDisplay","duration","unit","nfUnit","unitStyle","nfOpts","unitDisplay","NumberFormat","format","formatToParts","join","durationRe","unitNames","Duration","sign","blank","durationLike","factor","parsed","RangeError","one","two","oneApplied","applyDuration","getTime","twoApplied","date","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","roundToSingleUnit","relativeTo","currentYear","currentMonth","currentDate","_RelativeTimeElement_instances","_RelativeTimeElement_customTitle","_RelativeTimeElement_updating","_RelativeTimeElement_lang_get","_RelativeTimeElement_renderRoot","_RelativeTimeElement_getFormattedTitle","_RelativeTimeElement_resolveFormat","_RelativeTimeElement_getDurationFormat","_RelativeTimeElement_getRelativeFormat","_RelativeTimeElement_getDateTimeFormat","_RelativeTimeElement_onRelativeTimeUpdated","emptyDuration","microEmptyDuration","RelativeTimeUpdatedEvent","oldText","newText","oldTitle","newTitle","composed","getUnitFactor","precision","ms","dateObserver","elements","time","nearestDistance","timeEl","RelativeTimeElement","onRelativeTimeUpdated","listener","second","minute","hour","weekday","formatStyle","day","month","year","getUTCFullYear","timeZoneName","threshold","tense","datetime","parse","isNaN","toISOString","unobserve","attrName","DateTimeFormat","sec","floor","hr","elapsedTime","RelativeTimeFormat","compare","empty","toLocaleString","relativeFormat","numeric","int","rounded","getRelativeTimeUnit","formatter","getTabs","tab","TabContainerElement","tabs","currentIndex","find","incrementKeys","decrementKeys","some","code","selectTab","panels","panel","selectedTab","selectedPanel","PrimerMultiInputElement","fieldWithName","findField","field","fields","_AutoCheckElement_onloadend","AutoCheckEvent","phase","AutoCheckValidationEvent","AutoCheckCompleteEvent","AutoCheckSuccessEvent","AutoCheckStartEvent","AutoCheckErrorEvent","AutoCheckSendEvent","AutoCheckElement","onloadend","checker","check","spellcheck","setCustomValidity","required","autoCheckElement","startEvent","async","fetchWithNetworkEvents","clone","PrimerTextFieldElement","_PrimerTextFieldElement_abortController","clearError","errorMessage","setError","validationElement","validationMessageElement","ToggleSwitchInputElement","innerText","_IncludeFragmentElement_instances","_IncludeFragmentElement_busy","_IncludeFragmentElement_observer","_IncludeFragmentElement_handleData","_IncludeFragmentElement_getData","_IncludeFragmentElement_getStringOrErrorData","_IncludeFragmentElement_task","_IncludeFragmentElement_fetchDataWithEvents","privateData","IncludeFragmentElement","loading","accept","data","oldVal","rootMargin","Request","request","dataTreatedAsString","replaceWith","cachedData","eventsToDispatch","eventType","status","ct","responseText","menuItemSelectors","ActionMenuElement","_ActionMenuElement_abortController","_ActionMenuElement_originalLabel","_ActionMenuElement_inputName","selectVariant","variant","dynamicLabelPrefix","dynamicLabel","popoverElement","invokerElement","invokerLabel","selectedItems","labelEl","_ActionMenuElement_instances","_ActionMenuElement_setDynamicLabel","_ActionMenuElement_updateInput","_ActionMenuElement_firstItem_get","_ActionMenuElement_isEnterKeydown","selector","checkedItemContent","checkedItem","itemLabel","prefixSpan","contentSpan","replaceChildren","inputList","inputs","newInput"],"mappings":"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"}