diff --git a/.jshintrc b/.jshintrc index c1f2978bc..ee1573101 100644 --- a/.jshintrc +++ b/.jshintrc @@ -1,3 +1,6 @@ { - "node": true + "browserify": true, + "node": true, + "jquery": true, + "predef": [ "requirejs", "define", "Promise"] } diff --git a/notebook/static-src/auth/js/loginwidget.js b/notebook/static-src/auth/js/loginwidget.js index 093af451e..a64ac9233 100644 --- a/notebook/static-src/auth/js/loginwidget.js +++ b/notebook/static-src/auth/js/loginwidget.js @@ -4,7 +4,6 @@ "use strict"; var utils = require('base/js/utils'); - var $ = require('jquery'); var LoginWidget = function (selector, options) { options = options || {}; diff --git a/notebook/static-src/base/js/dialog.js b/notebook/static-src/base/js/dialog.js index cf00bf0bf..d99e86c23 100644 --- a/notebook/static-src/base/js/dialog.js +++ b/notebook/static-src/base/js/dialog.js @@ -2,9 +2,7 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - - var $ = require('jquery'); - + /** * A wrapper around bootstrap modal for easier use * Pass it an option dictionary with the following properties: @@ -35,7 +33,6 @@ * **/ var modal = function (options) { - var modal = $("
") .addClass("modal") .addClass("fade") diff --git a/notebook/static-src/base/js/events.js b/notebook/static-src/base/js/events.js index 23b9294ab..5ff73aecc 100644 --- a/notebook/static-src/base/js/events.js +++ b/notebook/static-src/base/js/events.js @@ -11,7 +11,6 @@ "use strict"; if (!window.jupyterEvents) { - var $ = require('jquery'); var Events = function () {}; window.jupyterEvents = $([new Events()]); } diff --git a/notebook/static-src/base/js/globals.js b/notebook/static-src/base/js/globals.js new file mode 100644 index 000000000..3bbe925ed --- /dev/null +++ b/notebook/static-src/base/js/globals.js @@ -0,0 +1,37 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +"use strict"; + +/** + * jquery, jquery-ui, and bootstrap all really on weird window level logic. + * This module handles the global loading of those tools. + */ +module.exports = new Promise(function(resolve, reject) { + requirejs(['jquery'], function($) { + window.$ = window.jQuery = $; + console.log('jQuery loaded and available in global namespace'); + + requirejs(['jqueryui', 'bootstrap'], function() { + if ($.prototype.modal) { + console.log('bootstrap loaded and injected into jQuery\'s namespace'); + } else { + reject(new Error('bootstrap not injected into jQuery prototype')); + } + + if ($.prototype.draggable) { + console.log('jQueryUI loaded and injected into jQuery\'s namespace'); + } else { + reject(new Error('jQueryUI not injected into jQuery prototype')); + } + + resolve(); + }, function(err) { + console.error('could not load jqueryui and/or bootstrap'); + reject(err); + }); + }, function(err) { + console.error('could not load jquery'); + reject(err); + }); +}); \ No newline at end of file diff --git a/notebook/static-src/base/js/keyboard.js b/notebook/static-src/base/js/keyboard.js index b8adf90f6..44d74849e 100644 --- a/notebook/static-src/base/js/keyboard.js +++ b/notebook/static-src/base/js/keyboard.js @@ -12,7 +12,6 @@ var utils = require('base/js/utils'); var _ = require('underscore'); - var $ = require('jquery'); /** diff --git a/notebook/static-src/base/js/notificationarea.js b/notebook/static-src/base/js/notificationarea.js index c69fa3b82..5e93cc28f 100644 --- a/notebook/static-src/base/js/notificationarea.js +++ b/notebook/static-src/base/js/notificationarea.js @@ -4,7 +4,6 @@ "use strict"; var notificationwidget = require('base/js/notificationwidget'); - var $ = require('jquery'); // store reference to the NotificationWidget class var NotificationWidget = notificationwidget.NotificationWidget; diff --git a/notebook/static-src/base/js/notificationwidget.js b/notebook/static-src/base/js/notificationwidget.js index 8c42462b4..c69a84572 100644 --- a/notebook/static-src/base/js/notificationwidget.js +++ b/notebook/static-src/base/js/notificationwidget.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); /** * Construct a NotificationWidget object. diff --git a/notebook/static-src/base/js/page.js b/notebook/static-src/base/js/page.js index df3ef1794..538373ba4 100644 --- a/notebook/static-src/base/js/page.js +++ b/notebook/static-src/base/js/page.js @@ -4,7 +4,6 @@ "use strict"; var events = require('base/js/events'); - var $ = require('jquery'); var Page = function () { this.bind_events(); diff --git a/notebook/static-src/base/js/security.js b/notebook/static-src/base/js/security.js index 471d8df03..4b8d82f9a 100644 --- a/notebook/static-src/base/js/security.js +++ b/notebook/static-src/base/js/security.js @@ -3,7 +3,6 @@ "use strict"; - var $ = require('jquery'); var caja = require('caja'); var noop = function (x) { return x; }; diff --git a/notebook/static-src/base/js/utils.js b/notebook/static-src/base/js/utils.js index 08ff27080..413963cbd 100644 --- a/notebook/static-src/base/js/utils.js +++ b/notebook/static-src/base/js/utils.js @@ -3,7 +3,6 @@ "use strict"; - var $ = require('jquery'); var moment = require('moment'); /** diff --git a/notebook/static-src/edit/js/editor.js b/notebook/static-src/edit/js/editor.js index e65af3441..dbdddd880 100644 --- a/notebook/static-src/edit/js/editor.js +++ b/notebook/static-src/edit/js/editor.js @@ -3,7 +3,6 @@ "use strict"; - var $ = require('jquery'); var CodeMirror = require('codemirror/lib/codemirror'); var utils = require('base/js/utils'); require('codemirror/mode/meta'); diff --git a/notebook/static-src/edit/js/main.js b/notebook/static-src/edit/js/main.js index e92bdc42a..cd52226cf 100644 --- a/notebook/static-src/edit/js/main.js +++ b/notebook/static-src/edit/js/main.js @@ -2,7 +2,8 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); +require('base/js/globals').then(function() { + var IPython = require('base/js/namespace'); var utils = require('base/js/utils'); var page = require('base/js/page'); @@ -14,9 +15,7 @@ var notificationarea = require('edit/js/notificationarea'); // Contents must be loaded at runtime. -// jQuery must also be loaded at runtime and available globally -// in order for bootstrap to work... -requirejs(['contents', 'bootstrap', 'custom/custom'], function(contents_service) { +requirejs(['contents', 'custom/custom'], function(contents_service) { page = new page.Page(); @@ -85,3 +84,8 @@ requirejs(['contents', 'bootstrap', 'custom/custom'], function(contents_service) // On document ready, resize codemirror. $(document).ready(_handle_resize); }); + +}).catch(function(err) { + console.error('Could not load globals', err); +}); + \ No newline at end of file diff --git a/notebook/static-src/edit/js/menubar.js b/notebook/static-src/edit/js/menubar.js index 43ab8474b..656fd4fd5 100644 --- a/notebook/static-src/edit/js/menubar.js +++ b/notebook/static-src/edit/js/menubar.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var IPython = require('base/js/namespace'); var utils = require('base/js/utils'); var dialog = require('base/js/dialog'); diff --git a/notebook/static-src/edit/js/savewidget.js b/notebook/static-src/edit/js/savewidget.js index eb3da2cf2..9ad938ed8 100644 --- a/notebook/static-src/edit/js/savewidget.js +++ b/notebook/static-src/edit/js/savewidget.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var utils = require('base/js/utils'); var dialog = require('base/js/dialog'); var keyboard = require('base/js/keyboard'); diff --git a/notebook/static-src/notebook/js/about.js b/notebook/static-src/notebook/js/about.js index 6cbbb1f48..fd4274ce7 100644 --- a/notebook/static-src/notebook/js/about.js +++ b/notebook/static-src/notebook/js/about.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. 'use strict'; - var $ = require('jquery'); var dialog = require('base/js/dialog'); var _ = require('underscore'); var IPython = require('base/js/namespace'); diff --git a/notebook/static-src/notebook/js/cell.js b/notebook/static-src/notebook/js/cell.js index 6a46b141a..7ec0010aa 100644 --- a/notebook/static-src/notebook/js/cell.js +++ b/notebook/static-src/notebook/js/cell.js @@ -10,7 +10,6 @@ */ "use strict"; - var $ = require('jquery'); var utils = require('base/js/utils'); var CodeMirror = require('codemirror/lib/codemirror'); var cm_match = require('codemirror/addon/edit/matchbrackets'); diff --git a/notebook/static-src/notebook/js/celltoolbar.js b/notebook/static-src/notebook/js/celltoolbar.js index 76d6736fa..19819de3c 100644 --- a/notebook/static-src/notebook/js/celltoolbar.js +++ b/notebook/static-src/notebook/js/celltoolbar.js @@ -3,7 +3,6 @@ "use strict"; var IPython = require('base/js/namespace'); - var $ = require('jquery'); var events = require('base/js/events'); var CellToolbar = function (options) { diff --git a/notebook/static-src/notebook/js/celltoolbarpresets/default.js b/notebook/static-src/notebook/js/celltoolbarpresets/default.js index d1c181c8f..c3386ab4f 100644 --- a/notebook/static-src/notebook/js/celltoolbarpresets/default.js +++ b/notebook/static-src/notebook/js/celltoolbarpresets/default.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var celltoolbar = require('notebook/js/celltoolbar'); var dialog = require('base/js/dialog'); diff --git a/notebook/static-src/notebook/js/celltoolbarpresets/example.js b/notebook/static-src/notebook/js/celltoolbarpresets/example.js index b9550cfc6..24bb770d9 100644 --- a/notebook/static-src/notebook/js/celltoolbarpresets/example.js +++ b/notebook/static-src/notebook/js/celltoolbarpresets/example.js @@ -9,7 +9,6 @@ // $.getScript('/static/js/celltoolbarpresets/example.js'); // ``` "use strict"; - var $ = require('jquery'); var celltoolbar = require('notebook/js/celltoolbar'); var CellToolbar = celltoolbar.CellToolbar; diff --git a/notebook/static-src/notebook/js/celltoolbarpresets/rawcell.js b/notebook/static-src/notebook/js/celltoolbarpresets/rawcell.js index 0c03782b2..9abe6b9e5 100644 --- a/notebook/static-src/notebook/js/celltoolbarpresets/rawcell.js +++ b/notebook/static-src/notebook/js/celltoolbarpresets/rawcell.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var celltoolbar = require('notebook/js/celltoolbar'); var dialog = require('base/js/dialog'); var keyboard = require('base/js/keyboard'); diff --git a/notebook/static-src/notebook/js/celltoolbarpresets/slideshow.js b/notebook/static-src/notebook/js/celltoolbarpresets/slideshow.js index 3272cc763..ff84cd1a0 100644 --- a/notebook/static-src/notebook/js/celltoolbarpresets/slideshow.js +++ b/notebook/static-src/notebook/js/celltoolbarpresets/slideshow.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var celltoolbar = require('notebook/js/celltoolbar'); var CellToolbar = celltoolbar.CellToolbar; diff --git a/notebook/static-src/notebook/js/codecell.js b/notebook/static-src/notebook/js/codecell.js index 20ae3dd6c..61bb5d611 100644 --- a/notebook/static-src/notebook/js/codecell.js +++ b/notebook/static-src/notebook/js/codecell.js @@ -10,7 +10,6 @@ "use strict"; var IPython = require('base/js/namespace'); - var $ = require('jquery'); var utils = require('base/js/utils'); var keyboard = require('base/js/keyboard'); var configmod = require('services/config'); diff --git a/notebook/static-src/notebook/js/completer.js b/notebook/static-src/notebook/js/completer.js index 146962b65..9dbcadf20 100644 --- a/notebook/static-src/notebook/js/completer.js +++ b/notebook/static-src/notebook/js/completer.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var utils = require('base/js/utils'); var keyboard = require('base/js/keyboard'); var CodeMirror = require('codemirror/lib/codemirror'); diff --git a/notebook/static-src/notebook/js/kernelselector.js b/notebook/static-src/notebook/js/kernelselector.js index d65822277..ce38e3594 100644 --- a/notebook/static-src/notebook/js/kernelselector.js +++ b/notebook/static-src/notebook/js/kernelselector.js @@ -1,7 +1,6 @@ // Copyright (c) Jupyter Development Team. // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var IPython = require('base/js/namespace'); var dialog = require('base/js/dialog'); var utils = require('base/js/utils'); diff --git a/notebook/static-src/notebook/js/keyboardmanager.js b/notebook/static-src/notebook/js/keyboardmanager.js index f5a87f8b6..8156356ac 100644 --- a/notebook/static-src/notebook/js/keyboardmanager.js +++ b/notebook/static-src/notebook/js/keyboardmanager.js @@ -8,7 +8,6 @@ * @class KeyboardManager */ "use strict"; - var $ = require('jquery'); var utils = require('base/js/utils'); var keyboard = require('base/js/keyboard'); diff --git a/notebook/static-src/notebook/js/main.js b/notebook/static-src/notebook/js/main.js index 8aa997fe1..829dca503 100644 --- a/notebook/static-src/notebook/js/main.js +++ b/notebook/static-src/notebook/js/main.js @@ -3,11 +3,9 @@ "use strict"; // Contents must be loaded at runtime. -// jQuery must also be loaded at runtime and available globally -// in order for bootstrap to work... -requirejs(['contents', 'jquery'], function(contents_service) { +requirejs(['contents'], function(contents_service) { + require('base/js/globals').then(function() { var IPython = require('base/js/namespace'); - var $ = require('jquery'); var notebook = require('notebook/js/notebook'); var configmod = require('services/config'); var utils = require('base/js/utils'); @@ -143,4 +141,7 @@ requirejs(['contents', 'jquery'], function(contents_service) { utils.load_extensions_from_config(config_section); utils.load_extensions_from_config(common_config); notebook.load_notebook(common_options.notebook_path); + }).catch(function(err) { + console.error('Could not load globals', err); + }); }); diff --git a/notebook/static-src/notebook/js/maintoolbar.js b/notebook/static-src/notebook/js/maintoolbar.js index 48f9fa15f..d2bc4a75c 100644 --- a/notebook/static-src/notebook/js/maintoolbar.js +++ b/notebook/static-src/notebook/js/maintoolbar.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var toolbar = require('./toolbar'); var celltoolbar = require('./celltoolbar'); var MainToolBar = function (selector, options) { diff --git a/notebook/static-src/notebook/js/mathjaxutils.js b/notebook/static-src/notebook/js/mathjaxutils.js index 1262b4a8d..6b842146f 100644 --- a/notebook/static-src/notebook/js/mathjaxutils.js +++ b/notebook/static-src/notebook/js/mathjaxutils.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var utils = require('base/js/utils'); var dialog = require('base/js/dialog'); diff --git a/notebook/static-src/notebook/js/menubar.js b/notebook/static-src/notebook/js/menubar.js index 50ad555ef..f66b7d318 100644 --- a/notebook/static-src/notebook/js/menubar.js +++ b/notebook/static-src/notebook/js/menubar.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var IPython = require('base/js/namespace'); var dialog = require('base/js/dialog'); var utils = require('base/js/utils'); diff --git a/notebook/static-src/notebook/js/notebook.js b/notebook/static-src/notebook/js/notebook.js index 235a708b0..1ed0bc932 100644 --- a/notebook/static-src/notebook/js/notebook.js +++ b/notebook/static-src/notebook/js/notebook.js @@ -7,7 +7,6 @@ "use strict"; var IPython = require('base/js/namespace'); - var $ = require('jquery'); var utils = require('base/js/utils'); var dialog = require('base/js/dialog'); var cellmod = require('notebook/js/cell'); diff --git a/notebook/static-src/notebook/js/notificationarea.js b/notebook/static-src/notebook/js/notificationarea.js index 41bb31201..a3f5c2802 100644 --- a/notebook/static-src/notebook/js/notificationarea.js +++ b/notebook/static-src/notebook/js/notificationarea.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var utils = require('base/js/utils'); var dialog = require('base/js/dialog'); var notificationarea = require('base/js/notificationarea'); diff --git a/notebook/static-src/notebook/js/outputarea.js b/notebook/static-src/notebook/js/outputarea.js index 915b90093..f0a10e3af 100644 --- a/notebook/static-src/notebook/js/outputarea.js +++ b/notebook/static-src/notebook/js/outputarea.js @@ -2,8 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); - require('jqueryui'); var utils = require('base/js/utils'); var security = require('base/js/security'); var keyboard = require('base/js/keyboard'); diff --git a/notebook/static-src/notebook/js/pager.js b/notebook/static-src/notebook/js/pager.js index 4c3d7f208..8bc20afe7 100644 --- a/notebook/static-src/notebook/js/pager.js +++ b/notebook/static-src/notebook/js/pager.js @@ -2,8 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); - require('jqueryui'); var utils = require('base/js/utils'); var Pager = function (pager_selector, options) { diff --git a/notebook/static-src/notebook/js/quickhelp.js b/notebook/static-src/notebook/js/quickhelp.js index ba89376e6..3af58b6a5 100644 --- a/notebook/static-src/notebook/js/quickhelp.js +++ b/notebook/static-src/notebook/js/quickhelp.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var utils = require('base/js/utils'); var dialog = require('base/js/dialog'); diff --git a/notebook/static-src/notebook/js/savewidget.js b/notebook/static-src/notebook/js/savewidget.js index e5ea54d42..dff5aef46 100644 --- a/notebook/static-src/notebook/js/savewidget.js +++ b/notebook/static-src/notebook/js/savewidget.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var utils = require('base/js/utils'); var dialog = require('base/js/dialog'); var keyboard = require('base/js/keyboard'); diff --git a/notebook/static-src/notebook/js/scrollmanager.js b/notebook/static-src/notebook/js/scrollmanager.js index a8c80baf2..7cacb0dbb 100644 --- a/notebook/static-src/notebook/js/scrollmanager.js +++ b/notebook/static-src/notebook/js/scrollmanager.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var ScrollManager = function(notebook, options) { /** * Public constructor. diff --git a/notebook/static-src/notebook/js/textcell.js b/notebook/static-src/notebook/js/textcell.js index 19ece9b27..53a8cd114 100644 --- a/notebook/static-src/notebook/js/textcell.js +++ b/notebook/static-src/notebook/js/textcell.js @@ -3,7 +3,6 @@ "use strict"; var utils = require('base/js/utils'); - var $ = require('jquery'); var cell = require('notebook/js/cell'); var security = require('base/js/security'); var configmod = require('services/config'); diff --git a/notebook/static-src/notebook/js/toolbar.js b/notebook/static-src/notebook/js/toolbar.js index d156d33c3..ef3c30c66 100644 --- a/notebook/static-src/notebook/js/toolbar.js +++ b/notebook/static-src/notebook/js/toolbar.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); /** * A generic toolbar on which one can add button diff --git a/notebook/static-src/notebook/js/tooltip.js b/notebook/static-src/notebook/js/tooltip.js index e2c39694a..7eb7a61cb 100644 --- a/notebook/static-src/notebook/js/tooltip.js +++ b/notebook/static-src/notebook/js/tooltip.js @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); var utils = require('base/js/utils'); // tooltip constructor diff --git a/notebook/static-src/notebook/js/tour.js b/notebook/static-src/notebook/js/tour.js index 59129a2c9..7466b8a32 100644 --- a/notebook/static-src/notebook/js/tour.js +++ b/notebook/static-src/notebook/js/tour.js @@ -2,9 +2,6 @@ // Distributed under the terms of the Modified BSD License. "use strict"; - var $ = require('jquery'); - - var tour_style = "