mirror of
				https://github.com/antd-tiny-vue/antd-tiny-vue.git
				synced 2025-10-31 08:41:45 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /* eslint-disable import/prefer-default-export */
 | |
| import type { CSSObject, Keyframes } from '@antd-tiny-vue/cssinjs'
 | |
| 
 | |
| const initMotionCommon = (duration: string): CSSObject => ({
 | |
|   animationDuration: duration,
 | |
|   animationFillMode: 'both'
 | |
| })
 | |
| 
 | |
| // FIXME: origin less code seems same as initMotionCommon. Maybe we can safe remove
 | |
| const initMotionCommonLeave = (duration: string): CSSObject => ({
 | |
|   animationDuration: duration,
 | |
|   animationFillMode: 'both'
 | |
| })
 | |
| 
 | |
| export const initMotion = (motionCls: string, inKeyframes: Keyframes, outKeyframes: Keyframes, duration: string, sameLevel = false): CSSObject => {
 | |
|   const sameLevelPrefix = sameLevel ? '&' : ''
 | |
| 
 | |
|   return {
 | |
|     [`
 | |
|       ${sameLevelPrefix}${motionCls}-enter,
 | |
|       ${sameLevelPrefix}${motionCls}-appear
 | |
|     `]: {
 | |
|       ...initMotionCommon(duration),
 | |
|       animationPlayState: 'paused'
 | |
|     },
 | |
| 
 | |
|     [`${sameLevelPrefix}${motionCls}-leave`]: {
 | |
|       ...initMotionCommonLeave(duration),
 | |
|       animationPlayState: 'paused'
 | |
|     },
 | |
| 
 | |
|     [`
 | |
|       ${sameLevelPrefix}${motionCls}-enter${motionCls}-enter-active,
 | |
|       ${sameLevelPrefix}${motionCls}-appear${motionCls}-appear-active
 | |
|     `]: {
 | |
|       animationName: inKeyframes,
 | |
|       animationPlayState: 'running'
 | |
|     },
 | |
| 
 | |
|     [`${sameLevelPrefix}${motionCls}-leave${motionCls}-leave-active`]: {
 | |
|       animationName: outKeyframes,
 | |
|       animationPlayState: 'running',
 | |
|       pointerEvents: 'none'
 | |
|     }
 | |
|   }
 | |
| }
 |