diff --git a/apps/memory-graph-playground/src/app/page.tsx b/apps/memory-graph-playground/src/app/page.tsx index eefd7217..39354cbf 100644 --- a/apps/memory-graph-playground/src/app/page.tsx +++ b/apps/memory-graph-playground/src/app/page.tsx @@ -125,6 +125,11 @@ export default function Home() { console.log("Slideshow showing node:", nodeId) }, []) + // Handle slideshow stop (when user clicks outside) + const handleSlideshowStop = useCallback(() => { + setIsSlideshowActive(false) + }, []) + return (
diff --git a/packages/memory-graph/src/components/memory-graph.tsx b/packages/memory-graph/src/components/memory-graph.tsx
index 96cadb47..e16d5882 100644
--- a/packages/memory-graph/src/components/memory-graph.tsx
+++ b/packages/memory-graph/src/components/memory-graph.tsx
@@ -43,6 +43,7 @@ export const MemoryGraph = ({
// Slideshow control
isSlideshowActive = false,
onSlideshowNodeChange,
+ onSlideshowStop,
}: MemoryGraphProps) => {
// Inject styles on first render (client-side only)
useEffect(() => {
@@ -706,6 +707,7 @@ export const MemoryGraph = ({
y={popoverPosition.y}
onClose={() => setSelectedNode(null)}
containerBounds={containerRef.current?.getBoundingClientRect()}
+ onBackdropClick={isSlideshowActive ? onSlideshowStop : undefined}
/>
)}
diff --git a/packages/memory-graph/src/components/node-popover.tsx b/packages/memory-graph/src/components/node-popover.tsx
index 7ae758de..5f8a06cf 100644
--- a/packages/memory-graph/src/components/node-popover.tsx
+++ b/packages/memory-graph/src/components/node-popover.tsx
@@ -9,6 +9,7 @@ export interface NodePopoverProps {
y: number // Screen Y position
onClose: () => void
containerBounds?: DOMRect // Optional container bounds to limit backdrop
+ onBackdropClick?: () => void // Optional callback when backdrop is clicked
}
export const NodePopover = memo