{"version":3,"file":"application-xsquNVAa.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/@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","function 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 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 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","// 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'\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-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 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('[data-show-dialog-id]')\n\n if (dialogInvoker) {\n const dialog = this.ownerDocument.getElementById(dialogInvoker.getAttribute('data-show-dialog-id') || '')\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 {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[data-close-dialog-id]')\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('[data-show-dialog-id]')\n\n if (dialogInvoker) {\n const dialog = this.ownerDocument.getElementById(dialogInvoker.getAttribute('data-show-dialog-id') || '')\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","DialogHelperElement","innerWidth","records","record","rect","clientY","clientX","ToggleEvent","oldState","newState","init","__publicField","popoverToggleTaskQueue","queuePopoverToggleEventTask","topLayerElements","autoPopoverList","visibilityState","getPopoverVisibilityState","popoverInvoker","checkPopoverValidity","expectedToBeShowing","fullscreenElement","getStackPosition","topMostClickedPopover","clickedPopover","nearestInclusiveOpenPopover","invokerPopover","nodePopover","popoverTargetElement","Document","nearestInclusiveTargetPopoverForInvoker","topMostAutoPopover","document2","documentPopovers","assignedSlot","focusTarget","HTMLButtonElement","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","hidePopover","focusPreviousElement","fireEvents","previouslyFocusedElement","closeAllOpenPopovers","endpoint","lastToHide","foundEndpoint","popoverPointerDownTargets","lightDismissOpenPopovers","isTrusted","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","defineProperties","enumerable","togglePopover","originalAttachShadow","writable","originalAttachInternals","attachInternals","internals","popoverTargetAssociatedElements","applyPopoverInvokerElementMixin","ElementClass","localName","form","idref","popoverTargetAction","handleInvokerActivation","invoker","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","shadow","appendChild","showing","shouldShow","webdriver","isMouseLeaveFromButton","isEscapeKeydown","isMouseDownOnButton","isOpeningOtherPopover","shouldHide","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","obj","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","toStringTag","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,36,37,38,39,40,41,42,43,45,46,47,48,49,50,52,53,54,58]}