diff --git a/dicom-viewer/src/App.tsx b/dicom-viewer/src/App.tsx
index 323b5f6..d586fb8 100644
--- a/dicom-viewer/src/App.tsx
+++ b/dicom-viewer/src/App.tsx
@@ -1174,17 +1174,17 @@ function App({ container_id, imageStacks, autoCacheStack, annotationJson, viewer
};
}, []);
-useEffect(() => {
- const el = appRootRef.current;
- if (!el) return;
- const handleContextMenu = (e: MouseEvent) => {
- e.preventDefault();
- };
- el.addEventListener("contextmenu", handleContextMenu);
- return () => {
- el.removeEventListener("contextmenu", handleContextMenu);
- };
-}, []);
+ useEffect(() => {
+ const el = appRootRef.current;
+ if (!el) return;
+ const handleContextMenu = (e: MouseEvent) => {
+ e.preventDefault();
+ };
+ el.addEventListener("contextmenu", handleContextMenu);
+ return () => {
+ el.removeEventListener("contextmenu", handleContextMenu);
+ };
+ }, []);
useEffect(() => {
if (!referenceLinesEnabled) return;
@@ -1926,6 +1926,8 @@ useEffect(() => {
useEffect(() => {
+ const el = appRootRef.current;
+ if (!el) return;
function handleArrowKeyNavigation(e: KeyboardEvent) {
console.log("Handling arrow key navigation", e.key);
console.log("activeViewport", activeViewport);
@@ -1975,8 +1977,11 @@ useEffect(() => {
}
}
- window.addEventListener("keydown", handleArrowKeyNavigation);
- return () => window.removeEventListener("keydown", handleArrowKeyNavigation);
+ el.addEventListener("keydown", handleArrowKeyNavigation);
+
+ return () => {
+ el.removeEventListener("keydown", handleArrowKeyNavigation);
+ };
}, [activeViewport, viewportModes, viewportImageIds, updateOverlay]);
@@ -2401,98 +2406,98 @@ useEffect(() => {
{/* Preset menu (bottom right of viewport) */}
-
-
e.stopPropagation()} // <-- prevent bubbling to viewport
- >
-
{
- e.stopPropagation(); // <-- prevent bubbling to viewport
- setPresetsOpenArr(prev => {
- const next = [...prev];
- next[i] = !next[i];
- return next;
- });
- }}
- >
- Presets
-
- {presetsOpenArr[i] ? "▲" : "▼"}
-
-
- {presetsOpenArr[i] && (
-
e.stopPropagation()} // <-- prevent bubbling to viewport
- >
- {WINDOW_LEVEL_PRESETS.map((preset) => (
-
-
+
{
+ e.stopPropagation(); // <-- prevent bubbling to viewport
+ setPresetsOpenArr(prev => {
+ const next = [...prev];
+ next[i] = !next[i];
+ return next;
+ });
+ }}
+ >
+ Presets
+
+ {presetsOpenArr[i] ? "▲" : "▼"}
+
+
+ {presetsOpenArr[i] && (
+
e.stopPropagation()} // <-- prevent bubbling to viewport
+ >
+ {WINDOW_LEVEL_PRESETS.map((preset) => (
+
+ ))}
+
+ )}
+
+
{/* Position bar inside each viewport */}
{viewportModes[i] === "stack" && viewportImageIds[i] && (
{
return (
// App root
-
+
{/* Loading overlay */}
{loadingState && (
{
? "Disable Alt Key for Reference Cursors"
: "Enable Alt Key for Reference Cursors"}
-
+
{/* Add more menu items here if needed */}