MCPcopy
hub / github.com/anomalyco/opencode / createSessionTabs

Function createSessionTabs

packages/app/src/pages/session/helpers.ts:27–79  ·  view source on GitHub ↗
(input: TabsInput)

Source from the content-addressed store, hash-verified

25}
26
27export const createSessionTabs = (input: TabsInput) => {
28 const review = input.review ?? (() => false)
29 const hasReview = input.hasReview ?? (() => false)
30 const contextOpen = createMemo(() => input.tabs().active() === "context" || input.tabs().all().includes("context"))
31 const openedTabs = createMemo(
32 () => {
33 const seen = new Set<string>()
34 return input
35 .tabs()
36 .all()
37 .flatMap((tab) => {
38 if (tab === "context" || tab === "review") return []
39 const value = input.pathFromTab(tab) ? input.normalizeTab(tab) : tab
40 if (seen.has(value)) return []
41 seen.add(value)
42 return [value]
43 })
44 },
45 emptyTabs,
46 { equals: same },
47 )
48 const activeTab = createMemo(() => {
49 const active = input.tabs().active()
50 if (active === "context") return active
51 if (active === "review" && review()) return active
52 if (active && input.pathFromTab(active)) return input.normalizeTab(active)
53
54 const first = openedTabs()[0]
55 if (first) return first
56 if (contextOpen()) return "context"
57 if (review() && hasReview()) return "review"
58 return "empty"
59 })
60 const activeFileTab = createMemo(() => {
61 const active = activeTab()
62 if (!openedTabs().includes(active)) return
63 return active
64 })
65 const closableTab = createMemo(() => {
66 const active = activeTab()
67 if (active === "context") return active
68 if (!openedTabs().includes(active)) return
69 return active
70 })
71
72 return {
73 contextOpen,
74 openedTabs,
75 activeTab,
76 activeFileTab,
77 closableTab,
78 }
79}
80
81export const focusTerminalById = (id: string) => {
82 const wrapper = document.getElementById(`terminal-wrapper-${id}`)

Callers 8

createFileEntriesFunction · 0.90
PromptInputFunction · 0.90
SessionContextUsageFunction · 0.90
PageFunction · 0.90
FileTabContentFunction · 0.90
helpers.test.tsFile · 0.90
useSessionCommandsFunction · 0.90
SessionSidePanelFunction · 0.90

Calls 4

activeMethod · 0.80
hasReviewFunction · 0.70
addMethod · 0.65
allMethod · 0.45

Tested by

no test coverage detected