{"version":3,"sources":["../src/parser.ts","../src/utils.ts","../src/styles.ts","../src/parseMarkdownToJSX.ts","../src/components/emailMarkdown.tsx"],"sourcesContent":["import { marked, Renderer } from \"marked\";\nimport { StylesType } from \"./types\";\nimport { initRenderer } from \"./utils\";\n\nexport class MarkdownParser {\n  private readonly renderer: Renderer;\n\n  constructor({ customStyles }: { customStyles?: StylesType }) {\n    this.renderer = initRenderer({ customStyles });\n  }\n\n  parse(markdown: string) {\n    return marked.parse(markdown, { renderer: this.renderer });\n  }\n}\n","import { CSSProperties } from \"react\";\nimport { StylesType, initRendererProps } from \"./types\";\nimport { Renderer } from \"marked\";\nimport { styles } from \"./styles\";\n\nfunction escapeQuotes(value: unknown) {\n  if (typeof value === 'string' && value.includes('\"')) {\n    return value.replace(/\"/g, \"&#x27;\");\n  }\n  return value;\n}\n\nexport function camelToKebabCase(str: string): string {\n  return str.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nexport function parseCssInJsToInlineCss(\n  cssProperties: CSSProperties | undefined\n): string {\n  if (!cssProperties) return \"\";\n\n  const numericalCssProperties = [\n    \"width\",\n    \"height\",\n    \"margin\",\n    \"marginTop\",\n    \"marginRight\",\n    \"marginBottom\",\n    \"marginLeft\",\n    \"padding\",\n    \"paddingTop\",\n    \"paddingRight\",\n    \"paddingBottom\",\n    \"paddingLeft\",\n    \"borderWidth\",\n    \"borderTopWidth\",\n    \"borderRightWidth\",\n    \"borderBottomWidth\",\n    \"borderLeftWidth\",\n    \"outlineWidth\",\n    \"top\",\n    \"right\",\n    \"bottom\",\n    \"left\",\n    \"fontSize\",\n    \"lineHeight\",\n    \"letterSpacing\",\n    \"wordSpacing\",\n    \"maxWidth\",\n    \"minWidth\",\n    \"maxHeight\",\n    \"minHeight\",\n    \"borderRadius\",\n    \"borderTopLeftRadius\",\n    \"borderTopRightRadius\",\n    \"borderBottomLeftRadius\",\n    \"borderBottomRightRadius\",\n    \"textIndent\",\n    \"gridColumnGap\",\n    \"gridRowGap\",\n    \"gridGap\",\n    \"translateX\",\n    \"translateY\",\n  ];\n\n  return Object.entries(cssProperties)\n    .map(([property, value]) => {\n      if (\n        typeof value === \"number\" &&\n        numericalCssProperties.includes(property)\n      ) {\n        return `${camelToKebabCase(property)}:${value}px`;\n      } else {\n        const escapedValue = escapeQuotes(value);\n        return `${camelToKebabCase(property)}:${escapedValue}`;\n      }\n    })\n    .join(\";\");\n}\n\nexport const initRenderer = ({\n  customStyles,\n}: initRendererProps): Renderer => {\n  const finalStyles = { ...styles, ...customStyles };\n\n  const customRenderer = new Renderer();\n\n  customRenderer.blockquote = (quote) => {\n    return `<blockquote${\n      parseCssInJsToInlineCss(finalStyles.blockQuote) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.blockQuote)}\"`\n        : \"\"\n    }>\\n${quote}</blockquote>\\n`;\n  }\n\n  customRenderer.br = () => {\n    return `<br${\n      parseCssInJsToInlineCss(finalStyles.br) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.br)}\"`\n        : \"\"\n    } />`;\n  }\n\n  customRenderer.code = (code) => {\n    code = code.replace(/\\n$/, \"\") + \"\\n\";\n\n    return `<pre${\n      parseCssInJsToInlineCss(finalStyles.codeBlock) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.codeBlock)}\"`\n        : \"\"\n    }><code>${code}</code></pre>\\n`;\n  }\n\n  customRenderer.codespan = (text) => {\n    return `<code${\n      parseCssInJsToInlineCss(finalStyles.codeInline) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.codeInline)}\"`\n        : \"\"\n    }>${text}</code>`;\n  }\n\n  customRenderer.del = (text) => {\n    return `<del${\n      parseCssInJsToInlineCss(finalStyles.strikethrough) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.strikethrough)}\"`\n        : \"\"\n    }>${text}</del>`;\n  }\n\n  customRenderer.em = (text) => {\n    return `<em${\n      parseCssInJsToInlineCss(finalStyles.italic) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.italic)}\"`\n        : \"\"\n    }>${text}</em>`;\n  }\n\n  customRenderer.heading = (text, level) => {\n    return `<h${level}${\n      parseCssInJsToInlineCss(\n        finalStyles[`h${level}` as keyof StylesType]\n      ) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(\n            finalStyles[`h${level}` as keyof StylesType]\n          )}\"`\n        : \"\"\n    }>${text}</h${level}>`;\n  }\n\n  customRenderer.hr = () => {\n    return `<hr${\n      parseCssInJsToInlineCss(finalStyles.hr) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.hr)}\"`\n        : \"\"\n    } />\\n`;\n  }\n\n  customRenderer.image = (href, _, text) => {\n    return `<img src=\"${href}\" alt=\"${text}\"${\n      parseCssInJsToInlineCss(finalStyles.image) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.image)}\"`\n        : \"\"\n    }>`;\n  }\n\n  customRenderer.link = (href, _, text) => {\n    return `<a href=\"${href}\" target=\"_blank\"${\n        parseCssInJsToInlineCss(finalStyles.link) !== \"\"\n          ? ` style=\"${parseCssInJsToInlineCss(finalStyles.link)}\"`\n          : \"\"\n      }>${text}</a>`;\n  }\n\n  customRenderer.list = (body, ordered, start) => {\n    const type = ordered ? \"ol\" : \"ul\";\n      const startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : \"\";\n      const styles = parseCssInJsToInlineCss(\n        finalStyles[ordered ? \"ol\" : \"ul\"]\n      );\n      return (\n        \"<\" +\n        type +\n        startatt +\n        `${styles !== \"\" ? ` style=\"${styles}\"` : \"\"}>\\n` +\n        body +\n        \"</\" +\n        type +\n        \">\\n\"\n      );\n  }\n\n  customRenderer.listitem = (text) => {\n    return `<li${\n      parseCssInJsToInlineCss(finalStyles.li) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.li)}\"`\n        : \"\"\n    }>${text}</li>\\n`;\n  }\n\n  customRenderer.paragraph = (text) => {\n    return `<p${\n      parseCssInJsToInlineCss(finalStyles.p) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.p)}\"`\n        : \"\"\n    }>${text}</p>\\n`;\n  }\n\n  customRenderer.strong = (text) => {\n    return `<strong${\n      parseCssInJsToInlineCss(finalStyles.bold) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.bold)}\"`\n        : \"\"\n    }>${text}</strong>`;\n  }\n\n  customRenderer.table = (header, body) => {\n    if (body) body = `<tbody>${body}</tbody>`;\n\n      return `<table${\n        parseCssInJsToInlineCss(finalStyles.table) !== \"\"\n          ? ` style=\"${parseCssInJsToInlineCss(finalStyles.table)}\"`\n          : \"\"\n      }>\\n<thead${\n        parseCssInJsToInlineCss(finalStyles.thead) !== \"\"\n          ? ` style=\"${parseCssInJsToInlineCss(finalStyles.thead)}\"`\n          : \"\"\n      }>\\n${header}</thead>\\n${body}</table>\\n`;\n  }\n\n  customRenderer.tablecell = (content, flags) => {\n    const type = flags.header ? \"th\" : \"td\";\n      const tag = flags.align\n        ? `<${type} align=\"${flags.align}\"${\n            parseCssInJsToInlineCss(finalStyles.td) !== \"\"\n              ? ` style=\"${parseCssInJsToInlineCss(finalStyles.td)}\"`\n              : \"\"\n          }>`\n        : `<${type}${\n            parseCssInJsToInlineCss(finalStyles.td) !== \"\"\n              ? ` style=\"${parseCssInJsToInlineCss(finalStyles.td)}\"`\n              : \"\"\n          }>`;\n      return tag + content + `</${type}>\\n`;\n  }\n\n  customRenderer.tablerow = (content) => {\n    return `<tr${\n      parseCssInJsToInlineCss(finalStyles.tr) !== \"\"\n        ? ` style=\"${parseCssInJsToInlineCss(finalStyles.tr)}\"`\n        : \"\"\n    }>\\n${content}</tr>\\n`;\n  }\n\n  return customRenderer;\n};\n","import { StylesType } from \"./types\";\n\nconst emptyStyle = {};\n\nconst baseHeaderStyles = {\n  fontWeight: \"500\",\n  paddingTop: 20,\n};\n\nconst h1 = {\n  ...baseHeaderStyles,\n  fontSize: \"2.5rem\",\n};\n\nconst h2 = {\n  ...baseHeaderStyles,\n  fontSize: \"2rem\",\n};\nconst h3 = {\n  ...baseHeaderStyles,\n  fontSize: \"1.75rem\",\n};\nconst h4 = {\n  ...baseHeaderStyles,\n  fontSize: \"1.5rem\",\n};\nconst h5 = {\n  ...baseHeaderStyles,\n  fontSize: \"1.25rem\",\n};\nconst h6 = {\n  ...baseHeaderStyles,\n  fontSize: \"1rem\",\n};\n\nconst bold = {\n  fontWeight: \"bold\",\n};\n\nconst italic = {\n  fontStyle: \"italic\",\n};\n\nconst blockQuote = {\n  background: \"#f9f9f9\",\n  borderLeft: \"10px solid #ccc\",\n  margin: \"1.5em 10px\",\n  padding: \"1em 10px\",\n};\n\nconst codeInline = {\n  color: \"#212529\",\n  fontSize: \"87.5%\",\n  display: \"inline\",\n  background: \" #f8f8f8\",\n  fontFamily: `SFMono-Regular,Menlo,Monaco,Consolas,monospace`,\n};\n\nconst codeBlock = {\n  ...codeInline,\n  paddingTop: 10,\n  paddingRight: 10,\n  paddingLeft: 10,\n  paddingBottom: 1,\n  marginBottom: 20,\n  background: \" #f8f8f8\",\n};\n\nconst link = {\n  color: \"#007bff\",\n  textDecoration: \"underline\",\n  backgroundColor: \"transparent\",\n};\n\nexport const styles: StylesType = {\n  h1,\n  h2,\n  h3,\n  h4,\n  h5,\n  h6,\n  blockQuote,\n  bold,\n  italic,\n  link,\n  codeBlock: { ...codeBlock, wordWrap: \"break-word\" },\n  codeInline: { ...codeInline, wordWrap: \"break-word\" },\n  p: emptyStyle,\n  li: emptyStyle,\n  ul: emptyStyle,\n  ol: emptyStyle,\n  image: emptyStyle,\n  br: emptyStyle,\n  hr: emptyStyle,\n  table: emptyStyle,\n  thead: emptyStyle,\n  tbody: emptyStyle,\n  th: emptyStyle,\n  td: emptyStyle,\n  tr: emptyStyle,\n  strikethrough: emptyStyle,\n};\n","import { MarkdownParser } from \"./parser\";\nimport { parseMarkdownToJSXProps } from \"./types\";\n\nexport const parseMarkdownToJSX = ({\n  markdown,\n  customStyles,\n}: parseMarkdownToJSXProps) => {\n  const parser = new MarkdownParser({ customStyles });\n  return parser.parse(markdown);\n};\n","import * as React from \"react\";\nimport { StylesType } from \"../types\";\nimport { parseMarkdownToJSX } from \"../parseMarkdownToJSX\";\n\ninterface EmailMarkdownProps {\n  markdown: string;\n  markdownCustomStyles?: StylesType;\n  markdownContainerStyles?: React.CSSProperties;\n}\n\nexport const EmailMarkdown: React.FC<EmailMarkdownProps> = ({\n  markdown,\n  markdownCustomStyles,\n  markdownContainerStyles,\n}) => {\n  const parsedMarkdown = parseMarkdownToJSX({\n    markdown,\n    customStyles: markdownCustomStyles,\n  });\n\n  return (\n    <div\n      style={markdownContainerStyles}\n      dangerouslySetInnerHTML={{ __html: parsedMarkdown }}\n    />\n  );\n};\n"],"mappings":"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","names":["styles"]}