Files
decoda/app/src/atividades/programacao/exemplo/blocks/blocks.js
2026-06-24 21:00:19 -03:00

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");
};