UNPKG

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