Lumaktaw sa pangunahing nilalaman

API Reference

Mga public export mula sa @clepit/core. Bawat simbolo sa ibaba ay may typed signature at minimal na halimbawa ng paggamit.

Editor

Ang pangunahing editor class. Ang Editor ay may dalawang pampublikong static na pamamaraan: create (ang pangunahing factory) at destroy. Ang paraan ng create() ay nagbabalik ng EditorAPI na object kung saan lahat ng instance method ay accessible pagkatapos i-mount ang editor.

PamamaraanLagdaPaglalarawan
Editor.createEditor.create(config: EditorConfig): EditorAPIGumawa ng bagong editor instance at i-mount ito sa DOM element na may ibinigay na containerId.
Editor.destroyEditor.destroy(containerId: string): voidAng paraan ng destroy() sa EditorAPI object ay tumatawag ng Editor.destroy() para sa instance na ito.
PamamaraanLagdaPaglalarawan
data.extractdata.extract(): EditorDataI-extract ang kasalukuyang block data mula sa isang editor instance bilang JSON-safe na EditorData.
data.setdata.set(data: EditorData): voidPalitan ang buong block list ng bagong data payload. Nagti-trigger ng buong re-render.
data.cleardata.clear(): voidNililinis ang parehong block content at ang na-persist na state data.
data.clearContentdata.clearContent(): voidInaalis lamang ang mga block, naiiwanang buo ang data ng store.
data.clearStoragedata.clearStorage(): voidNililinis lamang ang store data, naiiwanang buo ang kasalukuyang mga block.
blocks.insertblocks.insert<T extends BlockToolType>(type: T, data: Block<T>['data'], index: number, id?: string): HTMLElement | nullMag-insert ng block sa ibinigay na index. Tumatanggap ng parehong data shape gaya ng target na block type.
blocks.convertblocks.convert(blockId: string, newType: BlockToolType): voidI-convert ang isang block sa bagong type in-place.
blocks.removeblocks.remove(index: number): voidAlisin ang block sa ibinigay na index.
blocks.moveblocks.move(fromIndex: number, toIndex: number): voidInililipat ang isang block mula sa isang index papunta sa isa pa.
blocks.updateblocks.update<T extends BlockToolType>(blockId: string, data: Block<T>['data']): voidIna-update ang data ng isang kasalukuyang block in-place. Hindi nagbabago ang type.
blocks.getblocks.get(blockId: string): EditorData['blocks'][number] | nullKumukuha ng isang block sa pamamagitan ng ID nito. Nagbabalik ng null kung hindi natagpuan.
blocks.getAllblocks.getAll(): EditorData['blocks']Ibinabalik ang data ng lahat ng block bilang isang array.
blocks.countblocks.count(): numberIbinabalik ang bilang ng mga block sa editor.
focusfocus(): voidInililipat ang focus sa editor, na nagfo-focus sa unang block.
blurblur(): voidInaalis ang anumang aktibong focus mula sa loob ng editor.
destroydestroy(): voidAng paraan ng destroy() sa EditorAPI object ay tumatawag ng Editor.destroy() para sa instance na ito.
selection.getselection.get(): Selection | nullIbinabalik ang window selection object o null.
selection.setselection.set(selection: Selection): voidItinatakda ang window selection sa ibinigay na Selection object.
selection.clearselection.clear(): voidInaalis ang lahat ng range mula sa window selection.
ui.showBlockMenuui.showBlockMenu(block: HTMLElement): voidIpinapakita ang block type menu para sa ibinigay na block DOM element.
ui.hideBlockMenuui.hideBlockMenu(): voidItinatago ang block type menu kung bukas ito.
ui.showToolbarui.showToolbar(x: number, y: number): voidIpinapakita ang inline toolbar sa ibinigay na x, y viewport coordinates.
ui.hideToolbarui.hideToolbar(): voidItinatago ang inline toolbar kung ito ay nakikita.
view.getCurrentViewview.getCurrentView(containerId: string): EditorView | nullIbinabalik ang kasalukuyang view (edit, preview, o json) para sa ibinigay na containerId.
view.switchViewview.switchView(containerId: string, view: EditorView): voidInililipat ang editor sa isang tinukoy na view: edit, preview, o json.

Tipikal na halimbawa ng paggamit

TypeScript
import { Editor } from '@clepit/core';

const editor = Editor.create({
  containerId: 'editor',
  theme: 'auto',
  placeholder: 'Start writing...',
  minHeight: 300,
});

// Insert a block
editor.blocks.insert('paragraph', { html: 'Hello world' }, 0);

// Extract data
const data = editor.data.extract();

// Switch view
editor.view.switchView('editor', 'preview');

// Tear down
editor.destroy();

Renderer

Isang klase na nagko-convert ng naka-save na block data sa read-only na HTML sa loob ng isang DOM element. Ang klase na ito ay may isang pampublikong static na pamamaraan: render().

PamamaraanLagdaPaglalarawan
Renderer.renderRenderer.render(config: RendererConfig): HTMLElementI-render ang naka-save na block JSON sa isang container bilang read-only na HTML. Gamitin ito saanman gusto mong ipakita ang nilalaman nang walang editing affordances.

Tipikal na halimbawa ng paggamit

TypeScript
import { Renderer } from '@clepit/core';

Renderer.render({
  containerId: 'output',
  data,
  theme: 'auto',
  margins: { bottom: 12, top: 0 },
});

Server rendering

Tumatakbo ang mga function na ito nang walang DOM at walang browser: gumuguhit sila ng tapos na HTML string, kaya gumagana sa Node, edge runtime, at mga server component. Sa React, binabalot sila ng @clepit/react bilang ClepitContent.

PamamaraanLagdaPaglalarawan
renderBlocksrenderBlocks(blocks: Block[], context?: DrawContext): stringGumuguhit ng dokumento sa tapos na HTML string, walang kailangang DOM.
renderPagerenderPage(page: PublicPage, context?: DrawContext): stringGumuguhit ng kumpletong pampublikong HTML page para sa isang dokumento: markup, stylesheet, metadata, at mga block id na nana-navigate sa anchor.
pageStylesheetpageStylesheet(): stringIbinabalik ang stylesheet para sa statically na iginuhit na markup, para ihain o i-inline sa tabi ng renderBlocks output.
activateBlocksactivateBlocks(container: HTMLElement, blocks: readonly Block[]): () => voidIkinakabit ang mga interactive na behavior sa markup na iginuhit ng server pagkatapos ng mount (mga code tab, copy button, openapi response tab, table CSV download) at nagbabalik ng disposer.
drawBlockdrawBlock(block: Block, backing: Backing, context?: DrawContext): ClepitElement | nullGumuguhit ng isang block laban sa isang backing; sa string backing ay gumuguhit ito nang walang anumang DOM.
tokensToLightDarkBlocktokensToLightDarkBlock(light: ThemeTokens, dark: ThemeTokens, selector: string): stringGinagawang light-dark() na CSS variable block para sa isang selector ang pares ng light at dark na ThemeTokens, para sa theming ng static na markup nang walang live na StyleManager.
TypeScript
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);

StyleManager

Isang sentralisadong klase na namamahala sa sistema ng tema. Nagbibigay ng tatlong kapaki-pakinabang na pampublikong static na pamamaraan para sa mga consumer: subscribe (para sa mga pagbabago ng tema sa antas ng OS), getResolvedTheme (para mabasa ang kasalukuyang tema ng OS), at injectStyles (para mag-inject ng custom na CSS).

PamamaraanLagdaPaglalarawan
StyleManager.subscribeStyleManager.subscribe(cb: (theme: 'light' | 'dark') => void): () => voidMag-subscribe sa mga pagbabago ng runtime theme token. Nagfa-fire ang listener tuwing nagbabago ang theme o themeOverrides.
StyleManager.getResolvedThemeStyleManager.getResolvedTheme(): 'light' | 'dark'Binabasa ang kasalukuyang tema ng OS ("light" o "dark"). Nagbabalik ng "light" kung hindi available ang matchMedia.
StyleManager.injectStylesStyleManager.injectStyles(styleId: string, styles: string): booleanNag-inject ng CSS string sa document.head (gumamit ng natatanging styleId). Nagbabalik ng false kung mayroon na, true kung hindi.

Tipikal na halimbawa ng paggamit

TypeScript
import { StyleManager } from '@clepit/core';

// React to OS theme changes
const unsubscribe = StyleManager.subscribe(theme => {
  console.log('OS theme:', theme); // 'light' | 'dark'
});

// Read current OS theme
const current = StyleManager.getResolvedTheme();

// Inject custom CSS once
StyleManager.injectStyles('my-overrides', `
  .clepit-editor { font-family: 'Inter', sans-serif; }
`);

// Unsubscribe when done
unsubscribe();