From 26855ce3882d03edc34eca40e38582021d6d8e75 Mon Sep 17 00:00:00 2001 From: Chris Wanstrath Date: Sun, 28 Sep 2025 16:38:43 -0700 Subject: [PATCH] #hyperlinks --- app/src/css/terminal.css | 4 ++++ app/src/js/hyperlink.ts | 24 ++++++++++++++++++++++++ app/src/js/main.ts | 2 ++ 3 files changed, 30 insertions(+) create mode 100644 app/src/js/hyperlink.ts diff --git a/app/src/css/terminal.css b/app/src/css/terminal.css index 699164d..252066d 100644 --- a/app/src/css/terminal.css +++ b/app/src/css/terminal.css @@ -141,6 +141,10 @@ text-align: center; } +#scrollback .output a { + margin-right: 15px; +} + #scrollback .input .content { margin-left: var(--cli-status-width); } diff --git a/app/src/js/hyperlink.ts b/app/src/js/hyperlink.ts new file mode 100644 index 0000000..818bebf --- /dev/null +++ b/app/src/js/hyperlink.ts @@ -0,0 +1,24 @@ +import { runCommand } from "./shell.js" +import { focusInput } from "./focus.js" + +export function initHyperlink() { + window.addEventListener("click", handleClick) +} + +function handleClick(e: MouseEvent) { + const target = e.target + + if (!(target instanceof HTMLElement)) return + + const a = target.closest("a") + if (!a) return + + const href = a.getAttribute("href") + if (!href) return + + if (href.startsWith("#")) { + e.preventDefault() + runCommand(href.slice(1)) + focusInput() + } +} \ No newline at end of file diff --git a/app/src/js/main.ts b/app/src/js/main.ts index a1bff99..a2901af 100644 --- a/app/src/js/main.ts +++ b/app/src/js/main.ts @@ -3,6 +3,7 @@ import { initCursor } from "./cursor.js" import { initEditor } from "./editor.js" import { initFocus } from "./focus.js" import { initHistory } from "./history.js" +import { initHyperlink } from "./hyperlink.js" import { initInput } from "./input.js" import { initResize } from "./resize.js" import { startVramCounter } from "./vram.js" @@ -13,6 +14,7 @@ initCursor() initFocus() initEditor() initHistory() +initHyperlink() initInput() initResize()