Browse code

add LICENSE to theme.js

Bas Nijholt authored on 20/03/2019 10:12:50
Showing 1 changed files
... ...
@@ -1,3 +1,24 @@
1
+// The MIT License (MIT)
2
+
3
+// Copyright (c) 2013-2018 Dave Snider, Read the Docs, Inc. & contributors
4
+
5
+// Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+// this software and associated documentation files (the "Software"), to deal in
7
+// the Software without restriction, including without limitation the rights to
8
+// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+// the Software, and to permit persons to whom the Software is furnished to do so,
10
+// subject to the following conditions:
11
+
12
+// The above copyright notice and this permission notice shall be included in all
13
+// copies or substantial portions of the Software.
14
+
15
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
1 22
 // var jQuery = (typeof(window) != 'undefined') ? window.jQuery : require('jquery');
2 23
 
3 24
 // Sphinx theme nav state
Browse code

uncomment first line in theme.js

Bas Nijholt authored on 20/03/2019 00:00:23
Showing 1 changed files
... ...
@@ -1,4 +1,4 @@
1
-var jQuery = (typeof(window) != 'undefined') ? window.jQuery : require('jquery');
1
+// var jQuery = (typeof(window) != 'undefined') ? window.jQuery : require('jquery');
2 2
 
3 3
 // Sphinx theme nav state
4 4
 function ThemeNav () {
Browse code

add theme.js from GitHub sphinx_rtd_theme

CC from https://github.com/rtfd/sphinx_rtd_theme/blob/26d6108decf99a9c79adb08bc85ad610aad778b3/js/theme.js

Bas Nijholt authored on 19/03/2019 23:59:25
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,241 @@
1
+var jQuery = (typeof(window) != 'undefined') ? window.jQuery : require('jquery');
2
+
3
+// Sphinx theme nav state
4
+function ThemeNav () {
5
+
6
+    var nav = {
7
+        navBar: null,
8
+        win: null,
9
+        winScroll: false,
10
+        winResize: false,
11
+        linkScroll: false,
12
+        winPosition: 0,
13
+        winHeight: null,
14
+        docHeight: null,
15
+        isRunning: false
16
+    };
17
+
18
+    nav.enable = function (withStickyNav) {
19
+        var self = this;
20
+
21
+        // TODO this can likely be removed once the theme javascript is broken
22
+        // out from the RTD assets. This just ensures old projects that are
23
+        // calling `enable()` get the sticky menu on by default. All other cals
24
+        // to `enable` should include an argument for enabling the sticky menu.
25
+        if (typeof(withStickyNav) == 'undefined') {
26
+            withStickyNav = true;
27
+        }
28
+
29
+        if (self.isRunning) {
30
+            // Only allow enabling nav logic once
31
+            return;
32
+        }
33
+
34
+        self.isRunning = true;
35
+        jQuery(function ($) {
36
+            self.init($);
37
+
38
+            self.reset();
39
+            self.win.on('hashchange', self.reset);
40
+
41
+            if (withStickyNav) {
42
+                // Set scroll monitor
43
+                self.win.on('scroll', function () {
44
+                    if (!self.linkScroll) {
45
+                        if (!self.winScroll) {
46
+                            self.winScroll = true;
47
+                            requestAnimationFrame(function() { self.onScroll(); });
48
+                        }
49
+                    }
50
+                });
51
+            }
52
+
53
+            // Set resize monitor
54
+            self.win.on('resize', function () {
55
+                if (!self.winResize) {
56
+                    self.winResize = true;
57
+                    requestAnimationFrame(function() { self.onResize(); });
58
+                }
59
+            });
60
+
61
+            self.onResize();
62
+        });
63
+
64
+    };
65
+
66
+    // TODO remove this with a split in theme and Read the Docs JS logic as
67
+    // well, it's only here to support 0.3.0 installs of our theme.
68
+    nav.enableSticky = function() {
69
+        this.enable(true);
70
+    };
71
+
72
+    nav.init = function ($) {
73
+        var doc = $(document),
74
+            self = this;
75
+
76
+        this.navBar = $('div.wy-side-scroll:first');
77
+        this.win = $(window);
78
+
79
+        // Set up javascript UX bits
80
+        $(document)
81
+            // Shift nav in mobile when clicking the menu.
82
+            .on('click', "[data-toggle='wy-nav-top']", function() {
83
+                $("[data-toggle='wy-nav-shift']").toggleClass("shift");
84
+                $("[data-toggle='rst-versions']").toggleClass("shift");
85
+            })
86
+
87
+            // Nav menu link click operations
88
+            .on('click', ".wy-menu-vertical .current ul li a", function() {
89
+                var target = $(this);
90
+                // Close menu when you click a link.
91
+                $("[data-toggle='wy-nav-shift']").removeClass("shift");
92
+                $("[data-toggle='rst-versions']").toggleClass("shift");
93
+                // Handle dynamic display of l3 and l4 nav lists
94
+                self.toggleCurrent(target);
95
+                self.hashChange();
96
+            })
97
+            .on('click', "[data-toggle='rst-current-version']", function() {
98
+                $("[data-toggle='rst-versions']").toggleClass("shift-up");
99
+            })
100
+
101
+        // Make tables responsive
102
+        $("table.docutils:not(.field-list,.footnote,.citation)")
103
+            .wrap("<div class='wy-table-responsive'></div>");
104
+
105
+        // Add extra class to responsive tables that contain
106
+        // footnotes or citations so that we can target them for styling
107
+        $("table.docutils.footnote")
108
+            .wrap("<div class='wy-table-responsive footnote'></div>");
109
+        $("table.docutils.citation")
110
+            .wrap("<div class='wy-table-responsive citation'></div>");
111
+
112
+        // Add expand links to all parents of nested ul
113
+        $('.wy-menu-vertical ul').not('.simple').siblings('a').each(function () {
114
+            var link = $(this);
115
+                expand = $('<span class="toctree-expand"></span>');
116
+            expand.on('click', function (ev) {
117
+                self.toggleCurrent(link);
118
+                ev.stopPropagation();
119
+                return false;
120
+            });
121
+            link.prepend(expand);
122
+        });
123
+    };
124
+
125
+    nav.reset = function () {
126
+        // Get anchor from URL and open up nested nav
127
+        var anchor = encodeURI(window.location.hash) || '#';
128
+
129
+        try {
130
+            var vmenu = $('.wy-menu-vertical');
131
+            var link = vmenu.find('[href="' + anchor + '"]');
132
+            if (link.length === 0) {
133
+                // this link was not found in the sidebar.
134
+                // Find associated id element, then its closest section
135
+                // in the document and try with that one.
136
+                var id_elt = $('.document [id="' + anchor.substring(1) + '"]');
137
+                var closest_section = id_elt.closest('div.section');
138
+                link = vmenu.find('[href="#' + closest_section.attr("id") + '"]');
139
+                if (link.length === 0) {
140
+                    // still not found in the sidebar. fall back to main section
141
+                    link = vmenu.find('[href="#"]');
142
+                }
143
+            }
144
+            // If we found a matching link then reset current and re-apply
145
+            // otherwise retain the existing match
146
+            if (link.length > 0) {
147
+                $('.wy-menu-vertical .current').removeClass('current');
148
+                link.addClass('current');
149
+                link.closest('li.toctree-l1').addClass('current');
150
+                link.closest('li.toctree-l1').parent().addClass('current');
151
+                link.closest('li.toctree-l1').addClass('current');
152
+                link.closest('li.toctree-l2').addClass('current');
153
+                link.closest('li.toctree-l3').addClass('current');
154
+                link.closest('li.toctree-l4').addClass('current');
155
+                link[0].scrollIntoView();
156
+            }
157
+        }
158
+        catch (err) {
159
+            console.log("Error expanding nav for anchor", err);
160
+        }
161
+
162
+    };
163
+
164
+    nav.onScroll = function () {
165
+        this.winScroll = false;
166
+        var newWinPosition = this.win.scrollTop(),
167
+            winBottom = newWinPosition + this.winHeight,
168
+            navPosition = this.navBar.scrollTop(),
169
+            newNavPosition = navPosition + (newWinPosition - this.winPosition);
170
+        if (newWinPosition < 0 || winBottom > this.docHeight) {
171
+            return;
172
+        }
173
+        this.navBar.scrollTop(newNavPosition);
174
+        this.winPosition = newWinPosition;
175
+    };
176
+
177
+    nav.onResize = function () {
178
+        this.winResize = false;
179
+        this.winHeight = this.win.height();
180
+        this.docHeight = $(document).height();
181
+    };
182
+
183
+    nav.hashChange = function () {
184
+        this.linkScroll = true;
185
+        this.win.one('hashchange', function () {
186
+            this.linkScroll = false;
187
+        });
188
+    };
189
+
190
+    nav.toggleCurrent = function (elem) {
191
+        var parent_li = elem.closest('li');
192
+        parent_li.siblings('li.current').removeClass('current');
193
+        parent_li.siblings().find('li.current').removeClass('current');
194
+        parent_li.find('> ul li.current').removeClass('current');
195
+        parent_li.toggleClass('current');
196
+    }
197
+
198
+    return nav;
199
+};
200
+
201
+module.exports.ThemeNav = ThemeNav();
202
+
203
+if (typeof(window) != 'undefined') {
204
+    window.SphinxRtdTheme = {
205
+        Navigation: module.exports.ThemeNav,
206
+        // TODO remove this once static assets are split up between the theme
207
+        // and Read the Docs. For now, this patches 0.3.0 to be backwards
208
+        // compatible with a pre-0.3.0 layout.html
209
+        StickyNav: module.exports.ThemeNav,
210
+    };
211
+}
212
+
213
+
214
+// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
215
+// https://gist.github.com/paulirish/1579671
216
+// MIT license
217
+
218
+(function() {
219
+    var lastTime = 0;
220
+    var vendors = ['ms', 'moz', 'webkit', 'o'];
221
+    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
222
+        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
223
+        window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
224
+                                   || window[vendors[x]+'CancelRequestAnimationFrame'];
225
+    }
226
+
227
+    if (!window.requestAnimationFrame)
228
+        window.requestAnimationFrame = function(callback, element) {
229
+            var currTime = new Date().getTime();
230
+            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
231
+            var id = window.setTimeout(function() { callback(currTime + timeToCall); },
232
+              timeToCall);
233
+            lastTime = currTime + timeToCall;
234
+            return id;
235
+        };
236
+
237
+    if (!window.cancelAnimationFrame)
238
+        window.cancelAnimationFrame = function(id) {
239
+            clearTimeout(id);
240
+        };
241
+}());