src/cm/media/js/lib/yui/yui_3.10.3/build/yui-throttle/yui-throttle.js
author gibus
Tue, 11 Feb 2014 12:33:25 +0100
changeset 572 93383e54e042
parent 525 89ef5ed3c48b
permissions -rw-r--r--
Font size for piwik optout iframe.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('yui-throttle', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
Throttles a call to a method based on the time between calls. This method is attached
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
to the `Y` object and is <a href="../classes/YUI.html#method_throttle">documented there</a>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
    var fn = Y.throttle(function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
        counter++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
    for (i; i< 35000; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
        out++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        fn();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
@module yui
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
@submodule yui-throttle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
/*! Based on work by Simon Willison: http://gist.github.com/292562 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
 * Throttles a call to a method based on the time between calls.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
 * @method throttle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
 * @for YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
 * @param fn {function} The function call to throttle.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
 * @param ms {int} The number of milliseconds to throttle the method call.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
 * Can set globally with Y.config.throttleTime or by call. Passing a -1 will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
 * disable the throttle. Defaults to 150.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
 * @return {function} Returns a wrapped function that calls fn throttled.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
 * @since 3.1.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
Y.throttle = function(fn, ms) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    ms = (ms) ? ms : (Y.config.throttleTime || 150);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    if (ms === -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        return function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
            fn.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
    var last = Y.Lang.now();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    return function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        var now = Y.Lang.now();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        if (now - last > ms) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
            last = now;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
            fn.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
}, '3.10.3', {"requires": ["yui-base"]});