تخطَّ إلى المحتوى الرئيسي

الإعداد

EditorConfig وRendererConfig هما نقطتا الدخول لكل تخصيص. مرر أيًا منهما إلى Editor.create() أو Renderer.render() على التوالي. containerId فقط (وdata للـ Renderer) مطلوبان، وباقي الخيارات لها قيم افتراضية آمنة.

EditorConfig

مرر EditorConfig كوسيط وحيد إلى Editor.create(). يجب أن يتطابق containerId المطلوب مع معرف عنصر DOM موجود مسبقًا.

الخيارالنوعمطلوبالوصف
containerIdstringنعممعرف عنصر DOM الذي سيستضيف المحرر. يجب أن يكون موجودًا في DOM قبل استدعاء Editor.create().
maxHeightnumberلاالارتفاع الأقصى للمحرر بالبكسل. اضبط على 0 (الافتراضي) لعدم وضع حد أقصى للارتفاع.
minHeightnumberلاالارتفاع الأدنى للمحرر بالبكسل. الافتراضي هو 300.
onChange(data: EditorData) => voidلادالة رد نداء تُطلق عند كل تغيير في المستند. تستقبل لقطة كاملة من EditorData.
onReady() => voidلادالة رد نداء تُطلق بمجرد اكتمال تهيئة المحرر واستعداده لاستقبال استدعاءات API.
placeholderstringلانص العنصر النائب المعروض عندما يكون المحرر فارغًا. الافتراضي هو "Start writing...".
initialDataEditorDataلاEditorData محملة مسبقًا لتحميلها عند تركيب المحرر.
initialView'edit' | 'preview' | 'json'لاوضع العرض الأولي. أحد القيم: edit وpreview وjson. الافتراضي هو "edit".
allowJsonViewEditingbooleanلاعند الضبط على true، يصبح عرض JSON قابلًا للتحرير وتنتشر التغييرات مجددًا إلى المستند. الافتراضي false.
marginsBlockMarginsلاالهامش العلوي والسفلي العام (بالبكسل) المطبق على كل كتلة. تأخذ الإعدادات على مستوى الكتلة الأولوية.
stylesEditorStylesلاكائن EditorStyles لتخصيص CSS الدقيق لواجهة المحرر (أشرطة الأدوات والحوارات والعناصر التفاعلية).
classNamesEditorClassNamesلاكائن EditorClassNames لإرفاق أسماء فئات CSS بعناصر واجهة المحرر.
imageUploaderUploadFunctionلادالة غير متزامنة تُحمّل ملف صورة وتُعيد سلسلة URL عامة.
audioUploaderUploadFunctionلادالة غير متزامنة تُحمّل ملف صوت وتُعيد سلسلة URL عامة.
videoUploaderUploadFunctionلادالة غير متزامنة تُحمّل ملف فيديو وتُعيد سلسلة URL عامة.
theme'auto' | 'light' | 'dark'لانظام الألوان. أحد القيم: auto (يتبع النظام)، light، dark. الافتراضي هو auto.
themeOverrides{ light?: ThemeTokens; dark?: ThemeTokens }لاتجاوزات الرمز المميز لكل وضع. قدّم خرائط رموز light و/أو dark لتخصيص الألوان دون استبدال الثيم الكامل.
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

مرر RendererConfig كوسيط وحيد إلى Renderer.render(). كلٌّ من containerId وdata مطلوبان.

الخيارالنوعمطلوبالوصف
containerIdstringنعممعرف عنصر DOM حيث سيتم حقن الناتج المُصيَّر.
dataEditorDataنعممستند EditorData المراد تصييره. مطلوب.
marginsBlockMarginsلاالهامش العلوي والسفلي العام (بالبكسل) المطبق على كل كتلة مُصيَّرة.
stylesBlockStylesلاخريطة BlockStyles لتخصيص CSS لكل نوع كتلة في الناتج المُصيَّر.
classNamesBlockClassNamesلاخريطة BlockClassNames لأسماء فئات CSS لكل نوع كتلة في الناتج المُصيَّر.
editorClassNamesEditorClassNamesلاEditorClassNames تُمرَّر إلى الكتل التي تُصيِّر مكونات تفاعلية (مثل أسماء فئات tooltip للفقرات).
configsPartial<BlockTypeOutputConfigs>لاخريطة جزئية من كائنات OutputConfig لكل كتلة. يمكن لكل إدخال تعيين هوامش على مستوى الكتلة وأسماء فئات tooltip.
theme'auto' | 'light' | 'dark'لانظام الألوان. أحد القيم: auto وlight وdark.
themeOverrides{ light?: ThemeTokens; dark?: ThemeTokens }لاتجاوزات الرمز المميز لكل وضع للناتج المُصيَّر.
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 },
});

التنسيق على مستوى الكتلة

يقبل كلٌّ من EditorConfig وRendererConfig خصائص styles وclassNames وconfigs مفتاحة حسب نوع الكتلة. استخدمها للتجاوزات المستهدفة؛ راجع صفحة Themes للحصول على مرجع الرمز المميز الكامل لكل كتلة.

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,
});