Home Reference Source

src/layout/FlowStates.js

/**


 @author: Manuel Overdijk
 @license NPOSL-3.0
 @copyright Bizboard, 2016

 */

import Easing               from 'famous/transitions/Easing.js';

import {layout, flow}               from './Decorators.js';

export const flowStates = {
    defaultTransition: {curve: Easing.outCubic, duration: 500},

    fade: function(stateName = '', options = {opacity: 0}, stateOptions = {transition: flowStates.defaultTransition, delay: 0}) {
        return function (target, renderableName, descriptor) {
            flow.stateStep(stateName, stateOptions, layout.opacity(options.opacity))(target, renderableName, descriptor);
        }
    },
    fadeSlideLeft: function(stateName = '', options = {translation: -300, opacity: 0}, stateOptions = {transition: flowStates.defaultTransition, delay: 0}) {
        return function (target, renderableName, descriptor) {
            flow.stateStep(stateName, stateOptions, layout.translateFrom(options.translation, 0, 0), layout.opacity(options.opacity))(target, renderableName, descriptor);
        }
    },
    fadeSlideRight: function(stateName = '', options = {translation: 300, opacity: 0}, stateOptions = {transition: flowStates.defaultTransition, delay: 0}) {
        return function (target, renderableName, descriptor) {
            flow.stateStep(stateName, stateOptions, layout.translateFrom(options.translation, 0, 0), layout.opacity(options.opacity))(target, renderableName, descriptor);
        }
    },
    fadeSlideTop: function(stateName = '', options = {translation: -300, opacity: 0}, stateOptions = {transition: flowStates.defaultTransition, delay: 0}) {
        return function (target, renderableName, descriptor) {
            flow.stateStep(stateName, stateOptions, layout.translateFrom(0, options.translation, 0), layout.opacity(options.opacity))(target, renderableName, descriptor);
        }
    },
    fadeSlideBottom: function(stateName = '', options = {translation: 300, opacity: 0}, stateOptions = {transition: flowStates.defaultTransition, delay: 0}) {
        return function (target, renderableName, descriptor) {
            flow.stateStep(stateName, stateOptions, layout.translateFrom(0, options.translation, 0), layout.opacity(options.opacity))(target, renderableName, descriptor);
        }
    }
};