4831: Rearrange some files.
[arvados.git] / apps / backstage / mithril-jquery / index.js
1 module.exports = mJquery;
2
3 var m = require('mithril');
4 var global = (function() { return this })();
5 var usingWin = global;
6 var ready;
7
8 mJquery.ready = function() {
9     if (ready) {
10         // Already done, or underway.
11     } else if (typeof window !== 'undefined' && global === window) {
12         ready = m.deferred();
13         ready.resolve(require('jquery'));
14     } else {
15         ready = m.deferred();
16         require('jsdom').env({
17             html: '<!doctype html><html></html>',
18             scripts: [
19                 '../jquery/dist/jquery.js',
20                 '../mithril/mithril.js',
21             ],
22             done: function(err, win) {
23                 if (err) {
24                     console.log("jsdom setup failed: "+JSON.stringify(err));
25                     ready.reject(err);
26                 } else {
27                     usingWin = win;
28                     ready.resolve(win.jQuery);
29                 }
30             }
31         });
32     }
33     return ready.promise;
34 }
35
36 function mJquery(selector, cell) {
37     var $div = ready.promise()('<div></div>');
38     (usingWin.m || m).render($div[0], cell);
39     return ready.promise()(selector, $div[0]);
40 }