Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Markdown export breaks bold, italic and strikethrough when the styled text starts with a space

Fermée Adaptée aux débutants
#3,232 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Une pull request liée a déjà été fusionnée.

  • #3233 par @RaphaelFakhri — fusionnée

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
74/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
react, typescript

Piste de recherche

Trouvez l’implémentation de blocksToMarkdownLossy et vérifiez comment elle encadre les espaces blancs dans le texte en gras, en italique et barré. Reproduisez le problème avec l’exemple fourni, puis exécutez les tests pertinents d’exportation et d’analyse du Markdown. Le travail est terminé lorsque les espaces en début et en fin restent à l’extérieur des délimiteurs d’emphase et que le Markdown exporté conserve les styles souhaités après un aller-retour.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

blocksToMarkdownLossy puts the emphasis delimiters directly around styled text, even when that text starts with a space. A Markdown opening delimiter followed by whitespace doesn't count as emphasis, so the output shows literal asterisks in any CommonMark/GFM renderer, and BlockNote's own Markdown parser reads it wrong as well.

This happens often in practice: selecting a word together with the space before it (for example, by dragging or with Shift+Ctrl+Left) and pressing Ctrl+B produces a text run like " world" with bold: true.

Trailing whitespace is already moved outside **/*. Leading whitespace is not, and strikethrough has no whitespace handling at all.

Steps to reproduce

editor.blocksToMarkdownLossy([
  {
    type: "paragraph",
    content: [
      { type: "text", text: "Normal", styles: {} },
      { type: "text", text: " bold", styles: { bold: true } },
      { type: "text", text: " and", styles: {} },
      { type: "text", text: " italic ", styles: { italic: true } },
      { type: "text", text: "and", styles: {} },
      { type: "text", text: " strike ", styles: { strike: true } },
      { type: "text", text: "end", styles: {} },
    ],
  },
]);

What did you expect to happen?

Normal **bold** and *italic* and ~~strike~~ end

Actual output:

Normal** bold** and* italic* and~~ strike ~~end

If you parse that output back with tryParseMarkdownToBlocks, the styles are lost or land on the wrong text, and literal */~~ characters stay in the document.

BlockNote version

main at 45d07d3.

Langage dominant
TypeScript
Étoiles
10.3k
Forks
780
Merge moyen
3 j 6 h
PR mergées (30 j)
48

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de TypeCellOS/BlockNote

Toutes les issues de TypeCellOS/BlockNote

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.