diff options
Diffstat (limited to 'client/simple/src/js/main/00_toolkit.js')
| -rw-r--r-- | client/simple/src/js/main/00_toolkit.js | 121 |
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(); |