मुख्य सामग्री पर जाएँ

कॉन्फ़िगरेशन

EditorConfig और RendererConfig प्रत्येक कस्टमाइज़ेशन के प्रवेश बिंदु हैं। इन्हें क्रमशः Editor.create() या Renderer.render() को पास करें। केवल containerId (और renderer के लिए data) आवश्यक है, अन्य सभी विकल्पों के सुरक्षित डिफ़ॉल्ट हैं।

EditorConfig

EditorConfig को Editor.create() का एकमात्र आर्गुमेंट के रूप में पास करें। आवश्यक containerId एक मौजूदा DOM एलिमेंट id से मेल खाना चाहिए।

विकल्पप्रकारआवश्यकविवरण
containerIdstringहाँDOM एलिमेंट का ID जो एडिटर को होस्ट करेगा। Editor.create() को कॉल करने से पहले DOM में मौजूद होना चाहिए।
maxHeightnumberनहींएडिटर की अधिकतम ऊंचाई पिक्सेल में। ऊंचाई सीमा न रखने के लिए 0 (डिफ़ॉल्ट) सेट करें।
minHeightnumberनहींएडिटर की न्यूनतम ऊंचाई पिक्सेल में। डिफ़ॉल्ट 300 है।
onChange(data: EditorData) => voidनहींजब भी दस्तावेज़ बदलता है तब फायर होने वाला कॉलबैक। पूर्ण EditorData स्नैपशॉट प्राप्त करता है।
onReady() => voidनहींएडिटर पूरी तरह से इनिशियलाइज़ होकर API कॉल स्वीकार करने के लिए तैयार होने पर फायर होने वाला कॉलबैक।
placeholderstringनहींएडिटर खाली होने पर दिखाया जाने वाला प्लेसहोल्डर टेक्स्ट। डिफ़ॉल्ट 'Start writing...' है।
initialDataEditorDataनहींएडिटर माउंट होने पर लोड करने के लिए पहले से भरे गए EditorData।
initialView'edit' | 'preview' | 'json'नहींप्रारंभिक व्यू मोड। इनमें से एक: edit, preview, json। डिफ़ॉल्ट 'edit' है।
allowJsonViewEditingbooleanनहींजब true हो, JSON व्यू संपादन योग्य हो जाता है और परिवर्तन दस्तावेज़ में वापस प्रसारित होते हैं। डिफ़ॉल्ट false है।
hasViewSwitcherbooleanनहींजब false हो, एक्शन बार से संपादन, पूर्वावलोकन और JSON बटन हटा दिए जाते हैं। डिफ़ॉल्ट true है।
hasDocumentActionsbooleanनहींजब false हो, एक्शन बार से कॉपी, डाउनलोड और साफ़ करने के बटन हटा दिए जाते हैं। hasViewSwitcher भी false हो तो एक्शन बार नहीं बनता। डिफ़ॉल्ट true है।
onClearRequest() => Promise<boolean>नहींसाफ़ करें दबाने पर बुलाया जाता है। पेज तभी साफ़ होता है जब यह true लौटाए; अस्वीकार होने पर पेज वैसा ही रहता है। न होने पर तुरंत साफ़ हो जाता है।
marginsBlockMarginsनहींप्रत्येक ब्लॉक पर लागू वैश्विक ऊपरी और निचला मार्जिन (पिक्सेल में)। प्रति-ब्लॉक कॉन्फ़िग को प्राथमिकता मिलती है।
stylesEditorStylesनहींएडिटर क्रोम (टूलबार, डायलॉग, कंट्रोल) के सूक्ष्म CSS कस्टमाइज़ेशन के लिए EditorStyles ऑब्जेक्ट।
classNamesEditorClassNamesनहींएडिटर क्रोम एलिमेंट्स में CSS क्लास नाम संलग्न करने के लिए EditorClassNames ऑब्जेक्ट।
imageUploaderUploadFunctionनहींएसिंक्रोनस फ़ंक्शन जो इमेज फ़ाइल अपलोड करता है और एक पब्लिक URL स्ट्रिंग लौटाता है।
audioUploaderUploadFunctionनहींएसिंक्रोनस फ़ंक्शन जो ऑडियो फ़ाइल अपलोड करता है और एक पब्लिक URL स्ट्रिंग लौटाता है।
videoUploaderUploadFunctionनहींएसिंक्रोनस फ़ंक्शन जो वीडियो फ़ाइल अपलोड करता है और एक पब्लिक URL स्ट्रिंग लौटाता है।
fileUploaderUploadFunctionनहींअपलोड फ़ंक्शन जो फ़ाइल ब्लॉक अटैचमेंट आपके स्टोरेज में भेजता है।
localestringनहींवह एकल लोकेल जिसे एडिटर संपादित करता है। बहुभाषी ब्लॉक इसी लोकेल में समतल होते हैं।
defaultLocalestringनहींफ़ॉलबैक लोकेल, जब ब्लॉक में अनुरोधित लोकेल की सामग्री न हो।
onLocaleFallback(info: { blockId: string; locale: string }) => voidनहींजब कोई ब्लॉक दूसरे लोकेल पर गिरता है तब कॉल होता है, ताकि होस्ट संकेतक दिखा सके।
onInlineRewrite(selection: string, action: InlineRewriteAction) => Promise<string | null>नहींवह फ़ंक्शन जो चयनित टेक्स्ट को AI से फिर लिखता है; सेट होने पर टूलबार रीराइट बटन दिखाता है।
inlineRewriteLabelsPartial<Record<InlineRewriteAction, string>>नहींरीराइट मेनू की क्रियाओं के लेबल बदलता है, स्थानीयकरण के लिए।
inlineRewriteTooltipstringनहींइनलाइन टूलबार में रीराइट वैंड का टूलटिप बदलता है, स्थानीयकरण के लिए।
blockToolLabelsPartial<Record<BlockToolType, string>>नहींटूलबॉक्स और स्लैश मेनू में ब्लॉक टूल लेबल बदलता है, स्थानीयकरण के लिए।
blockToolbarLabelsPartial<Record<BlockToolbarLabel, string>>नहींब्लॉक टूलबार के पाठ (जोड़ें, हिलाएँ, हटाएँ आदि) और खाली ब्लॉक फ़ील्ड में दिखने वाले संकेत बदलता है, स्थानीयकरण के लिए।
controlLabelsPartial<Record<ControlLabel, string>>नहींएक्शन बार के बटनों के नाम (संपादन, पूर्वावलोकन, JSON, कॉपी, डाउनलोड, साफ़ करें) बदलता है, जो उनके सुलभ नाम और टूलटिप के रूप में उपयोग होते हैं, स्थानीयकरण के लिए।
dialogLabelsPartial<Record<DialogLabel, string>>नहींलिंक, टूलटिप और स्थिति संवादों में दिखने वाले शब्द, नाम के अनुसार: शीर्षक, फ़ील्ड लेबल, प्लेसहोल्डर, स्थिति की शैलियाँ, रद्द करें और लागू करें। न होने पर अंग्रेज़ी में।
resolveLink(url: string) => Promise<Partial<EmbedData>>नहींपेस्ट किए गए एम्बेड का स्नैपशॉट आपके सर्वर से भरता है: शीर्षक, Drive फ़ाइल, gist फ़ाइलें या लाइव व्यू संभव न होने का कारण। विफल लुकअप कार्ड को "टूल ने जवाब नहीं दिया" के रूप में दिखाता है, साथ में फिर से कोशिश करें।
onEmbedAction(action: EmbedAction, blockId: string) => voidनहींकार्ड के कारण के पास वह समाधान जो केवल होस्ट कर सकता है: connectGoogle सदस्य को Google खाता कनेक्ट करने भेजता है; retry एडिटर स्वयं संभालता है।
disabledEmbedProvidersreadonly string[]नहींवर्कस्पेस द्वारा बंद किए गए एम्बेड टूल, वायर कुंजी के अनुसार (figma, miro, loom, google_drive, github_gist); उनके लिंक कारण बताने वाले कार्ड के रूप में दिखते हैं।
pasteEmbeds'live' | 'offer' | 'card'नहींसमर्थित लिंक पेस्ट करने पर क्या होता है: लाइव दिखाएँ (डिफ़ॉल्ट), विकल्प दें, या कार्ड दिखाएँ।
embedLabelsPartial<Record<EmbedLabel, string>>नहींएम्बेड ब्लॉक की कारण पंक्तियों, क्रियाओं और gist लेबल के अनूदित शब्द, EmbedLabel कुंजी से; अन्यथा अंग्रेज़ी फ़ॉलबैक।
resolveIssues(urls: string[]) => Promise<Record<string, IssueSnapshot>>नहींकिसी पेज के इश्यू लिंक का उत्तर उनके स्नैपशॉट से देता है, URL कुंजी से। न होने पर चिप और कार्ड दस्तावेज़ में संग्रहीत स्थिति रखते हैं और कुछ रिफ़्रेश नहीं होता।
onIssueAction(action: IssueAction, tool: string) => voidनहींइश्यू के कारण के बगल का वह समाधान जो केवल होस्ट कर सकता है: टूल को कनेक्ट करना, जो होस्ट के Integrations पेज पर ले जाता है।
issueCards'off' | 'on'नहींअपनी ही पंक्ति में पेस्ट किया गया इश्यू लिंक कार्ड बने या नहीं; न होने पर off। वाक्य में चिप हमेशा चिप ही रहता है।
issueChip{ assignee: boolean; status: boolean }नहींसदस्य के दो चिप स्विच: स्थिति पिल और ज़िम्मेदार। न होने पर दोनों चालू।
issueLabelsPartial<Record<IssueLabel, string>>नहींइश्यू चिप, कार्ड और लिंक किए गए इश्यू की तालिका के अनूदित शब्द, IssueLabel कुंजी से; अन्यथा अंग्रेज़ी फ़ॉलबैक।
jiraSitesreadonly string[]नहींवर्कस्पेस के कनेक्शन जिन Jira साइटों तक पहुँचते हैं उनके URL, ताकि साइट के अपने डोमेन का लिंक इश्यू के रूप में पहचाना जाए।
allowedBlockToolsreadonly BlockToolType[]नहींवे ब्लॉक प्रकार जो एडिटर ब्लॉक मेनू, उसकी खोज, कन्वर्ट मेनू और पेस्ट पर देता है। न होने पर हर पंजीकृत ब्लॉक; सूची से बाहर संग्रहीत ब्लॉक फिर भी रेंडर होता है।
allowedInlineToolsreadonly InlineToolType[]नहींवे मार्क जो इनलाइन टूलबार देता है। न होने पर हर पंजीकृत मार्क।
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 दोनों आवश्यक हैं।

विकल्पप्रकारआवश्यकविवरण
containerIdstringहाँDOM एलिमेंट का ID जहाँ रेंडर किया गया आउटपुट इंजेक्ट किया जाएगा।
dataEditorDataहाँरेंडर करने के लिए EditorData दस्तावेज़। आवश्यक।
marginsBlockMarginsनहींप्रत्येक रेंडर किए गए ब्लॉक पर लागू वैश्विक ऊपरी और निचला मार्जिन (पिक्सेल में)।
stylesBlockStylesनहींरेंडर किए गए आउटपुट के प्रति-ब्लॉक-टाइप CSS कस्टमाइज़ेशन के लिए BlockStyles मैप।
classNamesBlockClassNamesनहींरेंडर किए गए आउटपुट पर प्रति-ब्लॉक-टाइप CSS क्लास नाम के लिए BlockClassNames मैप।
editorClassNamesEditorClassNamesनहींEditorClassNames जो इंटरेक्टिव कम्पोनेंट रेंडर करने वाले ब्लॉकों को पास किए जाते हैं (जैसे पैराग्राफ के लिए tooltip classNames)।
configsPartial<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,
});