واجهة البرمجة العامة
ما تُصدّره @dopejs/pingo هو العقد العلني. أمّا الحزم الداخلية (@dopejs/pingo-host وغيرها) فلا تَعِد بالاستقرار، وماسح الترحيل يمنع التطبيقات من الاعتماد عليها مباشرة.
اللقطة هي العقد
السطح العلني مثبَّت في benchmarks/api/facade.v1.d.ts. وأيّ تغيير في التوقيع يستوجب تحديث تلك اللقطة صراحةً ومراجعتها، ويفشل pnpm api:check عند أيّ انحراف.
الجذر والمضيف
createHostedCanvasRoot(canvas, options?): Promise<HostedCanvasRoot>
createCanvasRoot(context, core, options?): DoperRoot // مسار M1 على الخيط الرئيسي
createWasmCore(width, height, input?): Promise<CoreClient>توابع HostedCanvasRoot:
| التابع | الوصف |
|---|---|
render(node) | يُودِع إطارًا من شجرة المكوّنات |
close() | يغلق الجذر والـ Worker والنواة |
mode | مسار النقل الفعلي: sab / post-message / main-thread |
beginScroll / scrollBy / endScroll / cancelScroll | التحكّم المباشر بالتمرير |
focusEditable / blurEditable | بدء جلسة التحرير الأصلية أو إنهاؤها |
updateEditingGeometry | تزويد هندسة IME يدويًا (تلقائي عادةً) |
transportMetrics() / inputTransportMetrics() | لقطة عن النقل والضغط العكسي |
الخيارات الشائعة: onFrame وonHostError وonEditTransaction وonEventTransaction وonSemantics وonNonPassiveRegions وtransport وrasterCache وaccessibility وnativeTextInputMode.
العناصر وJSX
createElement(type, props, key?): DoperElement
Fragmentعناصر المضيف: container وtext وscroll وvirtualList وeditableText. الأنواع: CommonProps وContainerProps وTextProps وScrollProps وVirtualListProps وEditableTextProps وEditableInputMode وColor وEdgeInsets وNodeHandle وRef وDoperNode وFunctionComponent.
وتُتاح بيئة تشغيل JSX عبر @dopejs/pingo/jsx-runtime و@dopejs/pingo/jsx-dev-runtime.
التفاعلية والخطّافات
(signal, computed, effect, batch, untracked);
(useState, useSignal, useMemo, useCallback, useRef, useEffect);الأنواع: Signal وReadonlySignal وRefObject وUnsubscribe.
التحرير
TextEditingController;
useTextEditingController(options);الأنواع: EditTransaction وEditingGeometry وEditingSelection وNativeTextInputMode.
العناصر الجاهزة
TextField(props): DoperNode
TextArea(props): DoperNodeإمكانية الوصول
SemanticTreeMirror
getByRole(root, role, { name? }): HTMLElement
queryAllByRole(root, role, { name? }): HTMLElement[]الأنواع: SemanticNode وSemanticMirrorNode وSemanticTreeMirrorOptions.
الخطوط
createFont(options): DoperFont
loadFont(source, options?): Promise<DoperFont>مدعومة الصيغ TTF / OTF / TTC / WOFF / WOFF2 (يُحمَّل مفكِّك WOFF2 عند الحاجة). الأنواع: DoperFontSource وDoperFontOptions وDoperFontLoadOptions وDoperFontLoadError وDoperFontLoadErrorCode وWoff2Decoder.
الإصدار والتشخيص
ENGINE_VERSION: string
ENGINE_ABI_VERSION: number
engineIdentity(): { version, abiVersion }
verifyWasmIntegrity(bytes, manifest): Promise<void>يُرمى WasmIntegrityError حين لا يطابق ملفّ WASM المستضاف ذاتيًا بيان البناء. انظر التشخيص.
حدّ الترحيل
@dopejs/pingo-compat حزمة حدّية مستقلّة توفّر mountCompatPage للإطلاق صفحةً صفحة وللعودة. التفاصيل في دليل الترحيل.