Referência da API
Exportações públicas de @clepit/core. Cada símbolo abaixo fornece uma assinatura tipada e um exemplo mínimo de uso.
Editor
A classe principal do editor. Editor expõe dois métodos estáticos públicos: create (a fábrica principal) e destroy. O método create() retorna um objeto EditorAPI pelo qual todos os métodos de instância são acessíveis após o editor ser montado.
| Método | Assinatura | Descrição |
|---|---|---|
| Editor.create | Editor.create(config: EditorConfig): EditorAPI | Crie uma nova instância do editor e monte-a no elemento DOM com o containerId fornecido. |
| Editor.destroy | Editor.destroy(containerId: string): void | O método destroy() no objeto EditorAPI chama Editor.destroy() para esta instância. |
| Método | Assinatura | Descrição |
|---|---|---|
| data.extract | data.extract(): EditorData | Extraia os dados de blocos atuais de uma instância do editor como um EditorData seguro para JSON. |
| data.set | data.set(data: EditorData): void | Substitua toda a lista de blocos por um novo payload de dados. Aciona uma re-renderização completa. |
| data.clear | data.clear(): void | Limpa tanto o conteúdo dos blocos quanto os dados de estado persistidos. |
| data.clearContent | data.clearContent(): void | Remove apenas os blocos, deixando os dados do store intactos. |
| data.clearStorage | data.clearStorage(): void | Limpa apenas os dados do store, deixando os blocos atuais intactos. |
| blocks.insert | blocks.insert<T extends BlockToolType>(type: T, data: Block<T>['data'], index: number): HTMLElement | null | Insira um bloco no index fornecido. Aceita o mesmo formato de dados do tipo de bloco de destino. |
| blocks.convert | blocks.convert(blockId: string, newType: BlockToolType): void | Converta um bloco para um novo tipo no local. |
| blocks.remove | blocks.remove(index: number): void | Remova o bloco no index fornecido. |
| blocks.move | blocks.move(fromIndex: number, toIndex: number): void | Move um bloco de um índice para outro. |
| blocks.update | blocks.update<T extends BlockToolType>(blockId: string, data: Block<T>['data']): void | Atualiza os dados de um bloco existente no local. O tipo permanece inalterado. |
| blocks.get | blocks.get(blockId: string): EditorData['blocks'][number] | null | Busca um bloco pelo seu ID. Retorna null se não encontrado. |
| blocks.getAll | blocks.getAll(): EditorData['blocks'] | Retorna os dados de todos os blocos como um array. |
| blocks.count | blocks.count(): number | Retorna o número de blocos no editor. |
| focus | focus(): void | Move o foco para o editor, focando no primeiro bloco. |
| blur | blur(): void | Remove qualquer foco ativo de dentro do editor. |
| destroy | destroy(): void | O método destroy() no objeto EditorAPI chama Editor.destroy() para esta instância. |
| selection.get | selection.get(): Selection | null | Retorna o objeto de seleção da janela ou null. |
| selection.set | selection.set(selection: Selection): void | Define a seleção da janela para o objeto Selection fornecido. |
| selection.clear | selection.clear(): void | Remove todos os intervalos da seleção da janela. |
| ui.showBlockMenu | ui.showBlockMenu(block: HTMLElement): void | Exibe o menu de tipo de bloco para o elemento DOM de bloco fornecido. |
| ui.hideBlockMenu | ui.hideBlockMenu(): void | Oculta o menu de tipo de bloco se estiver aberto. |
| ui.showToolbar | ui.showToolbar(x: number, y: number): void | Exibe a barra de ferramentas inline nas coordenadas x, y do viewport fornecidas. |
| ui.hideToolbar | ui.hideToolbar(): void | Oculta a barra de ferramentas inline se estiver visível. |
| view.getCurrentView | view.getCurrentView(containerId: string): EditorView | null | Retorna a view atual (edit, preview ou json) para o containerId fornecido. |
| view.switchView | view.switchView(containerId: string, view: EditorView): void | Muda o editor para uma view especificada: edit, preview ou json. |
Exemplo de uso típico
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
Uma classe que converte dados de blocos salvos em HTML somente leitura dentro de um elemento DOM. Esta classe possui um método estático público: render().
| Método | Assinatura | Descrição |
|---|---|---|
| Renderer.render | Renderer.render(config: RendererConfig): HTMLElement | Renderize o JSON de blocos salvo em um contêiner como HTML somente leitura. Use isto em qualquer lugar onde queira exibir conteúdo sem recursos de edição. |
Exemplo de uso típico
import { Renderer } from '@clepit/core';
Renderer.render({
containerId: 'output',
data,
theme: 'auto',
margins: { bottom: 12, top: 0 },
});StyleManager
Uma classe centralizada que gerencia o sistema de temas. Expõe três métodos estáticos públicos úteis para consumidores: subscribe (para mudanças de tema no nível do SO), getResolvedTheme (para ler o tema atual do SO) e injectStyles (para injetar CSS personalizado).
| Método | Assinatura | Descrição |
|---|---|---|
| StyleManager.subscribe | StyleManager.subscribe(cb: (theme: 'light' | 'dark') => void): () => void | Inscreva-se nas alterações de tokens de tema em tempo de execução. O listener é disparado sempre que theme ou themeOverrides mudam. |
| StyleManager.getResolvedTheme | StyleManager.getResolvedTheme(): 'light' | 'dark' | Lê o tema atual do SO ("light" ou "dark"). Retorna "light" se matchMedia não estiver disponível. |
| StyleManager.injectStyles | StyleManager.injectStyles(styleId: string, styles: string): boolean | Injeta uma string CSS no document.head (use um styleId único). Retorna false se já presente, true caso contrário. |
Exemplo de uso típico
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();