alinea
Version:
Headless git-based CMS
51 lines (50 loc) • 1.19 kB
TypeScript
export type TextDoc<T = {}> = Array<Node>;
export type Node = TextNode | ElementNode | BlockNode;
export declare namespace Node {
const type = "_type";
function isText(node: any): node is TextNode;
function isElement(node: any): node is ElementNode;
function isBlock(node: any): node is BlockNode;
}
export interface Mark {
_type: string;
[attr: string]: string | undefined;
}
export declare namespace Mark {
const type = "_type";
}
export interface LinkMark extends Mark {
_type: 'link';
_id: string;
_link: 'entry' | 'file' | 'url';
_entry?: string;
}
export declare namespace LinkMark {
const id = "_id";
const link = "_link";
const entry = "_entry";
}
export interface TextNode {
_type: 'text';
text?: string;
marks?: Array<Mark>;
}
export declare namespace TextNode {
const text = "text";
const marks = "marks";
}
export interface ElementNode {
_type: string;
content?: TextDoc;
[key: string]: any;
}
export declare namespace ElementNode {
const content = "content";
}
export interface BlockNode {
_id: string;
_type: string;
}
export declare namespace BlockNode {
const id = "_id";
}