From a93bd191012add3adb670ecbc6e4119feb59ab02 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Thu, 28 Oct 2021 08:37:38 +0200 Subject: [build] /static --- searx/static/themes/simple/js/searxng.js | 104 ++++++++++++++++++----- searx/static/themes/simple/js/searxng.min.js | 4 +- searx/static/themes/simple/js/searxng.min.js.map | 2 +- 3 files changed, 88 insertions(+), 22 deletions(-) (limited to 'searx/static/themes/simple/js') diff --git a/searx/static/themes/simple/js/searxng.js b/searx/static/themes/simple/js/searxng.js index 8f0c0cd97..02a5b87ab 100644 --- a/searx/static/themes/simple/js/searxng.js +++ b/searx/static/themes/simple/js/searxng.js @@ -156,7 +156,7 @@ window.searxng = (function(w, d) { searxng.ready(function() { searxng.on('.result', 'click', function() { - highlightResult(this)(true); + highlightResult(this)(true); }); searxng.on('.result a', 'focus', function(e) { @@ -276,9 +276,7 @@ searxng.ready(function() { if (Object.prototype.hasOwnProperty.call(vimKeys, e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) { var tagName = e.target.tagName.toLowerCase(); if (e.keyCode === 27) { - if (tagName === 'input' || tagName === 'select' || tagName === 'textarea') { - vimKeys[e.keyCode].fun(); - } + vimKeys[e.keyCode].fun(e); } else { if (e.target === document.body || tagName === 'a' || tagName === 'button') { e.preventDefault(); @@ -365,9 +363,12 @@ searxng.ready(function() { document.location.reload(true); } - function removeFocus() { - if (document.activeElement) { + function removeFocus(e) { + const tagName = e.target.tagName.toLowerCase(); + if (document.activeElement && (tagName === 'input' || tagName === 'select' || tagName === 'textarea')) { document.activeElement.blur(); + } else { + searxng.closeDetail(); } } @@ -437,6 +438,9 @@ searxng.ready(function() { function openResult(newTab) { return function() { var link = document.querySelector('.result[data-vim-selected] h3 a'); + if (link === null) { + link = document.querySelector('.result[data-vim-selected] > a'); + } if (link !== null) { var url = link.getAttribute('href'); if (newTab) { @@ -520,6 +524,10 @@ searxng.ready(function() { return; } } + + searxng.scrollPageToSelected = scrollPageToSelected; + searxng.selectNext = highlightResult('down'); + searxng.selectPrevious = highlightResult('up'); }); ;/* SPDX-License-Identifier: AGPL-3.0-or-later */ /* global L */ @@ -628,7 +636,7 @@ searxng.ready(function() { 'use strict'; searxng.ready(function() { - searxng.image_thumbnail_layout = new searxng.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 10, 200); + searxng.image_thumbnail_layout = new searxng.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 14, 6, 200); searxng.image_thumbnail_layout.watch(); searxng.on('.btn-collapse', 'click', function() { @@ -656,17 +664,74 @@ searxng.ready(function() { } }); + function selectImage(e) { + /*eslint no-unused-vars: 0*/ + let t = e.target; + while (t && t.nodeName != 'ARTICLE') { + t = t.parentNode; + } + if (t) { + // load full size image in background + const imgElement = t.querySelector('.result-images-source img'); + const thumbnailElement = t.querySelector('.image_thumbnail'); + const detailElement = t.querySelector('.detail'); + if (imgElement) { + const imgSrc = imgElement.getAttribute('data-src'); + if (imgSrc) { + const loader = d.createElement('div'); + const imgLoader = new Image(); + + loader.classList.add('loader'); + detailElement.appendChild(loader); + + imgLoader.onload = e => { + imgElement.src = imgSrc; + loader.remove(); + }; + imgLoader.onerror = e => { + loader.remove(); + }; + imgLoader.src = imgSrc; + imgElement.src = thumbnailElement.src; + imgElement.removeAttribute('data-src'); + } + } + } + d.getElementById('results').classList.add('image-detail-open'); + searxng.image_thumbnail_layout.align(); + searxng.scrollPageToSelected(); + } + + searxng.closeDetail = function(e) { + d.getElementById('results').classList.remove('image-detail-open'); + searxng.image_thumbnail_layout.align(); + searxng.scrollPageToSelected(); + } + + searxng.on('.result-images', 'click', e => { + e.preventDefault(); + selectImage(e); + }); + searxng.on('.result-images a', 'focus', selectImage, true); + searxng.on('.result-detail-close', 'click', e => { + e.preventDefault(); + searxng.closeDetail(); + }); + searxng.on('.result-detail-previous', 'click', e => searxng.selectPrevious(false)); + searxng.on('.result-detail-next', 'click', e => searxng.selectNext(false)); + w.addEventListener('scroll', function() { var e = d.getElementById('backToTop'), - scrollTop = document.documentElement.scrollTop || document.body.scrollTop; + scrollTop = document.documentElement.scrollTop || document.body.scrollTop, + results = d.getElementById('results'); if (e !== null) { - if (scrollTop >= 200) { - e.style.opacity = 1; + if (scrollTop >= 100) { + results.classList.add('scrolling'); } else { - e.style.opacity = 0; + results.classList.remove('scrolling'); } } - }); + }, true); }); @@ -791,11 +856,12 @@ searxng.ready(function() { */ (function (w, d) { - function ImageLayout(container_selector, results_selector, img_selector, margin, maxHeight) { + function ImageLayout(container_selector, results_selector, img_selector, verticalMargin, horizontalMargin, maxHeight) { this.container_selector = container_selector; this.results_selector = results_selector; this.img_selector = img_selector; - this.margin = margin; + this.verticalMargin = verticalMargin; + this.horizontalMargin = horizontalMargin; this.maxHeight = maxHeight; this.isAlignDone = true; } @@ -825,7 +891,7 @@ searxng.ready(function() { } } - return (width - images.length * this.margin) / r; //have to round down because Firefox will automatically roundup value with number of decimals > 3 + return (width - images.length * this.verticalMargin) / r; //have to round down because Firefox will automatically roundup value with number of decimals > 3 }; ImageLayout.prototype._setSize = function (images, height) { @@ -842,10 +908,10 @@ searxng.ready(function() { } img.style.width = imgWidth + 'px'; img.style.height = height + 'px'; - img.style.marginLeft = '3px'; - img.style.marginTop = '3px'; - img.style.marginRight = this.margin - 7 + 'px'; // -4 is the negative margin of the inline element - img.style.marginBottom = this.margin - 7 + 'px'; + img.style.marginLeft = this.horizontalMargin + 'px'; + img.style.marginTop = this.horizontalMargin + 'px'; + img.style.marginRight = this.verticalMargin - 7 + 'px'; // -4 is the negative margin of the inline element + img.style.marginBottom = this.verticalMargin - 7 + 'px'; resultNode = img.parentNode.parentNode; if (!resultNode.classList.contains('js')) { resultNode.classList.add('js'); diff --git a/searx/static/themes/simple/js/searxng.min.js b/searx/static/themes/simple/js/searxng.min.js index c2e27c37c..a6d8e9b0a 100644 --- a/searx/static/themes/simple/js/searxng.min.js +++ b/searx/static/themes/simple/js/searxng.min.js @@ -4,7 +4,7 @@ * (C) Copyright Contributors to the searx project (2014 - 2021). * SPDX-License-Identifier: AGPL-3.0-or-later */ -window.searxng=function(t,o){"use strict";if(t.Element){(function(e){e.matches=e.matches||e.matchesSelector||e.webkitMatchesSelector||e.msMatchesSelector||function(e){var t=this,n=(t.parentNode||t.document).querySelectorAll(e),i=-1;while(n[++i]&&n[i]!=t);return!!n[i]}})(Element.prototype)}function a(e,t,n){try{e.call(t,n)}catch(e){console.log(e)}}var s=window.searxng||{};s.on=function(i,e,r,t){t=t||false;if(typeof i!=="string"){i.addEventListener(e,r,t)}else{o.addEventListener(e,function(e){var t=e.target||e.srcElement,n=false;while(t&&t.matches&&t!==o&&!(n=t.matches(i)))t=t.parentElement;if(n)a(r,t,e)},t)}};s.ready=function(e){if(document.readyState!="loading"){e.call(t)}else{t.addEventListener("DOMContentLoaded",e.bind(t))}};s.http=function(e,t){var n=new XMLHttpRequest,i=function(){},r=function(){},o={then:function(e){i=e;return o},catch:function(e){r=e;return o}};try{n.open(e,t,true);n.onload=function(){if(n.status==200){i(n.response,n.responseType)}else{r(Error(n.statusText))}};n.onerror=function(){r(Error("Network Error"))};n.onabort=function(){r(Error("Transaction is aborted"))};n.send()}catch(e){r(e)}return o};s.loadStyle=function(e){var t=s.static_path+e,n="style_"+e.replace(".","_"),i=o.getElementById(n);if(i===null){i=o.createElement("link");i.setAttribute("id",n);i.setAttribute("rel","stylesheet");i.setAttribute("type","text/css");i.setAttribute("href",t);o.body.appendChild(i)}};s.loadScript=function(e,t){var n=s.static_path+e,i="script_"+e.replace(".","_"),r=o.getElementById(i);if(r===null){r=o.createElement("script");r.setAttribute("id",i);r.setAttribute("src",n);r.onload=t;r.onerror=function(){r.setAttribute("error","1")};o.body.appendChild(r)}else if(!r.hasAttribute("error")){try{t.apply(r,[])}catch(e){console.log(e)}}else{console.log("callback not executed : script '"+n+"' not loaded.")}};s.insertBefore=function(e,t){t.parentNode.insertBefore(e,t)};s.insertAfter=function(e,t){t.parentNode.insertAfter(e,t.nextSibling)};s.on(".close","click",function(){this.parentNode.classList.add("invisible")});return s}(window,document);searxng.ready(function(){searxng.on(".result","click",function(){n(this)(true)});searxng.on(".result a","focus",function(e){var t=e.target;while(t!==undefined){if(t.classList.contains("result")){if(t.getAttribute("data-vim-selected")===null){n(t)(true)}break}t=t.parentNode}},true);var d={27:{key:"Escape",fun:t,des:"remove focus from the focused input",cat:"Control"},73:{key:"i",fun:l,des:"focus on the search input",cat:"Control"},66:{key:"b",fun:a(-window.innerHeight),des:"scroll one page up",cat:"Navigation"},70:{key:"f",fun:a(window.innerHeight),des:"scroll one page down",cat:"Navigation"},85:{key:"u",fun:a(-window.innerHeight/2),des:"scroll half a page up",cat:"Navigation"},68:{key:"d",fun:a(window.innerHeight/2),des:"scroll half a page down",cat:"Navigation"},71:{key:"g",fun:s(-document.body.scrollHeight,"top"),des:"scroll to the top of the page",cat:"Navigation"},86:{key:"v",fun:s(document.body.scrollHeight,"bottom"),des:"scroll to the bottom of the page",cat:"Navigation"},75:{key:"k",fun:n("up"),des:"select previous search result",cat:"Results"},74:{key:"j",fun:n("down"),des:"select next search result",cat:"Results"},80:{key:"p",fun:o(),des:"go to previous page",cat:"Results"},78:{key:"n",fun:r(),des:"go to next page",cat:"Results"},79:{key:"o",fun:u(false),des:"open search result",cat:"Results"},84:{key:"t",fun:u(true),des:"open the result in a new tab",cat:"Results"},82:{key:"r",fun:e,des:"reload page from the server",cat:"Control"},72:{key:"h",fun:p,des:"toggle help window",cat:"Other"}};searxng.on(document,"keydown",function(e){if(Object.prototype.hasOwnProperty.call(d,e.keyCode)&&!e.ctrlKey&&!e.altKey&&!e.shiftKey&&!e.metaKey){var t=e.target.tagName.toLowerCase();if(e.keyCode===27){if(t==="input"||t==="select"||t==="textarea"){d[e.keyCode].fun()}}else{if(e.target===document.body||t==="a"||t==="button"){e.preventDefault();d[e.keyCode].fun()}}}});function n(d){return function(e){var t=document.querySelector(".result[data-vim-selected]"),n=d;if(t===null){t=document.querySelector(".result");if(t===null){return}if(d==="down"||d==="up"){n=t}}var i,r=document.querySelectorAll(".result");if(typeof n!=="string"){i=n}else{switch(n){case"visible":var o=document.documentElement.scrollTop||document.body.scrollTop;var a=o+document.documentElement.clientHeight;for(var s=0;so){break}}break;case"down":i=t.nextElementSibling;if(i===null){i=r[0]}break;case"up":i=t.previousElementSibling;if(i===null){i=r[r.length-1]}break;case"bottom":i=r[r.length-1];break;case"top":default:i=r[0]}}if(i){t.removeAttribute("data-vim-selected");i.setAttribute("data-vim-selected","true");var c=i.querySelector("h3 a")||i.querySelector("a");if(c!==null){c.focus()}if(!e){f()}}}}function e(){document.location.reload(true)}function t(){if(document.activeElement){document.activeElement.blur()}}function i(t){return function(){var e=document.querySelector(t);if(e){e.click()}}}function r(){return i('nav#pagination .next_page button[type="submit"]')}function o(){return i('nav#pagination .previous_page button[type="submit"]')}function f(){var e=document.querySelector(".result[data-vim-selected]");if(e===null){return}var t=document.documentElement.scrollTop||document.body.scrollTop,n=document.documentElement.clientHeight,i=e.offsetTop,r=i+e.clientHeight,o=120;if(e.previousElementSibling===null&&ri-o){window.scroll(window.scrollX,i-o)}else{var a=t+n;if(a"}o+="";o+="

"+s[0].cat+"

";o+='
    ';for(var c in s){o+="
  • "+s[c].key+" "+s[c].des+"
  • "}o+="
";o+="";if(!u||l){o+=""}}o+="";e.innerHTML=o}function p(){var e=document.querySelector("#vim-hotkeys-help");console.log(e);if(e===undefined||e===null){e=document.createElement("div");e.id="vim-hotkeys-help";e.className="dialog-modal";e.style="width: 40%";c(e);c(e);c(e);var t=document.getElementsByTagName("body")[0];t.appendChild(e)}else{e.classList.toggle("invisible");return}}});(function(e,t,n){"use strict";n.ready(function(){n.on(".searxng_init_map","click",function(e){this.classList.remove("searxng_init_map");var d=this.dataset.leafletTarget;var f=parseFloat(this.dataset.mapLon);var p=parseFloat(this.dataset.mapLat);var h=parseFloat(this.dataset.mapZoom);var m=JSON.parse(this.dataset.mapBoundingbox);var g=JSON.parse(this.dataset.mapGeojson);n.loadStyle("css/leaflet.css");n.loadScript("js/leaflet.js",function(){var e=null;if(m){var t=L.latLng(m[0],m[2]);var n=L.latLng(m[1],m[3]);e=L.latLngBounds(t,n)}var i=L.map(d);var r="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png";var o='Map data © OpenStreetMap contributors';var a=new L.TileLayer(r,{minZoom:1,maxZoom:19,attribution:o});var s="https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png";var l='Wikimedia maps | Maps data © OpenStreetMap contributors';var u=new L.TileLayer(s,{minZoom:1,maxZoom:19,attribution:l});if(e){setTimeout(function(){i.fitBounds(e,{maxZoom:17})},0)}else if(f&&p){if(h){i.setView(new L.latLng(p,f),h)}else{i.setView(new L.latLng(p,f),8)}}i.addLayer(a);var c={"OSM Mapnik":a,"OSM Wikimedia":u};L.control.layers(c).addTo(i);if(g){L.geoJson(g).addTo(i)}});e.preventDefault()})})})(window,document,window.searxng);(function(e,o,a){"use strict";a.ready(function(){let r=null;function e(){if(r==null){a.http("GET","engine_descriptions.json").then(function(e){r=JSON.parse(e);for(const[t,n]of Object.entries(r)){let e=o.querySelectorAll('[data-engine-name="'+t+'"] .engine-description');for(const i of e){let e=" ("+a.translations["Source"]+": "+n[1]+")";i.innerHTML=n[0]+e}}})}}if(o.querySelector('body[class="preferences_endpoint"]')){for(const t of o.querySelectorAll("[data-engine-name]")){a.on(t,"mouseenter",e)}}})})(window,document,window.searxng);(function(e,o,t){"use strict";t.ready(function(){t.image_thumbnail_layout=new t.ImageLayout("#urls","#urls .result-images","img.image_thumbnail",10,200);t.image_thumbnail_layout.watch();t.on(".btn-collapse","click",function(){var e=this.getAttribute("data-btn-text-collapsed");var t=this.getAttribute("data-btn-text-not-collapsed");var n=this.getAttribute("data-target");var i=o.querySelector(n);var r=this.innerHTML;if(this.classList.contains("collapsed")){r=r.replace(e,t)}else{r=r.replace(t,e)}this.innerHTML=r;this.classList.toggle("collapsed");i.classList.toggle("invisible")});t.on(".media-loader","click",function(){var e=this.getAttribute("data-target");var t=o.querySelector(e+" > iframe");var n=t.getAttribute("src");if(n===null||n===undefined||n===false){t.setAttribute("src",t.getAttribute("data-src"))}});e.addEventListener("scroll",function(){var e=o.getElementById("backToTop"),t=document.documentElement.scrollTop||document.body.scrollTop;if(e!==null){if(t>=200){e.style.opacity=1}else{e.style.opacity=0}}})})})(window,document,window.searxng);(function(t,n,i){"use strict";var r=true,o="q",a;function s(e){if(e.setSelectionRange){var t=e.value.length;e.setSelectionRange(t,t)}}function l(){if(a.value.length>0){var e=document.getElementById("search");setTimeout(e.submit.bind(e),0)}}function u(e){var t=document.getElementById("clear_search");var n=function(){if(e.value.length===0){t.classList.add("empty")}else{t.classList.remove("empty")}};n();t.addEventListener("click",function(){e.value="";e.focus();n()});e.addEventListener("keyup",n,false)}i.ready(function(){a=n.getElementById(o);function e(){if(r){s(a);r=false}else{}}if(a!==null){u(a);if(i.autocompleter){i.autocomplete=AutoComplete.call(t,{Url:"./autocompleter",EmptyMessage:i.translations.no_item_found,HttpMethod:i.method,HttpHeaders:{"Content-type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},MinChars:4,Delay:300},"#"+o);t.addEventListener("resize",function(){var e=new CustomEvent("position");a.dispatchEvent(e)})}a.addEventListener("focus",e,false);a.focus()}if(a!==null&&n.querySelector(".help")!=null&&i.search_on_category_select){n.querySelector(".help").className="invisible";i.on("#categories input","change",function(){var e,t=n.querySelectorAll('#categories input[type="checkbox"]');for(e=0;eo){break}}break;case"down":i=t.nextElementSibling;if(i===null){i=r[0]}break;case"up":i=t.previousElementSibling;if(i===null){i=r[r.length-1]}break;case"bottom":i=r[r.length-1];break;case"top":default:i=r[0]}}if(i){t.removeAttribute("data-vim-selected");i.setAttribute("data-vim-selected","true");var c=i.querySelector("h3 a")||i.querySelector("a");if(c!==null){c.focus()}if(!e){f()}}}}function e(){document.location.reload(true)}function t(e){const t=e.target.tagName.toLowerCase();if(document.activeElement&&(t==="input"||t==="select"||t==="textarea")){document.activeElement.blur()}else{searxng.closeDetail()}}function i(t){return function(){var e=document.querySelector(t);if(e){e.click()}}}function r(){return i('nav#pagination .next_page button[type="submit"]')}function o(){return i('nav#pagination .previous_page button[type="submit"]')}function f(){var e=document.querySelector(".result[data-vim-selected]");if(e===null){return}var t=document.documentElement.scrollTop||document.body.scrollTop,n=document.documentElement.clientHeight,i=e.offsetTop,r=i+e.clientHeight,o=120;if(e.previousElementSibling===null&&ri-o){window.scroll(window.scrollX,i-o)}else{var a=t+n;if(a a")}if(e!==null){var t=e.getAttribute("href");if(n){window.open(t)}else{window.location.href=t}}}}function c(e){var n={};for(var t in d){var i=d[t];n[i.cat]=n[i.cat]||[];n[i.cat].push(i)}var r=Object.keys(n).sort(function(e,t){return n[t].length-n[e].length});if(r.length===0){return}var o='×';o+="

How to navigate searx with Vim-like hotkeys

";o+="";for(var a=0;a"}o+="";if(!u||l){o+=""}}o+="
";o+="

"+s[0].cat+"

";o+='
    ';for(var c in s){o+="
  • "+s[c].key+" "+s[c].des+"
  • "}o+="
";o+="
";e.innerHTML=o}function p(){var e=document.querySelector("#vim-hotkeys-help");console.log(e);if(e===undefined||e===null){e=document.createElement("div");e.id="vim-hotkeys-help";e.className="dialog-modal";e.style="width: 40%";c(e);c(e);c(e);var t=document.getElementsByTagName("body")[0];t.appendChild(e)}else{e.classList.toggle("invisible");return}}searxng.scrollPageToSelected=f;searxng.selectNext=n("down");searxng.selectPrevious=n("up")});(function(e,t,n){"use strict";n.ready(function(){n.on(".searxng_init_map","click",function(e){this.classList.remove("searxng_init_map");var d=this.dataset.leafletTarget;var f=parseFloat(this.dataset.mapLon);var p=parseFloat(this.dataset.mapLat);var h=parseFloat(this.dataset.mapZoom);var g=JSON.parse(this.dataset.mapBoundingbox);var m=JSON.parse(this.dataset.mapGeojson);n.loadStyle("css/leaflet.css");n.loadScript("js/leaflet.js",function(){var e=null;if(g){var t=L.latLng(g[0],g[2]);var n=L.latLng(g[1],g[3]);e=L.latLngBounds(t,n)}var i=L.map(d);var r="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png";var o='Map data © OpenStreetMap contributors';var a=new L.TileLayer(r,{minZoom:1,maxZoom:19,attribution:o});var s="https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png";var l='Wikimedia maps | Maps data © OpenStreetMap contributors';var u=new L.TileLayer(s,{minZoom:1,maxZoom:19,attribution:l});if(e){setTimeout(function(){i.fitBounds(e,{maxZoom:17})},0)}else if(f&&p){if(h){i.setView(new L.latLng(p,f),h)}else{i.setView(new L.latLng(p,f),8)}}i.addLayer(a);var c={"OSM Mapnik":a,"OSM Wikimedia":u};L.control.layers(c).addTo(i);if(m){L.geoJson(m).addTo(i)}});e.preventDefault()})})})(window,document,window.searxng);(function(e,o,a){"use strict";a.ready(function(){let r=null;function e(){if(r==null){a.http("GET","engine_descriptions.json").then(function(e){r=JSON.parse(e);for(const[t,n]of Object.entries(r)){let e=o.querySelectorAll('[data-engine-name="'+t+'"] .engine-description');for(const i of e){let e=" ("+a.translations["Source"]+": "+n[1]+")";i.innerHTML=n[0]+e}}})}}if(o.querySelector('body[class="preferences_endpoint"]')){for(const t of o.querySelectorAll("[data-engine-name]")){a.on(t,"mouseenter",e)}}})})(window,document,window.searxng);(function(e,l,u){"use strict";u.ready(function(){u.image_thumbnail_layout=new u.ImageLayout("#urls","#urls .result-images","img.image_thumbnail",14,6,200);u.image_thumbnail_layout.watch();u.on(".btn-collapse","click",function(){var e=this.getAttribute("data-btn-text-collapsed");var t=this.getAttribute("data-btn-text-not-collapsed");var n=this.getAttribute("data-target");var i=l.querySelector(n);var r=this.innerHTML;if(this.classList.contains("collapsed")){r=r.replace(e,t)}else{r=r.replace(t,e)}this.innerHTML=r;this.classList.toggle("collapsed");i.classList.toggle("invisible")});u.on(".media-loader","click",function(){var e=this.getAttribute("data-target");var t=l.querySelector(e+" > iframe");var n=t.getAttribute("src");if(n===null||n===undefined||n===false){t.setAttribute("src",t.getAttribute("data-src"))}});function t(e){let t=e.target;while(t&&t.nodeName!="ARTICLE"){t=t.parentNode}if(t){const n=t.querySelector(".result-images-source img");const i=t.querySelector(".image_thumbnail");const r=t.querySelector(".detail");if(n){const o=n.getAttribute("data-src");if(o){const a=l.createElement("div");const s=new Image;a.classList.add("loader");r.appendChild(a);s.onload=e=>{n.src=o;a.remove()};s.onerror=e=>{a.remove()};s.src=o;n.src=i.src;n.removeAttribute("data-src")}}}l.getElementById("results").classList.add("image-detail-open");u.image_thumbnail_layout.align();u.scrollPageToSelected()}u.closeDetail=function(e){l.getElementById("results").classList.remove("image-detail-open");u.image_thumbnail_layout.align();u.scrollPageToSelected()};u.on(".result-images","click",e=>{e.preventDefault();t(e)});u.on(".result-images a","focus",t,true);u.on(".result-detail-close","click",e=>{e.preventDefault();u.closeDetail()});u.on(".result-detail-previous","click",e=>u.selectPrevious(false));u.on(".result-detail-next","click",e=>u.selectNext(false));e.addEventListener("scroll",function(){var e=l.getElementById("backToTop"),t=document.documentElement.scrollTop||document.body.scrollTop,n=l.getElementById("results");if(e!==null){if(t>=100){n.classList.add("scrolling")}else{n.classList.remove("scrolling")}}},true)})})(window,document,window.searxng);(function(t,n,i){"use strict";var r=true,o="q",a;function s(e){if(e.setSelectionRange){var t=e.value.length;e.setSelectionRange(t,t)}}function l(){if(a.value.length>0){var e=document.getElementById("search");setTimeout(e.submit.bind(e),0)}}function u(e){var t=document.getElementById("clear_search");var n=function(){if(e.value.length===0){t.classList.add("empty")}else{t.classList.remove("empty")}};n();t.addEventListener("click",function(){e.value="";e.focus();n()});e.addEventListener("keyup",n,false)}i.ready(function(){a=n.getElementById(o);function e(){if(r){s(a);r=false}else{}}if(a!==null){u(a);if(i.autocompleter){i.autocomplete=AutoComplete.call(t,{Url:"./autocompleter",EmptyMessage:i.translations.no_item_found,HttpMethod:i.method,HttpHeaders:{"Content-type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},MinChars:4,Delay:300},"#"+o);t.addEventListener("resize",function(){var e=new CustomEvent("position");a.dispatchEvent(e)})}a.addEventListener("focus",e,false);a.focus()}if(a!==null&&n.querySelector(".help")!=null&&i.search_on_category_select){n.querySelector(".help").className="invisible";i.on("#categories input","change",function(){var e,t=n.querySelectorAll('#categories input[type="checkbox"]');for(e=0;e0&&i.naturalHeight>0){r+=i.naturalWidth/i.naturalHeight}else{r+=1}}return(t-e.length*this.margin)/r};e.prototype._setSize=function(e,t){var n,i,r;var o=e.length,a;for(n=0;n0&&i.naturalHeight>0){r=t*i.naturalWidth/i.naturalHeight}else{r=t}i.style.width=r+"px";i.style.height=t+"px";i.style.marginLeft="3px";i.style.marginTop="3px";i.style.marginRight=this.margin-7+"px";i.style.marginBottom=this.margin-7+"px";a=i.parentNode.parentNode;if(!a.classList.contains("js")){a.classList.add("js")}}};e.prototype._alignImgs=function(e){var t,n,i,r;var o=c.querySelector(this.container_selector);var a=window.getComputedStyle(o);var s=parseInt(a.getPropertyValue("padding-left"),10);var l=parseInt(a.getPropertyValue("padding-right"),10);var u=o.clientWidth-s-l;while(e.length>0){t=true;for(i=1;i<=e.length&&t;i++){n=e.slice(0,i);r=this._getHeigth(n,u);if(r0){this._alignImgs(o);o=[]}o.push(r.querySelector(this.img_selector));i=r}if(o.length>0){this._alignImgs(o)}};e.prototype.watch=function(){var e,t;var n=this;var i=c.querySelectorAll(this.results_selector);var r=i.length;function o(){if(n.isAlignDone){n.isAlignDone=false;setTimeout(function(){n.align();n.isAlignDone=true},100)}}a.addEventListener("pageshow",o);a.addEventListener("load",o);a.addEventListener("resize",o);for(e=0;e0&&i.naturalHeight>0){r+=i.naturalWidth/i.naturalHeight}else{r+=1}}return(t-e.length*this.verticalMargin)/r};e.prototype._setSize=function(e,t){var n,i,r;var o=e.length,a;for(n=0;n0&&i.naturalHeight>0){r=t*i.naturalWidth/i.naturalHeight}else{r=t}i.style.width=r+"px";i.style.height=t+"px";i.style.marginLeft=this.horizontalMargin+"px";i.style.marginTop=this.horizontalMargin+"px";i.style.marginRight=this.verticalMargin-7+"px";i.style.marginBottom=this.verticalMargin-7+"px";a=i.parentNode.parentNode;if(!a.classList.contains("js")){a.classList.add("js")}}};e.prototype._alignImgs=function(e){var t,n,i,r;var o=c.querySelector(this.container_selector);var a=window.getComputedStyle(o);var s=parseInt(a.getPropertyValue("padding-left"),10);var l=parseInt(a.getPropertyValue("padding-right"),10);var u=o.clientWidth-s-l;while(e.length>0){t=true;for(i=1;i<=e.length&&t;i++){n=e.slice(0,i);r=this._getHeigth(n,u);if(r0){this._alignImgs(o);o=[]}o.push(r.querySelector(this.img_selector));i=r}if(o.length>0){this._alignImgs(o)}};e.prototype.watch=function(){var e,t;var n=this;var i=c.querySelectorAll(this.results_selector);var r=i.length;function o(){if(n.isAlignDone){n.isAlignDone=false;setTimeout(function(){n.align();n.isAlignDone=true},100)}}a.addEventListener("pageshow",o);a.addEventListener("load",o);a.addEventListener("resize",o);for(e=0;e