Prioridade/Severidade:
Média
Plataforma:
Sistema Operacional
- Windows 11
Navegador
- Google Chrome 139.0.7258.128
Discourse
028c90dd5e7a2799ea5b6e963f71fc0222681943
Descrição:
O texto copiado de algumas fontes pode ser armazenado na área de transferência em um formato formatado (tipo text/html) além de texto simples (tipo text/plain).
Quando o texto é colado no compositor, se um tipo de dado formatado estiver presente na área de transferência, esses dados serão usados em vez do tipo de texto simples.
Por padrão, o espaço em branco no conteúdo HTML é colapsado. Esse comportamento pode ser controlado através da propriedade CSS white-space.
Ao colar no compositor quando no modo "editor de rich text", a propriedade CSS white-space dos dados da área de transferência não é respeitada. Isso resulta no colapso do espaço em branco no conteúdo colado. Em casos onde o conteúdo de origem tinha a propriedade white-space definida como o valor pre, isso resulta em um conteúdo colado difícil de ler e incorreto em casos onde o espaço em branco do conteúdo de origem tinha significado técnico.
Passos para reproduzir:
- Crie um arquivo HTML com o seguinte conteúdo:
<html> <body> <span style="white-space: pre">foo bar </span> </body> </html> - Abra o arquivo em seu navegador.
Observe que o espaço em branco do conteúdo da página não é colapsado:foo bar - Copie o conteúdo da página da web.
- Abra o compositor de postagens.
- Coloque o compositor no modo “editor de rich text”.
- Cole o conteúdo copiado.
Em vez de ter o mesmo formato do conteúdo copiado, o espaço em branco do conteúdo colado foi colapsado:
foo bar
Contexto adicional:
Vejo que o ProseMirror suporta white-space: pre:
O erro não ocorre ao usar o compositor no modo “editor Markdown”.
O erro não ocorre se o conteúdo for colado em um bloco de código em vez do modo de editor normal. É verdade que em muitos casos seria mais apropriado colocar o conteúdo que usa algo como white-space: pre em um bloco de código. No entanto, é bastante comum que os usuários apliquem formatação retroativamente adicionando o conteúdo ao compositor, selecionando o conteúdo e, em seguida, usando a barra de ferramentas do compositor para aplicar a formatação (em oposição à abordagem alternativa de acionar um bloco de código antes de adicionar o conteúdo).
Achei esta uma ferramenta útil para examinar os dados brutos do conteúdo da área de transferência:
Consigo reproduzir o erro em try.discourse.org em "modo de segurança".
