|
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = transition;
-
- var _hyphenateProperty = require('css-in-js-utils/lib/hyphenateProperty');
-
- var _hyphenateProperty2 = _interopRequireDefault(_hyphenateProperty);
-
- var _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');
-
- var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);
-
- var _capitalizeString = require('../../utils/capitalizeString');
-
- var _capitalizeString2 = _interopRequireDefault(_capitalizeString);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var properties = {
- transition: true,
- transitionProperty: true,
- WebkitTransition: true,
- WebkitTransitionProperty: true,
- MozTransition: true,
- MozTransitionProperty: true
- };
-
-
- var prefixMapping = {
- Webkit: '-webkit-',
- Moz: '-moz-',
- ms: '-ms-'
- };
-
- function prefixValue(value, propertyPrefixMap) {
- if ((0, _isPrefixedValue2.default)(value)) {
- return value;
- }
-
- // only split multi values, not cubic beziers
- var multipleValues = value.split(/,(?![^()]*(?:\([^()]*\))?\))/g);
-
- for (var i = 0, len = multipleValues.length; i < len; ++i) {
- var singleValue = multipleValues[i];
- var values = [singleValue];
- for (var property in propertyPrefixMap) {
- var dashCaseProperty = (0, _hyphenateProperty2.default)(property);
-
- if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') {
- var prefixes = propertyPrefixMap[property];
- for (var j = 0, pLen = prefixes.length; j < pLen; ++j) {
- // join all prefixes and create a new value
- values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty));
- }
- }
- }
-
- multipleValues[i] = values.join(',');
- }
-
- return multipleValues.join(',');
- }
-
- function transition(property, value, style, propertyPrefixMap) {
- // also check for already prefixed transitions
- if (typeof value === 'string' && properties.hasOwnProperty(property)) {
- var outputValue = prefixValue(value, propertyPrefixMap);
- // if the property is already prefixed
- var webkitOutput = outputValue.split(/,(?![^()]*(?:\([^()]*\))?\))/g).filter(function (val) {
- return !/-moz-|-ms-/.test(val);
- }).join(',');
-
- if (property.indexOf('Webkit') > -1) {
- return webkitOutput;
- }
-
- var mozOutput = outputValue.split(/,(?![^()]*(?:\([^()]*\))?\))/g).filter(function (val) {
- return !/-webkit-|-ms-/.test(val);
- }).join(',');
-
- if (property.indexOf('Moz') > -1) {
- return mozOutput;
- }
-
- style['Webkit' + (0, _capitalizeString2.default)(property)] = webkitOutput;
- style['Moz' + (0, _capitalizeString2.default)(property)] = mozOutput;
- return outputValue;
- }
- }
- module.exports = exports['default'];
|