diff --git a/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/config.yaml b/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/config.yaml new file mode 100644 index 0000000..bf11984 --- /dev/null +++ b/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/config.yaml @@ -0,0 +1,7 @@ +Type: IPython Notebook Extension +Name: ScrollDown +Description: Scroll outputs down automatically +Link: readme.md +Icon: icon.png +Main: main.js +Compatibility: 4.x diff --git a/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/icon.png b/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/icon.png new file mode 100644 index 0000000..5dd3651 Binary files /dev/null and b/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/icon.png differ diff --git a/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/main.js b/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/main.js new file mode 100644 index 0000000..2f463c0 --- /dev/null +++ b/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/main.js @@ -0,0 +1,63 @@ +define([ + 'base/js/namespace', + 'services/config', + 'base/js/utils', + 'jquery' +], function (Jupyter, + configmod, + utils, + $) { + 'use strict'; + + var base_url = utils.get_body_data('baseUrl'); + var config = new configmod.ConfigSection('notebook', {base_url: base_url}); + + var params = { + scrollDownIsEnabled: false + }; + + config.loaded.then(function () { + $.extend(true, params, config.data); + setButtonColor(); + }); + + function toggleScrollDown() { + params.scrollDownIsEnabled = !params.scrollDownIsEnabled; + config.update(params); + setButtonColor(); + } + + function setButtonColor() { + var bg = params.scrollDownIsEnabled ? "darkgray" : ""; + $("#toggle_scroll_down").css("background-color", bg); + } + + function load_extension() { + Jupyter.toolbar.add_buttons_group([ + { + id: 'toggle_scroll_down', + label: 'toggle automatic scrolling down', + icon: 'fa-angle-double-down ', + callback: toggleScrollDown + } + ]); + + console.log("[ScrollDown] is loaded"); + + $(".output").on("resize", function () { + if (!params.scrollDownIsEnabled) return; + var output = $(this); + setTimeout(function () { + output.scrollTop(output.prop("scrollHeight")); + console.log("height: " + output.prop("scrollHeight")); + }, 0); + }); + + config.load(); + } + + return { + load_jupyter_extension: load_extension, + load_ipython_extension: load_extension + } +}); \ No newline at end of file diff --git a/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/readme.md b/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/readme.md new file mode 100644 index 0000000..e293201 --- /dev/null +++ b/src/jupyter_contrib_nbextensions/nbextensions/scroll_down/readme.md @@ -0,0 +1,3 @@ +# Description + +When enabled, scroll cells' outputs down automatically.