CanvasNode:
| {
color?: string;
height: number;
id: string;
kind: "text";
text: string;
width: number;
x: number;
y: number;
}
| {
color?: string;
file: string;
file_resolved: string
| null;
height: number;
id: string;
kind: "file";
subpath?: string;
width: number;
x: number;
y: number;
}
| {
color?: string;
height: number;
id: string;
kind: "link";
url: string;
width: number;
x: number;
y: number;
}
| {
color?: string;
height: number;
id: string;
kind: "group";
label?: string;
width: number;
x: number;
y: number;
}
| {
id: string;
kind: "unknown";
raw: Record<string, unknown>;
raw_type: string;
}
Discriminated union of canvas node kinds.
Five variants:
text(free-form markdown),file(vault note embed — carriesfile_resolvedwith the post-findBestMatchvault-relative path or null on broken reference),link(external URL),group(labeled container), andunknown(preserves the rawtypeand full object for forward compatibility with future Obsidian canvas extensions).