Skip to content

Pingoمحرّك عرض canvas

نواة Rust/WASM + غلاف TypeScript + خلفية عرض قابلة للاستبدال. مصمَّم للتفاعل عالي الأداء والتمرير الافتراضي الأصلي وتحرير النص داخل canvas.

PingoPingo

البدء خلال ثلاثين ثانية

sh
pnpm add @dopejs/pingo
ts
import { createElement, createHostedCanvasRoot } from "@dopejs/pingo";

const root = await createHostedCanvasRoot(document.querySelector("canvas")!);

root.render(
  createElement("virtualList", {
    width: 480,
    height: 640,
    itemCount: 1_000_000,
    estimatedItemHeight: 32,
    renderItem: (index) => createElement("text", { value: `الصف ${index}` }),
  }),
);

لا يتجسّد المليون صفّ في الغلاف، ولا يستدعي التمرير شجرة المكوّنات؛ فحساب النافذة والملء يجريان داخل النواة.

ما لا يفعله

‏doper محرّك عرض لا متصفّح. فهو لا يغطّي العرض من الخادم ولا أوّل رسم بصيغة HTML، ولا التوافق العام مع CSS (نموذج الصندوق والتتالي والمحدِّدات)، ولا طبقات التكيّف مع البرامج المصغّرة أو المنصّات الأصلية، ولا دلالات النصّ الغني على مستوى العمل (التحرير التشاركي والصيغ وأوامر Markdown).

في المقابل يملك المحرّك فعلًا المؤشّر النصّي والتحديد وIME والحافظة والتراجع والإعادة وبدائيات النصّ القابل للتحرير، ولا يُعاد أيٌّ منها إلى طبقة التطبيق لتلفيقه من عناصر DOM.

الحالة الراهنة

الإصدار v0.1.0. اكتملت جميع مراحل الهندسة من P0 إلى M5، وتمرّ سلسلة البوّابات الآلية pnpm m5:check بالكامل.

أمّا الأداء على الأجهزة الحقيقية وطرق الإدخال الفعلية ومصفوفة قارئات الشاشة فتندرج تحت تأهيل المنصّة وتُتابَع على حدة. والتنقّل البصري في النصّ ثنائي الاتجاه وتفعيل خلفية WebGPU افتراضيًا تأجيلان موثّقان.

لغة الوثائق الهندسية

التصميم التقني وخطة التنفيذ ووثائق ADR متاحة حاليًا بالصينية المبسّطة فقط، وتشير إليها جميع اللغات.

منشور برخصة MIT