UNPKG

html-to-image-skippable-font

Version:

Forks Bubkoo's html-to-image implementing skippable font reduction.

43 lines 1.72 kB
import { uuid, getStyleProperties } from './util'; function formatCSSText(style) { const content = style.getPropertyValue('content'); return `${style.cssText} content: '${content.replace(/'|"/g, '')}';`; } function formatCSSProperties(style, options) { return getStyleProperties(options) .map((name) => { const value = style.getPropertyValue(name); const priority = style.getPropertyPriority(name); return `${name}: ${value}${priority ? ' !important' : ''};`; }) .join(' '); } function getPseudoElementStyle(className, pseudo, style, options) { const selector = `.${className}:${pseudo}`; const cssText = style.cssText ? formatCSSText(style) : formatCSSProperties(style, options); return document.createTextNode(`${selector}{${cssText}}`); } function clonePseudoElement(nativeNode, clonedNode, pseudo, options) { const style = window.getComputedStyle(nativeNode, pseudo); const content = style.getPropertyValue('content'); if (content === '' || content === 'none') { return; } const className = uuid(); try { clonedNode.className = `${clonedNode.className} ${className}`; } catch (err) { return; } const styleElement = document.createElement('style'); styleElement.appendChild(getPseudoElementStyle(className, pseudo, style, options)); clonedNode.appendChild(styleElement); } export function clonePseudoElements(nativeNode, clonedNode, options) { clonePseudoElement(nativeNode, clonedNode, ':before', options); clonePseudoElement(nativeNode, clonedNode, ':after', options); } //# sourceMappingURL=clone-pseudos.js.map