render: unstableTextConversion outputs HTML comments and repeats link URLs in plain text
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 87/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- react, typescript
Direzione di ricerca
Inizia da packages/render/src/shared/utils/unstable-to-plain-text.ts e segui come gestisce i commenti HTML e il testo dei link durante la conversione dell’output renderizzato. L’issue include una riproduzione autonoma con render(); eseguila per vedere gli errori, poi aggiungi casi di spec che usino un output reale di render(), come suggerito. Il lavoro è completato quando i commenti vengono omessi e il testo dei link corrispondente e gli URL compaiono una sola volta ciascuno.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What versions are you using? (if relevant)
@react-email/[email protected], [email protected], [email protected]
Describe the Bug
With unstableTextConversion: true, the plain-text output keeps HTML comments and sometimes repeats link URLs:
- React's Suspense markers
<!--$-->and<!--/$-->show up as$and/$at the start and end of every render. <Button>'s Outlook conditional comments come out as raw text:[if mso]><i style="mso-font-width:0%;mso-text-raise:0px" hidden></i><![endif].- A link whose text equals its URL repeats the URL (
Hi [email protected] [email protected]), unless the link is the first thing in its block. The check that drops the URL when it matches the text seems to pick up the space before the link.
The default converter (toPlainText) doesn't do any of these.
What is affected (leave empty if unsure)
Render Utility
Link to the code that reproduces this issue
Self-contained script below (npm i @react-email/render react-email react react-dom tsx, then npx tsx repro.tsx).
import * as React from 'react';
import { render } from '@react-email/render';
import { Button, Text } from 'react-email';
const opts = { plainText: true, unstableTextConversion: true };
console.log(JSON.stringify(await render(<Text>Hi <a href="mailto:[email protected]">[email protected]</a></Text>, opts)));
console.log(JSON.stringify(await render(<Text><a href="https://a.b">https://a.b</a></Text>, opts)));
console.log(JSON.stringify(await render(<Button href="https://a.b">Go</Button>, opts)));
To Reproduce
Run the script. Output:
"$\n\nHi [email protected] [email protected]\n\n/$"
"$\n\nhttps://a.b\n\n/$"
"$[if mso]><i style=\"mso-font-width:0%;mso-text-raise:0px\" hidden></i><![endif]Go[if mso]><i style=\"mso-font-width:0%\" hidden> </i><![endif] https://a.b/$"
Expected Behavior
"Hi [email protected]"
"https://a.b"
"Go https://a.b"
HTML comments are skipped, and a link whose text matches its URL is printed once wherever it appears. In packages/render/src/shared/utils/unstable-to-plain-text.ts the parser seems to treat <!--...--> as a tag named !--, which isn't in SKIPPED_TAGS. I'm happy to open a PR with spec cases built from real render() output.
What's your node version? (if relevant)
v22.15.0
- Lingua principale
- TypeScript
- Stelle
- 19.9k
- Fork
- 1.1k
- Merge medio
- 1g 15h
- PR unite (30g)
- 49
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di resend/react-email
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
resend/react-email#3876 ·
I maintainer di solito rispondono entro 1 giorno
-
<CodeInline> causes duplicated text in body previews in Gmail and other providers due to hacky Orange.fr workaroundForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
resend/react-email#3853 ·
I maintainer di solito rispondono entro 1 giorno
-
Markdown: HTML inside code blocks and inline code isn't escapedForse già presa @KishanKanejiya23 l’ha presa 11 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
resend/react-email#3814 ·
I maintainer di solito rispondono entro 1 giorno
-
Tailwind stacked media variants leave nested CSS in rendered emailsForse già presa @lakshya-dhariwal l’ha presa oggi. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
resend/react-email#3874 ·
I maintainer di solito rispondono entro 1 giorno
-
Inspector Text panel omits Uppercase mark toggle (MARK_NAMES missing "uppercase")Forse già presa @svargas-dev l’ha presa 6 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 22/100
resend/react-email#3849 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di resend/react-email
Issue simili
-
documentation good first issue roadmap
Difficoltà 1/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
siyuan-note/siyuan#21324 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
dmno-dev/varlock#1279 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
himynameisdave/bsky-profanity-counter#59 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100