59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
"use strict";
|
|
|
|
import "blockly/blocks";
|
|
import { CORES_CUSTOMIZADAS } from "@/blockly/blocklyColors";
|
|
import { configurarGerador, gerarStatement } from "@/blockly/generator";
|
|
import { gerarToolboxDeEstrutura } from "@/blockly/toolbox";
|
|
import { criarBlocoStatementSimples } from "@/blockly/blockFactory";
|
|
|
|
// controls_repeat_ext e math_number são blocos nativos do Blockly (não precisam de defineBlocks)
|
|
const ESTRUTURA_TOOLBOX = [
|
|
{
|
|
nome: "Repetição",
|
|
cssContainer: "cat_repeticao",
|
|
blocos: ["controls_repeat_ext"],
|
|
},
|
|
{
|
|
nome: "Movimento",
|
|
cor: CORES_CUSTOMIZADAS.MOVIMENTO,
|
|
cssContainer: "cat_movimento",
|
|
blocos: ["exemplo_mover_direita", "exemplo_mover_baixo"],
|
|
},
|
|
{
|
|
nome: "Matemática",
|
|
cssContainer: "cat_matematica",
|
|
blocos: ["math_number"],
|
|
},
|
|
];
|
|
|
|
export const registerBlocks = () => {
|
|
defineBlocks();
|
|
defineGenerators();
|
|
};
|
|
|
|
export const generateDynamicToolbox = (allowedBlocks = []) => {
|
|
return gerarToolboxDeEstrutura(ESTRUTURA_TOOLBOX, allowedBlocks);
|
|
};
|
|
|
|
const defineBlocks = () => {
|
|
criarBlocoStatementSimples(
|
|
"exemplo_mover_direita",
|
|
"mover para DIREITA",
|
|
CORES_CUSTOMIZADAS.MOVIMENTO
|
|
);
|
|
|
|
criarBlocoStatementSimples(
|
|
"exemplo_mover_baixo",
|
|
"mover para BAIXO",
|
|
CORES_CUSTOMIZADAS.MOVIMENTO
|
|
);
|
|
};
|
|
|
|
const defineGenerators = () => {
|
|
// Ativa o prefix de highlight no gerador (necessário para feedback visual dos blocos)
|
|
configurarGerador();
|
|
|
|
gerarStatement("exemplo_mover_direita", "moverDireita");
|
|
gerarStatement("exemplo_mover_baixo", "moverBaixo");
|
|
};
|