UNPKG

web-portals

Version:

web-portals

81 lines (73 loc) 2.8 kB
'use strict' import effectTypes from './preset' import { Application } from '../../Application' import { TransformHistory } from '../history' import { TransformAnimateEvent } from '../../types' class TransformAnimation extends TransformHistory { 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, effectTypes.flip] 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(0), effectTypes.slide(2)] case 'slideDown': case 'slidedown': case 'slide-down': return [effectTypes.slide(2), effectTypes.slide(0)] default: return } } } export { TransformAnimation }