1 | import type { SimpleElement, SimpleNode } from '@simple-dom/interface';
|
2 |
|
3 | import type { Bounds } from '../dom/bounds.js';
|
4 | import type { Arguments, CapturedArguments } from './arguments.js';
|
5 |
|
6 | export type RenderNodeType =
|
7 | | 'outlet'
|
8 | | 'engine'
|
9 | | 'route-template'
|
10 | | 'component'
|
11 | | 'modifier'
|
12 | | 'keyword';
|
13 |
|
14 | export interface RenderNode {
|
15 | type: RenderNodeType;
|
16 | name: string;
|
17 | args: CapturedArguments;
|
18 | instance: unknown;
|
19 | template?: string | undefined;
|
20 | }
|
21 |
|
22 | export 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 |
|
37 | export 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 | }
|