عن المشروع

ICERender (مُصيّر ندفة الثلج) هو محرك رندر رسومي تفاعلي Canvas 2D مخصص لسيناريوهات تحرير المخططات، حيث يتم تحديده في ملف README كطبقة رندر أساسية لمحررات مخططات ER، ومخططات التدفق، والمخططات الطبولوجية. المشروع مكتوب بلغة TypeScript، وتوفر حزمة النشر تنسيقات ESM وCJS وUMD، مع الاعتماد فقط على gl-matrix في وقت التشغيل. القدرات الرئيسية: - نموذج المكونات: مستوحى من React، حيث يفرق بين props غير القابلة للتغيير وstate القابلة للتغيير، ويعتمد على طريقة القالب render() ونظام وراثة الفئات؛ ويدعم ICEGroup التداخل اللانهائي لتشكيل شجرة مكونات. - نظام الإحداثيات والتحويلات: يعتمد على اتفاقية mat2d لمتجهات الأعمدة من gl-matrix، ويدعم الإزاحة، والقياس، والتدوير، والقص (shear)؛ حيث تدمج المكونات الفرعية تحويلات الأسلاف تلقائياً، ويوفر تحويلات ثنائية الاتجاه localToGlobal/globalToLocal. - الأحداث والتفاعل: تنفيذ نظام أحداث مشابه لـ W3C (on/off/once/trigger وأسماء مستعارة)، ويدعم أحداث الماوس ولوحة المفاتيح، والسحب، والتحديد بالإطار، والتحديد المتعدد، بالإضافة إلى مقابض التدوير والقياس بعد التحديد. - خطوط الربط: يوفر خطوط ربط بأسلوب Visio، حيث يمكن لنقاط النهاية الالتصاق بخمس فتحات (أعلى، يمين، أسفل، يسار، مركز) في المكونات لإنشاء علاقات ربط بينها. - التسلسل والرسوم المتحركة: يمكن تسلسل شجرة المكونات إلى سلسلة JSON وإعادة بنائها دون فقدان للبيانات، ويتم تسجيل المكونات المخصصة للاستمرارية عبر registerType()؛ وتكون إعدادات الرسوم المتحركة مشابهة لـ CSS keyframes، مع توفير تخميدات مدمجة مثل linear وease-in وease-out. - الأداء والهندسة: يذكر README استخدام نموذج علامات الاتساخ (dirty marking) وإعادة الرسم الكامل، بالتزامن مع ذاكرة تخزين مؤقت لطابور الرندر وتخصيص صفري للمصفوفات. أظهر اختبار bench/render.cjs أن إعادة الرسم الساكن لـ 5000 عنصر تستغرق حوالي 0.8 مللي ثانية/إطار (تكلفة منطق JS للمحرك فقط، بدون rasterization). تشمل الهندسة 46 اختبار وحدة Jest، واختبارات تراجع مرئية golden-image عبر Playwright، وeslint، وGitHub Actions CI ووثائق التصميم المعماري. - الأمثلة والوثائق: يوفر docs/architecture/ شروحات تصميمية حول مسار وقت التشغيل، ونموذج المكونات، والإحداثيات والمصفوفات، وأداء الرندر، والأحداث، والتسلسل، والرسوم المتحركة التفاعلية، وتوافق أوقات التشغيل المتعددة؛ كما يوفر examples/ 49 مثالاً للمتصفح. فيما يتعلق بالتطوير الثانوي، يوضح README باستخدام مكون الربط في ice-entity-designer أنه يمكن توسيع العناصر الرسومية المخصصة عن طريق وراثة فئات المحرك مثل ICEVisioLink. يعد ice-entity-designer مصمماً لمخططات ER يعتمد على ICERender، وقد تم تطبيقه بالفعل في مشروع low-code المسمى craft-codeless-designer. الترخيص هو MIT.