@alpinejs/focus
Advanced tools
Comparing version 3.9.1 to 3.9.2
@@ -1,678 +0,626 @@ | ||
var __create = Object.create; | ||
var __defProp = Object.defineProperty; | ||
var __getProtoOf = Object.getPrototypeOf; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __getOwnPropNames = Object.getOwnPropertyNames; | ||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
var __markAsModule = (target) => __defProp(target, "__esModule", {value: true}); | ||
var __commonJS = (callback, module) => () => { | ||
if (!module) { | ||
module = {exports: {}}; | ||
callback(module.exports, module); | ||
// node_modules/tabbable/dist/index.esm.js | ||
/*! | ||
* tabbable 5.2.1 | ||
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE | ||
*/ | ||
var candidateSelectors = ["input", "select", "textarea", "a[href]", "button", "[tabindex]", "audio[controls]", "video[controls]", '[contenteditable]:not([contenteditable="false"])', "details>summary:first-of-type", "details"]; | ||
var candidateSelector = /* @__PURE__ */ candidateSelectors.join(","); | ||
var matches = typeof Element === "undefined" ? function() { | ||
} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; | ||
var getCandidates = function getCandidates2(el, includeContainer, filter) { | ||
var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector)); | ||
if (includeContainer && matches.call(el, candidateSelector)) { | ||
candidates.unshift(el); | ||
} | ||
return module.exports; | ||
candidates = candidates.filter(filter); | ||
return candidates; | ||
}; | ||
var __exportStar = (target, module, desc) => { | ||
if (module && typeof module === "object" || typeof module === "function") { | ||
for (let key of __getOwnPropNames(module)) | ||
if (!__hasOwnProp.call(target, key) && key !== "default") | ||
__defProp(target, key, {get: () => module[key], enumerable: !(desc = __getOwnPropDesc(module, key)) || desc.enumerable}); | ||
var isContentEditable = function isContentEditable2(node) { | ||
return node.contentEditable === "true"; | ||
}; | ||
var getTabindex = function getTabindex2(node) { | ||
var tabindexAttr = parseInt(node.getAttribute("tabindex"), 10); | ||
if (!isNaN(tabindexAttr)) { | ||
return tabindexAttr; | ||
} | ||
return target; | ||
if (isContentEditable(node)) { | ||
return 0; | ||
} | ||
if ((node.nodeName === "AUDIO" || node.nodeName === "VIDEO" || node.nodeName === "DETAILS") && node.getAttribute("tabindex") === null) { | ||
return 0; | ||
} | ||
return node.tabIndex; | ||
}; | ||
var __toModule = (module) => { | ||
return __exportStar(__markAsModule(__defProp(module != null ? __create(__getProtoOf(module)) : {}, "default", module && module.__esModule && "default" in module ? {get: () => module.default, enumerable: true} : {value: module, enumerable: true})), module); | ||
var sortOrderedTabbables = function sortOrderedTabbables2(a, b) { | ||
return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex; | ||
}; | ||
// node_modules/tabbable/dist/index.js | ||
var require_dist = __commonJS((exports) => { | ||
/*! | ||
* tabbable 5.2.1 | ||
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE | ||
*/ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", {value: true}); | ||
var candidateSelectors = ["input", "select", "textarea", "a[href]", "button", "[tabindex]", "audio[controls]", "video[controls]", '[contenteditable]:not([contenteditable="false"])', "details>summary:first-of-type", "details"]; | ||
var candidateSelector = /* @__PURE__ */ candidateSelectors.join(","); | ||
var matches = typeof Element === "undefined" ? function() { | ||
} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; | ||
var getCandidates = function getCandidates2(el, includeContainer, filter) { | ||
var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector)); | ||
if (includeContainer && matches.call(el, candidateSelector)) { | ||
candidates.unshift(el); | ||
var isInput = function isInput2(node) { | ||
return node.tagName === "INPUT"; | ||
}; | ||
var isHiddenInput = function isHiddenInput2(node) { | ||
return isInput(node) && node.type === "hidden"; | ||
}; | ||
var isDetailsWithSummary = function isDetailsWithSummary2(node) { | ||
var r = node.tagName === "DETAILS" && Array.prototype.slice.apply(node.children).some(function(child) { | ||
return child.tagName === "SUMMARY"; | ||
}); | ||
return r; | ||
}; | ||
var getCheckedRadio = function getCheckedRadio2(nodes, form) { | ||
for (var i = 0; i < nodes.length; i++) { | ||
if (nodes[i].checked && nodes[i].form === form) { | ||
return nodes[i]; | ||
} | ||
candidates = candidates.filter(filter); | ||
return candidates; | ||
} | ||
}; | ||
var isTabbableRadio = function isTabbableRadio2(node) { | ||
if (!node.name) { | ||
return true; | ||
} | ||
var radioScope = node.form || node.ownerDocument; | ||
var queryRadios = function queryRadios2(name) { | ||
return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]'); | ||
}; | ||
var isContentEditable = function isContentEditable2(node) { | ||
return node.contentEditable === "true"; | ||
}; | ||
var getTabindex = function getTabindex2(node) { | ||
var tabindexAttr = parseInt(node.getAttribute("tabindex"), 10); | ||
if (!isNaN(tabindexAttr)) { | ||
return tabindexAttr; | ||
var radioSet; | ||
if (typeof window !== "undefined" && typeof window.CSS !== "undefined" && typeof window.CSS.escape === "function") { | ||
radioSet = queryRadios(window.CSS.escape(node.name)); | ||
} else { | ||
try { | ||
radioSet = queryRadios(node.name); | ||
} catch (err) { | ||
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); | ||
return false; | ||
} | ||
if (isContentEditable(node)) { | ||
return 0; | ||
} | ||
var checked = getCheckedRadio(radioSet, node.form); | ||
return !checked || checked === node; | ||
}; | ||
var isRadio = function isRadio2(node) { | ||
return isInput(node) && node.type === "radio"; | ||
}; | ||
var isNonTabbableRadio = function isNonTabbableRadio2(node) { | ||
return isRadio(node) && !isTabbableRadio(node); | ||
}; | ||
var isHidden = function isHidden2(node, displayCheck) { | ||
if (getComputedStyle(node).visibility === "hidden") { | ||
return true; | ||
} | ||
var isDirectSummary = matches.call(node, "details>summary:first-of-type"); | ||
var nodeUnderDetails = isDirectSummary ? node.parentElement : node; | ||
if (matches.call(nodeUnderDetails, "details:not([open]) *")) { | ||
return true; | ||
} | ||
if (!displayCheck || displayCheck === "full") { | ||
while (node) { | ||
if (getComputedStyle(node).display === "none") { | ||
return true; | ||
} | ||
node = node.parentElement; | ||
} | ||
if ((node.nodeName === "AUDIO" || node.nodeName === "VIDEO" || node.nodeName === "DETAILS") && node.getAttribute("tabindex") === null) { | ||
return 0; | ||
} | ||
return node.tabIndex; | ||
}; | ||
var sortOrderedTabbables = function sortOrderedTabbables2(a, b) { | ||
return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex; | ||
}; | ||
var isInput = function isInput2(node) { | ||
return node.tagName === "INPUT"; | ||
}; | ||
var isHiddenInput = function isHiddenInput2(node) { | ||
return isInput(node) && node.type === "hidden"; | ||
}; | ||
var isDetailsWithSummary = function isDetailsWithSummary2(node) { | ||
var r = node.tagName === "DETAILS" && Array.prototype.slice.apply(node.children).some(function(child) { | ||
return child.tagName === "SUMMARY"; | ||
}); | ||
return r; | ||
}; | ||
var getCheckedRadio = function getCheckedRadio2(nodes, form) { | ||
for (var i = 0; i < nodes.length; i++) { | ||
if (nodes[i].checked && nodes[i].form === form) { | ||
return nodes[i]; | ||
} else if (displayCheck === "non-zero-area") { | ||
var _node$getBoundingClie = node.getBoundingClientRect(), width = _node$getBoundingClie.width, height = _node$getBoundingClie.height; | ||
return width === 0 && height === 0; | ||
} | ||
return false; | ||
}; | ||
var isDisabledFromFieldset = function isDisabledFromFieldset2(node) { | ||
if (isInput(node) || node.tagName === "SELECT" || node.tagName === "TEXTAREA" || node.tagName === "BUTTON") { | ||
var parentNode = node.parentElement; | ||
while (parentNode) { | ||
if (parentNode.tagName === "FIELDSET" && parentNode.disabled) { | ||
for (var i = 0; i < parentNode.children.length; i++) { | ||
var child = parentNode.children.item(i); | ||
if (child.tagName === "LEGEND") { | ||
if (child.contains(node)) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
} | ||
return true; | ||
} | ||
parentNode = parentNode.parentElement; | ||
} | ||
}; | ||
var isTabbableRadio = function isTabbableRadio2(node) { | ||
if (!node.name) { | ||
return true; | ||
} | ||
return false; | ||
}; | ||
var isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable2(options, node) { | ||
if (node.disabled || isHiddenInput(node) || isHidden(node, options.displayCheck) || isDetailsWithSummary(node) || isDisabledFromFieldset(node)) { | ||
return false; | ||
} | ||
return true; | ||
}; | ||
var isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable2(options, node) { | ||
if (!isNodeMatchingSelectorFocusable(options, node) || isNonTabbableRadio(node) || getTabindex(node) < 0) { | ||
return false; | ||
} | ||
return true; | ||
}; | ||
var tabbable = function tabbable2(el, options) { | ||
options = options || {}; | ||
var regularTabbables = []; | ||
var orderedTabbables = []; | ||
var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options)); | ||
candidates.forEach(function(candidate, i) { | ||
var candidateTabindex = getTabindex(candidate); | ||
if (candidateTabindex === 0) { | ||
regularTabbables.push(candidate); | ||
} else { | ||
orderedTabbables.push({ | ||
documentOrder: i, | ||
tabIndex: candidateTabindex, | ||
node: candidate | ||
}); | ||
} | ||
var radioScope = node.form || node.ownerDocument; | ||
var queryRadios = function queryRadios2(name) { | ||
return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]'); | ||
}; | ||
var radioSet; | ||
if (typeof window !== "undefined" && typeof window.CSS !== "undefined" && typeof window.CSS.escape === "function") { | ||
radioSet = queryRadios(window.CSS.escape(node.name)); | ||
}); | ||
var tabbableNodes = orderedTabbables.sort(sortOrderedTabbables).map(function(a) { | ||
return a.node; | ||
}).concat(regularTabbables); | ||
return tabbableNodes; | ||
}; | ||
var focusable = function focusable2(el, options) { | ||
options = options || {}; | ||
var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options)); | ||
return candidates; | ||
}; | ||
var focusableCandidateSelector = /* @__PURE__ */ candidateSelectors.concat("iframe").join(","); | ||
var isFocusable = function isFocusable2(node, options) { | ||
options = options || {}; | ||
if (!node) { | ||
throw new Error("No node provided"); | ||
} | ||
if (matches.call(node, focusableCandidateSelector) === false) { | ||
return false; | ||
} | ||
return isNodeMatchingSelectorFocusable(options, node); | ||
}; | ||
// node_modules/focus-trap/dist/focus-trap.esm.js | ||
/*! | ||
* focus-trap 6.6.1 | ||
* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE | ||
*/ | ||
function ownKeys(object, enumerableOnly) { | ||
var keys = Object.keys(object); | ||
if (Object.getOwnPropertySymbols) { | ||
var symbols = Object.getOwnPropertySymbols(object); | ||
if (enumerableOnly) { | ||
symbols = symbols.filter(function(sym) { | ||
return Object.getOwnPropertyDescriptor(object, sym).enumerable; | ||
}); | ||
} | ||
keys.push.apply(keys, symbols); | ||
} | ||
return keys; | ||
} | ||
function _objectSpread2(target) { | ||
for (var i = 1; i < arguments.length; i++) { | ||
var source = arguments[i] != null ? arguments[i] : {}; | ||
if (i % 2) { | ||
ownKeys(Object(source), true).forEach(function(key) { | ||
_defineProperty(target, key, source[key]); | ||
}); | ||
} else if (Object.getOwnPropertyDescriptors) { | ||
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); | ||
} else { | ||
try { | ||
radioSet = queryRadios(node.name); | ||
} catch (err) { | ||
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); | ||
return false; | ||
ownKeys(Object(source)).forEach(function(key) { | ||
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); | ||
}); | ||
} | ||
} | ||
return target; | ||
} | ||
function _defineProperty(obj, key, value) { | ||
if (key in obj) { | ||
Object.defineProperty(obj, key, { | ||
value, | ||
enumerable: true, | ||
configurable: true, | ||
writable: true | ||
}); | ||
} else { | ||
obj[key] = value; | ||
} | ||
return obj; | ||
} | ||
var activeFocusTraps = function() { | ||
var trapQueue = []; | ||
return { | ||
activateTrap: function activateTrap(trap) { | ||
if (trapQueue.length > 0) { | ||
var activeTrap = trapQueue[trapQueue.length - 1]; | ||
if (activeTrap !== trap) { | ||
activeTrap.pause(); | ||
} | ||
} | ||
var trapIndex = trapQueue.indexOf(trap); | ||
if (trapIndex === -1) { | ||
trapQueue.push(trap); | ||
} else { | ||
trapQueue.splice(trapIndex, 1); | ||
trapQueue.push(trap); | ||
} | ||
}, | ||
deactivateTrap: function deactivateTrap(trap) { | ||
var trapIndex = trapQueue.indexOf(trap); | ||
if (trapIndex !== -1) { | ||
trapQueue.splice(trapIndex, 1); | ||
} | ||
if (trapQueue.length > 0) { | ||
trapQueue[trapQueue.length - 1].unpause(); | ||
} | ||
} | ||
var checked = getCheckedRadio(radioSet, node.form); | ||
return !checked || checked === node; | ||
}; | ||
var isRadio = function isRadio2(node) { | ||
return isInput(node) && node.type === "radio"; | ||
}(); | ||
var isSelectableInput = function isSelectableInput2(node) { | ||
return node.tagName && node.tagName.toLowerCase() === "input" && typeof node.select === "function"; | ||
}; | ||
var isEscapeEvent = function isEscapeEvent2(e) { | ||
return e.key === "Escape" || e.key === "Esc" || e.keyCode === 27; | ||
}; | ||
var isTabEvent = function isTabEvent2(e) { | ||
return e.key === "Tab" || e.keyCode === 9; | ||
}; | ||
var delay = function delay2(fn) { | ||
return setTimeout(fn, 0); | ||
}; | ||
var findIndex = function findIndex2(arr, fn) { | ||
var idx = -1; | ||
arr.every(function(value, i) { | ||
if (fn(value)) { | ||
idx = i; | ||
return false; | ||
} | ||
return true; | ||
}); | ||
return idx; | ||
}; | ||
var valueOrHandler = function valueOrHandler2(value) { | ||
for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
params[_key - 1] = arguments[_key]; | ||
} | ||
return typeof value === "function" ? value.apply(void 0, params) : value; | ||
}; | ||
var createFocusTrap = function createFocusTrap2(elements, userOptions) { | ||
var doc = document; | ||
var config = _objectSpread2({ | ||
returnFocusOnDeactivate: true, | ||
escapeDeactivates: true, | ||
delayInitialFocus: true | ||
}, userOptions); | ||
var state = { | ||
containers: [], | ||
tabbableGroups: [], | ||
nodeFocusedBeforeActivation: null, | ||
mostRecentlyFocusedNode: null, | ||
active: false, | ||
paused: false, | ||
delayInitialFocusTimer: void 0 | ||
}; | ||
var isNonTabbableRadio = function isNonTabbableRadio2(node) { | ||
return isRadio(node) && !isTabbableRadio(node); | ||
var trap; | ||
var getOption = function getOption2(configOverrideOptions, optionName, configOptionName) { | ||
return configOverrideOptions && configOverrideOptions[optionName] !== void 0 ? configOverrideOptions[optionName] : config[configOptionName || optionName]; | ||
}; | ||
var isHidden = function isHidden2(node, displayCheck) { | ||
if (getComputedStyle(node).visibility === "hidden") { | ||
return true; | ||
var containersContain = function containersContain2(element) { | ||
return state.containers.some(function(container) { | ||
return container.contains(element); | ||
}); | ||
}; | ||
var getNodeForOption = function getNodeForOption2(optionName) { | ||
var optionValue = config[optionName]; | ||
if (!optionValue) { | ||
return null; | ||
} | ||
var isDirectSummary = matches.call(node, "details>summary:first-of-type"); | ||
var nodeUnderDetails = isDirectSummary ? node.parentElement : node; | ||
if (matches.call(nodeUnderDetails, "details:not([open]) *")) { | ||
return true; | ||
} | ||
if (!displayCheck || displayCheck === "full") { | ||
while (node) { | ||
if (getComputedStyle(node).display === "none") { | ||
return true; | ||
} | ||
node = node.parentElement; | ||
var node = optionValue; | ||
if (typeof optionValue === "string") { | ||
node = doc.querySelector(optionValue); | ||
if (!node) { | ||
throw new Error("`".concat(optionName, "` refers to no known node")); | ||
} | ||
} else if (displayCheck === "non-zero-area") { | ||
var _node$getBoundingClie = node.getBoundingClientRect(), width = _node$getBoundingClie.width, height = _node$getBoundingClie.height; | ||
return width === 0 && height === 0; | ||
} | ||
return false; | ||
}; | ||
var isDisabledFromFieldset = function isDisabledFromFieldset2(node) { | ||
if (isInput(node) || node.tagName === "SELECT" || node.tagName === "TEXTAREA" || node.tagName === "BUTTON") { | ||
var parentNode = node.parentElement; | ||
while (parentNode) { | ||
if (parentNode.tagName === "FIELDSET" && parentNode.disabled) { | ||
for (var i = 0; i < parentNode.children.length; i++) { | ||
var child = parentNode.children.item(i); | ||
if (child.tagName === "LEGEND") { | ||
if (child.contains(node)) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
} | ||
return true; | ||
} | ||
parentNode = parentNode.parentElement; | ||
if (typeof optionValue === "function") { | ||
node = optionValue(); | ||
if (!node) { | ||
throw new Error("`".concat(optionName, "` did not return a node")); | ||
} | ||
} | ||
return false; | ||
return node; | ||
}; | ||
var isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable2(options, node) { | ||
if (node.disabled || isHiddenInput(node) || isHidden(node, options.displayCheck) || isDetailsWithSummary(node) || isDisabledFromFieldset(node)) { | ||
var getInitialFocusNode = function getInitialFocusNode2() { | ||
var node; | ||
if (getOption({}, "initialFocus") === false) { | ||
return false; | ||
} | ||
return true; | ||
}; | ||
var isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable2(options, node) { | ||
if (!isNodeMatchingSelectorFocusable(options, node) || isNonTabbableRadio(node) || getTabindex(node) < 0) { | ||
return false; | ||
if (getNodeForOption("initialFocus") !== null) { | ||
node = getNodeForOption("initialFocus"); | ||
} else if (containersContain(doc.activeElement)) { | ||
node = doc.activeElement; | ||
} else { | ||
var firstTabbableGroup = state.tabbableGroups[0]; | ||
var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode; | ||
node = firstTabbableNode || getNodeForOption("fallbackFocus"); | ||
} | ||
return true; | ||
if (!node) { | ||
throw new Error("Your focus-trap needs to have at least one focusable element"); | ||
} | ||
return node; | ||
}; | ||
var tabbable2 = function tabbable3(el, options) { | ||
options = options || {}; | ||
var regularTabbables = []; | ||
var orderedTabbables = []; | ||
var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options)); | ||
candidates.forEach(function(candidate, i) { | ||
var candidateTabindex = getTabindex(candidate); | ||
if (candidateTabindex === 0) { | ||
regularTabbables.push(candidate); | ||
} else { | ||
orderedTabbables.push({ | ||
documentOrder: i, | ||
tabIndex: candidateTabindex, | ||
node: candidate | ||
}); | ||
var updateTabbableNodes = function updateTabbableNodes2() { | ||
state.tabbableGroups = state.containers.map(function(container) { | ||
var tabbableNodes = tabbable(container); | ||
if (tabbableNodes.length > 0) { | ||
return { | ||
container, | ||
firstTabbableNode: tabbableNodes[0], | ||
lastTabbableNode: tabbableNodes[tabbableNodes.length - 1] | ||
}; | ||
} | ||
return void 0; | ||
}).filter(function(group) { | ||
return !!group; | ||
}); | ||
var tabbableNodes = orderedTabbables.sort(sortOrderedTabbables).map(function(a) { | ||
return a.node; | ||
}).concat(regularTabbables); | ||
return tabbableNodes; | ||
if (state.tabbableGroups.length <= 0 && !getNodeForOption("fallbackFocus")) { | ||
throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times"); | ||
} | ||
}; | ||
var focusable2 = function focusable3(el, options) { | ||
options = options || {}; | ||
var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options)); | ||
return candidates; | ||
}; | ||
var isTabbable = function isTabbable2(node, options) { | ||
options = options || {}; | ||
if (!node) { | ||
throw new Error("No node provided"); | ||
var tryFocus = function tryFocus2(node) { | ||
if (node === false) { | ||
return; | ||
} | ||
if (matches.call(node, candidateSelector) === false) { | ||
return false; | ||
if (node === doc.activeElement) { | ||
return; | ||
} | ||
return isNodeMatchingSelectorTabbable(options, node); | ||
if (!node || !node.focus) { | ||
tryFocus2(getInitialFocusNode()); | ||
return; | ||
} | ||
node.focus({ | ||
preventScroll: !!config.preventScroll | ||
}); | ||
state.mostRecentlyFocusedNode = node; | ||
if (isSelectableInput(node)) { | ||
node.select(); | ||
} | ||
}; | ||
var focusableCandidateSelector = /* @__PURE__ */ candidateSelectors.concat("iframe").join(","); | ||
var isFocusable2 = function isFocusable3(node, options) { | ||
options = options || {}; | ||
if (!node) { | ||
throw new Error("No node provided"); | ||
var getReturnFocusNode = function getReturnFocusNode2(previousActiveElement) { | ||
var node = getNodeForOption("setReturnFocus"); | ||
return node ? node : previousActiveElement; | ||
}; | ||
var checkPointerDown = function checkPointerDown2(e) { | ||
if (containersContain(e.target)) { | ||
return; | ||
} | ||
if (matches.call(node, focusableCandidateSelector) === false) { | ||
return false; | ||
if (valueOrHandler(config.clickOutsideDeactivates, e)) { | ||
trap.deactivate({ | ||
returnFocus: config.returnFocusOnDeactivate && !isFocusable(e.target) | ||
}); | ||
return; | ||
} | ||
return isNodeMatchingSelectorFocusable(options, node); | ||
if (valueOrHandler(config.allowOutsideClick, e)) { | ||
return; | ||
} | ||
e.preventDefault(); | ||
}; | ||
exports.focusable = focusable2; | ||
exports.isFocusable = isFocusable2; | ||
exports.isTabbable = isTabbable; | ||
exports.tabbable = tabbable2; | ||
}); | ||
// node_modules/focus-trap/dist/focus-trap.js | ||
var require_focus_trap = __commonJS((exports) => { | ||
/*! | ||
* focus-trap 6.6.1 | ||
* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE | ||
*/ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", {value: true}); | ||
var tabbable2 = require_dist(); | ||
function ownKeys(object, enumerableOnly) { | ||
var keys = Object.keys(object); | ||
if (Object.getOwnPropertySymbols) { | ||
var symbols = Object.getOwnPropertySymbols(object); | ||
if (enumerableOnly) { | ||
symbols = symbols.filter(function(sym) { | ||
return Object.getOwnPropertyDescriptor(object, sym).enumerable; | ||
}); | ||
var checkFocusIn = function checkFocusIn2(e) { | ||
var targetContained = containersContain(e.target); | ||
if (targetContained || e.target instanceof Document) { | ||
if (targetContained) { | ||
state.mostRecentlyFocusedNode = e.target; | ||
} | ||
keys.push.apply(keys, symbols); | ||
} else { | ||
e.stopImmediatePropagation(); | ||
tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode()); | ||
} | ||
return keys; | ||
} | ||
function _objectSpread2(target) { | ||
for (var i = 1; i < arguments.length; i++) { | ||
var source = arguments[i] != null ? arguments[i] : {}; | ||
if (i % 2) { | ||
ownKeys(Object(source), true).forEach(function(key) { | ||
_defineProperty(target, key, source[key]); | ||
}; | ||
var checkTab = function checkTab2(e) { | ||
updateTabbableNodes(); | ||
var destinationNode = null; | ||
if (state.tabbableGroups.length > 0) { | ||
var containerIndex = findIndex(state.tabbableGroups, function(_ref) { | ||
var container = _ref.container; | ||
return container.contains(e.target); | ||
}); | ||
if (containerIndex < 0) { | ||
if (e.shiftKey) { | ||
destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode; | ||
} else { | ||
destinationNode = state.tabbableGroups[0].firstTabbableNode; | ||
} | ||
} else if (e.shiftKey) { | ||
var startOfGroupIndex = findIndex(state.tabbableGroups, function(_ref2) { | ||
var firstTabbableNode = _ref2.firstTabbableNode; | ||
return e.target === firstTabbableNode; | ||
}); | ||
} else if (Object.getOwnPropertyDescriptors) { | ||
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); | ||
if (startOfGroupIndex < 0 && state.tabbableGroups[containerIndex].container === e.target) { | ||
startOfGroupIndex = containerIndex; | ||
} | ||
if (startOfGroupIndex >= 0) { | ||
var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1; | ||
var destinationGroup = state.tabbableGroups[destinationGroupIndex]; | ||
destinationNode = destinationGroup.lastTabbableNode; | ||
} | ||
} else { | ||
ownKeys(Object(source)).forEach(function(key) { | ||
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); | ||
var lastOfGroupIndex = findIndex(state.tabbableGroups, function(_ref3) { | ||
var lastTabbableNode = _ref3.lastTabbableNode; | ||
return e.target === lastTabbableNode; | ||
}); | ||
if (lastOfGroupIndex < 0 && state.tabbableGroups[containerIndex].container === e.target) { | ||
lastOfGroupIndex = containerIndex; | ||
} | ||
if (lastOfGroupIndex >= 0) { | ||
var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1; | ||
var _destinationGroup = state.tabbableGroups[_destinationGroupIndex]; | ||
destinationNode = _destinationGroup.firstTabbableNode; | ||
} | ||
} | ||
} | ||
return target; | ||
} | ||
function _defineProperty(obj, key, value) { | ||
if (key in obj) { | ||
Object.defineProperty(obj, key, { | ||
value, | ||
enumerable: true, | ||
configurable: true, | ||
writable: true | ||
}); | ||
} else { | ||
obj[key] = value; | ||
destinationNode = getNodeForOption("fallbackFocus"); | ||
} | ||
return obj; | ||
} | ||
var activeFocusTraps = function() { | ||
var trapQueue = []; | ||
return { | ||
activateTrap: function activateTrap(trap) { | ||
if (trapQueue.length > 0) { | ||
var activeTrap = trapQueue[trapQueue.length - 1]; | ||
if (activeTrap !== trap) { | ||
activeTrap.pause(); | ||
} | ||
} | ||
var trapIndex = trapQueue.indexOf(trap); | ||
if (trapIndex === -1) { | ||
trapQueue.push(trap); | ||
} else { | ||
trapQueue.splice(trapIndex, 1); | ||
trapQueue.push(trap); | ||
} | ||
}, | ||
deactivateTrap: function deactivateTrap(trap) { | ||
var trapIndex = trapQueue.indexOf(trap); | ||
if (trapIndex !== -1) { | ||
trapQueue.splice(trapIndex, 1); | ||
} | ||
if (trapQueue.length > 0) { | ||
trapQueue[trapQueue.length - 1].unpause(); | ||
} | ||
} | ||
}; | ||
}(); | ||
var isSelectableInput = function isSelectableInput2(node) { | ||
return node.tagName && node.tagName.toLowerCase() === "input" && typeof node.select === "function"; | ||
if (destinationNode) { | ||
e.preventDefault(); | ||
tryFocus(destinationNode); | ||
} | ||
}; | ||
var isEscapeEvent = function isEscapeEvent2(e) { | ||
return e.key === "Escape" || e.key === "Esc" || e.keyCode === 27; | ||
var checkKey = function checkKey2(e) { | ||
if (isEscapeEvent(e) && valueOrHandler(config.escapeDeactivates) !== false) { | ||
e.preventDefault(); | ||
trap.deactivate(); | ||
return; | ||
} | ||
if (isTabEvent(e)) { | ||
checkTab(e); | ||
return; | ||
} | ||
}; | ||
var isTabEvent = function isTabEvent2(e) { | ||
return e.key === "Tab" || e.keyCode === 9; | ||
var checkClick = function checkClick2(e) { | ||
if (valueOrHandler(config.clickOutsideDeactivates, e)) { | ||
return; | ||
} | ||
if (containersContain(e.target)) { | ||
return; | ||
} | ||
if (valueOrHandler(config.allowOutsideClick, e)) { | ||
return; | ||
} | ||
e.preventDefault(); | ||
e.stopImmediatePropagation(); | ||
}; | ||
var delay = function delay2(fn) { | ||
return setTimeout(fn, 0); | ||
}; | ||
var findIndex = function findIndex2(arr, fn) { | ||
var idx = -1; | ||
arr.every(function(value, i) { | ||
if (fn(value)) { | ||
idx = i; | ||
return false; | ||
} | ||
return true; | ||
var addListeners = function addListeners2() { | ||
if (!state.active) { | ||
return; | ||
} | ||
activeFocusTraps.activateTrap(trap); | ||
state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function() { | ||
tryFocus(getInitialFocusNode()); | ||
}) : tryFocus(getInitialFocusNode()); | ||
doc.addEventListener("focusin", checkFocusIn, true); | ||
doc.addEventListener("mousedown", checkPointerDown, { | ||
capture: true, | ||
passive: false | ||
}); | ||
return idx; | ||
doc.addEventListener("touchstart", checkPointerDown, { | ||
capture: true, | ||
passive: false | ||
}); | ||
doc.addEventListener("click", checkClick, { | ||
capture: true, | ||
passive: false | ||
}); | ||
doc.addEventListener("keydown", checkKey, { | ||
capture: true, | ||
passive: false | ||
}); | ||
return trap; | ||
}; | ||
var valueOrHandler = function valueOrHandler2(value) { | ||
for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
params[_key - 1] = arguments[_key]; | ||
var removeListeners = function removeListeners2() { | ||
if (!state.active) { | ||
return; | ||
} | ||
return typeof value === "function" ? value.apply(void 0, params) : value; | ||
doc.removeEventListener("focusin", checkFocusIn, true); | ||
doc.removeEventListener("mousedown", checkPointerDown, true); | ||
doc.removeEventListener("touchstart", checkPointerDown, true); | ||
doc.removeEventListener("click", checkClick, true); | ||
doc.removeEventListener("keydown", checkKey, true); | ||
return trap; | ||
}; | ||
var createFocusTrap2 = function createFocusTrap3(elements, userOptions) { | ||
var doc = document; | ||
var config = _objectSpread2({ | ||
returnFocusOnDeactivate: true, | ||
escapeDeactivates: true, | ||
delayInitialFocus: true | ||
}, userOptions); | ||
var state = { | ||
containers: [], | ||
tabbableGroups: [], | ||
nodeFocusedBeforeActivation: null, | ||
mostRecentlyFocusedNode: null, | ||
active: false, | ||
paused: false, | ||
delayInitialFocusTimer: void 0 | ||
}; | ||
var trap; | ||
var getOption = function getOption2(configOverrideOptions, optionName, configOptionName) { | ||
return configOverrideOptions && configOverrideOptions[optionName] !== void 0 ? configOverrideOptions[optionName] : config[configOptionName || optionName]; | ||
}; | ||
var containersContain = function containersContain2(element) { | ||
return state.containers.some(function(container) { | ||
return container.contains(element); | ||
}); | ||
}; | ||
var getNodeForOption = function getNodeForOption2(optionName) { | ||
var optionValue = config[optionName]; | ||
if (!optionValue) { | ||
return null; | ||
trap = { | ||
activate: function activate(activateOptions) { | ||
if (state.active) { | ||
return this; | ||
} | ||
var node = optionValue; | ||
if (typeof optionValue === "string") { | ||
node = doc.querySelector(optionValue); | ||
if (!node) { | ||
throw new Error("`".concat(optionName, "` refers to no known node")); | ||
} | ||
var onActivate = getOption(activateOptions, "onActivate"); | ||
var onPostActivate = getOption(activateOptions, "onPostActivate"); | ||
var checkCanFocusTrap = getOption(activateOptions, "checkCanFocusTrap"); | ||
if (!checkCanFocusTrap) { | ||
updateTabbableNodes(); | ||
} | ||
if (typeof optionValue === "function") { | ||
node = optionValue(); | ||
if (!node) { | ||
throw new Error("`".concat(optionName, "` did not return a node")); | ||
} | ||
state.active = true; | ||
state.paused = false; | ||
state.nodeFocusedBeforeActivation = doc.activeElement; | ||
if (onActivate) { | ||
onActivate(); | ||
} | ||
return node; | ||
}; | ||
var getInitialFocusNode = function getInitialFocusNode2() { | ||
var node; | ||
if (getOption({}, "initialFocus") === false) { | ||
return false; | ||
} | ||
if (getNodeForOption("initialFocus") !== null) { | ||
node = getNodeForOption("initialFocus"); | ||
} else if (containersContain(doc.activeElement)) { | ||
node = doc.activeElement; | ||
} else { | ||
var firstTabbableGroup = state.tabbableGroups[0]; | ||
var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode; | ||
node = firstTabbableNode || getNodeForOption("fallbackFocus"); | ||
} | ||
if (!node) { | ||
throw new Error("Your focus-trap needs to have at least one focusable element"); | ||
} | ||
return node; | ||
}; | ||
var updateTabbableNodes = function updateTabbableNodes2() { | ||
state.tabbableGroups = state.containers.map(function(container) { | ||
var tabbableNodes = tabbable2.tabbable(container); | ||
if (tabbableNodes.length > 0) { | ||
return { | ||
container, | ||
firstTabbableNode: tabbableNodes[0], | ||
lastTabbableNode: tabbableNodes[tabbableNodes.length - 1] | ||
}; | ||
var finishActivation = function finishActivation2() { | ||
if (checkCanFocusTrap) { | ||
updateTabbableNodes(); | ||
} | ||
return void 0; | ||
}).filter(function(group) { | ||
return !!group; | ||
}); | ||
if (state.tabbableGroups.length <= 0 && !getNodeForOption("fallbackFocus")) { | ||
throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times"); | ||
} | ||
}; | ||
var tryFocus = function tryFocus2(node) { | ||
if (node === false) { | ||
return; | ||
} | ||
if (node === doc.activeElement) { | ||
return; | ||
} | ||
if (!node || !node.focus) { | ||
tryFocus2(getInitialFocusNode()); | ||
return; | ||
} | ||
node.focus({ | ||
preventScroll: !!config.preventScroll | ||
}); | ||
state.mostRecentlyFocusedNode = node; | ||
if (isSelectableInput(node)) { | ||
node.select(); | ||
} | ||
}; | ||
var getReturnFocusNode = function getReturnFocusNode2(previousActiveElement) { | ||
var node = getNodeForOption("setReturnFocus"); | ||
return node ? node : previousActiveElement; | ||
}; | ||
var checkPointerDown = function checkPointerDown2(e) { | ||
if (containersContain(e.target)) { | ||
return; | ||
} | ||
if (valueOrHandler(config.clickOutsideDeactivates, e)) { | ||
trap.deactivate({ | ||
returnFocus: config.returnFocusOnDeactivate && !tabbable2.isFocusable(e.target) | ||
}); | ||
return; | ||
} | ||
if (valueOrHandler(config.allowOutsideClick, e)) { | ||
return; | ||
} | ||
e.preventDefault(); | ||
}; | ||
var checkFocusIn = function checkFocusIn2(e) { | ||
var targetContained = containersContain(e.target); | ||
if (targetContained || e.target instanceof Document) { | ||
if (targetContained) { | ||
state.mostRecentlyFocusedNode = e.target; | ||
addListeners(); | ||
if (onPostActivate) { | ||
onPostActivate(); | ||
} | ||
} else { | ||
e.stopImmediatePropagation(); | ||
tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode()); | ||
}; | ||
if (checkCanFocusTrap) { | ||
checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation); | ||
return this; | ||
} | ||
}; | ||
var checkTab = function checkTab2(e) { | ||
updateTabbableNodes(); | ||
var destinationNode = null; | ||
if (state.tabbableGroups.length > 0) { | ||
var containerIndex = findIndex(state.tabbableGroups, function(_ref) { | ||
var container = _ref.container; | ||
return container.contains(e.target); | ||
}); | ||
if (containerIndex < 0) { | ||
if (e.shiftKey) { | ||
destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode; | ||
} else { | ||
destinationNode = state.tabbableGroups[0].firstTabbableNode; | ||
} | ||
} else if (e.shiftKey) { | ||
var startOfGroupIndex = findIndex(state.tabbableGroups, function(_ref2) { | ||
var firstTabbableNode = _ref2.firstTabbableNode; | ||
return e.target === firstTabbableNode; | ||
}); | ||
if (startOfGroupIndex < 0 && state.tabbableGroups[containerIndex].container === e.target) { | ||
startOfGroupIndex = containerIndex; | ||
} | ||
if (startOfGroupIndex >= 0) { | ||
var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1; | ||
var destinationGroup = state.tabbableGroups[destinationGroupIndex]; | ||
destinationNode = destinationGroup.lastTabbableNode; | ||
} | ||
} else { | ||
var lastOfGroupIndex = findIndex(state.tabbableGroups, function(_ref3) { | ||
var lastTabbableNode = _ref3.lastTabbableNode; | ||
return e.target === lastTabbableNode; | ||
}); | ||
if (lastOfGroupIndex < 0 && state.tabbableGroups[containerIndex].container === e.target) { | ||
lastOfGroupIndex = containerIndex; | ||
} | ||
if (lastOfGroupIndex >= 0) { | ||
var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1; | ||
var _destinationGroup = state.tabbableGroups[_destinationGroupIndex]; | ||
destinationNode = _destinationGroup.firstTabbableNode; | ||
} | ||
} | ||
} else { | ||
destinationNode = getNodeForOption("fallbackFocus"); | ||
} | ||
if (destinationNode) { | ||
e.preventDefault(); | ||
tryFocus(destinationNode); | ||
} | ||
}; | ||
var checkKey = function checkKey2(e) { | ||
if (isEscapeEvent(e) && valueOrHandler(config.escapeDeactivates) !== false) { | ||
e.preventDefault(); | ||
trap.deactivate(); | ||
return; | ||
} | ||
if (isTabEvent(e)) { | ||
checkTab(e); | ||
return; | ||
} | ||
}; | ||
var checkClick = function checkClick2(e) { | ||
if (valueOrHandler(config.clickOutsideDeactivates, e)) { | ||
return; | ||
} | ||
if (containersContain(e.target)) { | ||
return; | ||
} | ||
if (valueOrHandler(config.allowOutsideClick, e)) { | ||
return; | ||
} | ||
e.preventDefault(); | ||
e.stopImmediatePropagation(); | ||
}; | ||
var addListeners = function addListeners2() { | ||
finishActivation(); | ||
return this; | ||
}, | ||
deactivate: function deactivate(deactivateOptions) { | ||
if (!state.active) { | ||
return; | ||
return this; | ||
} | ||
activeFocusTraps.activateTrap(trap); | ||
state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function() { | ||
tryFocus(getInitialFocusNode()); | ||
}) : tryFocus(getInitialFocusNode()); | ||
doc.addEventListener("focusin", checkFocusIn, true); | ||
doc.addEventListener("mousedown", checkPointerDown, { | ||
capture: true, | ||
passive: false | ||
}); | ||
doc.addEventListener("touchstart", checkPointerDown, { | ||
capture: true, | ||
passive: false | ||
}); | ||
doc.addEventListener("click", checkClick, { | ||
capture: true, | ||
passive: false | ||
}); | ||
doc.addEventListener("keydown", checkKey, { | ||
capture: true, | ||
passive: false | ||
}); | ||
return trap; | ||
}; | ||
var removeListeners = function removeListeners2() { | ||
if (!state.active) { | ||
return; | ||
clearTimeout(state.delayInitialFocusTimer); | ||
state.delayInitialFocusTimer = void 0; | ||
removeListeners(); | ||
state.active = false; | ||
state.paused = false; | ||
activeFocusTraps.deactivateTrap(trap); | ||
var onDeactivate = getOption(deactivateOptions, "onDeactivate"); | ||
var onPostDeactivate = getOption(deactivateOptions, "onPostDeactivate"); | ||
var checkCanReturnFocus = getOption(deactivateOptions, "checkCanReturnFocus"); | ||
if (onDeactivate) { | ||
onDeactivate(); | ||
} | ||
doc.removeEventListener("focusin", checkFocusIn, true); | ||
doc.removeEventListener("mousedown", checkPointerDown, true); | ||
doc.removeEventListener("touchstart", checkPointerDown, true); | ||
doc.removeEventListener("click", checkClick, true); | ||
doc.removeEventListener("keydown", checkKey, true); | ||
return trap; | ||
}; | ||
trap = { | ||
activate: function activate(activateOptions) { | ||
if (state.active) { | ||
return this; | ||
} | ||
var onActivate = getOption(activateOptions, "onActivate"); | ||
var onPostActivate = getOption(activateOptions, "onPostActivate"); | ||
var checkCanFocusTrap = getOption(activateOptions, "checkCanFocusTrap"); | ||
if (!checkCanFocusTrap) { | ||
updateTabbableNodes(); | ||
} | ||
state.active = true; | ||
state.paused = false; | ||
state.nodeFocusedBeforeActivation = doc.activeElement; | ||
if (onActivate) { | ||
onActivate(); | ||
} | ||
var finishActivation = function finishActivation2() { | ||
if (checkCanFocusTrap) { | ||
updateTabbableNodes(); | ||
var returnFocus = getOption(deactivateOptions, "returnFocus", "returnFocusOnDeactivate"); | ||
var finishDeactivation = function finishDeactivation2() { | ||
delay(function() { | ||
if (returnFocus) { | ||
tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)); | ||
} | ||
addListeners(); | ||
if (onPostActivate) { | ||
onPostActivate(); | ||
if (onPostDeactivate) { | ||
onPostDeactivate(); | ||
} | ||
}; | ||
if (checkCanFocusTrap) { | ||
checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation); | ||
return this; | ||
} | ||
finishActivation(); | ||
}); | ||
}; | ||
if (returnFocus && checkCanReturnFocus) { | ||
checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation); | ||
return this; | ||
}, | ||
deactivate: function deactivate(deactivateOptions) { | ||
if (!state.active) { | ||
return this; | ||
} | ||
clearTimeout(state.delayInitialFocusTimer); | ||
state.delayInitialFocusTimer = void 0; | ||
removeListeners(); | ||
state.active = false; | ||
state.paused = false; | ||
activeFocusTraps.deactivateTrap(trap); | ||
var onDeactivate = getOption(deactivateOptions, "onDeactivate"); | ||
var onPostDeactivate = getOption(deactivateOptions, "onPostDeactivate"); | ||
var checkCanReturnFocus = getOption(deactivateOptions, "checkCanReturnFocus"); | ||
if (onDeactivate) { | ||
onDeactivate(); | ||
} | ||
var returnFocus = getOption(deactivateOptions, "returnFocus", "returnFocusOnDeactivate"); | ||
var finishDeactivation = function finishDeactivation2() { | ||
delay(function() { | ||
if (returnFocus) { | ||
tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)); | ||
} | ||
if (onPostDeactivate) { | ||
onPostDeactivate(); | ||
} | ||
}); | ||
}; | ||
if (returnFocus && checkCanReturnFocus) { | ||
checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation); | ||
return this; | ||
} | ||
finishDeactivation(); | ||
} | ||
finishDeactivation(); | ||
return this; | ||
}, | ||
pause: function pause() { | ||
if (state.paused || !state.active) { | ||
return this; | ||
}, | ||
pause: function pause() { | ||
if (state.paused || !state.active) { | ||
return this; | ||
} | ||
state.paused = true; | ||
removeListeners(); | ||
} | ||
state.paused = true; | ||
removeListeners(); | ||
return this; | ||
}, | ||
unpause: function unpause() { | ||
if (!state.paused || !state.active) { | ||
return this; | ||
}, | ||
unpause: function unpause() { | ||
if (!state.paused || !state.active) { | ||
return this; | ||
} | ||
state.paused = false; | ||
} | ||
state.paused = false; | ||
updateTabbableNodes(); | ||
addListeners(); | ||
return this; | ||
}, | ||
updateContainerElements: function updateContainerElements(containerElements) { | ||
var elementsAsArray = [].concat(containerElements).filter(Boolean); | ||
state.containers = elementsAsArray.map(function(element) { | ||
return typeof element === "string" ? doc.querySelector(element) : element; | ||
}); | ||
if (state.active) { | ||
updateTabbableNodes(); | ||
addListeners(); | ||
return this; | ||
}, | ||
updateContainerElements: function updateContainerElements(containerElements) { | ||
var elementsAsArray = [].concat(containerElements).filter(Boolean); | ||
state.containers = elementsAsArray.map(function(element) { | ||
return typeof element === "string" ? doc.querySelector(element) : element; | ||
}); | ||
if (state.active) { | ||
updateTabbableNodes(); | ||
} | ||
return this; | ||
} | ||
}; | ||
trap.updateContainerElements(elements); | ||
return trap; | ||
return this; | ||
} | ||
}; | ||
exports.createFocusTrap = createFocusTrap2; | ||
}); | ||
trap.updateContainerElements(elements); | ||
return trap; | ||
}; | ||
// packages/focus/src/index.js | ||
var import_focus_trap = __toModule(require_focus_trap()); | ||
var import_tabbable = __toModule(require_dist()); | ||
function src_default(Alpine) { | ||
@@ -710,3 +658,3 @@ let lastFocused; | ||
focusable(el2) { | ||
return (0, import_tabbable.isFocusable)(el2); | ||
return isFocusable(el2); | ||
}, | ||
@@ -725,3 +673,3 @@ previouslyFocused() { | ||
return within; | ||
return (0, import_tabbable.focusable)(within, {displayCheck: "none"}); | ||
return focusable(within, {displayCheck: "none"}); | ||
}, | ||
@@ -794,3 +742,3 @@ all() { | ||
let oldValue = false; | ||
let trap = (0, import_focus_trap.createFocusTrap)(el, { | ||
let trap = createFocusTrap(el, { | ||
escapeDeactivates: false, | ||
@@ -797,0 +745,0 @@ allowOutsideClick: true, |
{ | ||
"name": "@alpinejs/focus", | ||
"version": "3.9.1", | ||
"version": "3.9.2", | ||
"description": "Manage focus within a page", | ||
@@ -5,0 +5,0 @@ "author": "Caleb Porzio", |
103824
2726