summaryrefslogtreecommitdiff
path: root/client/simple/src/js/main/00_toolkit.js
diff options
context:
space:
mode:
Diffstat (limited to 'client/simple/src/js/main/00_toolkit.js')
-rw-r--r--client/simple/src/js/main/00_toolkit.js121
1 files changed, 62 insertions, 59 deletions
diff --git a/client/simple/src/js/main/00_toolkit.js b/client/simple/src/js/main/00_toolkit.js
index 4e374a019..ca5e1d0e0 100644
--- a/client/simple/src/js/main/00_toolkit.js
+++ b/client/simple/src/js/main/00_toolkit.js
@@ -4,29 +4,28 @@
* (C) Copyright Contributors to the searx project (2014 - 2021).
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-window.searxng = (function (w, d) {
-
- 'use strict';
-
+window.searxng = ((w, d) => {
// not invented here toolkit with bugs fixed elsewhere
// purposes : be just good enough and as small as possible
// from https://plainjs.com/javascript/events/live-binding-event-handlers-14/
if (w.Element) {
- (function (ElementPrototype) {
- ElementPrototype.matches = ElementPrototype.matches ||
- ElementPrototype.matchesSelector ||
- ElementPrototype.webkitMatchesSelector ||
- ElementPrototype.msMatchesSelector ||
- function (selector) {
- var node = this, nodes = (node.parentNode || node.document).querySelectorAll(selector), i = -1;
- while (nodes[++i] && nodes[i] != node);
- return !!nodes[i];
- };
+ ((ElementPrototype) => {
+ ElementPrototype.matches =
+ ElementPrototype.matches ||
+ ElementPrototype.matchesSelector ||
+ ElementPrototype.webkitMatchesSelector ||
+ ElementPrototype.msMatchesSelector ||
+ function (selector) {
+ var nodes = (this.parentNode || this.document).querySelectorAll(selector),
+ i = -1;
+ while (nodes[++i] && nodes[i] !== this);
+ return !!nodes[i];
+ };
})(Element.prototype);
}
- function callbackSafe (callback, el, e) {
+ function callbackSafe(callback, el, e) {
try {
callback.call(el, e);
} catch (exception) {
@@ -36,39 +35,44 @@ window.searxng = (function (w, d) {
var searxng = window.searxng || {};
- searxng.on = function (obj, eventType, callback, useCapture) {
+ searxng.on = (obj, eventType, callback, useCapture) => {
useCapture = useCapture || false;
- if (typeof obj !== 'string') {
+ if (typeof obj !== "string") {
// obj HTMLElement, HTMLDocument
obj.addEventListener(eventType, callback, useCapture);
} else {
// obj is a selector
- d.addEventListener(eventType, function (e) {
- var el = e.target || e.srcElement, found = false;
- while (el && el.matches && el !== d && !(found = el.matches(obj))) el = el.parentElement;
- if (found) callbackSafe(callback, el, e);
- }, useCapture);
+ d.addEventListener(
+ eventType,
+ (e) => {
+ var el = e.target || e.srcElement,
+ found = false;
+ while (el?.matches && el !== d && !(found = el.matches(obj))) el = el.parentElement;
+ if (found) callbackSafe(callback, el, e);
+ },
+ useCapture
+ );
}
};
- searxng.ready = function (callback) {
- if (document.readyState != 'loading') {
+ searxng.ready = (callback) => {
+ if (document.readyState !== "loading") {
callback.call(w);
} else {
- w.addEventListener('DOMContentLoaded', callback.bind(w));
+ w.addEventListener("DOMContentLoaded", callback.bind(w));
}
};
- searxng.http = function (method, url, data = null) {
- return new Promise(function (resolve, reject) {
+ searxng.http = (method, url, data = null) =>
+ new Promise((resolve, reject) => {
try {
var req = new XMLHttpRequest();
req.open(method, url, true);
req.timeout = 20000;
// On load
- req.onload = function () {
- if (req.status == 200) {
+ req.onload = () => {
+ if (req.status === 200) {
resolve(req.response, req.responseType);
} else {
reject(Error(req.statusText));
@@ -76,21 +80,21 @@ window.searxng = (function (w, d) {
};
// Handle network errors
- req.onerror = function () {
+ req.onerror = () => {
reject(Error("Network Error"));
};
- req.onabort = function () {
+ req.onabort = () => {
reject(Error("Transaction is aborted"));
};
- req.ontimeout = function () {
+ req.ontimeout = () => {
reject(Error("Timeout"));
- }
+ };
// Make the request
if (data) {
- req.send(data)
+ req.send(data);
} else {
req.send();
}
@@ -98,36 +102,35 @@ window.searxng = (function (w, d) {
reject(ex);
}
});
- };
- searxng.loadStyle = function (src) {
+ searxng.loadStyle = (src) => {
var path = searxng.settings.theme_static_path + "/" + src,
- id = "style_" + src.replace('.', '_'),
+ id = "style_" + src.replace(".", "_"),
s = d.getElementById(id);
if (s === null) {
- s = d.createElement('link');
- s.setAttribute('id', id);
- s.setAttribute('rel', 'stylesheet');
- s.setAttribute('type', 'text/css');
- s.setAttribute('href', path);
+ s = d.createElement("link");
+ s.setAttribute("id", id);
+ s.setAttribute("rel", "stylesheet");
+ s.setAttribute("type", "text/css");
+ s.setAttribute("href", path);
d.body.appendChild(s);
}
};
- searxng.loadScript = function (src, callback) {
+ searxng.loadScript = (src, callback) => {
var path = searxng.settings.theme_static_path + "/" + src,
- id = "script_" + src.replace('.', '_'),
+ id = "script_" + src.replace(".", "_"),
s = d.getElementById(id);
if (s === null) {
- s = d.createElement('script');
- s.setAttribute('id', id);
- s.setAttribute('src', path);
+ s = d.createElement("script");
+ s.setAttribute("id", id);
+ s.setAttribute("src", path);
s.onload = callback;
- s.onerror = function () {
- s.setAttribute('error', '1');
+ s.onerror = () => {
+ s.setAttribute("error", "1");
};
d.body.appendChild(s);
- } else if (!s.hasAttribute('error')) {
+ } else if (!s.hasAttribute("error")) {
try {
callback.apply(s, []);
} catch (exception) {
@@ -138,25 +141,25 @@ window.searxng = (function (w, d) {
}
};
- searxng.insertBefore = function (newNode, referenceNode) {
+ searxng.insertBefore = (newNode, referenceNode) => {
referenceNode.parentNode.insertBefore(newNode, referenceNode);
};
- searxng.insertAfter = function (newNode, referenceNode) {
+ searxng.insertAfter = (newNode, referenceNode) => {
referenceNode.parentNode.insertAfter(newNode, referenceNode.nextSibling);
};
- searxng.on('.close', 'click', function () {
- this.parentNode.classList.add('invisible');
+ searxng.on(".close", "click", function () {
+ this.parentNode.classList.add("invisible");
});
- function getEndpoint () {
- for (var className of d.getElementsByTagName('body')[0].classList.values()) {
- if (className.endsWith('_endpoint')) {
- return className.split('_')[0];
+ function getEndpoint() {
+ for (var className of d.getElementsByTagName("body")[0].classList.values()) {
+ if (className.endsWith("_endpoint")) {
+ return className.split("_")[0];
}
}
- return '';
+ return "";
}
searxng.endpoint = getEndpoint();