@hypen-space/web 0.4.980 → 0.5.2
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 +20 -13
- package/dist/canvas/events.js +46 -7
- package/dist/canvas/events.js.map +1 -1
- package/dist/canvas/index.d.ts +0 -1
- package/dist/canvas/index.js +0 -1
- package/dist/canvas/index.js.map +1 -1
- package/dist/canvas/layout.js +68 -98
- package/dist/canvas/layout.js.map +1 -1
- package/dist/canvas/paint.js +168 -71
- package/dist/canvas/paint.js.map +1 -1
- package/dist/canvas/renderer.d.ts +8 -3
- package/dist/canvas/renderer.js +32 -43
- package/dist/canvas/renderer.js.map +1 -1
- package/dist/canvas/text.js +2 -9
- package/dist/canvas/text.js.map +1 -1
- package/dist/canvas/types.d.ts +3 -0
- package/dist/canvas/utils.d.ts +0 -23
- package/dist/canvas/utils.js +3 -67
- package/dist/canvas/utils.js.map +1 -1
- package/dist/canvas/variants.d.ts +49 -0
- package/dist/canvas/variants.js +137 -0
- package/dist/canvas/variants.js.map +1 -0
- package/dist/dom/applicators/events.js +1 -0
- package/dist/dom/applicators/events.js.map +1 -1
- package/dist/dom/applicators/font.d.ts +11 -6
- package/dist/dom/applicators/font.js +16 -27
- package/dist/dom/applicators/font.js.map +1 -1
- package/dist/dom/applicators/index.js +47 -45
- package/dist/dom/applicators/index.js.map +1 -1
- package/dist/dom/canvas/index.js +2 -2
- package/dist/dom/canvas/index.js.map +1 -1
- package/dist/dom/components/app.js +2 -2
- package/dist/dom/components/app.js.map +1 -1
- package/dist/dom/components/audio.js +2 -2
- package/dist/dom/components/audio.js.map +1 -1
- package/dist/dom/components/avatar.js +3 -4
- package/dist/dom/components/avatar.js.map +1 -1
- package/dist/dom/components/badge.js +3 -4
- package/dist/dom/components/badge.js.map +1 -1
- package/dist/dom/components/button.js +2 -2
- package/dist/dom/components/button.js.map +1 -1
- package/dist/dom/components/card.js +2 -2
- package/dist/dom/components/card.js.map +1 -1
- package/dist/dom/components/center.js +2 -2
- package/dist/dom/components/center.js.map +1 -1
- package/dist/dom/components/checkbox.js +4 -5
- package/dist/dom/components/checkbox.js.map +1 -1
- package/dist/dom/components/column.js +2 -2
- package/dist/dom/components/column.js.map +1 -1
- package/dist/dom/components/container.js +2 -2
- package/dist/dom/components/container.js.map +1 -1
- package/dist/dom/components/divider.js +2 -2
- package/dist/dom/components/divider.js.map +1 -1
- package/dist/dom/components/grid.js +10 -10
- package/dist/dom/components/grid.js.map +1 -1
- package/dist/dom/components/heading.js +4 -6
- package/dist/dom/components/heading.js.map +1 -1
- package/dist/dom/components/hypenapp.js +2 -2
- package/dist/dom/components/hypenapp.js.map +1 -1
- package/dist/dom/components/icon.js +4 -5
- package/dist/dom/components/icon.js.map +1 -1
- package/dist/dom/components/image.js +2 -2
- package/dist/dom/components/image.js.map +1 -1
- package/dist/dom/components/index.d.ts +2 -2
- package/dist/dom/components/index.js +2 -2
- package/dist/dom/components/index.js.map +1 -1
- package/dist/dom/components/input.js +2 -2
- package/dist/dom/components/input.js.map +1 -1
- package/dist/dom/components/link.js +2 -2
- package/dist/dom/components/link.js.map +1 -1
- package/dist/dom/components/list.js +2 -2
- package/dist/dom/components/list.js.map +1 -1
- package/dist/dom/components/paragraph.js +3 -4
- package/dist/dom/components/paragraph.js.map +1 -1
- package/dist/dom/components/progressbar.js +3 -3
- package/dist/dom/components/progressbar.js.map +1 -1
- package/dist/dom/components/route.js +2 -2
- package/dist/dom/components/route.js.map +1 -1
- package/dist/dom/components/router.js +2 -2
- package/dist/dom/components/router.js.map +1 -1
- package/dist/dom/components/row.js +10 -10
- package/dist/dom/components/row.js.map +1 -1
- package/dist/dom/components/select.js +3 -4
- package/dist/dom/components/select.js.map +1 -1
- package/dist/dom/components/slider.js +2 -2
- package/dist/dom/components/slider.js.map +1 -1
- package/dist/dom/components/spacer.js +2 -2
- package/dist/dom/components/spacer.js.map +1 -1
- package/dist/dom/components/spinner.js +4 -4
- package/dist/dom/components/spinner.js.map +1 -1
- package/dist/dom/components/stack.js +10 -10
- package/dist/dom/components/stack.js.map +1 -1
- package/dist/dom/components/switch.js +5 -6
- package/dist/dom/components/switch.js.map +1 -1
- package/dist/dom/components/text.js +4 -7
- package/dist/dom/components/text.js.map +1 -1
- package/dist/dom/components/textarea.js +2 -2
- package/dist/dom/components/textarea.js.map +1 -1
- package/dist/dom/components/video.js +2 -2
- package/dist/dom/components/video.js.map +1 -1
- package/dist/dom/debug.js +6 -8
- package/dist/dom/debug.js.map +1 -1
- package/dist/dom/index.d.ts +0 -1
- package/dist/dom/index.js +0 -1
- package/dist/dom/index.js.map +1 -1
- package/dist/dom/renderer.js +2 -3
- package/dist/dom/renderer.js.map +1 -1
- package/dist/variants.d.ts +90 -0
- package/dist/variants.js +206 -0
- package/dist/variants.js.map +1 -0
- package/package.json +2 -2
- package/src/canvas/QUICKSTART.md +12 -7
- package/src/canvas/README.md +8 -5
- package/src/canvas/events.ts +49 -7
- package/src/canvas/index.ts +0 -8
- package/src/canvas/layout.ts +68 -103
- package/src/canvas/paint.ts +172 -69
- package/src/canvas/renderer.ts +38 -46
- package/src/canvas/text.ts +2 -9
- package/src/canvas/types.ts +14 -0
- package/src/canvas/utils.ts +3 -69
- package/src/canvas/variants.ts +153 -0
- package/src/dom/README.md +8 -7
- package/src/dom/applicators/events.ts +1 -0
- package/src/dom/applicators/font.ts +16 -29
- package/src/dom/applicators/index.ts +56 -46
- package/src/dom/canvas/index.ts +2 -2
- package/src/dom/components/app.ts +2 -2
- package/src/dom/components/audio.ts +2 -2
- package/src/dom/components/avatar.ts +3 -4
- package/src/dom/components/badge.ts +3 -4
- package/src/dom/components/button.ts +2 -2
- package/src/dom/components/card.ts +2 -2
- package/src/dom/components/center.ts +2 -2
- package/src/dom/components/checkbox.ts +4 -5
- package/src/dom/components/column.ts +2 -2
- package/src/dom/components/container.ts +2 -2
- package/src/dom/components/divider.ts +2 -2
- package/src/dom/components/grid.ts +10 -10
- package/src/dom/components/heading.ts +4 -6
- package/src/dom/components/hypenapp.ts +2 -2
- package/src/dom/components/icon.ts +4 -5
- package/src/dom/components/image.ts +2 -2
- package/src/dom/components/index.ts +3 -3
- package/src/dom/components/input.ts +2 -2
- package/src/dom/components/link.ts +2 -2
- package/src/dom/components/list.ts +2 -2
- package/src/dom/components/paragraph.ts +3 -4
- package/src/dom/components/progressbar.ts +3 -3
- package/src/dom/components/route.ts +2 -2
- package/src/dom/components/router.ts +2 -2
- package/src/dom/components/row.ts +10 -10
- package/src/dom/components/select.ts +3 -4
- package/src/dom/components/slider.ts +2 -2
- package/src/dom/components/spacer.ts +2 -2
- package/src/dom/components/spinner.ts +4 -4
- package/src/dom/components/stack.ts +10 -10
- package/src/dom/components/switch.ts +5 -6
- package/src/dom/components/text.ts +4 -7
- package/src/dom/components/textarea.ts +2 -2
- package/src/dom/components/video.ts +2 -2
- package/src/dom/debug.ts +6 -8
- package/src/dom/index.ts +0 -8
- package/src/dom/renderer.ts +2 -3
- package/src/variants.ts +249 -0
- package/dist/client.d.ts +0 -36
- package/dist/client.js +0 -47
- package/dist/client.js.map +0 -1
- package/src/client.ts +0 -88
package/README.md
CHANGED
|
@@ -127,21 +127,24 @@ await hypen.unmount();
|
|
|
127
127
|
|
|
128
128
|
## DOM Renderer (Low-Level)
|
|
129
129
|
|
|
130
|
-
For custom integrations
|
|
130
|
+
For custom integrations:
|
|
131
131
|
|
|
132
132
|
```typescript
|
|
133
133
|
import { app } from "@hypen-space/core";
|
|
134
134
|
import { Engine } from "@hypen-space/web-engine";
|
|
135
|
-
import {
|
|
135
|
+
import { DOMRenderer } from "@hypen-space/web";
|
|
136
136
|
|
|
137
137
|
const engine = new Engine();
|
|
138
138
|
await engine.init({ wasmUrl: "/hypen_engine_bg.wasm" });
|
|
139
139
|
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
140
|
+
const renderer = new DOMRenderer(document.getElementById("app")!, engine, {
|
|
141
|
+
enabled: true,
|
|
142
|
+
showHeatmap: true,
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
engine.setRenderCallback((patches) => {
|
|
146
|
+
renderer.applyPatches(patches);
|
|
147
|
+
});
|
|
145
148
|
|
|
146
149
|
engine.renderSource(`Column { Text("Hello!") }`);
|
|
147
150
|
```
|
|
@@ -237,17 +240,21 @@ Text("Hello")
|
|
|
237
240
|
|
|
238
241
|
## Canvas Renderer
|
|
239
242
|
|
|
240
|
-
Hardware-accelerated rendering
|
|
243
|
+
Hardware-accelerated rendering:
|
|
241
244
|
|
|
242
245
|
```typescript
|
|
243
|
-
import {
|
|
246
|
+
import { CanvasRenderer } from "@hypen-space/web";
|
|
244
247
|
|
|
245
248
|
const canvas = document.querySelector("canvas")!;
|
|
246
|
-
const
|
|
249
|
+
const renderer = new CanvasRenderer(canvas, engine, {
|
|
247
250
|
devicePixelRatio: window.devicePixelRatio,
|
|
248
251
|
enableAccessibility: true,
|
|
249
252
|
enableHitTesting: true,
|
|
250
253
|
});
|
|
254
|
+
|
|
255
|
+
engine.setRenderCallback((patches) => {
|
|
256
|
+
renderer.applyPatches(patches);
|
|
257
|
+
});
|
|
251
258
|
```
|
|
252
259
|
|
|
253
260
|
## Remote UI
|
|
@@ -256,15 +263,15 @@ Connect to a server-driven UI:
|
|
|
256
263
|
|
|
257
264
|
```typescript
|
|
258
265
|
import { RemoteEngine } from "@hypen-space/core";
|
|
259
|
-
import {
|
|
266
|
+
import { DOMRenderer } from "@hypen-space/web";
|
|
260
267
|
|
|
268
|
+
const renderer = new DOMRenderer(document.getElementById("app")!, engine);
|
|
261
269
|
const remote = new RemoteEngine("ws://localhost:3000", {
|
|
262
270
|
autoReconnect: true,
|
|
263
271
|
});
|
|
264
272
|
|
|
265
|
-
const { renderer } = createHypenClient(document.getElementById("app")!, remote);
|
|
266
|
-
|
|
267
273
|
remote
|
|
274
|
+
.onPatches((patches) => renderer.applyPatches(patches))
|
|
268
275
|
.onStateUpdate((state) => renderer.updateState(state))
|
|
269
276
|
.onConnect(() => console.log("Connected"));
|
|
270
277
|
|
package/dist/canvas/events.js
CHANGED
|
@@ -6,6 +6,20 @@
|
|
|
6
6
|
import { isPointInRoundedRect } from "./utils.js";
|
|
7
7
|
import { getScrollAwareBounds } from "./scroll.js";
|
|
8
8
|
import { resolveEventAction } from "./props.js";
|
|
9
|
+
// Maps a DOM event type to the applicator prop names the engine may have set
|
|
10
|
+
// on a node, in priority order. Multi-word events (`mouseenter`) need their
|
|
11
|
+
// proper camelCase form (`onMouseEnter`) since the engine emits applicator
|
|
12
|
+
// names verbatim. `mouseenter` also accepts `onHover` as an alias.
|
|
13
|
+
const CANVAS_EVENT_PROP_NAMES = {
|
|
14
|
+
mouseenter: ["onMouseEnter", "onHover", "onmouseenter", "mouseenter"],
|
|
15
|
+
mouseleave: ["onMouseLeave", "onmouseleave", "mouseleave"],
|
|
16
|
+
mousedown: ["onMouseDown", "onmousedown", "mousedown"],
|
|
17
|
+
mouseup: ["onMouseUp", "onmouseup", "mouseup"],
|
|
18
|
+
dblclick: ["onDblClick", "onDoubleClick", "ondblclick", "dblclick"],
|
|
19
|
+
contextmenu: ["onContextMenu", "oncontextmenu", "contextmenu"],
|
|
20
|
+
keydown: ["onKeyDown", "onkeydown", "keydown"],
|
|
21
|
+
keyup: ["onKeyUp", "onkeyup", "keyup"],
|
|
22
|
+
};
|
|
9
23
|
/**
|
|
10
24
|
* Canvas Event Manager
|
|
11
25
|
*/
|
|
@@ -184,6 +198,12 @@ export class CanvasEventManager {
|
|
|
184
198
|
const hit = this.hitTest(point);
|
|
185
199
|
const node = this.findClickableAncestor(hit) ?? hit;
|
|
186
200
|
this.mouseDownNode = node;
|
|
201
|
+
// Track pressed (`:active`) state so paint-time `:active` variants resolve.
|
|
202
|
+
// Repaint so the active style appears immediately on press.
|
|
203
|
+
if (node) {
|
|
204
|
+
node.pressed = true;
|
|
205
|
+
this.requestRedraw();
|
|
206
|
+
}
|
|
187
207
|
if (node && node.clickable) {
|
|
188
208
|
this.dispatchNodeEvent(node, "mousedown", {
|
|
189
209
|
button: e.button,
|
|
@@ -206,6 +226,12 @@ export class CanvasEventManager {
|
|
|
206
226
|
const point = this.getCanvasCoordinates(e);
|
|
207
227
|
const hit = this.hitTest(point);
|
|
208
228
|
const node = this.findClickableAncestor(hit) ?? hit;
|
|
229
|
+
// Clear the pressed (`:active`) flag from the node that was pressed —
|
|
230
|
+
// release ends `:active` even if the pointer drifted off the node first.
|
|
231
|
+
if (this.mouseDownNode && this.mouseDownNode.pressed) {
|
|
232
|
+
this.mouseDownNode.pressed = false;
|
|
233
|
+
this.requestRedraw();
|
|
234
|
+
}
|
|
209
235
|
if (node && node.clickable) {
|
|
210
236
|
this.dispatchNodeEvent(node, "mouseup", {
|
|
211
237
|
button: e.button,
|
|
@@ -340,13 +366,24 @@ export class CanvasEventManager {
|
|
|
340
366
|
* Dispatch event to engine
|
|
341
367
|
*/
|
|
342
368
|
dispatchNodeEvent(node, eventType, data) {
|
|
343
|
-
// Engine emits event applicators in camelCase (`onClick`, `
|
|
344
|
-
//
|
|
345
|
-
//
|
|
346
|
-
//
|
|
347
|
-
//
|
|
348
|
-
|
|
349
|
-
|
|
369
|
+
// Engine emits event applicators in camelCase (`onClick`, `onMouseEnter`).
|
|
370
|
+
// Multi-word DOM events like `mouseenter` must map to `onMouseEnter`, not
|
|
371
|
+
// the naive `onMouseenter` that `on${capitalize(eventType)}` would produce.
|
|
372
|
+
// The older flat form `onclick`/`onmouseenter` is still accepted. After
|
|
373
|
+
// prop normalisation the value is either a string (action name) or an
|
|
374
|
+
// object carrying an action name at `"0"` plus an auxiliary payload.
|
|
375
|
+
const propNames = CANVAS_EVENT_PROP_NAMES[eventType] ?? [
|
|
376
|
+
`on${eventType.charAt(0).toUpperCase()}${eventType.slice(1)}`,
|
|
377
|
+
`on${eventType}`,
|
|
378
|
+
eventType,
|
|
379
|
+
];
|
|
380
|
+
let spec;
|
|
381
|
+
for (const name of propNames) {
|
|
382
|
+
if (node.props[name] != null) {
|
|
383
|
+
spec = node.props[name];
|
|
384
|
+
break;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
350
387
|
// Actionable components fall back to the bare `action` prop on click.
|
|
351
388
|
if (spec == null && eventType === "click") {
|
|
352
389
|
spec = node.props.action;
|
|
@@ -382,6 +419,8 @@ export class CanvasEventManager {
|
|
|
382
419
|
this.canvas.removeEventListener("contextmenu", this.boundOnContextMenu);
|
|
383
420
|
this.canvas.removeEventListener("keydown", this.boundOnKeyDown);
|
|
384
421
|
this.canvas.removeEventListener("keyup", this.boundOnKeyUp);
|
|
422
|
+
if (this.mouseDownNode)
|
|
423
|
+
this.mouseDownNode.pressed = false;
|
|
385
424
|
this.rootNode = null;
|
|
386
425
|
this.hoveredNode = null;
|
|
387
426
|
this.focusedNode = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/canvas/events.ts"],"names":[],"mappings":"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"}
|
|
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
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* Browser-only module for rendering Hypen UI to Canvas
|
|
5
5
|
*/
|
|
6
6
|
export { CanvasRenderer } from "./renderer.js";
|
|
7
|
-
export { createCanvasClient as createHypenClient, createCanvasClient, type CanvasClient as HypenClient, type CanvasClient, type CanvasClientOptions as HypenClientOptions, type CanvasClientOptions, } from "../client.js";
|
|
8
7
|
export { registerPainter } from "./paint.js";
|
|
9
8
|
export { CanvasEventManager } from "./events.js";
|
|
10
9
|
export { InputOverlay } from "./input.js";
|
package/dist/canvas/index.js
CHANGED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* Browser-only module for rendering Hypen UI to Canvas
|
|
5
5
|
*/
|
|
6
6
|
export { CanvasRenderer } from "./renderer.js";
|
|
7
|
-
export { createCanvasClient as createHypenClient, createCanvasClient, } from "../client.js";
|
|
8
7
|
export { registerPainter } from "./paint.js";
|
|
9
8
|
export { CanvasEventManager } from "./events.js";
|
|
10
9
|
export { InputOverlay } from "./input.js";
|
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,
|
|
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.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* layout. Falls back to a basic flexbox implementation in environments
|
|
6
6
|
* without WASM support (e.g. test runners).
|
|
7
7
|
*/
|
|
8
|
-
import { parseSpacing, parseSize, cssLengthToPx, cssLengthToDimension
|
|
8
|
+
import { parseSpacing, parseSize, cssLengthToPx, cssLengthToDimension } from "./utils.js";
|
|
9
9
|
import { measureText } from "./text.js";
|
|
10
10
|
import { getImageNaturalAspect } from "./paint.js";
|
|
11
11
|
/**
|
|
@@ -43,6 +43,18 @@ export async function initTaffyLayout() {
|
|
|
43
43
|
taffyInitPromise = (async () => {
|
|
44
44
|
try {
|
|
45
45
|
taffy = await import("taffy-layout");
|
|
46
|
+
// In a server runtime (Bun/Node — including test runs where a JSDOM
|
|
47
|
+
// `window` may be globally registered by another test file), load the
|
|
48
|
+
// WASM from node_modules via fs. This path is deterministic; the
|
|
49
|
+
// fetch-based branch below depends on a reachable origin/CDN and must
|
|
50
|
+
// never be selected just because a test polyfilled `window`.
|
|
51
|
+
const isServerRuntime = typeof process !== "undefined" &&
|
|
52
|
+
!!(process.versions?.bun || process.versions?.node);
|
|
53
|
+
if (isServerRuntime) {
|
|
54
|
+
await taffy.loadTaffy();
|
|
55
|
+
taffyReady = true;
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
46
58
|
// Bundlers (esp. Bun's browser bundler) sometimes inline a file:// URL
|
|
47
59
|
// for import.meta.url inside taffy_wasm.js, which the browser blocks
|
|
48
60
|
// ("Not allowed to load local resource"). The package's own `loadTaffy`
|
|
@@ -50,28 +62,42 @@ export async function initTaffyLayout() {
|
|
|
50
62
|
// raw `__wbg_init` (default export of the `taffy-layout/wasm` subpath)
|
|
51
63
|
// directly with an explicit Response.
|
|
52
64
|
let usedExplicit = false;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
65
|
+
// Only take the fetch path in a real browser. Test environments (and
|
|
66
|
+
// anything else that installs a fake `window` global) must fall through
|
|
67
|
+
// to `loadTaffy()`, which resolves the WASM from the package on disk —
|
|
68
|
+
// a fake window without `location.origin` used to throw here and
|
|
69
|
+
// silently disable Taffy for the rest of the process.
|
|
70
|
+
const isRealBrowser = typeof window !== "undefined" &&
|
|
71
|
+
typeof fetch === "function" &&
|
|
72
|
+
typeof window.location?.origin === "string" &&
|
|
73
|
+
window.document?.defaultView === window;
|
|
74
|
+
if (isRealBrowser) {
|
|
75
|
+
try {
|
|
76
|
+
const candidates = [
|
|
77
|
+
new URL("/taffy_wasm_bg.wasm", window.location.origin),
|
|
78
|
+
new URL("https://cdn.jsdelivr.net/npm/taffy-layout@2.0.3/pkg/taffy_wasm_bg.wasm"),
|
|
79
|
+
new URL("https://unpkg.com/taffy-layout@2.0.3/pkg/taffy_wasm_bg.wasm"),
|
|
80
|
+
];
|
|
81
|
+
const rawWasm = await import(
|
|
82
|
+
/* @vite-ignore */ "taffy-layout/wasm");
|
|
83
|
+
const wbgInit = rawWasm.default;
|
|
84
|
+
for (const url of candidates) {
|
|
85
|
+
try {
|
|
86
|
+
const res = await fetch(url);
|
|
87
|
+
if (!res.ok)
|
|
88
|
+
continue;
|
|
89
|
+
await wbgInit({ module_or_path: res });
|
|
90
|
+
usedExplicit = true;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Try next candidate
|
|
95
|
+
}
|
|
73
96
|
}
|
|
74
97
|
}
|
|
98
|
+
catch {
|
|
99
|
+
// Fall through to loadTaffy()
|
|
100
|
+
}
|
|
75
101
|
}
|
|
76
102
|
if (!usedExplicit) {
|
|
77
103
|
await taffy.loadTaffy();
|
|
@@ -166,21 +192,9 @@ function buildTaffyStyle(node, parent = null) {
|
|
|
166
192
|
// `List` is the DSL's vertical-stack iterator (see dom/components/list.ts
|
|
167
193
|
// — `flex-direction: column` is its default). Match that here so feeds
|
|
168
194
|
// like Notifications stack their rows vertically instead of flowing
|
|
169
|
-
// sideways. The
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
// vertically because the List default won the tie-break).
|
|
173
|
-
const isListColumn = type === "list" &&
|
|
174
|
-
props.direction !== "horizontal" &&
|
|
175
|
-
props.flexDirection !== "row";
|
|
176
|
-
// Button defaults to `flex-direction: column` to match the DOM renderer
|
|
177
|
-
// (see dom/components/button.ts). With Taffy's default `align-items:
|
|
178
|
-
// stretch`, treating Button as a row caused inner `Column { Icon, Text }`
|
|
179
|
-
// children to collapse onto each other (icon overlapping label). Only
|
|
180
|
-
// apply the column default when no explicit `flexDirection` is set so a
|
|
181
|
-
// Tailwind `flex-row` on a button still wins.
|
|
182
|
-
const isButtonColumn = type === "button" && props.flexDirection === undefined;
|
|
183
|
-
const isColumn = !isStack && (type === "column" || isListColumn || isButtonColumn || props.flexDirection === "column");
|
|
195
|
+
// sideways. The `direction` prop can still flip it to row.
|
|
196
|
+
const isListColumn = type === "list" && props.direction !== "horizontal";
|
|
197
|
+
const isColumn = !isStack && (type === "column" || isListColumn || props.flexDirection === "column");
|
|
184
198
|
const isGrid = !isStack && (type === "grid" || props.display === "grid");
|
|
185
199
|
if (isStack) {
|
|
186
200
|
style.display = T.Display.Grid;
|
|
@@ -375,7 +389,7 @@ function buildTaffyStyle(node, parent = null) {
|
|
|
375
389
|
// Taffy defaults to `box-sizing: border-box`, so we add the
|
|
376
390
|
// padding/border ourselves into `size.height`.
|
|
377
391
|
const fontSize = cssLengthToPx(props.fontSize) ?? 16;
|
|
378
|
-
const lineHeight =
|
|
392
|
+
const lineHeight = cssLengthToPx(props.lineHeight) ?? fontSize * 1.5;
|
|
379
393
|
const minRows = type === "textarea" ? Math.max(1, Number(props.rows) || 3) : 1;
|
|
380
394
|
const padTop = cssLengthToPx(props.paddingTop ?? props.padding) ?? 0;
|
|
381
395
|
const padBottom = cssLengthToPx(props.paddingBottom ?? props.padding) ?? 0;
|
|
@@ -397,32 +411,7 @@ function buildTaffyStyle(node, parent = null) {
|
|
|
397
411
|
(parent.type.toLowerCase() === "grid" || parent.props.display === "grid");
|
|
398
412
|
const widthIn = parentIsGridLayout && props.width === "100%" ? undefined : props.width;
|
|
399
413
|
const heightIn = parentIsGridLayout && props.height === "100%" ? undefined : props.height;
|
|
400
|
-
|
|
401
|
-
// { width: 100% }` (and the symmetric column case). When a flex
|
|
402
|
-
// container has no explicit main-axis size and any child opts into
|
|
403
|
-
// weighted growth (`flex` / `flexGrow > 0`), Taffy would otherwise
|
|
404
|
-
// size the container to its min-content — so a Row of `flex-1`
|
|
405
|
-
// segmented-control buttons stayed pill-sized instead of stretching
|
|
406
|
-
// across the parent. Only do this when at least one child explicitly
|
|
407
|
-
// asks for flex, matching the DOM `:has(> [data-hypen-flex])` guard.
|
|
408
|
-
const isRowContainer = !isStack && !isGrid && !isColumn;
|
|
409
|
-
const isColumnContainer = !isStack && !isGrid && isColumn;
|
|
410
|
-
const childAsksFlex = node.children.some((c) => {
|
|
411
|
-
const fg = parseFloat(c.props.flexGrow);
|
|
412
|
-
if (Number.isFinite(fg) && fg > 0)
|
|
413
|
-
return true;
|
|
414
|
-
const f = parseFloat(c.props.flex);
|
|
415
|
-
return Number.isFinite(f) && f > 0;
|
|
416
|
-
});
|
|
417
|
-
let resolvedWidth = toDimension(widthIn);
|
|
418
|
-
let resolvedHeight = toDimension(heightIn);
|
|
419
|
-
if (childAsksFlex) {
|
|
420
|
-
if (isRowContainer && widthIn === undefined)
|
|
421
|
-
resolvedWidth = "100%";
|
|
422
|
-
if (isColumnContainer && heightIn === undefined)
|
|
423
|
-
resolvedHeight = "100%";
|
|
424
|
-
}
|
|
425
|
-
style.size = { width: resolvedWidth, height: resolvedHeight };
|
|
414
|
+
style.size = { width: toDimension(widthIn), height: toDimension(heightIn) };
|
|
426
415
|
}
|
|
427
416
|
// --- Min / Max constraints -------------------------------------------------
|
|
428
417
|
// Default `min-width: 0` for children of a Grid container. CSS makes
|
|
@@ -763,17 +752,12 @@ function buildTree(tree, node, parent = null) {
|
|
|
763
752
|
// container with size 0×0, and downstream siblings were placed on top of
|
|
764
753
|
// each other ("1,431 likes" overlapping the caption row was the visible
|
|
765
754
|
// symptom).
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
// those cases skip the measurement leaf and inherit a 0-height container,
|
|
769
|
-
// which made siblings stack on top of each other (a bound `0` overlapping
|
|
770
|
-
// the next line was the visible symptom in calorie-counter's hero).
|
|
771
|
-
if (node.type.toLowerCase() === "text" && props[0] != null && node.children.length === 0) {
|
|
772
|
-
const text = String(props[0]);
|
|
755
|
+
if (node.type.toLowerCase() === "text" && props[0] && node.children.length === 0) {
|
|
756
|
+
const text = String(props[0] || "");
|
|
773
757
|
const fontSize = cssLengthToPx(props.fontSize) ?? 16;
|
|
774
758
|
const fontWeight = props.fontWeight || "normal";
|
|
775
759
|
const fontFamily = props.fontFamily || "system-ui, sans-serif";
|
|
776
|
-
const lineHeight =
|
|
760
|
+
const lineHeight = cssLengthToPx(props.lineHeight) ?? fontSize * 1.2;
|
|
777
761
|
const p = parseSpacing(props.padding || 0);
|
|
778
762
|
if (props.paddingTop !== undefined)
|
|
779
763
|
p.top = cssLengthToPx(props.paddingTop) ?? 0;
|
|
@@ -1041,32 +1025,19 @@ function computeLayoutTaffy(ctx, node, availableWidth, availableHeight, x, y) {
|
|
|
1041
1025
|
* layout. Falls back to a basic JS flexbox implementation otherwise.
|
|
1042
1026
|
*/
|
|
1043
1027
|
export function computeLayout(ctx, node, availableWidth, availableHeight, x = 0, y = 0) {
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
try {
|
|
1053
|
-
if (taffyReady && taffy) {
|
|
1028
|
+
if (taffyReady && taffy) {
|
|
1029
|
+
computeLayoutTaffy(ctx, node, availableWidth, availableHeight, x, y);
|
|
1030
|
+
// After the first pass, Taffy's grid auto-row sizing for aspect-ratio
|
|
1031
|
+
// image leaves can collapse rows (the leaf's max-content height is 0
|
|
1032
|
+
// before column widths are known). Detect that pattern and re-run
|
|
1033
|
+
// with explicit `gridAutoRows` derived from the now-known column
|
|
1034
|
+
// width — see `annotateCollapsedAspectGrids`.
|
|
1035
|
+
if (annotateCollapsedAspectGrids(node)) {
|
|
1054
1036
|
computeLayoutTaffy(ctx, node, availableWidth, availableHeight, x, y);
|
|
1055
|
-
// After the first pass, Taffy's grid auto-row sizing for aspect-ratio
|
|
1056
|
-
// image leaves can collapse rows (the leaf's max-content height is 0
|
|
1057
|
-
// before column widths are known). Detect that pattern and re-run
|
|
1058
|
-
// with explicit `gridAutoRows` derived from the now-known column
|
|
1059
|
-
// width — see `annotateCollapsedAspectGrids`.
|
|
1060
|
-
if (annotateCollapsedAspectGrids(node)) {
|
|
1061
|
-
computeLayoutTaffy(ctx, node, availableWidth, availableHeight, x, y);
|
|
1062
|
-
}
|
|
1063
|
-
}
|
|
1064
|
-
else {
|
|
1065
|
-
computeLayoutFallback(ctx, node, availableWidth, availableHeight, x, y);
|
|
1066
1037
|
}
|
|
1067
1038
|
}
|
|
1068
|
-
|
|
1069
|
-
|
|
1039
|
+
else {
|
|
1040
|
+
computeLayoutFallback(ctx, node, availableWidth, availableHeight, x, y);
|
|
1070
1041
|
}
|
|
1071
1042
|
}
|
|
1072
1043
|
// ---------------------------------------------------------------------------
|
|
@@ -1182,13 +1153,12 @@ function computeLayoutFallback(ctx, node, availableWidth, availableHeight, x = 0
|
|
|
1182
1153
|
if (height === null)
|
|
1183
1154
|
height = size;
|
|
1184
1155
|
}
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
const text = String(node.props[0]);
|
|
1156
|
+
if (node.type.toLowerCase() === "text" && node.props[0]) {
|
|
1157
|
+
const text = String(node.props[0] || "");
|
|
1188
1158
|
const fontSize = cssLengthToPx(props.fontSize) ?? 16;
|
|
1189
1159
|
const fontWeight = props.fontWeight || "normal";
|
|
1190
1160
|
const fontFamily = props.fontFamily || "system-ui, sans-serif";
|
|
1191
|
-
const lineHeight =
|
|
1161
|
+
const lineHeight = cssLengthToPx(props.lineHeight) ?? fontSize * 1.2;
|
|
1192
1162
|
const maxWidth = width || availableAfterMargin.width - padding.left - padding.right;
|
|
1193
1163
|
const maxLinesRaw = props.maxLines;
|
|
1194
1164
|
const maxLines = typeof maxLinesRaw === "number"
|