diff options
| author | MohamedBassem <me@mbassem.com> | 2025-08-03 23:35:06 -0700 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2025-08-03 23:59:45 -0700 |
| commit | c68e5099797d5b49ed6441ce04d7c77105327f73 (patch) | |
| tree | 296fe5f473f46d802fcf94fa203ca37672112c30 /apps/web/components/dashboard/preview/content-renderers/registry.ts | |
| parent | 03aa17200ed80c2978bf496991c6afbb5a04258b (diff) | |
| download | karakeep-c68e5099797d5b49ed6441ce04d7c77105327f73.tar.zst | |
feat(web): Add special cards for specific websites. Fixes #1344
Diffstat (limited to 'apps/web/components/dashboard/preview/content-renderers/registry.ts')
| -rw-r--r-- | apps/web/components/dashboard/preview/content-renderers/registry.ts | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/apps/web/components/dashboard/preview/content-renderers/registry.ts b/apps/web/components/dashboard/preview/content-renderers/registry.ts new file mode 100644 index 00000000..1e920eaf --- /dev/null +++ b/apps/web/components/dashboard/preview/content-renderers/registry.ts @@ -0,0 +1,26 @@ +import { ZBookmark } from "@karakeep/shared/types/bookmarks"; + +import { ContentRenderer, ContentRendererRegistry } from "./types"; + +class ContentRendererRegistryImpl implements ContentRendererRegistry { + private renderers: Map<string, ContentRenderer> = new Map< + string, + ContentRenderer + >(); + + register(renderer: ContentRenderer): void { + this.renderers.set(renderer.id, renderer); + } + + getRenderers(bookmark: ZBookmark): ContentRenderer[] { + return [...this.renderers.values()] + .filter((renderer) => renderer.canRender(bookmark)) + .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0)); + } + + getAllRenderers(): ContentRenderer[] { + return [...this.renderers.values()]; + } +} + +export const contentRendererRegistry = new ContentRendererRegistryImpl(); |
