التضمين
دمج محرر Clepit أو أداة العرض في أي تطبيق أمر بسيط: حاوية DOM هي وحدة التحكم الكاملة.
تركيب المحرر
أعطِ عنصر الحاوية معرِّفًا، استدعِ `Editor.create({ containerId, ... })`، احتفظ بـ `EditorAPI` المُعاد، واستخدم `Editor.destroy(containerId)` عند التنظيف.
import { Editor } from '@clepit/core';
import type { EditorAPI } from '@clepit/core';
// 1. Give your container a stable id
// <div id="my-editor"></div>
// 2. Create the editor and hold the returned API
const editor: EditorAPI = Editor.create({
containerId: 'my-editor',
minHeight: 400,
placeholder: 'Start writing...',
theme: 'auto',
onChange: data => console.log(data),
onReady: () => console.log('Editor ready'),
});
// 3. Extract content any time
const data = editor.data.extract();
// 4. Destroy on teardown (e.g. component unmount)
Editor.destroy('my-editor');عرض المخرجات للقراءة فقط
استدعِ `Renderer.render({ containerId, data })`. يوضح المثال أدناه نمط React الفعلي من مكوِّن `DocsRenderer`: يُنشئ `useId` معرِّف حاوية فريدًا ويُشغِّل `useEffect` عملية الرسم.
import { Renderer } from '@clepit/core';
import type { EditorData } from '@clepit/core';
import { useEffect, useId } from 'react';
type Props = { content: EditorData };
const ReadOnlyView = ({ content }: Props) => {
// useId produces a stable, unique id per component instance
const containerId = useId().replace(/[^a-z0-9]/gi, '');
useEffect(() => {
Renderer.render({
containerId,
data: content,
margins: { bottom: 0, top: 0 },
});
}, [containerId, content]);
return <div id={containerId} />;
};التشغيل في جانب العميل فقط / SSR
يعمل كل من المحرر والمُصيِّر على DOM، لذا يعملان فقط في المتصفح: استخدم التأثيرات (`useEffect`) أو توجيه `'use client'`. لا يعملان أثناء التصيير من جانب الخادم.
مستقل عن الإطار
حزمة @clepit/core الأساسية هي TypeScript خالصة، لا توجد تبعية على React. سواء استخدمت React أو Vue أو Svelte أو Angular أو TypeScript/JavaScript بسيطًا، جميعها تستخدم نفس الواجهة البرمجية.