মূল ধারণাসমূহ
ব্লক মডেল
EditorData-র কেন্দ্রবিন্দু হলো blocks অ্যারে: Block অবজেক্টগুলো যা ক্রম ধরে রাখে। প্রতিটি Block তার ধরন (type), ধরন-নির্দিষ্ট ডেটা (data), এবং ঐচ্ছিক tunes মেটাডেটা ধারণ করে।
| ফিল্ড | ধরন | বিবরণ |
|---|---|---|
| id | string | undefined | ঐচ্ছিক অনন্য শনাক্তকারী, editor দ্বারা তৈরির সময় বরাদ্দ করা হয়। |
| type | BlockToolType | লিটারেল কী যা ব্লককে তার স্কিমা, ইনপুট কম্পোনেন্ট এবং রেন্ডারারের সাথে সংযুক্ত করে। |
| data | object | টাইপ-নির্দিষ্ট ডেটা অবজেক্ট: প্রতিটি block type-এর জন্য আকার ভিন্ন। |
| tunes | BlockTunes | undefined | ঐচ্ছিক ক্রস-টাইপ tune মেটাডেটা ডিকশনারি। কী হলো tune নাম এবং মান হলো মুক্ত-ফর্ম ডেটা। |
{
"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." }
}
]
}ব্লক টুল বনাম ইনলাইন টুল
ব্লক টুলগুলো EditorData-র ভেতরে সরাসরি স্বতন্ত্র স্লট তৈরি করে। ইনলাইন টুলগুলো ব্লকের html পেলোডের ভেতরে টেক্সট সাজায়। দুটি স্তর সম্পূর্ণ আলাদা। এগুলো বিনিময়যোগ্য নয়।
JSON-প্রথম আউটপুট
এডিটর কখনো HTML সঞ্চয় করে না। যখন আপনি editor.data.extract() কল করেন, তখন আপনি EditorData-র বিশুদ্ধ JSON পাবেন: মিডিয়া URL সহ সমস্ত কিছু। এই JSON ডেটাবেজে সংরক্ষণ, পার্সোনালাইজ বা অন্য ফরম্যাটে রূপান্তর করা যেতে পারে।
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 বনাম Renderer
ব্লক tunes
Tunes হলো যেকোনো ব্লক টাইপের জন্য একটি টাইপ-অ্যাগনস্টিক মেটাডেটা স্লট। কী হলো সিস্টেম বা প্লাগইন দ্বারা নির্ধারিত tune নাম এবং মান BlockTuneData-তে টাইপ করা হয়: string, number, boolean বা null-এর যেকোনো সমন্বয়। Tunes মূল ডেটা না ভেঙেই অর্থ যোগ করতে পারে।
{
"id": "abc123",
"type": "paragraph",
"data": { "html": "Some text." },
"tunes": {
"textAlign": { "alignment": "center" },
"visibility": { "hidden": false }
}
}