UNPKG

@notion-md-converter/types

Version:
108 lines (107 loc) 4.88 kB
import type { ApiColor, Block, BookmarkBlock, BreadcrumbBlock, BulletedListItemBlock, CalloutBlock, ChildDatabaseBlock, ChildPageBlock, CodeBlock, ColumnListBlock, DividerBlock, EmbedBlock, EquationBlock, FileBlock, Heading1Block, Heading2Block, Heading3Block, ImageBlock, LinkPreviewBlock, NumberedListItemBlock, ParagraphBlock, PdfBlock, QuoteBlock, RichText, SyncedBlock, TableBlock, TableOfContentsBlock, ToDoBlock, ToggleBlock, VideoBlock } from "./notion"; /** * アノテーションの有効設定 */ export type EnableAnnotations = { bold?: boolean; italic?: boolean; strikethrough?: boolean; underline?: boolean; code?: boolean; equation?: boolean; color?: boolean; link?: boolean; }; /** * カラーマッピング */ export type ColorMap = Record<ApiColor, string | undefined>; /** * リッチテキストをフォーマットするツールのインターフェース */ export interface RichTextFormatter { /** * リッチテキストを整形する * @param richTexts リッチテキスト配列 * @param enableAnnotations 有効化するアノテーション * @param colorMap カラーマップ * @returns 整形されたテキスト */ format(richTexts: RichText[], enableAnnotations?: EnableAnnotations, colorMap?: ColorMap): string; /** * デコレーションを除いたテキスト * @param richTexts リッチテキスト配列 * @returns テキスト */ plainText(richTexts: RichText[]): string; } /** * 変換に使用するツール群 */ export interface ConverterTools { /** * リッチテキストフォーマッター */ richTextFormatter: RichTextFormatter; } export type Context<T extends Block> = { execute: (blocks: Block[]) => string; blocks: Block[]; currentBlock: T; currentBlockIndex: number; tools: ConverterTools; }; export type NotionBlockTransformer<T extends Block> = (context: Context<T>) => string | null; export type BookmarkTransformer = NotionBlockTransformer<BookmarkBlock>; export type BreadcrumbTransformer = NotionBlockTransformer<BreadcrumbBlock>; export type CalloutTransformer = NotionBlockTransformer<CalloutBlock>; export type CodeTransformer = NotionBlockTransformer<CodeBlock>; export type ColumnListTransformer = NotionBlockTransformer<ColumnListBlock>; export type DividerTransformer = NotionBlockTransformer<DividerBlock>; export type EquationTransformer = NotionBlockTransformer<EquationBlock>; export type HeadingTransformer = NotionBlockTransformer<Heading1Block | Heading2Block | Heading3Block>; export type LinkPreviewTransformer = NotionBlockTransformer<LinkPreviewBlock>; export type BulletedListItemTransformer = NotionBlockTransformer<BulletedListItemBlock>; export type NumberedListItemTransformer = NotionBlockTransformer<NumberedListItemBlock>; export type ToDoTransformer = NotionBlockTransformer<ToDoBlock>; export type ParagraphTransformer = NotionBlockTransformer<ParagraphBlock>; export type QuoteTransformer = NotionBlockTransformer<QuoteBlock>; export type SyncedBlockTransformer = NotionBlockTransformer<SyncedBlock>; export type TableOfContentsTransformer = NotionBlockTransformer<TableOfContentsBlock>; export type TableTransformer = NotionBlockTransformer<TableBlock>; export type ToggleTransformer = NotionBlockTransformer<ToggleBlock>; export type ChildDatabaseTransformer = NotionBlockTransformer<ChildDatabaseBlock>; export type ChildPageTransformer = NotionBlockTransformer<ChildPageBlock>; export type VideoTransformer = NotionBlockTransformer<VideoBlock>; export type EmbedTransformer = NotionBlockTransformer<EmbedBlock>; export type PDFTransformer = NotionBlockTransformer<PdfBlock>; export type FileTransformer = NotionBlockTransformer<FileBlock>; export type ImageTransformer = NotionBlockTransformer<ImageBlock>; export type UnsupportedBlockTransformer = NotionBlockTransformer<Block>; export type TransformerMapping = { bookmark?: BookmarkTransformer; breadcrumb?: BreadcrumbTransformer; callout?: CalloutTransformer; code?: CodeTransformer; column_list?: ColumnListTransformer; divider?: DividerTransformer; equation?: EquationTransformer; heading?: HeadingTransformer; link_preview?: LinkPreviewTransformer; bulleted_list_item?: BulletedListItemTransformer; numbered_list_item?: NumberedListItemTransformer; to_do?: ToDoTransformer; paragraph?: ParagraphTransformer; quote?: QuoteTransformer; synced_block?: SyncedBlockTransformer; table_of_contents?: TableOfContentsTransformer; table?: TableTransformer; toggle?: ToggleTransformer; child_database?: ChildDatabaseTransformer; child_page?: ChildPageTransformer; video?: VideoTransformer; embed?: EmbedTransformer; pdf?: PDFTransformer; file?: FileTransformer; image?: ImageTransformer; };