{"version":3,"file":"application-C9RDvOkF.js","sources":["../../../../node_modules/@github/include-fragment-element/dist/include-fragment-element.js","../../../../node_modules/@github/include-fragment-element/dist/include-fragment-element-define.js","../../../../node_modules/@github/remote-input-element/dist/index.js","../../../../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/lazy-define.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","../../../../app/components/primer/alpha/action_list.ts","../../../../node_modules/@primer/behaviors/dist/esm/anchored-position.mjs","../../../../node_modules/@primer/behaviors/dist/esm/utils/iterate-focusable-elements.mjs","../../../../node_modules/@primer/behaviors/dist/esm/polyfills/event-listener-signal.mjs","../../../../node_modules/@primer/behaviors/dist/esm/focus-trap.mjs","../../../../node_modules/@primer/behaviors/dist/esm/utils/user-agent.mjs","../../../../node_modules/@primer/behaviors/dist/esm/utils/unique-id.mjs","../../../../node_modules/@primer/behaviors/dist/esm/focus-zone.mjs","../../../../app/components/primer/alpha/action_bar_element.ts","../../../../node_modules/@github/details-menu-element/dist/index.js","../../../../app/components/primer/anchored_position.ts","../../../../app/components/primer/dialog_helper.ts","../../../../node_modules/invokers-polyfill/invoker.js","../../../../node_modules/@oddbird/popover-polyfill/dist/popover.js","../../../../app/components/primer/focus_group.ts","../../../../app/components/primer/scrollable_region.ts","../../../../app/components/primer/utils.ts","../../../../app/components/primer/alpha/modal_dialog.ts","../../../../app/components/primer/beta/nav_list.ts","../../../../app/components/primer/beta/nav_list_group_element.ts","../../../../app/components/primer/alpha/segmented_control.ts","../../../../app/components/primer/alpha/toggle_switch.ts","../../../../app/components/primer/alpha/tool_tip.ts","../../../../app/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/clipboard.js","../../../../node_modules/@github/clipboard-copy-element/dist/clipboard-copy-element.js","../../../../node_modules/@github/clipboard-copy-element/dist/clipboard-copy-element-define.js","../../../../app/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/tab-container-element.js","../../../../node_modules/@github/tab-container-element/dist/tab-container-element-define.js","../../../../app/lib/primer/forms/primer_multi_input.ts","../../../../node_modules/@github/mini-throttle/dist/index.js","../../../../node_modules/@github/auto-check-element/dist/auto-check-element.js","../../../../node_modules/@github/auto-check-element/dist/auto-check-element-define.js","../../../../app/lib/primer/forms/primer_text_field.ts","../../../../app/lib/primer/forms/toggle_switch_input.ts","../../../../app/components/primer/alpha/action_menu/action_menu_element.ts","../../../../node_modules/@primer/live-region-element/dist/esm/index.js","../../../../app/components/primer/alpha/select_panel_element.ts","../../../../app/components/primer/beta/details_toggle_element.ts"],"sourcesContent":["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 class IncludeFragmentElement extends HTMLElement {\n constructor() {\n super(...arguments);\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 }\n static define(tag = 'include-fragment', 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 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 connectedCallback() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' });\n const style = document.createElement('style');\n style.textContent = `:host {display: block;}`;\n this.shadowRoot.append(style, document.createElement('slot'));\n }\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', {\n cancelable: true,\n detail: { fragment },\n }));\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};\n","import { IncludeFragmentElement } from './include-fragment-element.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\ntry {\n root.IncludeFragmentElement = IncludeFragmentElement.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 IncludeFragmentElement;\nexport * from './include-fragment-element.js';\n","const states = new WeakMap();\nclass RemoteInputElement extends HTMLElement {\n constructor() {\n super();\n const fetch = fetchResults.bind(null, this, true);\n const state = { currentQuery: null, oninput: debounce((e) => fetch(e)), fetch, controller: null };\n states.set(this, state);\n }\n static get observedAttributes() {\n return ['src'];\n }\n attributeChangedCallback(name, oldValue) {\n if (oldValue && name === 'src') {\n fetchResults(this, false);\n }\n }\n connectedCallback() {\n const input = this.input;\n if (!input)\n return;\n input.setAttribute('autocomplete', 'off');\n input.setAttribute('spellcheck', 'false');\n const state = states.get(this);\n if (!state)\n return;\n input.addEventListener('focus', state.fetch);\n input.addEventListener('change', state.fetch);\n input.addEventListener('input', state.oninput);\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 input.removeEventListener('focus', state.fetch);\n input.removeEventListener('change', state.fetch);\n input.removeEventListener('input', state.oninput);\n }\n get input() {\n const input = this.querySelector('input, textarea');\n return input instanceof HTMLInputElement || input instanceof HTMLTextAreaElement ? input : null;\n }\n get src() {\n return this.getAttribute('src') || '';\n }\n set src(url) {\n this.setAttribute('src', url);\n }\n}\nfunction makeAbortController() {\n if ('AbortController' in window) {\n return new AbortController();\n }\n return { signal: null, abort() { } };\n}\nasync function fetchResults(remoteInput, checkCurrentQuery, event) {\n const input = remoteInput.input;\n if (!input)\n return;\n const state = states.get(remoteInput);\n if (!state)\n return;\n const query = input.value;\n if (checkCurrentQuery && state.currentQuery === query)\n return;\n state.currentQuery = query;\n const src = remoteInput.src;\n if (!src)\n return;\n const resultsContainer = document.getElementById(remoteInput.getAttribute('aria-owns') || '');\n if (!resultsContainer)\n return;\n const url = new URL(src, window.location.href);\n const params = new URLSearchParams(url.search);\n params.append(remoteInput.getAttribute('param') || 'q', query);\n url.search = params.toString();\n if (state.controller) {\n state.controller.abort();\n }\n else {\n remoteInput.dispatchEvent(new CustomEvent('loadstart'));\n remoteInput.setAttribute('loading', '');\n }\n state.controller = makeAbortController();\n let response;\n let html = '';\n try {\n response = await fetchWithNetworkEvents(remoteInput, url.toString(), {\n signal: state.controller.signal,\n credentials: 'same-origin',\n headers: { accept: 'text/fragment+html' }\n });\n html = await response.text();\n remoteInput.removeAttribute('loading');\n state.controller = null;\n }\n catch (error) {\n if (error instanceof Error && error.name !== 'AbortError') {\n remoteInput.removeAttribute('loading');\n state.controller = null;\n }\n return;\n }\n if (response && response.ok) {\n resultsContainer.innerHTML = html;\n remoteInput.dispatchEvent(new CustomEvent('remote-input-success', { bubbles: true, detail: { \"eventType\": event ? event.type : undefined } }));\n }\n else {\n remoteInput.dispatchEvent(new CustomEvent('remote-input-error', { bubbles: true }));\n }\n}\nasync function fetchWithNetworkEvents(el, url, options) {\n try {\n const response = await fetch(url, options);\n el.dispatchEvent(new CustomEvent('load'));\n el.dispatchEvent(new CustomEvent('loadend'));\n return response;\n }\n catch (error) {\n if (error instanceof Error && (error === null || error === void 0 ? void 0 : error.name) !== 'AbortError') {\n el.dispatchEvent(new CustomEvent('error'));\n el.dispatchEvent(new CustomEvent('loadend'));\n }\n throw error;\n }\n}\nfunction debounce(callback) {\n let timeout;\n return function (args) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n clearTimeout(timeout);\n callback(args);\n }, 300);\n };\n}\nexport default RemoteInputElement;\nif (!window.customElements.get('remote-input')) {\n window.RemoteInputElement = RemoteInputElement;\n window.customElements.define('remote-input', RemoteInputElement);\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","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(element) {\n cancelAnimationFrame(timers.get(element) || 0);\n timers.set(element, requestAnimationFrame(() => {\n for (const tagName of dynamicElements.keys()) {\n const child = element instanceof Element && element.matches(tagName) ? element : element.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(element);\n }\n }\n }));\n}\nlet elementLoader;\nexport function lazyDefine(tagNameOrObj, singleCallback) {\n if (typeof tagNameOrObj === 'string' && singleCallback) {\n tagNameOrObj = { [tagNameOrObj]: singleCallback };\n }\n for (const [tagName, callback] of Object.entries(tagNameOrObj)) {\n if (!dynamicElements.has(tagName))\n dynamicElements.set(tagName, new Set());\n dynamicElements.get(tagName).add(callback);\n }\n observe(document);\n}\nexport function observe(target) {\n elementLoader || (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 scan(target);\n elementLoader.observe(target, { subtree: true, childList: true });\n}\n//# sourceMappingURL=lazy-define.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';\nimport { observe } from './lazy-define.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 observe(instance.shadowRoot);\n }\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","import {controller} from '@github/catalyst'\n\n// eslint-disable-next-line custom-elements/no-exports-with-element\nexport class ActionListTruncationObserver {\n resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n const action = entry.target\n\n if (action instanceof HTMLElement) {\n this.update(action)\n }\n }\n })\n\n constructor(el: HTMLElement) {\n this.resizeObserver.observe(el)\n }\n\n unobserve(el: HTMLElement) {\n this.resizeObserver.unobserve(el)\n }\n\n update(el: HTMLElement) {\n const items = el.querySelectorAll('li')\n\n for (const item of items) {\n const label = item.querySelector('.ActionListItem-label') as HTMLElement\n if (!label) continue\n const tooltip = item.querySelector('.ActionListItem-truncationTooltip') as HTMLElement\n if (!tooltip) continue\n\n const isTruncated = label.scrollWidth > label.clientWidth\n\n if (isTruncated) {\n tooltip.style.display = ''\n } else {\n tooltip.style.display = 'none'\n }\n }\n }\n}\n\n@controller\n// eslint-disable-next-line custom-elements/expose-class-on-global\nexport class ActionListElement extends HTMLElement {\n #truncationObserver: ActionListTruncationObserver\n\n connectedCallback() {\n this.#truncationObserver = new ActionListTruncationObserver(this)\n }\n\n disconnectedCallback() {\n this.#truncationObserver.unobserve(this)\n }\n}\n\ndeclare global {\n interface Window {\n ActionListElement: typeof ActionListElement\n }\n}\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};\nfunction 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 if (isOnTopLayer(element))\n return document.body;\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 isOnTopLayer(element) {\n var _a;\n if (element.tagName === 'DIALOG') {\n return true;\n }\n try {\n if (element.matches(':popover-open') && /native code/.test((_a = document.body.showPopover) === null || _a === void 0 ? void 0 : _a.toString())) {\n return true;\n }\n }\n catch (_b) {\n return false;\n }\n return false;\n}\nfunction getClippingRect(element) {\n let parentNode = element;\n while (parentNode !== null) {\n if (!(parentNode instanceof Element)) {\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 = Math.max(viewportRect.height + relativeViewportRect.top - floatingRect.height, 0);\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\nexport { getAnchoredPosition };\n","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}\nfunction getFocusableChild(container, lastChild = false) {\n return iterateFocusableElements(container, { reverse: lastChild, strict: true, onlyTabbable: true }).next().value;\n}\nfunction 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 style = getComputedStyle(elem);\n const sizeInert = elem.offsetWidth === 0 || elem.offsetHeight === 0;\n const visibilityInert = ['hidden', 'collapse'].includes(style.visibility);\n const displayInert = style.display === 'none' || !elem.offsetParent;\n const clientRectsInert = elem.getClientRects().length === 0;\n if (sizeInert || visibilityInert || clientRectsInert || displayInert) {\n return false;\n }\n }\n if (elem.getAttribute('tabindex') != null) {\n return true;\n }\n if (elem.getAttribute('contenteditable') === 'true' || elem.getAttribute('contenteditable') === 'plaintext-only') {\n return true;\n }\n if (elem instanceof HTMLAnchorElement && elem.getAttribute('href') == null) {\n return false;\n }\n return elem.tabIndex !== -1;\n}\nfunction isTabbable(elem, strict = false) {\n return isFocusable(elem, strict) && elem.getAttribute('tabindex') !== '-1';\n}\n\nexport { getFocusableChild, isFocusable, isTabbable, iterateFocusableElements };\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}\nfunction polyfill() {\n if (!featureSupported()) {\n monkeyPatch();\n signalSupported = true;\n }\n}\n\nexport { polyfill };\n","import { getFocusableChild, isTabbable } from './utils/iterate-focusable-elements.mjs';\nimport { polyfill } from './polyfills/event-listener-signal.mjs';\n\npolyfill();\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}\nfunction observeFocusTrap(container, sentinels) {\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.type === 'childList' && mutation.addedNodes.length) {\n const sentinelChildren = Array.from(mutation.addedNodes).filter(e => e instanceof HTMLElement && e.classList.contains('sentinel') && e.tagName === 'SPAN');\n if (sentinelChildren.length) {\n return;\n }\n const firstChild = container.firstElementChild;\n const lastChild = container.lastElementChild;\n const [sentinelStart, sentinelEnd] = sentinels;\n if (!(firstChild === null || firstChild === void 0 ? void 0 : firstChild.classList.contains('sentinel'))) {\n container.insertAdjacentElement('afterbegin', sentinelStart);\n }\n if (!(lastChild === null || lastChild === void 0 ? void 0 : lastChild.classList.contains('sentinel'))) {\n container.insertAdjacentElement('beforeend', sentinelEnd);\n }\n }\n }\n });\n observer.observe(container, { childList: true });\n return observer;\n}\nfunction 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 const observer = observeFocusTrap(container, [sentinelStart, 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 observer.disconnect();\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\nexport { focusTrap };\n","let isMac = undefined;\nfunction isMacOS() {\n if (isMac === undefined) {\n isMac = /^mac/i.test(window.navigator.platform);\n }\n return isMac;\n}\n\nexport { isMacOS };\n","let idSeed = 10000;\nfunction uniqueId() {\n return `__primer_id_${idSeed++}`;\n}\n\nexport { uniqueId };\n","import { polyfill } from './polyfills/event-listener-signal.mjs';\nimport { isMacOS } from './utils/user-agent.mjs';\nimport { iterateFocusableElements } from './utils/iterate-focusable-elements.mjs';\nimport { uniqueId } from './utils/unique-id.mjs';\n\npolyfill();\nvar FocusKeys;\n(function (FocusKeys) {\n FocusKeys[FocusKeys[\"ArrowHorizontal\"] = 1] = \"ArrowHorizontal\";\n FocusKeys[FocusKeys[\"ArrowVertical\"] = 2] = \"ArrowVertical\";\n FocusKeys[FocusKeys[\"JK\"] = 4] = \"JK\";\n FocusKeys[FocusKeys[\"HL\"] = 8] = \"HL\";\n FocusKeys[FocusKeys[\"HomeAndEnd\"] = 16] = \"HomeAndEnd\";\n FocusKeys[FocusKeys[\"PageUpDown\"] = 256] = \"PageUpDown\";\n FocusKeys[FocusKeys[\"WS\"] = 32] = \"WS\";\n FocusKeys[FocusKeys[\"AD\"] = 64] = \"AD\";\n FocusKeys[FocusKeys[\"Tab\"] = 128] = \"Tab\";\n FocusKeys[FocusKeys[\"Backspace\"] = 512] = \"Backspace\";\n FocusKeys[FocusKeys[\"ArrowAll\"] = 3] = \"ArrowAll\";\n FocusKeys[FocusKeys[\"HJKL\"] = 12] = \"HJKL\";\n FocusKeys[FocusKeys[\"WASD\"] = 96] = \"WASD\";\n FocusKeys[FocusKeys[\"All\"] = 511] = \"All\";\n})(FocusKeys || (FocusKeys = {}));\nconst KEY_TO_BIT = {\n ArrowLeft: FocusKeys.ArrowHorizontal,\n ArrowDown: FocusKeys.ArrowVertical,\n ArrowUp: FocusKeys.ArrowVertical,\n ArrowRight: FocusKeys.ArrowHorizontal,\n h: FocusKeys.HL,\n j: FocusKeys.JK,\n k: FocusKeys.JK,\n l: FocusKeys.HL,\n a: FocusKeys.AD,\n s: FocusKeys.WS,\n w: FocusKeys.WS,\n d: FocusKeys.AD,\n Tab: FocusKeys.Tab,\n Home: FocusKeys.HomeAndEnd,\n End: FocusKeys.HomeAndEnd,\n PageUp: FocusKeys.PageUpDown,\n PageDown: FocusKeys.PageUpDown,\n Backspace: FocusKeys.Backspace,\n};\nconst KEY_TO_DIRECTION = {\n ArrowLeft: 'previous',\n ArrowDown: 'next',\n ArrowUp: 'previous',\n ArrowRight: 'next',\n h: 'previous',\n j: 'next',\n k: 'previous',\n l: 'next',\n a: 'previous',\n s: 'next',\n w: 'previous',\n d: 'next',\n Tab: 'next',\n Home: 'start',\n End: 'end',\n PageUp: 'start',\n PageDown: 'end',\n Backspace: 'previous',\n};\nfunction getDirection(keyboardEvent) {\n const direction = KEY_TO_DIRECTION[keyboardEvent.key];\n if (keyboardEvent.key === 'Tab' && keyboardEvent.shiftKey) {\n return 'previous';\n }\n const isMac = isMacOS();\n if ((isMac && keyboardEvent.metaKey) || (!isMac && keyboardEvent.ctrlKey)) {\n if (keyboardEvent.key === 'ArrowLeft' || keyboardEvent.key === 'ArrowUp') {\n return 'start';\n }\n else if (keyboardEvent.key === 'ArrowRight' || keyboardEvent.key === 'ArrowDown') {\n return 'end';\n }\n }\n return direction;\n}\nfunction shouldIgnoreFocusHandling(keyboardEvent, activeElement) {\n const key = keyboardEvent.key;\n const keyLength = [...key].length;\n const isTextInput = (activeElement instanceof HTMLInputElement && activeElement.type === 'text') ||\n activeElement instanceof HTMLTextAreaElement;\n if (isTextInput && (keyLength === 1 || key === 'Home' || key === 'End')) {\n return true;\n }\n if (activeElement instanceof HTMLSelectElement) {\n if (keyLength === 1) {\n return true;\n }\n if (key === 'ArrowDown' && isMacOS() && !keyboardEvent.metaKey) {\n return true;\n }\n if (key === 'ArrowDown' && !isMacOS() && keyboardEvent.altKey) {\n return true;\n }\n }\n if (activeElement instanceof HTMLTextAreaElement && (key === 'PageUp' || key === 'PageDown')) {\n return true;\n }\n if (isTextInput) {\n const textInput = activeElement;\n const cursorAtStart = textInput.selectionStart === 0 && textInput.selectionEnd === 0;\n const cursorAtEnd = textInput.selectionStart === textInput.value.length && textInput.selectionEnd === textInput.value.length;\n if (key === 'ArrowLeft' && !cursorAtStart) {\n return true;\n }\n if (key === 'ArrowRight' && !cursorAtEnd) {\n return true;\n }\n if (textInput instanceof HTMLTextAreaElement) {\n if (key === 'ArrowUp' && !cursorAtStart) {\n return true;\n }\n if (key === 'ArrowDown' && !cursorAtEnd) {\n return true;\n }\n }\n }\n return false;\n}\nconst isActiveDescendantAttribute = 'data-is-active-descendant';\nconst activeDescendantActivatedDirectly = 'activated-directly';\nconst activeDescendantActivatedIndirectly = 'activated-indirectly';\nconst hasActiveDescendantAttribute = 'data-has-active-descendant';\nfunction focusZone(container, settings) {\n var _a, _b, _c, _d, _e;\n const focusableElements = [];\n const savedTabIndex = new WeakMap();\n const bindKeys = (_a = settings === null || settings === void 0 ? void 0 : settings.bindKeys) !== null && _a !== void 0 ? _a : ((settings === null || settings === void 0 ? void 0 : settings.getNextFocusable) ? FocusKeys.ArrowAll : FocusKeys.ArrowVertical) | FocusKeys.HomeAndEnd;\n const focusOutBehavior = (_b = settings === null || settings === void 0 ? void 0 : settings.focusOutBehavior) !== null && _b !== void 0 ? _b : 'stop';\n const focusInStrategy = (_c = settings === null || settings === void 0 ? void 0 : settings.focusInStrategy) !== null && _c !== void 0 ? _c : 'previous';\n const activeDescendantControl = settings === null || settings === void 0 ? void 0 : settings.activeDescendantControl;\n const activeDescendantCallback = settings === null || settings === void 0 ? void 0 : settings.onActiveDescendantChanged;\n let currentFocusedElement;\n const preventScroll = (_d = settings === null || settings === void 0 ? void 0 : settings.preventScroll) !== null && _d !== void 0 ? _d : false;\n function getFirstFocusableElement() {\n return focusableElements[0];\n }\n function isActiveDescendantInputFocused() {\n return document.activeElement === activeDescendantControl;\n }\n function updateFocusedElement(to, directlyActivated = false) {\n const from = currentFocusedElement;\n currentFocusedElement = to;\n if (activeDescendantControl) {\n if (to && isActiveDescendantInputFocused()) {\n setActiveDescendant(from, to, directlyActivated);\n }\n else {\n clearActiveDescendant();\n }\n return;\n }\n if (from && from !== to && savedTabIndex.has(from)) {\n from.setAttribute('tabindex', '-1');\n }\n to === null || to === void 0 ? void 0 : to.setAttribute('tabindex', '0');\n }\n function setActiveDescendant(from, to, directlyActivated = false) {\n if (!to.id) {\n to.setAttribute('id', uniqueId());\n }\n if (from && from !== to) {\n from.removeAttribute(isActiveDescendantAttribute);\n }\n if (!activeDescendantControl ||\n (!directlyActivated && activeDescendantControl.getAttribute('aria-activedescendant') === to.id)) {\n return;\n }\n activeDescendantControl.setAttribute('aria-activedescendant', to.id);\n container.setAttribute(hasActiveDescendantAttribute, to.id);\n to.setAttribute(isActiveDescendantAttribute, directlyActivated ? activeDescendantActivatedDirectly : activeDescendantActivatedIndirectly);\n activeDescendantCallback === null || activeDescendantCallback === void 0 ? void 0 : activeDescendantCallback(to, from, directlyActivated);\n }\n function clearActiveDescendant(previouslyActiveElement = currentFocusedElement) {\n if (focusInStrategy === 'first') {\n currentFocusedElement = undefined;\n }\n activeDescendantControl === null || activeDescendantControl === void 0 ? void 0 : activeDescendantControl.removeAttribute('aria-activedescendant');\n container.removeAttribute(hasActiveDescendantAttribute);\n previouslyActiveElement === null || previouslyActiveElement === void 0 ? void 0 : previouslyActiveElement.removeAttribute(isActiveDescendantAttribute);\n for (const item of container.querySelectorAll(`[${isActiveDescendantAttribute}]`)) {\n item === null || item === void 0 ? void 0 : item.removeAttribute(isActiveDescendantAttribute);\n }\n activeDescendantCallback === null || activeDescendantCallback === void 0 ? void 0 : activeDescendantCallback(undefined, previouslyActiveElement, false);\n }\n function beginFocusManagement(...elements) {\n const filteredElements = elements.filter(e => { var _a, _b; return (_b = (_a = settings === null || settings === void 0 ? void 0 : settings.focusableElementFilter) === null || _a === void 0 ? void 0 : _a.call(settings, e)) !== null && _b !== void 0 ? _b : true; });\n if (filteredElements.length === 0) {\n return;\n }\n focusableElements.splice(findInsertionIndex(filteredElements), 0, ...filteredElements);\n for (const element of filteredElements) {\n if (!savedTabIndex.has(element)) {\n savedTabIndex.set(element, element.getAttribute('tabindex'));\n }\n element.setAttribute('tabindex', '-1');\n }\n if (!currentFocusedElement) {\n updateFocusedElement(getFirstFocusableElement());\n }\n }\n function findInsertionIndex(elementsToInsert) {\n const firstElementToInsert = elementsToInsert[0];\n if (focusableElements.length === 0)\n return 0;\n let iMin = 0;\n let iMax = focusableElements.length - 1;\n while (iMin <= iMax) {\n const i = Math.floor((iMin + iMax) / 2);\n const element = focusableElements[i];\n if (followsInDocument(firstElementToInsert, element)) {\n iMax = i - 1;\n }\n else {\n iMin = i + 1;\n }\n }\n return iMin;\n }\n function followsInDocument(first, second) {\n return (second.compareDocumentPosition(first) & Node.DOCUMENT_POSITION_PRECEDING) > 0;\n }\n function endFocusManagement(...elements) {\n for (const element of elements) {\n const focusableElementIndex = focusableElements.indexOf(element);\n if (focusableElementIndex >= 0) {\n focusableElements.splice(focusableElementIndex, 1);\n }\n const savedIndex = savedTabIndex.get(element);\n if (savedIndex !== undefined) {\n if (savedIndex === null) {\n element.removeAttribute('tabindex');\n }\n else {\n element.setAttribute('tabindex', savedIndex);\n }\n savedTabIndex.delete(element);\n }\n if (element === currentFocusedElement) {\n const nextElementToFocus = getFirstFocusableElement();\n updateFocusedElement(nextElementToFocus);\n }\n }\n }\n const iterateFocusableElementsOptions = {\n reverse: settings === null || settings === void 0 ? void 0 : settings.reverse,\n strict: settings === null || settings === void 0 ? void 0 : settings.strict,\n onlyTabbable: settings === null || settings === void 0 ? void 0 : settings.onlyTabbable,\n };\n beginFocusManagement(...iterateFocusableElements(container, iterateFocusableElementsOptions));\n const initialElement = typeof focusInStrategy === 'function' ? focusInStrategy(document.body) : getFirstFocusableElement();\n updateFocusedElement(initialElement);\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n for (const removedNode of mutation.removedNodes) {\n if (removedNode instanceof HTMLElement) {\n endFocusManagement(...iterateFocusableElements(removedNode));\n }\n }\n if (mutation.type === 'attributes' && mutation.oldValue === null) {\n if (mutation.target instanceof HTMLElement) {\n endFocusManagement(mutation.target);\n }\n }\n }\n for (const mutation of mutations) {\n for (const addedNode of mutation.addedNodes) {\n if (addedNode instanceof HTMLElement) {\n beginFocusManagement(...iterateFocusableElements(addedNode, iterateFocusableElementsOptions));\n }\n }\n if (mutation.type === 'attributes' && mutation.oldValue !== null) {\n if (mutation.target instanceof HTMLElement) {\n beginFocusManagement(mutation.target);\n }\n }\n }\n });\n observer.observe(container, {\n subtree: true,\n childList: true,\n attributeFilter: ['hidden', 'disabled'],\n attributeOldValue: true,\n });\n const controller = new AbortController();\n const signal = (_e = settings === null || settings === void 0 ? void 0 : settings.abortSignal) !== null && _e !== void 0 ? _e : controller.signal;\n signal.addEventListener('abort', () => {\n endFocusManagement(...focusableElements);\n });\n let elementIndexFocusedByClick = undefined;\n container.addEventListener('mousedown', event => {\n if (event.target instanceof HTMLElement && event.target !== document.activeElement) {\n elementIndexFocusedByClick = focusableElements.indexOf(event.target);\n }\n }, { signal });\n if (activeDescendantControl) {\n container.addEventListener('focusin', event => {\n if (event.target instanceof HTMLElement && focusableElements.includes(event.target)) {\n activeDescendantControl.focus({ preventScroll });\n updateFocusedElement(event.target);\n }\n }, { signal });\n container.addEventListener('mousemove', ({ target }) => {\n if (!(target instanceof Node)) {\n return;\n }\n const focusableElement = focusableElements.find(element => element.contains(target));\n if (focusableElement) {\n updateFocusedElement(focusableElement);\n }\n }, { signal, capture: true });\n activeDescendantControl.addEventListener('focusin', () => {\n if (!currentFocusedElement) {\n updateFocusedElement(getFirstFocusableElement());\n }\n else {\n setActiveDescendant(undefined, currentFocusedElement);\n }\n }, { signal });\n activeDescendantControl.addEventListener('focusout', () => {\n clearActiveDescendant();\n }, { signal });\n }\n else {\n container.addEventListener('focusin', event => {\n if (event.target instanceof HTMLElement) {\n if (elementIndexFocusedByClick !== undefined) {\n if (elementIndexFocusedByClick >= 0) {\n if (focusableElements[elementIndexFocusedByClick] !== currentFocusedElement) {\n updateFocusedElement(focusableElements[elementIndexFocusedByClick]);\n }\n }\n elementIndexFocusedByClick = undefined;\n }\n else {\n if (focusInStrategy === 'previous') {\n updateFocusedElement(event.target);\n }\n else if (focusInStrategy === 'closest' || focusInStrategy === 'first') {\n if (event.relatedTarget instanceof Element && !container.contains(event.relatedTarget)) {\n const targetElementIndex = lastKeyboardFocusDirection === 'previous' ? focusableElements.length - 1 : 0;\n const targetElement = focusableElements[targetElementIndex];\n targetElement === null || targetElement === void 0 ? void 0 : targetElement.focus({ preventScroll });\n return;\n }\n else {\n updateFocusedElement(event.target);\n }\n }\n else if (typeof focusInStrategy === 'function') {\n if (event.relatedTarget instanceof Element && !container.contains(event.relatedTarget)) {\n const elementToFocus = focusInStrategy(event.relatedTarget);\n const requestedFocusElementIndex = elementToFocus ? focusableElements.indexOf(elementToFocus) : -1;\n if (requestedFocusElementIndex >= 0 && elementToFocus instanceof HTMLElement) {\n elementToFocus.focus({ preventScroll });\n return;\n }\n else {\n console.warn('Element requested is not a known focusable element.');\n }\n }\n else {\n updateFocusedElement(event.target);\n }\n }\n }\n }\n lastKeyboardFocusDirection = undefined;\n }, { signal });\n }\n const keyboardEventRecipient = activeDescendantControl !== null && activeDescendantControl !== void 0 ? activeDescendantControl : container;\n let lastKeyboardFocusDirection = undefined;\n if (focusInStrategy === 'closest') {\n document.addEventListener('keydown', event => {\n if (event.key === 'Tab') {\n lastKeyboardFocusDirection = getDirection(event);\n }\n }, { signal, capture: true });\n }\n function getCurrentFocusedIndex() {\n if (!currentFocusedElement) {\n return 0;\n }\n const focusedIndex = focusableElements.indexOf(currentFocusedElement);\n const fallbackIndex = currentFocusedElement === container ? -1 : 0;\n return focusedIndex !== -1 ? focusedIndex : fallbackIndex;\n }\n keyboardEventRecipient.addEventListener('keydown', event => {\n var _a;\n if (event.key in KEY_TO_DIRECTION) {\n const keyBit = KEY_TO_BIT[event.key];\n if (!event.defaultPrevented &&\n (keyBit & bindKeys) > 0 &&\n !shouldIgnoreFocusHandling(event, document.activeElement)) {\n const direction = getDirection(event);\n let nextElementToFocus = undefined;\n if (settings === null || settings === void 0 ? void 0 : settings.getNextFocusable) {\n nextElementToFocus = settings.getNextFocusable(direction, (_a = document.activeElement) !== null && _a !== void 0 ? _a : undefined, event);\n }\n if (!nextElementToFocus) {\n const lastFocusedIndex = getCurrentFocusedIndex();\n let nextFocusedIndex = lastFocusedIndex;\n if (direction === 'previous') {\n nextFocusedIndex -= 1;\n }\n else if (direction === 'start') {\n nextFocusedIndex = 0;\n }\n else if (direction === 'next') {\n nextFocusedIndex += 1;\n }\n else {\n nextFocusedIndex = focusableElements.length - 1;\n }\n if (nextFocusedIndex < 0) {\n if (focusOutBehavior === 'wrap' && event.key !== 'Tab') {\n nextFocusedIndex = focusableElements.length - 1;\n }\n else {\n nextFocusedIndex = 0;\n }\n }\n if (nextFocusedIndex >= focusableElements.length) {\n if (focusOutBehavior === 'wrap' && event.key !== 'Tab') {\n nextFocusedIndex = 0;\n }\n else {\n nextFocusedIndex = focusableElements.length - 1;\n }\n }\n if (lastFocusedIndex !== nextFocusedIndex) {\n nextElementToFocus = focusableElements[nextFocusedIndex];\n }\n }\n if (activeDescendantControl) {\n updateFocusedElement(nextElementToFocus || currentFocusedElement, true);\n }\n else if (nextElementToFocus) {\n lastKeyboardFocusDirection = direction;\n nextElementToFocus.focus({ preventScroll });\n }\n if (event.key !== 'Tab' || nextElementToFocus) {\n event.preventDefault();\n }\n }\n }\n }, { signal });\n return controller;\n}\n\nexport { FocusKeys, activeDescendantActivatedDirectly, activeDescendantActivatedIndirectly, focusZone, hasActiveDescendantAttribute, isActiveDescendantAttribute };\n","import {controller, targets, target} from '@github/catalyst'\nimport {focusZone, FocusKeys} from '@primer/behaviors'\nimport {ActionMenuElement} from './action_menu/action_menu_element'\n\nconst instersectionObserver = new IntersectionObserver(entries => {\n for (const entry of entries) {\n const action = entry.target\n if (entry.isIntersecting && action instanceof ActionBarElement) {\n action.update()\n }\n }\n})\n\nconst resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n const action = entry.target\n if (action instanceof ActionBarElement) {\n action.update()\n }\n }\n})\n\n// These are definitely used, but eslint is dumb apparently\n\nenum ItemType {\n Item,\n Divider,\n}\n\n@controller\nclass ActionBarElement extends HTMLElement {\n @targets items: HTMLElement[]\n @target itemContainer: HTMLElement\n @target moreMenu: ActionMenuElement\n\n #focusZoneAbortController: AbortController | null = null\n\n connectedCallback() {\n resizeObserver.observe(this)\n instersectionObserver.observe(this)\n\n requestAnimationFrame(() => {\n // This overflow visible is needed for browsers that don't support PopoverElement\n // to ensure the menu and tooltips are visible when the action bar is in a collapsed state\n // once popover is fully supported we can remove this.style.overflow = 'visible'\n this.style.overflow = 'visible'\n this.update()\n })\n }\n\n disconnectedCallback() {\n resizeObserver.unobserve(this)\n instersectionObserver.unobserve(this)\n }\n\n menuItemClick(event: Event) {\n const currentTarget = event.currentTarget as HTMLButtonElement\n\n const id = currentTarget?.getAttribute('data-for')\n\n if (id) {\n document.getElementById(id)?.click()\n }\n }\n\n update() {\n const firstItem = this.#firstItem\n if (!firstItem) return\n\n const firstItemTop = firstItem.getBoundingClientRect().top\n let previousItemType: ItemType | null = null\n\n this.#eachItem((item: HTMLElement, index: number, type: ItemType): boolean => {\n const itemTop = item.getBoundingClientRect().top\n\n if (type === ItemType.Item) {\n if (itemTop > firstItemTop) {\n this.#hideItem(index)\n\n if (this.moreMenu.hidden) {\n this.moreMenu.hidden = false\n }\n\n if (previousItemType === ItemType.Divider) {\n this.#hideItem(index - 1)\n }\n } else {\n this.#showItem(index)\n\n if (index === this.items.length - 1) {\n this.moreMenu.hidden = true\n }\n\n if (previousItemType === ItemType.Divider) {\n this.#showItem(index - 1)\n }\n }\n }\n\n previousItemType = type\n\n return true\n })\n\n if (this.#focusZoneAbortController) {\n this.#focusZoneAbortController.abort()\n }\n\n this.#focusZoneAbortController = focusZone(this, {\n bindKeys: FocusKeys.ArrowHorizontal | FocusKeys.HomeAndEnd,\n focusOutBehavior: 'wrap',\n focusableElementFilter: element => {\n const idx = this.items.indexOf(element.parentElement!)\n const elementIsVisibleItem = idx > -1 && this.items[idx].style.visibility === 'visible'\n const elementIsVisibleActionMenuInvoker = element === this.moreMenu.invokerElement && !this.moreMenu.hidden\n return elementIsVisibleItem || elementIsVisibleActionMenuInvoker\n },\n })\n }\n\n get #firstItem(): HTMLElement | null {\n let foundItem = null\n\n this.#eachItem((item: HTMLElement, _index: number, type: ItemType): boolean => {\n if (type === ItemType.Item) {\n foundItem = item\n return false\n }\n\n return true\n })\n\n return foundItem\n }\n\n #showItem(index: number) {\n const item = this.items[index]\n const menuItem = this.#menuItems[index]\n if (!item || !menuItem) return\n item.style.setProperty('visibility', 'visible')\n menuItem.hidden = true\n }\n\n #hideItem(index: number) {\n const item = this.items[index]\n const menuItem = this.#menuItems[index]\n if (!item || !menuItem) return\n item.style.setProperty('visibility', 'hidden')\n menuItem.hidden = false\n }\n\n get #menuItems(): NodeListOf {\n return this.moreMenu.querySelectorAll('[role=\"menu\"] > li')\n }\n\n #eachItem(callback: (item: HTMLElement, index: number, type: ItemType) => boolean): void {\n for (let i = 0; i < this.items.length; i++) {\n const item = this.items[i]\n const type = item.classList.contains('ActionBar-divider') ? ItemType.Divider : ItemType.Item\n if (!callback(item, i, type)) {\n break\n }\n }\n }\n}\n\ndeclare global {\n interface Window {\n ActionBarElement: typeof ActionBarElement\n }\n}\n\nwindow.ActionBarElement = ActionBarElement\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","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 // eslint-disable-next-line github/prefer-observers\n window.addEventListener('scroll', 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 this.classList.toggle('not-anchored', !anchor)\n if (anchor) {\n const {left, top} = getAnchoredPosition(this, anchor, this)\n this.style.top = `${top}px`\n this.style.left = `${left}px`\n this.style.bottom = 'auto'\n this.style.right = 'auto'\n } else {\n this.style.top = '0'\n this.style.left = '0'\n this.style.bottom = '0'\n this.style.right = '0'\n }\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 'invokers-polyfill'\n\nfunction dialogInvokerButtonHandler(event: Event) {\n const target = event.target as HTMLElement\n const button = target?.closest('button')\n\n if (!button || button.hasAttribute('disabled') || button.getAttribute('aria-disabled') === 'true') 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 // eslint-disable-next-line no-console\n console.warn('data-show-dialog-id is deprecated. Please use `commandfor` and `command=show-modal`')\n const dialog = document.getElementById(dialogId)\n if (dialog instanceof HTMLDialogElement) {\n dialog.showModal()\n // A buttons default behaviour in some browsers it to send a pointer event\n // If the behaviour is allowed through the dialog will be shown but then\n // quickly hidden- as if it were never shown. This prevents that.\n event.preventDefault()\n\n // In some older browsers, such as Chrome 122, when a top layer element (such as a dialog)\n // opens from within a popover, the \"hide all popovers\" internal algorithm runs, hiding\n // any popover that is currently open, regardless of whether or not another top layer element,\n // such as a is nested inside.\n // See https://github.com/whatwg/html/issues/9998.\n // This is fixed by https://github.com/whatwg/html/pull/10116, but while we still support browsers\n // that present this bug, we must undo the work they did to hide ancestral popovers of the dialog:\n let node: HTMLElement | null | undefined = button\n let fixed = false\n while (node) {\n node = node.parentElement?.closest('[popover]:not(:popover-open)')\n if (node && node.popover === 'auto') {\n node.classList.add('dialog-inside-popover-fix')\n node.popover = 'manual'\n node.showPopover()\n fixed = true\n }\n }\n if (fixed) {\n // We need to re-open the dialog as modal, and also ensure no close event listeners\n // are trying to act on the close\n /* eslint-disable-next-line no-restricted-syntax */\n dialog.addEventListener('close', e => e.stopImmediatePropagation(), {once: true})\n dialog.close()\n dialog.showModal()\n dialog.addEventListener(\n 'close',\n () => {\n for (const el of dialog.ownerDocument.querySelectorAll('.dialog-inside-popover-fix')) {\n if (el.contains(dialog)) {\n el.classList.remove('dialog-inside-popover-fix')\n el.popover = 'auto'\n el.showPopover()\n }\n }\n },\n {once: true},\n )\n }\n }\n }\n\n dialogId = button.getAttribute('data-close-dialog-id') || button.getAttribute('data-submit-dialog-id')\n if (dialogId) {\n // eslint-disable-next-line no-console\n console.warn('data-close-dialog-id is deprecated. Please use `commandfor` and `command=close`')\n const dialog = document.getElementById(dialogId)\n if (dialog instanceof HTMLDialogElement && dialog.open) {\n dialog.close()\n }\n }\n}\n\nexport class DialogHelperElement extends HTMLElement {\n get dialog() {\n return this.querySelector('dialog')\n }\n\n #abortController: AbortController | null = null\n connectedCallback() {\n const {signal} = (this.#abortController = new AbortController())\n document.addEventListener('click', dialogInvokerButtonHandler, true)\n document.addEventListener('click', this, {signal})\n this.ownerDocument.body.style.setProperty(\n '--dialog-scrollgutter',\n `${window.innerWidth - this.ownerDocument.body.clientWidth}px`,\n )\n new MutationObserver(records => {\n for (const record of records) {\n if (record.target === this.dialog) {\n this.#handleDialogOpenAttribute()\n }\n }\n }).observe(this, {subtree: true, attributeFilter: ['open']})\n this.#handleDialogOpenAttribute()\n }\n\n disconnectedCallback() {\n this.#abortController?.abort()\n }\n\n #handleDialogOpenAttribute() {\n if (!this.dialog) return\n // We don't want to show the Dialog component as non-modal\n if (this.dialog.matches('[open]:not(:modal)')) {\n // eslint-disable-next-line no-restricted-syntax\n this.dialog.addEventListener('close', e => e.stopImmediatePropagation(), {once: true})\n this.dialog.close()\n this.dialog.showModal()\n }\n }\n\n handleEvent(event: MouseEvent) {\n const target = event.target as HTMLElement\n const dialog = this.dialog\n // The click target _must_ be the dialog element itself, and not elements underneath or inside.\n if (target !== dialog || !dialog?.open) return\n\n const rect = dialog.getBoundingClientRect()\n const clickWasInsideDialog =\n rect.top <= event.clientY &&\n event.clientY <= rect.top + rect.height &&\n rect.left <= event.clientX &&\n event.clientX <= rect.left + rect.width\n\n if (!clickWasInsideDialog) {\n dialog.close()\n }\n }\n}\n\ndeclare global {\n interface Window {\n DialogHelperElement: typeof DialogHelperElement\n }\n interface HTMLElementTagNameMap {\n 'dialog-helper': DialogHelperElement\n }\n}\n\nif (!window.customElements.get('dialog-helper')) {\n window.DialogHelperElement = DialogHelperElement\n window.customElements.define('dialog-helper', DialogHelperElement)\n}\n","(() => {\n if (\n typeof HTMLButtonElement === \"undefined\" ||\n \"source\" in ((globalThis.CommandEvent || {}).prototype || {})\n ) {\n return;\n }\n\n // XXX: Invoker Buttons used to dispatch 'invoke' events instead of\n // 'command' events. We should ensure to prevent 'invoke' events being\n // fired in those browsers.\n // XXX: https://bugs.chromium.org/p/chromium/issues/detail?id=1523183\n // Chrome will dispatch invoke events even with the flag disabled; so\n // we need to capture those to prevent duplicate events.\n document.addEventListener(\n \"invoke\",\n (e) => {\n if (e.type == \"invoke\" && e.isTrusted) {\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n },\n true,\n );\n document.addEventListener(\n \"command\",\n (e) => {\n if (e.type == \"command\" && e.isTrusted) {\n e.stopImmediatePropagation();\n e.preventDefault();\n }\n },\n true,\n );\n\n function enumerate(obj, key, enumerable = true) {\n Object.defineProperty(obj, key, {\n ...Object.getOwnPropertyDescriptor(obj, key),\n enumerable,\n });\n }\n\n function getRootNode(node) {\n if (node && typeof node.getRootNode === \"function\") {\n return node.getRootNode();\n }\n if (node && node.parentNode) return getRootNode(node.parentNode);\n return node;\n }\n\n const ShadowRoot = globalThis.ShadowRoot || function () {};\n\n const commandEventSourceElements = new WeakMap();\n const commandEventActions = new WeakMap();\n\n class CommandEvent extends Event {\n constructor(type, invokeEventInit = {}) {\n super(type, invokeEventInit);\n const { source, command } = invokeEventInit;\n if (source != null && !(source instanceof Element)) {\n throw new TypeError(`source must be an element`);\n }\n commandEventSourceElements.set(this, source || null);\n commandEventActions.set(\n this,\n command !== undefined ? String(command) : \"\",\n );\n }\n\n get [Symbol.toStringTag]() {\n return \"CommandEvent\";\n }\n\n get source() {\n if (!commandEventSourceElements.has(this)) {\n throw new TypeError(\"illegal invocation\");\n }\n const source = commandEventSourceElements.get(this);\n if (!(source instanceof Element)) return null;\n const invokerRoot = getRootNode(source);\n if (invokerRoot !== getRootNode(this.target || document)) {\n return invokerRoot.host;\n }\n return source;\n }\n\n get command() {\n if (!commandEventActions.has(this)) {\n throw new TypeError(\"illegal invocation\");\n }\n return commandEventActions.get(this);\n }\n\n get action() {\n throw new Error(\n \"CommandEvent#action was renamed to CommandEvent#command\",\n );\n }\n\n get invoker() {\n throw new Error(\n \"CommandEvent#invoker was renamed to CommandEvent#source\",\n );\n }\n }\n enumerate(CommandEvent.prototype, \"source\");\n enumerate(CommandEvent.prototype, \"command\");\n\n class InvokeEvent extends Event {\n constructor() {\n throw new Error(\n \"InvokeEvent has been deprecated, it has been renamed to `CommandEvent`\",\n );\n }\n }\n\n const invokerAssociatedElements = new WeakMap();\n\n function applyInvokerMixin(ElementClass) {\n Object.defineProperties(ElementClass.prototype, {\n commandForElement: {\n enumerable: true,\n configurable: true,\n set(targetElement) {\n if (this.hasAttribute(\"invokeaction\")) {\n throw new TypeError(\n \"Element has deprecated `invokeaction` attribute, replace with `command`\",\n );\n } else if (this.hasAttribute(\"invoketarget\")) {\n throw new TypeError(\n \"Element has deprecated `invoketarget` attribute, replace with `commandfor`\",\n );\n } else if (targetElement === null) {\n this.removeAttribute(\"commandfor\");\n invokerAssociatedElements.delete(this);\n } else if (!(targetElement instanceof Element)) {\n throw new TypeError(`commandForElement must be an element or null`);\n } else {\n this.setAttribute(\"commandfor\", \"\");\n const targetRootNode = getRootNode(targetElement);\n const thisRootNode = getRootNode(this);\n if (\n thisRootNode === targetRootNode ||\n targetRootNode === this.ownerDocument\n ) {\n invokerAssociatedElements.set(this, targetElement);\n } else {\n invokerAssociatedElements.delete(this);\n }\n }\n },\n get() {\n if (this.localName !== \"button\") {\n return null;\n }\n if (\n this.hasAttribute(\"invokeaction\") ||\n this.hasAttribute(\"invoketarget\")\n ) {\n console.warn(\n \"Element has deprecated `invoketarget` or `invokeaction` attribute, use `commandfor` and `command` instead\",\n );\n return null;\n }\n if (this.disabled) {\n return null;\n }\n if (this.form && this.getAttribute(\"type\") !== \"button\") {\n console.warn(\n \"Element with `commandFor` is a form participant. \" +\n \"It should explicitly set `type=button` in order for `commandFor` to work\",\n );\n return null;\n }\n const targetElement = invokerAssociatedElements.get(this);\n if (targetElement) {\n if (targetElement.isConnected) {\n return targetElement;\n } else {\n invokerAssociatedElements.delete(this);\n return null;\n }\n }\n const root = getRootNode(this);\n const idref = this.getAttribute(\"commandfor\");\n if (\n (root instanceof Document || root instanceof ShadowRoot) &&\n idref\n ) {\n return root.getElementById(idref) || null;\n }\n return null;\n },\n },\n command: {\n enumerable: true,\n configurable: true,\n get() {\n const value = this.getAttribute(\"command\") || \"\";\n if (value.startsWith(\"--\")) return value;\n const valueLower = value.toLowerCase();\n switch (valueLower) {\n case \"show-modal\":\n case \"close\":\n case \"toggle-popover\":\n case \"hide-popover\":\n case \"show-popover\":\n return valueLower;\n }\n return \"\";\n },\n set(value) {\n this.setAttribute(\"command\", value);\n },\n },\n\n invokeAction: {\n enumerable: false,\n configurable: true,\n get() {\n throw new Error(\n `invokeAction is deprecated. It has been renamed to command`,\n );\n },\n set(value) {\n throw new Error(\n `invokeAction is deprecated. It has been renamed to command`,\n );\n },\n },\n\n invokeTargetElement: {\n enumerable: false,\n configurable: true,\n get() {\n throw new Error(\n `invokeTargetElement is deprecated. It has been renamed to command`,\n );\n },\n set(value) {\n throw new Error(\n `invokeTargetElement is deprecated. It has been renamed to command`,\n );\n },\n },\n });\n }\n\n function handleInvokerActivation(event) {\n if (event.defaultPrevented) return;\n if (event.type !== \"click\") return;\n const oldInvoker = event.target.closest(\n \"button[invoketarget], button[invokeaction], input[invoketarget], input[invokeaction]\",\n );\n if (oldInvoker) {\n console.warn(\n \"Elements with `invoketarget` or `invokeaction` are deprecated and should be renamed to use `commandfor` and `command` respectively\",\n );\n if (oldInvoker.matches(\"input\")) {\n throw new Error(\"Input elements no longer support `commandfor`\");\n }\n }\n\n const source = event.target.closest(\"button[commandfor], button[command]\");\n if (!source) return;\n\n if (this.form && this.getAttribute(\"type\") !== \"button\") {\n event.preventDefault();\n throw new Error(\n \"Element with `commandFor` is a form participant. \" +\n \"It should explicitly set `type=button` in order for `commandFor` to work. \" +\n \"In order for it to act as a Submit button, it must not have command or commandfor attributes\",\n );\n }\n\n if (source.hasAttribute(\"command\") !== source.hasAttribute(\"commandfor\")) {\n const attr = source.hasAttribute(\"command\") ? \"command\" : \"commandfor\";\n const missing = source.hasAttribute(\"command\") ? \"commandfor\" : \"command\";\n throw new Error(\n `Element with ${attr} attribute must also have a ${missing} attribute to function.`,\n );\n }\n\n if (\n source.command !== \"show-popover\" &&\n source.command !== \"hide-popover\" &&\n source.command !== \"toggle-popover\" &&\n source.command !== \"show-modal\" &&\n source.command !== \"close\" &&\n !source.command.startsWith(\"--\")\n ) {\n console.warn(\n `\"${source.command}\" is not a valid command value. Custom commands must begin with --`,\n );\n return;\n }\n\n const invokee = source.commandForElement;\n if (!invokee) return;\n const invokeEvent = new CommandEvent(\"command\", {\n command: source.command,\n source,\n });\n invokee.dispatchEvent(invokeEvent);\n if (invokeEvent.defaultPrevented) return;\n\n const command = invokeEvent.command.toLowerCase();\n\n if (invokee.popover) {\n const canShow = !invokee.matches(\":popover-open\");\n const shouldShow =\n canShow && (command === \"toggle-popover\" || command === \"show-popover\");\n const shouldHide = !canShow && command === \"hide-popover\";\n\n if (shouldShow) {\n invokee.showPopover();\n } else if (shouldHide) {\n invokee.hidePopover();\n }\n } else if (invokee.localName === \"dialog\") {\n const canShow = !invokee.hasAttribute(\"open\");\n const shouldShow = canShow && command === \"show-modal\";\n const shouldHide = !canShow && command === \"close\";\n\n if (shouldShow) {\n invokee.showModal();\n } else if (shouldHide) {\n invokee.close();\n }\n }\n }\n\n function setupInvokeListeners(target) {\n target.addEventListener(\"click\", handleInvokerActivation, true);\n }\n\n function observeShadowRoots(ElementClass, callback) {\n const attachShadow = ElementClass.prototype.attachShadow;\n ElementClass.prototype.attachShadow = function (init) {\n const shadow = attachShadow.call(this, init);\n callback(shadow);\n return shadow;\n };\n const attachInternals = ElementClass.prototype.attachInternals;\n ElementClass.prototype.attachInternals = function () {\n const internals = attachInternals.call(this);\n if (internals.shadowRoot) callback(internals.shadowRoot);\n return internals;\n };\n }\n\n applyInvokerMixin(globalThis.HTMLButtonElement || function () {});\n\n observeShadowRoots(globalThis.HTMLElement || function () {}, (shadow) => {\n setupInvokeListeners(shadow);\n });\n\n setupInvokeListeners(document);\n\n Object.defineProperty(window, \"CommandEvent\", {\n value: CommandEvent,\n configurable: true,\n writable: true,\n });\n Object.defineProperty(window, \"InvokeEvent\", {\n value: InvokeEvent,\n configurable: true,\n writable: true,\n });\n})();\n","// src/events.ts\nvar ToggleEvent = class extends Event {\n oldState;\n newState;\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)) 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 ShadowRoot = globalThis.ShadowRoot || function() {\n};\nvar HTMLDialogElement = globalThis.HTMLDialogElement || function() {\n};\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 instanceof HTMLElement)) {\n return;\n }\n const visibility = getPopoverVisibilityState(popover);\n if (element.popoverTargetAction === \"show\" && visibility === \"showing\") {\n return;\n }\n if (element.popoverTargetAction === \"hide\" && visibility === \"hidden\") return;\n if (visibility === \"showing\") {\n hidePopover(popover, true, true);\n } else if (checkPopoverValidity(popover, false)) {\n popoverInvoker.set(popover, element);\n showPopover(popover);\n }\n}\nfunction checkPopoverValidity(element, expectedToBeShowing) {\n if (element.popover !== \"auto\" && element.popover !== \"manual\") {\n return false;\n }\n if (!element.isConnected) return false;\n if (expectedToBeShowing && getPopoverVisibilityState(element) !== \"showing\") {\n return false;\n }\n if (!expectedToBeShowing && getPopoverVisibilityState(element) !== \"hidden\") {\n return false;\n }\n if (element instanceof HTMLDialogElement && element.hasAttribute(\"open\")) {\n return false;\n }\n if (document.fullscreenElement === element) return false;\n return true;\n}\nfunction getStackPosition(popover) {\n if (!popover) 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 const documentPopovers = autoPopoverList.get(document2);\n for (const popover of documentPopovers || []) {\n if (!popover.isConnected) {\n documentPopovers.delete(popover);\n } else {\n return popover;\n }\n }\n return null;\n}\nfunction getRootNode(node) {\n if (typeof node.getRootNode === \"function\") {\n return node.getRootNode();\n }\n if (node.parentNode) return getRootNode(node.parentNode);\n return node;\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 instanceof Element && node.assignedSlot || node.parentElement || getRootNode(node);\n if (node instanceof ShadowRoot) node = node.host;\n if (node instanceof Document) return;\n }\n}\nfunction nearestInclusiveTargetPopoverForInvoker(node) {\n while (node) {\n const nodePopover = node.popoverTargetElement;\n if (nodePopover instanceof HTMLElement) return nodePopover;\n node = node.parentElement || getRootNode(node);\n if (node instanceof ShadowRoot) node = node.host;\n if (node instanceof Document) return;\n }\n}\nfunction topMostPopoverAncestor(newPopover) {\n const popoverPositions = /* @__PURE__ */ new Map();\n let i = 0;\n for (const popover of autoPopoverList.get(newPopover.ownerDocument) || []) {\n popoverPositions.set(popover, i);\n i += 1;\n }\n popoverPositions.set(newPopover, i);\n i += 1;\n let topMostPopoverAncestor2 = null;\n function checkAncestor(candidate) {\n const candidateAncestor = nearestInclusiveOpenPopover(candidate);\n if (candidateAncestor === null) 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 || getRootNode(newPopover));\n return topMostPopoverAncestor2;\n}\nfunction isFocusable(focusTarget) {\n if (focusTarget.hidden || focusTarget instanceof ShadowRoot) 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) 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 typeof focusTarget.tabIndex === \"number\" && 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 let autoFocusDelegate = whereToLook.querySelector(\"[autofocus]\");\n if (autoFocusDelegate) {\n return autoFocusDelegate;\n } else {\n const slots = whereToLook.querySelectorAll(\"slot\");\n for (const slot of slots) {\n const assignedElements = slot.assignedElements({ flatten: true });\n for (const el of assignedElements) {\n if (el.hasAttribute(\"autofocus\")) {\n return el;\n } else {\n autoFocusDelegate = el.querySelector(\"[autofocus]\");\n if (autoFocusDelegate) {\n return autoFocusDelegate;\n }\n }\n }\n }\n }\n const walker = focusTarget.ownerDocument.createTreeWalker(\n whereToLook,\n NodeFilter.SHOW_ELEMENT\n );\n let descendant = 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(\":popover-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(\":popover-open\");\n visibilityState.set(element, \"hidden\");\n if (fireEvents) {\n queuePopoverToggleEventTask(element, \"open\", \"closed\");\n }\n const previouslyFocusedElement = previouslyFocusedElements.get(element);\n if (previouslyFocusedElement) {\n previouslyFocusedElements.delete(element);\n if (focusPreviousElement) {\n previouslyFocusedElement.focus();\n }\n }\n}\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) return;\n const target = event.composedPath()[0];\n if (!target) return;\n const document2 = target.ownerDocument;\n const topMostPopover = topMostAutoPopover(document2);\n if (!topMostPopover) 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) return;\n if (!initialAriaExpandedValue.has(el)) {\n initialAriaExpandedValue.set(el, el.getAttribute(\"aria-expanded\"));\n }\n const popover = el.popoverTargetElement;\n if (popover instanceof HTMLElement && popover.popover === \"auto\") {\n el.setAttribute(\"aria-expanded\", String(force));\n } else {\n const initialValue = initialAriaExpandedValue.get(el);\n if (!initialValue) {\n el.removeAttribute(\"aria-expanded\");\n } else {\n el.setAttribute(\"aria-expanded\", initialValue);\n }\n }\n}\n\n// src/popover.ts\nvar ShadowRoot2 = globalThis.ShadowRoot || function() {\n};\nfunction isSupported() {\n return typeof HTMLElement !== \"undefined\" && typeof HTMLElement.prototype === \"object\" && \"popover\" in HTMLElement.prototype;\n}\nfunction patchSelectorFn(object, name, mapper) {\n const original = object[name];\n Object.defineProperty(object, name, {\n value(selector) {\n return original.call(this, mapper(selector));\n }\n });\n}\nvar nonEscapedPopoverSelector = /(^|[^\\\\]):popover-open\\b/g;\nfunction hasLayerSupport() {\n return typeof globalThis.CSSLayerBlockRule === \"function\";\n}\nfunction getStyles() {\n const useLayer = hasLayerSupport();\n return `\n${useLayer ? \"@layer popover-polyfill {\" : \"\"}\n :where([popover]) {\n position: fixed;\n z-index: 2147483647;\n inset: 0;\n padding: 0.25em;\n width: fit-content;\n height: fit-content;\n border-width: initial;\n border-color: initial;\n border-image: initial;\n border-style: solid;\n background-color: canvas;\n color: canvastext;\n overflow: auto;\n margin: auto;\n }\n\n :where([popover]:not(.\\\\:popover-open)) {\n display: none;\n }\n\n :where(dialog[popover].\\\\:popover-open) {\n display: block;\n }\n\n :where(dialog[popover][open]) {\n display: revert;\n }\n\n :where([anchor].\\\\:popover-open) {\n inset: auto;\n }\n\n :where([anchor]:popover-open) {\n inset: auto;\n }\n\n @supports not (background-color: canvas) {\n :where([popover]) {\n background-color: white;\n color: black;\n }\n }\n\n @supports (width: -moz-fit-content) {\n :where([popover]) {\n width: -moz-fit-content;\n height: -moz-fit-content;\n }\n }\n\n @supports not (inset: 0) {\n :where([popover]) {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n }\n${useLayer ? \"}\" : \"\"}\n`;\n}\nvar popoverStyleSheet = null;\nfunction injectStyles(root) {\n const styles = getStyles();\n if (popoverStyleSheet === null) {\n try {\n popoverStyleSheet = new CSSStyleSheet();\n popoverStyleSheet.replaceSync(styles);\n } catch {\n popoverStyleSheet = false;\n }\n }\n if (popoverStyleSheet === false) {\n const sheet = document.createElement(\"style\");\n sheet.textContent = styles;\n if (root instanceof Document) {\n root.head.prepend(sheet);\n } else {\n root.prepend(sheet);\n }\n } else {\n root.adoptedStyleSheets = [popoverStyleSheet, ...root.adoptedStyleSheets];\n }\n}\nfunction apply() {\n if (typeof window === \"undefined\") return;\n window.ToggleEvent = window.ToggleEvent || ToggleEvent;\n function rewriteSelector(selector) {\n if (selector?.includes(\":popover-open\")) {\n selector = selector.replace(\n nonEscapedPopoverSelector,\n \"$1.\\\\:popover-open\"\n );\n }\n return selector;\n }\n patchSelectorFn(Document.prototype, \"querySelector\", rewriteSelector);\n patchSelectorFn(Document.prototype, \"querySelectorAll\", rewriteSelector);\n patchSelectorFn(Element.prototype, \"querySelector\", rewriteSelector);\n patchSelectorFn(Element.prototype, \"querySelectorAll\", rewriteSelector);\n patchSelectorFn(Element.prototype, \"matches\", rewriteSelector);\n patchSelectorFn(Element.prototype, \"closest\", rewriteSelector);\n patchSelectorFn(\n DocumentFragment.prototype,\n \"querySelectorAll\",\n rewriteSelector\n );\n Object.defineProperties(HTMLElement.prototype, {\n popover: {\n enumerable: true,\n configurable: true,\n get() {\n if (!this.hasAttribute(\"popover\")) return null;\n const value = (this.getAttribute(\"popover\") || \"\").toLowerCase();\n if (value === \"\" || value == \"auto\") return \"auto\";\n return \"manual\";\n },\n set(value) {\n if (value === null) {\n this.removeAttribute(\"popover\");\n } else {\n this.setAttribute(\"popover\", value);\n }\n }\n },\n 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 originalAttachShadow = Element.prototype.attachShadow;\n if (originalAttachShadow) {\n Object.defineProperties(Element.prototype, {\n attachShadow: {\n enumerable: true,\n configurable: true,\n writable: true,\n value(options) {\n const shadowRoot = originalAttachShadow.call(this, options);\n injectStyles(shadowRoot);\n return shadowRoot;\n }\n }\n });\n }\n const originalAttachInternals = HTMLElement.prototype.attachInternals;\n if (originalAttachInternals) {\n Object.defineProperties(HTMLElement.prototype, {\n attachInternals: {\n enumerable: true,\n configurable: true,\n writable: true,\n value() {\n const internals = originalAttachInternals.call(this);\n if (internals.shadowRoot) {\n injectStyles(internals.shadowRoot);\n }\n return internals;\n }\n }\n });\n }\n 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 && targetElement.isConnected) {\n return targetElement;\n } else if (targetElement && !targetElement.isConnected) {\n popoverTargetAssociatedElements.delete(this);\n return null;\n }\n const root = getRootNode(this);\n const idref = this.getAttribute(\"popovertarget\");\n if ((root instanceof Document || root instanceof ShadowRoot2) && 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\") 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 const composedPath = event.composedPath();\n const target = composedPath[0];\n if (!(target instanceof Element) || target?.shadowRoot) {\n return;\n }\n const root = getRootNode(target);\n if (!(root instanceof ShadowRoot2 || root instanceof Document)) {\n return;\n }\n const invoker = composedPath.find(\n (el) => el.matches?.(\"[popovertargetaction],[popovertarget]\")\n );\n if (invoker) {\n popoverTargetAttributeActivationBehavior(invoker);\n event.preventDefault();\n return;\n }\n };\n const onKeydown = (event) => {\n const key = event.key;\n const target = event.target;\n if (!event.defaultPrevented && 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 injectStyles(document);\n}\n\n// src/index.ts\nif (!isSupported()) apply();\n//# sourceMappingURL=popover.js.map\n","import '@oddbird/popover-polyfill'\n\nconst validSelectors = ['[role=\"menuitem\"]', '[role=\"menuitemcheckbox\"]', '[role=\"menuitemradio\"]', '[role=\"option\"]']\nconst menuItemSelector = validSelectors.map(selector => `:not([hidden]) > ${selector}`).join(', ')\n\nconst getMnemonicFor = (item: Element) => item.textContent?.trim()[0].toLowerCase()\n\nconst printable = /^\\S$/\n\nexport default class FocusGroupElement extends HTMLElement {\n #retainSignal: AbortController | null = null\n\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 this.#retainSignal?.abort()\n const {signal} = (this.#retainSignal = new AbortController())\n for (const item of this.#items) {\n item.setAttribute('tabindex', item === event.target ? '0' : '-1')\n const popover = event.target.closest('[popover]')\n if (item === event.target && popover?.popover === 'auto' && popover.closest('focus-group') === this) {\n popover.addEventListener(\n 'toggle',\n (toggleEvent: Event) => {\n if (!(toggleEvent.target instanceof Element)) return\n if ((toggleEvent as ToggleEvent).newState === 'closed') {\n this.#retainSignal?.abort()\n item.setAttribute('tabindex', '-1')\n if (popover.id) {\n const invoker = this.querySelector(`[popovertarget=\"${popover.id}\"]`)\n if (invoker) {\n invoker.setAttribute('tabindex', '0')\n } else {\n this.#items[0]?.setAttribute('tabindex', '0')\n }\n }\n }\n },\n {signal},\n )\n }\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 event.preventDefault()\n }\n } else if (key === 'Down' || key === 'ArrowDown') {\n if (direction === 'vertical' || direction === 'both') {\n index += 1\n event.preventDefault()\n }\n } else if (event.key === 'Left' || event.key === 'ArrowLeft') {\n if (direction === 'horizontal' || direction === 'both') {\n index -= 1\n event.preventDefault()\n }\n } else if (event.key === 'Right' || event.key === 'ArrowRight') {\n if (direction === 'horizontal' || direction === 'both') {\n index += 1\n event.preventDefault()\n }\n } else if (event.key === 'Home' || event.key === 'PageUp') {\n index = 0\n event.preventDefault()\n } else if (event.key === 'End' || event.key === 'PageDown') {\n index = items.length - 1\n event.preventDefault()\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(:popover-open)`)\n if (el?.popover === 'auto' && !['ArrowRight', 'ArrowLeft'].includes(event.key)) {\n el.showPopover()\n }\n el = el?.parentElement || null\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","import {controller, attr} from '@github/catalyst'\n\n@controller\nexport class ScrollableRegionElement extends HTMLElement {\n @attr hasOverflow = false\n @attr labelledBy = ''\n\n observer: ResizeObserver\n\n connectedCallback() {\n this.style.overflow = 'auto'\n\n this.observer = new ResizeObserver(entries => {\n for (const entry of entries) {\n this.hasOverflow =\n entry.target.scrollHeight > entry.target.clientHeight || entry.target.scrollWidth > entry.target.clientWidth\n }\n })\n\n this.observer.observe(this)\n }\n\n disconnectedCallback() {\n this.observer.disconnect()\n }\n\n attributeChangedCallback(name: string) {\n if (name === 'data-has-overflow') {\n if (this.hasOverflow) {\n this.setAttribute('aria-labelledby', this.labelledBy)\n this.setAttribute('role', 'region')\n this.setAttribute('tabindex', '0')\n } else {\n this.removeAttribute('aria-labelledby')\n this.removeAttribute('role')\n this.removeAttribute('tabindex')\n }\n }\n }\n}\n\ndeclare global {\n interface Window {\n ScrollableRegionElement: typeof ScrollableRegionElement\n }\n}\n\nwindow.ScrollableRegionElement = ScrollableRegionElement\n","// Waits for condition to return true. If it returns false initially, this function creates a\n// MutationObserver that calls body() whenever the contents of the component change.\nexport const observeMutationsUntilConditionMet = (element: Element, condition: () => boolean, body: () => void) => {\n if (condition()) {\n body()\n } else {\n const mutationObserver = new MutationObserver(() => {\n if (condition()) {\n body()\n mutationObserver.disconnect()\n }\n })\n\n mutationObserver.observe(element, {childList: true, subtree: true})\n }\n}\n","import {focusTrap} from '@primer/behaviors'\nimport {getFocusableChild} from '@primer/behaviors/utils'\nimport 'invokers-polyfill'\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 || button.hasAttribute('disabled') || button.getAttribute('aria-disabled') === 'true') 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 // eslint-disable-next-line no-console\n console.warn('data-show-dialog-id is deprecated. Please use `commandfor` and `command=show-modal`')\n /* eslint-disable-next-line no-restricted-syntax */\n event.stopPropagation()\n const dialog = document.getElementById(dialogId)\n if (dialog instanceof ModalDialogElement) {\n dialog.openButton = button\n dialog.show()\n // A buttons default behaviour in some browsers it to send a pointer event\n // If the behaviour is allowed through the dialog will be shown but then\n // quickly hidden- as if it were never shown. This prevents that.\n event.preventDefault()\n return\n }\n }\n\n if (!overlayStack.length) return\n\n dialogId = button.getAttribute('data-close-dialog-id') || button.getAttribute('data-submit-dialog-id')\n if (dialogId) {\n // eslint-disable-next-line no-console\n console.warn('data-close-dialog-id is deprecated. Please use `commandfor` and `command=show-modal`')\n const dialog = document.getElementById(dialogId)\n if (dialog instanceof ModalDialogElement) {\n const dialogIndex = overlayStack.findIndex(ele => ele.id === dialogId)\n overlayStack.splice(dialogIndex, 1)\n dialog.close(button.hasAttribute('data-submit-dialog-id'))\n }\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.setAttribute('aria-disabled', 'false')\n document.body.style.paddingRight = `${window.innerWidth - document.body.clientWidth}px`\n document.body.style.overflow = 'hidden'\n this.#overlayBackdrop?.classList.remove('Overlay--hidden')\n if (this.#focusAbortController.signal.aborted) {\n this.#focusAbortController = new AbortController()\n }\n focusTrap(this, this.querySelector('[autofocus]') as HTMLElement, this.#focusAbortController.signal)\n overlayStack.push(this)\n } else {\n if (!this.open) return\n this.removeAttribute('open')\n this.setAttribute('aria-disabled', 'true')\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 if (!this.open) return\n\n switch (event.key) {\n case 'Escape':\n this.close()\n event.preventDefault()\n /* eslint-disable-next-line no-restricted-syntax */\n event.stopPropagation()\n break\n case 'Enter': {\n const target = event.target as HTMLElement\n\n if (target.getAttribute('data-close-dialog-id') === this.id) {\n /* eslint-disable-next-line no-restricted-syntax */\n event.stopPropagation()\n }\n break\n }\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","/* eslint-disable custom-elements/expose-class-on-global */\nimport {controller, target, targets} from '@github/catalyst'\nimport {ActionListTruncationObserver} from '../alpha/action_list'\n\n@controller\nexport class NavListElement extends HTMLElement {\n @targets items: HTMLElement[]\n @target topLevelList: HTMLElement\n\n #truncationObserver: ActionListTruncationObserver\n\n connectedCallback() {\n // groups are wrapped in , which handles resizing on its own\n if (this.topLevelList) {\n this.#truncationObserver = new ActionListTruncationObserver(this.topLevelList)\n }\n }\n\n disconnectedCallback() {\n if (this.topLevelList) {\n this.#truncationObserver.unobserve(this.topLevelList)\n }\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 /* eslint-disable-next-line no-restricted-syntax */\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 /* eslint-disable-next-line no-restricted-syntax */\n e.stopPropagation()\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 if (navItem.children.length > 0) {\n navItem.children[0].setAttribute('aria-current', 'page')\n }\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 if (navItem.children.length > 0) {\n navItem.children[0].removeAttribute('aria-current')\n }\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, target, targets} from '@github/catalyst'\nimport {ActionListTruncationObserver} from '../alpha/action_list'\n\n@controller\nexport class NavListGroupElement extends 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 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-group.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 #truncateObserver = new ActionListTruncationObserver(this)\n}\n\ndeclare global {\n interface Window {\n NavListGroupElement: typeof NavListGroupElement\n }\n}\n\nwindow.NavListGroupElement = NavListGroupElement\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","import {controller, target, attr} from '@github/catalyst'\n\n@controller\nclass ToggleSwitchElement extends HTMLElement {\n @target switch: HTMLElement\n @target loadingSpinner: HTMLElement\n @target errorIcon: HTMLElement\n @attr turbo = false\n\n private toggling = false\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('data-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 async toggle() {\n if (this.toggling) return\n\n this.toggling = true\n\n if (this.isDisabled()) {\n return\n }\n\n if (!this.isRemote()) {\n this.performToggle()\n this.toggling = false\n return\n }\n\n // toggle immediately to tell screen readers the switch was clicked\n this.performToggle()\n this.setLoadingState()\n\n try {\n await this.submitForm()\n } catch (error) {\n if (error instanceof Error) {\n // because we toggle immediately when the switch is clicked, toggle back to the\n // old state on failure\n this.setErrorState(error.message || 'An error occurred, please try again.')\n this.performToggle()\n }\n\n return\n } finally {\n this.toggling = false\n }\n\n this.setSuccessState()\n }\n\n turnOn(): void {\n if (this.isDisabled()) {\n return\n }\n\n this.switch.setAttribute('aria-pressed', '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-pressed', 'false')\n this.classList.remove('ToggleSwitch--checked')\n }\n\n isOn(): boolean {\n return this.switch.getAttribute('aria-pressed') === 'true'\n }\n\n isOff(): boolean {\n return !this.isOn()\n }\n\n isDisabled(): boolean {\n return this.switch.getAttribute('disabled') != null\n }\n\n disable(): void {\n this.switch.setAttribute('disabled', 'disabled')\n }\n\n enable(): void {\n this.switch.removeAttribute('disabled')\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.errorIcon.setAttribute('hidden', 'hidden')\n this.loadingSpinner.removeAttribute('hidden')\n\n const event = new CustomEvent('toggleSwitchLoading', {bubbles: true})\n this.dispatchEvent(event)\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 }\n\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() ? '1' : '0')\n\n if (!this.src) throw new Error('invalid src')\n\n let response\n\n const requestHeaders: {[key: string]: string} = {\n 'Requested-With': 'XMLHttpRequest',\n 'X-Requested-With': 'XMLHttpRequest',\n }\n\n if (this.turbo) {\n requestHeaders['Accept'] = 'text/vnd.turbo-stream.html'\n }\n\n try {\n response = await fetch(this.src, {\n credentials: 'same-origin',\n method: 'POST',\n headers: requestHeaders,\n body,\n })\n } catch (error) {\n throw new Error('A network error occurred, please try again.')\n }\n\n if (!response.ok) {\n throw new Error(await response.text())\n }\n\n const contentType = response.headers.get('Content-Type')\n if (window.Turbo && this.turbo && contentType?.startsWith('text/vnd.turbo-stream.html')) {\n window.Turbo.renderStreamMessage(await response.text())\n }\n }\n}\n\ndeclare global {\n interface Window {\n ToggleSwitchElement: typeof ToggleSwitchElement\n Turbo: {\n renderStreamMessage: (message: string) => void\n }\n }\n}\n\nif (!window.customElements.get('toggle-switch')) {\n window.ToggleSwitchElement = ToggleSwitchElement\n window.customElements.define('toggle-switch', ToggleSwitchElement)\n}\n","import type {AnchorAlignment, AnchorSide} from '@primer/behaviors'\nimport '@oddbird/popover-polyfill'\nimport {getAnchoredPosition} from '@primer/behaviors'\n\nconst isPopoverOpen = (() => {\n let selector: string\n function setSelector(el: Element) {\n try {\n selector = ':popover-open'\n return el.matches(selector)\n } catch {\n try {\n selector = ':open'\n return el.matches(':open')\n } catch {\n selector = '.\\\\:popover-open'\n return el.matches('.\\\\:popover-open')\n }\n }\n }\n return (el: Element) => (selector ? el.matches(selector) : setSelector(el))\n})()\n\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\nfunction closeOpenTooltips(except?: Element) {\n for (const tooltip of openTooltips) {\n if (tooltip === except) continue\n if (isPopoverOpen(tooltip)) {\n tooltip.hidePopover()\n } else {\n openTooltips.delete(tooltip)\n }\n }\n}\n\nfunction focusOutListener() {\n closeOpenTooltips()\n}\n\nfunction focusInListener(event: Event) {\n setTimeout(() => {\n for (const tooltip of openTooltips) {\n if (isPopoverOpen(tooltip) && tooltip.showReason === 'focus' && tooltip.control !== event.target) {\n tooltip.hidePopover()\n }\n }\n }, 0)\n}\n\nconst tooltips = new Set()\nconst openTooltips = new Set()\nclass ToolTipElement extends HTMLElement {\n styles() {\n return `\n :host {\n --tooltip-top: var(--tool-tip-position-top, 0);\n --tooltip-left: var(--tool-tip-position-left, 0);\n padding: var(--overlay-paddingBlock-condensed) var(--overlay-padding-condensed) !important;\n font: var(--text-body-shorthand-small);\n color: var(--tooltip-fgColor, var(--fgColor-onEmphasis)) !important;\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(--tooltip-bgColor, var(--bgColor-emphasis)) !important;\n border-radius: var(--borderRadius-medium);\n border: 0 !important;\n opacity: 0;\n max-width: var(--overlay-width-small);\n word-wrap: break-word;\n white-space: normal;\n width: max-content !important;\n inset: var(--tooltip-top) auto auto var(--tooltip-left) !important;\n overflow: visible !important;\n text-wrap: balance;\n }\n\n :host(:is(.tooltip-n, .tooltip-nw, .tooltip-ne)) {\n --tooltip-top: calc(var(--tool-tip-position-top, 0) - var(--overlay-offset, 0.25rem));\n --tooltip-left: var(--tool-tip-position-left);\n }\n\n :host(:is(.tooltip-s, .tooltip-sw, .tooltip-se)) {\n --tooltip-top: calc(var(--tool-tip-position-top, 0) + var(--overlay-offset, 0.25rem));\n --tooltip-left: var(--tool-tip-position-left);\n }\n\n :host(.tooltip-w) {\n --tooltip-top: var(--tool-tip-position-top);\n --tooltip-left: calc(var(--tool-tip-position-left, 0) - var(--overlay-offset, 0.25rem));\n }\n\n :host(.tooltip-e) {\n --tooltip-top: var(--tool-tip-position-top);\n --tooltip-left: calc(var(--tool-tip-position-left, 0) + var(--overlay-offset, 0.25rem));\n }\n\n :host:after{\n position: absolute;\n display: block;\n right: 0;\n left: 0;\n height: var(--overlay-offset, 0.25rem);\n content: \"\";\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):after,\n :host(.tooltip-ne):after,\n :host(.tooltip-nw):after {\n top: 100%;\n }\n\n @keyframes tooltip-appear {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n :host(:popover-open),\n :host(:popover-open):before {\n animation-name: tooltip-appear;\n animation-duration: .1s;\n animation-fill-mode: forwards;\n animation-timing-function: ease-in;\n }\n\n :host(.\\\\:popover-open) {\n animation-name: tooltip-appear;\n animation-duration: .1s;\n animation-fill-mode: forwards;\n animation-timing-function: ease-in;\n }\n\n @media (forced-colors: active) {\n :host {\n outline: solid 1px transparent;\n }\n\n :host:before {\n display: none;\n }\n }\n `\n }\n\n #abortController: AbortController | undefined\n #align: AnchorAlignment = 'center'\n #side: AnchorSide = 'outside-bottom'\n #allowUpdatePosition = false\n #showReason: 'focus' | 'mouse' = 'mouse'\n get showReason() {\n return this.#showReason\n }\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 /* @deprecated */\n set hiddenFromView(value: true | false) {\n if (value && isPopoverOpen(this)) {\n this.hidePopover()\n } else if (!value && !isPopoverOpen(this)) {\n this.showPopover()\n }\n }\n\n /* @deprecated */\n get hiddenFromView() {\n return !isPopoverOpen(this)\n }\n\n connectedCallback() {\n tooltips.add(this)\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.#update(false)\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.addEventListener('toggle', 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('mousedown', this, {signal})\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore popoverTargetElement is not in the type definition\n this.control.popoverTargetElement?.addEventListener('beforetoggle', this, {\n signal,\n })\n this.ownerDocument.addEventListener('focusout', focusOutListener)\n this.ownerDocument.addEventListener('focusin', focusInListener)\n this.ownerDocument.addEventListener('keydown', this, {signal, capture: true})\n }\n\n disconnectedCallback() {\n tooltips.delete(this)\n openTooltips.delete(this)\n this.#abortController?.abort()\n }\n\n async handleEvent(event: Event) {\n if (!this.control) return\n const showing = isPopoverOpen(this)\n\n // Ensures that tooltip stays open when hovering between tooltip and element\n // WCAG Success Criterion 1.4.13 Hoverable\n const shouldShow =\n event.type === 'mouseenter' ||\n // Only show tooltip on focus if running in headless browser (for tests) or if focus ring\n // is visible (i.e. if user is using keyboard navigation)\n (event.type === 'focus' && (navigator.webdriver || this.control.matches(':focus-visible')))\n const isMouseLeaveFromButton =\n event.type === 'mouseleave' &&\n (event as MouseEvent).relatedTarget !== this.control &&\n (event as MouseEvent).relatedTarget !== this\n const isEscapeKeydown = event.type === 'keydown' && (event as KeyboardEvent).key === 'Escape'\n const isMouseDownOnButton = event.type === 'mousedown' && event.currentTarget === this.control\n const isOpeningOtherPopover = event.type === 'beforetoggle' && event.currentTarget !== this\n const shouldHide = isMouseLeaveFromButton || isEscapeKeydown || isMouseDownOnButton || isOpeningOtherPopover\n\n if (showing && isEscapeKeydown) {\n /* eslint-disable-next-line no-restricted-syntax */\n event.stopImmediatePropagation()\n event.preventDefault()\n }\n\n await Promise.resolve()\n if (!showing && shouldShow && !isPopoverOpen(this)) {\n this.#showReason = event.type === 'mouseenter' ? 'mouse' : 'focus'\n this.showPopover()\n } else if (showing && shouldHide && isPopoverOpen(this)) {\n this.hidePopover()\n }\n\n if (event.type === 'toggle') {\n this.#update((event as ToggleEvent).newState === 'open')\n }\n }\n\n static observedAttributes = ['data-type', 'data-direction', 'id']\n\n #update(isOpen: boolean) {\n if (isOpen) {\n openTooltips.add(this)\n this.classList.remove(TOOLTIP_SR_ONLY_CLASS)\n closeOpenTooltips(this)\n this.#updatePosition()\n } else {\n openTooltips.delete(this)\n this.classList.remove(...DIRECTION_CLASSES)\n this.classList.add(TOOLTIP_SR_ONLY_CLASS)\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 = 'end'\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 = 'end'\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 = 'start'\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 = 'start'\n this.#side = 'outside-top'\n }\n }\n\n #updatePosition() {\n if (!this.control) return\n if (!this.#allowUpdatePosition || !isPopoverOpen(this)) return\n\n const position = getAnchoredPosition(this, this.control, {\n side: this.#side,\n align: this.#align,\n anchorOffset: 0,\n })\n const anchorSide = position.anchorSide\n const align = position.anchorAlign\n\n this.style.setProperty('--tool-tip-position-top', `${position.top}px`)\n this.style.setProperty('--tool-tip-position-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\ndeclare global {\n interface HTMLElementEventMap {\n 'banner:dismiss': CustomEvent\n }\n}\n\n@controller\nclass XBannerElement extends HTMLElement {\n @target titleText: HTMLElement\n\n dismiss() {\n if (this.#dismissScheme === 'remove') {\n const parentElement = this.parentElement\n if (!parentElement) return\n\n parentElement.removeChild(this)\n } else {\n this.hide()\n }\n\n this.dispatchEvent(new CustomEvent('banner:dismiss'))\n }\n\n show() {\n this.style.setProperty('display', 'initial')\n }\n\n hide() {\n this.style.setProperty('display', 'none')\n }\n\n get #dismissScheme(): string {\n return this.getAttribute('data-dismiss-scheme')!\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 defaultFirstOption: autoselectEnabled,\n });\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 if (this.results.popover) {\n if (this.results.matches(':popover-open')) {\n this.results.hidePopover();\n }\n }\n else {\n this.results.hidden = true;\n }\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.close();\n }\n onKeydown(event) {\n if (event.key === 'Escape' && this.container.open) {\n this.close();\n event.stopPropagation();\n event.preventDefault();\n }\n else if (event.altKey && event.key === 'ArrowUp' && this.container.open) {\n this.close();\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.open();\n event.stopPropagation();\n event.preventDefault();\n }\n }\n onInputFocus() {\n if (this.interactingWithList)\n return;\n this.fetchResults();\n }\n onInputBlur() {\n if (this.interactingWithList)\n return;\n this.close();\n }\n onCommit({ target }) {\n const selected = target;\n if (!(selected instanceof HTMLElement))\n return;\n this.close();\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.close();\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 this.combobox.indicateDefaultOption();\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 hasResults ? this.open() : this.close();\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 const isHidden = this.results.popover ? !this.results.matches(':popover-open') : this.results.hidden;\n if (isHidden) {\n this.combobox.start();\n if (this.results.popover) {\n this.results.showPopover();\n }\n else {\n this.results.hidden = false;\n }\n }\n this.container.open = true;\n this.interactingWithList = true;\n }\n close() {\n const isVisible = this.results.popover ? this.results.matches(':popover-open') : !this.results.hidden;\n if (isVisible) {\n this.combobox.stop();\n if (this.results.popover) {\n this.results.hidePopover();\n }\n else {\n this.results.hidden = true;\n }\n }\n this.container.open = false;\n this.interactingWithList = false;\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 new MutationObserver(() => {\n if (!state.get(this)) {\n __classPrivateFieldGet(this, _AutoCompleteElement_instances, \"m\", _AutoCompleteElement_reattachState).call(this);\n }\n }).observe(this, { subtree: true, childList: true });\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}\nexport function copyNode(node) {\n if ('clipboard' in navigator) {\n return navigator.clipboard.writeText(node.textContent || '');\n }\n const selection = getSelection();\n if (selection == null) {\n return Promise.reject(new Error());\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}\nexport function copyText(text) {\n if ('clipboard' in navigator) {\n return navigator.clipboard.writeText(text);\n }\n const body = document.body;\n if (!body) {\n return Promise.reject(new Error());\n }\n const node = createNode(text);\n body.appendChild(node);\n copyNode(node);\n body.removeChild(node);\n return Promise.resolve();\n}\n","import { copyNode, copyText } from './clipboard.js';\nasync function copy(button) {\n const id = button.getAttribute('for');\n const text = button.getAttribute('value');\n function trigger() {\n button.dispatchEvent(new CustomEvent('clipboard-copy', { bubbles: true }));\n }\n if (button.getAttribute('aria-disabled') === 'true') {\n return;\n }\n if (text) {\n await copyText(text);\n trigger();\n }\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)))\n return;\n const node = root.getElementById(id);\n if (node) {\n await copyTarget(node);\n trigger();\n }\n }\n}\nfunction copyTarget(content) {\n if (content instanceof HTMLInputElement || content instanceof HTMLTextAreaElement) {\n return copyText(content.value);\n }\n else if (content instanceof HTMLAnchorElement && content.hasAttribute('href')) {\n return copyText(content.href);\n }\n else {\n return copyNode(content);\n }\n}\nfunction clicked(event) {\n const button = event.currentTarget;\n if (button instanceof HTMLElement) {\n copy(button);\n }\n}\nfunction keydown(event) {\n if (event.key === ' ' || event.key === 'Enter') {\n const button = event.currentTarget;\n if (button instanceof HTMLElement) {\n event.preventDefault();\n copy(button);\n }\n }\n}\nfunction focused(event) {\n ;\n event.currentTarget.addEventListener('keydown', keydown);\n}\nfunction blurred(event) {\n ;\n event.currentTarget.removeEventListener('keydown', keydown);\n}\nexport class ClipboardCopyElement extends HTMLElement {\n static define(tag = 'clipboard-copy', registry = customElements) {\n registry.define(tag, this);\n return this;\n }\n constructor() {\n super();\n this.addEventListener('click', clicked);\n this.addEventListener('focus', focused);\n this.addEventListener('blur', blurred);\n }\n connectedCallback() {\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0');\n }\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button');\n }\n }\n get value() {\n return this.getAttribute('value') || '';\n }\n set value(text) {\n this.setAttribute('value', text);\n }\n}\n","import { ClipboardCopyElement } from './clipboard-copy-element.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\ntry {\n root.ClipboardCopyElement = ClipboardCopyElement.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 ClipboardCopyElement;\nexport * from './clipboard-copy-element.js';\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 const clipboardCopyLiveRegion = target.parentNode?.querySelector('[data-clipboard-copy-feedback]')\n const copiedAnnouncement = 'Copied!'\n\n if (currentTimeout) {\n clearTimeout(currentTimeout)\n clipboardCopyElementTimers.delete(target)\n } else {\n showCheck(target)\n if (clipboardCopyLiveRegion) {\n if (clipboardCopyLiveRegion.textContent === copiedAnnouncement) {\n /* This is a hack due to the way the aria live API works.\n A screen reader will not read a live region again\n if the text is the same. Adding a space character tells\n the browser that the live region has updated,\n which will cause it to read again, but with no audible difference. */\n clipboardCopyLiveRegion.textContent = `${copiedAnnouncement}\\u00A0`\n } else {\n clipboardCopyLiveRegion.textContent = copiedAnnouncement\n }\n }\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 if (duration.sign < 0) {\n r.setUTCSeconds(r.getUTCSeconds() + duration.seconds);\n r.setUTCMinutes(r.getUTCMinutes() + duration.minutes);\n r.setUTCHours(r.getUTCHours() + duration.hours);\n r.setUTCDate(r.getUTCDate() + duration.weeks * 7 + duration.days);\n r.setUTCMonth(r.getUTCMonth() + duration.months);\n r.setUTCFullYear(r.getUTCFullYear() + duration.years);\n }\n else {\n r.setUTCFullYear(r.getUTCFullYear() + duration.years);\n r.setUTCMonth(r.getUTCMonth() + duration.months);\n r.setUTCDate(r.getUTCDate() + duration.weeks * 7 + duration.days);\n r.setUTCHours(r.getUTCHours() + duration.hours);\n r.setUTCMinutes(r.getUTCMinutes() + duration.minutes);\n r.setUTCSeconds(r.getUTCSeconds() + duration.seconds);\n }\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 const currentMonth = relativeTo.getMonth();\n const currentDate = relativeTo.getDate();\n if (days >= 27 || years + months + days) {\n const newMonthDate = new Date(relativeTo);\n newMonthDate.setDate(1);\n newMonthDate.setMonth(currentMonth + months * sign + 1);\n newMonthDate.setDate(0);\n const monthDateCorrection = Math.max(0, currentDate - newMonthDate.getDate());\n const newDate = new Date(relativeTo);\n newDate.setFullYear(currentYear + years * sign);\n newDate.setDate(currentDate - monthDateCorrection);\n newDate.setMonth(currentMonth + months * sign);\n newDate.setDate(currentDate - monthDateCorrection + days * sign);\n const yearDiff = newDate.getFullYear() - relativeTo.getFullYear();\n const monthDiff = newDate.getMonth() - relativeTo.getMonth();\n const daysDiff = Math.abs(Math.round((Number(newDate) - Number(relativeTo)) / 86400000)) + monthDateCorrection;\n const monthsDiff = Math.abs(yearDiff * 12 + monthDiff);\n if (daysDiff < 27) {\n if (days >= 6) {\n weeks += Math.round(days / 7);\n days = 0;\n }\n else {\n days = daysDiff;\n }\n months = years = 0;\n }\n else if (monthsDiff <= 11) {\n months = monthsDiff;\n years = 0;\n }\n else {\n months = 0;\n years = yearDiff * sign;\n }\n if (months || years)\n days = 0;\n }\n if (years)\n months = 0;\n if (weeks >= 4)\n months += Math.round(weeks / 4);\n if (months || years)\n weeks = 0;\n if (days && weeks && !months && !years) {\n weeks += Math.round(days / 7);\n days = 0;\n }\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 'no-title',\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 noTitle() {\n return this.hasAttribute('no-title');\n }\n set noTitle(value) {\n this.toggleAttribute('no-title', 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 __classPrivateFieldSet(this, _RelativeTimeElement_updating, false, \"f\");\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 && !this.noTitle)\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 }\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 const lang = ((_a = this.closest('[lang]')) === null || _a === void 0 ? void 0 : _a.getAttribute('lang')) || this.ownerDocument.documentElement.getAttribute('lang');\n try {\n return new Intl.Locale(lang !== null && lang !== void 0 ? lang : '').toString();\n }\n catch (_b) {\n return 'default';\n }\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, this.precision === 'millisecond' ? 'second' : this.precision);\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 class TabContainerElement extends HTMLElement {\n static define(tag = 'tab-container', registry = customElements) {\n registry.define(tag, this);\n return this;\n }\n connectedCallback() {\n this.addEventListener('keydown', (event) => {\n var _a;\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(((_a = target.closest('[role=\"tablist\"]')) === null || _a === void 0 ? void 0 : _a.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 }\n const index = tabs.indexOf(tab);\n this.selectTab(index);\n });\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 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}\n","import { TabContainerElement } from './tab-container-element.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\ntry {\n root.TabContainerElement = TabContainerElement.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 TabContainerElement;\nexport * from './tab-container-element.js';\n","/* 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","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","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';\nvar AllowedHttpMethods;\n(function (AllowedHttpMethods) {\n AllowedHttpMethods[\"GET\"] = \"GET\";\n AllowedHttpMethods[\"POST\"] = \"POST\";\n})(AllowedHttpMethods || (AllowedHttpMethods = {}));\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 this.setValidity = (message) => {\n this.message = message;\n };\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 const changeHandler = handleChange.bind(null, checker);\n input.addEventListener('blur', changeHandler);\n input.addEventListener('input', changeHandler);\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 get httpMethod() {\n return AllowedHttpMethods[this.getAttribute('http-method')] || 'POST';\n }\n set validateOnKeystroke(enabled) {\n if (enabled) {\n this.setAttribute('validate-on-keystroke', '');\n }\n else {\n this.removeAttribute('validate-on-keystroke');\n }\n }\n get validateOnKeystroke() {\n const value = this.getAttribute('validate-on-keystroke');\n return value === 'true' || value === '';\n }\n get onlyValidateOnBlur() {\n const value = this.getAttribute('only-validate-on-blur');\n return value === 'true' || value === '';\n }\n}\n_AutoCheckElement_onloadend = new WeakMap();\nfunction handleChange(checker, 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 if (event.type === 'input') {\n autoCheckElement.setAttribute('dirty', '');\n }\n if (input.value.length === 0)\n return;\n if ((event.type !== 'blur' && !autoCheckElement.onlyValidateOnBlur) ||\n (event.type === 'blur' &&\n autoCheckElement.onlyValidateOnBlur &&\n !autoCheckElement.validateOnKeystroke &&\n autoCheckElement.hasAttribute('dirty')) ||\n (event.type === 'input' && autoCheckElement.onlyValidateOnBlur && autoCheckElement.validateOnKeystroke)) {\n setLoadingState(event);\n checker();\n }\n}\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 httpMethod = autoCheckElement.httpMethod;\n const state = states.get(autoCheckElement);\n if (!src || (httpMethod === 'POST' && !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 if (options.method === 'GET') {\n delete options.body;\n }\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 const httpMethod = autoCheckElement.httpMethod;\n if (!src || (httpMethod === 'POST' && !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 const url = new URL(src, window.location.origin);\n if (httpMethod === 'POST') {\n body.append(csrfField, csrf);\n body.append('value', input.value);\n }\n else {\n url.search = new URLSearchParams({ value: input.value }).toString();\n }\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 autoCheckElement.removeAttribute('dirty');\n try {\n const response = await fetchWithNetworkEvents(autoCheckElement, url.toString(), {\n credentials: 'same-origin',\n signal: state.controller.signal,\n method: httpMethod,\n body,\n });\n if (response.ok) {\n if (autoCheckElement.required) {\n input.setCustomValidity('');\n }\n if (autoCheckElement.onlyValidateOnBlur) {\n autoCheckElement.validateOnKeystroke = false;\n }\n input.dispatchEvent(new AutoCheckSuccessEvent(response.clone()));\n }\n else {\n if (autoCheckElement.onlyValidateOnBlur) {\n autoCheckElement.validateOnKeystroke = true;\n }\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","/* eslint-disable custom-elements/expose-class-on-global */\n\nimport '@github/auto-check-element'\nimport type {AutoCheckErrorEvent, AutoCheckSuccessEvent} from '@github/auto-check-element'\nimport {controller, target} from '@github/catalyst'\n\ndeclare global {\n interface HTMLElementEventMap {\n 'auto-check-success': AutoCheckSuccessEvent\n 'auto-check-error': AutoCheckErrorEvent\n }\n}\n\n@controller\nexport class PrimerTextFieldElement extends HTMLElement {\n @target inputElement: HTMLInputElement\n @target validationElement: HTMLElement\n @target validationMessageElement: HTMLElement\n @target validationSuccessIcon: HTMLElement\n @target validationErrorIcon: HTMLElement\n @target leadingVisual: HTMLElement\n @target leadingSpinner: HTMLElement\n\n #abortController: AbortController | null\n\n connectedCallback(): void {\n this.#abortController?.abort()\n const {signal} = (this.#abortController = new AbortController())\n\n this.addEventListener(\n 'auto-check-success',\n async (event: AutoCheckSuccessEvent) => {\n const message = await event.detail.response.text()\n if (message && message.length > 0) {\n this.setSuccess(message)\n } else {\n this.clearError()\n }\n },\n {signal},\n )\n\n this.addEventListener(\n 'auto-check-error',\n async (event: AutoCheckErrorEvent) => {\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 this.inputElement.dispatchEvent(new Event('input', { bubbles: true, cancelable: false }))\n }\n\n clearError(): void {\n this.inputElement.removeAttribute('invalid')\n this.validationElement.hidden = true\n this.validationMessageElement.replaceChildren()\n }\n\n setValidationMessage(message: string): void {\n const template = document.createElement('template')\n // eslint-disable-next-line github/no-inner-html\n template.innerHTML = message\n const fragment = document.importNode(template.content, true)\n this.validationMessageElement.replaceChildren(fragment)\n }\n\n toggleValidationStyling(isError: boolean): void {\n if (isError) {\n this.validationElement.classList.remove('FormControl-inlineValidation--success')\n } else {\n this.validationElement.classList.add('FormControl-inlineValidation--success')\n }\n this.validationSuccessIcon.hidden = isError\n this.validationErrorIcon.hidden = !isError\n this.inputElement.setAttribute('invalid', isError ? 'true' : 'false')\n }\n\n setSuccess(message: string): void {\n this.toggleValidationStyling(false)\n this.setValidationMessage(message)\n this.validationElement.hidden = false\n }\n\n setError(message: string): void {\n this.toggleValidationStyling(true)\n this.setValidationMessage(message)\n this.validationElement.hidden = false\n }\n\n showLeadingSpinner(): void {\n this.leadingSpinner?.removeAttribute('hidden')\n this.leadingVisual?.setAttribute('hidden', '')\n }\n\n hideLeadingSpinner(): void {\n this.leadingSpinner?.setAttribute('hidden', '')\n this.leadingVisual?.removeAttribute('hidden')\n }\n}\n","/* eslint-disable custom-elements/expose-class-on-global */\n\nimport {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.textContent = (event as CustomEvent).detail\n this.validationElement.removeAttribute('hidden')\n })\n\n this.addEventListener('toggleSwitchSuccess', () => {\n this.validationMessageElement.textContent = ''\n this.validationElement.setAttribute('hidden', 'hidden')\n })\n\n this.addEventListener('toggleSwitchLoading', () => {\n this.validationMessageElement.textContent = ''\n this.validationElement.setAttribute('hidden', 'hidden')\n })\n }\n}\n","import {controller, target} from '@github/catalyst'\nimport '@oddbird/popover-polyfill'\nimport type {IncludeFragmentElement} from '@github/include-fragment-element'\nimport AnchoredPositionElement from '../../anchored_position'\nimport {observeMutationsUntilConditionMet} from '../../utils'\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 validSelectors = ['[role=\"menuitem\"]', '[role=\"menuitemcheckbox\"]', '[role=\"menuitemradio\"]']\nconst menuItemSelectors = validSelectors.map(selector => `:not([hidden]) > ${selector}`)\n\n@controller\nexport class ActionMenuElement extends HTMLElement {\n @target\n includeFragment: IncludeFragmentElement\n\n @target\n overlay: AnchoredPositionElement\n\n #abortController: AbortController\n #originalLabel = ''\n #inputName = ''\n #invokerBeingClicked = false\n #intersectionObserver: IntersectionObserver\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.invokerElement?.popoverTargetElement as HTMLElement) || null\n }\n\n get invokerElement(): HTMLButtonElement | 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) {\n return el as HTMLButtonElement\n }\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.addEventListener('mousedown', this, {signal})\n this.popoverElement?.addEventListener('toggle', this, {signal})\n this.#setDynamicLabel()\n this.#updateInput()\n this.#softDisableItems()\n\n if (this.includeFragment) {\n this.includeFragment.addEventListener('include-fragment-replaced', this, {\n signal,\n })\n }\n\n // The code below updates the menu (i.e. overlay) position whenever the invoker button\n // changes position within its scroll container.\n //\n // See: https://github.com/primer/view_components/issues/3175\n\n const scrollUpdater = () => {\n if (this.#isOpen()) {\n this.overlay?.update()\n }\n }\n\n this.#intersectionObserver = new IntersectionObserver(entries => {\n for (const entry of entries) {\n const elem = entry.target\n if (elem === this.invokerElement) {\n if (entry.isIntersecting) {\n // eslint-disable-next-line github/prefer-observers\n window.addEventListener('scroll', scrollUpdater, {capture: true})\n } else {\n window.removeEventListener('scroll', scrollUpdater, {capture: true})\n }\n }\n }\n })\n\n observeMutationsUntilConditionMet(\n this,\n () => Boolean(this.invokerElement),\n () => this.#intersectionObserver.observe(this.invokerElement!),\n )\n\n // If there's no include fragment, then no async fetching will occur and we can\n // mark the component as ready.\n if (!this.includeFragment) {\n this.setAttribute('data-ready', 'true')\n }\n }\n\n disconnectedCallback() {\n this.#abortController.abort()\n }\n\n #softDisableItems() {\n const {signal} = this.#abortController\n\n for (const item of this.querySelectorAll(validSelectors.join(','))) {\n item.addEventListener('click', this.#potentiallyDisallowActivation.bind(this), {signal})\n item.addEventListener('keydown', this.#potentiallyDisallowActivation.bind(this), {signal})\n }\n }\n\n // returns true if activation was prevented\n #potentiallyDisallowActivation(event: Event): boolean {\n if (!this.#isActivation(event)) return false\n\n const item = (event.target as HTMLElement).closest(menuItemSelectors.join(','))\n if (!item) return false\n\n if (item.getAttribute('aria-disabled')) {\n event.preventDefault()\n /* eslint-disable-next-line no-restricted-syntax */\n event.stopPropagation()\n /* eslint-disable-next-line no-restricted-syntax */\n event.stopImmediatePropagation()\n return true\n }\n\n return false\n }\n\n #isAnchorActivationViaSpace(event: Event): boolean {\n return (\n event.target instanceof HTMLAnchorElement &&\n event instanceof KeyboardEvent &&\n event.type === 'keydown' &&\n !(event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) &&\n event.key === ' '\n )\n }\n\n #isActivation(event: Event): boolean {\n // Some browsers fire MouseEvents (Firefox) and others fire PointerEvents (Chrome). Activating an item via\n // enter or space counterintuitively fires one of these rather than a KeyboardEvent. Since PointerEvent\n // inherits from MouseEvent, it is enough to check for MouseEvent here.\n return (event instanceof MouseEvent && event.type === 'click') || this.#isAnchorActivationViaSpace(event)\n }\n\n handleEvent(event: Event) {\n const targetIsInvoker = this.invokerElement?.contains(event.target as HTMLElement)\n const eventIsActivation = this.#isActivation(event)\n\n if (event.type === 'toggle' && (event as ToggleEvent).newState === 'open') {\n window.requestAnimationFrame(() => {\n this.#firstItem?.focus()\n })\n }\n\n if (targetIsInvoker && event.type === 'mousedown') {\n this.#invokerBeingClicked = true\n return\n }\n\n // Prevent safari bug that dismisses menu on mousedown instead of allowing\n // the click event to propagate to the button\n if (event.type === 'mousedown') {\n event.preventDefault()\n return\n }\n\n if (targetIsInvoker && eventIsActivation) {\n this.#handleInvokerActivated(event)\n this.#invokerBeingClicked = false\n return\n }\n\n if (event.type === 'focusout') {\n if (this.#invokerBeingClicked) return\n\n // Give the browser time to focus the next element\n requestAnimationFrame(() => {\n if (!this.contains(document.activeElement) || document.activeElement === this.invokerElement) {\n this.#handleFocusOut()\n }\n })\n\n return\n }\n\n const item = (event.target as Element).closest(menuItemSelectors.join(','))\n const targetIsItem = item !== null\n\n if (targetIsItem && eventIsActivation) {\n if (this.#potentiallyDisallowActivation(event)) return\n\n const dialogInvoker = item.closest('button[commandfor][command=show-modal]')\n\n if (dialogInvoker) {\n const dialog = dialogInvoker.commandForElement\n\n if (dialog && this.contains(dialogInvoker)) {\n this.#handleDialogItemActivated(event, dialog)\n return\n }\n }\n\n // Pressing the space key on a link will cause the page to scroll unless preventDefault() is called.\n // We then click it manually to navigate.\n if (this.#isAnchorActivationViaSpace(event)) {\n event.preventDefault()\n ;(item as HTMLElement).click()\n }\n\n this.#handleItemActivated(item)\n\n return\n }\n\n if (event.type === 'include-fragment-replaced') {\n this.#handleIncludeFragmentReplaced()\n }\n }\n\n #handleInvokerActivated(event: Event) {\n event.preventDefault()\n /* eslint-disable-next-line no-restricted-syntax */\n event.stopPropagation()\n\n if (this.#isOpen()) {\n this.#hide()\n } else {\n this.#show()\n }\n }\n\n #handleDialogItemActivated(event: Event, dialog: HTMLElement) {\n if (this.contains(dialog)) {\n this.querySelector('.ActionListWrap')!.style.display = 'none'\n }\n const dialog_controller = new AbortController()\n const {signal} = dialog_controller\n const handleDialogClose = () => {\n dialog_controller.abort()\n if (this.contains(dialog)) {\n this.querySelector('.ActionListWrap')!.style.display = ''\n if (this.#isOpen()) {\n this.#hide()\n }\n }\n const activeElement = this.ownerDocument.activeElement\n const lostFocus = this.ownerDocument.activeElement === this.ownerDocument.body\n const focusInClosedMenu = this.contains(activeElement)\n const focusInDialog = dialog.contains(activeElement)\n if (lostFocus || focusInClosedMenu || focusInDialog) {\n setTimeout(() => {\n // if the activeElement has changed after a task, then it's likely\n // that other JS has tried to shift focus. We should respect that\n // focus shift as long as it's not back at the document.\n const newActiveElement = this.ownerDocument.activeElement\n if (newActiveElement === activeElement || newActiveElement === this.ownerDocument.body) {\n this.invokerElement?.focus()\n }\n }, 0)\n }\n }\n // a modal element will close all popovers\n dialog.addEventListener('close', handleDialogClose, {signal})\n dialog.addEventListener('cancel', handleDialogClose, {signal})\n }\n\n #handleItemActivated(item: Element) {\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(() => {\n if (this.#isOpen()) {\n this.#hide()\n }\n })\n }\n\n // The rest of the code below deals with single/multiple selection behavior, and should not\n // interfere with events fired by menu items whose behavior is specified outside the library.\n if (this.selectVariant !== 'multiple' && this.selectVariant !== 'single') return\n\n const ariaChecked = item.getAttribute('aria-checked')\n const checked = ariaChecked !== 'true'\n\n if (this.selectVariant === 'single') {\n // Only check, never uncheck here. Single-select mode does not allow unchecking a checked item.\n if (checked) {\n item.setAttribute('aria-checked', 'true')\n }\n\n for (const checkedItem of this.querySelectorAll('[aria-checked]')) {\n if (checkedItem !== item) {\n checkedItem.setAttribute('aria-checked', 'false')\n }\n }\n\n this.#setDynamicLabel()\n } else {\n // multi-select mode allows unchecking a checked item\n item.setAttribute('aria-checked', `${checked}`)\n }\n\n this.#updateInput()\n\n this.dispatchEvent(\n new CustomEvent('itemActivated', {\n bubbles: true,\n detail: {item: item.parentElement, checked: this.isItemChecked(item.parentElement)},\n }),\n )\n }\n\n #handleIncludeFragmentReplaced() {\n this.#firstItem?.focus()\n this.#softDisableItems()\n\n // async items have loaded, so component is ready\n this.setAttribute('data-ready', 'true')\n }\n\n // Close when focus leaves menu\n #handleFocusOut() {\n this.#hide()\n }\n\n #show() {\n this.popoverElement?.showPopover()\n }\n\n #hide() {\n this.popoverElement?.hidePopover()\n }\n\n #isOpen() {\n return this.popoverElement?.matches(':popover-open')\n }\n\n #setDynamicLabel() {\n if (this.selectVariant !== 'single') return\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 get #firstItem(): HTMLElement | null {\n return this.querySelector(menuItemSelectors.join(','))\n }\n\n get items(): HTMLElement[] {\n return Array.from(this.querySelectorAll(menuItemSelectors.join(',')))\n }\n\n getItemById(itemId: string): HTMLElement | null {\n return this.querySelector(`li[data-item-id=\"${itemId}\"`)\n }\n\n isItemDisabled(item: Element | null): boolean {\n if (item) {\n return item.classList.contains('ActionListItem--disabled')\n } else {\n return false\n }\n }\n\n disableItem(item: Element | null) {\n if (item) {\n item.classList.add('ActionListItem--disabled')\n item.querySelector('.ActionListContent')!.setAttribute('aria-disabled', 'true')\n }\n }\n\n enableItem(item: Element | null) {\n if (item) {\n item.classList.remove('ActionListItem--disabled')\n item.querySelector('.ActionListContent')!.removeAttribute('aria-disabled')\n }\n }\n\n isItemHidden(item: Element | null): boolean {\n if (item) {\n return item.hasAttribute('hidden')\n } else {\n return false\n }\n }\n\n hideItem(item: Element | null) {\n if (item) {\n item.setAttribute('hidden', 'hidden')\n }\n }\n\n showItem(item: Element | null) {\n if (item) {\n item.removeAttribute('hidden')\n }\n }\n\n isItemChecked(item: Element | null) {\n if (item) {\n return item.querySelector('.ActionListContent')!.getAttribute('aria-checked') === 'true'\n } else {\n return false\n }\n }\n\n checkItem(item: Element | null) {\n if (item && (this.selectVariant === 'single' || this.selectVariant === 'multiple')) {\n const itemContent = item.querySelector('.ActionListContent')!\n const ariaChecked = itemContent.getAttribute('aria-checked') === 'true'\n\n if (!ariaChecked) {\n this.#handleItemActivated(itemContent)\n }\n }\n }\n\n uncheckItem(item: Element | null) {\n if (item && (this.selectVariant === 'single' || this.selectVariant === 'multiple')) {\n const itemContent = item.querySelector('.ActionListContent')!\n const ariaChecked = itemContent.getAttribute('aria-checked') === 'true'\n\n if (ariaChecked) {\n this.#handleItemActivated(itemContent)\n }\n }\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","const Ordering = {\n Less: \"less\",\n Equal: \"equal\",\n Greater: \"greater\"\n};\n\nvar __typeError$2 = (msg) => {\n throw TypeError(msg);\n};\nvar __accessCheck$2 = (obj, member, msg) => member.has(obj) || __typeError$2(\"Cannot \" + msg);\nvar __privateGet$2 = (obj, member, getter) => (__accessCheck$2(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd$2 = (obj, member, value) => member.has(obj) ? __typeError$2(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet$2 = (obj, member, value, setter) => (__accessCheck$2(obj, member, \"write to private field\"), member.set(obj, value), value);\nvar __privateMethod$1 = (obj, member, method) => (__accessCheck$2(obj, member, \"access private method\"), method);\nvar _compareFn, _heap, _MinHeap_instances, heapifyDown_fn, heapifyUp_fn;\nclass MinHeap {\n constructor({ compareFn }) {\n __privateAdd$2(this, _MinHeap_instances);\n __privateAdd$2(this, _compareFn);\n __privateAdd$2(this, _heap);\n __privateSet$2(this, _compareFn, compareFn);\n __privateSet$2(this, _heap, []);\n }\n insert(value) {\n __privateGet$2(this, _heap).push(value);\n __privateMethod$1(this, _MinHeap_instances, heapifyUp_fn).call(this);\n }\n pop() {\n const item = __privateGet$2(this, _heap)[0];\n if (__privateGet$2(this, _heap)[__privateGet$2(this, _heap).length - 1]) {\n __privateGet$2(this, _heap)[0] = __privateGet$2(this, _heap)[__privateGet$2(this, _heap).length - 1];\n __privateGet$2(this, _heap).pop();\n }\n __privateMethod$1(this, _MinHeap_instances, heapifyDown_fn).call(this);\n return item;\n }\n peek() {\n return __privateGet$2(this, _heap)[0];\n }\n delete(value) {\n const index = __privateGet$2(this, _heap).indexOf(value);\n if (index === -1) {\n return;\n }\n swap(__privateGet$2(this, _heap), index, __privateGet$2(this, _heap).length - 1);\n __privateGet$2(this, _heap).pop();\n __privateMethod$1(this, _MinHeap_instances, heapifyDown_fn).call(this);\n }\n clear() {\n __privateSet$2(this, _heap, []);\n }\n get size() {\n return __privateGet$2(this, _heap).length;\n }\n}\n_compareFn = new WeakMap();\n_heap = new WeakMap();\n_MinHeap_instances = new WeakSet();\nheapifyDown_fn = function() {\n let index = 0;\n while (hasLeftChild(index, __privateGet$2(this, _heap).length)) {\n let smallerChildIndex = getLeftChildIndex(index);\n if (hasRightChild(index, __privateGet$2(this, _heap).length) && __privateGet$2(this, _compareFn).call(this, rightChild(__privateGet$2(this, _heap), index), leftChild(__privateGet$2(this, _heap), index)) === Ordering.Less) {\n smallerChildIndex = getRightChildIndex(index);\n }\n if (__privateGet$2(this, _compareFn).call(this, __privateGet$2(this, _heap)[index], __privateGet$2(this, _heap)[smallerChildIndex]) === Ordering.Less) {\n break;\n } else {\n swap(__privateGet$2(this, _heap), index, smallerChildIndex);\n }\n index = smallerChildIndex;\n }\n};\nheapifyUp_fn = function() {\n let index = __privateGet$2(this, _heap).length - 1;\n while (hasParent(index) && __privateGet$2(this, _compareFn).call(this, __privateGet$2(this, _heap)[index], parent(__privateGet$2(this, _heap), index)) === Ordering.Less) {\n swap(__privateGet$2(this, _heap), index, getParentIndex(index));\n index = getParentIndex(index);\n }\n};\nfunction getLeftChildIndex(index) {\n return 2 * index + 1;\n}\nfunction getRightChildIndex(index) {\n return 2 * index + 2;\n}\nfunction getParentIndex(index) {\n return Math.floor((index - 1) / 2);\n}\nfunction hasLeftChild(index, size) {\n return getLeftChildIndex(index) < size;\n}\nfunction hasRightChild(index, size) {\n return getRightChildIndex(index) < size;\n}\nfunction hasParent(index) {\n return index > 0;\n}\nfunction leftChild(heap, index) {\n return heap[getLeftChildIndex(index)];\n}\nfunction rightChild(heap, index) {\n return heap[getRightChildIndex(index)];\n}\nfunction parent(heap, index) {\n return heap[getParentIndex(index)];\n}\nfunction swap(heap, a, b) {\n const tmp = heap[a];\n heap[a] = heap[b];\n heap[b] = tmp;\n}\n\nvar __defProp = Object.defineProperty;\nvar __typeError$1 = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __accessCheck$1 = (obj, member, msg) => member.has(obj) || __typeError$1(\"Cannot \" + msg);\nvar __privateGet$1 = (obj, member, getter) => (__accessCheck$1(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd$1 = (obj, member, value) => member.has(obj) ? __typeError$1(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet$1 = (obj, member, value, setter) => (__accessCheck$1(obj, member, \"write to private field\"), member.set(obj, value), value);\nvar _a, _promise, _resolve, _reject;\n_a = Symbol.toStringTag;\nclass Deferred {\n constructor() {\n __publicField(this, _a, \"Deferred\");\n __privateAdd$1(this, _promise);\n __privateAdd$1(this, _resolve);\n __privateAdd$1(this, _reject);\n __privateSet$1(this, _promise, new Promise((resolve, reject) => {\n __privateSet$1(this, _resolve, resolve);\n __privateSet$1(this, _reject, reject);\n }));\n }\n then(onfulfilled, onrejected) {\n return Promise.prototype.then.apply(__privateGet$1(this, _promise), [onfulfilled, onrejected]);\n }\n catch(onrejected) {\n return Promise.prototype.catch.apply(__privateGet$1(this, _promise), [onrejected]);\n }\n finally(onfinally) {\n return Promise.prototype.finally.apply(__privateGet$1(this, _promise), [onfinally]);\n }\n resolve(value) {\n __privateGet$1(this, _resolve).call(this, value);\n }\n reject(reason) {\n __privateGet$1(this, _reject).call(this, reason);\n }\n getPromise() {\n return __privateGet$1(this, _promise);\n }\n}\n_promise = new WeakMap();\n_resolve = new WeakMap();\n_reject = new WeakMap();\n\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar _pending, _queue, _timeoutId, _LiveRegionElement_instances, performWork_fn, updateContainerWithMessage_fn;\nconst DEFAULT_THROTTLE_DELAY_MS = 150;\nclass LiveRegionElement extends HTMLElement {\n constructor() {\n super();\n __privateAdd(this, _LiveRegionElement_instances);\n /**\n * A flag to indicate if a message has been announced and we are currently\n * waiting for the delay to pass before announcing the next message.\n */\n __privateAdd(this, _pending);\n /**\n * A priority queue to store messages to be announced by the live region.\n */\n __privateAdd(this, _queue);\n /**\n * The id for a timeout being used by the live region to either wait until the\n * next message or wait until the delay has passed before announcing the next\n * message\n */\n __privateAdd(this, _timeoutId);\n if (!this.shadowRoot) {\n const template2 = getTemplate();\n const shadowRoot = this.attachShadow({ mode: \"open\" });\n shadowRoot.appendChild(template2.content.cloneNode(true));\n }\n __privateSet(this, _pending, false);\n __privateSet(this, _timeoutId, null);\n __privateSet(this, _queue, new MinHeap({\n compareFn: compareMessages\n }));\n }\n /**\n * The delay in milliseconds to wait between announcements. This helps to\n * prevent announcements getting dropped if multiple are made at the same time.\n */\n get delay() {\n const value = this.getAttribute(\"delay\");\n if (value) {\n return parseInt(value, 10);\n }\n return DEFAULT_THROTTLE_DELAY_MS;\n }\n set delay(value) {\n this.setAttribute(\"delay\", `${value}`);\n }\n /**\n * Announce a message using a live region with a corresponding politeness\n * level.\n */\n announce(message, options = {}) {\n const { delayMs, politeness = \"polite\" } = options;\n const now = Date.now();\n const deferred = new Deferred();\n const item = {\n deferred,\n politeness,\n contents: message,\n scheduled: delayMs !== void 0 ? now + delayMs : now\n };\n __privateGet(this, _queue).insert(item);\n __privateMethod(this, _LiveRegionElement_instances, performWork_fn).call(this);\n return {\n ...deferred.getPromise(),\n cancel: () => {\n __privateGet(this, _queue).delete(item);\n deferred.resolve();\n }\n };\n }\n /**\n * Announce a message using the text content of an element with a\n * corresponding politeness level\n */\n announceFromElement(element, options) {\n const textContent = getTextContent(element);\n if (textContent !== \"\") {\n return this.announce(textContent, options);\n }\n const promise = Promise.resolve();\n return {\n ...promise,\n cancel: noop\n };\n }\n getMessage(politeness = \"polite\") {\n const container = this.shadowRoot?.getElementById(politeness);\n if (!container) {\n throw new Error(\"Unable to find container for message\");\n }\n return container.textContent;\n }\n /**\n * Prevent pending messages from being announced by the live region.\n */\n clear() {\n if (__privateGet(this, _timeoutId) !== null) {\n clearTimeout(__privateGet(this, _timeoutId));\n __privateSet(this, _timeoutId, null);\n }\n __privateSet(this, _pending, false);\n __privateGet(this, _queue).clear();\n }\n}\n_pending = new WeakMap();\n_queue = new WeakMap();\n_timeoutId = new WeakMap();\n_LiveRegionElement_instances = new WeakSet();\nperformWork_fn = function() {\n if (__privateGet(this, _pending)) {\n return;\n }\n let message = __privateGet(this, _queue).peek();\n if (!message) {\n return;\n }\n if (__privateGet(this, _timeoutId) !== null) {\n clearTimeout(__privateGet(this, _timeoutId));\n __privateSet(this, _timeoutId, null);\n }\n const now = Date.now();\n if (message.scheduled <= now) {\n message = __privateGet(this, _queue).pop();\n if (message) {\n __privateMethod(this, _LiveRegionElement_instances, updateContainerWithMessage_fn).call(this, message);\n }\n __privateMethod(this, _LiveRegionElement_instances, performWork_fn).call(this);\n return;\n }\n const timeout = message.scheduled - now;\n __privateSet(this, _timeoutId, window.setTimeout(() => {\n __privateSet(this, _timeoutId, null);\n __privateMethod(this, _LiveRegionElement_instances, performWork_fn).call(this);\n }, timeout));\n};\nupdateContainerWithMessage_fn = function(message) {\n __privateSet(this, _pending, true);\n const { contents, deferred, politeness } = message;\n const container = this.shadowRoot?.getElementById(politeness);\n if (!container) {\n __privateSet(this, _pending, false);\n throw new Error(`Unable to find container for message. Expected a container with id=\"${politeness}\"`);\n }\n if (container.textContent === contents) {\n container.textContent = `${contents}\\xA0`;\n } else {\n container.textContent = contents;\n }\n if (__privateGet(this, _timeoutId) !== null) {\n clearTimeout(__privateGet(this, _timeoutId));\n }\n deferred.resolve();\n if (this.delay > 0) {\n __privateSet(this, _timeoutId, window.setTimeout(() => {\n __privateSet(this, _timeoutId, null);\n __privateSet(this, _pending, false);\n __privateMethod(this, _LiveRegionElement_instances, performWork_fn).call(this);\n }, this.delay));\n } else {\n __privateSet(this, _timeoutId, null);\n __privateSet(this, _pending, false);\n __privateMethod(this, _LiveRegionElement_instances, performWork_fn).call(this);\n }\n};\nfunction getTextContent(element) {\n let value = \"\";\n if (element.hasAttribute(\"aria-label\")) {\n value = element.getAttribute(\"aria-label\");\n } else if (element.innerText) {\n value = element.innerText;\n } else if (element.textContent) {\n value = element.textContent;\n }\n return value ? value.trim() : \"\";\n}\nlet template = null;\nconst templateContent = `\n\n
\n
\n`;\nfunction getTemplate() {\n if (template) {\n return template;\n }\n template = document.createElement(\"template\");\n template.innerHTML = templateContent;\n return template;\n}\nfunction compareMessages(a, b) {\n if (a.politeness === b.politeness) {\n if (a.scheduled === b.scheduled) {\n return Ordering.Equal;\n }\n if (a.scheduled < b.scheduled) {\n return Ordering.Less;\n }\n return Ordering.Greater;\n }\n if (a.politeness === \"assertive\" && b.politeness !== \"assertive\") {\n return Ordering.Less;\n }\n if (a.politeness !== \"assertive\" && b.politeness === \"assertive\") {\n return Ordering.Greater;\n }\n return Ordering.Equal;\n}\nfunction noop() {\n}\n\nif (!customElements.get(\"live-region\")) {\n customElements.define(\"live-region\", LiveRegionElement);\n}\n\nfunction announce(message, options = {}) {\n let liveRegion = findLiveRegion(options.from);\n if (!liveRegion) {\n liveRegion = document.createElement(\"live-region\");\n if (options.appendTo) {\n options.appendTo.appendChild(liveRegion);\n } else {\n const container = getLiveRegionContainer(options.from);\n container.appendChild(liveRegion);\n }\n if (process.env.NODE_ENV === \"test\") {\n return liveRegion.announce(message, options);\n }\n let canceled = false;\n let cancel = () => {\n canceled = true;\n };\n const promise = wait(REGISTER_WAIT_MS).then(() => {\n if (!canceled) {\n const result = liveRegion.announce(message, options);\n cancel = result.cancel;\n return result;\n }\n });\n return {\n ...promise,\n cancel: () => {\n cancel();\n }\n };\n }\n return liveRegion.announce(message, options);\n}\nfunction announceFromElement(element, options = {}) {\n let liveRegion = findLiveRegion(options.from);\n if (!liveRegion) {\n liveRegion = document.createElement(\"live-region\");\n if (options.appendTo) {\n options.appendTo.appendChild(liveRegion);\n } else {\n const container = getLiveRegionContainer(options.from);\n container.appendChild(liveRegion);\n }\n if (process.env.NODE_ENV === \"test\") {\n return liveRegion.announceFromElement(element, options);\n }\n let canceled = false;\n let cancel = () => {\n canceled = true;\n };\n const promise = wait(REGISTER_WAIT_MS).then(() => {\n if (!canceled) {\n const result = liveRegion.announceFromElement(element, options);\n cancel = result.cancel;\n return result;\n }\n });\n return {\n ...promise,\n cancel: () => {\n cancel();\n }\n };\n }\n return liveRegion.announceFromElement(element, options);\n}\nfunction findLiveRegion(from) {\n let liveRegion = null;\n liveRegion = from ? getClosestLiveRegion(from) : null;\n if (liveRegion !== null) {\n return liveRegion;\n }\n const container = getLiveRegionContainer(from);\n liveRegion = container.querySelector(\"live-region\");\n if (liveRegion !== null) {\n return liveRegion;\n }\n return null;\n}\nfunction getClosestLiveRegion(from) {\n const dialog = from.closest(\"dialog\");\n let current = from;\n while (current = current.parentElement) {\n if (dialog && !dialog.contains(current)) {\n break;\n }\n for (const child of current.childNodes) {\n if (child instanceof LiveRegionElement) {\n return child;\n }\n }\n }\n return null;\n}\nfunction getLiveRegionContainer(from) {\n let container = document.body;\n if (from) {\n const dialog = from.closest(\"dialog\");\n if (dialog) {\n container = dialog;\n }\n }\n return container;\n}\nconst REGISTER_WAIT_MS = 150;\nfunction wait(ms) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\nexport { LiveRegionElement, announce, announceFromElement, templateContent };\n","import {getAnchoredPosition} from '@primer/behaviors'\nimport {controller, target} from '@github/catalyst'\nimport {IncludeFragmentElement} from '@github/include-fragment-element'\nimport type {PrimerTextFieldElement} from 'app/lib/primer/forms/primer_text_field'\nimport type {AnchorAlignment, AnchorSide} from '@primer/behaviors'\nimport type {LiveRegionElement} from '@primer/live-region-element'\nimport '@primer/live-region-element'\nimport '@oddbird/popover-polyfill'\nimport 'invokers-polyfill'\nimport {observeMutationsUntilConditionMet} from '../utils'\n\ntype SelectVariant = 'none' | 'single' | 'multiple' | null\ntype SelectedItem = {\n label: string | null | undefined\n value: string | null | undefined\n inputName: string | null | undefined\n}\n\nconst validSelectors = ['[role=\"option\"]']\nconst menuItemSelectors = validSelectors.join(',')\nconst visibleMenuItemSelectors = validSelectors.map(selector => `:not([hidden]) > ${selector}`).join(',')\n\nexport type SelectPanelItem = HTMLLIElement\n\nenum FetchStrategy {\n REMOTE,\n EVENTUALLY_LOCAL,\n LOCAL,\n}\n\nenum ErrorStateType {\n BODY,\n BANNER,\n}\n\nexport type FilterFn = (item: SelectPanelItem, query: string) => boolean\n\nconst updateWhenVisible = (() => {\n const anchors = new Set()\n let resizeObserver: ResizeObserver | null = null\n function updateVisibleAnchors() {\n for (const anchor of anchors) {\n anchor.updateAnchorPosition()\n }\n }\n return (el: SelectPanelElement) => {\n // eslint-disable-next-line github/prefer-observers\n window.addEventListener('resize', updateVisibleAnchors)\n // eslint-disable-next-line github/prefer-observers\n window.addEventListener('scroll', updateVisibleAnchors)\n\n resizeObserver ||= new ResizeObserver(() => {\n for (const anchor of anchors) {\n anchor.updateAnchorPosition()\n }\n })\n resizeObserver.observe(el.ownerDocument.documentElement)\n el.addEventListener('dialog:close', () => {\n el.invokerElement?.setAttribute('aria-expanded', 'false')\n anchors.delete(el)\n })\n el.addEventListener('dialog:open', () => {\n anchors.add(el)\n })\n }\n})()\n\n@controller\nexport class SelectPanelElement extends HTMLElement {\n @target includeFragment: IncludeFragmentElement\n @target dialog: HTMLDialogElement\n @target filterInputTextField: HTMLInputElement\n @target remoteInput: HTMLElement\n @target list: HTMLElement\n @target noResults: HTMLElement\n @target fragmentErrorElement: HTMLElement\n @target bannerErrorElement: HTMLElement\n @target bodySpinner: HTMLElement\n @target liveRegion: LiveRegionElement\n\n filterFn?: FilterFn\n\n #dialogIntersectionObserver: IntersectionObserver\n #abortController: AbortController\n #originalLabel = ''\n #inputName = ''\n #selectedItems: Map = new Map()\n #loadingDelayTimeoutId: number | null = null\n #loadingAnnouncementTimeoutId: number | null = null\n #hasLoadedData = false\n\n get open(): boolean {\n return this.dialog.open\n }\n\n get selectVariant(): SelectVariant {\n return this.getAttribute('data-select-variant') as SelectVariant\n }\n\n get ariaSelectionType(): string {\n return this.selectVariant === 'multiple' ? 'aria-checked' : 'aria-selected'\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 get dynamicAriaLabelPrefix(): string {\n const prefix = this.getAttribute('data-dynamic-aria-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 invokerElement(): HTMLButtonElement | null {\n const id = this.querySelector('dialog')?.id\n if (!id) return null\n for (const el of this.querySelectorAll(`[aria-controls]`)) {\n if (el.getAttribute('aria-controls') === id) {\n return el as HTMLButtonElement\n }\n }\n return null\n }\n\n get closeButton(): HTMLButtonElement | null {\n return this.querySelector('button[commandfor][command=\"close\"]')\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 return Array.from(this.#selectedItems.values())\n }\n\n get align(): AnchorAlignment {\n return (this.getAttribute('anchor-align') || 'start') as AnchorAlignment\n }\n\n get side(): AnchorSide {\n return (this.getAttribute('anchor-side') || 'outside-bottom') as AnchorSide\n }\n\n updateAnchorPosition() {\n // If the selectPanel is removed from the screen on resize close the dialog\n if (this && this.offsetParent === null) {\n this.hide()\n }\n\n if (this.invokerElement) {\n const {top, left} = getAnchoredPosition(this.dialog, this.invokerElement, {\n align: this.align,\n side: this.side,\n anchorOffset: 4,\n })\n this.dialog.style.top = `${top}px`\n this.dialog.style.left = `${left}px`\n this.dialog.style.bottom = 'auto'\n this.dialog.style.right = 'auto'\n }\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('mousedown', this, {signal})\n this.addEventListener('input', this, {signal})\n this.addEventListener('remote-input-success', this, {signal})\n this.addEventListener('remote-input-error', this, {signal})\n this.addEventListener('loadstart', this, {signal})\n this.#setDynamicLabel()\n this.#updateInput()\n this.#softDisableItems()\n updateWhenVisible(this)\n\n observeMutationsUntilConditionMet(\n this,\n () => Boolean(this.remoteInput),\n () => {\n this.remoteInput.addEventListener('loadstart', this, {signal})\n this.remoteInput.addEventListener('loadend', this, {signal})\n },\n )\n\n observeMutationsUntilConditionMet(\n this,\n () => Boolean(this.includeFragment),\n () => {\n this.includeFragment.addEventListener('include-fragment-replaced', this, {signal})\n this.includeFragment.addEventListener('error', this, {signal})\n this.includeFragment.addEventListener('loadend', this, {signal})\n },\n )\n\n this.#dialogIntersectionObserver = new IntersectionObserver(entries => {\n for (const entry of entries) {\n const elem = entry.target\n if (entry.isIntersecting && elem === this.dialog) {\n // Focus on the filter input when the dialog opens to work around a Safari limitation\n // that prevents the autofocus attribute from working as it does in other browsers\n if (this.filterInputTextField) {\n if (document.activeElement !== this.filterInputTextField) {\n this.filterInputTextField.focus()\n }\n }\n\n // signal that any focus hijinks are finished (thanks Safari)\n this.dialog.setAttribute('data-ready', 'true')\n\n this.updateAnchorPosition()\n\n if (this.#fetchStrategy === FetchStrategy.LOCAL) {\n this.#updateItemVisibility()\n }\n }\n }\n })\n\n observeMutationsUntilConditionMet(\n this,\n () => Boolean(this.dialog),\n () => {\n this.#dialogIntersectionObserver.observe(this.dialog)\n this.dialog.addEventListener('close', this, {signal})\n\n if (this.getAttribute('data-open-on-load') === 'true') {\n this.show()\n }\n },\n )\n\n if (this.#fetchStrategy === FetchStrategy.LOCAL) {\n observeMutationsUntilConditionMet(\n this,\n () => this.items.length > 0,\n () => {\n this.#updateItemVisibility()\n this.#updateInput()\n },\n )\n }\n }\n\n disconnectedCallback() {\n this.#abortController.abort()\n }\n\n #softDisableItems() {\n const {signal} = this.#abortController\n\n for (const item of this.querySelectorAll(validSelectors.join(','))) {\n item.addEventListener('click', this.#potentiallyDisallowActivation.bind(this), {signal})\n item.addEventListener('keydown', this.#potentiallyDisallowActivation.bind(this), {signal})\n }\n }\n\n // If there is an active item in single-select mode, set its tabindex to 0. Otherwise, set the\n // first visible item's tabindex to 0. All other items should have a tabindex of -1.\n #updateTabIndices() {\n let setZeroTabIndex = false\n\n if (this.selectVariant === 'single') {\n for (const item of this.items) {\n const itemContent = this.#getItemContent(item)\n if (!itemContent) continue\n\n if (!this.isItemHidden(item) && this.isItemChecked(item) && !setZeroTabIndex) {\n itemContent.setAttribute('tabindex', '0')\n setZeroTabIndex = true\n } else {\n itemContent.setAttribute('tabindex', '-1')\n }\n\n //
  • elements should not themselves be tabbable\n item.removeAttribute('tabindex')\n }\n } else {\n for (const item of this.items) {\n const itemContent = this.#getItemContent(item)\n if (!itemContent) continue\n\n itemContent.setAttribute('tabindex', '-1')\n\n //
  • elements should not themselves be tabbable\n item.removeAttribute('tabindex')\n }\n }\n\n if (!setZeroTabIndex && this.#firstItem) {\n this.#getItemContent(this.#firstItem)?.setAttribute('tabindex', '0')\n }\n }\n\n // returns true if activation was prevented\n #potentiallyDisallowActivation(event: Event): boolean {\n if (!this.#isActivation(event)) return false\n\n const item = (event.target as HTMLElement).closest(visibleMenuItemSelectors)\n if (!item) return false\n\n if (item.getAttribute('aria-disabled')) {\n event.preventDefault()\n\n // eslint-disable-next-line no-restricted-syntax\n event.stopPropagation()\n\n // eslint-disable-next-line no-restricted-syntax\n event.stopImmediatePropagation()\n return true\n }\n\n return false\n }\n\n #isAnchorActivationViaSpace(event: Event): boolean {\n return (\n event.target instanceof HTMLAnchorElement &&\n event instanceof KeyboardEvent &&\n event.type === 'keydown' &&\n !(event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) &&\n event.key === ' '\n )\n }\n\n #isActivation(event: Event): boolean {\n // Some browsers fire MouseEvents (Firefox) and others fire PointerEvents (Chrome). Activating an item via\n // enter or space counterintuitively fires one of these rather than a KeyboardEvent. Since PointerEvent\n // inherits from MouseEvent, it is enough to check for MouseEvent here.\n return (event instanceof MouseEvent && event.type === 'click') || this.#isAnchorActivationViaSpace(event)\n }\n\n #checkSelectedItems() {\n for (const item of this.items) {\n const itemContent = this.#getItemContent(item)\n if (!itemContent) continue\n\n const value = itemContent.getAttribute('data-value')\n\n if (value) {\n if (this.#selectedItems.has(value)) {\n itemContent.setAttribute(this.ariaSelectionType, 'true')\n }\n }\n }\n\n this.#updateInput()\n }\n\n #addSelectedItem(item: SelectPanelItem) {\n const itemContent = this.#getItemContent(item)\n if (!itemContent) return\n\n const value = itemContent.getAttribute('data-value')\n\n if (value) {\n this.#selectedItems.set(value, {\n value,\n label: itemContent.querySelector('.ActionListItem-label')?.textContent?.trim(),\n inputName: itemContent.getAttribute('data-input-name'),\n })\n }\n }\n\n #removeSelectedItem(item: SelectPanelItem) {\n const itemContent = this.#getItemContent(item)\n if (!itemContent) return\n\n const value = itemContent.getAttribute('data-value')\n if (value) {\n this.#selectedItems.delete(value)\n }\n }\n\n #setTextFieldLoadingSpinnerTimer() {\n if (!this.#filterInputTextFieldElement) return\n if (this.#loadingDelayTimeoutId) clearTimeout(this.#loadingDelayTimeoutId)\n if (this.#loadingAnnouncementTimeoutId) clearTimeout(this.#loadingAnnouncementTimeoutId)\n\n this.#loadingAnnouncementTimeoutId = setTimeout(() => {\n this.liveRegion.announce('Loading')\n }, 2000) as unknown as number\n\n this.#loadingDelayTimeoutId = setTimeout(() => {\n this.#filterInputTextFieldElement?.showLeadingSpinner()\n }, 1000) as unknown as number\n }\n\n handleEvent(event: Event) {\n if (event.target === this.filterInputTextField) {\n this.#handleSearchFieldEvent(event)\n return\n }\n\n if (event.target === this.remoteInput) {\n this.#handleRemoteInputEvent(event)\n return\n }\n\n const targetIsInvoker = this.invokerElement?.contains(event.target as HTMLElement)\n const targetIsCloseButton = this.closeButton?.contains(event.target as HTMLElement)\n const eventIsActivation = this.#isActivation(event)\n\n if (targetIsInvoker && event.type === 'mousedown') {\n return\n }\n\n if (event.type === 'mousedown' && event.target instanceof HTMLInputElement) {\n return\n }\n\n // Prevent safari bug that dismisses menu on mousedown instead of allowing\n // the click event to propagate to the button\n if (event.type === 'mousedown') {\n event.preventDefault()\n return\n }\n\n if (targetIsInvoker && eventIsActivation) {\n this.#handleInvokerActivated(event)\n return\n }\n\n if (targetIsCloseButton && eventIsActivation) {\n // hide() will automatically be called by dialog event triggered from `data-close-dialog-id`\n return\n }\n\n if (event.target === this.dialog && event.type === 'close') {\n // Remove data-ready so it can be set the next time the panel is opened\n this.dialog.removeAttribute('data-ready')\n this.invokerElement?.setAttribute('aria-expanded', 'false')\n // When we close the dialog, clear the filter input\n\n if (this.filterInputTextField) {\n const fireSearchEvent = this.filterInputTextField.value.length > 0\n this.filterInputTextField.value = ''\n if (fireSearchEvent) {\n this.filterInputTextField.dispatchEvent(new Event('input'))\n }\n }\n\n this.dispatchEvent(\n new CustomEvent('panelClosed', {\n detail: {panel: this},\n bubbles: true,\n }),\n )\n\n return\n }\n\n const item = (event.target as Element).closest(visibleMenuItemSelectors)?.parentElement as\n | SelectPanelItem\n | null\n | undefined\n\n const targetIsItem = item !== null && item !== undefined\n\n if (targetIsItem && eventIsActivation) {\n if (this.#potentiallyDisallowActivation(event)) return\n\n const dialogInvoker = item.closest('button[commandfor][command=\"show-modal\"]')\n\n if (dialogInvoker) {\n const dialog = dialogInvoker.commandForElement\n\n if (dialog && this.contains(dialogInvoker) && this.contains(dialog)) {\n this.#handleDialogItemActivated(event, dialog)\n return\n }\n }\n\n // Pressing the space key on a link will cause the page to scroll unless preventDefault() is called.\n // We then click it manually to navigate.\n if (this.#isAnchorActivationViaSpace(event)) {\n event.preventDefault()\n this.#getItemContent(item)?.click()\n }\n\n this.#handleItemActivated(item)\n\n return\n }\n\n if (event.type === 'click') {\n const rect = this.dialog.getBoundingClientRect()\n\n const clickWasInsideDialog =\n rect.top <= (event as MouseEvent).clientY &&\n (event as MouseEvent).clientY <= rect.top + rect.height &&\n rect.left <= (event as MouseEvent).clientX &&\n (event as MouseEvent).clientX <= rect.left + rect.width\n\n if (!clickWasInsideDialog) {\n this.hide()\n }\n }\n\n // The include fragment will have been removed from the DOM by the time\n // the include-fragment-replaced event has been dispatched, so we have to\n // check for the type of the event target manually, since this.includeFragment\n // will be null.\n if (event.target instanceof IncludeFragmentElement) {\n this.#handleIncludeFragmentEvent(event)\n }\n }\n\n #handleIncludeFragmentEvent(event: Event) {\n switch (event.type) {\n case 'include-fragment-replaced': {\n this.#updateItemVisibility()\n break\n }\n\n case 'loadstart': {\n this.#toggleIncludeFragmentElements(false)\n break\n }\n\n case 'loadend': {\n this.#filterInputTextFieldElement?.hideLeadingSpinner()\n this.dispatchEvent(new CustomEvent('loadend'))\n break\n }\n\n case 'error': {\n this.#toggleIncludeFragmentElements(true)\n\n const errorElement = this.fragmentErrorElement\n // check if the errorElement is visible in the dom\n if (errorElement && !errorElement.hasAttribute('hidden')) {\n this.liveRegion.announceFromElement(errorElement, {politeness: 'assertive'})\n return\n }\n\n break\n }\n }\n }\n\n #toggleIncludeFragmentElements(showError: boolean) {\n for (const el of this.includeFragment.querySelectorAll('[data-show-on-error]')) {\n if (el instanceof HTMLElement) el.hidden = !showError\n }\n for (const el of this.includeFragment.querySelectorAll('[data-hide-on-error]')) {\n if (el instanceof HTMLElement) el.hidden = showError\n }\n }\n\n #handleRemoteInputEvent(event: Event) {\n switch (event.type) {\n case 'remote-input-success': {\n this.#clearErrorState()\n this.#updateItemVisibility()\n this.#checkSelectedItems()\n break\n }\n\n case 'remote-input-error': {\n this.bodySpinner?.setAttribute('hidden', '')\n\n if (this.includeFragment || this.visibleItems.length === 0) {\n this.#setErrorState(ErrorStateType.BODY)\n } else {\n this.#setErrorState(ErrorStateType.BANNER)\n }\n\n break\n }\n\n case 'loadstart': {\n if (!this.#performFilteringLocally()) {\n this.#clearErrorState()\n this.bodySpinner?.removeAttribute('hidden')\n\n if (this.bodySpinner) break\n this.#setTextFieldLoadingSpinnerTimer()\n }\n\n break\n }\n\n case 'loadend': {\n this.#filterInputTextFieldElement?.hideLeadingSpinner()\n if (this.#loadingAnnouncementTimeoutId) clearTimeout(this.#loadingAnnouncementTimeoutId)\n if (this.#loadingDelayTimeoutId) clearTimeout(this.#loadingDelayTimeoutId)\n this.dispatchEvent(new CustomEvent('loadend'))\n break\n }\n }\n }\n\n #defaultFilterFn(item: HTMLElement, query: string) {\n const text = (item.getAttribute('data-filter-string') || item.textContent || '').toLowerCase()\n return text.indexOf(query.toLowerCase()) > -1\n }\n\n #handleSearchFieldEvent(event: Event) {\n if (event.type === 'keydown') {\n const key = (event as KeyboardEvent).key\n\n if (key === 'Enter') {\n const item = this.visibleItems[0] as HTMLLIElement | null\n\n if (item) {\n const itemContent = this.#getItemContent(item)\n if (itemContent) itemContent.click()\n }\n } else if (key === 'ArrowDown') {\n const item = (this.focusableItem || this.#getItemContent(this.visibleItems[0])) as HTMLLIElement\n\n if (item) {\n item.focus()\n event.preventDefault()\n }\n } else if (key === 'Home') {\n const item = this.visibleItems[0] as HTMLLIElement | null\n\n if (item) {\n const itemContent = this.#getItemContent(item)\n if (itemContent) itemContent.focus()\n event.preventDefault()\n }\n } else if (key === 'End') {\n if (this.visibleItems.length > 0) {\n const item = this.visibleItems[this.visibleItems.length - 1] as HTMLLIElement\n const itemContent = this.#getItemContent(item)\n if (itemContent) itemContent.focus()\n event.preventDefault()\n }\n }\n }\n\n if (event.type !== 'input') return\n\n // remote-input-element does not trigger another loadstart event if a request is\n // already in-flight, so we use the input event on the text field to reset the\n // loading spinner timer instead\n if (!this.bodySpinner && !this.#performFilteringLocally()) {\n this.#setTextFieldLoadingSpinnerTimer()\n }\n\n if (this.#fetchStrategy === FetchStrategy.LOCAL || this.#fetchStrategy === FetchStrategy.EVENTUALLY_LOCAL) {\n if (this.includeFragment) {\n this.includeFragment.refetch()\n return\n }\n\n this.#updateItemVisibility()\n }\n }\n\n #updateItemVisibility() {\n if (!this.list) return\n\n let atLeastOneResult = false\n\n if (this.#performFilteringLocally()) {\n const query = this.filterInputTextField?.value ?? ''\n const filter = this.filterFn || this.#defaultFilterFn\n\n for (const item of this.items) {\n if (filter(item, query)) {\n this.#showItem(item)\n atLeastOneResult = true\n } else {\n this.#hideItem(item)\n }\n }\n } else {\n atLeastOneResult = this.items.length > 0\n }\n\n this.#updateTabIndices()\n this.#maybeAnnounce()\n\n for (const item of this.items) {\n const itemContent = this.#getItemContent(item)\n if (!itemContent) continue\n\n const value = itemContent.getAttribute('data-value')\n if (this.#hasLoadedData) {\n if (value && !this.#selectedItems.has(value)) {\n itemContent.setAttribute(this.ariaSelectionType, 'false')\n }\n } else if (value && !this.#selectedItems.has(value) && this.isItemChecked(item)) {\n this.#addSelectedItem(item)\n }\n }\n\n this.#hasLoadedData = true\n\n if (!this.noResults) return\n\n if (this.#inErrorState()) {\n this.noResults.setAttribute('hidden', '')\n return\n }\n\n if (atLeastOneResult) {\n this.noResults.setAttribute('hidden', '')\n // TODO can we change this to search for `@panelId-list`\n this.list?.querySelector('.ActionListWrap')?.removeAttribute('hidden')\n } else {\n this.list?.querySelector('.ActionListWrap')?.setAttribute('hidden', '')\n this.noResults.removeAttribute('hidden')\n }\n }\n\n #inErrorState(): boolean {\n if (this.fragmentErrorElement && !this.fragmentErrorElement.hasAttribute('hidden')) {\n return true\n }\n\n if (!this.bannerErrorElement) return false\n\n return !this.bannerErrorElement.hasAttribute('hidden')\n }\n\n #setErrorState(type: ErrorStateType) {\n let errorElement = this.fragmentErrorElement\n\n if (type === ErrorStateType.BODY && this.fragmentErrorElement) {\n this.fragmentErrorElement.removeAttribute('hidden')\n this.bannerErrorElement.setAttribute('hidden', '')\n } else {\n errorElement = this.bannerErrorElement\n this.bannerErrorElement?.removeAttribute('hidden')\n this.fragmentErrorElement?.setAttribute('hidden', '')\n }\n\n // check if the errorElement is visible in the dom\n if (errorElement && !errorElement.hasAttribute('hidden')) {\n this.liveRegion.announceFromElement(errorElement, {politeness: 'assertive'})\n return\n }\n }\n\n #clearErrorState() {\n this.fragmentErrorElement?.setAttribute('hidden', '')\n this.bannerErrorElement.setAttribute('hidden', '')\n }\n\n #maybeAnnounce() {\n if (this.open && this.list) {\n const items = this.visibleItems\n\n if (items.length > 0) {\n const instructions = 'tab for results'\n this.liveRegion.announce(`${items.length} result${items.length === 1 ? '' : 's'} ${instructions}`)\n } else {\n const noResultsEl = this.noResults\n if (noResultsEl) {\n this.liveRegion.announceFromElement(noResultsEl)\n }\n }\n }\n }\n\n get #fetchStrategy(): FetchStrategy {\n if (!this.list) return FetchStrategy.REMOTE\n\n switch (this.list.getAttribute('data-fetch-strategy')) {\n case 'local':\n return FetchStrategy.LOCAL\n case 'eventually_local':\n return FetchStrategy.EVENTUALLY_LOCAL\n default:\n return FetchStrategy.REMOTE\n }\n }\n\n get #filterInputTextFieldElement(): PrimerTextFieldElement | null {\n return this.filterInputTextField?.closest('primer-text-field') as PrimerTextFieldElement | null\n }\n\n #performFilteringLocally(): boolean {\n return this.#fetchStrategy === FetchStrategy.LOCAL || this.#fetchStrategy === FetchStrategy.EVENTUALLY_LOCAL\n }\n\n #handleInvokerActivated(event: Event) {\n event.preventDefault()\n\n // eslint-disable-next-line no-restricted-syntax\n event.stopPropagation()\n\n if (this.open) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n #handleDialogItemActivated(event: Event, dialog: HTMLElement) {\n this.querySelector('.ActionListWrap')!.style.display = 'none'\n const dialog_controller = new AbortController()\n const {signal} = dialog_controller\n const handleDialogClose = () => {\n dialog_controller.abort()\n this.querySelector('.ActionListWrap')!.style.display = ''\n if (this.open) {\n this.hide()\n }\n const activeElement = this.ownerDocument.activeElement\n const lostFocus = this.ownerDocument.activeElement === this.ownerDocument.body\n const focusInClosedMenu = this.contains(activeElement)\n if (lostFocus || focusInClosedMenu) {\n setTimeout(() => this.invokerElement?.focus(), 0)\n }\n }\n // a modal element will close all popovers\n dialog.addEventListener('close', handleDialogClose, {signal})\n dialog.addEventListener('cancel', handleDialogClose, {signal})\n }\n\n #handleItemActivated(item: SelectPanelItem) {\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(() => {\n if (this.open) {\n this.hide()\n }\n })\n }\n\n // The rest of the code below deals with single/multiple selection behavior, and should not\n // interfere with events fired by menu items whose behavior is specified outside the library.\n if (this.selectVariant !== 'multiple' && this.selectVariant !== 'single') return\n\n const currentlyChecked = this.isItemChecked(item)\n const checked = !currentlyChecked\n\n const activationSuccess = this.dispatchEvent(\n new CustomEvent('beforeItemActivated', {\n bubbles: true,\n cancelable: true,\n detail: {\n item,\n checked,\n value: this.#getItemContent(item)?.getAttribute('data-value'),\n },\n }),\n )\n\n if (!activationSuccess) return\n\n const itemContent = this.#getItemContent(item)\n\n if (this.selectVariant === 'single') {\n // Don't check anything if we have an href\n if (itemContent?.getAttribute('href')) return\n\n // disallow unchecking checked item in single-select mode\n if (!currentlyChecked) {\n for (const el of this.items) {\n this.#getItemContent(el)?.setAttribute(this.ariaSelectionType, 'false')\n }\n\n this.#selectedItems.clear()\n\n if (checked) {\n this.#addSelectedItem(item)\n itemContent?.setAttribute(this.ariaSelectionType, 'true')\n }\n\n this.#setDynamicLabel()\n }\n } else {\n // multi-select mode allows unchecking a checked item\n itemContent?.setAttribute(this.ariaSelectionType, `${checked}`)\n\n if (checked) {\n this.#addSelectedItem(item)\n } else {\n this.#removeSelectedItem(item)\n }\n }\n\n this.#updateInput()\n this.#updateTabIndices()\n\n this.dispatchEvent(\n new CustomEvent('itemActivated', {\n bubbles: true,\n detail: {\n item,\n checked,\n value: this.#getItemContent(item)?.getAttribute('data-value'),\n },\n }),\n )\n }\n\n show() {\n this.updateAnchorPosition()\n this.dialog.showModal()\n this.invokerElement?.setAttribute('aria-expanded', 'true')\n const event = new CustomEvent('dialog:open', {\n detail: {dialog: this.dialog},\n })\n this.dispatchEvent(event)\n }\n\n hide() {\n this.dialog.close()\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 =\n this.querySelector(`[${this.ariaSelectionType}=true] .ActionListItem-label`)?.textContent || this.#originalLabel\n if (itemLabel) {\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\n invokerLabel.replaceChildren(prefixSpan, contentSpan)\n\n if (this.dynamicAriaLabelPrefix) {\n this.invokerElement?.setAttribute('aria-label', `${this.dynamicAriaLabelPrefix} ${itemLabel.trim()}`)\n }\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\n if (!input) return\n\n const selectedItem = this.selectedItems[0]\n\n if (selectedItem) {\n input.value = (selectedItem.value || selectedItem.label || '').trim()\n if (selectedItem.inputName) input.name = selectedItem.inputName\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 = selectedItem.inputName || 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 get #firstItem(): SelectPanelItem | null {\n return (this.querySelector(visibleMenuItemSelectors)?.parentElement || null) as SelectPanelItem | null\n }\n\n get visibleItems(): SelectPanelItem[] {\n return Array.from(this.querySelectorAll(visibleMenuItemSelectors)).map(\n element => element.parentElement! as SelectPanelItem,\n )\n }\n\n get items(): SelectPanelItem[] {\n return Array.from(this.querySelectorAll(menuItemSelectors)).map(\n element => element.parentElement! as SelectPanelItem,\n )\n }\n\n get focusableItem(): HTMLElement | undefined {\n for (const item of this.items) {\n const itemContent = this.#getItemContent(item)\n if (!itemContent) continue\n if (itemContent.getAttribute('tabindex') === '0') {\n return itemContent\n }\n }\n }\n\n getItemById(itemId: string): SelectPanelItem | null {\n return this.querySelector(`li[data-item-id=\"${itemId}\"`)\n }\n\n isItemDisabled(item: SelectPanelItem | null): boolean {\n if (item) {\n return item.classList.contains('ActionListItem--disabled')\n } else {\n return false\n }\n }\n\n disableItem(item: SelectPanelItem | null) {\n if (item) {\n item.classList.add('ActionListItem--disabled')\n this.#getItemContent(item)!.setAttribute('aria-disabled', 'true')\n }\n }\n\n enableItem(item: SelectPanelItem | null) {\n if (item) {\n item.classList.remove('ActionListItem--disabled')\n this.#getItemContent(item)!.removeAttribute('aria-disabled')\n }\n }\n\n isItemHidden(item: SelectPanelItem | null): boolean {\n if (item) {\n return item.hasAttribute('hidden')\n } else {\n return false\n }\n }\n\n #hideItem(item: SelectPanelItem | null) {\n if (item) {\n item.setAttribute('hidden', 'hidden')\n }\n }\n\n #showItem(item: SelectPanelItem | null) {\n if (item) {\n item.removeAttribute('hidden')\n }\n }\n\n isItemChecked(item: SelectPanelItem | null) {\n if (item) {\n return this.#getItemContent(item)!.getAttribute(this.ariaSelectionType) === 'true'\n } else {\n return false\n }\n }\n\n checkItem(item: SelectPanelItem | null) {\n if (item && (this.selectVariant === 'single' || this.selectVariant === 'multiple')) {\n if (!this.isItemChecked(item)) {\n this.#handleItemActivated(item)\n }\n }\n }\n\n uncheckItem(item: SelectPanelItem | null) {\n if (item && (this.selectVariant === 'single' || this.selectVariant === 'multiple')) {\n if (this.isItemChecked(item)) {\n this.#handleItemActivated(item)\n }\n }\n }\n\n #getItemContent(item: SelectPanelItem): HTMLElement | null {\n return item.querySelector('.ActionListContent')\n }\n}\n\nif (!window.customElements.get('select-panel')) {\n window.SelectPanelElement = SelectPanelElement\n window.customElements.define('select-panel', SelectPanelElement)\n}\n\ndeclare global {\n interface Window {\n SelectPanelElement: typeof SelectPanelElement\n }\n}\n","import {controller, target} from '@github/catalyst'\n\n/**\n * A companion Catalyst element for the Details view component. This element\n * ensures the
    and elements markup is properly accessible by\n * updating the aria-label and aria-expanded attributes on click.\n *\n * aria-label values default to \"Expand\" and \"Collapse\". To override those\n * values, use the `data-aria-label-open` and `data-aria-label-closed`\n * attributes on the summary target.\n *\n * @example\n * ```html\n * \n *
    \n * \n * Click me\n *
    \n *
    Contents
    \n *
    \n * \n * ```\n */\n\n@controller\nclass DetailsToggleElement extends HTMLElement {\n @target detailsTarget!: HTMLDetailsElement\n @target summaryTarget!: HTMLElement\n\n toggle() {\n const detailsIsOpen = this.detailsTarget.hasAttribute('open')\n if (detailsIsOpen) {\n const ariaLabelClosed = this.summaryTarget.getAttribute('data-aria-label-closed') || 'Expand'\n this.summaryTarget.setAttribute('aria-label', ariaLabelClosed)\n this.summaryTarget.setAttribute('aria-expanded', 'false')\n } else {\n const ariaLabelOpen = this.summaryTarget.getAttribute('data-aria-label-open') || 'Collapse'\n this.summaryTarget.setAttribute('aria-label', ariaLabelOpen)\n this.summaryTarget.setAttribute('aria-expanded', 'true')\n }\n }\n}\n\ndeclare global {\n interface Window {\n DetailsToggleElement: typeof DetailsToggleElement\n }\n}\n\nwindow.DetailsToggleElement = DetailsToggleElement\n"],"names":["_anchorElement","_animationFrame","_abortController","_DialogHelperElement_instances","handleDialogOpenAttribute_fn","_retainSignal","_FocusGroupElement_instances","items_get","_focusAbortController","_ModalDialogElement_instances","overlayBackdrop_get","keydown_fn","_align","_side","_allowUpdatePosition","_showReason","_ToolTipElement_instances","update_fn","updateControlReference_fn","updateDirection_fn","updatePosition_fn","_IncludeFragmentElement_instances","_IncludeFragmentElement_busy","_IncludeFragmentElement_observer","_IncludeFragmentElement_handleData","_IncludeFragmentElement_getData","_IncludeFragmentElement_getStringOrErrorData","_IncludeFragmentElement_task","_IncludeFragmentElement_fetchDataWithEvents","__classPrivateFieldGet","receiver","state","kind","f","TypeError","has","call","value","get","__classPrivateFieldSet","set","privateData","WeakMap","cspTrustedTypesPolicyPromise","IncludeFragmentElement","HTMLElement","constructor","super","arguments","add","this","IntersectionObserver","entries","entry","isIntersecting","target","unobserve","loading","rootMargin","threshold","static","tag","registry","customElements","define","policy","Promise","resolve","observedAttributes","src","getAttribute","link","ownerDocument","createElement","href","val","setAttribute","accept","data","attributeChangedCallback","attribute","oldVal","isConnected","connectedCallback","shadowRoot","attachShadow","mode","style","document","textContent","append","observe","request","Error","Request","method","credentials","headers","Accept","load","fetch","refetch","delete","WeakSet","async","__classPrivateFieldSet$4","dataTreatedAsString","template","innerHTML","fragment","importNode","content","dispatchEvent","CustomEvent","cancelable","detail","replaceWith","_a","classList","cachedData","reject","toString","eventsToDispatch","setTimeout","eventType","Event","response","status","ct","split","find","x","match","includes","responseText","text","createHTML","__classPrivateFieldGet$4","error","root","globalThis","window","root$5","e","DOMException","name","ReferenceError","states","RemoteInputElement","fetchResults","bind","currentQuery","oninput","debounce","controller","states$2","oldValue","input","addEventListener","disconnectedCallback","removeEventListener","querySelector","HTMLInputElement","HTMLTextAreaElement","url","remoteInput","checkCurrentQuery","event","query","resultsContainer","getElementById","URL","location","params","URLSearchParams","search","abort","AbortController","signal","html","el","options","fetchWithNetworkEvents","removeAttribute","ok","bubbles","type","callback","timeout","args","clearTimeout","controllers","bindShadow","bindElements","listenForBind","observers","closed","observer","MutationObserver","mutations","mutation","Element","bindActions","addedNodes","length","node","childList","subtree","attributeFilter","subscription","unsubscribe","disconnect","querySelectorAll","hasAttribute","handleEvent","currentTarget","binding","bindings","closest","getRootNode","ShadowRoot","host","matches","shadowController","action","trim","eventSep","lastIndexOf","methodSep","Math","max","slice","dasherize","str","String","description","replace","toLowerCase","mustDasherize","dashed","attr","proto","key","meta","initialized","initializeAttrs","instance","names","Object","getPrototypeOf","prefix","attrPrefix","descriptor","configurable","newValue","Number","toggleAttribute","defineProperty","dynamicElements","Map","ready","readyState","once","firstInteraction","listenerOptions","passive","handler","strategies","visible","tagName","timers","scan","element","cancelAnimationFrame","requestAnimationFrame","keys","child","strategyName","strategy","cb","then","elementLoader","symbol","Symbol","for","CatalystDelegate","classObject","delegate","prototype","attributes","observed","attrToAttributeName","map","concat","defineObservedAttributes","register","upgrade","parentElement","cloneNode","autoShadowRoot","size","hasOwnProperty","parent","Set","findTarget","targets","push","findTargets","_truncationObserver","ActionListTruncationObserver","resizeObserver","ResizeObserver","update","items","item","label","tooltip","isTruncated","scrollWidth","clientWidth","display","ActionListElement","__decorateClass","alternateOrders","alternateAlignments","start","end","center","getAnchoredPosition","floatingElement","anchorElement","settings","test","body","showPopover","_b","isOnTopLayer","parentNode","getComputedStyle","position","getPositionedParent","clippingRect","overflow","clippingNode","elemRect","getBoundingClientRect","elemStyle","borderTop","borderLeft","borderRight","borderBottom","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","v","parseInt","top","left","width","height","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","_c","_d","_e","positionDefaults","startsWith","getDefaultSettings","elementDimensions","anchorPosition","anchorRight","anchorBottom","currentPos","containerDimensions","iterateFocusableElements","container","strict","acceptFn","onlyTabbable","isTabbable","isFocusable","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","FILTER_ACCEPT","FILTER_SKIP","nextNode","reverse","lastChild","firstChild","previousNode","getFocusableChild","next","elem","disabledAttrInert","disabled","hiddenInert","hidden","hiddenInputInert","sentinelInert","contains","sizeInert","offsetWidth","offsetHeight","visibilityInert","visibility","displayInert","offsetParent","clientRectsInert","getClientRects","HTMLAnchorElement","tabIndex","signalSupported","noop","create","polyfill","originalAddEventListener","EventTarget","originalCallback","optionsOrCapture","AbortSignal","suspendedTrapStack","activeTrap","isMac","focusTrap","initialFocus","abortSignal","sentinelStart","onfocus","lastFocusableChild","focus","sentinelEnd","firstFocusableChild","prepend","sentinels","Array","from","filter","firstElementChild","lastElementChild","insertAdjacentElement","observeFocusTrap","lastFocusedChild","ensureTrapZoneHasFocus","focusedElement","wrappingController","followSignal","suspendedTrap","getElementsByClassName","remove","suspendedTrapIndex","findIndex","t","splice","trapToReactivate","pop","originalSignal","capture","activeElement","isMacOS","navigator","platform","idSeed","FocusKeys","KEY_TO_BIT","ArrowLeft","ArrowHorizontal","ArrowDown","ArrowVertical","ArrowUp","ArrowRight","h","HL","j","JK","k","l","a","AD","s","WS","w","d","Tab","Home","HomeAndEnd","End","PageUp","PageUpDown","PageDown","Backspace","KEY_TO_DIRECTION","getDirection","keyboardEvent","direction","shiftKey","metaKey","ctrlKey","focusZone","focusableElements","savedTabIndex","bindKeys","getNextFocusable","ArrowAll","focusOutBehavior","focusInStrategy","activeDescendantControl","activeDescendantCallback","onActiveDescendantChanged","currentFocusedElement","preventScroll","getFirstFocusableElement","updateFocusedElement","to","directlyActivated","setActiveDescendant","id","clearActiveDescendant","previouslyActiveElement","beginFocusManagement","elements","filteredElements","focusableElementFilter","elementsToInsert","firstElementToInsert","iMin","iMax","i","floor","followsInDocument","findInsertionIndex","first","second","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","endFocusManagement","focusableElementIndex","indexOf","savedIndex","iterateFocusableElementsOptions","removedNode","removedNodes","addedNode","attributeOldValue","elementIndexFocusedByClick","focusableElement","relatedTarget","targetElementIndex","lastKeyboardFocusDirection","targetElement","elementToFocus","console","warn","keyboardEventRecipient","keyBit","defaultPrevented","keyLength","isTextInput","HTMLSelectElement","altKey","textInput","cursorAtStart","selectionStart","selectionEnd","cursorAtEnd","shouldIgnoreFocusHandling","nextElementToFocus","lastFocusedIndex","focusedIndex","getCurrentFocusedIndex","nextFocusedIndex","preventDefault","_focusZoneAbortController","_ActionBarElement_instances","firstItem_get","showItem_fn","hideItem_fn","menuItems_get","eachItem_fn","instersectionObserver","ActionBarElement","__privateAdd","__privateAdd$a","menuItemClick","click","firstItem","__privateGet","firstItemTop","previousItemType","__privateMethod$7","index","itemTop","__privateMethod","moreMenu","__privateGet$8","idx","elementIsVisibleItem","elementIsVisibleActionMenuInvoker","invokerElement","foundItem","_index","menuItem","setProperty","DetailsMenuElement","preload","details","summary","subscriptions","fromEvent","trackComposition","shouldCommit","menu","KeyboardEvent","isComposing","isSummaryFocused","close","stopPropagation","sibling","ctrlBindings","selected","isMenuItem","keydown","loadFragment","opened","closeCurrentMenu","NullSubscription","focusOnOpen","states$1","loaded","sub","eventName","onNext","loader","autofocus","isMouse","focusFirstItem","found","def","userAgent","menuitem","checked","commit","button","textEl","labelText","contentsEl","labelHTML","updateLabel","checkState","indeterminate","updateChecked","role","updateWhenVisible","anchors","intersectionObserver","updateVisibleAnchors","anchor","documentElement","_AnchoredPositionElement","alias","idRef","__privateSet","toggle","bottom","right","AnchoredPositionElement","dialogInvokerButtonHandler","dialogId","dialog","HTMLDialogElement","showModal","fixed","popover","stopImmediatePropagation","open","HTMLButtonElement","CommandEvent","enumerate","obj","enumerable","getOwnPropertyDescriptor","isTrusted","commandEventSourceElements","commandEventActions","invokeEventInit","source","command","toStringTag","invokerRoot","invoker","InvokeEvent","invokerAssociatedElements","handleInvokerActivation","oldInvoker","form","missing","invokee","commandForElement","invokeEvent","canShow","shouldHide","hidePopover","localName","setupInvokeListeners","ElementClass","defineProperties","targetRootNode","idref","Document","valueLower","invokeAction","invokeTargetElement","init","shadow","attachInternals","internals","observeShadowRoots","writable","DialogHelperElement","innerWidth","records","record","rect","clientY","clientX","ToggleEvent","oldState","newState","__publicField","popoverToggleTaskQueue","queuePopoverToggleEventTask","topLayerElements","autoPopoverList","visibilityState","getPopoverVisibilityState","popoverInvoker","checkPopoverValidity","expectedToBeShowing","fullscreenElement","getStackPosition","topMostClickedPopover","clickedPopover","nearestInclusiveOpenPopover","invokerPopover","nodePopover","popoverTargetElement","nearestInclusiveTargetPopoverForInvoker","topMostAutoPopover","document2","documentPopovers","assignedSlot","focusTarget","HTMLOptGroupElement","HTMLOptionElement","HTMLFieldSetElement","popoverFocusingSteps","subject","delegatesFocus","whereToLook","autoFocusDelegate","slots","slot","assignedElements","flatten","descendant","currentNode","focusDelegate","previouslyFocusedElements","shouldRestoreFocus","originalType","hideAllPopoversUntil","newPopover","popoverPositions","topMostPopoverAncestor2","candidate","candidateAncestor","candidatePosition","checkAncestor","topMostPopoverAncestor","originallyFocusedElement","setInvokerAriaExpanded","focusPreviousElement","fireEvents","previouslyFocusedElement","closeAllOpenPopovers","endpoint","lastToHide","foundEndpoint","popoverPointerDownTargets","lightDismissOpenPopovers","composedPath","ancestor","sameTarget","initialAriaExpandedValue","force","initialValue","ShadowRoot2","patchSelectorFn","object","mapper","original","selector","nonEscapedPopoverSelector","getStyles","useLayer","CSSLayerBlockRule","popoverStyleSheet","injectStyles","styles","CSSStyleSheet","replaceSync","sheet","head","adoptedStyleSheets","rewriteSelector","DocumentFragment","togglePopover","originalAttachShadow","originalAttachInternals","popoverTargetAssociatedElements","applyPopoverInvokerElementMixin","popoverTargetAction","popoverTargetAttributeActivationBehavior","onKeydown","apply","menuItemSelector","join","getMnemonicFor","printable","FocusGroupElement","nowrap","retain","mnemonics","toggleEvent","mnemonic","offset","focusEl","at","min","ScrollableRegionElement","hasOverflow","labelledBy","scrollHeight","clientHeight","observeMutationsUntilConditionMet","condition","mutationObserver","focusIfNeeded","overlayStack","clickHandler","ModalDialogElement","openButton","show","dialogIndex","ele","keydownHandler","mousedownHandler","topLevelDialog","upEvent","paddingRight","aborted","showButtons","closedNotCancelled","dialogEvent","_NavListElement_instances","findSelectedNavItemById_fn","findSelectedNavItemByHref_fn","findSelectedNavItemByCurrentLocation_fn","select_fn","deselect_fn","findParentMenu_fn","NavListElement","topLevelList","selectItemById","itemId","selectedItem","selectItemByHref","selectItemByCurrentLocation","expandItem","nextElementSibling","collapseItem","itemIsExpanded","handleItemWithSubItemClick","handleItemWithSubItemKeydown","button_id","navItem","selectedNavItem","pathname","currentlySelectedItem","children","parentMenu","_NavListGroupElement_instances","parseHTML_fn","_truncateObserver","NavListGroupElement","setShowMoreItemState","showMoreDisabled","showMoreItem","currentPage","totalPages","paginationSrc","paginationURL","origin","searchParams","err","listId","focusMarkers","_SegmentedControlElement_instances","updateButtonLabels_fn","SegmentedControlElement","select","ToggleSwitchElement","turbo","toggling","csrf","csrfElement","csrfField","isRemote","isDisabled","performToggle","setLoadingState","submitForm","setErrorState","message","setSuccessState","turnOn","switch","turnOff","isOn","isOff","disable","enable","errorIcon","loadingSpinner","setFinishedState","FormData","requestHeaders","contentType","Turbo","renderStreamMessage","isPopoverOpen","setSelector","DIRECTION_CLASSES","closeOpenTooltips","except","openTooltips","focusOutListener","focusInListener","showReason","control","tooltips","_ToolTipElement","htmlFor","hiddenFromView","appendChild","showing","shouldShow","webdriver","isMouseLeaveFromButton","isEscapeKeydown","isMouseDownOnButton","isOpeningOtherPopover","isOpen","describedBy","ToolTipElement","_XBannerElement_instances","dismissScheme_get","XBannerElement","dismiss","removeChild","hide","Combobox","list","tabInsertsSuggestions","defaultFirstOption","random","keyboardEventHandler","combobox","clearSelection","navigate","keyboardBindings","compositionEventHandler","inputHandler","destroy","stop","commitWithElement","indicateDefaultOption","indexDiff","els","focusIndex","indexOfItem","newIndex","scrollTo","scrollTop","containerBottom","offsetTop","inViewport","SCREEN_READER_DELAY","testScreenReaderDelay","Autocomplete","results","autoselectEnabled","feedback","clearButton","clientOptions","labelElem","interactingWithList","onInputChange","wait","Rest","onResultsMouseDown","onInputBlur","onInputFocus","onCommit","handleClear","updateFeedbackForScreenReaders","identifyOptions","inputString","fetchOnEmpty","fetchResult","allNewOptions","hasResults","numOptions","firstOption","firstOptionValue","catch","_AutoCompleteElement_instances","_AutoCompleteElement_forElement","_AutoCompleteElement_inputElement","_AutoCompleteElement_reattachState","_AutoCompleteElement_requestController","AutoCompleteEvent","p","getOwnPropertySymbols","propertyIsEnumerable","__rest","AutoCompleteElement","forElement","__classPrivateFieldSet$3","inputElement","autocomplete","res","AutocompleteElement","copyNode","clipboard","writeText","selection","getSelection","removeAllRanges","range","createRange","selectNodeContents","addRange","execCommand","copyText","createNode","copy","trigger","clicked","focused","blurred","ClipboardCopyElement","root$3","showSVG","svg","hideSVG","clipboardCopyElementTimers","currentTimeout","clipboardCopyLiveRegion","copyIcon","checkIcon","showCheck","showCopy","_DurationFormat_options","ListFormat","Intl","formatToParts","members","parts","partsTable","twoDigitFormatOptions","minimumIntegerDigits","DurationFormat","locale","prevStyle","hours","minutes","seconds","milliseconds","years","yearsDisplay","months","monthsDisplay","weeks","weeksDisplay","days","daysDisplay","hoursDisplay","minutesDisplay","secondsDisplay","millisecondsDisplay","resolvedOptions","duration","unit","nfUnit","unitStyle","nfOpts","unitDisplay","NumberFormat","format","durationRe","unitNames","Duration","sign","blank","abs","durationLike","factor","parsed","RangeError","one","two","now","Date","oneApplied","applyDuration","getTime","twoApplied","toLocaleString","opts","date","r","setUTCSeconds","getUTCSeconds","setUTCMinutes","getUTCMinutes","setUTCHours","getUTCHours","setUTCDate","getUTCDate","setUTCMonth","getUTCMonth","setUTCFullYear","getUTCFullYear","roundToSingleUnit","relativeTo","round","currentYear","getFullYear","currentMonth","getMonth","currentDate","getDate","newMonthDate","setDate","setMonth","monthDateCorrection","newDate","setFullYear","yearDiff","monthDiff","daysDiff","monthsDiff","_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","time","timer","nearestDistance","timeEl","RelativeTimeElement","onRelativeTimeUpdated","listener","__classPrivateFieldSet$1","minute","hour","weekday","formatStyle","day","month","year","timeZoneName","tense","noTitle","datetime","parse","isNaN","toISOString","attrName","DateTimeFormat","delta","sec","hr","elapsedTime","lang","Locale","RelativeTimeFormat","compare","empty","relativeFormat","numeric","int","rounded","getRelativeTimeUnit","formatter","root$2","getTabs","tab","TabContainerElement","tabs","currentIndex","incrementKeys","decrementKeys","some","code","selectTab","panels","panel","selectedTab","selectedPanel","root$1","PrimerMultiInputElement","activateField","fieldWithName","findField","field","fields","middle","last","cancelled","fn","cancel","throttle","_AutoCheckElement_onloadend","AllowedHttpMethods","AutoCheckEvent","phase","AutoCheckValidationEvent","setValidity","AutoCheckCompleteEvent","AutoCheckSuccessEvent","AutoCheckStartEvent","AutoCheckErrorEvent","AutoCheckSendEvent","AutoCheckElement","onloadend","checker","check","changeHandler","handleChange","spellcheck","setCustomValidity","required","httpMethod","validateOnKeystroke","enabled","onlyValidateOnBlur","autoCheckElement","startEvent","clone","PrimerTextFieldElement","setSuccess","clearError","errorMessage","setError","clearContents","validationElement","validationMessageElement","replaceChildren","setValidationMessage","toggleValidationStyling","isError","validationSuccessIcon","validationErrorIcon","showLeadingSpinner","leadingSpinner","leadingVisual","hideLeadingSpinner","ToggleSwitchInputElement","_originalLabel","_inputName","_invokerBeingClicked","_intersectionObserver","_ActionMenuElement_instances","softDisableItems_fn","potentiallyDisallowActivation_fn","isAnchorActivationViaSpace_fn","isActivation_fn","handleInvokerActivated_fn","handleDialogItemActivated_fn","handleItemActivated_fn","handleIncludeFragmentReplaced_fn","handleFocusOut_fn","show_fn","hide_fn","isOpen_fn","setDynamicLabel_fn","updateInput_fn","validSelectors","menuItemSelectors","ActionMenuElement","__privateAdd$4","selectVariant","variant","dynamicLabelPrefix","dynamicLabel","popoverElement","invokerLabel","selectedItems","labelEl","includeFragment","scrollUpdater","overlay","Boolean","__privateGet$4","targetIsInvoker","eventIsActivation","__privateSet$4","dialogInvoker","getItemById","isItemDisabled","disableItem","enableItem","isItemHidden","hideItem","showItem","isItemChecked","checkItem","itemContent","uncheckItem","MouseEvent","dialog_controller","handleDialogClose","lostFocus","focusInClosedMenu","focusInDialog","newActiveElement","checkedItem","itemLabel","prefixSpan","contentSpan","inputList","inputs","newInput","Ordering","_compareFn","_heap","_MinHeap_instances","heapifyDown_fn","heapifyUp_fn","__typeError$2","msg","__accessCheck$2","member","__privateGet$2","getter","__privateAdd$2","__privateSet$2","setter","__privateMethod$1","MinHeap","compareFn","insert","peek","swap","clear","getLeftChildIndex","getRightChildIndex","getParentIndex","hasLeftChild","hasRightChild","hasParent","leftChild","heap","rightChild","b","tmp","smallerChildIndex","_promise","_resolve","_reject","__defProp","__typeError$1","__defNormalProp","__accessCheck$1","__privateGet$1","__privateAdd$1","__privateSet$1","Deferred","onfulfilled","onrejected","finally","onfinally","reason","getPromise","_pending","_queue","_timeoutId","_LiveRegionElement_instances","performWork_fn","updateContainerWithMessage_fn","__typeError","__accessCheck","LiveRegionElement","template2","templateContent","getTemplate","__privateSet$3","compareMessages","delay","announce","delayMs","politeness","deferred","contents","scheduled","announceFromElement","innerText","getTextContent","getMessage","__privateGet$3","_dialogIntersectionObserver","_selectedItems","_loadingDelayTimeoutId","_loadingAnnouncementTimeoutId","_hasLoadedData","_SelectPanelElement_instances","updateTabIndices_fn","checkSelectedItems_fn","addSelectedItem_fn","removeSelectedItem_fn","setTextFieldLoadingSpinnerTimer_fn","handleIncludeFragmentEvent_fn","toggleIncludeFragmentElements_fn","handleRemoteInputEvent_fn","defaultFilterFn_fn","handleSearchFieldEvent_fn","updateItemVisibility_fn","inErrorState_fn","setErrorState_fn","clearErrorState_fn","maybeAnnounce_fn","fetchStrategy_get","filterInputTextFieldElement_get","performFilteringLocally_fn","getItemContent_fn","visibleMenuItemSelectors","updateAnchorPosition","SelectPanelElement","ariaSelectionType","dynamicAriaLabelPrefix","closeButton","values","filterInputTextField","targetIsCloseButton","fireSearchEvent","visibleItems","focusableItem","setZeroTabIndex","inputName","liveRegion","errorElement","fragmentErrorElement","showError","bodySpinner","atLeastOneResult","filterFn","noResults","bannerErrorElement","instructions","noResultsEl","currentlyChecked","DetailsToggleElement","detailsTarget","ariaLabelClosed","summaryTarget","ariaLabelOpen"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,22,25,26,37,38,39,40,41,42,43,44,46,47,48,49,50,51,53,54,55,59]}