analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
51 lines (49 loc) • 1.51 kB
JavaScript
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