import {Breadcrumb, type BreadcrumbProps} from "antd";
import {useEffect, useMemo, useState} from "react";
import {HomeOutlined} from "@ant-design/icons";
import IconFont from "@/components/IconFont";
import {useTranslation} from "react-i18next";
import {useLocation} from "react-router";
import {useLayoutContext} from "@/layout/LayoutContext";
import {buildBreadcrumbMap, findMenuByPath} from "@/layout/utils.ts";
const defaultBreadcrumb: BreadcrumbProps['items'] = [
{
title: ,
}
];
const BreadcrumbRender = () => {
const {t} = useTranslation();
const location = useLocation();
const { menus } = useLayoutContext();
const [breadcrumbItems, setBreadcrumbItems] = useState(defaultBreadcrumb);
const breadcrumbMap = useMemo(() => buildBreadcrumbMap(menus), [menus]);
useEffect(() => {
const path = location.pathname;
const menu = findMenuByPath(menus, path);
if(menu && menu.key) {
const breadcrumbs = breadcrumbMap[menu.key];
if(breadcrumbs) {
setBreadcrumbItems([
{
title: ,
},
...breadcrumbs.map(item => ({
title: (
<>
{item.icon && }
{item.local ? t(item.local) : item.title}
>
),
}))
]);
return;
}
}
setBreadcrumbItems(defaultBreadcrumb)
}, [t, location.pathname, breadcrumbMap]);
return (
)
}
export default BreadcrumbRender;