@glimmer/interfaces
Version:
45 lines (34 loc) • 1.01 kB
TypeScript
import { SimpleElement, SimpleNode } from '@simple-dom/interface';
import { Bounds } from '../dom/bounds';
import { Arguments, CapturedArguments } from './arguments';
export type RenderNodeType = 'outlet' | 'engine' | 'route-template' | 'component';
export interface RenderNode {
type: RenderNodeType;
name: string;
args: CapturedArguments;
instance: unknown;
template?: string;
}
export interface CapturedRenderNode {
id: string;
type: RenderNodeType;
name: string;
args: Arguments;
instance: unknown;
template: string | null;
bounds: null | {
parentElement: SimpleElement;
firstNode: SimpleNode;
lastNode: SimpleNode;
};
children: CapturedRenderNode[];
}
export interface DebugRenderTree<Bucket extends object = object> {
begin(): void;
create(state: Bucket, node: RenderNode): void;
update(state: Bucket): void;
didRender(state: Bucket, bounds: Bounds): void;
willDestroy(state: Bucket): void;
commit(): void;
capture(): CapturedRenderNode[];
}