UNPKG

@mui/x-tree-view

Version:

The community edition of the MUI X Tree View components.

48 lines (47 loc) 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.focusSelectors = void 0; var _store = require("@mui/x-internals/store"); var _useTreeViewSelection = require("../useTreeViewSelection/useTreeViewSelection.selectors"); var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors"); var _useTreeViewItems2 = require("../useTreeViewItems/useTreeViewItems.utils"); var _useTreeViewExpansion = require("../useTreeViewExpansion/useTreeViewExpansion.selectors"); const defaultFocusableItemIdSelector = (0, _store.createSelectorMemoized)(_useTreeViewSelection.selectionSelectors.selectedItems, _useTreeViewExpansion.expansionSelectors.expandedItemsMap, _useTreeViewItems.itemsSelectors.itemMetaLookup, _useTreeViewItems.itemsSelectors.disabledItemFocusable, state => _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, null), (selectedItems, expandedItemsMap, itemMetaLookup, disabledItemsFocusable, orderedRootItemIds) => { const firstSelectedItem = selectedItems.find(itemId => { if (!disabledItemsFocusable && (0, _useTreeViewItems2.isItemDisabled)(itemMetaLookup, itemId)) { return false; } const itemMeta = itemMetaLookup[itemId]; return itemMeta && (itemMeta.parentId == null || expandedItemsMap.has(itemMeta.parentId)); }); if (firstSelectedItem != null) { return firstSelectedItem; } const firstNavigableItem = orderedRootItemIds.find(itemId => disabledItemsFocusable || !(0, _useTreeViewItems2.isItemDisabled)(itemMetaLookup, itemId)); if (firstNavigableItem != null) { return firstNavigableItem; } return null; }); const focusSelectors = exports.focusSelectors = { /** * Gets the item that should be sequentially focusable (usually with the Tab key). * At any point in time, there is a single item that can be sequentially focused in the Tree View. * This item is the first selected item (that is both visible and navigable), if any, or the first navigable item if no item is selected. */ defaultFocusableItemId: defaultFocusableItemIdSelector, /** * Checks whether an item is the default focusable item. */ isItemTheDefaultFocusableItem: (0, _store.createSelector)(defaultFocusableItemIdSelector, (defaultFocusableItemId, itemId) => defaultFocusableItemId === itemId), /** * Gets the id of the item that is currently focused. */ focusedItemId: (0, _store.createSelector)(state => state.focus.focusedItemId), /** * Checks whether an item is focused. */ isItemFocused: (0, _store.createSelector)((state, itemId) => state.focus.focusedItemId === itemId) };