aboutsummaryrefslogtreecommitdiff
path: root/docs/_static
diff options
context:
space:
mode:
Diffstat (limited to 'docs/_static')
-rw-r--r--docs/_static/custom.js63
-rw-r--r--docs/_static/scorer.js71
2 files changed, 71 insertions, 63 deletions
diff --git a/docs/_static/custom.js b/docs/_static/custom.js
index 7564d72b..b8bac63b 100644
--- a/docs/_static/custom.js
+++ b/docs/_static/custom.js
@@ -1,34 +1,11 @@
-$(document).ready(function () {
- var sections = $('div.section');
- var activeLink = null;
- var bottomHeightThreshold = $(document).height() - 30;
-
- $(window).scroll(function (event) {
- var distanceFromTop = $(this).scrollTop();
- var currentSection = null;
-
- if(distanceFromTop + window.innerHeight > bottomHeightThreshold) {
- currentSection = $(sections[sections.length - 1]);
- }
- else {
- sections.each(function () {
- var section = $(this);
- if (section.offset().top - 1 < distanceFromTop) {
- currentSection = section;
- }
- });
- }
-
- if (activeLink) {
- activeLink.parent().removeClass('active');
- }
-
- if (currentSection) {
- activeLink = $('.sphinxsidebar a[href="#' + currentSection.attr('id') + '"]');
- activeLink.parent().addClass('active');
- }
+'use-strict';
- });
+let activeLink = null;
+let bottomHeightThreshold, sections;
+
+document.addEventListener('DOMContentLoaded', () => {
+ bottomHeightThreshold = document.documentElement.scrollHeight - 30;
+ sections = document.querySelectorAll('div.section');
const tables = document.querySelectorAll('.py-attribute-table[data-move-to-id]');
tables.forEach(table => {
@@ -38,3 +15,29 @@ $(document).ready(function () {
parent.insertBefore(table, element.nextSibling);
});
});
+
+window.addEventListener('scroll', () => {
+ let currentSection = null;
+
+ if (window.scrollY + window.innerHeight > bottomHeightThreshold) {
+ currentSection = sections[sections.length - 1];
+ }
+ else {
+ sections.forEach(section => {
+ let rect = section.getBoundingClientRect();
+ if (rect.top + document.body.scrollTop - 1 < window.scrollY) {
+ currentSection = section;
+ }
+ });
+ }
+
+ if (activeLink) {
+ activeLink.parentElement.classList.remove('active');
+ }
+
+ if (currentSection) {
+ activeLink = document.querySelector(`.sphinxsidebar a[href="#${currentSection.id}"]`);
+ activeLink.parentElement.classList.add('active');
+ }
+
+}); \ No newline at end of file
diff --git a/docs/_static/scorer.js b/docs/_static/scorer.js
index 7e00f1d9..f9f95cfe 100644
--- a/docs/_static/scorer.js
+++ b/docs/_static/scorer.js
@@ -1,17 +1,20 @@
-var _queryBeingDone = null;
-var _pattern = null;
-var _escapedRegex = /[-\/\\^$*+?.()|[\]{}]/g;
+'use-strict';
+
+let queryBeingDone = null;
+let pattern = null;
+
+const escapedRegex = /[-\/\\^$*+?.()|[\]{}]/g;
function escapeRegex(e) {
- return e.replace(_escapedRegex, '\\$&');
+ return e.replace(escapedRegex, '\\$&');
}
// for some reason Sphinx shows some entries twice
// if something has been scored already I'd rather sort it to the bottom
-var _beenScored = new Set();
+const beenScored = new Set();
function __score(haystack, regex) {
let match = regex.exec(haystack);
- if(match == null) {
+ if (match == null) {
return Number.MAX_VALUE;
}
let subLength = match[0].length;
@@ -24,38 +27,41 @@ function __cleanNamespaces(query) {
return query.replace(/(discord\.(ext\.)?)?(.+)/, '$3');
}
-var Scorer = {
+Scorer = {
+
// Implement the following function to further tweak the score for each result
// The function takes a result array [filename, title, anchor, descr, score]
// and returns the new score.
+ score: (result) => {
+ // only inflate the score of things that are actual API reference things
+ const [, title, , , score] = result;
- score: function(result) {
- // only inflate the score of things that are actual API reference things
- if(_pattern !== null && result[1].startsWith('discord.')) {
- let _score = __score(result[1], _pattern);
- if(_score === Number.MAX_VALUE) {
- return result[4];
- }
- if(_beenScored.has(result[1])) {
- return 0;
+ if (pattern !== null && title.startsWith('discord.')) {
+ let _score = __score(title, pattern);
+ if (_score === Number.MAX_VALUE) {
+ return score;
+ }
+ if (beenScored.has(title)) {
+ return 0;
+ }
+ beenScored.add(title);
+ let newScore = 100 + queryBeingDone.length - _score;
+ // console.log(`${title}: ${score} -> ${newScore} (${_score})`);
+ return newScore;
}
- _beenScored.add(result[1]);
- let newScore = 100 + _queryBeingDone.length - _score;
- // console.log(`${result[1]}: ${result[4]} -> ${newScore} (${_score})`);
- return newScore;
- }
- return result[4];
+ return score;
},
-
// query matches the full name of an object
objNameMatch: 15,
// or matches in the last dotted part of the object name
objPartialMatch: 11,
// Additive scores depending on the priority of the object
- objPrio: {0: 15, // used to be importantResults
- 1: 7, // used to be objectResults
- 2: -5}, // used to be unimportantResults
+ objPrio: {
+ 0: 15, // used to be importantResults
+ 1: 7, // used to be objectResults
+ 2: -5 // used to be unimportantResults
+ },
// Used when the priority is not in the mapping.
objPrioDefault: 0,
@@ -67,12 +73,11 @@ var Scorer = {
partialTerm: 2
};
-
-$(document).ready(function() {
- let params = $.getQueryParameters();
- if(params.q) {
- _queryBeingDone = params.q[0];
- let pattern = Array.from(_queryBeingDone).map(escapeRegex).join('.*?');
- _pattern = new RegExp(pattern, 'i');
+document.addEventListener('DOMContentLoaded', () => {
+ const params = new URLSearchParams(window.location.search);
+ queryBeingDone = params.get('q');
+ if (queryBeingDone) {
+ let pattern = Array.from(queryBeingDone).map(escapeRegex).join('.*?');
+ pattern = new RegExp(pattern, 'i');
}
});