Öffentliche API
Was @dopejs/pingo exportiert, ist der öffentliche Vertrag. Interne Pakete (@dopejs/pingo-host und weitere) sagen keine Stabilität zu, und der Migrationsscanner verhindert, dass eine Anwendung direkt von ihnen abhängt.
Der Schnappschuss ist der Vertrag
Die öffentliche Oberfläche ist in benchmarks/api/facade.v1.d.ts festgeschrieben. Jede Signaturänderung erfordert eine ausdrückliche Aktualisierung dieses Schnappschusses samt Review; pnpm api:check schlägt bei Abweichung fehl.
Root und Host
createHostedCanvasRoot(canvas, options?): Promise<HostedCanvasRoot>
createCanvasRoot(context, core, options?): DoperRoot // M1-Pfad im Hauptthread
createWasmCore(width, height, input?): Promise<CoreClient>Methoden von HostedCanvasRoot:
| Methode | Beschreibung |
|---|---|
render(node) | Committet einen Frame des Komponentenbaums |
close() | Schließt Root, Worker und Core |
mode | Tatsächlicher Transport: sab / post-message / main-thread |
beginScroll / scrollBy / endScroll / cancelScroll | Direkte Scroll-Manipulation |
focusEditable / blurEditable | Startet oder beendet die native Bearbeitungssitzung |
updateEditingGeometry | IME-Geometrie manuell setzen (normalerweise automatisch) |
transportMetrics() / inputTransportMetrics() | Schnappschuss von Transport und Gegendruck |
Gängige Optionen: onFrame, onHostError, onEditTransaction, onEventTransaction, onSemantics, onNonPassiveRegions, transport, rasterCache, accessibility, nativeTextInputMode.
Elemente und JSX
createElement(type, props, key?): DoperElement
FragmentHost-Elemente: container, text, scroll, virtualList, editableText. Typen: CommonProps, ContainerProps, TextProps, ScrollProps, VirtualListProps, EditableTextProps, EditableInputMode, Color, EdgeInsets, NodeHandle, Ref, DoperNode, FunctionComponent.
Die JSX-Runtime steht über @dopejs/pingo/jsx-runtime und @dopejs/pingo/jsx-dev-runtime bereit.
Reaktivität und Hooks
(signal, computed, effect, batch, untracked);
(useState, useSignal, useMemo, useCallback, useRef, useEffect);Typen: Signal, ReadonlySignal, RefObject, Unsubscribe.
Bearbeitung
TextEditingController;
useTextEditingController(options);Typen: EditTransaction, EditingGeometry, EditingSelection, NativeTextInputMode.
Widgets
TextField(props): DoperNode
TextArea(props): DoperNodeBarrierefreiheit
SemanticTreeMirror
getByRole(root, role, { name? }): HTMLElement
queryAllByRole(root, role, { name? }): HTMLElement[]Typen: SemanticNode, SemanticMirrorNode, SemanticTreeMirrorOptions.
Schriften
createFont(options): DoperFont
loadFont(source, options?): Promise<DoperFont>Unterstützt TTF / OTF / TTC / WOFF / WOFF2 (der WOFF2-Decoder wird bei Bedarf nachgeladen). Typen: DoperFontSource, DoperFontOptions, DoperFontLoadOptions, DoperFontLoadError, DoperFontLoadErrorCode, Woff2Decoder.
Veröffentlichung und Diagnose
ENGINE_VERSION: string
ENGINE_ABI_VERSION: number
engineIdentity(): { version, abiVersion }
verifyWasmIntegrity(bytes, manifest): Promise<void>WasmIntegrityError wird geworfen, wenn ein selbst gehostetes WASM nicht zum Build-Manifest passt. Siehe Diagnose.
Migrationsgrenze
@dopejs/pingo-compat ist ein eigenständiges Grenzpaket und stellt mountCompatPage für seitenweises Ausrollen und Zurücknehmen bereit. Details im Migrationsleitfaden.