@tanstack/highlight
Version:
Tiny class-based syntax highlighting for documentation.
38 lines (37 loc) • 1.39 kB
TypeScript
import type { Highlighter, HighlightDecoration } from './core.js';
import { codeFenceToHast } from './markdown.js';
export type RemarkCodeNode = {
type: 'code';
value: string;
lang?: string | null;
meta?: string | null;
data?: Record<string, unknown>;
};
export type RemarkHtmlNode = {
type: 'html';
value: string;
data?: Record<string, unknown>;
};
export type RemarkHighlightOptions = {
getDecorations?: (node: RemarkCodeNode) => ReadonlyArray<HighlightDecoration> | undefined;
getTitle?: (node: RemarkCodeNode) => string | undefined;
highlighter: Highlighter;
lineNumbers?: boolean;
};
export type RemarkHighlightedCodeNode = {
type: 'highlightedCode';
data: Record<string, unknown> & {
hChildren: ReturnType<typeof codeFenceToHast>['children'];
hName: 'pre';
hProperties: ReturnType<typeof codeFenceToHast>['properties'];
};
};
type UnknownNode = {
children?: Array<UnknownNode>;
type?: string;
[key: string]: unknown;
};
export declare function remarkCodeNodeToHtml(node: RemarkCodeNode, options: RemarkHighlightOptions): RemarkHtmlNode;
export declare function remarkCodeNodeToMdast(node: RemarkCodeNode, options: RemarkHighlightOptions): RemarkHighlightedCodeNode;
export declare function remarkHighlightCodeBlocks(options: RemarkHighlightOptions): (tree: UnknownNode) => void;
export {};