363 lines
8.8 KiB
JavaScript

export const controlCommands = {
label: "流程控制",
icon: "call_split",
commands: [
{
value: "condition",
label: "条件判断",
component: "ControlCommand",
isControlFlow: true,
commandChain: ["if", "end"],
subCommands: [
{
label: "如果满足",
value: "if",
codeTemplate: "if (${condition}) {",
config: [
{
name: "condition",
label: "条件",
component: "ControlInput",
placeholder: "表达式",
defaultValue: "true",
},
],
},
{
label: "否则",
value: "else",
icon: "fork_left",
codeTemplate: "} else {",
},
{
label: "否则满足",
value: "else if",
icon: "fork_left",
codeTemplate: "} else if (${condition}) {",
config: [
{
name: "condition",
label: "条件",
component: "ControlInput",
placeholder: "表达式",
},
],
},
{
label: "结束",
value: "end",
codeTemplate: "}",
},
],
},
{
value: "loop",
label: "循环执行",
component: "ControlCommand",
isControlFlow: true,
commandChain: ["loop", "end"],
subCommands: [
{
label: "循环执行",
value: "loop",
icon: "loop",
codeTemplate:
"for (let ${indexVar} = ${startValue}; ${indexVar} <= ${endValue}; ${indexVar} += ${stepValue}) {",
config: [
{
name: "indexVar",
label: "变量",
component: "ControlInput",
defaultValue: "i",
width: 3,
},
{
name: "startValue",
label: "从",
component: "ControlInput",
icon: "first_page",
defaultValue: "0",
width: 3,
},
{
name: "endValue",
label: "到",
component: "ControlInput",
icon: "last_page",
defaultValue: "10",
width: 3,
},
{
name: "stepValue",
label: "步进",
component: "ControlInput",
icon: "trending_up",
defaultValue: "1",
width: 3,
},
],
},
{
label: "继续循环",
value: "continue",
icon: "skip_next",
codeTemplate: "continue;",
},
{
label: "终止循环",
value: "break",
icon: "stop",
codeTemplate: "break;",
},
{
label: "结束",
value: "end",
codeTemplate: "}",
},
],
},
{
value: "forEach",
label: "遍历数组",
component: "ControlCommand",
isControlFlow: true,
commandChain: ["forEach", "end"],
subCommands: [
{
label: "遍历数组",
value: "forEach",
icon: "list",
codeTemplate:
"for (let [${indexVar}, ${itemVar}] of ${arrayVar}.entries()) {",
config: [
{
name: "indexVar",
label: "索引",
component: "ControlInput",
defaultValue: "index",
width: 4,
},
{
name: "itemVar",
label: "元素",
component: "ControlInput",
defaultValue: "item",
width: 4,
},
{
name: "arrayVar",
label: "数组",
component: "ControlInput",
icon: "list",
defaultValue: "array",
width: 4,
},
],
},
{
label: "继续循环",
value: "continue",
icon: "skip_next",
codeTemplate: "continue;",
},
{
label: "终止循环",
value: "break",
icon: "stop",
codeTemplate: "break;",
},
{
label: "结束",
value: "end",
codeTemplate: "}",
},
],
},
{
value: "forIn",
label: "遍历对象",
component: "ControlCommand",
isControlFlow: true,
commandChain: ["forIn", "end"],
subCommands: [
{
label: "遍历对象",
value: "forIn",
icon: "data_object",
codeTemplate:
"for (const ${keyVar} in ${objectVar}) { const ${valueVar} = ${objectVar}[${keyVar}];",
config: [
{
name: "keyVar",
label: "键名",
component: "ControlInput",
defaultValue: "key",
width: 4,
},
{
name: "valueVar",
label: "值",
component: "ControlInput",
defaultValue: "value",
width: 4,
},
{
name: "objectVar",
label: "对象",
component: "ControlInput",
defaultValue: "object",
width: 4,
},
],
},
{
label: "继续循环",
value: "continue",
icon: "skip_next",
codeTemplate: "continue;",
},
{
label: "终止循环",
value: "break",
icon: "stop",
codeTemplate: "break;",
},
{
label: "结束",
value: "end",
codeTemplate: "}",
},
],
},
{
value: "while",
label: "条件循环",
component: "ControlCommand",
isControlFlow: true,
commandChain: ["while", "end"],
subCommands: [
{
label: "条件循环",
value: "while",
icon: "loop",
codeTemplate: "while (${condition}) {",
config: [
{
name: "condition",
label: "条件",
component: "ControlInput",
placeholder: "表达式",
defaultValue: "true",
},
],
},
{
label: "继续循环",
value: "continue",
icon: "skip_next",
codeTemplate: "continue;",
},
{
label: "终止循环",
value: "break",
icon: "stop",
codeTemplate: "break;",
},
{
label: "结束",
value: "end",
codeTemplate: "}",
},
],
},
{
value: "switch",
label: "条件分支",
component: "ControlCommand",
isControlFlow: true,
commandChain: ["switch", "case", "end"],
subCommands: [
{
label: "条件分支",
value: "switch",
icon: "call_split",
codeTemplate: "switch (${expression}) {",
config: [
{
name: "expression",
label: "变量",
component: "ControlInput",
placeholder: "变量或表达式",
defaultValue: "expression",
},
],
},
{
label: "匹配分支",
value: "case",
icon: "check",
codeTemplate: "case ${value}:",
config: [
{
name: "value",
label: "值",
component: "ControlInput",
},
],
},
{
label: "默认分支",
value: "default",
icon: "last_page",
codeTemplate: "default:",
},
{
label: "结束",
value: "end",
codeTemplate: "}",
},
],
},
{
value: "tryCatch",
label: "异常处理",
component: "ControlCommand",
isControlFlow: true,
commandChain: ["try", "catch", "end"],
subCommands: [
{
label: "尝试执行",
value: "try",
icon: "play_circle",
codeTemplate: "try {",
},
{
label: "捕获异常",
value: "catch",
icon: "error",
codeTemplate: "} catch (${errorVar}) {",
config: [
{
name: "errorVar",
label: "错误",
component: "ControlInput",
defaultValue: "error",
},
],
},
{
label: "最后执行",
value: "finally",
icon: "done_all",
codeTemplate: "} finally {",
},
{
label: "结束",
value: "end",
codeTemplate: "}",
},
],
},
],
};