UNPKG

@mui/x-tree-view

Version:

The community edition of the MUI X Tree View components.

55 lines (54 loc) 2.24 kB
"use strict"; 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) };