'use client'; 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 composeClasses from '@mui/utils/composeClasses'; import useSlotProps from '@mui/utils/useSlotProps'; import { styled } from "../zero-styled/index.js"; import { useDefaultProps } from "../DefaultPropsProvider/index.js"; import Typography from "../Typography/index.js"; import BreadcrumbCollapsed from "./BreadcrumbCollapsed.js"; import breadcrumbsClasses, { getBreadcrumbsUtilityClass } from "./breadcrumbsClasses.js"; 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' })({ display: 'flex', flexWrap: 'wrap', alignItems: 'center', padding: 0, margin: 0, listStyle: 'none' }); const BreadcrumbsSeparator = styled('li', { name: 'MuiBreadcrumbs', slot: '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 = useDefaultProps({ props: inProps, name: 'MuiBreadcrumbs' }); const { children, className, component = 'nav', slots = {}, slotProps = {}, expandText = 'Show path', itemsAfterCollapse = 1, itemsBeforeCollapse = 1, maxItems = 8, separator = '/', ...other } = props; const [expanded, setExpanded] = React.useState(false); const ownerState = { ...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