Tools 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');Методы
tools.getBlockTools()
BlockToolAdapter[]Get all available block tool adapters. Each adapter exposes `name` plus tool metadata, including `assetKind` — set to `'image' | 'video' | 'audio' | 'file'` on media tools that store an uploaded asset URL at `data.url`, and `undefined` otherwise. Use it to discover the media-bearing tool set at runtime (instead of hardcoding each tool's data shape) and reconcile a saved document's `data.url`s against your CDN — e.g. to garbage-collect orphaned uploads.
Когда использовать
Перечисляет зарегистрированные блочные инструменты во время выполнения — удобно для своего выбора блоков или отладки конфигурации.
const blockTools = editor.tools.getBlockTools();
blockTools.forEach(tool => {
console.log('Available tool:', tool.name);
});
// Discover which block types hold uploaded media, then collect their URLs
const mediaTypes = new Set(
editor.tools.getBlockTools().filter(t => t.assetKind).map(t => t.name)
);
const referenced = (await editor.save()).blocks
.filter(b => mediaTypes.has(b.type))
.map(b => b.data.url);tools.update(name, config)
voidShallow-merge new configuration into an installed tool at runtime — no editor recreation. A `toolbox` key is treated as the tool-level setting (same as `toolbox` in the `tools` map): pass `toolbox: false` to hide the tool from every insertion surface (existing blocks keep rendering) or a toolbox object to (re)show it — permission gating without rebuilding the editor. Under the React adapter this is automatic: change the `toolbox` value in the `tools` prop and `useBlok`/`BlokEditor` applies it in place.
// Swap a config value (e.g. an uploader) at runtime
editor.tools.update('image', { uploader: { uploadByFile } });
// Permission flip: hide the tool from the + / slash / convert menus.
// Existing goodsList blocks still render; insertion is gated.
editor.tools.update('goodsList', { toolbox: false });
// Re-enable it later
editor.tools.update('goodsList', { toolbox: { title: 'Goods List' } });tools.setInlineToolbar(config)
voidRuntime-сеттер глобальной опции `inlineToolbar`. Заново назначает строчные инструменты каждому блочному инструменту и пересобирает мемоизированные конфигурации санитизации — санитизация при вставке следует новому набору сразу, а строчная панель отражает его при следующем выделении. Настройки `inlineToolbar` на уровне инструмента (массивы и отказы) остаются приоритетными. Передайте `true` для всех строчных инструментов, `false` — чтобы отключить, или упорядоченный список имён строчных инструментов.
Когда использовать
Вступает в силу при следующем выделении; санитизация при вставке пересобирается сразу, так что вставляемый контент следует новому набору строчных инструментов немедленно. Если сохранённый контент отображается через @bloklabs/core/view, учтите: viewSchema составляется из того значения inlineToolbar, с которым была определена — после runtime-вызова setInlineToolbar с пользовательскими строчными инструментами пересоберите её через defineBlokSchema перед вызовом blocksToHtml.
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
config | boolean | string[] | Обязательный | — | true включает все зарегистрированные строчные инструменты, false отключает строчную панель, массив ограничивает её перечисленными инструментами в этом порядке. |
// Restrict inline formatting to bold and italic at runtime
editor.tools.setInlineToolbar(['bold', 'italic']);
// Disable the inline toolbar entirely
editor.tools.setInlineToolbar(false);
// Back to every registered inline tool
editor.tools.setInlineToolbar(true);tools.isInstalled(name)
booleanВозвращает true, если инструмент с указанным именем установлен и доступен в этом экземпляре редактора — блочный, строчный или tune. Публичная интроспекция набора установленных инструментов, например как проверка перед `tools.update(name, config)`, который бросает исключение для неизвестных имён.
Когда использовать
Защищает runtime-вызовы инструментов — tools.update() бросает исключение для неустановленных имён.
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
name | string | Обязательный | — | Имя зарегистрированного инструмента для проверки. |
if (editor.tools.isInstalled('image')) {
editor.tools.update('image', { uploader: { uploadByFile } });
}