Перейти к основному содержимому

Конфигурация

Конструктор MarkdownEditor принимает элемент-контейнер или селектор, а затем объект MarkdownEditorOptions. Здесь описаны тип, значение по умолчанию и поведение каждого поля, а также связанные типы параметров.

MarkdownEditorOptions​

interface MarkdownEditorOptions {
value?: string;
mode?: EditorMode;
theme?: EditorTheme;
math?: boolean;
mindmap?: boolean;
codeHighlight?: boolean;
tips?: boolean;
preview?: boolean;
onChange?: (value: string) => void;
toolbar?: ToolbarConfig;
onImageUpload?: (file: File) => Promise<string>;
mention?: MentionOptions;
docLink?: DocLinkOptions;
renderDebounce?: number | false;
autoPreview?: boolean;
}
ПараметрТипПо умолчаниюОписание
valuestring''Начальное содержимое Markdown.
modeEditorMode'simple''simple' показывает редактор и предпросмотр без панели инструментов и строки состояния. 'complex' добавляет обе панели.
themeEditorTheme'light'Цветовая тема через атрибут data-theme: 'light' или 'dark'.
mathbooleantrueВключает формулы KaTeX: $...$ внутри строки, $$...$$ отдельным блоком.
mindmapbooleantrueВключает интеллект-карты Markmap из ограждённых блоков ```mindmap.
codeHighlightbooleantrueВключает блоки кода highlight.js с трёхцветным заголовком и кнопкой копирования.
tipsbooleantrueВключает информационные блоки, например :::notice и :::warning.
previewbooleantrueПоказывает область предпросмотра. При false создаётся только область редактора.
onChange(value: string) => void—Вызывается при каждом редактировании с полным текстом документа.
toolbarToolbarConfigвсе действияВыбирает видимые действия панели инструментов и заменяет их подписи или значки.
onImageUpload(file: File) => Promise<string>—Обработчик вставки или перетаскивания файла изображения в редактор. Promise должен вернуть URL изображения, вставляемого как ![alt](url). Диалог изображения принимает URL и не содержит выбора файла.
mentionMentionOptions—Настройки списка @упоминаний. Если не указаны, ввод @ не открывает список.
docLinkDocLinkOptions—Настройки вставки ссылок на документы. Если не указаны, ввод символа активации не открывает список.
renderDebouncenumber | falseадаптивнаяЗадержка обновления предпросмотра в миллисекундах. false запускает синхронный рендеринг при каждом изменении; число задаёт фиксированную задержку. Без значения используется adaptiveDebounceMs(value.length) — от 120 до 600 мс.
autoPreviewbooleantrueПри true предпросмотр обновляется после изменений с задержкой. При false вызывайте renderNow() или используйте кнопку обновления строки состояния.

EditorMode и EditorTheme​

type EditorMode = 'simple' | 'complex';
type EditorTheme = 'light' | 'dark';
  • 'simple' (по умолчанию): без панели инструментов, строки состояния и номеров строк.
  • 'complex': включает панель инструментов, строку состояния и номера строк.
  • 'light' (по умолчанию) и 'dark' управляют палитрой подсветки синтаксиса и пользовательскими свойствами CSS.

Оба параметра можно менять во время работы через setMode(mode) и setTheme(theme).

ToolbarConfig​

ToolbarConfig — это массив имён включаемых действий либо объект, сопоставляющий имена действий с индивидуальными настройками:

type ToolbarConfig = string[] | Record<string, ToolbarItemOverride>;

Массив включаемых действий​

Отображаются только перечисленные действия. Сохраняется встроенный порядок панели: массив фильтрует видимость, но не меняет порядок.

new MarkdownEditor('#editor', {
mode: 'complex',
toolbar: ['heading', 'bold', 'italic', 'link', 'code'],
});

Объект с настройками отдельных действий​

По умолчанию видны все действия. Объект позволяет скрывать элементы и менять их подписи или значки:

new MarkdownEditor('#editor', {
mode: 'complex',
toolbar: {
bold: { label: 'Make bold', icon: '<b>B</b>' },
image: { show: false },
youtube: { show: false },
},
});

ToolbarItemOverride​

interface ToolbarItemOverride {
show?: boolean; // Show this item. Default: true.
label?: string; // Custom tooltip / aria-label.
icon?: string; // Custom icon as an HTML string.
}

Полный список допустимых имён действий приведён в разделе Возможности.

MentionOptions​

interface MentionOptions {
onMentionSearch?: (query: string) => MentionItem[] | Promise<MentionItem[]>;
onMentionSelect?: (item: MentionItem) => string;
minChars?: number;
maxItems?: number;
}
ПолеТипПо умолчаниюОписание
onMentionSearch(query: string) => MentionItem[] | Promise<MentionItem[]>—Обработчик поиска, получающий текст после @. Необходим для включения списка.
onMentionSelect(item: MentionItem) => string(item) => `[@${item.label}](mention:${item.id})`Возвращает текст для вставки у курсора вместо @query. Используйте форму [@label](mention:id), чтобы предпросмотр показывал метку.
minCharsnumber0Минимальная длина запроса для показа списка.
maxItemsnumber8Максимальное число элементов в списке.

MentionItem описан в справочнике API.

DocLinkOptions​

interface DocLinkOptions {
onDocSearch?: (query: string) => DocItem[] | Promise<DocItem[]>;
onFetchDocMeta?: (url: string) => Promise<DocMeta>;
insertStyle?: 'card' | 'link' | 'auto';
triggerChar?: string;
minChars?: number;
maxItems?: number;
}
ПолеТипПо умолчаниюОписание
onDocSearch(query: string) => DocItem[] | Promise<DocItem[]>—Обработчик поиска после символа активации. Необходим для включения списка.
onFetchDocMeta(url: string) => Promise<DocMeta>встроенные fetch + DOMParserЗамените обработчик, чтобы получать метаданные через серверный прокси и избегать ограничений CORS браузера.
insertStyle'card' | 'link' | 'auto''auto''card' вставляет карточку :::doc-link, а без метаданных — ссылку; 'link' всегда вставляет обычную Markdown-ссылку; 'auto' вставляет карточку при наличии метаданных.
triggerCharstring'/'Символ, открывающий поиск документов.
minCharsnumber0Минимальная длина запроса перед поиском.
maxItemsnumber8Максимальное число элементов в списке.

RendererOptions​

Используется конструктором Renderer и функцией renderMarkdown(source, options).

interface RendererOptions {
math?: boolean;
mindmap?: boolean;
codeHighlight?: boolean;
tips?: boolean;
html?: boolean;
breaks?: boolean;
theme?: 'light' | 'dark';
}
ПараметрТипПо умолчаниюОписание
mathbooleantrueВключает формулы KaTeX.
mindmapbooleantrueВключает интеллект-карты Markmap.
codeHighlightbooleantrueВключает блоки кода highlight.js.
tipsbooleantrueВключает информационные блоки.
htmlbooleanfalseРазрешает необработанный HTML в Markdown. Значение по умолчанию false безопаснее.
breaksbooleanfalseПреобразует мягкие переносы строк в <br>.
theme'light' | 'dark'—В renderMarkdown оборачивает HTML в контейнер с темой. Renderer.render возвращает HTML без обёртки; задайте стиль контейнера самостоятельно.

Флажки списков задач, карточки :::doc-link и метки @упоминаний всегда включены и не отключаются через RendererOptions.

Дальнейшие шаги​