Markdown export breaks bold, italic and strikethrough when the styled text starts with a space
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 74/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- react, typescript
- Bereich
- backend-api-design
Rechercherichtung
Finde die Implementierung von blocksToMarkdownLossy und prüfe, wie sie fett, kursiv und durchgestrichen formatierten Text mit Leerzeichen umschließt. Reproduziere das Problem mit dem bereitgestellten Beispiel und führe anschließend die relevanten Tests für den Markdown-Export und das Parsen aus. Fertig ist die Aufgabe, wenn führende und nachfolgende Leerzeichen außerhalb der Hervorhebungsbegrenzer bleiben und das exportierte Markdown mit den beabsichtigten Formatierungen einen Roundtrip durchläuft.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 10.3k
- Forks
- 780
- Ø Merge
- 3 T. 11 Std.
- Gemergte PRs (30 T.)
- 44
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus TypeCellOS/BlockNote
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
TypeCellOS/BlockNote#3211 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
TypeCellOS/BlockNote#2949 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
a11y
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
TypeCellOS/BlockNote#2855 ·
Maintainer antworten meist innerhalb von 1 Tag
-
a11y
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
TypeCellOS/BlockNote#2829 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Comment thread actions: hover-only controls and unlabeled buttons in ThreadsSidebaEvtl. vergeben @matthewlipski hat das vor 1 Tag übernommen. Offena11y
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
TypeCellOS/BlockNote#2824 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in TypeCellOS/BlockNote
Ähnliche Issues
-
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 82/100
source-cooperative/docs.source.coop#41 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Nimblesite/SharpLsp#468 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
solidjs-community/solid-primitives#1082 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag