@mui/x-tree-view
Version:
The community edition of the MUI X Tree View components.
49 lines (48 loc) • 2.02 kB
JavaScript
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}`;
};