कॉन्फ़िगरेशन
EditorConfig और RendererConfig प्रत्येक कस्टमाइज़ेशन के प्रवेश बिंदु हैं। इन्हें क्रमशः Editor.create() या Renderer.render() को पास करें। केवल containerId (और renderer के लिए data) आवश्यक है, अन्य सभी विकल्पों के सुरक्षित डिफ़ॉल्ट हैं।
EditorConfig
EditorConfig को Editor.create() का एकमात्र आर्गुमेंट के रूप में पास करें। आवश्यक containerId एक मौजूदा DOM एलिमेंट id से मेल खाना चाहिए।
| विकल्प | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| containerId | string | हाँ | DOM एलिमेंट का ID जो एडिटर को होस्ट करेगा। Editor.create() को कॉल करने से पहले DOM में मौजूद होना चाहिए। |
| maxHeight | number | नहीं | एडिटर की अधिकतम ऊंचाई पिक्सेल में। ऊंचाई सीमा न रखने के लिए 0 (डिफ़ॉल्ट) सेट करें। |
| minHeight | number | नहीं | एडिटर की न्यूनतम ऊंचाई पिक्सेल में। डिफ़ॉल्ट 300 है। |
| onChange | (data: EditorData) => void | नहीं | जब भी दस्तावेज़ बदलता है तब फायर होने वाला कॉलबैक। पूर्ण EditorData स्नैपशॉट प्राप्त करता है। |
| onReady | () => void | नहीं | एडिटर पूरी तरह से इनिशियलाइज़ होकर API कॉल स्वीकार करने के लिए तैयार होने पर फायर होने वाला कॉलबैक। |
| placeholder | string | नहीं | एडिटर खाली होने पर दिखाया जाने वाला प्लेसहोल्डर टेक्स्ट। डिफ़ॉल्ट 'Start writing...' है। |
| initialData | EditorData | नहीं | एडिटर माउंट होने पर लोड करने के लिए पहले से भरे गए EditorData। |
| initialView | 'edit' | 'preview' | 'json' | नहीं | प्रारंभिक व्यू मोड। इनमें से एक: edit, preview, json। डिफ़ॉल्ट 'edit' है। |
| allowJsonViewEditing | boolean | नहीं | जब true हो, JSON व्यू संपादन योग्य हो जाता है और परिवर्तन दस्तावेज़ में वापस प्रसारित होते हैं। डिफ़ॉल्ट false है। |
| margins | BlockMargins | नहीं | प्रत्येक ब्लॉक पर लागू वैश्विक ऊपरी और निचला मार्जिन (पिक्सेल में)। प्रति-ब्लॉक कॉन्फ़िग को प्राथमिकता मिलती है। |
| styles | EditorStyles | नहीं | एडिटर क्रोम (टूलबार, डायलॉग, कंट्रोल) के सूक्ष्म CSS कस्टमाइज़ेशन के लिए EditorStyles ऑब्जेक्ट। |
| classNames | EditorClassNames | नहीं | एडिटर क्रोम एलिमेंट्स में CSS क्लास नाम संलग्न करने के लिए EditorClassNames ऑब्जेक्ट। |
| imageUploader | UploadFunction | नहीं | एसिंक्रोनस फ़ंक्शन जो इमेज फ़ाइल अपलोड करता है और एक पब्लिक URL स्ट्रिंग लौटाता है। |
| audioUploader | UploadFunction | नहीं | एसिंक्रोनस फ़ंक्शन जो ऑडियो फ़ाइल अपलोड करता है और एक पब्लिक URL स्ट्रिंग लौटाता है। |
| videoUploader | UploadFunction | नहीं | एसिंक्रोनस फ़ंक्शन जो वीडियो फ़ाइल अपलोड करता है और एक पब्लिक 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 दोनों आवश्यक हैं।
| विकल्प | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
| containerId | string | हाँ | DOM एलिमेंट का ID जहाँ रेंडर किया गया आउटपुट इंजेक्ट किया जाएगा। |
| data | EditorData | हाँ | रेंडर करने के लिए EditorData दस्तावेज़। आवश्यक। |
| margins | BlockMargins | नहीं | प्रत्येक रेंडर किए गए ब्लॉक पर लागू वैश्विक ऊपरी और निचला मार्जिन (पिक्सेल में)। |
| styles | BlockStyles | नहीं | रेंडर किए गए आउटपुट के प्रति-ब्लॉक-टाइप CSS कस्टमाइज़ेशन के लिए BlockStyles मैप। |
| classNames | BlockClassNames | नहीं | रेंडर किए गए आउटपुट पर प्रति-ब्लॉक-टाइप CSS क्लास नाम के लिए BlockClassNames मैप। |
| editorClassNames | EditorClassNames | नहीं | EditorClassNames जो इंटरेक्टिव कम्पोनेंट रेंडर करने वाले ब्लॉकों को पास किए जाते हैं (जैसे पैराग्राफ के लिए tooltip classNames)। |
| configs | Partial<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,
});