diff --git a/webview-ui/src/components/chat/BrowserSessionRow.tsx b/webview-ui/src/components/chat/BrowserSessionRow.tsx index 17b3fb3..e9f6d09 100644 --- a/webview-ui/src/components/chat/BrowserSessionRow.tsx +++ b/webview-ui/src/components/chat/BrowserSessionRow.tsx @@ -1,5 +1,5 @@ import deepEqual from "fast-deep-equal" -import React, { memo, useEffect, useRef } from "react" +import React, { memo, useEffect, useRef, useState } from "react" import { useSize } from "react-use" import { BrowserActionResult, ClineMessage, ClineSayBrowserAction } from "../../../../src/shared/ExtensionMessage" import { vscode } from "../../utils/vscode" @@ -16,13 +16,113 @@ interface BrowserSessionRowProps { onHeightChange: (isTaller: boolean) => void } +/* + +- console logs will be aggregate up to that current page +*/ + const BrowserSessionRow = memo((props: BrowserSessionRowProps) => { const { messages, isLast, onHeightChange } = props const prevHeightRef = useRef(0) + const [consoleLogsExpanded, setConsoleLogsExpanded] = useState(false) + const consoleLogs = "console logs\nhere\n..." + const [browserSessionRow, { height }] = useSize(

Browser Session Group

+ +
+
+ {"https://example.com/thisisalongurl/asdfasfdasdf?asdfasdfasf"} +
+
+ {/*
*/} +
+ +
+ +
+
+
{ + if (consoleLogs) { + setConsoleLogsExpanded(!consoleLogsExpanded) + } + }} + style={{ + display: "flex", + alignItems: "center", + gap: "4px", + width: "100%", + justifyContent: "flex-start", + cursor: consoleLogs ? "pointer" : "default", + opacity: consoleLogs ? 1 : 0.5, + padding: `8px 8px ${consoleLogsExpanded ? 0 : 8}px 8px`, + }}> + + Console Logs +
+ {consoleLogsExpanded && } +
+
+ {messages.map((message, index) => ( ))} @@ -156,4 +256,22 @@ const BrowserSessionRowContent = ({ } } +const BrowserCursor: React.FC<{ style?: React.CSSProperties }> = ({ style }) => { + // (can't use svgs in vsc extensions) + const cursorBase64 = + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFaADAAQAAAABAAAAGAAAAADwi9a/AAADGElEQVQ4EZ2VbUiTURTH772be/PxZdsz3cZwC4RVaB8SAjMpxQwSWZbQG/TFkN7oW1Df+h6IRV9C+hCpKUSIZUXOfGM5tAKViijFFEyfZ7Ol29S1Pbdzl8Uw9+aBu91zzv3/nt17zt2DEZjBYOAkKrtFMXIghAWM8U2vMN/FctsxGRMpM7NbEEYNMM2CYUSInlJx3OpawO9i+XSNQYkmk2uFb9njzkcfVSr1p/GJiQKMULVaw2WuBv296UKRxWJR6wxGCmM1EAhSNppv33GBH9qI32cPTAtss9lUm6EM3N7R+RbigT+5/CeosFCZKpjEW+iorS1pb30wDUXzQfHqtD/9L3ieZ2ee1OJCmbL8QHnRs+4uj0wmW4QzrpCwvJ8zGg3JqAmhTLynuLiwv8/5KyND8Q3cEkUEDWu15oJE4KRQJt5hs1rcriGNRqP+DK4dyyWXXm/aFQ+cEpSJ8/LyDGPuEZNOmzsOroUSOqzXG/dtBU4ZysTZYKNut91sNo2Cq6cE9enz86s2g9OCMrFSqVC5hgb32u072W3jKMU90Hb1seC0oUwsB+t92bO/rKx0EFGkgFCnjjc1/gVvC8rE0L+4o63t4InjxwbAJQjTe3qD8QrLkXA4DC24fWtuajp06cLFYSBIFKGmXKPRRmAnME9sPt+yLwIWb9WN69fKoTneQz4Dh2mpPNkvfeV0jjecb9wNAkwIEVQq5VJOds4Kb+DXoAsiVquVwI1Dougpij6UyGYx+5cKroeDEFibm5lWRRMbH1+npmYrq6qhwlQHIbajZEf1fElcqGGFpGg9HMuKzpfBjhytCTMgkJ56RX09zy/ysENTBElmjIgJnmNChJqohDVQqpEfwkILE8v/o0GAnV9F1eEvofVQCbiTBEXOIPQh5PGgefDZeAcjrpGZjULBr/m3tZOnz7oEQWRAQZLjWlEU/XEJWySiILgRc5Cz1DkcAyuBFcnpfF0JiXWKpcolQXizhS5hKAqFpr0MVbgbuxJ6+5xX+P4wNpbqPPrugZfbmIbLmgQR3Aw8QSi66hUXulOFbF73GxqjE5BNXWNeAAAAAElFTkSuQmCC" + + return ( + cursor + ) +} + export default BrowserSessionRow