{"version":3,"file":"getDomElems-BnUa8Loc.js","sources":["../../../../src/main/js/_shared-components/getDomElems.js"],"sourcesContent":["/** Get Dom Elements\n * @param {object} selectors: keyed list of dom selectors\n * @param {element} baseElem(optional): parent element that contains all selectors\n * with pattern { key: 'selector' }\n * example: masthead: '[data-js-masthead]'\n * @returns {object}: either returns null or an object\n * with pattern { key: domElement }\n */\nexport const getDomElems = (selectors, baseElem) => {\n const baseElement = baseElem || document;\n const domElems = Object.keys(selectors).reduce((previous, cur) => {\n const prev = previous;\n prev[cur] = baseElement.querySelector(selectors[cur]);\n return prev;\n }, {});\n /* confirm they are all dom elems */\n const values = Object.keys(domElems).map((e) => domElems[e]);\n const areElems = values.every((el) => el instanceof Element);\n /* if they're all dom elems, return the new obj, otherwise null */\n return areElems ? domElems : null;\n};\n\n/**\n * Returns an array of all focusable elements found with the given param\n * @param {object} elem: DOM element to query for focusable descendent elems\n * @returns {*[]}: array of domElements\n */\nexport const getFocusableElems = (elem) => (\n [...elem.querySelectorAll('button, a, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')]\n);\n\nexport const isVisible = (elem) => (\n elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length\n);\n\n/**\n * Returns an array of all visible, focusable elements found with the given param\n * @param {object} elem: DOM element to query for focusable descendent elems\n * @returns {*[]}: array of domElements\n */\nexport const getVisibleFocusableElems = (elem) => (\n getFocusableElems(elem).filter((el) => isVisible(el))\n);\n"],"names":["getDomElems","selectors","baseElem","baseElement","document","domElems","Object","keys","reduce","previous","cur","prev","querySelector","map","e","every","el","Element","getFocusableElems","elem","querySelectorAll","isVisible","offsetWidth","offsetHeight","getClientRects","length","getVisibleFocusableElems","filter"],"mappings":"6EAQaA,EAAcA,CAACC,EAAWC,IAAa,CAClD,MAAMC,EAAcD,GAAYE,SAC1BC,EAAWC,OAAOC,KAAKN,CAAS,EAAEO,OAAO,CAACC,EAAUC,IAAQ,CAChE,MAAMC,EAAOF,EACbE,OAAAA,EAAKD,CAAG,EAAIP,EAAYS,cAAcX,EAAUS,CAAG,CAAC,EAC7CC,CACR,EAAE,EAAE,EAKL,OAHeL,OAAOC,KAAKF,CAAQ,EAAEQ,IAAKC,GAAMT,EAASS,CAAC,CAAC,EACnCC,MAAOC,GAAOA,aAAcC,OAAO,EAEzCZ,EAAW,IAC/B,EAOaa,EAAqBC,GAChC,CAAC,GAAGA,EAAKC,iBAAiB,qEAAqE,CAAC,EAGrFC,EAAaF,GACxBA,EAAKG,aAAeH,EAAKI,cAAgBJ,EAAKK,eAAc,EAAGC,OAQpDC,EAA4BP,GACvCD,EAAkBC,CAAI,EAAEQ,OAAQX,GAAOK,EAAUL,CAAE,CAAC"}