UNPKG

1.38 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.expandFocusableNodes = void 0;
4var all_affected_1 = require("./utils/all-affected");
5var is_1 = require("./utils/is");
6var parenting_1 = require("./utils/parenting");
7var tabOrder_1 = require("./utils/tabOrder");
8var tabUtils_1 = require("./utils/tabUtils");
9/**
10 * traverses all related nodes (including groups) returning a list of all nodes(outer and internal) with meta information
11 * This is low-level API!
12 * @returns list of focusable elements inside a given top(!) node.
13 * @see {@link getFocusableNodes} providing a simpler API
14 */
15var expandFocusableNodes = function (topNode) {
16 var entries = (0, all_affected_1.getAllAffectedNodes)(topNode).filter(is_1.isNotAGuard);
17 var commonParent = (0, parenting_1.getTopCommonParent)(topNode, topNode, entries);
18 var outerNodes = (0, tabOrder_1.orderByTabIndex)((0, tabUtils_1.getFocusables)([commonParent], true), true, true);
19 var innerElements = (0, tabUtils_1.getFocusables)(entries, false);
20 return outerNodes.map(function (_a) {
21 var node = _a.node, index = _a.index;
22 return ({
23 node: node,
24 index: index,
25 lockItem: innerElements.indexOf(node) >= 0,
26 guard: (0, is_1.isGuard)(node),
27 });
28 });
29};
30exports.expandFocusableNodes = expandFocusableNodes;