fela-plugin-theme-value
Version:
Fela plugin to resolve values from a theme
47 lines (36 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = themeValue;
var _isobject = _interopRequireDefault(require("isobject"));
var _fastLoops = require("fast-loops");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function getThemeValue(object, key) {
var value = (0, _fastLoops.arrayReduce)(key.split('.'), function (value, index) {
if ((0, _isobject["default"])(value) && value[index]) {
return value[index];
}
return undefined;
}, object);
return value || key;
}
function resolveThemeValues(style) {
var theme = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var mapping = arguments.length > 2 ? arguments[2] : undefined;
for (var property in style) {
var value = style[property];
if (typeof value === 'string' && mapping[property]) {
style[property] = getThemeValue(mapping[property](theme), value);
} else if ((0, _isobject["default"])(value)) {
style[property] = resolveThemeValues(style[property], theme, mapping);
}
}
return style;
}
function themeValue() {
var mapping = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return function themeValuePlugin(style, type, renderer, props) {
return resolveThemeValues(style, props === null || props === void 0 ? void 0 : props.theme, mapping);
};
}