UNPKG

fela-plugin-theme-value

Version:

Fela plugin to resolve values from a theme

47 lines (36 loc) 1.43 kB
"use strict"; 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); }; }