From 9fe32ba6e8ce8e55851c2f9dc893d51f05548475 Mon Sep 17 00:00:00 2001 From: Abi Raja Date: Fri, 31 May 2024 21:39:12 -0400 Subject: [PATCH] move inSelectAndEditMode to inside EditPopup --- frontend/src/components/Preview.tsx | 10 +----- .../components/select-and-edit/EditPopup.tsx | 36 ++++++++++--------- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/frontend/src/components/Preview.tsx b/frontend/src/components/Preview.tsx index 8dc2f22..d601f78 100644 --- a/frontend/src/components/Preview.tsx +++ b/frontend/src/components/Preview.tsx @@ -2,7 +2,6 @@ import { useEffect, useRef, useState } from "react"; import classNames from "classnames"; import useThrottle from "../hooks/useThrottle"; import EditPopup from "./select-and-edit/EditPopup"; -import { useAppStore } from "../store/app-store"; interface Props { code: string; @@ -11,8 +10,6 @@ interface Props { } function Preview({ code, device, doUpdate }: Props) { - const { inSelectAndEditMode } = useAppStore(); - const iframeRef = useRef(null); // Don't update code more often than every 200ms. @@ -51,12 +48,7 @@ function Preview({ code, device, doUpdate }: Props) { } )} > - + ); } diff --git a/frontend/src/components/select-and-edit/EditPopup.tsx b/frontend/src/components/select-and-edit/EditPopup.tsx index c81e023..09192b3 100644 --- a/frontend/src/components/select-and-edit/EditPopup.tsx +++ b/frontend/src/components/select-and-edit/EditPopup.tsx @@ -2,33 +2,40 @@ import React, { useEffect, useRef, useState } from "react"; import { Textarea } from "../ui/textarea"; import { Button } from "../ui/button"; import { addHighlight, getAdjustedCoordinates, removeHighlight } from "./utils"; +import { useAppStore } from "../../store/app-store"; interface EditPopupProps { event: MouseEvent | null; - inSelectAndEditMode: boolean; - doUpdate: (updateInstruction: string, selectedElement?: HTMLElement) => void; iframeRef: React.RefObject; + doUpdate: (updateInstruction: string, selectedElement?: HTMLElement) => void; } const EditPopup: React.FC = ({ event, - inSelectAndEditMode, - doUpdate, iframeRef, + doUpdate, }) => { - // Edit state - const [selectedElement, setSelectedElement] = useState< - HTMLElement | undefined - >(undefined); - const [updateText, setUpdateText] = useState(""); + // App state + const { inSelectAndEditMode } = useAppStore(); + + // Create a wrapper ref to store inSelectAndEditMode so the value is not stale + // in a event listener + const inSelectAndEditModeRef = useRef(inSelectAndEditMode); + + // Update the ref whenever the state changes + useEffect(() => { + inSelectAndEditModeRef.current = inSelectAndEditMode; + }, [inSelectAndEditMode]); // Popup state const [popupVisible, setPopupVisible] = useState(false); const [popupPosition, setPopupPosition] = useState({ x: 0, y: 0 }); - // Create a wrapper ref to store inSelectAndEditMode so the value is not stale - // in a event listener - const inSelectAndEditModeRef = useRef(inSelectAndEditMode); + // Edit state + const [selectedElement, setSelectedElement] = useState< + HTMLElement | undefined + >(undefined); + const [updateText, setUpdateText] = useState(""); // Textarea ref for focusing const textareaRef = useRef(null); @@ -47,11 +54,6 @@ const EditPopup: React.FC = ({ setPopupVisible(false); } - // Update the ref whenever the state changes - useEffect(() => { - inSelectAndEditModeRef.current = inSelectAndEditMode; - }, [inSelectAndEditMode]); - // Remove highlight and reset state when not in select and edit mode useEffect(() => { if (!inSelectAndEditMode) {