@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/dist/canvas/renderer.js
CHANGED
|
@@ -5,11 +5,15 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { frameworkLoggers } from "@hypen-space/core/logger";
|
|
7
7
|
const log = frameworkLoggers.canvas;
|
|
8
|
-
import { computeLayout } from "./layout.js";
|
|
8
|
+
import { computeLayout, initTaffyLayout } from "./layout.js";
|
|
9
9
|
import { paintNode, registerPainter } from "./paint.js";
|
|
10
10
|
import { CanvasEventManager } from "./events.js";
|
|
11
11
|
import { InputOverlay } from "./input.js";
|
|
12
12
|
import { AccessibilityLayer } from "./accessibility.js";
|
|
13
|
+
import { ScrollManager } from "./scroll.js";
|
|
14
|
+
import { SelectionManager } from "./selection.js";
|
|
15
|
+
import { setSelectionManager } from "./paint.js";
|
|
16
|
+
import { DirtyRectTracker } from "./dirty.js";
|
|
13
17
|
const DEFAULT_OPTIONS = {
|
|
14
18
|
devicePixelRatio: typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1,
|
|
15
19
|
backgroundColor: "#ffffff",
|
|
@@ -34,8 +38,11 @@ export class CanvasRenderer {
|
|
|
34
38
|
rootNode = null;
|
|
35
39
|
nodes = new Map();
|
|
36
40
|
eventManager;
|
|
41
|
+
scrollManager;
|
|
42
|
+
selectionManager;
|
|
37
43
|
inputOverlay;
|
|
38
44
|
accessibilityLayer;
|
|
45
|
+
dirtyTracker;
|
|
39
46
|
rafId = null;
|
|
40
47
|
needsRedraw = false;
|
|
41
48
|
frameCount = 0;
|
|
@@ -52,12 +59,21 @@ export class CanvasRenderer {
|
|
|
52
59
|
this.ctx = ctx;
|
|
53
60
|
// Setup HiDPI
|
|
54
61
|
this.setupHiDPI();
|
|
62
|
+
// Initialize dirty rect tracker
|
|
63
|
+
const dpr = this.options.devicePixelRatio || 1;
|
|
64
|
+
const rect = canvas.getBoundingClientRect();
|
|
65
|
+
this.dirtyTracker = new DirtyRectTracker(rect.width, rect.height);
|
|
55
66
|
// Initialize subsystems
|
|
56
67
|
this.eventManager = new CanvasEventManager(canvas, engine);
|
|
68
|
+
this.scrollManager = new ScrollManager(canvas, () => this.scheduleRedraw());
|
|
69
|
+
this.selectionManager = new SelectionManager(canvas, () => this.scheduleRedraw());
|
|
70
|
+
setSelectionManager(this.selectionManager);
|
|
57
71
|
this.inputOverlay = new InputOverlay(canvas.parentElement || (typeof document !== "undefined" ? document.body : null));
|
|
58
72
|
this.accessibilityLayer = new AccessibilityLayer(canvas.parentElement || (typeof document !== "undefined" ? document.body : null), this.options.enableAccessibility || false);
|
|
59
73
|
// Listen for redraw requests from event manager
|
|
60
74
|
this.canvas.addEventListener("hypen:redraw", () => this.scheduleRedraw());
|
|
75
|
+
// Eagerly initialise Taffy WASM for layout (non-blocking — fallback used until ready)
|
|
76
|
+
initTaffyLayout();
|
|
61
77
|
// Don't schedule initial render - wait for patches
|
|
62
78
|
}
|
|
63
79
|
/**
|
|
@@ -72,14 +88,34 @@ export class CanvasRenderer {
|
|
|
72
88
|
// Update canvas display size
|
|
73
89
|
this.canvas.style.width = `${rect.width}px`;
|
|
74
90
|
this.canvas.style.height = `${rect.height}px`;
|
|
91
|
+
// Sync dirty tracker with new canvas size
|
|
92
|
+
if (this.dirtyTracker) {
|
|
93
|
+
this.dirtyTracker.setCanvasSize(rect.width, rect.height);
|
|
94
|
+
this.dirtyTracker.markFullDirty();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Resize the canvas and re-run HiDPI setup + redraw.
|
|
99
|
+
* Called by DOMRenderer when the Canvas component's width/height props change.
|
|
100
|
+
*/
|
|
101
|
+
resize(width, height) {
|
|
102
|
+
this.canvas.width = width;
|
|
103
|
+
this.canvas.height = height;
|
|
104
|
+
this.setupHiDPI();
|
|
105
|
+
this.scheduleRedraw();
|
|
75
106
|
}
|
|
76
107
|
/**
|
|
77
108
|
* Apply patches from engine
|
|
78
109
|
*/
|
|
79
110
|
applyPatches(patches) {
|
|
111
|
+
const hadRoot = this.rootNode !== null;
|
|
80
112
|
for (const patch of patches) {
|
|
81
113
|
this.applyPatch(patch);
|
|
82
114
|
}
|
|
115
|
+
// On first render (root just appeared), mark the entire canvas dirty
|
|
116
|
+
if (this.options.enableDirtyRects && !hadRoot && this.rootNode !== null) {
|
|
117
|
+
this.dirtyTracker.markFullDirty();
|
|
118
|
+
}
|
|
83
119
|
// Update accessibility layer
|
|
84
120
|
if (this.rootNode) {
|
|
85
121
|
this.accessibilityLayer.syncTree(this.rootNode);
|
|
@@ -127,7 +163,7 @@ export class CanvasRenderer {
|
|
|
127
163
|
parent: null,
|
|
128
164
|
visible: true,
|
|
129
165
|
opacity: parseFloat(props.opacity) || 1,
|
|
130
|
-
clickable: elementType === "button" || !!props.onclick,
|
|
166
|
+
clickable: elementType === "button" || !!props.onclick || !!props.action,
|
|
131
167
|
hoverable: true,
|
|
132
168
|
focusable: elementType === "input" || elementType === "textarea" || elementType === "button",
|
|
133
169
|
focused: false,
|
|
@@ -142,6 +178,10 @@ export class CanvasRenderer {
|
|
|
142
178
|
const node = this.nodes.get(id);
|
|
143
179
|
if (!node)
|
|
144
180
|
return;
|
|
181
|
+
// Mark dirty before prop change (old bounds)
|
|
182
|
+
if (this.options.enableDirtyRects) {
|
|
183
|
+
this.dirtyTracker.markNodeDirty(node);
|
|
184
|
+
}
|
|
145
185
|
node.props[name] = value;
|
|
146
186
|
// Update computed properties
|
|
147
187
|
if (name === "visible") {
|
|
@@ -150,6 +190,13 @@ export class CanvasRenderer {
|
|
|
150
190
|
if (name === "opacity") {
|
|
151
191
|
node.opacity = parseFloat(value) || 1;
|
|
152
192
|
}
|
|
193
|
+
if (name === "action" || name === "onclick") {
|
|
194
|
+
node.clickable = !!value;
|
|
195
|
+
}
|
|
196
|
+
// Mark dirty after prop change (new bounds will be captured after layout)
|
|
197
|
+
if (this.options.enableDirtyRects) {
|
|
198
|
+
this.dirtyTracker.markNodeDirty(node);
|
|
199
|
+
}
|
|
153
200
|
// Update accessibility
|
|
154
201
|
this.accessibilityLayer.updateNode(node);
|
|
155
202
|
}
|
|
@@ -160,6 +207,9 @@ export class CanvasRenderer {
|
|
|
160
207
|
const node = this.nodes.get(id);
|
|
161
208
|
if (!node)
|
|
162
209
|
return;
|
|
210
|
+
if (this.options.enableDirtyRects) {
|
|
211
|
+
this.dirtyTracker.markNodeDirty(node);
|
|
212
|
+
}
|
|
163
213
|
delete node.props[name];
|
|
164
214
|
if (name === "visible") {
|
|
165
215
|
node.visible = true;
|
|
@@ -167,6 +217,9 @@ export class CanvasRenderer {
|
|
|
167
217
|
if (name === "opacity") {
|
|
168
218
|
node.opacity = 1;
|
|
169
219
|
}
|
|
220
|
+
if (this.options.enableDirtyRects) {
|
|
221
|
+
this.dirtyTracker.markNodeDirty(node);
|
|
222
|
+
}
|
|
170
223
|
this.accessibilityLayer.updateNode(node);
|
|
171
224
|
}
|
|
172
225
|
/**
|
|
@@ -176,7 +229,13 @@ export class CanvasRenderer {
|
|
|
176
229
|
const node = this.nodes.get(id);
|
|
177
230
|
if (!node)
|
|
178
231
|
return;
|
|
232
|
+
if (this.options.enableDirtyRects) {
|
|
233
|
+
this.dirtyTracker.markNodeDirty(node);
|
|
234
|
+
}
|
|
179
235
|
node.props[0] = text;
|
|
236
|
+
if (this.options.enableDirtyRects) {
|
|
237
|
+
this.dirtyTracker.markNodeDirty(node);
|
|
238
|
+
}
|
|
180
239
|
// Update accessibility
|
|
181
240
|
this.accessibilityLayer.updateNode(node);
|
|
182
241
|
}
|
|
@@ -191,6 +250,8 @@ export class CanvasRenderer {
|
|
|
191
250
|
if (parentId === "root" && id === "root") {
|
|
192
251
|
this.rootNode = child;
|
|
193
252
|
this.eventManager.setRootNode(child);
|
|
253
|
+
this.scrollManager.setRootNode(child);
|
|
254
|
+
this.selectionManager.setRootNode(child);
|
|
194
255
|
return;
|
|
195
256
|
}
|
|
196
257
|
// Otherwise find the parent node
|
|
@@ -200,6 +261,8 @@ export class CanvasRenderer {
|
|
|
200
261
|
if (parentId === "root") {
|
|
201
262
|
this.rootNode = child;
|
|
202
263
|
this.eventManager.setRootNode(child);
|
|
264
|
+
this.scrollManager.setRootNode(child);
|
|
265
|
+
this.selectionManager.setRootNode(child);
|
|
203
266
|
}
|
|
204
267
|
return;
|
|
205
268
|
}
|
|
@@ -217,6 +280,10 @@ export class CanvasRenderer {
|
|
|
217
280
|
else {
|
|
218
281
|
parent.children.push(child);
|
|
219
282
|
}
|
|
283
|
+
// Mark parent dirty since its children changed
|
|
284
|
+
if (this.options.enableDirtyRects) {
|
|
285
|
+
this.dirtyTracker.markNodeDirty(parent);
|
|
286
|
+
}
|
|
220
287
|
}
|
|
221
288
|
/**
|
|
222
289
|
* Move node in tree
|
|
@@ -227,11 +294,16 @@ export class CanvasRenderer {
|
|
|
227
294
|
if (!node || !node.parent)
|
|
228
295
|
return;
|
|
229
296
|
const oldParent = node.parent;
|
|
297
|
+
// Mark old position dirty before move
|
|
298
|
+
if (this.options.enableDirtyRects) {
|
|
299
|
+
this.dirtyTracker.markNodeDirty(node);
|
|
300
|
+
this.dirtyTracker.markNodeDirty(oldParent);
|
|
301
|
+
}
|
|
230
302
|
const oldIndex = oldParent.children.indexOf(node);
|
|
231
303
|
if (oldIndex >= 0) {
|
|
232
304
|
oldParent.children.splice(oldIndex, 1);
|
|
233
305
|
}
|
|
234
|
-
// Insert into new location
|
|
306
|
+
// Insert into new location (also marks new parent dirty)
|
|
235
307
|
this.onInsert(parentId, id, beforeId);
|
|
236
308
|
}
|
|
237
309
|
/**
|
|
@@ -241,6 +313,10 @@ export class CanvasRenderer {
|
|
|
241
313
|
const node = this.nodes.get(id);
|
|
242
314
|
if (!node)
|
|
243
315
|
return;
|
|
316
|
+
// Mark dirty before removal
|
|
317
|
+
if (this.options.enableDirtyRects) {
|
|
318
|
+
this.dirtyTracker.markNodeDirty(node);
|
|
319
|
+
}
|
|
244
320
|
// Remove from parent
|
|
245
321
|
if (node.parent) {
|
|
246
322
|
const index = node.parent.children.indexOf(node);
|
|
@@ -252,6 +328,8 @@ export class CanvasRenderer {
|
|
|
252
328
|
if (this.rootNode === node) {
|
|
253
329
|
this.rootNode = null;
|
|
254
330
|
this.eventManager.setRootNode(null);
|
|
331
|
+
this.scrollManager.setRootNode(null);
|
|
332
|
+
this.selectionManager.setRootNode(null);
|
|
255
333
|
}
|
|
256
334
|
// Remove from nodes map
|
|
257
335
|
this.nodes.delete(id);
|
|
@@ -279,6 +357,28 @@ export class CanvasRenderer {
|
|
|
279
357
|
*/
|
|
280
358
|
render() {
|
|
281
359
|
const startTime = performance.now();
|
|
360
|
+
const dpr = this.options.devicePixelRatio || 1;
|
|
361
|
+
if (this.options.enableDirtyRects) {
|
|
362
|
+
this.renderWithDirtyRects(dpr);
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
this.renderFull(dpr);
|
|
366
|
+
}
|
|
367
|
+
// Performance logging
|
|
368
|
+
if (this.options.logPerformance) {
|
|
369
|
+
const elapsed = performance.now() - startTime;
|
|
370
|
+
this.frameCount++;
|
|
371
|
+
if (performance.now() - this.lastFrameTime > 1000) {
|
|
372
|
+
log.debug(`Canvas FPS: ${this.frameCount}, Last frame: ${elapsed.toFixed(2)}ms`);
|
|
373
|
+
this.frameCount = 0;
|
|
374
|
+
this.lastFrameTime = performance.now();
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Full canvas repaint (default behavior when dirty rects disabled)
|
|
380
|
+
*/
|
|
381
|
+
renderFull(dpr) {
|
|
282
382
|
// Clear canvas
|
|
283
383
|
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
|
|
284
384
|
// Draw background
|
|
@@ -288,26 +388,59 @@ export class CanvasRenderer {
|
|
|
288
388
|
}
|
|
289
389
|
// Layout and paint
|
|
290
390
|
if (this.rootNode) {
|
|
291
|
-
// Compute layout
|
|
292
|
-
const dpr = this.options.devicePixelRatio || 1;
|
|
293
391
|
computeLayout(this.ctx, this.rootNode, this.canvas.width / dpr, this.canvas.height / dpr);
|
|
294
|
-
|
|
392
|
+
ScrollManager.updateScrollBounds(this.rootNode);
|
|
295
393
|
paintNode(this.ctx, this.rootNode);
|
|
296
|
-
// Debug: show layout bounds
|
|
297
394
|
if (this.options.showLayoutBounds) {
|
|
298
395
|
this.drawLayoutBounds(this.rootNode);
|
|
299
396
|
}
|
|
300
397
|
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Optimized render that only repaints dirty regions
|
|
401
|
+
*/
|
|
402
|
+
renderWithDirtyRects(dpr) {
|
|
403
|
+
// Always run layout so nodes have up-to-date bounds
|
|
404
|
+
if (this.rootNode) {
|
|
405
|
+
computeLayout(this.ctx, this.rootNode, this.canvas.width / dpr, this.canvas.height / dpr);
|
|
406
|
+
ScrollManager.updateScrollBounds(this.rootNode);
|
|
407
|
+
}
|
|
408
|
+
const dirtyRegion = this.dirtyTracker.getDirtyRegion();
|
|
409
|
+
this.dirtyTracker.clear();
|
|
410
|
+
// Nothing dirty — skip repaint entirely
|
|
411
|
+
if (dirtyRegion === null) {
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
this.ctx.save();
|
|
415
|
+
// Clip to dirty region so only affected pixels are drawn
|
|
416
|
+
this.ctx.beginPath();
|
|
417
|
+
this.ctx.rect(dirtyRegion.x, dirtyRegion.y, dirtyRegion.width, dirtyRegion.height);
|
|
418
|
+
this.ctx.clip();
|
|
419
|
+
// Clear only the dirty region
|
|
420
|
+
this.ctx.clearRect(dirtyRegion.x, dirtyRegion.y, dirtyRegion.width, dirtyRegion.height);
|
|
421
|
+
// Repaint background within dirty region
|
|
422
|
+
if (this.options.backgroundColor) {
|
|
423
|
+
this.ctx.fillStyle = this.options.backgroundColor;
|
|
424
|
+
this.ctx.fillRect(dirtyRegion.x, dirtyRegion.y, dirtyRegion.width, dirtyRegion.height);
|
|
425
|
+
}
|
|
426
|
+
// Repaint the full tree — clip path ensures only dirty pixels are touched
|
|
427
|
+
if (this.rootNode) {
|
|
428
|
+
paintNode(this.ctx, this.rootNode);
|
|
429
|
+
if (this.options.showLayoutBounds) {
|
|
430
|
+
this.drawLayoutBounds(this.rootNode);
|
|
309
431
|
}
|
|
310
432
|
}
|
|
433
|
+
this.ctx.restore();
|
|
434
|
+
// Debug: show dirty rect outline
|
|
435
|
+
if (this.options.showDirtyRects) {
|
|
436
|
+
this.ctx.save();
|
|
437
|
+
this.ctx.strokeStyle = "rgba(255, 0, 0, 0.8)";
|
|
438
|
+
this.ctx.lineWidth = 2;
|
|
439
|
+
this.ctx.setLineDash([4, 2]);
|
|
440
|
+
this.ctx.strokeRect(dirtyRegion.x, dirtyRegion.y, dirtyRegion.width, dirtyRegion.height);
|
|
441
|
+
this.ctx.setLineDash([]);
|
|
442
|
+
this.ctx.restore();
|
|
443
|
+
}
|
|
311
444
|
}
|
|
312
445
|
/**
|
|
313
446
|
* Draw layout bounds for debugging
|
|
@@ -336,6 +469,9 @@ export class CanvasRenderer {
|
|
|
336
469
|
this.rootNode = null;
|
|
337
470
|
this.nodes.clear();
|
|
338
471
|
this.eventManager.setRootNode(null);
|
|
472
|
+
this.scrollManager.setRootNode(null);
|
|
473
|
+
this.selectionManager.setRootNode(null);
|
|
474
|
+
this.dirtyTracker.clear();
|
|
339
475
|
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
|
|
340
476
|
}
|
|
341
477
|
/**
|
|
@@ -359,6 +495,9 @@ export class CanvasRenderer {
|
|
|
359
495
|
cancelAnimationFrame(this.rafId);
|
|
360
496
|
}
|
|
361
497
|
this.eventManager.destroy();
|
|
498
|
+
this.scrollManager.destroy();
|
|
499
|
+
this.selectionManager.destroy();
|
|
500
|
+
setSelectionManager(null);
|
|
362
501
|
this.accessibilityLayer.destroy();
|
|
363
502
|
}
|
|
364
503
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/canvas/renderer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/canvas/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scroll Manager
|
|
3
|
+
*
|
|
4
|
+
* Handles touch gestures, wheel events, momentum scrolling, and
|
|
5
|
+
* scrollbar rendering for the canvas renderer. Nodes with
|
|
6
|
+
* overflow: "scroll" | "auto" become scrollable containers.
|
|
7
|
+
*/
|
|
8
|
+
import type { VirtualNode, ScrollState, Rectangle } from "./types.js";
|
|
9
|
+
export declare function createScrollState(): ScrollState;
|
|
10
|
+
/** Returns true if the node is configured as a scrollable container. */
|
|
11
|
+
export declare function isScrollable(node: VirtualNode): boolean;
|
|
12
|
+
export declare class ScrollManager {
|
|
13
|
+
private canvas;
|
|
14
|
+
private rootNode;
|
|
15
|
+
private requestRedraw;
|
|
16
|
+
private activeNode;
|
|
17
|
+
private lastPointerX;
|
|
18
|
+
private lastPointerY;
|
|
19
|
+
private lastPointerTime;
|
|
20
|
+
private momentumRaf;
|
|
21
|
+
private lastMomentumTime;
|
|
22
|
+
private scrollbarFadeTimer;
|
|
23
|
+
private scrollbarLastActivity;
|
|
24
|
+
private boundWheel;
|
|
25
|
+
private boundTouchStart;
|
|
26
|
+
private boundTouchMove;
|
|
27
|
+
private boundTouchEnd;
|
|
28
|
+
private boundPointerDown;
|
|
29
|
+
private boundPointerMove;
|
|
30
|
+
private boundPointerUp;
|
|
31
|
+
constructor(canvas: HTMLCanvasElement, requestRedraw: () => void);
|
|
32
|
+
setRootNode(node: VirtualNode | null): void;
|
|
33
|
+
private setupEventListeners;
|
|
34
|
+
private canvasPoint;
|
|
35
|
+
/**
|
|
36
|
+
* Find the deepest scrollable ancestor at a canvas-space point,
|
|
37
|
+
* accounting for existing scroll offsets.
|
|
38
|
+
*/
|
|
39
|
+
private findScrollTarget;
|
|
40
|
+
private findScrollableAt;
|
|
41
|
+
/**
|
|
42
|
+
* Walk up from a node to find the nearest scrollable ancestor (excluding
|
|
43
|
+
* the node itself). Returns null if no scrollable ancestor exists.
|
|
44
|
+
*/
|
|
45
|
+
private findScrollableAncestor;
|
|
46
|
+
/**
|
|
47
|
+
* Check whether a scrollable node can scroll further in the given delta
|
|
48
|
+
* direction. Returns true if there is remaining scroll range.
|
|
49
|
+
*/
|
|
50
|
+
private canScrollInDirection;
|
|
51
|
+
private onWheel;
|
|
52
|
+
private onTouchStart;
|
|
53
|
+
private onTouchMove;
|
|
54
|
+
private onTouchEnd;
|
|
55
|
+
private onPointerDown;
|
|
56
|
+
private onPointerMove;
|
|
57
|
+
private onPointerUp;
|
|
58
|
+
private startDrag;
|
|
59
|
+
private moveDrag;
|
|
60
|
+
private endDrag;
|
|
61
|
+
private startMomentum;
|
|
62
|
+
private startSnapBack;
|
|
63
|
+
private stopMomentum;
|
|
64
|
+
private showScrollbar;
|
|
65
|
+
private beginScrollbarFade;
|
|
66
|
+
/**
|
|
67
|
+
* Draw scrollbar indicators for a scrollable node.
|
|
68
|
+
* Call this after painting the node's children, while the clip is still active.
|
|
69
|
+
*/
|
|
70
|
+
static paintScrollbars(ctx: CanvasRenderingContext2D, node: VirtualNode): void;
|
|
71
|
+
/**
|
|
72
|
+
* After layout is computed, calculate the total content size of
|
|
73
|
+
* scrollable containers so we know the max scroll range.
|
|
74
|
+
*/
|
|
75
|
+
static updateScrollBounds(node: VirtualNode): void;
|
|
76
|
+
destroy(): void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get absolute bounds for a node, accounting for scroll offsets of all
|
|
80
|
+
* ancestors. This is the scroll-aware replacement for getAbsoluteBounds.
|
|
81
|
+
*/
|
|
82
|
+
export declare function getScrollAwareBounds(node: VirtualNode): Rectangle | null;
|