jekyll-v4-theme-primer 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -6
  3. data/_sass/@primer/css/forms/form-validation.scss +0 -104
  4. data/_sass/@primer/css/labels/states.scss +1 -1
  5. data/_sass/@primer/css/links/link.scss +1 -60
  6. data/_sass/@primer/css/markdown/code.scss +1 -0
  7. data/_sass/@primer/css/markdown/tables.scss +7 -1
  8. data/_sass/@primer/css/marketing/buttons/button.scss +1 -0
  9. data/_sass/@primer/css/subhead/subhead.scss +1 -1
  10. data/_sass/@primer/css/timeline/timeline-item.scss +1 -1
  11. data/_sass/@primer/primitives/dist/scss/colors/_dark.scss +61 -61
  12. data/_sass/@primer/primitives/dist/scss/colors/_dark_colorblind.scss +28 -28
  13. data/_sass/@primer/primitives/dist/scss/colors/_dark_dimmed.scss +29 -29
  14. data/_sass/@primer/primitives/dist/scss/colors/_dark_high_contrast.scss +29 -29
  15. data/_sass/@primer/primitives/dist/scss/colors/_dark_tritanopia.scss +28 -28
  16. data/_sass/@primer/primitives/dist/scss/colors/_light.scss +69 -69
  17. data/_sass/@primer/primitives/dist/scss/colors/_light_colorblind.scss +27 -27
  18. data/_sass/@primer/primitives/dist/scss/colors/_light_high_contrast.scss +28 -28
  19. data/_sass/@primer/primitives/dist/scss/colors/_light_tritanopia.scss +27 -27
  20. data/_sass/@primer/primitives/tokens-next-private/scss/base/size/size.scss +21 -0
  21. data/_sass/@primer/primitives/tokens-next-private/scss/base/typography/typography.scss +8 -0
  22. data/_sass/@primer/primitives/tokens-next-private/scss/functional/size/border.scss +16 -0
  23. data/_sass/@primer/primitives/tokens-next-private/scss/functional/size/breakpoints.scss +10 -0
  24. data/_sass/@primer/primitives/tokens-next-private/scss/functional/size/size-coarse.scss +7 -0
  25. data/_sass/@primer/primitives/tokens-next-private/scss/functional/size/size-fine.scss +7 -0
  26. data/_sass/@primer/primitives/tokens-next-private/scss/functional/size/size.scss +51 -0
  27. data/_sass/@primer/primitives/tokens-next-private/scss/functional/size/viewport.scss +19 -0
  28. data/_sass/@primer/primitives/tokens-next-private/scss/functional/themes/dark-colorblind.scss +391 -0
  29. data/_sass/@primer/primitives/tokens-next-private/scss/functional/themes/dark-dimmed.scss +391 -0
  30. data/_sass/@primer/primitives/tokens-next-private/scss/functional/themes/dark-high-contrast.scss +391 -0
  31. data/_sass/@primer/primitives/tokens-next-private/scss/functional/themes/dark-tritanopia.scss +391 -0
  32. data/_sass/@primer/primitives/tokens-next-private/scss/functional/themes/dark.scss +391 -0
  33. data/_sass/@primer/primitives/tokens-next-private/scss/functional/themes/light-colorblind.scss +366 -0
  34. data/_sass/@primer/primitives/tokens-next-private/scss/functional/themes/light-high-contrast.scss +366 -0
  35. data/_sass/@primer/primitives/tokens-next-private/scss/functional/themes/light-tritanopia.scss +366 -0
  36. data/_sass/@primer/primitives/tokens-next-private/scss/functional/themes/light.scss +366 -0
  37. data/_sass/@primer/primitives/tokens-next-private/scss/functional/typography/typography.scss +49 -0
  38. data/_sass/@primer/primitives/tokens-v2-private/scss/tokens/base/size/size.scss +1 -1
  39. data/_sass/@primer/primitives/tokens-v2-private/scss/tokens/base/typography/typography.scss +1 -1
  40. data/_sass/@primer/primitives/tokens-v2-private/scss/tokens/functional/size/border.scss +1 -1
  41. data/_sass/@primer/primitives/tokens-v2-private/scss/tokens/functional/size/breakpoints.scss +1 -1
  42. data/_sass/@primer/primitives/tokens-v2-private/scss/tokens/functional/size/size-coarse.scss +1 -1
  43. data/_sass/@primer/primitives/tokens-v2-private/scss/tokens/functional/size/size-fine.scss +1 -1
  44. data/_sass/@primer/primitives/tokens-v2-private/scss/tokens/functional/size/size.scss +1 -1
  45. data/_sass/@primer/primitives/tokens-v2-private/scss/tokens/functional/size/viewport.scss +1 -1
  46. data/_sass/@primer/primitives/tokens-v2-private/scss/tokens/functional/typography/typography.scss +3 -3
  47. data/_sass/@primer/view-components/app/assets/javascripts/primer_view_components.js +1 -1
  48. data/_sass/@primer/view-components/app/assets/javascripts/primer_view_components.js.map +1 -1
  49. data/_sass/@primer/view-components/app/assets/styles/primer_view_components.css +2 -2
  50. data/_sass/@primer/view-components/app/assets/styles/primer_view_components.css.map +1 -1
  51. data/_sass/@primer/view-components/app/components/primer/alpha/action_list.css +1 -1
  52. data/_sass/@primer/view-components/app/components/primer/alpha/action_list.css.json +1 -1
  53. data/_sass/@primer/view-components/app/components/primer/alpha/menu.css +1 -1
  54. data/_sass/@primer/view-components/app/components/primer/alpha/menu.css.json +1 -1
  55. data/_sass/@primer/view-components/app/components/primer/alpha/modal_dialog.js +26 -12
  56. data/_sass/@primer/view-components/app/components/primer/alpha/segmented_control.css +1 -1
  57. data/_sass/@primer/view-components/app/components/primer/alpha/segmented_control.css.json +1 -1
  58. data/_sass/@primer/view-components/app/components/primer/alpha/tab_nav.css +1 -1
  59. data/_sass/@primer/view-components/app/components/primer/alpha/tab_nav.css.json +1 -1
  60. data/_sass/@primer/view-components/app/components/primer/alpha/text_field.css +1 -1
  61. data/_sass/@primer/view-components/app/components/primer/alpha/text_field.css.json +1 -1
  62. data/_sass/@primer/view-components/app/components/primer/alpha/toggle_switch.css +1 -1
  63. data/_sass/@primer/view-components/app/components/primer/alpha/toggle_switch.css.json +1 -1
  64. data/_sass/@primer/view-components/app/components/primer/alpha/toggle_switch.js +23 -11
  65. data/_sass/@primer/view-components/app/components/primer/alpha/tool_tip.js +3 -10
  66. data/_sass/@primer/view-components/app/components/primer/alpha/underline_nav.css +1 -1
  67. data/_sass/@primer/view-components/app/components/primer/alpha/underline_nav.css.json +1 -1
  68. data/_sass/@primer/view-components/app/components/primer/beta/breadcrumbs.css +1 -1
  69. data/_sass/@primer/view-components/app/components/primer/beta/breadcrumbs.css.json +1 -1
  70. data/_sass/@primer/view-components/app/components/primer/beta/button.css +1 -1
  71. data/_sass/@primer/view-components/app/components/primer/beta/button.css.json +1 -1
  72. data/_sass/@primer/view-components/app/components/primer/beta/state.css.json +1 -0
  73. data/_sass/@primer/view-components/app/components/primer/beta/subhead.css.json +1 -0
  74. data/_sass/@primer/view-components/app/components/primer/beta/timeline_item.css.json +1 -0
  75. data/_sass/@primer/view-components/app/components/primer/beta/truncate.css +1 -1
  76. data/_sass/@primer/view-components/app/components/primer/beta/truncate.css.json +1 -1
  77. data/_sass/@primer/view-components/app/components/primer/primer.d.ts +2 -1
  78. data/_sass/@primer/view-components/app/components/primer/primer.js +2 -1
  79. data/_sass/@primer/view-components/lib/primer/forms/toggle_switch_input.d.ts +5 -0
  80. data/_sass/@primer/view-components/lib/primer/forms/toggle_switch_input.js +29 -0
  81. data/_sass/@primer/view-components/package.json +4 -2
  82. data/_sass/@primer/view-components/static/arguments.json +190 -216
  83. data/_sass/@primer/view-components/static/audited_at.json +6 -3
  84. data/_sass/@primer/view-components/static/constants.json +78 -76
  85. data/_sass/@primer/view-components/static/statuses.json +12 -9
  86. data/_sass/jekyll-theme-primer.scss +22 -1
  87. data/_sass/rouge-dark.scss +112 -0
  88. data/_sass/rouge-light.scss +112 -0
  89. metadata +35 -14
  90. data/_sass/@primer/view-components/app/components/primer/state_component.css.json +0 -1
  91. data/_sass/@primer/view-components/app/components/primer/subhead_component.css.json +0 -1
  92. data/_sass/@primer/view-components/app/components/primer/timeline_item_component.css.json +0 -1
  93. data/_sass/rouge.scss +0 -213
  94. /data/_sass/@primer/view-components/app/components/primer/{tab_container_component.d.ts → alpha/tab_container.d.ts} +0 -0
  95. /data/_sass/@primer/view-components/app/components/primer/{tab_container_component.js → alpha/tab_container.js} +0 -0
  96. /data/_sass/@primer/view-components/app/components/primer/{state_component.css → beta/state.css} +0 -0
  97. /data/_sass/@primer/view-components/app/components/primer/{subhead_component.css → beta/subhead.css} +0 -0
  98. /data/_sass/@primer/view-components/app/components/primer/{timeline_item_component.css → beta/timeline_item.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"primer_view_components.js","sources":["../../../node_modules/@github/details-menu-element/dist/index.js","../../../node_modules/@github/image-crop-element/dist/index.js","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/@primer/behaviors/dist/esm/anchored-position.js","../../../node_modules/@primer/behaviors/dist/esm/utils/iterate-focusable-elements.js","../../../node_modules/@primer/behaviors/dist/esm/polyfills/event-listener-signal.js","../../../node_modules/@primer/behaviors/dist/esm/focus-trap.js","../../components/primer/alpha/modal_dialog.ts","../../../node_modules/@github/catalyst/lib/bind.js","../../../node_modules/@github/catalyst/lib/dasherize.js","../../../node_modules/@github/catalyst/lib/attr.js","../../../node_modules/@github/catalyst/lib/core.js","../../../node_modules/@github/catalyst/lib/register.js","../../../node_modules/@github/catalyst/lib/auto-shadow-root.js","../../../node_modules/@github/catalyst/lib/target.js","../../../node_modules/@github/catalyst/lib/findtarget.js","../../../node_modules/@github/catalyst/lib/controller.js","../../../node_modules/@github/catalyst/lib/lazy-define.js","../../components/primer/alpha/nav_list.ts","../../components/primer/alpha/segmented_control.ts","../../../node_modules/@github/mini-throttle/dist/index.js","../../components/primer/alpha/toggle_switch.ts","../../../node_modules/@github/mini-throttle/dist/decorators.js","../../components/primer/alpha/tool_tip.ts","../../components/primer/alpha/x_banner.ts","../../../node_modules/@github/combobox-nav/dist/index.js","../../../node_modules/@github/auto-complete-element/dist/index.js","../../../node_modules/@github/clipboard-copy-element/dist/index.esm.js","../../components/primer/beta/clipboard_copy.ts","../../../node_modules/@github/relative-time-element/dist/duration-format.js","../../../node_modules/@github/relative-time-element/dist/duration.js","../../../node_modules/@github/relative-time-element/dist/relative-time-element.js","../../../node_modules/@github/relative-time-element/dist/relative-time-element-define.js","../../../node_modules/@github/tab-container-element/dist/index.js","../../../lib/primer/forms/primer_multi_input.ts","../../../node_modules/@github/auto-check-element/dist/index.js","../../../lib/primer/forms/primer_text_field.ts"],"sourcesContent":["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","const startPositions = new WeakMap();\nconst dragStartPositions = new WeakMap();\nconst constructedElements = new WeakMap();\nfunction moveCropArea(event) {\n const el = event.currentTarget;\n if (!(el instanceof ImageCropElement))\n return;\n const { box, image } = constructedElements.get(el) || {};\n if (!box || !image)\n return;\n let deltaX = 0;\n let deltaY = 0;\n if (event instanceof KeyboardEvent) {\n if (event.key === 'ArrowUp') {\n deltaY = -1;\n }\n else if (event.key === 'ArrowDown') {\n deltaY = 1;\n }\n else if (event.key === 'ArrowLeft') {\n deltaX = -1;\n }\n else if (event.key === 'ArrowRight') {\n deltaX = 1;\n }\n }\n else if (dragStartPositions.has(el) && event instanceof MouseEvent) {\n const pos = dragStartPositions.get(el);\n deltaX = event.pageX - pos.dragStartX;\n deltaY = event.pageY - pos.dragStartY;\n }\n else if (dragStartPositions.has(el) && event instanceof TouchEvent) {\n const { pageX, pageY } = event.changedTouches[0];\n const { dragStartX, dragStartY } = dragStartPositions.get(el);\n deltaX = pageX - dragStartX;\n deltaY = pageY - dragStartY;\n }\n if (deltaX !== 0 || deltaY !== 0) {\n const x = Math.min(Math.max(0, box.offsetLeft + deltaX), image.width - box.offsetWidth);\n const y = Math.min(Math.max(0, box.offsetTop + deltaY), image.height - box.offsetHeight);\n box.style.left = `${x}px`;\n box.style.top = `${y}px`;\n fireChangeEvent(el, { x, y, width: box.offsetWidth, height: box.offsetHeight });\n }\n if (event instanceof MouseEvent) {\n dragStartPositions.set(el, {\n dragStartX: event.pageX,\n dragStartY: event.pageY\n });\n }\n else if (event instanceof TouchEvent) {\n const { pageX, pageY } = event.changedTouches[0];\n dragStartPositions.set(el, {\n dragStartX: pageX,\n dragStartY: pageY\n });\n }\n}\nfunction updateCropArea(event) {\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n const el = getShadowHost(target);\n if (!(el instanceof ImageCropElement))\n return;\n const { box } = constructedElements.get(el) || {};\n if (!box)\n return;\n const rect = el.getBoundingClientRect();\n let deltaX, deltaY, delta;\n if (event instanceof KeyboardEvent) {\n if (event.key === 'Escape')\n return setInitialPosition(el);\n if (event.key === '-')\n delta = -10;\n if (event.key === '=')\n delta = +10;\n if (!delta)\n return;\n deltaX = box.offsetWidth + delta;\n deltaY = box.offsetHeight + delta;\n startPositions.set(el, { startX: box.offsetLeft, startY: box.offsetTop });\n }\n else if (event instanceof MouseEvent) {\n const pos = startPositions.get(el);\n if (!pos)\n return;\n deltaX = event.pageX - pos.startX - rect.left - window.pageXOffset;\n deltaY = event.pageY - pos.startY - rect.top - window.pageYOffset;\n }\n else if (event instanceof TouchEvent) {\n const pos = startPositions.get(el);\n if (!pos)\n return;\n deltaX = event.changedTouches[0].pageX - pos.startX - rect.left - window.pageXOffset;\n deltaY = event.changedTouches[0].pageY - pos.startY - rect.top - window.pageYOffset;\n }\n if (deltaX && deltaY)\n updateDimensions(el, deltaX, deltaY, !(event instanceof KeyboardEvent));\n}\nfunction getShadowHost(el) {\n const rootNode = el.getRootNode();\n if (!(rootNode instanceof ShadowRoot))\n return el;\n return rootNode.host;\n}\nfunction startUpdate(event) {\n const currentTarget = event.currentTarget;\n if (!(currentTarget instanceof HTMLElement))\n return;\n const el = getShadowHost(currentTarget);\n if (!(el instanceof ImageCropElement))\n return;\n const { box } = constructedElements.get(el) || {};\n if (!box)\n return;\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n if (target.hasAttribute('data-direction')) {\n const direction = target.getAttribute('data-direction') || '';\n el.addEventListener('mousemove', updateCropArea);\n el.addEventListener('touchmove', updateCropArea, { passive: true });\n if (['nw', 'se'].indexOf(direction) >= 0)\n el.classList.add('nwse');\n if (['ne', 'sw'].indexOf(direction) >= 0)\n el.classList.add('nesw');\n startPositions.set(el, {\n startX: box.offsetLeft + (['se', 'ne'].indexOf(direction) >= 0 ? 0 : box.offsetWidth),\n startY: box.offsetTop + (['se', 'sw'].indexOf(direction) >= 0 ? 0 : box.offsetHeight)\n });\n updateCropArea(event);\n }\n else {\n el.addEventListener('mousemove', moveCropArea);\n el.addEventListener('touchmove', moveCropArea, { passive: true });\n }\n}\nfunction updateDimensions(target, deltaX, deltaY, reposition = true) {\n let newSide = Math.max(Math.abs(deltaX), Math.abs(deltaY), 10);\n const pos = startPositions.get(target);\n if (!pos)\n return;\n const { box, image } = constructedElements.get(target) || {};\n if (!box || !image)\n return;\n newSide = Math.min(newSide, deltaY > 0 ? image.height - pos.startY : pos.startY, deltaX > 0 ? image.width - pos.startX : pos.startX);\n const x = reposition ? Math.round(Math.max(0, deltaX > 0 ? pos.startX : pos.startX - newSide)) : box.offsetLeft;\n const y = reposition ? Math.round(Math.max(0, deltaY > 0 ? pos.startY : pos.startY - newSide)) : box.offsetTop;\n box.style.left = `${x}px`;\n box.style.top = `${y}px`;\n box.style.width = `${newSide}px`;\n box.style.height = `${newSide}px`;\n fireChangeEvent(target, { x, y, width: newSide, height: newSide });\n}\nfunction setInitialPosition(el) {\n const { image } = constructedElements.get(el) || {};\n if (!image)\n return;\n const side = Math.round(image.clientWidth > image.clientHeight ? image.clientHeight : image.clientWidth);\n startPositions.set(el, {\n startX: (image.clientWidth - side) / 2,\n startY: (image.clientHeight - side) / 2\n });\n updateDimensions(el, side, side);\n}\nfunction stopUpdate(event) {\n const el = event.currentTarget;\n if (!(el instanceof ImageCropElement))\n return;\n dragStartPositions.delete(el);\n el.classList.remove('nwse', 'nesw');\n el.removeEventListener('mousemove', updateCropArea);\n el.removeEventListener('mousemove', moveCropArea);\n el.removeEventListener('touchmove', updateCropArea);\n el.removeEventListener('touchmove', moveCropArea);\n}\nfunction fireChangeEvent(target, result) {\n const { image } = constructedElements.get(target) || {};\n if (!image)\n return;\n const ratio = image.naturalWidth / image.width;\n for (const key in result) {\n const value = Math.round(result[key] * ratio);\n result[key] = value;\n const slottedInput = target.querySelector(`[data-image-crop-input='${key}']`);\n if (slottedInput instanceof HTMLInputElement)\n slottedInput.value = value.toString();\n }\n target.dispatchEvent(new CustomEvent('image-crop-change', { bubbles: true, detail: result }));\n}\nclass ImageCropElement extends HTMLElement {\n connectedCallback() {\n if (constructedElements.has(this))\n return;\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.innerHTML = `\n<style>\n :host { touch-action: none; display: block; }\n :host(.nesw) { cursor: nesw-resize; }\n :host(.nwse) { cursor: nwse-resize; }\n :host(.nesw) .crop-box, :host(.nwse) .crop-box { cursor: inherit; }\n :host([loaded]) .crop-image { display: block; }\n :host([loaded]) ::slotted([data-loading-slot]), .crop-image { display: none; }\n\n .crop-wrapper {\n position: relative;\n font-size: 0;\n }\n .crop-container {\n user-select: none;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n position: absolute;\n overflow: hidden;\n z-index: 1;\n top: 0;\n width: 100%;\n height: 100%;\n }\n\n :host([rounded]) .crop-box {\n border-radius: 50%;\n box-shadow: 0 0 0 4000px rgba(0, 0, 0, 0.3);\n }\n .crop-box {\n position: absolute;\n border: 1px dashed #fff;\n box-sizing: border-box;\n cursor: move;\n }\n\n :host([rounded]) .crop-outline {\n outline: none;\n }\n .crop-outline {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n outline: 4000px solid rgba(0, 0, 0, .3);\n }\n\n .handle { position: absolute; }\n :host([rounded]) .handle::before { border-radius: 50%; }\n .handle:before {\n position: absolute;\n display: block;\n padding: 4px;\n transform: translate(-50%, -50%);\n content: ' ';\n background: #fff;\n border: 1px solid #767676;\n }\n .ne { top: 0; right: 0; cursor: nesw-resize; }\n .nw { top: 0; left: 0; cursor: nwse-resize; }\n .se { bottom: 0; right: 0; cursor: nwse-resize; }\n .sw { bottom: 0; left: 0; cursor: nesw-resize; }\n</style>\n<slot></slot>\n<div class=\"crop-wrapper\">\n <img width=\"100%\" class=\"crop-image\" alt=\"\">\n <div class=\"crop-container\">\n <div data-crop-box class=\"crop-box\">\n <div class=\"crop-outline\"></div>\n <div data-direction=\"nw\" class=\"handle nw\"></div>\n <div data-direction=\"ne\" class=\"handle ne\"></div>\n <div data-direction=\"sw\" class=\"handle sw\"></div>\n <div data-direction=\"se\" class=\"handle se\"></div>\n </div>\n </div>\n</div>\n`;\n const box = shadowRoot.querySelector('[data-crop-box]');\n if (!(box instanceof HTMLElement))\n return;\n const image = shadowRoot.querySelector('img');\n if (!(image instanceof HTMLImageElement))\n return;\n constructedElements.set(this, { box, image });\n image.addEventListener('load', () => {\n this.loaded = true;\n setInitialPosition(this);\n });\n this.addEventListener('mouseleave', stopUpdate);\n this.addEventListener('touchend', stopUpdate);\n this.addEventListener('mouseup', stopUpdate);\n box.addEventListener('mousedown', startUpdate);\n box.addEventListener('touchstart', startUpdate, { passive: true });\n this.addEventListener('keydown', moveCropArea);\n this.addEventListener('keydown', updateCropArea);\n if (this.src)\n image.src = this.src;\n }\n static get observedAttributes() {\n return ['src'];\n }\n get src() {\n return this.getAttribute('src');\n }\n set src(val) {\n if (val) {\n this.setAttribute('src', val);\n }\n else {\n this.removeAttribute('src');\n }\n }\n get loaded() {\n return this.hasAttribute('loaded');\n }\n set loaded(val) {\n if (val) {\n this.setAttribute('loaded', '');\n }\n else {\n this.removeAttribute('loaded');\n }\n }\n attributeChangedCallback(attribute, oldValue, newValue) {\n const { image } = constructedElements.get(this) || {};\n if (attribute === 'src') {\n this.loaded = false;\n if (image)\n image.src = newValue;\n }\n }\n}\nexport default ImageCropElement;\nif (!window.customElements.get('image-crop')) {\n window.ImageCropElement = ImageCropElement;\n window.customElements.define('image-crop', ImageCropElement);\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","const alternateOrders = {\n 'outside-top': ['outside-bottom', 'outside-right', 'outside-left', 'outside-bottom'],\n 'outside-bottom': ['outside-top', 'outside-right', 'outside-left', 'outside-bottom'],\n 'outside-left': ['outside-right', 'outside-bottom', 'outside-top', 'outside-bottom'],\n 'outside-right': ['outside-left', 'outside-bottom', 'outside-top', 'outside-bottom']\n};\nconst alternateAlignments = {\n start: ['end', 'center'],\n end: ['start', 'center'],\n center: ['end', 'start']\n};\nexport function getAnchoredPosition(floatingElement, anchorElement, settings = {}) {\n const parentElement = getPositionedParent(floatingElement);\n const clippingRect = getClippingRect(parentElement);\n const parentElementStyle = getComputedStyle(parentElement);\n const parentElementRect = parentElement.getBoundingClientRect();\n const [borderTop, borderLeft] = [parentElementStyle.borderTopWidth, parentElementStyle.borderLeftWidth].map(v => parseInt(v, 10) || 0);\n const relativeRect = {\n top: parentElementRect.top + borderTop,\n left: parentElementRect.left + borderLeft\n };\n return pureCalculateAnchoredPosition(clippingRect, relativeRect, floatingElement.getBoundingClientRect(), anchorElement instanceof Element ? anchorElement.getBoundingClientRect() : anchorElement, getDefaultSettings(settings));\n}\nfunction getPositionedParent(element) {\n let parentNode = element.parentNode;\n while (parentNode !== null) {\n if (parentNode instanceof HTMLElement && getComputedStyle(parentNode).position !== 'static') {\n return parentNode;\n }\n parentNode = parentNode.parentNode;\n }\n return document.body;\n}\nfunction getClippingRect(element) {\n let parentNode = element;\n while (parentNode !== null) {\n if (parentNode === document.body) {\n break;\n }\n const parentNodeStyle = getComputedStyle(parentNode);\n if (parentNodeStyle.overflow !== 'visible') {\n break;\n }\n parentNode = parentNode.parentNode;\n }\n const clippingNode = parentNode === document.body || !(parentNode instanceof HTMLElement) ? document.body : parentNode;\n const elemRect = clippingNode.getBoundingClientRect();\n const elemStyle = getComputedStyle(clippingNode);\n const [borderTop, borderLeft, borderRight, borderBottom] = [\n elemStyle.borderTopWidth,\n elemStyle.borderLeftWidth,\n elemStyle.borderRightWidth,\n elemStyle.borderBottomWidth\n ].map(v => parseInt(v, 10) || 0);\n return {\n top: elemRect.top + borderTop,\n left: elemRect.left + borderLeft,\n width: elemRect.width - borderRight - borderLeft,\n height: Math.max(elemRect.height - borderTop - borderBottom, clippingNode === document.body ? window.innerHeight : -Infinity)\n };\n}\nconst positionDefaults = {\n side: 'outside-bottom',\n align: 'start',\n anchorOffset: 4,\n alignmentOffset: 4,\n allowOutOfBounds: false\n};\nfunction getDefaultSettings(settings = {}) {\n var _a, _b, _c, _d, _e;\n const side = (_a = settings.side) !== null && _a !== void 0 ? _a : positionDefaults.side;\n const align = (_b = settings.align) !== null && _b !== void 0 ? _b : positionDefaults.align;\n return {\n side,\n align,\n anchorOffset: (_c = settings.anchorOffset) !== null && _c !== void 0 ? _c : (side === 'inside-center' ? 0 : positionDefaults.anchorOffset),\n alignmentOffset: (_d = settings.alignmentOffset) !== null && _d !== void 0 ? _d : (align !== 'center' && side.startsWith('inside') ? positionDefaults.alignmentOffset : 0),\n allowOutOfBounds: (_e = settings.allowOutOfBounds) !== null && _e !== void 0 ? _e : positionDefaults.allowOutOfBounds\n };\n}\nfunction pureCalculateAnchoredPosition(viewportRect, relativePosition, floatingRect, anchorRect, { side, align, allowOutOfBounds, anchorOffset, alignmentOffset }) {\n const relativeViewportRect = {\n top: viewportRect.top - relativePosition.top,\n left: viewportRect.left - relativePosition.left,\n width: viewportRect.width,\n height: viewportRect.height\n };\n let pos = calculatePosition(floatingRect, anchorRect, side, align, anchorOffset, alignmentOffset);\n let anchorSide = side;\n let anchorAlign = align;\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n if (!allowOutOfBounds) {\n const alternateOrder = alternateOrders[side];\n let positionAttempt = 0;\n if (alternateOrder) {\n let prevSide = side;\n while (positionAttempt < alternateOrder.length &&\n shouldRecalculatePosition(prevSide, pos, relativeViewportRect, floatingRect)) {\n const nextSide = alternateOrder[positionAttempt++];\n prevSide = nextSide;\n pos = calculatePosition(floatingRect, anchorRect, nextSide, align, anchorOffset, alignmentOffset);\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n anchorSide = nextSide;\n }\n }\n const alternateAlignment = alternateAlignments[align];\n let alignmentAttempt = 0;\n if (alternateAlignment) {\n let prevAlign = align;\n while (alignmentAttempt < alternateAlignment.length &&\n shouldRecalculateAlignment(prevAlign, pos, relativeViewportRect, floatingRect)) {\n const nextAlign = alternateAlignment[alignmentAttempt++];\n prevAlign = nextAlign;\n pos = calculatePosition(floatingRect, anchorRect, anchorSide, nextAlign, anchorOffset, alignmentOffset);\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n anchorAlign = nextAlign;\n }\n }\n if (pos.top < relativeViewportRect.top) {\n pos.top = relativeViewportRect.top;\n }\n if (pos.left < relativeViewportRect.left) {\n pos.left = relativeViewportRect.left;\n }\n if (pos.left + floatingRect.width > viewportRect.width + relativeViewportRect.left) {\n pos.left = viewportRect.width + relativeViewportRect.left - floatingRect.width;\n }\n if (alternateOrder && positionAttempt < alternateOrder.length) {\n if (pos.top + floatingRect.height > viewportRect.height + relativeViewportRect.top) {\n pos.top = viewportRect.height + relativeViewportRect.top - floatingRect.height;\n }\n }\n }\n return Object.assign(Object.assign({}, pos), { anchorSide, anchorAlign });\n}\nfunction calculatePosition(elementDimensions, anchorPosition, side, align, anchorOffset, alignmentOffset) {\n const anchorRight = anchorPosition.left + anchorPosition.width;\n const anchorBottom = anchorPosition.top + anchorPosition.height;\n let top = -1;\n let left = -1;\n if (side === 'outside-top') {\n top = anchorPosition.top - anchorOffset - elementDimensions.height;\n }\n else if (side === 'outside-bottom') {\n top = anchorBottom + anchorOffset;\n }\n else if (side === 'outside-left') {\n left = anchorPosition.left - anchorOffset - elementDimensions.width;\n }\n else if (side === 'outside-right') {\n left = anchorRight + anchorOffset;\n }\n if (side === 'outside-top' || side === 'outside-bottom') {\n if (align === 'start') {\n left = anchorPosition.left + alignmentOffset;\n }\n else if (align === 'center') {\n left = anchorPosition.left - (elementDimensions.width - anchorPosition.width) / 2 + alignmentOffset;\n }\n else {\n left = anchorRight - elementDimensions.width - alignmentOffset;\n }\n }\n if (side === 'outside-left' || side === 'outside-right') {\n if (align === 'start') {\n top = anchorPosition.top + alignmentOffset;\n }\n else if (align === 'center') {\n top = anchorPosition.top - (elementDimensions.height - anchorPosition.height) / 2 + alignmentOffset;\n }\n else {\n top = anchorBottom - elementDimensions.height - alignmentOffset;\n }\n }\n if (side === 'inside-top') {\n top = anchorPosition.top + anchorOffset;\n }\n else if (side === 'inside-bottom') {\n top = anchorBottom - anchorOffset - elementDimensions.height;\n }\n else if (side === 'inside-left') {\n left = anchorPosition.left + anchorOffset;\n }\n else if (side === 'inside-right') {\n left = anchorRight - anchorOffset - elementDimensions.width;\n }\n else if (side === 'inside-center') {\n left = (anchorRight + anchorPosition.left) / 2 - elementDimensions.width / 2 + anchorOffset;\n }\n if (side === 'inside-top' || side === 'inside-bottom') {\n if (align === 'start') {\n left = anchorPosition.left + alignmentOffset;\n }\n else if (align === 'center') {\n left = anchorPosition.left - (elementDimensions.width - anchorPosition.width) / 2 + alignmentOffset;\n }\n else {\n left = anchorRight - elementDimensions.width - alignmentOffset;\n }\n }\n else if (side === 'inside-left' || side === 'inside-right' || side === 'inside-center') {\n if (align === 'start') {\n top = anchorPosition.top + alignmentOffset;\n }\n else if (align === 'center') {\n top = anchorPosition.top - (elementDimensions.height - anchorPosition.height) / 2 + alignmentOffset;\n }\n else {\n top = anchorBottom - elementDimensions.height - alignmentOffset;\n }\n }\n return { top, left };\n}\nfunction shouldRecalculatePosition(side, currentPos, containerDimensions, elementDimensions) {\n if (side === 'outside-top' || side === 'outside-bottom') {\n return (currentPos.top < containerDimensions.top ||\n currentPos.top + elementDimensions.height > containerDimensions.height + containerDimensions.top);\n }\n else {\n return (currentPos.left < containerDimensions.left ||\n currentPos.left + elementDimensions.width > containerDimensions.width + containerDimensions.left);\n }\n}\nfunction shouldRecalculateAlignment(align, currentPos, containerDimensions, elementDimensions) {\n if (align === 'end') {\n return currentPos.left < containerDimensions.left;\n }\n else if (align === 'start' || align === 'center') {\n return (currentPos.left + elementDimensions.width > containerDimensions.left + containerDimensions.width ||\n currentPos.left < containerDimensions.left);\n }\n}\n","export function* iterateFocusableElements(container, options = {}) {\n var _a, _b;\n const strict = (_a = options.strict) !== null && _a !== void 0 ? _a : false;\n const acceptFn = ((_b = options.onlyTabbable) !== null && _b !== void 0 ? _b : false) ? isTabbable : isFocusable;\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: node => node instanceof HTMLElement && acceptFn(node, strict) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP\n });\n let nextNode = null;\n if (!options.reverse && acceptFn(container, strict)) {\n yield container;\n }\n if (options.reverse) {\n let lastChild = walker.lastChild();\n while (lastChild) {\n nextNode = lastChild;\n lastChild = walker.lastChild();\n }\n }\n else {\n nextNode = walker.firstChild();\n }\n while (nextNode instanceof HTMLElement) {\n yield nextNode;\n nextNode = options.reverse ? walker.previousNode() : walker.nextNode();\n }\n if (options.reverse && acceptFn(container, strict)) {\n yield container;\n }\n return undefined;\n}\nexport function getFocusableChild(container, lastChild = false) {\n return iterateFocusableElements(container, { reverse: lastChild, strict: true, onlyTabbable: true }).next().value;\n}\nexport function isFocusable(elem, strict = false) {\n const disabledAttrInert = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA', 'OPTGROUP', 'OPTION', 'FIELDSET'].includes(elem.tagName) &&\n elem.disabled;\n const hiddenInert = elem.hidden;\n const hiddenInputInert = elem instanceof HTMLInputElement && elem.type === 'hidden';\n const sentinelInert = elem.classList.contains('sentinel');\n if (disabledAttrInert || hiddenInert || hiddenInputInert || sentinelInert) {\n return false;\n }\n if (strict) {\n const sizeInert = elem.offsetWidth === 0 || elem.offsetHeight === 0;\n const visibilityInert = ['hidden', 'collapse'].includes(getComputedStyle(elem).visibility);\n const clientRectsInert = elem.getClientRects().length === 0;\n if (sizeInert || visibilityInert || clientRectsInert) {\n return false;\n }\n }\n if (elem.getAttribute('tabindex') != null) {\n return true;\n }\n if (elem instanceof HTMLAnchorElement && elem.getAttribute('href') == null) {\n return false;\n }\n return elem.tabIndex !== -1;\n}\nexport function isTabbable(elem, strict = false) {\n return isFocusable(elem, strict) && elem.getAttribute('tabindex') !== '-1';\n}\n","let signalSupported = false;\nfunction noop() { }\ntry {\n const options = Object.create({}, {\n signal: {\n get() {\n signalSupported = true;\n }\n }\n });\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop, options);\n}\ncatch (e) {\n}\nfunction featureSupported() {\n return signalSupported;\n}\nfunction monkeyPatch() {\n if (typeof window === 'undefined') {\n return;\n }\n const originalAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function (name, originalCallback, optionsOrCapture) {\n if (typeof optionsOrCapture === 'object' &&\n 'signal' in optionsOrCapture &&\n optionsOrCapture.signal instanceof AbortSignal) {\n originalAddEventListener.call(optionsOrCapture.signal, 'abort', () => {\n this.removeEventListener(name, originalCallback, optionsOrCapture);\n });\n }\n return originalAddEventListener.call(this, name, originalCallback, optionsOrCapture);\n };\n}\nexport function polyfill() {\n if (!featureSupported()) {\n monkeyPatch();\n signalSupported = true;\n }\n}\n","import { getFocusableChild, isTabbable } from './utils/iterate-focusable-elements.js';\nimport { polyfill as eventListenerSignalPolyfill } from './polyfills/event-listener-signal.js';\neventListenerSignalPolyfill();\nconst suspendedTrapStack = [];\nlet activeTrap = undefined;\nfunction tryReactivate() {\n const trapToReactivate = suspendedTrapStack.pop();\n if (trapToReactivate) {\n focusTrap(trapToReactivate.container, trapToReactivate.initialFocus, trapToReactivate.originalSignal);\n }\n}\nfunction followSignal(signal) {\n const controller = new AbortController();\n signal.addEventListener('abort', () => {\n controller.abort();\n });\n return controller;\n}\nexport function focusTrap(container, initialFocus, abortSignal) {\n const controller = new AbortController();\n const signal = abortSignal !== null && abortSignal !== void 0 ? abortSignal : controller.signal;\n container.setAttribute('data-focus-trap', 'active');\n const sentinelStart = document.createElement('span');\n sentinelStart.setAttribute('class', 'sentinel');\n sentinelStart.setAttribute('tabindex', '0');\n sentinelStart.setAttribute('aria-hidden', 'true');\n sentinelStart.onfocus = () => {\n const lastFocusableChild = getFocusableChild(container, true);\n lastFocusableChild === null || lastFocusableChild === void 0 ? void 0 : lastFocusableChild.focus();\n };\n const sentinelEnd = document.createElement('span');\n sentinelEnd.setAttribute('class', 'sentinel');\n sentinelEnd.setAttribute('tabindex', '0');\n sentinelEnd.setAttribute('aria-hidden', 'true');\n sentinelEnd.onfocus = () => {\n const firstFocusableChild = getFocusableChild(container);\n firstFocusableChild === null || firstFocusableChild === void 0 ? void 0 : firstFocusableChild.focus();\n };\n container.prepend(sentinelStart);\n container.append(sentinelEnd);\n let lastFocusedChild = undefined;\n function ensureTrapZoneHasFocus(focusedElement) {\n if (focusedElement instanceof HTMLElement && document.contains(container)) {\n if (container.contains(focusedElement)) {\n lastFocusedChild = focusedElement;\n return;\n }\n else {\n if (lastFocusedChild && isTabbable(lastFocusedChild) && container.contains(lastFocusedChild)) {\n lastFocusedChild.focus();\n return;\n }\n else if (initialFocus && container.contains(initialFocus)) {\n initialFocus.focus();\n return;\n }\n else {\n const firstFocusableChild = getFocusableChild(container);\n firstFocusableChild === null || firstFocusableChild === void 0 ? void 0 : firstFocusableChild.focus();\n return;\n }\n }\n }\n }\n const wrappingController = followSignal(signal);\n if (activeTrap) {\n const suspendedTrap = activeTrap;\n activeTrap.container.setAttribute('data-focus-trap', 'suspended');\n activeTrap.controller.abort();\n suspendedTrapStack.push(suspendedTrap);\n }\n wrappingController.signal.addEventListener('abort', () => {\n activeTrap = undefined;\n });\n signal.addEventListener('abort', () => {\n container.removeAttribute('data-focus-trap');\n const sentinels = container.getElementsByClassName('sentinel');\n while (sentinels.length > 0)\n sentinels[0].remove();\n const suspendedTrapIndex = suspendedTrapStack.findIndex(t => t.container === container);\n if (suspendedTrapIndex >= 0) {\n suspendedTrapStack.splice(suspendedTrapIndex, 1);\n }\n tryReactivate();\n });\n document.addEventListener('focus', event => {\n ensureTrapZoneHasFocus(event.target);\n }, { signal: wrappingController.signal, capture: true });\n ensureTrapZoneHasFocus(document.activeElement);\n activeTrap = {\n container,\n controller: wrappingController,\n initialFocus,\n originalSignal: signal\n };\n const suspendedTrapIndex = suspendedTrapStack.findIndex(t => t.container === container);\n if (suspendedTrapIndex >= 0) {\n suspendedTrapStack.splice(suspendedTrapIndex, 1);\n }\n if (!abortSignal) {\n return controller;\n }\n}\n","import {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 the user is clicking a valid dialog trigger\n let dialogId = button?.getAttribute('data-show-dialog-id')\n if (button && dialogId) {\n event.stopPropagation()\n const dialog = document.getElementById(dialogId)\n if (dialog instanceof ModalDialogElement) {\n dialog.openButton = button\n dialog.show()\n return\n }\n }\n\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 click happened outside the boundary of the top level dialog\n const clickOutsideDialog = !target.closest(`#${topLevelDialog.getAttribute('id')}`)\n\n // Only close dialog if it's a click outside the dialog and the dialog has a\n // button?\n if (!button) {\n if (clickOutsideDialog) {\n overlayStack.pop()\n topLevelDialog.close()\n }\n return\n }\n\n dialogId = button.getAttribute('data-close-dialog-id')\n if (dialogId === topLevelDialog.id) {\n overlayStack.pop()\n topLevelDialog.close()\n }\n\n dialogId = button.getAttribute('data-submit-dialog-id')\n if (dialogId === topLevelDialog.id) {\n overlayStack.pop()\n topLevelDialog.close(true)\n }\n}\n\nexport class ModalDialogElement extends HTMLElement {\n //TODO: Do we remove the abortController from focusTrap?\n #focusAbortController = new AbortController()\n openButton: HTMLButtonElement | null\n\n get open() {\n return this.hasAttribute('open')\n }\n set open(value: boolean) {\n if (value) {\n if (this.open) return\n this.setAttribute('open', '')\n this.#overlayBackdrop?.classList.remove('Overlay--hidden')\n document.body.style.overflow = 'hidden'\n if (this.#focusAbortController.signal.aborted) {\n this.#focusAbortController = new AbortController()\n }\n focusTrap(this, undefined, this.#focusAbortController.signal)\n overlayStack.push(this)\n } else {\n if (!this.open) return\n this.removeAttribute('open')\n this.#overlayBackdrop?.classList.add('Overlay--hidden')\n document.body.style.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\n this.addEventListener('keydown', e => this.#keydown(e))\n }\n\n show() {\n this.open = true\n }\n\n close(closedNotCancelled = false) {\n if (this.open === false) return\n const eventType = closedNotCancelled ? 'close' : 'cancel'\n const dialogEvent = new Event(eventType)\n this.dispatchEvent(dialogEvent)\n this.open = false\n }\n\n #keydown(event: Event) {\n if (!(event instanceof KeyboardEvent)) return\n if (event.isComposing) return\n\n switch (event.key) {\n case 'Escape':\n if (this.open) {\n this.close()\n event.preventDefault()\n event.stopPropagation()\n }\n break\n }\n }\n}\n\ndeclare global {\n interface Window {\n ModalDialogElement: typeof ModalDialogElement\n }\n interface HTMLElementTagNameMap {\n 'modal-dialog': ModalDialogElement\n }\n}\n\nif (!window.customElements.get('modal-dialog')) {\n window.ModalDialogElement = ModalDialogElement\n window.customElements.define('modal-dialog', ModalDialogElement)\n}\n","const controllers = new WeakSet();\n/*\n * Bind `[data-action]` elements from the DOM to their actions.\n *\n */\nexport function bind(controller) {\n controllers.add(controller);\n if (controller.shadowRoot)\n bindShadow(controller.shadowRoot);\n bindElements(controller);\n listenForBind(controller.ownerDocument);\n}\nexport function bindShadow(root) {\n bindElements(root);\n listenForBind(root);\n}\nconst observers = new WeakMap();\n/**\n * Set up observer that will make sure any actions that are dynamically\n * injected into `el` will be bound to it's controller.\n *\n * This returns a Subscription object which you can call `unsubscribe()` on to\n * stop further live updates.\n */\nexport function listenForBind(el = document) {\n if (observers.has(el))\n return observers.get(el);\n let closed = false;\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.target instanceof Element) {\n bindActions(mutation.target);\n }\n else if (mutation.type === 'childList' && mutation.addedNodes.length) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element) {\n bindElements(node);\n }\n }\n }\n }\n });\n observer.observe(el, { childList: true, subtree: true, attributeFilter: ['data-action'] });\n const subscription = {\n get closed() {\n return closed;\n },\n unsubscribe() {\n closed = true;\n observers.delete(el);\n observer.disconnect();\n }\n };\n observers.set(el, subscription);\n return subscription;\n}\nfunction bindElements(root) {\n for (const el of root.querySelectorAll('[data-action]')) {\n bindActions(el);\n }\n // Also bind the controller to itself\n if (root instanceof Element && root.hasAttribute('data-action')) {\n bindActions(root);\n }\n}\n// Bind a single function to all events to avoid anonymous closure performance penalty.\nfunction handleEvent(event) {\n const el = event.currentTarget;\n for (const binding of bindings(el)) {\n if (event.type === binding.type) {\n const controller = el.closest(binding.tag);\n if (controllers.has(controller) && typeof controller[binding.method] === 'function') {\n controller[binding.method](event);\n }\n const root = el.getRootNode();\n if (root instanceof ShadowRoot && controllers.has(root.host) && root.host.matches(binding.tag)) {\n const shadowController = root.host;\n if (typeof shadowController[binding.method] === 'function') {\n shadowController[binding.method](event);\n }\n }\n }\n }\n}\nfunction* bindings(el) {\n for (const action of (el.getAttribute('data-action') || '').trim().split(/\\s+/)) {\n const eventSep = action.lastIndexOf(':');\n const methodSep = Math.max(0, action.lastIndexOf('#')) || action.length;\n yield {\n type: action.slice(0, eventSep),\n tag: action.slice(eventSep + 1, methodSep),\n method: action.slice(methodSep + 1) || 'handleEvent'\n } || 'handleEvent';\n }\n}\nfunction bindActions(el) {\n for (const binding of bindings(el)) {\n el.addEventListener(binding.type, handleEvent);\n }\n}\n//# sourceMappingURL=bind.js.map","export const dasherize = (str) => String(typeof str === 'symbol' ? str.description : str)\n .replace(/([A-Z]($|[a-z]))/g, '-$1')\n .replace(/--/g, '-')\n .replace(/^-|-$/, '')\n .toLowerCase();\nexport const mustDasherize = (str, type = 'property') => {\n const dashed = dasherize(str);\n if (!dashed.includes('-')) {\n throw new DOMException(`${type}: ${String(str)} is not a valid ${type} name`, 'SyntaxError');\n }\n return dashed;\n};\n//# sourceMappingURL=dasherize.js.map","import { mustDasherize } from './dasherize.js';\nimport { meta } from './core.js';\nconst attrKey = 'attr';\n/**\n * Attr is a decorator which tags a property as one to be initialized via\n * `initializeAttrs`.\n *\n * The signature is typed such that the property must be one of a String,\n * Number or Boolean. This matches the behavior of `initializeAttrs`.\n */\nexport function attr(proto, key) {\n meta(proto, attrKey).add(key);\n}\n/**\n * initializeAttrs is called with a set of class property names (if omitted, it\n * will look for any properties tagged with the `@attr` decorator). With this\n * list it defines property descriptors for each property that map to `data-*`\n * attributes on the HTMLElement instance.\n *\n * It works around Native Class Property semantics - which are equivalent to\n * calling `Object.defineProperty` on the instance upon creation, but before\n * `constructor()` is called.\n *\n * If a class property is assigned to the class body, it will infer the type\n * (using `typeof`) and define an appropriate getter/setter combo that aligns\n * to that type. This means class properties assigned to Numbers can only ever\n * be Numbers, assigned to Booleans can only ever be Booleans, and assigned to\n * Strings can only ever be Strings.\n *\n * This is automatically called as part of `@controller`. If a class uses the\n * `@controller` decorator it should not call this manually.\n */\nconst initialized = new WeakSet();\nexport function initializeAttrs(instance, names) {\n if (initialized.has(instance))\n return;\n initialized.add(instance);\n const proto = Object.getPrototypeOf(instance);\n const prefix = proto?.constructor?.attrPrefix ?? 'data-';\n if (!names)\n names = meta(proto, attrKey);\n for (const key of names) {\n const value = instance[key];\n const name = mustDasherize(`${prefix}${key}`);\n let descriptor = {\n configurable: true,\n get() {\n return this.getAttribute(name) || '';\n },\n set(newValue) {\n this.setAttribute(name, newValue || '');\n }\n };\n if (typeof value === 'number') {\n descriptor = {\n configurable: true,\n get() {\n return Number(this.getAttribute(name) || 0);\n },\n set(newValue) {\n this.setAttribute(name, newValue);\n }\n };\n }\n else if (typeof value === 'boolean') {\n descriptor = {\n configurable: true,\n get() {\n return this.hasAttribute(name);\n },\n set(newValue) {\n this.toggleAttribute(name, newValue);\n }\n };\n }\n Object.defineProperty(instance, key, descriptor);\n if (key in instance && !instance.hasAttribute(name)) {\n descriptor.set.call(instance, value);\n }\n }\n}\nexport function defineObservedAttributes(classObject) {\n let observed = classObject.observedAttributes || [];\n const prefix = classObject.attrPrefix ?? 'data-';\n const attrToAttributeName = (name) => mustDasherize(`${prefix}${name}`);\n Object.defineProperty(classObject, 'observedAttributes', {\n configurable: true,\n get() {\n return [...meta(classObject.prototype, attrKey)].map(attrToAttributeName).concat(observed);\n },\n set(attributes) {\n observed = attributes;\n }\n });\n}\n//# sourceMappingURL=attr.js.map","import { register } from './register.js';\nimport { bind, bindShadow } from './bind.js';\nimport { autoShadowRoot } from './auto-shadow-root.js';\nimport { defineObservedAttributes, initializeAttrs } from './attr.js';\nconst symbol = Symbol.for('catalyst');\nexport class CatalystDelegate {\n constructor(classObject) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const delegate = this;\n const connectedCallback = classObject.prototype.connectedCallback;\n classObject.prototype.connectedCallback = function () {\n delegate.connectedCallback(this, connectedCallback);\n };\n const disconnectedCallback = classObject.prototype.disconnectedCallback;\n classObject.prototype.disconnectedCallback = function () {\n delegate.disconnectedCallback(this, disconnectedCallback);\n };\n const attributeChangedCallback = classObject.prototype.attributeChangedCallback;\n classObject.prototype.attributeChangedCallback = function (name, oldValue, newValue) {\n delegate.attributeChangedCallback(this, name, oldValue, newValue, attributeChangedCallback);\n };\n let observedAttributes = classObject.observedAttributes || [];\n Object.defineProperty(classObject, 'observedAttributes', {\n configurable: true,\n get() {\n return delegate.observedAttributes(this, observedAttributes);\n },\n set(attributes) {\n observedAttributes = attributes;\n }\n });\n defineObservedAttributes(classObject);\n register(classObject);\n }\n observedAttributes(instance, observedAttributes) {\n return observedAttributes;\n }\n connectedCallback(instance, connectedCallback) {\n instance.toggleAttribute('data-catalyst', true);\n customElements.upgrade(instance);\n autoShadowRoot(instance);\n initializeAttrs(instance);\n bind(instance);\n connectedCallback?.call(instance);\n if (instance.shadowRoot)\n bindShadow(instance.shadowRoot);\n }\n disconnectedCallback(element, disconnectedCallback) {\n disconnectedCallback?.call(element);\n }\n attributeChangedCallback(instance, name, oldValue, newValue, attributeChangedCallback) {\n initializeAttrs(instance);\n if (name !== 'data-catalyst' && attributeChangedCallback) {\n attributeChangedCallback.call(instance, name, oldValue, newValue);\n }\n }\n}\nexport function meta(proto, name) {\n if (!Object.prototype.hasOwnProperty.call(proto, symbol)) {\n const parent = proto[symbol];\n const map = (proto[symbol] = new Map());\n if (parent) {\n for (const [key, value] of parent) {\n map.set(key, new Set(value));\n }\n }\n }\n const map = proto[symbol];\n if (!map.has(name))\n map.set(name, new Set());\n return map.get(name);\n}\n//# sourceMappingURL=core.js.map","import { dasherize } from './dasherize.js';\n/**\n * Register the controller as a custom element.\n *\n * The classname is converted to a approriate tag name.\n *\n * Example: HelloController => hello-controller\n */\nexport function register(classObject) {\n const name = dasherize(classObject.name).replace(/-element$/, '');\n try {\n window.customElements.define(name, classObject);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window[classObject.name] = customElements.get(name);\n }\n catch (e) {\n // The only reason for window.customElements.define to throw a `NotSupportedError`\n // is if the element has already been defined.\n if (!(e instanceof DOMException && e.name === 'NotSupportedError'))\n throw e;\n }\n return classObject;\n}\n//# sourceMappingURL=register.js.map","export function autoShadowRoot(element) {\n for (const template of element.querySelectorAll('template[data-shadowroot]')) {\n if (template.parentElement === element) {\n element\n .attachShadow({\n mode: template.getAttribute('data-shadowroot') === 'closed' ? 'closed' : 'open'\n })\n .append(template.content.cloneNode(true));\n }\n }\n}\n//# sourceMappingURL=auto-shadow-root.js.map","import { findTarget, findTargets } from './findtarget.js';\nimport { meta } from './core.js';\n/**\n * Target is a decorator which - when assigned to a property field on the\n * class - will override that class field, turning it into a Getter which\n * returns a call to `findTarget(this, key)` where `key` is the name of the\n * property field. In other words, `@target foo` becomes a getter for\n * `findTarget(this, 'foo')`.\n */\nexport function target(proto, key) {\n meta(proto, 'target').add(key);\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n return findTarget(this, key);\n }\n });\n}\n/**\n * Targets is a decorator which - when assigned to a property field on the\n * class - will override that class field, turning it into a Getter which\n * returns a call to `findTargets(this, key)` where `key` is the name of the\n * property field. In other words, `@targets foo` becomes a getter for\n * `findTargets(this, 'foo')`.\n */\nexport function targets(proto, key) {\n meta(proto, 'targets').add(key);\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n return findTargets(this, key);\n }\n });\n}\n//# sourceMappingURL=target.js.map","/**\n * findTarget will run `querySelectorAll` against the given controller, plus\n * its shadowRoot, returning any the first child that:\n *\n * - Matches the selector of `[data-target~=\"tag.name\"]` where tag is the\n * tagName of the given HTMLElement, and `name` is the given `name` argument.\n *\n * - Closest ascendant of the element, that matches the tagname of the\n * controller, is the specific instance of the controller itself - in other\n * words it is not nested in other controllers of the same type.\n *\n */\nexport function findTarget(controller, name) {\n const tag = controller.tagName.toLowerCase();\n if (controller.shadowRoot) {\n for (const el of controller.shadowRoot.querySelectorAll(`[data-target~=\"${tag}.${name}\"]`)) {\n if (!el.closest(tag))\n return el;\n }\n }\n for (const el of controller.querySelectorAll(`[data-target~=\"${tag}.${name}\"]`)) {\n if (el.closest(tag) === controller)\n return el;\n }\n}\nexport function findTargets(controller, name) {\n const tag = controller.tagName.toLowerCase();\n const targets = [];\n if (controller.shadowRoot) {\n for (const el of controller.shadowRoot.querySelectorAll(`[data-targets~=\"${tag}.${name}\"]`)) {\n if (!el.closest(tag))\n targets.push(el);\n }\n }\n for (const el of controller.querySelectorAll(`[data-targets~=\"${tag}.${name}\"]`)) {\n if (el.closest(tag) === controller)\n targets.push(el);\n }\n return targets;\n}\n//# sourceMappingURL=findtarget.js.map","import { CatalystDelegate } from './core.js';\n/**\n * Controller is a decorator to be used over a class that extends HTMLElement.\n * It will automatically `register()` the component in the customElement\n * registry, as well as ensuring `bind(this)` is called on `connectedCallback`,\n * wrapping the classes `connectedCallback` method if needed.\n */\nexport function controller(classObject) {\n new CatalystDelegate(classObject);\n}\n//# sourceMappingURL=controller.js.map","const dynamicElements = new Map();\nconst ready = new Promise(resolve => {\n if (document.readyState !== 'loading') {\n resolve();\n }\n else {\n document.addEventListener('readystatechange', () => resolve(), { once: true });\n }\n});\nconst firstInteraction = new Promise(resolve => {\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => resolve());\n const listenerOptions = { once: true, passive: true, signal: controller.signal };\n const handler = () => controller.abort();\n document.addEventListener('mousedown', handler, listenerOptions);\n // eslint-disable-next-line github/require-passive-events\n document.addEventListener('touchstart', handler, listenerOptions);\n document.addEventListener('keydown', handler, listenerOptions);\n document.addEventListener('pointerdown', handler, listenerOptions);\n});\nconst visible = (tagName) => new Promise(resolve => {\n const observer = new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n resolve();\n observer.disconnect();\n return;\n }\n }\n }, {\n // Currently the threshold is set to 256px from the bottom of the viewport\n // with a threshold of 0.1. This means the element will not load until about\n // 2 keyboard-down-arrow presses away from being visible in the viewport,\n // giving us some time to fetch it before the contents are made visible\n rootMargin: '0px 0px 256px 0px',\n threshold: 0.01\n });\n for (const el of document.querySelectorAll(tagName)) {\n observer.observe(el);\n }\n});\nconst strategies = {\n ready: () => ready,\n firstInteraction: () => firstInteraction,\n visible\n};\nconst timers = new WeakMap();\nfunction scan(node) {\n cancelAnimationFrame(timers.get(node) || 0);\n timers.set(node, requestAnimationFrame(() => {\n for (const tagName of dynamicElements.keys()) {\n const child = node.matches(tagName) ? node : node.querySelector(tagName);\n if (customElements.get(tagName) || child) {\n const strategyName = (child?.getAttribute('data-load-on') || 'ready');\n const strategy = strategyName in strategies ? strategies[strategyName] : strategies.ready;\n // eslint-disable-next-line github/no-then\n for (const cb of dynamicElements.get(tagName) || [])\n strategy(tagName).then(cb);\n dynamicElements.delete(tagName);\n timers.delete(node);\n }\n }\n }));\n}\nlet elementLoader;\nexport function lazyDefine(tagName, callback) {\n if (!dynamicElements.has(tagName))\n dynamicElements.set(tagName, new Set());\n dynamicElements.get(tagName).add(callback);\n scan(document.body);\n if (!elementLoader) {\n elementLoader = new MutationObserver(mutations => {\n if (!dynamicElements.size)\n return;\n for (const mutation of mutations) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element)\n scan(node);\n }\n }\n });\n elementLoader.observe(document, { subtree: true, childList: true });\n }\n}\n//# sourceMappingURL=lazy-define.js.map","/* eslint-disable custom-elements/expose-class-on-global */\nimport {controller, target, targets} from '@github/catalyst'\n\n@controller\nclass NavListElement extends HTMLElement {\n @target list: 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 // 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 }\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<HTMLButtonElement>('button')\n if (!button) return\n if (this.itemIsExpanded(button)) {\n this.collapseItem(button)\n } else {\n this.expandItem(button)\n }\n\n e.stopPropagation()\n }\n\n private async showMore(e: Event) {\n e.preventDefault()\n if (this.showMoreDisabled) return\n this.showMoreDisabled = true\n let html\n try {\n const paginationURL = new URL(this.paginationSrc, window.location.origin)\n this.currentPage++\n paginationURL.searchParams.append('page', this.currentPage.toString())\n const response = await fetch(paginationURL)\n if (!response.ok) return\n html = await response.text()\n if (this.currentPage === this.totalPages) {\n this.showMoreItem.hidden = true\n }\n } catch (err) {\n // Ignore network errors\n this.showMoreDisabled = false\n this.currentPage--\n return\n }\n const fragment = this.parseHTML(document, html)\n fragment?.querySelector('li > a')?.setAttribute('data-targets', 'nav-list.focusMarkers')\n this.list.insertBefore(fragment, this.showMoreItem)\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 private 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\ndeclare global {\n interface Window {\n NavListElement: typeof NavListElement\n }\n}\n","import {controller, targets} from '@github/catalyst'\n\n@controller\nclass SegmentedControlElement extends HTMLElement {\n @targets items: HTMLElement[]\n\n connectedCallback() {\n this.#updateButtonLabels()\n }\n\n select(event: Event) {\n const button = event.currentTarget as HTMLButtonElement\n for (const item of this.items) {\n item.classList.remove('SegmentedControl-item--selected')\n item.querySelector('[aria-current]')?.setAttribute('aria-current', 'false')\n }\n\n button.closest('li.SegmentedControl-item')?.classList.add('SegmentedControl-item--selected')\n button.setAttribute('aria-current', 'true')\n }\n\n // Updates the button labels to have a data-content attribute with the text\n // This is for selection styling to avoid the text jumping. It only needs to be\n // setup when the component is first loaded.\n #updateButtonLabels() {\n for (const label of this.querySelectorAll('.Button-label')) {\n label.setAttribute('data-content', label.textContent || '')\n }\n }\n}\n\ndeclare global {\n interface Window {\n SegmentedControlElement: typeof SegmentedControlElement\n }\n}\n\nif (!window.customElements.get('segmented-control')) {\n window.SegmentedControlElement = SegmentedControlElement\n window.customElements.define('segmented-control', SegmentedControlElement)\n}\n","export function throttle(callback, wait = 0, { start = true, middle = true, once = false } = {}) {\n let last = 0;\n let timer;\n let cancelled = false;\n function fn(...args) {\n if (cancelled)\n return;\n const delta = Date.now() - last;\n last = Date.now();\n if (start) {\n start = false;\n callback.apply(this, args);\n if (once)\n fn.cancel();\n }\n else if ((middle && delta < wait) || !middle) {\n clearTimeout(timer);\n timer = setTimeout(() => {\n last = Date.now();\n callback.apply(this, args);\n if (once)\n fn.cancel();\n }, !middle ? wait : wait - delta);\n }\n }\n fn.cancel = () => {\n clearTimeout(timer);\n cancelled = true;\n };\n return fn;\n}\nexport function debounce(callback, wait = 0, { start = false, middle = false, once = false } = {}) {\n return throttle(callback, wait, { start, middle, once });\n}\n","import {controller, target} from '@github/catalyst'\nimport {debounce} from '@github/mini-throttle/decorators'\n\n@controller\nclass ToggleSwitchElement extends HTMLElement {\n @target switch: HTMLElement\n @target loadingSpinner: HTMLElement\n @target errorIcon: HTMLElement\n\n get src(): string | null {\n const src = this.getAttribute('src')\n if (!src) return null\n\n const link = this.ownerDocument.createElement('a')\n link.href = src\n return link.href\n }\n\n get csrf(): string | null {\n const csrfElement = this.querySelector('[data-csrf]')\n return this.getAttribute('csrf') || (csrfElement instanceof HTMLInputElement && csrfElement.value) || null\n }\n\n get csrfField(): string {\n // the authenticity token is passed into the element and is not generated in js land\n\n return this.getAttribute('csrf-field') || 'authenticity_token'\n }\n\n isRemote(): boolean {\n return this.src != null\n }\n\n toggle() {\n if (this.isDisabled()) {\n return\n }\n\n if (this.isRemote()) {\n this.setLoadingState()\n this.submitForm()\n } else {\n this.performToggle()\n }\n }\n\n turnOn(): void {\n if (this.isDisabled()) {\n return\n }\n\n this.switch.setAttribute('aria-checked', 'true')\n this.classList.add('ToggleSwitch--checked')\n }\n\n turnOff(): void {\n if (this.isDisabled()) {\n return\n }\n\n this.switch.setAttribute('aria-checked', 'false')\n this.classList.remove('ToggleSwitch--checked')\n }\n\n isOn(): boolean {\n return this.switch.getAttribute('aria-checked') === 'true'\n }\n\n isOff(): boolean {\n return !this.isOn()\n }\n\n isDisabled(): boolean {\n return this.switch.getAttribute('aria-disabled') === 'true'\n }\n\n disable(): void {\n this.switch.setAttribute('aria-disabled', 'true')\n }\n\n enable(): void {\n this.switch.setAttribute('aria-disabled', 'false')\n }\n\n private performToggle(): void {\n if (this.isOn()) {\n this.turnOff()\n } else {\n this.turnOn()\n }\n }\n\n private setLoadingState(): void {\n this.disable()\n this.errorIcon.setAttribute('hidden', 'hidden')\n this.loadingSpinner.removeAttribute('hidden')\n }\n\n private setSuccessState(): void {\n this.setFinishedState(false)\n }\n\n private setErrorState(): void {\n this.setFinishedState(true)\n }\n\n private setFinishedState(error: boolean): void {\n if (error) {\n this.errorIcon.removeAttribute('hidden')\n }\n\n this.loadingSpinner.setAttribute('hidden', 'hidden')\n this.enable()\n }\n\n @debounce(300)\n private async submitForm() {\n const body = new FormData()\n\n if (this.csrf) {\n body.append(this.csrfField, this.csrf)\n }\n\n body.append('value', this.isOn() ? '0' : '1')\n\n try {\n if (!this.src) throw new Error('invalid src')\n const response = await fetch(this.src, {\n credentials: 'same-origin',\n method: 'POST',\n headers: {\n 'Requested-With': 'XMLHttpRequest'\n },\n body\n })\n if (response.ok) {\n this.setSuccessState()\n this.performToggle()\n } else {\n this.setErrorState()\n }\n } catch (error) {\n this.setErrorState()\n }\n }\n}\n\ndeclare global {\n interface Window {\n ToggleSwitchElement: typeof ToggleSwitchElement\n }\n}\n\nif (!window.customElements.get('toggle-switch')) {\n window.ToggleSwitchElement = ToggleSwitchElement\n window.customElements.define('toggle-switch', ToggleSwitchElement)\n}\n","import { debounce as db, throttle as th } from './index';\nexport function throttle(wait = 0, opts = {}) {\n return (proto, name, descriptor) => {\n if (!descriptor || typeof descriptor.value !== 'function') {\n throw new Error('debounce can only decorate functions');\n }\n const fn = descriptor.value;\n descriptor.value = th(fn, wait, opts);\n Object.defineProperty(proto, name, descriptor);\n };\n}\nexport function debounce(wait = 0, opts = {}) {\n return (proto, name, descriptor) => {\n if (!descriptor || typeof descriptor.value !== 'function') {\n throw new Error('debounce can only decorate functions');\n }\n const fn = descriptor.value;\n descriptor.value = db(fn, wait, opts);\n Object.defineProperty(proto, name, descriptor);\n };\n}\n","import type {AnchorAlignment, AnchorSide} from '@primer/behaviors'\nimport {getAnchoredPosition} from '@primer/behaviors'\n\nconst TOOLTIP_OPEN_CLASS = 'tooltip-open'\nconst TOOLTIP_ARROW_EDGE_OFFSET = 6\nconst TOOLTIP_SR_ONLY_CLASS = 'sr-only'\n\ntype Direction = 'n' | 's' | 'e' | 'w' | 'ne' | 'se' | 'nw' | 'sw'\n\nconst DIRECTION_CLASSES = [\n 'tooltip-n',\n 'tooltip-s',\n 'tooltip-e',\n 'tooltip-w',\n 'tooltip-ne',\n 'tooltip-se',\n 'tooltip-nw',\n 'tooltip-sw'\n]\n\nclass ToolTipElement extends HTMLElement {\n styles() {\n return `\n :host {\n position: absolute;\n z-index: 1000000;\n padding: .5em .75em;\n font: normal normal 11px/1.5 -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\n -webkit-font-smoothing: subpixel-antialiased;\n color: var(--color-fg-on-emphasis);\n text-align: center;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-wrap: break-word;\n white-space: pre;\n background: var(--color-neutral-emphasis-plus);\n border-radius: 6px;\n opacity: 0;\n max-width: 250px;\n word-wrap: break-word;\n white-space: normal;\n width: max-content;\n }\n\n :host:before{\n position: absolute;\n z-index: 1000001;\n color: var(--color-neutral-emphasis-plus);\n content: \"\";\n border: 6px solid transparent;\n opacity: 0\n }\n\n @keyframes tooltip-appear {\n from {\n opacity: 0\n }\n to {\n opacity: 1\n }\n }\n\n :host:after{\n position: absolute;\n display: block;\n right: 0;\n left: 0;\n height: 12px;\n content: \"\"\n }\n\n :host(.${TOOLTIP_OPEN_CLASS}),\n :host(.${TOOLTIP_OPEN_CLASS}):before {\n animation-name: tooltip-appear;\n animation-duration: .1s;\n animation-fill-mode: forwards;\n animation-timing-function: ease-in;\n animation-delay: .4s\n }\n\n :host(.tooltip-s):before,\n :host(.tooltip-n):before {\n right: 50%;\n margin-right: -${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n\n :host(.tooltip-s):before,\n :host(.tooltip-se):before,\n :host(.tooltip-sw):before {\n bottom: 100%;\n border-bottom-color: var(--color-neutral-emphasis-plus)\n }\n\n :host(.tooltip-s):after,\n :host(.tooltip-se):after,\n :host(.tooltip-sw):after {\n bottom: 100%\n }\n\n :host(.tooltip-n):before,\n :host(.tooltip-ne):before,\n :host(.tooltip-nw):before {\n top: 100%;\n border-top-color: var(--color-neutral-emphasis-plus)\n }\n\n :host(.tooltip-n):after,\n :host(.tooltip-ne):after,\n :host(.tooltip-nw):after {\n top: 100%\n }\n\n :host(.tooltip-se):before,\n :host(.tooltip-ne):before {\n left: 0;\n margin-left: ${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n\n :host(.tooltip-sw):before,\n :host(.tooltip-nw):before {\n right: 0;\n margin-right: ${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n\n :host(.tooltip-w):before {\n top: 50%;\n bottom: 50%;\n left: 100%;\n margin-top: -6px;\n border-left-color: var(--color-neutral-emphasis-plus)\n }\n\n :host(.tooltip-e):before {\n top: 50%;\n right: 100%;\n bottom: 50%;\n margin-top: -6px;\n border-right-color: var(--color-neutral-emphasis-plus)\n }\n `\n }\n\n #abortController: AbortController | undefined\n #align: AnchorAlignment = 'center'\n #side: AnchorSide = 'outside-bottom'\n #allowUpdatePosition = false\n\n get htmlFor(): string {\n return this.getAttribute('for') || ''\n }\n\n set htmlFor(value: string) {\n this.setAttribute('for', value)\n }\n\n get type(): 'description' | 'label' {\n const type = this.getAttribute('data-type')\n return type === 'label' ? 'label' : 'description'\n }\n\n set type(value: 'description' | 'label') {\n this.setAttribute('data-type', value)\n }\n\n get direction(): Direction {\n return (this.getAttribute('data-direction') || 's') as Direction\n }\n\n set direction(value: Direction) {\n this.setAttribute('data-direction', value)\n }\n\n get control(): HTMLElement | null {\n return this.ownerDocument.getElementById(this.htmlFor)\n }\n\n set hiddenFromView(value: true | false) {\n this.classList.toggle(TOOLTIP_SR_ONLY_CLASS, value)\n if (this.isConnected) this.#update()\n }\n\n get hiddenFromView() {\n return this.classList.contains(TOOLTIP_SR_ONLY_CLASS)\n }\n\n connectedCallback() {\n this.#updateControlReference()\n this.#updateDirection()\n if (!this.shadowRoot) {\n const shadow = this.attachShadow({mode: 'open'})\n // eslint-disable-next-line github/no-inner-html\n shadow.innerHTML = `\n <style>\n ${this.styles()}\n </style>\n <slot></slot>\n `\n }\n this.hiddenFromView = true\n this.#allowUpdatePosition = true\n\n if (!this.id) {\n this.id = `tooltip-${Date.now()}-${(Math.random() * 10000).toFixed(0)}`\n }\n\n if (!this.control) return\n\n this.setAttribute('role', 'tooltip')\n\n this.#abortController?.abort()\n this.#abortController = new AbortController()\n const {signal} = this.#abortController\n\n this.addEventListener('mouseleave', this, {signal})\n this.control.addEventListener('mouseenter', this, {signal})\n this.control.addEventListener('mouseleave', this, {signal})\n this.control.addEventListener('focus', this, {signal})\n this.control.addEventListener('blur', this, {signal})\n this.ownerDocument.addEventListener('keydown', this, {signal})\n this.#update()\n }\n\n disconnectedCallback() {\n this.#abortController?.abort()\n }\n\n handleEvent(event: Event) {\n if (!this.control) return\n\n // Ensures that tooltip stays open when hovering between tooltip and element\n // WCAG Success Criterion 1.4.13 Hoverable\n if ((event.type === 'mouseenter' || event.type === 'focus') && this.hiddenFromView) {\n this.hiddenFromView = false\n } else if (event.type === 'blur') {\n this.hiddenFromView = true\n } else if (\n event.type === 'mouseleave' &&\n (event as MouseEvent).relatedTarget !== this.control &&\n (event as MouseEvent).relatedTarget !== this\n ) {\n this.hiddenFromView = true\n } else if (event.type === 'keydown' && (event as KeyboardEvent).key === 'Escape' && !this.hiddenFromView) {\n this.hiddenFromView = true\n }\n }\n\n static observedAttributes = ['data-type', 'data-direction', 'id']\n\n #update() {\n if (this.hiddenFromView) {\n this.classList.remove(TOOLTIP_OPEN_CLASS, ...DIRECTION_CLASSES)\n } else {\n this.classList.add(TOOLTIP_OPEN_CLASS)\n for (const tooltip of this.ownerDocument.querySelectorAll<ToolTipElement>(this.tagName)) {\n if (tooltip !== this) tooltip.hiddenFromView = true\n }\n this.#updatePosition()\n }\n }\n\n attributeChangedCallback(name: string) {\n if (!this.isConnected) return\n\n if (name === 'id' || name === 'data-type') {\n this.#updateControlReference()\n } else if (name === 'data-direction') {\n this.#updateDirection()\n }\n }\n\n #updateControlReference() {\n if (!this.id || !this.control) return\n if (this.type === 'label') {\n let labelledBy = this.control.getAttribute('aria-labelledby')\n if (labelledBy) {\n if (!labelledBy.split(' ').includes(this.id)) {\n labelledBy = `${labelledBy} ${this.id}`\n } else {\n labelledBy = `${labelledBy}`\n }\n } else {\n labelledBy = this.id\n }\n this.control.setAttribute('aria-labelledby', labelledBy)\n\n // Prevent duplicate accessible name announcements.\n this.setAttribute('aria-hidden', 'true')\n } else {\n let describedBy = this.control.getAttribute('aria-describedby')\n if (describedBy) {\n if (!describedBy.split(' ').includes(this.id)) {\n describedBy = `${describedBy} ${this.id}`\n } else {\n describedBy = `${describedBy}`\n }\n } else {\n describedBy = this.id\n }\n this.control.setAttribute('aria-describedby', describedBy)\n }\n }\n\n #updateDirection() {\n this.classList.remove(...DIRECTION_CLASSES)\n const direction = this.direction\n if (direction === 'n') {\n this.#align = 'center'\n this.#side = 'outside-top'\n } else if (direction === 'ne') {\n this.#align = 'start'\n this.#side = 'outside-top'\n } else if (direction === 'e') {\n this.#align = 'center'\n this.#side = 'outside-right'\n } else if (direction === 'se') {\n this.#align = 'start'\n this.#side = 'outside-bottom'\n } else if (direction === 's') {\n this.#align = 'center'\n this.#side = 'outside-bottom'\n } else if (direction === 'sw') {\n this.#align = 'end'\n this.#side = 'outside-bottom'\n } else if (direction === 'w') {\n this.#align = 'center'\n this.#side = 'outside-left'\n } else if (direction === 'nw') {\n this.#align = 'end'\n this.#side = 'outside-top'\n }\n }\n\n #updatePosition() {\n if (!this.control) return\n if (!this.#allowUpdatePosition || this.hiddenFromView) return\n\n const TOOLTIP_OFFSET = 10\n\n this.style.left = `0px` // Ensures we have reliable tooltip width in `getAnchoredPosition`\n\n const position = getAnchoredPosition(this, this.control, {\n side: this.#side,\n align: this.#align,\n anchorOffset: TOOLTIP_OFFSET\n })\n const anchorSide = position.anchorSide\n const align = position.anchorAlign\n\n this.style.top = `${position.top}px`\n this.style.left = `${position.left}px`\n\n let direction: Direction = 's'\n\n if (anchorSide === 'outside-left') {\n direction = 'w'\n } else if (anchorSide === 'outside-right') {\n direction = 'e'\n } else if (anchorSide === 'outside-top') {\n if (align === 'center') {\n direction = 'n'\n } else if (align === 'start') {\n direction = 'ne'\n } else {\n direction = 'nw'\n }\n } else {\n if (align === 'center') {\n direction = 's'\n } else if (align === 'start') {\n direction = 'se'\n } else {\n direction = 'sw'\n }\n }\n\n this.classList.add(`tooltip-${direction}`)\n }\n}\n\nif (!window.customElements.get('tool-tip')) {\n window.ToolTipElement = ToolTipElement\n window.customElements.define('tool-tip', ToolTipElement)\n}\n\ndeclare global {\n interface Window {\n ToolTipElement: typeof ToolTipElement\n }\n}\n","import {controller, target} from '@github/catalyst'\n\n@controller\nclass XBannerElement extends HTMLElement {\n @target titleText: HTMLElement\n\n dismiss() {\n if (this.shouldReappear()) {\n this.style.setProperty('visibility', 'hidden')\n\n setTimeout(() => {\n this.style.setProperty('visibility', 'visible')\n }, 2000)\n\n return\n }\n\n const parentElement = this.parentElement\n if (!parentElement) return\n\n parentElement.removeChild(this)\n }\n\n private shouldReappear(): boolean {\n return this.getAttribute('data-reappear') === 'true'\n }\n}\n\ndeclare global {\n interface Window {\n XBannerElement: typeof XBannerElement\n }\n}\n\nif (!window.customElements.get('x-banner')) {\n window.XBannerElement = XBannerElement\n window.customElements.define('x-banner', XBannerElement)\n}\n","const ctrlBindings = !!navigator.userAgent.match(/Macintosh/);\nexport default class Combobox {\n constructor(input, list) {\n this.input = input;\n this.list = list;\n this.isComposing = false;\n if (!list.id) {\n list.id = `combobox-${Math.random()\n .toString()\n .slice(2, 6)}`;\n }\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 }\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 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 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.setAttribute('aria-selected', 'false');\n }\n }\n }\n clearSelection() {\n this.input.removeAttribute('aria-activedescendant');\n for (const el of this.list.querySelectorAll('[aria-selected=\"true\"]')) {\n el.setAttribute('aria-selected', 'false');\n }\n }\n}\nfunction keyboardBindings(event, combobox) {\n if (event.shiftKey || event.metaKey || event.altKey)\n return;\n if (!ctrlBindings && event.ctrlKey)\n return;\n if (combobox.isComposing)\n return;\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n if (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 (ctrlBindings && event.ctrlKey) {\n combobox.navigate(1);\n event.preventDefault();\n }\n break;\n case 'p':\n if (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);\n}\nfunction commit(input, list) {\n const target = list.querySelector('[aria-selected=\"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) {\n target.dispatchEvent(new CustomEvent('combobox-commit', { bubbles: true }));\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';\n\nfunction 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\nconst SCREEN_READER_DELAY = window.testScreenReaderDelay || 100;\nclass Autocomplete {\n constructor(container, input, results, autoselectEnabled = false) {\n var _a;\n this.container = container;\n this.input = input;\n this.results = results;\n this.combobox = new Combobox(input, results);\n this.feedback = document.getElementById(`${this.results.id}-feedback`);\n this.autoselectEnabled = autoselectEnabled;\n this.clearButton = document.getElementById(`${this.input.id || this.input.name}-clear`);\n this.clientOptions = results.querySelectorAll('[role=option]');\n if (this.feedback) {\n this.feedback.setAttribute('aria-live', 'polite');\n this.feedback.setAttribute('aria-atomic', 'true');\n }\n if (this.clearButton && !this.clearButton.getAttribute('aria-label')) {\n const labelElem = document.querySelector(`label[for=\"${this.input.name}\"]`);\n this.clearButton.setAttribute('aria-label', `clear:`);\n this.clearButton.setAttribute('aria-labelledby', `${this.clearButton.id} ${(labelElem === null || labelElem === void 0 ? void 0 : labelElem.id) || ''}`);\n }\n if (!this.input.getAttribute('aria-expanded')) {\n this.input.setAttribute('aria-expanded', 'false');\n }\n this.results.hidden = true;\n this.results.setAttribute('aria-label', 'results');\n this.input.setAttribute('autocomplete', 'off');\n this.input.setAttribute('spellcheck', 'false');\n this.interactingWithList = false;\n this.onInputChange = debounce(this.onInputChange.bind(this), 300);\n this.onResultsMouseDown = this.onResultsMouseDown.bind(this);\n this.onInputBlur = this.onInputBlur.bind(this);\n this.onInputFocus = this.onInputFocus.bind(this);\n this.onKeydown = this.onKeydown.bind(this);\n this.onCommit = this.onCommit.bind(this);\n this.handleClear = this.handleClear.bind(this);\n this.input.addEventListener('keydown', this.onKeydown);\n this.input.addEventListener('focus', this.onInputFocus);\n this.input.addEventListener('blur', this.onInputBlur);\n this.input.addEventListener('input', this.onInputChange);\n this.results.addEventListener('mousedown', this.onResultsMouseDown);\n this.results.addEventListener('combobox-commit', this.onCommit);\n (_a = this.clearButton) === null || _a === void 0 ? void 0 : _a.addEventListener('click', this.handleClear);\n }\n destroy() {\n this.input.removeEventListener('keydown', this.onKeydown);\n this.input.removeEventListener('focus', this.onInputFocus);\n this.input.removeEventListener('blur', this.onInputBlur);\n this.input.removeEventListener('input', this.onInputChange);\n this.results.removeEventListener('mousedown', this.onResultsMouseDown);\n this.results.removeEventListener('combobox-commit', this.onCommit);\n }\n handleClear(event) {\n event.preventDefault();\n if (this.input.getAttribute('aria-expanded') === 'true') {\n this.input.setAttribute('aria-expanded', 'false');\n this.updateFeedbackForScreenReaders('Results hidden.');\n }\n this.input.value = '';\n this.container.value = '';\n this.input.focus();\n this.input.dispatchEvent(new Event('change'));\n this.container.open = false;\n }\n onKeydown(event) {\n if (event.key === 'Enter' && this.container.open && this.autoselectEnabled) {\n const firstOption = this.results.children[0];\n if (firstOption) {\n event.stopPropagation();\n event.preventDefault();\n this.onCommit({ target: firstOption });\n }\n }\n if (event.key === 'Escape' && this.container.open) {\n this.container.open = false;\n event.stopPropagation();\n event.preventDefault();\n }\n else if (event.altKey && event.key === 'ArrowUp' && this.container.open) {\n this.container.open = false;\n event.stopPropagation();\n event.preventDefault();\n }\n else if (event.altKey && event.key === 'ArrowDown' && !this.container.open) {\n if (!this.input.value.trim())\n return;\n this.container.open = true;\n event.stopPropagation();\n event.preventDefault();\n }\n }\n onInputFocus() {\n this.fetchResults();\n }\n onInputBlur() {\n if (this.interactingWithList) {\n this.interactingWithList = false;\n return;\n }\n this.container.open = false;\n }\n onCommit({ target }) {\n const selected = target;\n if (!(selected instanceof HTMLElement))\n return;\n this.container.open = false;\n if (selected instanceof HTMLAnchorElement)\n return;\n const value = selected.getAttribute('data-autocomplete-value') || selected.textContent;\n this.updateFeedbackForScreenReaders(`${selected.textContent || ''} selected.`);\n this.container.value = value;\n if (!value) {\n this.updateFeedbackForScreenReaders(`Results hidden.`);\n }\n }\n onResultsMouseDown() {\n this.interactingWithList = true;\n }\n onInputChange() {\n if (this.feedback && this.feedback.textContent) {\n this.feedback.textContent = '';\n }\n this.container.removeAttribute('value');\n this.fetchResults();\n }\n identifyOptions() {\n let id = 0;\n for (const el of this.results.querySelectorAll('[role=\"option\"]:not([id])')) {\n el.id = `${this.results.id}-option-${id++}`;\n }\n }\n updateFeedbackForScreenReaders(inputString) {\n setTimeout(() => {\n if (this.feedback) {\n this.feedback.textContent = inputString;\n }\n }, SCREEN_READER_DELAY);\n }\n fetchResults() {\n const query = this.input.value.trim();\n if (!query) {\n this.container.open = false;\n return;\n }\n const src = this.container.src;\n if (!src)\n return;\n const url = new URL(src, window.location.href);\n const params = new URLSearchParams(url.search.slice(1));\n params.append('q', query);\n url.search = params.toString();\n this.container.dispatchEvent(new CustomEvent('loadstart'));\n this.container\n .fetchResult(this.input, url.toString())\n .then(html => {\n this.results.innerHTML = html;\n this.identifyOptions();\n const allNewOptions = this.results.querySelectorAll('[role=\"option\"]');\n const hasResults = !!allNewOptions.length;\n const numOptions = allNewOptions.length;\n const [firstOption] = allNewOptions;\n const firstOptionValue = firstOption === null || firstOption === void 0 ? void 0 : firstOption.textContent;\n if (this.autoselectEnabled && firstOptionValue) {\n this.updateFeedbackForScreenReaders(`${numOptions} results. ${firstOptionValue} is the top result: Press Enter to activate.`);\n }\n else {\n this.updateFeedbackForScreenReaders(`${numOptions || 'No'} results.`);\n }\n this.container.open = hasResults;\n this.container.dispatchEvent(new CustomEvent('load'));\n this.container.dispatchEvent(new CustomEvent('loadend'));\n })\n .catch(() => {\n this.container.dispatchEvent(new CustomEvent('error'));\n this.container.dispatchEvent(new CustomEvent('loadend'));\n });\n }\n open() {\n if (!this.results.hidden)\n return;\n this.combobox.start();\n this.results.hidden = false;\n }\n close() {\n if (this.results.hidden)\n return;\n this.combobox.stop();\n this.results.hidden = true;\n }\n}\n\nclass AutocompleteEvent extends CustomEvent {\n constructor(type, init) {\n super(type, init);\n this.relatedTarget = init.relatedTarget;\n }\n}\n\nconst requests = new WeakMap();\nfunction fragment(el, url) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.setRequestHeader('Accept', 'text/fragment+html');\n return request(el, xhr);\n}\nfunction request(el, xhr) {\n const pending = requests.get(el);\n if (pending)\n pending.abort();\n requests.set(el, xhr);\n const clear = () => requests.delete(el);\n const result = send(xhr);\n result.then(clear, clear);\n return result;\n}\nfunction send(xhr) {\n return new Promise((resolve, reject) => {\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText);\n }\n else {\n reject(new Error(xhr.responseText));\n }\n };\n xhr.onerror = reject;\n xhr.send();\n });\n}\n\nconst state = new WeakMap();\nclass AutocompleteElement extends HTMLElement {\n constructor() {\n super(...arguments);\n this.fetchResult = fragment;\n }\n connectedCallback() {\n const listId = this.getAttribute('for');\n if (!listId)\n return;\n const input = this.querySelector('input');\n const results = document.getElementById(listId);\n if (!(input instanceof HTMLInputElement) || !results)\n return;\n const autoselectEnabled = this.getAttribute('data-autoselect') === 'true';\n state.set(this, new Autocomplete(this, input, results, autoselectEnabled));\n results.setAttribute('role', 'listbox');\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 static get observedAttributes() {\n return ['open', 'value'];\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue)\n return;\n const autocomplete = state.get(this);\n if (!autocomplete)\n return;\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}\nif (!window.customElements.get('auto-complete')) {\n window.AutocompleteElement = AutocompleteElement;\n window.customElements.define('auto-complete', AutocompleteElement);\n}\n\nexport { AutocompleteEvent, AutocompleteElement as default };\n","function createNode(text) {\n const node = document.createElement('pre');\n node.style.width = '1px';\n node.style.height = '1px';\n node.style.position = 'fixed';\n node.style.top = '5px';\n node.textContent = text;\n return node;\n}\n\nfunction copyNode(node) {\n if ('clipboard' in navigator) {\n // eslint-disable-next-line flowtype/no-flow-fix-me-comments\n // $FlowFixMe Clipboard is not defined in Flow yet.\n return navigator.clipboard.writeText(node.textContent);\n }\n\n const selection = getSelection();\n\n if (selection == null) {\n return Promise.reject(new Error());\n }\n\n selection.removeAllRanges();\n const range = document.createRange();\n range.selectNodeContents(node);\n selection.addRange(range);\n document.execCommand('copy');\n selection.removeAllRanges();\n return Promise.resolve();\n}\nfunction copyText(text) {\n if ('clipboard' in navigator) {\n // eslint-disable-next-line flowtype/no-flow-fix-me-comments\n // $FlowFixMe Clipboard is not defined in Flow yet.\n return navigator.clipboard.writeText(text);\n }\n\n const body = document.body;\n\n if (!body) {\n return Promise.reject(new Error());\n }\n\n const node = createNode(text);\n body.appendChild(node);\n copyNode(node);\n body.removeChild(node);\n return Promise.resolve();\n}\n\nfunction copy(button) {\n const id = button.getAttribute('for');\n const text = button.getAttribute('value');\n\n function trigger() {\n button.dispatchEvent(new CustomEvent('clipboard-copy', {\n bubbles: true\n }));\n }\n\n if (text) {\n copyText(text).then(trigger);\n } else if (id) {\n const root = 'getRootNode' in Element.prototype ? button.getRootNode() : button.ownerDocument;\n if (!(root instanceof Document || 'ShadowRoot' in window && root instanceof ShadowRoot)) return;\n const node = root.getElementById(id);\n if (node) copyTarget(node).then(trigger);\n }\n}\n\nfunction copyTarget(content) {\n if (content instanceof HTMLInputElement || content instanceof HTMLTextAreaElement) {\n return copyText(content.value);\n } else if (content instanceof HTMLAnchorElement && content.hasAttribute('href')) {\n return copyText(content.href);\n } else {\n return copyNode(content);\n }\n}\n\nfunction clicked(event) {\n const button = event.currentTarget;\n\n if (button instanceof HTMLElement) {\n copy(button);\n }\n}\n\nfunction keydown(event) {\n if (event.key === ' ' || event.key === 'Enter') {\n const button = event.currentTarget;\n\n if (button instanceof HTMLElement) {\n event.preventDefault();\n copy(button);\n }\n }\n}\n\nfunction focused(event) {\n event.currentTarget.addEventListener('keydown', keydown);\n}\n\nfunction blurred(event) {\n event.currentTarget.removeEventListener('keydown', keydown);\n}\n\nclass ClipboardCopyElement extends HTMLElement {\n constructor() {\n super();\n this.addEventListener('click', clicked);\n this.addEventListener('focus', focused);\n this.addEventListener('blur', blurred);\n }\n\n connectedCallback() {\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0');\n }\n\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button');\n }\n }\n\n get value() {\n return this.getAttribute('value') || '';\n }\n\n set value(text) {\n this.setAttribute('value', text);\n }\n\n}\n\nif (!window.customElements.get('clipboard-copy')) {\n window.ClipboardCopyElement = ClipboardCopyElement;\n window.customElements.define('clipboard-copy', ClipboardCopyElement);\n}\n\nexport default ClipboardCopyElement;\n","import '@github/clipboard-copy-element'\n\nconst CLIPBOARD_COPY_TIMER_DURATION = 2000\n\nfunction showSVG(svg: SVGElement) {\n svg.style.display = 'inline-block'\n}\n\nfunction hideSVG(svg: SVGElement) {\n svg.style.display = 'none'\n}\n\n// Toggle a copy button.\nfunction showCopy(button: HTMLElement) {\n const [copyIcon, checkIcon] = button.querySelectorAll<SVGElement>('.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<SVGElement>('.octicon')\n\n if (!copyIcon || !checkIcon) return\n\n hideSVG(copyIcon)\n showSVG(checkIcon)\n}\n\nconst clipboardCopyElementTimers = new WeakMap<HTMLElement, number>()\n\ndocument.addEventListener('clipboard-copy', ({target}) => {\n if (!(target instanceof HTMLElement)) return\n if (!target.hasAttribute('data-view-component')) return\n\n const currentTimeout = clipboardCopyElementTimers.get(target)\n\n if (currentTimeout) {\n clearTimeout(currentTimeout)\n clipboardCopyElementTimers.delete(target)\n } else {\n showCheck(target)\n }\n\n clipboardCopyElementTimers.set(\n target,\n setTimeout(() => {\n showCopy(target)\n clipboardCopyElementTimers.delete(target)\n }, CLIPBOARD_COPY_TIMER_DURATION)\n )\n})\n","export const unitNames = ['second', 'minute', 'hour', 'day', 'month', 'year'];\nexport function timeAgo(date) {\n const ms = new Date().getTime() - date.getTime();\n const sec = Math.round(ms / 1000);\n const min = Math.round(sec / 60);\n const hr = Math.round(min / 60);\n const day = Math.round(hr / 24);\n const month = Math.round(day / 30);\n const year = Math.round(month / 12);\n if (ms < 0) {\n return [0, 'second'];\n }\n else if (sec < 10) {\n return [0, 'second'];\n }\n else if (sec < 45) {\n return [-sec, 'second'];\n }\n else if (sec < 90) {\n return [-min, 'minute'];\n }\n else if (min < 45) {\n return [-min, 'minute'];\n }\n else if (min < 90) {\n return [-hr, 'hour'];\n }\n else if (hr < 24) {\n return [-hr, 'hour'];\n }\n else if (hr < 36) {\n return [-day, 'day'];\n }\n else if (day < 30) {\n return [-day, 'day'];\n }\n else if (month < 18) {\n return [-month, 'month'];\n }\n else {\n return [-year, 'year'];\n }\n}\nexport function microTimeAgo(date) {\n const ms = new Date().getTime() - date.getTime();\n const sec = Math.round(ms / 1000);\n const min = Math.round(sec / 60);\n const hr = Math.round(min / 60);\n const day = Math.round(hr / 24);\n const month = Math.round(day / 30);\n const year = Math.round(month / 12);\n if (min < 1) {\n return [1, 'minute'];\n }\n else if (min < 60) {\n return [min, 'minute'];\n }\n else if (hr < 24) {\n return [hr, 'hour'];\n }\n else if (day < 365) {\n return [day, 'day'];\n }\n else {\n return [year, 'year'];\n }\n}\nexport function timeUntil(date) {\n const ms = date.getTime() - new Date().getTime();\n const sec = Math.round(ms / 1000);\n const min = Math.round(sec / 60);\n const hr = Math.round(min / 60);\n const day = Math.round(hr / 24);\n const month = Math.round(day / 30);\n const year = Math.round(month / 12);\n if (month >= 18) {\n return [year, 'year'];\n }\n else if (month >= 12) {\n return [year, 'year'];\n }\n else if (day >= 45) {\n return [month, 'month'];\n }\n else if (day >= 30) {\n return [month, 'month'];\n }\n else if (hr >= 36) {\n return [day, 'day'];\n }\n else if (hr >= 24) {\n return [day, 'day'];\n }\n else if (min >= 90) {\n return [hr, 'hour'];\n }\n else if (min >= 45) {\n return [hr, 'hour'];\n }\n else if (sec >= 90) {\n return [min, 'minute'];\n }\n else if (sec >= 45) {\n return [min, 'minute'];\n }\n else if (sec >= 10) {\n return [sec, 'second'];\n }\n else {\n return [0, 'second'];\n }\n}\nexport function microTimeUntil(date) {\n const ms = date.getTime() - new Date().getTime();\n const sec = Math.round(ms / 1000);\n const min = Math.round(sec / 60);\n const hr = Math.round(min / 60);\n const day = Math.round(hr / 24);\n const month = Math.round(day / 30);\n const year = Math.round(month / 12);\n if (day >= 365) {\n return [year, 'year'];\n }\n else if (hr >= 24) {\n return [day, 'day'];\n }\n else if (min >= 60) {\n return [hr, 'hour'];\n }\n else if (min > 1) {\n return [min, 'minute'];\n }\n else {\n return [1, 'minute'];\n }\n}\nexport function elapsedTime(date) {\n const ms = Math.abs(date.getTime() - new Date().getTime());\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 units = [];\n if (year)\n units.push([year, 'year']);\n if (month - year * 12)\n units.push([month - year * 12, 'month']);\n if (day - month * 30)\n units.push([day - month * 30, 'day']);\n if (hr - day * 24)\n units.push([hr - day * 24, 'hour']);\n if (min - hr * 60)\n units.push([min - hr * 60, 'minute']);\n if (sec - min * 60)\n units.push([sec - min * 60, 'second']);\n return units;\n}\n","const durationRe = /^[-+]?P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)W)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)S)?)?$/;\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) {\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 }\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));\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 } = durationLike;\n return new Duration(years, months, weeks, days, hours, minutes, seconds);\n }\n throw new RangeError('invalid duration');\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 withinDuration(a, b, str) {\n const duration = Duration.from(str).abs();\n const threshold = applyDuration(a, duration);\n if (!threshold)\n return true;\n return Math.abs(Number(threshold) - Number(a)) > Math.abs(Number(a) - Number(b));\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_getFormattedDate;\nimport { unitNames, microTimeAgo, microTimeUntil, timeUntil, timeAgo, elapsedTime } from './duration-format.js';\nimport { isDuration, withinDuration } from './duration.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\nconst HTMLElement = root.HTMLElement || null;\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 === '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 default 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 }\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 'datetime',\n 'lang',\n 'title'\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 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 var _a;\n const month = (_a = this.getAttribute('month')) !== null && _a !== void 0 ? _a : '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('day', 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 : '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 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 === '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 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 && __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getFormattedTitle).call(this) !== newValue, \"f\");\n }\n if (!__classPrivateFieldGet(this, _RelativeTimeElement_updating, \"f\") && !(attrName === 'title' && __classPrivateFieldGet(this, _RelativeTimeElement_customTitle, \"f\"))) {\n __classPrivateFieldSet(this, _RelativeTimeElement_updating, (async () => {\n await Promise.resolve();\n this.update();\n })(), \"f\");\n }\n }\n update() {\n const oldText = __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent || '';\n const oldTitle = this.getAttribute('title') || '';\n let newTitle = oldTitle;\n let newText = oldText;\n const now = new Date();\n if (!__classPrivateFieldGet(this, _RelativeTimeElement_customTitle, \"f\")) {\n newTitle = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getFormattedTitle).call(this) || '';\n if (newTitle)\n this.setAttribute('title', newTitle);\n }\n newText = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getFormattedDate).call(this, now) || '';\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 const date = this.date;\n const format = this.format;\n const isRelative = (format === 'auto' || format === 'micro') && date && withinDuration(now, date, this.threshold);\n if (format === 'elapsed' || isRelative) {\n dateObserver.observe(this);\n }\n else {\n dateObserver.unobserve(this);\n }\n __classPrivateFieldSet(this, _RelativeTimeElement_updating, false, \"f\");\n }\n}\n_RelativeTimeElement_customTitle = new WeakMap(), _RelativeTimeElement_updating = new WeakMap(), _RelativeTimeElement_renderRoot = new WeakMap(), _RelativeTimeElement_instances = new WeakSet(), _RelativeTimeElement_lang_get = function _RelativeTimeElement_lang_get() {\n var _a, _b;\n return (_b = (_a = this.closest('[lang]')) === null || _a === void 0 ? void 0 : _a.getAttribute('lang')) !== null && _b !== void 0 ? _b : 'default';\n}, _RelativeTimeElement_getFormattedTitle = function _RelativeTimeElement_getFormattedTitle() {\n const date = this.date;\n if (!date)\n return;\n if (typeof Intl === 'undefined' || !Intl.DateTimeFormat)\n return;\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_getFormattedDate = function _RelativeTimeElement_getFormattedDate(now = new Date()) {\n const date = this.date;\n if (!date)\n return;\n const format = this.format;\n if (format === 'elapsed') {\n const precisionIndex = unitNames.indexOf(this.precision) || 0;\n const units = elapsedTime(date).filter(unit => unitNames.indexOf(unit[1]) >= precisionIndex);\n return units.map(([int, unit]) => `${int}${unit[0]}`).join(' ') || `0${this.precision[0]}`;\n }\n const tense = this.tense;\n const micro = format === 'micro';\n const inFuture = now.getTime() < date.getTime();\n const within = withinDuration(now, date, this.threshold);\n const locale = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"a\", _RelativeTimeElement_lang_get);\n if (typeof Intl !== 'undefined' && Intl.RelativeTimeFormat) {\n const relativeFormat = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });\n if (tense === 'past' || (tense === 'auto' && !inFuture && within)) {\n const [int, unit] = micro ? microTimeAgo(date) : timeAgo(date);\n if (micro)\n return `${int}${unit[0]}`;\n return relativeFormat.format(int, unit);\n }\n if (tense === 'future' || (tense === 'auto' && inFuture && within)) {\n const [int, unit] = micro ? microTimeUntil(date) : timeUntil(date);\n if (micro)\n return `${int}${unit[0]}`;\n return relativeFormat.format(int, unit);\n }\n }\n if (typeof Intl === 'undefined' || !Intl.DateTimeFormat)\n return;\n const formatter = new Intl.DateTimeFormat(locale, {\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};\n","import RelativeTimeElement from './relative-time-element.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\ntry {\n customElements.define('relative-time', RelativeTimeElement);\n root.RelativeTimeElement = RelativeTimeElement;\n}\ncatch (e) {\n if (!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&\n !(e instanceof ReferenceError)) {\n throw e;\n }\n}\nexport default RelativeTimeElement;\nexport * from './relative-time-element.js';\n","function getTabs(el) {\n return Array.from(el.querySelectorAll('[role=\"tablist\"] [role=\"tab\"]')).filter(tab => tab instanceof HTMLElement && tab.closest(el.tagName) === el);\n}\nfunction getNavigationKeyCodes(vertical) {\n if (vertical) {\n return [\n ['ArrowDown', 'ArrowRight'],\n ['ArrowUp', 'ArrowLeft']\n ];\n }\n else {\n return [['ArrowRight'], ['ArrowLeft']];\n }\n}\nexport default class TabContainerElement extends HTMLElement {\n constructor() {\n super();\n this.addEventListener('keydown', (event) => {\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n if (target.closest(this.tagName) !== this)\n return;\n if (target.getAttribute('role') !== 'tab' && !target.closest('[role=\"tablist\"]'))\n return;\n const tabs = getTabs(this);\n const currentIndex = tabs.indexOf(tabs.find(tab => tab.matches('[aria-selected=\"true\"]')));\n const [incrementKeys, decrementKeys] = getNavigationKeyCodes(target.closest('[role=\"tablist\"]')?.getAttribute('aria-orientation') === 'vertical');\n if (incrementKeys.some(code => event.code === code)) {\n let index = currentIndex + 1;\n if (index >= tabs.length)\n index = 0;\n this.selectTab(index);\n }\n else if (decrementKeys.some(code => event.code === code)) {\n let index = currentIndex - 1;\n if (index < 0)\n index = tabs.length - 1;\n this.selectTab(index);\n }\n else if (event.code === 'Home') {\n this.selectTab(0);\n event.preventDefault();\n }\n else if (event.code === 'End') {\n this.selectTab(tabs.length - 1);\n event.preventDefault();\n }\n });\n this.addEventListener('click', (event) => {\n const tabs = getTabs(this);\n if (!(event.target instanceof Element))\n return;\n if (event.target.closest(this.tagName) !== this)\n return;\n const tab = event.target.closest('[role=\"tab\"]');\n if (!(tab instanceof HTMLElement) || !tab.closest('[role=\"tablist\"]'))\n return;\n const index = tabs.indexOf(tab);\n this.selectTab(index);\n });\n }\n connectedCallback() {\n for (const tab of getTabs(this)) {\n if (!tab.hasAttribute('aria-selected')) {\n tab.setAttribute('aria-selected', 'false');\n }\n if (!tab.hasAttribute('tabindex')) {\n if (tab.getAttribute('aria-selected') === 'true') {\n tab.setAttribute('tabindex', '0');\n }\n else {\n tab.setAttribute('tabindex', '-1');\n }\n }\n }\n }\n selectTab(index) {\n const tabs = getTabs(this);\n const panels = Array.from(this.querySelectorAll('[role=\"tabpanel\"]')).filter(panel => panel.closest(this.tagName) === this);\n /**\n * Out of bounds index\n */\n if (index > tabs.length - 1) {\n throw new RangeError(`Index \"${index}\" out of bounds`);\n }\n const selectedTab = tabs[index];\n const selectedPanel = panels[index];\n const cancelled = !this.dispatchEvent(new CustomEvent('tab-container-change', {\n bubbles: true,\n cancelable: true,\n detail: { relatedTarget: selectedPanel }\n }));\n if (cancelled)\n return;\n for (const tab of tabs) {\n tab.setAttribute('aria-selected', 'false');\n tab.setAttribute('tabindex', '-1');\n }\n for (const panel of panels) {\n panel.hidden = true;\n if (!panel.hasAttribute('tabindex') && !panel.hasAttribute('data-tab-container-no-tabstop')) {\n panel.setAttribute('tabindex', '0');\n }\n }\n selectedTab.setAttribute('aria-selected', 'true');\n selectedTab.setAttribute('tabindex', '0');\n selectedTab.focus();\n selectedPanel.hidden = false;\n this.dispatchEvent(new CustomEvent('tab-container-changed', {\n bubbles: true,\n detail: { relatedTarget: selectedPanel }\n }));\n }\n}\nif (!window.customElements.get('tab-container')) {\n window.TabContainerElement = TabContainerElement;\n window.customElements.define('tab-container', TabContainerElement);\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable custom-elements/expose-class-on-global */\nimport {controller, targets} from '@github/catalyst'\n\n@controller\nexport class PrimerMultiInputElement extends HTMLElement {\n @targets fields: HTMLInputElement[]\n\n activateField(name: string) {\n const fieldWithName = this.findField(name)\n if (!fieldWithName) return\n\n for (const field of this.fields) {\n if (field === fieldWithName) continue\n\n field.setAttribute('disabled', 'disabled')\n field.setAttribute('hidden', 'hidden')\n\n field.parentElement?.setAttribute('hidden', 'hidden')\n }\n\n fieldWithName.removeAttribute('disabled')\n fieldWithName.removeAttribute('hidden')\n fieldWithName.parentElement?.removeAttribute('hidden')\n }\n\n private findField(name: string): HTMLElement | null {\n for (const field of this.fields) {\n if (field.getAttribute('data-name') === name) {\n return field\n }\n }\n\n return null\n }\n}\n\ndeclare global {\n interface Window {\n PrimerMultiInputElement: typeof PrimerMultiInputElement\n }\n}\n\nif (!window.customElements.get('primer-multi-input')) {\n Object.assign(window, {PrimerMultiInputElement})\n window.customElements.define('primer-multi-input', PrimerMultiInputElement)\n}\n","function throttle(callback, wait = 0, {\n start = true,\n middle = true,\n once = false\n} = {}) {\n var last = 0;\n var timer;\n var cancelled = false;\n\n var fn = function fn(...args) {\n if (cancelled) return;\n var delta = Date.now() - last;\n last = Date.now();\n\n if (start) {\n //eslint-disable-next-line flowtype/no-flow-fix-me-comments\n // $FlowFixMe this isn't a const\n start = false;\n callback(...args);\n if (once) fn.cancel();\n } else if (middle && delta < wait || !middle) {\n clearTimeout(timer);\n timer = setTimeout(function () {\n last = Date.now();\n callback(...args);\n if (once) fn.cancel();\n }, !middle ? wait : wait - delta);\n }\n };\n\n fn.cancel = function () {\n clearTimeout(timer);\n cancelled = true;\n };\n\n return fn;\n}\nfunction debounce(callback, wait = 0, {\n start = false,\n middle = false,\n once = false\n} = {}) {\n return throttle(callback, wait, {\n start: start,\n middle: middle,\n once: once\n });\n}\n\nconst states = new WeakMap();\nclass AutoCheckElement extends HTMLElement {\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}\nfunction setLoadingState(event) {\n const input = event.currentTarget;\n if (!(input instanceof HTMLInputElement))\n return;\n const autoCheckElement = input.closest('auto-check');\n if (!(autoCheckElement instanceof AutoCheckElement))\n return;\n const src = autoCheckElement.src;\n const csrf = autoCheckElement.csrf;\n const state = states.get(autoCheckElement);\n if (!src || !csrf || !state) {\n return;\n }\n let message = 'Verifying…';\n const setValidity = (text) => (message = text);\n input.dispatchEvent(new CustomEvent('auto-check-start', {\n bubbles: true,\n detail: { setValidity }\n }));\n if (autoCheckElement.required) {\n input.setCustomValidity(message);\n }\n}\nfunction makeAbortController() {\n if ('AbortController' in window) {\n return new AbortController();\n }\n return {\n signal: null,\n abort() {\n }\n };\n}\nasync function fetchWithNetworkEvents(el, url, options) {\n try {\n const response = await fetch(url, options);\n el.dispatchEvent(new CustomEvent('load'));\n el.dispatchEvent(new CustomEvent('loadend'));\n return response;\n }\n catch (error) {\n if (error.name !== 'AbortError') {\n el.dispatchEvent(new CustomEvent('error'));\n el.dispatchEvent(new CustomEvent('loadend'));\n }\n throw error;\n }\n}\nasync function check(autoCheckElement) {\n const input = autoCheckElement.input;\n if (!input) {\n return;\n }\n const csrfField = autoCheckElement.csrfField;\n const src = autoCheckElement.src;\n const csrf = autoCheckElement.csrf;\n const state = states.get(autoCheckElement);\n if (!src || !csrf || !state) {\n if (autoCheckElement.required) {\n input.setCustomValidity('');\n }\n return;\n }\n if (!input.value.trim()) {\n if (autoCheckElement.required) {\n input.setCustomValidity('');\n }\n return;\n }\n const body = new FormData();\n body.append(csrfField, csrf);\n body.append('value', input.value);\n input.dispatchEvent(new CustomEvent('auto-check-send', {\n bubbles: true,\n detail: { body }\n }));\n if (state.controller) {\n state.controller.abort();\n }\n else {\n autoCheckElement.dispatchEvent(new CustomEvent('loadstart'));\n }\n state.controller = makeAbortController();\n try {\n const response = await fetchWithNetworkEvents(autoCheckElement, src, {\n credentials: 'same-origin',\n signal: state.controller.signal,\n method: 'POST',\n body\n });\n if (response.ok) {\n processSuccess(response, input, autoCheckElement.required);\n }\n else {\n processFailure(response, input, autoCheckElement.required);\n }\n state.controller = null;\n input.dispatchEvent(new CustomEvent('auto-check-complete', { bubbles: true }));\n }\n catch (error) {\n if (error.name !== 'AbortError') {\n state.controller = null;\n input.dispatchEvent(new CustomEvent('auto-check-complete', { bubbles: true }));\n }\n }\n}\nfunction processSuccess(response, input, required) {\n if (required) {\n input.setCustomValidity('');\n }\n input.dispatchEvent(new CustomEvent('auto-check-success', {\n bubbles: true,\n detail: {\n response: response.clone()\n }\n }));\n}\nfunction processFailure(response, input, required) {\n let message = 'Validation failed';\n const setValidity = (text) => (message = text);\n input.dispatchEvent(new CustomEvent('auto-check-error', {\n bubbles: true,\n detail: {\n response: response.clone(),\n setValidity\n }\n }));\n if (required) {\n input.setCustomValidity(message);\n }\n}\nif (!window.customElements.get('auto-check')) {\n window.AutoCheckElement = AutoCheckElement;\n window.customElements.define('auto-check', AutoCheckElement);\n}\n\nexport default AutoCheckElement;\n","import '@github/auto-check-element'\nimport {controller, target} from '@github/catalyst'\n\n@controller\nclass PrimerTextFieldElement extends HTMLElement {\n @target inputElement: HTMLInputElement\n @target validationElement: HTMLElement\n @target validationMessageElement: HTMLElement\n\n #abortController: AbortController | null\n\n connectedCallback(): void {\n this.#abortController?.abort()\n const {signal} = (this.#abortController = new AbortController())\n\n this.inputElement.addEventListener(\n 'auto-check-success',\n () => { this.clearError() },\n {signal}\n )\n\n this.inputElement.addEventListener(\n 'auto-check-error',\n (event: any) => {\n event.detail.response.text().then(\n (error_message: string) => { this.setError(error_message) }\n )\n },\n {signal}\n )\n }\n\n disconnectedCallback() {\n this.#abortController?.abort()\n }\n\n clearError(): void {\n this.inputElement.removeAttribute('invalid')\n this.validationElement.hidden = true\n this.validationMessageElement.innerText = ''\n }\n\n setError(message: string): void {\n this.validationMessageElement.innerText = message\n this.validationElement.hidden = false\n this.inputElement.setAttribute('invalid', 'true')\n }\n}\n"],"names":["DetailsMenuElement","HTMLElement","preload","this","hasAttribute","value","setAttribute","removeAttribute","src","getAttribute","[object Object]","details","parentElement","summary","querySelector","subscriptions","fromEvent","e","trackComposition","shouldCommit","menu","event","KeyboardEvent","state","states","get","isComposing","isSummaryFocused","target","Element","tagName","key","close","preventDefault","stopPropagation","sibling","focus","ctrlBindings","ctrlKey","selected","document","activeElement","isMenuItem","closest","click","keydown","loadFragment","once","querySelectorAll","opened","contains","closeCurrentMenu","NullSubscription","focusOnOpen","set","loaded","delete","sub","unsubscribe","WeakMap","eventName","onNext","options","addEventListener","removeEventListener","loader","autofocus","isMouse","focusFirstItem","input","next","Array","from","index","indexOf","found","def","length","navigator","userAgent","match","type","menuitem","checked","commit","dispatchEvent","CustomEvent","cancelable","detail","relatedTarget","item","button","text","el","textEl","textContent","labelText","html","contentsEl","innerHTML","labelHTML","updateLabel","checkState","toString","HTMLInputElement","indeterminate","updateChecked","role","window","customElements","define","startPositions","dragStartPositions","constructedElements","moveCropArea","currentTarget","ImageCropElement","box","image","deltaX","deltaY","has","MouseEvent","pos","pageX","dragStartX","pageY","dragStartY","TouchEvent","changedTouches","x","Math","min","max","offsetLeft","width","offsetWidth","y","offsetTop","height","offsetHeight","style","left","top","fireChangeEvent","updateCropArea","getShadowHost","rect","getBoundingClientRect","delta","setInitialPosition","startX","startY","pageXOffset","pageYOffset","updateDimensions","rootNode","getRootNode","ShadowRoot","host","startUpdate","direction","passive","classList","add","reposition","newSide","abs","round","side","clientWidth","clientHeight","stopUpdate","remove","result","ratio","naturalWidth","slottedInput","bubbles","shadowRoot","attachShadow","mode","HTMLImageElement","observedAttributes","val","attribute","oldValue","newValue","__decorate","decorators","desc","d","c","arguments","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__classPrivateFieldGet","receiver","kind","f","TypeError","call","__classPrivateFieldSet","alternateOrders","outside-top","outside-bottom","outside-left","outside-right","alternateAlignments","start","end","center","getAnchoredPosition","floatingElement","anchorElement","settings","element","parentNode","getComputedStyle","position","body","getPositionedParent","clippingRect","overflow","clippingNode","elemRect","elemStyle","borderTop","borderLeft","borderRight","borderBottom","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","map","v","parseInt","innerHeight","Infinity","getClippingRect","parentElementStyle","parentElementRect","viewportRect","relativePosition","floatingRect","anchorRect","align","allowOutOfBounds","anchorOffset","alignmentOffset","relativeViewportRect","calculatePosition","anchorSide","anchorAlign","alternateOrder","positionAttempt","prevSide","shouldRecalculatePosition","nextSide","alternateAlignment","alignmentAttempt","prevAlign","shouldRecalculateAlignment","nextAlign","assign","pureCalculateAnchoredPosition","_a","_b","_c","_d","_e","positionDefaults","startsWith","getDefaultSettings","elementDimensions","anchorPosition","anchorRight","anchorBottom","currentPos","containerDimensions","getFocusableChild","container","lastChild","strict","acceptFn","onlyTabbable","isTabbable","isFocusable","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","FILTER_ACCEPT","FILTER_SKIP","nextNode","reverse","firstChild","previousNode","iterateFocusableElements","elem","disabledAttrInert","includes","disabled","hiddenInert","hidden","hiddenInputInert","sentinelInert","sizeInert","visibilityInert","visibility","clientRectsInert","getClientRects","HTMLAnchorElement","tabIndex","signalSupported","noop","create","signal","originalAddEventListener","EventTarget","prototype","name","originalCallback","optionsOrCapture","AbortSignal","monkeyPatch","suspendedTrapStack","activeTrap","focusTrap","initialFocus","abortSignal","controller","AbortController","sentinelStart","createElement","onfocus","lastFocusableChild","sentinelEnd","lastFocusedChild","ensureTrapZoneHasFocus","focusedElement","firstFocusableChild","prepend","append","wrappingController","abort","followSignal","suspendedTrap","push","undefined","sentinels","getElementsByClassName","suspendedTrapIndex","findIndex","t","splice","trapToReactivate","pop","originalSignal","tryReactivate","capture","focusIfNeeded","overlayStack","clickHandler","dialogId","dialog","getElementById","ModalDialogElement","openButton","show","topLevelDialog","clickOutsideDialog","id","_ModalDialogElement_focusAbortController","open","_ModalDialogElement_instances","_ModalDialogElement_overlayBackdrop_get","aborted","showButtons","closedNotCancelled","dialogEvent","Event","controllers","WeakSet","bindShadow","root","bindElements","listenForBind","observers","closed","observer","MutationObserver","mutations","mutation","bindActions","addedNodes","observe","childList","subtree","attributeFilter","subscription","disconnect","handleEvent","binding","bindings","tag","method","matches","shadowController","action","trim","split","eventSep","lastIndexOf","methodSep","slice","dasherize","str","String","description","replace","toLowerCase","mustDasherize","dashed","DOMException","attrKey","initialized","initializeAttrs","instance","names","proto","getPrototypeOf","prefix","constructor","attrPrefix","meta","descriptor","configurable","Number","toggleAttribute","symbol","Symbol","for","CatalystDelegate","classObject","delegate","connectedCallback","disconnectedCallback","attributeChangedCallback","attributes","observed","attrToAttributeName","concat","defineObservedAttributes","register","upgrade","template","content","cloneNode","autoShadowRoot","ownerDocument","bind","hasOwnProperty","parent","Map","Set","findTarget","targets","findTargets","Promise","resolve","readyState","listenerOptions","handler","NavListElement","setShowMoreItemState","showMoreDisabled","showMoreItem","toggle","currentPage","totalPages","paginationSrc","nextElementSibling","itemIsExpanded","collapseItem","expandItem","paginationURL","URL","location","origin","searchParams","response","fetch","ok","err","fragment","parseHTML","list","insertBefore","focusMarkers","importNode","SegmentedControlElement","_SegmentedControlElement_instances","_SegmentedControlElement_updateButtonLabels","items","debounce","callback","wait","middle","timer","last","cancelled","fn","args","Date","now","apply","cancel","clearTimeout","setTimeout","throttle","label","ToggleSwitchElement","link","href","csrf","csrfElement","csrfField","isDisabled","isRemote","setLoadingState","submitForm","performToggle","switch","isOn","turnOff","turnOn","disable","errorIcon","loadingSpinner","setFinishedState","error","enable","FormData","Error","credentials","headers","Requested-With","setSuccessState","setErrorState","opts","db","TOOLTIP_OPEN_CLASS","TOOLTIP_SR_ONLY_CLASS","DIRECTION_CLASSES","ToolTipElement","_ToolTipElement_abortController","_ToolTipElement_align","_ToolTipElement_side","_ToolTipElement_allowUpdatePosition","htmlFor","control","hiddenFromView","isConnected","_ToolTipElement_instances","_ToolTipElement_update","_ToolTipElement_updateControlReference","_ToolTipElement_updateDirection","styles","random","toFixed","tooltip","_ToolTipElement_updatePosition","labelledBy","describedBy","XBannerElement","shouldReappear","setProperty","removeChild","Combobox","keyboardEventHandler","combobox","shiftKey","metaKey","altKey","clearSelection","navigate","keyboardBindings","compositionEventHandler","inputHandler","stop","commitWithElement","indexDiff","focusEl","filter","visible","els","focusIndex","indexOfItem","newIndex","scrollTo","fireCommitEvent","scrollTop","containerBottom","bottom","inViewport","SCREEN_READER_DELAY","testScreenReaderDelay","Autocomplete","results","autoselectEnabled","feedback","clearButton","clientOptions","labelElem","interactingWithList","onInputChange","timeout","Rest","onResultsMouseDown","onInputBlur","onInputFocus","onKeydown","onCommit","handleClear","updateFeedbackForScreenReaders","firstOption","children","fetchResults","inputString","query","url","params","URLSearchParams","search","fetchResult","then","identifyOptions","allNewOptions","hasResults","numOptions","firstOptionValue","catch","AutocompleteEvent","init","super","requests","xhr","XMLHttpRequest","setRequestHeader","pending","clear","reject","onload","status","responseText","onerror","send","request","AutocompleteElement","listId","autocomplete","destroy","copyNode","clipboard","writeText","selection","getSelection","removeAllRanges","range","createRange","selectNodeContents","addRange","execCommand","copyText","createNode","appendChild","copy","trigger","Document","HTMLTextAreaElement","clicked","focused","blurred","ClipboardCopyElement","showSVG","svg","display","hideSVG","clipboardCopyElementTimers","currentTimeout","copyIcon","checkIcon","showCheck","showCopy","unitNames","durationRe","Duration","years","months","weeks","days","hours","minutes","seconds","durationLike","factor","parsed","RangeError","withinDuration","a","b","threshold","date","duration","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","applyDuration","_RelativeTimeElement_instances","_RelativeTimeElement_customTitle","_RelativeTimeElement_updating","_RelativeTimeElement_lang_get","_RelativeTimeElement_renderRoot","_RelativeTimeElement_getFormattedTitle","_RelativeTimeElement_getFormattedDate","globalThis","RelativeTimeUpdatedEvent","oldText","newText","oldTitle","newTitle","composed","getUnitFactor","format","precision","ms","getTime","dateObserver","elements","time","update","size","nearestDistance","timeEl","RelativeTimeElement","second","minute","hour","weekday","day","month","year","getUTCFullYear","timeZoneName","test","tense","datetime","parse","isNaN","toISOString","unobserve","attrName","isRelative","Intl","DateTimeFormat","precisionIndex","sec","floor","hr","units","elapsedTime","unit","int","join","micro","inFuture","within","locale","RelativeTimeFormat","relativeFormat","numeric","microTimeAgo","timeAgo","microTimeUntil","timeUntil","formatter","ReferenceError","getTabs","tab","TabContainerElement","tabs","currentIndex","find","incrementKeys","decrementKeys","some","code","selectTab","panels","panel","selectedTab","selectedPanel","PrimerMultiInputElement","fieldWithName","findField","field","fields","AutoCheckElement","checker","check","spellcheck","setCustomValidity","required","autoCheckElement","message","setValidity","async","fetchWithNetworkEvents","clone","processSuccess","processFailure","PrimerTextFieldElement","_PrimerTextFieldElement_abortController","inputElement","clearError","error_message","setError","validationElement","validationMessageElement","innerText"],"mappings":"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"}
1
+ {"version":3,"file":"primer_view_components.js","sources":["../../../node_modules/@github/details-menu-element/dist/index.js","../../../node_modules/@github/image-crop-element/dist/index.js","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/@primer/behaviors/dist/esm/anchored-position.js","../../../node_modules/@primer/behaviors/dist/esm/utils/iterate-focusable-elements.js","../../../node_modules/@primer/behaviors/dist/esm/polyfills/event-listener-signal.js","../../../node_modules/@primer/behaviors/dist/esm/focus-trap.js","../../components/primer/alpha/modal_dialog.ts","../../../node_modules/@github/catalyst/lib/bind.js","../../../node_modules/@github/catalyst/lib/dasherize.js","../../../node_modules/@github/catalyst/lib/attr.js","../../../node_modules/@github/catalyst/lib/core.js","../../../node_modules/@github/catalyst/lib/register.js","../../../node_modules/@github/catalyst/lib/auto-shadow-root.js","../../../node_modules/@github/catalyst/lib/target.js","../../../node_modules/@github/catalyst/lib/findtarget.js","../../../node_modules/@github/catalyst/lib/controller.js","../../../node_modules/@github/catalyst/lib/lazy-define.js","../../components/primer/alpha/nav_list.ts","../../components/primer/alpha/segmented_control.ts","../../../node_modules/@github/mini-throttle/dist/index.js","../../components/primer/alpha/toggle_switch.ts","../../../node_modules/@github/mini-throttle/dist/decorators.js","../../components/primer/alpha/tool_tip.ts","../../components/primer/alpha/x_banner.ts","../../../node_modules/@github/combobox-nav/dist/index.js","../../../node_modules/@github/auto-complete-element/dist/index.js","../../../node_modules/@github/clipboard-copy-element/dist/index.esm.js","../../components/primer/beta/clipboard_copy.ts","../../../node_modules/@github/relative-time-element/dist/duration-format-ponyfill.js","../../../node_modules/@github/relative-time-element/dist/duration.js","../../../node_modules/@github/relative-time-element/dist/relative-time-element.js","../../../node_modules/@github/relative-time-element/dist/relative-time-element-define.js","../../../node_modules/@github/tab-container-element/dist/index.js","../../../lib/primer/forms/primer_multi_input.ts","../../../node_modules/@github/auto-check-element/dist/index.js","../../../lib/primer/forms/primer_text_field.ts","../../../lib/primer/forms/toggle_switch_input.ts"],"sourcesContent":["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","const startPositions = new WeakMap();\nconst dragStartPositions = new WeakMap();\nconst constructedElements = new WeakMap();\nfunction moveCropArea(event) {\n const el = event.currentTarget;\n if (!(el instanceof ImageCropElement))\n return;\n const { box, image } = constructedElements.get(el) || {};\n if (!box || !image)\n return;\n let deltaX = 0;\n let deltaY = 0;\n if (event instanceof KeyboardEvent) {\n if (event.key === 'ArrowUp') {\n deltaY = -1;\n }\n else if (event.key === 'ArrowDown') {\n deltaY = 1;\n }\n else if (event.key === 'ArrowLeft') {\n deltaX = -1;\n }\n else if (event.key === 'ArrowRight') {\n deltaX = 1;\n }\n }\n else if (dragStartPositions.has(el) && event instanceof MouseEvent) {\n const pos = dragStartPositions.get(el);\n deltaX = event.pageX - pos.dragStartX;\n deltaY = event.pageY - pos.dragStartY;\n }\n else if (dragStartPositions.has(el) && event instanceof TouchEvent) {\n const { pageX, pageY } = event.changedTouches[0];\n const { dragStartX, dragStartY } = dragStartPositions.get(el);\n deltaX = pageX - dragStartX;\n deltaY = pageY - dragStartY;\n }\n if (deltaX !== 0 || deltaY !== 0) {\n const x = Math.min(Math.max(0, box.offsetLeft + deltaX), image.width - box.offsetWidth);\n const y = Math.min(Math.max(0, box.offsetTop + deltaY), image.height - box.offsetHeight);\n box.style.left = `${x}px`;\n box.style.top = `${y}px`;\n fireChangeEvent(el, { x, y, width: box.offsetWidth, height: box.offsetHeight });\n }\n if (event instanceof MouseEvent) {\n dragStartPositions.set(el, {\n dragStartX: event.pageX,\n dragStartY: event.pageY\n });\n }\n else if (event instanceof TouchEvent) {\n const { pageX, pageY } = event.changedTouches[0];\n dragStartPositions.set(el, {\n dragStartX: pageX,\n dragStartY: pageY\n });\n }\n}\nfunction updateCropArea(event) {\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n const el = getShadowHost(target);\n if (!(el instanceof ImageCropElement))\n return;\n const { box } = constructedElements.get(el) || {};\n if (!box)\n return;\n const rect = el.getBoundingClientRect();\n let deltaX, deltaY, delta;\n if (event instanceof KeyboardEvent) {\n if (event.key === 'Escape')\n return setInitialPosition(el);\n if (event.key === '-')\n delta = -10;\n if (event.key === '=')\n delta = +10;\n if (!delta)\n return;\n deltaX = box.offsetWidth + delta;\n deltaY = box.offsetHeight + delta;\n startPositions.set(el, { startX: box.offsetLeft, startY: box.offsetTop });\n }\n else if (event instanceof MouseEvent) {\n const pos = startPositions.get(el);\n if (!pos)\n return;\n deltaX = event.pageX - pos.startX - rect.left - window.pageXOffset;\n deltaY = event.pageY - pos.startY - rect.top - window.pageYOffset;\n }\n else if (event instanceof TouchEvent) {\n const pos = startPositions.get(el);\n if (!pos)\n return;\n deltaX = event.changedTouches[0].pageX - pos.startX - rect.left - window.pageXOffset;\n deltaY = event.changedTouches[0].pageY - pos.startY - rect.top - window.pageYOffset;\n }\n if (deltaX && deltaY)\n updateDimensions(el, deltaX, deltaY, !(event instanceof KeyboardEvent));\n}\nfunction getShadowHost(el) {\n const rootNode = el.getRootNode();\n if (!(rootNode instanceof ShadowRoot))\n return el;\n return rootNode.host;\n}\nfunction startUpdate(event) {\n const currentTarget = event.currentTarget;\n if (!(currentTarget instanceof HTMLElement))\n return;\n const el = getShadowHost(currentTarget);\n if (!(el instanceof ImageCropElement))\n return;\n const { box } = constructedElements.get(el) || {};\n if (!box)\n return;\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n if (target.hasAttribute('data-direction')) {\n const direction = target.getAttribute('data-direction') || '';\n el.addEventListener('mousemove', updateCropArea);\n el.addEventListener('touchmove', updateCropArea, { passive: true });\n if (['nw', 'se'].indexOf(direction) >= 0)\n el.classList.add('nwse');\n if (['ne', 'sw'].indexOf(direction) >= 0)\n el.classList.add('nesw');\n startPositions.set(el, {\n startX: box.offsetLeft + (['se', 'ne'].indexOf(direction) >= 0 ? 0 : box.offsetWidth),\n startY: box.offsetTop + (['se', 'sw'].indexOf(direction) >= 0 ? 0 : box.offsetHeight)\n });\n updateCropArea(event);\n }\n else {\n el.addEventListener('mousemove', moveCropArea);\n el.addEventListener('touchmove', moveCropArea, { passive: true });\n }\n}\nfunction updateDimensions(target, deltaX, deltaY, reposition = true) {\n let newSide = Math.max(Math.abs(deltaX), Math.abs(deltaY), 10);\n const pos = startPositions.get(target);\n if (!pos)\n return;\n const { box, image } = constructedElements.get(target) || {};\n if (!box || !image)\n return;\n newSide = Math.min(newSide, deltaY > 0 ? image.height - pos.startY : pos.startY, deltaX > 0 ? image.width - pos.startX : pos.startX);\n const x = reposition ? Math.round(Math.max(0, deltaX > 0 ? pos.startX : pos.startX - newSide)) : box.offsetLeft;\n const y = reposition ? Math.round(Math.max(0, deltaY > 0 ? pos.startY : pos.startY - newSide)) : box.offsetTop;\n box.style.left = `${x}px`;\n box.style.top = `${y}px`;\n box.style.width = `${newSide}px`;\n box.style.height = `${newSide}px`;\n fireChangeEvent(target, { x, y, width: newSide, height: newSide });\n}\nfunction setInitialPosition(el) {\n const { image } = constructedElements.get(el) || {};\n if (!image)\n return;\n const side = Math.round(image.clientWidth > image.clientHeight ? image.clientHeight : image.clientWidth);\n startPositions.set(el, {\n startX: (image.clientWidth - side) / 2,\n startY: (image.clientHeight - side) / 2\n });\n updateDimensions(el, side, side);\n}\nfunction stopUpdate(event) {\n const el = event.currentTarget;\n if (!(el instanceof ImageCropElement))\n return;\n dragStartPositions.delete(el);\n el.classList.remove('nwse', 'nesw');\n el.removeEventListener('mousemove', updateCropArea);\n el.removeEventListener('mousemove', moveCropArea);\n el.removeEventListener('touchmove', updateCropArea);\n el.removeEventListener('touchmove', moveCropArea);\n}\nfunction fireChangeEvent(target, result) {\n const { image } = constructedElements.get(target) || {};\n if (!image)\n return;\n const ratio = image.naturalWidth / image.width;\n for (const key in result) {\n const value = Math.round(result[key] * ratio);\n result[key] = value;\n const slottedInput = target.querySelector(`[data-image-crop-input='${key}']`);\n if (slottedInput instanceof HTMLInputElement)\n slottedInput.value = value.toString();\n }\n target.dispatchEvent(new CustomEvent('image-crop-change', { bubbles: true, detail: result }));\n}\nclass ImageCropElement extends HTMLElement {\n connectedCallback() {\n if (constructedElements.has(this))\n return;\n const shadowRoot = this.attachShadow({ mode: 'open' });\n shadowRoot.innerHTML = `\n<style>\n :host { touch-action: none; display: block; }\n :host(.nesw) { cursor: nesw-resize; }\n :host(.nwse) { cursor: nwse-resize; }\n :host(.nesw) .crop-box, :host(.nwse) .crop-box { cursor: inherit; }\n :host([loaded]) .crop-image { display: block; }\n :host([loaded]) ::slotted([data-loading-slot]), .crop-image { display: none; }\n\n .crop-wrapper {\n position: relative;\n font-size: 0;\n }\n .crop-container {\n user-select: none;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n position: absolute;\n overflow: hidden;\n z-index: 1;\n top: 0;\n width: 100%;\n height: 100%;\n }\n\n :host([rounded]) .crop-box {\n border-radius: 50%;\n box-shadow: 0 0 0 4000px rgba(0, 0, 0, 0.3);\n }\n .crop-box {\n position: absolute;\n border: 1px dashed #fff;\n box-sizing: border-box;\n cursor: move;\n }\n\n :host([rounded]) .crop-outline {\n outline: none;\n }\n .crop-outline {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n outline: 4000px solid rgba(0, 0, 0, .3);\n }\n\n .handle { position: absolute; }\n :host([rounded]) .handle::before { border-radius: 50%; }\n .handle:before {\n position: absolute;\n display: block;\n padding: 4px;\n transform: translate(-50%, -50%);\n content: ' ';\n background: #fff;\n border: 1px solid #767676;\n }\n .ne { top: 0; right: 0; cursor: nesw-resize; }\n .nw { top: 0; left: 0; cursor: nwse-resize; }\n .se { bottom: 0; right: 0; cursor: nwse-resize; }\n .sw { bottom: 0; left: 0; cursor: nesw-resize; }\n</style>\n<slot></slot>\n<div class=\"crop-wrapper\">\n <img width=\"100%\" class=\"crop-image\" alt=\"\">\n <div class=\"crop-container\">\n <div data-crop-box class=\"crop-box\">\n <div class=\"crop-outline\"></div>\n <div data-direction=\"nw\" class=\"handle nw\"></div>\n <div data-direction=\"ne\" class=\"handle ne\"></div>\n <div data-direction=\"sw\" class=\"handle sw\"></div>\n <div data-direction=\"se\" class=\"handle se\"></div>\n </div>\n </div>\n</div>\n`;\n const box = shadowRoot.querySelector('[data-crop-box]');\n if (!(box instanceof HTMLElement))\n return;\n const image = shadowRoot.querySelector('img');\n if (!(image instanceof HTMLImageElement))\n return;\n constructedElements.set(this, { box, image });\n image.addEventListener('load', () => {\n this.loaded = true;\n setInitialPosition(this);\n });\n this.addEventListener('mouseleave', stopUpdate);\n this.addEventListener('touchend', stopUpdate);\n this.addEventListener('mouseup', stopUpdate);\n box.addEventListener('mousedown', startUpdate);\n box.addEventListener('touchstart', startUpdate, { passive: true });\n this.addEventListener('keydown', moveCropArea);\n this.addEventListener('keydown', updateCropArea);\n if (this.src)\n image.src = this.src;\n }\n static get observedAttributes() {\n return ['src'];\n }\n get src() {\n return this.getAttribute('src');\n }\n set src(val) {\n if (val) {\n this.setAttribute('src', val);\n }\n else {\n this.removeAttribute('src');\n }\n }\n get loaded() {\n return this.hasAttribute('loaded');\n }\n set loaded(val) {\n if (val) {\n this.setAttribute('loaded', '');\n }\n else {\n this.removeAttribute('loaded');\n }\n }\n attributeChangedCallback(attribute, oldValue, newValue) {\n const { image } = constructedElements.get(this) || {};\n if (attribute === 'src') {\n this.loaded = false;\n if (image)\n image.src = newValue;\n }\n }\n}\nexport default ImageCropElement;\nif (!window.customElements.get('image-crop')) {\n window.ImageCropElement = ImageCropElement;\n window.customElements.define('image-crop', ImageCropElement);\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","const alternateOrders = {\n 'outside-top': ['outside-bottom', 'outside-right', 'outside-left', 'outside-bottom'],\n 'outside-bottom': ['outside-top', 'outside-right', 'outside-left', 'outside-bottom'],\n 'outside-left': ['outside-right', 'outside-bottom', 'outside-top', 'outside-bottom'],\n 'outside-right': ['outside-left', 'outside-bottom', 'outside-top', 'outside-bottom']\n};\nconst alternateAlignments = {\n start: ['end', 'center'],\n end: ['start', 'center'],\n center: ['end', 'start']\n};\nexport function getAnchoredPosition(floatingElement, anchorElement, settings = {}) {\n const parentElement = getPositionedParent(floatingElement);\n const clippingRect = getClippingRect(parentElement);\n const parentElementStyle = getComputedStyle(parentElement);\n const parentElementRect = parentElement.getBoundingClientRect();\n const [borderTop, borderLeft] = [parentElementStyle.borderTopWidth, parentElementStyle.borderLeftWidth].map(v => parseInt(v, 10) || 0);\n const relativeRect = {\n top: parentElementRect.top + borderTop,\n left: parentElementRect.left + borderLeft\n };\n return pureCalculateAnchoredPosition(clippingRect, relativeRect, floatingElement.getBoundingClientRect(), anchorElement instanceof Element ? anchorElement.getBoundingClientRect() : anchorElement, getDefaultSettings(settings));\n}\nfunction getPositionedParent(element) {\n let parentNode = element.parentNode;\n while (parentNode !== null) {\n if (parentNode instanceof HTMLElement && getComputedStyle(parentNode).position !== 'static') {\n return parentNode;\n }\n parentNode = parentNode.parentNode;\n }\n return document.body;\n}\nfunction getClippingRect(element) {\n let parentNode = element;\n while (parentNode !== null) {\n if (parentNode === document.body) {\n break;\n }\n const parentNodeStyle = getComputedStyle(parentNode);\n if (parentNodeStyle.overflow !== 'visible') {\n break;\n }\n parentNode = parentNode.parentNode;\n }\n const clippingNode = parentNode === document.body || !(parentNode instanceof HTMLElement) ? document.body : parentNode;\n const elemRect = clippingNode.getBoundingClientRect();\n const elemStyle = getComputedStyle(clippingNode);\n const [borderTop, borderLeft, borderRight, borderBottom] = [\n elemStyle.borderTopWidth,\n elemStyle.borderLeftWidth,\n elemStyle.borderRightWidth,\n elemStyle.borderBottomWidth\n ].map(v => parseInt(v, 10) || 0);\n return {\n top: elemRect.top + borderTop,\n left: elemRect.left + borderLeft,\n width: elemRect.width - borderRight - borderLeft,\n height: Math.max(elemRect.height - borderTop - borderBottom, clippingNode === document.body ? window.innerHeight : -Infinity)\n };\n}\nconst positionDefaults = {\n side: 'outside-bottom',\n align: 'start',\n anchorOffset: 4,\n alignmentOffset: 4,\n allowOutOfBounds: false\n};\nfunction getDefaultSettings(settings = {}) {\n var _a, _b, _c, _d, _e;\n const side = (_a = settings.side) !== null && _a !== void 0 ? _a : positionDefaults.side;\n const align = (_b = settings.align) !== null && _b !== void 0 ? _b : positionDefaults.align;\n return {\n side,\n align,\n anchorOffset: (_c = settings.anchorOffset) !== null && _c !== void 0 ? _c : (side === 'inside-center' ? 0 : positionDefaults.anchorOffset),\n alignmentOffset: (_d = settings.alignmentOffset) !== null && _d !== void 0 ? _d : (align !== 'center' && side.startsWith('inside') ? positionDefaults.alignmentOffset : 0),\n allowOutOfBounds: (_e = settings.allowOutOfBounds) !== null && _e !== void 0 ? _e : positionDefaults.allowOutOfBounds\n };\n}\nfunction pureCalculateAnchoredPosition(viewportRect, relativePosition, floatingRect, anchorRect, { side, align, allowOutOfBounds, anchorOffset, alignmentOffset }) {\n const relativeViewportRect = {\n top: viewportRect.top - relativePosition.top,\n left: viewportRect.left - relativePosition.left,\n width: viewportRect.width,\n height: viewportRect.height\n };\n let pos = calculatePosition(floatingRect, anchorRect, side, align, anchorOffset, alignmentOffset);\n let anchorSide = side;\n let anchorAlign = align;\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n if (!allowOutOfBounds) {\n const alternateOrder = alternateOrders[side];\n let positionAttempt = 0;\n if (alternateOrder) {\n let prevSide = side;\n while (positionAttempt < alternateOrder.length &&\n shouldRecalculatePosition(prevSide, pos, relativeViewportRect, floatingRect)) {\n const nextSide = alternateOrder[positionAttempt++];\n prevSide = nextSide;\n pos = calculatePosition(floatingRect, anchorRect, nextSide, align, anchorOffset, alignmentOffset);\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n anchorSide = nextSide;\n }\n }\n const alternateAlignment = alternateAlignments[align];\n let alignmentAttempt = 0;\n if (alternateAlignment) {\n let prevAlign = align;\n while (alignmentAttempt < alternateAlignment.length &&\n shouldRecalculateAlignment(prevAlign, pos, relativeViewportRect, floatingRect)) {\n const nextAlign = alternateAlignment[alignmentAttempt++];\n prevAlign = nextAlign;\n pos = calculatePosition(floatingRect, anchorRect, anchorSide, nextAlign, anchorOffset, alignmentOffset);\n pos.top -= relativePosition.top;\n pos.left -= relativePosition.left;\n anchorAlign = nextAlign;\n }\n }\n if (pos.top < relativeViewportRect.top) {\n pos.top = relativeViewportRect.top;\n }\n if (pos.left < relativeViewportRect.left) {\n pos.left = relativeViewportRect.left;\n }\n if (pos.left + floatingRect.width > viewportRect.width + relativeViewportRect.left) {\n pos.left = viewportRect.width + relativeViewportRect.left - floatingRect.width;\n }\n if (alternateOrder && positionAttempt < alternateOrder.length) {\n if (pos.top + floatingRect.height > viewportRect.height + relativeViewportRect.top) {\n pos.top = viewportRect.height + relativeViewportRect.top - floatingRect.height;\n }\n }\n }\n return Object.assign(Object.assign({}, pos), { anchorSide, anchorAlign });\n}\nfunction calculatePosition(elementDimensions, anchorPosition, side, align, anchorOffset, alignmentOffset) {\n const anchorRight = anchorPosition.left + anchorPosition.width;\n const anchorBottom = anchorPosition.top + anchorPosition.height;\n let top = -1;\n let left = -1;\n if (side === 'outside-top') {\n top = anchorPosition.top - anchorOffset - elementDimensions.height;\n }\n else if (side === 'outside-bottom') {\n top = anchorBottom + anchorOffset;\n }\n else if (side === 'outside-left') {\n left = anchorPosition.left - anchorOffset - elementDimensions.width;\n }\n else if (side === 'outside-right') {\n left = anchorRight + anchorOffset;\n }\n if (side === 'outside-top' || side === 'outside-bottom') {\n if (align === 'start') {\n left = anchorPosition.left + alignmentOffset;\n }\n else if (align === 'center') {\n left = anchorPosition.left - (elementDimensions.width - anchorPosition.width) / 2 + alignmentOffset;\n }\n else {\n left = anchorRight - elementDimensions.width - alignmentOffset;\n }\n }\n if (side === 'outside-left' || side === 'outside-right') {\n if (align === 'start') {\n top = anchorPosition.top + alignmentOffset;\n }\n else if (align === 'center') {\n top = anchorPosition.top - (elementDimensions.height - anchorPosition.height) / 2 + alignmentOffset;\n }\n else {\n top = anchorBottom - elementDimensions.height - alignmentOffset;\n }\n }\n if (side === 'inside-top') {\n top = anchorPosition.top + anchorOffset;\n }\n else if (side === 'inside-bottom') {\n top = anchorBottom - anchorOffset - elementDimensions.height;\n }\n else if (side === 'inside-left') {\n left = anchorPosition.left + anchorOffset;\n }\n else if (side === 'inside-right') {\n left = anchorRight - anchorOffset - elementDimensions.width;\n }\n else if (side === 'inside-center') {\n left = (anchorRight + anchorPosition.left) / 2 - elementDimensions.width / 2 + anchorOffset;\n }\n if (side === 'inside-top' || side === 'inside-bottom') {\n if (align === 'start') {\n left = anchorPosition.left + alignmentOffset;\n }\n else if (align === 'center') {\n left = anchorPosition.left - (elementDimensions.width - anchorPosition.width) / 2 + alignmentOffset;\n }\n else {\n left = anchorRight - elementDimensions.width - alignmentOffset;\n }\n }\n else if (side === 'inside-left' || side === 'inside-right' || side === 'inside-center') {\n if (align === 'start') {\n top = anchorPosition.top + alignmentOffset;\n }\n else if (align === 'center') {\n top = anchorPosition.top - (elementDimensions.height - anchorPosition.height) / 2 + alignmentOffset;\n }\n else {\n top = anchorBottom - elementDimensions.height - alignmentOffset;\n }\n }\n return { top, left };\n}\nfunction shouldRecalculatePosition(side, currentPos, containerDimensions, elementDimensions) {\n if (side === 'outside-top' || side === 'outside-bottom') {\n return (currentPos.top < containerDimensions.top ||\n currentPos.top + elementDimensions.height > containerDimensions.height + containerDimensions.top);\n }\n else {\n return (currentPos.left < containerDimensions.left ||\n currentPos.left + elementDimensions.width > containerDimensions.width + containerDimensions.left);\n }\n}\nfunction shouldRecalculateAlignment(align, currentPos, containerDimensions, elementDimensions) {\n if (align === 'end') {\n return currentPos.left < containerDimensions.left;\n }\n else if (align === 'start' || align === 'center') {\n return (currentPos.left + elementDimensions.width > containerDimensions.left + containerDimensions.width ||\n currentPos.left < containerDimensions.left);\n }\n}\n","export function* iterateFocusableElements(container, options = {}) {\n var _a, _b;\n const strict = (_a = options.strict) !== null && _a !== void 0 ? _a : false;\n const acceptFn = ((_b = options.onlyTabbable) !== null && _b !== void 0 ? _b : false) ? isTabbable : isFocusable;\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: node => node instanceof HTMLElement && acceptFn(node, strict) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP\n });\n let nextNode = null;\n if (!options.reverse && acceptFn(container, strict)) {\n yield container;\n }\n if (options.reverse) {\n let lastChild = walker.lastChild();\n while (lastChild) {\n nextNode = lastChild;\n lastChild = walker.lastChild();\n }\n }\n else {\n nextNode = walker.firstChild();\n }\n while (nextNode instanceof HTMLElement) {\n yield nextNode;\n nextNode = options.reverse ? walker.previousNode() : walker.nextNode();\n }\n if (options.reverse && acceptFn(container, strict)) {\n yield container;\n }\n return undefined;\n}\nexport function getFocusableChild(container, lastChild = false) {\n return iterateFocusableElements(container, { reverse: lastChild, strict: true, onlyTabbable: true }).next().value;\n}\nexport function isFocusable(elem, strict = false) {\n const disabledAttrInert = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA', 'OPTGROUP', 'OPTION', 'FIELDSET'].includes(elem.tagName) &&\n elem.disabled;\n const hiddenInert = elem.hidden;\n const hiddenInputInert = elem instanceof HTMLInputElement && elem.type === 'hidden';\n const sentinelInert = elem.classList.contains('sentinel');\n if (disabledAttrInert || hiddenInert || hiddenInputInert || sentinelInert) {\n return false;\n }\n if (strict) {\n const sizeInert = elem.offsetWidth === 0 || elem.offsetHeight === 0;\n const visibilityInert = ['hidden', 'collapse'].includes(getComputedStyle(elem).visibility);\n const clientRectsInert = elem.getClientRects().length === 0;\n if (sizeInert || visibilityInert || clientRectsInert) {\n return false;\n }\n }\n if (elem.getAttribute('tabindex') != null) {\n return true;\n }\n if (elem instanceof HTMLAnchorElement && elem.getAttribute('href') == null) {\n return false;\n }\n return elem.tabIndex !== -1;\n}\nexport function isTabbable(elem, strict = false) {\n return isFocusable(elem, strict) && elem.getAttribute('tabindex') !== '-1';\n}\n","let signalSupported = false;\nfunction noop() { }\ntry {\n const options = Object.create({}, {\n signal: {\n get() {\n signalSupported = true;\n }\n }\n });\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop, options);\n}\ncatch (e) {\n}\nfunction featureSupported() {\n return signalSupported;\n}\nfunction monkeyPatch() {\n if (typeof window === 'undefined') {\n return;\n }\n const originalAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function (name, originalCallback, optionsOrCapture) {\n if (typeof optionsOrCapture === 'object' &&\n 'signal' in optionsOrCapture &&\n optionsOrCapture.signal instanceof AbortSignal) {\n originalAddEventListener.call(optionsOrCapture.signal, 'abort', () => {\n this.removeEventListener(name, originalCallback, optionsOrCapture);\n });\n }\n return originalAddEventListener.call(this, name, originalCallback, optionsOrCapture);\n };\n}\nexport function polyfill() {\n if (!featureSupported()) {\n monkeyPatch();\n signalSupported = true;\n }\n}\n","import { getFocusableChild, isTabbable } from './utils/iterate-focusable-elements.js';\nimport { polyfill as eventListenerSignalPolyfill } from './polyfills/event-listener-signal.js';\neventListenerSignalPolyfill();\nconst suspendedTrapStack = [];\nlet activeTrap = undefined;\nfunction tryReactivate() {\n const trapToReactivate = suspendedTrapStack.pop();\n if (trapToReactivate) {\n focusTrap(trapToReactivate.container, trapToReactivate.initialFocus, trapToReactivate.originalSignal);\n }\n}\nfunction followSignal(signal) {\n const controller = new AbortController();\n signal.addEventListener('abort', () => {\n controller.abort();\n });\n return controller;\n}\nexport function focusTrap(container, initialFocus, abortSignal) {\n const controller = new AbortController();\n const signal = abortSignal !== null && abortSignal !== void 0 ? abortSignal : controller.signal;\n container.setAttribute('data-focus-trap', 'active');\n const sentinelStart = document.createElement('span');\n sentinelStart.setAttribute('class', 'sentinel');\n sentinelStart.setAttribute('tabindex', '0');\n sentinelStart.setAttribute('aria-hidden', 'true');\n sentinelStart.onfocus = () => {\n const lastFocusableChild = getFocusableChild(container, true);\n lastFocusableChild === null || lastFocusableChild === void 0 ? void 0 : lastFocusableChild.focus();\n };\n const sentinelEnd = document.createElement('span');\n sentinelEnd.setAttribute('class', 'sentinel');\n sentinelEnd.setAttribute('tabindex', '0');\n sentinelEnd.setAttribute('aria-hidden', 'true');\n sentinelEnd.onfocus = () => {\n const firstFocusableChild = getFocusableChild(container);\n firstFocusableChild === null || firstFocusableChild === void 0 ? void 0 : firstFocusableChild.focus();\n };\n container.prepend(sentinelStart);\n container.append(sentinelEnd);\n let lastFocusedChild = undefined;\n function ensureTrapZoneHasFocus(focusedElement) {\n if (focusedElement instanceof HTMLElement && document.contains(container)) {\n if (container.contains(focusedElement)) {\n lastFocusedChild = focusedElement;\n return;\n }\n else {\n if (lastFocusedChild && isTabbable(lastFocusedChild) && container.contains(lastFocusedChild)) {\n lastFocusedChild.focus();\n return;\n }\n else if (initialFocus && container.contains(initialFocus)) {\n initialFocus.focus();\n return;\n }\n else {\n const firstFocusableChild = getFocusableChild(container);\n firstFocusableChild === null || firstFocusableChild === void 0 ? void 0 : firstFocusableChild.focus();\n return;\n }\n }\n }\n }\n const wrappingController = followSignal(signal);\n if (activeTrap) {\n const suspendedTrap = activeTrap;\n activeTrap.container.setAttribute('data-focus-trap', 'suspended');\n activeTrap.controller.abort();\n suspendedTrapStack.push(suspendedTrap);\n }\n wrappingController.signal.addEventListener('abort', () => {\n activeTrap = undefined;\n });\n signal.addEventListener('abort', () => {\n container.removeAttribute('data-focus-trap');\n const sentinels = container.getElementsByClassName('sentinel');\n while (sentinels.length > 0)\n sentinels[0].remove();\n const suspendedTrapIndex = suspendedTrapStack.findIndex(t => t.container === container);\n if (suspendedTrapIndex >= 0) {\n suspendedTrapStack.splice(suspendedTrapIndex, 1);\n }\n tryReactivate();\n });\n document.addEventListener('focus', event => {\n ensureTrapZoneHasFocus(event.target);\n }, { signal: wrappingController.signal, capture: true });\n ensureTrapZoneHasFocus(document.activeElement);\n activeTrap = {\n container,\n controller: wrappingController,\n initialFocus,\n originalSignal: signal\n };\n const suspendedTrapIndex = suspendedTrapStack.findIndex(t => t.container === container);\n if (suspendedTrapIndex >= 0) {\n suspendedTrapStack.splice(suspendedTrapIndex, 1);\n }\n if (!abortSignal) {\n return controller;\n }\n}\n","import {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 if (!button) return\n\n // If the user is clicking a valid dialog trigger\n let dialogId = button?.getAttribute('data-show-dialog-id')\n if (dialogId) {\n event.stopPropagation()\n const dialog = document.getElementById(dialogId)\n if (dialog instanceof ModalDialogElement) {\n dialog.openButton = button\n dialog.show()\n return\n }\n }\n // Find the top level dialog that is open.\n const topLevelDialog = overlayStack[overlayStack.length - 1]\n if (!topLevelDialog) return\n\n dialogId = button.getAttribute('data-close-dialog-id')\n if (dialogId === topLevelDialog.id) {\n overlayStack.pop()\n topLevelDialog.close()\n }\n\n dialogId = button.getAttribute('data-submit-dialog-id')\n if (dialogId === topLevelDialog.id) {\n overlayStack.pop()\n topLevelDialog.close(true)\n }\n}\n\nfunction mousedownHandler(event: Event) {\n const target = event.target as HTMLElement\n if (target?.closest('button')) return\n\n // Find the top level dialog that is open.\n const topLevelDialog = overlayStack[overlayStack.length - 1]\n if (!topLevelDialog) return\n\n // Check if the mousedown happened outside the boundary of the top level dialog\n const mouseDownOutsideDialog = !target.closest(`#${topLevelDialog.getAttribute('id')}`)\n\n // Only close dialog if it's a click outside the dialog and the dialog has a button?\n if (mouseDownOutsideDialog) {\n target.ownerDocument.addEventListener(\n 'mouseup',\n (upEvent: Event) => {\n if (upEvent.target === target) {\n overlayStack.pop()\n topLevelDialog.close()\n }\n },\n {once: true}\n )\n }\n}\n\nexport class ModalDialogElement extends HTMLElement {\n //TODO: Do we remove the abortController from focusTrap?\n #focusAbortController = new AbortController()\n openButton: HTMLButtonElement | null\n\n get open() {\n return this.hasAttribute('open')\n }\n set open(value: boolean) {\n if (value) {\n if (this.open) return\n this.setAttribute('open', '')\n this.#overlayBackdrop?.classList.remove('Overlay--hidden')\n document.body.style.paddingRight = `${window.innerWidth - document.body.clientWidth}px`\n document.body.style.overflow = 'hidden'\n if (this.#focusAbortController.signal.aborted) {\n this.#focusAbortController = new AbortController()\n }\n focusTrap(this, undefined, this.#focusAbortController.signal)\n overlayStack.push(this)\n } else {\n if (!this.open) return\n this.removeAttribute('open')\n this.#overlayBackdrop?.classList.add('Overlay--hidden')\n document.body.style.paddingRight = '0'\n document.body.style.overflow = 'initial'\n this.#focusAbortController.abort()\n // if #openButton is a child of a menu, we need to focus a suitable child of the menu\n // element since it is expected for the menu to close on click\n const menu = this.openButton?.closest('details') || this.openButton?.closest('action-menu')\n if (menu) {\n focusIfNeeded(getFocusableChild(menu))\n } else {\n focusIfNeeded(this.openButton)\n }\n this.openButton = null\n }\n }\n\n get #overlayBackdrop(): HTMLElement | null {\n if (this.parentElement?.hasAttribute('data-modal-dialog-overlay')) {\n return this.parentElement\n }\n\n return null\n }\n\n get showButtons(): NodeList {\n // Dialogs may also be opened from any arbitrary button with a matching show-dialog-id data attribute\n return document.querySelectorAll(`button[data-show-dialog-id='${this.id}']`)\n }\n\n connectedCallback(): void {\n if (!this.hasAttribute('role')) this.setAttribute('role', 'dialog')\n\n document.addEventListener('click', clickHandler)\n document.addEventListener('mousedown', mousedownHandler)\n\n this.addEventListener('keydown', e => this.#keydown(e))\n }\n\n show() {\n this.open = true\n }\n\n close(closedNotCancelled = false) {\n if (this.open === false) return\n const eventType = closedNotCancelled ? 'close' : 'cancel'\n const dialogEvent = new Event(eventType)\n this.dispatchEvent(dialogEvent)\n this.open = false\n }\n\n #keydown(event: Event) {\n if (!(event instanceof KeyboardEvent)) return\n if (event.isComposing) return\n\n switch (event.key) {\n case 'Escape':\n if (this.open) {\n this.close()\n event.preventDefault()\n event.stopPropagation()\n }\n break\n }\n }\n}\n\ndeclare global {\n interface Window {\n ModalDialogElement: typeof ModalDialogElement\n }\n interface HTMLElementTagNameMap {\n 'modal-dialog': ModalDialogElement\n }\n}\n\nif (!window.customElements.get('modal-dialog')) {\n window.ModalDialogElement = ModalDialogElement\n window.customElements.define('modal-dialog', ModalDialogElement)\n}\n","const controllers = new WeakSet();\n/*\n * Bind `[data-action]` elements from the DOM to their actions.\n *\n */\nexport function bind(controller) {\n controllers.add(controller);\n if (controller.shadowRoot)\n bindShadow(controller.shadowRoot);\n bindElements(controller);\n listenForBind(controller.ownerDocument);\n}\nexport function bindShadow(root) {\n bindElements(root);\n listenForBind(root);\n}\nconst observers = new WeakMap();\n/**\n * Set up observer that will make sure any actions that are dynamically\n * injected into `el` will be bound to it's controller.\n *\n * This returns a Subscription object which you can call `unsubscribe()` on to\n * stop further live updates.\n */\nexport function listenForBind(el = document) {\n if (observers.has(el))\n return observers.get(el);\n let closed = false;\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.target instanceof Element) {\n bindActions(mutation.target);\n }\n else if (mutation.type === 'childList' && mutation.addedNodes.length) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element) {\n bindElements(node);\n }\n }\n }\n }\n });\n observer.observe(el, { childList: true, subtree: true, attributeFilter: ['data-action'] });\n const subscription = {\n get closed() {\n return closed;\n },\n unsubscribe() {\n closed = true;\n observers.delete(el);\n observer.disconnect();\n }\n };\n observers.set(el, subscription);\n return subscription;\n}\nfunction bindElements(root) {\n for (const el of root.querySelectorAll('[data-action]')) {\n bindActions(el);\n }\n // Also bind the controller to itself\n if (root instanceof Element && root.hasAttribute('data-action')) {\n bindActions(root);\n }\n}\n// Bind a single function to all events to avoid anonymous closure performance penalty.\nfunction handleEvent(event) {\n const el = event.currentTarget;\n for (const binding of bindings(el)) {\n if (event.type === binding.type) {\n const controller = el.closest(binding.tag);\n if (controllers.has(controller) && typeof controller[binding.method] === 'function') {\n controller[binding.method](event);\n }\n const root = el.getRootNode();\n if (root instanceof ShadowRoot && controllers.has(root.host) && root.host.matches(binding.tag)) {\n const shadowController = root.host;\n if (typeof shadowController[binding.method] === 'function') {\n shadowController[binding.method](event);\n }\n }\n }\n }\n}\nfunction* bindings(el) {\n for (const action of (el.getAttribute('data-action') || '').trim().split(/\\s+/)) {\n const eventSep = action.lastIndexOf(':');\n const methodSep = Math.max(0, action.lastIndexOf('#')) || action.length;\n yield {\n type: action.slice(0, eventSep),\n tag: action.slice(eventSep + 1, methodSep),\n method: action.slice(methodSep + 1) || 'handleEvent'\n } || 'handleEvent';\n }\n}\nfunction bindActions(el) {\n for (const binding of bindings(el)) {\n el.addEventListener(binding.type, handleEvent);\n }\n}\n//# sourceMappingURL=bind.js.map","export const dasherize = (str) => String(typeof str === 'symbol' ? str.description : str)\n .replace(/([A-Z]($|[a-z]))/g, '-$1')\n .replace(/--/g, '-')\n .replace(/^-|-$/, '')\n .toLowerCase();\nexport const mustDasherize = (str, type = 'property') => {\n const dashed = dasherize(str);\n if (!dashed.includes('-')) {\n throw new DOMException(`${type}: ${String(str)} is not a valid ${type} name`, 'SyntaxError');\n }\n return dashed;\n};\n//# sourceMappingURL=dasherize.js.map","import { mustDasherize } from './dasherize.js';\nimport { meta } from './core.js';\nconst attrKey = 'attr';\n/**\n * Attr is a decorator which tags a property as one to be initialized via\n * `initializeAttrs`.\n *\n * The signature is typed such that the property must be one of a String,\n * Number or Boolean. This matches the behavior of `initializeAttrs`.\n */\nexport function attr(proto, key) {\n meta(proto, attrKey).add(key);\n}\n/**\n * initializeAttrs is called with a set of class property names (if omitted, it\n * will look for any properties tagged with the `@attr` decorator). With this\n * list it defines property descriptors for each property that map to `data-*`\n * attributes on the HTMLElement instance.\n *\n * It works around Native Class Property semantics - which are equivalent to\n * calling `Object.defineProperty` on the instance upon creation, but before\n * `constructor()` is called.\n *\n * If a class property is assigned to the class body, it will infer the type\n * (using `typeof`) and define an appropriate getter/setter combo that aligns\n * to that type. This means class properties assigned to Numbers can only ever\n * be Numbers, assigned to Booleans can only ever be Booleans, and assigned to\n * Strings can only ever be Strings.\n *\n * This is automatically called as part of `@controller`. If a class uses the\n * `@controller` decorator it should not call this manually.\n */\nconst initialized = new WeakSet();\nexport function initializeAttrs(instance, names) {\n if (initialized.has(instance))\n return;\n initialized.add(instance);\n const proto = Object.getPrototypeOf(instance);\n const prefix = proto?.constructor?.attrPrefix ?? 'data-';\n if (!names)\n names = meta(proto, attrKey);\n for (const key of names) {\n const value = instance[key];\n const name = mustDasherize(`${prefix}${key}`);\n let descriptor = {\n configurable: true,\n get() {\n return this.getAttribute(name) || '';\n },\n set(newValue) {\n this.setAttribute(name, newValue || '');\n }\n };\n if (typeof value === 'number') {\n descriptor = {\n configurable: true,\n get() {\n return Number(this.getAttribute(name) || 0);\n },\n set(newValue) {\n this.setAttribute(name, newValue);\n }\n };\n }\n else if (typeof value === 'boolean') {\n descriptor = {\n configurable: true,\n get() {\n return this.hasAttribute(name);\n },\n set(newValue) {\n this.toggleAttribute(name, newValue);\n }\n };\n }\n Object.defineProperty(instance, key, descriptor);\n if (key in instance && !instance.hasAttribute(name)) {\n descriptor.set.call(instance, value);\n }\n }\n}\nexport function defineObservedAttributes(classObject) {\n let observed = classObject.observedAttributes || [];\n const prefix = classObject.attrPrefix ?? 'data-';\n const attrToAttributeName = (name) => mustDasherize(`${prefix}${name}`);\n Object.defineProperty(classObject, 'observedAttributes', {\n configurable: true,\n get() {\n return [...meta(classObject.prototype, attrKey)].map(attrToAttributeName).concat(observed);\n },\n set(attributes) {\n observed = attributes;\n }\n });\n}\n//# sourceMappingURL=attr.js.map","import { register } from './register.js';\nimport { bind, bindShadow } from './bind.js';\nimport { autoShadowRoot } from './auto-shadow-root.js';\nimport { defineObservedAttributes, initializeAttrs } from './attr.js';\nconst symbol = Symbol.for('catalyst');\nexport class CatalystDelegate {\n constructor(classObject) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const delegate = this;\n const connectedCallback = classObject.prototype.connectedCallback;\n classObject.prototype.connectedCallback = function () {\n delegate.connectedCallback(this, connectedCallback);\n };\n const disconnectedCallback = classObject.prototype.disconnectedCallback;\n classObject.prototype.disconnectedCallback = function () {\n delegate.disconnectedCallback(this, disconnectedCallback);\n };\n const attributeChangedCallback = classObject.prototype.attributeChangedCallback;\n classObject.prototype.attributeChangedCallback = function (name, oldValue, newValue) {\n delegate.attributeChangedCallback(this, name, oldValue, newValue, attributeChangedCallback);\n };\n let observedAttributes = classObject.observedAttributes || [];\n Object.defineProperty(classObject, 'observedAttributes', {\n configurable: true,\n get() {\n return delegate.observedAttributes(this, observedAttributes);\n },\n set(attributes) {\n observedAttributes = attributes;\n }\n });\n defineObservedAttributes(classObject);\n register(classObject);\n }\n observedAttributes(instance, observedAttributes) {\n return observedAttributes;\n }\n connectedCallback(instance, connectedCallback) {\n instance.toggleAttribute('data-catalyst', true);\n customElements.upgrade(instance);\n autoShadowRoot(instance);\n initializeAttrs(instance);\n bind(instance);\n connectedCallback?.call(instance);\n if (instance.shadowRoot)\n bindShadow(instance.shadowRoot);\n }\n disconnectedCallback(element, disconnectedCallback) {\n disconnectedCallback?.call(element);\n }\n attributeChangedCallback(instance, name, oldValue, newValue, attributeChangedCallback) {\n initializeAttrs(instance);\n if (name !== 'data-catalyst' && attributeChangedCallback) {\n attributeChangedCallback.call(instance, name, oldValue, newValue);\n }\n }\n}\nexport function meta(proto, name) {\n if (!Object.prototype.hasOwnProperty.call(proto, symbol)) {\n const parent = proto[symbol];\n const map = (proto[symbol] = new Map());\n if (parent) {\n for (const [key, value] of parent) {\n map.set(key, new Set(value));\n }\n }\n }\n const map = proto[symbol];\n if (!map.has(name))\n map.set(name, new Set());\n return map.get(name);\n}\n//# sourceMappingURL=core.js.map","import { dasherize } from './dasherize.js';\n/**\n * Register the controller as a custom element.\n *\n * The classname is converted to a approriate tag name.\n *\n * Example: HelloController => hello-controller\n */\nexport function register(classObject) {\n const name = dasherize(classObject.name).replace(/-element$/, '');\n try {\n window.customElements.define(name, classObject);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n window[classObject.name] = customElements.get(name);\n }\n catch (e) {\n // The only reason for window.customElements.define to throw a `NotSupportedError`\n // is if the element has already been defined.\n if (!(e instanceof DOMException && e.name === 'NotSupportedError'))\n throw e;\n }\n return classObject;\n}\n//# sourceMappingURL=register.js.map","export function autoShadowRoot(element) {\n for (const template of element.querySelectorAll('template[data-shadowroot]')) {\n if (template.parentElement === element) {\n element\n .attachShadow({\n mode: template.getAttribute('data-shadowroot') === 'closed' ? 'closed' : 'open'\n })\n .append(template.content.cloneNode(true));\n }\n }\n}\n//# sourceMappingURL=auto-shadow-root.js.map","import { findTarget, findTargets } from './findtarget.js';\nimport { meta } from './core.js';\n/**\n * Target is a decorator which - when assigned to a property field on the\n * class - will override that class field, turning it into a Getter which\n * returns a call to `findTarget(this, key)` where `key` is the name of the\n * property field. In other words, `@target foo` becomes a getter for\n * `findTarget(this, 'foo')`.\n */\nexport function target(proto, key) {\n meta(proto, 'target').add(key);\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n return findTarget(this, key);\n }\n });\n}\n/**\n * Targets is a decorator which - when assigned to a property field on the\n * class - will override that class field, turning it into a Getter which\n * returns a call to `findTargets(this, key)` where `key` is the name of the\n * property field. In other words, `@targets foo` becomes a getter for\n * `findTargets(this, 'foo')`.\n */\nexport function targets(proto, key) {\n meta(proto, 'targets').add(key);\n Object.defineProperty(proto, key, {\n configurable: true,\n get() {\n return findTargets(this, key);\n }\n });\n}\n//# sourceMappingURL=target.js.map","/**\n * findTarget will run `querySelectorAll` against the given controller, plus\n * its shadowRoot, returning any the first child that:\n *\n * - Matches the selector of `[data-target~=\"tag.name\"]` where tag is the\n * tagName of the given HTMLElement, and `name` is the given `name` argument.\n *\n * - Closest ascendant of the element, that matches the tagname of the\n * controller, is the specific instance of the controller itself - in other\n * words it is not nested in other controllers of the same type.\n *\n */\nexport function findTarget(controller, name) {\n const tag = controller.tagName.toLowerCase();\n if (controller.shadowRoot) {\n for (const el of controller.shadowRoot.querySelectorAll(`[data-target~=\"${tag}.${name}\"]`)) {\n if (!el.closest(tag))\n return el;\n }\n }\n for (const el of controller.querySelectorAll(`[data-target~=\"${tag}.${name}\"]`)) {\n if (el.closest(tag) === controller)\n return el;\n }\n}\nexport function findTargets(controller, name) {\n const tag = controller.tagName.toLowerCase();\n const targets = [];\n if (controller.shadowRoot) {\n for (const el of controller.shadowRoot.querySelectorAll(`[data-targets~=\"${tag}.${name}\"]`)) {\n if (!el.closest(tag))\n targets.push(el);\n }\n }\n for (const el of controller.querySelectorAll(`[data-targets~=\"${tag}.${name}\"]`)) {\n if (el.closest(tag) === controller)\n targets.push(el);\n }\n return targets;\n}\n//# sourceMappingURL=findtarget.js.map","import { CatalystDelegate } from './core.js';\n/**\n * Controller is a decorator to be used over a class that extends HTMLElement.\n * It will automatically `register()` the component in the customElement\n * registry, as well as ensuring `bind(this)` is called on `connectedCallback`,\n * wrapping the classes `connectedCallback` method if needed.\n */\nexport function controller(classObject) {\n new CatalystDelegate(classObject);\n}\n//# sourceMappingURL=controller.js.map","const dynamicElements = new Map();\nconst ready = new Promise(resolve => {\n if (document.readyState !== 'loading') {\n resolve();\n }\n else {\n document.addEventListener('readystatechange', () => resolve(), { once: true });\n }\n});\nconst firstInteraction = new Promise(resolve => {\n const controller = new AbortController();\n controller.signal.addEventListener('abort', () => resolve());\n const listenerOptions = { once: true, passive: true, signal: controller.signal };\n const handler = () => controller.abort();\n document.addEventListener('mousedown', handler, listenerOptions);\n // eslint-disable-next-line github/require-passive-events\n document.addEventListener('touchstart', handler, listenerOptions);\n document.addEventListener('keydown', handler, listenerOptions);\n document.addEventListener('pointerdown', handler, listenerOptions);\n});\nconst visible = (tagName) => new Promise(resolve => {\n const observer = new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n resolve();\n observer.disconnect();\n return;\n }\n }\n }, {\n // Currently the threshold is set to 256px from the bottom of the viewport\n // with a threshold of 0.1. This means the element will not load until about\n // 2 keyboard-down-arrow presses away from being visible in the viewport,\n // giving us some time to fetch it before the contents are made visible\n rootMargin: '0px 0px 256px 0px',\n threshold: 0.01\n });\n for (const el of document.querySelectorAll(tagName)) {\n observer.observe(el);\n }\n});\nconst strategies = {\n ready: () => ready,\n firstInteraction: () => firstInteraction,\n visible\n};\nconst timers = new WeakMap();\nfunction scan(node) {\n cancelAnimationFrame(timers.get(node) || 0);\n timers.set(node, requestAnimationFrame(() => {\n for (const tagName of dynamicElements.keys()) {\n const child = node.matches(tagName) ? node : node.querySelector(tagName);\n if (customElements.get(tagName) || child) {\n const strategyName = (child?.getAttribute('data-load-on') || 'ready');\n const strategy = strategyName in strategies ? strategies[strategyName] : strategies.ready;\n // eslint-disable-next-line github/no-then\n for (const cb of dynamicElements.get(tagName) || [])\n strategy(tagName).then(cb);\n dynamicElements.delete(tagName);\n timers.delete(node);\n }\n }\n }));\n}\nlet elementLoader;\nexport function lazyDefine(tagName, callback) {\n if (!dynamicElements.has(tagName))\n dynamicElements.set(tagName, new Set());\n dynamicElements.get(tagName).add(callback);\n scan(document.body);\n if (!elementLoader) {\n elementLoader = new MutationObserver(mutations => {\n if (!dynamicElements.size)\n return;\n for (const mutation of mutations) {\n for (const node of mutation.addedNodes) {\n if (node instanceof Element)\n scan(node);\n }\n }\n });\n elementLoader.observe(document, { subtree: true, childList: true });\n }\n}\n//# sourceMappingURL=lazy-define.js.map","/* eslint-disable custom-elements/expose-class-on-global */\nimport {controller, target, targets} from '@github/catalyst'\n\n@controller\nclass NavListElement extends HTMLElement {\n @target list: 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 // 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 }\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<HTMLButtonElement>('button')\n if (!button) return\n if (this.itemIsExpanded(button)) {\n this.collapseItem(button)\n } else {\n this.expandItem(button)\n }\n\n e.stopPropagation()\n }\n\n private async showMore(e: Event) {\n e.preventDefault()\n if (this.showMoreDisabled) return\n this.showMoreDisabled = true\n let html\n try {\n const paginationURL = new URL(this.paginationSrc, window.location.origin)\n this.currentPage++\n paginationURL.searchParams.append('page', this.currentPage.toString())\n const response = await fetch(paginationURL)\n if (!response.ok) return\n html = await response.text()\n if (this.currentPage === this.totalPages) {\n this.showMoreItem.hidden = true\n }\n } catch (err) {\n // Ignore network errors\n this.showMoreDisabled = false\n this.currentPage--\n return\n }\n const fragment = this.parseHTML(document, html)\n fragment?.querySelector('li > a')?.setAttribute('data-targets', 'nav-list.focusMarkers')\n this.list.insertBefore(fragment, this.showMoreItem)\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 private 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\ndeclare global {\n interface Window {\n NavListElement: typeof NavListElement\n }\n}\n","import {controller, targets} from '@github/catalyst'\n\n@controller\nclass SegmentedControlElement extends HTMLElement {\n @targets items: HTMLElement[]\n\n connectedCallback() {\n this.#updateButtonLabels()\n }\n\n select(event: Event) {\n const button = event.currentTarget as HTMLButtonElement\n for (const item of this.items) {\n item.classList.remove('SegmentedControl-item--selected')\n item.querySelector('[aria-current]')?.setAttribute('aria-current', 'false')\n }\n\n button.closest('li.SegmentedControl-item')?.classList.add('SegmentedControl-item--selected')\n button.setAttribute('aria-current', 'true')\n }\n\n // Updates the button labels to have a data-content attribute with the text\n // This is for selection styling to avoid the text jumping. It only needs to be\n // setup when the component is first loaded.\n #updateButtonLabels() {\n for (const label of this.querySelectorAll('.Button-label')) {\n label.setAttribute('data-content', label.textContent || '')\n }\n }\n}\n\ndeclare global {\n interface Window {\n SegmentedControlElement: typeof SegmentedControlElement\n }\n}\n\nif (!window.customElements.get('segmented-control')) {\n window.SegmentedControlElement = SegmentedControlElement\n window.customElements.define('segmented-control', SegmentedControlElement)\n}\n","export function throttle(callback, wait = 0, { start = true, middle = true, once = false } = {}) {\n let last = 0;\n let timer;\n let cancelled = false;\n function fn(...args) {\n if (cancelled)\n return;\n const delta = Date.now() - last;\n last = Date.now();\n if (start) {\n start = false;\n callback.apply(this, args);\n if (once)\n fn.cancel();\n }\n else if ((middle && delta < wait) || !middle) {\n clearTimeout(timer);\n timer = setTimeout(() => {\n last = Date.now();\n callback.apply(this, args);\n if (once)\n fn.cancel();\n }, !middle ? wait : wait - delta);\n }\n }\n fn.cancel = () => {\n clearTimeout(timer);\n cancelled = true;\n };\n return fn;\n}\nexport function debounce(callback, wait = 0, { start = false, middle = false, once = false } = {}) {\n return throttle(callback, wait, { start, middle, once });\n}\n","import {controller, target} from '@github/catalyst'\nimport {debounce} from '@github/mini-throttle/decorators'\n\n@controller\nclass ToggleSwitchElement extends HTMLElement {\n @target switch: HTMLElement\n @target loadingSpinner: HTMLElement\n @target errorIcon: HTMLElement\n\n get src(): string | null {\n const src = this.getAttribute('src')\n if (!src) return null\n\n const link = this.ownerDocument.createElement('a')\n link.href = src\n return link.href\n }\n\n get csrf(): string | null {\n const csrfElement = this.querySelector('[data-csrf]')\n return this.getAttribute('csrf') || (csrfElement instanceof HTMLInputElement && csrfElement.value) || null\n }\n\n get csrfField(): string {\n // the authenticity token is passed into the element and is not generated in js land\n\n return this.getAttribute('csrf-field') || 'authenticity_token'\n }\n\n isRemote(): boolean {\n return this.src != null\n }\n\n toggle() {\n if (this.isDisabled()) {\n return\n }\n\n if (this.isRemote()) {\n this.setLoadingState()\n this.submitForm()\n } else {\n this.performToggle()\n }\n }\n\n turnOn(): void {\n if (this.isDisabled()) {\n return\n }\n\n this.switch.setAttribute('aria-checked', 'true')\n this.classList.add('ToggleSwitch--checked')\n }\n\n turnOff(): void {\n if (this.isDisabled()) {\n return\n }\n\n this.switch.setAttribute('aria-checked', 'false')\n this.classList.remove('ToggleSwitch--checked')\n }\n\n isOn(): boolean {\n return this.switch.getAttribute('aria-checked') === 'true'\n }\n\n isOff(): boolean {\n return !this.isOn()\n }\n\n isDisabled(): boolean {\n return this.switch.getAttribute('aria-disabled') === 'true'\n }\n\n disable(): void {\n this.switch.setAttribute('aria-disabled', 'true')\n }\n\n enable(): void {\n this.switch.setAttribute('aria-disabled', 'false')\n }\n\n private performToggle(): void {\n if (this.isOn()) {\n this.turnOff()\n } else {\n this.turnOn()\n }\n }\n\n private setLoadingState(): void {\n this.disable()\n this.errorIcon.setAttribute('hidden', 'hidden')\n this.loadingSpinner.removeAttribute('hidden')\n }\n\n private setSuccessState(): void {\n const event = new CustomEvent('toggleSwitchSuccess', {bubbles: true})\n this.dispatchEvent(event)\n\n this.setFinishedState(false)\n }\n\n private setErrorState(message: string): void {\n const event = new CustomEvent('toggleSwitchError', {bubbles: true, detail: message})\n this.dispatchEvent(event)\n\n this.setFinishedState(true)\n }\n\n private setFinishedState(error: boolean): void {\n if (error) {\n this.errorIcon.removeAttribute('hidden')\n }\n\n this.loadingSpinner.setAttribute('hidden', 'hidden')\n this.enable()\n }\n\n @debounce(300)\n private async submitForm() {\n const body = new FormData()\n\n if (this.csrf) {\n body.append(this.csrfField, this.csrf)\n }\n\n body.append('value', this.isOn() ? '0' : '1')\n\n try {\n if (!this.src) throw new Error('invalid src')\n\n let response\n\n try {\n response = await fetch(this.src, {\n credentials: 'same-origin',\n method: 'POST',\n headers: {\n 'Requested-With': 'XMLHttpRequest'\n },\n body\n })\n } catch (error) {\n throw new Error('A network error occurred, please try again.')\n }\n\n if (response.ok) {\n this.setSuccessState()\n this.performToggle()\n } else {\n throw new Error(await response.text())\n }\n } catch (error) {\n if (error instanceof Error) {\n this.setErrorState(error.message || 'An error occurred, please try again.')\n }\n }\n }\n}\n\ndeclare global {\n interface Window {\n ToggleSwitchElement: typeof ToggleSwitchElement\n }\n}\n\nif (!window.customElements.get('toggle-switch')) {\n window.ToggleSwitchElement = ToggleSwitchElement\n window.customElements.define('toggle-switch', ToggleSwitchElement)\n}\n","import { debounce as db, throttle as th } from './index';\nexport function throttle(wait = 0, opts = {}) {\n return (proto, name, descriptor) => {\n if (!descriptor || typeof descriptor.value !== 'function') {\n throw new Error('debounce can only decorate functions');\n }\n const fn = descriptor.value;\n descriptor.value = th(fn, wait, opts);\n Object.defineProperty(proto, name, descriptor);\n };\n}\nexport function debounce(wait = 0, opts = {}) {\n return (proto, name, descriptor) => {\n if (!descriptor || typeof descriptor.value !== 'function') {\n throw new Error('debounce can only decorate functions');\n }\n const fn = descriptor.value;\n descriptor.value = db(fn, wait, opts);\n Object.defineProperty(proto, name, descriptor);\n };\n}\n","import type {AnchorAlignment, AnchorSide} from '@primer/behaviors'\nimport {getAnchoredPosition} from '@primer/behaviors'\n\nconst TOOLTIP_OPEN_CLASS = 'tooltip-open'\nconst TOOLTIP_ARROW_EDGE_OFFSET = 6\nconst TOOLTIP_SR_ONLY_CLASS = 'sr-only'\n\ntype Direction = 'n' | 's' | 'e' | 'w' | 'ne' | 'se' | 'nw' | 'sw'\n\nconst DIRECTION_CLASSES = [\n 'tooltip-n',\n 'tooltip-s',\n 'tooltip-e',\n 'tooltip-w',\n 'tooltip-ne',\n 'tooltip-se',\n 'tooltip-nw',\n 'tooltip-sw'\n]\n\nclass ToolTipElement extends HTMLElement {\n styles() {\n return `\n :host {\n position: absolute;\n z-index: 1000000;\n padding: .5em .75em;\n font: normal normal 11px/1.5 -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\";\n -webkit-font-smoothing: subpixel-antialiased;\n color: var(--color-fg-on-emphasis);\n text-align: center;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-wrap: break-word;\n white-space: pre;\n background: var(--color-neutral-emphasis-plus);\n border-radius: 6px;\n opacity: 0;\n max-width: 250px;\n word-wrap: break-word;\n white-space: normal;\n width: max-content;\n }\n\n :host:before{\n position: absolute;\n z-index: 1000001;\n color: var(--color-neutral-emphasis-plus);\n content: \"\";\n border: 6px solid transparent;\n opacity: 0\n }\n\n @keyframes tooltip-appear {\n from {\n opacity: 0\n }\n to {\n opacity: 1\n }\n }\n\n :host:after{\n position: absolute;\n display: block;\n right: 0;\n left: 0;\n height: 12px;\n content: \"\"\n }\n\n :host(.${TOOLTIP_OPEN_CLASS}),\n :host(.${TOOLTIP_OPEN_CLASS}):before {\n animation-name: tooltip-appear;\n animation-duration: .1s;\n animation-fill-mode: forwards;\n animation-timing-function: ease-in;\n animation-delay: .4s\n }\n\n :host(.tooltip-s):before,\n :host(.tooltip-n):before {\n right: 50%;\n margin-right: -${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n\n :host(.tooltip-s):before,\n :host(.tooltip-se):before,\n :host(.tooltip-sw):before {\n bottom: 100%;\n border-bottom-color: var(--color-neutral-emphasis-plus)\n }\n\n :host(.tooltip-s):after,\n :host(.tooltip-se):after,\n :host(.tooltip-sw):after {\n bottom: 100%\n }\n\n :host(.tooltip-n):before,\n :host(.tooltip-ne):before,\n :host(.tooltip-nw):before {\n top: 100%;\n border-top-color: var(--color-neutral-emphasis-plus)\n }\n\n :host(.tooltip-n):after,\n :host(.tooltip-ne):after,\n :host(.tooltip-nw):after {\n top: 100%\n }\n\n :host(.tooltip-se):before,\n :host(.tooltip-ne):before {\n left: 0;\n margin-left: ${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n\n :host(.tooltip-sw):before,\n :host(.tooltip-nw):before {\n right: 0;\n margin-right: ${TOOLTIP_ARROW_EDGE_OFFSET}px;\n }\n\n :host(.tooltip-w):before {\n top: 50%;\n bottom: 50%;\n left: 100%;\n margin-top: -6px;\n border-left-color: var(--color-neutral-emphasis-plus)\n }\n\n :host(.tooltip-e):before {\n top: 50%;\n right: 100%;\n bottom: 50%;\n margin-top: -6px;\n border-right-color: var(--color-neutral-emphasis-plus)\n }\n `\n }\n\n #abortController: AbortController | undefined\n #align: AnchorAlignment = 'center'\n #side: AnchorSide = 'outside-bottom'\n #allowUpdatePosition = false\n\n get htmlFor(): string {\n return this.getAttribute('for') || ''\n }\n\n set htmlFor(value: string) {\n this.setAttribute('for', value)\n }\n\n get type(): 'description' | 'label' {\n const type = this.getAttribute('data-type')\n return type === 'label' ? 'label' : 'description'\n }\n\n set type(value: 'description' | 'label') {\n this.setAttribute('data-type', value)\n }\n\n get direction(): Direction {\n return (this.getAttribute('data-direction') || 's') as Direction\n }\n\n set direction(value: Direction) {\n this.setAttribute('data-direction', value)\n }\n\n get control(): HTMLElement | null {\n return this.ownerDocument.getElementById(this.htmlFor)\n }\n\n set hiddenFromView(value: true | false) {\n this.classList.toggle(TOOLTIP_SR_ONLY_CLASS, value)\n if (this.isConnected) this.#update()\n }\n\n get hiddenFromView() {\n return this.classList.contains(TOOLTIP_SR_ONLY_CLASS)\n }\n\n connectedCallback() {\n this.#updateControlReference()\n this.#updateDirection()\n if (!this.shadowRoot) {\n const shadow = this.attachShadow({mode: 'open'})\n const style = shadow.appendChild(document.createElement('style'))\n style.textContent = this.styles()\n shadow.appendChild(document.createElement('slot'))\n }\n this.hiddenFromView = true\n this.#allowUpdatePosition = true\n\n if (!this.control) return\n\n this.setAttribute('role', 'tooltip')\n\n this.#abortController?.abort()\n this.#abortController = new AbortController()\n const {signal} = this.#abortController\n\n this.addEventListener('mouseleave', this, {signal})\n this.control.addEventListener('mouseenter', this, {signal})\n this.control.addEventListener('mouseleave', this, {signal})\n this.control.addEventListener('focus', this, {signal})\n this.control.addEventListener('blur', this, {signal})\n this.ownerDocument.addEventListener('keydown', this, {signal})\n this.#update()\n }\n\n disconnectedCallback() {\n this.#abortController?.abort()\n }\n\n handleEvent(event: Event) {\n if (!this.control) return\n\n // Ensures that tooltip stays open when hovering between tooltip and element\n // WCAG Success Criterion 1.4.13 Hoverable\n if ((event.type === 'mouseenter' || event.type === 'focus') && this.hiddenFromView) {\n this.hiddenFromView = false\n } else if (event.type === 'blur') {\n this.hiddenFromView = true\n } else if (\n event.type === 'mouseleave' &&\n (event as MouseEvent).relatedTarget !== this.control &&\n (event as MouseEvent).relatedTarget !== this\n ) {\n this.hiddenFromView = true\n } else if (event.type === 'keydown' && (event as KeyboardEvent).key === 'Escape' && !this.hiddenFromView) {\n this.hiddenFromView = true\n }\n }\n\n static observedAttributes = ['data-type', 'data-direction', 'id']\n\n #update() {\n if (this.hiddenFromView) {\n this.classList.remove(TOOLTIP_OPEN_CLASS, ...DIRECTION_CLASSES)\n } else {\n this.classList.add(TOOLTIP_OPEN_CLASS)\n for (const tooltip of this.ownerDocument.querySelectorAll<ToolTipElement>(this.tagName)) {\n if (tooltip !== this) tooltip.hiddenFromView = true\n }\n this.#updatePosition()\n }\n }\n\n attributeChangedCallback(name: string) {\n if (!this.isConnected) return\n\n if (name === 'id' || name === 'data-type') {\n this.#updateControlReference()\n } else if (name === 'data-direction') {\n this.#updateDirection()\n }\n }\n\n #updateControlReference() {\n if (!this.id || !this.control) return\n if (this.type === 'label') {\n let labelledBy = this.control.getAttribute('aria-labelledby')\n if (labelledBy) {\n if (!labelledBy.split(' ').includes(this.id)) {\n labelledBy = `${labelledBy} ${this.id}`\n } else {\n labelledBy = `${labelledBy}`\n }\n } else {\n labelledBy = this.id\n }\n this.control.setAttribute('aria-labelledby', labelledBy)\n\n // Prevent duplicate accessible name announcements.\n this.setAttribute('aria-hidden', 'true')\n } else {\n let describedBy = this.control.getAttribute('aria-describedby')\n if (describedBy) {\n if (!describedBy.split(' ').includes(this.id)) {\n describedBy = `${describedBy} ${this.id}`\n } else {\n describedBy = `${describedBy}`\n }\n } else {\n describedBy = this.id\n }\n this.control.setAttribute('aria-describedby', describedBy)\n }\n }\n\n #updateDirection() {\n this.classList.remove(...DIRECTION_CLASSES)\n const direction = this.direction\n if (direction === 'n') {\n this.#align = 'center'\n this.#side = 'outside-top'\n } else if (direction === 'ne') {\n this.#align = 'start'\n this.#side = 'outside-top'\n } else if (direction === 'e') {\n this.#align = 'center'\n this.#side = 'outside-right'\n } else if (direction === 'se') {\n this.#align = 'start'\n this.#side = 'outside-bottom'\n } else if (direction === 's') {\n this.#align = 'center'\n this.#side = 'outside-bottom'\n } else if (direction === 'sw') {\n this.#align = 'end'\n this.#side = 'outside-bottom'\n } else if (direction === 'w') {\n this.#align = 'center'\n this.#side = 'outside-left'\n } else if (direction === 'nw') {\n this.#align = 'end'\n this.#side = 'outside-top'\n }\n }\n\n #updatePosition() {\n if (!this.control) return\n if (!this.#allowUpdatePosition || this.hiddenFromView) return\n\n const TOOLTIP_OFFSET = 10\n\n this.style.left = `0px` // Ensures we have reliable tooltip width in `getAnchoredPosition`\n\n const position = getAnchoredPosition(this, this.control, {\n side: this.#side,\n align: this.#align,\n anchorOffset: TOOLTIP_OFFSET\n })\n const anchorSide = position.anchorSide\n const align = position.anchorAlign\n\n this.style.top = `${position.top}px`\n this.style.left = `${position.left}px`\n\n let direction: Direction = 's'\n\n if (anchorSide === 'outside-left') {\n direction = 'w'\n } else if (anchorSide === 'outside-right') {\n direction = 'e'\n } else if (anchorSide === 'outside-top') {\n if (align === 'center') {\n direction = 'n'\n } else if (align === 'start') {\n direction = 'ne'\n } else {\n direction = 'nw'\n }\n } else {\n if (align === 'center') {\n direction = 's'\n } else if (align === 'start') {\n direction = 'se'\n } else {\n direction = 'sw'\n }\n }\n\n this.classList.add(`tooltip-${direction}`)\n }\n}\n\nif (!window.customElements.get('tool-tip')) {\n window.ToolTipElement = ToolTipElement\n window.customElements.define('tool-tip', ToolTipElement)\n}\n\ndeclare global {\n interface Window {\n ToolTipElement: typeof ToolTipElement\n }\n}\n","import {controller, target} from '@github/catalyst'\n\n@controller\nclass XBannerElement extends HTMLElement {\n @target titleText: HTMLElement\n\n dismiss() {\n if (this.shouldReappear()) {\n this.style.setProperty('visibility', 'hidden')\n\n setTimeout(() => {\n this.style.setProperty('visibility', 'visible')\n }, 2000)\n\n return\n }\n\n const parentElement = this.parentElement\n if (!parentElement) return\n\n parentElement.removeChild(this)\n }\n\n private shouldReappear(): boolean {\n return this.getAttribute('data-reappear') === 'true'\n }\n}\n\ndeclare global {\n interface Window {\n XBannerElement: typeof XBannerElement\n }\n}\n\nif (!window.customElements.get('x-banner')) {\n window.XBannerElement = XBannerElement\n window.customElements.define('x-banner', XBannerElement)\n}\n","const ctrlBindings = !!navigator.userAgent.match(/Macintosh/);\nexport default class Combobox {\n constructor(input, list) {\n this.input = input;\n this.list = list;\n this.isComposing = false;\n if (!list.id) {\n list.id = `combobox-${Math.random()\n .toString()\n .slice(2, 6)}`;\n }\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 }\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 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 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.setAttribute('aria-selected', 'false');\n }\n }\n }\n clearSelection() {\n this.input.removeAttribute('aria-activedescendant');\n for (const el of this.list.querySelectorAll('[aria-selected=\"true\"]')) {\n el.setAttribute('aria-selected', 'false');\n }\n }\n}\nfunction keyboardBindings(event, combobox) {\n if (event.shiftKey || event.metaKey || event.altKey)\n return;\n if (!ctrlBindings && event.ctrlKey)\n return;\n if (combobox.isComposing)\n return;\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n if (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 (ctrlBindings && event.ctrlKey) {\n combobox.navigate(1);\n event.preventDefault();\n }\n break;\n case 'p':\n if (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);\n}\nfunction commit(input, list) {\n const target = list.querySelector('[aria-selected=\"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) {\n target.dispatchEvent(new CustomEvent('combobox-commit', { bubbles: true }));\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';\n\nfunction 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\nconst SCREEN_READER_DELAY = window.testScreenReaderDelay || 100;\nclass Autocomplete {\n constructor(container, input, results, autoselectEnabled = false) {\n var _a;\n this.container = container;\n this.input = input;\n this.results = results;\n this.combobox = new Combobox(input, results);\n this.feedback = document.getElementById(`${this.results.id}-feedback`);\n this.autoselectEnabled = autoselectEnabled;\n this.clearButton = document.getElementById(`${this.input.id || this.input.name}-clear`);\n this.clientOptions = results.querySelectorAll('[role=option]');\n if (this.feedback) {\n this.feedback.setAttribute('aria-live', 'polite');\n this.feedback.setAttribute('aria-atomic', 'true');\n }\n if (this.clearButton && !this.clearButton.getAttribute('aria-label')) {\n const labelElem = document.querySelector(`label[for=\"${this.input.name}\"]`);\n this.clearButton.setAttribute('aria-label', `clear:`);\n this.clearButton.setAttribute('aria-labelledby', `${this.clearButton.id} ${(labelElem === null || labelElem === void 0 ? void 0 : labelElem.id) || ''}`);\n }\n if (!this.input.getAttribute('aria-expanded')) {\n this.input.setAttribute('aria-expanded', 'false');\n }\n this.results.hidden = true;\n this.results.setAttribute('aria-label', 'results');\n this.input.setAttribute('autocomplete', 'off');\n this.input.setAttribute('spellcheck', 'false');\n this.interactingWithList = false;\n this.onInputChange = debounce(this.onInputChange.bind(this), 300);\n this.onResultsMouseDown = this.onResultsMouseDown.bind(this);\n this.onInputBlur = this.onInputBlur.bind(this);\n this.onInputFocus = this.onInputFocus.bind(this);\n this.onKeydown = this.onKeydown.bind(this);\n this.onCommit = this.onCommit.bind(this);\n this.handleClear = this.handleClear.bind(this);\n this.input.addEventListener('keydown', this.onKeydown);\n this.input.addEventListener('focus', this.onInputFocus);\n this.input.addEventListener('blur', this.onInputBlur);\n this.input.addEventListener('input', this.onInputChange);\n this.results.addEventListener('mousedown', this.onResultsMouseDown);\n this.results.addEventListener('combobox-commit', this.onCommit);\n (_a = this.clearButton) === null || _a === void 0 ? void 0 : _a.addEventListener('click', this.handleClear);\n }\n destroy() {\n this.input.removeEventListener('keydown', this.onKeydown);\n this.input.removeEventListener('focus', this.onInputFocus);\n this.input.removeEventListener('blur', this.onInputBlur);\n this.input.removeEventListener('input', this.onInputChange);\n this.results.removeEventListener('mousedown', this.onResultsMouseDown);\n this.results.removeEventListener('combobox-commit', this.onCommit);\n }\n handleClear(event) {\n event.preventDefault();\n if (this.input.getAttribute('aria-expanded') === 'true') {\n this.input.setAttribute('aria-expanded', 'false');\n this.updateFeedbackForScreenReaders('Results hidden.');\n }\n this.input.value = '';\n this.container.value = '';\n this.input.focus();\n this.input.dispatchEvent(new Event('change'));\n this.container.open = false;\n }\n onKeydown(event) {\n if (event.key === 'Enter' && this.container.open && this.autoselectEnabled) {\n const firstOption = this.results.children[0];\n if (firstOption) {\n event.stopPropagation();\n event.preventDefault();\n this.onCommit({ target: firstOption });\n }\n }\n if (event.key === 'Escape' && this.container.open) {\n this.container.open = false;\n event.stopPropagation();\n event.preventDefault();\n }\n else if (event.altKey && event.key === 'ArrowUp' && this.container.open) {\n this.container.open = false;\n event.stopPropagation();\n event.preventDefault();\n }\n else if (event.altKey && event.key === 'ArrowDown' && !this.container.open) {\n if (!this.input.value.trim())\n return;\n this.container.open = true;\n event.stopPropagation();\n event.preventDefault();\n }\n }\n onInputFocus() {\n this.fetchResults();\n }\n onInputBlur() {\n if (this.interactingWithList) {\n this.interactingWithList = false;\n return;\n }\n this.container.open = false;\n }\n onCommit({ target }) {\n const selected = target;\n if (!(selected instanceof HTMLElement))\n return;\n this.container.open = false;\n if (selected instanceof HTMLAnchorElement)\n return;\n const value = selected.getAttribute('data-autocomplete-value') || selected.textContent;\n this.updateFeedbackForScreenReaders(`${selected.textContent || ''} selected.`);\n this.container.value = value;\n if (!value) {\n this.updateFeedbackForScreenReaders(`Results hidden.`);\n }\n }\n onResultsMouseDown() {\n this.interactingWithList = true;\n }\n onInputChange() {\n if (this.feedback && this.feedback.textContent) {\n this.feedback.textContent = '';\n }\n this.container.removeAttribute('value');\n this.fetchResults();\n }\n identifyOptions() {\n let id = 0;\n for (const el of this.results.querySelectorAll('[role=\"option\"]:not([id])')) {\n el.id = `${this.results.id}-option-${id++}`;\n }\n }\n updateFeedbackForScreenReaders(inputString) {\n setTimeout(() => {\n if (this.feedback) {\n this.feedback.textContent = inputString;\n }\n }, SCREEN_READER_DELAY);\n }\n fetchResults() {\n const query = this.input.value.trim();\n if (!query) {\n this.container.open = false;\n return;\n }\n const src = this.container.src;\n if (!src)\n return;\n const url = new URL(src, window.location.href);\n const params = new URLSearchParams(url.search.slice(1));\n params.append('q', query);\n url.search = params.toString();\n this.container.dispatchEvent(new CustomEvent('loadstart'));\n this.container\n .fetchResult(this.input, url.toString())\n .then(html => {\n this.results.innerHTML = html;\n this.identifyOptions();\n const allNewOptions = this.results.querySelectorAll('[role=\"option\"]');\n const hasResults = !!allNewOptions.length;\n const numOptions = allNewOptions.length;\n const [firstOption] = allNewOptions;\n const firstOptionValue = firstOption === null || firstOption === void 0 ? void 0 : firstOption.textContent;\n if (this.autoselectEnabled && firstOptionValue) {\n this.updateFeedbackForScreenReaders(`${numOptions} results. ${firstOptionValue} is the top result: Press Enter to activate.`);\n }\n else {\n this.updateFeedbackForScreenReaders(`${numOptions || 'No'} results.`);\n }\n this.container.open = hasResults;\n this.container.dispatchEvent(new CustomEvent('load'));\n this.container.dispatchEvent(new CustomEvent('loadend'));\n })\n .catch(() => {\n this.container.dispatchEvent(new CustomEvent('error'));\n this.container.dispatchEvent(new CustomEvent('loadend'));\n });\n }\n open() {\n if (!this.results.hidden)\n return;\n this.combobox.start();\n this.results.hidden = false;\n }\n close() {\n if (this.results.hidden)\n return;\n this.combobox.stop();\n this.results.hidden = true;\n }\n}\n\nclass AutocompleteEvent extends CustomEvent {\n constructor(type, init) {\n super(type, init);\n this.relatedTarget = init.relatedTarget;\n }\n}\n\nconst requests = new WeakMap();\nfunction fragment(el, url) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.setRequestHeader('Accept', 'text/fragment+html');\n return request(el, xhr);\n}\nfunction request(el, xhr) {\n const pending = requests.get(el);\n if (pending)\n pending.abort();\n requests.set(el, xhr);\n const clear = () => requests.delete(el);\n const result = send(xhr);\n result.then(clear, clear);\n return result;\n}\nfunction send(xhr) {\n return new Promise((resolve, reject) => {\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText);\n }\n else {\n reject(new Error(xhr.responseText));\n }\n };\n xhr.onerror = reject;\n xhr.send();\n });\n}\n\nconst state = new WeakMap();\nclass AutocompleteElement extends HTMLElement {\n constructor() {\n super(...arguments);\n this.fetchResult = fragment;\n }\n connectedCallback() {\n const listId = this.getAttribute('for');\n if (!listId)\n return;\n const input = this.querySelector('input');\n const results = document.getElementById(listId);\n if (!(input instanceof HTMLInputElement) || !results)\n return;\n const autoselectEnabled = this.getAttribute('data-autoselect') === 'true';\n state.set(this, new Autocomplete(this, input, results, autoselectEnabled));\n results.setAttribute('role', 'listbox');\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 static get observedAttributes() {\n return ['open', 'value'];\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue)\n return;\n const autocomplete = state.get(this);\n if (!autocomplete)\n return;\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}\nif (!window.customElements.get('auto-complete')) {\n window.AutocompleteElement = AutocompleteElement;\n window.customElements.define('auto-complete', AutocompleteElement);\n}\n\nexport { AutocompleteEvent, AutocompleteElement as default };\n","function createNode(text) {\n const node = document.createElement('pre');\n node.style.width = '1px';\n node.style.height = '1px';\n node.style.position = 'fixed';\n node.style.top = '5px';\n node.textContent = text;\n return node;\n}\n\nfunction copyNode(node) {\n if ('clipboard' in navigator) {\n // eslint-disable-next-line flowtype/no-flow-fix-me-comments\n // $FlowFixMe Clipboard is not defined in Flow yet.\n return navigator.clipboard.writeText(node.textContent);\n }\n\n const selection = getSelection();\n\n if (selection == null) {\n return Promise.reject(new Error());\n }\n\n selection.removeAllRanges();\n const range = document.createRange();\n range.selectNodeContents(node);\n selection.addRange(range);\n document.execCommand('copy');\n selection.removeAllRanges();\n return Promise.resolve();\n}\nfunction copyText(text) {\n if ('clipboard' in navigator) {\n // eslint-disable-next-line flowtype/no-flow-fix-me-comments\n // $FlowFixMe Clipboard is not defined in Flow yet.\n return navigator.clipboard.writeText(text);\n }\n\n const body = document.body;\n\n if (!body) {\n return Promise.reject(new Error());\n }\n\n const node = createNode(text);\n body.appendChild(node);\n copyNode(node);\n body.removeChild(node);\n return Promise.resolve();\n}\n\nfunction copy(button) {\n const id = button.getAttribute('for');\n const text = button.getAttribute('value');\n\n function trigger() {\n button.dispatchEvent(new CustomEvent('clipboard-copy', {\n bubbles: true\n }));\n }\n\n if (text) {\n copyText(text).then(trigger);\n } else if (id) {\n const root = 'getRootNode' in Element.prototype ? button.getRootNode() : button.ownerDocument;\n if (!(root instanceof Document || 'ShadowRoot' in window && root instanceof ShadowRoot)) return;\n const node = root.getElementById(id);\n if (node) copyTarget(node).then(trigger);\n }\n}\n\nfunction copyTarget(content) {\n if (content instanceof HTMLInputElement || content instanceof HTMLTextAreaElement) {\n return copyText(content.value);\n } else if (content instanceof HTMLAnchorElement && content.hasAttribute('href')) {\n return copyText(content.href);\n } else {\n return copyNode(content);\n }\n}\n\nfunction clicked(event) {\n const button = event.currentTarget;\n\n if (button instanceof HTMLElement) {\n copy(button);\n }\n}\n\nfunction keydown(event) {\n if (event.key === ' ' || event.key === 'Enter') {\n const button = event.currentTarget;\n\n if (button instanceof HTMLElement) {\n event.preventDefault();\n copy(button);\n }\n }\n}\n\nfunction focused(event) {\n event.currentTarget.addEventListener('keydown', keydown);\n}\n\nfunction blurred(event) {\n event.currentTarget.removeEventListener('keydown', keydown);\n}\n\nclass ClipboardCopyElement extends HTMLElement {\n constructor() {\n super();\n this.addEventListener('click', clicked);\n this.addEventListener('focus', focused);\n this.addEventListener('blur', blurred);\n }\n\n connectedCallback() {\n if (!this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0');\n }\n\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button');\n }\n }\n\n get value() {\n return this.getAttribute('value') || '';\n }\n\n set value(text) {\n this.setAttribute('value', text);\n }\n\n}\n\nif (!window.customElements.get('clipboard-copy')) {\n window.ClipboardCopyElement = ClipboardCopyElement;\n window.customElements.define('clipboard-copy', ClipboardCopyElement);\n}\n\nexport default ClipboardCopyElement;\n","import '@github/clipboard-copy-element'\n\nconst CLIPBOARD_COPY_TIMER_DURATION = 2000\n\nfunction showSVG(svg: SVGElement) {\n svg.style.display = 'inline-block'\n}\n\nfunction hideSVG(svg: SVGElement) {\n svg.style.display = 'none'\n}\n\n// Toggle a copy button.\nfunction showCopy(button: HTMLElement) {\n const [copyIcon, checkIcon] = button.querySelectorAll<SVGElement>('.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<SVGElement>('.octicon')\n\n if (!copyIcon || !checkIcon) return\n\n hideSVG(copyIcon)\n showSVG(checkIcon)\n}\n\nconst clipboardCopyElementTimers = new WeakMap<HTMLElement, number>()\n\ndocument.addEventListener('clipboard-copy', ({target}) => {\n if (!(target instanceof HTMLElement)) return\n if (!target.hasAttribute('data-view-component')) return\n\n const currentTimeout = clipboardCopyElementTimers.get(target)\n\n if (currentTimeout) {\n clearTimeout(currentTimeout)\n clipboardCopyElementTimers.delete(target)\n } else {\n showCheck(target)\n }\n\n clipboardCopyElementTimers.set(\n target,\n setTimeout(() => {\n showCopy(target)\n clipboardCopyElementTimers.delete(target)\n }, CLIPBOARD_COPY_TIMER_DURATION)\n )\n})\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _DurationFormat_options;\nclass ListFormatPonyFill {\n formatToParts(members) {\n const parts = [];\n for (const value of members) {\n parts.push({ type: 'element', value });\n parts.push({ type: 'literal', value: ', ' });\n }\n return parts.slice(0, -1);\n }\n}\nconst ListFormat = (typeof Intl !== 'undefined' && Intl.ListFormat) || ListFormatPonyFill;\nconst partsTable = [\n ['years', 'year'],\n ['months', 'month'],\n ['weeks', 'week'],\n ['days', 'day'],\n ['hours', 'hour'],\n ['minutes', 'minute'],\n ['seconds', 'second'],\n ['milliseconds', 'millisecond'],\n];\nconst twoDigitFormatOptions = { minimumIntegerDigits: 2 };\nexport default class DurationFormat {\n constructor(locale, options = {}) {\n _DurationFormat_options.set(this, void 0);\n let style = String(options.style || 'short');\n if (style !== 'long' && style !== 'short' && style !== 'narrow' && style !== 'digital')\n style = 'short';\n let prevStyle = style === 'digital' ? 'numeric' : style;\n const hours = options.hours || prevStyle;\n prevStyle = hours === '2-digit' ? 'numeric' : hours;\n const minutes = options.minutes || prevStyle;\n prevStyle = minutes === '2-digit' ? 'numeric' : minutes;\n const seconds = options.seconds || prevStyle;\n prevStyle = seconds === '2-digit' ? 'numeric' : seconds;\n const milliseconds = options.milliseconds || prevStyle;\n __classPrivateFieldSet(this, _DurationFormat_options, {\n locale,\n style,\n years: options.years || style === 'digital' ? 'short' : style,\n yearsDisplay: options.yearsDisplay === 'always' ? 'always' : 'auto',\n months: options.months || style === 'digital' ? 'short' : style,\n monthsDisplay: options.monthsDisplay === 'always' ? 'always' : 'auto',\n weeks: options.weeks || style === 'digital' ? 'short' : style,\n weeksDisplay: options.weeksDisplay === 'always' ? 'always' : 'auto',\n days: options.days || style === 'digital' ? 'short' : style,\n daysDisplay: options.daysDisplay === 'always' ? 'always' : 'auto',\n hours,\n hoursDisplay: options.hoursDisplay === 'always' ? 'always' : style === 'digital' ? 'always' : 'auto',\n minutes,\n minutesDisplay: options.minutesDisplay === 'always' ? 'always' : style === 'digital' ? 'always' : 'auto',\n seconds,\n secondsDisplay: options.secondsDisplay === 'always' ? 'always' : style === 'digital' ? 'always' : 'auto',\n milliseconds,\n millisecondsDisplay: options.millisecondsDisplay === 'always' ? 'always' : 'auto',\n }, \"f\");\n }\n resolvedOptions() {\n return __classPrivateFieldGet(this, _DurationFormat_options, \"f\");\n }\n formatToParts(duration) {\n const list = [];\n const options = __classPrivateFieldGet(this, _DurationFormat_options, \"f\");\n const style = options.style;\n const locale = options.locale;\n for (const [unit, nfUnit] of partsTable) {\n const value = duration[unit];\n if (options[`${unit}Display`] === 'auto' && !value)\n continue;\n const unitStyle = options[unit];\n const nfOpts = unitStyle === '2-digit'\n ? twoDigitFormatOptions\n : unitStyle === 'numeric'\n ? {}\n : { style: 'unit', unit: nfUnit, unitDisplay: unitStyle };\n list.push(new Intl.NumberFormat(locale, nfOpts).format(value));\n }\n return new ListFormat(locale, {\n type: 'unit',\n style: style === 'digital' ? 'short' : style,\n }).formatToParts(list);\n }\n format(duration) {\n return this.formatToParts(duration)\n .map(p => p.value)\n .join('');\n }\n}\n_DurationFormat_options = new WeakMap();\n","import DurationFormat from './duration-format-ponyfill.js';\nconst durationRe = /^[-+]?P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)W)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)S)?)?$/;\nexport const unitNames = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\nexport const isDuration = (str) => durationRe.test(str);\nexport class Duration {\n constructor(years = 0, months = 0, weeks = 0, days = 0, hours = 0, minutes = 0, seconds = 0, milliseconds = 0) {\n this.years = years;\n this.months = months;\n this.weeks = weeks;\n this.days = days;\n this.hours = hours;\n this.minutes = minutes;\n this.seconds = seconds;\n this.milliseconds = milliseconds;\n this.years || (this.years = 0);\n this.sign || (this.sign = Math.sign(this.years));\n this.months || (this.months = 0);\n this.sign || (this.sign = Math.sign(this.months));\n this.weeks || (this.weeks = 0);\n this.sign || (this.sign = Math.sign(this.weeks));\n this.days || (this.days = 0);\n this.sign || (this.sign = Math.sign(this.days));\n this.hours || (this.hours = 0);\n this.sign || (this.sign = Math.sign(this.hours));\n this.minutes || (this.minutes = 0);\n this.sign || (this.sign = Math.sign(this.minutes));\n this.seconds || (this.seconds = 0);\n this.sign || (this.sign = Math.sign(this.seconds));\n this.milliseconds || (this.milliseconds = 0);\n this.sign || (this.sign = Math.sign(this.milliseconds));\n this.blank = this.sign === 0;\n }\n abs() {\n return new Duration(Math.abs(this.years), Math.abs(this.months), Math.abs(this.weeks), Math.abs(this.days), Math.abs(this.hours), Math.abs(this.minutes), Math.abs(this.seconds), Math.abs(this.milliseconds));\n }\n static from(durationLike) {\n var _a;\n if (typeof durationLike === 'string') {\n const str = String(durationLike).trim();\n const factor = str.startsWith('-') ? -1 : 1;\n const parsed = (_a = str\n .match(durationRe)) === null || _a === void 0 ? void 0 : _a.slice(1).map(x => (Number(x) || 0) * factor);\n if (!parsed)\n return new Duration();\n return new Duration(...parsed);\n }\n else if (typeof durationLike === 'object') {\n const { years, months, weeks, days, hours, minutes, seconds, milliseconds } = durationLike;\n return new Duration(years, months, weeks, days, hours, minutes, seconds, milliseconds);\n }\n throw new RangeError('invalid duration');\n }\n static compare(one, two) {\n const now = Date.now();\n const oneApplied = Math.abs(applyDuration(now, Duration.from(one)).getTime() - now);\n const twoApplied = Math.abs(applyDuration(now, Duration.from(two)).getTime() - now);\n return oneApplied > twoApplied ? -1 : oneApplied < twoApplied ? 1 : 0;\n }\n toLocaleString(locale, opts) {\n return new DurationFormat(locale, opts).format(this);\n }\n}\nexport function applyDuration(date, duration) {\n const r = new Date(date);\n r.setFullYear(r.getFullYear() + duration.years);\n r.setMonth(r.getMonth() + duration.months);\n r.setDate(r.getDate() + duration.weeks * 7 + duration.days);\n r.setHours(r.getHours() + duration.hours);\n r.setMinutes(r.getMinutes() + duration.minutes);\n r.setSeconds(r.getSeconds() + duration.seconds);\n return r;\n}\nexport function elapsedTime(date, precision = 'second', now = Date.now()) {\n const delta = date.getTime() - now;\n if (delta === 0)\n return new Duration();\n const sign = Math.sign(delta);\n const ms = Math.abs(delta);\n const sec = Math.floor(ms / 1000);\n const min = Math.floor(sec / 60);\n const hr = Math.floor(min / 60);\n const day = Math.floor(hr / 24);\n const month = Math.floor(day / 30);\n const year = Math.floor(month / 12);\n const i = unitNames.indexOf(precision) || unitNames.length;\n return new Duration(i >= 0 ? year * sign : 0, i >= 1 ? (month - year * 12) * sign : 0, 0, i >= 3 ? (day - month * 30) * sign : 0, i >= 4 ? (hr - day * 24) * sign : 0, i >= 5 ? (min - hr * 60) * sign : 0, i >= 6 ? (sec - min * 60) * sign : 0, i >= 7 ? (ms - sec * 1000) * sign : 0);\n}\nexport function roundToSingleUnit(duration) {\n if (duration.blank)\n return duration;\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 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 (hours >= 21)\n days += Math.round(hours / 24);\n if (days || weeks || months || years)\n hours = 0;\n if (days >= 6)\n weeks += Math.round(days / 7);\n if (weeks || months || years)\n days = 0;\n if (weeks >= 4)\n months += Math.round(weeks / 4);\n if (months || years)\n weeks = 0;\n if (months >= 11)\n years += Math.round(months / 12);\n if (years)\n months = 0;\n const sign = duration.sign;\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) {\n const rounded = roundToSingleUnit(duration);\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;\nimport { Duration, unitNames, isDuration, elapsedTime, roundToSingleUnit, getRelativeTimeUnit } from './duration.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\nconst HTMLElement = root.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 default 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 }\n static get observedAttributes() {\n return [\n 'second',\n 'minute',\n 'hour',\n 'weekday',\n 'day',\n 'month',\n 'year',\n 'time-zone-name',\n 'prefix',\n 'threshold',\n 'tense',\n 'precision',\n 'format',\n 'format-style',\n 'datetime',\n 'lang',\n 'title',\n ];\n }\n get 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 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('day', value || '');\n }\n get timeZoneName() {\n const name = this.getAttribute('time-zone-name');\n if (name === 'long' ||\n name === 'short' ||\n name === 'shortOffset' ||\n name === 'longOffset' ||\n name === 'shortGeneric' ||\n name === 'longGeneric') {\n return name;\n }\n }\n set timeZoneName(value) {\n this.setAttribute('time-zone-name', value || '');\n }\n get prefix() {\n var _a;\n return (_a = this.getAttribute('prefix')) !== null && _a !== void 0 ? _a : (this.format === 'datetime' ? '' : 'on');\n }\n set prefix(value) {\n this.setAttribute('prefix', value);\n }\n get threshold() {\n const threshold = this.getAttribute('threshold');\n return threshold && isDuration(threshold) ? threshold : 'P30D';\n }\n set threshold(value) {\n this.setAttribute('threshold', value);\n }\n get tense() {\n const tense = this.getAttribute('tense');\n if (tense === 'past')\n return 'past';\n if (tense === 'future')\n return 'future';\n return 'auto';\n }\n set tense(value) {\n this.setAttribute('tense', value);\n }\n get precision() {\n const precision = this.getAttribute('precision');\n if (unitNames.includes(precision))\n return precision;\n if (this.format === 'micro')\n return 'minute';\n return 'second';\n }\n set precision(value) {\n this.setAttribute('precision', value);\n }\n get format() {\n const format = this.getAttribute('format');\n if (format === 'datetime')\n return 'datetime';\n if (format === 'relative')\n return 'relative';\n if (format === 'duration')\n return 'duration';\n if (format === 'micro')\n return 'micro';\n if (format === 'elapsed')\n return 'elapsed';\n return 'auto';\n }\n set format(value) {\n this.setAttribute('format', value);\n }\n get formatStyle() {\n const formatStyle = this.getAttribute('format-style');\n if (formatStyle === 'long')\n return 'long';\n if (formatStyle === 'short')\n return 'short';\n if (formatStyle === 'narrow')\n return 'narrow';\n const format = this.format;\n if (format === 'elapsed' || format === 'micro')\n return 'narrow';\n if (format === 'datetime')\n return 'short';\n return 'long';\n }\n set formatStyle(value) {\n this.setAttribute('format-style', value);\n }\n get datetime() {\n return this.getAttribute('datetime') || '';\n }\n set datetime(value) {\n this.setAttribute('datetime', value);\n }\n get date() {\n const parsed = Date.parse(this.datetime);\n return Number.isNaN(parsed) ? null : new Date(parsed);\n }\n set date(value) {\n this.datetime = (value === null || value === void 0 ? void 0 : value.toISOString()) || '';\n }\n connectedCallback() {\n this.update();\n }\n disconnectedCallback() {\n dateObserver.unobserve(this);\n }\n attributeChangedCallback(attrName, oldValue, newValue) {\n if (oldValue === newValue)\n return;\n if (attrName === 'title') {\n __classPrivateFieldSet(this, _RelativeTimeElement_customTitle, newValue !== null && (this.date && __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getFormattedTitle).call(this, this.date)) !== newValue, \"f\");\n }\n if (!__classPrivateFieldGet(this, _RelativeTimeElement_updating, \"f\") && !(attrName === 'title' && __classPrivateFieldGet(this, _RelativeTimeElement_customTitle, \"f\"))) {\n __classPrivateFieldSet(this, _RelativeTimeElement_updating, (async () => {\n await Promise.resolve();\n this.update();\n })(), \"f\");\n }\n }\n update() {\n const oldText = __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent || this.textContent || '';\n const oldTitle = this.getAttribute('title') || '';\n let newTitle = oldTitle;\n const date = this.date;\n if (typeof Intl === 'undefined' || !Intl.DateTimeFormat || !date) {\n __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent = oldText;\n return;\n }\n const now = Date.now();\n if (!__classPrivateFieldGet(this, _RelativeTimeElement_customTitle, \"f\")) {\n newTitle = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getFormattedTitle).call(this, date) || '';\n if (newTitle)\n this.setAttribute('title', newTitle);\n }\n const duration = elapsedTime(date, this.precision, now);\n const format = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_resolveFormat).call(this, duration);\n let newText = oldText;\n if (format === 'duration') {\n newText = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getDurationFormat).call(this, duration);\n }\n else if (format === 'relative') {\n newText = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getRelativeFormat).call(this, duration);\n }\n else {\n newText = __classPrivateFieldGet(this, _RelativeTimeElement_instances, \"m\", _RelativeTimeElement_getDateTimeFormat).call(this, date);\n }\n if (newText) {\n __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent = newText;\n }\n else if (this.shadowRoot === __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\") && this.textContent) {\n __classPrivateFieldGet(this, _RelativeTimeElement_renderRoot, \"f\").textContent = this.textContent;\n }\n if (newText !== oldText || newTitle !== oldTitle) {\n this.dispatchEvent(new RelativeTimeUpdatedEvent(oldText, newText, oldTitle, newTitle));\n }\n if (format === 'relative' || format === 'duration') {\n dateObserver.observe(this);\n }\n else {\n dateObserver.unobserve(this);\n }\n __classPrivateFieldSet(this, _RelativeTimeElement_updating, false, \"f\");\n }\n}\n_RelativeTimeElement_customTitle = new WeakMap(), _RelativeTimeElement_updating = new WeakMap(), _RelativeTimeElement_renderRoot = new WeakMap(), _RelativeTimeElement_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 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), { numeric: 'auto', style: this.formatStyle });\n const tense = this.tense;\n if (tense === 'future' && duration.sign !== 1)\n duration = emptyDuration;\n if (tense === 'past' && duration.sign !== -1)\n duration = emptyDuration;\n const [int, unit] = getRelativeTimeUnit(duration);\n if (unit === 'second' && int < 10)\n return relativeFormat.format(0, 'second');\n 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};\n","import RelativeTimeElement from './relative-time-element.js';\nconst root = (typeof globalThis !== 'undefined' ? globalThis : window);\ntry {\n customElements.define('relative-time', RelativeTimeElement);\n root.RelativeTimeElement = RelativeTimeElement;\n}\ncatch (e) {\n if (!(root.DOMException && e instanceof DOMException && e.name === 'NotSupportedError') &&\n !(e instanceof ReferenceError)) {\n throw e;\n }\n}\nexport default RelativeTimeElement;\nexport * from './relative-time-element.js';\n","function getTabs(el) {\n return Array.from(el.querySelectorAll('[role=\"tablist\"] [role=\"tab\"]')).filter(tab => tab instanceof HTMLElement && tab.closest(el.tagName) === el);\n}\nfunction getNavigationKeyCodes(vertical) {\n if (vertical) {\n return [\n ['ArrowDown', 'ArrowRight'],\n ['ArrowUp', 'ArrowLeft']\n ];\n }\n else {\n return [['ArrowRight'], ['ArrowLeft']];\n }\n}\nexport default class TabContainerElement extends HTMLElement {\n constructor() {\n super();\n this.addEventListener('keydown', (event) => {\n const target = event.target;\n if (!(target instanceof HTMLElement))\n return;\n if (target.closest(this.tagName) !== this)\n return;\n if (target.getAttribute('role') !== 'tab' && !target.closest('[role=\"tablist\"]'))\n return;\n const tabs = getTabs(this);\n const currentIndex = tabs.indexOf(tabs.find(tab => tab.matches('[aria-selected=\"true\"]')));\n const [incrementKeys, decrementKeys] = getNavigationKeyCodes(target.closest('[role=\"tablist\"]')?.getAttribute('aria-orientation') === 'vertical');\n if (incrementKeys.some(code => event.code === code)) {\n let index = currentIndex + 1;\n if (index >= tabs.length)\n index = 0;\n this.selectTab(index);\n }\n else if (decrementKeys.some(code => event.code === code)) {\n let index = currentIndex - 1;\n if (index < 0)\n index = tabs.length - 1;\n this.selectTab(index);\n }\n else if (event.code === 'Home') {\n this.selectTab(0);\n event.preventDefault();\n }\n else if (event.code === 'End') {\n this.selectTab(tabs.length - 1);\n event.preventDefault();\n }\n });\n this.addEventListener('click', (event) => {\n const tabs = getTabs(this);\n if (!(event.target instanceof Element))\n return;\n if (event.target.closest(this.tagName) !== this)\n return;\n const tab = event.target.closest('[role=\"tab\"]');\n if (!(tab instanceof HTMLElement) || !tab.closest('[role=\"tablist\"]'))\n return;\n const index = tabs.indexOf(tab);\n this.selectTab(index);\n });\n }\n connectedCallback() {\n for (const tab of getTabs(this)) {\n if (!tab.hasAttribute('aria-selected')) {\n tab.setAttribute('aria-selected', 'false');\n }\n if (!tab.hasAttribute('tabindex')) {\n if (tab.getAttribute('aria-selected') === 'true') {\n tab.setAttribute('tabindex', '0');\n }\n else {\n tab.setAttribute('tabindex', '-1');\n }\n }\n }\n }\n selectTab(index) {\n const tabs = getTabs(this);\n const panels = Array.from(this.querySelectorAll('[role=\"tabpanel\"]')).filter(panel => panel.closest(this.tagName) === this);\n /**\n * Out of bounds index\n */\n if (index > tabs.length - 1) {\n throw new RangeError(`Index \"${index}\" out of bounds`);\n }\n const selectedTab = tabs[index];\n const selectedPanel = panels[index];\n const cancelled = !this.dispatchEvent(new CustomEvent('tab-container-change', {\n bubbles: true,\n cancelable: true,\n detail: { relatedTarget: selectedPanel }\n }));\n if (cancelled)\n return;\n for (const tab of tabs) {\n tab.setAttribute('aria-selected', 'false');\n tab.setAttribute('tabindex', '-1');\n }\n for (const panel of panels) {\n panel.hidden = true;\n if (!panel.hasAttribute('tabindex') && !panel.hasAttribute('data-tab-container-no-tabstop')) {\n panel.setAttribute('tabindex', '0');\n }\n }\n selectedTab.setAttribute('aria-selected', 'true');\n selectedTab.setAttribute('tabindex', '0');\n selectedTab.focus();\n selectedPanel.hidden = false;\n this.dispatchEvent(new CustomEvent('tab-container-changed', {\n bubbles: true,\n detail: { relatedTarget: selectedPanel }\n }));\n }\n}\nif (!window.customElements.get('tab-container')) {\n window.TabContainerElement = TabContainerElement;\n window.customElements.define('tab-container', TabContainerElement);\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable custom-elements/expose-class-on-global */\nimport {controller, targets} from '@github/catalyst'\n\n@controller\nexport class PrimerMultiInputElement extends HTMLElement {\n @targets fields: HTMLInputElement[]\n\n activateField(name: string) {\n const fieldWithName = this.findField(name)\n if (!fieldWithName) return\n\n for (const field of this.fields) {\n if (field === fieldWithName) continue\n\n field.setAttribute('disabled', 'disabled')\n field.setAttribute('hidden', 'hidden')\n\n field.parentElement?.setAttribute('hidden', 'hidden')\n }\n\n fieldWithName.removeAttribute('disabled')\n fieldWithName.removeAttribute('hidden')\n fieldWithName.parentElement?.removeAttribute('hidden')\n }\n\n private findField(name: string): HTMLElement | null {\n for (const field of this.fields) {\n if (field.getAttribute('data-name') === name) {\n return field\n }\n }\n\n return null\n }\n}\n\ndeclare global {\n interface Window {\n PrimerMultiInputElement: typeof PrimerMultiInputElement\n }\n}\n\nif (!window.customElements.get('primer-multi-input')) {\n Object.assign(window, {PrimerMultiInputElement})\n window.customElements.define('primer-multi-input', PrimerMultiInputElement)\n}\n","function throttle(callback, wait = 0, {\n start = true,\n middle = true,\n once = false\n} = {}) {\n var last = 0;\n var timer;\n var cancelled = false;\n\n var fn = function fn(...args) {\n if (cancelled) return;\n var delta = Date.now() - last;\n last = Date.now();\n\n if (start) {\n //eslint-disable-next-line flowtype/no-flow-fix-me-comments\n // $FlowFixMe this isn't a const\n start = false;\n callback(...args);\n if (once) fn.cancel();\n } else if (middle && delta < wait || !middle) {\n clearTimeout(timer);\n timer = setTimeout(function () {\n last = Date.now();\n callback(...args);\n if (once) fn.cancel();\n }, !middle ? wait : wait - delta);\n }\n };\n\n fn.cancel = function () {\n clearTimeout(timer);\n cancelled = true;\n };\n\n return fn;\n}\nfunction debounce(callback, wait = 0, {\n start = false,\n middle = false,\n once = false\n} = {}) {\n return throttle(callback, wait, {\n start: start,\n middle: middle,\n once: once\n });\n}\n\nconst states = new WeakMap();\nclass AutoCheckElement extends HTMLElement {\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}\nfunction setLoadingState(event) {\n const input = event.currentTarget;\n if (!(input instanceof HTMLInputElement))\n return;\n const autoCheckElement = input.closest('auto-check');\n if (!(autoCheckElement instanceof AutoCheckElement))\n return;\n const src = autoCheckElement.src;\n const csrf = autoCheckElement.csrf;\n const state = states.get(autoCheckElement);\n if (!src || !csrf || !state) {\n return;\n }\n let message = 'Verifying…';\n const setValidity = (text) => (message = text);\n input.dispatchEvent(new CustomEvent('auto-check-start', {\n bubbles: true,\n detail: { setValidity }\n }));\n if (autoCheckElement.required) {\n input.setCustomValidity(message);\n }\n}\nfunction makeAbortController() {\n if ('AbortController' in window) {\n return new AbortController();\n }\n return {\n signal: null,\n abort() {\n }\n };\n}\nasync function fetchWithNetworkEvents(el, url, options) {\n try {\n const response = await fetch(url, options);\n el.dispatchEvent(new CustomEvent('load'));\n el.dispatchEvent(new CustomEvent('loadend'));\n return response;\n }\n catch (error) {\n if (error.name !== 'AbortError') {\n el.dispatchEvent(new CustomEvent('error'));\n el.dispatchEvent(new CustomEvent('loadend'));\n }\n throw error;\n }\n}\nasync function check(autoCheckElement) {\n const input = autoCheckElement.input;\n if (!input) {\n return;\n }\n const csrfField = autoCheckElement.csrfField;\n const src = autoCheckElement.src;\n const csrf = autoCheckElement.csrf;\n const state = states.get(autoCheckElement);\n if (!src || !csrf || !state) {\n if (autoCheckElement.required) {\n input.setCustomValidity('');\n }\n return;\n }\n if (!input.value.trim()) {\n if (autoCheckElement.required) {\n input.setCustomValidity('');\n }\n return;\n }\n const body = new FormData();\n body.append(csrfField, csrf);\n body.append('value', input.value);\n input.dispatchEvent(new CustomEvent('auto-check-send', {\n bubbles: true,\n detail: { body }\n }));\n if (state.controller) {\n state.controller.abort();\n }\n else {\n autoCheckElement.dispatchEvent(new CustomEvent('loadstart'));\n }\n state.controller = makeAbortController();\n try {\n const response = await fetchWithNetworkEvents(autoCheckElement, src, {\n credentials: 'same-origin',\n signal: state.controller.signal,\n method: 'POST',\n body\n });\n if (response.ok) {\n processSuccess(response, input, autoCheckElement.required);\n }\n else {\n processFailure(response, input, autoCheckElement.required);\n }\n state.controller = null;\n input.dispatchEvent(new CustomEvent('auto-check-complete', { bubbles: true }));\n }\n catch (error) {\n if (error.name !== 'AbortError') {\n state.controller = null;\n input.dispatchEvent(new CustomEvent('auto-check-complete', { bubbles: true }));\n }\n }\n}\nfunction processSuccess(response, input, required) {\n if (required) {\n input.setCustomValidity('');\n }\n input.dispatchEvent(new CustomEvent('auto-check-success', {\n bubbles: true,\n detail: {\n response: response.clone()\n }\n }));\n}\nfunction processFailure(response, input, required) {\n let message = 'Validation failed';\n const setValidity = (text) => (message = text);\n input.dispatchEvent(new CustomEvent('auto-check-error', {\n bubbles: true,\n detail: {\n response: response.clone(),\n setValidity\n }\n }));\n if (required) {\n input.setCustomValidity(message);\n }\n}\nif (!window.customElements.get('auto-check')) {\n window.AutoCheckElement = AutoCheckElement;\n window.customElements.define('auto-check', AutoCheckElement);\n}\n\nexport default AutoCheckElement;\n","import '@github/auto-check-element'\nimport {controller, target} from '@github/catalyst'\n\n@controller\nclass PrimerTextFieldElement extends HTMLElement {\n @target inputElement: HTMLInputElement\n @target validationElement: HTMLElement\n @target validationMessageElement: HTMLElement\n\n #abortController: AbortController | null\n\n connectedCallback(): void {\n this.#abortController?.abort()\n const {signal} = (this.#abortController = new AbortController())\n\n this.inputElement.addEventListener(\n 'auto-check-success',\n () => { this.clearError() },\n {signal}\n )\n\n this.inputElement.addEventListener(\n 'auto-check-error',\n (event: any) => {\n event.detail.response.text().then(\n (error_message: string) => { this.setError(error_message) }\n )\n },\n {signal}\n )\n }\n\n disconnectedCallback() {\n this.#abortController?.abort()\n }\n\n clearError(): void {\n this.inputElement.removeAttribute('invalid')\n this.validationElement.hidden = true\n this.validationMessageElement.innerText = ''\n }\n\n setError(message: string): void {\n this.validationMessageElement.innerText = message\n this.validationElement.hidden = false\n this.inputElement.setAttribute('invalid', 'true')\n }\n}\n","import {controller, target} from '@github/catalyst'\n\n@controller\nexport class ToggleSwitchInputElement extends HTMLElement {\n @target validationElement: HTMLElement\n @target validationMessageElement: HTMLElement\n\n connectedCallback() {\n this.addEventListener('toggleSwitchError', (event: Event) => {\n this.validationMessageElement.innerText = (event as CustomEvent).detail\n this.validationElement.removeAttribute('hidden')\n })\n\n this.addEventListener('toggleSwitchSuccess', () => {\n this.validationMessageElement.innerText = ''\n this.validationElement.setAttribute('hidden', 'hidden')\n })\n }\n}\n"],"names":["DetailsMenuElement","HTMLElement","preload","this","hasAttribute","value","setAttribute","removeAttribute","src","getAttribute","[object Object]","details","parentElement","summary","querySelector","subscriptions","fromEvent","e","trackComposition","shouldCommit","menu","event","KeyboardEvent","state","states","get","isComposing","isSummaryFocused","target","Element","tagName","key","close","preventDefault","stopPropagation","sibling","focus","ctrlBindings","ctrlKey","selected","document","activeElement","isMenuItem","closest","click","keydown","loadFragment","once","querySelectorAll","opened","contains","closeCurrentMenu","NullSubscription","focusOnOpen","set","loaded","delete","sub","unsubscribe","WeakMap","eventName","onNext","options","addEventListener","removeEventListener","loader","autofocus","isMouse","focusFirstItem","input","next","Array","from","index","indexOf","found","def","length","navigator","userAgent","match","type","menuitem","checked","commit","dispatchEvent","CustomEvent","cancelable","detail","relatedTarget","item","button","text","el","textEl","textContent","labelText","html","contentsEl","innerHTML","labelHTML","updateLabel","checkState","toString","HTMLInputElement","indeterminate","updateChecked","role","window","customElements","define","startPositions","dragStartPositions","constructedElements","moveCropArea","currentTarget","ImageCropElement","box","image","deltaX","deltaY","has","MouseEvent","pos","pageX","dragStartX","pageY","dragStartY","TouchEvent","changedTouches","x","Math","min","max","offsetLeft","width","offsetWidth","y","offsetTop","height","offsetHeight","style","left","top","fireChangeEvent","updateCropArea","getShadowHost","rect","getBoundingClientRect","delta","setInitialPosition","startX","startY","pageXOffset","pageYOffset","updateDimensions","rootNode","getRootNode","ShadowRoot","host","startUpdate","direction","passive","classList","add","reposition","newSide","abs","round","side","clientWidth","clientHeight","stopUpdate","remove","result","ratio","naturalWidth","slottedInput","bubbles","shadowRoot","attachShadow","mode","HTMLImageElement","observedAttributes","val","attribute","oldValue","newValue","__decorate","decorators","desc","d","c","arguments","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__classPrivateFieldGet","receiver","kind","f","TypeError","call","__classPrivateFieldSet","alternateOrders","outside-top","outside-bottom","outside-left","outside-right","alternateAlignments","start","end","center","getAnchoredPosition","floatingElement","anchorElement","settings","element","parentNode","getComputedStyle","position","body","getPositionedParent","clippingRect","overflow","clippingNode","elemRect","elemStyle","borderTop","borderLeft","borderRight","borderBottom","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","map","v","parseInt","innerHeight","Infinity","getClippingRect","parentElementStyle","parentElementRect","viewportRect","relativePosition","floatingRect","anchorRect","align","allowOutOfBounds","anchorOffset","alignmentOffset","relativeViewportRect","calculatePosition","anchorSide","anchorAlign","alternateOrder","positionAttempt","prevSide","shouldRecalculatePosition","nextSide","alternateAlignment","alignmentAttempt","prevAlign","shouldRecalculateAlignment","nextAlign","assign","pureCalculateAnchoredPosition","_a","_b","_c","_d","_e","positionDefaults","startsWith","getDefaultSettings","elementDimensions","anchorPosition","anchorRight","anchorBottom","currentPos","containerDimensions","getFocusableChild","container","lastChild","strict","acceptFn","onlyTabbable","isTabbable","isFocusable","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","node","FILTER_ACCEPT","FILTER_SKIP","nextNode","reverse","firstChild","previousNode","iterateFocusableElements","elem","disabledAttrInert","includes","disabled","hiddenInert","hidden","hiddenInputInert","sentinelInert","sizeInert","visibilityInert","visibility","clientRectsInert","getClientRects","HTMLAnchorElement","tabIndex","signalSupported","noop","create","signal","originalAddEventListener","EventTarget","prototype","name","originalCallback","optionsOrCapture","AbortSignal","monkeyPatch","suspendedTrapStack","activeTrap","focusTrap","initialFocus","abortSignal","controller","AbortController","sentinelStart","createElement","onfocus","lastFocusableChild","sentinelEnd","lastFocusedChild","ensureTrapZoneHasFocus","focusedElement","firstFocusableChild","prepend","append","wrappingController","abort","followSignal","suspendedTrap","push","undefined","sentinels","getElementsByClassName","suspendedTrapIndex","findIndex","t","splice","trapToReactivate","pop","originalSignal","tryReactivate","capture","focusIfNeeded","overlayStack","clickHandler","dialogId","dialog","getElementById","ModalDialogElement","openButton","show","topLevelDialog","id","mousedownHandler","ownerDocument","upEvent","_ModalDialogElement_focusAbortController","open","_ModalDialogElement_instances","_ModalDialogElement_overlayBackdrop_get","paddingRight","innerWidth","aborted","showButtons","closedNotCancelled","dialogEvent","Event","controllers","WeakSet","bindShadow","root","bindElements","listenForBind","observers","closed","observer","MutationObserver","mutations","mutation","bindActions","addedNodes","observe","childList","subtree","attributeFilter","subscription","disconnect","handleEvent","binding","bindings","tag","method","matches","shadowController","action","trim","split","eventSep","lastIndexOf","methodSep","slice","dasherize","str","String","description","replace","toLowerCase","mustDasherize","dashed","DOMException","attrKey","initialized","initializeAttrs","instance","names","proto","getPrototypeOf","prefix","constructor","attrPrefix","meta","descriptor","configurable","Number","toggleAttribute","symbol","Symbol","for","CatalystDelegate","classObject","delegate","connectedCallback","disconnectedCallback","attributeChangedCallback","attributes","observed","attrToAttributeName","concat","defineObservedAttributes","register","upgrade","template","content","cloneNode","autoShadowRoot","bind","hasOwnProperty","parent","Map","Set","findTarget","targets","findTargets","Promise","resolve","readyState","listenerOptions","handler","NavListElement","setShowMoreItemState","showMoreDisabled","showMoreItem","toggle","currentPage","totalPages","paginationSrc","nextElementSibling","itemIsExpanded","collapseItem","expandItem","paginationURL","URL","location","origin","searchParams","response","fetch","ok","err","fragment","parseHTML","list","insertBefore","focusMarkers","importNode","SegmentedControlElement","_SegmentedControlElement_instances","_SegmentedControlElement_updateButtonLabels","items","debounce","callback","wait","middle","timer","last","cancelled","fn","args","Date","now","apply","cancel","clearTimeout","setTimeout","throttle","label","ToggleSwitchElement","link","href","csrf","csrfElement","csrfField","isDisabled","isRemote","setLoadingState","submitForm","performToggle","switch","isOn","turnOff","turnOn","disable","errorIcon","loadingSpinner","setFinishedState","message","error","enable","FormData","Error","credentials","headers","Requested-With","setSuccessState","setErrorState","opts","db","TOOLTIP_OPEN_CLASS","TOOLTIP_SR_ONLY_CLASS","DIRECTION_CLASSES","ToolTipElement","_ToolTipElement_abortController","_ToolTipElement_align","_ToolTipElement_side","_ToolTipElement_allowUpdatePosition","htmlFor","control","hiddenFromView","isConnected","_ToolTipElement_instances","_ToolTipElement_update","_ToolTipElement_updateControlReference","_ToolTipElement_updateDirection","shadow","appendChild","styles","tooltip","_ToolTipElement_updatePosition","labelledBy","describedBy","XBannerElement","shouldReappear","setProperty","removeChild","Combobox","random","keyboardEventHandler","combobox","shiftKey","metaKey","altKey","clearSelection","navigate","keyboardBindings","compositionEventHandler","inputHandler","stop","commitWithElement","indexDiff","focusEl","filter","visible","els","focusIndex","indexOfItem","newIndex","scrollTo","fireCommitEvent","scrollTop","containerBottom","bottom","inViewport","SCREEN_READER_DELAY","testScreenReaderDelay","Autocomplete","results","autoselectEnabled","feedback","clearButton","clientOptions","labelElem","interactingWithList","onInputChange","timeout","Rest","onResultsMouseDown","onInputBlur","onInputFocus","onKeydown","onCommit","handleClear","updateFeedbackForScreenReaders","firstOption","children","fetchResults","inputString","query","url","params","URLSearchParams","search","fetchResult","then","identifyOptions","allNewOptions","hasResults","numOptions","firstOptionValue","catch","AutocompleteEvent","init","super","requests","xhr","XMLHttpRequest","setRequestHeader","pending","clear","reject","onload","status","responseText","onerror","send","request","AutocompleteElement","listId","autocomplete","destroy","copyNode","clipboard","writeText","selection","getSelection","removeAllRanges","range","createRange","selectNodeContents","addRange","execCommand","copyText","createNode","copy","trigger","Document","HTMLTextAreaElement","clicked","focused","blurred","ClipboardCopyElement","showSVG","svg","display","hideSVG","clipboardCopyElementTimers","currentTimeout","copyIcon","checkIcon","showCheck","showCopy","_DurationFormat_options","ListFormat","Intl","members","parts","partsTable","twoDigitFormatOptions","minimumIntegerDigits","DurationFormat","locale","prevStyle","hours","minutes","seconds","milliseconds","years","yearsDisplay","months","monthsDisplay","weeks","weeksDisplay","days","daysDisplay","hoursDisplay","minutesDisplay","secondsDisplay","millisecondsDisplay","duration","unit","nfUnit","unitStyle","nfOpts","unitDisplay","NumberFormat","format","formatToParts","p","join","durationRe","unitNames","Duration","sign","blank","durationLike","factor","parsed","RangeError","one","two","oneApplied","applyDuration","getTime","twoApplied","date","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","roundToSingleUnit","_RelativeTimeElement_instances","_RelativeTimeElement_customTitle","_RelativeTimeElement_updating","_RelativeTimeElement_lang_get","_RelativeTimeElement_renderRoot","_RelativeTimeElement_getFormattedTitle","_RelativeTimeElement_resolveFormat","_RelativeTimeElement_getDurationFormat","_RelativeTimeElement_getRelativeFormat","_RelativeTimeElement_getDateTimeFormat","globalThis","emptyDuration","microEmptyDuration","RelativeTimeUpdatedEvent","oldText","newText","oldTitle","newTitle","composed","getUnitFactor","precision","ms","dateObserver","elements","time","update","size","nearestDistance","timeEl","RelativeTimeElement","second","minute","hour","weekday","formatStyle","day","month","year","getUTCFullYear","timeZoneName","threshold","test","tense","datetime","parse","isNaN","toISOString","unobserve","attrName","DateTimeFormat","sec","floor","hr","elapsedTime","documentElement","RelativeTimeFormat","compare","empty","toLocaleString","relativeFormat","numeric","int","rounded","getRelativeTimeUnit","formatter","ReferenceError","getTabs","tab","TabContainerElement","tabs","currentIndex","find","incrementKeys","decrementKeys","some","code","selectTab","panels","panel","selectedTab","selectedPanel","PrimerMultiInputElement","fieldWithName","findField","field","fields","AutoCheckElement","checker","check","spellcheck","setCustomValidity","required","autoCheckElement","setValidity","async","fetchWithNetworkEvents","clone","processSuccess","processFailure","PrimerTextFieldElement","_PrimerTextFieldElement_abortController","inputElement","clearError","error_message","setError","validationElement","validationMessageElement","innerText","ToggleSwitchInputElement"],"mappings":"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"}