summaryrefslogtreecommitdiff
path: root/extension
diff options
context:
space:
mode:
authorTy Dunn <ty@tydunn.com>2023-06-05 22:54:18 +0200
committerTy Dunn <ty@tydunn.com>2023-06-05 22:54:18 +0200
commit25aa481ef8b341e2216393da0768c9953bf25fec (patch)
tree90c8206e21e570f381d7c49c6ebefeeac25f352e /extension
parent5f3d975cb3bef13769cb19ff3f604fe42cc9ee5d (diff)
parent8e5f5fc5c92ebc77578ffda5ce1fbc35bea60016 (diff)
downloadsncontinue-25aa481ef8b341e2216393da0768c9953bf25fec.tar.gz
sncontinue-25aa481ef8b341e2216393da0768c9953bf25fec.tar.bz2
sncontinue-25aa481ef8b341e2216393da0768c9953bf25fec.zip
Merge branch 'main' of github.com:continuedev/continue into main
Diffstat (limited to 'extension')
-rw-r--r--extension/react-app/src/components/ContinueButton.tsx8
-rw-r--r--extension/react-app/src/components/InputAndButton.tsx77
-rw-r--r--extension/react-app/src/components/StepContainer.tsx20
-rw-r--r--extension/react-app/src/tabs/gui.tsx6
4 files changed, 92 insertions, 19 deletions
diff --git a/extension/react-app/src/components/ContinueButton.tsx b/extension/react-app/src/components/ContinueButton.tsx
index 11dc7a92..c6117bf9 100644
--- a/extension/react-app/src/components/ContinueButton.tsx
+++ b/extension/react-app/src/components/ContinueButton.tsx
@@ -24,9 +24,13 @@ let StyledButton = styled(Button)`
}
`;
-function ContinueButton(props: { onClick?: () => void }) {
+function ContinueButton(props: { onClick?: () => void; hidden?: boolean }) {
return (
- <StyledButton className="m-auto" onClick={props.onClick}>
+ <StyledButton
+ hidden={props.hidden}
+ className="m-auto"
+ onClick={props.onClick}
+ >
<Play />
{/* <img src={"/continue_arrow.png"} width="16px"></img> */}
Continue
diff --git a/extension/react-app/src/components/InputAndButton.tsx b/extension/react-app/src/components/InputAndButton.tsx
new file mode 100644
index 00000000..0a8592f2
--- /dev/null
+++ b/extension/react-app/src/components/InputAndButton.tsx
@@ -0,0 +1,77 @@
+import React, { useRef } from "react";
+import styled from "styled-components";
+import { vscBackground } from ".";
+
+interface InputAndButtonProps {
+ onUserInput: (input: string) => void;
+}
+
+const TopDiv = styled.div`
+ display: grid;
+ grid-template-columns: 3fr 1fr;
+ grid-gap: 0;
+`;
+
+const Input = styled.input`
+ padding: 0.5rem;
+ border: 1px solid white;
+ background-color: ${vscBackground};
+ color: white;
+ border-radius: 4px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ outline: none;
+`;
+
+const Button = styled.button`
+ padding: 0.5rem;
+ border: 1px solid white;
+ background-color: ${vscBackground};
+ color: white;
+ border-radius: 4px;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ border-left: 0;
+ cursor: pointer;
+
+ &:hover {
+ background-color: white;
+ color: black;
+ }
+`;
+
+function InputAndButton(props: InputAndButtonProps) {
+ const userInputRef = useRef<HTMLInputElement>(null);
+
+ return (
+ <TopDiv className="grid grid-cols-2 space-x-0">
+ <Input
+ ref={userInputRef}
+ onKeyDown={(e) => {
+ if (e.key === "Enter") {
+ props.onUserInput(e.currentTarget.value);
+ }
+ }}
+ type="text"
+ onSubmit={(ev) => {
+ props.onUserInput(ev.currentTarget.value);
+ }}
+ onClick={(e) => {
+ e.stopPropagation();
+ }}
+ />
+ <Button
+ onClick={(e) => {
+ if (userInputRef.current) {
+ props.onUserInput(userInputRef.current.value);
+ }
+ e.stopPropagation();
+ }}
+ >
+ Enter
+ </Button>
+ </TopDiv>
+ );
+}
+
+export default InputAndButton;
diff --git a/extension/react-app/src/components/StepContainer.tsx b/extension/react-app/src/components/StepContainer.tsx
index 903f9b94..f54d4d75 100644
--- a/extension/react-app/src/components/StepContainer.tsx
+++ b/extension/react-app/src/components/StepContainer.tsx
@@ -23,6 +23,7 @@ import {
import { HistoryNode } from "../../../schema/HistoryNode";
import ReactMarkdown from "react-markdown";
import ContinueButton from "./ContinueButton";
+import InputAndButton from "./InputAndButton";
interface StepContainerProps {
historyNode: HistoryNode;
@@ -177,22 +178,11 @@ function StepContainer(props: StepContainerProps) {
)}
{props.historyNode.step.name === "Waiting for user input" && (
- <input
- ref={userInputRef}
- className="m-auto p-2 rounded-md border-1 border-solid text-white w-3/4 border-gray-200 bg-vsc-background"
- onKeyDown={(e) => {
- if (e.key === "Enter") {
- props.onUserInput(e.currentTarget.value);
- }
+ <InputAndButton
+ onUserInput={(value) => {
+ props.onUserInput(value);
}}
- type="text"
- onSubmit={(ev) => {
- props.onUserInput(ev.currentTarget.value);
- }}
- onClick={(e) => {
- e.stopPropagation();
- }}
- />
+ ></InputAndButton>
)}
{props.historyNode.step.name === "Waiting for user confirmation" && (
<>
diff --git a/extension/react-app/src/tabs/gui.tsx b/extension/react-app/src/tabs/gui.tsx
index a08698a4..7dd30acb 100644
--- a/extension/react-app/src/tabs/gui.tsx
+++ b/extension/react-app/src/tabs/gui.tsx
@@ -38,11 +38,11 @@ function GUI(props: GUIProps) {
const [waitingForSteps, setWaitingForSteps] = useState(false);
const [userInputQueue, setUserInputQueue] = useState<string[]>([]);
const [history, setHistory] = useState<History | undefined>();
- // {
+ // {
// timeline: [
// {
// step: {
- // name: "RunCodeStep",
+ // name: "Waiting for user input",
// cmd: "python3 /Users/natesesti/Desktop/continue/extension/examples/python/main.py",
// description:
// "Run `python3 /Users/natesesti/Desktop/continue/extension/examples/python/main.py`",
@@ -189,6 +189,8 @@ function GUI(props: GUIProps) {
if (mainTextInputRef.current) {
if (!client) return;
let input = mainTextInputRef.current.value;
+ if (input.trim() === "") return;
+
setWaitingForSteps(true);
client.sendMainInput(input);
setUserInputQueue((queue) => {