From 4f285ce364014c5e3048d3a5effee309cb07d60e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aneta=20Jastrz=C4=99bska?=
<1544710+anetaj@users.noreply.github.com>
Date: Sat, 21 Sep 2024 13:03:00 +0200
Subject: [PATCH 01/10] rearrange markdown components
---
.../void/src/sidebar/MarkdownRender.tsx | 160 -----------------
.../sidebar/MarkdownRender/MarkdownRender.tsx | 164 ++++++++++++++++++
extensions/void/src/sidebar/Sidebar.tsx | 2 +-
3 files changed, 165 insertions(+), 161 deletions(-)
delete mode 100644 extensions/void/src/sidebar/MarkdownRender.tsx
create mode 100644 extensions/void/src/sidebar/MarkdownRender/MarkdownRender.tsx
diff --git a/extensions/void/src/sidebar/MarkdownRender.tsx b/extensions/void/src/sidebar/MarkdownRender.tsx
deleted file mode 100644
index e9cc2b96..00000000
--- a/extensions/void/src/sidebar/MarkdownRender.tsx
+++ /dev/null
@@ -1,160 +0,0 @@
-import React, { JSX, useState } from 'react';
-import { MarkedToken, Token, TokensList } from 'marked';
-import { awaitVSCodeResponse, getVSCodeAPI } from './getVscodeApi';
-
-
-// code block with Apply button at top
-export const BlockCode = ({ text, disableApplyButton = false }: { text: string, disableApplyButton?: boolean }) => {
- return
+
{!disableApplyButton && (
)}
-
Date: Sat, 21 Sep 2024 14:14:31 +0200
Subject: [PATCH 04/10] hide entire toolbar in user messages
---
.../src/sidebar/MarkdownRender/BlockCode.tsx | 28 +++++++++----------
extensions/void/src/sidebar/Sidebar.tsx | 4 +--
2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/extensions/void/src/sidebar/MarkdownRender/BlockCode.tsx b/extensions/void/src/sidebar/MarkdownRender/BlockCode.tsx
index e165ce1e..37d5b5bd 100644
--- a/extensions/void/src/sidebar/MarkdownRender/BlockCode.tsx
+++ b/extensions/void/src/sidebar/MarkdownRender/BlockCode.tsx
@@ -12,10 +12,10 @@ const COPY_FEEDBACK_TIMEOUT = 1000
// code block with Apply button at top
const BlockCode = ({
text,
- disableApplyButton = false,
+ hideToolbar = false,
}: {
text: string
- disableApplyButton?: boolean
+ hideToolbar?: boolean
}) => {
const [copyButtonState, setCopyButtonState] = useState(CopyButtonState.Copy)
@@ -40,15 +40,15 @@ const BlockCode = ({
return (
-
-
-
- {!disableApplyButton && (
+ {!hideToolbar && (
+
+
+
- )}
+
-
+ )}
{text}
diff --git a/extensions/void/src/sidebar/Sidebar.tsx b/extensions/void/src/sidebar/Sidebar.tsx
index e828e4ba..04ed3020 100644
--- a/extensions/void/src/sidebar/Sidebar.tsx
+++ b/extensions/void/src/sidebar/Sidebar.tsx
@@ -82,7 +82,7 @@ const ChatBubble = ({ chatMessage }: { chatMessage: ChatMessage }) => {
if (role === 'user') {
chatbubbleContents = <>
- {chatMessage.selection?.selectionStr &&
}
+ {chatMessage.selection?.selectionStr &&
}
{children}
>
}
@@ -272,7 +272,7 @@ const Sidebar = () => {
>
X
-
+
)}
From ac9bc80e2098651876d64a7a68b8bb764e665da9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aneta=20Jastrz=C4=99bska?=
<1544710+anetaj@users.noreply.github.com>
Date: Sat, 21 Sep 2024 15:01:49 +0200
Subject: [PATCH 05/10] style included files list
---
extensions/void/src/sidebar/Sidebar.tsx | 160 +++++++-----------
.../void/src/sidebar/components/Files.tsx | 77 +++++++++
2 files changed, 138 insertions(+), 99 deletions(-)
create mode 100644 extensions/void/src/sidebar/components/Files.tsx
diff --git a/extensions/void/src/sidebar/Sidebar.tsx b/extensions/void/src/sidebar/Sidebar.tsx
index 04ed3020..1aefaf47 100644
--- a/extensions/void/src/sidebar/Sidebar.tsx
+++ b/extensions/void/src/sidebar/Sidebar.tsx
@@ -1,12 +1,13 @@
-import React, { useState, ChangeEvent, useEffect, useRef, useCallback, FormEvent } from "react"
-import { ApiConfig, LLMMessage, sendLLMMessage } from "../common/sendLLMMessage"
-import { Command, File, Selection, WebviewMessage } from "../shared_types"
+import React, { useState, useEffect, useRef, useCallback, FormEvent } from "react"
+import { ApiConfig, sendLLMMessage } from "../common/sendLLMMessage"
+import { File, Selection, WebviewMessage } from "../shared_types"
import { awaitVSCodeResponse, getVSCodeAPI, resolveAwaitingVSCodeResponse } from "./getVscodeApi"
import { marked } from 'marked';
import { MarkdownRender, BlockCode } from "./MarkdownRender";
import * as vscode from 'vscode'
+import { FilesSelector, IncludedFiles } from "./components/Files";
const filesStr = (fullFiles: File[]) => {
@@ -35,40 +36,6 @@ If you make a change, rewrite the entire file.
}
-const FilesSelector = ({ files, setFiles }: { files: vscode.Uri[], setFiles: (files: vscode.Uri[]) => void }) => {
- return files.length !== 0 &&
- Include files:
- {files.map((filename, i) =>
-
- {/* X button on a file */}
-
-
- )}
-
-}
-
-const IncludedFiles = ({ files }: { files: vscode.Uri[] }) => {
- return files.length !== 0 &&
- {files.map((filename, i) =>
-
-
-
- )}
-
-}
-
-
const ChatBubble = ({ chatMessage }: { chatMessage: ChatMessage }) => {
const role = chatMessage.role
@@ -99,13 +66,6 @@ const ChatBubble = ({ chatMessage }: { chatMessage: ChatMessage }) => {
}
-const getBasename = (pathStr: string) => {
- // "unixify" path
- pathStr = pathStr.replace(/[/\\]+/g, '/'); // replace any / or \ or \\ with /
- const parts = pathStr.split('/') // split on /
- return parts[parts.length - 1]
-}
-
type ChatMessage = {
role: 'user'
content: string, // content sent to the llm
@@ -258,62 +218,64 @@ const Sidebar = () => {
{/* chatbar */}
- {/* selection */}
-
- {/* selected files */}
-
- {/* selected code */}
- {!selection?.selectionStr ? null
- : (
-
-
-
-
- )}
+
+ {/* selection */}
+
+ {/* selected files */}
+
+ {/* selected code */}
+ {!selection?.selectionStr ? null
+ : (
+
+
+
+
+ )}
+
+
-
diff --git a/extensions/void/src/sidebar/components/Files.tsx b/extensions/void/src/sidebar/components/Files.tsx
new file mode 100644
index 00000000..64e4f7fa
--- /dev/null
+++ b/extensions/void/src/sidebar/components/Files.tsx
@@ -0,0 +1,77 @@
+import React from "react"
+import * as vscode from "vscode"
+
+const getBasename = (pathStr: string) => {
+ // "unixify" path
+ pathStr = pathStr.replace(/[/\\]+/g, "/") // replace any / or \ or \\ with /
+ const parts = pathStr.split("/") // split on /
+ return parts[parts.length - 1]
+}
+
+export const FilesSelector = ({
+ files,
+ setFiles,
+}: {
+ files: vscode.Uri[]
+ setFiles: (files: vscode.Uri[]) => void
+}) => {
+ const onRemove = (index: number) => () =>
+ setFiles([...files.slice(0, index), ...files.slice(index + 1, Infinity)])
+
+ return (
+ files.length !== 0 && (
+
+ {files.map((filename, i) => (
+
+ ))}
+
+ )
+ )
+}
+
+export const IncludedFiles = ({ files }: { files: vscode.Uri[] }) => {
+ return (
+ files.length !== 0 && (
+
+ {files.map((filename, i) => (
+
+
+
+ ))}
+
+ )
+ )
+}
From 98ee94018ead25c9717a3ec54b887815a41381d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aneta=20Jastrz=C4=99bska?=
<1544710+anetaj@users.noreply.github.com>
Date: Sat, 21 Sep 2024 15:36:25 +0200
Subject: [PATCH 06/10] add className util
---
extensions/void/src/sidebar/utils/classNames.ts | 3 +++
extensions/void/src/sidebar/utils/index.ts | 1 +
2 files changed, 4 insertions(+)
create mode 100644 extensions/void/src/sidebar/utils/classNames.ts
create mode 100644 extensions/void/src/sidebar/utils/index.ts
diff --git a/extensions/void/src/sidebar/utils/classNames.ts b/extensions/void/src/sidebar/utils/classNames.ts
new file mode 100644
index 00000000..57c362a5
--- /dev/null
+++ b/extensions/void/src/sidebar/utils/classNames.ts
@@ -0,0 +1,3 @@
+export default function classNames(...classes: any[]) {
+ return classes.filter(Boolean).join(' ')
+ }
\ No newline at end of file
diff --git a/extensions/void/src/sidebar/utils/index.ts b/extensions/void/src/sidebar/utils/index.ts
new file mode 100644
index 00000000..284fc955
--- /dev/null
+++ b/extensions/void/src/sidebar/utils/index.ts
@@ -0,0 +1 @@
+export { default as classNames } from "./classNames";
From 20fd8f318bbbd0277b193757df4f6893e44fb654 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aneta=20Jastrz=C4=99bska?=
<1544710+anetaj@users.noreply.github.com>
Date: Sat, 21 Sep 2024 15:36:48 +0200
Subject: [PATCH 07/10] more vsc css vars
---
extensions/void/tailwind.config.js | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/extensions/void/tailwind.config.js b/extensions/void/tailwind.config.js
index 0a739c8f..8d7d825e 100644
--- a/extensions/void/tailwind.config.js
+++ b/extensions/void/tailwind.config.js
@@ -7,17 +7,19 @@ module.exports = {
extend: {
colors: {
vscode: {
- 'editor-bg': "var(--vscode-editor-background)",
- 'editor-fg': "var(--vscode-editor-foreground)",
- 'input-bg': "var(--vscode-input-background)",
- 'input-fg': "var(--vscode-input-foreground)",
- 'input-border': "var(--vscode-input-border)",
- 'button-fg': "var(--vscode-button-foreground)",
- 'button-bg': "var(--vscode-button-background)",
- 'button-hoverBg': "var(--vscode-button-hoverBackground)",
- 'button-secondary-fg': "var(--vscode-button-secondaryForeground)",
- 'button-secondary-bg': "var(--vscode-button-secondaryBackground)",
- 'button-secondary-hoverBg': "var(--vscode-button-secondaryHoverBackground)",
+ "sidebar-bg": "var(--vscode-sideBar-background)",
+ "editor-bg": "var(--vscode-editor-background)",
+ "editor-fg": "var(--vscode-editor-foreground)",
+ "input-bg": "var(--vscode-input-background)",
+ "input-fg": "var(--vscode-input-foreground)",
+ "input-border": "var(--vscode-input-border)",
+ "button-fg": "var(--vscode-button-foreground)",
+ "button-bg": "var(--vscode-button-background)",
+ "button-hoverBg": "var(--vscode-button-hoverBackground)",
+ "button-secondary-fg": "var(--vscode-button-secondaryForeground)",
+ "button-secondary-bg": "var(--vscode-button-secondaryBackground)",
+ "button-secondary-hoverBg":
+ "var(--vscode-button-secondaryHoverBackground)",
},
},
},
From 3d58627f303784e0bf6a2e507dbd1c89c39bb0d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aneta=20Jastrz=C4=99bska?=
<1544710+anetaj@users.noreply.github.com>
Date: Sat, 21 Sep 2024 15:39:06 +0200
Subject: [PATCH 08/10] style included code tag + toolbar
---
.../src/sidebar/MarkdownRender/BlockCode.tsx | 53 +++++++++++--------
extensions/void/src/sidebar/Sidebar.tsx | 34 +++++++-----
.../void/src/sidebar/components/Files.tsx | 2 +-
3 files changed, 55 insertions(+), 34 deletions(-)
diff --git a/extensions/void/src/sidebar/MarkdownRender/BlockCode.tsx b/extensions/void/src/sidebar/MarkdownRender/BlockCode.tsx
index 37d5b5bd..1ce07d80 100644
--- a/extensions/void/src/sidebar/MarkdownRender/BlockCode.tsx
+++ b/extensions/void/src/sidebar/MarkdownRender/BlockCode.tsx
@@ -1,5 +1,6 @@
-import React, { useCallback, useEffect, useState } from "react"
+import React, { ReactNode, useCallback, useEffect, useState } from "react"
import { getVSCodeAPI } from "../getVscodeApi"
+import { classNames } from "../utils"
enum CopyButtonState {
Copy = "Copy",
@@ -12,10 +13,14 @@ const COPY_FEEDBACK_TIMEOUT = 1000
// code block with Apply button at top
const BlockCode = ({
text,
+ toolbar,
hideToolbar = false,
+ className,
}: {
text: string
+ toolbar?: ReactNode
hideToolbar?: boolean
+ className?: string
}) => {
const [copyButtonState, setCopyButtonState] = useState(CopyButtonState.Copy)
@@ -38,34 +43,40 @@ const BlockCode = ({
)
}, [text])
+ const defaultToolbar = (
+ <>
+
+
+ >
+ )
+
return (
{!hideToolbar && (
-
-
-
-
+
{toolbar || defaultToolbar}
)}
)
diff --git a/extensions/void/src/sidebar/Sidebar.tsx b/extensions/void/src/sidebar/Sidebar.tsx
index 1aefaf47..3af8540a 100644
--- a/extensions/void/src/sidebar/Sidebar.tsx
+++ b/extensions/void/src/sidebar/Sidebar.tsx
@@ -220,23 +220,33 @@ const Sidebar = () => {
{/* selection */}
-
+ {(files.length || selection?.selectionStr) &&
{/* selected files */}
{/* selected code */}
- {!selection?.selectionStr ? null
- : (
-
-
-
-
+
+
+ )} />
)}
-
+
}