diff -r 322d0feea350 -r 89ef5ed3c48b src/cm/media/js/lib/yui/yui_3.10.3/build/timers/timers.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui_3.10.3/build/timers/timers.js Tue Jul 16 14:29:46 2013 +0200 @@ -0,0 +1,101 @@ +/* +YUI 3.10.3 (build 2fb5187) +Copyright 2013 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +http://yuilibrary.com/license/ +*/ + +YUI.add('timers', function (Y, NAME) { + +/** + * Provides utilities for timed asynchronous callback execution. + * Y.soon is a setImmediate/process.nextTick/setTimeout wrapper. + * @module timers + * @author Steven Olmsted + */ + +var YGLOBAL = Y.config.global, + + /** + * Y.soon accepts a callback function. The callback function will be called + * once in a future turn of the JavaScript event loop. If the function + * requires a specific execution context or arguments, wrap it with Y.bind. + * Y.soon returns an object with a cancel method. If the cancel method is + * called before the callback function, the callback function won't be + * called. + * @method soon + * @for YUI + * @param {Function} callbackFunction + * @return {Object} An object with a cancel method. If the cancel method is + * called before the callback function, the callback function won't be + * called. + */ + soon = function (callbackFunction) { + var canceled; + + soon._asynchronizer(function () { + // Some asynchronizers may provide their own cancellation + // methods such as clearImmediate or clearTimeout but some + // asynchronizers do not. For simplicity, cancellation is + // entirely handled here rather than wrapping the other methods. + // All asynchronizers are expected to always call this anonymous + // function. + if (!canceled) { + callbackFunction(); + } + }); + + return { + cancel: function () { + canceled = 1; + } + }; + }; + +/** + * The asynchronizer is the internal mechanism which will call a function + * asynchronously. This property is exposed as a convenient way to define a + * different asynchronizer implementation without having to rewrite the + * entire Y.soon interface. + * @method _asynchronizer + * @for soon + * @param {Function} callbackFunction The function to call asynchronously. + * @protected + */ + +/** + * Since Y.soon is likely to have many differing asynchronizer + * implementations, this property should be set to identify which + * implementation is in use. + * @property _impl + * @protected + * @type String + */ + +// Check for a native or already polyfilled implementation of setImmediate. +if ('setImmediate' in YGLOBAL) { + soon._asynchronizer = function (callbackFunction) { + setImmediate(callbackFunction); + }; + soon._impl = 'setImmediate'; +} + +// Check for process and process.nextTick +else if (('process' in YGLOBAL) && ('nextTick' in process)) { + soon._asynchronizer = process.nextTick; + soon._impl = 'nextTick'; +} + +// The most widely supported asynchronizer is setTimeout so we use that as +// the fallback. +else { + soon._asynchronizer = function (callbackFunction) { + setTimeout(callbackFunction, 0); + }; + soon._impl = 'setTimeout'; +} + +Y.soon = soon; + + +}, '3.10.3', {"requires": ["yui-base"]});