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.
		
		
		
		
		
			
		
			
				
					63 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					63 lines
				
				2.1 KiB
			| 
											3 years ago
										 | "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; |