import styled from '@emotion/styled';
import type { NMRiumPanelPreferences } from '@zakodium/nmrium-core';
import { memo } from 'react';
import { Accordion, Toolbar } from 'react-science/ui';
import { usePreferences } from '../context/PreferencesContext.js';
import type { AccordionItem } from './accordionItems.js';
import { useAccordionItems } from './hooks/useAccordionItems.js';
import { useGetPanelOptions } from './hooks/useGetPanelOptions.js';
import { useTogglePanel } from './hooks/useTogglePanel.js';
const Container = styled.div`
flex: 1 1 0%;
height: 100%;
width: 100%;
`;
function PanelsInner() {
const getPanelPreferences = useGetPanelOptions();
const { dispatch } = usePreferences();
const items = useAccordionItems();
function isOpened(item: AccordionItem) {
const panelOptions = getPanelPreferences(item);
return panelOptions?.open;
}
function isVisible(item: AccordionItem) {
const panelOptions = getPanelPreferences(item);
return panelOptions?.display;
}
const displayedPanels = items.filter((item) => {
return isVisible(item);
});
return (
{displayedPanels.map((item) => {
const { title, component, id } = item;
return (
{
dispatch({
type: 'TOGGLE_PANEL',
payload: { id, options: { open: isOpened } },
});
}}
renderToolbar={() => }
>
{component}
);
})}
);
}
function RightButtons(props: { id: keyof NMRiumPanelPreferences }) {
const { id } = props;
const toggle = useTogglePanel();
function handleClosePanel(event: any) {
event?.stopPropagation();
toggle(id);
}
return (
);
}
const MemoizedPanels = memo(PanelsInner);
export function Panels() {
return ;
}