import MarkdownIt from 'markdown-it'; import { RenderedMarkdown } from './widgets'; import { IRenderMime } from '@jupyterlab/rendermime-interfaces'; import { ISanitizer } from '@jupyterlab/apputils'; export interface MarkdownItManager { registerPlugin(provider: MarkdownItPluginProvider): void; getRenderer(widget: RenderedMarkdown, options?: MarkdownIt.Options): Promise; } export interface Ranked { rank?: number; } export interface MarkdownItPlugin { (md: MarkdownIt, ...params: any[]): void; } export interface Hook extends Ranked { run(arg: A): Promise; } export interface MarkdownItPluginProvider extends Ranked { id: string; title: string; plugin(): Promise<[MarkdownItPlugin, ...any]>; options?(widget: RenderedMarkdown): Partial; hooks?: { preParse?: Hook; postRender?: Hook; }; } export interface RenderOptions { host: HTMLElement; source: string; trusted: boolean; sanitizer: ISanitizer; resolver: IRenderMime.IResolver | null; linkHandler: IRenderMime.ILinkHandler | null; shouldTypeset: boolean; renderer: Renderer; latexTypesetter: IRenderMime.ILatexTypesetter | null; } export interface Renderer { render(content: string): string; preParse(node: string): Promise; postRender(node: HTMLElement): Promise; }