import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import { SidePanel, Toolbar } from '@ohif/ui'; import { useToolbarLayout, useViewModel } from '@ohif/core'; // import Header from './Header.jsx'; import { displaySetManager } from '@ohif/core'; function ViewportDataCreator({setViewportData}) { const { displaySetInstanceUIDs } = useViewModel() console.log(displaySetInstanceUIDs); useEffect(() => { setViewportData([ displaySetManager.getDisplaySetByUID(displaySetInstanceUIDs[0]), ]); }, [displaySetInstanceUIDs, setViewportData]); return null; } function ViewerLayout({ // From Extension Module Params extensionManager, // From Modes leftPanels, rightPanels, viewports, ViewportGrid, }) { /** * Set body classes (tailwindcss) that don't allow vertical * or horizontal overflow (no scrolling). Also guarantee window * is sized to our viewport. */ useEffect(() => { document.body.classList.add('bg-black'); document.body.classList.add('overflow-hidden'); return () => { document.body.classList.remove('bg-black'); document.body.classList.remove('overflow-hidden'); }; }, []); // TODO -> Need some way of selecting which displaySets hit the viewports. const [viewportData, setViewportData] = useState([]); const getPanelData = id => { const entry = extensionManager.getModuleEntry(id); // TODO, not sure why sidepanel content has to be JSX, and not a children prop? const content = entry.component; return { iconName: entry.iconName, iconLabel: entry.iconLabel, label: entry.label, name: entry.name, content, }; }; const getViewportComponentData = viewportComponent => { const entry = extensionManager.getModuleEntry(viewportComponent.namespace); return { component: entry.component, displaySetsToDisplay: viewportComponent.displaySetsToDisplay, }; }; const leftPanelComponents = leftPanels.map(getPanelData); const rightPanelComponents = rightPanels.map(getPanelData); const viewportComponents = viewports.map(getViewportComponentData); let { toolBarLayout } = useToolbarLayout(); if (!toolBarLayout.length) { return null; } const [primaryToolBarLayout, secondaryToolBarLayout] = toolBarLayout; return (