UNPKG

2.56 kBJavaScriptView Raw
1Object.defineProperty(exports, "__esModule", {
2 value: true
3});
4
5var _arrayPrototype = require('array.prototype.flat');
6
7var _arrayPrototype2 = _interopRequireDefault(_arrayPrototype);
8
9var _globalCache = require('global-cache');
10
11var _globalCache2 = _interopRequireDefault(_globalCache);
12
13var _constants = require('./utils/constants');
14
15var _getClassName = require('./utils/getClassName');
16
17var _getClassName2 = _interopRequireDefault(_getClassName);
18
19var _separateStyles2 = require('./utils/separateStyles');
20
21var _separateStyles3 = _interopRequireDefault(_separateStyles2);
22
23function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
24
25/**
26 * Function required as part of the react-with-styles interface. Parses the styles provided by
27 * react-with-styles to produce class names based on the style name and optionally the namespace if
28 * available.
29 *
30 * stylesObject {Object} The styles object passed to withStyles.
31 *
32 * Return an object mapping style names to class names.
33 */
34function create(stylesObject) {
35 var stylesToClasses = {};
36 var styleNames = Object.keys(stylesObject);
37 var sharedState = _globalCache2['default'].get(_constants.GLOBAL_CACHE_KEY) || {};
38 var _sharedState$namespac = sharedState.namespace,
39 namespace = _sharedState$namespac === undefined ? '' : _sharedState$namespac;
40
41 styleNames.forEach(function (styleName) {
42 var className = (0, _getClassName2['default'])(namespace, styleName);
43 stylesToClasses[styleName] = className;
44 });
45 return stylesToClasses;
46}
47
48/**
49 * Process styles to be consumed by a component.
50 *
51 * stylesArray {Array} Array of the following: values returned by create, plain JavaScript objects
52 * representing inline styles, or arrays thereof.
53 *
54 * Return an object with optional className and style properties to be spread on a component.
55 */
56function resolve(stylesArray) {
57 var flattenedStyles = (0, _arrayPrototype2['default'])(stylesArray, Infinity);
58
59 var _separateStyles = (0, _separateStyles3['default'])(flattenedStyles),
60 classNames = _separateStyles.classNames,
61 hasInlineStyles = _separateStyles.hasInlineStyles,
62 inlineStyles = _separateStyles.inlineStyles;
63
64 var specificClassNames = classNames.map(function (name, index) {
65 return String(name) + ' ' + String(name) + '_' + String(index + 1);
66 });
67 var className = specificClassNames.join(' ');
68
69 var result = { className: className };
70 if (hasInlineStyles) result.style = inlineStyles;
71 return result;
72}
73
74exports['default'] = { create: create, resolve: resolve };
\No newline at end of file