@contentful/rich-text-types
Version:
Type definitions and constants for the Contentful rich text field type.
197 lines (196 loc) • 4.4 kB
TypeScript
import { BLOCKS } from './blocks';
import { INLINES } from './inlines';
import { Block, Inline, ListItemBlock, Text } from './types';
type EmptyNodeData = {};
export interface Heading1 extends Block {
nodeType: BLOCKS.HEADING_1;
data: EmptyNodeData;
content: Array<Inline | Text>;
}
export interface Heading2 extends Block {
nodeType: BLOCKS.HEADING_2;
data: EmptyNodeData;
content: Array<Inline | Text>;
}
export interface Heading3 extends Block {
nodeType: BLOCKS.HEADING_3;
data: EmptyNodeData;
content: Array<Inline | Text>;
}
export interface Heading4 extends Block {
nodeType: BLOCKS.HEADING_4;
data: EmptyNodeData;
content: Array<Inline | Text>;
}
export interface Heading5 extends Block {
nodeType: BLOCKS.HEADING_5;
data: EmptyNodeData;
content: Array<Inline | Text>;
}
export interface Heading6 extends Block {
nodeType: BLOCKS.HEADING_6;
data: EmptyNodeData;
content: Array<Inline | Text>;
}
export interface Paragraph extends Block {
nodeType: BLOCKS.PARAGRAPH;
data: EmptyNodeData;
content: Array<Inline | Text>;
}
export interface Quote extends Block {
nodeType: BLOCKS.QUOTE;
data: EmptyNodeData;
content: Paragraph[];
}
export interface Hr extends Block {
nodeType: BLOCKS.HR;
/**
*
* @maxItems 0
*/
data: EmptyNodeData;
content: Array<Inline | Text>;
}
export interface OrderedList extends Block {
nodeType: BLOCKS.OL_LIST;
data: EmptyNodeData;
content: ListItem[];
}
export interface UnorderedList extends Block {
nodeType: BLOCKS.UL_LIST;
data: EmptyNodeData;
content: ListItem[];
}
export interface ListItem extends Block {
nodeType: BLOCKS.LIST_ITEM;
data: EmptyNodeData;
content: ListItemBlock[];
}
export interface Link<T extends string = string> {
sys: {
type: 'Link';
linkType: T;
id: string;
};
}
export interface ResourceLink {
sys: {
type: 'ResourceLink';
linkType: 'Contentful:Entry';
urn: string;
};
}
export interface EntryLinkBlock extends Block {
nodeType: BLOCKS.EMBEDDED_ENTRY;
data: {
target: Link<'Entry'>;
};
/**
*
* @maxItems 0
*/
content: Array<Inline | Text>;
}
export interface AssetLinkBlock extends Block {
nodeType: BLOCKS.EMBEDDED_ASSET;
data: {
target: Link<'Asset'>;
};
/**
*
* @maxItems 0
*/
content: Array<Inline | Text>;
}
export interface ResourceLinkBlock extends Block {
nodeType: BLOCKS.EMBEDDED_RESOURCE;
data: {
target: ResourceLink;
};
/**
*
* @maxItems 0
*/
content: Array<Inline | Text>;
}
export interface EntryLinkInline extends Inline {
nodeType: INLINES.EMBEDDED_ENTRY;
data: {
target: Link<'Entry'>;
};
/**
*
* @maxItems 0
*/
content: Text[];
}
export interface ResourceLinkInline extends Inline {
nodeType: INLINES.EMBEDDED_RESOURCE;
data: {
target: ResourceLink;
};
/**
*
* @maxItems 0
*/
content: Text[];
}
export interface Hyperlink extends Inline {
nodeType: INLINES.HYPERLINK;
data: {
uri: string;
};
content: Text[];
}
export interface AssetHyperlink extends Inline {
nodeType: INLINES.ASSET_HYPERLINK;
data: {
target: Link<'Asset'>;
};
content: Text[];
}
export interface EntryHyperlink extends Inline {
nodeType: INLINES.ENTRY_HYPERLINK;
data: {
target: Link<'Entry'>;
};
content: Text[];
}
export interface ResourceHyperlink extends Inline {
nodeType: INLINES.RESOURCE_HYPERLINK;
data: {
target: ResourceLink;
};
content: Text[];
}
export interface TableCell extends Block {
nodeType: BLOCKS.TABLE_HEADER_CELL | BLOCKS.TABLE_CELL;
data: {
colspan?: number;
rowspan?: number;
};
/**
* @minItems 1
*/
content: Paragraph[];
}
export interface TableHeaderCell extends TableCell {
nodeType: BLOCKS.TABLE_HEADER_CELL;
}
export interface TableRow extends Block {
nodeType: BLOCKS.TABLE_ROW;
data: EmptyNodeData;
/**
* @minItems 1
*/
content: TableCell[];
}
export interface Table extends Block {
nodeType: BLOCKS.TABLE;
data: EmptyNodeData;
/**
* @minItems 1
*/
content: TableRow[];
}
export {};