From 1f39bffd4cc99161725e72946def5976608b759b Mon Sep 17 00:00:00 2001 From: Kerem Yilmaz Date: Fri, 17 May 2024 11:03:00 -0700 Subject: [PATCH] Improve screenshot size & zoom (#340) Co-authored-by: Muhammed Salih Altun --- .../src/components/ZoomableImage.tsx | 64 +++++++++++++++++-- .../src/routes/tasks/detail/StepArtifacts.tsx | 6 +- 2 files changed, 60 insertions(+), 10 deletions(-) diff --git a/skyvern-frontend/src/components/ZoomableImage.tsx b/skyvern-frontend/src/components/ZoomableImage.tsx index 3d0d3ebb..69fc679b 100644 --- a/skyvern-frontend/src/components/ZoomableImage.tsx +++ b/skyvern-frontend/src/components/ZoomableImage.tsx @@ -1,15 +1,65 @@ -import Zoom from "react-medium-image-zoom"; -import { AspectRatio } from "@/components/ui/aspect-ratio"; +import { useEffect, useState } from "react"; +import clsx from "clsx"; type HTMLImageElementProps = React.ComponentProps<"img">; function ZoomableImage(props: HTMLImageElementProps) { + const [modalOpen, setModalOpen] = useState(false); + const [zoom, setZoom] = useState(false); + + const openModal = () => { + setZoom(false); + setModalOpen(true); + }; + + const closeModal = () => { + setModalOpen(false); + }; + + useEffect(() => { + function handleEscKey(e: KeyboardEvent) { + if (modalOpen && e.key === "Escape") { + closeModal(); + } + } + document.addEventListener("keydown", handleEscKey); + return () => { + document.removeEventListener("keydown", handleEscKey); + }; + }, [modalOpen]); + return ( - - - - - +
+ + {modalOpen && ( +
+ + × + + setZoom(!zoom)} + className={clsx({ + "min-h-full object-contain h-full w-full m-0 cursor-zoom-in max-h-full max-w-full": + !zoom, + "min-h-full object-contain m-0 cursor-zoom-out max-w-none max-h-none mr-auto ml-auto": + zoom, + })} + /> +
+ )} +
); } diff --git a/skyvern-frontend/src/routes/tasks/detail/StepArtifacts.tsx b/skyvern-frontend/src/routes/tasks/detail/StepArtifacts.tsx index 8a62f6ab..d828b4e6 100644 --- a/skyvern-frontend/src/routes/tasks/detail/StepArtifacts.tsx +++ b/skyvern-frontend/src/routes/tasks/detail/StepArtifacts.tsx @@ -111,7 +111,7 @@ function StepArtifacts({ id, stepProps }: Props) { {llmScreenshots && llmScreenshots.length > 0 ? ( -
+
{llmScreenshots.map((artifact, index) => ( ) : isFetching ? ( -
+
@@ -133,7 +133,7 @@ function StepArtifacts({ id, stepProps }: Props) { {actionScreenshots && actionScreenshots.length > 0 ? ( -
+
{actionScreenshots.map((artifact, index) => (