API pública
Lo que exporta @dopejs/pingo es el contrato público. Los paquetes internos (@dopejs/pingo-host y demás) no prometen estabilidad, y el escáner de migración impide que una aplicación dependa de ellos directamente.
La instantánea es el contrato
La superficie pública está congelada en benchmarks/api/facade.v1.d.ts. Cualquier cambio de firma obliga a actualizar esa instantánea de forma explícita y a revisarla; pnpm api:check falla si hay desviación.
Root y host
createHostedCanvasRoot(canvas, options?): Promise<HostedCanvasRoot>
createCanvasRoot(context, core, options?): DoperRoot // ruta M1 en el hilo principal
createWasmCore(width, height, input?): Promise<CoreClient>Métodos de HostedCanvasRoot:
| Método | Descripción |
|---|---|
render(node) | Confirma un fotograma del árbol de componentes |
close() | Cierra el root, el Worker y el Core |
mode | Transporte real: sab / post-message / main-thread |
beginScroll / scrollBy / endScroll / cancelScroll | Manipulación directa del scroll |
focusEditable / blurEditable | Inicia o termina la sesión de edición nativa |
updateEditingGeometry | Geometría IME manual (normalmente automática) |
transportMetrics() / inputTransportMetrics() | Instantánea de transporte y contrapresión |
Opciones habituales: onFrame, onHostError, onEditTransaction, onEventTransaction, onSemantics, onNonPassiveRegions, transport, rasterCache, accessibility, nativeTextInputMode.
Elementos y JSX
createElement(type, props, key?): DoperElement
FragmentElementos del host: container, text, scroll, virtualList, editableText. Tipos: CommonProps, ContainerProps, TextProps, ScrollProps, VirtualListProps, EditableTextProps, EditableInputMode, Color, EdgeInsets, NodeHandle, Ref, DoperNode, FunctionComponent.
El runtime JSX se ofrece en @dopejs/pingo/jsx-runtime y @dopejs/pingo/jsx-dev-runtime.
Reactividad y hooks
(signal, computed, effect, batch, untracked);
(useState, useSignal, useMemo, useCallback, useRef, useEffect);Tipos: Signal, ReadonlySignal, RefObject, Unsubscribe.
Edición
TextEditingController;
useTextEditingController(options);Tipos: EditTransaction, EditingGeometry, EditingSelection, NativeTextInputMode.
Widgets
TextField(props): DoperNode
TextArea(props): DoperNodeAccesibilidad
SemanticTreeMirror
getByRole(root, role, { name? }): HTMLElement
queryAllByRole(root, role, { name? }): HTMLElement[]Tipos: SemanticNode, SemanticMirrorNode, SemanticTreeMirrorOptions.
Fuentes
createFont(options): DoperFont
loadFont(source, options?): Promise<DoperFont>Compatible con TTF / OTF / TTC / WOFF / WOFF2 (el decodificador WOFF2 se carga bajo demanda). Tipos: DoperFontSource, DoperFontOptions, DoperFontLoadOptions, DoperFontLoadError, DoperFontLoadErrorCode, Woff2Decoder.
Publicación y diagnóstico
ENGINE_VERSION: string
ENGINE_ABI_VERSION: number
engineIdentity(): { version, abiVersion }
verifyWasmIntegrity(bytes, manifest): Promise<void>WasmIntegrityError se lanza cuando un WASM alojado por tu cuenta no coincide con el manifiesto de la compilación. Véase diagnóstico.
Frontera de migración
@dopejs/pingo-compat es un paquete de frontera independiente que ofrece mountCompatPage para el despliegue por página y la vuelta atrás. Más detalles en la guía de migración.