You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					103 lines
				
				2.7 KiB
			
		
		
			
		
	
	
					103 lines
				
				2.7 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
|  | 
 | ||
|  | exports.__esModule = true; | ||
|  | exports.default = void 0; | ||
|  | 
 | ||
|  | var _css = _interopRequireDefault(require("./css")); | ||
|  | 
 | ||
|  | var _hyphenate = _interopRequireDefault(require("./hyphenate")); | ||
|  | 
 | ||
|  | var _isTransform = _interopRequireDefault(require("./isTransform")); | ||
|  | 
 | ||
|  | var _transitionEnd = _interopRequireDefault(require("./transitionEnd")); | ||
|  | 
 | ||
|  | var reset = { | ||
|  |   transition: '', | ||
|  |   'transition-duration': '', | ||
|  |   'transition-delay': '', | ||
|  |   'transition-timing-function': '' | ||
|  | }; | ||
|  | 
 | ||
|  | // super lean animate function for transitions
 | ||
|  | // doesn't support all translations to keep it matching the jquery API
 | ||
|  | 
 | ||
|  | /** | ||
|  |  * code in part from: Zepto 1.1.4 | zeptojs.com/license | ||
|  |  */ | ||
|  | function _animate(_ref) { | ||
|  |   var node = _ref.node, | ||
|  |       properties = _ref.properties, | ||
|  |       _ref$duration = _ref.duration, | ||
|  |       duration = _ref$duration === void 0 ? 200 : _ref$duration, | ||
|  |       easing = _ref.easing, | ||
|  |       callback = _ref.callback; | ||
|  |   var cssProperties = []; | ||
|  |   var cssValues = {}; | ||
|  |   var transforms = ''; | ||
|  |   Object.keys(properties).forEach(function (key) { | ||
|  |     var value = properties[key]; | ||
|  |     if ((0, _isTransform.default)(key)) transforms += key + "(" + value + ") ";else { | ||
|  |       cssValues[key] = value; | ||
|  |       cssProperties.push((0, _hyphenate.default)(key)); | ||
|  |     } | ||
|  |   }); | ||
|  | 
 | ||
|  |   if (transforms) { | ||
|  |     cssValues.transform = transforms; | ||
|  |     cssProperties.push('transform'); | ||
|  |   } | ||
|  | 
 | ||
|  |   function done(event) { | ||
|  |     if (event.target !== event.currentTarget) return; | ||
|  |     (0, _css.default)(node, reset); | ||
|  |     if (callback) callback.call(this, event); | ||
|  |   } | ||
|  | 
 | ||
|  |   if (duration > 0) { | ||
|  |     cssValues.transition = cssProperties.join(', '); | ||
|  |     cssValues['transition-duration'] = duration / 1000 + "s"; | ||
|  |     cssValues['transition-delay'] = '0s'; | ||
|  |     cssValues['transition-timing-function'] = easing || 'linear'; | ||
|  |   } | ||
|  | 
 | ||
|  |   var removeListener = (0, _transitionEnd.default)(node, done, duration); // eslint-disable-next-line no-unused-expressions
 | ||
|  | 
 | ||
|  |   node.clientLeft; // trigger page reflow
 | ||
|  | 
 | ||
|  |   (0, _css.default)(node, cssValues); | ||
|  |   return { | ||
|  |     cancel: function cancel() { | ||
|  |       removeListener(); | ||
|  |       (0, _css.default)(node, reset); | ||
|  |     } | ||
|  |   }; | ||
|  | } | ||
|  | 
 | ||
|  | function animate(nodeOrOptions, properties, duration, easing, callback) { | ||
|  |   if (!('nodeType' in nodeOrOptions)) { | ||
|  |     return _animate(nodeOrOptions); | ||
|  |   } | ||
|  | 
 | ||
|  |   if (!properties) { | ||
|  |     throw new Error('must include properties to animate'); | ||
|  |   } | ||
|  | 
 | ||
|  |   if (typeof easing === 'function') { | ||
|  |     callback = easing; | ||
|  |     easing = ''; | ||
|  |   } | ||
|  | 
 | ||
|  |   return _animate({ | ||
|  |     node: nodeOrOptions, | ||
|  |     properties: properties, | ||
|  |     duration: duration, | ||
|  |     easing: easing, | ||
|  |     callback: callback | ||
|  |   }); | ||
|  | } | ||
|  | 
 | ||
|  | var _default = animate; | ||
|  | exports.default = _default; | ||
|  | module.exports = exports["default"]; |