html-to-image
Version:
Generates an image from a DOM node using HTML5 canvas and SVG.
54 lines • 2.13 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.clonePseudoElements = void 0;
var util_1 = require("./util");
function clonePseudoElements(nativeNode, clonedNode) {
var pseudos = [':before', ':after'];
pseudos.forEach(function (pseudo) {
return Pseudo.clonePseudoElement(nativeNode, clonedNode, pseudo);
});
}
exports.clonePseudoElements = clonePseudoElements;
var Pseudo;
(function (Pseudo) {
function clonePseudoElement(nativeNode, clonedNode, pseudo) {
var style = window.getComputedStyle(nativeNode, pseudo);
var content = style.getPropertyValue('content');
if (content === '' || content === 'none') {
return;
}
var className = util_1.uuid();
// fix: Cannot assign to read only property 'className' of object '#<…
try {
clonedNode.className = clonedNode.className + " " + className;
}
catch (err) {
return;
}
var styleElement = document.createElement('style');
styleElement.appendChild(getPseudoElementStyle(className, pseudo, style));
clonedNode.appendChild(styleElement);
}
Pseudo.clonePseudoElement = clonePseudoElement;
function getPseudoElementStyle(className, pseudo, style) {
var selector = "." + className + ":" + pseudo;
var cssText = style.cssText
? formatCssText(style)
: formatCssProperties(style);
return document.createTextNode(selector + "{" + cssText + "}");
}
function formatCssText(style) {
var content = style.getPropertyValue('content');
return style.cssText + " content: " + content + ";";
}
function formatCssProperties(style) {
return util_1.toArray(style)
.map(function (name) {
var value = style.getPropertyValue(name);
var priority = style.getPropertyPriority(name);
return name + ": " + value + (priority ? ' !important' : '') + ";";
})
.join(' ');
}
})(Pseudo || (Pseudo = {}));
//# sourceMappingURL=clonePseudoElements.js.map
;