UNPKG

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