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;
							 |