Warning
This is an internal project, and is not intended for public use. No support or stability guarantees are provided.
The hastUtils module provides utilities for converting between HAST (Hypertext Abstract Syntax Tree) nodes, strings, and React JSX elements. These utilities are essential for processing syntax-highlighted code and converting markdown/HTML structures to React components.
import {
hastToJsx,
hastOrJsonToJsx,
stringOrHastToString,
stringOrHastToJsx,
} from '@mui/internal-docs-infra/pipeline/hastUtils';
// Convert HAST to React JSX
const jsxElement = hastToJsx(hastNode);
// Convert HAST or serialized JSON to JSX
const jsxFromJson = hastOrJsonToJsx({ hastJson: '{"type":"element",...}' });
// Extract plain text from string or HAST
const plainText = stringOrHastToString(hastNodeOrString);
// Convert to JSX with optional highlighting
const jsx = stringOrHastToJsx(hastNodeOrString, true);
hastToJsx(hast: HastNodes): React.ReactNodeConverts a HAST node directly to React JSX using hast-util-to-jsx-runtime.
hastOrJsonToJsx(hastOrJson: HastNodes | { hastJson: string }): React.ReactNodeConverts either a HAST node or serialized JSON representation to React JSX.
stringOrHastToString(source: string | HastNodes | { hastJson: string }): stringExtracts plain text from strings, HAST nodes, or serialized HAST JSON using hast-util-to-text.
stringOrHastToJsx(source: string | HastNodes | { hastJson: string }, highlighted?: boolean): React.ReactNodeConverts strings or HAST to JSX. If highlighted is true and source is HAST, returns JSX; otherwise returns plain text.
CodeHighlighter