UNPKG

@mui/internal-docs-infra

Version:

MUI Infra - internal documentation creation tools.

37 lines 2.05 kB
import type { Root as HastRoot } from 'hast'; /** * Compact serialization format for fallback HAST trees. * * A `FallbackNode` is either: * - a plain string (text node), or * - a variable-length tuple whose meaning is determined by length: * - `[tagName, children]` – no class, no props * - `[tagName, className, children]` – has class, no props * - `[tagName, className, properties, children]` – has class and props * - `[tagName, className, properties, children, extra]` – full * * Where: * - `tagName` – HTML element name (e.g. `'span'`, `'a'`) * - `className` – space-joined class string * - `properties` – remaining HTML properties (without `className`) * - `children` – a single text string **or** an array of child `FallbackNode`s * - `extra` – optional bag for anything else (data attributes, etc.) * * This eliminates the repeated `type`, `tagName`, `properties`, `children`, * and `value` keys that make raw HAST costly in RSC payloads. */ export type FallbackNode = string | FallbackElement; export type FallbackElement = [tagName: string, children: string | FallbackNode[]] | [tagName: string, className: string, children: string | FallbackNode[]] | [tagName: string, className: string, properties: Record<string, unknown>, children: string | FallbackNode[]] | [tagName: string, className: string, properties: Record<string, unknown>, children: string | FallbackNode[], extra: Record<string, unknown>]; /** * Convert a HAST root into the compact `FallbackNode[]` format. */ export declare function hastToFallback(root: HastRoot): FallbackNode[]; /** * Convert the compact `FallbackNode[]` format back into a HAST root. */ export declare function fallbackToHast(nodes: FallbackNode[]): HastRoot; /** * Extract the text content from compact `FallbackNode[]` without * converting back to HAST. Used to build DEFLATE dictionaries. */ export declare function fallbackToText(nodes: FallbackNode[]): string;