ligo/tools/webide/packages/client/src/redux/evaluate-function.ts

56 lines
1.4 KiB
TypeScript
Raw Normal View History

import { ActionType as ExamplesActionType, ChangeSelectedAction as ChangeSelectedExampleAction } from './examples';
export enum ActionType {
ChangeEntrypoint = 'evaluate-function-change-entrypoint',
ChangeParameters = 'evaluate-function-change-parameters'
}
export interface EvaluateFunctionState {
entrypoint: string;
parameters: string;
}
export class ChangeEntrypointAction {
public readonly type = ActionType.ChangeEntrypoint;
constructor(public payload: EvaluateFunctionState['entrypoint']) {}
}
export class ChangeParametersAction {
public readonly type = ActionType.ChangeParameters;
constructor(public payload: EvaluateFunctionState['parameters']) {}
}
type Action =
| ChangeEntrypointAction
| ChangeParametersAction
| ChangeSelectedExampleAction;
const DEFAULT_STATE: EvaluateFunctionState = {
entrypoint: '',
parameters: ''
};
export default (
state = DEFAULT_STATE,
action: Action
): EvaluateFunctionState => {
switch (action.type) {
case ExamplesActionType.ChangeSelected:
return {
...state,
...(!action.payload ? DEFAULT_STATE : action.payload.evaluateFunction)
};
case ActionType.ChangeEntrypoint:
return {
...state,
entrypoint: action.payload
};
case ActionType.ChangeParameters:
return {
...state,
parameters: action.payload
};
}
return state;
};