UNPKG

react-intlayer

Version:

Easily internationalize i18n your React applications with type-safe multilingual content management.

113 lines (112 loc) 3.94 kB
import { HTMLComponents } from "../html/HTMLComponentTypes.js"; import { JSX, ReactNode, createElement } from "react"; import { ParsedMarkdown, RenderRuleHook } from "@intlayer/core/markdown"; //#region src/markdown/processor.d.ts type HTMLTags = keyof JSX.IntrinsicElements; /** * Refined MarkdownRendererOptions type. */ type MarkdownRendererOptions = Partial<{ /** * Ultimate control over the output of all rendered JSX. */ createElement: (tag: Parameters<typeof createElement>[0], props: JSX.IntrinsicAttributes, ...children: ReactNode[]) => ReactNode; /** * The library automatically generates an anchor tag for bare URLs included in the markdown * document, but this behavior can be disabled if desired. */ disableAutoLink: boolean; /** * Disable the compiler's best-effort transcription of provided raw HTML * into JSX-equivalent. */ disableParsingRawHTML: boolean; /** * Forces the compiler to have space between hash sign and the header text. */ enforceAtxHeadings: boolean; /** * Forces the compiler to always output content with a block-level wrapper. */ forceBlock: boolean; /** * Forces the compiler to always output content with an inline wrapper. */ forceInline: boolean; /** * Forces the compiler to wrap results, even if there is only a single child. */ forceWrapper: boolean; /** * Supply additional HTML entity: unicode replacement mappings. */ namedCodesToUnicode: { [key: string]: string; }; /** * Selectively control the output of particular HTML tags. */ components: HTMLComponents; /** * Allows for full control over rendering of particular rules. */ renderRule: RenderRuleHook; /** * Override the built-in sanitizer function for URLs. */ sanitizer: (value: string, tag: HTMLTags, attribute: string) => string | null; /** * Override normalization of non-URI-safe characters for anchor linking. */ slugify: (input: string) => string; /** * Declare the type of the wrapper to be used when there are multiple children. */ wrapper: any | null; /** * Whether to preserve frontmatter in the markdown content. */ preserveFrontmatter: boolean; /** * Whether to use the GitHub Tag Filter. */ tagfilter: boolean; }>; /** * **Step 1 of 2 — parse only.** * Converts a raw markdown string into a `ParsedMarkdown` AST without rendering * any React elements. Use this when you need to: * - Cache the parsed result and render it several times with different options. * - Inspect or transform the AST before rendering. * - Defer the render step to a later point in the pipeline. * * @param markdown - The markdown source string. * @param options - Options that affect parsing (sanitizer, slugify, …). * @returns A `ParsedMarkdown` AST ready to be passed to `compileMarkdown`. * * @example * ```tsx * const ast = parseMarkdown('# Hello **world**'); * const element = compileMarkdown(ast, { forceBlock: true }); * ``` */ declare const parseMarkdown: (markdown?: string, options?: MarkdownRendererOptions) => ParsedMarkdown; /** * **Steps 1 + 2 — parse and render in one shot.** * Accepts a raw markdown string or a pre-parsed `ParsedMarkdown` AST and * returns a React element. Use `parseMarkdown` first when you need to reuse * the same AST with different options. * * @param input - Markdown string or pre-parsed AST. * @param options - Rendering options (custom components, sanitizer, slugify, …). * @returns A React JSX element representing the rendered markdown. * * @example * ```tsx * const element = compileMarkdown('# Hello **world**', { forceBlock: true }); * ``` */ declare const compileMarkdown: (input?: string | ParsedMarkdown, options?: MarkdownRendererOptions) => JSX.Element; //#endregion export { MarkdownRendererOptions, type ParsedMarkdown, compileMarkdown, parseMarkdown }; //# sourceMappingURL=processor.d.ts.map