import * as Blockly from "blockly/core";
import { javascriptGenerator, Order } from "blockly/javascript";
javascriptGenerator.forBlock["dynamic_if"] =
javascriptGenerator.forBlock["controls_if"];
javascriptGenerator.forBlock["dynamic_text_join"] = function (
block,
generator
) {
const joinBlock = block;
switch (joinBlock.itemCount) {
case 0:
return ["''", Order.ATOMIC];
case 1: {
const element =
generator.valueToCode(joinBlock, "ADD0", Order.NONE) || "''";
const codeAndOrder = forceString(element);
return codeAndOrder;
}
case 2: {
const element0 =
generator.valueToCode(joinBlock, "ADD0", Order.NONE) || "''";
const element1 =
generator.valueToCode(joinBlock, "ADD1", Order.NONE) || "''";
const code = forceString(element0)[0] + " + " + forceString(element1)[0];
return [code, Order.ADDITION];
}
default: {
const elements = new Array(joinBlock.itemCount);
for (let i = 0; i < joinBlock.itemCount; i++) {
elements[i] =
generator.valueToCode(joinBlock, "ADD" + i, Order.NONE) || "''";
}
const code = "[" + elements.join(",") + "].join('')";
return [code, Order.FUNCTION_CALL];
}
}
};
javascriptGenerator.forBlock["dynamic_list_create"] = function (
block,
generator
) {
const createWithBlock = block;
const elements = new Array(createWithBlock.itemCount);
for (let i = 0; i < createWithBlock.itemCount; i++) {
elements[i] = generator.valueToCode(block, "ADD" + i, Order.NONE) || "null";
}
const code = "[" + elements.join(", ") + "]";
return [code, Order.ATOMIC];
};