UNPKG

@mui/x-tree-view

Version:

The community edition of the MUI X Tree View components.

49 lines (48 loc) 2.02 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { EMPTY_ARRAY, EMPTY_OBJECT } from '@base-ui/utils/empty'; import { getExpansionTrigger } from "../plugins/expansion/utils.js"; import { TreeViewItemsPlugin } from "../plugins/items/index.js"; /** * Returns the properties of the state that are derived from the parameters. * This do not contain state properties that don't update whenever the parameters update. */ export function deriveStateFromParameters(parameters) { return { disabledItemsFocusable: parameters.disabledItemsFocusable ?? false, domStructure: 'nested', itemChildrenIndentation: parameters.itemChildrenIndentation ?? '12px', providedTreeId: parameters.id, // TODO: Fix expansionTrigger: getExpansionTrigger({ isItemEditable: parameters.isItemEditable, expansionTrigger: parameters.expansionTrigger }), disableSelection: parameters.disableSelection ?? false, multiSelect: parameters.multiSelect ?? false, checkboxSelection: parameters.checkboxSelection ?? false, selectionPropagation: parameters.selectionPropagation ?? EMPTY_OBJECT }; } function applyModelInitialValue(controlledValue, defaultValue, fallback) { if (controlledValue !== undefined) { return controlledValue; } if (defaultValue !== undefined) { return defaultValue; } return fallback; } export function createMinimalInitialState(parameters) { return _extends({ treeId: undefined, focusedItemId: null }, deriveStateFromParameters(parameters), TreeViewItemsPlugin.buildItemsStateIfNeeded(parameters), { expandedItems: applyModelInitialValue(parameters.expandedItems, parameters.defaultExpandedItems, []), selectedItems: applyModelInitialValue(parameters.selectedItems, parameters.defaultSelectedItems, parameters.multiSelect ? EMPTY_ARRAY : null) }); } let globalTreeViewDefaultId = 0; export const createTreeViewDefaultId = () => { globalTreeViewDefaultId += 1; return `mui-tree-view-${globalTreeViewDefaultId}`; };