@websolutespa/payload-plugin-bowl
Version:
Bowl PayloadCms plugin of the BOM Repository
42 lines (41 loc) • 1.54 kB
JavaScript
import { isArray, isEquatable, isNotNullString, isObject } from '@websolutespa/bom-core';
import { decorateNavItem_ } from './menu';
export async function decorateNav_(item, slug, context) {
// console.log('decorateNav_');
parseNavs_(item, context);
return item;
}
export async function decorateNavs_(items, slug, context) {
// console.log('decorateNavs_');
for (const item of items){
await decorateNav_(item, slug, context);
}
return items;
}
function parseNavs_(item, context) {
const { market, currentRoutes, categories } = context;
if (isArray(item)) {
item.forEach((v, k)=>{
if (isUndecoratedNavItem(v)) {
item[k] = decorateNavItem_(v, categories, currentRoutes, market);
} else {
parseNavs_(v, context);
}
});
} else if (isObject(item)) {
Object.entries(item).forEach(([k, v])=>{
if (isUndecoratedNavItem(v)) {
item[k] = decorateNavItem_(v, categories, currentRoutes, market);
} else {
parseNavs_(v, context);
}
});
}
}
export function isUndecoratedNavItem(item) {
return isObject(item) && (item.type === 'category' && (isEquatable(item.category) || isObject(item.category)) || item.type === 'page' && isRelation(item.page));
}
export function isRelation(item) {
return isObject(item) && isNotNullString(item.relationTo) && (isObject(item.value) || isArray(item.value));
}
//# sourceMappingURL=nav.js.map