layout-extensions.ts 1.2 KB

123456789101112131415161718192021222324252627282930
  1. import {
  2. DashboardActionBarItem,
  3. DashboardPageBlockDefinition,
  4. } from '../extension-api/extension-api-types.js';
  5. import { globalRegistry } from '../registry/global-registry.js';
  6. globalRegistry.register('dashboardActionBarItemRegistry', new Map<string, DashboardActionBarItem[]>());
  7. globalRegistry.register('dashboardPageBlockRegistry', new Map<string, DashboardPageBlockDefinition[]>());
  8. export function registerDashboardActionBarItem(item: DashboardActionBarItem) {
  9. globalRegistry.set('dashboardActionBarItemRegistry', map => {
  10. map.set(item.pageId, [...(map.get(item.pageId) ?? []), item]);
  11. return map;
  12. });
  13. }
  14. export function getDashboardActionBarItems(pageId: string) {
  15. return globalRegistry.get('dashboardActionBarItemRegistry').get(pageId) ?? [];
  16. }
  17. export function registerDashboardPageBlock(block: DashboardPageBlockDefinition) {
  18. globalRegistry.set('dashboardPageBlockRegistry', map => {
  19. map.set(block.location.pageId, [...(map.get(block.location.pageId) ?? []), block]);
  20. return map;
  21. });
  22. }
  23. export function getDashboardPageBlocks(pageId: string) {
  24. return globalRegistry.get('dashboardPageBlockRegistry').get(pageId) ?? [];
  25. }