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