Skip to content

Инструменты форматирования

С помощью инструментов можно изменять текстовое содержимое блоков. Как и в случае с блоками, вы можете воспользоваться готовыми вариантами, внести изменения, используя расширяемость классов, или создать собственные инструменты. Однако стоит отметить, что у инструментов нет дополнительных настроек, которые позволяли бы быстро адаптировать их под конкретные задачи.

Toolbar

Базовое использование

Подключайте и используйте инструменты форматирования в конфигурации редактора.

js
import Texditor from 'texditor';
import {
  BoldTool,
  ItalicTool,
  InlineCodeTool,
  LinkTool,
  MarkerTool,
  SubscriptTool,
  SuperscriptTool,
  ClearFormattingTool
} from 'texditor/entities/tools';
import { H1 } from 'texditor/entities/blocks';

const editor = new Texditor({
  // Идентификатор html-элемента
  handle: 'texditor',
  // Список инструментов
  tools: [
    BoldTool.setup({
      tagName: 'strong',
      iconWidth: 16,
      iconHeight: 16
      // ... другие параметры из основной и базовой модели
    }),
    ItalicTool,
    InlineCodeTool,
    LinkTool,
    MarkerTool,
    SubscriptTool,
    SuperscriptTool,
    ClearFormattingTool,
    //... или пользовательские варианты
  ],

  /* 
  Здесь мы можем использовать необязательную опцию, 
  чтобы выбрать инструменты, которые будут отображаться в блоке,
  основываясь на их символьных кодах.
  */
  blocks: [
    H1.setup({
      availableTools: [
        "link",
        "subscript",
        "superscript",
        "clearFormatting"
      ]
    })
  ],
});

Создание пользовательских инструментов форматирования

Как и с любой базовой моделью, редактор позволяет легко создавать пользовательские сущности инструмента форматирования.

javascript
import { ToolModel } from 'texditor/core/models';

// Пример инструмента форматирования
export default class CustomBoldTool extends ToolModel {
  configure() {
    return {
      name: 'bold',
      tagName: 'b',
      icon: { raw: '<svg>...</svg>' },
      iconWidth: 16,
      iconHeight: 16,
      /** 
       * Этот параметр блокирует возможность форматирования внутри текущего элемента 
       * и предотвращает использование других методов форматирования, разделяя элемент на отдельные фрагменты.  
       */
      override: false,
      // ... другие параметры из базовой модели
    };
  }

  // Необязательный метод, который по умолчанию выполняет функцию this.format().
  onClick(evt) {
    // Выполним принудительное форматирование, которое очистит все элементы на пути и создаст HTML-элемент с именем тега 'tagName'.
    this.forcedFormat();
  }

  // Другие методы из основной модели "ToolModel" и базовой 'BaseModel' ...
}
typescript
import { type ToolModelConfig } from 'texditor';
import { ToolModel } from 'texditor/core/models';

// Пример инструмента форматирования
export default class CustomBoldTool extends ToolModel {
  protected configure(): Partial<ToolModelConfig> {
    return {
      name: 'bold',
      tagName: 'b',
      icon: { raw: '<svg>...</svg>' },
      iconWidth: 16,
      iconHeight: 16,
      /** 
       * Этот параметр блокирует возможность форматирования внутри текущего элемента 
       * и предотвращает использование других методов форматирования, разделяя элемент на отдельные фрагменты.  
       */
      override: false,
      // ... другие параметры из базовой модели
    };
  }

  // Необязательный метод, который по умолчанию выполняет функцию this.format().
  protected onClick(evt: MouseEvent): void {
    // Выполним принудительное форматирование, которое очистит все элементы на пути и создаст HTML-элемент с именем тега 'tagName'.
    this.forcedFormat();
  }

  // Другие методы из основной модели "ToolModel" и базовой 'BaseModel' ...
}

dev@priveted.com | priveted.com