AT protocol bookmarking platforms in obsidian
1import type ATmarkPlugin from "../main";
2
3export interface ATmarkItem {
4 render(container: HTMLElement): void;
5 renderDetail(container: HTMLElement): void;
6 canAddNotes(): boolean;
7 canEdit(): boolean;
8 openEditModal(onSuccess?: () => void): void;
9 getUri(): string;
10 getCid(): string;
11 getCreatedAt(): string;
12 getSource(): "semble" | "bookmark" | "margin";
13 getAttachedNotes?(): Array<{ uri: string; text: string }>;
14}
15
16export interface SourceFilter {
17 type: string;
18 value: string;
19 label?: string;
20}
21
22export interface DataSource {
23 readonly name: "semble" | "bookmark" | "margin";
24 fetchItems(filters: SourceFilter[], plugin: ATmarkPlugin): Promise<ATmarkItem[]>;
25 getAvailableFilters(): Promise<SourceFilter[]>;
26 renderFilterUI(container: HTMLElement, activeFilters: Map<string, SourceFilter>, onChange: () => void, plugin: ATmarkPlugin): void;
27}