'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
const _excluded = ["children", "className", "component", "slots", "slotProps", "expandText", "itemsAfterCollapse", "itemsBeforeCollapse", "maxItems", "separator"];
import * as React from 'react';
import { isFragment } from 'react-is';
import PropTypes from 'prop-types';
import clsx from 'clsx';
import integerPropType from '@mui/utils/integerPropType';
import { useSlotProps } from '@mui/base/utils';
import composeClasses from '@mui/utils/composeClasses';
import styled from '../styles/styled';
import useThemeProps from '../styles/useThemeProps';
import Typography from '../Typography';
import BreadcrumbCollapsed from './BreadcrumbCollapsed';
import breadcrumbsClasses, { getBreadcrumbsUtilityClass } from './breadcrumbsClasses';
import { jsx as _jsx } from "react/jsx-runtime";
const useUtilityClasses = ownerState => {
const {
classes
} = ownerState;
const slots = {
root: ['root'],
li: ['li'],
ol: ['ol'],
separator: ['separator']
};
return composeClasses(slots, getBreadcrumbsUtilityClass, classes);
};
const BreadcrumbsRoot = styled(Typography, {
name: 'MuiBreadcrumbs',
slot: 'Root',
overridesResolver: (props, styles) => {
return [{
[`& .${breadcrumbsClasses.li}`]: styles.li
}, styles.root];
}
})({});
const BreadcrumbsOl = styled('ol', {
name: 'MuiBreadcrumbs',
slot: 'Ol',
overridesResolver: (props, styles) => styles.ol
})({
display: 'flex',
flexWrap: 'wrap',
alignItems: 'center',
padding: 0,
margin: 0,
listStyle: 'none'
});
const BreadcrumbsSeparator = styled('li', {
name: 'MuiBreadcrumbs',
slot: 'Separator',
overridesResolver: (props, styles) => styles.separator
})({
display: 'flex',
userSelect: 'none',
marginLeft: 8,
marginRight: 8
});
function insertSeparators(items, className, separator, ownerState) {
return items.reduce((acc, current, index) => {
if (index < items.length - 1) {
acc = acc.concat(current, /*#__PURE__*/_jsx(BreadcrumbsSeparator, {
"aria-hidden": true,
className: className,
ownerState: ownerState,
children: separator
}, `separator-${index}`));
} else {
acc.push(current);
}
return acc;
}, []);
}
const Breadcrumbs = /*#__PURE__*/React.forwardRef(function Breadcrumbs(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: 'MuiBreadcrumbs'
});
const {
children,
className,
component = 'nav',
slots = {},
slotProps = {},
expandText = 'Show path',
itemsAfterCollapse = 1,
itemsBeforeCollapse = 1,
maxItems = 8,
separator = '/'
} = props,
other = _objectWithoutPropertiesLoose(props, _excluded);
const [expanded, setExpanded] = React.useState(false);
const ownerState = _extends({}, props, {
component,
expanded,
expandText,
itemsAfterCollapse,
itemsBeforeCollapse,
maxItems,
separator
});
const classes = useUtilityClasses(ownerState);
const collapsedIconSlotProps = useSlotProps({
elementType: slots.CollapsedIcon,
externalSlotProps: slotProps.collapsedIcon,
ownerState
});
const listRef = React.useRef(null);
const renderItemsBeforeAndAfter = allItems => {
const handleClickExpand = () => {
setExpanded(true);
// The clicked element received the focus but gets removed from the DOM.
// Let's keep the focus in the component after expanding.
// Moving it to the
or