Markdown export breaks bold, italic and strikethrough when the styled text starts with a space
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
- Domaine
- backend-api-design
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
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de TypeCellOS/BlockNote
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
TypeCellOS/BlockNote#2949 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
a11y
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
TypeCellOS/BlockNote#2855 ·
Les mainteneurs répondent en général sous 1 jour
-
a11y
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
TypeCellOS/BlockNote#2829 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Comment thread actions: hover-only controls and unlabeled buttons in ThreadsSidebaPeut-être pris @matthewlipski l’a pris il y a 1 jour. Ouvertea11y
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
TypeCellOS/BlockNote#2824 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
A failed upload from a file drop or paste leaves a stuck "Loading..." blockPeut-être pris @nperez0111 l’a pris aujourd’hui. Ouverteneeds-triage
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
TypeCellOS/BlockNote#3246 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de TypeCellOS/BlockNote
Issues similaires
-
Difficulté 1/5 1-3 heures Accessibilité débutants 82/100
source-cooperative/docs.source.coop#41 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Nimblesite/SharpLsp#468 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
solidjs-community/solid-primitives#1082 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour