UNPKG

draft-js-export-html-forked

Version:
80 lines (72 loc) 2.14 kB
var VENDOR_PREFIX = /^(moz|ms|o|webkit)-/; var NUMERIC_STRING = /^\d+$/; var UPPERCASE_PATTERN = /([A-Z])/g; // Lifted from: // https://github.com/facebook/react/blob/ab4ddf64939aebbbc8d31be1022efd56e834c95c/src/renderers/dom/shared/CSSProperty.js var isUnitlessNumber = { animationIterationCount: true, borderImageOutset: true, borderImageSlice: true, borderImageWidth: true, boxFlex: true, boxFlexGroup: true, boxOrdinalGroup: true, columnCount: true, flex: true, flexGrow: true, flexPositive: true, flexShrink: true, flexNegative: true, flexOrder: true, gridRow: true, gridRowEnd: true, gridRowSpan: true, gridRowStart: true, gridColumn: true, gridColumnEnd: true, gridColumnSpan: true, gridColumnStart: true, fontWeight: true, lineClamp: true, lineHeight: true, opacity: true, order: true, orphans: true, tabSize: true, widows: true, zIndex: true, zoom: true, // SVG-related properties fillOpacity: true, floodOpacity: true, stopOpacity: true, strokeDasharray: true, strokeDashoffset: true, strokeMiterlimit: true, strokeOpacity: true, strokeWidth: true }; // Lifted from: https://github.com/facebook/react/blob/master/src/renderers/dom/shared/CSSPropertyOperations.js function processStyleName(name) { return name.replace(UPPERCASE_PATTERN, '-$1').toLowerCase().replace(VENDOR_PREFIX, '-$1-'); } // Lifted from: https://github.com/facebook/react/blob/master/src/renderers/dom/shared/dangerousStyleValue.js function processStyleValue(name, value) { var isNumeric; if (typeof value === 'string') { isNumeric = NUMERIC_STRING.test(value); } else { isNumeric = true; value = String(value); } if (!isNumeric || value === '0' || isUnitlessNumber[name] === true) { return value; } else { return value + 'px'; } } function styleToCSS(styleDescr) { return Object.keys(styleDescr).map(function (name) { var styleValue = processStyleValue(name, styleDescr[name]); var styleName = processStyleName(name); return "".concat(styleName, ": ").concat(styleValue); }).join('; '); } export default styleToCSS;