Selection API: чтение и установка выделения
Работа с выделением текста внутри редактора.
Как получить экземпляр редактора
Методы ниже вызываются на редакторе, созданном через new Blok(). Они доступны после того, как разрешится editor.isReady.
// You already hold the instance returned by the constructor.
const editor = new Blok({ holder: 'editor' });
await editor.isReady;
// Call any API method on it.
editor.caret.setToLastBlock('end');Методы
selection.findParentTag(tagName, className?)
HTMLElement | nullFind the parent element of the current selection matching the tag and optionally class.
Когда использовать
Стандартный способ для строчных инструментов проверить, находится ли курсор уже внутри их тега (например, <a> для ссылки).
const bold = editor.selection.findParentTag('B');
if (bold) {
console.log('Selection is inside bold text');
}
const link = editor.selection.findParentTag('A', 'external-link');selection.expandToTag(node)
voidExpand selection to cover the entire element.
Когда использовать
Расширяет выделение на весь элемент — обычно чтобы выделить существующую разметку перед заменой или удалением.
const element = editor.selection.findParentTag('B');
if (element) {
editor.selection.expandToTag(element);
// Now entire bold element is selected
}selection.setFakeBackground()
voidSet a fake background to imitate selection when focus moves away. Useful for inline tools.
Когда использовать
Сохраняет видимую подсветку «выделения», пока фокус уходит в поле вашего инструмента. Всегда сопровождайте последующим removeFakeBackground().
// Save selection visual before opening a modal
editor.selection.setFakeBackground();
// Open modal - selection stays visually highlightedselection.removeFakeBackground()
voidRemove the fake background selection.
Когда использовать
Убирает фейковую подсветку из setFakeBackground(); вызывайте при закрытии вашего строчного UI.
// After closing modal
editor.selection.removeFakeBackground();selection.clearFakeBackground()
voidClear all fake background state - both DOM elements and internal flags.
Когда использовать
Более полный сброс, чем removeFakeBackground() — очищает и DOM, и внутренние флаги, если состояние рассинхронизировалось.
// Full cleanup after undo/redo
editor.selection.clearFakeBackground();selection.save()
voidSave the current selection range to restore later.
Когда использовать
Сохраните текущий диапазон перед уходом фокуса из документа (например, при открытии диалога), затем верните через restore().
// Save selection before moving focus
editor.selection.save();
// Do something that moves focus away...
// Restore selection
editor.selection.restore();selection.restore()
voidRestore a previously saved selection range.
Когда использовать
Восстанавливает диапазон, сохранённый save() — цикл, позволяющий строчным инструментам пережить смену фокуса.
editor.selection.save();
// ... operations that move focus ...
editor.selection.restore();