Empty source paragraphs lose their source identity
Los mantenedores suelen responder en 1 día
Ya se ha fusionado un pull request relacionado.
- #2808 de @chubes4 — fusionado
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
Línea de trabajo
Empieza en RichTextElementConverter::convertParagraph(), donde un párrafo vacío se envía al helper convertText(trim($element->textContent)), que crea un core/paragraph sin elemento de origen. Reproduce el problema con el HTML del issue y comprueba si la salida vacía <p> lleva un marcador blocks-engine-source-p-*. Está terminado cuando el párrafo de origen vacío se crea a partir de su elemento de origen como uno no vacío, de modo que la regla p y las reglas de márgenes por tarjeta lleguen a él.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
An empty source <p></p> lowers to a bare core/paragraph with no source identity. Its box is still rendered, but author p rules (projected onto the blocks-engine-source-p-* tag marker) can no longer reach it, so it falls back to the UA margins of 1em top and bottom.
Reproduction (neutral)
<style>p{margin-top:0;margin-bottom:1rem}.desc p:empty{min-height:1em}</style>
<main><div class="card"><h3>Title</h3><div class="desc"><p></p></div></div>
<div class="card"><h3>Other</h3><div class="desc"><p>Text</p></div></div></main>
Output: <p></p> and <p class="blocks-engine-source-p-…">Text</p>. The empty paragraph gets no marker, so p{margin-top:0} and the per-card margin rules miss it.
On a real Next.js/Bootstrap capture (nostar2.com video list), each video description is an empty <p>. Every one picks up 32px of UA margin, and the page drifts 32px further per item.
Root cause
RichTextElementConverter::convertParagraph() handles an empty paragraph with convertText(trim($element->textContent)). That helper creates core/paragraph from a text string with no source element, so the source marker, classes and presentation attributes are all dropped.
Expected
An empty source paragraph that is kept as core/paragraph is created from its source element, exactly like a non-empty one, so the author cascade reaches it.
AI disclosure: found and reduced with Claude (Anthropic) in the Pi coding agent during the nostar2.com import parity loop.
- Lenguaje dominante
- PHP
- Estrellas
- 21
- Forks
- 2
- Merge medio
- 7 h 38 min
- PR fusionados (30 d)
- 735
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Automattic/blocks-engine
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Automattic/blocks-engine#2866 ·
Los mantenedores suelen responder en 1 día
-
Solved site promotion gate fails on runner PHP patch drift (expects 8.2.33, runner installs 8.2.34)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Automattic/blocks-engine#2161 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Automattic/blocks-engine#2061 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Automattic/blocks-engine#1701 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Automattic/blocks-engine#775 ·
Los mantenedores suelen responder en 1 día
Todos los issues de Automattic/blocks-engine
Issues similares
-
Dificultad 2/5 Medio día Aptitud para principiantes 68/100
components-web-app/docs#244 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
PrestaShopCorp/ps_eventbus#501 · 2 reacciones ·
-
category::task maintenance priority::normal
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
e0ipso/schema-forms-php#58 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
community-scripts/ProxmoxVE#17944 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
EasyCorp/EasyAdminBundle#7861 · 2 comentarios ·
Los mantenedores suelen responder en 1 día