UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

51 lines (49 loc) 1.51 kB
import { useBreadcrumb } from "./chunk-HDGN7BLD.mjs"; // src/components/BreadcrumbMenu/useBreadcrumbBuilder.ts import { useEffect } from "react"; var isBreadcrumbWithData = (level) => { return "data" in level; }; var useBreadcrumbBuilder = (config) => { const { namespace, root, levels } = config; const { breadcrumbs, setBreadcrumbs, sliceBreadcrumbs } = useBreadcrumb(namespace); const levelDependencies = levels.map( (level) => isBreadcrumbWithData(level) ? level.data : null ); const levelUrlIds = levels.map((level) => level.urlId); useEffect(() => { const newBreadcrumbs = [root]; const previousIds = []; for (const level of levels) { const { urlId } = level; if (isBreadcrumbWithData(level)) { const { data, getId, getName, getUrl } = level; if (!data) break; const dataId = getId(data); if (urlId === void 0 || dataId !== urlId) break; newBreadcrumbs.push({ id: dataId, name: getName(data), url: getUrl(data, previousIds) }); previousIds.push(dataId); } else { const { breadcrumb } = level; if (urlId === void 0) break; newBreadcrumbs.push(breadcrumb); previousIds.push(breadcrumb.id); } } setBreadcrumbs(newBreadcrumbs); }, [namespace, ...levelDependencies, ...levelUrlIds, root.id]); return { breadcrumbs, sliceBreadcrumbs }; }; export { useBreadcrumbBuilder }; //# sourceMappingURL=chunk-IFPB6M2V.mjs.map