transition-fade.js 2.02 KB
/*
 * ADOBE CONFIDENTIAL
 *
 * Copyright 2015 Adobe Systems Incorporated
 * All Rights Reserved.
 *
 * NOTICE:  All information contained herein is, and remains
 * the property of Adobe Systems Incorporated and its suppliers,
 * if any.  The intellectual and technical concepts contained
 * herein are proprietary to Adobe Systems Incorporated and its
 * suppliers and may be covered by U.S. and Foreign Patents,
 * patents in process, and are protected by trade secret or copyright law.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe Systems Incorporated.
 */
(function($, player) {
    'use strict';

    var DEFAULT_TRANSITION_DURATION = 600;

    /**
     * A simple show/hide transition with no animation.
     *
     * @param  {Strategy} strategy The strategy that handles the items
     *
     * @return {Transition} The current transition
     */
    var FadeTransition = function(strategy) {
        this.strategy = strategy;
        this.strategy.items().fadeOut();
        return this;
    };

    /**
     * Apply the transition on the specified sequence elements.
     *
     * @param  {jQuery}   [$oldItem]    The previous item to transition out
     * @param  {jQuery}   $newItem      The next item to transition in
     * @param  {Function} next          The callback function to call after the transition
     * @param  {Number}   duration      The duration of the fadeOut and fadeIn animations
     */
    FadeTransition.prototype.execute = function($oldItem, $newItem, next, duration) {
        var showFnc = function() {
            $newItem.fadeIn(duration || DEFAULT_TRANSITION_DURATION, next);
        };
        $oldItem && $oldItem.fadeOut(duration || DEFAULT_TRANSITION_DURATION, showFnc) || showFnc();
    };

    /**
     * Destroy the transition.
     */
    FadeTransition.prototype.destroy = function() {
        this.strategy = null;
    };

    player.transitions.fade = FadeTransition;

}(window.jQuery, window.ScreensPlayer));