Вход Регистрация
Файл: Main Website Files/assets/bower_components/jquery/src/effects.js
Строк: 742
<?php
define
([
    
"./core",
    
"./var/pnum",
    
"./css/var/cssExpand",
    
"./css/var/isHidden",
    
"./css/defaultDisplay",
    
"./data/var/data_priv",

    
"./core/init",
    
"./effects/Tween",
    
"./queue",
    
"./css",
    
"./deferred",
    
"./traversing"
], function( jQuerypnumcssExpandisHiddendefaultDisplaydata_priv ) {

var
    
fxNowtimerId,
    
rfxtypes = /^(?:toggle|show|hide)$/,
    
rfxnum = new RegExp"^(?:([+-])=|)(" pnum ")([a-z%]*)$""i" ),
    
rrun = /queueHooks$/,
    
animationPrefilters = [ defaultPrefilter ],
    
tweeners = {
        
"*": [ function( propvalue ) {
            var 
tween this.createTweenpropvalue ),
                
target tween.cur(),
                
parts rfxnum.execvalue ),
                
unit parts && parts] || ( jQuery.cssNumberprop ] ? "" "px" ),

                
// Starting value computation is required for potential unit mismatches
                
start = ( jQuery.cssNumberprop ] || unit !== "px" && +target ) &&
                    
rfxnum.execjQuery.csstween.elemprop ) ),
                
scale 1,
                
maxIterations 20;

            if ( 
start && start] !== unit ) {
                
// Trust units reported by jQuery.css
                
unit unit || start];

                
// Make sure we update the tween properties later on
                
parts parts || [];

                
// Iteratively approximate from a nonzero starting point
                
start = +target || 1;

                do {
                    
// If previous iteration zeroed out, double until we get *something*.
                    // Use string for doubling so we don't accidentally see scale as unchanged below
                    
scale scale || ".5";

                    
// Adjust and apply
                    
start start scale;
                    
jQuery.styletween.elempropstart unit );

                
// Update scale, tolerating zero or NaN from tween.cur(),
                // break the loop if scale is unchanged or perfect, or if we've just had enough
                
} while ( scale !== (scale tween.cur() / target) && scale !== && --maxIterations );
            }

            
// Update tween properties
            
if ( parts ) {
                
start tween.start = +start || +target || 0;
                
tween.unit unit;
                
// If a +=/-= token was provided, we're doing a relative animation
                
tween.end parts] ?
                    
start + ( parts] + ) * parts] :
                    +
parts];
            }

            return 
tween;
        } ]
    };

// Animations created synchronously will run synchronously
function createFxNow() {
    
setTimeout(function() {
        
fxNow undefined;
    });
    return ( 
fxNow jQuery.now() );
}

// Generate parameters to create a standard animation
function genFxtypeincludeWidth ) {
    var 
which,
        
0,
        
attrs = { heighttype };

    
// If we include width, step value is 1 to do all cssExpand values,
    // otherwise step value is 2 to skip over Left and Right
    
includeWidth includeWidth 0;
    for ( ; 
+= includeWidth ) {
        
which cssExpand];
        
attrs"margin" which ] = attrs"padding" which ] = type;
    }

    if ( 
includeWidth ) {
        
attrs.opacity attrs.width type;
    }

    return 
attrs;
}

function 
createTweenvaluepropanimation ) {
    var 
tween,
        
collection = ( tweenersprop ] || [] ).concattweeners"*" ] ),
        
index 0,
        
length collection.length;
    for ( ; 
index lengthindex++ ) {
        if ( (
tween collectionindex ].callanimationpropvalue )) ) {

            
// We're done with this property
            
return tween;
        }
    }
}

function 
defaultPrefilterelempropsopts ) {
    
/* jshint validthis: true */
    
var propvaluetoggletweenhooksoldfiredisplaycheckDisplay,
        
anim this,
        
orig = {},
        
style elem.style,
        
hidden elem.nodeType && isHiddenelem ),
        
dataShow data_priv.getelem"fxshow" );

    
// Handle queue: false promises
    
if ( !opts.queue ) {
        
hooks jQuery._queueHookselem"fx" );
        if ( 
hooks.unqueued == null ) {
            
hooks.unqueued 0;
            
oldfire hooks.empty.fire;
            
hooks.empty.fire = function() {
                if ( !
hooks.unqueued ) {
                    
oldfire();
                }
            };
        }
        
hooks.unqueued++;

        
anim.always(function() {
            
// Ensure the complete handler is called before this completes
            
anim.always(function() {
                
hooks.unqueued--;
                if ( !
jQuery.queueelem"fx" ).length ) {
                    
hooks.empty.fire();
                }
            });
        });
    }

    
// Height/width overflow pass
    
if ( elem.nodeType === && ( "height" in props || "width" in props ) ) {
        
// Make sure that nothing sneaks out
        // Record all 3 overflow attributes because IE9-10 do not
        // change the overflow attribute when overflowX and
        // overflowY are set to the same value
        
opts.overflow = [ style.overflowstyle.overflowXstyle.overflowY ];

        
// Set display property to inline-block for height/width
        // animations on inline elements that are having width/height animated
        
display jQuery.csselem"display" );

        
// Test default display if display is currently "none"
        
checkDisplay display === "none" ?
            
data_priv.getelem"olddisplay" ) || defaultDisplayelem.nodeName ) : display;

        if ( 
checkDisplay === "inline" && jQuery.csselem"float" ) === "none" ) {
            
style.display "inline-block";
        }
    }

    if ( 
opts.overflow ) {
        
style.overflow "hidden";
        
anim.always(function() {
            
style.overflow opts.overflow];
            
style.overflowX opts.overflow];
            
style.overflowY opts.overflow];
        });
    }

    
// show/hide pass
    
for ( prop in props ) {
        
value propsprop ];
        if ( 
rfxtypes.execvalue ) ) {
            
delete propsprop ];
            
toggle toggle || value === "toggle";
            if ( 
value === ( hidden "hide" "show" ) ) {

                
// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
                
if ( value === "show" && dataShow && dataShowprop ] !== undefined ) {
                    
hidden true;
                } else {
                    continue;
                }
            }
            
origprop ] = dataShow && dataShowprop ] || jQuery.styleelemprop );

        
// Any non-fx value stops us from restoring the original display value
        
} else {
            
display undefined;
        }
    }

    if ( !
jQuery.isEmptyObjectorig ) ) {
        if ( 
dataShow ) {
            if ( 
"hidden" in dataShow ) {
                
hidden dataShow.hidden;
            }
        } else {
            
dataShow data_priv.accesselem"fxshow", {} );
        }

        
// Store state if its toggle - enables .stop().toggle() to "reverse"
        
if ( toggle ) {
            
dataShow.hidden = !hidden;
        }
        if ( 
hidden ) {
            
jQueryelem ).show();
        } else {
            
anim.done(function() {
                
jQueryelem ).hide();
            });
        }
        
anim.done(function() {
            var 
prop;

            
data_priv.removeelem"fxshow" );
            for ( 
prop in orig ) {
                
jQuery.styleelemproporigprop ] );
            }
        });
        for ( 
prop in orig ) {
            
tween createTweenhidden dataShowprop ] : 0propanim );

            if ( !( 
prop in dataShow ) ) {
                
dataShowprop ] = tween.start;
                if ( 
hidden ) {
                    
tween.end tween.start;
                    
tween.start prop === "width" || prop === "height" 0;
                }
            }
        }

    
// If this is a noop like .hide().hide(), restore an overwritten display value
    
} else if ( (display === "none" defaultDisplayelem.nodeName ) : display) === "inline" ) {
        
style.display display;
    }
}

function 
propFilterpropsspecialEasing ) {
    var 
indexnameeasingvaluehooks;

    
// camelCase, specialEasing and expand cssHook pass
    
for ( index in props ) {
        
name jQuery.camelCaseindex );
        
easing specialEasingname ];
        
value propsindex ];
        if ( 
jQuery.isArrayvalue ) ) {
            
easing value];
            
value propsindex ] = value];
        }

        if ( 
index !== name ) {
            
propsname ] = value;
            
delete propsindex ];
        }

        
hooks jQuery.cssHooksname ];
        if ( 
hooks && "expand" in hooks ) {
            
value hooks.expandvalue );
            
delete propsname ];

            
// Not quite $.extend, this won't overwrite existing keys.
            // Reusing 'index' because we have the correct "name"
            
for ( index in value ) {
                if ( !( 
index in props ) ) {
                    
propsindex ] = valueindex ];
                    
specialEasingindex ] = easing;
                }
            }
        } else {
            
specialEasingname ] = easing;
        }
    }
}

function 
Animationelempropertiesoptions ) {
    var 
result,
        
stopped,
        
index 0,
        
length animationPrefilters.length,
        
deferred jQuery.Deferred().always( function() {
            
// Don't match elem in the :animated selector
            
delete tick.elem;
        }),
        
tick = function() {
            if ( 
stopped ) {
                return 
false;
            }
            var 
currentTime fxNow || createFxNow(),
                
remaining Math.max0animation.startTime animation.duration currentTime ),
                
// Support: Android 2.3
                // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
                
temp remaining animation.duration || 0,
                
percent temp,
                
index 0,
                
length animation.tweens.length;

            for ( ; 
index length index++ ) {
                
animation.tweensindex ].runpercent );
            }

            
deferred.notifyWithelem, [ animationpercentremaining ]);

            if ( 
percent && length ) {
                return 
remaining;
            } else {
                
deferred.resolveWithelem, [ animation ] );
                return 
false;
            }
        },
        
animation deferred.promise({
            
elemelem,
            
propsjQuery.extend( {}, properties ),
            
optsjQuery.extendtrue, { specialEasing: {} }, options ),
            
originalPropertiesproperties,
            
originalOptionsoptions,
            
startTimefxNow || createFxNow(),
            
durationoptions.duration,
            
tweens: [],
            
createTween: function( propend ) {
                var 
tween jQuery.Tweenelemanimation.optspropend,
                        
animation.opts.specialEasingprop ] || animation.opts.easing );
                
animation.tweens.pushtween );
                return 
tween;
            },
            
stop: function( gotoEnd ) {
                var 
index 0,
                    
// If we are going to the end, we want to run all the tweens
                    // otherwise we skip this part
                    
length gotoEnd animation.tweens.length 0;
                if ( 
stopped ) {
                    return 
this;
                }
                
stopped true;
                for ( ; 
index length index++ ) {
                    
animation.tweensindex ].run);
                }

                
// Resolve when we played the last frame; otherwise, reject
                
if ( gotoEnd ) {
                    
deferred.resolveWithelem, [ animationgotoEnd ] );
                } else {
                    
deferred.rejectWithelem, [ animationgotoEnd ] );
                }
                return 
this;
            }
        }),
        
props animation.props;

    
propFilterpropsanimation.opts.specialEasing );

    for ( ; 
index length index++ ) {
        
result animationPrefiltersindex ].callanimationelempropsanimation.opts );
        if ( 
result ) {
            return 
result;
        }
    }

    
jQuery.mappropscreateTweenanimation );

    if ( 
jQuery.isFunctionanimation.opts.start ) ) {
        
animation.opts.start.callelemanimation );
    }

    
jQuery.fx.timer(
        
jQuery.extendtick, {
            
elemelem,
            
animanimation,
            
queueanimation.opts.queue
        
})
    );

    
// attach callbacks from options
    
return animation.progressanimation.opts.progress )
        .
doneanimation.opts.doneanimation.opts.complete )
        .
failanimation.opts.fail )
        .
alwaysanimation.opts.always );
}

jQuery.Animation jQuery.extendAnimation, {

    
tweener: function( propscallback ) {
        if ( 
jQuery.isFunctionprops ) ) {
            
callback props;
            
props = [ "*" ];
        } else {
            
props props.split(" ");
        }

        var 
prop,
            
index 0,
            
length props.length;

        for ( ; 
index length index++ ) {
            
prop propsindex ];
            
tweenersprop ] = tweenersprop ] || [];
            
tweenersprop ].unshiftcallback );
        }
    },

    
prefilter: function( callbackprepend ) {
        if ( 
prepend ) {
            
animationPrefilters.unshiftcallback );
        } else {
            
animationPrefilters.pushcallback );
        }
    }
});

jQuery.speed = function( speedeasing, fn ) {
    var 
opt speed && typeof speed === "object" jQuery.extend( {}, speed ) : {
        
complete: fn || !fn && easing ||
            
jQuery.isFunctionspeed ) && speed,
        
durationspeed,
        
easing: fn && easing || easing && !jQuery.isFunctioneasing ) && easing
    
};

    
opt.duration jQuery.fx.off typeof opt.duration === "number" opt.duration :
        
opt.duration in jQuery.fx.speeds jQuery.fx.speedsopt.duration ] : jQuery.fx.speeds._default;

    
// Normalize opt.queue - true/undefined/null -> "fx"
    
if ( opt.queue == null || opt.queue === true ) {
        
opt.queue "fx";
    }

    
// Queueing
    
opt.old opt.complete;

    
opt.complete = function() {
        if ( 
jQuery.isFunctionopt.old ) ) {
            
opt.old.callthis );
        }

        if ( 
opt.queue ) {
            
jQuery.dequeuethisopt.queue );
        }
    };

    return 
opt;
};

jQuery.fn.extend({
    
fadeTo: function( speedtoeasingcallback ) {

        
// Show any hidden elements after setting opacity to 0
        
return this.filterisHidden ).css"opacity").show()

            
// Animate to the value specified
            
.end().animate({ opacityto }, speedeasingcallback );
    },
    
animate: function( propspeedeasingcallback ) {
        var empty = 
jQuery.isEmptyObjectprop ),
            
optall jQuery.speedspeedeasingcallback ),
            
doAnimation = function() {
                
// Operate on a copy of prop so per-property easing won't be lost
                
var anim AnimationthisjQuery.extend( {}, prop ), optall );

                
// Empty animations, or finishing resolves immediately
                
if ( empty || data_priv.getthis"finish" ) ) {
                    
anim.stoptrue );
                }
            };
            
doAnimation.finish doAnimation;

        return empty || 
optall.queue === false ?
            
this.eachdoAnimation ) :
            
this.queueoptall.queuedoAnimation );
    },
    
stop: function( typeclearQueuegotoEnd ) {
        var 
stopQueue = function( hooks ) {
            var 
stop hooks.stop;
            
delete hooks.stop;
            
stopgotoEnd );
        };

        if ( 
typeof type !== "string" ) {
            
gotoEnd clearQueue;
            
clearQueue type;
            
type undefined;
        }
        if ( 
clearQueue && type !== false ) {
            
this.queuetype || "fx", [] );
        }

        return 
this.each(function() {
            var 
dequeue true,
                
index type != null && type "queueHooks",
                
timers jQuery.timers,
                
data data_priv.getthis );

            if ( 
index ) {
                if ( 
dataindex ] && dataindex ].stop ) {
                    
stopQueuedataindex ] );
                }
            } else {
                for ( 
index in data ) {
                    if ( 
dataindex ] && dataindex ].stop && rrun.testindex ) ) {
                        
stopQueuedataindex ] );
                    }
                }
            }

            for ( 
index timers.lengthindex--; ) {
                if ( 
timersindex ].elem === this && (type == null || timersindex ].queue === type) ) {
                    
timersindex ].anim.stopgotoEnd );
                    
dequeue false;
                    
timers.spliceindex);
                }
            }

            
// Start the next in the queue if the last step wasn't forced.
            // Timers currently will call their complete callbacks, which
            // will dequeue but only if they were gotoEnd.
            
if ( dequeue || !gotoEnd ) {
                
jQuery.dequeuethistype );
            }
        });
    },
    
finish: function( type ) {
        if ( 
type !== false ) {
            
type type || "fx";
        }
        return 
this.each(function() {
            var 
index,
                
data data_priv.getthis ),
                
queue datatype "queue" ],
                
hooks datatype "queueHooks" ],
                
timers jQuery.timers,
                
length queue queue.length 0;

            
// Enable finishing flag on private data
            
data.finish true;

            
// Empty the queue first
            
jQuery.queuethistype, [] );

            if ( 
hooks && hooks.stop ) {
                
hooks.stop.callthistrue );
            }

            
// Look for any active animations, and finish them
            
for ( index timers.lengthindex--; ) {
                if ( 
timersindex ].elem === this && timersindex ].queue === type ) {
                    
timersindex ].anim.stoptrue );
                    
timers.spliceindex);
                }
            }

            
// Look for any animations in the old queue and finish them
            
for ( index 0index lengthindex++ ) {
                if ( 
queueindex ] && queueindex ].finish ) {
                    
queueindex ].finish.callthis );
                }
            }

            
// Turn off finishing flag
            
delete data.finish;
        });
    }
});

jQuery.each([ "toggle""show""hide" ], function( iname ) {
    var 
cssFn jQuery.fn[ name ];
    
jQuery.fn[ name ] = function( speedeasingcallback ) {
        return 
speed == null || typeof speed === "boolean" ?
            
cssFn.applythisarguments ) :
            
this.animategenFxnametrue ), speedeasingcallback );
    };
});

// Generate shortcuts for custom animations
jQuery.each({
    
slideDowngenFx("show"),
    
slideUpgenFx("hide"),
    
slideTogglegenFx("toggle"),
    
fadeIn: { opacity"show" },
    
fadeOut: { opacity"hide" },
    
fadeToggle: { opacity"toggle" }
}, function( 
nameprops ) {
    
jQuery.fn[ name ] = function( speedeasingcallback ) {
        return 
this.animatepropsspeedeasingcallback );
    };
});

jQuery.timers = [];
jQuery.fx.tick = function() {
    var 
timer,
        
0,
        
timers jQuery.timers;

    
fxNow jQuery.now();

    for ( ; 
timers.lengthi++ ) {
        
timer timers];
        
// Checks the timer has not already been removed
        
if ( !timer() && timers] === timer ) {
            
timers.splicei--, );
        }
    }

    if ( !
timers.length ) {
        
jQuery.fx.stop();
    }
    
fxNow undefined;
};

jQuery.fx.timer = function( timer ) {
    
jQuery.timers.pushtimer );
    if ( 
timer() ) {
        
jQuery.fx.start();
    } else {
        
jQuery.timers.pop();
    }
};

jQuery.fx.interval 13;

jQuery.fx.start = function() {
    if ( !
timerId ) {
        
timerId setIntervaljQuery.fx.tickjQuery.fx.interval );
    }
};

jQuery.fx.stop = function() {
    
clearIntervaltimerId );
    
timerId null;
};

jQuery.fx.speeds = {
    
slow600,
    
fast200,
    
// Default speed
    
_default400
};

return 
jQuery;
});
?>
Онлайн: 1
Реклама