UNPKG

@mui/x-tree-view

Version:

The community edition of the MUI X Tree View components.

78 lines (77 loc) 2.41 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.useTreeViewLabel = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect"); var _itemPlugin = require("./itemPlugin"); var _useTreeViewLabel = require("./useTreeViewLabel.selectors"); const useTreeViewLabel = ({ store, params }) => { const setEditedItem = editedItemId => { if (editedItemId !== null) { const isEditable = _useTreeViewLabel.labelSelectors.isItemEditable(store.state, editedItemId); if (!isEditable) { return; } } store.set('label', (0, _extends2.default)({}, store.state.label, { editedItemId })); }; const updateItemLabel = (itemId, label) => { if (!label) { throw new Error(['MUI X: The Tree View component requires all items to have a `label` property.', 'The label of an item cannot be empty.', itemId].join('\n')); } const item = store.state.items.itemMetaLookup[itemId]; if (item.label === label) { return; } store.set('items', (0, _extends2.default)({}, store.state.items, { itemMetaLookup: (0, _extends2.default)({}, store.state.items.itemMetaLookup, { [itemId]: (0, _extends2.default)({}, item, { label }) }) })); if (params.onItemLabelChange) { params.onItemLabelChange(itemId, label); } }; (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => { store.set('label', (0, _extends2.default)({}, store.state.label, { isItemEditable: params.isItemEditable })); }, [store, params.isItemEditable]); return { instance: { setEditedItem, updateItemLabel }, publicAPI: { setEditedItem, updateItemLabel } }; }; exports.useTreeViewLabel = useTreeViewLabel; useTreeViewLabel.itemPlugin = _itemPlugin.useTreeViewLabelItemPlugin; useTreeViewLabel.applyDefaultValuesToParams = ({ params }) => (0, _extends2.default)({}, params, { isItemEditable: params.isItemEditable ?? false }); useTreeViewLabel.getInitialState = params => ({ label: { isItemEditable: params.isItemEditable, editedItemId: null } }); useTreeViewLabel.params = { onItemLabelChange: true, isItemEditable: true };