hyper/app/lib/utils/override-style.js
Guillermo Rauch 477e40e433 refactor
2016-07-13 13:45:14 -07:00

31 lines
758 B
JavaScript

// hack to configure important style attributes
// to work around this madness:
// https://github.com/Khan/aphrodite/pull/41
export default function overrideStyle (obj) {
if (obj) {
return function (ref) {
if (ref) {
for (const key in obj) {
if (null != obj[key]) {
const val = 'number' === typeof obj[key]
? `${obj[key]}px`
: String(obj[key]);
const prop = toProp(key);
ref.style.setProperty(prop, val, 'important');
}
}
}
};
} else {
return null;
}
}
// converts camelCase to camel-case
function toProp (key) {
return key.replace(
/[a-z]([A-Z])/,
(a, b) => a.substr(0, a.length - 1) + '-' + b.toLowerCase()
);
}