@mui/x-tree-view
Version:
The community edition of the MUI X Tree View components.
55 lines (54 loc) • 2.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.expansionSelectors = void 0;
var _store = require("@mui/x-internals/store");
var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
var _useTreeViewItems2 = require("../useTreeViewItems");
const expandedItemMapSelector = (0, _store.createSelectorMemoized)(state => state.expansion.expandedItems, expandedItems => {
const expandedItemsMap = new Map();
expandedItems.forEach(id => {
expandedItemsMap.set(id, true);
});
return expandedItemsMap;
});
const expansionSelectors = exports.expansionSelectors = {
/**
* Gets the expanded items as provided to the component.
*/
expandedItemsRaw: (0, _store.createSelector)(state => state.expansion.expandedItems),
/**
* Gets the expanded items as a Map.
*/
expandedItemsMap: expandedItemMapSelector,
/**
* Gets the items to render as a flat list (the descendants of an expanded item are listed as siblings of the item).
*/
flatList: (0, _store.createSelectorMemoized)(_useTreeViewItems.itemsSelectors.itemOrderedChildrenIdsLookup, expandedItemMapSelector, (itemOrderedChildrenIds, expandedItemsMap) => {
function appendChildren(itemId) {
if (!expandedItemsMap.has(itemId)) {
return [itemId];
}
const itemsWithDescendants = [itemId];
const children = itemOrderedChildrenIds[itemId] || [];
for (const childId of children) {
itemsWithDescendants.push(...appendChildren(childId));
}
return itemsWithDescendants;
}
return (itemOrderedChildrenIds[_useTreeViewItems2.TREE_VIEW_ROOT_PARENT_ID] ?? []).flatMap(appendChildren);
}),
/**
* Gets the slot that triggers the item's expansion when clicked.
*/
triggerSlot: (0, _store.createSelector)(state => state.expansion.expansionTrigger),
/**
* Checks whether an item is expanded.
*/
isItemExpanded: (0, _store.createSelector)(expandedItemMapSelector, (expandedItemsMap, itemId) => expandedItemsMap.has(itemId)),
/**
* Checks whether an item is expandable.
*/
isItemExpandable: (0, _store.createSelector)(_useTreeViewItems.itemsSelectors.itemMeta, (itemMeta, _itemId) => itemMeta?.expandable ?? false)
};