1 | import { SimpleElement, SimpleNode } from '@simple-dom/interface';
|
2 | import { Bounds } from '../dom/bounds';
|
3 | import { Arguments, CapturedArguments } from './arguments';
|
4 |
|
5 | export type RenderNodeType = 'outlet' | 'engine' | 'route-template' | 'component';
|
6 |
|
7 | export interface RenderNode {
|
8 | type: RenderNodeType;
|
9 | name: string;
|
10 | args: CapturedArguments;
|
11 | instance: unknown;
|
12 | template?: string;
|
13 | }
|
14 |
|
15 | export interface CapturedRenderNode {
|
16 | id: string;
|
17 | type: RenderNodeType;
|
18 | name: string;
|
19 | args: Arguments;
|
20 | instance: unknown;
|
21 | template: string | null;
|
22 | bounds: null | {
|
23 | parentElement: SimpleElement;
|
24 | firstNode: SimpleNode;
|
25 | lastNode: SimpleNode;
|
26 | };
|
27 | children: CapturedRenderNode[];
|
28 | }
|
29 |
|
30 | export interface DebugRenderTree<Bucket extends object = object> {
|
31 | begin(): void;
|
32 |
|
33 | create(state: Bucket, node: RenderNode): void;
|
34 |
|
35 | update(state: Bucket): void;
|
36 |
|
37 | didRender(state: Bucket, bounds: Bounds): void;
|
38 |
|
39 | willDestroy(state: Bucket): void;
|
40 |
|
41 | commit(): void;
|
42 |
|
43 | capture(): CapturedRenderNode[];
|
44 | }
|