এম্বেডিং
Clepit এডিটর বা রেন্ডারার যেকোনো অ্যাপে একত্রিত করা সহজ: একটি DOM কন্টেইনারই সম্পূর্ণ নিয়ন্ত্রণ করে।
এডিটর মাউন্ট করা
কন্টেইনার এলিমেন্টে একটি id দিন, `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 })` কল করুন। নিচের উদাহরণটি `DocsRenderer` কম্পোনেন্ট থেকে সরাসরি React প্যাটার্ন দেখায়: `useId` একটি অনন্য কন্টেইনার id তৈরি করে এবং `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-এ কাজ করে, তাই শুধুমাত্র ব্রাউজারে চলে: effects (`useEffect`) বা `'use client'` ডিরেক্টিভ ব্যবহার করুন। SSR-এর সময় এগুলো কাজ করে না।
ফ্রেমওয়ার্ক-অজ্ঞাপনিক
মূল @clepit/core প্যাকেজটি সরাসরি TypeScript, React-এর কোনো নির্ভরতা নেই। React, Vue, Svelte, Angular বা vanilla TS/JS যাই হোক, সবাই একই API ব্যবহার করে।