Mga pangunahing konsepto
Ang block model
Ang puso ng EditorData ay ang blocks array: mga Block object na nagpapanatili ng pagkakasunod-sunod. Ang bawat Block ay nagtataglay ng uri nito (type), data na tiyak sa uri, at opsyonal na tunes na metadata.
| Field | Uri | Paglalarawan |
|---|---|---|
| id | string | undefined | Opsyonal na natatanging identifier, itinalaga ng editor sa paglikha. |
| type | BlockToolType | Literal na key na nag-uugnay ng block sa schema nito, input component, at renderer. |
| data | object | Type-specific na data object: nag-iiba ang hugis bawat block type. |
| tunes | BlockTunes | undefined | Opsyonal na cross-type tune metadata dictionary. Ang key ay ang pangalan ng tune at ang value ay free-form na data. |
{
"time": 1745000000000,
"version": "1.0.0",
"blocks": [
{
"id": "abc123",
"type": "header",
"data": { "html": "Hello world", "level": "h1" }
},
{
"id": "def456",
"type": "paragraph",
"data": { "html": "This is a <b>rich</b> paragraph." }
}
]
}Mga block tool kumpara sa mga inline tool
Ang mga block tool ay gumagawa ng mga top-level na slot nang direkta sa loob ng EditorData. Ang mga inline tool ay nagpapalamuti ng teksto sa loob ng html payload na naglalaman ang isang block. Ang dalawang layer ay ganap na magkahiwalay. Hindi sila maaaring palitan ng isa't isa.
JSON-first na output
Hindi kailanman nagtitiis ng HTML ang editor. Kapag tinawag mo ang editor.data.extract(), makakakuha ka ng purong EditorData JSON: kumpleto kasama ang mga media URL. Ang JSON na ito ay maaaring itago sa isang database, i-personalize, o i-convert sa ibang mga format.
import { Editor } from '@clepit/core';
const editor = Editor.create({ containerId: 'editor' });
const data = editor.data.extract();
// data: EditorData
// {
// time: 1745000000000,
// version: '1.0.0',
// blocks: [ ... ]
// }Editor kumpara sa Renderer
Mga block tune
Ang mga tunes ay isang type-agnostic na metadata slot para sa anumang block type. Ang key ay ang tune name na itinakda ng system o isang plugin, at ang value ay naka-type sa BlockTuneData: anumang kombinasyon ng string, number, boolean, o null. Ang mga tunes ay maaaring magdagdag ng semantics nang hindi sinisira ang hugis ng pangunahing data.
{
"id": "abc123",
"type": "paragraph",
"data": { "html": "Some text." },
"tunes": {
"textAlign": { "alignment": "center" },
"visibility": { "hidden": false }
}
}