-
Notifications
You must be signed in to change notification settings - Fork 49
/
Copy pathindex.js
77 lines (69 loc) · 2.54 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import ReactDOMServer from 'react-dom/server';
import mjml2html from 'mjml';
import { minify as htmlMinify } from 'html-minifier';
import { renderToJSON } from './utils/render-to-json';
import { renderToJSON2 } from './utils/render-to-json2';
export { render, renderToMjml, renderToJSON, renderToJSON2 };
export { Mjml } from './mjml';
export { MjmlAccordion } from './mjml-accordion';
export { MjmlAccordionElement } from './mjml-accordion-element';
export { MjmlAccordionText } from './mjml-accordion-text';
export { MjmlAccordionTitle } from './mjml-accordion-title';
export { MjmlAll } from './mjml-all';
export { MjmlAttributes } from './mjml-attributes';
export { MjmlBody } from './mjml-body';
export { MjmlBreakpoint } from './mjml-breakpoint';
export { MjmlButton } from './mjml-button';
export { MjmlCarousel } from './mjml-carousel';
export { MjmlCarouselImage } from './mjml-carousel-image';
export { MjmlClass } from './mjml-class';
export { MjmlColumn } from './mjml-column';
export { MjmlDivider } from './mjml-divider';
export { MjmlFont } from './mjml-font';
export { MjmlGroup } from './mjml-group';
export { MjmlHead } from './mjml-head';
export { MjmlHero } from './mjml-hero';
export { MjmlHtmlAttributes } from './mjml-html-attributes';
export { MjmlHtmlAttribute } from './mjml-html-attribute';
export { MjmlImage } from './mjml-image';
export { MjmlNavbar } from './mjml-navbar';
export { MjmlNavbarLink } from './mjml-navbar-link';
export { MjmlPreview } from './mjml-preview';
export { MjmlRaw } from './mjml-raw';
export { MjmlSection } from './mjml-section';
export { MjmlSelector } from './mjml-selector';
export { MjmlSocial } from './mjml-social';
export { MjmlSocialElement } from './mjml-social-element';
export { MjmlSpacer } from './mjml-spacer';
export { MjmlStyle } from './mjml-style';
export { MjmlTable } from './mjml-table';
export { MjmlText } from './mjml-text';
export { MjmlTitle } from './mjml-title';
export { MjmlWrapper } from './mjml-wrapper';
function render(email, options = {}) {
const defaults = {
keepComments: false,
beautify: false,
validationLevel: 'strict',
};
const html = mjml2html(renderToMjml(email), {
...defaults,
...options,
minify: undefined,
});
if (options.minify) {
return {
html: htmlMinify(html.html, {
caseSensitive: true,
collapseWhitespace: true,
minifyCSS: true,
removeComments: true,
removeEmptyAttributes: true,
}),
};
}
return html;
}
function renderToMjml(email) {
return ReactDOMServer.renderToStaticMarkup(email);
}