|
1 | 1 | import { createStore } from "solid-js/store" |
2 | | -import { createMemo, createSignal, For, Show } from "solid-js" |
| 2 | +import { createMemo, createSignal, For, onCleanup, onMount, Show } from "solid-js" |
3 | 3 | import { useRenderer } from "@opentui/solid" |
4 | 4 | import type { TextareaRenderable } from "@opentui/core" |
5 | 5 | import { selectedForeground, tint, useTheme } from "../../context/theme" |
6 | 6 | import type { QuestionAnswer, QuestionRequest } from "@opencode-ai/sdk/v2" |
7 | 7 | import { useSDK } from "../../context/sdk" |
8 | 8 | import { SplitBorder } from "../../component/border" |
9 | 9 | import { useTuiConfig } from "../../context/tui-config" |
10 | | -import { OPENCODE_BASE_MODE, useBindings } from "../../keymap" |
| 10 | +import { useBindings, useOpencodeModeStack } from "../../keymap" |
| 11 | + |
| 12 | +const QUESTION_MODE = "question" |
11 | 13 |
|
12 | 14 | export function QuestionPrompt(props: { request: QuestionRequest }) { |
13 | 15 | const sdk = useSDK() |
14 | 16 | const { theme } = useTheme() |
15 | 17 | const renderer = useRenderer() |
16 | 18 | const tuiConfig = useTuiConfig() |
| 19 | + const modeStack = useOpencodeModeStack() |
17 | 20 |
|
18 | 21 | const questions = createMemo(() => props.request.questions) |
19 | 22 | const single = createMemo(() => questions().length === 1 && questions()[0]?.multiple !== true) |
@@ -119,8 +122,13 @@ export function QuestionPrompt(props: { request: QuestionRequest }) { |
119 | 122 | pick(opt.label) |
120 | 123 | } |
121 | 124 |
|
| 125 | + onMount(() => { |
| 126 | + const popMode = modeStack.push(QUESTION_MODE) |
| 127 | + onCleanup(popMode) |
| 128 | + }) |
| 129 | + |
122 | 130 | useBindings(() => ({ |
123 | | - mode: OPENCODE_BASE_MODE, |
| 131 | + mode: QUESTION_MODE, |
124 | 132 | enabled: store.editing && !confirm(), |
125 | 133 | commands: [ |
126 | 134 | { |
@@ -201,7 +209,7 @@ export function QuestionPrompt(props: { request: QuestionRequest }) { |
201 | 209 | const max = Math.min(total, 9) |
202 | 210 |
|
203 | 211 | return { |
204 | | - mode: OPENCODE_BASE_MODE, |
| 212 | + mode: QUESTION_MODE, |
205 | 213 | enabled: !store.editing, |
206 | 214 | commands: [ |
207 | 215 | { |
|
0 commit comments