Skip to content

Commit

Permalink
prompt navigation fix (temporary)
Browse files Browse the repository at this point in the history
  • Loading branch information
nbonamy committed Apr 27, 2024
1 parent 9484a38 commit bb1b701
Showing 1 changed file with 29 additions and 15 deletions.
44 changes: 29 additions & 15 deletions src/components/Prompt.vue
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ const handleCommandClick = (action) => {
onSendPrompt()
}
let draftPrompt = ''
const onKeyDown = (event) => {
if (event.key === 'Enter') {
Expand All @@ -203,34 +204,33 @@ const onKeyDown = (event) => {
return false
}
} else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
event.preventDefault()
event.stopPropagation()
return false
}
}
const onKeyUp = (event) => {
// history
if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
// need at list shift
if (!event.shiftKey) {
return
}
// get messages
let userMessages = props.chat?.messages.filter(m => m.role === 'user')
if (event.shiftKey) {
if (event.controlKey || event.metaKey) {
userMessages = store.chats.reduce((acc, chat) => {
return acc.concat(chat.messages.filter(m => m.role === 'user'))
}, [])
userMessages.sort((a, b) => a.createdAt - b.createdAt)
}
// new prompt
let newPrompt = null
// now navigate
if (userMessages?.length) {
const index = userMessages.findIndex(m => m.content === prompt.value)
if (event.key === 'ArrowUp') {
if (index === -1) {
prompt.value = userMessages[userMessages.length - 1].content
draftPrompt = prompt.value
newPrompt = userMessages[userMessages.length - 1].content
} else if (index > 0) {
prompt.value = userMessages[index - 1].content
newPrompt = userMessages[index - 1].content
} else {
// keydown moved caret at beginning
// so move it back to the end
Expand All @@ -239,15 +239,29 @@ const onKeyUp = (event) => {
}
} else {
if (index >= 0 && index < userMessages.length - 1) {
prompt.value = userMessages[index + 1].content
newPrompt = userMessages[index + 1].content
} else if (index != -1) {
prompt.value = ''
newPrompt = draftPrompt
}
}
}
// update
if (newPrompt) {
prompt.value = newPrompt
nextTick(() => {
autoGrow(input.value)
input.value.setSelectionRange(newPrompt.length, newPrompt.length)
input.value.scrollTo(0, input.value.scrollHeight)
})
event.preventDefault()
event.stopPropagation()
return false
}
}
}
// auto-grow
const onKeyUp = (event) => {
nextTick(() => {
autoGrow(event.target)
})
Expand Down

0 comments on commit bb1b701

Please sign in to comment.