Ir para o conteúdo principal

clepit_core

O pacote clepit_core é o gêmeo nativo Dart/Flutter do @clepit/core: o mesmo modelo de documento JSON, edição e renderização somente leitura a partir de uma base de código, mirando web, mobile e desktop. Documentos são intercambiáveis: EditorData.toJson() aqui é lido pelo pacote TypeScript e vice-versa.

pub.dev: clepit_core · npm: @clepit/core

Instalar

Shell
flutter pub add clepit_core

Editor

O Editor é uma superfície de edição completa: ferramentas de bloco, ferramentas inline, barras de ferramentas e tratamento de seleção. O EditorController também aceita tools e inlineTools para restringir ou estender o conjunto embutido, e expõe as APIs de documento, seleção e visão (EditorApi) para edições programáticas.

Dart
import 'package:clepit_core/clepit_core.dart';

final controller = EditorController(
  initial: EditorData.fromJson(documentJson),
);

Editor(
  controller: controller,
  config: EditorConfig(
    onChange: (data) => save(data),
  ),
);

Renderer

O Renderer desenha um documento somente leitura, sem chrome de edição. Dados de bloco inválidos ou desconhecidos renderizam um InvalidDataPlaceholder em vez de lançar exceção, então um documento de um produtor mais antigo ou mais novo degrada visivelmente em vez de derrubar a visão.

Dart
Renderer(
  config: RendererConfig(data: document),
);

ClepitTheme

O estilo flui através do ClepitTheme, uma ThemeExtension no seu ThemeData, então o editor e o renderizador seguem o tema do seu app no claro e no escuro. Sobrescritas por renderização passam por RendererConfig.styles.

Vindo do @clepit/core

O mesmo conceito existe dos dois lados; os nomes seguem as convenções de cada plataforma.

TypeScriptDart
EditorEditor
RendererRenderer
StyleManagerThemeExtension<ClepitTheme> + ThemeData
ToolBlockTool / InlineTool
Block<T>sealed class Block
EditorAPIEditorApi + BlocksApi, SelectionApi