import { Store } from '@/lib/store'; import { LayoutOperator } from '@/lib/operator/LayoutOperator'; import { ScrollOperator } from '@/lib/operator/ScrollOperator'; import { StructureCalculator } from '@/lib/calculate/StructureCalculator'; import { BodyClickedOperator } from '@/lib/operator/BodyClickedOperator'; import { BodyMenuOperator } from '@/lib/operator/BodyMenuOperator'; import { RowSelectionOperator } from '@/lib/operator/RowSelectionOperator'; import { EditOperator } from '@/lib/operator/EditOperator'; import { SelectingOperator } from '@/lib/operator/SelectingOperator'; import { CalculatingOperator } from '@/lib/operator/CalculatingOperator'; import { TreeOperator } from '@/lib/operator/TreeOperator'; import { RowDataCalculator } from '@/lib/operator/RowDataCalculator'; export enum Operator { layout = 'layout', scroll = 'scroll', rowCalculator = 'rowCalculator', structureCalculator = 'structureCalculator', bodyClick = 'bodyClick', bodyMenu = 'bodyMenu', rowSelection = 'rowSelection', edit = 'edit', selection = 'selection', calculating = 'calculating', tree = 'tree', } export const createOperators = (store: Store) => { const operators: Record = {}; operators[Operator.scroll] = new ScrollOperator(store); operators[Operator.layout] = new LayoutOperator(store, operators[Operator.scroll]); operators[Operator.rowSelection] = new RowSelectionOperator(store); operators[Operator.edit] = new EditOperator(store); operators[Operator.rowCalculator] = new RowDataCalculator( store, operators[Operator.edit], operators[Operator.rowSelection], ); operators[Operator.structureCalculator] = new StructureCalculator( store, operators[Operator.layout], operators[Operator.rowSelection], operators[Operator.edit], operators[Operator.rowCalculator], ); operators[Operator.tree] = new TreeOperator(store, operators[Operator.layout]); operators[Operator.bodyClick] = new BodyClickedOperator(store); operators[Operator.bodyMenu] = new BodyMenuOperator(store); operators[Operator.bodyClick].concatBodyMenu(operators[Operator.bodyMenu]); operators[Operator.selection] = new SelectingOperator(store, operators[Operator.bodyMenu]); operators[Operator.calculating] = new CalculatingOperator( store, operators[Operator.selection], operators[Operator.bodyClick], operators[Operator.bodyMenu], operators[Operator.edit], ); return operators; };