@zoneflow/renderer-dom 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/anchors.d.ts +13 -0
- package/dist/anchors.js +22 -0
- package/dist/engines/componentLayoutEngine.d.ts +2 -0
- package/dist/engines/componentLayoutEngine.js +200 -0
- package/dist/engines/debugDrawEngine.d.ts +7 -0
- package/dist/engines/debugDrawEngine.js +346 -0
- package/dist/engines/densityEngine.d.ts +2 -0
- package/dist/engines/densityEngine.js +47 -0
- package/dist/engines/drawEngine.d.ts +2 -0
- package/dist/engines/drawEngine.js +681 -0
- package/dist/engines/graphLayoutEngine.d.ts +6 -0
- package/dist/engines/graphLayoutEngine.js +255 -0
- package/dist/engines/visibilityEngine.d.ts +2 -0
- package/dist/engines/visibilityEngine.js +76 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +11 -0
- package/dist/pipeline.d.ts +8 -0
- package/dist/pipeline.js +25 -0
- package/dist/renderer.d.ts +2 -0
- package/dist/renderer.js +137 -0
- package/dist/theme.d.ts +23 -0
- package/dist/theme.js +1 -0
- package/dist/themes/defaultTheme.d.ts +9 -0
- package/dist/themes/defaultTheme.js +46 -0
- package/dist/types.d.ts +253 -0
- package/dist/types.js +1 -0
- package/package.json +23 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import type { AnchorRect, Path, PathId, Point, UniverseId, UniverseLayoutModel, UniverseModel, Zone, ZoneId } from "@zoneflow/core";
|
|
2
|
+
import type { TextScaleLevel, ZoneflowTheme } from "./theme";
|
|
3
|
+
export type CameraState = {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
zoom: number;
|
|
7
|
+
};
|
|
8
|
+
export type Rect = {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
};
|
|
14
|
+
export type HostViewportRect = Rect;
|
|
15
|
+
export type EffectiveViewportRect = Rect;
|
|
16
|
+
export type WorldViewportRect = Rect;
|
|
17
|
+
export type RenderViewportInfo = {
|
|
18
|
+
host: HostViewportRect;
|
|
19
|
+
effective: EffectiveViewportRect;
|
|
20
|
+
world: WorldViewportRect;
|
|
21
|
+
};
|
|
22
|
+
export type DensityLevel = "far" | "mid" | "near" | "detail";
|
|
23
|
+
export type PathVisualMode = "hidden" | "edge-only" | "chip" | "full";
|
|
24
|
+
export type VisibilityEmphasis = "strong" | "normal" | "dim" | "hidden";
|
|
25
|
+
export type ZoneVisualNode = {
|
|
26
|
+
universeId: UniverseId;
|
|
27
|
+
zoneId: ZoneId;
|
|
28
|
+
zone: Zone;
|
|
29
|
+
rect: Rect;
|
|
30
|
+
anchors: {
|
|
31
|
+
inlet: {
|
|
32
|
+
point: Point;
|
|
33
|
+
rect?: AnchorRect;
|
|
34
|
+
};
|
|
35
|
+
outlet: {
|
|
36
|
+
point: Point;
|
|
37
|
+
rect?: AnchorRect;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export type PathVisualNode = {
|
|
42
|
+
universeId: UniverseId;
|
|
43
|
+
pathId: PathId;
|
|
44
|
+
sourceZoneId: ZoneId;
|
|
45
|
+
targetZoneId?: ZoneId | null;
|
|
46
|
+
path: Path;
|
|
47
|
+
rect?: Rect;
|
|
48
|
+
inlet?: Point;
|
|
49
|
+
outlet?: Point;
|
|
50
|
+
};
|
|
51
|
+
export type EdgeVisual = {
|
|
52
|
+
id: string;
|
|
53
|
+
pathId: PathId;
|
|
54
|
+
source: Point;
|
|
55
|
+
target: Point;
|
|
56
|
+
kind: "zone-to-path" | "path-to-zone";
|
|
57
|
+
points?: Point[];
|
|
58
|
+
};
|
|
59
|
+
export type GraphLayoutResult = {
|
|
60
|
+
zonesById: Record<ZoneId, ZoneVisualNode>;
|
|
61
|
+
pathsById: Record<PathId, PathVisualNode>;
|
|
62
|
+
edgesByPathId: Record<PathId, EdgeVisual[]>;
|
|
63
|
+
};
|
|
64
|
+
export type DensityResult = {
|
|
65
|
+
zoneDensityById: Record<ZoneId, DensityLevel>;
|
|
66
|
+
pathDensityById: Record<PathId, PathVisualMode>;
|
|
67
|
+
};
|
|
68
|
+
export type ZoneVisibility = {
|
|
69
|
+
isVisible: boolean;
|
|
70
|
+
isPartial: boolean;
|
|
71
|
+
shouldRenderBody: boolean;
|
|
72
|
+
shouldRenderContent: boolean;
|
|
73
|
+
emphasis: VisibilityEmphasis;
|
|
74
|
+
};
|
|
75
|
+
export type PathVisibility = {
|
|
76
|
+
isVisible: boolean;
|
|
77
|
+
isPartial: boolean;
|
|
78
|
+
shouldRenderNode: boolean;
|
|
79
|
+
shouldRenderEdge: boolean;
|
|
80
|
+
shouldRenderLabel: boolean;
|
|
81
|
+
emphasis: VisibilityEmphasis;
|
|
82
|
+
};
|
|
83
|
+
export type VisibilityResult = {
|
|
84
|
+
zoneVisibilityById: Record<ZoneId, ZoneVisibility>;
|
|
85
|
+
pathVisibilityById: Record<PathId, PathVisibility>;
|
|
86
|
+
};
|
|
87
|
+
export type ZoneComponentSlotName = "title" | "type" | "badge" | "body" | "footer";
|
|
88
|
+
export type PathComponentSlotName = "label" | "rule" | "target" | "body";
|
|
89
|
+
export type ZoneComponentLayout = {
|
|
90
|
+
zoneId: ZoneId;
|
|
91
|
+
slots: Partial<Record<ZoneComponentSlotName, Rect>>;
|
|
92
|
+
};
|
|
93
|
+
export type PathComponentLayout = {
|
|
94
|
+
pathId: PathId;
|
|
95
|
+
slots: Partial<Record<PathComponentSlotName, Rect>>;
|
|
96
|
+
};
|
|
97
|
+
export type ComponentLayoutResult = {
|
|
98
|
+
zonesById: Record<ZoneId, ZoneComponentLayout>;
|
|
99
|
+
pathsById: Record<PathId, PathComponentLayout>;
|
|
100
|
+
};
|
|
101
|
+
export type ZoneComponentRendererContext = {
|
|
102
|
+
model: UniverseModel;
|
|
103
|
+
layoutModel: UniverseLayoutModel;
|
|
104
|
+
zone: Zone;
|
|
105
|
+
zoneVisual: ZoneVisualNode;
|
|
106
|
+
density: DensityLevel;
|
|
107
|
+
visibility: ZoneVisibility;
|
|
108
|
+
componentLayout: ZoneComponentLayout;
|
|
109
|
+
camera: CameraState;
|
|
110
|
+
theme: ZoneflowTheme;
|
|
111
|
+
textScale: TextScaleLevel;
|
|
112
|
+
};
|
|
113
|
+
export type PathComponentRendererContext = {
|
|
114
|
+
model: UniverseModel;
|
|
115
|
+
layoutModel: UniverseLayoutModel;
|
|
116
|
+
path: Path;
|
|
117
|
+
pathVisual: PathVisualNode;
|
|
118
|
+
density: PathVisualMode;
|
|
119
|
+
visibility: PathVisibility;
|
|
120
|
+
componentLayout: PathComponentLayout;
|
|
121
|
+
camera: CameraState;
|
|
122
|
+
theme: ZoneflowTheme;
|
|
123
|
+
textScale: TextScaleLevel;
|
|
124
|
+
};
|
|
125
|
+
export type ZoneComponentRenderer = (host: HTMLElement, context: ZoneComponentRendererContext) => void;
|
|
126
|
+
export type PathComponentRenderer = (host: HTMLElement, context: PathComponentRendererContext) => void;
|
|
127
|
+
export type ZoneComponentRendererMap = Partial<Record<ZoneComponentSlotName, ZoneComponentRenderer>>;
|
|
128
|
+
export type PathComponentRendererMap = Partial<Record<PathComponentSlotName, PathComponentRenderer>>;
|
|
129
|
+
export type ZoneComponentMount = {
|
|
130
|
+
key: string;
|
|
131
|
+
zoneId: ZoneId;
|
|
132
|
+
slot: ZoneComponentSlotName;
|
|
133
|
+
host: HTMLElement;
|
|
134
|
+
rect: Rect;
|
|
135
|
+
context: ZoneComponentRendererContext;
|
|
136
|
+
};
|
|
137
|
+
export type PathComponentMount = {
|
|
138
|
+
key: string;
|
|
139
|
+
pathId: PathId;
|
|
140
|
+
slot: PathComponentSlotName;
|
|
141
|
+
host: HTMLElement;
|
|
142
|
+
rect: Rect;
|
|
143
|
+
context: PathComponentRendererContext;
|
|
144
|
+
};
|
|
145
|
+
export type RenderMountRegistry = {
|
|
146
|
+
zones: ZoneComponentMount[];
|
|
147
|
+
paths: PathComponentMount[];
|
|
148
|
+
};
|
|
149
|
+
export type RendererInteractionHandlers = {
|
|
150
|
+
onZoneClick?: (zoneId: ZoneId) => void;
|
|
151
|
+
onPathClick?: (pathId: PathId) => void;
|
|
152
|
+
onBackgroundClick?: () => void;
|
|
153
|
+
};
|
|
154
|
+
export type RendererExclusionState = {
|
|
155
|
+
excludedZoneIds?: ZoneId[];
|
|
156
|
+
excludedPathIds?: PathId[];
|
|
157
|
+
};
|
|
158
|
+
export type RenderPipelineInput = {
|
|
159
|
+
model: UniverseModel;
|
|
160
|
+
layoutModel: UniverseLayoutModel;
|
|
161
|
+
camera: CameraState;
|
|
162
|
+
viewportInfo: RenderViewportInfo;
|
|
163
|
+
theme: ZoneflowTheme;
|
|
164
|
+
textScale: TextScaleLevel;
|
|
165
|
+
};
|
|
166
|
+
export type RenderPipelineResult = {
|
|
167
|
+
viewportInfo: RenderViewportInfo;
|
|
168
|
+
graphLayout: GraphLayoutResult;
|
|
169
|
+
density: DensityResult;
|
|
170
|
+
visibility: VisibilityResult;
|
|
171
|
+
componentLayout: ComponentLayoutResult;
|
|
172
|
+
};
|
|
173
|
+
export type RendererDrawInput = {
|
|
174
|
+
host: HTMLElement;
|
|
175
|
+
model: UniverseModel;
|
|
176
|
+
layoutModel: UniverseLayoutModel;
|
|
177
|
+
camera: CameraState;
|
|
178
|
+
viewportInfo: RenderViewportInfo;
|
|
179
|
+
theme: ZoneflowTheme;
|
|
180
|
+
textScale: TextScaleLevel;
|
|
181
|
+
pipeline: RenderPipelineResult;
|
|
182
|
+
zoneComponentRenderers?: ZoneComponentRendererMap;
|
|
183
|
+
pathComponentRenderers?: PathComponentRendererMap;
|
|
184
|
+
interactionHandlers?: RendererInteractionHandlers;
|
|
185
|
+
exclusionState?: RendererExclusionState;
|
|
186
|
+
};
|
|
187
|
+
export type RendererFrame = {
|
|
188
|
+
viewportInfo: RenderViewportInfo;
|
|
189
|
+
pipeline: RenderPipelineResult;
|
|
190
|
+
mounts: RenderMountRegistry;
|
|
191
|
+
};
|
|
192
|
+
export type GraphLayoutEngine = {
|
|
193
|
+
compute(input: RenderPipelineInput): GraphLayoutResult;
|
|
194
|
+
};
|
|
195
|
+
export type DensityEngine = {
|
|
196
|
+
compute(input: {
|
|
197
|
+
base: RenderPipelineInput;
|
|
198
|
+
graphLayout: GraphLayoutResult;
|
|
199
|
+
}): DensityResult;
|
|
200
|
+
};
|
|
201
|
+
export type VisibilityEngine = {
|
|
202
|
+
compute(input: {
|
|
203
|
+
base: RenderPipelineInput;
|
|
204
|
+
graphLayout: GraphLayoutResult;
|
|
205
|
+
density: DensityResult;
|
|
206
|
+
}): VisibilityResult;
|
|
207
|
+
};
|
|
208
|
+
export type ComponentLayoutEngine = {
|
|
209
|
+
compute(input: {
|
|
210
|
+
base: RenderPipelineInput;
|
|
211
|
+
graphLayout: GraphLayoutResult;
|
|
212
|
+
density: DensityResult;
|
|
213
|
+
visibility: VisibilityResult;
|
|
214
|
+
}): ComponentLayoutResult;
|
|
215
|
+
};
|
|
216
|
+
export type DrawEngine = {
|
|
217
|
+
draw(input: RendererDrawInput): RenderMountRegistry;
|
|
218
|
+
};
|
|
219
|
+
export type DebugLayer = "graph-layout" | "density" | "visibility" | "component-layout" | "edges" | "anchors" | "viewport";
|
|
220
|
+
export type ViewportConfig = {
|
|
221
|
+
enabled: boolean;
|
|
222
|
+
width: number;
|
|
223
|
+
height: number;
|
|
224
|
+
offsetX?: number;
|
|
225
|
+
offsetY?: number;
|
|
226
|
+
};
|
|
227
|
+
export type RendererDebugOptions = {
|
|
228
|
+
enabled?: boolean;
|
|
229
|
+
layers?: DebugLayer[];
|
|
230
|
+
};
|
|
231
|
+
export type RendererInput = {
|
|
232
|
+
model: UniverseModel;
|
|
233
|
+
layoutModel: UniverseLayoutModel;
|
|
234
|
+
theme?: Partial<ZoneflowTheme>;
|
|
235
|
+
textScale?: TextScaleLevel;
|
|
236
|
+
camera?: CameraState;
|
|
237
|
+
viewport?: ViewportConfig;
|
|
238
|
+
graphLayoutEngine?: GraphLayoutEngine;
|
|
239
|
+
densityEngine?: DensityEngine;
|
|
240
|
+
visibilityEngine?: VisibilityEngine;
|
|
241
|
+
componentLayoutEngine?: ComponentLayoutEngine;
|
|
242
|
+
drawEngine?: DrawEngine;
|
|
243
|
+
zoneComponentRenderers?: ZoneComponentRendererMap;
|
|
244
|
+
pathComponentRenderers?: PathComponentRendererMap;
|
|
245
|
+
interactionHandlers?: RendererInteractionHandlers;
|
|
246
|
+
exclusionState?: RendererExclusionState;
|
|
247
|
+
debug?: RendererDebugOptions;
|
|
248
|
+
};
|
|
249
|
+
export type ZoneflowRenderer = {
|
|
250
|
+
mount(container: HTMLElement): void;
|
|
251
|
+
update(input: RendererInput): RendererFrame | undefined;
|
|
252
|
+
destroy(): void;
|
|
253
|
+
};
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zoneflow/renderer-dom",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git@github-groobee:groobee/zoneflow.git",
|
|
10
|
+
"directory": "packages/renderer-dom"
|
|
11
|
+
},
|
|
12
|
+
"publishConfig": {
|
|
13
|
+
"registry": "https://registry.npmjs.org"
|
|
14
|
+
},
|
|
15
|
+
"files": ["dist"],
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@zoneflow/core": "workspace:*"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc -p tsconfig.json",
|
|
21
|
+
"type-check": "tsc -p tsconfig.json --noEmit"
|
|
22
|
+
}
|
|
23
|
+
}
|