You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							2.1 KiB
						
					
					
				"use strict"; | 
						|
var util = require("./util"); | 
						|
var schedule; | 
						|
var noAsyncScheduler = function() { | 
						|
    throw new Error("No async scheduler available\u000a\u000a    See http://goo.gl/MqrFmX\u000a"); | 
						|
}; | 
						|
var NativePromise = util.getNativePromise(); | 
						|
if (util.isNode && typeof MutationObserver === "undefined") { | 
						|
    var GlobalSetImmediate = global.setImmediate; | 
						|
    var ProcessNextTick = process.nextTick; | 
						|
    schedule = util.isRecentNode | 
						|
                ? function(fn) { GlobalSetImmediate.call(global, fn); } | 
						|
                : function(fn) { ProcessNextTick.call(process, fn); }; | 
						|
} else if (typeof NativePromise === "function" && | 
						|
           typeof NativePromise.resolve === "function") { | 
						|
    var nativePromise = NativePromise.resolve(); | 
						|
    schedule = function(fn) { | 
						|
        nativePromise.then(fn); | 
						|
    }; | 
						|
} else if ((typeof MutationObserver !== "undefined") && | 
						|
          !(typeof window !== "undefined" && | 
						|
            window.navigator && | 
						|
            (window.navigator.standalone || window.cordova)) && | 
						|
          ("classList" in document.documentElement)) { | 
						|
    schedule = (function() { | 
						|
        var div = document.createElement("div"); | 
						|
        var opts = {attributes: true}; | 
						|
        var toggleScheduled = false; | 
						|
        var div2 = document.createElement("div"); | 
						|
        var o2 = new MutationObserver(function() { | 
						|
            div.classList.toggle("foo"); | 
						|
            toggleScheduled = false; | 
						|
        }); | 
						|
        o2.observe(div2, opts); | 
						|
 | 
						|
        var scheduleToggle = function() { | 
						|
            if (toggleScheduled) return; | 
						|
            toggleScheduled = true; | 
						|
            div2.classList.toggle("foo"); | 
						|
        }; | 
						|
 | 
						|
        return function schedule(fn) { | 
						|
            var o = new MutationObserver(function() { | 
						|
                o.disconnect(); | 
						|
                fn(); | 
						|
            }); | 
						|
            o.observe(div, opts); | 
						|
            scheduleToggle(); | 
						|
        }; | 
						|
    })(); | 
						|
} else if (typeof setImmediate !== "undefined") { | 
						|
    schedule = function (fn) { | 
						|
        setImmediate(fn); | 
						|
    }; | 
						|
} else if (typeof setTimeout !== "undefined") { | 
						|
    schedule = function (fn) { | 
						|
        setTimeout(fn, 0); | 
						|
    }; | 
						|
} else { | 
						|
    schedule = noAsyncScheduler; | 
						|
} | 
						|
module.exports = schedule;
 | 
						|
 |