@hypen-space/web 0.4.46 → 0.4.81
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/README.md +4 -4
- package/dist/canvas/dirty.d.ts +40 -0
- package/dist/canvas/dirty.js +100 -0
- package/dist/canvas/dirty.js.map +1 -0
- package/dist/canvas/events.d.ts +5 -0
- package/dist/canvas/events.js +30 -3
- package/dist/canvas/events.js.map +1 -1
- package/dist/canvas/index.d.ts +5 -1
- package/dist/canvas/index.js +4 -0
- package/dist/canvas/index.js.map +1 -1
- package/dist/canvas/layout.d.ts +12 -2
- package/dist/canvas/layout.js +593 -63
- package/dist/canvas/layout.js.map +1 -1
- package/dist/canvas/paint.d.ts +2 -0
- package/dist/canvas/paint.js +88 -11
- package/dist/canvas/paint.js.map +1 -1
- package/dist/canvas/renderer.d.ts +16 -0
- package/dist/canvas/renderer.js +154 -15
- package/dist/canvas/renderer.js.map +1 -1
- package/dist/canvas/scroll.d.ts +82 -0
- package/dist/canvas/scroll.js +639 -0
- package/dist/canvas/scroll.js.map +1 -0
- package/dist/canvas/selection.d.ts +63 -0
- package/dist/canvas/selection.js +466 -0
- package/dist/canvas/selection.js.map +1 -0
- package/dist/canvas/text.d.ts +6 -3
- package/dist/canvas/text.js +82 -43
- package/dist/canvas/text.js.map +1 -1
- package/dist/canvas/types.d.ts +18 -0
- package/dist/canvas/utils.d.ts +8 -2
- package/dist/canvas/utils.js +42 -16
- package/dist/canvas/utils.js.map +1 -1
- package/dist/canvas/virtualize.d.ts +25 -0
- package/dist/canvas/virtualize.js +65 -0
- package/dist/canvas/virtualize.js.map +1 -0
- package/dist/dom/applicators/index.js +0 -1
- package/dist/dom/applicators/index.js.map +1 -1
- package/dist/dom/applicators/margin.js +58 -17
- package/dist/dom/applicators/margin.js.map +1 -1
- package/dist/dom/applicators/padding.js +42 -17
- package/dist/dom/applicators/padding.js.map +1 -1
- package/dist/dom/components/icon.d.ts +9 -0
- package/dist/dom/components/icon.js +67 -0
- package/dist/dom/components/icon.js.map +1 -0
- package/dist/dom/components/index.js +2 -0
- package/dist/dom/components/index.js.map +1 -1
- package/dist/dom/renderer.d.ts +19 -5
- package/dist/dom/renderer.js +147 -17
- package/dist/dom/renderer.js.map +1 -1
- package/package.json +4 -2
- package/src/canvas/QUICKSTART.md +5 -5
- package/src/canvas/dirty.ts +116 -0
- package/src/canvas/events.ts +34 -3
- package/src/canvas/index.ts +5 -0
- package/src/canvas/layout.ts +653 -100
- package/src/canvas/paint.ts +109 -11
- package/src/canvas/renderer.ts +189 -16
- package/src/canvas/scroll.ts +729 -0
- package/src/canvas/selection.ts +560 -0
- package/src/canvas/text.ts +97 -54
- package/src/canvas/types.ts +26 -0
- package/src/canvas/utils.ts +47 -17
- package/src/canvas/virtualize.ts +81 -0
- package/src/dom/applicators/index.ts +1 -1
- package/src/dom/applicators/margin.ts +57 -11
- package/src/dom/applicators/padding.ts +45 -11
- package/src/dom/components/icon.ts +84 -0
- package/src/dom/components/index.ts +2 -0
- package/src/dom/renderer.ts +155 -17
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ import { Hypen } from "@hypen-space/web-engine";
|
|
|
29
29
|
const hypen = new Hypen({
|
|
30
30
|
componentsDir: "./src/components",
|
|
31
31
|
debug: true,
|
|
32
|
-
|
|
32
|
+
wasmUrl: "/hypen_engine_bg.wasm",
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
await hypen.init();
|
|
@@ -63,7 +63,7 @@ src/components/
|
|
|
63
63
|
**component.hypen:**
|
|
64
64
|
```hypen
|
|
65
65
|
Column.padding(16).gap(8) {
|
|
66
|
-
Text("Count:
|
|
66
|
+
Text("Count: @{state.count}")
|
|
67
67
|
.fontSize(24)
|
|
68
68
|
Row.gap(8) {
|
|
69
69
|
Button(onClick: @actions.decrement) { Text("-") }
|
|
@@ -91,7 +91,7 @@ import { Hypen } from "@hypen-space/web-engine";
|
|
|
91
91
|
const hypen = new Hypen({
|
|
92
92
|
componentsDir: "./src/components", // Default
|
|
93
93
|
debug: false,
|
|
94
|
-
|
|
94
|
+
wasmUrl: "/hypen_engine_bg.wasm",
|
|
95
95
|
debugHeatmap: false, // Visualize re-renders
|
|
96
96
|
heatmapIncrement: 5, // % opacity per re-render
|
|
97
97
|
heatmapFadeOut: 2000, // ms fade duration
|
|
@@ -135,7 +135,7 @@ import { Engine } from "@hypen-space/web-engine";
|
|
|
135
135
|
import { DOMRenderer } from "@hypen-space/web";
|
|
136
136
|
|
|
137
137
|
const engine = new Engine();
|
|
138
|
-
await engine.init({
|
|
138
|
+
await engine.init({ wasmUrl: "/hypen_engine_bg.wasm" });
|
|
139
139
|
|
|
140
140
|
const renderer = new DOMRenderer(document.getElementById("app")!, engine, {
|
|
141
141
|
enabled: true,
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dirty Rect Tracker
|
|
3
|
+
*
|
|
4
|
+
* Tracks which rectangular regions of the canvas have changed and need repainting.
|
|
5
|
+
* Instead of per-node tracking, we accumulate dirty rectangles and merge them into
|
|
6
|
+
* a single bounding box. The canvas clip path ensures only dirty pixels are drawn.
|
|
7
|
+
*/
|
|
8
|
+
import type { Rectangle, VirtualNode } from "./types.js";
|
|
9
|
+
export declare class DirtyRectTracker {
|
|
10
|
+
private dirtyRegion;
|
|
11
|
+
private canvasWidth;
|
|
12
|
+
private canvasHeight;
|
|
13
|
+
constructor(canvasWidth: number, canvasHeight: number);
|
|
14
|
+
/**
|
|
15
|
+
* Update canvas dimensions (e.g. on resize)
|
|
16
|
+
*/
|
|
17
|
+
setCanvasSize(width: number, height: number): void;
|
|
18
|
+
/**
|
|
19
|
+
* Union a rectangle into the dirty region
|
|
20
|
+
*/
|
|
21
|
+
markDirty(rect: Rectangle): void;
|
|
22
|
+
/**
|
|
23
|
+
* Mark both old and new bounds of a node as dirty.
|
|
24
|
+
* This ensures the old position is erased and the new position is painted.
|
|
25
|
+
*/
|
|
26
|
+
markNodeDirty(node: VirtualNode): void;
|
|
27
|
+
/**
|
|
28
|
+
* Mark the entire canvas as dirty (first render, resize, etc.)
|
|
29
|
+
*/
|
|
30
|
+
markFullDirty(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Returns the merged bounding box of all dirty rects, or null if clean.
|
|
33
|
+
* Adds a 1px padding to avoid sub-pixel clipping artifacts.
|
|
34
|
+
*/
|
|
35
|
+
getDirtyRegion(): Rectangle | null;
|
|
36
|
+
/**
|
|
37
|
+
* Reset dirty state after a frame
|
|
38
|
+
*/
|
|
39
|
+
clear(): void;
|
|
40
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dirty Rect Tracker
|
|
3
|
+
*
|
|
4
|
+
* Tracks which rectangular regions of the canvas have changed and need repainting.
|
|
5
|
+
* Instead of per-node tracking, we accumulate dirty rectangles and merge them into
|
|
6
|
+
* a single bounding box. The canvas clip path ensures only dirty pixels are drawn.
|
|
7
|
+
*/
|
|
8
|
+
export class DirtyRectTracker {
|
|
9
|
+
dirtyRegion = null;
|
|
10
|
+
canvasWidth;
|
|
11
|
+
canvasHeight;
|
|
12
|
+
constructor(canvasWidth, canvasHeight) {
|
|
13
|
+
this.canvasWidth = canvasWidth;
|
|
14
|
+
this.canvasHeight = canvasHeight;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Update canvas dimensions (e.g. on resize)
|
|
18
|
+
*/
|
|
19
|
+
setCanvasSize(width, height) {
|
|
20
|
+
this.canvasWidth = width;
|
|
21
|
+
this.canvasHeight = height;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Union a rectangle into the dirty region
|
|
25
|
+
*/
|
|
26
|
+
markDirty(rect) {
|
|
27
|
+
if (rect.width <= 0 || rect.height <= 0)
|
|
28
|
+
return;
|
|
29
|
+
if (this.dirtyRegion === null) {
|
|
30
|
+
this.dirtyRegion = { ...rect };
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this.dirtyRegion = unionRects(this.dirtyRegion, rect);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Mark both old and new bounds of a node as dirty.
|
|
38
|
+
* This ensures the old position is erased and the new position is painted.
|
|
39
|
+
*/
|
|
40
|
+
markNodeDirty(node) {
|
|
41
|
+
if (node.layout) {
|
|
42
|
+
// Mark current layout bounds (covers both erase of old content and paint of new)
|
|
43
|
+
this.markDirty({
|
|
44
|
+
x: node.layout.x,
|
|
45
|
+
y: node.layout.y,
|
|
46
|
+
width: node.layout.width,
|
|
47
|
+
height: node.layout.height,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Mark the entire canvas as dirty (first render, resize, etc.)
|
|
53
|
+
*/
|
|
54
|
+
markFullDirty() {
|
|
55
|
+
this.dirtyRegion = {
|
|
56
|
+
x: 0,
|
|
57
|
+
y: 0,
|
|
58
|
+
width: this.canvasWidth,
|
|
59
|
+
height: this.canvasHeight,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Returns the merged bounding box of all dirty rects, or null if clean.
|
|
64
|
+
* Adds a 1px padding to avoid sub-pixel clipping artifacts.
|
|
65
|
+
*/
|
|
66
|
+
getDirtyRegion() {
|
|
67
|
+
if (this.dirtyRegion === null)
|
|
68
|
+
return null;
|
|
69
|
+
// Expand by 1px to avoid sub-pixel edge artifacts, clamped to canvas bounds
|
|
70
|
+
const padded = {
|
|
71
|
+
x: Math.max(0, Math.floor(this.dirtyRegion.x) - 1),
|
|
72
|
+
y: Math.max(0, Math.floor(this.dirtyRegion.y) - 1),
|
|
73
|
+
width: Math.min(this.canvasWidth, Math.ceil(this.dirtyRegion.width) + 2),
|
|
74
|
+
height: Math.min(this.canvasHeight, Math.ceil(this.dirtyRegion.height) + 2),
|
|
75
|
+
};
|
|
76
|
+
return padded;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Reset dirty state after a frame
|
|
80
|
+
*/
|
|
81
|
+
clear() {
|
|
82
|
+
this.dirtyRegion = null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Compute the union (bounding box) of two rectangles
|
|
87
|
+
*/
|
|
88
|
+
function unionRects(a, b) {
|
|
89
|
+
const x = Math.min(a.x, b.x);
|
|
90
|
+
const y = Math.min(a.y, b.y);
|
|
91
|
+
const right = Math.max(a.x + a.width, b.x + b.width);
|
|
92
|
+
const bottom = Math.max(a.y + a.height, b.y + b.height);
|
|
93
|
+
return {
|
|
94
|
+
x,
|
|
95
|
+
y,
|
|
96
|
+
width: right - x,
|
|
97
|
+
height: bottom - y,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=dirty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dirty.js","sourceRoot":"","sources":["../../src/canvas/dirty.ts"],"names":[],"mappings":"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"}
|
package/dist/canvas/events.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export declare class CanvasEventManager {
|
|
|
22
22
|
private boundOnMouseUp;
|
|
23
23
|
private boundOnClick;
|
|
24
24
|
private boundOnDoubleClick;
|
|
25
|
+
private boundOnContextMenu;
|
|
25
26
|
private boundOnKeyDown;
|
|
26
27
|
private boundOnKeyUp;
|
|
27
28
|
constructor(canvas: HTMLCanvasElement, engine: IEngine);
|
|
@@ -65,6 +66,10 @@ export declare class CanvasEventManager {
|
|
|
65
66
|
* Handle double click
|
|
66
67
|
*/
|
|
67
68
|
private onDoubleClick;
|
|
69
|
+
/**
|
|
70
|
+
* Handle context menu (right-click)
|
|
71
|
+
*/
|
|
72
|
+
private onContextMenu;
|
|
68
73
|
/**
|
|
69
74
|
* Handle keyboard events
|
|
70
75
|
*/
|
package/dist/canvas/events.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Hit testing and event handling for canvas nodes
|
|
5
5
|
*/
|
|
6
|
-
import { isPointInRoundedRect
|
|
6
|
+
import { isPointInRoundedRect } from "./utils.js";
|
|
7
|
+
import { getScrollAwareBounds } from "./scroll.js";
|
|
7
8
|
/**
|
|
8
9
|
* Canvas Event Manager
|
|
9
10
|
*/
|
|
@@ -20,6 +21,7 @@ export class CanvasEventManager {
|
|
|
20
21
|
boundOnMouseUp;
|
|
21
22
|
boundOnClick;
|
|
22
23
|
boundOnDoubleClick;
|
|
24
|
+
boundOnContextMenu;
|
|
23
25
|
boundOnKeyDown;
|
|
24
26
|
boundOnKeyUp;
|
|
25
27
|
constructor(canvas, engine) {
|
|
@@ -42,6 +44,7 @@ export class CanvasEventManager {
|
|
|
42
44
|
this.boundOnMouseUp = this.onMouseUp.bind(this);
|
|
43
45
|
this.boundOnClick = this.onClick.bind(this);
|
|
44
46
|
this.boundOnDoubleClick = this.onDoubleClick.bind(this);
|
|
47
|
+
this.boundOnContextMenu = this.onContextMenu.bind(this);
|
|
45
48
|
this.boundOnKeyDown = this.onKeyDown.bind(this);
|
|
46
49
|
this.boundOnKeyUp = this.onKeyUp.bind(this);
|
|
47
50
|
this.canvas.addEventListener("mousemove", this.boundOnMouseMove);
|
|
@@ -49,6 +52,7 @@ export class CanvasEventManager {
|
|
|
49
52
|
this.canvas.addEventListener("mouseup", this.boundOnMouseUp);
|
|
50
53
|
this.canvas.addEventListener("click", this.boundOnClick);
|
|
51
54
|
this.canvas.addEventListener("dblclick", this.boundOnDoubleClick);
|
|
55
|
+
this.canvas.addEventListener("contextmenu", this.boundOnContextMenu);
|
|
52
56
|
this.canvas.addEventListener("keydown", this.boundOnKeyDown);
|
|
53
57
|
this.canvas.addEventListener("keyup", this.boundOnKeyUp);
|
|
54
58
|
}
|
|
@@ -78,7 +82,7 @@ export class CanvasEventManager {
|
|
|
78
82
|
hitTestNode(node, point) {
|
|
79
83
|
if (!node.visible || !node.layout)
|
|
80
84
|
return null;
|
|
81
|
-
const bounds =
|
|
85
|
+
const bounds = getScrollAwareBounds(node);
|
|
82
86
|
if (!bounds)
|
|
83
87
|
return null;
|
|
84
88
|
// Test children first (front to back)
|
|
@@ -185,6 +189,24 @@ export class CanvasEventManager {
|
|
|
185
189
|
});
|
|
186
190
|
}
|
|
187
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Handle context menu (right-click)
|
|
194
|
+
*/
|
|
195
|
+
onContextMenu(e) {
|
|
196
|
+
const point = this.getCanvasCoordinates(e);
|
|
197
|
+
const node = this.hitTest(point);
|
|
198
|
+
if (node) {
|
|
199
|
+
const actionName = node.props["oncontextmenu"] || node.props["contextmenu"];
|
|
200
|
+
if (actionName && typeof actionName === "string") {
|
|
201
|
+
e.preventDefault();
|
|
202
|
+
this.dispatchNodeEvent(node, "contextmenu", {
|
|
203
|
+
button: e.button,
|
|
204
|
+
clientX: e.clientX,
|
|
205
|
+
clientY: e.clientY,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
188
210
|
/**
|
|
189
211
|
* Handle keyboard events
|
|
190
212
|
*/
|
|
@@ -243,7 +265,11 @@ export class CanvasEventManager {
|
|
|
243
265
|
*/
|
|
244
266
|
dispatchNodeEvent(node, eventType, data) {
|
|
245
267
|
// Check if node has action handler for this event
|
|
246
|
-
|
|
268
|
+
let actionName = node.props[`on${eventType}`] || node.props[eventType];
|
|
269
|
+
// Actionable components: fall back to "action" prop for click events
|
|
270
|
+
if (!actionName && eventType === "click" && node.props.action) {
|
|
271
|
+
actionName = node.props.action;
|
|
272
|
+
}
|
|
247
273
|
if (actionName && typeof actionName === "string") {
|
|
248
274
|
// Dispatch to engine
|
|
249
275
|
this.engine.dispatchAction(actionName, {
|
|
@@ -271,6 +297,7 @@ export class CanvasEventManager {
|
|
|
271
297
|
this.canvas.removeEventListener("mouseup", this.boundOnMouseUp);
|
|
272
298
|
this.canvas.removeEventListener("click", this.boundOnClick);
|
|
273
299
|
this.canvas.removeEventListener("dblclick", this.boundOnDoubleClick);
|
|
300
|
+
this.canvas.removeEventListener("contextmenu", this.boundOnContextMenu);
|
|
274
301
|
this.canvas.removeEventListener("keydown", this.boundOnKeyDown);
|
|
275
302
|
this.canvas.removeEventListener("keyup", this.boundOnKeyUp);
|
|
276
303
|
this.rootNode = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/canvas/events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/canvas/events.ts"],"names":[],"mappings":"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"}
|
package/dist/canvas/index.d.ts
CHANGED
|
@@ -8,4 +8,8 @@ export { registerPainter } from "./paint.js";
|
|
|
8
8
|
export { CanvasEventManager } from "./events.js";
|
|
9
9
|
export { InputOverlay } from "./input.js";
|
|
10
10
|
export { AccessibilityLayer } from "./accessibility.js";
|
|
11
|
-
export
|
|
11
|
+
export { initTaffyLayout } from "./layout.js";
|
|
12
|
+
export { ScrollManager } from "./scroll.js";
|
|
13
|
+
export { DirtyRectTracker } from "./dirty.js";
|
|
14
|
+
export { SelectionManager } from "./selection.js";
|
|
15
|
+
export type { VirtualNode, Layout, Rectangle, Point, FontStyle, TextStyle, TextMetrics, ScrollState, CanvasRendererOptions, PainterFunction, LayoutFunction, } from "./types.js";
|
package/dist/canvas/index.js
CHANGED
|
@@ -8,4 +8,8 @@ export { registerPainter } from "./paint.js";
|
|
|
8
8
|
export { CanvasEventManager } from "./events.js";
|
|
9
9
|
export { InputOverlay } from "./input.js";
|
|
10
10
|
export { AccessibilityLayer } from "./accessibility.js";
|
|
11
|
+
export { initTaffyLayout } from "./layout.js";
|
|
12
|
+
export { ScrollManager } from "./scroll.js";
|
|
13
|
+
export { DirtyRectTracker } from "./dirty.js";
|
|
14
|
+
export { SelectionManager } from "./selection.js";
|
|
11
15
|
//# sourceMappingURL=index.js.map
|
package/dist/canvas/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/canvas/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/canvas/layout.d.ts
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Layout Engine
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Uses Taffy (Rust/WASM) for spec-compliant CSS Flexbox, Grid, and Block
|
|
5
|
+
* layout. Falls back to a basic flexbox implementation in environments
|
|
6
|
+
* without WASM support (e.g. test runners).
|
|
5
7
|
*/
|
|
6
8
|
import type { VirtualNode } from "./types.js";
|
|
7
9
|
/**
|
|
8
|
-
*
|
|
10
|
+
* Initialise the Taffy WASM module. Safe to call multiple times; only the
|
|
11
|
+
* first call actually loads WASM. Resolves immediately on subsequent calls.
|
|
12
|
+
*/
|
|
13
|
+
export declare function initTaffyLayout(): Promise<boolean>;
|
|
14
|
+
/**
|
|
15
|
+
* Compute layout for a virtual node tree.
|
|
16
|
+
*
|
|
17
|
+
* Uses Taffy (WASM) when available for spec-compliant CSS Flexbox/Grid/Block
|
|
18
|
+
* layout. Falls back to a basic JS flexbox implementation otherwise.
|
|
9
19
|
*/
|
|
10
20
|
export declare function computeLayout(ctx: CanvasRenderingContext2D, node: VirtualNode, availableWidth: number, availableHeight: number, x?: number, y?: number): void;
|