Возможности
На этой странице описаны встроенные возможности в соответствии с их фактической реализацией в исходном коде.
Инкрементальный рендеринг
Для быстрой работы с большими документами предпросмотр использует инкрементальный рендеринг отдельных блоков:
- Разбиение на блоки (
splitIntoBlocks): исходный текст разделяется по строкам заголовков ATX (от#до######). Содержимое блоков кода, ограниченных обратными кавычками или тильдами, никогда не служит точкой разделения; заголовки внутри пользовательских контейнеров:::также сохраняются. Документ без заголовков обрабатывается как один бл ок. - Рендеринг отдельных блоков: повторно через markdown-it / KaTeX проходят только блоки с изменившимся хешем содержимого. Неизменённые блоки напрямую используют существующие узлы DOM, включая уже активированные SVG интеллект-карт.
- Кеш по хешу содержимого: результаты сохраняются по хешу содержимого (быстрый хеш типа djb2 вместе с длиной), поэтому отмена/повтор и вставка одинаковых абзацев тоже используют кеш. Когда в кеше больше 800 записей, удаляются хеши, которых уже нет в документе. Записи текущих блоков сохраняются, поэтому документ с более чем 800 различными блоками может превышать этот порог.
- Изменение порядка: переставляемые блоки перемещаются путём добавления существующих узлов в
DocumentFragment. - Адаптивная задержка (
adaptiveDebounceMs(docLength, base = 120, max = 600)): пауза перед рендерингом равнаbase + floor(docLength / 20000) * 60и ограничена значениемmax. Измените её черезrenderDebounceили задайтеrenderDebounce: falseдля синхронного рендеринга. content-visibility: auto: каждый блок оборачивается в элемент.md-editor-block, чтобы пропускать расчёт расположения и отрисовку блоков вне экрана.
Ошибка рендеринга одного блока не очищает весь предпросмотр: вместо него выводится экранированный исходный текст в <pre>.
Формулы KaTeX
Самостоятельный математический плагин markdown-it отображает формулы через KaTeX (без зависимости от markdown-it-texmath):
- Строчные формулы:
$E=mc^2$— содержимое не должно быть пустым или включать$и перенос строки. Выражения, похожие на денежные суммы, например$5и$10.50, исключаются эвристически. - Блочные формулы:
Поддерживаю тся однострочная ($$\int_0^1 x^2 \, dx$$
$$ ... $$) и многострочная формы. CSS KaTeX входит в пакет. Для отключения используйтеmath: false.
Интеллект-карты Markmap
Создайте ограждённый блок ```mindmap с иерархическим планом в Markdown:
```mindmap
# Root topic
## Branch one
- Child A
- Child B
## Branch two
- Child C
```
Правило обработки блока отслеживает глубину вложенности ограждений, сохраняя блоки кода внутри интеллект-карты. Синхронный рендеринг создаёт заполнитель <div>; Renderer.hydrate(container) асинхронно импортирует markmap-lib и markmap-view и превращает каждый заполнитель в интерактивный SVG. Ошибки активации не являются фатальными. Для отключения используйте mindmap: false.
Подсветка кода с кнопкой копирования
Ограждённые блоки кода подсвечиваются через highlight.js. Сборка регистрирует фиксированный набор языков: JavaScript, TypeScript, Python, JSON, Bash/Shell, CSS, XML/HTML/SVG, SQL, YAML, Markdown, Go, Rust, Java, C и C++ (с распространёнными псевдонимами js, ts, py, sh, yml, md, rs, c++). Неизвестный язык определяется автоматически; при неудаче выводится экранированный обычный текст.
Каждый подсвеченный блок помещается в контейнер в стиле macOS с тремя цветными точками, названием языка и кнопкой Копировать. Кнопка использует делегирование событий в панели предпросмотра и обращается к document.execCommand('copy'), если Clipboard API недоступен. Для отключения используйте codeHighlight: false.
Действия панели инструментов
В режиме complex панель состоит из следующих 22 действий в указанном порядке по умолчанию:
| # | Имя действия | Назначение |
|---|---|---|
| 1 | heading | Заголовок |
| 2 | bold | Полужирный (Ctrl+B) |
| 3 | italic | Курсив (Ctrl+I) |
| 4 | link | Ссылка (Ctrl+K) |
| 5 | image | Вставить изображение |
| 6 | video | Вставить видео |
| 7 | youtube | Вставить видео YouTube |
| 8 | quote | Цитата |
| 9 | ul | Маркированный список |
| 10 | ol | Нумерованный список |
| 11 | tasklist | Список задач |
| 12 | mention | Упоминание (@) |
| 13 | doclink | Вставить ссылку на документ |
| 14 | code | Блок кода |
| 15 | table | Таблица |
| 16 | math | Математическая формула |
| 17 | mindmap | Вставить интеллект-карту |
| 18 | hr | Горизонтальная линия |
| 19 | tips | Вставить информационный блок |
| 20 | preview | Переключить предпросмотр |
| 21 | help | Сочетания клавиш |
| 22 | theme | Переключить тему |
Встроенные подписи — на английском языке. Переопределяйте label для отдельных элементов, чтобы локализовать подсказки и доступные имена. Некоторые действия открывают диалоги или выбор шаблонов: изображение, видео, YouTube, таблица, формула (шаблоны), интеллект-карта (шаблоны), информационный блок (сетка типов) и справка. Настраивайте панель параметром toolbar, как описано в разделе Настройка.
Сочетания клавиш
Встроенные сочетания определены в DEFAULT_SHORTCUTS. Mod означает Ctrl в Windows/Linux и Cmd в macOS.
| Клавиша | Действие | Описание |
|---|---|---|
Mod-b | bold | Полужирный |
Mod-i | italic | Курсив |
Mod-Alt-1 | heading | Заголовок |
Mod-k | link | Вставить ссылку |
Mod-Alt-c | code | Блок кода |
Mod-Shift-. | quote | Блочная цитата |
Mod-Shift-8 | ul | Маркированный список |
Mod-Shift-7 | ol | Нумерованный список |
Mod-Shift-9 | tasklist | Список задач |
Mod-Alt-m | math | Математическая формула |
Mod-Alt-p | preview | Переключить предпросмотр |
Mod-Shift-l | theme | Переключить тему |
Кнопка Справка на панели отк рывает диалог со списком сочетаний в виде клавиш и краткой памяткой по спискам задач, упоминаниям, ссылкам на документы, формулам, интеллект-картам и информационным блокам.
Загрузка изображений
Передайте onImageUpload: (file: File) => Promise<string>. Обработчик вызывается при вставке или перетаскивании файла изображения в редактор. Окно изображения принимает URL и не предлагает выбор файла. Верните общедоступный URL изображения; редактор вставит  в позицию курсора (альтернативным текстом станет имя файла без расширения). Ошибки загрузки подавляются без сообщения, после чего пользователь может повторить попытку.
@mention
Передайте параметр mention, чтобы при вводе @ появлялся раскрывающийся список с поиском:
onMentionSearch(query)возвращает подходящие элементыMentionItem.onMentionSelect(item)возвращает вставляемый текст. По умолчанию это[@label](mention:id), который рендерер превращает в оформленный значок.minChars(по умолчанию0) иmaxItems(по умолчанию8) настраивают список.
Список поддерживает навигацию через ArrowUp/ArrowDown, Enter/Tab и Escape и закрывается при потере фокуса редактором. В предпросмотре обычный текст с @, например @media, не превращается в значок; так отображаются только ссылки со схемой mention:. При этом в редакторе такой текст всё ещё может вызывать настроенный обработчик поиска.
Ссылки на документы
Передайте docLink, чтобы после символа-триггера (по умолчанию /) открывался список поиска документов:
onDocSearch(query)возвращает подходящие элементыDocItem.onFetchDocMeta(url)получает заголовок, миниатюру и описание. Встроенная реализация читает теги Open Graph черезfetch+DOMParserи может завершиться ошибкой, если сервер другого источника не разрешает CORS. При необходимости используйте собственный серверный прокси.insertStyleопределяет способ вставки:'auto'(карточка при наличии метаданных),'card'или'link'.
Выбранный документ вставляется как обычная ссылка либо как карточка :::doc-link с заголовком, миниатюрой, описанием и именем хоста, по которой можно перейти к документу.
Предупреждения и информационные блоки
Создайте контейнер ::: одного из шести типов. В открывающей строке после типа можно указать заголовок:
:::notice
This is a notice.
:::
:::warning[Title here]
Warning content.
:::
Поддерживаемые типы: notice, info, tip, success, warning, danger. Каждый отображается со значком, цветной левой границей и заголовком. Кнопка информационного блока открывает визуальный выбор всех шести типов. Для отключения используйте tips: false.
Списки задач
Пункты, соответствующие - [ ] или - [x] (с произвольными пробельными символами в скобках), отображаются как неактивные флажки. Обратите внимание на правило проекта: - [ ] отображается установленным (зелёным), а - [x] — снятым — в противоположность GitHub Flavored Markdown. Кнопка списка задач переключает маркеры текущей строки или выбранных строк.
Дальнейшие шаги
- Настройка — настройте возможности с помощью параметров.
- Справочник API — управляйте редактором программно.