UNPKG

iportal

Version:

web-portal

93 lines (85 loc) 3.29 kB
import effectTypes from './preset' import { Application } from '../../Application' import { TransformHistory } from '../history' import { TransformAnimateEvent } from '../../types' class TransformAnimation extends TransformHistory { public animation: boolean | Array<(e: TransformAnimateEvent) => void> = false constructor (app: Application) { super(app) } public getAnimationGroup (): [(e: TransformAnimateEvent) => void | Promise<boolean>, (e: TransformAnimateEvent) => void | Promise<boolean>] | boolean { if (!this.modulu || this.modulu.rel !== 'module') return false let animationFunction: [(e: TransformAnimateEvent) => void, (e: TransformAnimateEvent) => void] | undefined let animationNames = this[this.history !== 1 && this.historyDirection === -1 ? 'modulu' : 'module'].config.animation if (animationNames === true || animationNames === 'inherit') { animationNames = this.options.defaultAnimation } if (typeof animationNames === 'string') { animationFunction = this.getAnimationByName(animationNames) } else if (typeof animationNames?.[0] !== 'function') { return animationNames as [(e: TransformAnimateEvent) => void | Promise<boolean>, (e: TransformAnimateEvent) => void | Promise<boolean>] } if (typeof animationFunction?.[0] !== 'function') { return false } return animationFunction } public getAnimationOneSide (backset: number): ((e: TransformAnimateEvent) => void | Promise<boolean>) | undefined { const animationGroup = this.animation if (backset >= 0) { switch (typeof animationGroup) { case 'function': return animationGroup case 'object': return animationGroup[animationGroup.length === 2 ? backset : 0] default: return } } return } public getAnimationByName (type: string): [(e: TransformAnimateEvent) => void | Promise<boolean>, (e: TransformAnimateEvent) => void | Promise<boolean>] | undefined { switch (type) { case 'flip': return [effectTypes.flip(4), effectTypes.flip(4)] case 'flipLeft': case 'flip-left': return [effectTypes.flip(3), effectTypes.flip(3)] case 'flipDown': case 'flip-down': return [effectTypes.flip(2), effectTypes.flip(2)] case 'flipRight': case 'flip-right': return [effectTypes.flip(1), effectTypes.flip(1)] case 'flipUp': case 'flip-up': return [effectTypes.flip(0), effectTypes.flip(0)] case 'fade': return [effectTypes.fade(1), effectTypes.fade(0)] case 'zoom': return [effectTypes.zoom(1), effectTypes.zoom(0)] case 'slide': case 'slideLeft': case 'slideleft': case 'slide-left': return [effectTypes.slide(1), effectTypes.slide(3)] case 'slideRight': case 'slideright': case 'slide-right': return [effectTypes.slide(3), effectTypes.slide(1)] case 'slideUp': case 'slideup': case 'slide-up': return [effectTypes.slide(2), effectTypes.slide(0)] case 'slideDown': case 'slidedown': case 'slide-down': return [effectTypes.slide(0), effectTypes.slide(2)] default: return } } } export { TransformAnimation }