bb04a8a2d4a1b0aa83c949fd538747174f76a928
[aai/esr-gui.git] /
1 "use strict";
2 var schedule;
3 var util = require("./util");
4 var noAsyncScheduler = function() {
5     throw new Error("No async scheduler available\u000a\u000a    See http://goo.gl/m3OTXk\u000a");
6 };
7 if (util.isNode && typeof MutationObserver === "undefined") {
8     var GlobalSetImmediate = global.setImmediate;
9     var ProcessNextTick = process.nextTick;
10     schedule = util.isRecentNode
11                 ? function(fn) { GlobalSetImmediate.call(global, fn); }
12                 : function(fn) { ProcessNextTick.call(process, fn); };
13 } else if ((typeof MutationObserver !== "undefined") &&
14           !(typeof window !== "undefined" &&
15             window.navigator &&
16             window.navigator.standalone)) {
17     schedule = function(fn) {
18         var div = document.createElement("div");
19         var observer = new MutationObserver(fn);
20         observer.observe(div, {attributes: true});
21         return function() { div.classList.toggle("foo"); };
22     };
23     schedule.isStatic = true;
24 } else if (typeof setImmediate !== "undefined") {
25     schedule = function (fn) {
26         setImmediate(fn);
27     };
28 } else if (typeof setTimeout !== "undefined") {
29     schedule = function (fn) {
30         setTimeout(fn, 0);
31     };
32 } else {
33     schedule = noAsyncScheduler;
34 }
35 module.exports = schedule;