{"version":3,"file":"application-P8AAyWU2.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/core.js","../../../../node_modules/@github/catalyst/lib/register.js","../../../../node_modules/@github/catalyst/lib/auto-shadow-root.js","../../../../node_modules/@github/catalyst/lib/target.js","../../../../node_modules/@github/catalyst/lib/findtarget.js","../../../../node_modules/@github/catalyst/lib/controller.js","../../../../node_modules/@github/catalyst/lib/lazy-define.js","../../../../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"],"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","import { register } from './register.js';\nimport { bind, bindShadow } from './bind.js';\nimport { autoShadowRoot } from './auto-shadow-root.js';\nimport { defineObservedAttributes, initializeAttrs } from './attr.js';\nconst symbol = Symbol.for('catalyst');\nexport class CatalystDelegate {\n constructor(classObject) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const delegate = this;\n const connectedCallback = classObject.prototype.connectedCallback;\n classObject.prototype.connectedCallback = function () {\n delegate.connectedCallback(this, connectedCallback);\n };\n const disconnectedCallback = classObject.prototype.disconnectedCallback;\n classObject.prototype.disconnectedCallback = function () {\n delegate.disconnectedCallback(this, disconnectedCallback);\n };\n const attributeChangedCallback = classObject.prototype.attributeChangedCallback;\n classObject.prototype.attributeChangedCallback = function (name, oldValue, newValue) {\n delegate.attributeChangedCallback(this, name, oldValue, newValue, attributeChangedCallback);\n };\n let observedAttributes = classObject.observedAttributes || [];\n Object.defineProperty(classObject, 'observedAttributes', {\n configurable: true,\n get() {\n return delegate.observedAttributes(this, observedAttributes);\n },\n set(attributes) {\n observedAttributes = attributes;\n }\n });\n defineObservedAttributes(classObject);\n register(classObject);\n }\n observedAttributes(instance, observedAttributes) {\n return observedAttributes;\n }\n connectedCallback(instance, connectedCallback) {\n instance.toggleAttribute('data-catalyst', true);\n customElements.upgrade(instance);\n autoShadowRoot(instance);\n initializeAttrs(instance);\n bind(instance);\n connectedCallback?.call(instance);\n if (instance.shadowRoot)\n bindShadow(instance.shadowRoot);\n }\n disconnectedCallback(element, disconnectedCallback) {\n disconnectedCallback?.call(element);\n }\n attributeChangedCallback(instance, name, oldValue, newValue, attributeChangedCallback) {\n initializeAttrs(instance);\n if (name !== 'data-catalyst' && attributeChangedCallback) {\n attributeChangedCallback.call(instance, name, oldValue, newValue);\n }\n }\n}\nexport function meta(proto, name) {\n if (!Object.prototype.hasOwnProperty.call(proto, symbol)) {\n const parent = proto[symbol];\n const map = (proto[symbol] = new Map());\n if (parent) {\n for (const [key, value] of parent) {\n map.set(key, new Set(value));\n }\n }\n }\n const map = proto[symbol];\n if (!map.has(name))\n map.set(name, new Set());\n return map.get(name);\n}\n//# sourceMappingURL=core.js.map","import { dasherize } from './dasherize.js';\n/**\n * Register the controller as a custom element.\n *\n * The classname is converted to a approriate tag name.\n *\n * Example: HelloController => hello-controller\n */\nexport function register(classObject) {\n const name = dasherize(classObject.name).replace(/-element$/, '');\n try {\n window.customElements.define(name, classObject);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window[classObject.name] = customElements.get(name);\n }\n catch (e) {\n // The only reason for window.customElements.define to throw a `NotSupportedError`\n // is if the element has already been defined.\n if (!(e instanceof DOMException && e.name === 'NotSupportedError'))\n throw e;\n }\n return classObject;\n}\n//# sourceMappingURL=register.js.map","export function autoShadowRoot(element) {\n for (const template of element.querySelectorAll('template[data-shadowroot]')) {\n if (template.parentElement === element) {\n element\n .attachShadow({\n mode: template.getAttribute('data-shadowroot') === 'closed' ? 'closed' : 'open'\n })\n .append(template.content.cloneNode(true));\n }\n }\n}\n//# sourceMappingURL=auto-shadow-root.js.map","import { findTarget, findTargets } from './findtarget.js';\nimport { meta } from './core.js';\n/**\n * Target is a decorator which - when assigned to a property field on the\n * class - will override that class field, turning it into a Getter which\n * returns a call to `findTarget(this, key)` where `key` is the name of the\n * property field. In other words, `@target foo` becomes a getter for\n * `findTarget(this, 'foo')`.\n */\nexport function target(proto, key) {\n meta(proto, 'target').add(key);\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n return findTarget(this, key);\n }\n });\n}\n/**\n * Targets is a decorator which - when assigned to a property field on the\n * class - will override that class field, turning it into a Getter which\n * returns a call to `findTargets(this, key)` where `key` is the name of the\n * property field. In other words, `@targets foo` becomes a getter for\n * `findTargets(this, 'foo')`.\n */\nexport function targets(proto, key) {\n meta(proto, 'targets').add(key);\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n return findTargets(this, key);\n }\n });\n}\n//# sourceMappingURL=target.js.map","/**\n * findTarget will run `querySelectorAll` against the given controller, plus\n * its shadowRoot, returning any the first child that:\n *\n * - Matches the selector of `[data-target~=\"tag.name\"]` where tag is the\n * tagName of the given HTMLElement, and `name` is the given `name` argument.\n *\n * - Closest ascendant of the element, that matches the tagname of the\n * controller, is the specific instance of the controller itself - in other\n * words it is not nested in other controllers of the same type.\n *\n */\nexport function findTarget(controller, name) {\n const tag = controller.tagName.toLowerCase();\n if (controller.shadowRoot) {\n for (const el of controller.shadowRoot.querySelectorAll(`[data-target~=\"${tag}.${name}\"]`)) {\n if (!el.closest(tag))\n return el;\n }\n }\n for (const el of controller.querySelectorAll(`[data-target~=\"${tag}.${name}\"]`)) {\n if (el.closest(tag) === controller)\n return el;\n }\n}\nexport function findTargets(controller, name) {\n const tag = controller.tagName.toLowerCase();\n const targets = [];\n if (controller.shadowRoot) {\n for (const el of controller.shadowRoot.querySelectorAll(`[data-targets~=\"${tag}.${name}\"]`)) {\n if (!el.closest(tag))\n targets.push(el);\n }\n }\n for (const el of controller.querySelectorAll(`[data-targets~=\"${tag}.${name}\"]`)) {\n if (el.closest(tag) === controller)\n targets.push(el);\n }\n return targets;\n}\n//# sourceMappingURL=findtarget.js.map","import { CatalystDelegate } from './core.js';\n/**\n * Controller is a decorator to be used over a class that extends HTMLElement.\n * It will automatically `register()` the component in the customElement\n * registry, as well as ensuring `bind(this)` is called on `connectedCallback`,\n * wrapping the classes `connectedCallback` method if needed.\n */\nexport function controller(classObject) {\n new CatalystDelegate(classObject);\n}\n//# sourceMappingURL=controller.js.map","const dynamicElements = new Map();\nconst ready = new Promise(resolve => {\n if (document.readyState !== 'loading') {\n resolve();\n }\n else {\n document.addEventListener('readystatechange', () => resolve(), { once: true });\n }\n});\nconst firstInteraction = new Promise(resolve => {\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => resolve());\n const listenerOptions = { once: true, passive: true, signal: controller.signal };\n const handler = () => controller.abort();\n document.addEventListener('mousedown', handler, listenerOptions);\n // eslint-disable-next-line github/require-passive-events\n document.addEventListener('touchstart', handler, listenerOptions);\n document.addEventListener('keydown', handler, listenerOptions);\n document.addEventListener('pointerdown', handler, listenerOptions);\n});\nconst visible = (tagName) => new Promise(resolve => {\n const observer = new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n resolve();\n observer.disconnect();\n return;\n }\n }\n }, {\n // Currently the threshold is set to 256px from the bottom of the viewport\n // with a threshold of 0.1. This means the element will not load until about\n // 2 keyboard-down-arrow presses away from being visible in the viewport,\n // giving us some time to fetch it before the contents are made visible\n rootMargin: '0px 0px 256px 0px',\n threshold: 0.01\n });\n for (const el of document.querySelectorAll(tagName)) {\n observer.observe(el);\n }\n});\nconst strategies = {\n ready: () => ready,\n firstInteraction: () => firstInteraction,\n visible\n};\nconst timers = new WeakMap();\nfunction scan(node) {\n cancelAnimationFrame(timers.get(node) || 0);\n timers.set(node, requestAnimationFrame(() => {\n for (const tagName of dynamicElements.keys()) {\n const child = node.matches(tagName) ? node : node.querySelector(tagName);\n if (customElements.get(tagName) || child) {\n const strategyName = (child?.getAttribute('data-load-on') || 'ready');\n const strategy = strategyName in strategies ? strategies[strategyName] : strategies.ready;\n // eslint-disable-next-line github/no-then\n for (const cb of dynamicElements.get(tagName) || [])\n strategy(tagName).then(cb);\n dynamicElements.delete(tagName);\n timers.delete(node);\n }\n }\n }));\n}\nlet elementLoader;\nexport function lazyDefine(tagName, callback) {\n if (!dynamicElements.has(tagName))\n dynamicElements.set(tagName, new Set());\n dynamicElements.get(tagName).add(callback);\n scan(document.body);\n if (!elementLoader) {\n elementLoader = new MutationObserver(mutations => {\n if (!dynamicElements.size)\n return;\n for (const mutation of mutations) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element)\n scan(node);\n }\n }\n });\n elementLoader.observe(document, { subtree: true, childList: true });\n }\n}\n//# sourceMappingURL=lazy-define.js.map","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 this.setAttribute(\"popover\", value);\n }\n },\n showPopover: {\n enumerable: true,\n configurable: true,\n value() {\n showPopover(this);\n }\n },\n hidePopover: {\n enumerable: true,\n configurable: true,\n value() {\n hidePopover(this, true, true);\n }\n },\n togglePopover: {\n enumerable: true,\n configurable: true,\n value(force) {\n if (visibilityState.get(this) === \"showing\" && force === void 0 || force === false) {\n hidePopover(this, true, true);\n } else if (force === void 0 || force === true) {\n showPopover(this);\n }\n }\n }\n });\n const 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 }\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 r.setFullYear(r.getFullYear() + duration.years);\n r.setMonth(r.getMonth() + duration.months);\n r.setDate(r.getDate() + duration.weeks * 7 + duration.days);\n r.setHours(r.getHours() + duration.hours);\n r.setMinutes(r.getMinutes() + duration.minutes);\n r.setSeconds(r.getSeconds() + duration.seconds);\n return r;\n}\nexport function elapsedTime(date, precision = 'second', now = Date.now()) {\n const delta = date.getTime() - now;\n if (delta === 0)\n return new Duration();\n const sign = Math.sign(delta);\n const ms = Math.abs(delta);\n const sec = Math.floor(ms / 1000);\n const min = Math.floor(sec / 60);\n const hr = Math.floor(min / 60);\n const day = Math.floor(hr / 24);\n const month = Math.floor(day / 30);\n const year = Math.floor(month / 12);\n const i = unitNames.indexOf(precision) || unitNames.length;\n return new Duration(i >= 0 ? year * sign : 0, i >= 1 ? (month - year * 12) * sign : 0, 0, i >= 3 ? (day - month * 30) * sign : 0, i >= 4 ? (hr - day * 24) * sign : 0, i >= 5 ? (min - hr * 60) * sign : 0, i >= 6 ? (sec - min * 60) * sign : 0, i >= 7 ? (ms - sec * 1000) * sign : 0);\n}\nexport function roundToSingleUnit(duration, { relativeTo = Date.now() } = {}) {\n relativeTo = new Date(relativeTo);\n if (duration.blank)\n return duration;\n const sign = duration.sign;\n let years = Math.abs(duration.years);\n let months = Math.abs(duration.months);\n let weeks = Math.abs(duration.weeks);\n let days = Math.abs(duration.days);\n let hours = Math.abs(duration.hours);\n let minutes = Math.abs(duration.minutes);\n let seconds = Math.abs(duration.seconds);\n let milliseconds = Math.abs(duration.milliseconds);\n if (milliseconds >= 900)\n seconds += Math.round(milliseconds / 1000);\n if (seconds || minutes || hours || days || weeks || months || years) {\n milliseconds = 0;\n }\n if (seconds >= 55)\n minutes += Math.round(seconds / 60);\n if (minutes || hours || days || weeks || months || years)\n seconds = 0;\n if (minutes >= 55)\n hours += Math.round(minutes / 60);\n if (hours || days || weeks || months || years)\n minutes = 0;\n if (days && hours >= 12)\n days += Math.round(hours / 24);\n if (!days && hours >= 21)\n days += Math.round(hours / 24);\n if (days || weeks || months || years)\n hours = 0;\n const currentYear = relativeTo.getFullYear();\n 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 return (((_a = this.closest('[lang]')) === null || _a === void 0 ? void 0 : _a.getAttribute('lang')) ||\n this.ownerDocument.documentElement.getAttribute('lang') ||\n 'default');\n}, _RelativeTimeElement_getFormattedTitle = function _RelativeTimeElement_getFormattedTitle(date) {\n return new Intl.DateTimeFormat(__classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get), {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n timeZoneName: 'short',\n }).format(date);\n}, _RelativeTimeElement_resolveFormat = function _RelativeTimeElement_resolveFormat(duration) {\n const format = this.format;\n if (format === 'datetime')\n return 'datetime';\n if (format === 'duration')\n return 'duration';\n if (format === 'elapsed')\n return 'duration';\n if (format === 'micro')\n return 'duration';\n if ((format === 'auto' || format === 'relative') && typeof Intl !== 'undefined' && Intl.RelativeTimeFormat) {\n const tense = this.tense;\n if (tense === 'past' || tense === 'future')\n return 'relative';\n if (Duration.compare(duration, this.threshold) === 1)\n return 'relative';\n }\n return 'datetime';\n}, _RelativeTimeElement_getDurationFormat = function _RelativeTimeElement_getDurationFormat(duration) {\n const locale = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get);\n const format = this.format;\n const style = this.formatStyle;\n const tense = this.tense;\n let empty = emptyDuration;\n if (format === 'micro') {\n duration = roundToSingleUnit(duration);\n empty = microEmptyDuration;\n if ((this.tense === 'past' && duration.sign !== -1) || (this.tense === 'future' && duration.sign !== 1)) {\n duration = microEmptyDuration;\n }\n }\n else if ((tense === 'past' && duration.sign !== -1) || (tense === 'future' && duration.sign !== 1)) {\n duration = empty;\n }\n const display = `${this.precision}sDisplay`;\n if (duration.blank) {\n return empty.toLocaleString(locale, { style, [display]: 'always' });\n }\n return duration.abs().toLocaleString(locale, { style });\n}, _RelativeTimeElement_getRelativeFormat = function _RelativeTimeElement_getRelativeFormat(duration) {\n const relativeFormat = new Intl.RelativeTimeFormat(__classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get), {\n numeric: 'auto',\n style: this.formatStyle,\n });\n const tense = this.tense;\n if (tense === 'future' && duration.sign !== 1)\n duration = emptyDuration;\n if (tense === 'past' && duration.sign !== -1)\n duration = emptyDuration;\n const [int, unit] = getRelativeTimeUnit(duration);\n if (unit === 'second' && int < 10) {\n return relativeFormat.format(0, 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 input.addEventListener('input', setLoadingState);\n input.addEventListener('input', checker);\n input.autocomplete = 'off';\n input.spellcheck = false;\n }\n disconnectedCallback() {\n const input = this.input;\n if (!input)\n return;\n const state = states.get(this);\n if (!state)\n return;\n states.delete(this);\n input.removeEventListener('input', setLoadingState);\n input.removeEventListener('input', state.check);\n input.setCustomValidity('');\n }\n attributeChangedCallback(name) {\n if (name === 'required') {\n const input = this.input;\n if (!input)\n return;\n input.required = this.required;\n }\n }\n static get observedAttributes() {\n return ['required'];\n }\n get input() {\n return this.querySelector('input');\n }\n get src() {\n const src = this.getAttribute('src');\n if (!src)\n return '';\n const link = this.ownerDocument.createElement('a');\n link.href = src;\n return link.href;\n }\n set src(value) {\n this.setAttribute('src', value);\n }\n get csrf() {\n const csrfElement = this.querySelector('[data-csrf]');\n return this.getAttribute('csrf') || (csrfElement instanceof HTMLInputElement && csrfElement.value) || '';\n }\n set csrf(value) {\n this.setAttribute('csrf', value);\n }\n get required() {\n return this.hasAttribute('required');\n }\n set required(required) {\n if (required) {\n this.setAttribute('required', '');\n }\n else {\n this.removeAttribute('required');\n }\n }\n get csrfField() {\n return this.getAttribute('csrf-field') || 'authenticity_token';\n }\n set csrfField(value) {\n this.setAttribute('csrf-field', value);\n }\n get httpMethod() {\n return AllowedHttpMethods[this.getAttribute('http-method')] || 'POST';\n }\n}\n_AutoCheckElement_onloadend = new WeakMap();\nfunction setLoadingState(event) {\n const input = event.currentTarget;\n if (!(input instanceof HTMLInputElement))\n return;\n const autoCheckElement = input.closest('auto-check');\n if (!(autoCheckElement instanceof AutoCheckElement))\n return;\n const src = autoCheckElement.src;\n const csrf = autoCheckElement.csrf;\n const 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 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 input.dispatchEvent(new AutoCheckSuccessEvent(response.clone()));\n }\n else {\n const event = new AutoCheckErrorEvent(response.clone());\n input.dispatchEvent(event);\n if (autoCheckElement.required) {\n input.setCustomValidity(event.message);\n }\n }\n state.controller = null;\n input.dispatchEvent(new AutoCheckCompleteEvent());\n }\n catch (error) {\n if (error.name !== 'AbortError') {\n state.controller = null;\n input.dispatchEvent(new AutoCheckCompleteEvent());\n }\n }\n}\nexport default AutoCheckElement;\n","import { AutoCheckElement } from './auto-check-element.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\ntry {\n root.AutoCheckElement = AutoCheckElement.define();\n}\ncatch (e) {\n if (!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&\n !(e instanceof ReferenceError)) {\n throw e;\n }\n}\nexport default AutoCheckElement;\nexport * from './auto-check-element.js';\n","/* 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 isLoading(): boolean {\n return !this.leadingSpinner?.hasAttribute('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\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 this.#firstItem?.focus()\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 detail: {item: item.parentElement, checked: this.isItemChecked(item.parentElement)},\n }),\n )\n }\n\n #handleIncludeFragmentReplaced() {\n if (this.#firstItem) this.#firstItem.focus()\n this.#softDisableItems()\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.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 ariaLiveContainer: HTMLElement\n @target noItemsMessage: HTMLElement\n @target noMatchesMessage: HTMLElement\n @target bodyErrorMessage: HTMLElement\n @target bannerErrorMessage: 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 #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\n this.#loadingDelayTimeoutId = setTimeout(() => {\n this.#filterInputTextFieldElement?.showLeadingSpinner()\n this.liveRegion.announce('Loading')\n }, 1000) as unknown as number\n }\n\n #setBodyLoadingTimer() {\n if (this.#loadingDelayTimeoutId) clearTimeout(this.#loadingDelayTimeoutId)\n\n this.#loadingDelayTimeoutId = setTimeout(() => {\n this.liveRegion.announce('Loading')\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.bodyErrorMessage\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) {\n this.#setBodyLoadingTimer()\n } else {\n this.#setTextFieldLoadingSpinnerTimer()\n }\n }\n\n break\n }\n\n case 'loadend': {\n this.#filterInputTextFieldElement?.hideLeadingSpinner()\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 const query = this.filterInputTextField?.value ?? ''\n\n if (this.#performFilteringLocally()) {\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\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.#inErrorState()) {\n this.noMatchesMessage?.setAttribute('hidden', '')\n this.noItemsMessage?.setAttribute('hidden', '')\n return\n }\n\n if (atLeastOneResult) {\n this.noMatchesMessage?.setAttribute('hidden', '')\n this.noItemsMessage?.setAttribute('hidden', '')\n\n // TODO can we change this to search for `@panelId-list`?\n this.list?.querySelector('.ActionListWrap')?.removeAttribute('hidden')\n } else if (!this.#isLoading()) {\n if (query === '') {\n this.noMatchesMessage?.setAttribute('hidden', '')\n this.noItemsMessage?.removeAttribute('hidden')\n } else {\n this.noMatchesMessage?.removeAttribute('hidden')\n this.noItemsMessage?.setAttribute('hidden', '')\n }\n\n this.list?.querySelector('.ActionListWrap')?.setAttribute('hidden', '')\n }\n\n this.#maybeAnnounce()\n }\n\n #isLoading(): boolean {\n return Boolean(this.bodySpinner) || (this.#filterInputTextFieldElement?.isLoading() ?? false)\n }\n\n #inErrorState(): boolean {\n if (this.bodyErrorMessage && !this.bodyErrorMessage.hasAttribute('hidden')) {\n return true\n }\n\n if (!this.bannerErrorMessage) return false\n\n return !this.bannerErrorMessage.hasAttribute('hidden')\n }\n\n #setErrorState(type: ErrorStateType) {\n let errorElement = this.bodyErrorMessage\n\n // If the error type is BODY but the body error message element doesn't exist,\n // that means the no items/results message is showing, so the error needs to be\n // shown in banner form instead.\n if (type === ErrorStateType.BODY && this.bodyErrorMessage) {\n this.bodyErrorMessage?.removeAttribute('hidden')\n this.bannerErrorMessage.setAttribute('hidden', '')\n } else {\n errorElement = this.bannerErrorMessage\n this.bannerErrorMessage?.removeAttribute('hidden')\n this.bodyErrorMessage?.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.bodyErrorMessage?.setAttribute('hidden', '')\n this.bannerErrorMessage.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 = (() => {\n if (this.noMatchesMessage && !this.noMatchesMessage.hasAttribute('hidden')) {\n return this.noMatchesMessage\n }\n\n return this.noItemsMessage\n })()\n\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"],"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","symbol","Symbol","for","CatalystDelegate","classObject","delegate","prototype","attributes","observed","attrToAttributeName","map","concat","defineObservedAttributes","register","upgrade","element","parentElement","cloneNode","autoShadowRoot","hasOwnProperty","parent","Map","Set","tagName","findTarget","targets","push","findTargets","readyState","once","listenerOptions","passive","handler","_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","requestAnimationFrame","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","cancelAnimationFrame","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","size","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","visible","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","then","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","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","roundToSingleUnit","relativeTo","round","currentYear","currentMonth","currentDate","newMonthDate","monthDateCorrection","newDate","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","getUTCFullYear","timeZoneName","tense","noTitle","datetime","parse","isNaN","toISOString","attrName","DateTimeFormat","delta","sec","hr","elapsedTime","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","spellcheck","setCustomValidity","required","httpMethod","autoCheckElement","startEvent","clone","PrimerTextFieldElement","setSuccess","clearError","errorMessage","setError","clearContents","validationElement","validationMessageElement","replaceChildren","setValidationMessage","toggleValidationStyling","isError","validationSuccessIcon","validationErrorIcon","showLeadingSpinner","leadingSpinner","leadingVisual","hideLeadingSpinner","isLoading","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","_hasLoadedData","_SelectPanelElement_instances","updateTabIndices_fn","checkSelectedItems_fn","addSelectedItem_fn","removeSelectedItem_fn","setTextFieldLoadingSpinnerTimer_fn","setBodyLoadingTimer_fn","handleIncludeFragmentEvent_fn","toggleIncludeFragmentElements_fn","handleRemoteInputEvent_fn","defaultFilterFn_fn","handleSearchFieldEvent_fn","updateItemVisibility_fn","isLoading_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","bodyErrorMessage","showError","bodySpinner","_f","_g","_h","_i","_j","_k","_l","_m","atLeastOneResult","filterFn","noMatchesMessage","noItemsMessage","bannerErrorMessage","instructions","noResultsEl","currentlyChecked"],"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]}