@humanspeak/svelte-markdown
Version:
Markdown and HTML renderer for Svelte 5 — built for rendering streaming AI agent output from Claude Code, ChatGPT, and agentic workflows. XSS-safe defaults, streaming-aware sanitization, token caching, TypeScript types, and Svelte 5 runes.
71 lines (70 loc) • 3.55 kB
TypeScript
import { defaultRenderers } from './markdown-parser.js';
import type { Snippet } from 'svelte';
export type AnySnippet = Snippet<[Record<string, unknown>]>;
type RestProps = Record<string, unknown>;
/**
* Merges caller renderer overrides with the built-in renderer map.
*
* @param renderers Partial renderer overrides from component props.
* @returns Renderer map with default markdown and HTML renderers preserved.
*/
export declare const buildCombinedRenderers: (renderers: Partial<typeof defaultRenderers>) => {
html: import("../index.js").HtmlRenderers;
rawtext: import("./markdown-parser.js").RendererComponent;
escape: import("./markdown-parser.js").RendererComponent;
heading: import("./markdown-parser.js").RendererComponent;
paragraph: import("./markdown-parser.js").RendererComponent;
blockquote: import("./markdown-parser.js").RendererComponent;
code: import("./markdown-parser.js").RendererComponent;
list: import("./markdown-parser.js").RendererComponent;
listitem: import("./markdown-parser.js").RendererComponent;
hr: import("./markdown-parser.js").RendererComponent;
table: import("./markdown-parser.js").RendererComponent;
tablehead: import("./markdown-parser.js").RendererComponent;
tablebody: import("./markdown-parser.js").RendererComponent;
tablerow: import("./markdown-parser.js").RendererComponent;
tablecell: import("./markdown-parser.js").RendererComponent;
text: import("./markdown-parser.js").RendererComponent;
link: import("./markdown-parser.js").RendererComponent;
image: import("./markdown-parser.js").RendererComponent;
em: import("./markdown-parser.js").RendererComponent;
strong: import("./markdown-parser.js").RendererComponent;
codespan: import("./markdown-parser.js").RendererComponent;
br: import("./markdown-parser.js").RendererComponent;
del: import("./markdown-parser.js").RendererComponent;
orderedlistitem: import("./markdown-parser.js").RendererComponent;
unorderedlistitem: import("./markdown-parser.js").RendererComponent;
};
/**
* Gets renderer keys recognized by the component.
*
* @param extensionTokenNames Custom token names declared by Marked extensions.
* @returns Built-in markdown renderer keys followed by extension token names.
*/
export declare const getAllRendererKeys: (extensionTokenNames: string[]) => string[];
/**
* Extracts markdown snippet overrides from rest props.
*
* @param rest Extra component props after known SvelteMarkdown props are removed.
* @param allRendererKeys Built-in and extension renderer keys to match.
* @returns Snippet overrides keyed by markdown token type.
*/
export declare const getSnippetOverrides: (rest: RestProps, allRendererKeys: string[]) => Record<string, AnySnippet>;
/**
* Extracts HTML snippet overrides from rest props.
*
* @param rest Extra component props after known SvelteMarkdown props are removed.
* @returns HTML snippet overrides keyed by tag name without the `html_` prefix.
*/
export declare const getHtmlSnippetOverrides: (rest: RestProps) => Record<string, AnySnippet>;
/**
* Removes snippet override props from the props forwarded to Parser.
*
* @param rest Extra component props after known SvelteMarkdown props are removed.
* @param allRendererKeys Built-in and extension renderer keys to exclude.
* @returns Props that should pass through to the rendered markdown tree.
*/
export declare const getPassThroughProps: (rest: RestProps, allRendererKeys: string[]) => {
[k: string]: unknown;
};
export {};