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