@scenetest/vite-plugin 0.14.0 → 0.15.0

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 (94) hide show
  1. package/dist/analyze-app.d.ts +2 -4
  2. package/dist/analyze-app.d.ts.map +1 -1
  3. package/dist/analyze-app.js +6 -83
  4. package/dist/analyze-app.js.map +1 -1
  5. package/dist/dashboard.d.ts +2 -8
  6. package/dist/dashboard.d.ts.map +1 -1
  7. package/dist/dashboard.js +1135 -25
  8. package/dist/dashboard.js.map +1 -1
  9. package/dist/middleware.d.ts +2 -0
  10. package/dist/middleware.d.ts.map +1 -1
  11. package/dist/middleware.js +54 -219
  12. package/dist/middleware.js.map +1 -1
  13. package/dist/strip.js +1 -1
  14. package/dist/strip.js.map +1 -1
  15. package/dist-app/assets/index-C_QY29vh.css +1 -0
  16. package/dist-app/assets/index-Dc2U6bWz.js +17 -0
  17. package/dist-app/index.html +22 -0
  18. package/package.json +9 -12
  19. package/dist/panels/observer/audio.d.ts +0 -81
  20. package/dist/panels/observer/audio.d.ts.map +0 -1
  21. package/dist/panels/observer/audio.js +0 -296
  22. package/dist/panels/observer/audio.js.map +0 -1
  23. package/dist/panels/observer/auto.d.ts +0 -10
  24. package/dist/panels/observer/auto.d.ts.map +0 -1
  25. package/dist/panels/observer/auto.js +0 -11
  26. package/dist/panels/observer/auto.js.map +0 -1
  27. package/dist/panels/observer/fs-viewer.d.ts +0 -20
  28. package/dist/panels/observer/fs-viewer.d.ts.map +0 -1
  29. package/dist/panels/observer/fs-viewer.js +0 -536
  30. package/dist/panels/observer/fs-viewer.js.map +0 -1
  31. package/dist/panels/observer/fullscreen.d.ts +0 -24
  32. package/dist/panels/observer/fullscreen.d.ts.map +0 -1
  33. package/dist/panels/observer/fullscreen.js +0 -701
  34. package/dist/panels/observer/fullscreen.js.map +0 -1
  35. package/dist/panels/observer/history.d.ts +0 -41
  36. package/dist/panels/observer/history.d.ts.map +0 -1
  37. package/dist/panels/observer/history.js +0 -307
  38. package/dist/panels/observer/history.js.map +0 -1
  39. package/dist/panels/observer/index.d.ts +0 -33
  40. package/dist/panels/observer/index.d.ts.map +0 -1
  41. package/dist/panels/observer/index.js +0 -128
  42. package/dist/panels/observer/index.js.map +0 -1
  43. package/dist/panels/observer/panel.d.ts +0 -12
  44. package/dist/panels/observer/panel.d.ts.map +0 -1
  45. package/dist/panels/observer/panel.js +0 -461
  46. package/dist/panels/observer/panel.js.map +0 -1
  47. package/dist/panels/observer/render.d.ts +0 -109
  48. package/dist/panels/observer/render.d.ts.map +0 -1
  49. package/dist/panels/observer/render.js +0 -760
  50. package/dist/panels/observer/render.js.map +0 -1
  51. package/dist/panels/observer/state.d.ts +0 -57
  52. package/dist/panels/observer/state.d.ts.map +0 -1
  53. package/dist/panels/observer/state.js +0 -187
  54. package/dist/panels/observer/state.js.map +0 -1
  55. package/dist/panels/observer/styles.d.ts +0 -6
  56. package/dist/panels/observer/styles.d.ts.map +0 -1
  57. package/dist/panels/observer/styles.js +0 -1706
  58. package/dist/panels/observer/styles.js.map +0 -1
  59. package/dist/panels/observer/types.d.ts +0 -102
  60. package/dist/panels/observer/types.d.ts.map +0 -1
  61. package/dist/panels/observer/types.js +0 -5
  62. package/dist/panels/observer/types.js.map +0 -1
  63. package/dist/panels/observer/utils.d.ts +0 -45
  64. package/dist/panels/observer/utils.d.ts.map +0 -1
  65. package/dist/panels/observer/utils.js +0 -101
  66. package/dist/panels/observer/utils.js.map +0 -1
  67. package/dist/panels/recorder/auto.d.ts +0 -10
  68. package/dist/panels/recorder/auto.d.ts.map +0 -1
  69. package/dist/panels/recorder/auto.js +0 -11
  70. package/dist/panels/recorder/auto.js.map +0 -1
  71. package/dist/panels/recorder/capture.d.ts +0 -18
  72. package/dist/panels/recorder/capture.d.ts.map +0 -1
  73. package/dist/panels/recorder/capture.js +0 -218
  74. package/dist/panels/recorder/capture.js.map +0 -1
  75. package/dist/panels/recorder/index.d.ts +0 -41
  76. package/dist/panels/recorder/index.d.ts.map +0 -1
  77. package/dist/panels/recorder/index.js +0 -208
  78. package/dist/panels/recorder/index.js.map +0 -1
  79. package/dist/panels/recorder/panel.d.ts +0 -55
  80. package/dist/panels/recorder/panel.d.ts.map +0 -1
  81. package/dist/panels/recorder/panel.js +0 -284
  82. package/dist/panels/recorder/panel.js.map +0 -1
  83. package/dist/panels/recorder/reverse-selector.d.ts +0 -31
  84. package/dist/panels/recorder/reverse-selector.d.ts.map +0 -1
  85. package/dist/panels/recorder/reverse-selector.js +0 -116
  86. package/dist/panels/recorder/reverse-selector.js.map +0 -1
  87. package/dist/panels/recorder/styles.d.ts +0 -5
  88. package/dist/panels/recorder/styles.d.ts.map +0 -1
  89. package/dist/panels/recorder/styles.js +0 -300
  90. package/dist/panels/recorder/styles.js.map +0 -1
  91. package/dist/panels/recorder/types.d.ts +0 -51
  92. package/dist/panels/recorder/types.d.ts.map +0 -1
  93. package/dist/panels/recorder/types.js +0 -15
  94. package/dist/panels/recorder/types.js.map +0 -1
@@ -1,536 +0,0 @@
1
- /**
2
- * Filesystem Viewer — Force-directed graph visualization
3
- *
4
- * Renders assertion locations as a force-directed graph where:
5
- * - Each file with assertions becomes a node
6
- * - Files in the same directory are connected by edges
7
- * - Node size reflects assertion count
8
- * - Node color reflects pass/fail status
9
- * - Hover shows file details and assertion list
10
- */
11
- // ── Color palette ──────────────────────────────────────────────────
12
- const DIR_COLORS = [
13
- '#6e8efb', // blue
14
- '#f97316', // orange
15
- '#4ade80', // green
16
- '#f472b6', // pink
17
- '#a78bfa', // purple
18
- '#facc15', // yellow
19
- '#22d3ee', // cyan
20
- '#34d399', // emerald
21
- '#fb923c', // amber
22
- '#818cf8', // indigo
23
- '#e879f9', // fuchsia
24
- '#f87171', // red
25
- ];
26
- function dirColor(dirIndex) {
27
- return DIR_COLORS[dirIndex % DIR_COLORS.length];
28
- }
29
- // ── Build graph from LocationGroups ────────────────────────────────
30
- function buildGraphFromLocations(locations) {
31
- const fileMap = new Map();
32
- const dirMap = new Map();
33
- for (const loc of locations) {
34
- const file = loc.location?.file;
35
- if (!file)
36
- continue;
37
- const parts = file.split('/');
38
- const name = parts[parts.length - 1];
39
- const dir = parts.slice(0, -1).join('/') || '.';
40
- if (!dirMap.has(dir)) {
41
- dirMap.set(dir, dirMap.size);
42
- }
43
- let node = fileMap.get(file);
44
- if (!node) {
45
- node = { id: file, name, dir, passCount: 0, failCount: 0, totalCount: 0, assertions: [] };
46
- fileMap.set(file, node);
47
- }
48
- node.totalCount += loc.entries.length;
49
- for (const entry of loc.entries) {
50
- if (entry.result)
51
- node.passCount++;
52
- else
53
- node.failCount++;
54
- }
55
- node.assertions.push({
56
- description: loc.description,
57
- result: loc.lastResult,
58
- });
59
- }
60
- return { files: Array.from(fileMap.values()), dirMap };
61
- }
62
- // ── Force simulation ───────────────────────────────────────────────
63
- const REPULSION = 600;
64
- const ATTRACTION = 0.008;
65
- const EDGE_LENGTH = 100;
66
- const CENTER_GRAVITY = 0.012;
67
- const DAMPING = 0.9;
68
- const MIN_VELOCITY = 0.01;
69
- const MAX_VELOCITY = 8;
70
- function initSimulation(files) {
71
- const spread = Math.max(200, Math.sqrt(files.length) * 60);
72
- const nodes = files.map(f => ({
73
- ...f,
74
- x: (Math.random() - 0.5) * spread,
75
- y: (Math.random() - 0.5) * spread,
76
- vx: 0,
77
- vy: 0,
78
- r: Math.max(5, Math.min(20, 5 + Math.sqrt(f.totalCount) * 3)),
79
- pinned: false,
80
- }));
81
- // Build edges: connect files in the same directory
82
- const edges = [];
83
- const byDir = new Map();
84
- for (const node of nodes) {
85
- let group = byDir.get(node.dir);
86
- if (!group) {
87
- group = [];
88
- byDir.set(node.dir, group);
89
- }
90
- group.push(node);
91
- }
92
- for (const [, group] of byDir) {
93
- // Connect files in same directory in a chain (not full mesh, to avoid clutter)
94
- for (let i = 0; i < group.length - 1; i++) {
95
- edges.push({ source: group[i], target: group[i + 1] });
96
- }
97
- }
98
- return { nodes, edges };
99
- }
100
- function tickSimulation(nodes, edges) {
101
- let totalKineticEnergy = 0;
102
- // Repulsion between all nodes
103
- for (let i = 0; i < nodes.length; i++) {
104
- for (let j = i + 1; j < nodes.length; j++) {
105
- const a = nodes[i];
106
- const b = nodes[j];
107
- let dx = b.x - a.x;
108
- let dy = b.y - a.y;
109
- let dist = Math.sqrt(dx * dx + dy * dy);
110
- if (dist < 1) {
111
- dx = Math.random() - 0.5;
112
- dy = Math.random() - 0.5;
113
- dist = 1;
114
- }
115
- const force = REPULSION / (dist * dist);
116
- const fx = (dx / dist) * force;
117
- const fy = (dy / dist) * force;
118
- if (!a.pinned) {
119
- a.vx -= fx;
120
- a.vy -= fy;
121
- }
122
- if (!b.pinned) {
123
- b.vx += fx;
124
- b.vy += fy;
125
- }
126
- }
127
- }
128
- // Attraction along edges
129
- for (const edge of edges) {
130
- const { source, target } = edge;
131
- const dx = target.x - source.x;
132
- const dy = target.y - source.y;
133
- const dist = Math.sqrt(dx * dx + dy * dy);
134
- if (dist < 1)
135
- continue;
136
- const displacement = dist - EDGE_LENGTH;
137
- const force = displacement * ATTRACTION;
138
- const fx = (dx / dist) * force;
139
- const fy = (dy / dist) * force;
140
- if (!source.pinned) {
141
- source.vx += fx;
142
- source.vy += fy;
143
- }
144
- if (!target.pinned) {
145
- target.vx -= fx;
146
- target.vy -= fy;
147
- }
148
- }
149
- // Center gravity
150
- for (const node of nodes) {
151
- if (node.pinned)
152
- continue;
153
- node.vx -= node.x * CENTER_GRAVITY;
154
- node.vy -= node.y * CENTER_GRAVITY;
155
- }
156
- // Integrate
157
- for (const node of nodes) {
158
- if (node.pinned)
159
- continue;
160
- node.vx *= DAMPING;
161
- node.vy *= DAMPING;
162
- const speed = Math.sqrt(node.vx * node.vx + node.vy * node.vy);
163
- if (speed > MAX_VELOCITY) {
164
- node.vx = (node.vx / speed) * MAX_VELOCITY;
165
- node.vy = (node.vy / speed) * MAX_VELOCITY;
166
- }
167
- node.x += node.vx;
168
- node.y += node.vy;
169
- totalKineticEnergy += node.vx * node.vx + node.vy * node.vy;
170
- }
171
- return totalKineticEnergy > MIN_VELOCITY * nodes.length;
172
- }
173
- function nodeColor(node, dirMap) {
174
- if (node.failCount > 0)
175
- return '#f87171';
176
- return dirColor(dirMap.get(node.dir) ?? 0);
177
- }
178
- function drawGraph(ctx, nodes, edges, transform, hoveredNode, width, height, dirMap) {
179
- const { offsetX, offsetY, scale } = transform;
180
- ctx.clearRect(0, 0, width, height);
181
- ctx.fillStyle = '#0d1117';
182
- ctx.fillRect(0, 0, width, height);
183
- ctx.save();
184
- ctx.translate(width / 2 + offsetX, height / 2 + offsetY);
185
- ctx.scale(scale, scale);
186
- // Draw edges
187
- for (const edge of edges) {
188
- const isHighlighted = hoveredNode &&
189
- (edge.source === hoveredNode || edge.target === hoveredNode);
190
- ctx.strokeStyle = isHighlighted
191
- ? 'rgba(160, 160, 255, 0.5)'
192
- : 'rgba(100, 100, 140, 0.15)';
193
- ctx.lineWidth = isHighlighted ? 1.5 / scale : 0.5 / scale;
194
- ctx.beginPath();
195
- ctx.moveTo(edge.source.x, edge.source.y);
196
- ctx.lineTo(edge.target.x, edge.target.y);
197
- ctx.stroke();
198
- }
199
- // Draw nodes
200
- for (const node of nodes) {
201
- const isHovered = node === hoveredNode;
202
- const color = nodeColor(node, dirMap);
203
- if (isHovered) {
204
- ctx.shadowColor = color;
205
- ctx.shadowBlur = 15;
206
- }
207
- ctx.beginPath();
208
- ctx.arc(node.x, node.y, node.r, 0, Math.PI * 2);
209
- ctx.fillStyle = isHovered ? color : color + 'cc';
210
- ctx.fill();
211
- // Pass/fail ring: outer ring shows failure ratio
212
- if (node.failCount > 0 && node.totalCount > 1) {
213
- const failAngle = (node.failCount / node.totalCount) * Math.PI * 2;
214
- ctx.beginPath();
215
- ctx.arc(node.x, node.y, node.r + 2 / scale, -Math.PI / 2, -Math.PI / 2 + failAngle);
216
- ctx.strokeStyle = '#f87171';
217
- ctx.lineWidth = 2 / scale;
218
- ctx.stroke();
219
- ctx.beginPath();
220
- ctx.arc(node.x, node.y, node.r + 2 / scale, -Math.PI / 2 + failAngle, -Math.PI / 2 + Math.PI * 2);
221
- ctx.strokeStyle = '#4ade80';
222
- ctx.lineWidth = 2 / scale;
223
- ctx.stroke();
224
- }
225
- if (isHovered) {
226
- ctx.strokeStyle = '#ffffff';
227
- ctx.lineWidth = 2 / scale;
228
- ctx.beginPath();
229
- ctx.arc(node.x, node.y, node.r, 0, Math.PI * 2);
230
- ctx.stroke();
231
- ctx.shadowBlur = 0;
232
- }
233
- }
234
- // Labels for hovered node and neighbors
235
- if (hoveredNode) {
236
- const neighbors = new Set();
237
- for (const edge of edges) {
238
- if (edge.source === hoveredNode)
239
- neighbors.add(edge.target);
240
- if (edge.target === hoveredNode)
241
- neighbors.add(edge.source);
242
- }
243
- const labelNodes = [hoveredNode, ...neighbors];
244
- const fontSize = Math.max(10, 12 / scale);
245
- ctx.font = `${fontSize}px ui-monospace, SFMono-Regular, Menlo, monospace`;
246
- ctx.textAlign = 'center';
247
- for (const node of labelNodes) {
248
- const isMain = node === hoveredNode;
249
- const label = node.name;
250
- const labelY = node.y - node.r - 6 / scale;
251
- const metrics = ctx.measureText(label);
252
- const padding = 4 / scale;
253
- const bgX = node.x - metrics.width / 2 - padding;
254
- const bgY = labelY - fontSize / 2 - padding;
255
- const bgW = metrics.width + padding * 2;
256
- const bgH = fontSize + padding * 2;
257
- ctx.fillStyle = isMain ? 'rgba(13, 17, 23, 0.95)' : 'rgba(13, 17, 23, 0.85)';
258
- ctx.beginPath();
259
- roundRect(ctx, bgX, bgY, bgW, bgH, 3 / scale);
260
- ctx.fill();
261
- if (isMain) {
262
- ctx.strokeStyle = nodeColor(node, dirMap);
263
- ctx.lineWidth = 1 / scale;
264
- ctx.stroke();
265
- }
266
- ctx.fillStyle = isMain ? '#ffffff' : '#a0a0c0';
267
- ctx.fillText(label, node.x, labelY + fontSize / 3);
268
- }
269
- // Detail label below hovered node: file path + assertion counts
270
- const detailFontSize = Math.max(9, 10 / scale);
271
- ctx.font = `${detailFontSize}px ui-monospace, monospace`;
272
- ctx.fillStyle = '#6a6a8a';
273
- const detail = `${hoveredNode.id} (${hoveredNode.passCount}\u2713 ${hoveredNode.failCount}\u2717)`;
274
- ctx.fillText(detail, hoveredNode.x, hoveredNode.y + hoveredNode.r + 14 / scale + detailFontSize / 3);
275
- }
276
- ctx.restore();
277
- // Legend
278
- drawLegend(ctx, nodes, width, dirMap);
279
- }
280
- function roundRect(ctx, x, y, w, h, r) {
281
- ctx.moveTo(x + r, y);
282
- ctx.lineTo(x + w - r, y);
283
- ctx.arcTo(x + w, y, x + w, y + r, r);
284
- ctx.lineTo(x + w, y + h - r);
285
- ctx.arcTo(x + w, y + h, x + w - r, y + h, r);
286
- ctx.lineTo(x + r, y + h);
287
- ctx.arcTo(x, y + h, x, y + h - r, r);
288
- ctx.lineTo(x, y + r);
289
- ctx.arcTo(x, y, x + r, y, r);
290
- }
291
- function drawLegend(ctx, nodes, width, dirMap) {
292
- const dirs = new Map();
293
- for (const node of nodes) {
294
- dirs.set(node.dir, (dirs.get(node.dir) || 0) + 1);
295
- }
296
- if (dirs.size === 0)
297
- return;
298
- const fontSize = 11;
299
- const lineHeight = 18;
300
- const dotR = 5;
301
- const padding = 12;
302
- const margin = 16;
303
- const legendX = width - margin;
304
- ctx.font = `${fontSize}px ui-monospace, monospace`;
305
- ctx.textAlign = 'right';
306
- let maxWidth = 0;
307
- const entries = Array.from(dirs.entries());
308
- for (const [dir] of entries) {
309
- const w = ctx.measureText(`${dir}/`).width;
310
- if (w > maxWidth)
311
- maxWidth = w;
312
- }
313
- const boxW = maxWidth + dotR * 2 + padding * 3;
314
- const boxH = entries.length * lineHeight + padding * 2;
315
- ctx.fillStyle = 'rgba(13, 17, 23, 0.85)';
316
- ctx.beginPath();
317
- roundRect(ctx, legendX - boxW, margin, boxW, boxH, 6);
318
- ctx.fill();
319
- ctx.strokeStyle = 'rgba(100, 100, 140, 0.3)';
320
- ctx.lineWidth = 1;
321
- ctx.stroke();
322
- for (let i = 0; i < entries.length; i++) {
323
- const [dir] = entries[i];
324
- const y = margin + padding + i * lineHeight + lineHeight / 2;
325
- ctx.beginPath();
326
- ctx.arc(legendX - boxW + padding + dotR, y, dotR, 0, Math.PI * 2);
327
- ctx.fillStyle = dirColor(dirMap.get(dir) ?? 0);
328
- ctx.fill();
329
- ctx.fillStyle = '#c0c0d0';
330
- ctx.textAlign = 'left';
331
- ctx.fillText(`${dir}/`, legendX - boxW + padding + dotR * 2 + 8, y + fontSize / 3);
332
- }
333
- const totalAssertions = nodes.reduce((sum, n) => sum + n.totalCount, 0);
334
- ctx.fillStyle = '#6a6a8a';
335
- ctx.textAlign = 'right';
336
- ctx.font = `10px ui-monospace, monospace`;
337
- ctx.fillText(`${nodes.length} files, ${totalAssertions} assertions`, legendX - padding, margin + boxH + 14);
338
- }
339
- // ── Interaction ────────────────────────────────────────────────────
340
- function findNodeAt(nodes, mx, my, transform, canvasW, canvasH) {
341
- const sx = (mx - canvasW / 2 - transform.offsetX) / transform.scale;
342
- const sy = (my - canvasH / 2 - transform.offsetY) / transform.scale;
343
- let closest = null;
344
- let closestDist = Infinity;
345
- for (const node of nodes) {
346
- const dx = node.x - sx;
347
- const dy = node.y - sy;
348
- const dist = Math.sqrt(dx * dx + dy * dy);
349
- const hitRadius = Math.max(node.r + 4, 10);
350
- if (dist < hitRadius && dist < closestDist) {
351
- closest = node;
352
- closestDist = dist;
353
- }
354
- }
355
- return closest;
356
- }
357
- // ── Public API ─────────────────────────────────────────────────────
358
- /**
359
- * Mount the filesystem viewer into a container element.
360
- * Takes location groups from panel state and renders an interactive
361
- * force-directed graph of files containing assertions.
362
- *
363
- * Returns a cleanup function to stop the animation loop and remove listeners.
364
- */
365
- export function mountFsViewer(container, locations) {
366
- let destroyed = false;
367
- let animationFrame = null;
368
- let nodes = [];
369
- let edges = [];
370
- let isSimulating = true;
371
- let hoveredNode = null;
372
- let draggedNode = null;
373
- let dirMap = new Map();
374
- const transform = {
375
- offsetX: 0,
376
- offsetY: 0,
377
- scale: 1,
378
- };
379
- // Create canvas
380
- const canvas = document.createElement('canvas');
381
- canvas.className = 'fs-viewer-canvas';
382
- canvas.style.width = '100%';
383
- canvas.style.height = '100%';
384
- canvas.style.display = 'block';
385
- canvas.style.cursor = 'grab';
386
- // Status label
387
- const statusEl = document.createElement('div');
388
- statusEl.className = 'fs-viewer-status';
389
- container.appendChild(canvas);
390
- container.appendChild(statusEl);
391
- const ctx = canvas.getContext('2d');
392
- function resize() {
393
- const rect = container.getBoundingClientRect();
394
- if (rect.width === 0 || rect.height === 0)
395
- return;
396
- const dpr = window.devicePixelRatio || 1;
397
- canvas.width = rect.width * dpr;
398
- canvas.height = rect.height * dpr;
399
- ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
400
- render();
401
- }
402
- function render() {
403
- if (destroyed)
404
- return;
405
- const rect = container.getBoundingClientRect();
406
- if (rect.width === 0 || rect.height === 0)
407
- return;
408
- drawGraph(ctx, nodes, edges, transform, hoveredNode, rect.width, rect.height, dirMap);
409
- }
410
- function simulationLoop() {
411
- if (destroyed)
412
- return;
413
- if (isSimulating) {
414
- const stillMoving = tickSimulation(nodes, edges);
415
- if (!stillMoving && !draggedNode) {
416
- isSimulating = false;
417
- const totalAssertions = nodes.reduce((sum, n) => sum + n.totalCount, 0);
418
- statusEl.textContent = `${nodes.length} files, ${totalAssertions} assertions`;
419
- }
420
- }
421
- render();
422
- animationFrame = requestAnimationFrame(simulationLoop);
423
- }
424
- // ── Mouse interaction ──
425
- let isPanning = false;
426
- let panStartX = 0;
427
- let panStartY = 0;
428
- let panStartOffX = 0;
429
- let panStartOffY = 0;
430
- function getCanvasCoords(e) {
431
- const rect = canvas.getBoundingClientRect();
432
- return { x: e.clientX - rect.left, y: e.clientY - rect.top };
433
- }
434
- function onMouseDown(e) {
435
- const { x, y } = getCanvasCoords(e);
436
- const rect = container.getBoundingClientRect();
437
- const hit = findNodeAt(nodes, x, y, transform, rect.width, rect.height);
438
- if (hit) {
439
- draggedNode = hit;
440
- hit.pinned = true;
441
- canvas.style.cursor = 'grabbing';
442
- isSimulating = true;
443
- e.preventDefault();
444
- }
445
- else {
446
- isPanning = true;
447
- panStartX = e.clientX;
448
- panStartY = e.clientY;
449
- panStartOffX = transform.offsetX;
450
- panStartOffY = transform.offsetY;
451
- canvas.style.cursor = 'grabbing';
452
- }
453
- }
454
- function onMouseMove(e) {
455
- const { x, y } = getCanvasCoords(e);
456
- const rect = container.getBoundingClientRect();
457
- if (draggedNode) {
458
- const sx = (x - rect.width / 2 - transform.offsetX) / transform.scale;
459
- const sy = (y - rect.height / 2 - transform.offsetY) / transform.scale;
460
- draggedNode.x = sx;
461
- draggedNode.y = sy;
462
- draggedNode.vx = 0;
463
- draggedNode.vy = 0;
464
- isSimulating = true;
465
- return;
466
- }
467
- if (isPanning) {
468
- transform.offsetX = panStartOffX + (e.clientX - panStartX);
469
- transform.offsetY = panStartOffY + (e.clientY - panStartY);
470
- return;
471
- }
472
- const hit = findNodeAt(nodes, x, y, transform, rect.width, rect.height);
473
- if (hit !== hoveredNode) {
474
- hoveredNode = hit;
475
- canvas.style.cursor = hit ? 'pointer' : 'grab';
476
- }
477
- }
478
- function onMouseUp() {
479
- if (draggedNode) {
480
- draggedNode.pinned = false;
481
- draggedNode = null;
482
- }
483
- isPanning = false;
484
- canvas.style.cursor = hoveredNode ? 'pointer' : 'grab';
485
- }
486
- function onWheel(e) {
487
- e.preventDefault();
488
- const zoomFactor = e.deltaY > 0 ? 0.92 : 1.08;
489
- const newScale = Math.max(0.1, Math.min(5, transform.scale * zoomFactor));
490
- const { x, y } = getCanvasCoords(e);
491
- const rect = container.getBoundingClientRect();
492
- const cx = x - rect.width / 2;
493
- const cy = y - rect.height / 2;
494
- const scaleChange = newScale / transform.scale;
495
- transform.offsetX = cx - (cx - transform.offsetX) * scaleChange;
496
- transform.offsetY = cy - (cy - transform.offsetY) * scaleChange;
497
- transform.scale = newScale;
498
- }
499
- canvas.addEventListener('mousedown', onMouseDown);
500
- canvas.addEventListener('mousemove', onMouseMove);
501
- canvas.addEventListener('mouseup', onMouseUp);
502
- canvas.addEventListener('mouseleave', onMouseUp);
503
- canvas.addEventListener('wheel', onWheel, { passive: false });
504
- // ── Init from data ──
505
- const resizeObserver = new ResizeObserver(() => resize());
506
- resizeObserver.observe(container);
507
- const { files, dirMap: dm } = buildGraphFromLocations(locations);
508
- dirMap = dm;
509
- if (files.length === 0) {
510
- statusEl.textContent = 'No assertion locations found. Interact with your app to populate the graph.';
511
- // Still start the loop so new data can be shown if we're re-mounted
512
- }
513
- else {
514
- const sim = initSimulation(files);
515
- nodes = sim.nodes;
516
- edges = sim.edges;
517
- isSimulating = true;
518
- statusEl.textContent = `Laying out ${nodes.length} files...`;
519
- }
520
- resize();
521
- simulationLoop();
522
- // Cleanup
523
- return () => {
524
- destroyed = true;
525
- if (animationFrame)
526
- cancelAnimationFrame(animationFrame);
527
- resizeObserver.disconnect();
528
- canvas.removeEventListener('mousedown', onMouseDown);
529
- canvas.removeEventListener('mousemove', onMouseMove);
530
- canvas.removeEventListener('mouseup', onMouseUp);
531
- canvas.removeEventListener('mouseleave', onMouseUp);
532
- canvas.removeEventListener('wheel', onWheel);
533
- container.innerHTML = '';
534
- };
535
- }
536
- //# sourceMappingURL=fs-viewer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-viewer.js","sourceRoot":"","sources":["../../../src/panels/observer/fs-viewer.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Fullscreen window management
3
- */
4
- /**
5
- * Show sequence view for a specific location
6
- */
7
- export declare function showSequence(locationKey: string): void;
8
- /**
9
- * Go back from sequence view to the view we came from
10
- */
11
- export declare function backFromSequence(): void;
12
- /**
13
- * Open the fullscreen window and optionally scroll to a specific group
14
- */
15
- export declare function openFullscreen(groupId?: number): void;
16
- /**
17
- * Open fullscreen and scroll to a specific group (called from small panel item clicks)
18
- */
19
- export declare function openFullscreenToGroup(groupId: number): void;
20
- /**
21
- * Update the fullscreen window content
22
- */
23
- export declare function updateFullscreenWindow(): void;
24
- //# sourceMappingURL=fullscreen.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fullscreen.d.ts","sourceRoot":"","sources":["../../../src/panels/observer/fullscreen.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsKH;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAGtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAKD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAqHrD;AAqBD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAyC7C"}