Работа с командами
Класс для работы с форматированием текста в редакторе.
WARNING
Этот класс предназначен для внутреннего использования в редакторе и для разработки сторонних компонентов. Однако его методы следует применять с осторожностью, поскольку они обходят систему менеджера событий и менеджера истории. Неправильное использование может привести к ошибкам и непредсказуемому поведению во всём приложении. Вместо этого рекомендуется использовать модели инструментов.
Commands
Класс предназначен в основном для внутреннего использования и по своей сути является узкоспециализированным инструментом для форматирования текста.
Методы Commands
| Функция | Сигнатура | Описание |
|---|---|---|
| formatTextRange | formatTextRange(tagName: string, startOffset: number, endOffset: number, container: HTMLElement): void | Форматирует указанный текстовый диапазон внутри контейнера с заданным HTML-тегом. |
| format | format(tagName: string, focus?: boolean): void | Применяет или удаляет форматирование на основе текущего контекста выделения. |
| createFormat | createFormat(tagName: string): void | Создаёт новый формат вокруг текущего выделения. |
| removeFormat | removeFormat(tagName: string, focus?: boolean, normalize?: boolean): void | Удаляет теги форматирования из текущего выделения. |
| clearAllFormatting | clearAllFormatting(normalize?: boolean): void | Удаляет все теги форматирования из документа. |
| normalize | normalize(container?: HTMLElement): void | Нормализует структуру DOM, удаляя пустые теги и объединяя соседние элементы. |
| flattenNestedTags | flattenNestedTags(parentElement: HTMLElement): void | Упрощает вложенные теги одного типа (например, <strong><strong>текст</strong></strong>). |
| mergeAdjacentTags | mergeAdjacentTags(root: HTMLElement | Element): void | Объединяет соседние теги одного типа. |
| removeEmptyTags | removeEmptyTags(element: HTMLElement, tagName: string): void | Удаляет пустые теги указанного типа из элемента. |
| splitElement | splitElement(element: HTMLElement, startIndex: number, endIndex: number): [HTMLElement, DocumentFragment, HTMLElement] | Разбивает элемент на заданных текстовых позициях. |
| replaceEmptyEdges | replaceEmptyEdges(el: HTMLElement, item?: HTMLElement | Node): void | Заменяет пустые граничные элементы. |
| findTags | findTags(tagName?: string | boolean, children?: boolean): HTMLElement[] | Находит теги в текущем выделении или документе. |
| getSelectionDirection | getSelectionDirection(tagName: string | HTMLElement): string | Возвращает направление выделения относительно указанного тега. |
| getEdgeChars | getEdgeChars(str: string): { firstChar: string; lastChar: string; isEmptyFirstChar: boolean; isEmptyLastChar: boolean; } | Получает первые и последние символы строки вместе с их статусом пустоты. |
Пример использования Commands
Не рекомендуется использовать методы подобным образом (это всего лишь пример).
javascript
import { Texditor } from "texditor";
const editor = new Texditor({
handle: "my-editor"
});
// Применение форматирования
editor.commands.format('strong');
// Удаление форматирования
editor.commands.removeFormat('strong');
// Создание форматирования без переключения
editor.commands.createFormat('em');
// Очистка всего форматирования
editor.commands.clearAllFormatting();
// Поиск тегов в выделении
const strongTags = editor.commands.findTags('strong');