1+ import { sanitize } from "isomorphic-dompurify" ;
12import { patterns } from "./patterns" ;
23import { styles } from "./styles" ;
34import { StylesType } from "./types" ;
@@ -205,15 +206,15 @@ export function parseMarkdownToReactEmailJSX({
205206 // Handle headings (e.g., # Heading)
206207 reactMailTemplate = markdown . replace (
207208 patterns . h1 ,
208- `<h1${
209+ `<h1 style=" ${ parseCssInJsToInlineCss ( finalStyles . h1 ) } " ${
209210 withDataAttr ? ' data-id="react-email-heading"' : ""
210- } style=" ${ parseCssInJsToInlineCss ( finalStyles . h1 ) } " >$1</h1>`
211+ } >$1</h1>`
211212 ) ;
212213 reactMailTemplate = reactMailTemplate . replace (
213214 patterns . h2 ,
214- `<h2${
215+ `<h2 style=" ${ parseCssInJsToInlineCss ( finalStyles . h2 ) } " ${
215216 withDataAttr ? ' data-id="react-email-heading"' : ""
216- } style=" ${ parseCssInJsToInlineCss ( finalStyles . h2 ) } " >$1</h2>`
217+ } >$1</h2>`
217218 ) ;
218219 reactMailTemplate = reactMailTemplate . replace (
219220 patterns . h3 ,
@@ -270,9 +271,11 @@ export function parseMarkdownToReactEmailJSX({
270271 return `<tr style="${ parseCssInJsToInlineCss ( finalStyles . tr ) } ">${ cells
271272 . map (
272273 ( cell , index ) =>
273- `<td style="${ parseCssInJsToInlineCss (
274+ `<td align="${
275+ alignments [ index ]
276+ } " style="${ parseCssInJsToInlineCss (
274277 finalStyles . td
275- ) } " align=" ${ alignments [ index ] } " >${ cell } </td>`
278+ ) } ">${ cell } </td>`
276279 )
277280 . join ( "" ) } </tr>`;
278281 } )
@@ -285,9 +288,9 @@ export function parseMarkdownToReactEmailJSX({
285288 ) } "><tr style="${ parseCssInJsToInlineCss ( finalStyles . tr ) } ">${ headers
286289 . map (
287290 ( header , index ) =>
288- `<th style ="${ parseCssInJsToInlineCss ( finalStyles . th ) } " align ="${
289- alignments [ index ]
290- } ">${ header } </th>`
291+ `<th align ="${ alignments [ index ] } " style ="${ parseCssInJsToInlineCss (
292+ finalStyles . th
293+ ) } ">${ header } </th>`
291294 )
292295 . join ( "" ) } </tr></thead><tbody style="${ parseCssInJsToInlineCss (
293296 finalStyles . tbody
@@ -336,19 +339,17 @@ export function parseMarkdownToReactEmailJSX({
336339 // Handle images (e.g., )
337340 reactMailTemplate = reactMailTemplate . replace (
338341 patterns . image ,
339- `<img style="${ parseCssInJsToInlineCss (
342+ `<img src="$2" alt="$1" style="${ parseCssInJsToInlineCss (
340343 finalStyles . image
341- ) } " alt="$1" src="$2" / >`
344+ ) } ">`
342345 ) ;
343346
344347 // Handle links (e.g., [link text](url))
345348 reactMailTemplate = reactMailTemplate . replace (
346349 patterns . link ,
347350 `<a${
348351 withDataAttr ? ' data-id="react-email-link"' : ""
349- } target="_blank" href="$2" style="${ parseCssInJsToInlineCss (
350- finalStyles . link
351- ) } ">$1</a>`
352+ } style="${ parseCssInJsToInlineCss ( finalStyles . link ) } " href="$2" >$1</a>`
352353 ) ;
353354
354355 // Handle code blocks (e.g., ```code```)
@@ -389,5 +390,5 @@ export function parseMarkdownToReactEmailJSX({
389390 } style="${ parseCssInJsToInlineCss ( finalStyles . hr ) } " />`
390391 ) ;
391392
392- return reactMailTemplate ;
393+ return sanitize ( reactMailTemplate , { USE_PROFILES : { html : true } } ) ;
393394}
0 commit comments