Zum Hauptinhalt springen

API-Referenz

Öffentliche Exporte aus @clepit/core. Jedes Symbol unten liefert eine typisierte Signatur und ein minimales Anwendungsbeispiel.

Editor

Die Kern-Editor-Klasse. Editor bietet zwei öffentliche statische Methoden: create (die Hauptfabrik) und destroy. Die Methode create() gibt ein EditorAPI-Objekt zurück, über das alle Instanzmethoden nach dem Einbinden des Editors zugänglich sind.

MethodeSignaturBeschreibung
Editor.createEditor.create(config: EditorConfig): EditorAPIErstellen Sie eine neue Editor-Instanz und binden Sie sie in das DOM-Element mit der angegebenen containerId ein.
Editor.destroyEditor.destroy(containerId: string): voidDie Methode destroy() auf dem EditorAPI-Objekt ruft Editor.destroy() für diese Instanz auf.
MethodeSignaturBeschreibung
data.extractdata.extract(): EditorDataExtrahieren Sie die aktuellen Blockdaten aus einer Editor-Instanz als JSON-sicheres EditorData.
data.setdata.set(data: EditorData): voidErsetzen Sie die gesamte Blockliste durch eine neue Datennutzlast. Löst ein vollständiges Neu-Rendern aus.
data.cleardata.clear(): voidLöscht sowohl den Blockinhalt als auch die gespeicherten Zustandsdaten.
data.clearContentdata.clearContent(): voidEntfernt nur Blöcke und lässt die Store-Daten unangetastet.
data.clearStoragedata.clearStorage(): voidLöscht nur die Store-Daten und lässt aktuelle Blöcke unberührt.
blocks.insertblocks.insert<T extends BlockToolType>(type: T, data: Block<T>['data'], index: number): HTMLElement | nullFügen Sie einen Block am angegebenen Index index ein. Akzeptiert dieselbe Datenstruktur wie der Zielblocktyp.
blocks.convertblocks.convert(blockId: string, newType: BlockToolType): voidKonvertieren Sie einen Block an Ort und Stelle in einen neuen Typ.
blocks.removeblocks.remove(index: number): voidEntfernen Sie den Block am angegebenen Index index.
blocks.moveblocks.move(fromIndex: number, toIndex: number): voidVerschiebt einen Block von einem Index zu einem anderen.
blocks.updateblocks.update<T extends BlockToolType>(blockId: string, data: Block<T>['data']): voidAktualisiert die Daten eines vorhandenen Blocks an Ort und Stelle. Der Typ bleibt unverändert.
blocks.getblocks.get(blockId: string): EditorData['blocks'][number] | nullRuft einen Block anhand seiner ID ab. Gibt null zurück, wenn nicht gefunden.
blocks.getAllblocks.getAll(): EditorData['blocks']Gibt die Daten aller Blöcke als Array zurück.
blocks.countblocks.count(): numberGibt die Anzahl der Blöcke im Editor zurück.
focusfocus(): voidBewegt den Fokus in den Editor und fokussiert den ersten Block.
blurblur(): voidEntfernt jeden aktiven Fokus innerhalb des Editors.
destroydestroy(): voidDie Methode destroy() auf dem EditorAPI-Objekt ruft Editor.destroy() für diese Instanz auf.
selection.getselection.get(): Selection | nullGibt das Auswahlobjekt des Fensters oder null zurück.
selection.setselection.set(selection: Selection): voidSetzt die Fensterauswahl auf das bereitgestellte Selection-Objekt.
selection.clearselection.clear(): voidEntfernt alle Bereiche aus der Fensterauswahl.
ui.showBlockMenuui.showBlockMenu(block: HTMLElement): voidZeigt das Blocktyp-Menü für das angegebene Block-DOM-Element an.
ui.hideBlockMenuui.hideBlockMenu(): voidVersteckt das Blocktyp-Menü, wenn es geöffnet ist.
ui.showToolbarui.showToolbar(x: number, y: number): voidZeigt die Inline-Symbolleiste an den angegebenen x-, y-Anzeigebereich-Koordinaten an.
ui.hideToolbarui.hideToolbar(): voidVersteckt die Inline-Symbolleiste, wenn sie sichtbar ist.
view.getCurrentViewview.getCurrentView(containerId: string): EditorView | nullGibt die aktuelle Ansicht (edit, preview oder json) für die angegebene containerId zurück.
view.switchViewview.switchView(containerId: string, view: EditorView): voidSchaltet den Editor auf eine bestimmte Ansicht um: edit, preview oder json.

Typisches Verwendungsbeispiel

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

Eine Klasse, die gespeicherte Blockdaten in schreibgeschütztes HTML innerhalb eines DOM-Elements umwandelt. Diese Klasse hat eine öffentliche statische Methode: render().

MethodeSignaturBeschreibung
Renderer.renderRenderer.render(config: RendererConfig): HTMLElementRendern Sie gespeichertes Block-JSON als schreibgeschütztes HTML in einen Container. Verwenden Sie dies überall dort, wo Sie Inhalte ohne Bearbeitungsmöglichkeiten anzeigen möchten.

Typisches Verwendungsbeispiel

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

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

StyleManager

Eine zentrale Klasse, die das Theme-System verwaltet. Sie bietet drei nützliche öffentliche statische Methoden für Verbraucher: subscribe (für OS-Themen-Änderungen), getResolvedTheme (zum Lesen des aktuellen OS-Themas) und injectStyles (zum Einfügen von benutzerdefiniertem CSS).

MethodeSignaturBeschreibung
StyleManager.subscribeStyleManager.subscribe(cb: (theme: 'light' | 'dark') => void): () => voidAbonnieren Sie Änderungen von Theme-Tokens zur Laufzeit. Der Listener wird ausgelöst, wenn theme oder themeOverrides sich ändern.
StyleManager.getResolvedThemeStyleManager.getResolvedTheme(): 'light' | 'dark'Liest das aktuelle OS-Theme ("light" oder "dark"). Gibt "light" zurück, wenn matchMedia nicht verfügbar ist.
StyleManager.injectStylesStyleManager.injectStyles(styleId: string, styles: string): booleanFügt eine CSS-Zeichenkette in document.head ein (verwenden Sie eine eindeutige styleId). Gibt false zurück, wenn bereits vorhanden, sonst true.

Typisches Verwendungsbeispiel

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();