From 7ad390239f26fb50f6d888d933257176a6260595 Mon Sep 17 00:00:00 2001 From: Brett Kolodny Date: Wed, 11 Jun 2025 02:54:48 +0000 Subject: [PATCH 1/3] feat: check output button and drawer --- src/client/Preview.tsx | 209 ++++++++++++++++++++++++++--------------- 1 file changed, 133 insertions(+), 76 deletions(-) diff --git a/src/client/Preview.tsx b/src/client/Preview.tsx index 5455e67..22d2b05 100644 --- a/src/client/Preview.tsx +++ b/src/client/Preview.tsx @@ -31,10 +31,18 @@ import { LoaderIcon, PlayIcon, ScrollTextIcon, + SearchCodeIcon, XIcon, } from "lucide-react"; import { AnimatePresence, motion } from "motion/react"; -import { type FC, useCallback, useEffect, useMemo, useState } from "react"; +import { + type FC, + type PropsWithChildren, + useCallback, + useEffect, + useMemo, + useState, +} from "react"; import { useSearchParams } from "react-router"; import { Select, @@ -226,16 +234,7 @@ export const Preview: FC = () => { ) : null} -
- - -
+ } {$parameters.length === 0 ? ( @@ -247,6 +246,12 @@ export const Preview: FC = () => {
)} +
+ + +
@@ -486,15 +491,17 @@ const LogsEmptyState = () => { type LogProps = { log: ParserLog }; const Log: FC = ({ log }) => { - const [showTable, setShowTable] = useState(() => false); + const data = Object.entries(log).reduce>( + (acc, [key, value]) => { + acc[key] = value; + return acc; + }, + {}, + ); return ( - setShowTable(() => show)} - > - + + + ); +}; + +type FormProps = { parameters: ParameterWithSource[] }; + +const Form: FC = ({ parameters }) => { + return parameters + .sort((a, b) => a.order - b.order) + .map((p, index) => ); +}; + +type FormElementProps = { parameter: ParameterWithSource }; +const FormElement: FC = ({ parameter }) => { + const $form = useStore((state) => state.form); + const $setForm = useStore((state) => state.setFormState); + + const value = useMemo( + () => + $form[parameter.name] ?? + (parameter.default_value.value === "??" + ? "" + : parameter.default_value.value), + [$form, parameter], + ); + + const onValueChange = (value: string) => { + $setForm(parameter.name, value); + }; + + return ( + + ); +}; + +const UserSelect: FC = () => { + const $setWorkspaceOwner = useStore((state) => state.setWorkspaceOwner); + + return ( + + ); +}; + +type TableDrawerProps = { + data: Record; + headers?: [string, string]; +} & PropsWithChildren; + +const TableDrawer: FC = ({ + data, + headers = ["field", "value"], + children, +}) => { + const [showTable, setShowTable] = useState(() => false); + + return ( + setShowTable(() => show)} + > + {children} @@ -528,11 +619,11 @@ const Log: FC = ({ log }) => { initial={{ opacity: 0, transform: "translateX(100px)" }} animate={{ opacity: 1, transform: "translateX(0px)" }} exit={{ opacity: 0, transform: "translateX(100px)" }} - className="fixed top-0 right-0 z-20 flex h-full w-full max-w-md flex-col justify-start gap-6 border-l bg-surface-primary p-4" + className="fixed top-0 right-0 z-20 flex h-full w-full max-w-lg flex-col justify-start gap-6 border-l bg-surface-primary p-4" >
- Log + Parameter Values + ); }; From 1078c21ea46f6a06d9c300bca38580700a7edf32 Mon Sep 17 00:00:00 2001 From: Brett Kolodny Date: Wed, 11 Jun 2025 03:21:51 +0000 Subject: [PATCH 2/3] feat: handle overflow --- src/client/Preview.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/Preview.tsx b/src/client/Preview.tsx index 22d2b05..b27c585 100644 --- a/src/client/Preview.tsx +++ b/src/client/Preview.tsx @@ -635,7 +635,7 @@ const TableDrawer: FC = ({
-
+

{headers[0]}

From 19b0518780238bf2e0b267130706237bf3439270 Mon Sep 17 00:00:00 2001 From: Brett Kolodny Date: Wed, 11 Jun 2025 03:23:18 +0000 Subject: [PATCH 3/3] chore: minor styling --- src/client/Preview.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/Preview.tsx b/src/client/Preview.tsx index b27c585..a0f01a5 100644 --- a/src/client/Preview.tsx +++ b/src/client/Preview.tsx @@ -204,7 +204,7 @@ export const Preview: FC = () => { ($errors.show && $errors.diagnostics.length > 0) } className={cn( - "flex h-full w-full flex-col items-start gap-6 p-6 ", + "flex h-full w-full flex-col items-start gap-4 p-5 ", ($wasmState !== "loaded" || ($errors.show && $errors.diagnostics.length > 0)) && "pointer-events-none",