summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages/session/helpers.ts
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-02-06 09:37:49 -0600
committerGitHub <[email protected]>2026-02-06 09:37:49 -0600
commita4bc883595df9ea0f752079519081bc602408553 (patch)
tree583f21642f431899abe1dfb1f6bd9b2c01dc0206 /packages/app/src/pages/session/helpers.ts
parentc07077f96c0019b2e18e0e8e1e0383deda08b3e6 (diff)
downloadopencode-a4bc883595df9ea0f752079519081bc602408553.tar.gz
opencode-a4bc883595df9ea0f752079519081bc602408553.zip
chore: refactoring and tests (#12468)
Diffstat (limited to 'packages/app/src/pages/session/helpers.ts')
-rw-r--r--packages/app/src/pages/session/helpers.ts38
1 files changed, 38 insertions, 0 deletions
diff --git a/packages/app/src/pages/session/helpers.ts b/packages/app/src/pages/session/helpers.ts
new file mode 100644
index 000000000..d9ce90793
--- /dev/null
+++ b/packages/app/src/pages/session/helpers.ts
@@ -0,0 +1,38 @@
+import type { CommandOption } from "@/context/command"
+
+export const focusTerminalById = (id: string) => {
+ const wrapper = document.getElementById(`terminal-wrapper-${id}`)
+ const terminal = wrapper?.querySelector('[data-component="terminal"]')
+ if (!(terminal instanceof HTMLElement)) return false
+
+ const textarea = terminal.querySelector("textarea")
+ if (textarea instanceof HTMLTextAreaElement) {
+ textarea.focus()
+ return true
+ }
+
+ terminal.focus()
+ terminal.dispatchEvent(
+ typeof PointerEvent === "function"
+ ? new PointerEvent("pointerdown", { bubbles: true, cancelable: true })
+ : new MouseEvent("pointerdown", { bubbles: true, cancelable: true }),
+ )
+ return true
+}
+
+export const createOpenReviewFile = (input: {
+ showAllFiles: () => void
+ tabForPath: (path: string) => string
+ openTab: (tab: string) => void
+ loadFile: (path: string) => void
+}) => {
+ return (path: string) => {
+ input.showAllFiles()
+ input.openTab(input.tabForPath(path))
+ input.loadFile(path)
+ }
+}
+
+export const combineCommandSections = (sections: readonly (readonly CommandOption[])[]) => {
+ return sections.flatMap((section) => section)
+}