مرجع API
الصادرات العامة من @clepit/core. يوفر كل رمز أدناه توقيعًا مكتوبًا ومثال استخدام بسيط.
Editor
الفئة الأساسية للمحرر. تحتوي Editor على طريقتَين ثابتَتَين عامتَتَين: create (المصنع الرئيسي) وdestroy. تُعيد الطريقة create() كائن EditorAPI، يمكن من خلاله استدعاء جميع الطرق بعد تهيئة المحرر.
| الطريقة | التوقيع | الوصف |
|---|---|---|
| Editor.create | Editor.create(config: EditorConfig): EditorAPI | أنشئ نسخة محرر جديدة وركّبها داخل عنصر DOM ذي المعرّف containerId المُقدَّم. |
| Editor.destroy | Editor.destroy(containerId: string): void | طريقة destroy() على كائن EditorAPI تستدعي Editor.destroy() لهذه النسخة. |
| الطريقة | التوقيع | الوصف |
|---|---|---|
| data.extract | data.extract(): EditorData | استخرج بيانات الكتل الحالية من نسخة محرر كـ EditorData آمن لـ JSON. |
| data.set | data.set(data: EditorData): void | استبدل قائمة الكتل بأكملها بحمولة بيانات جديدة. يؤدي ذلك إلى إعادة تصيير كاملة. |
| data.clear | data.clear(): void | يمسح كلاً من محتوى الكتل وبيانات الحالة المحفوظة. |
| data.clearContent | data.clearContent(): void | يزيل الكتل فقط، تاركًا بيانات المخزن سليمة. |
| data.clearStorage | data.clearStorage(): void | يمسح بيانات المخزن فحسب، تاركًا الكتل الحالية سليمة. |
| blocks.insert | blocks.insert<T extends BlockToolType>(type: T, data: Block<T>['data'], index: number): HTMLElement | null | أدرِج كتلة عند الفهرس المعطى index. يقبل شكل البيانات نفسه الخاص بنوع الكتلة المستهدف. |
| blocks.convert | blocks.convert(blockId: string, newType: BlockToolType): void | حوّل كتلة إلى نوع جديد في مكانها. |
| blocks.remove | blocks.remove(index: number): void | أزل الكتلة عند الفهرس المعطى index. |
| blocks.move | blocks.move(fromIndex: number, toIndex: number): void | ينقل كتلة من فهرس fromIndex إلى فهرس toIndex. |
| blocks.update | blocks.update<T extends BlockToolType>(blockId: string, data: Block<T>['data']): void | يُحدِّث بيانات كتلة موجودة في مكانها. لا يتغير النوع. |
| blocks.get | blocks.get(blockId: string): EditorData['blocks'][number] | null | يجلب كتلة بمعرّفها ID. يُعيد null إذا لم يُعثر عليها. |
| blocks.getAll | blocks.getAll(): EditorData['blocks'] | يُعيد مصفوفة تحتوي على بيانات جميع الكتل. |
| blocks.count | blocks.count(): number | يُعيد عدد الكتل في المحرر. |
| focus | focus(): void | ينقل التركيز إلى المحرر، ويُركِّز على الكتلة الأولى. |
| blur | blur(): void | يُزيل التركيز النشط من أي عنصر داخل المحرر. |
| destroy | destroy(): void | طريقة destroy() على كائن EditorAPI تستدعي Editor.destroy() لهذه النسخة. |
| selection.get | selection.get(): Selection | null | يُعيد كائن تحديد النافذة أو null. |
| selection.set | selection.set(selection: Selection): void | يضبط تحديد النافذة على كائن Selection المُقدَّم. |
| selection.clear | selection.clear(): void | يُزيل جميع نطاقات تحديد النافذة. |
| ui.showBlockMenu | ui.showBlockMenu(block: HTMLElement): void | يعرض قائمة نوع الكتلة لعنصر DOM للكتلة المُعطى. |
| ui.hideBlockMenu | ui.hideBlockMenu(): void | يخفي قائمة نوع الكتلة إذا كانت مفتوحة. |
| ui.showToolbar | ui.showToolbar(x: number, y: number): void | يعرض شريط الأدوات المضمّن في إحداثيات x وy المُقدَّمة. |
| ui.hideToolbar | ui.hideToolbar(): void | يخفي شريط الأدوات المضمّن إذا كان ظاهرًا. |
| view.getCurrentView | view.getCurrentView(containerId: string): EditorView | null | يُعيد العرض الحالي (edit أو preview أو json) لمعرف الحاوية containerId المُعطى. |
| view.switchView | view.switchView(containerId: string, view: EditorView): void | يُبدِّل المحرر إلى view محدد: edit أو preview أو json. |
مثال استخدام نموذجي
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
فئة تُحوِّل بيانات الكتل المحفوظة إلى HTML للقراءة فقط داخل عنصر DOM. تحتوي هذه الفئة على طريقة ثابتة عامة واحدة: render().
| الطريقة | التوقيع | الوصف |
|---|---|---|
| Renderer.render | Renderer.render(config: RendererConfig): HTMLElement | صيِّر JSON الكتل المحفوظ داخل حاوية كـ HTML للقراءة فقط. استخدم هذا في أي مكان تريد فيه عرض المحتوى دون إمكانيات التحرير. |
مثال استخدام نموذجي
TypeScript
import { Renderer } from '@clepit/core';
Renderer.render({
containerId: 'output',
data,
theme: 'auto',
margins: { bottom: 12, top: 0 },
});StyleManager
فئة مركزية تدير نظام السمات. توفر ثلاث طرق ثابتة عامة مفيدة للمستهلكين: subscribe (للتغييرات في السمة على مستوى نظام التشغيل)، وgetResolvedTheme (لمعرفة السمة الحالية لنظام التشغيل)، وinjectStyles (لحقن CSS مخصص).
| الطريقة | التوقيع | الوصف |
|---|---|---|
| StyleManager.subscribe | StyleManager.subscribe(cb: (theme: 'light' | 'dark') => void): () => void | اشترك في تغييرات رموز السمة أثناء التشغيل. يُطلَق المستمع كلما تغيّر theme أو themeOverrides. |
| StyleManager.getResolvedTheme | StyleManager.getResolvedTheme(): 'light' | 'dark' | يقرأ سمة نظام التشغيل الحالية ("light" أو "dark"). يُعيد "light" إذا كانت matchMedia غير متاحة. |
| StyleManager.injectStyles | StyleManager.injectStyles(styleId: string, styles: string): boolean | يُدرج سلسلة CSS في document.head (استخدم styleId فريدًا). يُعيد false إذا كان موجودًا بالفعل، وإلا true. |
مثال استخدام نموذجي
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();