Référence API
Exports publics de @clepit/core. Chaque symbole ci-dessous fournit une signature typée et un exemple d'utilisation minimal.
Editor
La classe principale de l’éditeur. Editor expose deux méthodes statiques publiques : create (la fabrique principale) et destroy. La méthode create() retourne un objet EditorAPI par lequel toutes les méthodes d’instance sont accessibles après le montage de l’éditeur.
| Méthode | Signature | Description |
|---|---|---|
| Editor.create | Editor.create(config: EditorConfig): EditorAPI | Créez une nouvelle instance d’éditeur et montez-la dans l’élément DOM avec le containerId fourni. |
| Editor.destroy | Editor.destroy(containerId: string): void | La méthode destroy() sur l’objet EditorAPI appelle Editor.destroy() pour cette instance. |
| Méthode | Signature | Description |
|---|---|---|
| data.extract | data.extract(): EditorData | Extrayez les données de blocs actuelles d’une instance d’éditeur sous forme d’EditorData sûr pour JSON. |
| data.set | data.set(data: EditorData): void | Remplacez toute la liste de blocs par une nouvelle charge utile de données. Déclenche un nouveau rendu complet. |
| data.clear | data.clear(): void | Efface à la fois le contenu des blocs et les données d’état persistantes. |
| data.clearContent | data.clearContent(): void | Supprime uniquement les blocs, laissant les données du store intactes. |
| data.clearStorage | data.clearStorage(): void | Efface uniquement les données du store, sans toucher aux blocs actuels. |
| blocks.insert | blocks.insert<T extends BlockToolType>(type: T, data: Block<T>['data'], index: number): HTMLElement | null | Insérez un bloc à l’index donné index. Accepte la même structure de données que le type de bloc cible. |
| blocks.convert | blocks.convert(blockId: string, newType: BlockToolType): void | Convertissez un bloc en un nouveau type sur place. |
| blocks.remove | blocks.remove(index: number): void | Supprimez le bloc à l’index donné index. |
| blocks.move | blocks.move(fromIndex: number, toIndex: number): void | Déplace un bloc d’un index à un autre. |
| blocks.update | blocks.update<T extends BlockToolType>(blockId: string, data: Block<T>['data']): void | Met à jour les données d’un bloc existant sur place. Le type reste inchangé. |
| blocks.get | blocks.get(blockId: string): EditorData['blocks'][number] | null | Récupère un bloc par son ID. Retourne null si non trouvé. |
| blocks.getAll | blocks.getAll(): EditorData['blocks'] | Retourne les données de tous les blocs sous forme de tableau. |
| blocks.count | blocks.count(): number | Retourne le nombre de blocs dans l’éditeur. |
| focus | focus(): void | Déplace le focus dans l’éditeur, en se concentrant sur le premier bloc. |
| blur | blur(): void | Supprime tout focus actif à l’intérieur de l’éditeur. |
| destroy | destroy(): void | La méthode destroy() sur l’objet EditorAPI appelle Editor.destroy() pour cette instance. |
| selection.get | selection.get(): Selection | null | Retourne l’objet de sélection de la fenêtre ou null. |
| selection.set | selection.set(selection: Selection): void | Définit la sélection de la fenêtre à l’objet Selection fourni. |
| selection.clear | selection.clear(): void | Supprime toutes les plages de la sélection de la fenêtre. |
| ui.showBlockMenu | ui.showBlockMenu(block: HTMLElement): void | Affiche le menu de type de bloc pour l’élément DOM de bloc donné. |
| ui.hideBlockMenu | ui.hideBlockMenu(): void | Masque le menu de type de bloc s’il est ouvert. |
| ui.showToolbar | ui.showToolbar(x: number, y: number): void | Affiche la barre d’outils intégrée aux coordonnées de vue x, y fournies. |
| ui.hideToolbar | ui.hideToolbar(): void | Masque la barre d’outils intégrée si elle est visible. |
| view.getCurrentView | view.getCurrentView(containerId: string): EditorView | null | Retourne la vue courante (edit, preview ou json) pour le containerId donné. |
| view.switchView | view.switchView(containerId: string, view: EditorView): void | Bascule l’éditeur vers une vue spécifiée : edit, preview ou json. |
Exemple d’utilisation typique
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
Une classe qui convertit les données de blocs enregistrés en HTML en lecture seule dans un élément DOM. Cette classe possède une méthode statique publique : render().
| Méthode | Signature | Description |
|---|---|---|
| Renderer.render | Renderer.render(config: RendererConfig): HTMLElement | Rendez du JSON de blocs enregistré dans un conteneur sous forme de HTML en lecture seule. Utilisez ceci partout où vous voulez afficher du contenu sans options d’édition. |
Exemple d’utilisation typique
import { Renderer } from '@clepit/core';
Renderer.render({
containerId: 'output',
data,
theme: 'auto',
margins: { bottom: 12, top: 0 },
});StyleManager
Une classe centralisée qui gère le système de thèmes. Elle expose trois méthodes statiques publiques utiles pour les consommateurs : subscribe (pour les changements de thème au niveau du système d'exploitation), getResolvedTheme (pour lire le thème OS actuel) et injectStyles (pour injecter du CSS personnalisé).
| Méthode | Signature | Description |
|---|---|---|
| StyleManager.subscribe | StyleManager.subscribe(cb: (theme: 'light' | 'dark') => void): () => void | Abonnez-vous aux modifications des tokens de thème à l’exécution. L’écouteur se déclenche chaque fois que theme ou themeOverrides change. |
| StyleManager.getResolvedTheme | StyleManager.getResolvedTheme(): 'light' | 'dark' | Lit le thème OS actuel ("light" ou "dark"). Retourne "light" si matchMedia est indisponible. |
| StyleManager.injectStyles | StyleManager.injectStyles(styleId: string, styles: string): boolean | Injecte une chaîne CSS dans document.head (utilisez un styleId unique). Retourne false si déjà présent, true sinon. |
Exemple d’utilisation typique
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();