diff --git a/webview-ui/src/components/ChatView.tsx b/webview-ui/src/components/ChatView.tsx index 5e31381..ac66daa 100644 --- a/webview-ui/src/components/ChatView.tsx +++ b/webview-ui/src/components/ChatView.tsx @@ -1,8 +1,8 @@ import { VSCodeButton, VSCodeLink } from "@vscode/webview-ui-toolkit/react" -import { KeyboardEvent, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react" +import { KeyboardEvent, useCallback, useEffect, useMemo, useRef, useState } from "react" import vsDarkPlus from "react-syntax-highlighter/dist/esm/styles/prism/vsc-dark-plus" import DynamicTextArea from "react-textarea-autosize" -import { useEvent, useMount } from "react-use" +import { useEvent, useMeasure, useMount } from "react-use" import { Virtuoso, type VirtuosoHandle } from "react-virtuoso" import { ClaudeAsk, ClaudeSayTool, ExtensionMessage } from "../../../src/shared/ExtensionMessage" import { combineApiRequests } from "../../../src/shared/combineApiRequests" @@ -55,8 +55,7 @@ const ChatView = ({ const textAreaRef = useRef(null) const [textAreaDisabled, setTextAreaDisabled] = useState(false) const [isTextAreaFocused, setIsTextAreaFocused] = useState(false) - const textAreaContainerRef = useRef(null) - const [textAreaContainerHeight, setTextAreaContainerHeight] = useState(51) + const [textAreaContainerRef, { height: textAreaContainerHeight }] = useMeasure() const [selectedImages, setSelectedImages] = useState([]) const [thumbnailsHeight, setThumbnailsHeight] = useState(0) @@ -467,17 +466,6 @@ const ChatView = ({ selectedImages.length >= MAX_IMAGES_PER_MESSAGE || isInputPipingToStdin - useLayoutEffect(() => { - if (textAreaContainerRef.current) { - let height = textAreaContainerRef.current.clientHeight - // some browsers return 0 for clientHeight - if (!height) { - height = textAreaContainerRef.current.getBoundingClientRect().height - } - setTextAreaContainerHeight(height) - } - }, []) - return (
@@ -691,7 +679,7 @@ const ChatView = ({ appearance="icon" aria-label="Send Message" onClick={handleSendMessage}> - +