UNPKG

@websolutespa/payload-plugin-bowl

Version:

Bowl PayloadCms plugin of the BOM Repository

42 lines (41 loc) 1.54 kB
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