react-typestyle
Version:
A react integration of the TypeStyle ecosystem
79 lines • 2.42 kB
JavaScript
;
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
var utilities_1 = require("typestyle/lib/internal/utilities");
exports.shallowCompare = function (a, b) {
var i;
for (i in a)
if (!(i in b))
return true;
for (i in b)
if (a[i] !== b[i])
return true;
return false;
};
exports.dynamicExtend = function () {
var objects = [];
for (var _i = 0; _i < arguments.length; _i++) {
objects[_i] = arguments[_i];
}
var staticStyles = [];
var dynamicStyles;
objects.forEach(function (style) {
if (typeof style === 'function') {
if (!dynamicStyles)
dynamicStyles = [];
dynamicStyles.push(style);
}
else {
staticStyles.push(style);
}
});
if (dynamicStyles) {
return function (props) {
return utilities_1.extend.apply(void 0, staticStyles.concat((dynamicStyles.map(function (style) { return style(props); }))));
};
}
return utilities_1.extend.apply(void 0, staticStyles);
};
exports.processPlugins = function (plugins, style, props) {
var result = __assign({}, style);
if (plugins) {
plugins.forEach(function (plugin) {
result = plugin(result, 'RULE', undefined, props);
});
}
return result;
};
exports.splitSheet = function (sheet) {
var dynamicSheet = {};
var staticSheet = {};
Object.keys(sheet).forEach(function (name) {
var style = sheet[name];
if (typeof style === 'function') {
dynamicSheet[name] = style;
}
else {
staticSheet[name] = style;
}
});
return { dynamic: dynamicSheet, static: staticSheet };
};
exports.processSheet = function (processor, sheet, props, result) {
if (result === void 0) { result = {}; }
Object.keys(sheet).forEach(function (name) {
var style = sheet[name];
result[name] = processor(typeof style === 'function' ?
style(props)
: style, props);
});
return result;
};
//# sourceMappingURL=utils.js.map