Referensi API
Ekspor publik dari @clepit/core. Setiap simbol di bawah menyediakan tanda tangan bertipe dan contoh penggunaan minimal.
Editor
Kelas editor inti. Editor memiliki dua metode statis publik: create (pabrik utama) dan destroy. Metode create() mengembalikan objek EditorAPI yang melaluinya semua metode instance dapat diakses setelah editor dipasang.
| Metode | Tanda tangan | Deskripsi |
|---|---|---|
| Editor.create | Editor.create(config: EditorConfig): EditorAPI | Buat instance editor baru dan pasang ke elemen DOM dengan containerId yang diberikan. |
| Editor.destroy | Editor.destroy(containerId: string): void | Metode destroy() pada objek EditorAPI memanggil Editor.destroy() untuk instance ini. |
| Metode | Tanda tangan | Deskripsi |
|---|---|---|
| data.extract | data.extract(): EditorData | Ekstrak data blok saat ini dari instance editor sebagai EditorData yang aman untuk JSON. |
| data.set | data.set(data: EditorData): void | Ganti seluruh daftar blok dengan muatan data baru. Memicu render ulang penuh. |
| data.clear | data.clear(): void | Menghapus konten blok dan data status yang tersimpan. |
| data.clearContent | data.clearContent(): void | Menghapus blok saja, membiarkan data store tetap utuh. |
| data.clearStorage | data.clearStorage(): void | Menghapus data store saja, membiarkan blok saat ini tidak berubah. |
| blocks.insert | blocks.insert<T extends BlockToolType>(type: T, data: Block<T>['data'], index: number): HTMLElement | null | Sisipkan blok pada index yang diberikan. Menerima bentuk data yang sama dengan tipe blok target. |
| blocks.convert | blocks.convert(blockId: string, newType: BlockToolType): void | Konversi sebuah blok ke tipe baru di tempat. |
| blocks.remove | blocks.remove(index: number): void | Hapus blok pada index yang diberikan. |
| blocks.move | blocks.move(fromIndex: number, toIndex: number): void | Memindahkan blok dari satu indeks ke indeks lain. |
| blocks.update | blocks.update<T extends BlockToolType>(blockId: string, data: Block<T>['data']): void | Memperbarui data blok yang ada di tempat. Tipe tidak berubah. |
| blocks.get | blocks.get(blockId: string): EditorData['blocks'][number] | null | Mengambil blok berdasarkan ID-nya. Mengembalikan null jika tidak ditemukan. |
| blocks.getAll | blocks.getAll(): EditorData['blocks'] | Mengembalikan data semua blok sebagai array. |
| blocks.count | blocks.count(): number | Mengembalikan jumlah blok di editor. |
| focus | focus(): void | Memindahkan fokus ke editor, memfokuskan blok pertama. |
| blur | blur(): void | Menghapus fokus aktif apa pun dari dalam editor. |
| destroy | destroy(): void | Metode destroy() pada objek EditorAPI memanggil Editor.destroy() untuk instance ini. |
| selection.get | selection.get(): Selection | null | Mengembalikan objek seleksi jendela atau null. |
| selection.set | selection.set(selection: Selection): void | Menetapkan seleksi jendela ke objek Selection yang diberikan. |
| selection.clear | selection.clear(): void | Menghapus semua rentang dari seleksi jendela. |
| ui.showBlockMenu | ui.showBlockMenu(block: HTMLElement): void | Menampilkan menu tipe blok untuk elemen DOM blok yang diberikan. |
| ui.hideBlockMenu | ui.hideBlockMenu(): void | Menyembunyikan menu tipe blok jika terbuka. |
| ui.showToolbar | ui.showToolbar(x: number, y: number): void | Menampilkan toolbar inline pada koordinat viewport x, y yang diberikan. |
| ui.hideToolbar | ui.hideToolbar(): void | Menyembunyikan toolbar inline jika terlihat. |
| view.getCurrentView | view.getCurrentView(containerId: string): EditorView | null | Mengembalikan tampilan saat ini (edit, preview, atau json) untuk containerId yang diberikan. |
| view.switchView | view.switchView(containerId: string, view: EditorView): void | Mengalihkan editor ke tampilan yang ditentukan: edit, preview, atau json. |
Contoh penggunaan umum
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
Kelas yang mengubah data blok tersimpan menjadi HTML hanya-baca di dalam elemen DOM. Kelas ini memiliki satu metode statis publik: render().
| Metode | Tanda tangan | Deskripsi |
|---|---|---|
| Renderer.render | Renderer.render(config: RendererConfig): HTMLElement | Render JSON blok tersimpan ke dalam kontainer sebagai HTML hanya-baca. Gunakan ini di mana pun Anda ingin menampilkan konten tanpa kemampuan pengeditan. |
Contoh penggunaan umum
TypeScript
import { Renderer } from '@clepit/core';
Renderer.render({
containerId: 'output',
data,
theme: 'auto',
margins: { bottom: 12, top: 0 },
});StyleManager
Kelas terpusat yang mengelola sistem tema. Menyediakan tiga metode statis publik yang berguna bagi konsumen: subscribe (untuk perubahan tema tingkat OS), getResolvedTheme (untuk membaca tema OS saat ini), dan injectStyles (untuk menyuntikkan CSS kustom).
| Metode | Tanda tangan | Deskripsi |
|---|---|---|
| StyleManager.subscribe | StyleManager.subscribe(cb: (theme: 'light' | 'dark') => void): () => void | Berlangganan perubahan token tema runtime. Listener terpicu setiap kali theme atau themeOverrides berubah. |
| StyleManager.getResolvedTheme | StyleManager.getResolvedTheme(): 'light' | 'dark' | Membaca tema OS saat ini ("light" atau "dark"). Mengembalikan "light" jika matchMedia tidak tersedia. |
| StyleManager.injectStyles | StyleManager.injectStyles(styleId: string, styles: string): boolean | Menyuntikkan string CSS ke document.head (gunakan styleId unik). Mengembalikan false jika sudah ada, true jika belum. |
Contoh penggunaan umum
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();