Lumaktaw sa pangunahing nilalaman

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.

OpsyonUriKinakailanganPaglalarawan
containerIdstringOoID ng DOM element na mag-ho-host ng editor. Dapat mayroon na sa DOM bago tawagin ang Editor.create().
maxHeightnumberHindiPinakamataas na taas ng editor sa pixels. Itakda sa 0 (ang default) para walang limitasyon sa taas.
minHeightnumberHindiPinakamababang taas ng editor sa pixels. Naka-default sa 300.
onChange(data: EditorData) => voidHindiCallback na nagpapaputok sa tuwing nagbabago ang dokumento. Tumatanggap ng buong EditorData snapshot.
onReady() => voidHindiCallback na nagpapaputok kapag ganap nang na-initialize ang editor at handa nang tumanggap ng mga API call.
placeholderstringHindiPlaceholder na teksto na ipinapakita kapag walang laman ang editor. Naka-default sa 'Start writing...'.
initialDataEditorDataHindiPre-populated na EditorData na ilo-load kapag nag-mount ang editor.
initialView'edit' | 'preview' | 'json'HindiPanimulang view mode. Isa sa: edit, preview, json. Naka-default sa 'edit'.
allowJsonViewEditingbooleanHindiKapag true, maaaring i-edit ang JSON view at ang mga pagbabago ay nagpapalipat pabalik sa dokumento. Naka-default sa false.
hasViewSwitcherbooleanHindiKapag false, inaalis sa action bar ang mga button na edit, preview at JSON. Naka-default sa true.
hasDocumentActionsbooleanHindiKapag 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>HindiTinatawag 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.
marginsBlockMarginsHindiPandaigdigang itaas at ibabang margin (sa pixels) na inilalapat sa bawat block. Ang mga per-block na config ay may priyoridad.
stylesEditorStylesHindiEditorStyles object para sa detalyadong CSS customisasyon ng editor chrome (mga toolbar, dialog, kontrol).
classNamesEditorClassNamesHindiEditorClassNames object para mag-attach ng mga CSS class name sa mga editor chrome element.
imageUploaderUploadFunctionHindiAsync function na nag-a-upload ng image file at nagbabalik ng public URL string.
audioUploaderUploadFunctionHindiAsync function na nag-a-upload ng audio file at nagbabalik ng public URL string.
videoUploaderUploadFunctionHindiAsync function na nag-a-upload ng video file at nagbabalik ng public URL string.
fileUploaderUploadFunctionHindiUpload function na naglilipat ng mga attachment ng file block sa iyong storage.
localestringHindiAng nag-iisang locale na ine-edit ng editor. Ang mga multilingual na block ay fine-flatten sa locale na ito.
defaultLocalestringHindiFallback na locale kapag walang content ang block para sa hiniling na locale.
onLocaleFallback(info: { blockId: string; locale: string }) => voidHindiTinatawag kapag bumagsak ang block sa ibang locale, para makapagpakita ang host ng indicator.
onInlineRewrite(selection: string, action: InlineRewriteAction) => Promise<string | null>HindiFunction na nagre-rewrite ng napiling teksto gamit ang AI; kapag nakatakda, ipinapakita ng toolbar ang rewrite button.
inlineRewriteLabelsPartial<Record<InlineRewriteAction, string>>HindiIno-override ang mga label ng aksyon sa rewrite menu, para sa lokalisasyon.
inlineRewriteTooltipstringHindiIno-override ang tooltip ng rewrite wand sa inline toolbar, para sa lokalisasyon.
blockToolLabelsPartial<Record<BlockToolType, string>>HindiIno-override ang mga label ng block tool sa toolbox at slash menu, para sa lokalisasyon.
blockToolbarLabelsPartial<Record<BlockToolbarLabel, string>>HindiIno-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.
controlLabelsPartial<Record<ControlLabel, string>>HindiIno-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.
dialogLabelsPartial<Record<DialogLabel, string>>HindiAng 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>>HindiPinupuno 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) => voidHindiAng 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.
disabledEmbedProvidersreadonly string[]HindiAng 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'HindiAng ginagawa ng pag-paste ng sinusuportahang link: ipakita nang live (ang default), mag-alok, o magpakita ng card.
embedLabelsPartial<Record<EmbedLabel, string>>HindiMga 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>>HindiSinasagot 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) => voidHindiAng 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'HindiKung 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 }HindiAng dalawang chip switch ng miyembro: ang status pill at ang assignee. Pareho nakabukas kung wala.
issueLabelsPartial<Record<IssueLabel, string>>HindiMga isinaling salita para sa issue chip, card at Linked issues table, naka-key sa IssueLabel; English fallback kung wala.
jiraSitesreadonly string[]HindiAng mga URL ng Jira site na naaabot ng mga koneksyon ng workspace, para makilala bilang issue ang link sa sariling domain ng site.
allowedBlockToolsreadonly BlockToolType[]HindiAng 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.
allowedInlineToolsreadonly InlineToolType[]HindiAng mga mark na inaalok ng inline toolbar. Bawat rehistradong mark kapag wala.
theme'auto' | 'light' | 'dark'HindiKulay na scheme. Isa sa: auto (sumusunod sa system), light, dark. Naka-default sa auto.
themeOverrides{ light?: ThemeTokens; dark?: ThemeTokens }HindiPer-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.
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

Ipasa ang RendererConfig bilang nag-iisang argumento sa Renderer.render(). Parehong containerId at data ang kinakailangan.

OpsyonUriKinakailanganPaglalarawan
containerIdstringOoID ng DOM element kung saan iniinjeksyon ang rendered output.
dataEditorDataOoAng EditorData document na ire-render. Kinakailangan.
marginsBlockMarginsHindiPandaigdigang itaas at ibabang margin (sa pixels) na inilalapat sa bawat rendered na block.
stylesBlockStylesHindiBlockStyles map para sa per-block-type na CSS customisasyon ng rendered output.
classNamesBlockClassNamesHindiBlockClassNames map para sa per-block-type na CSS class name sa rendered output.
editorClassNamesEditorClassNamesHindiEditorClassNames na ipinasa sa mga block na nag-rerender ng mga interactive na component (hal. tooltip classNames para sa mga talata).
configsPartial<BlockTypeOutputConfigs>HindiPartial 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'HindiKulay na scheme. Isa sa: auto, light, dark.
themeOverrides{ light?: ThemeTokens; dark?: ThemeTokens }HindiPer-mode na token overrides para sa rendered output.
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 },
});

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.

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,
});