UNPKG

kitchensink

Version:

Dispatch's awesome components and style guide

78 lines (64 loc) 3.92 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; /** * Based on https://github.com/jsstyles/css-vendor, but without having to * convert between different cases all the time. * * */ exports.getPrefixedKeyframes = getPrefixedKeyframes; exports.getPrefixedStyle = getPrefixedStyle; var _inlineStylePrefixer = require('inline-style-prefixer'); var _inlineStylePrefixer2 = _interopRequireDefault(_inlineStylePrefixer); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function transformValues(style) { return Object.keys(style).reduce(function (newStyle, key) { var value = style[key]; if (Array.isArray(value)) { value = value.join(';' + key + ':'); } else if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString === 'function') { value = value.toString(); } newStyle[key] = value; return newStyle; }, {}); } var _hasWarnedAboutUserAgent = false; var _lastUserAgent = void 0; var _cachedPrefixer = void 0; function getPrefixer(userAgent) { var actualUserAgent = userAgent || global && global.navigator && global.navigator.userAgent; if (process.env.NODE_ENV !== 'production') { if (!actualUserAgent && !_hasWarnedAboutUserAgent) { /* eslint-disable no-console */ 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.'); /* eslint-enable no-console */ _hasWarnedAboutUserAgent = true; } } if (!_cachedPrefixer || actualUserAgent !== _lastUserAgent) { if (actualUserAgent === 'all') { _cachedPrefixer = { prefix: _inlineStylePrefixer2.default.prefixAll, prefixedKeyframes: 'keyframes' }; } else { _cachedPrefixer = new _inlineStylePrefixer2.default({ userAgent: actualUserAgent }); } _lastUserAgent = actualUserAgent; } return _cachedPrefixer; } function getPrefixedKeyframes(userAgent) { return getPrefixer(userAgent).prefixedKeyframes; } // Returns a new style object with vendor prefixes added to property names // and values. function getPrefixedStyle(style, userAgent) { var styleWithFallbacks = transformValues(style); var prefixer = getPrefixer(userAgent); var prefixedStyle = prefixer.prefix(styleWithFallbacks); return prefixedStyle; }