<html><head></head><body>{"version":3,"file":"index.umd.min.js","sources":["../src/index.js"],"sourcesContent":["const candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n];\nconst candidateSelector = /* #__PURE__ */ candidateSelectors.join(',');\n\nconst matches =\n typeof Element === 'undefined'\n ? function () {}\n : Element.prototype.matches ||\n Element.prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n\nconst getCandidates = function (el, includeContainer, filter) {\n let candidates = Array.prototype.slice.apply(\n el.querySelectorAll(candidateSelector)\n );\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\nconst isContentEditable = function (node) {\n return node.contentEditable === 'true';\n};\n\nconst getTabindex = function (node) {\n const tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n\n if (!isNaN(tabindexAttr)) {\n return tabindexAttr;\n }\n\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (isContentEditable(node)) {\n return 0;\n }\n\n // in Chrome, <details>, <audio controls=""> and <video controls=""> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n if (\n (node.nodeName === 'AUDIO' ||\n node.nodeName === 'VIDEO' ||\n node.nodeName === 'DETAILS') &&\n node.getAttribute('tabindex') === null\n ) {\n return 0;\n }\n\n return node.tabIndex;\n};\n\nconst sortOrderedTabbables = function (a, b) {\n return a.tabIndex === b.tabIndex\n ? a.documentOrder - b.documentOrder\n : a.tabIndex - b.tabIndex;\n};\n\nconst isInput = function (node) {\n return node.tagName === 'INPUT';\n};\n\nconst isHiddenInput = function (node) {\n return isInput(node) && node.type === 'hidden';\n};\n\nconst isDetailsWithSummary = function (node) {\n const r =\n node.tagName === 'DETAILS' &&\n Array.prototype.slice\n .apply(node.children)\n .some((child) => child.tagName === 'SUMMARY');\n return r;\n};\n\nconst getCheckedRadio = function (nodes, form) {\n for (let i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\n\nconst isTabbableRadio = function (node) {\n if (!node.name) {\n return true;\n }\n const radioScope = node.form || node.ownerDocument;\n\n const queryRadios = function (name) {\n return radioScope.querySelectorAll(\n 'input[type=\"radio\"][name=\"' + name + '\"]'\n );\n };\n\n let radioSet;\n if (\n typeof window !== 'undefined' &&\n typeof window.CSS !== 'undefined' &&\n typeof window.CSS.escape === 'function'\n ) {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(\n 'Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s',\n err.message\n );\n return false;\n }\n }\n\n const checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\n\nconst isRadio = function (node) {\n return isInput(node) && node.type === 'radio';\n};\n\nconst isNonTabbableRadio = function (node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\nconst isHidden = function (node, displayCheck) {\n if (getComputedStyle(node).visibility === 'hidden') {\n return true;\n }\n\n const isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n const nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n if (!displayCheck || displayCheck === 'full') {\n while (node) {\n if (getComputedStyle(node).display === 'none') {\n return true;\n }\n node = node.parentElement;\n }\n } else if (displayCheck === 'non-zero-area') {\n const { width, height } = node.getBoundingClientRect();\n return width === 0 && height === 0;\n }\n\n return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n// unless they are in the _first_ <legend> element of the top-most disabled\n// fieldset\nconst isDisabledFromFieldset = function (node) {\n if (\n isInput(node) ||\n node.tagName === 'SELECT' ||\n node.tagName === 'TEXTAREA' ||\n node.tagName === 'BUTTON'\n ) {\n let parentNode = node.parentElement;\n while (parentNode) {\n if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n // look for the first <legend> as an immediate child of the disabled\n // <fieldset>: if the node is in that legend, it'll be enabled even\n // though the fieldset is disabled; otherwise, the node is in a\n // secondary/subsequent legend, or somewhere else within the fieldset\n // (however deep nested) and it'll be disabled\n for (let i = 0; i < parentNode.children.length; i++) {\n const child = parentNode.children.item(i);\n if (child.tagName === 'LEGEND') {\n if (child.contains(node)) {\n return false;\n }\n\n // the node isn't in the first legend (in doc order), so no matter\n // where it is now, it'll be disabled\n return true;\n }\n }\n\n // the node isn't in a legend, so no matter where it is now, it'll be disabled\n return true;\n }\n\n parentNode = parentNode.parentElement;\n }\n }\n\n // else, node's tabbable/focusable state should not be affected by a fieldset's\n // enabled/disabled state\n return false;\n};\n\nconst isNodeMatchingSelectorFocusable = function (options, node) {\n if (\n node.disabled ||\n isHiddenInput(node) ||\n isHidden(node, options.displayCheck) ||\n // For a details element with a summary, the summary element gets the focus\n isDetailsWithSummary(node) ||\n isDisabledFromFieldset(node)\n ) {\n return false;\n }\n return true;\n};\n\nconst isNodeMatchingSelectorTabbable = function (options, node) {\n if (\n !isNodeMatchingSelectorFocusable(options, node) ||\n isNonTabbableRadio(node) ||\n getTabindex(node) < 0\n ) {\n return false;\n }\n return true;\n};\n\nconst tabbable = function (el, options) {\n options = options || {};\n\n const regularTabbables = [];\n const orderedTabbables = [];\n\n const candidates = getCandidates(\n el,\n options.includeContainer,\n isNodeMatchingSelectorTabbable.bind(null, options)\n );\n\n candidates.forEach(function (candidate, i) {\n const candidateTabindex = getTabindex(candidate);\n if (candidateTabindex === 0) {\n regularTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n node: candidate,\n });\n }\n });\n\n const tabbableNodes = orderedTabbables\n .sort(sortOrderedTabbables)\n .map((a) => a.node)\n .concat(regularTabbables);\n\n return tabbableNodes;\n};\n\nconst focusable = function (el, options) {\n options = options || {};\n\n const candidates = getCandidates(\n el,\n options.includeContainer,\n isNodeMatchingSelectorFocusable.bind(null, options)\n );\n\n return candidates;\n};\n\nconst isTabbable = function (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};\n\nconst focusableCandidateSelector = /* #__PURE__ */ candidateSelectors\n .concat('iframe')\n .join(',');\n\nconst isFocusable = function (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\nexport { tabbable, focusable, isTabbable, isFocusable };\n"],"names":["candidateSelectors","candidateSelector","join","matches","Element","prototype","msMatchesSelector","webkitMatchesSelector","getCandidates","el","includeContainer","filter","candidates","Array","slice","apply","querySelectorAll","call","unshift","getTabindex","node","tabindexAttr","parseInt","getAttribute","isNaN","contentEditable","isContentEditable","nodeName","tabIndex","sortOrderedTabbables","a","b","documentOrder","isInput","tagName","isNonTabbableRadio","type","isRadio","name","radioSet","radioScope","form","ownerDocument","queryRadios","window","CSS","escape","err","console","error","message","checked","nodes","i","length","getCheckedRadio","isTabbableRadio","isNodeMatchingSelectorFocusable","options","disabled","isHiddenInput","displayCheck","getComputedStyle","visibility","nodeUnderDetails","parentElement","getBoundingClientRect","width","height","display","isHidden","children","some","child","isDetailsWithSummary","parentNode","item","contains","isDisabledFromFieldset","isNodeMatchingSelectorTabbable","focusableCandidateSelector","concat","bind","Error","regularTabbables","orderedTabbables","forEach","candidate","candidateTabindex","push","sort","map"],"mappings":"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"}</fieldset></legend></legend></video></audio></details><style> .hidden { display: none; } </style> <a href="http://www.tdwang.net" class="hidden">皇冠体育博彩</a> <a href="http://www.letaoyizs.com" class="hidden">体育博彩</a> <a href="http://crashbandicootparapc.com" class="hidden">视界网新闻专区</a> <a href="http://www.rdsy.net" class="hidden">皇冠体育博彩</a> <a href="http://aspireadvisoryservices.com" class="hidden">开淘装修网</a> <a href="http://www.seezl.com" class="hidden">Crown-Sports-service@seezl.com</a> <a href="http://www.rf518.com" class="hidden">博彩平台排名</a> <a href="http://www.educoncepts-sdr.com" class="hidden">Sun-City-hr@educoncepts-sdr.com</a> <a href="http://web-sitemap.0478yigou.com" class="hidden">领客康健网 </a> <a href="http://uhandj.hljrhmy.com" class="hidden">广汽菲克</a> <a href="http://www.yibangyi.net" class="hidden">365bet-Chinese-info@yibangyi.net</a> <a href="http://www.cesametal.net" class="hidden">体育博彩</a> <a href="http://www.juxiangart.com" class="hidden">Venetian-Online-contact@juxiangart.com</a> <a href="http://ghgeix.kayak150.com" class="hidden">掌贝官网</a> <a href="http://www.madeintlh.com" class="hidden">New-Portugal-new-Beijing-support@madeintlh.com</a> <a href="http://www.joker47.net" class="hidden">Sands-Gaming-support@joker47.net</a> <a href="http://www.yopin365.com" class="hidden">皇冠体育</a> <a href="http://zhongdeshangqiao.net" class="hidden">乐信</a> <a href="http://www.c178.net" class="hidden">Online-gambling-admin@c178.net</a> <a href="http://www.bigtrecords.com" class="hidden">European-Championship-website-careers@bigtrecords.com</a> <a href="https://acrmc.com/search/bet5365首页-bet5365首页官方网站✔️官方网址:la777.net✔️.anc" class="hidden">小说者</a> <a href="https://www.deep6gear.com/catalogsearch/result/?q=新2网址会员手机登录-新2网址会员手机登录官方网站✔️网址:la66.net✔️.njt" class="hidden">菜鸟应用</a> <a href="https://m.facebook.com/public/✔️官方网址:la777.net✔️凯发k8官方网站-维基百科.daj" class="hidden">芬尼空气源热泵</a> <a href="https://tw.dictionary.yahoo.com/dictionary?p=科普一下必赢bwinapp的百科✔️最新网址:ad22.net✔️科普一下必赢bwinapp的百科✔️最新网址:ad22.net✔️.qhx" class="hidden">邢台医学高等专科学校</a> <a href="https://es-la.facebook.com/public/✔️网址:la66.net✔️12bet壹贰博平台介绍.lcn" class="hidden">自考365论坛</a> <a href="https://tw.dictionary.yahoo.com/dictionary?p=>>✔️网址:la66.net✔️手输<<欧洲杯下注买球app下载>>✔️网址:la66.net✔️手输<<欧洲杯下注买球app下载.ysn" class="hidden">鲜花速递网</a> <a href="https://acrmc.com/search/✔️最新网址:ad22.net✔️十大正规赌场平台网址(中国)有限公司.ykq" class="hidden">谐通科技</a> <a href="https://m.facebook.com/public/在线博彩推荐赌博网站大全(中国)有限公司✔️最新网址:la55.net✔️.uor" class="hidden">力劲集团</a> <a href="https://www.deep6gear.com/catalogsearch/result/?q=旧版彩乐园3下载-维基百科✔️网址:la666.net✔️.xyy" class="hidden">湖州天气预报</a> <a href="https://stock.adobe.com/search/images?k=推荐正规买球平台(中国)有限公司✔️网址:ad11.net✔️.jvr" class="hidden">phpyun人才系统</a> <a href="/sitemap.xml" class="hidden">站点地图</a> <a href="/cn/wenrts-451220" class="hidden">58同城日照分类信息网</a> <a href="/CN/vslwok-271392.html" class="hidden"> 随便吧在线制作平台</a> <a href="/news/utqeri-740115.html" class="hidden">《天龙八部3D》官网</a> <a href="/news/gpqvth-120721.html" class="hidden">长春违章查询网</a> </body></html>