{"id":"XSA3","dependencies":[{"name":"/Users/david/dev/react-use-focus-trap/package.json","includedInParent":true,"mtime":1662554112468},{"name":"react","loc":{"line":1,"column":47,"index":47},"parent":"/Users/david/dev/react-use-focus-trap/src/useFocusTrap.js","resolved":"/Users/david/dev/react-use-focus-trap/node_modules/react/index.js"},{"name":"./util.js","loc":{"line":2,"column":50,"index":106},"parent":"/Users/david/dev/react-use-focus-trap/src/useFocusTrap.js","resolved":"/Users/david/dev/react-use-focus-trap/src/util.js"}],"generated":{"js":"\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),exports.useFocusTrap=i;var e=require(\"react\"),t=require(\"./util.js\"),n=\"a[href], area[href], input:not([disabled]):not([type=hidden]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]\",r=9;function i(){var i=(0,e.useRef)(null),o=(0,e.useCallback)(function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(r>e.length)return!1;var i,a=!!n,u=e.length-1;t||(t=null!==(i=e.indexOf(document.activeElement))&&void 0!==i?i:0);var d=a?t-1:t+1;d>u&&(d=0),d<0&&(d=u);var l=e[d];l.focus(),document.activeElement!==l&&o(e,d,n,r+1)}),a=(0,e.useCallback)(function(e){var a=i.current;if(null!==a&&(e.which===r||\"Tab\"===e.key)){e.preventDefault();var u=!!e.shiftKey,d=Array.from(a.querySelectorAll(n)).filter(function(e){return(0,t.getTabIndexOfNode)(e)>=0});d=d.sort(t.sortByTabIndex),o(d,void 0,u)}},[]);return(0,e.useEffect)(function(){return window.addEventListener(\"keydown\",a),function(){window.removeEventListener(\"keydown\",a)}},[]),[i]}"},"sourceMaps":{"js":{"mappings":[{"source":"useFocusTrap.js","original":{"line":88,"column":1},"generated":{"line":1,"column":0}},{"source":"useFocusTrap.js","original":{"line":88,"column":1},"generated":{"line":1,"column":13}},{"source":"useFocusTrap.js","original":{"line":88,"column":1},"generated":{"line":1,"column":20}},{"source":"useFocusTrap.js","original":{"line":88,"column":1},"generated":{"line":1,"column":35}},{"source":"useFocusTrap.js","original":{"line":88,"column":1},"generated":{"line":1,"column":43}},{"source":"useFocusTrap.js","original":{"line":88,"column":1},"generated":{"line":1,"column":56}},{"source":"useFocusTrap.js","original":{"line":88,"column":1},"generated":{"line":1,"column":57}},{"source":"useFocusTrap.js","original":{"line":88,"column":1},"generated":{"line":1,"column":64}},{"source":"useFocusTrap.js","original":{"line":88,"column":1},"generated":{"line":1,"column":68}},{"source":"useFocusTrap.js","original":{"line":88,"column":1},"generated":{"line":1,"column":76}},{"source":"useFocusTrap.js","original":{"line":88,"column":1},"generated":{"line":1,"column":89}},{"source":"useFocusTrap.js","original":{"line":1,"column":0},"generated":{"line":1,"column":91}},{"source":"useFocusTrap.js","original":{"line":1,"column":0},"generated":{"line":1,"column":95}},{"source":"useFocusTrap.js","original":{"line":1,"column":0},"generated":{"line":1,"column":97}},{"source":"useFocusTrap.js","original":{"line":1,"column":0},"generated":{"line":1,"column":105}},{"source":"useFocusTrap.js","original":{"line":2,"column":0},"generated":{"line":1,"column":114}},{"source":"useFocusTrap.js","original":{"line":2,"column":0},"generated":{"line":1,"column":116}},{"source":"useFocusTrap.js","original":{"line":2,"column":0},"generated":{"line":1,"column":124}},{"source":"useFocusTrap.js","name":"focusableElementsSelector","original":{"line":4,"column":6},"generated":{"line":1,"column":137}},{"source":"useFocusTrap.js","original":{"line":5,"column":2},"generated":{"line":1,"column":139}},{"source":"useFocusTrap.js","name":"TAB_KEY","original":{"line":6,"column":6},"generated":{"line":1,"column":333}},{"source":"useFocusTrap.js","original":{"line":6,"column":16},"generated":{"line":1,"column":335}},{"source":"useFocusTrap.js","original":{"line":8,"column":7},"generated":{"line":1,"column":337}},{"source":"useFocusTrap.js","name":"useFocusTrap","original":{"line":8,"column":16},"generated":{"line":1,"column":346}},{"source":"useFocusTrap.js","original":{"line":9,"column":2},"generated":{"line":1,"column":350}},{"source":"useFocusTrap.js","name":"trapRef","original":{"line":9,"column":8},"generated":{"line":1,"column":354}},{"source":"useFocusTrap.js","original":{"line":9,"column":18},"generated":{"line":1,"column":357}},{"source":"useFocusTrap.js","name":"useRef","original":{"line":9,"column":18},"generated":{"line":1,"column":359}},{"source":"useFocusTrap.js","original":{"line":9,"column":18},"generated":{"line":1,"column":361}},{"source":"useFocusTrap.js","original":{"line":9,"column":25},"generated":{"line":1,"column":369}},{"source":"useFocusTrap.js","name":"selectNextFocusableElem","original":{"line":11,"column":8},"generated":{"line":1,"column":375}},{"source":"useFocusTrap.js","original":{"line":11,"column":34},"generated":{"line":1,"column":378}},{"source":"useFocusTrap.js","name":"useCallback","original":{"line":11,"column":34},"generated":{"line":1,"column":380}},{"source":"useFocusTrap.js","original":{"line":11,"column":34},"generated":{"line":1,"column":382}},{"source":"useFocusTrap.js","original":{"line":12,"column":4},"generated":{"line":1,"column":395}},{"source":"useFocusTrap.js","name":"sortedFocusableElems","original":{"line":13,"column":6},"generated":{"line":1,"column":404}},{"source":"useFocusTrap.js","name":"currentIndex","original":{"line":14,"column":6},"generated":{"line":1,"column":406}},{"source":"useFocusTrap.js","original":{"line":17,"column":9},"generated":{"line":1,"column":409}},{"source":"useFocusTrap.js","name":"shiftKeyPressed","original":{"line":15,"column":6},"generated":{"line":1,"column":413}},{"source":"useFocusTrap.js","original":{"line":15,"column":24},"generated":{"line":1,"column":415}},{"source":"useFocusTrap.js","original":{"line":15,"column":24},"generated":{"line":1,"column":425}},{"source":"useFocusTrap.js","original":{"line":15,"column":24},"generated":{"line":1,"column":432}},{"source":"useFocusTrap.js","original":{"line":15,"column":24},"generated":{"line":1,"column":440}},{"source":"useFocusTrap.js","original":{"line":15,"column":24},"generated":{"line":1,"column":444}},{"source":"useFocusTrap.js","original":{"line":15,"column":24},"generated":{"line":1,"column":454}},{"source":"useFocusTrap.js","original":{"line":15,"column":24},"generated":{"line":1,"column":458}},{"source":"useFocusTrap.js","original":{"line":15,"column":24},"generated":{"line":1,"column":468}},{"source":"useFocusTrap.js","name":"skipCount","original":{"line":16,"column":6},"generated":{"line":1,"column":471}},{"source":"useFocusTrap.js","original":{"line":16,"column":18},"generated":{"line":1,"column":473}},{"source":"useFocusTrap.js","original":{"line":16,"column":18},"generated":{"line":1,"column":483}},{"source":"useFocusTrap.js","original":{"line":16,"column":18},"generated":{"line":1,"column":490}},{"source":"useFocusTrap.js","original":{"line":16,"column":18},"generated":{"line":1,"column":498}},{"source":"useFocusTrap.js","original":{"line":16,"column":18},"generated":{"line":1,"column":502}},{"source":"useFocusTrap.js","original":{"line":16,"column":18},"generated":{"line":1,"column":512}},{"source":"useFocusTrap.js","original":{"line":16,"column":18},"generated":{"line":1,"column":515}},{"source":"useFocusTrap.js","original":{"line":16,"column":18},"generated":{"line":1,"column":525}},{"source":"useFocusTrap.js","original":{"line":16,"column":18},"generated":{"line":1,"column":528}},{"source":"useFocusTrap.js","original":{"line":18,"column":6},"generated":{"line":1,"column":530}},{"source":"useFocusTrap.js","name":"skipCount","original":{"line":18,"column":10},"generated":{"line":1,"column":533}},{"source":"useFocusTrap.js","name":"sortedFocusableElems","original":{"line":18,"column":22},"generated":{"line":1,"column":535}},{"source":"useFocusTrap.js","name":"length","original":{"line":18,"column":43},"generated":{"line":1,"column":537}},{"source":"useFocusTrap.js","original":{"line":21,"column":8},"generated":{"line":1,"column":544}},{"source":"useFocusTrap.js","original":{"line":21,"column":15},"generated":{"line":1,"column":551}},{"source":"useFocusTrap.js","original":{"line":24,"column":6},"generated":{"line":1,"column":553}},{"source":"useFocusTrap.js","original":{"line":27,"column":25},"generated":{"line":1,"column":557}},{"source":"useFocusTrap.js","name":"backwards","original":{"line":24,"column":12},"generated":{"line":1,"column":559}},{"source":"useFocusTrap.js","name":"shiftKeyPressed","original":{"line":24,"column":26},"generated":{"line":1,"column":563}},{"source":"useFocusTrap.js","name":"maxIndex","original":{"line":25,"column":12},"generated":{"line":1,"column":565}},{"source":"useFocusTrap.js","name":"sortedFocusableElems","original":{"line":25,"column":23},"generated":{"line":1,"column":567}},{"source":"useFocusTrap.js","name":"length","original":{"line":25,"column":44},"generated":{"line":1,"column":569}},{"source":"useFocusTrap.js","original":{"line":25,"column":53},"generated":{"line":1,"column":576}},{"source":"useFocusTrap.js","name":"currentIndex","original":{"line":27,"column":11},"generated":{"line":1,"column":578}},{"source":"useFocusTrap.js","name":"currentIndex","original":{"line":28,"column":8},"generated":{"line":1,"column":582}},{"source":"useFocusTrap.js","original":{"line":29,"column":66},"generated":{"line":1,"column":584}},{"source":"useFocusTrap.js","name":"sortedFocusableElems","original":{"line":29,"column":10},"generated":{"line":1,"column":592}},{"source":"useFocusTrap.js","name":"sortedFocusableElems","original":{"line":29,"column":10},"generated":{"line":1,"column":594}},{"source":"useFocusTrap.js","name":"indexOf","original":{"line":29,"column":31},"generated":{"line":1,"column":596}},{"source":"useFocusTrap.js","name":"document","original":{"line":29,"column":39},"generated":{"line":1,"column":604}},{"source":"useFocusTrap.js","name":"activeElement","original":{"line":29,"column":48},"generated":{"line":1,"column":613}},{"source":"useFocusTrap.js","original":{"line":29,"column":66},"generated":{"line":1,"column":635}},{"source":"useFocusTrap.js","original":{"line":29,"column":66},"generated":{"line":1,"column":639}},{"source":"useFocusTrap.js","original":{"line":29,"column":66},"generated":{"line":1,"column":641}},{"source":"useFocusTrap.js","original":{"line":29,"column":66},"generated":{"line":1,"column":643}},{"source":"useFocusTrap.js","original":{"line":32,"column":6},"generated":{"line":1,"column":646}},{"source":"useFocusTrap.js","name":"nextIndex","original":{"line":32,"column":10},"generated":{"line":1,"column":650}},{"source":"useFocusTrap.js","name":"backwards","original":{"line":32,"column":22},"generated":{"line":1,"column":652}},{"source":"useFocusTrap.js","name":"currentIndex","original":{"line":32,"column":34},"generated":{"line":1,"column":654}},{"source":"useFocusTrap.js","original":{"line":32,"column":49},"generated":{"line":1,"column":656}},{"source":"useFocusTrap.js","name":"currentIndex","original":{"line":32,"column":53},"generated":{"line":1,"column":658}},{"source":"useFocusTrap.js","original":{"line":32,"column":68},"generated":{"line":1,"column":660}},{"source":"useFocusTrap.js","name":"nextIndex","original":{"line":33,"column":10},"generated":{"line":1,"column":662}},{"source":"useFocusTrap.js","name":"maxIndex","original":{"line":33,"column":22},"generated":{"line":1,"column":664}},{"source":"useFocusTrap.js","name":"nextIndex","original":{"line":34,"column":8},"generated":{"line":1,"column":668}},{"source":"useFocusTrap.js","original":{"line":34,"column":20},"generated":{"line":1,"column":670}},{"source":"useFocusTrap.js","name":"nextIndex","original":{"line":37,"column":10},"generated":{"line":1,"column":673}},{"source":"useFocusTrap.js","original":{"line":37,"column":22},"generated":{"line":1,"column":675}},{"source":"useFocusTrap.js","name":"nextIndex","original":{"line":38,"column":8},"generated":{"line":1,"column":679}},{"source":"useFocusTrap.js","name":"maxIndex","original":{"line":38,"column":20},"generated":{"line":1,"column":681}},{"source":"useFocusTrap.js","original":{"line":41,"column":6},"generated":{"line":1,"column":684}},{"source":"useFocusTrap.js","name":"newFocusElem","original":{"line":41,"column":12},"generated":{"line":1,"column":688}},{"source":"useFocusTrap.js","name":"sortedFocusableElems","original":{"line":41,"column":27},"generated":{"line":1,"column":690}},{"source":"useFocusTrap.js","name":"nextIndex","original":{"line":41,"column":48},"generated":{"line":1,"column":692}},{"source":"useFocusTrap.js","name":"newFocusElem","original":{"line":43,"column":6},"generated":{"line":1,"column":695}},{"source":"useFocusTrap.js","name":"focus","original":{"line":43,"column":19},"generated":{"line":1,"column":697}},{"source":"useFocusTrap.js","name":"document","original":{"line":45,"column":10},"generated":{"line":1,"column":705}},{"source":"useFocusTrap.js","name":"activeElement","original":{"line":45,"column":19},"generated":{"line":1,"column":714}},{"source":"useFocusTrap.js","name":"newFocusElem","original":{"line":45,"column":37},"generated":{"line":1,"column":730}},{"source":"useFocusTrap.js","name":"selectNextFocusableElem","original":{"line":47,"column":8},"generated":{"line":1,"column":733}},{"source":"useFocusTrap.js","name":"sortedFocusableElems","original":{"line":48,"column":10},"generated":{"line":1,"column":735}},{"source":"useFocusTrap.js","name":"nextIndex","original":{"line":49,"column":10},"generated":{"line":1,"column":737}},{"source":"useFocusTrap.js","name":"shiftKeyPressed","original":{"line":50,"column":10},"generated":{"line":1,"column":739}},{"source":"useFocusTrap.js","name":"skipCount","original":{"line":51,"column":10},"generated":{"line":1,"column":741}},{"source":"useFocusTrap.js","original":{"line":51,"column":22},"generated":{"line":1,"column":743}},{"source":"useFocusTrap.js","name":"trapper","original":{"line":58,"column":8},"generated":{"line":1,"column":748}},{"source":"useFocusTrap.js","original":{"line":58,"column":18},"generated":{"line":1,"column":751}},{"source":"useFocusTrap.js","name":"useCallback","original":{"line":58,"column":18},"generated":{"line":1,"column":753}},{"source":"useFocusTrap.js","original":{"line":58,"column":18},"generated":{"line":1,"column":755}},{"source":"useFocusTrap.js","original":{"line":58,"column":30},"generated":{"line":1,"column":768}},{"source":"useFocusTrap.js","name":"evt","original":{"line":58,"column":31},"generated":{"line":1,"column":777}},{"source":"useFocusTrap.js","original":{"line":59,"column":4},"generated":{"line":1,"column":780}},{"source":"useFocusTrap.js","name":"trapRefElem","original":{"line":59,"column":10},"generated":{"line":1,"column":784}},{"source":"useFocusTrap.js","name":"trapRef","original":{"line":59,"column":24},"generated":{"line":1,"column":786}},{"source":"useFocusTrap.js","name":"current","original":{"line":59,"column":32},"generated":{"line":1,"column":788}},{"source":"useFocusTrap.js","original":{"line":60,"column":4},"generated":{"line":1,"column":796}},{"source":"useFocusTrap.js","original":{"line":60,"column":24},"generated":{"line":1,"column":799}},{"source":"useFocusTrap.js","name":"trapRefElem","original":{"line":60,"column":8},"generated":{"line":1,"column":806}},{"source":"useFocusTrap.js","name":"evt","original":{"line":61,"column":10},"generated":{"line":1,"column":810}},{"source":"useFocusTrap.js","name":"which","original":{"line":61,"column":14},"generated":{"line":1,"column":812}},{"source":"useFocusTrap.js","name":"TAB_KEY","original":{"line":61,"column":24},"generated":{"line":1,"column":820}},{"source":"useFocusTrap.js","original":{"line":61,"column":47},"generated":{"line":1,"column":823}},{"source":"useFocusTrap.js","name":"evt","original":{"line":61,"column":35},"generated":{"line":1,"column":831}},{"source":"useFocusTrap.js","name":"key","original":{"line":61,"column":39},"generated":{"line":1,"column":833}},{"source":"useFocusTrap.js","original":{"line":61,"column":54},"generated":{"line":1,"column":838}},{"source":"useFocusTrap.js","name":"evt","original":{"line":62,"column":8},"generated":{"line":1,"column":839}},{"source":"useFocusTrap.js","name":"preventDefault","original":{"line":62,"column":12},"generated":{"line":1,"column":841}},{"source":"useFocusTrap.js","original":{"line":63,"column":8},"generated":{"line":1,"column":858}},{"source":"useFocusTrap.js","name":"shiftKeyPressed","original":{"line":63,"column":14},"generated":{"line":1,"column":862}},{"source":"useFocusTrap.js","name":"evt","original":{"line":63,"column":34},"generated":{"line":1,"column":866}},{"source":"useFocusTrap.js","name":"shiftKey","original":{"line":63,"column":38},"generated":{"line":1,"column":868}},{"source":"useFocusTrap.js","name":"focusableElems","original":{"line":64,"column":12},"generated":{"line":1,"column":877}},{"source":"useFocusTrap.js","name":"Array","original":{"line":64,"column":29},"generated":{"line":1,"column":879}},{"source":"useFocusTrap.js","name":"from","original":{"line":64,"column":35},"generated":{"line":1,"column":885}},{"source":"useFocusTrap.js","name":"trapRefElem","original":{"line":65,"column":10},"generated":{"line":1,"column":890}},{"source":"useFocusTrap.js","name":"querySelectorAll","original":{"line":65,"column":22},"generated":{"line":1,"column":892}},{"source":"useFocusTrap.js","name":"focusableElementsSelector","original":{"line":65,"column":39},"generated":{"line":1,"column":909}},{"source":"useFocusTrap.js","name":"filter","original":{"line":66,"column":10},"generated":{"line":1,"column":913}},{"source":"useFocusTrap.js","original":{"line":67,"column":10},"generated":{"line":1,"column":920}},{"source":"useFocusTrap.js","name":"focusableElement","original":{"line":67,"column":11},"generated":{"line":1,"column":929}},{"source":"useFocusTrap.js","original":{"line":67,"column":10},"generated":{"line":1,"column":932}},{"source":"useFocusTrap.js","original":{"line":67,"column":32},"generated":{"line":1,"column":939}},{"source":"useFocusTrap.js","name":"getTabIndexOfNode","original":{"line":67,"column":32},"generated":{"line":1,"column":941}},{"source":"useFocusTrap.js","original":{"line":67,"column":32},"generated":{"line":1,"column":943}},{"source":"useFocusTrap.js","name":"focusableElement","original":{"line":67,"column":50},"generated":{"line":1,"column":962}},{"source":"useFocusTrap.js","original":{"line":67,"column":71},"generated":{"line":1,"column":966}},{"source":"useFocusTrap.js","name":"focusableElems","original":{"line":70,"column":8},"generated":{"line":1,"column":970}},{"source":"useFocusTrap.js","name":"focusableElems","original":{"line":70,"column":25},"generated":{"line":1,"column":972}},{"source":"useFocusTrap.js","name":"sort","original":{"line":70,"column":40},"generated":{"line":1,"column":974}},{"source":"useFocusTrap.js","name":"sortByTabIndex","original":{"line":70,"column":45},"generated":{"line":1,"column":979}},{"source":"useFocusTrap.js","original":{"line":70,"column":25},"generated":{"line":1,"column":981}},{"source":"useFocusTrap.js","name":"selectNextFocusableElem","original":{"line":72,"column":8},"generated":{"line":1,"column":997}},{"source":"useFocusTrap.js","name":"focusableElems","original":{"line":72,"column":32},"generated":{"line":1,"column":999}},{"source":"useFocusTrap.js","name":"undefined","original":{"line":72,"column":48},"generated":{"line":1,"column":1006}},{"source":"useFocusTrap.js","name":"shiftKeyPressed","original":{"line":72,"column":59},"generated":{"line":1,"column":1008}},{"source":"useFocusTrap.js","original":{"line":76,"column":5},"generated":{"line":1,"column":1013}},{"source":"useFocusTrap.js","original":{"line":87,"column":2},"generated":{"line":1,"column":1017}},{"source":"useFocusTrap.js","original":{"line":78,"column":2},"generated":{"line":1,"column":1024}},{"source":"useFocusTrap.js","name":"useEffect","original":{"line":78,"column":2},"generated":{"line":1,"column":1026}},{"source":"useFocusTrap.js","original":{"line":78,"column":2},"generated":{"line":1,"column":1028}},{"source":"useFocusTrap.js","original":{"line":78,"column":12},"generated":{"line":1,"column":1039}},{"source":"useFocusTrap.js","original":{"line":81,"column":4},"generated":{"line":1,"column":1050}},{"source":"useFocusTrap.js","name":"window","original":{"line":79,"column":4},"generated":{"line":1,"column":1057}},{"source":"useFocusTrap.js","name":"addEventListener","original":{"line":79,"column":11},"generated":{"line":1,"column":1064}},{"source":"useFocusTrap.js","original":{"line":79,"column":28},"generated":{"line":1,"column":1081}},{"source":"useFocusTrap.js","name":"trapper","original":{"line":79,"column":39},"generated":{"line":1,"column":1091}},{"source":"useFocusTrap.js","original":{"line":81,"column":11},"generated":{"line":1,"column":1094}},{"source":"useFocusTrap.js","name":"window","original":{"line":82,"column":6},"generated":{"line":1,"column":1105}},{"source":"useFocusTrap.js","name":"removeEventListener","original":{"line":82,"column":13},"generated":{"line":1,"column":1112}},{"source":"useFocusTrap.js","original":{"line":82,"column":33},"generated":{"line":1,"column":1132}},{"source":"useFocusTrap.js","name":"trapper","original":{"line":82,"column":44},"generated":{"line":1,"column":1142}},{"source":"useFocusTrap.js","original":{"line":85,"column":5},"generated":{"line":1,"column":1147}},{"source":"useFocusTrap.js","original":{"line":87,"column":9},"generated":{"line":1,"column":1151}},{"source":"useFocusTrap.js","name":"trapRef","original":{"line":87,"column":10},"generated":{"line":1,"column":1152}}],"sources":{"useFocusTrap.js":"import { useCallback, useEffect, useRef } from \"react\";\nimport { getTabIndexOfNode, sortByTabIndex } from \"./util.js\";\n\nconst focusableElementsSelector =\n  \"a[href], area[href], input:not([disabled]):not([type=hidden]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]\";\nconst TAB_KEY = 9;\n\nexport function useFocusTrap() {\n  const trapRef = useRef(null);\n\n  const selectNextFocusableElem = useCallback(\n    (\n      sortedFocusableElems,\n      currentIndex,\n      shiftKeyPressed = false,\n      skipCount = 0\n    ) => {\n      if (skipCount > sortedFocusableElems.length) {\n        // this means that it ran through all of elements but non was properly focusable\n        // hence we stop it to avoid running in an infinite loop\n        return false;\n      }\n\n      const backwards = !!shiftKeyPressed;\n      const maxIndex = sortedFocusableElems.length - 1;\n\n      if (!currentIndex) {\n        currentIndex =\n          sortedFocusableElems.indexOf(document.activeElement) ?? 0;\n      }\n\n      let nextIndex = backwards ? currentIndex - 1 : currentIndex + 1;\n      if (nextIndex > maxIndex) {\n        nextIndex = 0;\n      }\n\n      if (nextIndex < 0) {\n        nextIndex = maxIndex;\n      }\n\n      const newFocusElem = sortedFocusableElems[nextIndex];\n\n      newFocusElem.focus();\n\n      if (document.activeElement !== newFocusElem) {\n        // run another round\n        selectNextFocusableElem(\n          sortedFocusableElems,\n          nextIndex,\n          shiftKeyPressed,\n          skipCount + 1\n        );\n      }\n    }\n  );\n\n  // defining the trap function first\n  const trapper = useCallback((evt) => {\n    const trapRefElem = trapRef.current;\n    if (trapRefElem !== null) {\n      if (evt.which === TAB_KEY || evt.key === \"Tab\") {\n        evt.preventDefault();\n        const shiftKeyPressed = !!evt.shiftKey;\n        let focusableElems = Array.from(\n          trapRefElem.querySelectorAll(focusableElementsSelector)\n        ).filter(\n          (focusableElement) => getTabIndexOfNode(focusableElement) >= 0\n        ); // caching this is NOT a good idea in dynamic applications - so don't!\n        // now we need to sort it by tabIndex, highest first\n        focusableElems = focusableElems.sort(sortByTabIndex);\n\n        selectNextFocusableElem(focusableElems, undefined, shiftKeyPressed);\n      }\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  useEffect(() => {\n    window.addEventListener(\"keydown\", trapper);\n\n    return () => {\n      window.removeEventListener(\"keydown\", trapper);\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return [trapRef];\n}\n"},"lineCount":null}},"error":null,"hash":"d9ccc358aea197febfb18fb46fd75c8c","cacheData":{"env":{}}}