تحذير
سيخضع هذا المستودع لتغييرات كبيرة ، لذلك سنعلق قبول PRS.
اقرأ المزيد: #9045
يجب على الأشخاص الجادين حقًا في المحرر أن يصنعوا إطارهم الخاص.
Blocksuite هي مجموعة أدوات لبناء المحررين والتطبيقات التعاونية. وهو ينفذ سلسلة من البنى التحتية لتحرير المحتوى ومكونات واجهة المستخدم والمحررين بشكل مستقل.
يمكنك النظر في Blocksuite كمكتبة مكونات واجهة المستخدم لبناء العديد من المحررين ، استنادًا إلى إطار عمل الفانيليا الصحيح مثل وقت التشغيل. مع blocksuite ، يمكنك:
PageEditor : محرر مستندات شامل قائم على كتلة ، يقدم تخصيصًا ومرونة شاملة.EdgelessEditor : محرر رسومات مع دعم لتقديم Canvas ، ولكنه يشارك أيضًا نفس إمكانيات النص الغني مع PageEditor .؟ تقع Blocksuite حاليًا في مرحلتها المبكرة ، حيث لا تزال المكونات وقدرات التمديد تحت التنقيح. آمل أن تتمكن من البقاء على ضبطها أو تجربتها أو مشاركة ملاحظاتك!
نشأت Blocksuite من قاعدة المعرفة Affine ، مع أهداف التصميم بما في ذلك:
أثناء تطوير Affine ، أصبح من الواضح أن Locksuite كان يتقدم إلى ما وراء مجرد كونه محررًا داخليًا ويتطور إلى إطار متعدد الاستخدامات. لهذا السبب اخترنا فتح المصدر والحفاظ على blocksuite بشكل مستقل.
مع محرري Blocksuite ، يمكنك إعادة استخدام جميع ميزات التحرير بشكل انتقائي في Affine:

وتحت الغطاء ، يدعم إطار عمل الفانيليا:
لتجربة blocksuite ، راجع مثال البداية السريعة وابدأ مع المحررين المسبق في @blocksuite/presets .
تشبه العلاقة بين blocksuite و Affine تلك بين محرر Monaco و VSCODE ، ولكن مع اختلاف رئيسي واحد: لا يتم إنشاء blocksuite تلقائيًا استنادًا إلى قاعدة كود Affine ، ولكن يتم الحفاظ عليها بشكل مستقل مع مجموعة تقنية مختلفة - تستخدم Affine React بينما تستخدم Blocksite مراهنات الويب.
لقد أدى هذا الاختلاف إلى LED LODSUITE لتعيين حدود واضحة بناءً على فلسفة تتمحور حول المكون ، مما يضمن:
تحقيقًا لهذه الغاية ، يتم تنظيم مشروع blocksuite حول الحزم الرئيسية التي يتم تصنيفها إلى مجموعتين: إطار عمل مقطوع الرأس ومكونات التحرير المسبقة.
| نطاق | |
|---|---|
@blocksuite/store | طبقة البيانات لنمذجة حالات المستندات التعاونية. تم تصميمه أصليًا على مكتبة CRDT YJS ، حيث يعمل على تشغيل جميع مستندات Blocksuite مع إمكانيات التعاون في الوقت الفعلي المدمج وقدرات السفر عبر الزمن. |
@blocksuite/inline | الحد الأدنى من مكونات النص الغنية للتحرير المضمّن. يسمح BlockSuite بربط محتوى النص الغني في عقد كتلة مختلفة في محررين مختلفين مضمنين ، مما يجعل المحتوى المعقد قابلاً للتأليف بشكل مناسب. هذا يقلل بشكل كبير من التعقيد المطلوب لتنفيذ ميزات تحرير النصية الغنية التقليدية. |
@blocksuite/block-std | مكتبة إطار عمل لاذعة لنمذجة الكتل القابلة للتحرير. تغطي قدراتها بنية حقول الكتلة والأحداث والاختيار ودعم الحافظة ، إلخ. |
| عناصر | |
|---|---|
@blocksuite/blocks | تطبيقات الكتلة الافتراضية لتأليف المحررين مسبقًا ، بما في ذلك الحاجيات التي تنتمي إلى كل كتلة. |
@blocksuite/presets | المكونات القابلة للتحرير المكونات والتشغيل بما في ذلك المحررين ( PageEditor / EdgelessEditor ) ومكونات واجهة المستخدم الإضافية المسمى شظايا ( CopilotPanel ، DocTitle ...). |
انظر Building.md للحصول على تعليمات حول كيفية بناء واختبار الكتل من المصدر.
تقبل BlockSuite طلبات السحب على Github. قبل البدء في المساهمة ، يرجى التأكد من أنك قد قرأت اتفاقية ترخيص المساهم وقبلتها. للإشارة إلى اتفاقك ، ما عليك سوى تحرير هذا الملف وإرسال طلب سحب.
MPL 2.0