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.
		
		
		
		
		
			
		
			
				
					
					
						
							61 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							61 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))) {
							 | 
						|
								    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;
							 | 
						|
								
							 |