74 lines
1.8 KiB
JavaScript
74 lines
1.8 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports['default'] = supportedValue;
|
|
|
|
var _isInBrowser = require('is-in-browser');
|
|
|
|
var _isInBrowser2 = _interopRequireDefault(_isInBrowser);
|
|
|
|
var _prefix = require('./prefix');
|
|
|
|
var _prefix2 = _interopRequireDefault(_prefix);
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
|
|
|
var cache = {};
|
|
var el = void 0;
|
|
|
|
if (_isInBrowser2['default']) el = document.createElement('p');
|
|
|
|
/**
|
|
* Returns prefixed value if needed. Returns `false` if value is not supported.
|
|
*
|
|
* @param {String} property
|
|
* @param {String} value
|
|
* @return {String|Boolean}
|
|
* @api public
|
|
*/
|
|
function supportedValue(property, value) {
|
|
// For server-side rendering.
|
|
if (!el) return value;
|
|
|
|
// It is a string or a number as a string like '1'.
|
|
// We want only prefixable values here.
|
|
if (typeof value !== 'string' || !isNaN(parseInt(value, 10))) return value;
|
|
|
|
var cacheKey = property + value;
|
|
|
|
if (cache[cacheKey] != null) return cache[cacheKey];
|
|
|
|
// IE can even throw an error in some cases, for e.g. style.content = 'bar'
|
|
try {
|
|
// Test value as it is.
|
|
el.style[property] = value;
|
|
} catch (err) {
|
|
cache[cacheKey] = false;
|
|
return false;
|
|
}
|
|
|
|
// Value is supported as it is.
|
|
if (el.style[property] !== '') {
|
|
cache[cacheKey] = value;
|
|
} else {
|
|
// Test value with vendor prefix.
|
|
value = _prefix2['default'].css + value;
|
|
|
|
// Hardcode test to convert "flex" to "-ms-flexbox" for IE10.
|
|
if (value === '-ms-flex') value = '-ms-flexbox';
|
|
|
|
el.style[property] = value;
|
|
|
|
// Value is supported with vendor prefix.
|
|
if (el.style[property] !== '') cache[cacheKey] = value;
|
|
}
|
|
|
|
if (!cache[cacheKey]) cache[cacheKey] = false;
|
|
|
|
// Reset style value.
|
|
el.style[property] = '';
|
|
|
|
return cache[cacheKey];
|
|
} |