Escopo do Lote
Este lote refina os controles de layout do Editor HTML Visual (janela do iframe, html-editor.js).
-
Move a barra de ferramentas flutuante (
#html-editor-floating-toolbar) da esquerda para a direita do contêiner selecionado. -
Adiciona o seletor de filhos (
#html-editor-selection-children) entre o breadcrumb de ancestrais e o editor de classes Tailwind CSS, adicionando labels identificativos "Ancestrais:" e "Filhos:" em ambos e utilizando um fundo contrastante para diferenciá-los.
Progresso por Slice
O lote foi quebrado nos seguintes slices funcionais:
| Slice | Escopo | Status | Validação |
|---|---|---|---|
| 1 | Estilização & UI: Preparação dos novos contêineres e estilos CSS no iframe (html-editor.js) |
complete | node --check OK |
| 2 | Toolbar à direita: Ajuste na lógica de posicionamento do toolbar (html-editor.js) |
complete | node --check OK |
| 3 | Seletor de Filhos: Lógica de renderização, hover e clique dos filhos (html-editor.js) |
complete | node --check OK |
| 4 | Empilhamento dinâmico: Correção do cálculo do topo cumulativo dos overlays (html-editor.js) |
complete | node --check OK |
| 5 | Destaque de Hover: Implementação do overlay de hover roxo tracejado nos breadcrumbs (html-editor.js) |
complete | node --check OK |
Checklist de Implementação
1. Estilização & UI (html-editor.js)
-
[x] Adicionar
#html-editor-selection-childrene#html-editor-breadcrumb-hover-overlayna funçãocreateOverlays(). -
[x] Injetar as regras CSS em
injectStyles():-
Definir estilo para
#html-editor-selection-children(similar ao breadcrumb, mas com fundo contrastante ligeiramente mais claro, ex:#1f2937ou similar). -
Incluir estilos para as labels
.he-crumb-label(cor cinza mais clara, largura fixa ou margem à direita para alinhamento). -
Configurar separador
/entre os filhos com a classe.he-child-sep. -
Definir estilo do
#html-editor-breadcrumb-hover-overlay: borda tracejadadashed 2px rgba(124,58,237,0.95), fundo roxo bem claro transparentergba(124,58,237,0.06), z-index similar ao do hover.
-
2. Posicionamento da Barra de Ferramentas (html-editor.js)
-
[x] No método
updateSelectionUI(), ajustar a propriedadeleftda toolbar para se alinhar ao canto direito do contêiner selecionado:-
left = (rect.right + scrollLeft - toolbar.offsetWidth) + 'px'. -
Garantir que não estoure a margem esquerda se o contêiner for muito pequeno.
-
3. Mecanismo de Seleção de Filhos (html-editor.js)
-
[x] Criar a função
renderChildren(element)que:-
Limpa o contêiner de filhos.
-
Varre os filhos diretos do elemento (
element.children). -
Descarta aqueles ignorados (
ignoredTags) ou de controle do sistema (isEditorOwned). -
Se houver filhos editáveis válidos, prefixa o contêiner com a label "Filhos:".
-
Para cada filho, adiciona um span interativo
.he-crumb-childcom a formatação: tag + ID/Classe. -
Implementa listeners de
mouseenter(ativa o#html-editor-breadcrumb-hover-overlayno respectivo elemento),mouseleave(esconde o overlay roxo tracejado) eclick(seleciona o filho). -
Se nenhum filho editável for encontrado, oculta o contêiner de filhos.
-
4. Empilhamento e Labels no Breadcrumb de Ancestrais (html-editor.js)
-
[x] Atualizar o método
renderBreadcrumb(element)para:-
Injetar o label prefixado "Ancestrais:" antes de renderizar os itens do caminho.
-
Configurar os listeners de
mouseenternos itens de ancestrais para ativar o#html-editor-breadcrumb-hover-overlay(em vez do hover azul#html-editor-hover-overlay) emouseleavepara ocultá-lo.
-
-
[x] No método
updateSelectionUI():-
Posicionar ancestrais (
#html-editor-selection-breadcrumb) no topo inferior:rect.bottom + scrollTop. -
Se a barra de filhos estiver visível, posicioná-la logo abaixo de ancestrais:
top = rect.bottom + scrollTop + breadcrumb.offsetHeight. -
Posicionar o styler de classes Tailwind (
#html-editor-tailwind-styler) dinamicamente abaixo dos elementos anteriores, somando a altura de ancestrais e filhos se estiverem ativos.
-
Evidência de Validação (BATCH-035) — 2026-06-13
-
Validação estática:
node --check gestor/assets/interface/html-editor.js→ OK;node --check gestor/assets/interface/html-editor-interface.js→ OK. -
Arquivos alterados (todos no editor do iframe + 1 ajuste no orquestrador):
-
gestor/assets/interface/html-editor.js: -
createOverlays(): novos#html-editor-selection-childrene#html-editor-breadcrumb-hover-overlay. -
injectStyles(): estilos do seletor de filhos (fundo#1f2937, mais claro que os ancestrais#111827), labels.he-crumb-label, separador.he-child-sep(|), e overlay roxo tracejadodashed 2px rgba(124,58,237,0.95). -
updateSelectionUI(): toolbar ancorada à borda direita (rect.right - offsetWidth, com clamp à esquerda); empilhamento cumulativo ancestrais → filhos → styler (soma deoffsetHeight). -
renderBreadcrumb(): label "Ancestrais:" + hover roxo (showBreadcrumbHover/hideBreadcrumbHover) no lugar do azul. -
Novo
renderChildren(): filhos diretos editáveis (descartaignoredTags/isEditorOwnede o caso de widget atômico), label "Filhos:", separador|, hover roxo e clique para selecionar; oculta-se se não houver filhos. -
onHoverMove(): guarda para não desenhar o hover azul quando o cursor está sobre o chrome do editor (evita conflito com o hover roxo dos breadcrumbs). -
isEditorOwned(),hideChrome(),clearSelection()eextractUserHtml()atualizados com os 2 novos ids. -
gestor/assets/interface/html-editor-interface.js:sistemaSel(fallback do save) inclui os 2 novos ids.
-
-
Decisão: DEC-049.
-
Pendência (operador): deploy
?️ Projects - Update => Core(sincroniza o asset) + validação runtime no navegador:-
Toolbar aparece no canto superior direito do elemento selecionado.
-
Breadcrumb "Ancestrais:" e barra "Filhos:" empilhados abaixo do elemento (filhos com fundo mais claro, separador
|). -
Hover sobre itens de ambos os breadcrumbs desenha caixa roxa tracejada no elemento correspondente (independente do hover azul direto no preview).
-
Clicar num filho/ancestral transfere a seleção; barra de filhos some quando o elemento não tem filhos editáveis.
-