UNPKG

@mui/x-tree-view

Version:

The community edition of the MUI X Tree View components.

96 lines (95 loc) 3.86 kB
"use strict"; 'use client'; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.TreeItemIcon = TreeItemIcon; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var React = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _resolveComponentProps = _interopRequireDefault(require("@mui/utils/resolveComponentProps")); var _useSlotProps2 = _interopRequireDefault(require("@mui/utils/useSlotProps")); var _TreeViewStyleContext = require("../internals/TreeViewProvider/TreeViewStyleContext"); var _icons = require("../icons"); var _jsxRuntime = require("react/jsx-runtime"); const _excluded = ["ownerState"]; function pickIcon(treeItemIcon, treeViewIcon, fallback) { if (treeItemIcon !== undefined) { return treeItemIcon; } if (treeViewIcon !== undefined) { return treeViewIcon; } return fallback; } function TreeItemIcon(props) { const { slots: slotsFromTreeItem, slotProps: slotPropsFromTreeItem, status } = props; const { slots: slotsFromTreeView, slotProps: slotPropsFromTreeView } = (0, _TreeViewStyleContext.useTreeViewStyleContext)(); const slots = { collapseIcon: pickIcon(slotsFromTreeItem?.collapseIcon, slotsFromTreeView.collapseIcon, _icons.TreeViewCollapseIcon), expandIcon: pickIcon(slotsFromTreeItem?.expandIcon, slotsFromTreeView.expandIcon, _icons.TreeViewExpandIcon), endIcon: pickIcon(slotsFromTreeItem?.endIcon, slotsFromTreeView.endIcon), icon: slotsFromTreeItem?.icon }; let iconName; if (slots?.icon) { iconName = 'icon'; } else if (status.expandable) { if (status.expanded) { iconName = 'collapseIcon'; } else { iconName = 'expandIcon'; } } else { iconName = 'endIcon'; } const Icon = slots[iconName]; const _useSlotProps = (0, _useSlotProps2.default)({ elementType: Icon, externalSlotProps: tempOwnerState => (0, _extends2.default)({}, (0, _resolveComponentProps.default)(slotPropsFromTreeView[iconName], tempOwnerState), (0, _resolveComponentProps.default)(slotPropsFromTreeItem?.[iconName], tempOwnerState)), // TODO: Add proper ownerState ownerState: {} }), iconProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded); if (!Icon) { return null; } return /*#__PURE__*/(0, _jsxRuntime.jsx)(Icon, (0, _extends2.default)({}, iconProps)); } process.env.NODE_ENV !== "production" ? TreeItemIcon.propTypes = { // ----------------------------- Warning -------------------------------- // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the TypeScript types and run "pnpm proptypes" | // ---------------------------------------------------------------------- /** * The props used for each component slot. * @default {} */ slotProps: _propTypes.default.object, /** * Overridable component slots. * @default {} */ slots: _propTypes.default.object, status: _propTypes.default.shape({ disabled: _propTypes.default.bool.isRequired, editable: _propTypes.default.bool.isRequired, editing: _propTypes.default.bool.isRequired, error: _propTypes.default.bool.isRequired, expandable: _propTypes.default.bool.isRequired, expanded: _propTypes.default.bool.isRequired, focused: _propTypes.default.bool.isRequired, loading: _propTypes.default.bool.isRequired, selected: _propTypes.default.bool.isRequired }).isRequired } : void 0;