Lewati ke konten utama

Konfigurasi

EditorConfig dan RendererConfig adalah titik masuk untuk setiap kustomisasi. Berikan salah satunya ke Editor.create() atau Renderer.render() masing-masing. Hanya containerId (dan data untuk renderer) yang diperlukan, semua opsi lainnya memiliki nilai default yang aman.

EditorConfig

Berikan EditorConfig sebagai satu-satunya argumen ke Editor.create(). containerId yang diperlukan harus cocok dengan id elemen DOM yang sudah ada.

OpsiTipeDiperlukanDeskripsi
containerIdstringYaID elemen DOM yang akan menampung editor. Harus ada di DOM sebelum Editor.create() dipanggil.
maxHeightnumberTidakTinggi maksimum editor dalam piksel. Atur ke 0 (default) untuk tidak ada batas tinggi.
minHeightnumberTidakTinggi minimum editor dalam piksel. Default-nya 300.
onChange(data: EditorData) => voidTidakCallback yang dipicu setiap kali dokumen berubah. Menerima snapshot EditorData lengkap.
onReady() => voidTidakCallback yang dipicu setelah editor sepenuhnya diinisialisasi dan siap menerima panggilan API.
placeholderstringTidakTeks placeholder yang ditampilkan saat editor kosong. Default-nya 'Start writing...'.
initialDataEditorDataTidakEditorData yang sudah terisi sebelumnya untuk dimuat saat editor di-mount.
initialView'edit' | 'preview' | 'json'TidakMode tampilan awal. Salah satu dari: edit, preview, json. Default-nya 'edit'.
allowJsonViewEditingbooleanTidakJika true, tampilan JSON dapat diedit dan perubahan menyebar kembali ke dokumen. Default-nya false.
marginsBlockMarginsTidakMargin atas dan bawah global (dalam piksel) yang diterapkan ke setiap blok. Konfigurasi per-blok lebih diutamakan.
stylesEditorStylesTidakObjek EditorStyles untuk kustomisasi CSS yang detail dari chrome editor (toolbar, dialog, kontrol).
classNamesEditorClassNamesTidakObjek EditorClassNames untuk melampirkan nama kelas CSS ke elemen chrome editor.
imageUploaderUploadFunctionTidakFungsi async yang mengunggah file gambar dan mengembalikan string URL publik.
audioUploaderUploadFunctionTidakFungsi async yang mengunggah file audio dan mengembalikan string URL publik.
videoUploaderUploadFunctionTidakFungsi async yang mengunggah file video dan mengembalikan string URL publik.
theme'auto' | 'light' | 'dark'TidakSkema warna. Salah satu dari: auto (mengikuti sistem), light, dark. Default-nya auto.
themeOverrides{ light?: ThemeTokens; dark?: ThemeTokens }TidakOverride token per mode. Sediakan peta token light dan/atau dark untuk menyesuaikan warna tanpa mengganti tema lengkap.
TypeScript
import { Editor } from '@clepit/core';

const editor = Editor.create({
  containerId: 'editor',
  minHeight: 400,
  placeholder: 'Start writing...',
  theme: 'auto',
  onChange: data => console.log(data),
  onReady: () => console.log('Editor ready'),
  imageUploader: async file => {
    const form = new FormData();
    form.append('file', file);
    const res = await fetch('/api/upload', { body: form, method: 'POST' });
    const { url } = await res.json();
    return url;
  },
});

RendererConfig

Berikan RendererConfig sebagai satu-satunya argumen ke Renderer.render(). Baik containerId maupun data diperlukan.

OpsiTipeDiperlukanDeskripsi
containerIdstringYaID elemen DOM tempat output yang dirender akan disuntikkan.
dataEditorDataYaDokumen EditorData yang akan dirender. Diperlukan.
marginsBlockMarginsTidakMargin atas dan bawah global (dalam piksel) yang diterapkan ke setiap blok yang dirender.
stylesBlockStylesTidakPeta BlockStyles untuk kustomisasi CSS per-jenis-blok dari output yang dirender.
classNamesBlockClassNamesTidakPeta BlockClassNames untuk nama kelas CSS per-jenis-blok pada output yang dirender.
editorClassNamesEditorClassNamesTidakEditorClassNames yang diteruskan ke blok yang merender komponen interaktif (mis. classNames tooltip untuk paragraf).
configsPartial<BlockTypeOutputConfigs>TidakPeta parsial objek OutputConfig per blok. Setiap entri dapat menetapkan margin tingkat blok dan nama kelas tooltip.
theme'auto' | 'light' | 'dark'TidakSkema warna. Salah satu dari: auto, light, dark.
themeOverrides{ light?: ThemeTokens; dark?: ThemeTokens }TidakOverride token per mode untuk output yang dirender.
TypeScript
import { Renderer } from '@clepit/core';
import type { EditorData } from '@clepit/core';

const data: EditorData = await fetch('/api/content/123').then(r => r.json());

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

Styling tingkat blok

Baik EditorConfig maupun RendererConfig menerima styles, classNames, dan configs yang diberi kunci berdasarkan jenis blok. Gunakan ini untuk penggantian yang ditargetkan; lihat halaman Themes untuk referensi per-token lengkap.

TypeScript
import { Editor, Renderer } from '@clepit/core';
import type { BlockStyles, BlockClassNames, EditorStyles } from '@clepit/core';

const editorStyles: EditorStyles = {
  blockToolbar: { container: { borderRadius: '8px' } },
};

const blockStyles: BlockStyles = {
  header: { h1: { fontFamily: 'Georgia, serif' } },
  paragraph: { lineHeight: '1.75' },
  table: { cell: { padding: '8px 12px' } },
};

const blockClassNames: BlockClassNames = {
  paragraph: 'prose-paragraph',
  header: { h1: 'prose-h1', h2: 'prose-h2' },
  alert: { info: 'alert-info', error: 'alert-error' },
};

Editor.create({
  containerId: 'editor',
  styles: editorStyles,
});

Renderer.render({
  containerId: 'output',
  data,
  styles: blockStyles,
  classNames: blockClassNames,
});