Pagsasaayos
Ang EditorConfig at RendererConfig ang mga entry point para sa bawat customisasyon. Ipasa ang alinman sa Editor.create() o Renderer.render() ayon sa pagkakasunod. Ang containerId lamang (at data para sa renderer) ang kinakailangan, lahat ng iba pang opsyon ay may ligtas na mga default.
EditorConfig
Ipasa ang EditorConfig bilang nag-iisang argumento sa Editor.create(). Ang kinakailangang containerId ay dapat tumugma sa isang umiiral na DOM element id.
| Opsyon | Uri | Kinakailangan | Paglalarawan |
|---|---|---|---|
| containerId | string | Oo | ID ng DOM element na mag-ho-host ng editor. Dapat mayroon na sa DOM bago tawagin ang Editor.create(). |
| maxHeight | number | Hindi | Pinakamataas na taas ng editor sa pixels. Itakda sa 0 (ang default) para walang limitasyon sa taas. |
| minHeight | number | Hindi | Pinakamababang taas ng editor sa pixels. Naka-default sa 300. |
| onChange | (data: EditorData) => void | Hindi | Callback na nagpapaputok sa tuwing nagbabago ang dokumento. Tumatanggap ng buong EditorData snapshot. |
| onReady | () => void | Hindi | Callback na nagpapaputok kapag ganap nang na-initialize ang editor at handa nang tumanggap ng mga API call. |
| placeholder | string | Hindi | Placeholder na teksto na ipinapakita kapag walang laman ang editor. Naka-default sa 'Start writing...'. |
| initialData | EditorData | Hindi | Pre-populated na EditorData na ilo-load kapag nag-mount ang editor. |
| initialView | 'edit' | 'preview' | 'json' | Hindi | Panimulang view mode. Isa sa: edit, preview, json. Naka-default sa 'edit'. |
| allowJsonViewEditing | boolean | Hindi | Kapag true, maaaring i-edit ang JSON view at ang mga pagbabago ay nagpapalipat pabalik sa dokumento. Naka-default sa false. |
| hasViewSwitcher | boolean | Hindi | Kapag false, inaalis sa action bar ang mga button na edit, preview at JSON. Naka-default sa true. |
| hasDocumentActions | boolean | Hindi | Kapag false, inaalis sa action bar ang mga button na copy, download at clear. Kung false din ang hasViewSwitcher, walang action bar na iginuguhit. Naka-default sa true. |
| onClearRequest | () => Promise<boolean> | Hindi | Tinatawag kapag pinindot ang Clear. Nili-clear lang ang pahina kapag nag-resolve ito sa true; kapag na-reject, nananatili ang pahina. Kung wala, agad itong nili-clear. |
| margins | BlockMargins | Hindi | Pandaigdigang itaas at ibabang margin (sa pixels) na inilalapat sa bawat block. Ang mga per-block na config ay may priyoridad. |
| styles | EditorStyles | Hindi | EditorStyles object para sa detalyadong CSS customisasyon ng editor chrome (mga toolbar, dialog, kontrol). |
| classNames | EditorClassNames | Hindi | EditorClassNames object para mag-attach ng mga CSS class name sa mga editor chrome element. |
| imageUploader | UploadFunction | Hindi | Async function na nag-a-upload ng image file at nagbabalik ng public URL string. |
| audioUploader | UploadFunction | Hindi | Async function na nag-a-upload ng audio file at nagbabalik ng public URL string. |
| videoUploader | UploadFunction | Hindi | Async function na nag-a-upload ng video file at nagbabalik ng public URL string. |
| fileUploader | UploadFunction | Hindi | Upload function na naglilipat ng mga attachment ng file block sa iyong storage. |
| locale | string | Hindi | Ang nag-iisang locale na ine-edit ng editor. Ang mga multilingual na block ay fine-flatten sa locale na ito. |
| defaultLocale | string | Hindi | Fallback na locale kapag walang content ang block para sa hiniling na locale. |
| onLocaleFallback | (info: { blockId: string; locale: string }) => void | Hindi | Tinatawag kapag bumagsak ang block sa ibang locale, para makapagpakita ang host ng indicator. |
| onInlineRewrite | (selection: string, action: InlineRewriteAction) => Promise<string | null> | Hindi | Function na nagre-rewrite ng napiling teksto gamit ang AI; kapag nakatakda, ipinapakita ng toolbar ang rewrite button. |
| inlineRewriteLabels | Partial<Record<InlineRewriteAction, string>> | Hindi | Ino-override ang mga label ng aksyon sa rewrite menu, para sa lokalisasyon. |
| inlineRewriteTooltip | string | Hindi | Ino-override ang tooltip ng rewrite wand sa inline toolbar, para sa lokalisasyon. |
| blockToolLabels | Partial<Record<BlockToolType, string>> | Hindi | Ino-override ang mga label ng block tool sa toolbox at slash menu, para sa lokalisasyon. |
| blockToolbarLabels | Partial<Record<BlockToolbarLabel, string>> | Hindi | Ino-override ang mga teksto ng block toolbar (add, move, delete, at iba pa) at ang mga hint na ipinapakita sa mga walang lamang field ng block, para sa lokalisasyon. |
| controlLabels | Partial<Record<ControlLabel, string>> | Hindi | Ino-override ang mga pangalan ng mga button sa action bar (edit, preview, JSON, copy, download, clear), na ginagamit bilang kanilang accessible name at tooltip, para sa lokalisasyon. |
| dialogLabels | Partial<Record<DialogLabel, string>> | Hindi | Ang mga salitang ipinapakita ng mga dialog ng link, tooltip at status, ayon sa pangalan: mga pamagat, label ng field, placeholder, istilo ng status, Kanselahin at Ilapat. Ingles kapag wala. |
| resolveLink | (url: string) => Promise<Partial<EmbedData>> | Hindi | Pinupuno ang snapshot ng na-paste na embed mula sa iyong server: pamagat, Drive file, mga file ng gist, o ang dahilan kung bakit hindi posible ang live view. Ang lookup na nagtapon ng error ay iginuguhit ang card na hindi sumagot ang tool, na may Subukang muli sa tabi. |
| onEmbedAction | (action: EmbedAction, blockId: string) => void | Hindi | Ang ayos sa tabi ng dahilan ng card na host lang ang makakagawa: ipinapadala ng connectGoogle ang miyembro para ikonekta ang kanyang Google account; ang retry ay hinahawakan ng editor mismo. |
| disabledEmbedProviders | readonly string[] | Hindi | Ang mga embed tool na in-off ng workspace ayon sa wire key (figma, miro, loom, google_drive, github_gist); ang kanilang mga link ay iginuguhit bilang mga card na nagsasabi kung bakit. |
| pasteEmbeds | 'live' | 'offer' | 'card' | Hindi | Ang ginagawa ng pag-paste ng sinusuportahang link: ipakita nang live (ang default), mag-alok, o magpakita ng card. |
| embedLabels | Partial<Record<EmbedLabel, string>> | Hindi | Mga isinaling salita para sa mga linya ng dahilan, aksyon at gist label ng embed block, naka-key sa EmbedLabel; English fallback kung wala. |
| resolveIssues | (urls: string[]) => Promise<Record<string, IssueSnapshot>> | Hindi | Sinasagot ang mga issue link ng page gamit ang kanilang snapshot, naka-key sa URL. Kung wala, pinananatili ng mga chip at card ang iniimbak ng dokumento at walang nire-refresh. |
| onIssueAction | (action: IssueAction, tool: string) => void | Hindi | Ang ayos sa tabi ng dahilan ng issue na host lang ang makakagawa: ang pagkonekta ng tool, na dadalhin sa Integrations page ng host. |
| issueCards | 'off' | 'on' | Hindi | Kung ang issue link na na-paste sa sarili nitong linya ay magiging card; off kung wala. Ang chip sa loob ng pangungusap ay laging chip. |
| issueChip | { assignee: boolean; status: boolean } | Hindi | Ang dalawang chip switch ng miyembro: ang status pill at ang assignee. Pareho nakabukas kung wala. |
| issueLabels | Partial<Record<IssueLabel, string>> | Hindi | Mga isinaling salita para sa issue chip, card at Linked issues table, naka-key sa IssueLabel; English fallback kung wala. |
| jiraSites | readonly string[] | Hindi | Ang mga URL ng Jira site na naaabot ng mga koneksyon ng workspace, para makilala bilang issue ang link sa sariling domain ng site. |
| allowedBlockTools | readonly BlockToolType[] | Hindi | Ang mga uri ng block na inaalok ng editor sa block menu, sa search nito, sa convert menu at sa pag-paste. Bawat rehistradong block kapag wala; nire-render pa rin ang naka-store na block na wala sa listahan. |
| allowedInlineTools | readonly InlineToolType[] | Hindi | Ang mga mark na inaalok ng inline toolbar. Bawat rehistradong mark kapag wala. |
| theme | 'auto' | 'light' | 'dark' | Hindi | Kulay na scheme. Isa sa: auto (sumusunod sa system), light, dark. Naka-default sa auto. |
| themeOverrides | { light?: ThemeTokens; dark?: ThemeTokens } | Hindi | Per-mode na token overrides. Magbigay ng light at/o dark na token map para i-customize ang mga kulay nang hindi pinapalitan ang buong tema. |
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
Ipasa ang RendererConfig bilang nag-iisang argumento sa Renderer.render(). Parehong containerId at data ang kinakailangan.
| Opsyon | Uri | Kinakailangan | Paglalarawan |
|---|---|---|---|
| containerId | string | Oo | ID ng DOM element kung saan iniinjeksyon ang rendered output. |
| data | EditorData | Oo | Ang EditorData document na ire-render. Kinakailangan. |
| margins | BlockMargins | Hindi | Pandaigdigang itaas at ibabang margin (sa pixels) na inilalapat sa bawat rendered na block. |
| styles | BlockStyles | Hindi | BlockStyles map para sa per-block-type na CSS customisasyon ng rendered output. |
| classNames | BlockClassNames | Hindi | BlockClassNames map para sa per-block-type na CSS class name sa rendered output. |
| editorClassNames | EditorClassNames | Hindi | EditorClassNames na ipinasa sa mga block na nag-rerender ng mga interactive na component (hal. tooltip classNames para sa mga talata). |
| configs | Partial<BlockTypeOutputConfigs> | Hindi | Partial na mapa ng per-block na OutputConfig object. Maaaring itakda ng bawat entry ang mga block-level na margin at tooltip class name. |
| theme | 'auto' | 'light' | 'dark' | Hindi | Kulay na scheme. Isa sa: auto, light, dark. |
| themeOverrides | { light?: ThemeTokens; dark?: ThemeTokens } | Hindi | Per-mode na token overrides para sa rendered output. |
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 },
});Block-level na styling
Parehong tinatanggap ng EditorConfig at RendererConfig ang mga styles, classNames, at configs na naka-key ayon sa block type. Gamitin ang mga ito para sa mga targeted na override; tingnan ang pahina ng Themes para sa kumpletong per-token na sanggunian.
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,
});