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