summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--requirements-dev.txt4
-rw-r--r--searx/static/themes/oscar/js/searxng.min.js2
-rw-r--r--searx/static/themes/oscar/js/searxng.min.js.map2
-rw-r--r--searx/static/themes/simple/css/searxng-rtl.css3279
-rw-r--r--searx/static/themes/simple/css/searxng.css3275
-rw-r--r--searx/static/themes/simple/gruntfile.js45
-rw-r--r--searx/static/themes/simple/js/searxng.head.js40
-rw-r--r--searx/static/themes/simple/js/searxng.head.min.js.map2
-rw-r--r--searx/static/themes/simple/js/searxng.js1598
-rw-r--r--searx/static/themes/simple/js/searxng.min.js.map2
-rw-r--r--searx/static/themes/simple/package.json1
-rw-r--r--searx/translations/bg/LC_MESSAGES/messages.mobin7967 -> 13638 bytes
-rw-r--r--searx/translations/bg/LC_MESSAGES/messages.po160
-rw-r--r--searx/translations/es/LC_MESSAGES/messages.mobin10981 -> 11635 bytes
-rw-r--r--searx/translations/es/LC_MESSAGES/messages.po44
-rw-r--r--searx/translations/fr/LC_MESSAGES/messages.mobin13862 -> 15798 bytes
-rw-r--r--searx/translations/fr/LC_MESSAGES/messages.po55
-rw-r--r--searx/translations/ja/LC_MESSAGES/messages.mobin11095 -> 12041 bytes
-rw-r--r--searx/translations/ja/LC_MESSAGES/messages.po50
19 files changed, 178 insertions, 8381 deletions
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 04def15af..330449ed5 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -5,9 +5,9 @@ pycodestyle==2.8.0
pylint==2.12.1
splinter==0.16.0
selenium==3.141.0
-twine==3.6.0
+twine==3.7.0
Pallets-Sphinx-Themes==2.0.2
-Sphinx==4.3.0
+Sphinx==4.3.1
sphinx-issues==1.2.0
sphinx-jinja==1.1.1
sphinx-tabs==3.2.0
diff --git a/searx/static/themes/oscar/js/searxng.min.js b/searx/static/themes/oscar/js/searxng.min.js
index 9da3a8b75..c835d8129 100644
--- a/searx/static/themes/oscar/js/searxng.min.js
+++ b/searx/static/themes/oscar/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){"use strict";t.getElementsByTagName("html")[0].className="js";var e,e=t.currentScript||(e=t.getElementsByTagName("script"))[e.length-1];return{autocompleter:"true"===e.getAttribute("data-autocompleter"),method:e.getAttribute("data-method"),translations:JSON.parse(e.getAttribute("data-translations"))}}(document),
+window.searxng=function(t){"use strict";t.getElementsByTagName("html")[0].className="js";var e=t.currentScript||(e=t.getElementsByTagName("script"))[e.length-1];return{autocompleter:"true"===e.getAttribute("data-autocompleter"),method:e.getAttribute("data-method"),translations:JSON.parse(e.getAttribute("data-translations"))}}(document),
/**
* @license
* (C) Copyright Contributors to the SearXNG project.
diff --git a/searx/static/themes/oscar/js/searxng.min.js.map b/searx/static/themes/oscar/js/searxng.min.js.map
index 33b340aa6..0b6317471 100644
--- a/searx/static/themes/oscar/js/searxng.min.js.map
+++ b/searx/static/themes/oscar/js/searxng.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"searxng.min.js","sources":["searxng.js"],"names":["window","searxng","d","getElementsByTagName","className","scripts","script","currentScript","length","autocompleter","getAttribute","method","translations","JSON","parse","document","$","ready","searchResults","original_search_value","Bloodhound","datumTokenizer","tokenizers","obj","whitespace","queryTokenizer","remote","url","wildcard","initialize","on","e","which","val","typeahead","name","highlight","hint","displayKey","result","classNames","input","menu","dataset","source","bind","ev","suggestion","submit","focus","click","getElementById","value","this","select","btnTextCollapsed","data","btnTextNotCollapsed","new_html","hasClass","html","replace","btnClass","btnLabelDefault","btnLabelToggled","toggleClass","target","iframe_load","srctest","attr","undefined","dblclick","prop","addClass","removeClass","removeAttr","checked","a","parents","children","parent","image_thumbnail_layout","ImageLayout","watch","addEventListener","each","infobox_body","find","height","css","hide","event","leaflet_target","map_lon","map_lat","map_zoom","map_boundingbox","map_geojson","southWest","L","latLng","northEast","map_bounds","latLngBounds","Icon","Default","imagePath","map","osmMapnik","TileLayer","minZoom","maxZoom","attribution","setTimeout","fitBounds","setView","LatLng","addLayer","control","layers","OSM Mapnik","addTo","geoJson","off","let","engine_descriptions","querySelector","hover","ajax","dataType","done","engine_name","description","Object","entries","element","Source","innerHTML","w","container_selector","results_selector","img_selector","verticalMargin","horizontalMargin","maxHeight","isAlignDone","prototype","_getHeigth","images","width","img","r","i","naturalWidth","naturalHeight","_setSize","imgWidth","resultNode","imagesLength","style","marginLeft","marginTop","marginRight","marginBottom","parentNode","classList","contains","add","_alignImgs","imgGroup","isSearching","slice","h","containerElement","containerCompStyles","getComputedStyle","containerPaddingLeft","parseInt","getPropertyValue","containerPaddingRight","containerWidth","clientWidth","Math","min","align","results_selectorNode","querySelectorAll","results_length","previous","current","previousElementSibling","push","results_nodes","img_load_error","originalTarget","src","static_path","theme","throttleAlign","once"],"mappings":"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"} \ No newline at end of file
+{"version":3,"file":"searxng.min.js","sources":["searxng.js"],"names":["window","searxng","d","getElementsByTagName","className","script","currentScript","scripts","length","autocompleter","getAttribute","method","translations","JSON","parse","document","$","ready","searchResults","original_search_value","Bloodhound","datumTokenizer","tokenizers","obj","whitespace","queryTokenizer","remote","url","wildcard","initialize","on","e","which","val","typeahead","name","highlight","hint","displayKey","result","classNames","input","menu","dataset","source","bind","ev","suggestion","submit","focus","click","getElementById","value","this","select","btnTextCollapsed","data","btnTextNotCollapsed","new_html","hasClass","html","replace","btnClass","btnLabelDefault","btnLabelToggled","toggleClass","target","iframe_load","srctest","attr","undefined","dblclick","prop","addClass","removeClass","removeAttr","checked","a","parents","children","parent","image_thumbnail_layout","ImageLayout","watch","addEventListener","each","infobox_body","find","height","css","hide","event","leaflet_target","map_lon","map_lat","map_zoom","map_boundingbox","map_geojson","southWest","L","latLng","northEast","map_bounds","latLngBounds","Icon","Default","imagePath","map","osmMapnik","TileLayer","minZoom","maxZoom","attribution","setTimeout","fitBounds","setView","LatLng","addLayer","control","layers","OSM Mapnik","addTo","geoJson","off","let","engine_descriptions","querySelector","hover","ajax","dataType","done","engine_name","description","Object","entries","element","Source","innerHTML","w","container_selector","results_selector","img_selector","verticalMargin","horizontalMargin","maxHeight","isAlignDone","prototype","_getHeigth","images","width","img","r","i","naturalWidth","naturalHeight","_setSize","imgWidth","resultNode","imagesLength","style","marginLeft","marginTop","marginRight","marginBottom","parentNode","classList","contains","add","_alignImgs","imgGroup","isSearching","slice","h","containerElement","containerCompStyles","getComputedStyle","containerPaddingLeft","parseInt","getPropertyValue","containerPaddingRight","containerWidth","clientWidth","Math","min","align","results_selectorNode","querySelectorAll","results_length","previous","current","previousElementSibling","push","results_nodes","img_load_error","originalTarget","src","static_path","theme","throttleAlign","once"],"mappings":"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"} \ No newline at end of file
diff --git a/searx/static/themes/simple/css/searxng-rtl.css b/searx/static/themes/simple/css/searxng-rtl.css
deleted file mode 100644
index 4668cb78c..000000000
--- a/searx/static/themes/simple/css/searxng-rtl.css
+++ /dev/null
@@ -1,3279 +0,0 @@
-/*
-* SearXNG, A privacy-respecting, hackable metasearch engine
-*
-* To convert "style.less" to "style.css" run: $make styles
-*/
-.github-issue-button {
- display: block;
- padding: 8px 16px;
- font-family: sans-serif;
- font-size: 16px;
- color: white;
- background-color: #238636 !important;
- /* important is needed cause to an !important in logicodev-dark */
- border: #2ea043;
- border-radius: 10px !important;
- box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;
-}
-.github-issue-button:hover {
- background-color: #2ea043;
-}
-.issue-hide {
- display: none;
-}
-.engine-stats .engine-name {
- width: 20rem;
-}
-.engine-stats .engine-score {
- width: 7rem;
- text-align: right;
-}
-.engine-stats .engine-reliability {
- text-align: right;
-}
-.engine-stats table.engine-error {
- max-width: 1280px;
- margin: 1rem;
- border: 1px solid gray;
-}
-.engine-stats table.engine-error th.engine-error-type,
-.engine-stats table.engine-error td.engine-error-type,
-.engine-stats failed-test {
- width: 10rem;
-}
-.engine-stats table.engine-error span.log_parameters {
- border-right: 1px solid gray;
- padding: 0 1rem 0 0;
- margin: 0 0 0 0.5rem;
-}
-.bar-chart-value {
- width: 3em;
- display: inline-block;
- text-align: right;
- padding-right: 0.5rem;
-}
-.bar-chart-graph {
- width: calc(100% - 5rem);
- display: inline-block;
-}
-.bar-chart-bar {
- border: 3px solid #5bc0de;
- margin: 1px 0;
-}
-.bar-chart-serie1 {
- border: 3px solid #5bc0de;
- margin: 1px 0;
- float: left;
-}
-.bar-chart-serie2 {
- border: 3px solid #deb15b;
- margin: 1px 0;
- float: left;
-}
-.bar0 {
- width: 0;
- border: 0;
-}
-.bar1 {
- width: 1%;
-}
-.bar2 {
- width: 2%;
-}
-.bar3 {
- width: 3%;
-}
-.bar4 {
- width: 4%;
-}
-.bar5 {
- width: 5%;
-}
-.bar6 {
- width: 6%;
-}
-.bar7 {
- width: 7%;
-}
-.bar8 {
- width: 8%;
-}
-.bar9 {
- width: 9%;
-}
-.bar10 {
- width: 10%;
-}
-.bar11 {
- width: 11%;
-}
-.bar12 {
- width: 12%;
-}
-.bar13 {
- width: 13%;
-}
-.bar14 {
- width: 14%;
-}
-.bar15 {
- width: 15%;
-}
-.bar16 {
- width: 16%;
-}
-.bar17 {
- width: 17%;
-}
-.bar18 {
- width: 18%;
-}
-.bar19 {
- width: 19%;
-}
-.bar20 {
- width: 20%;
-}
-.bar21 {
- width: 21%;
-}
-.bar22 {
- width: 22%;
-}
-.bar23 {
- width: 23%;
-}
-.bar24 {
- width: 24%;
-}
-.bar25 {
- width: 25%;
-}
-.bar26 {
- width: 26%;
-}
-.bar27 {
- width: 27%;
-}
-.bar28 {
- width: 28%;
-}
-.bar29 {
- width: 29%;
-}
-.bar30 {
- width: 30%;
-}
-.bar31 {
- width: 31%;
-}
-.bar32 {
- width: 32%;
-}
-.bar33 {
- width: 33%;
-}
-.bar34 {
- width: 34%;
-}
-.bar35 {
- width: 35%;
-}
-.bar36 {
- width: 36%;
-}
-.bar37 {
- width: 37%;
-}
-.bar38 {
- width: 38%;
-}
-.bar39 {
- width: 39%;
-}
-.bar40 {
- width: 40%;
-}
-.bar41 {
- width: 41%;
-}
-.bar42 {
- width: 42%;
-}
-.bar43 {
- width: 43%;
-}
-.bar44 {
- width: 44%;
-}
-.bar45 {
- width: 45%;
-}
-.bar46 {
- width: 46%;
-}
-.bar47 {
- width: 47%;
-}
-.bar48 {
- width: 48%;
-}
-.bar49 {
- width: 49%;
-}
-.bar50 {
- width: 50%;
-}
-.bar51 {
- width: 51%;
-}
-.bar52 {
- width: 52%;
-}
-.bar53 {
- width: 53%;
-}
-.bar54 {
- width: 54%;
-}
-.bar55 {
- width: 55%;
-}
-.bar56 {
- width: 56%;
-}
-.bar57 {
- width: 57%;
-}
-.bar58 {
- width: 58%;
-}
-.bar59 {
- width: 59%;
-}
-.bar60 {
- width: 60%;
-}
-.bar61 {
- width: 61%;
-}
-.bar62 {
- width: 62%;
-}
-.bar63 {
- width: 63%;
-}
-.bar64 {
- width: 64%;
-}
-.bar65 {
- width: 65%;
-}
-.bar66 {
- width: 66%;
-}
-.bar67 {
- width: 67%;
-}
-.bar68 {
- width: 68%;
-}
-.bar69 {
- width: 69%;
-}
-.bar70 {
- width: 70%;
-}
-.bar71 {
- width: 71%;
-}
-.bar72 {
- width: 72%;
-}
-.bar73 {
- width: 73%;
-}
-.bar74 {
- width: 74%;
-}
-.bar75 {
- width: 75%;
-}
-.bar76 {
- width: 76%;
-}
-.bar77 {
- width: 77%;
-}
-.bar78 {
- width: 78%;
-}
-.bar79 {
- width: 79%;
-}
-.bar80 {
- width: 80%;
-}
-.bar81 {
- width: 81%;
-}
-.bar82 {
- width: 82%;
-}
-.bar83 {
- width: 83%;
-}
-.bar84 {
- width: 84%;
-}
-.bar85 {
- width: 85%;
-}
-.bar86 {
- width: 86%;
-}
-.bar87 {
- width: 87%;
-}
-.bar88 {
- width: 88%;
-}
-.bar89 {
- width: 89%;
-}
-.bar90 {
- width: 90%;
-}
-.bar91 {
- width: 91%;
-}
-.bar92 {
- width: 92%;
-}
-.bar93 {
- width: 93%;
-}
-.bar94 {
- width: 94%;
-}
-.bar95 {
- width: 95%;
-}
-.bar96 {
- width: 96%;
-}
-.bar97 {
- width: 97%;
-}
-.bar98 {
- width: 98%;
-}
-.bar99 {
- width: 99%;
-}
-.bar100 {
- width: 100%;
-}
-.osm-map-box {
- height: 300px;
- width: 100%;
- margin: 10px 0;
-}
-/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
-
-/* Document
- ========================================================================== */
-
-/**
- * 1. Correct the line height in all browsers.
- * 2. Prevent adjustments of font size after orientation changes in iOS.
- */
-
-html {
- line-height: 1.15; /* 1 */
- -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/* Sections
- ========================================================================== */
-
-/**
- * Remove the margin in all browsers.
- */
-
-body {
- margin: 0;
-}
-
-/**
- * Render the `main` element consistently in IE.
- */
-
-main {
- display: block;
-}
-
-/**
- * Correct the font size and margin on `h1` elements within `section` and
- * `article` contexts in Chrome, Firefox, and Safari.
- */
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-/* Grouping content
- ========================================================================== */
-
-/**
- * 1. Add the correct box sizing in Firefox.
- * 2. Show the overflow in Edge and IE.
- */
-
-hr {
- box-sizing: content-box; /* 1 */
- height: 0; /* 1 */
- overflow: visible; /* 2 */
-}
-
-/**
- * 1. Correct the inheritance and scaling of font size in all browsers.
- * 2. Correct the odd `em` font sizing in all browsers.
- */
-
-pre {
- font-family: monospace, monospace; /* 1 */
- font-size: 1em; /* 2 */
-}
-
-/* Text-level semantics
- ========================================================================== */
-
-/**
- * Remove the gray background on active links in IE 10.
- */
-
-a {
- background-color: transparent;
-}
-
-/**
- * 1. Remove the bottom border in Chrome 57-
- * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
- */
-
-abbr[title] {
- border-bottom: none; /* 1 */
- text-decoration: underline; /* 2 */
- text-decoration: underline dotted; /* 2 */
-}
-
-/**
- * Add the correct font weight in Chrome, Edge, and Safari.
- */
-
-b,
-strong {
- font-weight: bolder;
-}
-
-/**
- * 1. Correct the inheritance and scaling of font size in all browsers.
- * 2. Correct the odd `em` font sizing in all browsers.
- */
-
-code,
-kbd,
-samp {
- font-family: monospace, monospace; /* 1 */
- font-size: 1em; /* 2 */
-}
-
-/**
- * Add the correct font size in all browsers.
- */
-
-small {
- font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` elements from affecting the line height in
- * all browsers.
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-sup {
- top: -0.5em;
-}
-
-/* Embedded content
- ========================================================================== */
-
-/**
- * Remove the border on images inside links in IE 10.
- */
-
-img {
- border-style: none;
-}
-
-/* Forms
- ========================================================================== */
-
-/**
- * 1. Change the font styles in all browsers.
- * 2. Remove the margin in Firefox and Safari.
- */
-
-button,
-input,
-optgroup,
-select,
-textarea {
- font-family: inherit; /* 1 */
- font-size: 100%; /* 1 */
- line-height: 1.15; /* 1 */
- margin: 0; /* 2 */
-}
-
-/**
- * Show the overflow in IE.
- * 1. Show the overflow in Edge.
- */
-
-button,
-input { /* 1 */
- overflow: visible;
-}
-
-/**
- * Remove the inheritance of text transform in Edge, Firefox, and IE.
- * 1. Remove the inheritance of text transform in Firefox.
- */
-
-button,
-select { /* 1 */
- text-transform: none;
-}
-
-/**
- * Correct the inability to style clickable types in iOS and Safari.
- */
-
-button,
-[type="button"],
-[type="reset"],
-[type="submit"] {
- -webkit-appearance: button;
-}
-
-/**
- * Remove the inner border and padding in Firefox.
- */
-
-button::-moz-focus-inner,
-[type="button"]::-moz-focus-inner,
-[type="reset"]::-moz-focus-inner,
-[type="submit"]::-moz-focus-inner {
- border-style: none;
- padding: 0;
-}
-
-/**
- * Restore the focus styles unset by the previous rule.
- */
-
-button:-moz-focusring,
-[type="button"]:-moz-focusring,
-[type="reset"]:-moz-focusring,
-[type="submit"]:-moz-focusring {
- outline: 1px dotted ButtonText;
-}
-
-/**
- * Correct the padding in Firefox.
- */
-
-fieldset {
- padding: 0.35em 0.75em 0.625em;
-}
-
-/**
- * 1. Correct the text wrapping in Edge and IE.
- * 2. Correct the color inheritance from `fieldset` elements in IE.
- * 3. Remove the padding so developers are not caught out when they zero out
- * `fieldset` elements in all browsers.
- */
-
-legend {
- box-sizing: border-box; /* 1 */
- color: inherit; /* 2 */
- display: table; /* 1 */
- max-width: 100%; /* 1 */
- padding: 0; /* 3 */
- white-space: normal; /* 1 */
-}
-
-/**
- * Add the correct vertical alignment in Chrome, Firefox, and Opera.
- */
-
-progress {
- vertical-align: baseline;
-}
-
-/**
- * Remove the default vertical scrollbar in IE 10+.
- */
-
-textarea {
- overflow: auto;
-}
-
-/**
- * 1. Add the correct box sizing in IE 10.
- * 2. Remove the padding in IE 10.
- */
-
-[type="checkbox"],
-[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Correct the cursor style of increment and decrement buttons in Chrome.
- */
-
-[type="number"]::-webkit-inner-spin-button,
-[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-
-/**
- * 1. Correct the odd appearance in Chrome and Safari.
- * 2. Correct the outline style in Safari.
- */
-
-[type="search"] {
- -webkit-appearance: textfield; /* 1 */
- outline-offset: -2px; /* 2 */
-}
-
-/**
- * Remove the inner padding in Chrome and Safari on macOS.
- */
-
-[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/**
- * 1. Correct the inability to style clickable types in iOS and Safari.
- * 2. Change font properties to `inherit` in Safari.
- */
-
-::-webkit-file-upload-button {
- -webkit-appearance: button; /* 1 */
- font: inherit; /* 2 */
-}
-
-/* Interactive
- ========================================================================== */
-
-/*
- * Add the correct display in Edge, IE 10+, and Firefox.
- */
-
-details {
- display: block;
-}
-
-/*
- * Add the correct display in all browsers.
- */
-
-summary {
- display: list-item;
-}
-
-/* Misc
- ========================================================================== */
-
-/**
- * Add the correct display in IE 10+.
- */
-
-template {
- display: none;
-}
-
-/**
- * Add the correct display in IE 10.
- */
-
-[hidden] {
- display: none;
-}
-
-/*
- * SearXNG, A privacy-respecting, hackable metasearch engine
- *
- * To change the colors of the site, simple edit this variables
- */
-:root {
- --color-base-font: #444;
- --color-base-font-rgb: 68, 68, 68;
- --color-base-background: #fff;
- --color-url-font: #29314d;
- --color-url-visited-font: #80b;
- --color-header-background: #f7f7f7;
- --color-header-border: #ddd;
- --color-footer-background: #f7f7f7;
- --color-footer-border: #ddd;
- --color-sidebar-border: #ddd;
- --color-sidebar-font: #000;
- --color-backtotop-font: #444;
- --color-backtotop-border: #ddd;
- --color-backtotop-background: #fff;
- --color-btn-background: #3050ff;
- --color-btn-font: #fff;
- --color-search-border: #bbb;
- --color-search-background: #fff;
- --color-search-font: #222;
- --color-search-background-hover: #3050ff;
- --color-error: #db3434;
- --color-error-background: #fae1e1;
- --color-warning: #dbba34;
- --color-warning-background: #faf5e1;
- --color-success: #42db34;
- --color-success-background: #e3fae1;
- --color-categories-item-selected-font: #3050ff;
- --color-categories-item-border-selected: #3050ff;
- --color-autocomplete-font: #000;
- --color-autocomplete-border: #bbb;
- --color-autocomplete-background: #fff;
- --color-autocomplete-background-hover: #f7f7f7;
- --color-answer-border: #ddd;
- --color-answer-font: #444;
- --color-answer-background: #f7f7f7;
- --color-result-border: #ddd;
- --color-result-url-font: #000;
- --color-result-vim-selected: #f7f7f7;
- --color-result-vim-arrow: #000bbb;
- --color-result-description-highlight-font: #000;
- --color-result-link-font: #000bbb;
- --color-result-link-font-highlight: #000bbb;
- --color-result-link-visited-font: #80b;
- --color-result-publishdate-font: #777;
- --color-result-engines-font: #777;
- --color-result-search-url-border: #ddd;
- --color-result-search-url-font: #000;
- --color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
- --color-result-image-span-font: #fff;
- --color-result-image-background: #fff;
- --color-settings-tr-hover: #f7f7f7;
- --color-settings-engine-description-font: #909090;
- --color-result-detail-font: #fff;
- --color-result-detail-label-font: lightgray;
- --color-result-detail-background: #000;
- --color-result-detail-hr: #555;
- --color-result-detail-link: #8af;
- --color-result-detail-loader-border: rgba(255, 255, 255, 0.2);
- --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0);
- --color-toolkit-badge-font: #fff;
- --color-toolkit-badge-background: #777;
- --color-toolkit-kbd-font: #fff;
- --color-toolkit-kbd-background: #000;
- --color-toolkit-dialog-border: #ddd;
- --color-toolkit-dialog-background: #fff;
- --color-toolkit-tabs-label-border: #fff;
- --color-toolkit-tabs-section-border: #ddd;
- --color-toolkit-select-background: #f7f7f7;
- --color-toolkit-select-border: #ddd;
- --color-toolkit-select-background-hover: #bbb;
- --color-toolkit-input-text-font: #222;
- --color-toolkit-checkbox-onoff-background: #ddd;
- --color-toolkit-checkbox-onoff-label-background: #3050ff;
- --color-toolkit-checkbox-onoff-checked-background: #aaa;
- --color-toolkit-checkbox-label-background: #fff;
- --color-toolkit-checkbox-label-border: #ddd;
- --color-toolkit-checkbox-input-border: #3050ff;
- --color-toolkit-engine-tooltip-border: #ddd;
- --color-toolkit-engine-tooltip-background: #fff;
- --color-toolkit-loader-border: rgba(0, 0, 0, 0.2);
- --color-toolkit-loader-borderleft: rgba(255, 255, 255, 0);
-}
-@media (prefers-color-scheme: dark) {
- :root.theme-auto {
- --color-base-font: #bbb;
- --color-base-font-rgb: 187, 187, 187;
- --color-base-background: #222;
- --color-url-font: #8af;
- --color-url-visited-font: #96b;
- --color-header-background: #181818;
- --color-header-border: #333;
- --color-footer-background: #181818;
- --color-footer-border: #333;
- --color-sidebar-border: #555;
- --color-sidebar-font: #fff;
- --color-backtotop-font: #bbb;
- --color-backtotop-border: #333;
- --color-backtotop-background: #181818;
- --color-btn-background: #58f;
- --color-btn-font: #222;
- --color-search-border: #555;
- --color-search-background: #222;
- --color-search-font: #fff;
- --color-search-background-hover: #58f;
- --color-error: #f55b5b;
- --color-error-background: #390a0a;
- --color-warning: #f1d561;
- --color-warning-background: #39300a;
- --color-success: #79f56e;
- --color-success-background: #0e390a;
- --color-categories-item-selected-font: #58f;
- --color-categories-item-border-selected: #58f;
- --color-autocomplete-font: #fff;
- --color-autocomplete-border: #555;
- --color-autocomplete-background: #222;
- --color-autocomplete-background-hover: #181818;
- --color-answer-border: #333;
- --color-answer-font: #bbb;
- --color-answer-background: #181818;
- --color-result-border: #333;
- --color-result-url-font: #fff;
- --color-result-vim-selected: #181818;
- --color-result-vim-arrow: #8af;
- --color-result-description-highlight-font: #fff;
- --color-result-link-font: #8af;
- --color-result-link-font-highlight: #8af;
- --color-result-link-visited-font: #96b;
- --color-result-publishdate-font: #888;
- --color-result-engines-font: #888;
- --color-result-search-url-border: #555;
- --color-result-search-url-font: #fff;
- --color-result-detail-font: #fff;
- --color-result-detail-label-font: lightgray;
- --color-result-detail-background: #000;
- --color-result-detail-hr: #555;
- --color-result-detail-link: #8af;
- --color-result-detail-loader-border: rgba(255, 255, 255, 0.2);
- --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0);
- --color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
- --color-result-image-span-font: #fff;
- --color-result-image-background: #222;
- --color-settings-tr-hover: #2d2d2d;
- --color-settings-engine-description-font: #909090;
- --color-toolkit-badge-font: #fff;
- --color-toolkit-badge-background: #777;
- --color-toolkit-kbd-font: #000;
- --color-toolkit-kbd-background: #fff;
- --color-toolkit-dialog-border: #555;
- --color-toolkit-dialog-background: #222;
- --color-toolkit-tabs-label-border: #222;
- --color-toolkit-tabs-section-border: #555;
- --color-toolkit-select-background: #3c3b31;
- --color-toolkit-select-border: #555;
- --color-toolkit-select-background-hover: #333;
- --color-toolkit-input-text-font: #fff;
- --color-toolkit-checkbox-onoff-background: #3c3b31;
- --color-toolkit-checkbox-onoff-label-background: #58f;
- --color-toolkit-checkbox-onoff-checked-background: #ddd;
- --color-toolkit-checkbox-label-background: #fff;
- --color-toolkit-checkbox-label-border: #333;
- --color-toolkit-checkbox-input-border: #58f;
- --color-toolkit-engine-tooltip-border: #333;
- --color-toolkit-engine-tooltip-background: #222;
- --color-toolkit-loader-border: rgba(255, 255, 255, 0.2);
- --color-toolkit-loader-borderleft: rgba(0, 0, 0, 0);
- }
-}
-:root.theme-dark {
- --color-base-font: #bbb;
- --color-base-font-rgb: 187, 187, 187;
- --color-base-background: #222;
- --color-url-font: #8af;
- --color-url-visited-font: #96b;
- --color-header-background: #181818;
- --color-header-border: #333;
- --color-footer-background: #181818;
- --color-footer-border: #333;
- --color-sidebar-border: #555;
- --color-sidebar-font: #fff;
- --color-backtotop-font: #bbb;
- --color-backtotop-border: #333;
- --color-backtotop-background: #181818;
- --color-btn-background: #58f;
- --color-btn-font: #222;
- --color-search-border: #555;
- --color-search-background: #222;
- --color-search-font: #fff;
- --color-search-background-hover: #58f;
- --color-error: #f55b5b;
- --color-error-background: #390a0a;
- --color-warning: #f1d561;
- --color-warning-background: #39300a;
- --color-success: #79f56e;
- --color-success-background: #0e390a;
- --color-categories-item-selected-font: #58f;
- --color-categories-item-border-selected: #58f;
- --color-autocomplete-font: #fff;
- --color-autocomplete-border: #555;
- --color-autocomplete-background: #222;
- --color-autocomplete-background-hover: #181818;
- --color-answer-border: #333;
- --color-answer-font: #bbb;
- --color-answer-background: #181818;
- --color-result-border: #333;
- --color-result-url-font: #fff;
- --color-result-vim-selected: #181818;
- --color-result-vim-arrow: #8af;
- --color-result-description-highlight-font: #fff;
- --color-result-link-font: #8af;
- --color-result-link-font-highlight: #8af;
- --color-result-link-visited-font: #96b;
- --color-result-publishdate-font: #888;
- --color-result-engines-font: #888;
- --color-result-search-url-border: #555;
- --color-result-search-url-font: #fff;
- --color-result-detail-font: #fff;
- --color-result-detail-label-font: lightgray;
- --color-result-detail-background: #000;
- --color-result-detail-hr: #555;
- --color-result-detail-link: #8af;
- --color-result-detail-loader-border: rgba(255, 255, 255, 0.2);
- --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0);
- --color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
- --color-result-image-span-font: #fff;
- --color-result-image-background: #222;
- --color-settings-tr-hover: #2d2d2d;
- --color-settings-engine-description-font: #909090;
- --color-toolkit-badge-font: #fff;
- --color-toolkit-badge-background: #777;
- --color-toolkit-kbd-font: #000;
- --color-toolkit-kbd-background: #fff;
- --color-toolkit-dialog-border: #555;
- --color-toolkit-dialog-background: #222;
- --color-toolkit-tabs-label-border: #222;
- --color-toolkit-tabs-section-border: #555;
- --color-toolkit-select-background: #3c3b31;
- --color-toolkit-select-border: #555;
- --color-toolkit-select-background-hover: #333;
- --color-toolkit-input-text-font: #fff;
- --color-toolkit-checkbox-onoff-background: #3c3b31;
- --color-toolkit-checkbox-onoff-label-background: #58f;
- --color-toolkit-checkbox-onoff-checked-background: #ddd;
- --color-toolkit-checkbox-label-background: #fff;
- --color-toolkit-checkbox-label-border: #333;
- --color-toolkit-checkbox-input-border: #58f;
- --color-toolkit-engine-tooltip-border: #333;
- --color-toolkit-engine-tooltip-background: #222;
- --color-toolkit-loader-border: rgba(255, 255, 255, 0.2);
- --color-toolkit-loader-borderleft: rgba(0, 0, 0, 0);
-}
-/*
-* SearXNG, A privacy-respecting, hackable metasearch engine
-*/
-.code-highlight pre {
- overflow: auto;
- background-color: inherit;
- color: inherit;
- border: inherit;
-}
-/*
- this file is generated automatically by searxng_extra/update/update_pygments.py
- using pygments version 2.10.0
-*/
-.code-highlight .linenos {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: default;
- margin-right: 8px;
- text-align: right;
-}
-.code-highlight .linenos::selection {
- background: transparent;
- /* WebKit/Blink Browsers */
-}
-.code-highlight .linenos::-moz-selection {
- background: transparent;
- /* Gecko Browsers */
-}
-.code-highlight pre {
- line-height: 125%;
-}
-.code-highlight td.linenos .normal {
- color: inherit;
- background-color: transparent;
- padding-left: 5px;
- padding-right: 5px;
-}
-.code-highlight span.linenos {
- color: inherit;
- background-color: transparent;
- padding-left: 5px;
- padding-right: 5px;
-}
-.code-highlight td.linenos .special {
- color: #000000;
- background-color: #ffffc0;
- padding-left: 5px;
- padding-right: 5px;
-}
-.code-highlight span.linenos.special {
- color: #000000;
- background-color: #ffffc0;
- padding-left: 5px;
- padding-right: 5px;
-}
-.code-highlight .hll {
- background-color: #ffffcc;
-}
-.code-highlight {
- background: #f8f8f8;
-}
-.code-highlight .c {
- color: #408080;
- font-style: italic;
-}
-/* Comment */
-.code-highlight .err {
- border: 1px solid #FF0000;
-}
-/* Error */
-.code-highlight .k {
- color: #008000;
- font-weight: bold;
-}
-/* Keyword */
-.code-highlight .o {
- color: #666666;
-}
-/* Operator */
-.code-highlight .ch {
- color: #408080;
- font-style: italic;
-}
-/* Comment.Hashbang */
-.code-highlight .cm {
- color: #408080;
- font-style: italic;
-}
-/* Comment.Multiline */
-.code-highlight .cp {
- color: #BC7A00;
-}
-/* Comment.Preproc */
-.code-highlight .cpf {
- color: #408080;
- font-style: italic;
-}
-/* Comment.PreprocFile */
-.code-highlight .c1 {
- color: #408080;
- font-style: italic;
-}
-/* Comment.Single */
-.code-highlight .cs {
- color: #408080;
- font-style: italic;
-}
-/* Comment.Special */
-.code-highlight .gd {
- color: #A00000;
-}
-/* Generic.Deleted */
-.code-highlight .ge {
- font-style: italic;
-}
-/* Generic.Emph */
-.code-highlight .gr {
- color: #FF0000;
-}
-/* Generic.Error */
-.code-highlight .gh {
- color: #000080;
- font-weight: bold;
-}
-/* Generic.Heading */
-.code-highlight .gi {
- color: #00A000;
-}
-/* Generic.Inserted */
-.code-highlight .go {
- color: #888888;
-}
-/* Generic.Output */
-.code-highlight .gp {
- color: #000080;
- font-weight: bold;
-}
-/* Generic.Prompt */
-.code-highlight .gs {
- font-weight: bold;
-}
-/* Generic.Strong */
-.code-highlight .gu {
- color: #800080;
- font-weight: bold;
-}
-/* Generic.Subheading */
-.code-highlight .gt {
- color: #0044DD;
-}
-/* Generic.Traceback */
-.code-highlight .kc {
- color: #008000;
- font-weight: bold;
-}
-/* Keyword.Constant */
-.code-highlight .kd {
- color: #008000;
- font-weight: bold;
-}
-/* Keyword.Declaration */
-.code-highlight .kn {
- color: #008000;
- font-weight: bold;
-}
-/* Keyword.Namespace */
-.code-highlight .kp {
- color: #008000;
-}
-/* Keyword.Pseudo */
-.code-highlight .kr {
- color: #008000;
- font-weight: bold;
-}
-/* Keyword.Reserved */
-.code-highlight .kt {
- color: #B00040;
-}
-/* Keyword.Type */
-.code-highlight .m {
- color: #666666;
-}
-/* Literal.Number */
-.code-highlight .s {
- color: #BA2121;
-}
-/* Literal.String */
-.code-highlight .na {
- color: #7D9029;
-}
-/* Name.Attribute */
-.code-highlight .nb {
- color: #008000;
-}
-/* Name.Builtin */
-.code-highlight .nc {
- color: #0000FF;
- font-weight: bold;
-}
-/* Name.Class */
-.code-highlight .no {
- color: #880000;
-}
-/* Name.Constant */
-.code-highlight .nd {
- color: #AA22FF;
-}
-/* Name.Decorator */
-.code-highlight .ni {
- color: #999999;
- font-weight: bold;
-}
-/* Name.Entity */
-.code-highlight .ne {
- color: #D2413A;
- font-weight: bold;
-}
-/* Name.Exception */
-.code-highlight .nf {
- color: #0000FF;
-}
-/* Name.Function */
-.code-highlight .nl {
- color: #A0A000;
-}
-/* Name.Label */
-.code-highlight .nn {
- color: #0000FF;
- font-weight: bold;
-}
-/* Name.Namespace */
-.code-highlight .nt {
- color: #008000;
- font-weight: bold;
-}
-/* Name.Tag */
-.code-highlight .nv {
- color: #19177C;
-}
-/* Name.Variable */
-.code-highlight .ow {
- color: #AA22FF;
- font-weight: bold;
-}
-/* Operator.Word */
-.code-highlight .w {
- color: #bbbbbb;
-}
-/* Text.Whitespace */
-.code-highlight .mb {
- color: #666666;
-}
-/* Literal.Number.Bin */
-.code-highlight .mf {
- color: #666666;
-}
-/* Literal.Number.Float */
-.code-highlight .mh {
- color: #666666;
-}
-/* Literal.Number.Hex */
-.code-highlight .mi {
- color: #666666;
-}
-/* Literal.Number.Integer */
-.code-highlight .mo {
- color: #666666;
-}
-/* Literal.Number.Oct */
-.code-highlight .sa {
- color: #BA2121;
-}
-/* Literal.String.Affix */
-.code-highlight .sb {
- color: #BA2121;
-}
-/* Literal.String.Backtick */
-.code-highlight .sc {
- color: #BA2121;
-}
-/* Literal.String.Char */
-.code-highlight .dl {
- color: #BA2121;
-}
-/* Literal.String.Delimiter */
-.code-highlight .sd {
- color: #BA2121;
- font-style: italic;
-}
-/* Literal.String.Doc */
-.code-highlight .s2 {
- color: #BA2121;
-}
-/* Literal.String.Double */
-.code-highlight .se {
- color: #BB6622;
- font-weight: bold;
-}
-/* Literal.String.Escape */
-.code-highlight .sh {
- color: #BA2121;
-}
-/* Literal.String.Heredoc */
-.code-highlight .si {
- color: #BB6688;
- font-weight: bold;
-}
-/* Literal.String.Interpol */
-.code-highlight .sx {
- color: #008000;
-}
-/* Literal.String.Other */
-.code-highlight .sr {
- color: #BB6688;
-}
-/* Literal.String.Regex */
-.code-highlight .s1 {
- color: #BA2121;
-}
-/* Literal.String.Single */
-.code-highlight .ss {
- color: #19177C;
-}
-/* Literal.String.Symbol */
-.code-highlight .bp {
- color: #008000;
-}
-/* Name.Builtin.Pseudo */
-.code-highlight .fm {
- color: #0000FF;
-}
-/* Name.Function.Magic */
-.code-highlight .vc {
- color: #19177C;
-}
-/* Name.Variable.Class */
-.code-highlight .vg {
- color: #19177C;
-}
-/* Name.Variable.Global */
-.code-highlight .vi {
- color: #19177C;
-}
-/* Name.Variable.Instance */
-.code-highlight .vm {
- color: #19177C;
-}
-/* Name.Variable.Magic */
-.code-highlight .il {
- color: #666666;
-}
-/* Literal.Number.Integer.Long */
-html.no-js .hide_if_nojs {
- display: none;
-}
-html.js .show_if_nojs {
- display: none;
-}
-.center {
- text-align: center;
-}
-.right {
- float: right;
-}
-.left {
- float: left;
-}
-.invisible {
- display: none !important;
-}
-.list-unstyled {
- list-style-type: none;
-}
-.list-unstyled li {
- margin-top: 4px;
- margin-bottom: 4px;
-}
-.danger {
- background-color: var(--color-error-background);
-}
-.warning {
- background: var(--color-warning-background);
-}
-.success {
- background: var(--color-success-background);
-}
-.badge {
- display: inline-block;
- color: var(--color-toolkit-badge-font);
- background-color: var(--color-toolkit-badge-background);
- text-align: center;
- white-space: nowrap;
- vertical-align: baseline;
- min-width: 10px;
- padding: 1px 5px;
- border-radius: 5px;
-}
-kbd {
- padding: 2px 4px;
- margin: 1px;
- font-size: 90%;
- color: var(--color-toolkit-kbd-font);
- background: var(--color-toolkit-kbd-background);
-}
-table {
- width: 100%;
-}
-table.striped tr {
- border-bottom: 1px solid var(--color-settings-tr-hover);
-}
-th {
- padding: 0.4em;
-}
-td {
- padding: 0 4px;
-}
-tr:hover {
- background: var(--color-settings-tr-hover) !important;
-}
-div.selectable_url {
- display: block;
- border: 1px solid var(--color-result-search-url-border);
- padding: 4px;
- color: var(--color-result-search-url-font);
- margin: 0.1em;
- overflow: hidden;
- height: 1.2em;
- line-height: 1.2em;
- border-radius: 5px;
-}
-div.selectable_url pre {
- display: block;
- font-size: 0.8em;
- word-break: break-all;
- margin: 0.1em;
- -webkit-user-select: all;
- -moz-user-select: all;
- -ms-user-select: element;
- user-select: all;
-}
-.dialog-error {
- position: relative;
- display: flex;
- padding: 1rem;
- margin: 0 0 1em 0;
- border: 1px solid var(--color-toolkit-dialog-border);
- text-align: left;
- border-radius: 10px;
- color: var(--color-error);
- background: var(--color-error-background);
- border-color: var(--color-error);
-}
-.dialog-error .close {
- float: right;
- position: relative;
- top: -3px;
- color: inherit;
- font-size: 1.5em;
-}
-.dialog-error ul,
-.dialog-error ol,
-.dialog-error p {
- margin: 1px 0 0 0;
-}
-.dialog-error table {
- width: auto;
-}
-.dialog-error tr {
- vertical-align: text-top;
-}
-.dialog-error tr:hover {
- background: transparent !important;
-}
-.dialog-error td {
- padding: 0 1em 0 0;
-}
-.dialog-error h4 {
- margin-top: 0.3em;
- margin-bottom: 0.3em;
-}
-.dialog-warning {
- position: relative;
- display: flex;
- padding: 1rem;
- margin: 0 0 1em 0;
- border: 1px solid var(--color-toolkit-dialog-border);
- text-align: left;
- border-radius: 10px;
- color: var(--color-warning);
- background: var(--color-warning-background);
- border-color: var(--color-warning);
-}
-.dialog-warning .close {
- float: right;
- position: relative;
- top: -3px;
- color: inherit;
- font-size: 1.5em;
-}
-.dialog-warning ul,
-.dialog-warning ol,
-.dialog-warning p {
- margin: 1px 0 0 0;
-}
-.dialog-warning table {
- width: auto;
-}
-.dialog-warning tr {
- vertical-align: text-top;
-}
-.dialog-warning tr:hover {
- background: transparent !important;
-}
-.dialog-warning td {
- padding: 0 1em 0 0;
-}
-.dialog-warning h4 {
- margin-top: 0.3em;
- margin-bottom: 0.3em;
-}
-.dialog-modal {
- position: relative;
- display: flex;
- padding: 1rem;
- margin: 0 0 1em 0;
- border: 1px solid var(--color-toolkit-dialog-border);
- text-align: left;
- border-radius: 10px;
- display: block;
- background: var(--color-toolkit-dialog-background);
- position: fixed;
- top: 50%;
- left: 50%;
- margin: 0 auto;
- transform: translate(-50%, -50%);
- z-index: 10000000;
-}
-.dialog-modal .close {
- float: right;
- position: relative;
- top: -3px;
- color: inherit;
- font-size: 1.5em;
-}
-.dialog-modal ul,
-.dialog-modal ol,
-.dialog-modal p {
- margin: 1px 0 0 0;
-}
-.dialog-modal table {
- width: auto;
-}
-.dialog-modal tr {
- vertical-align: text-top;
-}
-.dialog-modal tr:hover {
- background: transparent !important;
-}
-.dialog-modal td {
- padding: 0 1em 0 0;
-}
-.dialog-modal h4 {
- margin-top: 0.3em;
- margin-bottom: 0.3em;
-}
-.dialog-modal h3 {
- margin-top: 0;
-}
-.btn-collapse {
- cursor: pointer;
-}
-.scrollx {
- overflow-x: auto;
- overflow-y: hidden;
- display: block;
- padding: 0;
- margin: 0;
- border: none;
-}
-/* -- tabs -- */
-.tabs .tabs > label {
- font-size: 90%;
-}
-.tabs {
- display: -webkit-box;
- display: -moz-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- flex-wrap: wrap;
- width: 100%;
- min-width: 100%;
-}
-.tabs > * {
- order: 2;
-}
-.tabs > input[type=radio] {
- display: none;
-}
-.tabs > label {
- order: 1;
- padding: 0.7em;
- margin: 0 0.7em;
- letter-spacing: 0.5px;
- text-transform: uppercase;
- border: solid var(--color-toolkit-tabs-label-border);
- border-width: 0 0 2px 0;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: pointer;
-}
-.tabs > label:hover {
- border-bottom: 2px solid var(--color-categories-item-border-selected);
-}
-.tabs > section {
- min-width: 100%;
- padding: 0.7rem 0;
- box-sizing: border-box;
- border-top: 1px solid var(--color-toolkit-tabs-section-border);
- display: none;
-}
-.tabs > label:last-of-type {
- border-bottom: 2px solid var(--color-categories-item-border-selected);
- background: var(--color-categories-item-selected);
- color: var(--color-categories-item-selected-font);
- letter-spacing: -0.1px;
-}
-.tabs > section:last-of-type {
- display: block;
-}
-html body .tabs > input:checked ~ section {
- display: none;
-}
-html body .tabs > input:checked ~ label {
- position: inherited;
- background: inherit;
- border-bottom: 2px solid transparent;
- font-weight: normal;
- color: inherit;
-}
-html body .tabs > input:checked ~ label:hover {
- border-bottom: 2px solid var(--color-categories-item-border-selected);
-}
-html body .tabs > input:checked + label {
- border-bottom: 2px solid var(--color-categories-item-border-selected);
- background: var(--color-categories-item-selected);
- color: var(--color-categories-item-selected-font);
-}
-html body .tabs > input:checked + label + section {
- display: block;
-}
-/* -- select -- */
-select {
- height: 2.4rem;
- margin: 0 1rem 0 0;
- padding: 0.2rem !important;
- color: var(--color-search-font);
- font-size: 0.9rem;
- z-index: 2;
-}
-select:hover,
-select:focus {
- cursor: pointer;
-}
-@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) {
- select {
- appearance: none;
- -webkit-appearance: none;
- -moz-appearance: none;
- border-width: 0 2rem 0 0;
- border-color: transparent;
- background: url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%3Cg%3E%3Cpolygon%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0A%3C%2Fsvg%3E") no-repeat;
- background-position-x: calc(100% + 2rem);
- background-size: 2rem;
- background-origin: content-box;
- background-color: var(--color-toolkit-select-background);
- outline: medium none;
- text-overflow: ellipsis;
- border-radius: 5px;
- }
- select:hover,
- select:focus {
- background-color: var(--color-toolkit-select-background-hover);
- }
- select option {
- background-color: var(--color-base-background);
- }
- @media (prefers-color-scheme: dark) {
- html.theme-auto select,
- html.theme-dark select {
- background-image: url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%3Cg%3E%3Cpolygon%20fill%3D%22%23ddd%22%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0A%3C%2Fsvg%3E");
- }
- }
- html.theme-dark select {
- background-image: url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%3Cg%3E%3Cpolygon%20fill%3D%22%23ddd%22%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0A%3C%2Fsvg%3E");
- }
-}
-/* -- checkbox-onoff -- */
-@supports (border-radius: 50px) {
- .checkbox-onoff {
- display: inline-block;
- width: 40px;
- height: 10px;
- background: var(--color-toolkit-checkbox-onoff-background);
- margin: 8px 1rem;
- position: relative;
- border-radius: 50px;
- }
- .checkbox-onoff label {
- display: block;
- width: 20px;
- height: 20px;
- position: absolute;
- top: -5px;
- cursor: pointer;
- border-radius: 50px;
- transition: all 0.4s ease;
- left: 27px;
- background-color: var(--color-toolkit-checkbox-onoff-label-background);
- }
- .checkbox-onoff input[type=checkbox] {
- visibility: hidden;
- }
- .checkbox-onoff input[type=checkbox]:checked + label {
- left: -5px;
- background: var(--color-toolkit-checkbox-onoff-checked-background);
- }
-}
-/* -- checkbox -- */
-@supports (transform: rotate(-45deg)) {
- .checkbox {
- width: 20px;
- position: relative;
- margin: 20px auto;
- }
- .checkbox label {
- width: 20px;
- height: 20px;
- cursor: pointer;
- position: absolute;
- top: 0;
- left: 0;
- background: var(--color-toolkit-checkbox-label-background);
- border-radius: 10px;
- }
- .checkbox label::after {
- content: '';
- width: 9px;
- height: 5px;
- position: absolute;
- top: 4px;
- left: 4px;
- border: 3px solid var(--color-toolkit-checkbox-label-border);
- border-top: none;
- border-right: none;
- background: transparent;
- opacity: 0;
- transform: rotate(-45deg);
- }
- .checkbox input[type=checkbox] {
- visibility: hidden;
- }
- .checkbox input[type=checkbox]:checked + label::after {
- border-color: var(--color-toolkit-checkbox-input-border);
- opacity: 1;
- }
- .checkbox input[disabled] + label {
- background-color: transparent !important;
- cursor: inherit;
- }
- .checkbox input:not(:checked):not([readonly]):not([disabled]) + label:hover::after {
- opacity: 0.5;
- }
-}
-@media screen and (max-width: 50em) {
- .tabs > label {
- width: 100%;
- }
-}
-/* -- loader -- */
-.loader,
-.loader::after {
- border-radius: 50%;
- width: 2em;
- height: 2em;
-}
-.loader {
- margin: 1em auto;
- font-size: 10px;
- position: relative;
- text-indent: -9999em;
- border-top: 0.5em solid var(--color-toolkit-loader-border);
- border-right: 0.5em solid var(--color-toolkit-loader-border);
- border-bottom: 0.5em solid var(--color-toolkit-loader-border);
- border-left: 0.5em solid var(--color-toolkit-loader-borderleft);
- -webkit-transform: translateZ(0);
- -ms-transform: translateZ(0);
- transform: translateZ(0);
- -webkit-animation: load8 1.2s infinite linear;
- animation: load8 1.2s infinite linear;
-}
-@-webkit-keyframes load8 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-@keyframes load8 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-/* -- engine-tooltip -- */
-.engine-tooltip {
- display: none;
- position: absolute;
- padding: 0.5rem 1rem;
- margin: 0 0 0 2rem;
- border: 1px solid var(--color-toolkit-engine-tooltip-border);
- background: var(--color-toolkit-engine-tooltip-background);
- font-size: 14px;
- font-weight: normal;
- z-index: 1000000;
- text-align: left;
- border-radius: 10px;
-}
-th:hover .engine-tooltip,
-td:hover .engine-tooltip,
-.engine-tooltip:hover {
- display: inline-block;
-}
-/* -- stacked bar chart -- */
-.stacked-bar-chart {
- margin: 0;
- padding: 0 0.125rem 0 4rem;
- width: 100%;
- width: -moz-available;
- width: -webkit-fill-available;
- width: fill;
- flex-direction: row;
- flex-wrap: nowrap;
- align-items: center;
- display: inline-flex;
-}
-.stacked-bar-chart-value {
- width: 3rem;
- display: inline-block;
- position: absolute;
- padding: 0 0.5rem;
- text-align: right;
-}
-.stacked-bar-chart-base {
- display: flex;
- flex-shrink: 0;
- flex-grow: 0;
- flex-basis: unset;
-}
-.stacked-bar-chart-median {
- display: flex;
- flex-shrink: 0;
- flex-grow: 0;
- flex-basis: unset;
- background: var(--color-base-font);
- border: 1px solid rgba(var(--color-base-font-rgb), 0.9);
- padding: 0.3rem 0;
-}
-.stacked-bar-chart-rate80 {
- display: flex;
- flex-shrink: 0;
- flex-grow: 0;
- flex-basis: unset;
- background: transparent;
- border: 1px solid rgba(var(--color-base-font-rgb), 0.3);
- padding: 0.3rem 0;
-}
-.stacked-bar-chart-rate95 {
- display: flex;
- flex-shrink: 0;
- flex-grow: 0;
- flex-basis: unset;
- background: transparent;
- border-bottom: 1px dotted rgba(var(--color-base-font-rgb), 0.5);
- padding: 0;
-}
-.stacked-bar-chart-rate100 {
- display: flex;
- flex-shrink: 0;
- flex-grow: 0;
- flex-basis: unset;
- background: transparent;
- border-left: 1px solid rgba(var(--color-base-font-rgb), 0.9);
- padding: 0.4rem 0;
- width: 1px;
-}
-/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */
-.autocomplete {
- position: absolute;
- max-height: 0;
- overflow-y: hidden;
- text-align: left;
- border-radius: 10px;
-}
-.autocomplete:active,
-.autocomplete:focus,
-.autocomplete:hover {
- background-color: var(--color-autocomplete-background);
-}
-.autocomplete:empty {
- display: none;
-}
-.autocomplete > ul {
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-.autocomplete > ul > li {
- cursor: pointer;
- padding: 8px 0 8px 8px;
-}
-.autocomplete > ul > li.active,
-.autocomplete > ul > li:active,
-.autocomplete > ul > li:focus,
-.autocomplete > ul > li:hover {
- background-color: var(--color-autocomplete-background-hover);
-}
-.autocomplete > ul > li.active a:active,
-.autocomplete > ul > li:active a:active,
-.autocomplete > ul > li:focus a:active,
-.autocomplete > ul > li:hover a:active,
-.autocomplete > ul > li.active a:focus,
-.autocomplete > ul > li:active a:focus,
-.autocomplete > ul > li:focus a:focus,
-.autocomplete > ul > li:hover a:focus,
-.autocomplete > ul > li.active a:hover,
-.autocomplete > ul > li:active a:hover,
-.autocomplete > ul > li:focus a:hover,
-.autocomplete > ul > li:hover a:hover {
- text-decoration: none;
-}
-.autocomplete > ul > li.locked {
- cursor: inherit;
-}
-.autocomplete.open {
- display: block;
- background-color: var(--color-autocomplete-background);
- color: var(--color-autocomplete-font);
- border: 1px solid var(--color-autocomplete-border);
- max-height: 500px;
- overflow-y: auto;
- z-index: 100;
-}
-.autocomplete.open:empty {
- display: none;
-}
-@media screen and (max-width: 50em) {
- .autocomplete {
- bottom: 0;
- }
- .autocomplete > ul > li {
- border-bottom: 1px solid var(--color-result-top-border);
- text-align: left;
- }
-}
-#main_results #results.image-detail-open.only_template_images {
- width: min(98%, 59.25rem) !important;
-}
-#main_results #results.only_template_images.image-detail-open #backToTop {
- left: 56.75rem !important;
- right: inherit;
-}
-article.result-images .detail {
- display: none;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail {
- display: flex;
- flex-direction: column;
- position: fixed;
- left: 60rem;
- right: 0;
- top: 7.75rem;
- transition: top 0.064s ease-in 0s;
- bottom: 0;
- background: var(--color-result-detail-background);
- border: 1px solid var(--color-result-detail-background);
- z-index: 10000;
- padding: 4rem 3rem 3rem 3rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source {
- display: block;
- flex: 1;
- text-align: left;
- width: 100%;
- border: none;
- text-decoration: none;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img {
- padding: 0;
- margin: 0;
- border: none;
- object-fit: contain;
- width: inherit;
- max-width: 100%;
- min-height: inherit;
- max-height: calc(100vh - 25rem - 7rem);
- background: inherit;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels {
- color: var(--color-result-detail-font);
- max-height: 16rem;
- min-height: 16rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels hr {
- border-top: 1px solid var(--color-result-detail-hr);
- border-bottom: none;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels h4 {
- height: 2rem;
- overflow: hidden;
- text-overflow: ellipsis;
- font-size: 0.9rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p {
- color: var(--color-result-detail-label-font);
- font-size: 0.9rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p span {
- display: inline-block;
- width: 12rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels h4,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a {
- text-align: left;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-content {
- height: 2rem;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-url {
- white-space: nowrap;
- overflow-x: hidden;
- text-overflow: ellipsis;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-content:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-url:hover {
- position: relative;
- overflow: inherit !important;
- background: var(--color-result-detail-background);
- text-overflow: inherit !important;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:visited,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:active {
- color: var(--color-result-detail-link);
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:hover {
- text-decoration: underline;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close {
- top: 1rem;
- left: 1rem;
- padding: 0.4rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous {
- top: 1rem;
- right: 6rem;
- padding: 0.4rem 0.5rem 0.4rem 0.3rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next {
- top: 1rem;
- right: 2rem;
- padding: 0.4rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous {
- border-radius: 50%;
- display: block;
- width: 1.5rem;
- height: 1.5rem;
- position: absolute;
- filter: opacity(40%);
- z-index: 2000002;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close span,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next span,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous span {
- display: block;
- width: 1.5rem;
- height: 1.5rem;
- text-align: center;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next span::before,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous span::before {
- vertical-align: sub;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:visited,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:active,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:visited,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:active,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:visited,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:active {
- color: var(--color-result-detail-font);
- background: var(--color-result-detail-background);
- border: 1px solid var(--color-result-detail-font);
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:focus,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:focus,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:focus,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:hover {
- filter: opacity(80%);
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .loader {
- position: absolute;
- top: 1rem;
- right: 50%;
- border-top: 0.5em solid var(--color-result-detail-loader-border);
- border-right: 0.5em solid var(--color-result-detail-loader-border);
- border-bottom: 0.5em solid var(--color-result-detail-loader-border);
- border-left: 0.5em solid var(--color-result-detail-loader-borderleft);
-}
-#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail {
- top: 0;
-}
-#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail a.result-images-source img {
- max-height: calc(100vh - 25rem);
-}
-@media screen and (max-width: 80em) {
- #results.image-detail-open article.result-images[data-vim-selected] .detail {
- top: 0;
- left: 0;
- }
- #results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source {
- display: flex;
- flex-direction: column;
- justify-content: center;
- }
- #results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img {
- width: 100%;
- max-height: calc(100vh - 24rem);
- }
- #results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next {
- right: 1rem;
- }
-}
-@media screen and (max-width: 50em) {
- #results.image-detail-open article.result-images[data-vim-selected] .detail {
- top: 0;
- left: 0;
- padding: 1rem;
- }
- #results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img {
- width: 100%;
- max-height: calc(100vh - 20rem);
- margin: 0;
- }
- #results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p span {
- width: inherit;
- margin-right: 1rem;
- }
-}
-.dialog-modal {
- animation-name: dialogmodal;
- animation-duration: 0.13s;
-}
-@keyframes dialogmodal {
- 0% {
- opacity: 0;
- }
- 50% {
- opacity: 0.5;
- transform: translate(-50%, -50%) scale(1.05);
- }
-}
-#main_index {
- margin-top: 26vh;
-}
-#main_index #linkto_preferences {
- right: 1.8rem;
-}
-.index {
- text-align: center;
-}
-.index .title {
- background: url('../img/searxng.png') no-repeat;
- min-height: 4rem;
- margin: 4rem auto;
- background-position: center;
- background-size: contain;
-}
-.index h1 {
- font-size: 4em;
- visibility: hidden;
-}
-.index #search,
-.index #search_header {
- margin: 0 auto;
- background: inherit;
- border: inherit;
- padding: 0;
- display: block;
-}
-.index .search_filters {
- display: block;
- margin: 1em 0;
-}
-.index .category label {
- padding: 6px 10px;
- border-bottom: initial !important;
-}
-@media screen and (max-width: 80em) {
- div.title h1 {
- font-size: 1em;
- }
- #main_index {
- margin-top: 6em;
- }
-}
-@media screen and (max-width: 50em) {
- #main_index {
- margin-top: 0;
- }
-}
-#tab-contentquery table td,
-#tab-contentquery table th {
- text-align: left !important;
- height: 3rem;
-}
-#main_preferences form {
- width: 100%;
-}
-#main_preferences fieldset {
- margin: 8px;
- border: none;
-}
-#main_preferences legend {
- margin: 0;
- padding: 5px 0 0 0;
- display: block;
- float: left;
- width: 300px;
-}
-#main_preferences .value {
- margin: 0;
- padding: 0;
- float: left;
- width: 15em;
-}
-#main_preferences .value select,
-#main_preferences .value input[type="text"] {
- font-size: inherit !important;
- margin: 0 1rem 0 0;
-}
-#main_preferences .value select {
- width: 14rem;
-}
-#main_preferences .value input[type="text"] {
- width: 13.25rem;
- color: var(--color-toolkit-input-text-font);
- border: none;
- background: none repeat scroll 0 0 var(--color-toolkit-select-background);
- padding: 0.2rem 0.4rem;
- height: 2rem;
- border-radius: 5px;
-}
-#main_preferences .value input[type="text"]:hover,
-#main_preferences .value input[type="text"]:focus {
- background-color: var(--color-toolkit-select-background-hover);
-}
-#main_preferences .value select:focus,
-#main_preferences .value input:focus {
- outline: none;
- box-shadow: 0 0 1px 1px var(--color-btn-background);
-}
-#main_preferences .description {
- margin: 0;
- padding: 5px 0 0 0;
- float: left;
- width: 50%;
- color: var(--color-settings-engine-description-font);
- font-size: 90%;
-}
-#main_preferences table {
- border-collapse: collapse;
-}
-#main_preferences table td {
- text-align: center;
-}
-#main_preferences table.cookies {
- width: 100%;
-}
-#main_preferences table.cookies th,
-#main_preferences table.cookies td {
- text-align: left;
- font-family: monospace;
- font-size: 1rem;
- padding: 0.5em;
- vertical-align: top;
-}
-#main_preferences table.cookies td:first-child {
- word-break: keep-all;
- width: 14rem;
- padding-right: 1rem;
-}
-#main_preferences table.cookies td:last-child {
- word-break: break-all;
-}
-#main_preferences table.cookies > tbody > tr:nth-child(even) > th,
-#main_preferences table.cookies > tbody > tr:nth-child(even) > td {
- background-color: var(--color-settings-tr-hover);
-}
-#main_preferences .category {
- margin-right: 0.5rem;
-}
-#main_preferences .category label {
- border: 2px solid transparent;
- padding: 0.2rem 0.4rem;
- border-radius: 5px;
-}
-#main_preferences .category input[type="checkbox"]:checked + label {
- border: 2px solid var(--color-categories-item-border-selected);
-}
-#main_preferences .name,
-#main_preferences .shortcut {
- text-align: left;
-}
-#main_preferences .preferences_back {
- background: none repeat scroll 0 0 var(--color-btn-background);
- color: var(--color-btn-font);
- border: 0 none;
- border-radius: 10px;
- cursor: pointer;
- display: inline-block;
- margin: 2px 4px;
- padding: 0.7em;
-}
-#main_preferences .preferences_back a {
- color: var(--color-settings-return-font);
-}
-#main_preferences .preferences_back a::first-letter {
- text-transform: uppercase;
-}
-#main_preferences div.selectable_url pre {
- width: 100%;
-}
-#main_preferences th.name .engine-tooltip {
- margin-top: 1.8rem;
- left: calc((100% - 85em) / 2 + 10em);
- max-width: 40rem;
-}
-#main_preferences th.name .engine-tooltip .engine-description {
- margin-top: 0.5rem;
-}
-@media screen and (max-width: 80em) {
- .preferences_back {
- clear: both;
- }
- .engine-tooltip {
- left: 10em !important;
- }
-}
-/*
-* SearXNG, A privacy-respecting, hackable metasearch engine
-*/
-#search {
- padding: 0;
- margin: 0;
-}
-#search_header {
- padding: 1.5em 2em 0 7rem;
- margin: 0;
- background: var(--color-header-background);
- border-bottom: 1px solid var(--color-header-border);
- display: grid;
- column-gap: 1.2rem;
- row-gap: 1rem;
- grid-template-columns: 3rem 1fr;
- grid-template-areas: "logo search" "spacer categories";
-}
-.category {
- display: inline-block;
- position: relative;
- margin-right: 1rem;
- padding: 0;
-}
-.category input {
- display: none;
-}
-.category label {
- cursor: pointer;
- padding: 0.2rem 0;
- display: inline-flex;
- text-transform: capitalize;
- font-size: 0.9em;
- border-bottom: 2px solid transparent;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-.category label svg {
- padding-right: 0.2rem;
-}
-.category label div.category_name {
- margin: auto 0;
-}
-.category input[type="checkbox"]:checked + label {
- color: var(--color-categories-item-selected-font);
- border-bottom: 2px solid var(--color-categories-item-border-selected);
-}
-#search_logo {
- grid-area: logo;
- display: flex;
- align-items: center;
- justify-content: center;
-}
-#search_logo svg {
- flex: 1;
- width: 30px;
- height: 30px;
- margin: 0.5rem 0 auto 0;
-}
-.search_categories {
- grid-area: categories;
-}
-.search_box {
- margin: 0;
- padding: 0;
- grid-area: search;
- display: inline-flex;
- flex-direction: row;
- white-space: nowrap;
-}
-#clear_search {
- display: block;
- border-collapse: separate;
- box-sizing: border-box;
- width: 1.8em;
- margin: 0;
- padding: 8px 2px;
- background: none repeat scroll 0 0 var(--color-search-background);
- border-top: 1px solid var(--color-search-border);
- border-bottom: 1px solid var(--color-search-border);
- border-right: none;
- border-left: none;
- border-radius: 0;
- outline: none;
- color: var(--color-search-font);
- font-size: 16px;
- z-index: 10000;
-}
-#clear_search:hover {
- color: var(--color-search-background-hover);
-}
-#clear_search.empty * {
- display: none;
-}
-#q,
-#send_search {
- display: block !important;
- border-collapse: separate;
- box-sizing: border-box;
- margin: 0;
- padding: 10px;
- background: none repeat scroll 0 0 var(--color-search-background);
- border: 1px solid var(--color-search-border);
- border-radius: 0;
- outline: none;
- color: var(--color-search-font);
- font-size: 16px;
- z-index: 2;
-}
-#q {
- outline: medium none;
- padding-left: 12px;
- padding-right: 0 !important;
- border-right: none;
- width: 40rem;
- border-radius: 10px 0 0 10px;
-}
-#q::-ms-clear,
-#q::-webkit-search-cancel-button {
- display: none;
-}
-#send_search {
- border-left: none;
- border-radius: 0 10px 10px 0;
-}
-#send_search:hover {
- cursor: pointer;
- background-color: var(--color-search-background-hover);
- color: var(--color-search-background);
-}
-.no-js #clear_search,
-.no-js #send_search {
- width: auto !important;
- border-left: 1px solid var(--color-search-border);
- padding: 10px;
-}
-.search_filters {
- margin: 0.6rem 0 0 10.6rem;
-}
-.search_filters select {
- background-color: inherit;
-}
-.search_filters select:hover,
-.search_filters select:focus {
- color: var(--color-base-font);
-}
-@media screen and (max-width: 80em) {
- #search_header {
- padding: 1.5em 0.5rem 0 0.5rem;
- column-gap: 0.5rem;
- }
- .search_filters {
- margin: 0.6rem 0 0 3.5rem;
- }
- #categories {
- font-size: 90%;
- clear: both;
- }
- #categories .checkbox_container {
- margin: auto;
- margin-top: 2px;
- }
- html.touch #main_index #categories_container,
- html.touch #main_results #categories_container {
- width: 1000px;
- width: -moz-max-content;
- width: -webkit-max-content;
- width: max-content;
- }
- html.touch #main_index #categories_container .category,
- html.touch #main_results #categories_container .category {
- display: inline-block;
- width: auto;
- }
- html.touch #main_index #categories,
- html.touch #main_results #categories {
- width: 100%;
- text-align: left;
- overflow-x: scroll;
- overflow-y: hidden;
- -webkit-overflow-scrolling: touch;
- }
-}
-@media screen and (max-width: 50em) {
- #search_header {
- width: 100%;
- margin: 0;
- padding: 0.1rem 0 0 0;
- column-gap: 0;
- row-gap: 0;
- grid-template-areas: "logo search" "categories categories";
- }
- .search_logo {
- padding: 0;
- }
- .search_box {
- width: 99%;
- display: flex;
- flex-direction: row;
- }
- #q {
- width: 100%;
- flex: 1;
- }
- #main_results #q:placeholder-shown ~ #send_search {
- margin-right: 2.6rem;
- transition: margin-right 0.1s;
- }
- .search_filters {
- margin: 0;
- }
- .language,
- .time_range {
- width: 45%;
- }
- .category {
- display: block;
- width: 100%;
- margin: 0;
- }
- .category label {
- padding: 0.8rem !important;
- margin: 0 !important;
- }
- .category label svg {
- display: none;
- }
-}
-@media screen and (max-width: 20rem) {
- #search_header {
- grid-template-areas: "search search" "categories categories";
- }
- #search_logo {
- display: none;
- }
-}
-#categories {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-#categories::-webkit-scrollbar {
- width: 0;
- height: 0;
-}
-#categories_container {
- position: relative;
-}
-.ion-icon {
- display: inline-block;
- vertical-align: bottom;
- line-height: 1;
- text-decoration: inherit;
-}
-.ion-icon-small {
- width: 1rem;
- height: 1rem;
- display: inline-block;
- vertical-align: bottom;
- line-height: 1;
- text-decoration: inherit;
-}
-.ion-icon-big {
- width: 1.5rem;
- height: 1.5rem;
- display: inline-block;
- vertical-align: bottom;
- line-height: 1;
- text-decoration: inherit;
-}
-html {
- font-family: sans-serif;
- font-size: 0.9em;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
- -moz-text-size-adjust: 100%;
- text-size-adjust: 100%;
- color: var(--color-base-font);
- background-color: var(--color-base-background);
- padding: 0;
- margin: 0;
-}
-body,
-main {
- padding: 0;
- margin: 0;
-}
-body {
- display: flex;
- flex-direction: column;
- height: 100vh;
- margin: 0;
-}
-main {
- width: 100%;
- margin-bottom: 2rem;
- flex: 1;
-}
-#main_preferences,
-#main_about,
-#main_stats {
- margin: 2em auto;
- width: 85em;
-}
-footer {
- clear: both;
- min-height: 4rem;
- padding: 1rem 0;
- width: 100%;
- text-align: center;
- background-color: var(--color-footer-background);
- border-top: 1px solid var(--color-footer-border);
- overflow: hidden;
-}
-footer p {
- font-size: 0.9em;
-}
-#main_preferences h1,
-#main_stats h1 {
- background: url('../img/searxng.png') no-repeat;
- background-size: contain;
- min-height: 40px;
- margin: 0 auto;
-}
-#main_preferences h1 span,
-#main_stats h1 span {
- visibility: hidden;
-}
-input[type="submit"],
-#results button[type="submit"] {
- padding: 0.7rem;
- display: inline-block;
- background: var(--color-btn-background);
- color: var(--color-btn-font);
- border-radius: 10px;
- border: 0;
- cursor: pointer;
-}
-a {
- text-decoration: none;
- color: var(--color-url-font);
-}
-a:visited {
- color: var(--color-url-visited-font);
-}
-a:visited .highlight {
- color: var(--color-url-visited-font);
-}
-article[data-vim-selected] {
- background: var(--color-result-vim-selected);
- border-left: 0.2rem solid var(--color-result-vim-arrow);
- border-radius: 0 10px 10px 0;
-}
-article.result-images[data-vim-selected] {
- background: var(--color-result-vim-arrow);
- border: none;
- border-radius: 10px;
-}
-article.result-images[data-vim-selected] .image_thumbnail {
- filter: opacity(60%);
-}
-article[data-vim-selected].category-videos,
-article[data-vim-selected].category-news,
-article[data-vim-selected].category-map,
-article[data-vim-selected].category-music,
-article[data-vim-selected].category-files,
-article[data-vim-selected].category-social {
- border: 1px solid var(--color-result-vim-arrow);
- border-radius: 10px;
-}
-.result {
- margin: 0.125rem 0;
- padding: 1rem;
- border-left: 0.2rem solid transparent;
-}
-.result h3 {
- font-size: 1.2rem;
- word-wrap: break-word;
- margin: 0.4rem 0 0.4rem 0;
- padding: 0;
-}
-.result h3 a {
- color: var(--color-result-link-font);
- font-weight: normal;
- font-size: 1.1em;
-}
-.result h3 a:visited {
- color: var(--color-result-link-visited-font);
-}
-.result h3 a:focus,
-.result h3 a:hover {
- text-decoration: underline;
- border: none;
- outline: none;
-}
-.result .cache_link,
-.result .proxyfied_link {
- font-size: 0.9em !important;
-}
-.result .content,
-.result .stat,
-.result .altlink {
- font-size: 0.9em;
- margin: 0;
- padding: 0;
- max-width: 54em;
- word-wrap: break-word;
- line-height: 1.24;
-}
-.result .content .highlight,
-.result .stat .highlight,
-.result .altlink .highlight {
- color: var(--color-result-description-highlight-font);
- background: inherit;
- font-weight: bold;
-}
-.result .codelines .highlight {
- color: inherit;
- background: inherit;
- font-weight: normal;
-}
-.result .url_wrapper {
- display: flex;
- font-size: 1rem;
- color: var(--color-result-url-font);
- flex-wrap: nowrap;
- overflow: hidden;
- flex-direction: row;
- margin: 0;
- padding: 0;
-}
-.result .url_wrapper .url_o1 {
- white-space: nowrap;
- flex-shrink: 1;
-}
-.result .url_wrapper .url_o1::after {
- content: " ";
- width: 1ch;
- display: inline-block;
-}
-.result .url_wrapper .url_o2 {
- overflow: hidden;
- white-space: nowrap;
- flex-basis: content;
- flex-grow: 0;
- flex-shrink: 1;
- text-align: right;
-}
-.result .url_wrapper .url_o2 .url_i2 {
- float: right;
-}
-.result .published_date {
- font-size: 0.8em;
- color: var(--color-result-publishdate-font);
-}
-.result img.thumbnail {
- float: left;
- padding: 0.6rem 1rem 0 0;
- width: 20rem;
-}
-.result img.image {
- float: left;
- padding: 0.6rem 1rem 0 0;
- width: 7rem;
- max-height: 7rem;
- object-fit: scale-down;
- object-position: right top;
-}
-.result .break {
- clear: both;
-}
-.category-videos,
-.category-news,
-.category-map,
-.category-music,
-.category-files,
-.category-social {
- border: 1px solid var(--color-result-border);
- margin: 1rem 0;
- border-radius: 10px;
-}
-.category-social .image {
- width: auto !important;
- min-width: 48px;
- min-height: 48px;
- padding: 0 5px 25px 0 !important;
-}
-.result-videos .content {
- overflow: hidden;
-}
-.engines {
- float: right;
- color: var(--color-result-engines-font);
-}
-.engines span {
- font-size: smaller;
- margin: 0 0.5em 0 0;
-}
-.small_font {
- font-size: 0.8em;
-}
-.highlight {
- color: var(--color-result-link-font-highlight);
- background: inherit;
-}
-.empty_element {
- font-style: italic;
-}
-.result-images {
- display: inline-block;
- margin: 0;
- padding: 0;
- position: relative;
- max-height: 200px;
- border: none !important;
-}
-.result-images img {
- float: inherit;
- margin: 0.125rem;
- padding: 0;
- border: none;
- max-height: 200px;
- background: var(--color-result-image-background);
-}
-.result-images span.title {
- display: none;
- color: var(--color-result-image-span-font);
-}
-.result-images:hover span.title {
- display: block;
- position: absolute;
- bottom: 0;
- right: 0;
- padding: 4px;
- margin: 0 0 4px 4px;
- background-color: var(--color-result-image-span-background-hover);
- font-size: 0.7em;
-}
-.result-map img.image {
- float: right !important;
- height: 100px !important;
- width: auto !important;
-}
-.result-map table {
- font-size: 0.9em;
- width: auto;
- border-collapse: separate;
- border-spacing: 0 0.35rem;
-}
-.result-map table th {
- font-weight: inherit;
- width: 17rem;
- vertical-align: top;
- text-align: left;
-}
-.result-map table td {
- vertical-align: top;
- text-align: left;
-}
-.hidden {
- display: none !important;
-}
-#results {
- margin: 1rem 2rem 0 10rem;
- display: grid;
- grid-template-columns: 45rem 25rem;
- grid-template-rows: min-content min-content 1fr min-content;
- gap: 0 5rem;
- grid-template-areas: "corrections sidebar" "answers sidebar" "urls sidebar" "pagination sidebar";
-}
-#results #sidebar *:first-child,
-#results #urls *:first-child {
- margin-top: 0;
-}
-#urls {
- padding: 0;
- grid-area: urls;
-}
-#suggestions .wrapper {
- display: flex;
- flex-flow: row wrap;
- justify-content: flex-end;
-}
-#suggestions .wrapper form {
- display: inline-block;
- flex: 1 1 50%;
-}
-#suggestions input,
-#infoboxes input {
- padding: 0;
- margin: 3px;
- font-size: 0.9em;
- display: inline-block;
- background: transparent;
- color: var(--color-result-search-url-font);
- cursor: pointer;
-}
-#suggestions input[type="submit"],
-#infoboxes input[type="submit"],
-#suggestions .infobox .url a,
-#infoboxes .infobox .url a {
- color: var(--color-result-link-font);
- text-decoration: none;
- font-size: 0.9rem;
-}
-#suggestions input[type="submit"]:hover,
-#infoboxes input[type="submit"]:hover,
-#suggestions .infobox .url a:hover,
-#infoboxes .infobox .url a:hover {
- text-decoration: underline;
-}
-#corrections {
- grid-area: corrections;
- display: flex;
- flex-flow: row wrap;
- margin: 0 0 1em 0;
-}
-#corrections h4,
-#corrections input[type="submit"] {
- display: inline-block;
- padding: 0.5rem;
- margin: 0.5rem;
-}
-#corrections input[type="submit"] {
- font-size: 0.8rem;
- border-radius: 5px;
-}
-#suggestions .title,
-#search_url .title,
-#apis .title {
- margin: 2em 0 0.5em 0;
- color: var(--color-base-font);
-}
-#answers {
- grid-area: answers;
- border: 1px solid var(--color-answer-border);
- background: var(--color-answer-background);
- padding: 1rem;
- margin: 1rem 0;
- margin-top: 0;
- color: var(--color-answer-font);
- border-radius: 10px;
-}
-#answers h4 {
- display: none;
-}
-#infoboxes form {
- min-width: 210px;
-}
-#sidebar {
- grid-area: sidebar;
- word-wrap: break-word;
- color: var(--color-sidebar-font);
-}
-#sidebar .infobox {
- margin: 10px 0 10px;
- border: 1px solid var(--color-sidebar-border);
- padding: 1rem;
- font-size: 0.9em;
- border-radius: 10px;
-}
-#sidebar .infobox h2 {
- margin: 0 0 0.5em 0;
-}
-#sidebar .infobox img {
- max-width: 100%;
- max-height: 12em;
- display: block;
- margin: 0 auto;
- padding: 0;
-}
-#sidebar .infobox dl {
- margin: 0.5em 0;
-}
-#sidebar .infobox dt {
- display: inline;
- margin: 0.5em 0.25em 0.5em 0;
- padding: 0;
- font-weight: bold;
-}
-#sidebar .infobox dd {
- display: inline;
- margin: 0.5em 0;
- padding: 0;
-}
-#sidebar .infobox input {
- font-size: 1em;
-}
-#sidebar .infobox br {
- clear: both;
-}
-#sidebar .infobox .attributes,
-#sidebar .infobox .urls {
- clear: both;
-}
-#search_url {
- margin-top: 8px;
-}
-#search_url div.selectable_url pre {
- width: 200em;
-}
-#linkto_preferences {
- position: absolute;
- right: 10px;
- top: 2.2rem;
- padding: 0;
- border: 0;
- display: block;
- font-size: 1.2em;
- color: var(--color-search-font);
-}
-#linkto_preferences a:link *,
-#linkto_preferences a:hover *,
-#linkto_preferences a:visited *,
-#linkto_preferences a:active * {
- color: var(--color-search-font);
-}
-#pagination {
- grid-area: pagination;
-}
-#pagination br {
- clear: both;
-}
-#apis {
- margin-top: 8px;
- clear: both;
-}
-#backToTop {
- border: 1px solid var(--color-backtotop-border);
- margin: 0;
- padding: 0;
- font-size: 1em;
- background: var(--color-backtotop-background);
- position: fixed;
- bottom: 8rem;
- left: 56.3rem;
- transition: opacity 0.5s;
- opacity: 0;
- border-radius: 10px;
-}
-#backToTop a {
- display: block;
- margin: 0;
- padding: 0.7em;
-}
-#backToTop a,
-#backToTop a:visited,
-#backToTop a:hover,
-#backToTop a:active {
- color: var(--color-backtotop-font);
-}
-#results.scrolling #backToTop {
- opacity: 1;
-}
-@media screen and (max-width: 80em) {
- #main_preferences,
- #main_about,
- #main_stats {
- margin: 2rem 0.5rem;
- width: auto;
- }
- #infoboxes {
- position: inherit;
- max-width: inherit;
- }
- #infoboxes .infobox {
- clear: both;
- }
- #infoboxes .infobox img {
- float: left;
- max-width: 10em;
- margin: 0.5em 0.5em 0.5em 0;
- }
- #sidebar {
- margin-bottom: 0.125rem;
- padding: 0;
- float: none;
- border: none;
- width: auto;
- }
- #sidebar input {
- border: 0;
- }
- #apis {
- display: none;
- }
- #search_url {
- display: none;
- }
- .result .thumbnail {
- max-width: 98%;
- }
- .result .url span.url {
- display: block;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- width: 100%;
- }
- .result .engines {
- float: right;
- padding: 0 0 3px 0;
- }
- .result-images {
- border-bottom: none !important;
- }
- .image_result {
- max-width: 98%;
- }
- .image_result img {
- max-width: 98%;
- }
- #backToTop {
- display: none;
- }
- #pagination {
- margin: 2rem 0 0 0 !important;
- }
- #main_results div#results {
- margin: 1rem auto 0 auto;
- justify-content: center;
- display: grid;
- grid-template-columns: 45rem;
- grid-template-rows: min-content min-content min-content 1fr min-content min-content;
- gap: 0;
- grid-template-areas: "corrections" "answers" "sidebar" "urls" "pagination";
- }
-}
-#main_results div#results.only_template_images {
- margin: 1rem 0.5rem 0 0.5rem;
- display: grid;
- grid-template-columns: 100%;
- grid-template-rows: min-content min-content 1fr min-content min-content;
- gap: 0;
- grid-template-areas: "corrections" "urls" "answers" "sidebar" "pagination";
-}
-#main_results div#results.only_template_images #urls {
- width: inherit;
- margin: 0;
-}
-#main_results div#results.only_template_images #backToTop {
- left: auto;
- right: 1rem;
-}
-#main_results div#results.only_template_images #pagination {
- margin-right: 4rem;
-}
-@media screen and (max-width: 50em) {
- #main_results div#results {
- grid-template-columns: 100%;
- margin: 2rem 0.5rem 0 0.5rem;
- }
- #linkto_preferences {
- top: 0.8rem;
- right: 0.7rem;
- }
- #main_index #linkto_preferences {
- top: 0.5rem;
- right: 0.5rem;
- }
- #results {
- margin: 0;
- padding: 0;
- }
- #pagination {
- margin: 2rem 1rem 0 1rem !important;
- }
- article[data-vim-selected] {
- border: 1px solid var(--color-result-vim-arrow);
- border-radius: 10px;
- }
- .result {
- border: 1px solid var(--color-result-border);
- margin: 1rem 0;
- border-radius: 10px;
- }
- .result-images {
- margin: 0;
- padding: 0;
- border: none;
- }
-}
-@media screen and (max-width: 35em) {
- .result-videos img.thumbnail {
- float: none !important;
- }
- .result-videos .content {
- overflow: inherit;
- }
-}
-pre code {
- white-space: pre-wrap;
-}
-#search_submit {
- left: 1px;
- right: auto;
-}
diff --git a/searx/static/themes/simple/css/searxng.css b/searx/static/themes/simple/css/searxng.css
deleted file mode 100644
index a1f244e90..000000000
--- a/searx/static/themes/simple/css/searxng.css
+++ /dev/null
@@ -1,3275 +0,0 @@
-/*
-* SearXNG, A privacy-respecting, hackable metasearch engine
-*
-* To convert "style.less" to "style.css" run: $make styles
-*/
-.github-issue-button {
- display: block;
- padding: 8px 16px;
- font-family: sans-serif;
- font-size: 16px;
- color: white;
- background-color: #238636 !important;
- /* important is needed cause to an !important in logicodev-dark */
- border: #2ea043;
- border-radius: 10px !important;
- box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px 0px;
-}
-.github-issue-button:hover {
- background-color: #2ea043;
-}
-.issue-hide {
- display: none;
-}
-.engine-stats .engine-name {
- width: 20rem;
-}
-.engine-stats .engine-score {
- width: 7rem;
- text-align: right;
-}
-.engine-stats .engine-reliability {
- text-align: right;
-}
-.engine-stats table.engine-error {
- max-width: 1280px;
- margin: 1rem;
- border: 1px solid gray;
-}
-.engine-stats table.engine-error th.engine-error-type,
-.engine-stats table.engine-error td.engine-error-type,
-.engine-stats failed-test {
- width: 10rem;
-}
-.engine-stats table.engine-error span.log_parameters {
- border-right: 1px solid gray;
- padding: 0 1rem 0 0;
- margin: 0 0 0 0.5rem;
-}
-.bar-chart-value {
- width: 3em;
- display: inline-block;
- text-align: right;
- padding-right: 0.5rem;
-}
-.bar-chart-graph {
- width: calc(100% - 5rem);
- display: inline-block;
-}
-.bar-chart-bar {
- border: 3px solid #5bc0de;
- margin: 1px 0;
-}
-.bar-chart-serie1 {
- border: 3px solid #5bc0de;
- margin: 1px 0;
- float: left;
-}
-.bar-chart-serie2 {
- border: 3px solid #deb15b;
- margin: 1px 0;
- float: left;
-}
-.bar0 {
- width: 0;
- border: 0;
-}
-.bar1 {
- width: 1%;
-}
-.bar2 {
- width: 2%;
-}
-.bar3 {
- width: 3%;
-}
-.bar4 {
- width: 4%;
-}
-.bar5 {
- width: 5%;
-}
-.bar6 {
- width: 6%;
-}
-.bar7 {
- width: 7%;
-}
-.bar8 {
- width: 8%;
-}
-.bar9 {
- width: 9%;
-}
-.bar10 {
- width: 10%;
-}
-.bar11 {
- width: 11%;
-}
-.bar12 {
- width: 12%;
-}
-.bar13 {
- width: 13%;
-}
-.bar14 {
- width: 14%;
-}
-.bar15 {
- width: 15%;
-}
-.bar16 {
- width: 16%;
-}
-.bar17 {
- width: 17%;
-}
-.bar18 {
- width: 18%;
-}
-.bar19 {
- width: 19%;
-}
-.bar20 {
- width: 20%;
-}
-.bar21 {
- width: 21%;
-}
-.bar22 {
- width: 22%;
-}
-.bar23 {
- width: 23%;
-}
-.bar24 {
- width: 24%;
-}
-.bar25 {
- width: 25%;
-}
-.bar26 {
- width: 26%;
-}
-.bar27 {
- width: 27%;
-}
-.bar28 {
- width: 28%;
-}
-.bar29 {
- width: 29%;
-}
-.bar30 {
- width: 30%;
-}
-.bar31 {
- width: 31%;
-}
-.bar32 {
- width: 32%;
-}
-.bar33 {
- width: 33%;
-}
-.bar34 {
- width: 34%;
-}
-.bar35 {
- width: 35%;
-}
-.bar36 {
- width: 36%;
-}
-.bar37 {
- width: 37%;
-}
-.bar38 {
- width: 38%;
-}
-.bar39 {
- width: 39%;
-}
-.bar40 {
- width: 40%;
-}
-.bar41 {
- width: 41%;
-}
-.bar42 {
- width: 42%;
-}
-.bar43 {
- width: 43%;
-}
-.bar44 {
- width: 44%;
-}
-.bar45 {
- width: 45%;
-}
-.bar46 {
- width: 46%;
-}
-.bar47 {
- width: 47%;
-}
-.bar48 {
- width: 48%;
-}
-.bar49 {
- width: 49%;
-}
-.bar50 {
- width: 50%;
-}
-.bar51 {
- width: 51%;
-}
-.bar52 {
- width: 52%;
-}
-.bar53 {
- width: 53%;
-}
-.bar54 {
- width: 54%;
-}
-.bar55 {
- width: 55%;
-}
-.bar56 {
- width: 56%;
-}
-.bar57 {
- width: 57%;
-}
-.bar58 {
- width: 58%;
-}
-.bar59 {
- width: 59%;
-}
-.bar60 {
- width: 60%;
-}
-.bar61 {
- width: 61%;
-}
-.bar62 {
- width: 62%;
-}
-.bar63 {
- width: 63%;
-}
-.bar64 {
- width: 64%;
-}
-.bar65 {
- width: 65%;
-}
-.bar66 {
- width: 66%;
-}
-.bar67 {
- width: 67%;
-}
-.bar68 {
- width: 68%;
-}
-.bar69 {
- width: 69%;
-}
-.bar70 {
- width: 70%;
-}
-.bar71 {
- width: 71%;
-}
-.bar72 {
- width: 72%;
-}
-.bar73 {
- width: 73%;
-}
-.bar74 {
- width: 74%;
-}
-.bar75 {
- width: 75%;
-}
-.bar76 {
- width: 76%;
-}
-.bar77 {
- width: 77%;
-}
-.bar78 {
- width: 78%;
-}
-.bar79 {
- width: 79%;
-}
-.bar80 {
- width: 80%;
-}
-.bar81 {
- width: 81%;
-}
-.bar82 {
- width: 82%;
-}
-.bar83 {
- width: 83%;
-}
-.bar84 {
- width: 84%;
-}
-.bar85 {
- width: 85%;
-}
-.bar86 {
- width: 86%;
-}
-.bar87 {
- width: 87%;
-}
-.bar88 {
- width: 88%;
-}
-.bar89 {
- width: 89%;
-}
-.bar90 {
- width: 90%;
-}
-.bar91 {
- width: 91%;
-}
-.bar92 {
- width: 92%;
-}
-.bar93 {
- width: 93%;
-}
-.bar94 {
- width: 94%;
-}
-.bar95 {
- width: 95%;
-}
-.bar96 {
- width: 96%;
-}
-.bar97 {
- width: 97%;
-}
-.bar98 {
- width: 98%;
-}
-.bar99 {
- width: 99%;
-}
-.bar100 {
- width: 100%;
-}
-.osm-map-box {
- height: 300px;
- width: 100%;
- margin: 10px 0;
-}
-/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
-
-/* Document
- ========================================================================== */
-
-/**
- * 1. Correct the line height in all browsers.
- * 2. Prevent adjustments of font size after orientation changes in iOS.
- */
-
-html {
- line-height: 1.15; /* 1 */
- -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/* Sections
- ========================================================================== */
-
-/**
- * Remove the margin in all browsers.
- */
-
-body {
- margin: 0;
-}
-
-/**
- * Render the `main` element consistently in IE.
- */
-
-main {
- display: block;
-}
-
-/**
- * Correct the font size and margin on `h1` elements within `section` and
- * `article` contexts in Chrome, Firefox, and Safari.
- */
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-/* Grouping content
- ========================================================================== */
-
-/**
- * 1. Add the correct box sizing in Firefox.
- * 2. Show the overflow in Edge and IE.
- */
-
-hr {
- box-sizing: content-box; /* 1 */
- height: 0; /* 1 */
- overflow: visible; /* 2 */
-}
-
-/**
- * 1. Correct the inheritance and scaling of font size in all browsers.
- * 2. Correct the odd `em` font sizing in all browsers.
- */
-
-pre {
- font-family: monospace, monospace; /* 1 */
- font-size: 1em; /* 2 */
-}
-
-/* Text-level semantics
- ========================================================================== */
-
-/**
- * Remove the gray background on active links in IE 10.
- */
-
-a {
- background-color: transparent;
-}
-
-/**
- * 1. Remove the bottom border in Chrome 57-
- * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
- */
-
-abbr[title] {
- border-bottom: none; /* 1 */
- text-decoration: underline; /* 2 */
- text-decoration: underline dotted; /* 2 */
-}
-
-/**
- * Add the correct font weight in Chrome, Edge, and Safari.
- */
-
-b,
-strong {
- font-weight: bolder;
-}
-
-/**
- * 1. Correct the inheritance and scaling of font size in all browsers.
- * 2. Correct the odd `em` font sizing in all browsers.
- */
-
-code,
-kbd,
-samp {
- font-family: monospace, monospace; /* 1 */
- font-size: 1em; /* 2 */
-}
-
-/**
- * Add the correct font size in all browsers.
- */
-
-small {
- font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` elements from affecting the line height in
- * all browsers.
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-sup {
- top: -0.5em;
-}
-
-/* Embedded content
- ========================================================================== */
-
-/**
- * Remove the border on images inside links in IE 10.
- */
-
-img {
- border-style: none;
-}
-
-/* Forms
- ========================================================================== */
-
-/**
- * 1. Change the font styles in all browsers.
- * 2. Remove the margin in Firefox and Safari.
- */
-
-button,
-input,
-optgroup,
-select,
-textarea {
- font-family: inherit; /* 1 */
- font-size: 100%; /* 1 */
- line-height: 1.15; /* 1 */
- margin: 0; /* 2 */
-}
-
-/**
- * Show the overflow in IE.
- * 1. Show the overflow in Edge.
- */
-
-button,
-input { /* 1 */
- overflow: visible;
-}
-
-/**
- * Remove the inheritance of text transform in Edge, Firefox, and IE.
- * 1. Remove the inheritance of text transform in Firefox.
- */
-
-button,
-select { /* 1 */
- text-transform: none;
-}
-
-/**
- * Correct the inability to style clickable types in iOS and Safari.
- */
-
-button,
-[type="button"],
-[type="reset"],
-[type="submit"] {
- -webkit-appearance: button;
-}
-
-/**
- * Remove the inner border and padding in Firefox.
- */
-
-button::-moz-focus-inner,
-[type="button"]::-moz-focus-inner,
-[type="reset"]::-moz-focus-inner,
-[type="submit"]::-moz-focus-inner {
- border-style: none;
- padding: 0;
-}
-
-/**
- * Restore the focus styles unset by the previous rule.
- */
-
-button:-moz-focusring,
-[type="button"]:-moz-focusring,
-[type="reset"]:-moz-focusring,
-[type="submit"]:-moz-focusring {
- outline: 1px dotted ButtonText;
-}
-
-/**
- * Correct the padding in Firefox.
- */
-
-fieldset {
- padding: 0.35em 0.75em 0.625em;
-}
-
-/**
- * 1. Correct the text wrapping in Edge and IE.
- * 2. Correct the color inheritance from `fieldset` elements in IE.
- * 3. Remove the padding so developers are not caught out when they zero out
- * `fieldset` elements in all browsers.
- */
-
-legend {
- box-sizing: border-box; /* 1 */
- color: inherit; /* 2 */
- display: table; /* 1 */
- max-width: 100%; /* 1 */
- padding: 0; /* 3 */
- white-space: normal; /* 1 */
-}
-
-/**
- * Add the correct vertical alignment in Chrome, Firefox, and Opera.
- */
-
-progress {
- vertical-align: baseline;
-}
-
-/**
- * Remove the default vertical scrollbar in IE 10+.
- */
-
-textarea {
- overflow: auto;
-}
-
-/**
- * 1. Add the correct box sizing in IE 10.
- * 2. Remove the padding in IE 10.
- */
-
-[type="checkbox"],
-[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Correct the cursor style of increment and decrement buttons in Chrome.
- */
-
-[type="number"]::-webkit-inner-spin-button,
-[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-
-/**
- * 1. Correct the odd appearance in Chrome and Safari.
- * 2. Correct the outline style in Safari.
- */
-
-[type="search"] {
- -webkit-appearance: textfield; /* 1 */
- outline-offset: -2px; /* 2 */
-}
-
-/**
- * Remove the inner padding in Chrome and Safari on macOS.
- */
-
-[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/**
- * 1. Correct the inability to style clickable types in iOS and Safari.
- * 2. Change font properties to `inherit` in Safari.
- */
-
-::-webkit-file-upload-button {
- -webkit-appearance: button; /* 1 */
- font: inherit; /* 2 */
-}
-
-/* Interactive
- ========================================================================== */
-
-/*
- * Add the correct display in Edge, IE 10+, and Firefox.
- */
-
-details {
- display: block;
-}
-
-/*
- * Add the correct display in all browsers.
- */
-
-summary {
- display: list-item;
-}
-
-/* Misc
- ========================================================================== */
-
-/**
- * Add the correct display in IE 10+.
- */
-
-template {
- display: none;
-}
-
-/**
- * Add the correct display in IE 10.
- */
-
-[hidden] {
- display: none;
-}
-
-/*
- * SearXNG, A privacy-respecting, hackable metasearch engine
- *
- * To change the colors of the site, simple edit this variables
- */
-:root {
- --color-base-font: #444;
- --color-base-font-rgb: 68, 68, 68;
- --color-base-background: #fff;
- --color-url-font: #29314d;
- --color-url-visited-font: #80b;
- --color-header-background: #f7f7f7;
- --color-header-border: #ddd;
- --color-footer-background: #f7f7f7;
- --color-footer-border: #ddd;
- --color-sidebar-border: #ddd;
- --color-sidebar-font: #000;
- --color-backtotop-font: #444;
- --color-backtotop-border: #ddd;
- --color-backtotop-background: #fff;
- --color-btn-background: #3050ff;
- --color-btn-font: #fff;
- --color-search-border: #bbb;
- --color-search-background: #fff;
- --color-search-font: #222;
- --color-search-background-hover: #3050ff;
- --color-error: #db3434;
- --color-error-background: #fae1e1;
- --color-warning: #dbba34;
- --color-warning-background: #faf5e1;
- --color-success: #42db34;
- --color-success-background: #e3fae1;
- --color-categories-item-selected-font: #3050ff;
- --color-categories-item-border-selected: #3050ff;
- --color-autocomplete-font: #000;
- --color-autocomplete-border: #bbb;
- --color-autocomplete-background: #fff;
- --color-autocomplete-background-hover: #f7f7f7;
- --color-answer-border: #ddd;
- --color-answer-font: #444;
- --color-answer-background: #f7f7f7;
- --color-result-border: #ddd;
- --color-result-url-font: #000;
- --color-result-vim-selected: #f7f7f7;
- --color-result-vim-arrow: #000bbb;
- --color-result-description-highlight-font: #000;
- --color-result-link-font: #000bbb;
- --color-result-link-font-highlight: #000bbb;
- --color-result-link-visited-font: #80b;
- --color-result-publishdate-font: #777;
- --color-result-engines-font: #777;
- --color-result-search-url-border: #ddd;
- --color-result-search-url-font: #000;
- --color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
- --color-result-image-span-font: #fff;
- --color-result-image-background: #fff;
- --color-settings-tr-hover: #f7f7f7;
- --color-settings-engine-description-font: #909090;
- --color-result-detail-font: #fff;
- --color-result-detail-label-font: lightgray;
- --color-result-detail-background: #000;
- --color-result-detail-hr: #555;
- --color-result-detail-link: #8af;
- --color-result-detail-loader-border: rgba(255, 255, 255, 0.2);
- --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0);
- --color-toolkit-badge-font: #fff;
- --color-toolkit-badge-background: #777;
- --color-toolkit-kbd-font: #fff;
- --color-toolkit-kbd-background: #000;
- --color-toolkit-dialog-border: #ddd;
- --color-toolkit-dialog-background: #fff;
- --color-toolkit-tabs-label-border: #fff;
- --color-toolkit-tabs-section-border: #ddd;
- --color-toolkit-select-background: #f7f7f7;
- --color-toolkit-select-border: #ddd;
- --color-toolkit-select-background-hover: #bbb;
- --color-toolkit-input-text-font: #222;
- --color-toolkit-checkbox-onoff-background: #ddd;
- --color-toolkit-checkbox-onoff-label-background: #3050ff;
- --color-toolkit-checkbox-onoff-checked-background: #aaa;
- --color-toolkit-checkbox-label-background: #fff;
- --color-toolkit-checkbox-label-border: #ddd;
- --color-toolkit-checkbox-input-border: #3050ff;
- --color-toolkit-engine-tooltip-border: #ddd;
- --color-toolkit-engine-tooltip-background: #fff;
- --color-toolkit-loader-border: rgba(0, 0, 0, 0.2);
- --color-toolkit-loader-borderleft: rgba(255, 255, 255, 0);
-}
-@media (prefers-color-scheme: dark) {
- :root.theme-auto {
- --color-base-font: #bbb;
- --color-base-font-rgb: 187, 187, 187;
- --color-base-background: #222;
- --color-url-font: #8af;
- --color-url-visited-font: #96b;
- --color-header-background: #181818;
- --color-header-border: #333;
- --color-footer-background: #181818;
- --color-footer-border: #333;
- --color-sidebar-border: #555;
- --color-sidebar-font: #fff;
- --color-backtotop-font: #bbb;
- --color-backtotop-border: #333;
- --color-backtotop-background: #181818;
- --color-btn-background: #58f;
- --color-btn-font: #222;
- --color-search-border: #555;
- --color-search-background: #222;
- --color-search-font: #fff;
- --color-search-background-hover: #58f;
- --color-error: #f55b5b;
- --color-error-background: #390a0a;
- --color-warning: #f1d561;
- --color-warning-background: #39300a;
- --color-success: #79f56e;
- --color-success-background: #0e390a;
- --color-categories-item-selected-font: #58f;
- --color-categories-item-border-selected: #58f;
- --color-autocomplete-font: #fff;
- --color-autocomplete-border: #555;
- --color-autocomplete-background: #222;
- --color-autocomplete-background-hover: #181818;
- --color-answer-border: #333;
- --color-answer-font: #bbb;
- --color-answer-background: #181818;
- --color-result-border: #333;
- --color-result-url-font: #fff;
- --color-result-vim-selected: #181818;
- --color-result-vim-arrow: #8af;
- --color-result-description-highlight-font: #fff;
- --color-result-link-font: #8af;
- --color-result-link-font-highlight: #8af;
- --color-result-link-visited-font: #96b;
- --color-result-publishdate-font: #888;
- --color-result-engines-font: #888;
- --color-result-search-url-border: #555;
- --color-result-search-url-font: #fff;
- --color-result-detail-font: #fff;
- --color-result-detail-label-font: lightgray;
- --color-result-detail-background: #000;
- --color-result-detail-hr: #555;
- --color-result-detail-link: #8af;
- --color-result-detail-loader-border: rgba(255, 255, 255, 0.2);
- --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0);
- --color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
- --color-result-image-span-font: #fff;
- --color-result-image-background: #222;
- --color-settings-tr-hover: #2d2d2d;
- --color-settings-engine-description-font: #909090;
- --color-toolkit-badge-font: #fff;
- --color-toolkit-badge-background: #777;
- --color-toolkit-kbd-font: #000;
- --color-toolkit-kbd-background: #fff;
- --color-toolkit-dialog-border: #555;
- --color-toolkit-dialog-background: #222;
- --color-toolkit-tabs-label-border: #222;
- --color-toolkit-tabs-section-border: #555;
- --color-toolkit-select-background: #3c3b31;
- --color-toolkit-select-border: #555;
- --color-toolkit-select-background-hover: #333;
- --color-toolkit-input-text-font: #fff;
- --color-toolkit-checkbox-onoff-background: #3c3b31;
- --color-toolkit-checkbox-onoff-label-background: #58f;
- --color-toolkit-checkbox-onoff-checked-background: #ddd;
- --color-toolkit-checkbox-label-background: #fff;
- --color-toolkit-checkbox-label-border: #333;
- --color-toolkit-checkbox-input-border: #58f;
- --color-toolkit-engine-tooltip-border: #333;
- --color-toolkit-engine-tooltip-background: #222;
- --color-toolkit-loader-border: rgba(255, 255, 255, 0.2);
- --color-toolkit-loader-borderleft: rgba(0, 0, 0, 0);
- }
-}
-:root.theme-dark {
- --color-base-font: #bbb;
- --color-base-font-rgb: 187, 187, 187;
- --color-base-background: #222;
- --color-url-font: #8af;
- --color-url-visited-font: #96b;
- --color-header-background: #181818;
- --color-header-border: #333;
- --color-footer-background: #181818;
- --color-footer-border: #333;
- --color-sidebar-border: #555;
- --color-sidebar-font: #fff;
- --color-backtotop-font: #bbb;
- --color-backtotop-border: #333;
- --color-backtotop-background: #181818;
- --color-btn-background: #58f;
- --color-btn-font: #222;
- --color-search-border: #555;
- --color-search-background: #222;
- --color-search-font: #fff;
- --color-search-background-hover: #58f;
- --color-error: #f55b5b;
- --color-error-background: #390a0a;
- --color-warning: #f1d561;
- --color-warning-background: #39300a;
- --color-success: #79f56e;
- --color-success-background: #0e390a;
- --color-categories-item-selected-font: #58f;
- --color-categories-item-border-selected: #58f;
- --color-autocomplete-font: #fff;
- --color-autocomplete-border: #555;
- --color-autocomplete-background: #222;
- --color-autocomplete-background-hover: #181818;
- --color-answer-border: #333;
- --color-answer-font: #bbb;
- --color-answer-background: #181818;
- --color-result-border: #333;
- --color-result-url-font: #fff;
- --color-result-vim-selected: #181818;
- --color-result-vim-arrow: #8af;
- --color-result-description-highlight-font: #fff;
- --color-result-link-font: #8af;
- --color-result-link-font-highlight: #8af;
- --color-result-link-visited-font: #96b;
- --color-result-publishdate-font: #888;
- --color-result-engines-font: #888;
- --color-result-search-url-border: #555;
- --color-result-search-url-font: #fff;
- --color-result-detail-font: #fff;
- --color-result-detail-label-font: lightgray;
- --color-result-detail-background: #000;
- --color-result-detail-hr: #555;
- --color-result-detail-link: #8af;
- --color-result-detail-loader-border: rgba(255, 255, 255, 0.2);
- --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0);
- --color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
- --color-result-image-span-font: #fff;
- --color-result-image-background: #222;
- --color-settings-tr-hover: #2d2d2d;
- --color-settings-engine-description-font: #909090;
- --color-toolkit-badge-font: #fff;
- --color-toolkit-badge-background: #777;
- --color-toolkit-kbd-font: #000;
- --color-toolkit-kbd-background: #fff;
- --color-toolkit-dialog-border: #555;
- --color-toolkit-dialog-background: #222;
- --color-toolkit-tabs-label-border: #222;
- --color-toolkit-tabs-section-border: #555;
- --color-toolkit-select-background: #3c3b31;
- --color-toolkit-select-border: #555;
- --color-toolkit-select-background-hover: #333;
- --color-toolkit-input-text-font: #fff;
- --color-toolkit-checkbox-onoff-background: #3c3b31;
- --color-toolkit-checkbox-onoff-label-background: #58f;
- --color-toolkit-checkbox-onoff-checked-background: #ddd;
- --color-toolkit-checkbox-label-background: #fff;
- --color-toolkit-checkbox-label-border: #333;
- --color-toolkit-checkbox-input-border: #58f;
- --color-toolkit-engine-tooltip-border: #333;
- --color-toolkit-engine-tooltip-background: #222;
- --color-toolkit-loader-border: rgba(255, 255, 255, 0.2);
- --color-toolkit-loader-borderleft: rgba(0, 0, 0, 0);
-}
-/*
-* SearXNG, A privacy-respecting, hackable metasearch engine
-*/
-.code-highlight pre {
- overflow: auto;
- background-color: inherit;
- color: inherit;
- border: inherit;
-}
-/*
- this file is generated automatically by searxng_extra/update/update_pygments.py
- using pygments version 2.10.0
-*/
-.code-highlight .linenos {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: default;
- margin-right: 8px;
- text-align: right;
-}
-.code-highlight .linenos::selection {
- background: transparent;
- /* WebKit/Blink Browsers */
-}
-.code-highlight .linenos::-moz-selection {
- background: transparent;
- /* Gecko Browsers */
-}
-.code-highlight pre {
- line-height: 125%;
-}
-.code-highlight td.linenos .normal {
- color: inherit;
- background-color: transparent;
- padding-left: 5px;
- padding-right: 5px;
-}
-.code-highlight span.linenos {
- color: inherit;
- background-color: transparent;
- padding-left: 5px;
- padding-right: 5px;
-}
-.code-highlight td.linenos .special {
- color: #000000;
- background-color: #ffffc0;
- padding-left: 5px;
- padding-right: 5px;
-}
-.code-highlight span.linenos.special {
- color: #000000;
- background-color: #ffffc0;
- padding-left: 5px;
- padding-right: 5px;
-}
-.code-highlight .hll {
- background-color: #ffffcc;
-}
-.code-highlight {
- background: #f8f8f8;
-}
-.code-highlight .c {
- color: #408080;
- font-style: italic;
-}
-/* Comment */
-.code-highlight .err {
- border: 1px solid #FF0000;
-}
-/* Error */
-.code-highlight .k {
- color: #008000;
- font-weight: bold;
-}
-/* Keyword */
-.code-highlight .o {
- color: #666666;
-}
-/* Operator */
-.code-highlight .ch {
- color: #408080;
- font-style: italic;
-}
-/* Comment.Hashbang */
-.code-highlight .cm {
- color: #408080;
- font-style: italic;
-}
-/* Comment.Multiline */
-.code-highlight .cp {
- color: #BC7A00;
-}
-/* Comment.Preproc */
-.code-highlight .cpf {
- color: #408080;
- font-style: italic;
-}
-/* Comment.PreprocFile */
-.code-highlight .c1 {
- color: #408080;
- font-style: italic;
-}
-/* Comment.Single */
-.code-highlight .cs {
- color: #408080;
- font-style: italic;
-}
-/* Comment.Special */
-.code-highlight .gd {
- color: #A00000;
-}
-/* Generic.Deleted */
-.code-highlight .ge {
- font-style: italic;
-}
-/* Generic.Emph */
-.code-highlight .gr {
- color: #FF0000;
-}
-/* Generic.Error */
-.code-highlight .gh {
- color: #000080;
- font-weight: bold;
-}
-/* Generic.Heading */
-.code-highlight .gi {
- color: #00A000;
-}
-/* Generic.Inserted */
-.code-highlight .go {
- color: #888888;
-}
-/* Generic.Output */
-.code-highlight .gp {
- color: #000080;
- font-weight: bold;
-}
-/* Generic.Prompt */
-.code-highlight .gs {
- font-weight: bold;
-}
-/* Generic.Strong */
-.code-highlight .gu {
- color: #800080;
- font-weight: bold;
-}
-/* Generic.Subheading */
-.code-highlight .gt {
- color: #0044DD;
-}
-/* Generic.Traceback */
-.code-highlight .kc {
- color: #008000;
- font-weight: bold;
-}
-/* Keyword.Constant */
-.code-highlight .kd {
- color: #008000;
- font-weight: bold;
-}
-/* Keyword.Declaration */
-.code-highlight .kn {
- color: #008000;
- font-weight: bold;
-}
-/* Keyword.Namespace */
-.code-highlight .kp {
- color: #008000;
-}
-/* Keyword.Pseudo */
-.code-highlight .kr {
- color: #008000;
- font-weight: bold;
-}
-/* Keyword.Reserved */
-.code-highlight .kt {
- color: #B00040;
-}
-/* Keyword.Type */
-.code-highlight .m {
- color: #666666;
-}
-/* Literal.Number */
-.code-highlight .s {
- color: #BA2121;
-}
-/* Literal.String */
-.code-highlight .na {
- color: #7D9029;
-}
-/* Name.Attribute */
-.code-highlight .nb {
- color: #008000;
-}
-/* Name.Builtin */
-.code-highlight .nc {
- color: #0000FF;
- font-weight: bold;
-}
-/* Name.Class */
-.code-highlight .no {
- color: #880000;
-}
-/* Name.Constant */
-.code-highlight .nd {
- color: #AA22FF;
-}
-/* Name.Decorator */
-.code-highlight .ni {
- color: #999999;
- font-weight: bold;
-}
-/* Name.Entity */
-.code-highlight .ne {
- color: #D2413A;
- font-weight: bold;
-}
-/* Name.Exception */
-.code-highlight .nf {
- color: #0000FF;
-}
-/* Name.Function */
-.code-highlight .nl {
- color: #A0A000;
-}
-/* Name.Label */
-.code-highlight .nn {
- color: #0000FF;
- font-weight: bold;
-}
-/* Name.Namespace */
-.code-highlight .nt {
- color: #008000;
- font-weight: bold;
-}
-/* Name.Tag */
-.code-highlight .nv {
- color: #19177C;
-}
-/* Name.Variable */
-.code-highlight .ow {
- color: #AA22FF;
- font-weight: bold;
-}
-/* Operator.Word */
-.code-highlight .w {
- color: #bbbbbb;
-}
-/* Text.Whitespace */
-.code-highlight .mb {
- color: #666666;
-}
-/* Literal.Number.Bin */
-.code-highlight .mf {
- color: #666666;
-}
-/* Literal.Number.Float */
-.code-highlight .mh {
- color: #666666;
-}
-/* Literal.Number.Hex */
-.code-highlight .mi {
- color: #666666;
-}
-/* Literal.Number.Integer */
-.code-highlight .mo {
- color: #666666;
-}
-/* Literal.Number.Oct */
-.code-highlight .sa {
- color: #BA2121;
-}
-/* Literal.String.Affix */
-.code-highlight .sb {
- color: #BA2121;
-}
-/* Literal.String.Backtick */
-.code-highlight .sc {
- color: #BA2121;
-}
-/* Literal.String.Char */
-.code-highlight .dl {
- color: #BA2121;
-}
-/* Literal.String.Delimiter */
-.code-highlight .sd {
- color: #BA2121;
- font-style: italic;
-}
-/* Literal.String.Doc */
-.code-highlight .s2 {
- color: #BA2121;
-}
-/* Literal.String.Double */
-.code-highlight .se {
- color: #BB6622;
- font-weight: bold;
-}
-/* Literal.String.Escape */
-.code-highlight .sh {
- color: #BA2121;
-}
-/* Literal.String.Heredoc */
-.code-highlight .si {
- color: #BB6688;
- font-weight: bold;
-}
-/* Literal.String.Interpol */
-.code-highlight .sx {
- color: #008000;
-}
-/* Literal.String.Other */
-.code-highlight .sr {
- color: #BB6688;
-}
-/* Literal.String.Regex */
-.code-highlight .s1 {
- color: #BA2121;
-}
-/* Literal.String.Single */
-.code-highlight .ss {
- color: #19177C;
-}
-/* Literal.String.Symbol */
-.code-highlight .bp {
- color: #008000;
-}
-/* Name.Builtin.Pseudo */
-.code-highlight .fm {
- color: #0000FF;
-}
-/* Name.Function.Magic */
-.code-highlight .vc {
- color: #19177C;
-}
-/* Name.Variable.Class */
-.code-highlight .vg {
- color: #19177C;
-}
-/* Name.Variable.Global */
-.code-highlight .vi {
- color: #19177C;
-}
-/* Name.Variable.Instance */
-.code-highlight .vm {
- color: #19177C;
-}
-/* Name.Variable.Magic */
-.code-highlight .il {
- color: #666666;
-}
-/* Literal.Number.Integer.Long */
-html.no-js .hide_if_nojs {
- display: none;
-}
-html.js .show_if_nojs {
- display: none;
-}
-.center {
- text-align: center;
-}
-.right {
- float: right;
-}
-.left {
- float: left;
-}
-.invisible {
- display: none !important;
-}
-.list-unstyled {
- list-style-type: none;
-}
-.list-unstyled li {
- margin-top: 4px;
- margin-bottom: 4px;
-}
-.danger {
- background-color: var(--color-error-background);
-}
-.warning {
- background: var(--color-warning-background);
-}
-.success {
- background: var(--color-success-background);
-}
-.badge {
- display: inline-block;
- color: var(--color-toolkit-badge-font);
- background-color: var(--color-toolkit-badge-background);
- text-align: center;
- white-space: nowrap;
- vertical-align: baseline;
- min-width: 10px;
- padding: 1px 5px;
- border-radius: 5px;
-}
-kbd {
- padding: 2px 4px;
- margin: 1px;
- font-size: 90%;
- color: var(--color-toolkit-kbd-font);
- background: var(--color-toolkit-kbd-background);
-}
-table {
- width: 100%;
-}
-table.striped tr {
- border-bottom: 1px solid var(--color-settings-tr-hover);
-}
-th {
- padding: 0.4em;
-}
-td {
- padding: 0 4px;
-}
-tr:hover {
- background: var(--color-settings-tr-hover) !important;
-}
-div.selectable_url {
- display: block;
- border: 1px solid var(--color-result-search-url-border);
- padding: 4px;
- color: var(--color-result-search-url-font);
- margin: 0.1em;
- overflow: hidden;
- height: 1.2em;
- line-height: 1.2em;
- border-radius: 5px;
-}
-div.selectable_url pre {
- display: block;
- font-size: 0.8em;
- word-break: break-all;
- margin: 0.1em;
- -webkit-user-select: all;
- -moz-user-select: all;
- -ms-user-select: element;
- user-select: all;
-}
-.dialog-error {
- position: relative;
- display: flex;
- padding: 1rem;
- margin: 0 0 1em 0;
- border: 1px solid var(--color-toolkit-dialog-border);
- text-align: left;
- border-radius: 10px;
- color: var(--color-error);
- background: var(--color-error-background);
- border-color: var(--color-error);
-}
-.dialog-error .close {
- float: right;
- position: relative;
- top: -3px;
- color: inherit;
- font-size: 1.5em;
-}
-.dialog-error ul,
-.dialog-error ol,
-.dialog-error p {
- margin: 1px 0 0 0;
-}
-.dialog-error table {
- width: auto;
-}
-.dialog-error tr {
- vertical-align: text-top;
-}
-.dialog-error tr:hover {
- background: transparent !important;
-}
-.dialog-error td {
- padding: 0 1em 0 0;
-}
-.dialog-error h4 {
- margin-top: 0.3em;
- margin-bottom: 0.3em;
-}
-.dialog-warning {
- position: relative;
- display: flex;
- padding: 1rem;
- margin: 0 0 1em 0;
- border: 1px solid var(--color-toolkit-dialog-border);
- text-align: left;
- border-radius: 10px;
- color: var(--color-warning);
- background: var(--color-warning-background);
- border-color: var(--color-warning);
-}
-.dialog-warning .close {
- float: right;
- position: relative;
- top: -3px;
- color: inherit;
- font-size: 1.5em;
-}
-.dialog-warning ul,
-.dialog-warning ol,
-.dialog-warning p {
- margin: 1px 0 0 0;
-}
-.dialog-warning table {
- width: auto;
-}
-.dialog-warning tr {
- vertical-align: text-top;
-}
-.dialog-warning tr:hover {
- background: transparent !important;
-}
-.dialog-warning td {
- padding: 0 1em 0 0;
-}
-.dialog-warning h4 {
- margin-top: 0.3em;
- margin-bottom: 0.3em;
-}
-.dialog-modal {
- position: relative;
- display: flex;
- padding: 1rem;
- margin: 0 0 1em 0;
- border: 1px solid var(--color-toolkit-dialog-border);
- text-align: left;
- border-radius: 10px;
- display: block;
- background: var(--color-toolkit-dialog-background);
- position: fixed;
- top: 50%;
- left: 50%;
- margin: 0 auto;
- transform: translate(-50%, -50%);
- z-index: 10000000;
-}
-.dialog-modal .close {
- float: right;
- position: relative;
- top: -3px;
- color: inherit;
- font-size: 1.5em;
-}
-.dialog-modal ul,
-.dialog-modal ol,
-.dialog-modal p {
- margin: 1px 0 0 0;
-}
-.dialog-modal table {
- width: auto;
-}
-.dialog-modal tr {
- vertical-align: text-top;
-}
-.dialog-modal tr:hover {
- background: transparent !important;
-}
-.dialog-modal td {
- padding: 0 1em 0 0;
-}
-.dialog-modal h4 {
- margin-top: 0.3em;
- margin-bottom: 0.3em;
-}
-.dialog-modal h3 {
- margin-top: 0;
-}
-.btn-collapse {
- cursor: pointer;
-}
-.scrollx {
- overflow-x: auto;
- overflow-y: hidden;
- display: block;
- padding: 0;
- margin: 0;
- border: none;
-}
-/* -- tabs -- */
-.tabs .tabs > label {
- font-size: 90%;
-}
-.tabs {
- display: -webkit-box;
- display: -moz-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- flex-wrap: wrap;
- width: 100%;
- min-width: 100%;
-}
-.tabs > * {
- order: 2;
-}
-.tabs > input[type=radio] {
- display: none;
-}
-.tabs > label {
- order: 1;
- padding: 0.7em;
- margin: 0 0.7em;
- letter-spacing: 0.5px;
- text-transform: uppercase;
- border: solid var(--color-toolkit-tabs-label-border);
- border-width: 0 0 2px 0;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: pointer;
-}
-.tabs > label:hover {
- border-bottom: 2px solid var(--color-categories-item-border-selected);
-}
-.tabs > section {
- min-width: 100%;
- padding: 0.7rem 0;
- box-sizing: border-box;
- border-top: 1px solid var(--color-toolkit-tabs-section-border);
- display: none;
-}
-.tabs > label:last-of-type {
- border-bottom: 2px solid var(--color-categories-item-border-selected);
- background: var(--color-categories-item-selected);
- color: var(--color-categories-item-selected-font);
- letter-spacing: -0.1px;
-}
-.tabs > section:last-of-type {
- display: block;
-}
-html body .tabs > input:checked ~ section {
- display: none;
-}
-html body .tabs > input:checked ~ label {
- position: inherited;
- background: inherit;
- border-bottom: 2px solid transparent;
- font-weight: normal;
- color: inherit;
-}
-html body .tabs > input:checked ~ label:hover {
- border-bottom: 2px solid var(--color-categories-item-border-selected);
-}
-html body .tabs > input:checked + label {
- border-bottom: 2px solid var(--color-categories-item-border-selected);
- background: var(--color-categories-item-selected);
- color: var(--color-categories-item-selected-font);
-}
-html body .tabs > input:checked + label + section {
- display: block;
-}
-/* -- select -- */
-select {
- height: 2.4rem;
- margin: 0 1rem 0 0;
- padding: 0.2rem !important;
- color: var(--color-search-font);
- font-size: 0.9rem;
- z-index: 2;
-}
-select:hover,
-select:focus {
- cursor: pointer;
-}
-@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) {
- select {
- appearance: none;
- -webkit-appearance: none;
- -moz-appearance: none;
- border-width: 0 2rem 0 0;
- border-color: transparent;
- background: url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%3Cg%3E%3Cpolygon%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0A%3C%2Fsvg%3E") no-repeat;
- background-position-x: calc(100% + 2rem);
- background-size: 2rem;
- background-origin: content-box;
- background-color: var(--color-toolkit-select-background);
- outline: medium none;
- text-overflow: ellipsis;
- border-radius: 5px;
- }
- select:hover,
- select:focus {
- background-color: var(--color-toolkit-select-background-hover);
- }
- select option {
- background-color: var(--color-base-background);
- }
- @media (prefers-color-scheme: dark) {
- html.theme-auto select,
- html.theme-dark select {
- background-image: url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%3Cg%3E%3Cpolygon%20fill%3D%22%23ddd%22%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0A%3C%2Fsvg%3E");
- }
- }
- html.theme-dark select {
- background-image: url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%3Cg%3E%3Cpolygon%20fill%3D%22%23ddd%22%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0A%3C%2Fsvg%3E");
- }
-}
-/* -- checkbox-onoff -- */
-@supports (border-radius: 50px) {
- .checkbox-onoff {
- display: inline-block;
- width: 40px;
- height: 10px;
- background: var(--color-toolkit-checkbox-onoff-background);
- margin: 8px 1rem;
- position: relative;
- border-radius: 50px;
- }
- .checkbox-onoff label {
- display: block;
- width: 20px;
- height: 20px;
- position: absolute;
- top: -5px;
- cursor: pointer;
- border-radius: 50px;
- transition: all 0.4s ease;
- left: 27px;
- background-color: var(--color-toolkit-checkbox-onoff-label-background);
- }
- .checkbox-onoff input[type=checkbox] {
- visibility: hidden;
- }
- .checkbox-onoff input[type=checkbox]:checked + label {
- left: -5px;
- background: var(--color-toolkit-checkbox-onoff-checked-background);
- }
-}
-/* -- checkbox -- */
-@supports (transform: rotate(-45deg)) {
- .checkbox {
- width: 20px;
- position: relative;
- margin: 20px auto;
- }
- .checkbox label {
- width: 20px;
- height: 20px;
- cursor: pointer;
- position: absolute;
- top: 0;
- left: 0;
- background: var(--color-toolkit-checkbox-label-background);
- border-radius: 10px;
- }
- .checkbox label::after {
- content: '';
- width: 9px;
- height: 5px;
- position: absolute;
- top: 4px;
- left: 4px;
- border: 3px solid var(--color-toolkit-checkbox-label-border);
- border-top: none;
- border-right: none;
- background: transparent;
- opacity: 0;
- transform: rotate(-45deg);
- }
- .checkbox input[type=checkbox] {
- visibility: hidden;
- }
- .checkbox input[type=checkbox]:checked + label::after {
- border-color: var(--color-toolkit-checkbox-input-border);
- opacity: 1;
- }
- .checkbox input[disabled] + label {
- background-color: transparent !important;
- cursor: inherit;
- }
- .checkbox input:not(:checked):not([readonly]):not([disabled]) + label:hover::after {
- opacity: 0.5;
- }
-}
-@media screen and (max-width: 50em) {
- .tabs > label {
- width: 100%;
- }
-}
-/* -- loader -- */
-.loader,
-.loader::after {
- border-radius: 50%;
- width: 2em;
- height: 2em;
-}
-.loader {
- margin: 1em auto;
- font-size: 10px;
- position: relative;
- text-indent: -9999em;
- border-top: 0.5em solid var(--color-toolkit-loader-border);
- border-right: 0.5em solid var(--color-toolkit-loader-border);
- border-bottom: 0.5em solid var(--color-toolkit-loader-border);
- border-left: 0.5em solid var(--color-toolkit-loader-borderleft);
- -webkit-transform: translateZ(0);
- -ms-transform: translateZ(0);
- transform: translateZ(0);
- -webkit-animation: load8 1.2s infinite linear;
- animation: load8 1.2s infinite linear;
-}
-@-webkit-keyframes load8 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-@keyframes load8 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-/* -- engine-tooltip -- */
-.engine-tooltip {
- display: none;
- position: absolute;
- padding: 0.5rem 1rem;
- margin: 0 0 0 2rem;
- border: 1px solid var(--color-toolkit-engine-tooltip-border);
- background: var(--color-toolkit-engine-tooltip-background);
- font-size: 14px;
- font-weight: normal;
- z-index: 1000000;
- text-align: left;
- border-radius: 10px;
-}
-th:hover .engine-tooltip,
-td:hover .engine-tooltip,
-.engine-tooltip:hover {
- display: inline-block;
-}
-/* -- stacked bar chart -- */
-.stacked-bar-chart {
- margin: 0;
- padding: 0 0.125rem 0 4rem;
- width: 100%;
- width: -moz-available;
- width: -webkit-fill-available;
- width: fill;
- flex-direction: row;
- flex-wrap: nowrap;
- align-items: center;
- display: inline-flex;
-}
-.stacked-bar-chart-value {
- width: 3rem;
- display: inline-block;
- position: absolute;
- padding: 0 0.5rem;
- text-align: right;
-}
-.stacked-bar-chart-base {
- display: flex;
- flex-shrink: 0;
- flex-grow: 0;
- flex-basis: unset;
-}
-.stacked-bar-chart-median {
- display: flex;
- flex-shrink: 0;
- flex-grow: 0;
- flex-basis: unset;
- background: var(--color-base-font);
- border: 1px solid rgba(var(--color-base-font-rgb), 0.9);
- padding: 0.3rem 0;
-}
-.stacked-bar-chart-rate80 {
- display: flex;
- flex-shrink: 0;
- flex-grow: 0;
- flex-basis: unset;
- background: transparent;
- border: 1px solid rgba(var(--color-base-font-rgb), 0.3);
- padding: 0.3rem 0;
-}
-.stacked-bar-chart-rate95 {
- display: flex;
- flex-shrink: 0;
- flex-grow: 0;
- flex-basis: unset;
- background: transparent;
- border-bottom: 1px dotted rgba(var(--color-base-font-rgb), 0.5);
- padding: 0;
-}
-.stacked-bar-chart-rate100 {
- display: flex;
- flex-shrink: 0;
- flex-grow: 0;
- flex-basis: unset;
- background: transparent;
- border-left: 1px solid rgba(var(--color-base-font-rgb), 0.9);
- padding: 0.4rem 0;
- width: 1px;
-}
-/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */
-.autocomplete {
- position: absolute;
- max-height: 0;
- overflow-y: hidden;
- text-align: left;
- border-radius: 10px;
-}
-.autocomplete:active,
-.autocomplete:focus,
-.autocomplete:hover {
- background-color: var(--color-autocomplete-background);
-}
-.autocomplete:empty {
- display: none;
-}
-.autocomplete > ul {
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-.autocomplete > ul > li {
- cursor: pointer;
- padding: 8px 0 8px 8px;
-}
-.autocomplete > ul > li.active,
-.autocomplete > ul > li:active,
-.autocomplete > ul > li:focus,
-.autocomplete > ul > li:hover {
- background-color: var(--color-autocomplete-background-hover);
-}
-.autocomplete > ul > li.active a:active,
-.autocomplete > ul > li:active a:active,
-.autocomplete > ul > li:focus a:active,
-.autocomplete > ul > li:hover a:active,
-.autocomplete > ul > li.active a:focus,
-.autocomplete > ul > li:active a:focus,
-.autocomplete > ul > li:focus a:focus,
-.autocomplete > ul > li:hover a:focus,
-.autocomplete > ul > li.active a:hover,
-.autocomplete > ul > li:active a:hover,
-.autocomplete > ul > li:focus a:hover,
-.autocomplete > ul > li:hover a:hover {
- text-decoration: none;
-}
-.autocomplete > ul > li.locked {
- cursor: inherit;
-}
-.autocomplete.open {
- display: block;
- background-color: var(--color-autocomplete-background);
- color: var(--color-autocomplete-font);
- border: 1px solid var(--color-autocomplete-border);
- max-height: 500px;
- overflow-y: auto;
- z-index: 100;
-}
-.autocomplete.open:empty {
- display: none;
-}
-@media screen and (max-width: 50em) {
- .autocomplete {
- bottom: 0;
- }
- .autocomplete > ul > li {
- border-bottom: 1px solid var(--color-result-top-border);
- text-align: left;
- }
-}
-#main_results #results.image-detail-open.only_template_images {
- width: min(98%, 59.25rem) !important;
-}
-#main_results #results.only_template_images.image-detail-open #backToTop {
- left: 56.75rem !important;
- right: inherit;
-}
-article.result-images .detail {
- display: none;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail {
- display: flex;
- flex-direction: column;
- position: fixed;
- left: 60rem;
- right: 0;
- top: 7.75rem;
- transition: top 0.064s ease-in 0s;
- bottom: 0;
- background: var(--color-result-detail-background);
- border: 1px solid var(--color-result-detail-background);
- z-index: 10000;
- padding: 4rem 3rem 3rem 3rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source {
- display: block;
- flex: 1;
- text-align: left;
- width: 100%;
- border: none;
- text-decoration: none;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img {
- padding: 0;
- margin: 0;
- border: none;
- object-fit: contain;
- width: inherit;
- max-width: 100%;
- min-height: inherit;
- max-height: calc(100vh - 25rem - 7rem);
- background: inherit;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels {
- color: var(--color-result-detail-font);
- max-height: 16rem;
- min-height: 16rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels hr {
- border-top: 1px solid var(--color-result-detail-hr);
- border-bottom: none;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels h4 {
- height: 2rem;
- overflow: hidden;
- text-overflow: ellipsis;
- font-size: 0.9rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p {
- color: var(--color-result-detail-label-font);
- font-size: 0.9rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p span {
- display: inline-block;
- width: 12rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels h4,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a {
- text-align: left;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-content {
- height: 2rem;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-url {
- white-space: nowrap;
- overflow-x: hidden;
- text-overflow: ellipsis;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-content:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-url:hover {
- position: relative;
- overflow: inherit !important;
- background: var(--color-result-detail-background);
- text-overflow: inherit !important;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:visited,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:active {
- color: var(--color-result-detail-link);
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:hover {
- text-decoration: underline;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close {
- top: 1rem;
- left: 1rem;
- padding: 0.4rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous {
- top: 1rem;
- right: 6rem;
- padding: 0.4rem 0.5rem 0.4rem 0.3rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next {
- top: 1rem;
- right: 2rem;
- padding: 0.4rem;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous {
- border-radius: 50%;
- display: block;
- width: 1.5rem;
- height: 1.5rem;
- position: absolute;
- filter: opacity(40%);
- z-index: 2000002;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close span,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next span,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous span {
- display: block;
- width: 1.5rem;
- height: 1.5rem;
- text-align: center;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next span::before,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous span::before {
- vertical-align: sub;
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:visited,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:active,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:visited,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:active,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:visited,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:active {
- color: var(--color-result-detail-font);
- background: var(--color-result-detail-background);
- border: 1px solid var(--color-result-detail-font);
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:focus,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:focus,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:hover,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:focus,
-#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:hover {
- filter: opacity(80%);
-}
-#results.image-detail-open article.result-images[data-vim-selected] .detail .loader {
- position: absolute;
- top: 1rem;
- right: 50%;
- border-top: 0.5em solid var(--color-result-detail-loader-border);
- border-right: 0.5em solid var(--color-result-detail-loader-border);
- border-bottom: 0.5em solid var(--color-result-detail-loader-border);
- border-left: 0.5em solid var(--color-result-detail-loader-borderleft);
-}
-#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail {
- top: 0;
-}
-#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail a.result-images-source img {
- max-height: calc(100vh - 25rem);
-}
-@media screen and (max-width: 80em) {
- #results.image-detail-open article.result-images[data-vim-selected] .detail {
- top: 0;
- left: 0;
- }
- #results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source {
- display: flex;
- flex-direction: column;
- justify-content: center;
- }
- #results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img {
- width: 100%;
- max-height: calc(100vh - 24rem);
- }
- #results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next {
- right: 1rem;
- }
-}
-@media screen and (max-width: 50em) {
- #results.image-detail-open article.result-images[data-vim-selected] .detail {
- top: 0;
- left: 0;
- padding: 1rem;
- }
- #results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img {
- width: 100%;
- max-height: calc(100vh - 20rem);
- margin: 0;
- }
- #results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p span {
- width: inherit;
- margin-right: 1rem;
- }
-}
-.dialog-modal {
- animation-name: dialogmodal;
- animation-duration: 0.13s;
-}
-@keyframes dialogmodal {
- 0% {
- opacity: 0;
- }
- 50% {
- opacity: 0.5;
- transform: translate(-50%, -50%) scale(1.05);
- }
-}
-#main_index {
- margin-top: 26vh;
-}
-#main_index #linkto_preferences {
- right: 1.8rem;
-}
-.index {
- text-align: center;
-}
-.index .title {
- background: url('../img/searxng.png') no-repeat;
- min-height: 4rem;
- margin: 4rem auto;
- background-position: center;
- background-size: contain;
-}
-.index h1 {
- font-size: 4em;
- visibility: hidden;
-}
-.index #search,
-.index #search_header {
- margin: 0 auto;
- background: inherit;
- border: inherit;
- padding: 0;
- display: block;
-}
-.index .search_filters {
- display: block;
- margin: 1em 0;
-}
-.index .category label {
- padding: 6px 10px;
- border-bottom: initial !important;
-}
-@media screen and (max-width: 80em) {
- div.title h1 {
- font-size: 1em;
- }
- #main_index {
- margin-top: 6em;
- }
-}
-@media screen and (max-width: 50em) {
- #main_index {
- margin-top: 0;
- }
-}
-#tab-contentquery table td,
-#tab-contentquery table th {
- text-align: left !important;
- height: 3rem;
-}
-#main_preferences form {
- width: 100%;
-}
-#main_preferences fieldset {
- margin: 8px;
- border: none;
-}
-#main_preferences legend {
- margin: 0;
- padding: 5px 0 0 0;
- display: block;
- float: left;
- width: 300px;
-}
-#main_preferences .value {
- margin: 0;
- padding: 0;
- float: left;
- width: 15em;
-}
-#main_preferences .value select,
-#main_preferences .value input[type="text"] {
- font-size: inherit !important;
- margin: 0 1rem 0 0;
-}
-#main_preferences .value select {
- width: 14rem;
-}
-#main_preferences .value input[type="text"] {
- width: 13.25rem;
- color: var(--color-toolkit-input-text-font);
- border: none;
- background: none repeat scroll 0 0 var(--color-toolkit-select-background);
- padding: 0.2rem 0.4rem;
- height: 2rem;
- border-radius: 5px;
-}
-#main_preferences .value input[type="text"]:hover,
-#main_preferences .value input[type="text"]:focus {
- background-color: var(--color-toolkit-select-background-hover);
-}
-#main_preferences .value select:focus,
-#main_preferences .value input:focus {
- outline: none;
- box-shadow: 0 0 1px 1px var(--color-btn-background);
-}
-#main_preferences .description {
- margin: 0;
- padding: 5px 0 0 0;
- float: left;
- width: 50%;
- color: var(--color-settings-engine-description-font);
- font-size: 90%;
-}
-#main_preferences table {
- border-collapse: collapse;
-}
-#main_preferences table td {
- text-align: center;
-}
-#main_preferences table.cookies {
- width: 100%;
-}
-#main_preferences table.cookies th,
-#main_preferences table.cookies td {
- text-align: left;
- font-family: monospace;
- font-size: 1rem;
- padding: 0.5em;
- vertical-align: top;
-}
-#main_preferences table.cookies td:first-child {
- word-break: keep-all;
- width: 14rem;
- padding-right: 1rem;
-}
-#main_preferences table.cookies td:last-child {
- word-break: break-all;
-}
-#main_preferences table.cookies > tbody > tr:nth-child(even) > th,
-#main_preferences table.cookies > tbody > tr:nth-child(even) > td {
- background-color: var(--color-settings-tr-hover);
-}
-#main_preferences .category {
- margin-right: 0.5rem;
-}
-#main_preferences .category label {
- border: 2px solid transparent;
- padding: 0.2rem 0.4rem;
- border-radius: 5px;
-}
-#main_preferences .category input[type="checkbox"]:checked + label {
- border: 2px solid var(--color-categories-item-border-selected);
-}
-#main_preferences .name,
-#main_preferences .shortcut {
- text-align: left;
-}
-#main_preferences .preferences_back {
- background: none repeat scroll 0 0 var(--color-btn-background);
- color: var(--color-btn-font);
- border: 0 none;
- border-radius: 10px;
- cursor: pointer;
- display: inline-block;
- margin: 2px 4px;
- padding: 0.7em;
-}
-#main_preferences .preferences_back a {
- color: var(--color-settings-return-font);
-}
-#main_preferences .preferences_back a::first-letter {
- text-transform: uppercase;
-}
-#main_preferences div.selectable_url pre {
- width: 100%;
-}
-#main_preferences th.name .engine-tooltip {
- margin-top: 1.8rem;
- left: calc((100% - 85em) / 2 + 10em);
- max-width: 40rem;
-}
-#main_preferences th.name .engine-tooltip .engine-description {
- margin-top: 0.5rem;
-}
-@media screen and (max-width: 80em) {
- .preferences_back {
- clear: both;
- }
- .engine-tooltip {
- left: 10em !important;
- }
-}
-/*
-* SearXNG, A privacy-respecting, hackable metasearch engine
-*/
-#search {
- padding: 0;
- margin: 0;
-}
-#search_header {
- padding: 1.5em 2em 0 7rem;
- margin: 0;
- background: var(--color-header-background);
- border-bottom: 1px solid var(--color-header-border);
- display: grid;
- column-gap: 1.2rem;
- row-gap: 1rem;
- grid-template-columns: 3rem 1fr;
- grid-template-areas: "logo search" "spacer categories";
-}
-.category {
- display: inline-block;
- position: relative;
- margin-right: 1rem;
- padding: 0;
-}
-.category input {
- display: none;
-}
-.category label {
- cursor: pointer;
- padding: 0.2rem 0;
- display: inline-flex;
- text-transform: capitalize;
- font-size: 0.9em;
- border-bottom: 2px solid transparent;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-.category label svg {
- padding-right: 0.2rem;
-}
-.category label div.category_name {
- margin: auto 0;
-}
-.category input[type="checkbox"]:checked + label {
- color: var(--color-categories-item-selected-font);
- border-bottom: 2px solid var(--color-categories-item-border-selected);
-}
-#search_logo {
- grid-area: logo;
- display: flex;
- align-items: center;
- justify-content: center;
-}
-#search_logo svg {
- flex: 1;
- width: 30px;
- height: 30px;
- margin: 0.5rem 0 auto 0;
-}
-.search_categories {
- grid-area: categories;
-}
-.search_box {
- margin: 0;
- padding: 0;
- grid-area: search;
- display: inline-flex;
- flex-direction: row;
- white-space: nowrap;
-}
-#clear_search {
- display: block;
- border-collapse: separate;
- box-sizing: border-box;
- width: 1.8em;
- margin: 0;
- padding: 8px 2px;
- background: none repeat scroll 0 0 var(--color-search-background);
- border-top: 1px solid var(--color-search-border);
- border-bottom: 1px solid var(--color-search-border);
- border-right: none;
- border-left: none;
- border-radius: 0;
- outline: none;
- color: var(--color-search-font);
- font-size: 16px;
- z-index: 10000;
-}
-#clear_search:hover {
- color: var(--color-search-background-hover);
-}
-#clear_search.empty * {
- display: none;
-}
-#q,
-#send_search {
- display: block !important;
- border-collapse: separate;
- box-sizing: border-box;
- margin: 0;
- padding: 10px;
- background: none repeat scroll 0 0 var(--color-search-background);
- border: 1px solid var(--color-search-border);
- border-radius: 0;
- outline: none;
- color: var(--color-search-font);
- font-size: 16px;
- z-index: 2;
-}
-#q {
- outline: medium none;
- padding-left: 12px;
- padding-right: 0 !important;
- border-right: none;
- width: 40rem;
- border-radius: 10px 0 0 10px;
-}
-#q::-ms-clear,
-#q::-webkit-search-cancel-button {
- display: none;
-}
-#send_search {
- border-left: none;
- border-radius: 0 10px 10px 0;
-}
-#send_search:hover {
- cursor: pointer;
- background-color: var(--color-search-background-hover);
- color: var(--color-search-background);
-}
-.no-js #clear_search,
-.no-js #send_search {
- width: auto !important;
- border-left: 1px solid var(--color-search-border);
- padding: 10px;
-}
-.search_filters {
- margin: 0.6rem 0 0 10.6rem;
-}
-.search_filters select {
- background-color: inherit;
-}
-.search_filters select:hover,
-.search_filters select:focus {
- color: var(--color-base-font);
-}
-@media screen and (max-width: 80em) {
- #search_header {
- padding: 1.5em 0.5rem 0 0.5rem;
- column-gap: 0.5rem;
- }
- .search_filters {
- margin: 0.6rem 0 0 3.5rem;
- }
- #categories {
- font-size: 90%;
- clear: both;
- }
- #categories .checkbox_container {
- margin: auto;
- margin-top: 2px;
- }
- html.touch #main_index #categories_container,
- html.touch #main_results #categories_container {
- width: 1000px;
- width: -moz-max-content;
- width: -webkit-max-content;
- width: max-content;
- }
- html.touch #main_index #categories_container .category,
- html.touch #main_results #categories_container .category {
- display: inline-block;
- width: auto;
- }
- html.touch #main_index #categories,
- html.touch #main_results #categories {
- width: 100%;
- text-align: left;
- overflow-x: scroll;
- overflow-y: hidden;
- -webkit-overflow-scrolling: touch;
- }
-}
-@media screen and (max-width: 50em) {
- #search_header {
- width: 100%;
- margin: 0;
- padding: 0.1rem 0 0 0;
- column-gap: 0;
- row-gap: 0;
- grid-template-areas: "logo search" "categories categories";
- }
- .search_logo {
- padding: 0;
- }
- .search_box {
- width: 99%;
- display: flex;
- flex-direction: row;
- }
- #q {
- width: 100%;
- flex: 1;
- }
- #main_results #q:placeholder-shown ~ #send_search {
- margin-right: 2.6rem;
- transition: margin-right 0.1s;
- }
- .search_filters {
- margin: 0;
- }
- .language,
- .time_range {
- width: 45%;
- }
- .category {
- display: block;
- width: 100%;
- margin: 0;
- }
- .category label {
- padding: 0.8rem !important;
- margin: 0 !important;
- }
- .category label svg {
- display: none;
- }
-}
-@media screen and (max-width: 20rem) {
- #search_header {
- grid-template-areas: "search search" "categories categories";
- }
- #search_logo {
- display: none;
- }
-}
-#categories {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-#categories::-webkit-scrollbar {
- width: 0;
- height: 0;
-}
-#categories_container {
- position: relative;
-}
-.ion-icon {
- display: inline-block;
- vertical-align: bottom;
- line-height: 1;
- text-decoration: inherit;
-}
-.ion-icon-small {
- width: 1rem;
- height: 1rem;
- display: inline-block;
- vertical-align: bottom;
- line-height: 1;
- text-decoration: inherit;
-}
-.ion-icon-big {
- width: 1.5rem;
- height: 1.5rem;
- display: inline-block;
- vertical-align: bottom;
- line-height: 1;
- text-decoration: inherit;
-}
-html {
- font-family: sans-serif;
- font-size: 0.9em;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
- -moz-text-size-adjust: 100%;
- text-size-adjust: 100%;
- color: var(--color-base-font);
- background-color: var(--color-base-background);
- padding: 0;
- margin: 0;
-}
-body,
-main {
- padding: 0;
- margin: 0;
-}
-body {
- display: flex;
- flex-direction: column;
- height: 100vh;
- margin: 0;
-}
-main {
- width: 100%;
- margin-bottom: 2rem;
- flex: 1;
-}
-#main_preferences,
-#main_about,
-#main_stats {
- margin: 2em auto;
- width: 85em;
-}
-footer {
- clear: both;
- min-height: 4rem;
- padding: 1rem 0;
- width: 100%;
- text-align: center;
- background-color: var(--color-footer-background);
- border-top: 1px solid var(--color-footer-border);
- overflow: hidden;
-}
-footer p {
- font-size: 0.9em;
-}
-#main_preferences h1,
-#main_stats h1 {
- background: url('../img/searxng.png') no-repeat;
- background-size: contain;
- min-height: 40px;
- margin: 0 auto;
-}
-#main_preferences h1 span,
-#main_stats h1 span {
- visibility: hidden;
-}
-input[type="submit"],
-#results button[type="submit"] {
- padding: 0.7rem;
- display: inline-block;
- background: var(--color-btn-background);
- color: var(--color-btn-font);
- border-radius: 10px;
- border: 0;
- cursor: pointer;
-}
-a {
- text-decoration: none;
- color: var(--color-url-font);
-}
-a:visited {
- color: var(--color-url-visited-font);
-}
-a:visited .highlight {
- color: var(--color-url-visited-font);
-}
-article[data-vim-selected] {
- background: var(--color-result-vim-selected);
- border-left: 0.2rem solid var(--color-result-vim-arrow);
- border-radius: 0 10px 10px 0;
-}
-article.result-images[data-vim-selected] {
- background: var(--color-result-vim-arrow);
- border: none;
- border-radius: 10px;
-}
-article.result-images[data-vim-selected] .image_thumbnail {
- filter: opacity(60%);
-}
-article[data-vim-selected].category-videos,
-article[data-vim-selected].category-news,
-article[data-vim-selected].category-map,
-article[data-vim-selected].category-music,
-article[data-vim-selected].category-files,
-article[data-vim-selected].category-social {
- border: 1px solid var(--color-result-vim-arrow);
- border-radius: 10px;
-}
-.result {
- margin: 0.125rem 0;
- padding: 1rem;
- border-left: 0.2rem solid transparent;
-}
-.result h3 {
- font-size: 1.2rem;
- word-wrap: break-word;
- margin: 0.4rem 0 0.4rem 0;
- padding: 0;
-}
-.result h3 a {
- color: var(--color-result-link-font);
- font-weight: normal;
- font-size: 1.1em;
-}
-.result h3 a:visited {
- color: var(--color-result-link-visited-font);
-}
-.result h3 a:focus,
-.result h3 a:hover {
- text-decoration: underline;
- border: none;
- outline: none;
-}
-.result .cache_link,
-.result .proxyfied_link {
- font-size: 0.9em !important;
-}
-.result .content,
-.result .stat,
-.result .altlink {
- font-size: 0.9em;
- margin: 0;
- padding: 0;
- max-width: 54em;
- word-wrap: break-word;
- line-height: 1.24;
-}
-.result .content .highlight,
-.result .stat .highlight,
-.result .altlink .highlight {
- color: var(--color-result-description-highlight-font);
- background: inherit;
- font-weight: bold;
-}
-.result .codelines .highlight {
- color: inherit;
- background: inherit;
- font-weight: normal;
-}
-.result .url_wrapper {
- display: flex;
- font-size: 1rem;
- color: var(--color-result-url-font);
- flex-wrap: nowrap;
- overflow: hidden;
- flex-direction: row;
- margin: 0;
- padding: 0;
-}
-.result .url_wrapper .url_o1 {
- white-space: nowrap;
- flex-shrink: 1;
-}
-.result .url_wrapper .url_o1::after {
- content: " ";
- width: 1ch;
- display: inline-block;
-}
-.result .url_wrapper .url_o2 {
- overflow: hidden;
- white-space: nowrap;
- flex-basis: content;
- flex-grow: 0;
- flex-shrink: 1;
- text-align: right;
-}
-.result .url_wrapper .url_o2 .url_i2 {
- float: right;
-}
-.result .published_date {
- font-size: 0.8em;
- color: var(--color-result-publishdate-font);
-}
-.result img.thumbnail {
- float: left;
- padding: 0.6rem 1rem 0 0;
- width: 20rem;
-}
-.result img.image {
- float: left;
- padding: 0.6rem 1rem 0 0;
- width: 7rem;
- max-height: 7rem;
- object-fit: scale-down;
- object-position: right top;
-}
-.result .break {
- clear: both;
-}
-.category-videos,
-.category-news,
-.category-map,
-.category-music,
-.category-files,
-.category-social {
- border: 1px solid var(--color-result-border);
- margin: 1rem 0;
- border-radius: 10px;
-}
-.category-social .image {
- width: auto !important;
- min-width: 48px;
- min-height: 48px;
- padding: 0 5px 25px 0 !important;
-}
-.result-videos .content {
- overflow: hidden;
-}
-.engines {
- float: right;
- color: var(--color-result-engines-font);
-}
-.engines span {
- font-size: smaller;
- margin: 0 0.5em 0 0;
-}
-.small_font {
- font-size: 0.8em;
-}
-.highlight {
- color: var(--color-result-link-font-highlight);
- background: inherit;
-}
-.empty_element {
- font-style: italic;
-}
-.result-images {
- display: inline-block;
- margin: 0;
- padding: 0;
- position: relative;
- max-height: 200px;
- border: none !important;
-}
-.result-images img {
- float: inherit;
- margin: 0.125rem;
- padding: 0;
- border: none;
- max-height: 200px;
- background: var(--color-result-image-background);
-}
-.result-images span.title {
- display: none;
- color: var(--color-result-image-span-font);
-}
-.result-images:hover span.title {
- display: block;
- position: absolute;
- bottom: 0;
- right: 0;
- padding: 4px;
- margin: 0 0 4px 4px;
- background-color: var(--color-result-image-span-background-hover);
- font-size: 0.7em;
-}
-.result-map img.image {
- float: right !important;
- height: 100px !important;
- width: auto !important;
-}
-.result-map table {
- font-size: 0.9em;
- width: auto;
- border-collapse: separate;
- border-spacing: 0 0.35rem;
-}
-.result-map table th {
- font-weight: inherit;
- width: 17rem;
- vertical-align: top;
- text-align: left;
-}
-.result-map table td {
- vertical-align: top;
- text-align: left;
-}
-.hidden {
- display: none !important;
-}
-#results {
- margin: 1rem 2rem 0 10rem;
- display: grid;
- grid-template-columns: 45rem 25rem;
- grid-template-rows: min-content min-content 1fr min-content;
- gap: 0 5rem;
- grid-template-areas: "corrections sidebar" "answers sidebar" "urls sidebar" "pagination sidebar";
-}
-#results #sidebar *:first-child,
-#results #urls *:first-child {
- margin-top: 0;
-}
-#urls {
- padding: 0;
- grid-area: urls;
-}
-#suggestions .wrapper {
- display: flex;
- flex-flow: row wrap;
- justify-content: flex-end;
-}
-#suggestions .wrapper form {
- display: inline-block;
- flex: 1 1 50%;
-}
-#suggestions input,
-#infoboxes input {
- padding: 0;
- margin: 3px;
- font-size: 0.9em;
- display: inline-block;
- background: transparent;
- color: var(--color-result-search-url-font);
- cursor: pointer;
-}
-#suggestions input[type="submit"],
-#infoboxes input[type="submit"],
-#suggestions .infobox .url a,
-#infoboxes .infobox .url a {
- color: var(--color-result-link-font);
- text-decoration: none;
- font-size: 0.9rem;
-}
-#suggestions input[type="submit"]:hover,
-#infoboxes input[type="submit"]:hover,
-#suggestions .infobox .url a:hover,
-#infoboxes .infobox .url a:hover {
- text-decoration: underline;
-}
-#corrections {
- grid-area: corrections;
- display: flex;
- flex-flow: row wrap;
- margin: 0 0 1em 0;
-}
-#corrections h4,
-#corrections input[type="submit"] {
- display: inline-block;
- padding: 0.5rem;
- margin: 0.5rem;
-}
-#corrections input[type="submit"] {
- font-size: 0.8rem;
- border-radius: 5px;
-}
-#suggestions .title,
-#search_url .title,
-#apis .title {
- margin: 2em 0 0.5em 0;
- color: var(--color-base-font);
-}
-#answers {
- grid-area: answers;
- border: 1px solid var(--color-answer-border);
- background: var(--color-answer-background);
- padding: 1rem;
- margin: 1rem 0;
- margin-top: 0;
- color: var(--color-answer-font);
- border-radius: 10px;
-}
-#answers h4 {
- display: none;
-}
-#infoboxes form {
- min-width: 210px;
-}
-#sidebar {
- grid-area: sidebar;
- word-wrap: break-word;
- color: var(--color-sidebar-font);
-}
-#sidebar .infobox {
- margin: 10px 0 10px;
- border: 1px solid var(--color-sidebar-border);
- padding: 1rem;
- font-size: 0.9em;
- border-radius: 10px;
-}
-#sidebar .infobox h2 {
- margin: 0 0 0.5em 0;
-}
-#sidebar .infobox img {
- max-width: 100%;
- max-height: 12em;
- display: block;
- margin: 0 auto;
- padding: 0;
-}
-#sidebar .infobox dl {
- margin: 0.5em 0;
-}
-#sidebar .infobox dt {
- display: inline;
- margin: 0.5em 0.25em 0.5em 0;
- padding: 0;
- font-weight: bold;
-}
-#sidebar .infobox dd {
- display: inline;
- margin: 0.5em 0;
- padding: 0;
-}
-#sidebar .infobox input {
- font-size: 1em;
-}
-#sidebar .infobox br {
- clear: both;
-}
-#sidebar .infobox .attributes,
-#sidebar .infobox .urls {
- clear: both;
-}
-#search_url {
- margin-top: 8px;
-}
-#search_url div.selectable_url pre {
- width: 200em;
-}
-#linkto_preferences {
- position: absolute;
- right: 10px;
- top: 2.2rem;
- padding: 0;
- border: 0;
- display: block;
- font-size: 1.2em;
- color: var(--color-search-font);
-}
-#linkto_preferences a:link *,
-#linkto_preferences a:hover *,
-#linkto_preferences a:visited *,
-#linkto_preferences a:active * {
- color: var(--color-search-font);
-}
-#pagination {
- grid-area: pagination;
-}
-#pagination br {
- clear: both;
-}
-#apis {
- margin-top: 8px;
- clear: both;
-}
-#backToTop {
- border: 1px solid var(--color-backtotop-border);
- margin: 0;
- padding: 0;
- font-size: 1em;
- background: var(--color-backtotop-background);
- position: fixed;
- bottom: 8rem;
- left: 56.3rem;
- transition: opacity 0.5s;
- opacity: 0;
- border-radius: 10px;
-}
-#backToTop a {
- display: block;
- margin: 0;
- padding: 0.7em;
-}
-#backToTop a,
-#backToTop a:visited,
-#backToTop a:hover,
-#backToTop a:active {
- color: var(--color-backtotop-font);
-}
-#results.scrolling #backToTop {
- opacity: 1;
-}
-@media screen and (max-width: 80em) {
- #main_preferences,
- #main_about,
- #main_stats {
- margin: 2rem 0.5rem;
- width: auto;
- }
- #infoboxes {
- position: inherit;
- max-width: inherit;
- }
- #infoboxes .infobox {
- clear: both;
- }
- #infoboxes .infobox img {
- float: left;
- max-width: 10em;
- margin: 0.5em 0.5em 0.5em 0;
- }
- #sidebar {
- margin-bottom: 0.125rem;
- padding: 0;
- float: none;
- border: none;
- width: auto;
- }
- #sidebar input {
- border: 0;
- }
- #apis {
- display: none;
- }
- #search_url {
- display: none;
- }
- .result .thumbnail {
- max-width: 98%;
- }
- .result .url span.url {
- display: block;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- width: 100%;
- }
- .result .engines {
- float: right;
- padding: 0 0 3px 0;
- }
- .result-images {
- border-bottom: none !important;
- }
- .image_result {
- max-width: 98%;
- }
- .image_result img {
- max-width: 98%;
- }
- #backToTop {
- display: none;
- }
- #pagination {
- margin: 2rem 0 0 0 !important;
- }
- #main_results div#results {
- margin: 1rem auto 0 auto;
- justify-content: center;
- display: grid;
- grid-template-columns: 45rem;
- grid-template-rows: min-content min-content min-content 1fr min-content min-content;
- gap: 0;
- grid-template-areas: "corrections" "answers" "sidebar" "urls" "pagination";
- }
-}
-#main_results div#results.only_template_images {
- margin: 1rem 0.5rem 0 0.5rem;
- display: grid;
- grid-template-columns: 100%;
- grid-template-rows: min-content min-content 1fr min-content min-content;
- gap: 0;
- grid-template-areas: "corrections" "urls" "answers" "sidebar" "pagination";
-}
-#main_results div#results.only_template_images #urls {
- width: inherit;
- margin: 0;
-}
-#main_results div#results.only_template_images #backToTop {
- left: auto;
- right: 1rem;
-}
-#main_results div#results.only_template_images #pagination {
- margin-right: 4rem;
-}
-@media screen and (max-width: 50em) {
- #main_results div#results {
- grid-template-columns: 100%;
- margin: 2rem 0.5rem 0 0.5rem;
- }
- #linkto_preferences {
- top: 0.8rem;
- right: 0.7rem;
- }
- #main_index #linkto_preferences {
- top: 0.5rem;
- right: 0.5rem;
- }
- #results {
- margin: 0;
- padding: 0;
- }
- #pagination {
- margin: 2rem 1rem 0 1rem !important;
- }
- article[data-vim-selected] {
- border: 1px solid var(--color-result-vim-arrow);
- border-radius: 10px;
- }
- .result {
- border: 1px solid var(--color-result-border);
- margin: 1rem 0;
- border-radius: 10px;
- }
- .result-images {
- margin: 0;
- padding: 0;
- border: none;
- }
-}
-@media screen and (max-width: 35em) {
- .result-videos img.thumbnail {
- float: none !important;
- }
- .result-videos .content {
- overflow: inherit;
- }
-}
-pre code {
- white-space: pre-wrap;
-}
diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js
index 762ba1087..ca59cb562 100644
--- a/searx/static/themes/simple/gruntfile.js
+++ b/searx/static/themes/simple/gruntfile.js
@@ -16,10 +16,8 @@ module.exports = function(grunt) {
tasks: [
'eslint',
'copy',
- 'concat',
'uglify',
- 'less:development',
- 'less:production',
+ 'less',
'image',
'svg2png',
'svg2jinja'
@@ -81,21 +79,6 @@ module.exports = function(grunt) {
]
},
},
- concat: {
- head_and_body: {
- options: {
- separator: ';'
- },
- files: {
- 'js/searxng.head.js': ['src/js/head/*.js'],
- 'js/searxng.js': [
- 'src/js/main/*.js',
- '../__common__/js/*.js',
- './node_modules/autocomplete-js/dist/autocomplete.js'
- ]
- }
- }
- },
uglify: {
options: {
output: {
@@ -105,25 +88,22 @@ module.exports = function(grunt) {
warnings: true,
compress: false,
mangle: true,
- sourceMap: true
+ sourceMap: {
+ includeSources: true
+ }
},
dist: {
files: {
- 'js/searxng.head.min.js': ['js/searxng.head.js'],
- 'js/searxng.min.js': ['js/searxng.js']
+ 'js/searxng.head.min.js': ['src/js/head/*.js'],
+ 'js/searxng.min.js': [
+ 'src/js/main/*.js',
+ '../__common__/js/*.js',
+ './node_modules/autocomplete-js/dist/autocomplete.js'
+ ]
}
}
},
less: {
- development: {
- options: {
- paths: ["less"],
- },
- files: {
- "css/searxng.css": "src/less/style.less",
- "css/searxng-rtl.css": "src/less/style-rtl.less"
- }
- },
production: {
options: {
paths: ["less"],
@@ -288,7 +268,6 @@ module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-image');
grunt.loadNpmTasks('grunt-contrib-jshint');
- grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-stylelint');
@@ -300,10 +279,8 @@ module.exports = function(grunt) {
'eslint',
'stylelint',
'copy',
- 'concat',
'uglify',
- 'less:development',
- 'less:production',
+ 'less',
'image',
'svg2png',
'svg2jinja',
diff --git a/searx/static/themes/simple/js/searxng.head.js b/searx/static/themes/simple/js/searxng.head.js
deleted file mode 100644
index dab0e368a..000000000
--- a/searx/static/themes/simple/js/searxng.head.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * @license
- * (C) Copyright Contributors to the SearXNG project.
- * (C) Copyright Contributors to the searx project (2014 - 2021).
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
-/* global DocumentTouch:readonly */
-(function(w, d) {
- 'use strict';
-
- // add data- properties
- var script = d.currentScript || (function() {
- var scripts = d.getElementsByTagName('script');
- return scripts[scripts.length - 1];
- })();
-
- // try to detect touch screen
- w.searxng = {
- touch: (("ontouchstart" in w) || w.DocumentTouch && document instanceof DocumentTouch) || false,
- method: script.getAttribute('data-method'),
- autocompleter: script.getAttribute('data-autocompleter') === 'true',
- search_on_category_select: script.getAttribute('data-search-on-category-select') === 'true',
- infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true',
- hotkeys: script.getAttribute('data-hotkeys') === 'true',
- static_path: script.getAttribute('data-static-path'),
- translations: JSON.parse(script.getAttribute('data-translations')),
- theme : {
- // image that is displayed if load of <img src='...'> failed
- img_load_error: 'img/img_load_error.svg'
- }
- };
-
- // update the css
- var hmtlElement = d.getElementsByTagName("html")[0];
- hmtlElement.classList.remove('no-js');
- hmtlElement.classList.add('js');
- if (w.searxng.touch) {
- hmtlElement.classList.add('touch');
- }
-})(window, document); \ No newline at end of file
diff --git a/searx/static/themes/simple/js/searxng.head.min.js.map b/searx/static/themes/simple/js/searxng.head.min.js.map
index 92faff1d6..4869cc1dd 100644
--- a/searx/static/themes/simple/js/searxng.head.min.js.map
+++ b/searx/static/themes/simple/js/searxng.head.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"searxng.head.min.js","sources":["searxng.head.js"],"names":["w","d","script","currentScript","scripts","getElementsByTagName","length","searxng","touch","DocumentTouch","document","method","getAttribute","autocompleter","search_on_category_select","infinite_scroll","hotkeys","static_path","translations","JSON","parse","theme","img_load_error","hmtlElement","classList","remove","add","window"],"mappings":";;;;;;CAOA,SAAUA,EAAGC,gBAIT,IAAIC,EAASD,EAAEE,eAAkB,WAC7B,IAAIC,EAAUH,EAAEI,qBAAqB,UACrC,OAAOD,EAAQA,EAAQE,OAAS,GAFH,GAMjCN,EAAEO,QAAU,CACRC,MAAS,iBAAkBR,GAAMA,EAAES,eAAiBC,oBAAoBD,eAAkB,MAC1FE,OAAQT,EAAOU,aAAa,eAC5BC,cAAeX,EAAOU,aAAa,wBAA0B,OAC7DE,0BAA2BZ,EAAOU,aAAa,oCAAsC,OACrFG,gBAAiBb,EAAOU,aAAa,0BAA4B,OACjEI,QAASd,EAAOU,aAAa,kBAAoB,OACjDK,YAAaf,EAAOU,aAAa,oBACjCM,aAAcC,KAAKC,MAAMlB,EAAOU,aAAa,sBAC7CS,MAAQ,CAEJC,eAAgB,2BAKxB,IAAIC,EAActB,EAAEI,qBAAqB,QAAQ,GACjDkB,EAAYC,UAAUC,OAAO,SAC7BF,EAAYC,UAAUE,IAAI,MAC1B,GAAI1B,EAAEO,QAAQC,MAAO,CACjBe,EAAYC,UAAUE,IAAI,WA9BlC,CAgCGC,OAAQjB"} \ No newline at end of file
+{"version":3,"file":"searxng.head.min.js","sources":["../src/js/head/00_init.js"],"sourcesContent":["/**\n * @license\n * (C) Copyright Contributors to the SearXNG project.\n * (C) Copyright Contributors to the searx project (2014 - 2021).\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/* global DocumentTouch:readonly */\n(function(w, d) {\n 'use strict';\n\n // add data- properties\n var script = d.currentScript || (function() {\n var scripts = d.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n\n // try to detect touch screen\n w.searxng = {\n touch: ((\"ontouchstart\" in w) || w.DocumentTouch && document instanceof DocumentTouch) || false,\n method: script.getAttribute('data-method'),\n autocompleter: script.getAttribute('data-autocompleter') === 'true',\n search_on_category_select: script.getAttribute('data-search-on-category-select') === 'true',\n infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true',\n hotkeys: script.getAttribute('data-hotkeys') === 'true',\n static_path: script.getAttribute('data-static-path'),\n translations: JSON.parse(script.getAttribute('data-translations')),\n theme : {\n // image that is displayed if load of <img src='...'> failed\n img_load_error: 'img/img_load_error.svg'\n }\n };\n\n // update the css\n var hmtlElement = d.getElementsByTagName(\"html\")[0];\n hmtlElement.classList.remove('no-js');\n hmtlElement.classList.add('js');\n if (w.searxng.touch) {\n hmtlElement.classList.add('touch');\n }\n})(window, document);"],"names":["w","d","script","currentScript","scripts","getElementsByTagName","length","searxng","touch","DocumentTouch","document","method","getAttribute","autocompleter","search_on_category_select","infinite_scroll","hotkeys","static_path","translations","JSON","parse","theme","img_load_error","hmtlElement","classList","remove","add","window"],"mappings":";;;;;;CAOA,SAAUA,EAAGC,gBAIT,IAAIC,EAASD,EAAEE,eAAkB,WAC7B,IAAIC,EAAUH,EAAEI,qBAAqB,UACrC,OAAOD,EAAQA,EAAQE,OAAS,GAFH,GAMjCN,EAAEO,QAAU,CACRC,MAAS,iBAAkBR,GAAMA,EAAES,eAAiBC,oBAAoBD,eAAkB,MAC1FE,OAAQT,EAAOU,aAAa,eAC5BC,cAAeX,EAAOU,aAAa,wBAA0B,OAC7DE,0BAA2BZ,EAAOU,aAAa,oCAAsC,OACrFG,gBAAiBb,EAAOU,aAAa,0BAA4B,OACjEI,QAASd,EAAOU,aAAa,kBAAoB,OACjDK,YAAaf,EAAOU,aAAa,oBACjCM,aAAcC,KAAKC,MAAMlB,EAAOU,aAAa,sBAC7CS,MAAQ,CAEJC,eAAgB,2BAKxB,IAAIC,EAActB,EAAEI,qBAAqB,QAAQ,GACjDkB,EAAYC,UAAUC,OAAO,SAC7BF,EAAYC,UAAUE,IAAI,MAC1B,GAAI1B,EAAEO,QAAQC,MAAO,CACjBe,EAAYC,UAAUE,IAAI,WA9BlC,CAgCGC,OAAQjB"} \ No newline at end of file
diff --git a/searx/static/themes/simple/js/searxng.js b/searx/static/themes/simple/js/searxng.js
deleted file mode 100644
index c84227541..000000000
--- a/searx/static/themes/simple/js/searxng.js
+++ /dev/null
@@ -1,1598 +0,0 @@
-/**
- * @license
- * (C) Copyright Contributors to the SearXNG project.
- * (C) Copyright Contributors to the searx project (2014 - 2021).
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
-window.searxng = (function(w, d) {
-
- 'use strict';
-
- // not invented here tookit 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];
- };
- })(Element.prototype);
- }
-
- function callbackSafe(callback, el, e) {
- try {
- callback.call(el, e);
- } catch (exception) {
- console.log(exception);
- }
- }
-
- var searxng = window.searxng || {};
-
- searxng.on = function(obj, eventType, callback, useCapture) {
- useCapture = useCapture || false;
- 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);
- }
- };
-
- searxng.ready = function(callback) {
- if (document.readyState != 'loading') {
- callback.call(w);
- } else {
- w.addEventListener('DOMContentLoaded', callback.bind(w));
- }
- };
-
- searxng.http = function(method, url) {
- var req = new XMLHttpRequest(),
- resolve = function() {},
- reject = function() {},
- promise = {
- then: function(callback) { resolve = callback; return promise; },
- catch: function(callback) { reject = callback; return promise; }
- };
-
- try {
- req.open(method, url, true);
-
- // On load
- req.onload = function() {
- if (req.status == 200) {
- resolve(req.response, req.responseType);
- } else {
- reject(Error(req.statusText));
- }
- };
-
- // Handle network errors
- req.onerror = function() {
- reject(Error("Network Error"));
- };
-
- req.onabort = function() {
- reject(Error("Transaction is aborted"));
- };
-
- // Make the request
- req.send();
- } catch (ex) {
- reject(ex);
- }
-
- return promise;
- };
-
- searxng.loadStyle = function(src) {
- var path = searxng.static_path + src,
- 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);
- d.body.appendChild(s);
- }
- };
-
- searxng.loadScript = function(src, callback) {
- var path = searxng.static_path + src,
- id = "script_" + src.replace('.', '_'),
- s = d.getElementById(id);
- if (s === null) {
- s = d.createElement('script');
- s.setAttribute('id', id);
- s.setAttribute('src', path);
- s.onload = callback;
- s.onerror = function() {
- s.setAttribute('error', '1');
- };
- d.body.appendChild(s);
- } else if (!s.hasAttribute('error')) {
- try {
- callback.apply(s, []);
- } catch (exception) {
- console.log(exception);
- }
- } else {
- console.log("callback not executed : script '" + path + "' not loaded.");
- }
- };
-
- searxng.insertBefore = function (newNode, referenceNode) {
- referenceNode.parentNode.insertBefore(newNode, referenceNode);
- };
-
- searxng.insertAfter = function(newNode, referenceNode) {
- referenceNode.parentNode.insertAfter(newNode, referenceNode.nextSibling);
- };
-
- searxng.on('.close', 'click', function() {
- this.parentNode.classList.add('invisible');
- });
-
- return searxng;
-})(window, document);
-;/* SPDX-License-Identifier: AGPL-3.0-or-later */
-/*global searxng*/
-
-searxng.ready(function() {
-
- function isElementInDetail(el) {
- while (el !== undefined) {
- if (el.classList.contains('detail')) {
- return true;
- }
- if (el.classList.contains('result')) {
- // we found a result, no need to go to the root of the document:
- // el is not inside a <div class="detail"> element
- return false;
- }
- el = el.parentNode;
- }
- return false;
- }
-
- function getResultElement(el) {
- while (el !== undefined) {
- if (el.classList.contains('result')) {
- return el;
- }
- el = el.parentNode;
- }
- return undefined;
- }
-
- function isImageResult(resultElement) {
- return resultElement && resultElement.classList.contains('result-images');
- }
-
- searxng.on('.result', 'click', function(e) {
- if (!isElementInDetail(e.target)) {
- highlightResult(this)(true);
- let resultElement = getResultElement(e.target);
- if (isImageResult(resultElement)) {
- e.preventDefault();
- searxng.selectImage(resultElement);
- }
- }
- });
-
- searxng.on('.result a', 'focus', function(e) {
- if (!isElementInDetail(e.target)) {
- let resultElement = getResultElement(e.target);
- if (resultElement && resultElement.getAttribute("data-vim-selected") === null) {
- highlightResult(resultElement)(true);
- }
- if (isImageResult(resultElement)) {
- searxng.selectImage(resultElement);
- }
- }
- }, true);
-
- var vimKeys = {
- 27: {
- key: 'Escape',
- fun: removeFocus,
- des: 'remove focus from the focused input',
- cat: 'Control'
- },
- 73: {
- key: 'i',
- fun: searchInputFocus,
- des: 'focus on the search input',
- cat: 'Control'
- },
- 66: {
- key: 'b',
- fun: scrollPage(-window.innerHeight),
- des: 'scroll one page up',
- cat: 'Navigation'
- },
- 70: {
- key: 'f',
- fun: scrollPage(window.innerHeight),
- des: 'scroll one page down',
- cat: 'Navigation'
- },
- 85: {
- key: 'u',
- fun: scrollPage(-window.innerHeight / 2),
- des: 'scroll half a page up',
- cat: 'Navigation'
- },
- 68: {
- key: 'd',
- fun: scrollPage(window.innerHeight / 2),
- des: 'scroll half a page down',
- cat: 'Navigation'
- },
- 71: {
- key: 'g',
- fun: scrollPageTo(-document.body.scrollHeight, 'top'),
- des: 'scroll to the top of the page',
- cat: 'Navigation'
- },
- 86: {
- key: 'v',
- fun: scrollPageTo(document.body.scrollHeight, 'bottom'),
- des: 'scroll to the bottom of the page',
- cat: 'Navigation'
- },
- 75: {
- key: 'k',
- fun: highlightResult('up'),
- des: 'select previous search result',
- cat: 'Results'
- },
- 74: {
- key: 'j',
- fun: highlightResult('down'),
- des: 'select next search result',
- cat: 'Results'
- },
- 80: {
- key: 'p',
- fun: GoToPreviousPage(),
- des: 'go to previous page',
- cat: 'Results'
- },
- 78: {
- key: 'n',
- fun: GoToNextPage(),
- des: 'go to next page',
- cat: 'Results'
- },
- 79: {
- key: 'o',
- fun: openResult(false),
- des: 'open search result',
- cat: 'Results'
- },
- 84: {
- key: 't',
- fun: openResult(true),
- des: 'open the result in a new tab',
- cat: 'Results'
- },
- 82: {
- key: 'r',
- fun: reloadPage,
- des: 'reload page from the server',
- cat: 'Control'
- },
- 72: {
- key: 'h',
- fun: toggleHelp,
- des: 'toggle help window',
- cat: 'Other'
- }
- };
-
- if (searxng.hotkeys) {
- searxng.on(document, "keydown", function(e) {
- // check for modifiers so we don't break browser's hotkeys
- 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) {
- vimKeys[e.keyCode].fun(e);
- } else {
- if (e.target === document.body || tagName === 'a' || tagName === 'button') {
- e.preventDefault();
- vimKeys[e.keyCode].fun();
- }
- }
- }
- });
- }
-
- function highlightResult(which) {
- return function(noScroll) {
- var current = document.querySelector('.result[data-vim-selected]'),
- effectiveWhich = which;
- if (current === null) {
- // no selection : choose the first one
- current = document.querySelector('.result');
- if (current === null) {
- // no first one : there are no results
- return;
- }
- // replace up/down actions by selecting first one
- if (which === "down" || which === "up") {
- effectiveWhich = current;
- }
- }
-
- var next, results = document.querySelectorAll('.result');
-
- if (typeof effectiveWhich !== 'string') {
- next = effectiveWhich;
- } else {
- switch (effectiveWhich) {
- case 'visible':
- var top = document.documentElement.scrollTop || document.body.scrollTop;
- var bot = top + document.documentElement.clientHeight;
-
- for (var i = 0; i < results.length; i++) {
- next = results[i];
- var etop = next.offsetTop;
- var ebot = etop + next.clientHeight;
-
- if ((ebot <= bot) && (etop > top)) {
- break;
- }
- }
- break;
- case 'down':
- next = current.nextElementSibling;
- if (next === null) {
- next = results[0];
- }
- break;
- case 'up':
- next = current.previousElementSibling;
- if (next === null) {
- next = results[results.length - 1];
- }
- break;
- case 'bottom':
- next = results[results.length - 1];
- break;
- case 'top':
- /* falls through */
- default:
- next = results[0];
- }
- }
-
- if (next) {
- current.removeAttribute('data-vim-selected');
- next.setAttribute('data-vim-selected', 'true');
- var link = next.querySelector('h3 a') || next.querySelector('a');
- if (link !== null) {
- link.focus();
- }
- if (!noScroll) {
- scrollPageToSelected();
- }
- }
- };
- }
-
- function reloadPage() {
- document.location.reload(true);
- }
-
- function removeFocus(e) {
- const tagName = e.target.tagName.toLowerCase();
- if (document.activeElement && (tagName === 'input' || tagName === 'select' || tagName === 'textarea')) {
- document.activeElement.blur();
- } else {
- searxng.closeDetail();
- }
- }
-
- function pageButtonClick(css_selector) {
- return function() {
- var button = document.querySelector(css_selector);
- if (button) {
- button.click();
- }
- };
- }
-
- function GoToNextPage() {
- return pageButtonClick('nav#pagination .next_page button[type="submit"]');
- }
-
- function GoToPreviousPage() {
- return pageButtonClick('nav#pagination .previous_page button[type="submit"]');
- }
-
- function scrollPageToSelected() {
- var sel = document.querySelector('.result[data-vim-selected]');
- if (sel === null) {
- return;
- }
- var wtop = document.documentElement.scrollTop || document.body.scrollTop,
- wheight = document.documentElement.clientHeight,
- etop = sel.offsetTop,
- ebot = etop + sel.clientHeight,
- offset = 120;
- // first element ?
- if ((sel.previousElementSibling === null) && (ebot < wheight)) {
- // set to the top of page if the first element
- // is fully included in the viewport
- window.scroll(window.scrollX, 0);
- return;
- }
- if (wtop > (etop - offset)) {
- window.scroll(window.scrollX, etop - offset);
- } else {
- var wbot = wtop + wheight;
- if (wbot < (ebot + offset)) {
- window.scroll(window.scrollX, ebot - wheight + offset);
- }
- }
- }
-
- function scrollPage(amount) {
- return function() {
- window.scrollBy(0, amount);
- highlightResult('visible')();
- };
- }
-
- function scrollPageTo(position, nav) {
- return function() {
- window.scrollTo(0, position);
- highlightResult(nav)();
- };
- }
-
- function searchInputFocus() {
- window.scrollTo(0, 0);
- document.querySelector('#q').focus();
- }
-
- 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) {
- window.open(url);
- } else {
- window.location.href = url;
- }
- }
- };
- }
-
- function initHelpContent(divElement) {
- var categories = {};
-
- for (var k in vimKeys) {
- var key = vimKeys[k];
- categories[key.cat] = categories[key.cat] || [];
- categories[key.cat].push(key);
- }
-
- var sorted = Object.keys(categories).sort(function(a, b) {
- return categories[b].length - categories[a].length;
- });
-
- if (sorted.length === 0) {
- return;
- }
-
- var html = '<a href="#" class="close" aria-label="close" title="close">×</a>';
- html += '<h3>How to navigate searx with Vim-like hotkeys</h3>';
- html += '<table>';
-
- for (var i = 0; i < sorted.length; i++) {
- var cat = categories[sorted[i]];
-
- var lastCategory = i === (sorted.length - 1);
- var first = i % 2 === 0;
-
- if (first) {
- html += '<tr>';
- }
- html += '<td>';
-
- html += '<h4>' + cat[0].cat + '</h4>';
- html += '<ul class="list-unstyled">';
-
- for (var cj in cat) {
- html += '<li><kbd>' + cat[cj].key + '</kbd> ' + cat[cj].des + '</li>';
- }
-
- html += '</ul>';
- html += '</td>'; // col-sm-*
-
- if (!first || lastCategory) {
- html += '</tr>'; // row
- }
- }
-
- html += '</table>';
-
- divElement.innerHTML = html;
- }
-
- function toggleHelp() {
- var helpPanel = document.querySelector('#vim-hotkeys-help');
- if (helpPanel === undefined || helpPanel === null) {
- // first call
- helpPanel = document.createElement('div');
- helpPanel.id = 'vim-hotkeys-help';
- helpPanel.className='dialog-modal';
- initHelpContent(helpPanel);
- initHelpContent(helpPanel);
- initHelpContent(helpPanel);
- var body = document.getElementsByTagName('body')[0];
- body.appendChild(helpPanel);
- } else {
- // togggle hidden
- helpPanel.classList.toggle('invisible');
- return;
- }
- }
-
- searxng.scrollPageToSelected = scrollPageToSelected;
- searxng.selectNext = highlightResult('down');
- searxng.selectPrevious = highlightResult('up');
-});
-;/* SPDX-License-Identifier: AGPL-3.0-or-later */
-/* global L */
-(function (w, d, searxng) {
- 'use strict';
-
- searxng.ready(function () {
- searxng.on('.searxng_init_map', 'click', function(event) {
- // no more request
- this.classList.remove("searxng_init_map");
-
- //
- var leaflet_target = this.dataset.leafletTarget;
- var map_lon = parseFloat(this.dataset.mapLon);
- var map_lat = parseFloat(this.dataset.mapLat);
- var map_zoom = parseFloat(this.dataset.mapZoom);
- var map_boundingbox = JSON.parse(this.dataset.mapBoundingbox);
- var map_geojson = JSON.parse(this.dataset.mapGeojson);
-
- searxng.loadStyle('css/leaflet.css');
- searxng.loadScript('js/leaflet.js', function() {
- var map_bounds = null;
- if(map_boundingbox) {
- var southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]);
- var northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]);
- map_bounds = L.latLngBounds(southWest, northEast);
- }
-
- // init map
- var map = L.map(leaflet_target);
- // create the tile layer with correct attribution
- var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
- var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
- var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib});
- var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';
- var osmWikimediaAttrib = 'Wikimedia maps | Maps data © <a href="https://openstreetmap.org">OpenStreetMap contributors</a>';
- var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib});
- // init map view
- if(map_bounds) {
- // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021
- // Still useful ?
- setTimeout(function () {
- map.fitBounds(map_bounds, {
- maxZoom:17
- });
- }, 0);
- } else if (map_lon && map_lat) {
- if(map_zoom) {
- map.setView(new L.latLng(map_lat, map_lon),map_zoom);
- } else {
- map.setView(new L.latLng(map_lat, map_lon),8);
- }
- }
-
- map.addLayer(osmMapnik);
-
- var baseLayers = {
- "OSM Mapnik": osmMapnik,
- "OSM Wikimedia": osmWikimedia,
- };
-
- L.control.layers(baseLayers).addTo(map);
-
- if(map_geojson) {
- L.geoJson(map_geojson).addTo(map);
- } /*else if(map_bounds) {
- L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map);
- }*/
- });
-
- // this event occour only once per element
- event.preventDefault();
- });
- });
-})(window, document, window.searxng);
-;/* SPDX-License-Identifier: AGPL-3.0-or-later */
-(function (w, d, searxng) {
- 'use strict';
-
- searxng.ready(function() {
- let engine_descriptions = null;
- function load_engine_descriptions() {
- if (engine_descriptions == null) {
- searxng.http("GET", "engine_descriptions.json").then(function(content) {
- engine_descriptions = JSON.parse(content);
- for (const [engine_name, description] of Object.entries(engine_descriptions)) {
- let elements = d.querySelectorAll('[data-engine-name="' + engine_name + '"] .engine-description');
- for(const element of elements) {
- let source = ' (<i>' + searxng.translations['Source'] + ':&nbsp;' + description[1] + '</i>)';
- element.innerHTML = description[0] + source;
- }
- }
- });
- }
- }
-
- if (d.querySelector('body[class="preferences_endpoint"]')) {
- for(const el of d.querySelectorAll('[data-engine-name]')) {
- searxng.on(el, 'mouseenter', load_engine_descriptions);
- }
- }
- });
-})(window, document, window.searxng);
-;/* SPDX-License-Identifier: AGPL-3.0-or-later */
-(function(w, d, searxng) {
- 'use strict';
-
- searxng.ready(function() {
- 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() {
- var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed');
- var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed');
- var target = this.getAttribute('data-target');
- var targetElement = d.querySelector(target);
- var html = this.innerHTML;
- if (this.classList.contains('collapsed')) {
- html = html.replace(btnLabelCollapsed, btnLabelNotCollapsed);
- } else {
- html = html.replace(btnLabelNotCollapsed, btnLabelCollapsed);
- }
- this.innerHTML = html;
- this.classList.toggle('collapsed');
- targetElement.classList.toggle('invisible');
- });
-
- searxng.on('.media-loader', 'click', function() {
- var target = this.getAttribute('data-target');
- var iframe_load = d.querySelector(target + ' > iframe');
- var srctest = iframe_load.getAttribute('src');
- if (srctest === null || srctest === undefined || srctest === false) {
- iframe_load.setAttribute('src', iframe_load.getAttribute('data-src'));
- }
- });
-
- searxng.selectImage = function(resultElement) {
- /*eslint no-unused-vars: 0*/
- if (resultElement) {
- // load full size image in background
- const imgElement = resultElement.querySelector('.result-images-source img');
- const thumbnailElement = resultElement.querySelector('.image_thumbnail');
- const detailElement = resultElement.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-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,
- results = d.getElementById('results');
- if (e !== null) {
- if (scrollTop >= 100) {
- results.classList.add('scrolling');
- } else {
- results.classList.remove('scrolling');
- }
- }
- }, true);
-
- });
-
-})(window, document, window.searxng);
-;/* SPDX-License-Identifier: AGPL-3.0-or-later */
-/* global AutoComplete */
-(function(w, d, searxng) {
- 'use strict';
-
- var firstFocus = true, qinput_id = "q", qinput;
-
- function placeCursorAtEnd(element) {
- if (element.setSelectionRange) {
- var len = element.value.length;
- element.setSelectionRange(len, len);
- }
- }
-
- function submitIfQuery() {
- if (qinput.value.length > 0) {
- var search = document.getElementById('search');
- setTimeout(search.submit.bind(search), 0);
- }
- }
-
- function createClearButton(qinput) {
- var cs = document.getElementById('clear_search');
- var updateClearButton = function() {
- if (qinput.value.length === 0) {
- cs.classList.add("empty");
- } else {
- cs.classList.remove("empty");
- }
- };
-
- // update status, event listener
- updateClearButton();
- cs.addEventListener('click', function() {
- qinput.value='';
- qinput.focus();
- updateClearButton();
- });
- qinput.addEventListener('keyup', updateClearButton, false);
- }
-
- searxng.ready(function() {
- qinput = d.getElementById(qinput_id);
-
- function placeCursorAtEndOnce() {
- if (firstFocus) {
- placeCursorAtEnd(qinput);
- firstFocus = false;
- } else {
- // e.preventDefault();
- }
- }
-
- if (qinput !== null) {
- // clear button
- createClearButton(qinput);
-
- // autocompleter
- if (searxng.autocompleter) {
- searxng.autocomplete = AutoComplete.call(w, {
- Url: "./autocompleter",
- EmptyMessage: searxng.translations.no_item_found,
- HttpMethod: searxng.method,
- HttpHeaders: {
- "Content-type": "application/x-www-form-urlencoded",
- "X-Requested-With": "XMLHttpRequest"
- },
- MinChars: 4,
- Delay: 300,
- }, "#" + qinput_id);
-
- // hack, see : https://github.com/autocompletejs/autocomplete.js/issues/37
- w.addEventListener('resize', function() {
- var event = new CustomEvent("position");
- qinput.dispatchEvent(event);
- });
- }
-
- qinput.addEventListener('focus', placeCursorAtEndOnce, false);
- qinput.focus();
- }
-
- // vanilla js version of search_on_category_select.js
- if (qinput !== null && d.querySelector('.help') != null && searxng.search_on_category_select) {
- d.querySelector('.help').className='invisible';
-
- searxng.on('#categories input', 'change', function() {
- var i, categories = d.querySelectorAll('#categories input[type="checkbox"]');
- for(i=0; i<categories.length; i++) {
- if (categories[i] !== this && categories[i].checked) {
- categories[i].click();
- }
- }
- if (! this.checked) {
- this.click();
- }
- submitIfQuery();
- return false;
- });
-
- searxng.on(d.getElementById('safesearch'), 'change', submitIfQuery);
- searxng.on(d.getElementById('time_range'), 'change', submitIfQuery);
- searxng.on(d.getElementById('language'), 'change', submitIfQuery);
- }
-
- });
-
-})(window, document, window.searxng);
-;/**
-*
-* Google Image Layout v0.0.1
-* Description, by Anh Trinh.
-* Heavily modified for searx
-* https://ptgamr.github.io/2014-09-12-google-image-layout/
-* https://ptgamr.github.io/google-image-layout/src/google-image-layout.js
-*
-* @license Free to use under the MIT License.
-*
-* @example <caption>Example usage of searxng.ImageLayout class.</caption>
-* searxng.image_thumbnail_layout = new searxng.ImageLayout(
-* '#urls', // container_selector
-* '#urls .result-images', // results_selector
-* 'img.image_thumbnail', // img_selector
-* 14, // verticalMargin
-* 6, // horizontalMargin
-* 200 // maxHeight
-* );
-* searxng.image_thumbnail_layout.watch();
-*/
-
-
-(function (w, d) {
- 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.verticalMargin = verticalMargin;
- this.horizontalMargin = horizontalMargin;
- this.maxHeight = maxHeight;
- this.isAlignDone = true;
- }
-
- /**
- * Get the height that make all images fit the container
- *
- * width = w1 + w2 + w3 + ... = r1*h + r2*h + r3*h + ...
- *
- * @param {[type]} images the images to be calculated
- * @param {[type]} width the container witdth
- * @param {[type]} margin the margin between each image
- *
- * @return {[type]} the height
- */
- ImageLayout.prototype._getHeigth = function (images, width) {
- var i, img;
- var r = 0;
-
- for (i = 0; i < images.length; i++) {
- img = images[i];
- if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) {
- r += img.naturalWidth / img.naturalHeight;
- } else {
- // assume that not loaded images are square
- r += 1;
- }
- }
-
- 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) {
- var i, img, imgWidth;
- var imagesLength = images.length, resultNode;
-
- for (i = 0; i < imagesLength; i++) {
- img = images[i];
- if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) {
- imgWidth = height * img.naturalWidth / img.naturalHeight;
- } else {
- // not loaded image : make it square as _getHeigth said it
- imgWidth = height;
- }
- img.style.width = imgWidth + 'px';
- img.style.height = height + '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');
- }
- }
- };
-
- ImageLayout.prototype._alignImgs = function (imgGroup) {
- var isSearching, slice, i, h;
- var containerElement = d.querySelector(this.container_selector);
- var containerCompStyles = window.getComputedStyle(containerElement);
- var containerPaddingLeft = parseInt(containerCompStyles.getPropertyValue('padding-left'), 10);
- var containerPaddingRight = parseInt(containerCompStyles.getPropertyValue('padding-right'), 10);
- var containerWidth = containerElement.clientWidth - containerPaddingLeft - containerPaddingRight;
-
- while (imgGroup.length > 0) {
- isSearching = true;
- for (i = 1; i <= imgGroup.length && isSearching; i++) {
- slice = imgGroup.slice(0, i);
- h = this._getHeigth(slice, containerWidth);
- if (h < this.maxHeight) {
- this._setSize(slice, h);
- // continue with the remaining images
- imgGroup = imgGroup.slice(i);
- isSearching = false;
- }
- }
- if (isSearching) {
- this._setSize(slice, Math.min(this.maxHeight, h));
- break;
- }
- }
- };
-
- ImageLayout.prototype.align = function () {
- var i;
- var results_selectorNode = d.querySelectorAll(this.results_selector);
- var results_length = results_selectorNode.length;
- var previous = null;
- var current = null;
- var imgGroup = [];
-
- for (i = 0; i < results_length; i++) {
- current = results_selectorNode[i];
- if (current.previousElementSibling !== previous && imgGroup.length > 0) {
- // the current image is not connected to previous one
- // so the current image is the start of a new group of images.
- // so call _alignImgs to align the current group
- this._alignImgs(imgGroup);
- // and start a new empty group of images
- imgGroup = [];
- }
- // add the current image to the group (only the img tag)
- imgGroup.push(current.querySelector(this.img_selector));
- // update the previous variable
- previous = current;
- }
- // align the remaining images
- if (imgGroup.length > 0) {
- this._alignImgs(imgGroup);
- }
- };
-
- ImageLayout.prototype.watch = function () {
- var i, img;
- var obj = this;
- var results_nodes = d.querySelectorAll(this.results_selector);
- var results_length = results_nodes.length;
-
- function img_load_error(event) {
- // console.log("ERROR can't load: " + event.originalTarget.src);
- event.originalTarget.src = w.searxng.static_path + w.searxng.theme.img_load_error;
- }
-
- function throttleAlign() {
- if (obj.isAlignDone) {
- obj.isAlignDone = false;
- setTimeout(function () {
- obj.align();
- obj.isAlignDone = true;
- }, 100);
- }
- }
-
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/pageshow_event
- w.addEventListener('pageshow', throttleAlign);
- // https://developer.mozilla.org/en-US/docs/Web/API/FileReader/load_event
- w.addEventListener('load', throttleAlign);
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/resize_event
- w.addEventListener('resize', throttleAlign);
-
- for (i = 0; i < results_length; i++) {
- img = results_nodes[i].querySelector(this.img_selector);
- if (img !== null && img !== undefined) {
- img.addEventListener('load', throttleAlign);
- // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror
- img.addEventListener('error', throttleAlign);
- if (w.searxng.theme.img_load_error) {
- img.addEventListener('error', img_load_error, {once: true});
- }
- }
- }
- };
-
- w.searxng.ImageLayout = ImageLayout;
-
-}(window, document));
-;(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.AutoComplete = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
-/*
- * @license MIT
- *
- * Autocomplete.js v2.7.1
- * Developed by Baptiste Donaux
- * http://autocomplete-js.com
- *
- * (c) 2017, Baptiste Donaux
- */
-"use strict";
-var ConditionOperator;
-(function (ConditionOperator) {
- ConditionOperator[ConditionOperator["AND"] = 0] = "AND";
- ConditionOperator[ConditionOperator["OR"] = 1] = "OR";
-})(ConditionOperator || (ConditionOperator = {}));
-var EventType;
-(function (EventType) {
- EventType[EventType["KEYDOWN"] = 0] = "KEYDOWN";
- EventType[EventType["KEYUP"] = 1] = "KEYUP";
-})(EventType || (EventType = {}));
-/**
- * Core
- *
- * @class
- * @author Baptiste Donaux <baptiste.donaux@gmail.com> @baptistedonaux
- */
-var AutoComplete = /** @class */ (function () {
- // Constructor
- function AutoComplete(params, selector) {
- if (params === void 0) { params = {}; }
- if (selector === void 0) { selector = "[data-autocomplete]"; }
- if (Array.isArray(selector)) {
- selector.forEach(function (s) {
- new AutoComplete(params, s);
- });
- }
- else if (typeof selector == "string") {
- var elements = document.querySelectorAll(selector);
- Array.prototype.forEach.call(elements, function (input) {
- new AutoComplete(params, input);
- });
- }
- else {
- var specificParams = AutoComplete.merge(AutoComplete.defaults, params, {
- DOMResults: document.createElement("div")
- });
- AutoComplete.prototype.create(specificParams, selector);
- return specificParams;
- }
- }
- AutoComplete.prototype.create = function (params, element) {
- params.Input = element;
- if (params.Input.nodeName.match(/^INPUT$/i) && (params.Input.hasAttribute("type") === false || params.Input.getAttribute("type").match(/^TEXT|SEARCH$/i))) {
- params.Input.setAttribute("autocomplete", "off");
- params._Position(params);
- params.Input.parentNode.appendChild(params.DOMResults);
- params.$Listeners = {
- blur: params._Blur.bind(params),
- destroy: AutoComplete.prototype.destroy.bind(null, params),
- focus: params._Focus.bind(params),
- keyup: AutoComplete.prototype.event.bind(null, params, EventType.KEYUP),
- keydown: AutoComplete.prototype.event.bind(null, params, EventType.KEYDOWN),
- position: params._Position.bind(params)
- };
- for (var event in params.$Listeners) {
- params.Input.addEventListener(event, params.$Listeners[event]);
- }
- }
- };
- AutoComplete.prototype.getEventsByType = function (params, type) {
- var mappings = {};
- for (var key in params.KeyboardMappings) {
- var event = EventType.KEYUP;
- if (params.KeyboardMappings[key].Event !== undefined) {
- event = params.KeyboardMappings[key].Event;
- }
- if (event == type) {
- mappings[key] = params.KeyboardMappings[key];
- }
- }
- return mappings;
- };
- AutoComplete.prototype.event = function (params, type, event) {
- var eventIdentifier = function (condition) {
- if ((match === true && mapping.Operator == ConditionOperator.AND) || (match === false && mapping.Operator == ConditionOperator.OR)) {
- condition = AutoComplete.merge({
- Not: false
- }, condition);
- if (condition.hasOwnProperty("Is")) {
- if (condition.Is == event.keyCode) {
- match = !condition.Not;
- }
- else {
- match = condition.Not;
- }
- }
- else if (condition.hasOwnProperty("From") && condition.hasOwnProperty("To")) {
- if (event.keyCode >= condition.From && event.keyCode <= condition.To) {
- match = !condition.Not;
- }
- else {
- match = condition.Not;
- }
- }
- }
- };
- for (var name in AutoComplete.prototype.getEventsByType(params, type)) {
- var mapping = AutoComplete.merge({
- Operator: ConditionOperator.AND
- }, params.KeyboardMappings[name]), match = ConditionOperator.AND == mapping.Operator;
- mapping.Conditions.forEach(eventIdentifier);
- if (match === true) {
- mapping.Callback.call(params, event);
- }
- }
- };
- AutoComplete.prototype.makeRequest = function (params, callback, callbackErr) {
- var propertyHttpHeaders = Object.getOwnPropertyNames(params.HttpHeaders), request = new XMLHttpRequest(), method = params._HttpMethod(), url = params._Url(), queryParams = params._Pre(), queryParamsStringify = encodeURIComponent(params._QueryArg()) + "=" + encodeURIComponent(queryParams);
- if (method.match(/^GET$/i)) {
- if (url.indexOf("?") !== -1) {
- url += "&" + queryParamsStringify;
- }
- else {
- url += "?" + queryParamsStringify;
- }
- }
- request.open(method, url, true);
- for (var i = propertyHttpHeaders.length - 1; i >= 0; i--) {
- request.setRequestHeader(propertyHttpHeaders[i], params.HttpHeaders[propertyHttpHeaders[i]]);
- }
- request.onreadystatechange = function () {
- if (request.readyState == 4 && request.status == 200) {
- params.$Cache[queryParams] = request.response;
- callback(request.response);
- }
- else if (request.status >= 400) {
- callbackErr();
- }
- };
- return request;
- };
- AutoComplete.prototype.ajax = function (params, request, timeout) {
- if (timeout === void 0) { timeout = true; }
- if (params.$AjaxTimer) {
- window.clearTimeout(params.$AjaxTimer);
- }
- if (timeout === true) {
- params.$AjaxTimer = window.setTimeout(AutoComplete.prototype.ajax.bind(null, params, request, false), params.Delay);
- }
- else {
- if (params.Request) {
- params.Request.abort();
- }
- params.Request = request;
- params.Request.send(params._QueryArg() + "=" + params._Pre());
- }
- };
- AutoComplete.prototype.cache = function (params, callback, callbackErr) {
- var response = params._Cache(params._Pre());
- if (response === undefined) {
- var request = AutoComplete.prototype.makeRequest(params, callback, callbackErr);
- AutoComplete.prototype.ajax(params, request);
- }
- else {
- callback(response);
- }
- };
- AutoComplete.prototype.destroy = function (params) {
- for (var event in params.$Listeners) {
- params.Input.removeEventListener(event, params.$Listeners[event]);
- }
- params.DOMResults.parentNode.removeChild(params.DOMResults);
- };
- AutoComplete.merge = function () {
- var merge = {}, tmp;
- for (var i = 0; i < arguments.length; i++) {
- for (tmp in arguments[i]) {
- merge[tmp] = arguments[i][tmp];
- }
- }
- return merge;
- };
- AutoComplete.defaults = {
- Delay: 150,
- EmptyMessage: "No result here",
- Highlight: {
- getRegex: function (value) {
- return new RegExp(value, "ig");
- },
- transform: function (value) {
- return "<strong>" + value + "</strong>";
- }
- },
- HttpHeaders: {
- "Content-type": "application/x-www-form-urlencoded"
- },
- Limit: 0,
- MinChars: 0,
- HttpMethod: "GET",
- QueryArg: "q",
- Url: null,
- KeyboardMappings: {
- "Enter": {
- Conditions: [{
- Is: 13,
- Not: false
- }],
- Callback: function (event) {
- if (this.DOMResults.getAttribute("class").indexOf("open") != -1) {
- var liActive = this.DOMResults.querySelector("li.active");
- if (liActive !== null) {
- event.preventDefault();
- this._Select(liActive);
- this.DOMResults.setAttribute("class", "autocomplete");
- }
- }
- },
- Operator: ConditionOperator.AND,
- Event: EventType.KEYDOWN
- },
- "KeyUpAndDown_down": {
- Conditions: [{
- Is: 38,
- Not: false
- },
- {
- Is: 40,
- Not: false
- }],
- Callback: function (event) {
- event.preventDefault();
- },
- Operator: ConditionOperator.OR,
- Event: EventType.KEYDOWN
- },
- "KeyUpAndDown_up": {
- Conditions: [{
- Is: 38,
- Not: false
- },
- {
- Is: 40,
- Not: false
- }],
- Callback: function (event) {
- event.preventDefault();
- var first = this.DOMResults.querySelector("li:first-child:not(.locked)"), last = this.DOMResults.querySelector("li:last-child:not(.locked)"), active = this.DOMResults.querySelector("li.active");
- if (active) {
- var currentIndex = Array.prototype.indexOf.call(active.parentNode.children, active), position = currentIndex + (event.keyCode - 39), lisCount = this.DOMResults.getElementsByTagName("li").length;
- if (position < 0) {
- position = lisCount - 1;
- }
- else if (position >= lisCount) {
- position = 0;
- }
- active.classList.remove("active");
- active.parentElement.children.item(position).classList.add("active");
- }
- else if (last && event.keyCode == 38) {
- last.classList.add("active");
- }
- else if (first) {
- first.classList.add("active");
- }
- },
- Operator: ConditionOperator.OR,
- Event: EventType.KEYUP
- },
- "AlphaNum": {
- Conditions: [{
- Is: 13,
- Not: true
- }, {
- From: 35,
- To: 40,
- Not: true
- }],
- Callback: function () {
- var oldValue = this.Input.getAttribute("data-autocomplete-old-value"), currentValue = this._Pre();
- if (currentValue !== "" && currentValue.length >= this._MinChars()) {
- if (!oldValue || currentValue != oldValue) {
- this.DOMResults.setAttribute("class", "autocomplete open");
- }
- AutoComplete.prototype.cache(this, function (response) {
- this._Render(this._Post(response));
- this._Open();
- }.bind(this), this._Error);
- }
- else {
- this._Close();
- }
- },
- Operator: ConditionOperator.AND,
- Event: EventType.KEYUP
- }
- },
- DOMResults: null,
- Request: null,
- Input: null,
- /**
- * Return the message when no result returns
- */
- _EmptyMessage: function () {
- var emptyMessage = "";
- if (this.Input.hasAttribute("data-autocomplete-empty-message")) {
- emptyMessage = this.Input.getAttribute("data-autocomplete-empty-message");
- }
- else if (this.EmptyMessage !== false) {
- emptyMessage = this.EmptyMessage;
- }
- else {
- emptyMessage = "";
- }
- return emptyMessage;
- },
- /**
- * Returns the maximum number of results
- */
- _Limit: function () {
- var limit = this.Input.getAttribute("data-autocomplete-limit");
- if (isNaN(limit) || limit === null) {
- return this.Limit;
- }
- return parseInt(limit, 10);
- },
- /**
- * Returns the minimum number of characters entered before firing ajax
- */
- _MinChars: function () {
- var minchars = this.Input.getAttribute("data-autocomplete-minchars");
- if (isNaN(minchars) || minchars === null) {
- return this.MinChars;
- }
- return parseInt(minchars, 10);
- },
- /**
- * Apply transformation on labels response
- */
- _Highlight: function (label) {
- return label.replace(this.Highlight.getRegex(this._Pre()), this.Highlight.transform);
- },
- /**
- * Returns the HHTP method to use
- */
- _HttpMethod: function () {
- if (this.Input.hasAttribute("data-autocomplete-method")) {
- return this.Input.getAttribute("data-autocomplete-method");
- }
- return this.HttpMethod;
- },
- /**
- * Returns the query param to use
- */
- _QueryArg: function () {
- if (this.Input.hasAttribute("data-autocomplete-param-name")) {
- return this.Input.getAttribute("data-autocomplete-param-name");
- }
- return this.QueryArg;
- },
- /**
- * Returns the URL to use for AJAX request
- */
- _Url: function () {
- if (this.Input.hasAttribute("data-autocomplete")) {
- return this.Input.getAttribute("data-autocomplete");
- }
- return this.Url;
- },
- /**
- * Manage the close
- */
- _Blur: function (now) {
- if (now === void 0) { now = false; }
- if (now) {
- this._Close();
- }
- else {
- var params = this;
- setTimeout(function () {
- params._Blur(true);
- }, 150);
- }
- },
- /**
- * Manage the cache
- */
- _Cache: function (value) {
- return this.$Cache[value];
- },
- /**
- * Manage the open
- */
- _Focus: function () {
- var oldValue = this.Input.getAttribute("data-autocomplete-old-value");
- if ((!oldValue || this.Input.value != oldValue) && this._MinChars() <= this.Input.value.length) {
- this.DOMResults.setAttribute("class", "autocomplete open");
- }
- },
- /**
- * Bind all results item if one result is opened
- */
- _Open: function () {
- var params = this;
- Array.prototype.forEach.call(this.DOMResults.getElementsByTagName("li"), function (li) {
- if (li.getAttribute("class") != "locked") {
- li.onclick = function () {
- params._Select(li);
- };
- }
- });
- },
- _Close: function () {
- this.DOMResults.setAttribute("class", "autocomplete");
- },
- /**
- * Position the results HTML element
- */
- _Position: function () {
- this.DOMResults.setAttribute("class", "autocomplete");
- this.DOMResults.setAttribute("style", "top:" + (this.Input.offsetTop + this.Input.offsetHeight) + "px;left:" + this.Input.offsetLeft + "px;width:" + this.Input.clientWidth + "px;");
- },
- /**
- * Execute the render of results DOM element
- */
- _Render: function (response) {
- var ul;
- if (typeof response == "string") {
- ul = this._RenderRaw(response);
- }
- else {
- ul = this._RenderResponseItems(response);
- }
- if (this.DOMResults.hasChildNodes()) {
- this.DOMResults.removeChild(this.DOMResults.childNodes[0]);
- }
- this.DOMResults.appendChild(ul);
- },
- /**
- * ResponseItems[] rendering
- */
- _RenderResponseItems: function (response) {
- var ul = document.createElement("ul"), li = document.createElement("li"), limit = this._Limit();
- // Order
- if (limit < 0) {
- response = response.reverse();
- }
- else if (limit === 0) {
- limit = response.length;
- }
- for (var item = 0; item < Math.min(Math.abs(limit), response.length); item++) {
- li.innerHTML = response[item].Label;
- li.setAttribute("data-autocomplete-value", response[item].Value);
- ul.appendChild(li);
- li = document.createElement("li");
- }
- return ul;
- },
- /**
- * string response rendering (RAW HTML)
- */
- _RenderRaw: function (response) {
- var ul = document.createElement("ul"), li = document.createElement("li");
- if (response.length > 0) {
- this.DOMResults.innerHTML = response;
- }
- else {
- var emptyMessage = this._EmptyMessage();
- if (emptyMessage !== "") {
- li.innerHTML = emptyMessage;
- li.setAttribute("class", "locked");
- ul.appendChild(li);
- }
- }
- return ul;
- },
- /**
- * Deal with request response
- */
- _Post: function (response) {
- try {
- var returnResponse = [];
- //JSON return
- var json = JSON.parse(response);
- if (Object.keys(json).length === 0) {
- return "";
- }
- if (Array.isArray(json)) {
- for (var i = 0; i < Object.keys(json).length; i++) {
- returnResponse[returnResponse.length] = { "Value": json[i], "Label": this._Highlight(json[i]) };
- }
- }
- else {
- for (var value in json) {
- returnResponse.push({
- "Value": value,
- "Label": this._Highlight(json[value])
- });
- }
- }
- return returnResponse;
- }
- catch (event) {
- //HTML return
- return response;
- }
- },
- /**
- * Return the autocomplete value to send (before request)
- */
- _Pre: function () {
- return this.Input.value;
- },
- /**
- * Choice one result item
- */
- _Select: function (item) {
- if (item.hasAttribute("data-autocomplete-value")) {
- this.Input.value = item.getAttribute("data-autocomplete-value");
- }
- else {
- this.Input.value = item.innerHTML;
- }
- this.Input.setAttribute("data-autocomplete-old-value", this.Input.value);
- },
- /**
- * Handle HTTP error on the request
- */
- _Error: function () {
- },
- $AjaxTimer: null,
- $Cache: {},
- $Listeners: {}
- };
- return AutoComplete;
-}());
-module.exports = AutoComplete;
-
-},{}]},{},[1])(1)
-});
diff --git a/searx/static/themes/simple/js/searxng.min.js.map b/searx/static/themes/simple/js/searxng.min.js.map
index ee2728abd..a11737204 100644
--- a/searx/static/themes/simple/js/searxng.min.js.map
+++ b/searx/static/themes/simple/js/searxng.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"searxng.min.js","sources":["searxng.js"],"names":["window","searxng","w","d","Element","ElementPrototype","matches","matchesSelector","webkitMatchesSelector","msMatchesSelector","selector","node","this","nodes","parentNode","document","querySelectorAll","i","prototype","callbackSafe","callback","el","e","call","exception","console","log","on","obj","eventType","useCapture","addEventListener","target","srcElement","found","parentElement","ready","readyState","bind","http","method","url","req","XMLHttpRequest","resolve","reject","promise","then","catch","open","onload","status","response","responseType","Error","statusText","onerror","onabort","send","ex","loadStyle","src","path","static_path","id","replace","s","getElementById","createElement","setAttribute","body","appendChild","loadScript","hasAttribute","apply","insertBefore","newNode","referenceNode","insertAfter","nextSibling","classList","add","isElementInDetail","undefined","contains","getResultElement","isImageResult","resultElement","highlightResult","let","preventDefault","selectImage","getAttribute","vimKeys","27","key","fun","removeFocus","des","cat","73","searchInputFocus","66","scrollPage","innerHeight","70","85","68","71","scrollPageTo","scrollHeight","86","75","74","80","GoToPreviousPage","78","GoToNextPage","79","openResult","84","82","reloadPage","72","toggleHelp","hotkeys","Object","hasOwnProperty","keyCode","ctrlKey","altKey","shiftKey","metaKey","tagName","toLowerCase","which","noScroll","current","querySelector","effectiveWhich","next","results","top","documentElement","scrollTop","bot","clientHeight","length","etop","offsetTop","ebot","nextElementSibling","previousElementSibling","removeAttribute","link","focus","scrollPageToSelected","location","reload","activeElement","blur","closeDetail","pageButtonClick","css_selector","button","click","sel","wtop","wheight","offset","scroll","scrollX","wbot","amount","scrollBy","position","nav","scrollTo","newTab","href","initHelpContent","divElement","categories","k","push","sorted","keys","sort","a","b","html","lastCategory","first","cj","innerHTML","helpPanel","className","getElementsByTagName","toggle","selectNext","selectPrevious","event","remove","leaflet_target","dataset","leafletTarget","map_lon","parseFloat","mapLon","map_lat","mapLat","map_zoom","mapZoom","map_boundingbox","JSON","parse","mapBoundingbox","map_geojson","mapGeojson","map_bounds","southWest","L","latLng","northEast","latLngBounds","map","osmMapnikUrl","osmMapnikAttrib","osmMapnik","TileLayer","minZoom","maxZoom","attribution","osmWikimediaUrl","osmWikimediaAttrib","osmWikimedia","setTimeout","fitBounds","setView","addLayer","baseLayers","OSM Mapnik","OSM Wikimedia","control","layers","addTo","geoJson","engine_descriptions","load_engine_descriptions","content","engine_name","description","entries","elements","element","source","translations","image_thumbnail_layout","ImageLayout","watch","btnLabelCollapsed","btnLabelNotCollapsed","targetElement","iframe_load","srctest","imgElement","thumbnailElement","detailElement","imgSrc","loader","imgLoader","Image","align","firstFocus","qinput_id","qinput","placeCursorAtEnd","setSelectionRange","len","value","submitIfQuery","search","submit","createClearButton","cs","updateClearButton","placeCursorAtEndOnce","autocompleter","autocomplete","AutoComplete","Url","EmptyMessage","no_item_found","HttpMethod","HttpHeaders","Content-type","X-Requested-With","MinChars","Delay","CustomEvent","dispatchEvent","search_on_category_select","checked","container_selector","results_selector","img_selector","verticalMargin","horizontalMargin","maxHeight","isAlignDone","_getHeigth","images","width","img","r","naturalWidth","naturalHeight","_setSize","height","imgWidth","imagesLength","resultNode","style","marginLeft","marginTop","marginRight","marginBottom","_alignImgs","imgGroup","isSearching","slice","h","containerElement","containerCompStyles","getComputedStyle","containerPaddingLeft","parseInt","getPropertyValue","containerPaddingRight","containerWidth","clientWidth","Math","min","results_selectorNode","results_length","previous","results_nodes","img_load_error","originalTarget","theme","throttleAlign","once","f","exports","module","define","amd","g","global","self","n","t","o","c","require","u","code","p","1","ConditionOperator","EventType","params","Array","isArray","forEach","input","specificParams","merge","defaults","DOMResults","create","Input","nodeName","match","_Position","$Listeners","_Blur","destroy","_Focus","keyup","KEYUP","keydown","KEYDOWN","getEventsByType","type","mappings","KeyboardMappings","Event","eventIdentifier","condition","mapping","Operator","AND","OR","Not","Is","From","To","name","Conditions","Callback","makeRequest","callbackErr","propertyHttpHeaders","getOwnPropertyNames","request","_HttpMethod","_Url","queryParams","_Pre","queryParamsStringify","encodeURIComponent","_QueryArg","indexOf","setRequestHeader","onreadystatechange","$Cache","ajax","timeout","$AjaxTimer","clearTimeout","Request","abort","cache","_Cache","removeEventListener","removeChild","tmp","arguments","Highlight","getRegex","RegExp","transform","Limit","QueryArg","Enter","liActive","_Select","KeyUpAndDown_down","KeyUpAndDown_up","last","active","currentIndex","children","lisCount","item","AlphaNum","oldValue","currentValue","_MinChars","_Render","_Post","_Open","_Error","_Close","_EmptyMessage","emptyMessage","_Limit","limit","isNaN","minchars","_Highlight","label","now","li","onclick","offsetHeight","offsetLeft","ul","_RenderRaw","_RenderResponseItems","hasChildNodes","childNodes","reverse","abs","Label","Value","returnResponse","json"],"mappings":"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"} \ No newline at end of file
+{"version":3,"file":"searxng.min.js","sources":["../src/js/main/00_toolkit.js","../src/js/main/keyboard.js","../src/js/main/mapresult.js","../src/js/main/preferences.js","../src/js/main/results.js","../src/js/main/search.js","../../__common__/js/image_layout.js","../node_modules/autocomplete-js/dist/autocomplete.js"],"sourcesContent":["/**\n * @license\n * (C) Copyright Contributors to the SearXNG project.\n * (C) Copyright Contributors to the searx project (2014 - 2021).\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nwindow.searxng = (function(w, d) {\n\n 'use strict';\n\n // not invented here tookit with bugs fixed elsewhere\n // purposes : be just good enough and as small as possible\n\n // from https://plainjs.com/javascript/events/live-binding-event-handlers-14/\n if (w.Element) {\n (function(ElementPrototype) {\n ElementPrototype.matches = ElementPrototype.matches ||\n ElementPrototype.matchesSelector ||\n ElementPrototype.webkitMatchesSelector ||\n ElementPrototype.msMatchesSelector ||\n function(selector) {\n var node = this, nodes = (node.parentNode || node.document).querySelectorAll(selector), i = -1;\n while (nodes[++i] && nodes[i] != node);\n return !!nodes[i];\n };\n })(Element.prototype);\n }\n\n function callbackSafe(callback, el, e) {\n try {\n callback.call(el, e);\n } catch (exception) {\n console.log(exception);\n }\n }\n\n var searxng = window.searxng || {};\n\n searxng.on = function(obj, eventType, callback, useCapture) {\n useCapture = useCapture || false;\n if (typeof obj !== 'string') {\n // obj HTMLElement, HTMLDocument\n obj.addEventListener(eventType, callback, useCapture);\n } else {\n // obj is a selector\n d.addEventListener(eventType, function(e) {\n var el = e.target || e.srcElement, found = false;\n while (el && el.matches && el !== d && !(found = el.matches(obj))) el = el.parentElement;\n if (found) callbackSafe(callback, el, e);\n }, useCapture);\n }\n };\n\n searxng.ready = function(callback) {\n if (document.readyState != 'loading') {\n callback.call(w);\n } else {\n w.addEventListener('DOMContentLoaded', callback.bind(w));\n }\n };\n\n searxng.http = function(method, url) {\n var req = new XMLHttpRequest(),\n resolve = function() {},\n reject = function() {},\n promise = {\n then: function(callback) { resolve = callback; return promise; },\n catch: function(callback) { reject = callback; return promise; }\n };\n\n try {\n req.open(method, url, true);\n\n // On load\n req.onload = function() {\n if (req.status == 200) {\n resolve(req.response, req.responseType);\n } else {\n reject(Error(req.statusText));\n }\n };\n\n // Handle network errors\n req.onerror = function() {\n reject(Error(\"Network Error\"));\n };\n\n req.onabort = function() {\n reject(Error(\"Transaction is aborted\"));\n };\n\n // Make the request\n req.send();\n } catch (ex) {\n reject(ex);\n }\n\n return promise;\n };\n\n searxng.loadStyle = function(src) {\n var path = searxng.static_path + src,\n id = \"style_\" + src.replace('.', '_'),\n s = d.getElementById(id);\n if (s === null) {\n s = d.createElement('link');\n s.setAttribute('id', id);\n s.setAttribute('rel', 'stylesheet');\n s.setAttribute('type', 'text/css');\n s.setAttribute('href', path);\n d.body.appendChild(s);\n }\n };\n\n searxng.loadScript = function(src, callback) {\n var path = searxng.static_path + src,\n id = \"script_\" + src.replace('.', '_'),\n s = d.getElementById(id);\n if (s === null) {\n s = d.createElement('script');\n s.setAttribute('id', id);\n s.setAttribute('src', path);\n s.onload = callback;\n s.onerror = function() {\n s.setAttribute('error', '1');\n };\n d.body.appendChild(s);\n } else if (!s.hasAttribute('error')) {\n try {\n callback.apply(s, []);\n } catch (exception) {\n console.log(exception);\n }\n } else {\n console.log(\"callback not executed : script '\" + path + \"' not loaded.\");\n }\n };\n\n searxng.insertBefore = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode);\n };\n\n searxng.insertAfter = function(newNode, referenceNode) {\n referenceNode.parentNode.insertAfter(newNode, referenceNode.nextSibling);\n }; \n\n searxng.on('.close', 'click', function() {\n this.parentNode.classList.add('invisible');\n });\n \n return searxng;\n})(window, document);\n","/* SPDX-License-Identifier: AGPL-3.0-or-later */\n/*global searxng*/\n\nsearxng.ready(function() {\n\n function isElementInDetail(el) {\n while (el !== undefined) {\n if (el.classList.contains('detail')) {\n return true;\n }\n if (el.classList.contains('result')) {\n // we found a result, no need to go to the root of the document:\n // el is not inside a <div class=\"detail\"> element\n return false;\n }\n el = el.parentNode;\n }\n return false;\n }\n\n function getResultElement(el) {\n while (el !== undefined) {\n if (el.classList.contains('result')) {\n return el;\n }\n el = el.parentNode;\n }\n return undefined;\n }\n\n function isImageResult(resultElement) {\n return resultElement && resultElement.classList.contains('result-images');\n }\n\n searxng.on('.result', 'click', function(e) {\n if (!isElementInDetail(e.target)) {\n highlightResult(this)(true);\n let resultElement = getResultElement(e.target);\n if (isImageResult(resultElement)) {\n e.preventDefault();\n searxng.selectImage(resultElement);\n }\n }\n });\n\n searxng.on('.result a', 'focus', function(e) {\n if (!isElementInDetail(e.target)) {\n let resultElement = getResultElement(e.target);\n if (resultElement && resultElement.getAttribute(\"data-vim-selected\") === null) {\n highlightResult(resultElement)(true);\n }\n if (isImageResult(resultElement)) {\n searxng.selectImage(resultElement);\n }\n }\n }, true);\n\n var vimKeys = {\n 27: {\n key: 'Escape',\n fun: removeFocus,\n des: 'remove focus from the focused input',\n cat: 'Control'\n },\n 73: {\n key: 'i',\n fun: searchInputFocus,\n des: 'focus on the search input',\n cat: 'Control'\n },\n 66: {\n key: 'b',\n fun: scrollPage(-window.innerHeight),\n des: 'scroll one page up',\n cat: 'Navigation'\n },\n 70: {\n key: 'f',\n fun: scrollPage(window.innerHeight),\n des: 'scroll one page down',\n cat: 'Navigation'\n },\n 85: {\n key: 'u',\n fun: scrollPage(-window.innerHeight / 2),\n des: 'scroll half a page up',\n cat: 'Navigation'\n },\n 68: {\n key: 'd',\n fun: scrollPage(window.innerHeight / 2),\n des: 'scroll half a page down',\n cat: 'Navigation'\n },\n 71: {\n key: 'g',\n fun: scrollPageTo(-document.body.scrollHeight, 'top'),\n des: 'scroll to the top of the page',\n cat: 'Navigation'\n },\n 86: {\n key: 'v',\n fun: scrollPageTo(document.body.scrollHeight, 'bottom'),\n des: 'scroll to the bottom of the page',\n cat: 'Navigation'\n },\n 75: {\n key: 'k',\n fun: highlightResult('up'),\n des: 'select previous search result',\n cat: 'Results'\n },\n 74: {\n key: 'j',\n fun: highlightResult('down'),\n des: 'select next search result',\n cat: 'Results'\n },\n 80: {\n key: 'p',\n fun: GoToPreviousPage(),\n des: 'go to previous page',\n cat: 'Results'\n },\n 78: {\n key: 'n',\n fun: GoToNextPage(),\n des: 'go to next page',\n cat: 'Results'\n },\n 79: {\n key: 'o',\n fun: openResult(false),\n des: 'open search result',\n cat: 'Results'\n },\n 84: {\n key: 't',\n fun: openResult(true),\n des: 'open the result in a new tab',\n cat: 'Results'\n },\n 82: {\n key: 'r',\n fun: reloadPage,\n des: 'reload page from the server',\n cat: 'Control'\n },\n 72: {\n key: 'h',\n fun: toggleHelp,\n des: 'toggle help window',\n cat: 'Other'\n }\n };\n\n if (searxng.hotkeys) {\n searxng.on(document, \"keydown\", function(e) {\n // check for modifiers so we don't break browser's hotkeys\n if (Object.prototype.hasOwnProperty.call(vimKeys, e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {\n var tagName = e.target.tagName.toLowerCase();\n if (e.keyCode === 27) {\n vimKeys[e.keyCode].fun(e);\n } else {\n if (e.target === document.body || tagName === 'a' || tagName === 'button') {\n e.preventDefault();\n vimKeys[e.keyCode].fun();\n }\n }\n }\n });\n }\n\n function highlightResult(which) {\n return function(noScroll) {\n var current = document.querySelector('.result[data-vim-selected]'),\n effectiveWhich = which;\n if (current === null) {\n // no selection : choose the first one\n current = document.querySelector('.result');\n if (current === null) {\n // no first one : there are no results\n return;\n }\n // replace up/down actions by selecting first one\n if (which === \"down\" || which === \"up\") {\n effectiveWhich = current;\n }\n }\n\n var next, results = document.querySelectorAll('.result');\n\n if (typeof effectiveWhich !== 'string') {\n next = effectiveWhich;\n } else {\n switch (effectiveWhich) {\n case 'visible':\n var top = document.documentElement.scrollTop || document.body.scrollTop;\n var bot = top + document.documentElement.clientHeight;\n\n for (var i = 0; i < results.length; i++) {\n next = results[i];\n var etop = next.offsetTop;\n var ebot = etop + next.clientHeight;\n\n if ((ebot <= bot) && (etop > top)) {\n break;\n }\n }\n break;\n case 'down':\n next = current.nextElementSibling;\n if (next === null) {\n next = results[0];\n }\n break;\n case 'up':\n next = current.previousElementSibling;\n if (next === null) {\n next = results[results.length - 1];\n }\n break;\n case 'bottom':\n next = results[results.length - 1];\n break;\n case 'top':\n /* falls through */\n default:\n next = results[0];\n }\n }\n\n if (next) {\n current.removeAttribute('data-vim-selected');\n next.setAttribute('data-vim-selected', 'true');\n var link = next.querySelector('h3 a') || next.querySelector('a');\n if (link !== null) {\n link.focus();\n }\n if (!noScroll) {\n scrollPageToSelected();\n }\n }\n };\n }\n\n function reloadPage() {\n document.location.reload(true);\n }\n\n function removeFocus(e) {\n const tagName = e.target.tagName.toLowerCase();\n if (document.activeElement && (tagName === 'input' || tagName === 'select' || tagName === 'textarea')) {\n document.activeElement.blur();\n } else {\n searxng.closeDetail();\n }\n }\n\n function pageButtonClick(css_selector) {\n return function() {\n var button = document.querySelector(css_selector);\n if (button) {\n button.click();\n }\n };\n }\n\n function GoToNextPage() {\n return pageButtonClick('nav#pagination .next_page button[type=\"submit\"]');\n }\n\n function GoToPreviousPage() {\n return pageButtonClick('nav#pagination .previous_page button[type=\"submit\"]');\n }\n\n function scrollPageToSelected() {\n var sel = document.querySelector('.result[data-vim-selected]');\n if (sel === null) {\n return;\n }\n var wtop = document.documentElement.scrollTop || document.body.scrollTop,\n wheight = document.documentElement.clientHeight,\n etop = sel.offsetTop,\n ebot = etop + sel.clientHeight,\n offset = 120;\n // first element ?\n if ((sel.previousElementSibling === null) && (ebot < wheight)) {\n // set to the top of page if the first element\n // is fully included in the viewport\n window.scroll(window.scrollX, 0);\n return;\n }\n if (wtop > (etop - offset)) {\n window.scroll(window.scrollX, etop - offset);\n } else {\n var wbot = wtop + wheight;\n if (wbot < (ebot + offset)) {\n window.scroll(window.scrollX, ebot - wheight + offset);\n }\n }\n }\n\n function scrollPage(amount) {\n return function() {\n window.scrollBy(0, amount);\n highlightResult('visible')();\n };\n }\n\n function scrollPageTo(position, nav) {\n return function() {\n window.scrollTo(0, position);\n highlightResult(nav)();\n };\n }\n\n function searchInputFocus() {\n window.scrollTo(0, 0);\n document.querySelector('#q').focus();\n }\n\n function openResult(newTab) {\n return function() {\n var link = document.querySelector('.result[data-vim-selected] h3 a');\n if (link === null) {\n link = document.querySelector('.result[data-vim-selected] > a');\n }\n if (link !== null) {\n var url = link.getAttribute('href');\n if (newTab) {\n window.open(url);\n } else {\n window.location.href = url;\n }\n }\n };\n }\n\n function initHelpContent(divElement) {\n var categories = {};\n\n for (var k in vimKeys) {\n var key = vimKeys[k];\n categories[key.cat] = categories[key.cat] || [];\n categories[key.cat].push(key);\n }\n\n var sorted = Object.keys(categories).sort(function(a, b) {\n return categories[b].length - categories[a].length;\n });\n\n if (sorted.length === 0) {\n return;\n }\n\n var html = '<a href=\"#\" class=\"close\" aria-label=\"close\" title=\"close\">×</a>';\n html += '<h3>How to navigate searx with Vim-like hotkeys</h3>';\n html += '<table>';\n\n for (var i = 0; i < sorted.length; i++) {\n var cat = categories[sorted[i]];\n\n var lastCategory = i === (sorted.length - 1);\n var first = i % 2 === 0;\n\n if (first) {\n html += '<tr>';\n }\n html += '<td>';\n\n html += '<h4>' + cat[0].cat + '</h4>';\n html += '<ul class=\"list-unstyled\">';\n\n for (var cj in cat) {\n html += '<li><kbd>' + cat[cj].key + '</kbd> ' + cat[cj].des + '</li>';\n }\n\n html += '</ul>';\n html += '</td>'; // col-sm-*\n\n if (!first || lastCategory) {\n html += '</tr>'; // row\n }\n }\n\n html += '</table>';\n\n divElement.innerHTML = html;\n }\n\n function toggleHelp() {\n var helpPanel = document.querySelector('#vim-hotkeys-help');\n if (helpPanel === undefined || helpPanel === null) {\n // first call\n helpPanel = document.createElement('div');\n helpPanel.id = 'vim-hotkeys-help';\n helpPanel.className='dialog-modal';\n initHelpContent(helpPanel);\n\t\t\tinitHelpContent(helpPanel);\t\t\t\t\t\n initHelpContent(helpPanel);\n var body = document.getElementsByTagName('body')[0];\n body.appendChild(helpPanel);\n } else {\n // togggle hidden\n helpPanel.classList.toggle('invisible');\n return;\n }\n }\n\n searxng.scrollPageToSelected = scrollPageToSelected;\n searxng.selectNext = highlightResult('down');\n searxng.selectPrevious = highlightResult('up');\n});\n","/* SPDX-License-Identifier: AGPL-3.0-or-later */\n/* global L */\n(function (w, d, searxng) {\n 'use strict';\n\n searxng.ready(function () {\n searxng.on('.searxng_init_map', 'click', function(event) {\n // no more request\n this.classList.remove(\"searxng_init_map\");\n\n //\n var leaflet_target = this.dataset.leafletTarget;\n var map_lon = parseFloat(this.dataset.mapLon);\n var map_lat = parseFloat(this.dataset.mapLat);\n var map_zoom = parseFloat(this.dataset.mapZoom);\n var map_boundingbox = JSON.parse(this.dataset.mapBoundingbox);\n var map_geojson = JSON.parse(this.dataset.mapGeojson);\n\n searxng.loadStyle('css/leaflet.css');\n searxng.loadScript('js/leaflet.js', function() {\n var map_bounds = null;\n if(map_boundingbox) {\n var southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]);\n var northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]);\n map_bounds = L.latLngBounds(southWest, northEast);\n }\n\n // init map\n var map = L.map(leaflet_target);\n // create the tile layer with correct attribution\n var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n var osmMapnikAttrib='Map data © <a href=\"https://openstreetmap.org\">OpenStreetMap</a> contributors';\n var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib});\n var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';\n var osmWikimediaAttrib = 'Wikimedia maps | Maps data © <a href=\"https://openstreetmap.org\">OpenStreetMap contributors</a>';\n var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib});\n // init map view\n if(map_bounds) {\n // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021\n // Still useful ?\n setTimeout(function () {\n map.fitBounds(map_bounds, {\n maxZoom:17\n });\n }, 0);\n } else if (map_lon && map_lat) {\n if(map_zoom) {\n map.setView(new L.latLng(map_lat, map_lon),map_zoom);\n } else {\n map.setView(new L.latLng(map_lat, map_lon),8);\n }\n }\n\n map.addLayer(osmMapnik);\n\n var baseLayers = {\n \"OSM Mapnik\": osmMapnik,\n \"OSM Wikimedia\": osmWikimedia,\n };\n\n L.control.layers(baseLayers).addTo(map);\n\n if(map_geojson) {\n L.geoJson(map_geojson).addTo(map);\n } /*else if(map_bounds) {\n L.rectangle(map_bounds, {color: \"#ff7800\", weight: 3, fill:false}).addTo(map);\n }*/\n });\n\n // this event occour only once per element\n event.preventDefault();\n });\n });\n})(window, document, window.searxng);\n","/* SPDX-License-Identifier: AGPL-3.0-or-later */\n(function (w, d, searxng) {\n 'use strict';\n\n searxng.ready(function() {\n let engine_descriptions = null;\n function load_engine_descriptions() {\n if (engine_descriptions == null) {\n searxng.http(\"GET\", \"engine_descriptions.json\").then(function(content) {\n engine_descriptions = JSON.parse(content);\n for (const [engine_name, description] of Object.entries(engine_descriptions)) {\n let elements = d.querySelectorAll('[data-engine-name=\"' + engine_name + '\"] .engine-description');\n for(const element of elements) {\n let source = ' (<i>' + searxng.translations['Source'] + ':&nbsp;' + description[1] + '</i>)';\n element.innerHTML = description[0] + source;\n }\n }\n });\n }\n }\n\n if (d.querySelector('body[class=\"preferences_endpoint\"]')) {\n for(const el of d.querySelectorAll('[data-engine-name]')) {\n searxng.on(el, 'mouseenter', load_engine_descriptions);\n }\n }\n });\n})(window, document, window.searxng);\n","/* SPDX-License-Identifier: AGPL-3.0-or-later */\n(function(w, d, searxng) {\n 'use strict';\n\n searxng.ready(function() {\n searxng.image_thumbnail_layout = new searxng.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 14, 6, 200);\n searxng.image_thumbnail_layout.watch();\n\n searxng.on('.btn-collapse', 'click', function() {\n var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed');\n var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed');\n var target = this.getAttribute('data-target');\n var targetElement = d.querySelector(target);\n var html = this.innerHTML;\n if (this.classList.contains('collapsed')) {\n html = html.replace(btnLabelCollapsed, btnLabelNotCollapsed);\n } else {\n html = html.replace(btnLabelNotCollapsed, btnLabelCollapsed);\n }\n this.innerHTML = html;\n this.classList.toggle('collapsed');\n targetElement.classList.toggle('invisible');\n });\n\n searxng.on('.media-loader', 'click', function() {\n var target = this.getAttribute('data-target');\n var iframe_load = d.querySelector(target + ' > iframe');\n var srctest = iframe_load.getAttribute('src');\n if (srctest === null || srctest === undefined || srctest === false) {\n iframe_load.setAttribute('src', iframe_load.getAttribute('data-src'));\n }\n });\n\n searxng.selectImage = function(resultElement) {\n /*eslint no-unused-vars: 0*/\n if (resultElement) {\n // load full size image in background\n const imgElement = resultElement.querySelector('.result-images-source img');\n const thumbnailElement = resultElement.querySelector('.image_thumbnail');\n const detailElement = resultElement.querySelector('.detail');\n if (imgElement) {\n const imgSrc = imgElement.getAttribute('data-src');\n if (imgSrc) {\n const loader = d.createElement('div');\n const imgLoader = new Image();\n\n loader.classList.add('loader');\n detailElement.appendChild(loader);\n\n imgLoader.onload = e => {\n imgElement.src = imgSrc;\n loader.remove();\n };\n imgLoader.onerror = e => {\n loader.remove();\n };\n imgLoader.src = imgSrc;\n imgElement.src = thumbnailElement.src;\n imgElement.removeAttribute('data-src');\n }\n }\n }\n d.getElementById('results').classList.add('image-detail-open');\n searxng.image_thumbnail_layout.align();\n searxng.scrollPageToSelected();\n }\n\n searxng.closeDetail = function(e) {\n d.getElementById('results').classList.remove('image-detail-open');\n searxng.image_thumbnail_layout.align();\n searxng.scrollPageToSelected();\n }\n searxng.on('.result-detail-close', 'click', e => { \n e.preventDefault();\n searxng.closeDetail();\n });\n searxng.on('.result-detail-previous', 'click', e => searxng.selectPrevious(false));\n searxng.on('.result-detail-next', 'click', e => searxng.selectNext(false));\n\n w.addEventListener('scroll', function() {\n var e = d.getElementById('backToTop'),\n scrollTop = document.documentElement.scrollTop || document.body.scrollTop,\n results = d.getElementById('results');\n if (e !== null) {\n if (scrollTop >= 100) {\n results.classList.add('scrolling');\n } else {\n results.classList.remove('scrolling');\n }\n }\n }, true);\n\n });\n\n})(window, document, window.searxng);\n","/* SPDX-License-Identifier: AGPL-3.0-or-later */\n/* global AutoComplete */\n(function(w, d, searxng) {\n 'use strict';\n\n var firstFocus = true, qinput_id = \"q\", qinput;\n\n function placeCursorAtEnd(element) {\n if (element.setSelectionRange) {\n var len = element.value.length;\n element.setSelectionRange(len, len);\n }\n }\n\n function submitIfQuery() {\n if (qinput.value.length > 0) {\n var search = document.getElementById('search');\n setTimeout(search.submit.bind(search), 0);\n }\n }\n\n function createClearButton(qinput) {\n var cs = document.getElementById('clear_search');\n var updateClearButton = function() {\n if (qinput.value.length === 0) {\n\tcs.classList.add(\"empty\");\n } else {\n\tcs.classList.remove(\"empty\");\n }\n };\n\n // update status, event listener\n updateClearButton();\n cs.addEventListener('click', function() {\n qinput.value='';\n qinput.focus();\n updateClearButton();\n });\n qinput.addEventListener('keyup', updateClearButton, false);\n }\n\n searxng.ready(function() {\n qinput = d.getElementById(qinput_id);\n\n function placeCursorAtEndOnce() {\n if (firstFocus) {\n placeCursorAtEnd(qinput);\n firstFocus = false;\n } else {\n // e.preventDefault();\n }\n }\n\n if (qinput !== null) {\n // clear button\n createClearButton(qinput);\n \n // autocompleter\n if (searxng.autocompleter) {\n searxng.autocomplete = AutoComplete.call(w, {\n Url: \"./autocompleter\",\n EmptyMessage: searxng.translations.no_item_found,\n HttpMethod: searxng.method,\n HttpHeaders: {\n \"Content-type\": \"application/x-www-form-urlencoded\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n },\n MinChars: 4,\n Delay: 300,\n }, \"#\" + qinput_id);\n\n // hack, see : https://github.com/autocompletejs/autocomplete.js/issues/37\n w.addEventListener('resize', function() {\n var event = new CustomEvent(\"position\");\n qinput.dispatchEvent(event);\n });\n }\n\n qinput.addEventListener('focus', placeCursorAtEndOnce, false);\n qinput.focus();\n }\n\n // vanilla js version of search_on_category_select.js\n if (qinput !== null && d.querySelector('.help') != null && searxng.search_on_category_select) {\n d.querySelector('.help').className='invisible';\n\n searxng.on('#categories input', 'change', function() {\n var i, categories = d.querySelectorAll('#categories input[type=\"checkbox\"]');\n for(i=0; i<categories.length; i++) {\n if (categories[i] !== this && categories[i].checked) {\n categories[i].click();\n }\n }\n if (! this.checked) {\n this.click();\n }\n submitIfQuery();\n return false;\n });\n\n searxng.on(d.getElementById('safesearch'), 'change', submitIfQuery);\n searxng.on(d.getElementById('time_range'), 'change', submitIfQuery);\n searxng.on(d.getElementById('language'), 'change', submitIfQuery);\n }\n\n });\n\n})(window, document, window.searxng);\n","/**\n*\n* Google Image Layout v0.0.1\n* Description, by Anh Trinh.\n* Heavily modified for searx\n* https://ptgamr.github.io/2014-09-12-google-image-layout/\n* https://ptgamr.github.io/google-image-layout/src/google-image-layout.js\n*\n* @license Free to use under the MIT License.\n*\n* @example <caption>Example usage of searxng.ImageLayout class.</caption>\n* searxng.image_thumbnail_layout = new searxng.ImageLayout(\n* '#urls', // container_selector\n* '#urls .result-images', // results_selector\n* 'img.image_thumbnail', // img_selector\n* 14, // verticalMargin\n* 6, // horizontalMargin\n* 200 // maxHeight\n* );\n* searxng.image_thumbnail_layout.watch();\n*/\n\n\n(function (w, d) {\n function ImageLayout(container_selector, results_selector, img_selector, verticalMargin, horizontalMargin, maxHeight) {\n this.container_selector = container_selector;\n this.results_selector = results_selector;\n this.img_selector = img_selector;\n this.verticalMargin = verticalMargin;\n this.horizontalMargin = horizontalMargin;\n this.maxHeight = maxHeight;\n this.isAlignDone = true;\n }\n\n /**\n * Get the height that make all images fit the container\n *\n * width = w1 + w2 + w3 + ... = r1*h + r2*h + r3*h + ...\n *\n * @param {[type]} images the images to be calculated\n * @param {[type]} width the container witdth\n * @param {[type]} margin the margin between each image\n *\n * @return {[type]} the height\n */\n ImageLayout.prototype._getHeigth = function (images, width) {\n var i, img;\n var r = 0;\n\n for (i = 0; i < images.length; i++) {\n img = images[i];\n if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) {\n r += img.naturalWidth / img.naturalHeight;\n } else {\n // assume that not loaded images are square\n r += 1;\n }\n }\n\n return (width - images.length * this.verticalMargin) / r; //have to round down because Firefox will automatically roundup value with number of decimals > 3\n };\n\n ImageLayout.prototype._setSize = function (images, height) {\n var i, img, imgWidth;\n var imagesLength = images.length, resultNode;\n\n for (i = 0; i < imagesLength; i++) {\n img = images[i];\n if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) {\n imgWidth = height * img.naturalWidth / img.naturalHeight;\n } else {\n // not loaded image : make it square as _getHeigth said it\n imgWidth = height;\n }\n img.style.width = imgWidth + 'px';\n img.style.height = height + 'px';\n img.style.marginLeft = this.horizontalMargin + 'px';\n img.style.marginTop = this.horizontalMargin + 'px';\n img.style.marginRight = this.verticalMargin - 7 + 'px'; // -4 is the negative margin of the inline element\n img.style.marginBottom = this.verticalMargin - 7 + 'px';\n resultNode = img.parentNode.parentNode;\n if (!resultNode.classList.contains('js')) {\n resultNode.classList.add('js');\n }\n }\n };\n\n ImageLayout.prototype._alignImgs = function (imgGroup) {\n var isSearching, slice, i, h;\n var containerElement = d.querySelector(this.container_selector);\n var containerCompStyles = window.getComputedStyle(containerElement);\n var containerPaddingLeft = parseInt(containerCompStyles.getPropertyValue('padding-left'), 10);\n var containerPaddingRight = parseInt(containerCompStyles.getPropertyValue('padding-right'), 10);\n var containerWidth = containerElement.clientWidth - containerPaddingLeft - containerPaddingRight;\n\n while (imgGroup.length > 0) {\n isSearching = true;\n for (i = 1; i <= imgGroup.length && isSearching; i++) {\n slice = imgGroup.slice(0, i);\n h = this._getHeigth(slice, containerWidth);\n if (h < this.maxHeight) {\n this._setSize(slice, h);\n // continue with the remaining images\n imgGroup = imgGroup.slice(i);\n isSearching = false;\n }\n }\n if (isSearching) {\n this._setSize(slice, Math.min(this.maxHeight, h));\n break;\n }\n }\n };\n\n ImageLayout.prototype.align = function () {\n var i;\n var results_selectorNode = d.querySelectorAll(this.results_selector);\n var results_length = results_selectorNode.length;\n var previous = null;\n var current = null;\n var imgGroup = [];\n\n for (i = 0; i < results_length; i++) {\n current = results_selectorNode[i];\n if (current.previousElementSibling !== previous && imgGroup.length > 0) {\n // the current image is not connected to previous one\n // so the current image is the start of a new group of images.\n // so call _alignImgs to align the current group\n this._alignImgs(imgGroup);\n // and start a new empty group of images\n imgGroup = [];\n }\n // add the current image to the group (only the img tag)\n imgGroup.push(current.querySelector(this.img_selector));\n // update the previous variable\n previous = current;\n }\n // align the remaining images\n if (imgGroup.length > 0) {\n this._alignImgs(imgGroup);\n }\n };\n\n ImageLayout.prototype.watch = function () {\n var i, img;\n var obj = this;\n var results_nodes = d.querySelectorAll(this.results_selector);\n var results_length = results_nodes.length;\n\n function img_load_error(event) {\n // console.log(\"ERROR can't load: \" + event.originalTarget.src);\n event.originalTarget.src = w.searxng.static_path + w.searxng.theme.img_load_error;\n }\n\n function throttleAlign() {\n if (obj.isAlignDone) {\n obj.isAlignDone = false;\n setTimeout(function () {\n obj.align();\n obj.isAlignDone = true;\n }, 100);\n }\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/pageshow_event\n w.addEventListener('pageshow', throttleAlign);\n // https://developer.mozilla.org/en-US/docs/Web/API/FileReader/load_event\n w.addEventListener('load', throttleAlign);\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/resize_event\n w.addEventListener('resize', throttleAlign);\n\n for (i = 0; i < results_length; i++) {\n img = results_nodes[i].querySelector(this.img_selector);\n if (img !== null && img !== undefined) {\n img.addEventListener('load', throttleAlign);\n // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror\n img.addEventListener('error', throttleAlign);\n if (w.searxng.theme.img_load_error) {\n img.addEventListener('error', img_load_error, {once: true});\n }\n }\n }\n };\n\n w.searxng.ImageLayout = ImageLayout;\n\n}(window, document));\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.AutoComplete = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n/*\n * @license MIT\n *\n * Autocomplete.js v2.7.1\n * Developed by Baptiste Donaux\n * http://autocomplete-js.com\n *\n * (c) 2017, Baptiste Donaux\n */\n\"use strict\";\nvar ConditionOperator;\n(function (ConditionOperator) {\n ConditionOperator[ConditionOperator[\"AND\"] = 0] = \"AND\";\n ConditionOperator[ConditionOperator[\"OR\"] = 1] = \"OR\";\n})(ConditionOperator || (ConditionOperator = {}));\nvar EventType;\n(function (EventType) {\n EventType[EventType[\"KEYDOWN\"] = 0] = \"KEYDOWN\";\n EventType[EventType[\"KEYUP\"] = 1] = \"KEYUP\";\n})(EventType || (EventType = {}));\n/**\n * Core\n *\n * @class\n * @author Baptiste Donaux <baptiste.donaux@gmail.com> @baptistedonaux\n */\nvar AutoComplete = /** @class */ (function () {\n // Constructor\n function AutoComplete(params, selector) {\n if (params === void 0) { params = {}; }\n if (selector === void 0) { selector = \"[data-autocomplete]\"; }\n if (Array.isArray(selector)) {\n selector.forEach(function (s) {\n new AutoComplete(params, s);\n });\n }\n else if (typeof selector == \"string\") {\n var elements = document.querySelectorAll(selector);\n Array.prototype.forEach.call(elements, function (input) {\n new AutoComplete(params, input);\n });\n }\n else {\n var specificParams = AutoComplete.merge(AutoComplete.defaults, params, {\n DOMResults: document.createElement(\"div\")\n });\n AutoComplete.prototype.create(specificParams, selector);\n return specificParams;\n }\n }\n AutoComplete.prototype.create = function (params, element) {\n params.Input = element;\n if (params.Input.nodeName.match(/^INPUT$/i) && (params.Input.hasAttribute(\"type\") === false || params.Input.getAttribute(\"type\").match(/^TEXT|SEARCH$/i))) {\n params.Input.setAttribute(\"autocomplete\", \"off\");\n params._Position(params);\n params.Input.parentNode.appendChild(params.DOMResults);\n params.$Listeners = {\n blur: params._Blur.bind(params),\n destroy: AutoComplete.prototype.destroy.bind(null, params),\n focus: params._Focus.bind(params),\n keyup: AutoComplete.prototype.event.bind(null, params, EventType.KEYUP),\n keydown: AutoComplete.prototype.event.bind(null, params, EventType.KEYDOWN),\n position: params._Position.bind(params)\n };\n for (var event in params.$Listeners) {\n params.Input.addEventListener(event, params.$Listeners[event]);\n }\n }\n };\n AutoComplete.prototype.getEventsByType = function (params, type) {\n var mappings = {};\n for (var key in params.KeyboardMappings) {\n var event = EventType.KEYUP;\n if (params.KeyboardMappings[key].Event !== undefined) {\n event = params.KeyboardMappings[key].Event;\n }\n if (event == type) {\n mappings[key] = params.KeyboardMappings[key];\n }\n }\n return mappings;\n };\n AutoComplete.prototype.event = function (params, type, event) {\n var eventIdentifier = function (condition) {\n if ((match === true && mapping.Operator == ConditionOperator.AND) || (match === false && mapping.Operator == ConditionOperator.OR)) {\n condition = AutoComplete.merge({\n Not: false\n }, condition);\n if (condition.hasOwnProperty(\"Is\")) {\n if (condition.Is == event.keyCode) {\n match = !condition.Not;\n }\n else {\n match = condition.Not;\n }\n }\n else if (condition.hasOwnProperty(\"From\") && condition.hasOwnProperty(\"To\")) {\n if (event.keyCode >= condition.From && event.keyCode <= condition.To) {\n match = !condition.Not;\n }\n else {\n match = condition.Not;\n }\n }\n }\n };\n for (var name in AutoComplete.prototype.getEventsByType(params, type)) {\n var mapping = AutoComplete.merge({\n Operator: ConditionOperator.AND\n }, params.KeyboardMappings[name]), match = ConditionOperator.AND == mapping.Operator;\n mapping.Conditions.forEach(eventIdentifier);\n if (match === true) {\n mapping.Callback.call(params, event);\n }\n }\n };\n AutoComplete.prototype.makeRequest = function (params, callback, callbackErr) {\n var propertyHttpHeaders = Object.getOwnPropertyNames(params.HttpHeaders), request = new XMLHttpRequest(), method = params._HttpMethod(), url = params._Url(), queryParams = params._Pre(), queryParamsStringify = encodeURIComponent(params._QueryArg()) + \"=\" + encodeURIComponent(queryParams);\n if (method.match(/^GET$/i)) {\n if (url.indexOf(\"?\") !== -1) {\n url += \"&\" + queryParamsStringify;\n }\n else {\n url += \"?\" + queryParamsStringify;\n }\n }\n request.open(method, url, true);\n for (var i = propertyHttpHeaders.length - 1; i >= 0; i--) {\n request.setRequestHeader(propertyHttpHeaders[i], params.HttpHeaders[propertyHttpHeaders[i]]);\n }\n request.onreadystatechange = function () {\n if (request.readyState == 4 && request.status == 200) {\n params.$Cache[queryParams] = request.response;\n callback(request.response);\n }\n else if (request.status >= 400) {\n callbackErr();\n }\n };\n return request;\n };\n AutoComplete.prototype.ajax = function (params, request, timeout) {\n if (timeout === void 0) { timeout = true; }\n if (params.$AjaxTimer) {\n window.clearTimeout(params.$AjaxTimer);\n }\n if (timeout === true) {\n params.$AjaxTimer = window.setTimeout(AutoComplete.prototype.ajax.bind(null, params, request, false), params.Delay);\n }\n else {\n if (params.Request) {\n params.Request.abort();\n }\n params.Request = request;\n params.Request.send(params._QueryArg() + \"=\" + params._Pre());\n }\n };\n AutoComplete.prototype.cache = function (params, callback, callbackErr) {\n var response = params._Cache(params._Pre());\n if (response === undefined) {\n var request = AutoComplete.prototype.makeRequest(params, callback, callbackErr);\n AutoComplete.prototype.ajax(params, request);\n }\n else {\n callback(response);\n }\n };\n AutoComplete.prototype.destroy = function (params) {\n for (var event in params.$Listeners) {\n params.Input.removeEventListener(event, params.$Listeners[event]);\n }\n params.DOMResults.parentNode.removeChild(params.DOMResults);\n };\n AutoComplete.merge = function () {\n var merge = {}, tmp;\n for (var i = 0; i < arguments.length; i++) {\n for (tmp in arguments[i]) {\n merge[tmp] = arguments[i][tmp];\n }\n }\n return merge;\n };\n AutoComplete.defaults = {\n Delay: 150,\n EmptyMessage: \"No result here\",\n Highlight: {\n getRegex: function (value) {\n return new RegExp(value, \"ig\");\n },\n transform: function (value) {\n return \"<strong>\" + value + \"</strong>\";\n }\n },\n HttpHeaders: {\n \"Content-type\": \"application/x-www-form-urlencoded\"\n },\n Limit: 0,\n MinChars: 0,\n HttpMethod: \"GET\",\n QueryArg: \"q\",\n Url: null,\n KeyboardMappings: {\n \"Enter\": {\n Conditions: [{\n Is: 13,\n Not: false\n }],\n Callback: function (event) {\n if (this.DOMResults.getAttribute(\"class\").indexOf(\"open\") != -1) {\n var liActive = this.DOMResults.querySelector(\"li.active\");\n if (liActive !== null) {\n event.preventDefault();\n this._Select(liActive);\n this.DOMResults.setAttribute(\"class\", \"autocomplete\");\n }\n }\n },\n Operator: ConditionOperator.AND,\n Event: EventType.KEYDOWN\n },\n \"KeyUpAndDown_down\": {\n Conditions: [{\n Is: 38,\n Not: false\n },\n {\n Is: 40,\n Not: false\n }],\n Callback: function (event) {\n event.preventDefault();\n },\n Operator: ConditionOperator.OR,\n Event: EventType.KEYDOWN\n },\n \"KeyUpAndDown_up\": {\n Conditions: [{\n Is: 38,\n Not: false\n },\n {\n Is: 40,\n Not: false\n }],\n Callback: function (event) {\n event.preventDefault();\n var first = this.DOMResults.querySelector(\"li:first-child:not(.locked)\"), last = this.DOMResults.querySelector(\"li:last-child:not(.locked)\"), active = this.DOMResults.querySelector(\"li.active\");\n if (active) {\n var currentIndex = Array.prototype.indexOf.call(active.parentNode.children, active), position = currentIndex + (event.keyCode - 39), lisCount = this.DOMResults.getElementsByTagName(\"li\").length;\n if (position < 0) {\n position = lisCount - 1;\n }\n else if (position >= lisCount) {\n position = 0;\n }\n active.classList.remove(\"active\");\n active.parentElement.children.item(position).classList.add(\"active\");\n }\n else if (last && event.keyCode == 38) {\n last.classList.add(\"active\");\n }\n else if (first) {\n first.classList.add(\"active\");\n }\n },\n Operator: ConditionOperator.OR,\n Event: EventType.KEYUP\n },\n \"AlphaNum\": {\n Conditions: [{\n Is: 13,\n Not: true\n }, {\n From: 35,\n To: 40,\n Not: true\n }],\n Callback: function () {\n var oldValue = this.Input.getAttribute(\"data-autocomplete-old-value\"), currentValue = this._Pre();\n if (currentValue !== \"\" && currentValue.length >= this._MinChars()) {\n if (!oldValue || currentValue != oldValue) {\n this.DOMResults.setAttribute(\"class\", \"autocomplete open\");\n }\n AutoComplete.prototype.cache(this, function (response) {\n this._Render(this._Post(response));\n this._Open();\n }.bind(this), this._Error);\n }\n else {\n this._Close();\n }\n },\n Operator: ConditionOperator.AND,\n Event: EventType.KEYUP\n }\n },\n DOMResults: null,\n Request: null,\n Input: null,\n /**\n * Return the message when no result returns\n */\n _EmptyMessage: function () {\n var emptyMessage = \"\";\n if (this.Input.hasAttribute(\"data-autocomplete-empty-message\")) {\n emptyMessage = this.Input.getAttribute(\"data-autocomplete-empty-message\");\n }\n else if (this.EmptyMessage !== false) {\n emptyMessage = this.EmptyMessage;\n }\n else {\n emptyMessage = \"\";\n }\n return emptyMessage;\n },\n /**\n * Returns the maximum number of results\n */\n _Limit: function () {\n var limit = this.Input.getAttribute(\"data-autocomplete-limit\");\n if (isNaN(limit) || limit === null) {\n return this.Limit;\n }\n return parseInt(limit, 10);\n },\n /**\n * Returns the minimum number of characters entered before firing ajax\n */\n _MinChars: function () {\n var minchars = this.Input.getAttribute(\"data-autocomplete-minchars\");\n if (isNaN(minchars) || minchars === null) {\n return this.MinChars;\n }\n return parseInt(minchars, 10);\n },\n /**\n * Apply transformation on labels response\n */\n _Highlight: function (label) {\n return label.replace(this.Highlight.getRegex(this._Pre()), this.Highlight.transform);\n },\n /**\n * Returns the HHTP method to use\n */\n _HttpMethod: function () {\n if (this.Input.hasAttribute(\"data-autocomplete-method\")) {\n return this.Input.getAttribute(\"data-autocomplete-method\");\n }\n return this.HttpMethod;\n },\n /**\n * Returns the query param to use\n */\n _QueryArg: function () {\n if (this.Input.hasAttribute(\"data-autocomplete-param-name\")) {\n return this.Input.getAttribute(\"data-autocomplete-param-name\");\n }\n return this.QueryArg;\n },\n /**\n * Returns the URL to use for AJAX request\n */\n _Url: function () {\n if (this.Input.hasAttribute(\"data-autocomplete\")) {\n return this.Input.getAttribute(\"data-autocomplete\");\n }\n return this.Url;\n },\n /**\n * Manage the close\n */\n _Blur: function (now) {\n if (now === void 0) { now = false; }\n if (now) {\n this._Close();\n }\n else {\n var params = this;\n setTimeout(function () {\n params._Blur(true);\n }, 150);\n }\n },\n /**\n * Manage the cache\n */\n _Cache: function (value) {\n return this.$Cache[value];\n },\n /**\n * Manage the open\n */\n _Focus: function () {\n var oldValue = this.Input.getAttribute(\"data-autocomplete-old-value\");\n if ((!oldValue || this.Input.value != oldValue) && this._MinChars() <= this.Input.value.length) {\n this.DOMResults.setAttribute(\"class\", \"autocomplete open\");\n }\n },\n /**\n * Bind all results item if one result is opened\n */\n _Open: function () {\n var params = this;\n Array.prototype.forEach.call(this.DOMResults.getElementsByTagName(\"li\"), function (li) {\n if (li.getAttribute(\"class\") != \"locked\") {\n li.onclick = function () {\n params._Select(li);\n };\n }\n });\n },\n _Close: function () {\n this.DOMResults.setAttribute(\"class\", \"autocomplete\");\n },\n /**\n * Position the results HTML element\n */\n _Position: function () {\n this.DOMResults.setAttribute(\"class\", \"autocomplete\");\n this.DOMResults.setAttribute(\"style\", \"top:\" + (this.Input.offsetTop + this.Input.offsetHeight) + \"px;left:\" + this.Input.offsetLeft + \"px;width:\" + this.Input.clientWidth + \"px;\");\n },\n /**\n * Execute the render of results DOM element\n */\n _Render: function (response) {\n var ul;\n if (typeof response == \"string\") {\n ul = this._RenderRaw(response);\n }\n else {\n ul = this._RenderResponseItems(response);\n }\n if (this.DOMResults.hasChildNodes()) {\n this.DOMResults.removeChild(this.DOMResults.childNodes[0]);\n }\n this.DOMResults.appendChild(ul);\n },\n /**\n * ResponseItems[] rendering\n */\n _RenderResponseItems: function (response) {\n var ul = document.createElement(\"ul\"), li = document.createElement(\"li\"), limit = this._Limit();\n // Order\n if (limit < 0) {\n response = response.reverse();\n }\n else if (limit === 0) {\n limit = response.length;\n }\n for (var item = 0; item < Math.min(Math.abs(limit), response.length); item++) {\n li.innerHTML = response[item].Label;\n li.setAttribute(\"data-autocomplete-value\", response[item].Value);\n ul.appendChild(li);\n li = document.createElement(\"li\");\n }\n return ul;\n },\n /**\n * string response rendering (RAW HTML)\n */\n _RenderRaw: function (response) {\n var ul = document.createElement(\"ul\"), li = document.createElement(\"li\");\n if (response.length > 0) {\n this.DOMResults.innerHTML = response;\n }\n else {\n var emptyMessage = this._EmptyMessage();\n if (emptyMessage !== \"\") {\n li.innerHTML = emptyMessage;\n li.setAttribute(\"class\", \"locked\");\n ul.appendChild(li);\n }\n }\n return ul;\n },\n /**\n * Deal with request response\n */\n _Post: function (response) {\n try {\n var returnResponse = [];\n //JSON return\n var json = JSON.parse(response);\n if (Object.keys(json).length === 0) {\n return \"\";\n }\n if (Array.isArray(json)) {\n for (var i = 0; i < Object.keys(json).length; i++) {\n returnResponse[returnResponse.length] = { \"Value\": json[i], \"Label\": this._Highlight(json[i]) };\n }\n }\n else {\n for (var value in json) {\n returnResponse.push({\n \"Value\": value,\n \"Label\": this._Highlight(json[value])\n });\n }\n }\n return returnResponse;\n }\n catch (event) {\n //HTML return\n return response;\n }\n },\n /**\n * Return the autocomplete value to send (before request)\n */\n _Pre: function () {\n return this.Input.value;\n },\n /**\n * Choice one result item\n */\n _Select: function (item) {\n if (item.hasAttribute(\"data-autocomplete-value\")) {\n this.Input.value = item.getAttribute(\"data-autocomplete-value\");\n }\n else {\n this.Input.value = item.innerHTML;\n }\n this.Input.setAttribute(\"data-autocomplete-old-value\", this.Input.value);\n },\n /**\n * Handle HTTP error on the request\n */\n _Error: function () {\n },\n $AjaxTimer: null,\n $Cache: {},\n $Listeners: {}\n };\n return AutoComplete;\n}());\nmodule.exports = AutoComplete;\n\n},{}]},{},[1])(1)\n});\n"],"names":["window","searxng","w","d","Element","ElementPrototype","matches","matchesSelector","webkitMatchesSelector","msMatchesSelector","selector","node","this","nodes","parentNode","document","querySelectorAll","i","prototype","callbackSafe","callback","el","e","call","exception","console","log","on","obj","eventType","useCapture","addEventListener","target","srcElement","found","parentElement","ready","readyState","bind","http","method","url","req","XMLHttpRequest","resolve","reject","promise","then","catch","open","onload","status","response","responseType","Error","statusText","onerror","onabort","send","ex","loadStyle","src","path","static_path","id","replace","s","getElementById","createElement","setAttribute","body","appendChild","loadScript","hasAttribute","apply","insertBefore","newNode","referenceNode","insertAfter","nextSibling","classList","add","isElementInDetail","undefined","contains","getResultElement","isImageResult","resultElement","highlightResult","let","preventDefault","selectImage","getAttribute","vimKeys","27","key","fun","removeFocus","des","cat","73","searchInputFocus","66","scrollPage","innerHeight","70","85","68","71","scrollPageTo","scrollHeight","86","75","74","80","GoToPreviousPage","78","GoToNextPage","79","openResult","84","82","reloadPage","72","toggleHelp","hotkeys","Object","hasOwnProperty","keyCode","ctrlKey","altKey","shiftKey","metaKey","tagName","toLowerCase","which","noScroll","current","querySelector","effectiveWhich","next","results","top","documentElement","scrollTop","bot","clientHeight","length","etop","offsetTop","ebot","nextElementSibling","previousElementSibling","removeAttribute","link","focus","scrollPageToSelected","location","reload","activeElement","blur","closeDetail","pageButtonClick","css_selector","button","click","sel","wtop","wheight","offset","scroll","scrollX","wbot","amount","scrollBy","position","nav","scrollTo","newTab","href","initHelpContent","divElement","categories","k","push","sorted","keys","sort","a","b","html","lastCategory","first","cj","innerHTML","helpPanel","className","getElementsByTagName","toggle","selectNext","selectPrevious","event","remove","leaflet_target","dataset","leafletTarget","map_lon","parseFloat","mapLon","map_lat","mapLat","map_zoom","mapZoom","map_boundingbox","JSON","parse","mapBoundingbox","map_geojson","mapGeojson","map_bounds","southWest","L","latLng","northEast","latLngBounds","map","osmMapnikUrl","osmMapnikAttrib","osmMapnik","TileLayer","minZoom","maxZoom","attribution","osmWikimediaUrl","osmWikimediaAttrib","osmWikimedia","setTimeout","fitBounds","setView","addLayer","baseLayers","OSM Mapnik","OSM Wikimedia","control","layers","addTo","geoJson","engine_descriptions","load_engine_descriptions","content","engine_name","description","entries","elements","element","source","translations","image_thumbnail_layout","ImageLayout","watch","btnLabelCollapsed","btnLabelNotCollapsed","targetElement","iframe_load","srctest","imgElement","thumbnailElement","detailElement","imgSrc","loader","imgLoader","Image","align","firstFocus","qinput_id","qinput","placeCursorAtEnd","setSelectionRange","len","value","submitIfQuery","search","submit","createClearButton","cs","updateClearButton","placeCursorAtEndOnce","autocompleter","autocomplete","AutoComplete","Url","EmptyMessage","no_item_found","HttpMethod","HttpHeaders","Content-type","X-Requested-With","MinChars","Delay","CustomEvent","dispatchEvent","search_on_category_select","checked","container_selector","results_selector","img_selector","verticalMargin","horizontalMargin","maxHeight","isAlignDone","_getHeigth","images","width","img","r","naturalWidth","naturalHeight","_setSize","height","imgWidth","imagesLength","resultNode","style","marginLeft","marginTop","marginRight","marginBottom","_alignImgs","imgGroup","isSearching","slice","h","containerElement","containerCompStyles","getComputedStyle","containerPaddingLeft","parseInt","getPropertyValue","containerPaddingRight","containerWidth","clientWidth","Math","min","results_selectorNode","results_length","previous","results_nodes","img_load_error","originalTarget","theme","throttleAlign","once","f","exports","module","define","amd","g","global","self","n","t","o","c","require","u","code","p","1","ConditionOperator","EventType","params","Array","isArray","forEach","input","specificParams","merge","defaults","DOMResults","create","Input","nodeName","match","_Position","$Listeners","_Blur","destroy","_Focus","keyup","KEYUP","keydown","KEYDOWN","getEventsByType","type","mappings","KeyboardMappings","Event","eventIdentifier","condition","mapping","Operator","AND","OR","Not","Is","From","To","name","Conditions","Callback","makeRequest","callbackErr","propertyHttpHeaders","getOwnPropertyNames","request","_HttpMethod","_Url","queryParams","_Pre","queryParamsStringify","encodeURIComponent","_QueryArg","indexOf","setRequestHeader","onreadystatechange","$Cache","ajax","timeout","$AjaxTimer","clearTimeout","Request","abort","cache","_Cache","removeEventListener","removeChild","tmp","arguments","Highlight","getRegex","RegExp","transform","Limit","QueryArg","Enter","liActive","_Select","KeyUpAndDown_down","KeyUpAndDown_up","last","active","currentIndex","children","lisCount","item","AlphaNum","oldValue","currentValue","_MinChars","_Render","_Post","_Open","_Error","_Close","_EmptyMessage","emptyMessage","_Limit","limit","isNaN","minchars","_Highlight","label","now","li","onclick","offsetHeight","offsetLeft","ul","_RenderRaw","_RenderResponseItems","hasChildNodes","childNodes","reverse","abs","Label","Value","returnResponse","json"],"mappings":"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"} \ No newline at end of file
diff --git a/searx/static/themes/simple/package.json b/searx/static/themes/simple/package.json
index 0cf6c4f64..356230f52 100644
--- a/searx/static/themes/simple/package.json
+++ b/searx/static/themes/simple/package.json
@@ -2,7 +2,6 @@
"devDependencies": {
"eslint": "^8.0.1",
"grunt": "~1.4.1",
- "grunt-contrib-concat": "~2.0.0",
"grunt-contrib-copy": "^1.0.0",
"grunt-contrib-cssmin": "^4.0.0",
"grunt-contrib-jshint": "~3.1.1",
diff --git a/searx/translations/bg/LC_MESSAGES/messages.mo b/searx/translations/bg/LC_MESSAGES/messages.mo
index 9181806a1..1f5f4999d 100644
--- a/searx/translations/bg/LC_MESSAGES/messages.mo
+++ b/searx/translations/bg/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/bg/LC_MESSAGES/messages.po b/searx/translations/bg/LC_MESSAGES/messages.po
index 9c48be936..52b8cc5b6 100644
--- a/searx/translations/bg/LC_MESSAGES/messages.po
+++ b/searx/translations/bg/LC_MESSAGES/messages.po
@@ -7,18 +7,19 @@
# ubone <van_ds_ff@mail.bg>, 2016-2017
msgid ""
msgstr ""
-"Project-Id-Version: searx\n"
+"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-11-24 19:24+0000\n"
-"PO-Revision-Date: 2021-11-03 08:06+0000\n"
-"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
+"PO-Revision-Date: 2021-12-03 07:17+0000\n"
+"Last-Translator: Ati Art <atiartstudio.home@gmail.com>\n"
+"Language-Team: Bulgarian <https://weblate.bubu1.eu/projects/searxng/searxng/"
+"bg/>\n"
"Language: bg\n"
-"Language-Team: Bulgarian "
-"<https://weblate.bubu1.eu/projects/searxng/searxng/bg/>\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.8.1\n"
"Generated-By: Babel 2.9.1\n"
#: searx/webapp.py:164
@@ -59,7 +60,7 @@ msgstr "карта"
#: searx/webapp.py:173
msgid "onions"
-msgstr ""
+msgstr "onions"
#: searx/webapp.py:174
msgid "science"
@@ -67,72 +68,72 @@ msgstr "наука"
#: searx/webapp.py:178
msgid "auto"
-msgstr ""
+msgstr "автоматичен"
#: searx/webapp.py:179
msgid "light"
-msgstr ""
+msgstr "светъл"
#: searx/webapp.py:180
msgid "dark"
-msgstr ""
+msgstr "тъмен"
#: searx/webapp.py:184
msgid "timeout"
-msgstr ""
+msgstr "изчакване"
#: searx/webapp.py:185
msgid "parsing error"
-msgstr ""
+msgstr "грешка при анализа"
#: searx/webapp.py:186
msgid "HTTP protocol error"
-msgstr ""
+msgstr "Грешка в протокола HTTP"
#: searx/webapp.py:187
msgid "network error"
-msgstr ""
+msgstr "мрежова грешка"
#: searx/webapp.py:189
msgid "unexpected crash"
-msgstr ""
+msgstr "неочакван срив"
#: searx/webapp.py:196
msgid "HTTP error"
-msgstr ""
+msgstr "HTTP грешка"
#: searx/webapp.py:197
msgid "HTTP connection error"
-msgstr ""
+msgstr "HTTP грешка във връзката"
#: searx/webapp.py:203
msgid "proxy error"
-msgstr ""
+msgstr "прокси грешка"
#: searx/webapp.py:204
msgid "CAPTCHA"
-msgstr ""
+msgstr "Кепча"
#: searx/webapp.py:205
msgid "too many requests"
-msgstr ""
+msgstr "твърде много искания"
#: searx/webapp.py:206
msgid "access denied"
-msgstr ""
+msgstr "отказан достъп"
#: searx/webapp.py:207
msgid "server API error"
-msgstr ""
+msgstr "грешка в API на сървъра"
#: searx/webapp.py:399
msgid "No item found"
-msgstr ""
+msgstr "Не е намерен артикул"
#: searx/engines/qwant.py:198
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:401
msgid "Source"
-msgstr ""
+msgstr "Източник"
#: searx/webapp.py:523 searx/webapp.py:935
msgid "Invalid settings, please edit your preferences"
@@ -140,7 +141,7 @@ msgstr "Неправилни настройки, моля проверете п
#: searx/webapp.py:539
msgid "Invalid settings"
-msgstr ""
+msgstr "невалидни настройки"
#: searx/webapp.py:617 searx/webapp.py:688
msgid "search error"
@@ -156,47 +157,47 @@ msgstr "преди {hours} час(ове), {minutes} минута(минути)"
#: searx/webapp.py:856
msgid "Suspended"
-msgstr ""
+msgstr "преустановен"
#: searx/answerers/random/answerer.py:65
msgid "Random value generator"
-msgstr ""
+msgstr "Генератор на произволни стойности"
#: searx/answerers/random/answerer.py:66
msgid "Generate different random values"
-msgstr ""
+msgstr "Генерирайте различни произволни стойности"
#: searx/answerers/statistics/answerer.py:50
msgid "Statistics functions"
-msgstr ""
+msgstr "Функции за статистика"
#: searx/answerers/statistics/answerer.py:51
msgid "Compute {functions} of the arguments"
-msgstr ""
+msgstr "Изчислете {функции} на аргументите"
#: searx/engines/openstreetmap.py:155
msgid "Get directions"
-msgstr ""
+msgstr "Вземете упътвания"
#: searx/engines/pdbe.py:90
msgid "{title} (OBSOLETE)"
-msgstr ""
+msgstr "{заглавие} (ОСТАРЯЛО)"
#: searx/engines/pdbe.py:97
msgid "This entry has been superseded by"
-msgstr ""
+msgstr "Този запис е заменен от"
#: searx/engines/pubmed.py:78
msgid "No abstract is available for this publication."
-msgstr ""
+msgstr "Няма резюме за тази публикация."
#: searx/engines/qwant.py:200
msgid "Channel"
-msgstr ""
+msgstr "Канал"
#: searx/plugins/hash_plugin.py:24
msgid "Converts strings to different hash digests."
-msgstr ""
+msgstr "Преобразува низове в различни хаш-извлечение."
#: searx/plugins/hash_plugin.py:52
msgid "hash digest"
@@ -204,11 +205,13 @@ msgstr ""
#: searx/plugins/hostname_replace.py:9
msgid "Hostname replace"
-msgstr ""
+msgstr "Замяна на името на хоста"
#: searx/plugins/hostname_replace.py:10
msgid "Rewrite result hostnames or remove results based on the hostname"
msgstr ""
+"Пренапишете имената на хостове на резултатите или премахнете резултатите въз "
+"основа на името на хоста"
#: searx/plugins/infinite_scroll.py:3
msgid "Infinite scroll"
@@ -220,13 +223,15 @@ msgstr "Автоматично зареждане на следващата ст
#: searx/plugins/oa_doi_rewrite.py:9
msgid "Open Access DOI rewrite"
-msgstr ""
+msgstr "Отворен достъп DOI пренаписване"
#: searx/plugins/oa_doi_rewrite.py:10
msgid ""
"Avoid paywalls by redirecting to open-access versions of publications "
"when available"
msgstr ""
+"Избягвайте заплатите, като пренасочвате към версии с отворен достъп на "
+"публикации, когато са налични"
#: searx/plugins/search_on_category_select.py:18
msgid "Search on category select"
@@ -267,6 +272,9 @@ msgid ""
"Navigate search results with Vim-like hotkeys (JavaScript required). "
"Press \"h\" key on main or result page to get help."
msgstr ""
+"Навигирайте резултатите от търсенето с Vim-подобни горещи клавиши (изисква "
+"се JavaScript). Натиснете клавиша \"h\" на главната или резултатната "
+"страница, за да получите помощ."
#: searx/templates/oscar/404.html:4 searx/templates/simple/404.html:4
msgid "Page not found"
@@ -305,11 +313,11 @@ msgstr "Грешка!"
#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
-msgstr ""
+msgstr "С подкрепата на"
#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
-msgstr ""
+msgstr "за спазване на поверителността, хакерска метатърсачка"
#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
msgid "Source code"
@@ -337,7 +345,7 @@ msgstr ""
#: searx/templates/oscar/languages.html:2
msgid "Language"
-msgstr ""
+msgstr "Език"
#: searx/templates/oscar/languages.html:4
#: searx/templates/simple/filters/languages.html:2
@@ -378,15 +386,15 @@ msgstr "Позволи"
#: searx/templates/oscar/macros.html:139
msgid "broken"
-msgstr ""
+msgstr "развален"
#: searx/templates/oscar/macros.html:141
msgid "supported"
-msgstr ""
+msgstr "поддържан"
#: searx/templates/oscar/macros.html:143
msgid "not supported"
-msgstr ""
+msgstr "неподдържан"
#: searx/templates/oscar/navbar.html:7
#: searx/templates/oscar/preferences.html:90
@@ -396,7 +404,7 @@ msgstr "предпочитания"
#: searx/templates/oscar/preferences.html:12
#: searx/templates/simple/preferences.html:29
msgid "No HTTPS"
-msgstr ""
+msgstr "Без HTTPS"
#: searx/templates/oscar/preferences.html:14
#: searx/templates/oscar/results.html:27 searx/templates/simple/results.html:40
@@ -458,13 +466,13 @@ msgstr "Общи"
#: searx/templates/oscar/preferences.html:102
#: searx/templates/oscar/preferences.html:193
msgid "User Interface"
-msgstr ""
+msgstr "Потребителски интерфейс"
#: searx/templates/oscar/preferences.html:103
#: searx/templates/oscar/preferences.html:257
#: searx/templates/simple/preferences.html:234
msgid "Privacy"
-msgstr ""
+msgstr "Поверителност"
#: searx/templates/oscar/preferences.html:104
#: searx/templates/oscar/preferences.html:307
@@ -946,20 +954,20 @@ msgstr ""
#: searx/templates/oscar/stats.html:118 searx/templates/simple/stats.html:117
msgid "Parameter"
-msgstr ""
+msgstr "Параметър"
#: searx/templates/oscar/result_templates/files.html:35
#: searx/templates/oscar/stats.html:126 searx/templates/simple/stats.html:125
msgid "Filename"
-msgstr ""
+msgstr "Име на файла"
#: searx/templates/oscar/stats.html:127 searx/templates/simple/stats.html:126
msgid "Function"
-msgstr ""
+msgstr "Функция"
#: searx/templates/oscar/stats.html:128 searx/templates/simple/stats.html:127
msgid "Code"
-msgstr ""
+msgstr "Код"
#: searx/templates/oscar/stats.html:135 searx/templates/simple/stats.html:134
msgid "Checker"
@@ -967,36 +975,36 @@ msgstr ""
#: searx/templates/oscar/stats.html:138 searx/templates/simple/stats.html:137
msgid "Failed test"
-msgstr ""
+msgstr "Неуспешен тест"
#: searx/templates/oscar/stats.html:139 searx/templates/simple/stats.html:138
msgid "Comment(s)"
-msgstr ""
+msgstr "Коментар (и)"
#: searx/templates/oscar/time-range.html:5
#: searx/templates/simple/filters/time_range.html:3
msgid "Anytime"
-msgstr ""
+msgstr "По всяко време"
#: searx/templates/oscar/time-range.html:8
#: searx/templates/simple/filters/time_range.html:6
msgid "Last day"
-msgstr ""
+msgstr "Последен ден"
#: searx/templates/oscar/time-range.html:11
#: searx/templates/simple/filters/time_range.html:9
msgid "Last week"
-msgstr ""
+msgstr "Миналата седмица"
#: searx/templates/oscar/time-range.html:14
#: searx/templates/simple/filters/time_range.html:12
msgid "Last month"
-msgstr ""
+msgstr "Миналия месец"
#: searx/templates/oscar/time-range.html:17
#: searx/templates/simple/filters/time_range.html:15
msgid "Last year"
-msgstr ""
+msgstr "Миналата година"
#: searx/templates/oscar/messages/first_time.html:6
#: searx/templates/oscar/messages/no_data_available.html:3
@@ -1005,7 +1013,7 @@ msgstr "Внимание!"
#: searx/templates/oscar/messages/first_time.html:7
msgid "It look like you are using SearXNG first time."
-msgstr ""
+msgstr "Изглежда, че използвате SearXNG за първи път."
#: searx/templates/oscar/messages/no_cookies.html:3
msgid "Information!"
@@ -1023,12 +1031,12 @@ msgstr "Няма налична достъпна информация."
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:6
msgid "Engines cannot retrieve results."
-msgstr ""
+msgstr "Търсачките не могат да извлекат резултати."
#: searx/templates/oscar/messages/no_results.html:13
#: searx/templates/simple/messages/no_results.html:15
msgid "Please, try again later or find another SearXNG instance."
-msgstr ""
+msgstr "Моля, опитайте отново по-късно или намерете друг сървър SearXNG."
#: searx/templates/oscar/messages/no_results.html:17
#: searx/templates/simple/messages/no_results.html:20
@@ -1077,7 +1085,7 @@ msgstr "скрий медия"
#: searx/templates/oscar/result_templates/videos.html:19
#: searx/templates/simple/result_templates/images.html:21
msgid "Author"
-msgstr ""
+msgstr "Автор"
#: searx/templates/oscar/result_templates/files.html:37
#: searx/templates/oscar/result_templates/torrent.html:7
@@ -1117,11 +1125,11 @@ msgstr "терабайт"
#: searx/templates/oscar/result_templates/files.html:46
msgid "Date"
-msgstr ""
+msgstr "Дата"
#: searx/templates/oscar/result_templates/files.html:48
msgid "Type"
-msgstr ""
+msgstr "Вид"
#: searx/templates/oscar/result_templates/images.html:27
msgid "Get image"
@@ -1135,7 +1143,7 @@ msgstr "Покажи източник"
#: searx/templates/oscar/result_templates/map.html:26
#: searx/templates/simple/result_templates/map.html:12
msgid "address"
-msgstr ""
+msgstr "адрес"
#: searx/templates/oscar/result_templates/map.html:59
#: searx/templates/simple/result_templates/map.html:43
@@ -1174,7 +1182,7 @@ msgstr "скрий видеото"
#: searx/templates/oscar/result_templates/videos.html:20
msgid "Length"
-msgstr ""
+msgstr "Дължина"
#: searx/templates/simple/categories.html:16
msgid "Click on the magnifier to perform search"
@@ -1182,19 +1190,20 @@ msgstr "Кликнете лупичката, за да изпълните тър
#: searx/templates/simple/preferences.html:85
msgid "Errors:"
-msgstr ""
+msgstr "Грешки:"
#: searx/templates/simple/preferences.html:181
msgid "User interface"
-msgstr ""
+msgstr "Потребителски интерфейс"
#: searx/templates/simple/preferences.html:208
msgid "Theme style"
-msgstr ""
+msgstr "Тематичен стил"
#: searx/templates/simple/preferences.html:216
msgid "Choose auto to follow your browser settings"
msgstr ""
+"Изберете автоматични настойки, за да следвате настройките на браузъра си"
#: searx/templates/simple/preferences.html:275
msgid "Currently used search engines"
@@ -1202,7 +1211,7 @@ msgstr "Използвани търсачки в момента"
#: searx/templates/simple/preferences.html:285
msgid "Supports selected language"
-msgstr ""
+msgstr "Поддържка на избраният език"
#: searx/templates/simple/results.html:24
msgid "Answers"
@@ -1211,25 +1220,25 @@ msgstr "Отговори"
#: searx/templates/simple/search.html:9
#: searx/templates/simple/simple_search.html:5
msgid "clear"
-msgstr ""
+msgstr "изчисти"
#: searx/templates/simple/search.html:10
#: searx/templates/simple/simple_search.html:6
msgid "search"
-msgstr ""
+msgstr "търси"
#: searx/templates/simple/result_templates/default.html:14
#: searx/templates/simple/result_templates/videos.html:14
msgid "This site did not provide any description."
-msgstr ""
+msgstr "Този сайт не предостави никакво описание."
#: searx/templates/simple/result_templates/images.html:22
msgid "Format"
-msgstr ""
+msgstr "Формат"
#: searx/templates/simple/result_templates/images.html:24
msgid "Engine"
-msgstr ""
+msgstr "Търсачка"
#~ msgid "Engine time (sec)"
#~ msgstr ""
@@ -1343,4 +1352,3 @@ msgstr ""
#~ " contains your query. Your browser "
#~ "can record this title."
#~ msgstr ""
-
diff --git a/searx/translations/es/LC_MESSAGES/messages.mo b/searx/translations/es/LC_MESSAGES/messages.mo
index 90ebd5a02..4e0d8e251 100644
--- a/searx/translations/es/LC_MESSAGES/messages.mo
+++ b/searx/translations/es/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/es/LC_MESSAGES/messages.po b/searx/translations/es/LC_MESSAGES/messages.po
index cfb3e2302..9fb1c744b 100644
--- a/searx/translations/es/LC_MESSAGES/messages.po
+++ b/searx/translations/es/LC_MESSAGES/messages.po
@@ -17,18 +17,19 @@
# wefwefew ewfewfewf <nnnedmz0d@moakt.ws>, 2016
msgid ""
msgstr ""
-"Project-Id-Version: searx\n"
+"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-11-24 19:24+0000\n"
-"PO-Revision-Date: 2021-11-23 10:08+0000\n"
-"Last-Translator: Markus Heiser <markus.heiser@darmarit.de>\n"
+"PO-Revision-Date: 2021-12-03 07:17+0000\n"
+"Last-Translator: Alexandre Flament <alex@al-f.net>\n"
+"Language-Team: Spanish <https://weblate.bubu1.eu/projects/searxng/searxng/es/"
+">\n"
"Language: es\n"
-"Language-Team: Spanish "
-"<https://weblate.bubu1.eu/projects/searxng/searxng/es/>\n"
-"Plural-Forms: nplurals=2; plural=n != 1\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.8.1\n"
"Generated-By: Babel 2.9.1\n"
#: searx/webapp.py:164
@@ -77,47 +78,47 @@ msgstr "Ciencia"
#: searx/webapp.py:178
msgid "auto"
-msgstr ""
+msgstr "auto"
#: searx/webapp.py:179
msgid "light"
-msgstr ""
+msgstr "claro"
#: searx/webapp.py:180
msgid "dark"
-msgstr ""
+msgstr "oscuro"
#: searx/webapp.py:184
msgid "timeout"
-msgstr ""
+msgstr "expirado"
#: searx/webapp.py:185
msgid "parsing error"
-msgstr ""
+msgstr "error de procesamiento"
#: searx/webapp.py:186
msgid "HTTP protocol error"
-msgstr ""
+msgstr "Error de protocolo HTTP"
#: searx/webapp.py:187
msgid "network error"
-msgstr ""
+msgstr "Error de red"
#: searx/webapp.py:189
msgid "unexpected crash"
-msgstr ""
+msgstr "cierre inesperado"
#: searx/webapp.py:196
msgid "HTTP error"
-msgstr ""
+msgstr "Error de HTTP"
#: searx/webapp.py:197
msgid "HTTP connection error"
-msgstr ""
+msgstr "Error de conexíon HTTP"
#: searx/webapp.py:203
msgid "proxy error"
-msgstr ""
+msgstr "error de proxy"
#: searx/webapp.py:204
msgid "CAPTCHA"
@@ -125,15 +126,15 @@ msgstr "CAPTCHA"
#: searx/webapp.py:205
msgid "too many requests"
-msgstr ""
+msgstr "demasiadas peticiones"
#: searx/webapp.py:206
msgid "access denied"
-msgstr ""
+msgstr "acceso denegado"
#: searx/webapp.py:207
msgid "server API error"
-msgstr ""
+msgstr "error en la API del servidor"
#: searx/webapp.py:399
msgid "No item found"
@@ -142,7 +143,7 @@ msgstr "Ningún artículo encontrado"
#: searx/engines/qwant.py:198
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:401
msgid "Source"
-msgstr ""
+msgstr "Fuente"
#: searx/webapp.py:523 searx/webapp.py:935
msgid "Invalid settings, please edit your preferences"
@@ -1379,4 +1380,3 @@ msgstr ""
#~ " contains your query. Your browser "
#~ "can record this title."
#~ msgstr ""
-
diff --git a/searx/translations/fr/LC_MESSAGES/messages.mo b/searx/translations/fr/LC_MESSAGES/messages.mo
index dba239ec5..875fe50e2 100644
--- a/searx/translations/fr/LC_MESSAGES/messages.mo
+++ b/searx/translations/fr/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/fr/LC_MESSAGES/messages.po b/searx/translations/fr/LC_MESSAGES/messages.po
index ff74b60d0..d9b252406 100644
--- a/searx/translations/fr/LC_MESSAGES/messages.po
+++ b/searx/translations/fr/LC_MESSAGES/messages.po
@@ -13,18 +13,19 @@
# rike, 2014
msgid ""
msgstr ""
-"Project-Id-Version: searx\n"
+"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-11-24 19:24+0000\n"
-"PO-Revision-Date: 2021-08-27 07:16+0000\n"
+"PO-Revision-Date: 2021-12-03 07:17+0000\n"
"Last-Translator: Alexandre Flament <alex@al-f.net>\n"
+"Language-Team: French <https://weblate.bubu1.eu/projects/searxng/searxng/fr/>"
+"\n"
"Language: fr\n"
-"Language-Team: French "
-"<https://weblate.bubu1.eu/projects/searxng/searxng/fr/>\n"
-"Plural-Forms: nplurals=2; plural=n > 1\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.8.1\n"
"Generated-By: Babel 2.9.1\n"
#: searx/webapp.py:164
@@ -73,15 +74,15 @@ msgstr "science"
#: searx/webapp.py:178
msgid "auto"
-msgstr ""
+msgstr "auto"
#: searx/webapp.py:179
msgid "light"
-msgstr ""
+msgstr "clair"
#: searx/webapp.py:180
msgid "dark"
-msgstr ""
+msgstr "sombre"
#: searx/webapp.py:184
msgid "timeout"
@@ -210,11 +211,11 @@ msgstr "hash digest"
#: searx/plugins/hostname_replace.py:9
msgid "Hostname replace"
-msgstr ""
+msgstr "Remplacer les noms de domaine"
#: searx/plugins/hostname_replace.py:10
msgid "Rewrite result hostnames or remove results based on the hostname"
-msgstr ""
+msgstr "Réécrit ou supprime les résultats en se basant sur les noms de domaine"
#: searx/plugins/infinite_scroll.py:3
msgid "Infinite scroll"
@@ -596,12 +597,12 @@ msgstr "Changer la langue d'affichage"
#: searx/templates/oscar/preferences.html:210
#: searx/templates/simple/preferences.html:197
msgid "Theme"
-msgstr ""
+msgstr "Thème"
#: searx/templates/oscar/preferences.html:211
#: searx/templates/simple/preferences.html:205
msgid "Change SearXNG layout"
-msgstr ""
+msgstr "Change l'apparence de SearXNG"
#: searx/templates/oscar/preferences.html:222
#: searx/templates/oscar/preferences.html:228
@@ -666,7 +667,7 @@ msgstr "Proxy d'images"
#: searx/templates/oscar/preferences.html:274
#: searx/templates/simple/preferences.html:256
msgid "Proxying image results through SearXNG"
-msgstr ""
+msgstr "Proxifier les images à travers SearXNG"
#: searx/templates/oscar/preferences.html:277
#: searx/templates/oscar/preferences.html:288
@@ -685,7 +686,7 @@ msgstr "Désactivé"
#: searx/templates/oscar/preferences.html:284
#: searx/templates/simple/preferences.html:261
msgid "Query in the page's title"
-msgstr ""
+msgstr "Requête dans le titre de la page"
#: searx/templates/oscar/preferences.html:285
#: searx/templates/simple/preferences.html:268
@@ -693,6 +694,8 @@ msgid ""
"When enabled, the result page's title contains your query. Your browser "
"can record this title"
msgstr ""
+"Activer pour inclure la requête utilisateur dans le titre de la page HTML. "
+"Votre navigateur peut être enregistrer ce titre de page"
#: searx/templates/oscar/preferences.html:315
msgid "Allow all"
@@ -777,7 +780,7 @@ msgstr "Exemples"
#: searx/templates/oscar/preferences.html:411
#: searx/templates/simple/preferences.html:327
msgid "This is the list of SearXNG's instant answering modules."
-msgstr ""
+msgstr "Liste des modules de réponse instantanée de SearXNG."
#: searx/templates/oscar/preferences.html:424
#: searx/templates/simple/preferences.html:338
@@ -790,11 +793,13 @@ msgid ""
"This is the list of cookies and their values SearXNG is storing on your "
"computer."
msgstr ""
+"Les cookies et leurs valeurs que SearXNG stocke sur votre ordinateur sont "
+"énumérés ci-dessous."
#: searx/templates/oscar/preferences.html:446
#: searx/templates/simple/preferences.html:358
msgid "With that list, you can assess SearXNG transparency."
-msgstr ""
+msgstr "Avec cette liste, vous pouvez juger de la transparence de searx."
#: searx/templates/oscar/preferences.html:451
#: searx/templates/simple/preferences.html:363
@@ -1028,7 +1033,7 @@ msgstr "Astuces !"
#: searx/templates/oscar/messages/first_time.html:7
msgid "It look like you are using SearXNG first time."
-msgstr ""
+msgstr "Il semblerait que vous utilisez SearXNG pour la première fois."
#: searx/templates/oscar/messages/no_cookies.html:3
msgid "Information!"
@@ -1052,6 +1057,7 @@ msgstr "Les moteurs ne peuvent récupérer de résultats."
#: searx/templates/simple/messages/no_results.html:15
msgid "Please, try again later or find another SearXNG instance."
msgstr ""
+"Veuillez réessayer ultérieurement ou trouver une autre instance SearXNG."
#: searx/templates/oscar/messages/no_results.html:17
#: searx/templates/simple/messages/no_results.html:20
@@ -1213,11 +1219,11 @@ msgstr "Interface utilisateur"
#: searx/templates/simple/preferences.html:208
msgid "Theme style"
-msgstr ""
+msgstr "Style du thème"
#: searx/templates/simple/preferences.html:216
msgid "Choose auto to follow your browser settings"
-msgstr ""
+msgstr "Choisissez auto pour respecter les paramètres de votre navigateur"
#: searx/templates/simple/preferences.html:275
msgid "Currently used search engines"
@@ -1234,25 +1240,25 @@ msgstr "Réponses"
#: searx/templates/simple/search.html:9
#: searx/templates/simple/simple_search.html:5
msgid "clear"
-msgstr ""
+msgstr "effacer"
#: searx/templates/simple/search.html:10
#: searx/templates/simple/simple_search.html:6
msgid "search"
-msgstr ""
+msgstr "chercher"
#: searx/templates/simple/result_templates/default.html:14
#: searx/templates/simple/result_templates/videos.html:14
msgid "This site did not provide any description."
-msgstr ""
+msgstr "Ce site n'a pas fourni de description."
#: searx/templates/simple/result_templates/images.html:22
msgid "Format"
-msgstr ""
+msgstr "Format"
#: searx/templates/simple/result_templates/images.html:24
msgid "Engine"
-msgstr ""
+msgstr "Moteur"
#~ msgid "Engine time (sec)"
#~ msgstr "Temps du moteur (sec)"
@@ -1374,4 +1380,3 @@ msgstr ""
#~ " contains your query. Your browser "
#~ "can record this title."
#~ msgstr ""
-
diff --git a/searx/translations/ja/LC_MESSAGES/messages.mo b/searx/translations/ja/LC_MESSAGES/messages.mo
index a872c1201..e18ff8af8 100644
--- a/searx/translations/ja/LC_MESSAGES/messages.mo
+++ b/searx/translations/ja/LC_MESSAGES/messages.mo
Binary files differ
diff --git a/searx/translations/ja/LC_MESSAGES/messages.po b/searx/translations/ja/LC_MESSAGES/messages.po
index 73e1948ea..d02e9e64c 100644
--- a/searx/translations/ja/LC_MESSAGES/messages.po
+++ b/searx/translations/ja/LC_MESSAGES/messages.po
@@ -14,18 +14,19 @@
# Thomas Pointhuber, 2015-2016
msgid ""
msgstr ""
-"Project-Id-Version: searx\n"
+"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2021-11-24 19:24+0000\n"
-"PO-Revision-Date: 2020-07-09 13:10+0000\n"
-"Last-Translator: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>\n"
+"PO-Revision-Date: 2021-12-03 07:17+0000\n"
+"Last-Translator: Alexandre Flament <alex@al-f.net>\n"
+"Language-Team: Japanese <https://weblate.bubu1.eu/projects/searxng/searxng/"
+"ja/>\n"
"Language: ja\n"
-"Language-Team: Japanese "
-"(http://www.transifex.com/asciimoo/searx/language/ja/)\n"
-"Plural-Forms: nplurals=1; plural=0\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.8.1\n"
"Generated-By: Babel 2.9.1\n"
#: searx/webapp.py:164
@@ -74,7 +75,7 @@ msgstr "学問"
#: searx/webapp.py:178
msgid "auto"
-msgstr ""
+msgstr "自動"
#: searx/webapp.py:179
msgid "light"
@@ -82,11 +83,11 @@ msgstr ""
#: searx/webapp.py:180
msgid "dark"
-msgstr ""
+msgstr "ダーク"
#: searx/webapp.py:184
msgid "timeout"
-msgstr ""
+msgstr "タイムアウト"
#: searx/webapp.py:185
msgid "parsing error"
@@ -94,43 +95,43 @@ msgstr ""
#: searx/webapp.py:186
msgid "HTTP protocol error"
-msgstr ""
+msgstr "HTTPプロトコルエラー"
#: searx/webapp.py:187
msgid "network error"
-msgstr ""
+msgstr "ネットワークエラー"
#: searx/webapp.py:189
msgid "unexpected crash"
-msgstr ""
+msgstr "予期しないクラッシュ"
#: searx/webapp.py:196
msgid "HTTP error"
-msgstr ""
+msgstr "HTTPエラー"
#: searx/webapp.py:197
msgid "HTTP connection error"
-msgstr ""
+msgstr "HTTP接続エラー"
#: searx/webapp.py:203
msgid "proxy error"
-msgstr ""
+msgstr "プロキシエラー"
#: searx/webapp.py:204
msgid "CAPTCHA"
-msgstr ""
+msgstr "CAPTCHA"
#: searx/webapp.py:205
msgid "too many requests"
-msgstr ""
+msgstr "多すぎるリクエスト"
#: searx/webapp.py:206
msgid "access denied"
-msgstr ""
+msgstr "アクセスが拒否されました"
#: searx/webapp.py:207
msgid "server API error"
-msgstr ""
+msgstr "サーバーAPIエラー"
#: searx/webapp.py:399
msgid "No item found"
@@ -139,7 +140,7 @@ msgstr "アイテムが見つかりません"
#: searx/engines/qwant.py:198
#: searx/templates/simple/result_templates/images.html:23 searx/webapp.py:401
msgid "Source"
-msgstr ""
+msgstr "ソース"
#: searx/webapp.py:523 searx/webapp.py:935
msgid "Invalid settings, please edit your preferences"
@@ -163,7 +164,7 @@ msgstr "{hours}時間と{minutes}分前"
#: searx/webapp.py:856
msgid "Suspended"
-msgstr ""
+msgstr "一時停止"
#: searx/answerers/random/answerer.py:65
msgid "Random value generator"
@@ -199,15 +200,15 @@ msgstr "この出版物には要約がありません。"
#: searx/engines/qwant.py:200
msgid "Channel"
-msgstr ""
+msgstr "チャンネル"
#: searx/plugins/hash_plugin.py:24
msgid "Converts strings to different hash digests."
-msgstr ""
+msgstr "文字列を異なるハッシュダイジェストに変換。"
#: searx/plugins/hash_plugin.py:52
msgid "hash digest"
-msgstr ""
+msgstr "ハッシュダイジェスト"
#: searx/plugins/hostname_replace.py:9
msgid "Hostname replace"
@@ -1346,4 +1347,3 @@ msgstr ""
#~ " contains your query. Your browser "
#~ "can record this title."
#~ msgstr ""
-