UNPKG

bananas-commerce-admin

Version:

What's this, an admin for apes?

36 lines (34 loc) 1.04 kB
import { ContribComponentListItem, ContribComponentMap } from "../types"; /** * Filters and organizes UI component contributions by tags. * * @param {ContribComponentMap} map - Component map as imported/exported from BCOM * @param {string[]} filter - Optional tags to filter and order components * @returns {ContribComponentListItem[]} * * @example * // Get all contribs * contribute(Bananas.subscription.contrib.dashboard); * * @example * // Get specific contribs in order * contribute(Bananas.subscription.contrib.dashboard, "dashboard:stats:subscription:events", "dashboard:stats:subscription:count"); */ export const contribute = ( map: ContribComponentMap | null | undefined, ...filter: string[] ): ContribComponentListItem[] => { if (map == null) return []; if (filter && filter.length > 0) { return filter .filter((tag) => tag in map) .map((tag) => ({ tag, contrib: map[tag], })); } return Object.entries(map).map(([tag, contrib]) => ({ tag, contrib, })); };