import StartPanel from './start-panel.vue';
import EndPanel from './end-panel.vue';
import TaskPanel from './task-panel.vue';
import DecisionPanel from './decision-panel.vue';
import ForkPanel from './fork-panel.vue';
import JoinPanel from './join-panel.vue';
import SubProcessPanel from './sub-process-panel.vue';
import CustomPanel from './custom-panel.vue';
import DefaultPanel from './default-panel.vue';
import FlowSettingsPanel from './flow-settings-panel.vue';
import EditorProperties from './editor-properties.vue';
import type { PropertyPanelMode, PropertyPanelType, EditorProperties as EditorPropertiesType } from './types';

export {
  StartPanel,
  EndPanel,
  TaskPanel,
  DecisionPanel,
  ForkPanel,
  JoinPanel,
  SubProcessPanel,
  CustomPanel,
  DefaultPanel,
  FlowSettingsPanel,
  EditorProperties,
  PropertyPanelMode,
  PropertyPanelType,
  EditorPropertiesType
};

export const propertyPanelMap: Record<string, any> = {
  start: StartPanel,
  end: EndPanel,
  task: TaskPanel,
  decision: DecisionPanel,
  fork: ForkPanel,
  join: JoinPanel,
  subProcess: SubProcessPanel,
  custom: CustomPanel
};

export const getPanelComponent = (type: string) => {
  return propertyPanelMap[type] || DefaultPanel;
};
