import { ToolbarButton } from '@ohif/ui';
import ToolbarDivider from './Toolbar/ToolbarDivider.tsx';
import ToolbarLayoutSelector from './Toolbar/ToolbarLayoutSelector.tsx';
import ToolbarSplitButton from './Toolbar/ToolbarSplitButton.tsx';

export default function getToolbarModule({ commandsManager, servicesManager }) {
  const toolbarService = servicesManager.services.ToolBarService;

  return [
    {
      name: 'ohif.divider',
      defaultComponent: ToolbarDivider,
      clickHandler: () => {},
    },
    {
      name: 'ohif.action',
      defaultComponent: ToolbarButton,
      clickHandler: () => {},
    },
    {
      name: 'ohif.radioGroup',
      defaultComponent: ToolbarButton,
      clickHandler: () => {},
    },
    {
      name: 'ohif.splitButton',
      defaultComponent: ToolbarSplitButton,
      clickHandler: () => {},
    },
    {
      name: 'ohif.layoutSelector',
      defaultComponent: ToolbarLayoutSelector,
      clickHandler: (evt, clickedBtn, btnSectionName) => {},
    },
    {
      name: 'ohif.toggle',
      defaultComponent: ToolbarButton,
      requiredConfig: [],
      optionalConfig: [],
      requiredProps: [],
      optionalProps: [],
      clickHandler: (evt, clickedBtn, btnSectionName) => {
        const { props } = clickedBtn;
        const allButtons = toolbarService.getButtons();
        const thisButton = allButtons[clickedBtn.id];

        // Set our clicked button to active
        thisButton.props.isActive = !thisButton.props.isActive;

        // Run button logic/command
        commandsManager.runCommand(props.commandName, props.commandOptions);

        // What if just toggled "content"?
        // commandName OR content?

        // Set buttons & trigger notification
        toolbarService.setButtons(allButtons);
      },
    },
  ];
}
