@unifast/react

Преобразование HAST-вывода unifast в React-элементы с сопоставлением компонентов

Обзор

@unifast/react преобразует HAST-вывод (HTML Abstract Syntax Tree) unifast в элементы React. Он предоставляет две основные функции:

  • compileToReact() — высокоуровневая: компилирует Markdown/MDX и сразу возвращает React-элементы

  • hastToReact() — низкоуровневая: преобразует HAST-дерево в React-элементы

Пакет автоматически выполняет переименование HTML-свойств в React-эквиваленты (class в className, for в htmlFor и т. д.) и парсинг CSS-строк стилей.

Установка

Peer-зависимость: для compileToReact требуется @unifast/node.

Определения типов

CompileToReactOptions

Расширяет CompileOptions специфичными для React полями.

СвойствоТипОписание
createElementCreateElementФункция React createElement
FragmentunknownКомпонент React Fragment
components?ComponentMapОтображение имён HTML-тегов в React-компоненты
(все CompileOptions)-Наследуются от CompileOptions

CompileToReactResult

СвойствоТипОписание
elementunknownКорневой React-элемент
frontmatterRecord<string, unknown>Распарсенные метаданные frontmatter
diagnosticsDiagnostic[]Предупреждения и ошибки
stats{ parseMs, transformMs, emitMs }Разбивка времени (мс)
tocTocEntry[]Извлечённое оглавление

HastToReactOptions

СвойствоТипОписание
createElementCreateElementФункция React createElement
FragmentunknownКомпонент React Fragment
components?ComponentMapОтображение имён HTML-тегов в пользовательские React-компоненты

CreateElement

type CreateElement = (type: any, props: any, ...children: any[]) => any;

ComponentMap

type ComponentMap = Record<string, unknown>;

Преобразование свойств

HTML-атрибутReact-свойство
classclassName
forhtmlFor
accesskeyaccessKey
autocompleteautoComplete
autofocusautoFocus
autoplayautoPlay
charsetcharSet
colspancolSpan
contenteditablecontentEditable
crossorigincrossOrigin
datetimedateTime
enctypeencType
formactionformAction
hreflanghrefLang
httpequivhttpEquiv
inputmodeinputMode
maxlengthmaxLength
minlengthminLength
novalidatenoValidate
readonlyreadOnly
referrerpolicyreferrerPolicy
rowspanrowSpan
spellcheckspellCheck
srcdocsrcDoc
srclangsrcLang
srcsetsrcSet
tabindextabIndex
usemapuseMap

CSS-строки style автоматически разбираются в объекты стилей React (например, "font-size: 16px" становится { fontSize: "16px" }).

Сводка экспортов

ЭкспортВидОписание
compileToReactфункцияКомпилирует Markdown/MDX в React-элементы
hastToReactфункцияПреобразует HAST в React-элементы
CompileToReactOptionsтипПараметры для compileToReact
CompileToReactResultтипРезультат compileToReact
HastToReactOptionsтипПараметры для hastToReact
CreateElementтипСигнатура React createElement
ComponentMapтипОтображение HTML-тегов в компоненты