ወደ ዋናው ይዘት ዝለል

የAPI ማጣቀሻ

ከ@clepit/core የሚገኙ ይፋዊ ኤክስፖርቶች። ከታች ያለ እያንዳንዱ ምልክት የተተየበ ፊርማ እና አነስተኛ የአጠቃቀም ምሳሌ ያቀርባል።

Editor

ዋናው የአርታኢ ክፍል ነው። Editor.create() ሁለት የህዝብ static ዘዴዎችን ይዟል፦ create (ዋናው ፋብሪካ) እና destroy። create() ዘዴ EditorAPI ዕቃን ይመልሳል፣ አርታኢው ከተሸጠ በኋላ ሁሉም ዘዴዎች ሊደርሱ ይችላሉ።

ዘዴፊርማመግለጫ
Editor.createEditor.create(config: EditorConfig): EditorAPIአዲስ የአርታኢ ምሳሌ ይፍጠሩ እና በተሰጠው containerId ካለው የDOM ኤለመንት ውስጥ ይጫኑት።
Editor.destroyEditor.destroy(containerId: string): voidየ EditorAPI ዕቃ destroy() ዘዴ ለዚህ ምሳሌ Editor.destroy() ይደውላል።
ዘዴፊርማመግለጫ
data.extractdata.extract(): EditorDataከአርታኢ ምሳሌ የአሁኑን የብሎክ ውሂብ እንደ JSON-ደህንነቱ የተጠበቀ EditorData ያውጡ።
data.setdata.set(data: EditorData): voidሙሉውን የብሎክ ዝርዝር በአዲስ የውሂብ ጭነት ይተኩ። ሙሉ እንደገና-ማቅረብ ያስነሳል።
data.cleardata.clear(): voidየብሎክ ይዘቱን እና የተቀመጠ ሁኔታ ዳታ ሁለቱንም ያጥፋቸዋል።
data.clearContentdata.clearContent(): voidብሎኮቹን ብቻ ያስወግዳል፤ የ store ውስጥ ዳታ ሳይነካ ይቀርላል።
data.clearStoragedata.clearStorage(): voidየ store ውስጥ ዳታ ብቻ ይጥርጋል፤ ዓሁን ያሉ ብሎኮች ሳይነካ ይቀርላሉ።
blocks.insertblocks.insert<T extends BlockToolType>(type: T, data: Block<T>['data'], index: number, id?: string): HTMLElement | nullበተሰጠው index ላይ ብሎክ ያስገቡ። እንደ ዒላማው የብሎክ አይነት ተመሳሳይ የውሂብ ቅርጽ ይቀበላል።
blocks.convertblocks.convert(blockId: string, newType: BlockToolType): voidብሎክን በቦታው ወደ አዲስ አይነት ይለውጡ።
blocks.removeblocks.remove(index: number): voidበተሰጠው index ላይ ያለውን ብሎክ ያስወግዱ።
blocks.moveblocks.move(fromIndex: number, toIndex: number): voidብሎክን ከአንድ index ወደ ሌላ index ያዙዋዝ።
blocks.updateblocks.update<T extends BlockToolType>(blockId: string, data: Block<T>['data']): voidነባር ብሎክ ዳታ በቦታው ያዘምን። ዓይነቱ አይቀየርም።
blocks.getblocks.get(blockId: string): EditorData['blocks'][number] | nullብሎክን በ ID ያምጣ። ካልተገኘ null ይመልሳል።
blocks.getAllblocks.getAll(): EditorData['blocks']ሁሉም ብሎኮች ዳታ ወደ ድርድር ይመልሳል።
blocks.countblocks.count(): numberበአርታኢ ውስጥ ያሉ ብሎኮች ቁጥር ይመልሳል።
focusfocus(): voidወደ አርታኢ ውስጥ ትኩረት ያቅናል፣ ለመጀመሪያ ብሎክ ትኩረት ይሰጣሉ።
blurblur(): voidወደ አርታኢ ውስጥ ምንም ንቁ ትኩረት ካለ ያስወግዳል።
destroydestroy(): voidየ EditorAPI ዕቃ destroy() ዘዴ ለዚህ ምሳሌ Editor.destroy() ይደውላል።
selection.getselection.get(): Selection | nullየዊንዶው ምርጫ ነገር ወይም null ይመልሳል።
selection.setselection.set(selection: Selection): voidየዊንዶው ምርጫ ወደ ሰጡት Selection ነገር ያዘጋጃሉ።
selection.clearselection.clear(): voidየዊንዶው ምርጫ ሁሉ ክልሎቹን ያስወግዳቸዋል።
ui.showBlockMenuui.showBlockMenu(block: HTMLElement): voidለተሰጠ ብሎክ DOM ኤለመንት የብሎክ ዓይነት ምናሌ ያሳያሉ።
ui.hideBlockMenuui.hideBlockMenu(): voidከተከፈተ የብሎክ ዓይነት ምናሌ ይደብቃሉ።
ui.showToolbarui.showToolbar(x: number, y: number): voidኢንላይን ቱልባሩን በተሰጡ x፣ y ቅርፅ አስተባባሪዎች ያሳያሉ።
ui.hideToolbarui.hideToolbar(): voidይዘት-ያለው ቅጣፎ ከተለቀቀ ኢንላይን ቱልባር ይደብቃሉ።
view.getCurrentViewview.getCurrentView(containerId: string): EditorView | nullለተሰጠ containerId የሚሰራ ዓሁን ያለ view (edit፣ preview፣ ወይም json) ይመልሳል።
view.switchViewview.switchView(containerId: string, view: EditorView): voidምርጦቹን view ወደ edit፣ preview፣ ወይም json ይቀይሩ።

የተለመደ አጠቃቀም

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

የተቀመጠ ብሎክ ዳታን ወደ DOM ኤለመንት ውስጥ እንደ ለንባብ-ብቻ HTML የሚቀይር ክፍል ነው። ለዚህ ክፍል አንድ ብቸኛ የህዝብ static ዘዴ አለ፦ render()።

ዘዴፊርማመግለጫ
Renderer.renderRenderer.render(config: RendererConfig): HTMLElementየተቀመጠ የብሎክ JSON ን ወደ መያዣ እንደ ለንባብ-ብቻ HTML ያቅርቡ። ይዘትን ያለ የአርታኢ ምቹነቶች ለማሳየት በሚፈልጉበት ቦታ ሁሉ ይህን ይጠቀሙ።

የተለመደ አጠቃቀም

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

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

የአገልጋይ ማሳያ

እነዚህ ተግባራት ያለ DOM እና ያለ አሳሽ ይሰራሉ፦ ዝግጁ የ HTML ሕብረቁምፊዎችን ይሳላሉ፣ ስለዚህ በ Node፣ በ edge ማስኬጃዎች እና በአገልጋይ ክፍሎች ውስጥ ይሰራሉ። በ React ውስጥ @clepit/react እንደ ClepitContent ያጠቃልላቸዋል።

ዘዴፊርማመግለጫ
renderBlocksrenderBlocks(blocks: Block[], context?: DrawContext): stringሰነድን ወደ ዝግጁ የ HTML ሕብረቁምፊ ይሳላል፣ DOM ሳያስፈልግ።
renderPagerenderPage(page: PublicPage, context?: DrawContext): stringለሰነድ ሙሉ የሕዝብ HTML ገጽ ይሳላል፦ ምልክት፣ ስታይል ሉህ፣ ሜታዳታ እና በመልህቅ የሚጓዙ የብሎክ መታወቂያዎች።
pageStylesheetpageStylesheet(): stringለስታቲክ የተሳለ ምልክት ስታይል ሉህን ይመልሳል፣ ከ renderBlocks ውጤት አጠገብ ለማቅረብ ወይም ለማካተት።
activateBlocksactivateBlocks(container: HTMLElement, blocks: readonly Block[]): () => voidከመጫን በኋላ በአገልጋይ በተሳለ ምልክት ውስጥ በይነተገናኝ ባህሪያትን ያገናኛል (የኮድ ትሮች፣ የቅዳ አዝራሮች፣ የ openapi ምላሽ ትሮች፣ የሰንጠረዥ CSV ማውረድ) እና አስወጋጅ ይመልሳል።
drawBlockdrawBlock(block: Block, backing: Backing, context?: DrawContext): ClepitElement | nullአንድን ብሎክ በ backing ላይ ይሳላል፤ በ string backing ሙሉ በሙሉ ያለ DOM ይሳላል።
tokensToLightDarkBlocktokensToLightDarkBlock(light: ThemeTokens, dark: ThemeTokens, selector: string): stringየብርሃንና የጨለማ ThemeTokens ጥንድን ለመራጭ ወደ light-dark() የ CSS ተለዋዋጭ ብሎክ ይለውጣል፣ ስታቲክ ምልክትን ያለ ቀጥታ 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

የቲም ስርዓቱን የሚያስተዳድር ማዕከላዊ ክፍል ነው። ለሸማቾች ሦስት ጠቃሚ የህዝብ static ዘዴዎችን ያቀርባል፦ subscribe (ለ OS-ደረጃ ቲም ለውጦች)፣ getResolvedTheme (አሁን ያለውን OS ቲም ለማወቅ) እና injectStyles (ብጁ CSS ለማስወተት)።

ዘዴፊርማመግለጫ
StyleManager.subscribeStyleManager.subscribe(cb: (theme: 'light' | 'dark') => void): () => voidለሩጫ-ጊዜ የገጽታ token ለውጦች ይመዝገቡ። theme ወይም themeOverrides በተቀየረ ቁጥር listener ይተኮሳል።
StyleManager.getResolvedThemeStyleManager.getResolvedTheme(): 'light' | 'dark'አሁን ያለ OS ቲም ያነሳሉ ("light" ወይም "dark")። matchMedia ካልተገኘ "light" ነው ሚመልስ።
StyleManager.injectStylesStyleManager.injectStyles(styleId: string, styles: string): booleanየCSS ሃረን ወደ document.head ያስወቁታሉ (ሲአሌ ዩናክ styleId ይጠቀሙ)። ቀደም ሲል ካለ false ይመልሳሉ፣ ካልሆነ true ይመልሳሉ።

የተለመደ አጠቃቀም

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();