Refactor App and Editor events
This commit is contained in:
parent
28b0965626
commit
d05d0fb196
5 changed files with 209 additions and 203 deletions
|
@ -1,4 +1,5 @@
|
|||
import Swal from 'sweetalert2';
|
||||
import { Dispatch, SetStateAction } from 'react';
|
||||
import { AddMethod } from '../../../Enums/AddMethod';
|
||||
import { IAction } from '../../../Interfaces/IAction';
|
||||
import { IConfiguration } from '../../../Interfaces/IConfiguration';
|
||||
|
@ -6,13 +7,122 @@ import { IContainerModel } from '../../../Interfaces/IContainerModel';
|
|||
import { IHistoryState } from '../../../Interfaces/IHistoryState';
|
||||
import { ISetContainerListRequest } from '../../../Interfaces/ISetContainerListRequest';
|
||||
import { ISetContainerListResponse } from '../../../Interfaces/ISetContainerListResponse';
|
||||
import { DISABLE_API } from '../../../utils/default';
|
||||
import { FindContainerById } from '../../../utils/itertools';
|
||||
import { SetContainerList } from '../../API/api';
|
||||
import { IMenuAction } from '../../Menu/Menu';
|
||||
import { GetCurrentHistoryState } from '../Editor';
|
||||
import { AddContainers } from './AddContainer';
|
||||
import { DeleteContainer } from './ContainerOperations';
|
||||
import { DeleteSymbol } from './SymbolOperations';
|
||||
|
||||
export function GetAction(
|
||||
export function InitActions(
|
||||
menuActions: Map<string, IMenuAction[]>,
|
||||
configuration: IConfiguration,
|
||||
history: IHistoryState[],
|
||||
historyCurrentStep: number,
|
||||
setNewHistory: (newHistory: IHistoryState[]) => void,
|
||||
setHistoryCurrentStep: Dispatch<SetStateAction<number>>
|
||||
): void {
|
||||
menuActions.set(
|
||||
'',
|
||||
[
|
||||
{
|
||||
text: 'Undo',
|
||||
title: 'Undo last action',
|
||||
shortcut: '<kbd>Ctrl</kbd>+<kbd>Z</kbd>',
|
||||
action: () => {
|
||||
if (historyCurrentStep <= 0) {
|
||||
return;
|
||||
}
|
||||
setHistoryCurrentStep(historyCurrentStep - 1);
|
||||
}
|
||||
},
|
||||
{
|
||||
text: 'Redo',
|
||||
title: 'Redo last action',
|
||||
shortcut: '<kbd>Ctrl</kbd>+<kbd>Y</kbd>',
|
||||
action: () => {
|
||||
if (historyCurrentStep >= history.length - 1) {
|
||||
return;
|
||||
}
|
||||
setHistoryCurrentStep(historyCurrentStep + 1);
|
||||
}
|
||||
}
|
||||
]
|
||||
);
|
||||
|
||||
menuActions.set(
|
||||
'elements-sidebar-row',
|
||||
[{
|
||||
text: 'Delete',
|
||||
title: 'Delete the container',
|
||||
shortcut: '<kbd>Suppr</kbd>',
|
||||
action: (target: HTMLElement) => {
|
||||
const id = target.id;
|
||||
const newHistory = DeleteContainer(
|
||||
id,
|
||||
history,
|
||||
historyCurrentStep
|
||||
);
|
||||
setNewHistory(newHistory);
|
||||
}
|
||||
}]
|
||||
);
|
||||
|
||||
menuActions.set(
|
||||
'symbols-sidebar-row',
|
||||
[{
|
||||
text: 'Delete',
|
||||
title: 'Delete the container',
|
||||
shortcut: '<kbd>Suppr</kbd>',
|
||||
action: (target: HTMLElement) => {
|
||||
const id = target.id;
|
||||
const newHistory = DeleteSymbol(
|
||||
id,
|
||||
history,
|
||||
historyCurrentStep
|
||||
);
|
||||
setNewHistory(newHistory);
|
||||
}
|
||||
}]
|
||||
);
|
||||
|
||||
// API Actions
|
||||
if (DISABLE_API) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (const availableContainer of configuration.AvailableContainers) {
|
||||
if (availableContainer.Actions === undefined || availableContainer.Actions === null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const action of availableContainer.Actions) {
|
||||
if (menuActions.get(availableContainer.Type) === undefined) {
|
||||
menuActions.set(availableContainer.Type, []);
|
||||
}
|
||||
|
||||
const currentState = GetCurrentHistoryState(history, historyCurrentStep);
|
||||
const newAction: IMenuAction = {
|
||||
text: action.Label,
|
||||
title: action.Description,
|
||||
action: GetAction(
|
||||
action,
|
||||
currentState,
|
||||
configuration,
|
||||
history,
|
||||
historyCurrentStep,
|
||||
setNewHistory
|
||||
)
|
||||
};
|
||||
|
||||
menuActions.get(availableContainer.Type)?.push(newAction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function GetAction(
|
||||
action: IAction,
|
||||
currentState: IHistoryState,
|
||||
configuration: IConfiguration,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue