phaser-jsx
Version:
Use JSX in Phaser.
42 lines • 1.5 kB
TypeScript
import type { Scene } from 'phaser';
import type { JSX } from 'react';
import type { GameObjectNode } from '../types';
/**
* Stored data for a single effect slot.
*/
interface EffectRecord {
deps: unknown[] | undefined;
cleanup: (() => void) | void;
}
/**
* An effect queued during render, to be flushed after reconciliation.
*/
interface PendingEffect {
key: number;
callback: () => (() => void) | void;
deps: unknown[] | undefined;
}
/**
* Render context for tracking state and reconciliation.
*/
export interface RenderContext {
state: Map<number, unknown>;
effects: Map<number, EffectRecord>;
pendingEffects: PendingEffect[];
scene: Scene | null;
componentFn: ((...args: unknown[]) => JSX.Element) | null;
componentProps: Record<string, unknown> | null;
gameObjectTree: GameObjectNode | null;
getNextStateIndex: () => number;
resetStateIndex: () => void;
getNextEffectIndex: () => number;
resetEffectIndex: () => void;
flushEffects: () => void;
rerender: () => void;
}
export declare function getRenderContext(): RenderContext;
export declare function setRenderContext(context: RenderContext): void;
export declare function createRenderContext(element?: JSX.Element | null, scene?: Scene | null, componentFn?: ((...args: unknown[]) => JSX.Element) | null, componentProps?: Record<string, unknown> | null): RenderContext;
export declare function resetRenderContext(): void;
export {};
//# sourceMappingURL=context.d.ts.map