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.
		
		
		
		
		
			
		
			
				
					63 lines
				
				2.3 KiB
			
		
		
			
		
	
	
					63 lines
				
				2.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								// @flow
							 | 
						||
| 
								 | 
							
								import type { TimingFunction } from '../types/timingFunction'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable key-spacing */
							 | 
						||
| 
								 | 
							
								const functionsMap = {
							 | 
						||
| 
								 | 
							
								  easeInBack: 'cubic-bezier(0.600, -0.280, 0.735, 0.045)',
							 | 
						||
| 
								 | 
							
								  easeInCirc: 'cubic-bezier(0.600,  0.040, 0.980, 0.335)',
							 | 
						||
| 
								 | 
							
								  easeInCubic: 'cubic-bezier(0.550,  0.055, 0.675, 0.190)',
							 | 
						||
| 
								 | 
							
								  easeInExpo: 'cubic-bezier(0.950,  0.050, 0.795, 0.035)',
							 | 
						||
| 
								 | 
							
								  easeInQuad: 'cubic-bezier(0.550,  0.085, 0.680, 0.530)',
							 | 
						||
| 
								 | 
							
								  easeInQuart: 'cubic-bezier(0.895,  0.030, 0.685, 0.220)',
							 | 
						||
| 
								 | 
							
								  easeInQuint: 'cubic-bezier(0.755,  0.050, 0.855, 0.060)',
							 | 
						||
| 
								 | 
							
								  easeInSine: 'cubic-bezier(0.470,  0.000, 0.745, 0.715)',
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  easeOutBack: 'cubic-bezier(0.175,  0.885, 0.320, 1.275)',
							 | 
						||
| 
								 | 
							
								  easeOutCubic: 'cubic-bezier(0.215,  0.610, 0.355, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeOutCirc: 'cubic-bezier(0.075,  0.820, 0.165, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeOutExpo: 'cubic-bezier(0.190,  1.000, 0.220, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeOutQuad: 'cubic-bezier(0.250,  0.460, 0.450, 0.940)',
							 | 
						||
| 
								 | 
							
								  easeOutQuart: 'cubic-bezier(0.165,  0.840, 0.440, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeOutQuint: 'cubic-bezier(0.230,  1.000, 0.320, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeOutSine: 'cubic-bezier(0.390,  0.575, 0.565, 1.000)',
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  easeInOutBack: 'cubic-bezier(0.680, -0.550, 0.265, 1.550)',
							 | 
						||
| 
								 | 
							
								  easeInOutCirc: 'cubic-bezier(0.785,  0.135, 0.150, 0.860)',
							 | 
						||
| 
								 | 
							
								  easeInOutCubic: 'cubic-bezier(0.645,  0.045, 0.355, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeInOutExpo: 'cubic-bezier(1.000,  0.000, 0.000, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeInOutQuad: 'cubic-bezier(0.455,  0.030, 0.515, 0.955)',
							 | 
						||
| 
								 | 
							
								  easeInOutQuart: 'cubic-bezier(0.770,  0.000, 0.175, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeInOutQuint: 'cubic-bezier(0.860,  0.000, 0.070, 1.000)',
							 | 
						||
| 
								 | 
							
								  easeInOutSine: 'cubic-bezier(0.445,  0.050, 0.550, 0.950)',
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/* eslint-enable key-spacing */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getTimingFunction(functionName: string): string {
							 | 
						||
| 
								 | 
							
								  return functionsMap[functionName]
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * String to represent common easing functions as demonstrated here: (github.com/jaukia/easie).
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 * // Styles as object usage
							 | 
						||
| 
								 | 
							
								 * const styles = {
							 | 
						||
| 
								 | 
							
								 *   'transitionTimingFunction': timingFunctions('easeInQuad')
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // styled-components usage
							 | 
						||
| 
								 | 
							
								 *  const div = styled.div`
							 | 
						||
| 
								 | 
							
								 *   transitionTimingFunction: ${timingFunctions('easeInQuad')};
							 | 
						||
| 
								 | 
							
								 * `
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * // CSS as JS Output
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * 'div': {
							 | 
						||
| 
								 | 
							
								 *   'transitionTimingFunction': 'cubic-bezier(0.550,  0.085, 0.680, 0.530)',
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export default function timingFunctions(timingFunction: TimingFunction): string {
							 | 
						||
| 
								 | 
							
								  return getTimingFunction(timingFunction)
							 | 
						||
| 
								 | 
							
								}
							 |