From 58cffd632c535a5d9e80be580d61141dd41fb00e Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 13 Apr 2026 21:24:37 +0200 Subject: [PATCH] Implement path list display and interaction in App.tsx --- src/app/App.tsx | 102 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/src/app/App.tsx b/src/app/App.tsx index 79f12d08..0a0a28c5 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -9242,6 +9242,108 @@ export function App({ store, initialStatusMessage }: AppProps) { )} +
+
Paths
+ {pathList.length === 0 ? ( +
+ Use Add > Path to author the first shared motion path. +
+ ) : ( +
+ {pathList.map((path, pathIndex) => { + const label = getScenePathLabel(path, pathIndex); + const isSelected = + editorState.selection.kind === "paths" && + editorState.selection.ids.includes(path.id); + const authoredStateSummary = + formatAuthoredObjectStateSummary(path); + + return ( +
+
+ + handleSetPathEnabled( + path, + event.currentTarget.checked + ) + } + /> + {isSelected ? ( + + setPathNameDraft(event.currentTarget.value) + } + onBlur={applyPathNameChange} + onFocus={(event) => event.currentTarget.select()} + onKeyDown={(event) => + handleInlineNameInputKeyDown(event, () => { + setPathNameDraft(selectedPath?.name ?? ""); + }) + } + /> + ) : ( + + )} + +
+
+ {[ + authoredStateSummary, + path.loop ? "Looping" : null, + `${path.points.length} point${path.points.length === 1 ? "" : "s"}` + ] + .filter((part): part is string => part !== null) + .join(" | ")} +
+
+ ); + })} +
+ )} +
+
Model Instances
{modelInstanceDisplayList.length === 0 ? (