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

Начало работы

Установите пакет, смонтируйте его в любой элемент-контейнер по id и извлекайте чистый JSON, когда нужно. У Clepit нет зависимости от фреймворка, поэтому он встраивается в React, Vue, Svelte или чистый JavaScript без оберток.

Установка

Добавьте @clepit/core в свой проект. Редактор поставляется в виде единого ESM-бандла с определениями TypeScript.

Shell
bun add @clepit/core

Создать редактор

Добавьте div, затем вызовите Editor.create с нужными параметрами EditorConfig. containerId: единственное обязательное поле; всё остальное необязательно.

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

const editor = Editor.create({
  containerId: 'editor',
  onChange: data => console.log(data),
  placeholder: 'Start writing…',
  theme: 'auto',
});

Редактировать и сохранять

Вызовите editor.data.extract() после того, как пользователи закончат ввод, чтобы сериализовать в формат JSON EditorData. Нагрузка содержит массив { blocks } с каждым блоком.

TypeScript
const data = editor.data.extract();
// data: EditorData
// {
//   time: 1745000000000,
//   version: '1.0.0',
//   blocks: [
//     { id: 'abc123', type: 'paragraph', data: { html: 'Hello world' } },
//     ...
//   ]
// }

Рендеринг в режиме чтения

Используйте Renderer.render для вывода HTML из EditorData, хранящихся где угодно. Renderer не хранит состояние. Ему нужен только div с containerId.

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

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

Независимость от фреймворка

@clepit/core не имеет зависимостей от сторонних фреймворков. Оба метода, Editor.create и Renderer.render, требуют только полного DOM API: React, Vue, Svelte и чистый JavaScript работают напрямую.

Editor (монтируется в DOM, только браузер) vs Renderer (создаёт статический HTML из EditorData, может работать в браузере или через SSR).