import { FaEye, FaEyeSlash, FaMinus, FaPlus } from 'react-icons/fa'; import { GrRadialSelected } from 'react-icons/gr'; import { TooltipHelpContent } from 'react-science/ui'; import { useDispatch } from '../context/DispatchContext.js'; import type { ToolbarItemProps } from '../panels/header/DefaultPanelHeader.js'; import type { SpectraSelectedMode } from '../reducer/actions/SpectraActions.js'; import { useActiveNucleusTab } from './useActiveNucleusTab.js'; interface ToggleSpectraVisibility { enableShowAll: boolean; enableShowSelected: boolean; enableShowSelectedOnly: boolean; enableHideSelected: boolean; enableHideAll: boolean; } export function useToggleSpectraVisibility( props: Partial = {}, ) { const { enableHideAll = true, enableHideSelected = true, enableShowAll = true, enableShowSelectedOnly = true, enableShowSelected = true, } = props; const dispatch = useDispatch(); const activeTab = useActiveNucleusTab(); function showSpectraHandler(mode: SpectraSelectedMode) { dispatch({ type: 'CHANGE_SPECTRA_VISIBILITY_BY_NUCLEUS', payload: { nucleus: activeTab, flag: true, mode }, }); } function hideSpectraHandler(mode: SpectraSelectedMode) { dispatch({ type: 'CHANGE_SPECTRA_VISIBILITY_BY_NUCLEUS', payload: { nucleus: activeTab, flag: false, mode }, }); } function getToggleVisibilityButtons(disabled = false) { const output: ToolbarItemProps[] = []; if (enableShowAll) { output.push({ icon: , tooltip: , onClick: () => showSpectraHandler('all'), }); } if (enableShowSelected) { output.push({ disabled, icon: , tooltip: , onClick: () => showSpectraHandler('selected'), }); } if (enableShowSelectedOnly) { output.push({ disabled, icon: , tooltip: , onClick: () => showSpectraHandler('selectedOnly'), }); } if (enableHideSelected) { output.push({ disabled, icon: , tooltip: , onClick: () => hideSpectraHandler('selected'), }); } if (enableHideAll) { output.push({ icon: , tooltip: , onClick: () => hideSpectraHandler('all'), }); } return output; } return { showSpectraHandler, hideSpectraHandler, getToggleVisibilityButtons, }; }