UNPKG

@vuux/editor

Version:

Vue Nuxt 富文本编辑器

71 lines (70 loc) 4.35 kB
import { Token, Tokens, TokensList } from './Tokens'; import { _Parser } from './Parser'; import { _Lexer } from './Lexer'; import { _Renderer } from './Renderer'; import { _Tokenizer } from './Tokenizer'; import { _Hooks } from './Hooks'; export interface TokenizerThis { lexer: _Lexer; } export type TokenizerExtensionFunction = (this: TokenizerThis, src: string, tokens: Token[] | TokensList) => Tokens.Generic | undefined; export type TokenizerStartFunction = (this: TokenizerThis, src: string) => number | void; export interface TokenizerExtension { name: string; level: 'block' | 'inline'; start?: TokenizerStartFunction; tokenizer: TokenizerExtensionFunction; childTokens?: string[]; } export interface RendererThis<ParserOutput = string, RendererOutput = string> { parser: _Parser<ParserOutput, RendererOutput>; } export type RendererExtensionFunction<ParserOutput = string, RendererOutput = string> = (this: RendererThis<ParserOutput, RendererOutput>, token: Tokens.Generic) => RendererOutput | false | undefined; export interface RendererExtension<ParserOutput = string, RendererOutput = string> { name: string; renderer: RendererExtensionFunction<ParserOutput, RendererOutput>; } export type TokenizerAndRendererExtension<ParserOutput = string, RendererOutput = string> = TokenizerExtension | RendererExtension<ParserOutput, RendererOutput> | (TokenizerExtension & RendererExtension<ParserOutput, RendererOutput>); type HooksApi<ParserOutput = string, RendererOutput = string> = Omit<_Hooks<ParserOutput, RendererOutput>, 'constructor' | 'options' | 'block'>; type HooksObject<ParserOutput = string, RendererOutput = string> = { [K in keyof HooksApi<ParserOutput, RendererOutput>]?: (this: _Hooks<ParserOutput, RendererOutput>, ...args: Parameters<HooksApi<ParserOutput, RendererOutput>[K]>) => ReturnType<HooksApi<ParserOutput, RendererOutput>[K]> | Promise<ReturnType<HooksApi<ParserOutput, RendererOutput>[K]>>; }; type RendererApi<ParserOutput = string, RendererOutput = string> = Omit<_Renderer<ParserOutput, RendererOutput>, 'constructor' | 'options' | 'parser'>; type RendererObject<ParserOutput = string, RendererOutput = string> = { [K in keyof RendererApi<ParserOutput, RendererOutput>]?: (this: _Renderer<ParserOutput, RendererOutput>, ...args: Parameters<RendererApi<ParserOutput, RendererOutput>[K]>) => ReturnType<RendererApi<ParserOutput, RendererOutput>[K]> | false; }; type TokenizerApi<ParserOutput = string, RendererOutput = string> = Omit<_Tokenizer<ParserOutput, RendererOutput>, 'constructor' | 'options' | 'rules' | 'lexer'>; type TokenizerObject<ParserOutput = string, RendererOutput = string> = { [K in keyof TokenizerApi<ParserOutput, RendererOutput>]?: (this: _Tokenizer<ParserOutput, RendererOutput>, ...args: Parameters<TokenizerApi<ParserOutput, RendererOutput>[K]>) => ReturnType<TokenizerApi<ParserOutput, RendererOutput>[K]> | false; }; export interface MarkedExtension<ParserOutput = string, RendererOutput = string> { async?: boolean; breaks?: boolean; extensions?: TokenizerAndRendererExtension<ParserOutput, RendererOutput>[] | null; gfm?: boolean; hooks?: HooksObject<ParserOutput, RendererOutput> | null; pedantic?: boolean; renderer?: RendererObject<ParserOutput, RendererOutput> | null; silent?: boolean; tokenizer?: TokenizerObject | null; walkTokens?: ((token: Token) => void | Promise<void>) | null; } export interface MarkedOptions<ParserOutput = string, RendererOutput = string> extends Omit<MarkedExtension<ParserOutput, RendererOutput>, 'hooks' | 'renderer' | 'tokenizer' | 'extensions' | 'walkTokens'> { hooks?: _Hooks<ParserOutput, RendererOutput> | null; renderer?: _Renderer<ParserOutput, RendererOutput> | null; tokenizer?: _Tokenizer<ParserOutput, RendererOutput> | null; extensions?: null | { renderers: { [name: string]: RendererExtensionFunction<ParserOutput, RendererOutput>; }; childTokens: { [name: string]: string[]; }; inline?: TokenizerExtensionFunction[]; block?: TokenizerExtensionFunction[]; startInline?: TokenizerStartFunction[]; startBlock?: TokenizerStartFunction[]; }; walkTokens?: null | ((token: Token) => void | Promise<void> | (void | Promise<void>)[]); } export {};