Something went wrong. Try again.
Node.js & Bun bindings for Zed’s GPUI. Build memory efficient native apps with React or Solid.js
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243import type { ReactNode } from "react"import type { EventPayload } from "@gpuix/native"import { TestRenderer, hasNativeTestRenderer, type TestWindowOptions,} from "@gpuix/native/testing"import { createRoot, flushSync, type Root } from "./reconciler/reconciler.js"import { handleGpuixEvent } from "./reconciler/event-registry.js"
export * from "@gpuix/native/testing"
export interface TestRoot { root: Root renderer: TestRenderer render: (node: ReactNode) => void unmount: () => void}
export function createTestRoot(options: TestWindowOptions = {}): TestRoot { let renderer!: TestRenderer renderer = new TestRenderer({ ...options, dispatchEvent: (event: EventPayload) => { flushSync(() => handleGpuixEvent(event, renderer)) }, }) const root = createRoot(renderer, { onKeyDown: options.onKeyDown, onKeyUp: options.onKeyUp, onSelectionChange: options.onSelectionChange, tabNavigation: options.tabNavigation, keyboardFocusDim: options.keyboardFocusDim, }) const render = (node: ReactNode): void => { flushSync(() => root.render(node)) renderer.flush() } return { root, renderer, render, unmount: root.unmount }}
export { TestRenderer, hasNativeTestRenderer }