source: frontend/node_modules/bluebird/js/release/schedule.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 13 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.1 KB
Line 
1"use strict";
2var util = require("./util");
3var schedule;
4var noAsyncScheduler = function() {
5 throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a");
6};
7var NativePromise = util.getNativePromise();
8if (util.isNode && typeof MutationObserver === "undefined") {
9 var GlobalSetImmediate = global.setImmediate;
10 var ProcessNextTick = process.nextTick;
11 schedule = util.isRecentNode
12 ? function(fn) { GlobalSetImmediate.call(global, fn); }
13 : function(fn) { ProcessNextTick.call(process, fn); };
14} else if (typeof NativePromise === "function" &&
15 typeof NativePromise.resolve === "function") {
16 var nativePromise = NativePromise.resolve();
17 schedule = function(fn) {
18 nativePromise.then(fn);
19 };
20} else if ((typeof MutationObserver !== "undefined") &&
21 !(typeof window !== "undefined" &&
22 window.navigator &&
23 (window.navigator.standalone || window.cordova)) &&
24 ("classList" in document.documentElement)) {
25 schedule = (function() {
26 var div = document.createElement("div");
27 var opts = {attributes: true};
28 var toggleScheduled = false;
29 var div2 = document.createElement("div");
30 var o2 = new MutationObserver(function() {
31 div.classList.toggle("foo");
32 toggleScheduled = false;
33 });
34 o2.observe(div2, opts);
35
36 var scheduleToggle = function() {
37 if (toggleScheduled) return;
38 toggleScheduled = true;
39 div2.classList.toggle("foo");
40 };
41
42 return function schedule(fn) {
43 var o = new MutationObserver(function() {
44 o.disconnect();
45 fn();
46 });
47 o.observe(div, opts);
48 scheduleToggle();
49 };
50 })();
51} else if (typeof setImmediate !== "undefined") {
52 schedule = function (fn) {
53 setImmediate(fn);
54 };
55} else if (typeof setTimeout !== "undefined") {
56 schedule = function (fn) {
57 setTimeout(fn, 0);
58 };
59} else {
60 schedule = noAsyncScheduler;
61}
62module.exports = schedule;
Note: See TracBrowser for help on using the repository browser.