forked from glimmerjs/glimmer-vm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdebug-render-tree.d.ts
45 lines (34 loc) · 1.03 KB
/
debug-render-tree.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import type { SimpleElement, SimpleNode } from '@simple-dom/interface';
import type { Bounds } from '../dom/bounds.js';
import type { Arguments, CapturedArguments } from './arguments.js';
export type RenderNodeType = 'outlet' | 'engine' | 'route-template' | 'component' | 'keyword';
export interface RenderNode {
type: RenderNodeType;
name: string;
args: CapturedArguments;
instance: unknown;
template?: string | undefined;
}
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[];
}