एम्बेडिंग
Clepit एडिटर या रेंडरर को किसी भी एप्लिकेशन में एकीकृत करना सीधा है: एक DOM कंटेनर ही पूरे नियंत्रण का केंद्र है।
एडिटर माउंट करना
Container एलिमेंट को एक 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` एक अनूठी container 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} />;
};हर API कहाँ चलता है
Editor और Renderer लाइव DOM माउंट करते हैं, इसलिए वे केवल ब्राउज़र में चलते हैं: उनके लिए effects या use client निर्देश उपयोग करें। सर्वर आउटपुट को उनकी जरूरत नहीं: renderBlocks बिना किसी DOM के तैयार HTML बनाता है, नीचे देखें।
सर्वर रेंडरिंग
renderBlocks उसी दस्तावेज़ को बिना DOM के तैयार HTML स्ट्रिंग में बनाता है, इसलिए सर्वर असली मार्कअप भेज सकता है: क्रॉलर उसे पढ़ते हैं और माउंट पर कुछ दोबारा पेंट नहीं होता। साथ में pageStylesheet() परोसें, और माउंट के बाद activateBlocks बुलाएँ।
import { activateBlocks, pageStylesheet, renderBlocks } from '@clepit/core';
// On the server: finished HTML, no DOM needed
const html = renderBlocks(doc.blocks);
const css = pageStylesheet();
// In the browser, after mount: wire the interactive blocks
const dispose = activateBlocks(container, doc.blocks);फ्रेमवर्क-अज्ञेयवादी
मुख्य @clepit/core पैकेज सरल TypeScript है, कोई React डिपेंडेंसी नहीं। चाहे आप React, Vue, Svelte, Angular या vanilla TS/JS उपयोग करें, सभी एक ही API का उपयोग करते हैं।