#!/usr/bin/env bash
#
# Rebuild do bundle do ContentRichEditor (Tiptap V2).
#
# O bundle e um concatenado determinístico dos fontes em Assets/js:
#   _bundle-header.js  -> imports ESM, deps e helpers globais
#   modals.js          -> modais de mídia/busca
#   marks/*.js         -> marcas customizadas
#   nodes/*.js         -> nós customizados (ordem fixa de definição)
#   logic/*.js         -> comandos, extensões, estado da toolbar
#   content-rich-editor.js -> orquestrador principal
#
# Gera public/assets/js/content-rich-editor-bundle.js
# O resultado é reproduzível byte a byte (verificado por diff).

set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../../.." && pwd)"
SRC="$ROOT/V2/Services/ContentRichEditor/Assets/js"
OUT="$ROOT/public/assets/js/content-rich-editor-bundle.js"

NODES=(
  "marks/content-rich-outdated.js"
  "nodes/content-rich-media.js"
  "nodes/content-rich-iframe-summary.js"
  "nodes/content-rich-cross-link.js"
  "nodes/content-rich-column.js"
  "nodes/content-rich-columns.js"
  "nodes/content-rich-youtube.js"
  "nodes/content-rich-interactive-table.js"
  "nodes/content-rich-command-line.js"
  "nodes/content-rich-carousel.js"
  "nodes/content-rich-html-free.js"
  "nodes/content-rich-faq.js"
  "nodes/content-rich-cta-button.js"
  "nodes/content-rich-step-by-step.js"
  "nodes/content-rich-cards.js"
)

LOGIC=(
  "logic/editor-modals.js"
  "logic/editor-extensions.js"
  "logic/editor-commands.js"
  "logic/editor-toolbar-state.js"
)

: > "$OUT"

cat "$SRC/_bundle-header.js" >> "$OUT"
printf '\n\n// ======== modals.js ========\n' >> "$OUT"
cat "$SRC/modals.js" >> "$OUT"
printf '\n\nconsole.log('\''[ContentRichEditor] Modals JS (Modular) carregado com sucesso.'\'');\n' >> "$OUT"

for f in "${NODES[@]}"; do
  name="$(basename "$f")"
  printf '\n// ======== %s ========\n' "$name" >> "$OUT"
  cat "$SRC/$f" >> "$OUT"
done

printf '\n\nconsole.log('\''[ContentRichEditor] Nodes e Marks carregados.'\'');\n' >> "$OUT"

for f in "${LOGIC[@]}"; do
  name="$(basename "$f")"
  printf '\n// ======== %s ========\n' "$name" >> "$OUT"
  cat "$SRC/$f" >> "$OUT"
done

printf '\n// ======== content-rich-editor.js ========\n' >> "$OUT"
cat "$SRC/content-rich-editor.js" >> "$OUT"
printf '\n\nconsole.log('\''[ContentRichEditor] Inicialização do Editor concluída.'\'');\n' >> "$OUT"

echo "Bundle gerado: $OUT ($(wc -c < "$OUT") bytes)"
