Skip to content

Менеджер блоков

Менеджер блоков — это основной класс для управления блоками редактора. Он доступен из любой точки приложения и позволяет создавать, удалять, перемещать блоки, а также выполнять другие операции над ними.

BlockManager

Класс для управления блоками в редакторе.

Методы BlockManager

ФункцияСигнатураОписание
toaststoasts(): IToastsВозвращает экземпляр сервиса всплывающих уведомлений.
refreshVirtualSelectionrefreshVirtualSelection(): IVirtualSelection | nullОбновляет виртуальное выделение и возвращает его экземпляр.
getVirtualSelectiongetVirtualSelection(): IVirtualSelection | nullВозвращает экземпляр виртуального выделения или создаёт его, если он не существует.
clearVirtualSelectionclearVirtualSelection(): voidОчищает виртуальное выделение.
destroyVirtualSelectiondestroyVirtualSelection(): voidУничтожает виртуальное выделение.
getBlocksContainergetBlocksContainer(): HTMLElement | nullВозвращает контейнер блоков.
focusfocus(index: number, startPos?: number, endPos?: number, itemIndex?: number): BlockElement | nullУстанавливает фокус на блок по индексу.
getBlocksgetBlocks(): BlockElement[]Возвращает массив всех блоков.
getBlockgetBlock(index?: number): BlockElement | nullВозвращает блок по индексу или активный.
getContentElementgetContentElement(blockElement?: BlockElement): HTMLElement | nullВозвращает элемент содержимого блока.
getNextBlockElementgetNextBlockElement(): BlockElement | nullВозвращает следующий блок.
getPrevBlockElementgetPrevBlockElement(): BlockElement | nullВозвращает предыдущий блок.
findParentfindParent(targetElement: EventTarget | BlockElement | HTMLElement): BlockElement | nullНаходит родительский блок для заданного элемента.
useuse(index: number): voidУстанавливает текущий активный блок по индексу.
getIndexgetIndex(el?: BlockElement | HTMLElement | EventTarget): numberВозвращает индекс блока.
countcount(): numberВозвращает количество блоков.
isEmptyisEmpty(index?: number): booleanПроверяет, пуст ли блок по индексу.
detectEmptydetectEmpty(emptyAttr: boolean = true): voidОбнаруживает пустые блоки и устанавливает атрибут data-empty.
normalizenormalize(): voidНормализует содержимое всех блоков.
getModelgetModel(index?: number): BlockModel | nullВозвращает модель блока по индексу.
removeBlockremoveBlock(index: number | number[] = -1, skipEvents: boolean = false): number | nullУдаляет блок(и) по индексу(ам).
createDefaultBlockcreateDefaultBlock(index: number = -1, options?: BlockCreateSchema): BlockElement | nullСоздаёт блок по умолчанию.
createBlockcreateBlock(name: string, index: number = -1, options?: BlockCreateSchema, skipEvents: boolean = false, scrollIntoView: boolean | ScrollIntoViewOptions = true): BlockElement | nullСоздаёт новый блок с заданным именем.
rebuildrebuild(index: number): BlockElement | nullПерестраивает блок по индексу, обновляя всю его структуру.
moveBlockmoveBlock(index: number, targetIndex: number, skipEvents: boolean = false): voidПеремещает блок на новую позицию.
mergemerge(index: number, targetIndex: number, focus?: number, useItems?: boolean): voidОбъединяет два редактируемых блока.
convertconvert(blockElement: BlockElement, targetModel: BlockModel): booleanКонвертирует блок в другой тип (если поддерживается).
getModelsgetModels(): BlockModel[]Возвращает массив моделей всех блоков.
getSchemasgetSchemas(): BlockModelSchema[]Возвращает массив схем блоков.
cleanupSchemascleanupSchemas(): voidОчищает кэш схем блоков.
getSchemagetSchema(name: string): BlockModelSchema | nullВозвращает схему блока по имени.
getRealNamegetRealName(name: string): string | nullВозвращает реальное имя блока по псевдониму.
htmlToDatahtmlToData(html: string): Array<BlockSchema | string>Преобразует HTML в данные блоков.
parseBlockparseBlock(blockSchema: BlockSchema, skipDecode: boolean = false): BlockElement | nullПарсит схему блока и возвращает элемент блока.
parseBlocksparseBlocks(data: BlockSchema[], skipDecode: boolean = false): BlockElement[]Парсит массив схем блоков и возвращает элементы блоков.
parseChildrenparseChildren(schema: BlockSchema | BlockChildSchema, skipDecode: boolean = false, returnElement: boolean = false): Node[]Парсит дочерние элементы схемы блока.
destroydestroy(): voidУничтожает экземпляр BlockManager и очищает ресурсы.

Пример использования BlockManager

javascript
import { BlockModel } from "@/core/models";
import { Paragraph } from "texditor/entities/blocks";
import Texditor from "texditor";

// Пример пользовательского блока и использование внутри него менеджера блоков (это только для ознакомления, не делайте так на реальных проектах)
class CustomHeader extends BlockModel {
  onMount(evt) {
    const { blockManager } = this.editor;
    const currentBlock = blockManager.getBlock();
    const index = blockManager.getIndex();

    console.log(currentBlock, index)
  }
}

const editor = new Texditor({
  handle: "my-editor",
  blocks: [
    Paragraph,
    CustomHeader.setup({
      name: 'header',
      tagName: 'h2',
    })
  ]
});

// Удаление блока по индексу
editor.blockManager.removeBlock(1);

// Создание нового блока
editor.blockManager.createBlock('p', 0);

// Получение текущего блока
const currentBlock = editor.blockManager.getBlock();

// Фокусировка на блоке
editor.blockManager.focus(2);

// Перемещение блока
editor.blockManager.moveBlock(0, 3);

// Объединение блоков
editor.blockManager.merge(1, 2);

dev@priveted.com | priveted.com