UNPKG

@mui/x-tree-view

Version:

The community edition of the MUI X Tree View components.

55 lines (54 loc) • 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.expansionSelectors = void 0; var _store = require("@mui/x-internals/store"); var _selectors = require("../items/selectors"); var _items = require("../items"); const expandedItemMapSelector = (0, _store.createSelectorMemoized)(state => state.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: state => state.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)(_selectors.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[_items.TREE_VIEW_ROOT_PARENT_ID] ?? []).flatMap(appendChildren); }), /** * Gets the slot that triggers the item's expansion when clicked. */ triggerSlot: state => state.expansionTrigger, /** * Checks whether an item is expanded. */ isItemExpanded: (state, itemId) => expandedItemMapSelector(state).has(itemId), /** * Checks whether an item is expandable. */ isItemExpandable: (state, itemId) => _selectors.itemsSelectors.itemMeta(state, itemId)?.expandable ?? false };