UNPKG

@mui/x-tree-view

Version:

The community edition of the MUI X Tree View components.

86 lines (85 loc) 2.72 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 _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect")); var _useTreeViewLabel = require("./useTreeViewLabel.itemPlugin"); var _useTreeViewLabel2 = require("./useTreeViewLabel.selectors"); const useTreeViewLabel = ({ store, params }) => { const setEditedItem = editedItemId => { if (editedItemId !== null) { const isEditable = (0, _useTreeViewLabel2.selectorIsItemEditable)(store.value, editedItemId); if (!isEditable) { return; } } store.update(prevState => (0, _extends2.default)({}, prevState, { label: (0, _extends2.default)({}, prevState.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')); } store.update(prevState => { const item = prevState.items.itemMetaLookup[itemId]; if (item.label !== label) { return (0, _extends2.default)({}, prevState, { items: (0, _extends2.default)({}, prevState.items, { itemMetaLookup: (0, _extends2.default)({}, prevState.items.itemMetaLookup, { [itemId]: (0, _extends2.default)({}, item, { label }) }) }) }); } return prevState; }); if (params.onItemLabelChange) { params.onItemLabelChange(itemId, label); } }; (0, _useEnhancedEffect.default)(() => { store.update(prevState => (0, _extends2.default)({}, prevState, { label: (0, _extends2.default)({}, prevState.label, { isItemEditable: params.isItemEditable }) })); }, [store, params.isItemEditable]); return { instance: { setEditedItem, updateItemLabel }, publicAPI: { setEditedItem, updateItemLabel } }; }; exports.useTreeViewLabel = useTreeViewLabel; useTreeViewLabel.itemPlugin = _useTreeViewLabel.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 };