{"version":3,"sources":["jsdelivr-header.js","/npm/@alpinejs/focus@3.15.0/dist/module.esm.js"],"names":[],"mappings":"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","file":"/npm/@alpinejs/focus@3.15.0/dist/module.esm.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/@alpinejs/focus@3.15.0/dist/module.esm.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// node_modules/tabbable/dist/index.esm.js\nvar candidateSelectors = [\"input\", \"select\", \"textarea\", \"a[href]\", \"button\", \"[tabindex]:not(slot)\", \"audio[controls]\", \"video[controls]\", '[contenteditable]:not([contenteditable=\"false\"])', \"details>summary:first-of-type\", \"details\"];\nvar candidateSelector = /* @__PURE__ */ candidateSelectors.join(\",\");\nvar NoElement = typeof Element === \"undefined\";\nvar matches = NoElement ? function() {\n} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function(element) {\n  return element.getRootNode();\n} : function(element) {\n  return element.ownerDocument;\n};\nvar getCandidates = function getCandidates2(el, includeContainer, filter) {\n  var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n  if (includeContainer && matches.call(el, candidateSelector)) {\n    candidates.unshift(el);\n  }\n  candidates = candidates.filter(filter);\n  return candidates;\n};\nvar getCandidatesIteratively = function getCandidatesIteratively2(elements, includeContainer, options) {\n  var candidates = [];\n  var elementsToCheck = Array.from(elements);\n  while (elementsToCheck.length) {\n    var element = elementsToCheck.shift();\n    if (element.tagName === \"SLOT\") {\n      var assigned = element.assignedElements();\n      var content = assigned.length ? assigned : element.children;\n      var nestedCandidates = getCandidatesIteratively2(content, true, options);\n      if (options.flatten) {\n        candidates.push.apply(candidates, nestedCandidates);\n      } else {\n        candidates.push({\n          scope: element,\n          candidates: nestedCandidates\n        });\n      }\n    } else {\n      var validCandidate = matches.call(element, candidateSelector);\n      if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n        candidates.push(element);\n      }\n      var shadowRoot = element.shadowRoot || // check for an undisclosed shadow\n      typeof options.getShadowRoot === \"function\" && options.getShadowRoot(element);\n      var validShadowRoot = !options.shadowRootFilter || options.shadowRootFilter(element);\n      if (shadowRoot && validShadowRoot) {\n        var _nestedCandidates = getCandidatesIteratively2(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n        if (options.flatten) {\n          candidates.push.apply(candidates, _nestedCandidates);\n        } else {\n          candidates.push({\n            scope: element,\n            candidates: _nestedCandidates\n          });\n        }\n      } else {\n        elementsToCheck.unshift.apply(elementsToCheck, element.children);\n      }\n    }\n  }\n  return candidates;\n};\nvar getTabindex = function getTabindex2(node, isScope) {\n  if (node.tabIndex < 0) {\n    if ((isScope || /^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || node.isContentEditable) && isNaN(parseInt(node.getAttribute(\"tabindex\"), 10))) {\n      return 0;\n    }\n  }\n  return node.tabIndex;\n};\nvar sortOrderedTabbables = function sortOrderedTabbables2(a, b) {\n  return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\nvar isInput = function isInput2(node) {\n  return node.tagName === \"INPUT\";\n};\nvar isHiddenInput = function isHiddenInput2(node) {\n  return isInput(node) && node.type === \"hidden\";\n};\nvar isDetailsWithSummary = function isDetailsWithSummary2(node) {\n  var r = node.tagName === \"DETAILS\" && Array.prototype.slice.apply(node.children).some(function(child) {\n    return child.tagName === \"SUMMARY\";\n  });\n  return r;\n};\nvar getCheckedRadio = function getCheckedRadio2(nodes, form) {\n  for (var i = 0; i < nodes.length; i++) {\n    if (nodes[i].checked && nodes[i].form === form) {\n      return nodes[i];\n    }\n  }\n};\nvar isTabbableRadio = function isTabbableRadio2(node) {\n  if (!node.name) {\n    return true;\n  }\n  var radioScope = node.form || getRootNode(node);\n  var queryRadios = function queryRadios2(name) {\n    return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n  };\n  var radioSet;\n  if (typeof window !== \"undefined\" && typeof window.CSS !== \"undefined\" && typeof window.CSS.escape === \"function\") {\n    radioSet = queryRadios(window.CSS.escape(node.name));\n  } else {\n    try {\n      radioSet = queryRadios(node.name);\n    } catch (err) {\n      console.error(\"Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s\", err.message);\n      return false;\n    }\n  }\n  var checked = getCheckedRadio(radioSet, node.form);\n  return !checked || checked === node;\n};\nvar isRadio = function isRadio2(node) {\n  return isInput(node) && node.type === \"radio\";\n};\nvar isNonTabbableRadio = function isNonTabbableRadio2(node) {\n  return isRadio(node) && !isTabbableRadio(node);\n};\nvar isZeroArea = function isZeroArea2(node) {\n  var _node$getBoundingClie = node.getBoundingClientRect(), width = _node$getBoundingClie.width, height = _node$getBoundingClie.height;\n  return width === 0 && height === 0;\n};\nvar isHidden = function isHidden2(node, _ref) {\n  var displayCheck = _ref.displayCheck, getShadowRoot = _ref.getShadowRoot;\n  if (getComputedStyle(node).visibility === \"hidden\") {\n    return true;\n  }\n  var isDirectSummary = matches.call(node, \"details>summary:first-of-type\");\n  var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n  if (matches.call(nodeUnderDetails, \"details:not([open]) *\")) {\n    return true;\n  }\n  var nodeRootHost = getRootNode(node).host;\n  var nodeIsAttached = (nodeRootHost === null || nodeRootHost === void 0 ? void 0 : nodeRootHost.ownerDocument.contains(nodeRootHost)) || node.ownerDocument.contains(node);\n  if (!displayCheck || displayCheck === \"full\") {\n    if (typeof getShadowRoot === \"function\") {\n      var originalNode = node;\n      while (node) {\n        var parentElement = node.parentElement;\n        var rootNode = getRootNode(node);\n        if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true) {\n          return isZeroArea(node);\n        } else if (node.assignedSlot) {\n          node = node.assignedSlot;\n        } else if (!parentElement && rootNode !== node.ownerDocument) {\n          node = rootNode.host;\n        } else {\n          node = parentElement;\n        }\n      }\n      node = originalNode;\n    }\n    if (nodeIsAttached) {\n      return !node.getClientRects().length;\n    }\n  } else if (displayCheck === \"non-zero-area\") {\n    return isZeroArea(node);\n  }\n  return false;\n};\nvar isDisabledFromFieldset = function isDisabledFromFieldset2(node) {\n  if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n    var parentNode = node.parentElement;\n    while (parentNode) {\n      if (parentNode.tagName === \"FIELDSET\" && parentNode.disabled) {\n        for (var i = 0; i < parentNode.children.length; i++) {\n          var child = parentNode.children.item(i);\n          if (child.tagName === \"LEGEND\") {\n            return matches.call(parentNode, \"fieldset[disabled] *\") ? true : !child.contains(node);\n          }\n        }\n        return true;\n      }\n      parentNode = parentNode.parentElement;\n    }\n  }\n  return false;\n};\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable2(options, node) {\n  if (node.disabled || isHiddenInput(node) || isHidden(node, options) || // For a details element with a summary, the summary element gets the focus\n  isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n    return false;\n  }\n  return true;\n};\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable2(options, node) {\n  if (isNonTabbableRadio(node) || getTabindex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n    return false;\n  }\n  return true;\n};\nvar isValidShadowRootTabbable = function isValidShadowRootTabbable2(shadowHostNode) {\n  var tabIndex = parseInt(shadowHostNode.getAttribute(\"tabindex\"), 10);\n  if (isNaN(tabIndex) || tabIndex >= 0) {\n    return true;\n  }\n  return false;\n};\nvar sortByOrder = function sortByOrder2(candidates) {\n  var regularTabbables = [];\n  var orderedTabbables = [];\n  candidates.forEach(function(item, i) {\n    var isScope = !!item.scope;\n    var element = isScope ? item.scope : item;\n    var candidateTabindex = getTabindex(element, isScope);\n    var elements = isScope ? sortByOrder2(item.candidates) : element;\n    if (candidateTabindex === 0) {\n      isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n    } else {\n      orderedTabbables.push({\n        documentOrder: i,\n        tabIndex: candidateTabindex,\n        item,\n        isScope,\n        content: elements\n      });\n    }\n  });\n  return orderedTabbables.sort(sortOrderedTabbables).reduce(function(acc, sortable) {\n    sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n    return acc;\n  }, []).concat(regularTabbables);\n};\nvar tabbable = function tabbable2(el, options) {\n  options = options || {};\n  var candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively([el], options.includeContainer, {\n      filter: isNodeMatchingSelectorTabbable.bind(null, options),\n      flatten: false,\n      getShadowRoot: options.getShadowRoot,\n      shadowRootFilter: isValidShadowRootTabbable\n    });\n  } else {\n    candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n  }\n  return sortByOrder(candidates);\n};\nvar focusable = function focusable2(el, options) {\n  options = options || {};\n  var candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively([el], options.includeContainer, {\n      filter: isNodeMatchingSelectorFocusable.bind(null, options),\n      flatten: true,\n      getShadowRoot: options.getShadowRoot\n    });\n  } else {\n    candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n  }\n  return candidates;\n};\nvar isTabbable = function isTabbable2(node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error(\"No node provided\");\n  }\n  if (matches.call(node, candidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorTabbable(options, node);\n};\nvar focusableCandidateSelector = /* @__PURE__ */ candidateSelectors.concat(\"iframe\").join(\",\");\nvar isFocusable = function isFocusable2(node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error(\"No node provided\");\n  }\n  if (matches.call(node, focusableCandidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorFocusable(options, node);\n};\n\n// node_modules/focus-trap/dist/focus-trap.esm.js\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function(sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), true).forEach(function(key) {\n      _defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}\nvar activeFocusTraps = function() {\n  var trapQueue = [];\n  return {\n    activateTrap: function activateTrap(trap) {\n      if (trapQueue.length > 0) {\n        var activeTrap = trapQueue[trapQueue.length - 1];\n        if (activeTrap !== trap) {\n          activeTrap.pause();\n        }\n      }\n      var trapIndex = trapQueue.indexOf(trap);\n      if (trapIndex === -1) {\n        trapQueue.push(trap);\n      } else {\n        trapQueue.splice(trapIndex, 1);\n        trapQueue.push(trap);\n      }\n    },\n    deactivateTrap: function deactivateTrap(trap) {\n      var trapIndex = trapQueue.indexOf(trap);\n      if (trapIndex !== -1) {\n        trapQueue.splice(trapIndex, 1);\n      }\n      if (trapQueue.length > 0) {\n        trapQueue[trapQueue.length - 1].unpause();\n      }\n    }\n  };\n}();\nvar isSelectableInput = function isSelectableInput2(node) {\n  return node.tagName && node.tagName.toLowerCase() === \"input\" && typeof node.select === \"function\";\n};\nvar isEscapeEvent = function isEscapeEvent2(e) {\n  return e.key === \"Escape\" || e.key === \"Esc\" || e.keyCode === 27;\n};\nvar isTabEvent = function isTabEvent2(e) {\n  return e.key === \"Tab\" || e.keyCode === 9;\n};\nvar delay = function delay2(fn) {\n  return setTimeout(fn, 0);\n};\nvar findIndex = function findIndex2(arr, fn) {\n  var idx = -1;\n  arr.every(function(value, i) {\n    if (fn(value)) {\n      idx = i;\n      return false;\n    }\n    return true;\n  });\n  return idx;\n};\nvar valueOrHandler = function valueOrHandler2(value) {\n  for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    params[_key - 1] = arguments[_key];\n  }\n  return typeof value === \"function\" ? value.apply(void 0, params) : value;\n};\nvar getActualTarget = function getActualTarget2(event) {\n  return event.target.shadowRoot && typeof event.composedPath === \"function\" ? event.composedPath()[0] : event.target;\n};\nvar createFocusTrap = function createFocusTrap2(elements, userOptions) {\n  var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document;\n  var config = _objectSpread2({\n    returnFocusOnDeactivate: true,\n    escapeDeactivates: true,\n    delayInitialFocus: true\n  }, userOptions);\n  var state = {\n    // containers given to createFocusTrap()\n    // @type {Array<HTMLElement>}\n    containers: [],\n    // list of objects identifying tabbable nodes in `containers` in the trap\n    // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n    //  is active, but the trap should never get to a state where there isn't at least one group\n    //  with at least one tabbable node in it (that would lead to an error condition that would\n    //  result in an error being thrown)\n    // @type {Array<{\n    //   container: HTMLElement,\n    //   tabbableNodes: Array<HTMLElement>, // empty if none\n    //   focusableNodes: Array<HTMLElement>, // empty if none\n    //   firstTabbableNode: HTMLElement|null,\n    //   lastTabbableNode: HTMLElement|null,\n    //   nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n    // }>}\n    containerGroups: [],\n    // same order/length as `containers` list\n    // references to objects in `containerGroups`, but only those that actually have\n    //  tabbable nodes in them\n    // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n    //  the same length\n    tabbableGroups: [],\n    nodeFocusedBeforeActivation: null,\n    mostRecentlyFocusedNode: null,\n    active: false,\n    paused: false,\n    // timer ID for when delayInitialFocus is true and initial focus in this trap\n    //  has been delayed during activation\n    delayInitialFocusTimer: void 0\n  };\n  var trap;\n  var getOption = function getOption2(configOverrideOptions, optionName, configOptionName) {\n    return configOverrideOptions && configOverrideOptions[optionName] !== void 0 ? configOverrideOptions[optionName] : config[configOptionName || optionName];\n  };\n  var findContainerIndex = function findContainerIndex2(element) {\n    return state.containerGroups.findIndex(function(_ref) {\n      var container = _ref.container, tabbableNodes = _ref.tabbableNodes;\n      return container.contains(element) || // fall back to explicit tabbable search which will take into consideration any\n      //  web components if the `tabbableOptions.getShadowRoot` option was used for\n      //  the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n      //  look inside web components even if open)\n      tabbableNodes.find(function(node) {\n        return node === element;\n      });\n    });\n  };\n  var getNodeForOption = function getNodeForOption2(optionName) {\n    var optionValue = config[optionName];\n    if (typeof optionValue === \"function\") {\n      for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        params[_key2 - 1] = arguments[_key2];\n      }\n      optionValue = optionValue.apply(void 0, params);\n    }\n    if (optionValue === true) {\n      optionValue = void 0;\n    }\n    if (!optionValue) {\n      if (optionValue === void 0 || optionValue === false) {\n        return optionValue;\n      }\n      throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n    }\n    var node = optionValue;\n    if (typeof optionValue === \"string\") {\n      node = doc.querySelector(optionValue);\n      if (!node) {\n        throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n      }\n    }\n    return node;\n  };\n  var getInitialFocusNode = function getInitialFocusNode2() {\n    var node = getNodeForOption(\"initialFocus\");\n    if (node === false) {\n      return false;\n    }\n    if (node === void 0) {\n      if (findContainerIndex(doc.activeElement) >= 0) {\n        node = doc.activeElement;\n      } else {\n        var firstTabbableGroup = state.tabbableGroups[0];\n        var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n        node = firstTabbableNode || getNodeForOption(\"fallbackFocus\");\n      }\n    }\n    if (!node) {\n      throw new Error(\"Your focus-trap needs to have at least one focusable element\");\n    }\n    return node;\n  };\n  var updateTabbableNodes = function updateTabbableNodes2() {\n    state.containerGroups = state.containers.map(function(container) {\n      var tabbableNodes = tabbable(container, config.tabbableOptions);\n      var focusableNodes = focusable(container, config.tabbableOptions);\n      return {\n        container,\n        tabbableNodes,\n        focusableNodes,\n        firstTabbableNode: tabbableNodes.length > 0 ? tabbableNodes[0] : null,\n        lastTabbableNode: tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : null,\n        /**\n         * Finds the __tabbable__ node that follows the given node in the specified direction,\n         *  in this container, if any.\n         * @param {HTMLElement} node\n         * @param {boolean} [forward] True if going in forward tab order; false if going\n         *  in reverse.\n         * @returns {HTMLElement|undefined} The next tabbable node, if any.\n         */\n        nextTabbableNode: function nextTabbableNode(node) {\n          var forward = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n          var nodeIdx = focusableNodes.findIndex(function(n) {\n            return n === node;\n          });\n          if (nodeIdx < 0) {\n            return void 0;\n          }\n          if (forward) {\n            return focusableNodes.slice(nodeIdx + 1).find(function(n) {\n              return isTabbable(n, config.tabbableOptions);\n            });\n          }\n          return focusableNodes.slice(0, nodeIdx).reverse().find(function(n) {\n            return isTabbable(n, config.tabbableOptions);\n          });\n        }\n      };\n    });\n    state.tabbableGroups = state.containerGroups.filter(function(group) {\n      return group.tabbableNodes.length > 0;\n    });\n    if (state.tabbableGroups.length <= 0 && !getNodeForOption(\"fallbackFocus\")) {\n      throw new Error(\"Your focus-trap must have at least one container with at least one tabbable node in it at all times\");\n    }\n  };\n  var tryFocus = function tryFocus2(node) {\n    if (node === false) {\n      return;\n    }\n    if (node === doc.activeElement) {\n      return;\n    }\n    if (!node || !node.focus) {\n      tryFocus2(getInitialFocusNode());\n      return;\n    }\n    node.focus({\n      preventScroll: !!config.preventScroll\n    });\n    state.mostRecentlyFocusedNode = node;\n    if (isSelectableInput(node)) {\n      node.select();\n    }\n  };\n  var getReturnFocusNode = function getReturnFocusNode2(previousActiveElement) {\n    var node = getNodeForOption(\"setReturnFocus\", previousActiveElement);\n    return node ? node : node === false ? false : previousActiveElement;\n  };\n  var checkPointerDown = function checkPointerDown2(e) {\n    var target = getActualTarget(e);\n    if (findContainerIndex(target) >= 0) {\n      return;\n    }\n    if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n      trap.deactivate({\n        // if, on deactivation, we should return focus to the node originally-focused\n        //  when the trap was activated (or the configured `setReturnFocus` node),\n        //  then assume it's also OK to return focus to the outside node that was\n        //  just clicked, causing deactivation, as long as that node is focusable;\n        //  if it isn't focusable, then return focus to the original node focused\n        //  on activation (or the configured `setReturnFocus` node)\n        // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n        //  which will result in the outside click setting focus to the node\n        //  that was clicked, whether it's focusable or not; by setting\n        //  `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n        //  on activation (or the configured `setReturnFocus` node)\n        returnFocus: config.returnFocusOnDeactivate && !isFocusable(target, config.tabbableOptions)\n      });\n      return;\n    }\n    if (valueOrHandler(config.allowOutsideClick, e)) {\n      return;\n    }\n    e.preventDefault();\n  };\n  var checkFocusIn = function checkFocusIn2(e) {\n    var target = getActualTarget(e);\n    var targetContained = findContainerIndex(target) >= 0;\n    if (targetContained || target instanceof Document) {\n      if (targetContained) {\n        state.mostRecentlyFocusedNode = target;\n      }\n    } else {\n      e.stopImmediatePropagation();\n      tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n    }\n  };\n  var checkTab = function checkTab2(e) {\n    var target = getActualTarget(e);\n    updateTabbableNodes();\n    var destinationNode = null;\n    if (state.tabbableGroups.length > 0) {\n      var containerIndex = findContainerIndex(target);\n      var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : void 0;\n      if (containerIndex < 0) {\n        if (e.shiftKey) {\n          destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;\n        } else {\n          destinationNode = state.tabbableGroups[0].firstTabbableNode;\n        }\n      } else if (e.shiftKey) {\n        var startOfGroupIndex = findIndex(state.tabbableGroups, function(_ref2) {\n          var firstTabbableNode = _ref2.firstTabbableNode;\n          return target === firstTabbableNode;\n        });\n        if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {\n          startOfGroupIndex = containerIndex;\n        }\n        if (startOfGroupIndex >= 0) {\n          var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n          var destinationGroup = state.tabbableGroups[destinationGroupIndex];\n          destinationNode = destinationGroup.lastTabbableNode;\n        }\n      } else {\n        var lastOfGroupIndex = findIndex(state.tabbableGroups, function(_ref3) {\n          var lastTabbableNode = _ref3.lastTabbableNode;\n          return target === lastTabbableNode;\n        });\n        if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {\n          lastOfGroupIndex = containerIndex;\n        }\n        if (lastOfGroupIndex >= 0) {\n          var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n          var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];\n          destinationNode = _destinationGroup.firstTabbableNode;\n        }\n      }\n    } else {\n      destinationNode = getNodeForOption(\"fallbackFocus\");\n    }\n    if (destinationNode) {\n      e.preventDefault();\n      tryFocus(destinationNode);\n    }\n  };\n  var checkKey = function checkKey2(e) {\n    if (isEscapeEvent(e) && valueOrHandler(config.escapeDeactivates, e) !== false) {\n      e.preventDefault();\n      trap.deactivate();\n      return;\n    }\n    if (isTabEvent(e)) {\n      checkTab(e);\n      return;\n    }\n  };\n  var checkClick = function checkClick2(e) {\n    var target = getActualTarget(e);\n    if (findContainerIndex(target) >= 0) {\n      return;\n    }\n    if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n      return;\n    }\n    if (valueOrHandler(config.allowOutsideClick, e)) {\n      return;\n    }\n    e.preventDefault();\n    e.stopImmediatePropagation();\n  };\n  var addListeners = function addListeners2() {\n    if (!state.active) {\n      return;\n    }\n    activeFocusTraps.activateTrap(trap);\n    state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function() {\n      tryFocus(getInitialFocusNode());\n    }) : tryFocus(getInitialFocusNode());\n    doc.addEventListener(\"focusin\", checkFocusIn, true);\n    doc.addEventListener(\"mousedown\", checkPointerDown, {\n      capture: true,\n      passive: false\n    });\n    doc.addEventListener(\"touchstart\", checkPointerDown, {\n      capture: true,\n      passive: false\n    });\n    doc.addEventListener(\"click\", checkClick, {\n      capture: true,\n      passive: false\n    });\n    doc.addEventListener(\"keydown\", checkKey, {\n      capture: true,\n      passive: false\n    });\n    return trap;\n  };\n  var removeListeners = function removeListeners2() {\n    if (!state.active) {\n      return;\n    }\n    doc.removeEventListener(\"focusin\", checkFocusIn, true);\n    doc.removeEventListener(\"mousedown\", checkPointerDown, true);\n    doc.removeEventListener(\"touchstart\", checkPointerDown, true);\n    doc.removeEventListener(\"click\", checkClick, true);\n    doc.removeEventListener(\"keydown\", checkKey, true);\n    return trap;\n  };\n  trap = {\n    get active() {\n      return state.active;\n    },\n    get paused() {\n      return state.paused;\n    },\n    activate: function activate(activateOptions) {\n      if (state.active) {\n        return this;\n      }\n      var onActivate = getOption(activateOptions, \"onActivate\");\n      var onPostActivate = getOption(activateOptions, \"onPostActivate\");\n      var checkCanFocusTrap = getOption(activateOptions, \"checkCanFocusTrap\");\n      if (!checkCanFocusTrap) {\n        updateTabbableNodes();\n      }\n      state.active = true;\n      state.paused = false;\n      state.nodeFocusedBeforeActivation = doc.activeElement;\n      if (onActivate) {\n        onActivate();\n      }\n      var finishActivation = function finishActivation2() {\n        if (checkCanFocusTrap) {\n          updateTabbableNodes();\n        }\n        addListeners();\n        if (onPostActivate) {\n          onPostActivate();\n        }\n      };\n      if (checkCanFocusTrap) {\n        checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);\n        return this;\n      }\n      finishActivation();\n      return this;\n    },\n    deactivate: function deactivate(deactivateOptions) {\n      if (!state.active) {\n        return this;\n      }\n      var options = _objectSpread2({\n        onDeactivate: config.onDeactivate,\n        onPostDeactivate: config.onPostDeactivate,\n        checkCanReturnFocus: config.checkCanReturnFocus\n      }, deactivateOptions);\n      clearTimeout(state.delayInitialFocusTimer);\n      state.delayInitialFocusTimer = void 0;\n      removeListeners();\n      state.active = false;\n      state.paused = false;\n      activeFocusTraps.deactivateTrap(trap);\n      var onDeactivate = getOption(options, \"onDeactivate\");\n      var onPostDeactivate = getOption(options, \"onPostDeactivate\");\n      var checkCanReturnFocus = getOption(options, \"checkCanReturnFocus\");\n      var returnFocus = getOption(options, \"returnFocus\", \"returnFocusOnDeactivate\");\n      if (onDeactivate) {\n        onDeactivate();\n      }\n      var finishDeactivation = function finishDeactivation2() {\n        delay(function() {\n          if (returnFocus) {\n            tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n          }\n          if (onPostDeactivate) {\n            onPostDeactivate();\n          }\n        });\n      };\n      if (returnFocus && checkCanReturnFocus) {\n        checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation);\n        return this;\n      }\n      finishDeactivation();\n      return this;\n    },\n    pause: function pause() {\n      if (state.paused || !state.active) {\n        return this;\n      }\n      state.paused = true;\n      removeListeners();\n      return this;\n    },\n    unpause: function unpause() {\n      if (!state.paused || !state.active) {\n        return this;\n      }\n      state.paused = false;\n      updateTabbableNodes();\n      addListeners();\n      return this;\n    },\n    updateContainerElements: function updateContainerElements(containerElements) {\n      var elementsAsArray = [].concat(containerElements).filter(Boolean);\n      state.containers = elementsAsArray.map(function(element) {\n        return typeof element === \"string\" ? doc.querySelector(element) : element;\n      });\n      if (state.active) {\n        updateTabbableNodes();\n      }\n      return this;\n    }\n  };\n  trap.updateContainerElements(elements);\n  return trap;\n};\n\n// packages/focus/src/index.js\nfunction src_default(Alpine) {\n  let lastFocused;\n  let currentFocused;\n  window.addEventListener(\"focusin\", () => {\n    lastFocused = currentFocused;\n    currentFocused = document.activeElement;\n  });\n  Alpine.magic(\"focus\", (el) => {\n    let within = el;\n    return {\n      __noscroll: false,\n      __wrapAround: false,\n      within(el2) {\n        within = el2;\n        return this;\n      },\n      withoutScrolling() {\n        this.__noscroll = true;\n        return this;\n      },\n      noscroll() {\n        this.__noscroll = true;\n        return this;\n      },\n      withWrapAround() {\n        this.__wrapAround = true;\n        return this;\n      },\n      wrap() {\n        return this.withWrapAround();\n      },\n      focusable(el2) {\n        return isFocusable(el2);\n      },\n      previouslyFocused() {\n        return lastFocused;\n      },\n      lastFocused() {\n        return lastFocused;\n      },\n      focused() {\n        return currentFocused;\n      },\n      focusables() {\n        if (Array.isArray(within))\n          return within;\n        return focusable(within, { displayCheck: \"none\" });\n      },\n      all() {\n        return this.focusables();\n      },\n      isFirst(el2) {\n        let els = this.all();\n        return els[0] && els[0].isSameNode(el2);\n      },\n      isLast(el2) {\n        let els = this.all();\n        return els.length && els.slice(-1)[0].isSameNode(el2);\n      },\n      getFirst() {\n        return this.all()[0];\n      },\n      getLast() {\n        return this.all().slice(-1)[0];\n      },\n      getNext() {\n        let list = this.all();\n        let current = document.activeElement;\n        if (list.indexOf(current) === -1)\n          return;\n        if (this.__wrapAround && list.indexOf(current) === list.length - 1) {\n          return list[0];\n        }\n        return list[list.indexOf(current) + 1];\n      },\n      getPrevious() {\n        let list = this.all();\n        let current = document.activeElement;\n        if (list.indexOf(current) === -1)\n          return;\n        if (this.__wrapAround && list.indexOf(current) === 0) {\n          return list.slice(-1)[0];\n        }\n        return list[list.indexOf(current) - 1];\n      },\n      first() {\n        this.focus(this.getFirst());\n      },\n      last() {\n        this.focus(this.getLast());\n      },\n      next() {\n        this.focus(this.getNext());\n      },\n      previous() {\n        this.focus(this.getPrevious());\n      },\n      prev() {\n        return this.previous();\n      },\n      focus(el2) {\n        if (!el2)\n          return;\n        setTimeout(() => {\n          if (!el2.hasAttribute(\"tabindex\"))\n            el2.setAttribute(\"tabindex\", \"0\");\n          el2.focus({ preventScroll: this.__noscroll });\n        });\n      }\n    };\n  });\n  Alpine.directive(\"trap\", Alpine.skipDuringClone(\n    (el, { expression, modifiers }, { effect, evaluateLater, cleanup }) => {\n      let evaluator = evaluateLater(expression);\n      let oldValue = false;\n      let options = {\n        escapeDeactivates: false,\n        allowOutsideClick: true,\n        fallbackFocus: () => el\n      };\n      let undoInert = () => {\n      };\n      if (modifiers.includes(\"noautofocus\")) {\n        options.initialFocus = false;\n      } else {\n        let autofocusEl = el.querySelector(\"[autofocus]\");\n        if (autofocusEl)\n          options.initialFocus = autofocusEl;\n      }\n      if (modifiers.includes(\"inert\")) {\n        options.onPostActivate = () => {\n          Alpine.nextTick(() => {\n            undoInert = setInert(el);\n          });\n        };\n      }\n      let trap = createFocusTrap(el, options);\n      let undoDisableScrolling = () => {\n      };\n      const releaseFocus = () => {\n        undoInert();\n        undoInert = () => {\n        };\n        undoDisableScrolling();\n        undoDisableScrolling = () => {\n        };\n        trap.deactivate({\n          returnFocus: !modifiers.includes(\"noreturn\")\n        });\n      };\n      effect(() => evaluator((value) => {\n        if (oldValue === value)\n          return;\n        if (value && !oldValue) {\n          if (modifiers.includes(\"noscroll\"))\n            undoDisableScrolling = disableScrolling();\n          setTimeout(() => {\n            trap.activate();\n          }, 15);\n        }\n        if (!value && oldValue) {\n          releaseFocus();\n        }\n        oldValue = !!value;\n      }));\n      cleanup(releaseFocus);\n    },\n    // When cloning, we only want to add aria-hidden attributes to the\n    // DOM and not try to actually trap, as trapping can mess with the\n    // live DOM and isn't just isolated to the cloned DOM.\n    (el, { expression, modifiers }, { evaluate }) => {\n      if (modifiers.includes(\"inert\") && evaluate(expression))\n        setInert(el);\n    }\n  ));\n}\nfunction setInert(el) {\n  let undos = [];\n  crawlSiblingsUp(el, (sibling) => {\n    let cache = sibling.hasAttribute(\"aria-hidden\");\n    sibling.setAttribute(\"aria-hidden\", \"true\");\n    undos.push(() => cache || sibling.removeAttribute(\"aria-hidden\"));\n  });\n  return () => {\n    while (undos.length)\n      undos.pop()();\n  };\n}\nfunction crawlSiblingsUp(el, callback) {\n  if (el.isSameNode(document.body) || !el.parentNode)\n    return;\n  Array.from(el.parentNode.children).forEach((sibling) => {\n    if (sibling.isSameNode(el)) {\n      crawlSiblingsUp(el.parentNode, callback);\n    } else {\n      callback(sibling);\n    }\n  });\n}\nfunction disableScrolling() {\n  let overflow = document.documentElement.style.overflow;\n  let paddingRight = document.documentElement.style.paddingRight;\n  let scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n  document.documentElement.style.overflow = \"hidden\";\n  document.documentElement.style.paddingRight = `${scrollbarWidth}px`;\n  return () => {\n    document.documentElement.style.overflow = overflow;\n    document.documentElement.style.paddingRight = paddingRight;\n  };\n}\n\n// packages/focus/builds/module.js\nvar module_default = src_default;\nexport {\n  module_default as default,\n  src_default as focus\n};\n/*! Bundled license information:\n\ntabbable/dist/index.esm.js:\n  (*!\n  * tabbable 5.3.3\n  * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n  *)\n\nfocus-trap/dist/focus-trap.esm.js:\n  (*!\n  * focus-trap 6.9.4\n  * @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE\n  *)\n*/\n"]}