analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
51 lines (46 loc) • 1.65 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _chunkS76F5KLPjs = require('./chunk-S76F5KLP.js');
// src/components/BreadcrumbMenu/useBreadcrumbBuilder.ts
var _react = require('react');
var isBreadcrumbWithData = (level) => {
return "data" in level;
};
var useBreadcrumbBuilder = (config) => {
const { namespace, root, levels } = config;
const { breadcrumbs, setBreadcrumbs, sliceBreadcrumbs } = _chunkS76F5KLPjs.useBreadcrumb.call(void 0, namespace);
const levelDependencies = levels.map(
(level) => isBreadcrumbWithData(level) ? level.data : null
);
const levelUrlIds = levels.map((level) => level.urlId);
_react.useEffect.call(void 0, () => {
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
};
};
exports.useBreadcrumbBuilder = useBreadcrumbBuilder;
//# sourceMappingURL=chunk-EMW2C4NG.js.map