From c90c280255459e71d962fbb9a8136161dcddd56d Mon Sep 17 00:00:00 2001 From: Ross Date: Sat, 31 May 2025 10:23:52 +0100 Subject: [PATCH] start fixing ts errors --- dicom-viewer/src/App.tsx | 97 ++++++++++++------- dicom-viewer/src/lib/createImageIds.ts | 1 - .../src/lib/createImageIdsAndCacheMetaData.ts | 1 - 3 files changed, 61 insertions(+), 38 deletions(-) diff --git a/dicom-viewer/src/App.tsx b/dicom-viewer/src/App.tsx index b9d6660..79689c8 100644 --- a/dicom-viewer/src/App.tsx +++ b/dicom-viewer/src/App.tsx @@ -21,6 +21,14 @@ import cornerstoneDICOMImageLoader from "@cornerstonejs/dicom-image-loader" window.cornerstoneTools = cornerstoneTools; + +type ViewportDiv = HTMLDivElement & { + _cornerstoneEnabled?: boolean; + _lastViewportType?: any; + _resizeObserver?: ResizeObserver; + _overlayListener?: EventListener; +}; + const { MouseBindings, KeyboardBindings } = csToolsEnums; const { IMAGE_RENDERED } = Enums.Events; @@ -142,6 +150,7 @@ function App() { const [referenceLinesEnabled, setReferenceLinesEnabled] = useState(true); const [showAdvancedMouseBindings, setShowAdvancedMouseBindings] = useState(false); + const [showAdvancedCtrlMouseBindings, setShowAdvancedCtrlMouseBindings] = useState(false); const sortViewportImageIdsBySliceLocation = () => { setViewportImageIds(prev => { @@ -222,7 +231,7 @@ function App() { const [viewportMenuOpen, setViewportMenuOpen] = useState(false) // Store refs for each viewport - const viewportRefs = useRef>([]) + const viewportRefs = useRef>([]); // Store the properties and scroll position of existing viewports before grid change const prevViewportProps = useRef>({}); @@ -702,13 +711,13 @@ function App() { // Always (re-)attach overlay update for each viewport - if (element._overlayListener) { + if ((element)._overlayListener) { // Remove previous listener if present - viewport.element.removeEventListener(IMAGE_RENDERED, element._overlayListener); + viewport.element.removeEventListener(IMAGE_RENDERED, (element)._overlayListener); } const overlayListener = () => updateOverlay(i, viewport); viewport.element.addEventListener(IMAGE_RENDERED, overlayListener); - element._overlayListener = overlayListener; + (element)._overlayListener = overlayListener; updateOverlay(i, viewport); } @@ -763,9 +772,9 @@ function App() { // Cleanup: disconnect ResizeObservers return () => { viewportRefs.current.forEach(el => { - if (el && el._resizeObserver) { - el._resizeObserver.disconnect(); - delete el._resizeObserver; + if (el && (el)._resizeObserver) { + (el)._resizeObserver.disconnect(); + delete (el)._resizeObserver; } }); cancelAnimationFrame(raf); @@ -1329,7 +1338,6 @@ function App() { position: "relative", width: "99vw", height: "99vh", - background: "#111", padding: "12px", // <-- Add this line boxSizing: "border-box", // <-- Ensure padding doesn't shrink content background: "#222", @@ -1620,7 +1628,7 @@ function App() { fontSize: "15px", }} onClick={() => { - saveVisibleViewportState(viewportGrid, renderingEngineRef.current); + saveVisibleViewportState(); setViewportGrid({ rows: opt.rows, cols: opt.cols }) setViewportMenuOpen(false) }} @@ -1804,33 +1812,50 @@ function App() { ))} - {/* Expandable advanced ctrl+mouse bindings */} - {showAdvancedMouseBindings && ( -
- {ALL_MOUSE_BINDINGS.slice(3).map((btn) => ( -
- - -
- ))} -
- )} + {/* Separate button for advanced Ctrl+Mouse bindings */} +
+ + {showAdvancedCtrlMouseBindings && ( +
+ {ALL_MOUSE_BINDINGS.slice(3).map((btn) => ( +
+ + +
+ ))} +
+ )} +