blob: 20c35e12220a485e27087930a449d0dcf1a8739b (
plain)
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
|
const ShadowRenderer = {
render: function (hostElement, htmlContent) {
let shadow = hostElement.shadowRoot;
if (!shadow) {
shadow = hostElement.attachShadow({ mode: 'open' });
}
const parser = new DOMParser();
const doc = parser.parseFromString(htmlContent, 'text/html');
shadow.innerHTML = '';
if (doc.head) {
doc.head.querySelectorAll('style').forEach(style => {
const styleClone = style.cloneNode(true);
let css = styleClone.textContent;
css = css.replace(/\bbody\b/g, ':host');
styleClone.textContent = css;
shadow.appendChild(styleClone);
});
doc.head.querySelectorAll('link[rel="stylesheet"]').forEach(link => {
shadow.appendChild(link.cloneNode(true));
});
}
if (doc.body) {
while (doc.body.firstChild) {
shadow.appendChild(doc.body.firstChild);
}
}
setTimeout(() => {
EmailUtils.adjustContrast(shadow);
}, 100);
return shadow;
}
};
|