From 28b22a0f9836dff7e6f6fd1436227dead0db4abd Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Tue, 30 Nov 2021 23:04:37 +0100 Subject: [PATCH 1/2] [mod] simple theme: smaller build remove: * searx/static/themes/simple/js/searxng.head.js * searx/static/themes/simple/js/searxng.js * searx/static/themes/simple/css/searxng-rtl.css * searx/static/themes/simple/css/searxng.css These files are never used. About the js files: the .map files references the sources instead of the concated version. --- searx/static/themes/simple/gruntfile.js | 39 +++++-------------------- searx/static/themes/simple/package.json | 1 - 2 files changed, 7 insertions(+), 33 deletions(-) diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js index 762ba1087..044ff9ab4 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: { @@ -110,20 +93,15 @@ module.exports = function(grunt) { dist: { files: { 'js/searxng.head.min.js': ['js/searxng.head.js'], - 'js/searxng.min.js': ['js/searxng.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 +266,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 +277,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/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", From 82125862c61392b5934155ce4db58e20ffbfddc8 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Wed, 1 Dec 2021 09:25:00 +0100 Subject: [PATCH 2/2] [fix] simple theme: remove static files no longer needed remove: searx/static/themes/simple/js/searxng.js searx/static/themes/simple/js/searxng.head.js searx/static/themes/simple/css/searxng-rtl.css searx/static/themes/simple/css/searxng.css Signed-off-by: Markus Heiser --- .../static/themes/simple/css/searxng-rtl.css | 3279 ----------------- searx/static/themes/simple/css/searxng.css | 3275 ---------------- searx/static/themes/simple/gruntfile.js | 2 +- searx/static/themes/simple/js/searxng.head.js | 40 - searx/static/themes/simple/js/searxng.js | 1598 -------- 5 files changed, 1 insertion(+), 8193 deletions(-) delete mode 100644 searx/static/themes/simple/css/searxng-rtl.css delete mode 100644 searx/static/themes/simple/css/searxng.css delete mode 100644 searx/static/themes/simple/js/searxng.head.js delete mode 100644 searx/static/themes/simple/js/searxng.js 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 044ff9ab4..57682430d 100644 --- a/searx/static/themes/simple/gruntfile.js +++ b/searx/static/themes/simple/gruntfile.js @@ -92,7 +92,7 @@ module.exports = function(grunt) { }, dist: { files: { - 'js/searxng.head.min.js': ['js/searxng.head.js'], + 'js/searxng.head.min.js': ['src/js/head/*.js'], 'js/searxng.min.js': [ 'src/js/main/*.js', '../__common__/js/*.js', 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 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.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
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 = '×'; - html += '

How to navigate searx with Vim-like hotkeys

'; - html += ''; - - 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 += ''; - } - html += ''; // col-sm-* - - if (!first || lastCategory) { - html += ''; // row - } - } - - html += '
'; - - html += '

' + cat[0].cat + '

'; - html += '
    '; - - for (var cj in cat) { - html += '
  • ' + cat[cj].key + ' ' + cat[cj].des + '
  • '; - } - - html += '
'; - html += '
'; - - 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 © OpenStreetMap 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 © OpenStreetMap contributors'; - 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 = ' (' + searxng.translations['Source'] + ': ' + description[1] + ')'; - 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; iExample usage of searxng.ImageLayout class. -* 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 @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 "" + value + ""; - } - }, - 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) -});