{"version":3,"file":"js/6309.fdc1d94c.js","sources":["../../frontend/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/controller.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/form.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/set.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/shared.mjs","../../frontend/node_modules/@zag-js/dom-query/dist/tabbable.mjs"],"sourcesContent":["function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(':popover-open')) {\n      return true;\n    }\n  } catch (_e) {\n    // no-op\n  }\n  try {\n    return element.matches(':modal');\n  } catch (_e) {\n    return false;\n  }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return (node.ownerDocument || node).body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/controller.ts\nimport { getRootNode } from \"./node.mjs\";\nvar INTERACTIVE_CONTAINER_ROLE = /* @__PURE__ */ new Set([\"menu\", \"listbox\", \"dialog\", \"grid\", \"tree\", \"region\", \"application\"]);\nvar isInteractiveContainerRole = (role) => INTERACTIVE_CONTAINER_ROLE.has(role);\nvar getAriaControls = (element) => element.getAttribute(\"aria-controls\")?.split(\" \") || [];\nfunction isControlledElement(container, element) {\n  const visitedIds = /* @__PURE__ */ new Set();\n  const rootNode = getRootNode(container);\n  const checkElement = (searchRoot) => {\n    const controllingElements = searchRoot.querySelectorAll(\"[aria-controls]\");\n    for (const controller of controllingElements) {\n      if (controller.getAttribute(\"aria-expanded\") !== \"true\") continue;\n      const controlledIds = getAriaControls(controller);\n      for (const id of controlledIds) {\n        if (!id || visitedIds.has(id)) continue;\n        visitedIds.add(id);\n        const controlledElement = rootNode.getElementById(id);\n        if (controlledElement) {\n          const role = controlledElement.getAttribute(\"role\");\n          const modal = controlledElement.getAttribute(\"aria-modal\") === \"true\";\n          if (role && isInteractiveContainerRole(role) && !modal) {\n            if (controlledElement === element || controlledElement.contains(element)) {\n              return true;\n            }\n            if (checkElement(controlledElement)) {\n              return true;\n            }\n          }\n        }\n      }\n    }\n    return false;\n  };\n  return checkElement(container);\n}\nfunction findControlledElements(searchRoot, callback) {\n  const rootNode = getRootNode(searchRoot);\n  const visitedIds = /* @__PURE__ */ new Set();\n  const findRecursive = (root) => {\n    const controllingElements = root.querySelectorAll(\"[aria-controls]\");\n    for (const controller of controllingElements) {\n      if (controller.getAttribute(\"aria-expanded\") !== \"true\") continue;\n      const controlledIds = getAriaControls(controller);\n      for (const id of controlledIds) {\n        if (!id || visitedIds.has(id)) continue;\n        visitedIds.add(id);\n        const controlledElement = rootNode.getElementById(id);\n        if (controlledElement) {\n          const role = controlledElement.getAttribute(\"role\");\n          const modal = controlledElement.getAttribute(\"aria-modal\") === \"true\";\n          if (role && INTERACTIVE_CONTAINER_ROLE.has(role) && !modal) {\n            callback(controlledElement);\n            findRecursive(controlledElement);\n          }\n        }\n      }\n    }\n  };\n  findRecursive(searchRoot);\n}\nfunction getControlledElements(container) {\n  const controlledElements = /* @__PURE__ */ new Set();\n  findControlledElements(container, (controlledElement) => {\n    if (!container.contains(controlledElement)) {\n      controlledElements.add(controlledElement);\n    }\n  });\n  return Array.from(controlledElements);\n}\nfunction isInteractiveContainerElement(element) {\n  const role = element.getAttribute(\"role\");\n  return Boolean(role && INTERACTIVE_CONTAINER_ROLE.has(role));\n}\nfunction isControllerElement(element) {\n  return element.hasAttribute(\"aria-controls\") && element.getAttribute(\"aria-expanded\") === \"true\";\n}\nfunction hasControllerElements(element) {\n  if (isControllerElement(element)) return true;\n  return Boolean(element.querySelector?.('[aria-controls][aria-expanded=\"true\"]'));\n}\nfunction isControlledByExpandedController(element) {\n  if (!element.id) return false;\n  const rootNode = getRootNode(element);\n  const escapedId = CSS.escape(element.id);\n  const selector = `[aria-controls~=\"${escapedId}\"][aria-expanded=\"true\"], [aria-controls=\"${escapedId}\"][aria-expanded=\"true\"]`;\n  const controller = rootNode.querySelector(selector);\n  return Boolean(controller && isInteractiveContainerElement(element));\n}\nexport {\n  findControlledElements,\n  getControlledElements,\n  hasControllerElements,\n  isControlledByExpandedController,\n  isControlledElement,\n  isControllerElement,\n  isInteractiveContainerElement\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/form.ts\nimport { getWindow } from \"./node.mjs\";\nfunction getDescriptor(el, options) {\n  const { type = \"HTMLInputElement\", property = \"value\" } = options;\n  const proto = getWindow(el)[type].prototype;\n  return Object.getOwnPropertyDescriptor(proto, property) ?? {};\n}\nfunction getElementType(el) {\n  if (el.localName === \"input\") return \"HTMLInputElement\";\n  if (el.localName === \"textarea\") return \"HTMLTextAreaElement\";\n  if (el.localName === \"select\") return \"HTMLSelectElement\";\n}\nfunction setElementValue(el, value, property = \"value\") {\n  if (!el) return;\n  const type = getElementType(el);\n  if (type) {\n    const descriptor = getDescriptor(el, { type, property });\n    descriptor.set?.call(el, value);\n  }\n  el.setAttribute(property, value);\n}\nfunction setElementChecked(el, checked) {\n  if (!el) return;\n  const descriptor = getDescriptor(el, { type: \"HTMLInputElement\", property: \"checked\" });\n  descriptor.set?.call(el, checked);\n  if (checked) el.setAttribute(\"checked\", \"\");\n  else el.removeAttribute(\"checked\");\n}\nfunction dispatchInputValueEvent(el, options) {\n  const { value, bubbles = true } = options;\n  if (!el) return;\n  const win = getWindow(el);\n  if (!(el instanceof win.HTMLInputElement)) return;\n  setElementValue(el, `${value}`);\n  const event = new win.Event(\"input\", { bubbles });\n  el.dispatchEvent(markAsInternalChangeEvent(event));\n}\nfunction dispatchInputCheckedEvent(el, options) {\n  const { checked, bubbles = true } = options;\n  if (!el) return;\n  const win = getWindow(el);\n  if (!(el instanceof win.HTMLInputElement)) return;\n  setElementChecked(el, checked);\n  const event = new win.Event(\"click\", { bubbles });\n  el.dispatchEvent(markAsInternalChangeEvent(event));\n}\nfunction isFormElement(el) {\n  return el.matches(\"textarea, input, select, button\");\n}\nfunction trackFormReset(el, callback) {\n  if (!el) return;\n  const form = isFormElement(el) ? el.form : el.closest(\"form\");\n  const onReset = (e) => {\n    if (e.defaultPrevented) return;\n    callback();\n  };\n  form?.addEventListener(\"reset\", onReset, { passive: true });\n  return () => form?.removeEventListener(\"reset\", onReset);\n}\nfunction trackFieldsetDisabled(el, callback) {\n  const fieldset = el?.closest(\"fieldset\");\n  if (!fieldset) return;\n  callback(fieldset.disabled);\n  const win = getWindow(fieldset);\n  const obs = new win.MutationObserver(() => callback(fieldset.disabled));\n  obs.observe(fieldset, {\n    attributes: true,\n    attributeFilter: [\"disabled\"]\n  });\n  return () => obs.disconnect();\n}\nfunction trackFormControl(el, options) {\n  if (!el) return;\n  const { onFieldsetDisabledChange, onFormReset } = options;\n  const cleanups = [trackFormReset(el, onFormReset), trackFieldsetDisabled(el, onFieldsetDisabledChange)];\n  return () => cleanups.forEach((cleanup) => cleanup?.());\n}\nvar INTERNAL_CHANGE_EVENT = /* @__PURE__ */ Symbol.for(\"zag.changeEvent\");\nfunction isInternalChangeEvent(e) {\n  return Object.prototype.hasOwnProperty.call(e, INTERNAL_CHANGE_EVENT);\n}\nfunction markAsInternalChangeEvent(event) {\n  if (isInternalChangeEvent(event)) return event;\n  Object.defineProperty(event, INTERNAL_CHANGE_EVENT, { value: true });\n  return event;\n}\nexport {\n  dispatchInputCheckedEvent,\n  dispatchInputValueEvent,\n  isInternalChangeEvent,\n  markAsInternalChangeEvent,\n  setElementChecked,\n  setElementValue,\n  trackFormControl\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/set.ts\nimport { noop } from \"./shared.mjs\";\nfunction setAttribute(el, attr, v) {\n  const prev = el.getAttribute(attr);\n  const exists = prev != null;\n  if (prev === v) return noop;\n  el.setAttribute(attr, v);\n  return () => {\n    if (!exists) {\n      el.removeAttribute(attr);\n    } else {\n      el.setAttribute(attr, prev);\n    }\n  };\n}\nfunction setProperty(el, prop, v) {\n  const exists = prop in el;\n  const prev = el[prop];\n  if (prev === v) return noop;\n  el[prop] = v;\n  return () => {\n    if (!exists) {\n      delete el[prop];\n    } else {\n      el[prop] = prev;\n    }\n  };\n}\nfunction setStyle(el, style) {\n  if (!el) return noop;\n  const prev = Object.keys(style).reduce((acc, key) => {\n    acc[key] = el.style.getPropertyValue(key);\n    return acc;\n  }, {});\n  if (isEqual(prev, style)) return noop;\n  Object.assign(el.style, style);\n  return () => {\n    Object.assign(el.style, prev);\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  };\n}\nfunction setStyleProperty(el, prop, value) {\n  if (!el) return noop;\n  const prev = el.style.getPropertyValue(prop);\n  if (prev === value) return noop;\n  el.style.setProperty(prop, value);\n  return () => {\n    el.style.setProperty(prop, prev);\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  };\n}\nfunction isEqual(a, b) {\n  return Object.keys(a).every((key) => a[key] === b[key]);\n}\nexport {\n  setAttribute,\n  setProperty,\n  setStyle,\n  setStyleProperty\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/shared.ts\nvar clamp = (value) => Math.max(0, Math.min(1, value));\nvar wrap = (v, idx) => {\n  return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nvar pipe = (...fns) => (arg) => fns.reduce((acc, fn) => fn(acc), arg);\nvar noop = () => void 0;\nvar isObject = (v) => typeof v === \"object\" && v !== null;\nvar MAX_Z_INDEX = 2147483647;\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\nvar sanitize = (str) => str.split(\"\").map((char) => {\n  const code = char.charCodeAt(0);\n  if (code > 0 && code < 128) return char;\n  if (code >= 128 && code <= 255) return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n  return \"\";\n}).join(\"\").trim();\nexport {\n  MAX_Z_INDEX,\n  ariaAttr,\n  clamp,\n  dataAttr,\n  isObject,\n  noop,\n  pipe,\n  sanitize,\n  wrap\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/tabbable.ts\nimport { getActiveElement, isEditableElement, isElementVisible, isHTMLElement, isInputElement } from \"./node.mjs\";\nvar isFrame = (el) => isHTMLElement(el) && el.tagName === \"IFRAME\";\nvar NATURALLY_TABBABLE_REGEX = /^(audio|video|details)$/;\nfunction parseTabIndex(el) {\n  const attr = el.getAttribute(\"tabindex\");\n  if (!attr) return NaN;\n  return parseInt(attr, 10);\n}\nvar hasTabIndex = (el) => !Number.isNaN(parseTabIndex(el));\nvar hasNegativeTabIndex = (el) => parseTabIndex(el) < 0;\nfunction isRadioInput(element) {\n  return isInputElement(element) && element.type === \"radio\";\n}\nfunction isTabbableRadio(element) {\n  if (!isRadioInput(element) || !element.name) return true;\n  if (element.checked) return true;\n  const selector = `input[type=\"radio\"][name=\"${CSS.escape(element.name)}\"]`;\n  const scope = element.form ?? element.ownerDocument;\n  const group = Array.from(scope.querySelectorAll(selector)).filter(\n    (radio) => radio.form === element.form && isFocusable(radio)\n  );\n  const checked = group.find((radio) => radio.checked);\n  if (checked) return checked === element;\n  return group[0] === element;\n}\nfunction getShadowRootForNode(element, getShadowRoot) {\n  if (!getShadowRoot) return null;\n  if (getShadowRoot === true) {\n    return element.shadowRoot || null;\n  }\n  const result = getShadowRoot(element);\n  return (result === true ? element.shadowRoot : result) || null;\n}\nfunction collectElementsWithShadowDOM(elements, getShadowRoot, filterFn) {\n  const allElements = [...elements];\n  const toProcess = [...elements];\n  const processed = /* @__PURE__ */ new Set();\n  const positionMap = /* @__PURE__ */ new Map();\n  elements.forEach((el, i) => positionMap.set(el, i));\n  let processIndex = 0;\n  while (processIndex < toProcess.length) {\n    const element = toProcess[processIndex++];\n    if (!element || processed.has(element)) continue;\n    processed.add(element);\n    const shadowRoot = getShadowRootForNode(element, getShadowRoot);\n    if (shadowRoot) {\n      const shadowElements = Array.from(shadowRoot.querySelectorAll(focusableSelector)).filter(filterFn);\n      const hostIndex = positionMap.get(element);\n      if (hostIndex !== void 0) {\n        const insertPosition = hostIndex + 1;\n        allElements.splice(insertPosition, 0, ...shadowElements);\n        shadowElements.forEach((el, i) => {\n          positionMap.set(el, insertPosition + i);\n        });\n        for (let i = insertPosition + shadowElements.length; i < allElements.length; i++) {\n          positionMap.set(allElements[i], i);\n        }\n      } else {\n        const insertPosition = allElements.length;\n        allElements.push(...shadowElements);\n        shadowElements.forEach((el, i) => {\n          positionMap.set(el, insertPosition + i);\n        });\n      }\n      toProcess.push(...shadowElements);\n    }\n  }\n  return allElements;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, options = {}) => {\n  if (!container) return [];\n  const { includeContainer = false, getShadowRoot } = options;\n  const elements = Array.from(container.querySelectorAll(focusableSelector));\n  const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n  if (include && isHTMLElement(container) && isFocusable(container)) {\n    elements.unshift(container);\n  }\n  const focusableElements = [];\n  for (const element of elements) {\n    if (!isFocusable(element)) continue;\n    if (isFrame(element) && element.contentDocument) {\n      const frameBody = element.contentDocument.body;\n      focusableElements.push(...getFocusables(frameBody, { getShadowRoot }));\n      continue;\n    }\n    focusableElements.push(element);\n  }\n  if (getShadowRoot) {\n    return collectElementsWithShadowDOM(focusableElements, getShadowRoot, isFocusable);\n  }\n  return focusableElements;\n};\nfunction isFocusable(element) {\n  if (!isHTMLElement(element) || element.closest(\"[inert]\")) return false;\n  return element.matches(focusableSelector) && isElementVisible(element);\n}\nfunction getFirstFocusable(container, options = {}) {\n  const [first] = getFocusables(container, options);\n  return first || null;\n}\nfunction getTabbables(container, options = {}) {\n  if (!container) return [];\n  const { includeContainer, getShadowRoot } = options;\n  const elements = Array.from(container.querySelectorAll(focusableSelector));\n  if (includeContainer && isTabbable(container)) {\n    elements.unshift(container);\n  }\n  const tabbableElements = [];\n  for (const element of elements) {\n    if (!isTabbable(element)) continue;\n    if (isFrame(element) && element.contentDocument) {\n      const frameBody = element.contentDocument.body;\n      tabbableElements.push(...getTabbables(frameBody, { getShadowRoot }));\n      continue;\n    }\n    tabbableElements.push(element);\n  }\n  if (getShadowRoot) {\n    const allElements = collectElementsWithShadowDOM(tabbableElements, getShadowRoot, isTabbable);\n    if (!allElements.length && includeContainer) {\n      return elements;\n    }\n    return allElements;\n  }\n  if (!tabbableElements.length && includeContainer) {\n    return elements;\n  }\n  return tabbableElements;\n}\nfunction isTabbable(el) {\n  if (isHTMLElement(el) && el.tabIndex > 0) return true;\n  if (!isFocusable(el) || hasNegativeTabIndex(el)) return false;\n  return isTabbableRadio(el);\n}\nfunction getFirstTabbable(container, options = {}) {\n  const [first] = getTabbables(container, options);\n  return first || null;\n}\nfunction getLastTabbable(container, options = {}) {\n  const elements = getTabbables(container, options);\n  return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, options = {}) {\n  const elements = getTabbables(container, options);\n  const first = elements[0] || null;\n  const last = elements[elements.length - 1] || null;\n  return [first, last];\n}\nfunction getNextTabbable(container, options = {}) {\n  const { current, getShadowRoot } = options;\n  const tabbables = getTabbables(container, { getShadowRoot });\n  const doc = container?.ownerDocument || document;\n  const currentElement = current ?? getActiveElement(doc);\n  if (!currentElement) return null;\n  const index = tabbables.indexOf(currentElement);\n  return tabbables[index + 1] || null;\n}\nfunction getTabIndex(node) {\n  if (node.tabIndex < 0) {\n    if ((NATURALLY_TABBABLE_REGEX.test(node.localName) || isEditableElement(node)) && !hasTabIndex(node)) {\n      return 0;\n    }\n  }\n  return node.tabIndex;\n}\nexport {\n  getFirstFocusable,\n  getFirstTabbable,\n  getFocusables,\n  getLastTabbable,\n  getNextTabbable,\n  getTabIndex,\n  getTabbableEdges,\n  getTabbables,\n  isFocusable,\n  isTabbable\n};\n"],"names":["window","Node","Element","HTMLElement","ShadowRoot","e","g","CSS","Object","i","Set","o","Symbol","Math","Array","Map","parseInt","NaN"],"mappings":"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"}