UNPKG

4.08 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /**
8 * Based on https://github.com/jsstyles/css-vendor, but without having to
9 * convert between different cases all the time.
10 *
11 *
12 */
13
14exports.getPrefixedKeyframes = getPrefixedKeyframes;
15exports.getPrefixedStyle = getPrefixedStyle;
16
17var _inlineStylePrefixer = require('inline-style-prefixer');
18
19var _inlineStylePrefixer2 = _interopRequireDefault(_inlineStylePrefixer);
20
21function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
23function transformValues(style) {
24 return Object.keys(style).reduce(function (newStyle, key) {
25 var value = style[key];
26 if (Array.isArray(value)) {
27 value = value.join(';' + key + ':');
28 } else if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString === 'function') {
29 value = value.toString();
30 }
31
32 newStyle[key] = value;
33 return newStyle;
34 }, {});
35}
36
37var _hasWarnedAboutUserAgent = false;
38var _lastUserAgent = void 0;
39var _cachedPrefixer = void 0;
40
41function getPrefixer(userAgent) {
42 var actualUserAgent = userAgent || global && global.navigator && global.navigator.userAgent;
43
44 if (process.env.NODE_ENV !== 'production') {
45 if (!actualUserAgent && !_hasWarnedAboutUserAgent) {
46 /* eslint-disable no-console */
47 console.warn('Radium: userAgent should be supplied for server-side rendering. See ' + 'https://github.com/FormidableLabs/radium/tree/master/docs/api#radium ' + 'for more information.');
48 /* eslint-enable no-console */
49 _hasWarnedAboutUserAgent = true;
50 }
51 }
52
53 if (!_cachedPrefixer || actualUserAgent !== _lastUserAgent) {
54 if (actualUserAgent === 'all') {
55 _cachedPrefixer = {
56 prefix: _inlineStylePrefixer2.default.prefixAll,
57 prefixedKeyframes: 'keyframes'
58 };
59 } else {
60 _cachedPrefixer = new _inlineStylePrefixer2.default({ userAgent: actualUserAgent });
61 }
62 _lastUserAgent = actualUserAgent;
63 }
64 return _cachedPrefixer;
65}
66
67function getPrefixedKeyframes(userAgent) {
68 return getPrefixer(userAgent).prefixedKeyframes;
69}
70
71// Returns a new style object with vendor prefixes added to property names
72// and values.
73function getPrefixedStyle(style, userAgent) {
74 var styleWithFallbacks = transformValues(style);
75 var prefixer = getPrefixer(userAgent);
76 var prefixedStyle = prefixer.prefix(styleWithFallbacks);
77 return prefixedStyle;
78}
\No newline at end of file