UNPKG

@rsc-labs/nocto-plugin-system

Version:

Pluggable registry system for Nocto plugins

35 lines (34 loc) 928 B
const items = new Map(); class SidebarRegistryClass { constructor() { this.sidebarConfig = {}; } setConfig(config) { this.sidebarConfig = config; } register(plugin) { if (plugin.sidebar) { items.set(plugin.id, plugin.sidebar); } } getAll() { return Array.from(items.entries()) .filter(([id]) => this.sidebarConfig.hasOwnProperty(id)) .map(([id, meta]) => { const cfg = this.sidebarConfig[id] ?? {}; return { id, path: meta.path, icon: meta.icon, label: meta.label, items: meta.items, order: cfg.order ?? 100, }; }); } getSorted() { return this.getAll() .sort((a, b) => a.order - b.order); } } export const SidebarRegistry = new SidebarRegistryClass();