/*! * focus-trap 6.9.2 * @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE */ !function(e,t){var n,a;"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("tabbable")):"function"==typeof define&&define.amd?define(["exports","tabbable"],t):(n=(e="undefined"!=typeof globalThis?globalThis:e||self).focusTrap,t(a=e.focusTrap={},e.tabbable),a.noConflict=function(){return e.focusTrap=n,a})}(this,function(e,t){"use strict";function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function a(e){for(var t=1;t0){var n=r[r.length-1];n!==t&&n.pause()}var a=r.indexOf(t);-1===a||r.splice(a,1),r.push(t)},deactivateTrap:function e(t){var n=r.indexOf(t);-1!==n&&r.splice(n,1),r.length>0&&r[r.length-1].unpause()}}),u=function e(t){return t.tagName&&"input"===t.tagName.toLowerCase()&&"function"==typeof t.select},c=function e(t){return"Escape"===t.key||"Esc"===t.key||27===t.keyCode},s=function e(t){return"Tab"===t.key||9===t.keyCode},l=function e(t){return setTimeout(t,0)},b=function e(t,n){var a=-1;return t.every(function(e,t){return!n(e)||(a=t,!1)}),a},f=function e(t){for(var n=arguments.length,a=Array(n>1?n-1:0),o=1;o1?a-1:0),r=1;r=0)t=d.activeElement;else{var n=$.tabbableGroups[0];t=n&&n.firstTabbableNode||_("fallbackFocus")}}if(!t)throw Error("Your focus-trap needs to have at least one focusable element");return t},g=function e(){if($.containerGroups=$.containers.map(function(e){var n=t.tabbable(e,p.tabbableOptions),a=t.focusable(e,p.tabbableOptions);return{container:e,tabbableNodes:n,focusableNodes:a,firstTabbableNode:n.length>0?n[0]:null,lastTabbableNode:n.length>0?n[n.length-1]:null,nextTabbableNode:function e(n){var o=!(arguments.length>1)||void 0===arguments[1]||arguments[1],r=a.findIndex(function(e){return e===n});return r<0?void 0:o?a.slice(r+1).find(function(e){return t.isTabbable(e,p.tabbableOptions)}):a.slice(0,r).reverse().find(function(e){return t.isTabbable(e,p.tabbableOptions)})}}}),$.tabbableGroups=$.containerGroups.filter(function(e){return e.tabbableNodes.length>0}),$.tabbableGroups.length<=0&&!_("fallbackFocus"))throw Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times")},F=function e(t){if(!1!==t&&t!==d.activeElement){if(!t||!t.focus){e(m());return}t.focus({preventScroll:!!p.preventScroll}),$.mostRecentlyFocusedNode=t,u(t)&&t.select()}},T=function e(t){var n=_("setReturnFocus",t);return n||!1!==n&&t},O=function e(n){var a=v(n);if(!(y(a)>=0)){if(f(p.clickOutsideDeactivates,n)){r.deactivate({returnFocus:p.returnFocusOnDeactivate&&!t.isFocusable(a,p.tabbableOptions)});return}!f(p.allowOutsideClick,n)&&n.preventDefault()}},w=function e(t){var n=v(t),a=y(n)>=0;a||n instanceof Document?a&&($.mostRecentlyFocusedNode=n):(t.stopImmediatePropagation(),F($.mostRecentlyFocusedNode||m()))},k=function e(n){var a=v(n);g();var o=null;if($.tabbableGroups.length>0){var r=y(a),i=r>=0?$.containerGroups[r]:void 0;if(r<0)o=n.shiftKey?$.tabbableGroups[$.tabbableGroups.length-1].lastTabbableNode:$.tabbableGroups[0].firstTabbableNode;else if(n.shiftKey){var u=b($.tabbableGroups,function(e){return a===e.firstTabbableNode});if(u<0&&(i.container===a||t.isFocusable(a,p.tabbableOptions)&&!t.isTabbable(a,p.tabbableOptions)&&!i.nextTabbableNode(a,!1))&&(u=r),u>=0){var c=0===u?$.tabbableGroups.length-1:u-1;o=$.tabbableGroups[c].lastTabbableNode}}else{var s=b($.tabbableGroups,function(e){return a===e.lastTabbableNode});if(s<0&&(i.container===a||t.isFocusable(a,p.tabbableOptions)&&!t.isTabbable(a,p.tabbableOptions)&&!i.nextTabbableNode(a))&&(s=r),s>=0){var l=s===$.tabbableGroups.length-1?0:s+1;o=$.tabbableGroups[l].firstTabbableNode}}}else o=_("fallbackFocus");o&&(n.preventDefault(),F(o))},N=function e(t){if(c(t)&&!1!==f(p.escapeDeactivates,t)){t.preventDefault(),r.deactivate();return}if(s(t)){k(t);return}},D=function e(t){var n=v(t);!(y(n)>=0||f(p.clickOutsideDeactivates,t)||f(p.allowOutsideClick,t))&&(t.preventDefault(),t.stopImmediatePropagation())},E=function e(){if($.active)return i.activateTrap(r),$.delayInitialFocusTimer=p.delayInitialFocus?l(function(){F(m())}):F(m()),d.addEventListener("focusin",w,!0),d.addEventListener("mousedown",O,{capture:!0,passive:!1}),d.addEventListener("touchstart",O,{capture:!0,passive:!1}),d.addEventListener("click",D,{capture:!0,passive:!1}),d.addEventListener("keydown",N,{capture:!0,passive:!1}),r},G=function e(){if($.active)return d.removeEventListener("focusin",w,!0),d.removeEventListener("mousedown",O,!0),d.removeEventListener("touchstart",O,!0),d.removeEventListener("click",D,!0),d.removeEventListener("keydown",N,!0),r};return(r={get active(){return $.active},get paused(){return $.paused},activate:function e(t){if($.active)return this;var n=h(t,"onActivate"),a=h(t,"onPostActivate"),o=h(t,"checkCanFocusTrap");o||g(),$.active=!0,$.paused=!1,$.nodeFocusedBeforeActivation=d.activeElement,n&&n();var r=function e(){o&&g(),E(),a&&a()};return o?(o($.containers.concat()).then(r,r),this):(r(),this)},deactivate:function e(t){if(!$.active)return this;var n=a({onDeactivate:p.onDeactivate,onPostDeactivate:p.onPostDeactivate,checkCanReturnFocus:p.checkCanReturnFocus},t);clearTimeout($.delayInitialFocusTimer),$.delayInitialFocusTimer=void 0,G(),$.active=!1,$.paused=!1,i.deactivateTrap(r);var o=h(n,"onDeactivate"),u=h(n,"onPostDeactivate"),c=h(n,"checkCanReturnFocus"),s=h(n,"returnFocus","returnFocusOnDeactivate");o&&o();var b=function e(){l(function(){s&&F(T($.nodeFocusedBeforeActivation)),u&&u()})};return s&&c?(c(T($.nodeFocusedBeforeActivation)).then(b,b),this):(b(),this)},pause:function e(){return $.paused||!$.active||($.paused=!0,G()),this},unpause:function e(){return $.paused&&$.active&&($.paused=!1,g(),E()),this},updateContainerElements:function e(t){var n=[].concat(t).filter(Boolean);return $.containers=n.map(function(e){return"string"==typeof e?d.querySelector(e):e}),$.active&&g(),this}}).updateContainerElements(n),r};e.createFocusTrap=d,Object.defineProperty(e,"__esModule",{value:!0})});