Перейти к основному содержанию

Справочник API

Публичные экспорты из @clepit/core. Каждый символ ниже содержит типизированную сигнатуру и минимальный пример использования.

Editor

Основной класс редактора. Editor предоставляет два публичных статических метода: create (основная фабрика) и destroy. Метод create() возвращает объект EditorAPI, через который доступны все методы экземпляра после монтирования редактора.

МетодСигнатураОписание
Editor.createEditor.create(config: EditorConfig): EditorAPIСоздайте новый экземпляр редактора и смонтируйте его в DOM-элемент с указанным containerId.
Editor.destroyEditor.destroy(containerId: string): voidМетод destroy() на объекте EditorAPI вызывает Editor.destroy() для данного экземпляра.
МетодСигнатураОписание
data.extractdata.extract(): EditorDataИзвлеките текущие данные блоков из экземпляра редактора в виде безопасного для JSON EditorData.
data.setdata.set(data: EditorData): voidЗамените весь список блоков новой полезной нагрузкой данных. Запускает полный повторный рендеринг.
data.cleardata.clear(): voidОчищает как содержимое блоков, так и сохранённые данные состояния.
data.clearContentdata.clearContent(): voidУдаляет только блоки, оставляя данные хранилища нетронутыми.
data.clearStoragedata.clearStorage(): voidОчищает только данные хранилища, не затрагивая текущие блоки.
blocks.insertblocks.insert<T extends BlockToolType>(type: T, data: Block<T>['data'], index: number): HTMLElement | nullВставьте блок по заданному индексу index. Принимает ту же структуру данных, что и целевой тип блока.
blocks.convertblocks.convert(blockId: string, newType: BlockToolType): voidПреобразуйте блок в новый тип на месте.
blocks.removeblocks.remove(index: number): voidУдалите блок по заданному индексу index.
blocks.moveblocks.move(fromIndex: number, toIndex: number): voidПеремещает блок с одного индекса на другой.
blocks.updateblocks.update<T extends BlockToolType>(blockId: string, data: Block<T>['data']): voidОбновляет данные существующего блока на месте. Тип остаётся неизменным.
blocks.getblocks.get(blockId: string): EditorData['blocks'][number] | nullПолучает блок по его ID. Возвращает null, если не найден.
blocks.getAllblocks.getAll(): EditorData['blocks']Возвращает данные всех блоков в виде массива.
blocks.countblocks.count(): numberВозвращает количество блоков в редакторе.
focusfocus(): voidПеремещает фокус в редактор, фокусируясь на первом блоке.
blurblur(): voidУбирает любой активный фокус изнутри редактора.
destroydestroy(): voidМетод destroy() на объекте EditorAPI вызывает Editor.destroy() для данного экземпляра.
selection.getselection.get(): Selection | nullВозвращает объект выделения окна или null.
selection.setselection.set(selection: Selection): voidУстанавливает выделение окна на переданный объект Selection.
selection.clearselection.clear(): voidУбирает все диапазоны из выделения окна.
ui.showBlockMenuui.showBlockMenu(block: HTMLElement): voidПоказывает меню типа блока для заданного DOM-элемента блока.
ui.hideBlockMenuui.hideBlockMenu(): voidСкрывает меню типа блока, если оно открыто.
ui.showToolbarui.showToolbar(x: number, y: number): voidОтображает встроенную панель инструментов в указанных координатах x, y области просмотра.
ui.hideToolbarui.hideToolbar(): voidСкрывает встроенную панель инструментов, если она видима.
view.getCurrentViewview.getCurrentView(containerId: string): EditorView | nullВозвращает текущее представление (edit, preview или json) для заданного containerId.
view.switchViewview.switchView(containerId: string, view: EditorView): voidПереключает редактор на указанное представление: edit, preview или json.

Типичный пример использования

TypeScript
import { Editor } from '@clepit/core';

const editor = Editor.create({
  containerId: 'editor',
  theme: 'auto',
  placeholder: 'Start writing...',
  minHeight: 300,
});

// Insert a block
editor.blocks.insert('paragraph', { html: 'Hello world' }, 0);

// Extract data
const data = editor.data.extract();

// Switch view
editor.view.switchView('editor', 'preview');

// Tear down
editor.destroy();

Renderer

Класс, преобразующий сохранённые данные блоков в HTML только для чтения внутри DOM-элемента. У этого класса есть один публичный статический метод: render().

МетодСигнатураОписание
Renderer.renderRenderer.render(config: RendererConfig): HTMLElementОтрендерьте сохранённый JSON блоков в контейнер как HTML только для чтения. Используйте это везде, где нужно показать контент без возможностей редактирования.

Типичный пример использования

TypeScript
import { Renderer } from '@clepit/core';

Renderer.render({
  containerId: 'output',
  data,
  theme: 'auto',
  margins: { bottom: 12, top: 0 },
});

StyleManager

Централизованный класс, управляющий системой тем. Предоставляет три полезных публичных статических метода для потребителей: subscribe (для изменений темы на уровне ОС), getResolvedTheme (для чтения текущей темы ОС) и injectStyles (для инъекции пользовательского CSS).

МетодСигнатураОписание
StyleManager.subscribeStyleManager.subscribe(cb: (theme: 'light' | 'dark') => void): () => voidПодпишитесь на изменения токенов темы во время выполнения. Слушатель срабатывает каждый раз, когда меняются theme или themeOverrides.
StyleManager.getResolvedThemeStyleManager.getResolvedTheme(): 'light' | 'dark'Читает текущую тему ОС ("light" или "dark"). Возвращает "light", если matchMedia недоступна.
StyleManager.injectStylesStyleManager.injectStyles(styleId: string, styles: string): booleanВставляет строку CSS в document.head (используйте уникальный styleId). Возвращает false, если уже существует, иначе true.

Типичный пример использования

TypeScript
import { StyleManager } from '@clepit/core';

// React to OS theme changes
const unsubscribe = StyleManager.subscribe(theme => {
  console.log('OS theme:', theme); // 'light' | 'dark'
});

// Read current OS theme
const current = StyleManager.getResolvedTheme();

// Inject custom CSS once
StyleManager.injectStyles('my-overrides', `
  .clepit-editor { font-family: 'Inter', sans-serif; }
`);

// Unsubscribe when done
unsubscribe();