@mui/internal-docs-infra
Version:
MUI Infra - internal documentation creation tools.
37 lines • 2.05 kB
text/typescript
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;