@humanspeak/svelte-markdown
Version:
Fast, customizable markdown renderer for Svelte with built-in caching, TypeScript support, and Svelte 5 runes
79 lines (78 loc) • 2.75 kB
TypeScript
export { default as Slugger } from 'github-slugger';
export { Lexer, type MarkedOptions, type Token, type Tokens, type TokensList } from 'marked';
import { type HtmlRenderers } from '../renderers/html/index.js';
import type { Component } from 'svelte';
import type { SvelteMarkdownOptions } from '../types.js';
/**
* Represents a Svelte component that can be used as a renderer.
* Allows for flexible component types while maintaining type safety.
*
* @typedef {Component<any, any, any> | undefined | null} RendererComponent
*/
export type RendererComponent = Component<any, any, any> | undefined | null;
/**
* Comprehensive mapping of markdown elements to their renderer components.
* Structured in categories for better organization and maintainability.
*
* Categories:
* - HTML: Special renderer for HTML content
* - Block elements: Major structural elements
* - Table elements: Table-specific components
* - Inline elements: Text-level components
* - List variations: Specialized list item renderers
*
* @interface Renderers
*/
export type Renderers = {
html: HtmlRenderers;
rawtext: RendererComponent;
escape: RendererComponent;
heading: RendererComponent;
paragraph: RendererComponent;
blockquote: RendererComponent;
code: RendererComponent;
list: RendererComponent;
listitem: RendererComponent;
hr: RendererComponent;
table: RendererComponent;
tablehead: RendererComponent;
tablebody: RendererComponent;
tablerow: RendererComponent;
tablecell: RendererComponent;
text: RendererComponent;
link: RendererComponent;
image: RendererComponent;
em: RendererComponent;
strong: RendererComponent;
codespan: RendererComponent;
br: RendererComponent;
del: RendererComponent;
orderedlistitem: RendererComponent;
unorderedlistitem: RendererComponent;
};
/**
* Default renderer configuration mapping markdown elements to Svelte components.
* Provides out-of-the-box rendering capabilities while allowing for customization.
*
* Implementation notes:
* - All components are lazy-loaded for better performance
* - Null values indicate optional renderers
* - Components are type-checked against the Renderers interface
*
* @const {Renderers}
*/
export declare const defaultRenderers: Renderers;
/**
* Default configuration options for the markdown parser.
* Provides sensible defaults while allowing for customization.
*
* Notable defaults:
* - GitHub Flavored Markdown enabled
* - Header IDs generated automatically
* - No syntax highlighting by default
* - HTML sanitization disabled
* - Standard markdown parsing rules
*
* @const {SvelteMarkdownOptions}
*/
export declare const defaultOptions: SvelteMarkdownOptions;