@vuux/editor
Version:
Vue Nuxt 富文本编辑器
71 lines (70 loc) • 4.35 kB
TypeScript
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 {};