import React, { memo, useMemo } from 'react';
import { ReactSVG } from 'react-svg';
import MuiBreadcrumbs from '@mui/material/Breadcrumbs';
import Typography from '@mui/material/Typography';
import startCase from 'lodash/startCase';
import get from 'lodash/get';
import kebabCase from 'lodash/kebabCase';
import clsx from 'clsx';
import { Link } from '../link';
import { BreadcrumbsProps, NavItem as Item } from './types';
import { ASSETS_URL } from '../../../consts/common';
import { trimSpaces } from '../../../utils/common/formatters';
import { createClasses } from './styles';
const Breadcrumbs = (props: BreadcrumbsProps) => {
const { pathname, sidebarItemsMap = {}, customBreadcrumbs } = props;
const classes = createClasses();
const breadcrumbs = useMemo(() => {
if (customBreadcrumbs) {
return customBreadcrumbs;
}
if (pathname) {
const linkPath = pathname.split('/');
linkPath.shift();
return linkPath.map((path, index) => {
const text = index === 0 ? sidebarItemsMap[path]?.name || path : path;
let href;
if (index === 0) {
href = sidebarItemsMap[path]?.rootPath;
} else {
const subItem = sidebarItemsMap[linkPath[0]]?.items?.find(
(sub: Item) => kebabCase(sub?.name).replace('&', '') === linkPath[1]
);
if (subItem?.path) {
href = subItem.path;
} else {
const innerItem = get(subItem, 'subItems', []).find(
(sub: Item) => kebabCase(sub?.name).replace('&', '') === linkPath[2]
);
if (innerItem?.path) {
href = innerItem.path;
}
}
}
if (href === pathname) {
href = '';
}
return {
text,
href
};
});
}
return [];
}, [customBreadcrumbs, pathname, sidebarItemsMap]);
return (
}
data-testid="breadcrumbsRoot"
>
{breadcrumbs.map((breadcrumb, i) => {
const { href = '', text: rawText } = breadcrumb;
const text = customBreadcrumbs ? rawText : startCase(rawText);
return href.length && !(i === breadcrumbs.length - 1) ? (
{text}
) : (
{text}
);
})}
);
};
Breadcrumbs.defaultProps = {
pathname: '',
sidebarItemsMap: {}
};
const m = memo(Breadcrumbs);
export { m as Breadcrumbs };