MCPcopy Index your code
hub / github.com/wavetermdev/waveterm / onKeyDown

Function onKeyDown

frontend/app/treeview/treeview.tsx:370–421  ·  view source on GitHub ↗
(event: KeyboardEvent<HTMLDivElement>)

Source from the content-addressed store, hash-verified

368 };
369
370 const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {
371 const selectedIndex = selectedId != null ? idToIndex.get(selectedId) : undefined;
372 if (event.key === "ArrowDown") {
373 event.preventDefault();
374 const nextIndex = (selectedIndex ?? -1) + 1;
375 for (let idx = nextIndex; idx < visibleRows.length; idx++) {
376 if (visibleRows[idx].kind === "node") {
377 selectVisibleNodeAt(idx);
378 break;
379 }
380 }
381 return;
382 }
383 if (event.key === "ArrowUp") {
384 event.preventDefault();
385 const previousIndex = (selectedIndex ?? visibleRows.length) - 1;
386 for (let idx = previousIndex; idx >= 0; idx--) {
387 if (visibleRows[idx].kind === "node") {
388 selectVisibleNodeAt(idx);
389 break;
390 }
391 }
392 return;
393 }
394 const node = selectedId ? nodesById.get(selectedId) : null;
395 if (node == null) {
396 return;
397 }
398 if (event.key === "ArrowLeft") {
399 event.preventDefault();
400 if (node.isDirectory && expandedIds.has(node.id)) {
401 toggleExpand(node.id);
402 return;
403 }
404 if (node.parentId != null) {
405 commitSelection(node.parentId);
406 scrollToId(node.parentId);
407 }
408 return;
409 }
410 if (event.key === "ArrowRight") {
411 event.preventDefault();
412 if (node.isDirectory && !expandedIds.has(node.id)) {
413 toggleExpand(node.id);
414 return;
415 }
416 if (node.isDirectory && expandedIds.has(node.id) && node.childrenIds?.[0]) {
417 commitSelection(node.childrenIds[0]);
418 scrollToId(node.childrenIds[0]);
419 }
420 }
421 };
422
423 const containerStyle: CSSProperties = {
424 width,

Callers 2

handleKeyDownFunction · 0.85
blockutil.tsxFile · 0.85

Calls 5

selectVisibleNodeAtFunction · 0.85
toggleExpandFunction · 0.85
commitSelectionFunction · 0.85
scrollToIdFunction · 0.85
getMethod · 0.80

Tested by

no test coverage detected