@@ -12,19 +12,18 @@ import { CompactableActionButton } from '@ui/components/editor/prompt/Compactabl
1212import { Tasks as UiTasks } from '@ui/components/editor/prompt/Tasks'
1313import { use_tasks } from './hooks/use-tasks'
1414import { use_has_scrolled_past_target_button } from './hooks/use-has-scrolled-past-mode-button'
15+ import { use_keyboard_shortcuts } from './hooks/use-keyboard-shortcuts'
1516import { use_compacting } from '@shared/hooks'
1617import {
1718 ApiPromptType ,
1819 WebPromptType ,
1920 CliPromptType
2021} from '@shared/types/prompt-types'
21- import { use_keyboard_shortcuts } from './hooks/use-keyboard-shortcuts'
2222import { use_is_landscape } from '../hooks/use-is-landscape'
2323
2424type Props = {
2525 vscode : any
2626 is_active : boolean
27- on_go_forward : ( ) => void
2827 on_chatbots_click : ( ) => void
2928 on_api_calls_click : ( ) => void
3029 on_cli_calls_click : ( ) => void
@@ -44,6 +43,13 @@ export const Home: React.FC<Props> = (props) => {
4443 const { has_scrolled_past_target_button, target_ref, handle_scroll } =
4544 use_has_scrolled_past_target_button ( props . is_active )
4645
46+ const { is_alt_pressed } = use_keyboard_shortcuts ( {
47+ is_active : props . is_active ,
48+ on_chatbots_click : props . on_chatbots_click ,
49+ on_api_calls_click : props . on_api_calls_click ,
50+ on_cli_calls_click : props . on_cli_calls_click
51+ } )
52+
4753 const {
4854 tasks,
4955 handle_reorder,
@@ -65,9 +71,6 @@ export const Home: React.FC<Props> = (props) => {
6571
6672 const header_targets_ref = useRef < HTMLDivElement > ( null )
6773
68- const [ is_alt_pressed , set_is_alt_pressed ] = useState ( false )
69- const alt_interrupted_ref = useRef ( false )
70-
7174 const discord_label = 'Discord'
7275 const coffee_label = t ( 'header.buy-me-a-coffee' )
7376
@@ -82,64 +85,6 @@ export const Home: React.FC<Props> = (props) => {
8285 return ( ) => window . removeEventListener ( 'message' , handle_message )
8386 } , [ ] )
8487
85- useEffect ( ( ) => {
86- const handle_key_down = ( event : KeyboardEvent ) => {
87- if (
88- event . key == 'Alt' &&
89- ! event . shiftKey &&
90- ! event . ctrlKey &&
91- ! event . metaKey
92- ) {
93- if ( ! alt_interrupted_ref . current ) {
94- set_is_alt_pressed ( true )
95- }
96- } else {
97- if ( event . altKey ) {
98- alt_interrupted_ref . current = true
99- }
100- set_is_alt_pressed ( false )
101- }
102- }
103-
104- const handle_key_up = ( event : KeyboardEvent ) => {
105- if ( ! event . altKey ) {
106- alt_interrupted_ref . current = false
107- } else if ( event . key != 'Alt' ) {
108- alt_interrupted_ref . current = true
109- }
110- set_is_alt_pressed (
111- event . altKey &&
112- ! alt_interrupted_ref . current &&
113- ! event . shiftKey &&
114- ! event . ctrlKey &&
115- ! event . metaKey
116- )
117- }
118-
119- const handle_blur = ( ) => {
120- set_is_alt_pressed ( false )
121- alt_interrupted_ref . current = false
122- }
123-
124- window . addEventListener ( 'keydown' , handle_key_down )
125- window . addEventListener ( 'keyup' , handle_key_up )
126- window . addEventListener ( 'blur' , handle_blur )
127-
128- return ( ) => {
129- window . removeEventListener ( 'keydown' , handle_key_down )
130- window . removeEventListener ( 'keyup' , handle_key_up )
131- window . removeEventListener ( 'blur' , handle_blur )
132- }
133- } , [ ] )
134-
135- use_keyboard_shortcuts ( {
136- is_active : props . is_active ,
137- on_go_forward : props . on_go_forward ,
138- on_chatbots_click : props . on_chatbots_click ,
139- on_api_calls_click : props . on_api_calls_click ,
140- on_cli_calls_click : props . on_cli_calls_click
141- } )
142-
14388 const header = (
14489 < div className = { styles . header } >
14590 < div
@@ -192,7 +137,7 @@ export const Home: React.FC<Props> = (props) => {
192137 hover_color = {
193138 props . web_prompt_type == 'edit-files' ? 'blue' : 'purple'
194139 }
195- keycap_char = { is_alt_pressed ? 'W ' : undefined }
140+ keycap_char = { is_alt_pressed ? '1 ' : undefined }
196141 />
197142 < UiTargetButton
198143 label = "API"
@@ -201,7 +146,7 @@ export const Home: React.FC<Props> = (props) => {
201146 hover_color = {
202147 props . api_prompt_type == 'edit-files' ? 'blue' : 'purple'
203148 }
204- keycap_char = { is_alt_pressed ? 'A ' : undefined }
149+ keycap_char = { is_alt_pressed ? '2 ' : undefined }
205150 />
206151 < UiTargetButton
207152 label = "CLI"
@@ -210,7 +155,7 @@ export const Home: React.FC<Props> = (props) => {
210155 hover_color = {
211156 props . cli_prompt_type == 'edit-files' ? 'blue' : 'purple'
212157 }
213- keycap_char = { is_alt_pressed ? 'C ' : undefined }
158+ keycap_char = { is_alt_pressed ? '3 ' : undefined }
214159 />
215160 </ div >
216161 </ div >
@@ -227,21 +172,21 @@ export const Home: React.FC<Props> = (props) => {
227172 }
228173 on_click = { props . on_chatbots_click }
229174 hover_color = { props . web_prompt_type == 'edit-files' ? 'blue' : 'purple' }
230- keycap_char = { is_alt_pressed ? 'W ' : undefined }
175+ keycap_char = { is_alt_pressed ? '1 ' : undefined }
231176 />
232177 < UiTargetButton
233178 label = "API"
234179 description = { t ( 'home.target.api.description' ) }
235180 on_click = { props . on_api_calls_click }
236181 hover_color = { props . api_prompt_type == 'edit-files' ? 'blue' : 'purple' }
237- keycap_char = { is_alt_pressed ? 'A ' : undefined }
182+ keycap_char = { is_alt_pressed ? '2 ' : undefined }
238183 />
239184 < UiTargetButton
240185 label = "CLI"
241186 description = { t ( 'home.target.cli.description' ) }
242187 on_click = { props . on_cli_calls_click }
243188 hover_color = { props . cli_prompt_type == 'edit-files' ? 'blue' : 'purple' }
244- keycap_char = { is_alt_pressed ? 'C ' : undefined }
189+ keycap_char = { is_alt_pressed ? '3 ' : undefined }
245190 />
246191 </ div >
247192 )
0 commit comments