@hypen-space/web 0.4.82 → 0.4.83

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.
Files changed (71) hide show
  1. package/dist/canvas/events.d.ts +30 -2
  2. package/dist/canvas/events.js +112 -30
  3. package/dist/canvas/events.js.map +1 -1
  4. package/dist/canvas/input.d.ts +15 -2
  5. package/dist/canvas/input.js +43 -24
  6. package/dist/canvas/input.js.map +1 -1
  7. package/dist/canvas/layout.js +479 -96
  8. package/dist/canvas/layout.js.map +1 -1
  9. package/dist/canvas/paint.d.ts +4 -0
  10. package/dist/canvas/paint.js +141 -29
  11. package/dist/canvas/paint.js.map +1 -1
  12. package/dist/canvas/props.d.ts +55 -0
  13. package/dist/canvas/props.js +121 -0
  14. package/dist/canvas/props.js.map +1 -0
  15. package/dist/canvas/renderer.d.ts +13 -0
  16. package/dist/canvas/renderer.js +109 -11
  17. package/dist/canvas/renderer.js.map +1 -1
  18. package/dist/canvas/scroll.d.ts +27 -3
  19. package/dist/canvas/scroll.js +66 -26
  20. package/dist/canvas/scroll.js.map +1 -1
  21. package/dist/canvas/selection.js +3 -4
  22. package/dist/canvas/selection.js.map +1 -1
  23. package/dist/canvas/utils.d.ts +23 -3
  24. package/dist/canvas/utils.js +90 -30
  25. package/dist/canvas/utils.js.map +1 -1
  26. package/dist/dom/applicators/border.js +9 -0
  27. package/dist/dom/applicators/border.js.map +1 -1
  28. package/dist/dom/applicators/font.js +18 -1
  29. package/dist/dom/applicators/font.js.map +1 -1
  30. package/dist/dom/applicators/layout.js +44 -8
  31. package/dist/dom/applicators/layout.js.map +1 -1
  32. package/dist/dom/applicators/margin.js +18 -53
  33. package/dist/dom/applicators/margin.js.map +1 -1
  34. package/dist/dom/applicators/padding.js +21 -33
  35. package/dist/dom/applicators/padding.js.map +1 -1
  36. package/dist/dom/applicators/typography.js +13 -1
  37. package/dist/dom/applicators/typography.js.map +1 -1
  38. package/dist/dom/components/column.d.ts +11 -2
  39. package/dist/dom/components/column.js +12 -4
  40. package/dist/dom/components/column.js.map +1 -1
  41. package/dist/dom/components/image.js +9 -3
  42. package/dist/dom/components/image.js.map +1 -1
  43. package/dist/dom/components/input.js +11 -0
  44. package/dist/dom/components/input.js.map +1 -1
  45. package/dist/dom/components/textarea.js +8 -0
  46. package/dist/dom/components/textarea.js.map +1 -1
  47. package/dist/dom/renderer.d.ts +18 -0
  48. package/dist/dom/renderer.js +87 -3
  49. package/dist/dom/renderer.js.map +1 -1
  50. package/package.json +2 -2
  51. package/src/canvas/PARITY.md +254 -0
  52. package/src/canvas/events.ts +113 -32
  53. package/src/canvas/input.ts +44 -25
  54. package/src/canvas/layout.ts +492 -91
  55. package/src/canvas/paint.ts +143 -29
  56. package/src/canvas/props.ts +117 -0
  57. package/src/canvas/renderer.ts +132 -11
  58. package/src/canvas/scroll.ts +62 -29
  59. package/src/canvas/selection.ts +3 -4
  60. package/src/canvas/utils.ts +83 -31
  61. package/src/dom/applicators/border.ts +9 -0
  62. package/src/dom/applicators/font.ts +16 -1
  63. package/src/dom/applicators/layout.ts +34 -7
  64. package/src/dom/applicators/margin.ts +16 -43
  65. package/src/dom/applicators/padding.ts +19 -27
  66. package/src/dom/applicators/typography.ts +11 -1
  67. package/src/dom/components/column.ts +12 -4
  68. package/src/dom/components/image.ts +8 -3
  69. package/src/dom/components/input.ts +11 -0
  70. package/src/dom/components/textarea.ts +8 -0
  71. package/src/dom/renderer.ts +92 -3
@@ -17,6 +17,7 @@ export declare class CanvasEventManager {
17
17
  private hoveredNode;
18
18
  private focusedNode;
19
19
  private mouseDownNode;
20
+ private focusChangeHandler;
20
21
  private boundOnMouseMove;
21
22
  private boundOnMouseDown;
22
23
  private boundOnMouseUp;
@@ -30,12 +31,27 @@ export declare class CanvasEventManager {
30
31
  * Set the root node for hit testing
31
32
  */
32
33
  setRootNode(node: VirtualNode | null): void;
34
+ /**
35
+ * Subscribe to focus changes. Used by the renderer to mount the
36
+ * `InputOverlay` HTML element when an Input/Textarea gains focus and
37
+ * unmount it when focus moves away. Without this hookup the canvas
38
+ * Input painted as a pretty pill but a click on it did nothing — the
39
+ * overlay was constructed but never invoked.
40
+ */
41
+ setFocusChangeHandler(fn: ((next: VirtualNode | null, prev: VirtualNode | null) => void) | null): void;
33
42
  /**
34
43
  * Setup canvas event listeners
35
44
  */
36
45
  private setupEventListeners;
37
46
  /**
38
- * Get canvas coordinates from mouse event
47
+ * Get canvas coordinates from mouse event.
48
+ *
49
+ * Returns LOGICAL pixels (CSS pixels), matching the layout coordinate
50
+ * space. Layout is computed in logical units because the renderer calls
51
+ * `ctx.scale(dpr, dpr)` once at setup; do NOT multiply by `canvas.width /
52
+ * rect.width` here — that would land hit tests in canvas-pixel space (2x
53
+ * on a HiDPI Mac), with the practical effect that the cursor changes to a
54
+ * pointer above the actual element instead of on it.
39
55
  */
40
56
  private getCanvasCoordinates;
41
57
  /**
@@ -43,9 +59,19 @@ export declare class CanvasEventManager {
43
59
  */
44
60
  private hitTest;
45
61
  /**
46
- * Recursively test node and children
62
+ * Recursively test node and children. Absolute-positioned siblings are
63
+ * checked first because they paint on top (see `paint.ts` overlay
64
+ * ordering) — without this, a click on the Story's close-button overlay
65
+ * lands on the underlying Image instead.
47
66
  */
48
67
  private hitTestNode;
68
+ /**
69
+ * Walk up from a node to find the nearest clickable ancestor (or the node
70
+ * itself if it's clickable). Returns null if none. Used so that hovering
71
+ * a non-clickable child of a Button (e.g. the Icon inside a transparent
72
+ * nav button) still resolves to the Button for cursor + click purposes.
73
+ */
74
+ private findClickableAncestor;
49
75
  /**
50
76
  * Handle mouse move
51
77
  */
@@ -79,6 +105,8 @@ export declare class CanvasEventManager {
79
105
  * Set focused node
80
106
  */
81
107
  private setFocus;
108
+ /** Public for the renderer's overlay-blur path. */
109
+ clearFocus(): void;
82
110
  /**
83
111
  * Update cursor based on node
84
112
  */
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { isPointInRoundedRect } from "./utils.js";
7
7
  import { getScrollAwareBounds } from "./scroll.js";
8
+ import { resolveEventAction } from "./props.js";
8
9
  /**
9
10
  * Canvas Event Manager
10
11
  */
@@ -15,6 +16,7 @@ export class CanvasEventManager {
15
16
  hoveredNode = null;
16
17
  focusedNode = null;
17
18
  mouseDownNode = null;
19
+ focusChangeHandler = null;
18
20
  // Bound handler references for cleanup
19
21
  boundOnMouseMove;
20
22
  boundOnMouseDown;
@@ -35,6 +37,16 @@ export class CanvasEventManager {
35
37
  setRootNode(node) {
36
38
  this.rootNode = node;
37
39
  }
40
+ /**
41
+ * Subscribe to focus changes. Used by the renderer to mount the
42
+ * `InputOverlay` HTML element when an Input/Textarea gains focus and
43
+ * unmount it when focus moves away. Without this hookup the canvas
44
+ * Input painted as a pretty pill but a click on it did nothing — the
45
+ * overlay was constructed but never invoked.
46
+ */
47
+ setFocusChangeHandler(fn) {
48
+ this.focusChangeHandler = fn;
49
+ }
38
50
  /**
39
51
  * Setup canvas event listeners
40
52
  */
@@ -57,15 +69,20 @@ export class CanvasEventManager {
57
69
  this.canvas.addEventListener("keyup", this.boundOnKeyUp);
58
70
  }
59
71
  /**
60
- * Get canvas coordinates from mouse event
72
+ * Get canvas coordinates from mouse event.
73
+ *
74
+ * Returns LOGICAL pixels (CSS pixels), matching the layout coordinate
75
+ * space. Layout is computed in logical units because the renderer calls
76
+ * `ctx.scale(dpr, dpr)` once at setup; do NOT multiply by `canvas.width /
77
+ * rect.width` here — that would land hit tests in canvas-pixel space (2x
78
+ * on a HiDPI Mac), with the practical effect that the cursor changes to a
79
+ * pointer above the actual element instead of on it.
61
80
  */
62
81
  getCanvasCoordinates(e) {
63
82
  const rect = this.canvas.getBoundingClientRect();
64
- const scaleX = this.canvas.width / rect.width;
65
- const scaleY = this.canvas.height / rect.height;
66
83
  return {
67
- x: (e.clientX - rect.left) * scaleX,
68
- y: (e.clientY - rect.top) * scaleY,
84
+ x: e.clientX - rect.left,
85
+ y: e.clientY - rect.top,
69
86
  };
70
87
  }
71
88
  /**
@@ -77,7 +94,10 @@ export class CanvasEventManager {
77
94
  return this.hitTestNode(this.rootNode, point);
78
95
  }
79
96
  /**
80
- * Recursively test node and children
97
+ * Recursively test node and children. Absolute-positioned siblings are
98
+ * checked first because they paint on top (see `paint.ts` overlay
99
+ * ordering) — without this, a click on the Story's close-button overlay
100
+ * lands on the underlying Image instead.
81
101
  */
82
102
  hitTestNode(node, point) {
83
103
  if (!node.visible || !node.layout)
@@ -85,9 +105,20 @@ export class CanvasEventManager {
85
105
  const bounds = getScrollAwareBounds(node);
86
106
  if (!bounds)
87
107
  return null;
88
- // Test children first (front to back)
108
+ // Front-to-back order: absolute overlays (newest in paint stack)
109
+ // first, then flow children in reverse paint order.
89
110
  for (let i = node.children.length - 1; i >= 0; i--) {
90
111
  const child = node.children[i];
112
+ if (child.props.position !== "absolute")
113
+ continue;
114
+ const hit = this.hitTestNode(child, point);
115
+ if (hit)
116
+ return hit;
117
+ }
118
+ for (let i = node.children.length - 1; i >= 0; i--) {
119
+ const child = node.children[i];
120
+ if (child.props.position === "absolute")
121
+ continue;
91
122
  const hit = this.hitTestNode(child, point);
92
123
  if (hit)
93
124
  return hit;
@@ -99,12 +130,31 @@ export class CanvasEventManager {
99
130
  }
100
131
  return null;
101
132
  }
133
+ /**
134
+ * Walk up from a node to find the nearest clickable ancestor (or the node
135
+ * itself if it's clickable). Returns null if none. Used so that hovering
136
+ * a non-clickable child of a Button (e.g. the Icon inside a transparent
137
+ * nav button) still resolves to the Button for cursor + click purposes.
138
+ */
139
+ findClickableAncestor(node) {
140
+ let current = node;
141
+ while (current) {
142
+ if (current.clickable)
143
+ return current;
144
+ current = current.parent;
145
+ }
146
+ return null;
147
+ }
102
148
  /**
103
149
  * Handle mouse move
104
150
  */
105
151
  onMouseMove(e) {
106
152
  const point = this.getCanvasCoordinates(e);
107
- const node = this.hitTest(point);
153
+ const hit = this.hitTest(point);
154
+ // Resolve to the clickable ancestor so the cursor stays a pointer over
155
+ // the whole Button surface (not flashing back to default whenever the
156
+ // mouse passes over the Button's non-clickable Icon child).
157
+ const node = this.findClickableAncestor(hit) ?? hit;
108
158
  // Update hover state
109
159
  if (node !== this.hoveredNode) {
110
160
  // Leave old node
@@ -129,7 +179,10 @@ export class CanvasEventManager {
129
179
  */
130
180
  onMouseDown(e) {
131
181
  const point = this.getCanvasCoordinates(e);
132
- const node = this.hitTest(point);
182
+ // Same lift-to-clickable as hover so a click on a Button's Icon child
183
+ // dispatches against the Button (where `onClick` actually lives).
184
+ const hit = this.hitTest(point);
185
+ const node = this.findClickableAncestor(hit) ?? hit;
133
186
  this.mouseDownNode = node;
134
187
  if (node && node.clickable) {
135
188
  this.dispatchNodeEvent(node, "mousedown", {
@@ -151,7 +204,8 @@ export class CanvasEventManager {
151
204
  */
152
205
  onMouseUp(e) {
153
206
  const point = this.getCanvasCoordinates(e);
154
- const node = this.hitTest(point);
207
+ const hit = this.hitTest(point);
208
+ const node = this.findClickableAncestor(hit) ?? hit;
155
209
  if (node && node.clickable) {
156
210
  this.dispatchNodeEvent(node, "mouseup", {
157
211
  button: e.button,
@@ -159,14 +213,19 @@ export class CanvasEventManager {
159
213
  clientY: e.clientY,
160
214
  });
161
215
  }
162
- this.mouseDownNode = null;
216
+ // NOTE: do NOT clear `this.mouseDownNode` here — the browser fires
217
+ // `click` after `mouseup`, and onClick uses mouseDownNode to verify
218
+ // press+release happened on the same target. Clearing here meant the
219
+ // click handler always saw `null` and silently dropped every click.
220
+ // The click handler clears mouseDownNode itself.
163
221
  }
164
222
  /**
165
223
  * Handle click
166
224
  */
167
225
  onClick(e) {
168
226
  const point = this.getCanvasCoordinates(e);
169
- const node = this.hitTest(point);
227
+ const hit = this.hitTest(point);
228
+ const node = this.findClickableAncestor(hit) ?? hit;
170
229
  if (node && node.clickable && node === this.mouseDownNode) {
171
230
  this.dispatchNodeEvent(node, "click", {
172
231
  button: e.button,
@@ -174,6 +233,7 @@ export class CanvasEventManager {
174
233
  clientY: e.clientY,
175
234
  });
176
235
  }
236
+ this.mouseDownNode = null;
177
237
  }
178
238
  /**
179
239
  * Handle double click
@@ -238,17 +298,24 @@ export class CanvasEventManager {
238
298
  setFocus(node) {
239
299
  if (node === this.focusedNode)
240
300
  return;
241
- if (this.focusedNode) {
242
- this.focusedNode.focused = false;
243
- this.dispatchNodeEvent(this.focusedNode, "blur", {});
301
+ const prev = this.focusedNode;
302
+ if (prev) {
303
+ prev.focused = false;
304
+ this.dispatchNodeEvent(prev, "blur", {});
244
305
  }
245
306
  this.focusedNode = node;
246
307
  if (node) {
247
308
  node.focused = true;
248
309
  this.dispatchNodeEvent(node, "focus", {});
249
310
  }
311
+ if (this.focusChangeHandler)
312
+ this.focusChangeHandler(node, prev);
250
313
  this.requestRedraw();
251
314
  }
315
+ /** Public for the renderer's overlay-blur path. */
316
+ clearFocus() {
317
+ this.setFocus(null);
318
+ }
252
319
  /**
253
320
  * Update cursor based on node
254
321
  */
@@ -257,28 +324,43 @@ export class CanvasEventManager {
257
324
  this.canvas.style.cursor = "default";
258
325
  return;
259
326
  }
260
- const cursor = node.props.cursor || (node.clickable ? "pointer" : "default");
327
+ let cursor = node.props.cursor;
328
+ if (!cursor) {
329
+ const t = node.type.toLowerCase();
330
+ if (t === "input" || t === "textarea")
331
+ cursor = "text";
332
+ else if (node.clickable)
333
+ cursor = "pointer";
334
+ else
335
+ cursor = "default";
336
+ }
261
337
  this.canvas.style.cursor = cursor;
262
338
  }
263
339
  /**
264
340
  * Dispatch event to engine
265
341
  */
266
342
  dispatchNodeEvent(node, eventType, data) {
267
- // Check if node has action handler for this event
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
- }
273
- if (actionName && typeof actionName === "string") {
274
- // Dispatch to engine
275
- this.engine.dispatchAction(actionName, {
276
- type: eventType,
277
- nodeId: node.id,
278
- timestamp: Date.now(),
279
- ...data,
280
- });
343
+ // Engine emits event applicators in camelCase (`onClick`, `onChange`). The
344
+ // older flat form `onclick` is still accepted. After prop normalisation the
345
+ // value is either a string (action name) or an object carrying an action
346
+ // name at `"0"` plus an auxiliary payload (e.g. `{ "0": "@router.push",
347
+ // to: "/notifications" }` for `@router.push(to: "/notifications")`).
348
+ const camel = `on${eventType.charAt(0).toUpperCase()}${eventType.slice(1)}`;
349
+ let spec = node.props[camel] ?? node.props[`on${eventType}`] ?? node.props[eventType];
350
+ // Actionable components fall back to the bare `action` prop on click.
351
+ if (spec == null && eventType === "click") {
352
+ spec = node.props.action;
281
353
  }
354
+ const resolved = resolveEventAction(spec);
355
+ if (!resolved)
356
+ return;
357
+ this.engine.dispatchAction(resolved.actionName, {
358
+ type: eventType,
359
+ nodeId: node.id,
360
+ timestamp: Date.now(),
361
+ ...resolved.payload,
362
+ ...data,
363
+ });
282
364
  }
283
365
  /**
284
366
  * Request redraw from renderer
@@ -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":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAOhD;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAoB;IAC1B,MAAM,CAAU;IAChB,QAAQ,GAAuB,IAAI,CAAC;IACpC,WAAW,GAAuB,IAAI,CAAC;IACvC,WAAW,GAAuB,IAAI,CAAC;IACvC,aAAa,GAAuB,IAAI,CAAC;IACzC,kBAAkB,GAEf,IAAI,CAAC;IAEhB,uCAAuC;IAC/B,gBAAgB,CAA2B;IAC3C,gBAAgB,CAA2B;IAC3C,cAAc,CAA2B;IACzC,YAAY,CAA2B;IACvC,kBAAkB,CAA2B;IAC7C,kBAAkB,CAA2B;IAC7C,cAAc,CAA8B;IAC5C,YAAY,CAA8B;IAElD,YAAY,MAAyB,EAAE,MAAe;QACpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAwB;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACH,qBAAqB,CACnB,EAAyE;QAEzE,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;OASG;IACK,oBAAoB,CAAC,CAAa;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACjD,OAAO;YACL,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;YACxB,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,KAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,IAAiB,EAAE,KAAY;QACjD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAE/C,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,iEAAiE;QACjE,oDAAoD;QACpD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU;gBAAE,SAAS;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;QACtB,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU;gBAAE,SAAS;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;QACtB,CAAC;QAED,iBAAiB;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QACzC,IAAI,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,qBAAqB,CAAC,IAAwB;QACpD,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,OAAO,OAAO,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,SAAS;gBAAE,OAAO,OAAO,CAAC;YACtC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,CAAa;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,uEAAuE;QACvE,sEAAsE;QACtE,4DAA4D;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAEpD,qBAAqB;QACrB,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9B,iBAAiB;YACjB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;gBACjC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,iBAAiB;YACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,gBAAgB;YAChB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAExB,mCAAmC;YACnC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,CAAa;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC3C,sEAAsE;QACtE,kEAAkE;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAEpD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE;gBACxC,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;QACL,CAAC;QAED,eAAe;QACf,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,CAAa;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAEpD,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE;gBACtC,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;QACL,CAAC;QAED,mEAAmE;QACnE,oEAAoE;QACpE,qEAAqE;QACrE,oEAAoE;QACpE,iDAAiD;IACnD,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,CAAa;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAEpD,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1D,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE;gBACpC,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,CAAa;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE;gBACvC,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,CAAa;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAE5E,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACjD,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE;oBAC1C,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,CAAgB;QAChC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE;gBAClD,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,CAAgB;QAC9B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;gBAChD,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,IAAwB;QACvC,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW;YAAE,OAAO;QAEtC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB;YAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEjE,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,mDAAmD;IACnD,UAAU;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,IAAwB;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;YACrC,OAAO;QACT,CAAC;QAED,IAAI,MAAM,GAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,UAAU;gBAAE,MAAM,GAAG,MAAM,CAAC;iBAClD,IAAI,IAAI,CAAC,SAAS;gBAAE,MAAM,GAAG,SAAS,CAAC;;gBACvC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAiB,EAAE,SAAiB,EAAE,IAAS;QACvE,2EAA2E;QAC3E,4EAA4E;QAC5E,yEAAyE;QACzE,wEAAwE;QACxE,qEAAqE;QACrE,MAAM,KAAK,GAAG,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,IAAI,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE/F,sEAAsE;QACtE,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC9C,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,GAAG,QAAQ,CAAC,OAAO;YACnB,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,yDAAyD;QACzD,mCAAmC;QACnC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;CACF"}
@@ -20,7 +20,12 @@ export declare class InputOverlay {
20
20
  private engine;
21
21
  constructor(container: HTMLElement | null);
22
22
  /**
23
- * Show input overlay for a node
23
+ * Show input overlay for a node.
24
+ *
25
+ * Type comparison is case-insensitive — the engine emits `"Input"` /
26
+ * `"Textarea"`, but the overlay branch was looking for lowercase
27
+ * `"textarea"` and always created an `<input>` (so multi-line typing
28
+ * couldn't enter newlines and the visible caret was the wrong height).
24
29
  */
25
30
  showInput(node: VirtualNode, canvasBounds: DOMRect, onChange: (value: string) => void, engine?: BindEngine | null): void;
26
31
  /**
@@ -36,7 +41,15 @@ export declare class InputOverlay {
36
41
  */
37
42
  private styleOverlay;
38
43
  /**
39
- * Position overlay over canvas node
44
+ * Position overlay over canvas node.
45
+ *
46
+ * `bounds` is in canvas-local CSS pixels (the layout coordinate space
47
+ * the renderer paints into after `ctx.scale(dpr, dpr)`). The overlay is
48
+ * mounted on `document.body`, so we add `canvasBounds.left/top`
49
+ * (page coords from `getBoundingClientRect`) to land at the right
50
+ * absolute position regardless of where the canvas sits on the page.
51
+ * Adding `window.scrollX/Y` keeps the overlay pinned to the canvas
52
+ * even when the page scrolls between focus and reposition.
40
53
  */
41
54
  private positionOverlay;
42
55
  /**
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Handle text input using DOM overlay elements
5
5
  */
6
- import { getAbsoluteBounds } from "./utils.js";
6
+ import { getAbsoluteBounds, cssLengthToPx } from "./utils.js";
7
7
  /**
8
8
  * Input Overlay Manager
9
9
  */
@@ -18,7 +18,12 @@ export class InputOverlay {
18
18
  this.container = container || {};
19
19
  }
20
20
  /**
21
- * Show input overlay for a node
21
+ * Show input overlay for a node.
22
+ *
23
+ * Type comparison is case-insensitive — the engine emits `"Input"` /
24
+ * `"Textarea"`, but the overlay branch was looking for lowercase
25
+ * `"textarea"` and always created an `<input>` (so multi-line typing
26
+ * couldn't enter newlines and the visible caret was the wrong height).
22
27
  */
23
28
  showInput(node, canvasBounds, onChange, engine) {
24
29
  // Skip if document is not available (non-browser environment)
@@ -31,7 +36,7 @@ export class InputOverlay {
31
36
  const bounds = getAbsoluteBounds(node);
32
37
  if (!bounds)
33
38
  return;
34
- const isMultiline = node.type === "textarea";
39
+ const isMultiline = node.type.toLowerCase() === "textarea";
35
40
  this.overlay = isMultiline
36
41
  ? document.createElement("textarea")
37
42
  : document.createElement("input");
@@ -45,8 +50,10 @@ export class InputOverlay {
45
50
  this.overlay.addEventListener("input", this.onInput.bind(this));
46
51
  this.overlay.addEventListener("blur", this.onBlur.bind(this));
47
52
  this.overlay.addEventListener("keydown", this.onKeyDown.bind(this));
48
- // Add to DOM and focus
49
- this.container.appendChild(this.overlay);
53
+ // Mount on document.body so absolute positioning is relative to the
54
+ // viewport (`canvasBounds.left/top` are page coords too) — no
55
+ // dependency on the canvas's wrapper having `position: relative`.
56
+ document.body.appendChild(this.overlay);
50
57
  this.overlay.focus();
51
58
  this.focusedNode = node;
52
59
  }
@@ -83,23 +90,33 @@ export class InputOverlay {
83
90
  const props = node.props;
84
91
  // Position
85
92
  this.positionOverlay(bounds, canvasBounds);
86
- // Font and text styling
87
- const fontSize = parseFloat(props.fontSize) || 16;
93
+ // Font and text styling — go through `cssLengthToPx` so values that
94
+ // arrive in `rem` ("0.875rem" for `text-sm`) round to real pixels
95
+ // instead of `parseFloat`'s bare 0.875 (which made the caret disappear).
96
+ const fontSize = cssLengthToPx(props.fontSize) ?? 16;
88
97
  const fontWeight = props.fontWeight || "normal";
89
98
  const fontFamily = props.fontFamily || "system-ui, sans-serif";
90
99
  const color = props.color || "#000000";
100
+ const padTop = cssLengthToPx(props.paddingTop ?? props.padding) ?? 0;
101
+ const padRight = cssLengthToPx(props.paddingRight ?? props.padding) ?? 0;
102
+ const padBottom = cssLengthToPx(props.paddingBottom ?? props.padding) ?? 0;
103
+ const padLeft = cssLengthToPx(props.paddingLeft ?? props.padding) ?? 0;
104
+ const borderRadius = cssLengthToPx(props.borderRadius) ?? 4;
91
105
  Object.assign(this.overlay.style, {
92
106
  fontSize: `${fontSize}px`,
93
- fontWeight: fontWeight,
107
+ fontWeight: String(fontWeight),
94
108
  fontFamily: fontFamily,
95
109
  color: color,
96
110
  border: "none",
97
- outline: "2px solid #007bff",
111
+ outline: "none",
98
112
  backgroundColor: props.backgroundColor || "#ffffff",
99
- padding: `${props.padding || 8}px`,
100
- borderRadius: `${props.borderRadius || 4}px`,
113
+ padding: `${padTop}px ${padRight}px ${padBottom}px ${padLeft}px`,
114
+ borderRadius: `${borderRadius}px`,
101
115
  boxSizing: "border-box",
102
116
  resize: "none",
117
+ // Keep the overlay above the canvas; the Bun-served stage has no
118
+ // stacking context of its own so a plain z-index works.
119
+ zIndex: "1000",
103
120
  });
104
121
  // Placeholder
105
122
  if (props.placeholder) {
@@ -111,25 +128,27 @@ export class InputOverlay {
111
128
  }
112
129
  }
113
130
  /**
114
- * Position overlay over canvas node
131
+ * Position overlay over canvas node.
132
+ *
133
+ * `bounds` is in canvas-local CSS pixels (the layout coordinate space
134
+ * the renderer paints into after `ctx.scale(dpr, dpr)`). The overlay is
135
+ * mounted on `document.body`, so we add `canvasBounds.left/top`
136
+ * (page coords from `getBoundingClientRect`) to land at the right
137
+ * absolute position regardless of where the canvas sits on the page.
138
+ * Adding `window.scrollX/Y` keeps the overlay pinned to the canvas
139
+ * even when the page scrolls between focus and reposition.
115
140
  */
116
141
  positionOverlay(bounds, canvasBounds) {
117
142
  if (!this.overlay)
118
143
  return;
119
- // Calculate scale factor between canvas and display
120
- const canvas = this.container.querySelector("canvas");
121
- const scaleX = canvasBounds.width / canvas.width;
122
- const scaleY = canvasBounds.height / canvas.height;
123
- const left = bounds.x * scaleX;
124
- const top = bounds.y * scaleY;
125
- const width = bounds.width * scaleX;
126
- const height = bounds.height * scaleY;
144
+ const sx = typeof window !== "undefined" ? window.scrollX : 0;
145
+ const sy = typeof window !== "undefined" ? window.scrollY : 0;
127
146
  Object.assign(this.overlay.style, {
128
147
  position: "absolute",
129
- left: `${left}px`,
130
- top: `${top}px`,
131
- width: `${width}px`,
132
- height: `${height}px`,
148
+ left: `${canvasBounds.left + sx + bounds.x}px`,
149
+ top: `${canvasBounds.top + sy + bounds.y}px`,
150
+ width: `${bounds.width}px`,
151
+ height: `${bounds.height}px`,
133
152
  });
134
153
  }
135
154
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/canvas/input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/canvas/input.ts"],"names":[],"mappings":"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"}