From 9108c90f0e9d17a8a14b502be3d33d129c93d294 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Wed, 16 Jun 2021 09:16:02 +0200 Subject: [PATCH 01/11] [mod] simple theme: update dependencies --- searx/static/themes/simple/package.json | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/searx/static/themes/simple/package.json b/searx/static/themes/simple/package.json index e84489947..47cddf031 100644 --- a/searx/static/themes/simple/package.json +++ b/searx/static/themes/simple/package.json @@ -1,20 +1,23 @@ { "devDependencies": { - "grunt": "~1.0.3", + "grunt-cli": "^1.4.3", + "grunt": "~1.4.1", "grunt-contrib-concat": "~1.0.1", - "grunt-contrib-cssmin": "^2.2.1", - "grunt-contrib-jshint": "~1.1.0", + "grunt-contrib-cssmin": "^4.0.0", + "grunt-contrib-jshint": "~3.0.0", "grunt-contrib-less": "~3.0.0", - "grunt-contrib-uglify": "~3.4.0", + "grunt-contrib-uglify": "~5.0.1", "grunt-contrib-watch": "~1.1.0", - "grunt-webfont": "^1.7.1", + "grunt-webfont": "^1.7.2", "ionicons-npm": "^2.0.1", - "jslint": "^0.12.0", + "jslint": "^0.12.1", + "less": "^4.1.1", "less-plugin-clean-css": "^1.5.1" }, "scripts": { "build": "npm install && grunt", "start": "grunt watch", "test": "grunt" - } + }, + "dependencies": {} } From 49ea5b764454b4cd00eef67898b1c73ce3c28f31 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Wed, 16 Jun 2021 09:16:37 +0200 Subject: [PATCH 02/11] Static build --- searx/static/themes/simple/css/searx-rtl.css | 2 +- .../themes/simple/css/searx-rtl.min.css | Bin 33967 -> 33933 bytes .../themes/simple/css/searx-rtl.min.css.map | Bin 19007 -> 19007 bytes searx/static/themes/simple/css/searx.css | 2 +- searx/static/themes/simple/css/searx.min.css | Bin 33928 -> 33894 bytes .../themes/simple/css/searx.min.css.map | Bin 18955 -> 18955 bytes .../static/themes/simple/js/searx.head.min.js | Bin 786 -> 752 bytes .../themes/simple/js/searx.head.min.js.map | Bin 812 -> 808 bytes searx/static/themes/simple/js/searx.min.js | Bin 22791 -> 22757 bytes .../static/themes/simple/js/searx.min.js.map | Bin 29043 -> 29022 bytes 10 files changed, 2 insertions(+), 2 deletions(-) diff --git a/searx/static/themes/simple/css/searx-rtl.css b/searx/static/themes/simple/css/searx-rtl.css index 62f5470cf..45ab2a1e0 100644 --- a/searx/static/themes/simple/css/searx-rtl.css +++ b/searx/static/themes/simple/css/searx-rtl.css @@ -1,4 +1,4 @@ -/*! searx | 09-06-2021 | https://github.com/searxng/searxng */ +/*! searx | 16-06-2021 | */ /* * searx, A privacy-respecting, hackable metasearch engine * diff --git a/searx/static/themes/simple/css/searx-rtl.min.css b/searx/static/themes/simple/css/searx-rtl.min.css index 1509e313f8b45e3cdd7a54686193fd185199205c..60b63698c774a4110fcccd3817ea40e8e3effdcc 100644 GIT binary patch delta 43 xcmZ4A$<*7)B%`mTs8F1mSX7}!)XyWRxc9CFker OgVp7w!|08YB`p8~GZ%aS diff --git a/searx/static/themes/simple/css/searx-rtl.min.css.map b/searx/static/themes/simple/css/searx-rtl.min.css.map index 6bbf567c935ca232558d0efa8c4c6c27ab14d310..0d428c7169338b4dff4ad70a5e30b2ce240b4020 100644 GIT binary patch delta 17 Zcmdl#g>nBB#tr?9OeRj7Co-<{002L-2Alu@ delta 17 Zcmdl#g>nBB#tr?9OcpMiCo-<{002MQ2BH7} diff --git a/searx/static/themes/simple/css/searx.css b/searx/static/themes/simple/css/searx.css index fc9bf5e3e..e85ea6b11 100644 --- a/searx/static/themes/simple/css/searx.css +++ b/searx/static/themes/simple/css/searx.css @@ -1,4 +1,4 @@ -/*! searx | 09-06-2021 | https://github.com/searxng/searxng */ +/*! searx | 16-06-2021 | */ /* * searx, A privacy-respecting, hackable metasearch engine * diff --git a/searx/static/themes/simple/css/searx.min.css b/searx/static/themes/simple/css/searx.min.css index 94d65bcb2a14f6646b811e9c62224fec17ad6835..712c3ad88bf9b86c53af4f1c834dd8a8beeb8ce2 100644 GIT binary patch delta 43 xcmeC^WO~-YB%`mTs8F1mSX7}oWUa5Is8F1mSX7}!)XyWRxc9CFker OgVp7w!|08YzAXR`!54-A diff --git a/searx/static/themes/simple/css/searx.min.css.map b/searx/static/themes/simple/css/searx.min.css.map index c44daf4c3beb2510b0b5c8bb85889e3ab5e545e1..c18cd855bbedfd61c53c7b77ab8c36fbedf2eceb 100644 GIT binary patch delta 17 YcmeC4!q`29aYGp+lZn&j3dYGE05{SF=Kufz delta 17 YcmeC4!q`29aYGp+lZDIX3dYGE05|#t?EnA( diff --git a/searx/static/themes/simple/js/searx.head.min.js b/searx/static/themes/simple/js/searx.head.min.js index 9c74c87a43ccb70929b9f3eec6f080ada067f4bf..fa5033d6ef33a581ffc57d094678bf688b0ae23a 100644 GIT binary patch delta 24 fcmbQl_JMVR6tAI~u7R1Zk%5t+LXE;k&y!35Qyd1e delta 58 zcmeysI*Dz9l)izbu7R1Zk%5t+LXAR3Nl8JmmA-y@W=TeAl3sFtu6}W9Vo^n2I*i_^ Hev%0Q7Eu$u diff --git a/searx/static/themes/simple/js/searx.head.min.js.map b/searx/static/themes/simple/js/searx.head.min.js.map index a233d297b82c49aa0b9640a8525a08665595ae04..7a4dc8ca4cbcc8eb919acddd6e187770abac4862 100644 GIT binary patch delta 38 tcmZ3(wt|hPTB$6xs5mn}Psz%7vH-L6MxGEx)^sOF&ydZTjLR7rYXRju3qb$? delta 41 wcmZ3%wuX(TTB$6xs5mn}Psz%7qk0GJTmS$7 diff --git a/searx/static/themes/simple/js/searx.min.js b/searx/static/themes/simple/js/searx.min.js index ce21068dc1bd02447fc6daf3eeb2bbabf25df487..88a2d5060101ea91f45f64ac598271a3873b3bf7 100644 GIT binary patch delta 26 hcmZqQ#Q1b0;{+*QLo;0iGhHJCBSVE6g^iy3A^>wK2tfb< delta 60 zcmaF5k+FRf;{+*v14~^4GhHJCBSVE6g^ZGtf?_Lu{q)R|jM5~%f6-)pC diff --git a/searx/static/themes/simple/js/searx.min.js.map b/searx/static/themes/simple/js/searx.min.js.map index 511f22d6772cca6159957f593be315b7df52a11a..4da5884cb333201a19894bfbe450234692ec85b1 100644 GIT binary patch delta 108 zcmezTi1FSdMx|<{vecsD%=|nhD`Op{w9K4TB`c-k)Wo6+z1++^y{uxTjXdrmZ0Syp zfrd_-V?~znuq8T%n;JN6=2M(x&I%NFPn(<*E4lel#6lJ@H)V59>>Xw(Gcb``fUy<; D1Y9H? delta 129 zcmccji1G6yMxJV=vecsD%=|nhE8~qy?jl_7j;@AII*E?Hj+^sEmho^qI)<7WfCQW! zH%lu{GUs%6bWQ_uT^%PE#!7BJ9kGxFB$NUc+FTfWhZ%_*l*lb0uA`KenUktyrBs}n QSX7~xo0+GVRjgDC0KSwdV*mgE From 6b80c57a3c04d6be37ae3c880f7e269fc362b107 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Wed, 16 Jun 2021 09:28:45 +0200 Subject: [PATCH 03/11] [mod] simple theme: move source files to the src directory --- searx/static/themes/simple/gruntfile.js | 16 ++++++++-------- .../simple/js/{searx_src => }/autocomplete.js | 0 .../{js/searx_head => src/js/head}/00_init.js | 2 +- .../js/main}/00_searx_toolkit.js | 0 .../searx_src => src/js/main}/searx_keyboard.js | 0 .../searx_src => src/js/main}/searx_mapresult.js | 0 .../searx_src => src/js/main}/searx_results.js | 0 .../searx_src => src/js/main}/searx_search.js | 0 .../simple/{ => src}/less/autocomplete.less | 0 .../themes/simple/{ => src}/less/code.less | 0 .../simple/{ => src}/less/definitions.less | 0 .../themes/simple/{ => src}/less/index.less | 0 .../static/themes/simple/{ => src}/less/ion.less | 0 .../themes/simple/{ => src}/less/mixins.less | 0 .../themes/simple/{ => src}/less/normalize.less | 0 .../simple/{ => src}/less/preferences.less | 0 .../themes/simple/{ => src}/less/pygments.less | 0 .../themes/simple/{ => src}/less/search.less | 0 .../themes/simple/{ => src}/less/style-rtl.less | 0 .../themes/simple/{ => src}/less/style.less | 0 .../themes/simple/{ => src}/less/toolkit.less | 0 .../simple/{ => src}/less/toolkit_loader.less | 0 22 files changed, 9 insertions(+), 9 deletions(-) rename searx/static/themes/simple/js/{searx_src => }/autocomplete.js (100%) rename searx/static/themes/simple/{js/searx_head => src/js/head}/00_init.js (99%) rename searx/static/themes/simple/{js/searx_src => src/js/main}/00_searx_toolkit.js (100%) rename searx/static/themes/simple/{js/searx_src => src/js/main}/searx_keyboard.js (100%) rename searx/static/themes/simple/{js/searx_src => src/js/main}/searx_mapresult.js (100%) rename searx/static/themes/simple/{js/searx_src => src/js/main}/searx_results.js (100%) rename searx/static/themes/simple/{js/searx_src => src/js/main}/searx_search.js (100%) rename searx/static/themes/simple/{ => src}/less/autocomplete.less (100%) rename searx/static/themes/simple/{ => src}/less/code.less (100%) rename searx/static/themes/simple/{ => src}/less/definitions.less (100%) rename searx/static/themes/simple/{ => src}/less/index.less (100%) rename searx/static/themes/simple/{ => src}/less/ion.less (100%) rename searx/static/themes/simple/{ => src}/less/mixins.less (100%) rename searx/static/themes/simple/{ => src}/less/normalize.less (100%) rename searx/static/themes/simple/{ => src}/less/preferences.less (100%) rename searx/static/themes/simple/{ => src}/less/pygments.less (100%) rename searx/static/themes/simple/{ => src}/less/search.less (100%) rename searx/static/themes/simple/{ => src}/less/style-rtl.less (100%) rename searx/static/themes/simple/{ => src}/less/style.less (100%) rename searx/static/themes/simple/{ => src}/less/toolkit.less (100%) rename searx/static/themes/simple/{ => src}/less/toolkit_loader.less (100%) diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js index 4c14116b2..e1b44aa72 100644 --- a/searx/static/themes/simple/gruntfile.js +++ b/searx/static/themes/simple/gruntfile.js @@ -6,12 +6,12 @@ module.exports = function(grunt) { pkg: grunt.file.readJSON('package.json'), watch: { scripts: { - files: ['<%= jshint.files %>', 'less/*.less'], + files: ['src/**'], tasks: ['jshint', 'concat', 'uglify', 'webfont', 'less:development', 'less:production'] } }, jshint: { - files: ['js/searx_src/*.js', 'js/searx_header/*.js', '../__common__/js/*.js'], + files: ['src/js/main/*.js', 'src/js/head/*.js', '../__common__/js/*.js'], options: { reporterOutput: "", proto: true, @@ -29,8 +29,8 @@ module.exports = function(grunt) { separator: ';' }, files: { - 'js/searx.head.js': ['js/searx_head/*.js'], - 'js/searx.js': ['js/searx_src/*.js', '../__common__/js/*.js'] + 'js/searx.head.js': ['src/js/head/*.js'], + 'js/searx.js': ['src/js/main/*.js', '../__common__/js/*.js', 'js/autocomplete.js'] } } }, @@ -60,8 +60,8 @@ module.exports = function(grunt) { banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n' }, files: { - "css/searx.css": "less/style.less", - "css/searx-rtl.css": "less/style-rtl.less" + "css/searx.css": "src/less/style.less", + "css/searx-rtl.css": "src/less/style-rtl.less" } }, production: { @@ -77,8 +77,8 @@ module.exports = function(grunt) { banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n' }, files: { - "css/searx.min.css": "less/style.less", - "css/searx-rtl.min.css": "less/style-rtl.less" + "css/searx.min.css": "src/less/style.less", + "css/searx-rtl.min.css": "src/less/style-rtl.less" } }, }, diff --git a/searx/static/themes/simple/js/searx_src/autocomplete.js b/searx/static/themes/simple/js/autocomplete.js similarity index 100% rename from searx/static/themes/simple/js/searx_src/autocomplete.js rename to searx/static/themes/simple/js/autocomplete.js diff --git a/searx/static/themes/simple/js/searx_head/00_init.js b/searx/static/themes/simple/src/js/head/00_init.js similarity index 99% rename from searx/static/themes/simple/js/searx_head/00_init.js rename to searx/static/themes/simple/src/js/head/00_init.js index e6964400b..be7560451 100644 --- a/searx/static/themes/simple/js/searx_head/00_init.js +++ b/searx/static/themes/simple/src/js/head/00_init.js @@ -33,7 +33,7 @@ infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true', static_path: script.getAttribute('data-static-path'), translations: JSON.parse(script.getAttribute('data-translations')), - } + }; // update the css d.getElementsByTagName("html")[0].className = (w.searx.touch)?"js touch":"js"; diff --git a/searx/static/themes/simple/js/searx_src/00_searx_toolkit.js b/searx/static/themes/simple/src/js/main/00_searx_toolkit.js similarity index 100% rename from searx/static/themes/simple/js/searx_src/00_searx_toolkit.js rename to searx/static/themes/simple/src/js/main/00_searx_toolkit.js diff --git a/searx/static/themes/simple/js/searx_src/searx_keyboard.js b/searx/static/themes/simple/src/js/main/searx_keyboard.js similarity index 100% rename from searx/static/themes/simple/js/searx_src/searx_keyboard.js rename to searx/static/themes/simple/src/js/main/searx_keyboard.js diff --git a/searx/static/themes/simple/js/searx_src/searx_mapresult.js b/searx/static/themes/simple/src/js/main/searx_mapresult.js similarity index 100% rename from searx/static/themes/simple/js/searx_src/searx_mapresult.js rename to searx/static/themes/simple/src/js/main/searx_mapresult.js diff --git a/searx/static/themes/simple/js/searx_src/searx_results.js b/searx/static/themes/simple/src/js/main/searx_results.js similarity index 100% rename from searx/static/themes/simple/js/searx_src/searx_results.js rename to searx/static/themes/simple/src/js/main/searx_results.js diff --git a/searx/static/themes/simple/js/searx_src/searx_search.js b/searx/static/themes/simple/src/js/main/searx_search.js similarity index 100% rename from searx/static/themes/simple/js/searx_src/searx_search.js rename to searx/static/themes/simple/src/js/main/searx_search.js diff --git a/searx/static/themes/simple/less/autocomplete.less b/searx/static/themes/simple/src/less/autocomplete.less similarity index 100% rename from searx/static/themes/simple/less/autocomplete.less rename to searx/static/themes/simple/src/less/autocomplete.less diff --git a/searx/static/themes/simple/less/code.less b/searx/static/themes/simple/src/less/code.less similarity index 100% rename from searx/static/themes/simple/less/code.less rename to searx/static/themes/simple/src/less/code.less diff --git a/searx/static/themes/simple/less/definitions.less b/searx/static/themes/simple/src/less/definitions.less similarity index 100% rename from searx/static/themes/simple/less/definitions.less rename to searx/static/themes/simple/src/less/definitions.less diff --git a/searx/static/themes/simple/less/index.less b/searx/static/themes/simple/src/less/index.less similarity index 100% rename from searx/static/themes/simple/less/index.less rename to searx/static/themes/simple/src/less/index.less diff --git a/searx/static/themes/simple/less/ion.less b/searx/static/themes/simple/src/less/ion.less similarity index 100% rename from searx/static/themes/simple/less/ion.less rename to searx/static/themes/simple/src/less/ion.less diff --git a/searx/static/themes/simple/less/mixins.less b/searx/static/themes/simple/src/less/mixins.less similarity index 100% rename from searx/static/themes/simple/less/mixins.less rename to searx/static/themes/simple/src/less/mixins.less diff --git a/searx/static/themes/simple/less/normalize.less b/searx/static/themes/simple/src/less/normalize.less similarity index 100% rename from searx/static/themes/simple/less/normalize.less rename to searx/static/themes/simple/src/less/normalize.less diff --git a/searx/static/themes/simple/less/preferences.less b/searx/static/themes/simple/src/less/preferences.less similarity index 100% rename from searx/static/themes/simple/less/preferences.less rename to searx/static/themes/simple/src/less/preferences.less diff --git a/searx/static/themes/simple/less/pygments.less b/searx/static/themes/simple/src/less/pygments.less similarity index 100% rename from searx/static/themes/simple/less/pygments.less rename to searx/static/themes/simple/src/less/pygments.less diff --git a/searx/static/themes/simple/less/search.less b/searx/static/themes/simple/src/less/search.less similarity index 100% rename from searx/static/themes/simple/less/search.less rename to searx/static/themes/simple/src/less/search.less diff --git a/searx/static/themes/simple/less/style-rtl.less b/searx/static/themes/simple/src/less/style-rtl.less similarity index 100% rename from searx/static/themes/simple/less/style-rtl.less rename to searx/static/themes/simple/src/less/style-rtl.less diff --git a/searx/static/themes/simple/less/style.less b/searx/static/themes/simple/src/less/style.less similarity index 100% rename from searx/static/themes/simple/less/style.less rename to searx/static/themes/simple/src/less/style.less diff --git a/searx/static/themes/simple/less/toolkit.less b/searx/static/themes/simple/src/less/toolkit.less similarity index 100% rename from searx/static/themes/simple/less/toolkit.less rename to searx/static/themes/simple/src/less/toolkit.less diff --git a/searx/static/themes/simple/less/toolkit_loader.less b/searx/static/themes/simple/src/less/toolkit_loader.less similarity index 100% rename from searx/static/themes/simple/less/toolkit_loader.less rename to searx/static/themes/simple/src/less/toolkit_loader.less From 6288b549e268e7e82a3f20278642343656ec2fc1 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Wed, 16 Jun 2021 10:37:06 +0200 Subject: [PATCH 04/11] [mod] simple theme: move magnet.svg to src/fonts see https://github.com/searx/searx/pull/1109 --- searx/static/themes/simple/gruntfile.js | 2 +- .../static/themes/simple/{ => src/fonts}/magnet.svg | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename searx/static/themes/simple/{ => src/fonts}/magnet.svg (100%) diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js index e1b44aa72..d4af12e65 100644 --- a/searx/static/themes/simple/gruntfile.js +++ b/searx/static/themes/simple/gruntfile.js @@ -107,7 +107,7 @@ module.exports = function(grunt) { 'node_modules/ionicons-npm/src/music-note.svg', 'node_modules/ionicons-npm/src/ion-close-round.svg', 'node_modules/ionicons-npm/src/android-more-vertical.svg', - 'magnet.svg', + 'src/fonts/magnet.svg', 'node_modules/ionicons-npm/src/android-close.svg', ], dest: 'fonts', diff --git a/searx/static/themes/simple/magnet.svg b/searx/static/themes/simple/src/fonts/magnet.svg similarity index 100% rename from searx/static/themes/simple/magnet.svg rename to searx/static/themes/simple/src/fonts/magnet.svg From b4a47cacd8f9471fea9fb4099ad647a69169db5c Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Wed, 16 Jun 2021 10:31:11 +0200 Subject: [PATCH 05/11] [mod] simple theme: leaflet becomes a packages.json dependency the build of the themes updates: * js/leaflet.js ( was leaflet/leaflet.js ) * css/leaflet.css ( was leaflet/leaflet.css ) * css/images ( was leaflet/images ) --- searx/static/themes/simple/gruntfile.js | 38 +++++++++++++++++- .../simple/leaflet/images/layers-2x.png | Bin 1259 -> 0 bytes .../themes/simple/leaflet/images/layers.png | Bin 696 -> 0 bytes .../leaflet/images/marker-icon-2x-green.png | Bin 3753 -> 0 bytes .../leaflet/images/marker-icon-2x-orange.png | Bin 3691 -> 0 bytes .../leaflet/images/marker-icon-2x-red.png | Bin 3692 -> 0 bytes .../simple/leaflet/images/marker-icon-2x.png | Bin 2464 -> 0 bytes .../leaflet/images/marker-icon-green.png | Bin 1696 -> 0 bytes .../leaflet/images/marker-icon-orange.png | Bin 1714 -> 0 bytes .../simple/leaflet/images/marker-icon-red.png | Bin 1690 -> 0 bytes .../simple/leaflet/images/marker-icon.png | Bin 1466 -> 0 bytes .../simple/leaflet/images/marker-shadow.png | Bin 618 -> 0 bytes .../static/themes/simple/leaflet/leaflet.css | Bin 13562 -> 0 bytes searx/static/themes/simple/leaflet/leaflet.js | Bin 140360 -> 0 bytes .../simple/src/js/main/searx_mapresult.js | 4 +- 15 files changed, 39 insertions(+), 3 deletions(-) delete mode 100644 searx/static/themes/simple/leaflet/images/layers-2x.png delete mode 100644 searx/static/themes/simple/leaflet/images/layers.png delete mode 100644 searx/static/themes/simple/leaflet/images/marker-icon-2x-green.png delete mode 100644 searx/static/themes/simple/leaflet/images/marker-icon-2x-orange.png delete mode 100644 searx/static/themes/simple/leaflet/images/marker-icon-2x-red.png delete mode 100644 searx/static/themes/simple/leaflet/images/marker-icon-2x.png delete mode 100644 searx/static/themes/simple/leaflet/images/marker-icon-green.png delete mode 100644 searx/static/themes/simple/leaflet/images/marker-icon-orange.png delete mode 100644 searx/static/themes/simple/leaflet/images/marker-icon-red.png delete mode 100644 searx/static/themes/simple/leaflet/images/marker-icon.png delete mode 100644 searx/static/themes/simple/leaflet/images/marker-shadow.png delete mode 100644 searx/static/themes/simple/leaflet/leaflet.css delete mode 100644 searx/static/themes/simple/leaflet/leaflet.js diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js index d4af12e65..d11ee6822 100644 --- a/searx/static/themes/simple/gruntfile.js +++ b/searx/static/themes/simple/gruntfile.js @@ -23,6 +23,41 @@ module.exports = function(grunt) { } } }, + copy: { + js: { + expand: true, + cwd: './node_modules', + dest: './js/', + flatten: true, + filter: 'isFile', + timestamp: true, + src: [ + './leaflet/dist/leaflet.js', + ] + }, + css: { + expand: true, + cwd: './node_modules', + dest: './css/', + flatten: true, + filter: 'isFile', + timestamp: true, + src: [ + './leaflet/dist/leaflet.css', + ] + }, + leaflet_images: { + expand: true, + cwd: './node_modules', + dest: './css/images/', + flatten: true, + filter: 'isFile', + timestamp: true, + src: [ + './leaflet/dist/images/*.png', + ] + }, + }, concat: { head_and_body: { options: { @@ -149,6 +184,7 @@ module.exports = function(grunt) { }); grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-concat'); @@ -158,5 +194,5 @@ module.exports = function(grunt) { grunt.registerTask('test', ['jshint']); - grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'less:development', 'less:production']); + grunt.registerTask('default', ['jshint', 'copy', 'concat', 'uglify', 'less:development', 'less:production']); }; diff --git a/searx/static/themes/simple/leaflet/images/layers-2x.png b/searx/static/themes/simple/leaflet/images/layers-2x.png deleted file mode 100644 index 200c333dca9652ac4cba004d609e5af4eee168c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1259 zcmVFhCYNy;#0irRPomHqW|G1C*;4?@4#E?jH>?v@U%cy?3dQAc-DchXVErpOh~ z-jbon+tNbnl6hoEb;)TVk+%hTDDi_G%i3*RZ&15!$Fjr^f;Ke&A@|?=`2&+{zr+3a z{D*=t(`AXyS%X7N z%a#RZw6vD^t_rnM`L4E>m=U&R!A-&}nZIi$BOPvkhrCuUe@BN~-lRD)f44;J%TwgE zcze8u!PQ_NR7?o(NylLXVTfDO zxs5=@|GsYEsNo4M#nT%N!UE(?dnS)t2+{ELYAFp*3=iF=|EQnTp`#vlSXuGVraYo? z+RCzXo6h3qA8{KG?S4nE(lM+;Eb4nT3XV;7gcAxUi5m)`k5tv}cPy()8ZR3TLW3I- zAS^}cq-IJvL7a4RgR!yk@~RT%$lA7{L5ES*hyx)M4(yxI$Ub(4f)K|^v1>zvwQY!_ zIrWw8q9GS^!Dp~}+?mbnB6jDF8mVlbQ!jFKDY;w=7;XO{9bq7>LXGK24WA`;rL)_Z z)&j}pbV(;6gY;VMhbxgvn`X;6x}VUEE-7 z%)7j-%t8S=ZL3yc)HbXDAqJZvBTPoiW_A-+a8m3_Z?v{DN7Tnr#O_VUMT0UBt$;p` zDh6JbGHN8JJ*JN%y2%msb97@_S>9!%Egwk;?PEkU9ntz&3uR}%Fj5d$JHQbQb3}a{ zSzFT^#n=VInPpcAS}CNxj?_ zVscANk5Cfz(51EI1pz};AWWb|kgbYNb4wCEGUn3+eMUMV?1-{=I4TlmLJMot@rd07 zZuo2hk1ccu{YmGkcYdWAVdk{Z4Nm?^cTD&}jGm+Q1SYIXMwmG*oO*83&#>l%nbR`G zhh=lZ%xIb7kU3#;TBbfECrnC9P=-XpL|TG2BoZdj61*XiFbW8?1Z_wp%#;>${SUIy V$8qr;L*)Pf002ovPDHLkV1hYLS~36t diff --git a/searx/static/themes/simple/leaflet/images/layers.png b/searx/static/themes/simple/leaflet/images/layers.png deleted file mode 100644 index 1a72e5784b2b456eac5d7670738db80697af3377..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 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 JPDHLkV1k7n3itp3 diff --git a/searx/static/themes/simple/leaflet/images/marker-icon-2x-red.png b/searx/static/themes/simple/leaflet/images/marker-icon-2x-red.png deleted file mode 100644 index 1d2e197c645f015344f6471c90b8cbd68b0608d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3692 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 KMNUMnLSTZ2%@Obb diff --git a/searx/static/themes/simple/leaflet/images/marker-icon-2x.png b/searx/static/themes/simple/leaflet/images/marker-icon-2x.png deleted file mode 100644 index 88f9e501888c9c6cb29ad340d9a888627dd1b6d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2464 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 e-I|>x8~*?ZhF3snGbtJX0000cOl4 diff --git a/searx/static/themes/simple/leaflet/images/marker-icon-green.png b/searx/static/themes/simple/leaflet/images/marker-icon-green.png deleted file mode 100644 index f48ef41df0a84632da8c7f67c8125d006e9a7ef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1696 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 diff --git a/searx/static/themes/simple/leaflet/images/marker-icon.png b/searx/static/themes/simple/leaflet/images/marker-icon.png deleted file mode 100644 index 950edf24677ded147df13b26f91baa2b0fa70513..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Amke9$Lam@{1K@O ze*LXqlKQHiv=gx+V^Cbb2?z@ISBQ*3amF;9UJ3SBg(N|710TLamQmYZ&Qjn2LuO<* zCZlB4n%@pc&7NNnY1}x+NWpHlq`OJEo|`aYN9<`RBUB+79g;>dgb6YlfN#kGL?lO_ z!6~M^7sOnbsUkKk<@Ysie&`G>ruxH&Mgy&8;i=A zB9OO!xR{AyODw>DS-q5YM{0ExFEAzt zm>RdS+ssW(-8|?xr0(?$vBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrP zs(rTFX@W#t$hXNvbgX`gK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z!4=W zi$giRj1{ zt;2w`VSCF#WE&*ev7jpsC=6175@(~nTE2;7M-L((0bH@yG}-TB$R~WXd?tA$s3|%y zA`9$sA(>F%J3ioz<-LJl*^o1|w84l>HBR`>3l9c8$5Xr@xCiIQ7{x$fMCzOk_-M=% z+{a_Q#;42`#KfUte@$NT77uaTz?b-fBe)1s5XE$yA79fm?KqM^VgLXD07*qoM6N<$ Ef<_J(9smFU diff --git a/searx/static/themes/simple/leaflet/leaflet.css b/searx/static/themes/simple/leaflet/leaflet.css deleted file mode 100644 index d1b47a1251c18df4c08b0b8c0b2c64522c90eab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13562 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 diff --git a/searx/static/themes/simple/leaflet/leaflet.js b/searx/static/themes/simple/leaflet/leaflet.js deleted file mode 100644 index 02ae624a7f14d6215e2182eee0181d63416fac12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140360 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 z%0D-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 diff --git a/searx/static/themes/simple/src/js/main/searx_mapresult.js b/searx/static/themes/simple/src/js/main/searx_mapresult.js index 2ccdbd1c7..7b3982c11 100644 --- a/searx/static/themes/simple/src/js/main/searx_mapresult.js +++ b/searx/static/themes/simple/src/js/main/searx_mapresult.js @@ -31,8 +31,8 @@ var map_boundingbox = JSON.parse(this.dataset.mapBoundingbox); var map_geojson = JSON.parse(this.dataset.mapGeojson); - searx.loadStyle('leaflet/leaflet.css'); - searx.loadScript('leaflet/leaflet.js', function() { + searx.loadStyle('css/leaflet.css'); + searx.loadScript('js/leaflet.js', function() { var map_bounds = null; if(map_boundingbox) { var southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]); From e3ebfd41d7379384186fd74a7db430247eef8c84 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Wed, 16 Jun 2021 12:13:37 +0200 Subject: [PATCH 06/11] [mod] simple theme: autocomplete-js becomes a packages.json dependency Update to version 2.7.1 --- searx/static/themes/simple/gruntfile.js | 2 +- searx/static/themes/simple/js/autocomplete.js | 536 ------------------ searx/static/themes/simple/package.json | 8 +- 3 files changed, 7 insertions(+), 539 deletions(-) delete mode 100644 searx/static/themes/simple/js/autocomplete.js diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js index d11ee6822..271e21b26 100644 --- a/searx/static/themes/simple/gruntfile.js +++ b/searx/static/themes/simple/gruntfile.js @@ -65,7 +65,7 @@ module.exports = function(grunt) { }, files: { 'js/searx.head.js': ['src/js/head/*.js'], - 'js/searx.js': ['src/js/main/*.js', '../__common__/js/*.js', 'js/autocomplete.js'] + 'js/searx.js': ['src/js/main/*.js', '../__common__/js/*.js', './node_modules/autocomplete-js/dist/autocomplete.js'] } } }, diff --git a/searx/static/themes/simple/js/autocomplete.js b/searx/static/themes/simple/js/autocomplete.js deleted file mode 100644 index b95fbcfb2..000000000 --- a/searx/static/themes/simple/js/autocomplete.js +++ /dev/null @@ -1,536 +0,0 @@ -(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 e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o @baptistedonaux - */ -var AutoComplete = (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) { - 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); - } - }; - 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) { - var response = params._Cache(params._Pre()); - if (response === undefined) { - var request = AutoComplete.prototype.makeRequest(params, callback); - 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); - }; - return AutoComplete; -}()); -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)); - } - }, - 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 === true) { - this.DOMResults.setAttribute("class", "autocomplete"); - this.Input.setAttribute("data-autocomplete-old-value", this.Input.value); - } - 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 (event) { - params._Select(li); - }; - li.onmouseenter = function () { - var active = params.DOMResults.querySelector("li.active"); - if (active !== li) { - if (active !== null) { - active.classList.remove("active"); - } - li.classList.add("active"); - } - }; - } - }); - }, - /** - * 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) { - console.log('test test test'); - 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); - }, - $AjaxTimer: null, - $Cache: {}, - $Listeners: {} -}; -module.exports = AutoComplete; - -},{}]},{},[1])(1) -}); diff --git a/searx/static/themes/simple/package.json b/searx/static/themes/simple/package.json index 47cddf031..038520a3d 100644 --- a/searx/static/themes/simple/package.json +++ b/searx/static/themes/simple/package.json @@ -2,6 +2,7 @@ "devDependencies": { "grunt-cli": "^1.4.3", "grunt": "~1.4.1", + "grunt-contrib-copy": "^1.0.0", "grunt-contrib-concat": "~1.0.1", "grunt-contrib-cssmin": "^4.0.0", "grunt-contrib-jshint": "~3.0.0", @@ -14,10 +15,13 @@ "less": "^4.1.1", "less-plugin-clean-css": "^1.5.1" }, + "dependencies": { + "autocomplete-js": "2.7.1", + "leaflet": "^1.7.1" + }, "scripts": { "build": "npm install && grunt", "start": "grunt watch", "test": "grunt" - }, - "dependencies": {} + } } From 7137d2893f33e9158e8563a21d9586119d175269 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Wed, 16 Jun 2021 13:28:08 +0200 Subject: [PATCH 07/11] [mod] simple theme: remove src/less/ion.less This file is generated by webfont. * It is now generated as searx/static/themes/simple/ion.less * It is generated before the .less compilation. * .gitignore includes this file Add two new package depedencies: fontforge ttfautohint See utils/searx.sh --- .github/workflows/integration.yml | 2 +- manage | 1 + searx/static/themes/simple/.gitignore | 1 + searx/static/themes/simple/gruntfile.js | 64 +++---- searx/static/themes/simple/src/less/ion.less | 181 ------------------ .../static/themes/simple/src/less/style.less | 2 +- utils/searx.sh | 8 +- 7 files changed, 40 insertions(+), 219 deletions(-) delete mode 100644 searx/static/themes/simple/src/less/ion.less diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 914ce163f..ca0a02824 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -55,7 +55,7 @@ jobs: - name: Checkout uses: actions/checkout@v2 - name: Install Ubuntu packages - run: sudo ./utils/searx.sh install packages + run: sudo ./utils/searx.sh install buildhost - name: Install node dependencies run: make V=1 node.env - name: Build themes diff --git a/manage b/manage index 5237e6e1b..d91904255 100755 --- a/manage +++ b/manage @@ -333,6 +333,7 @@ node.clean() { ./searx/static/themes/oscar/node_modules \ ./searx/static/themes/simple/package-lock.json \ ./searx/static/themes/simple/node_modules + ./searx/static/themes/simple/ion.less \ dump_return $? } diff --git a/searx/static/themes/simple/.gitignore b/searx/static/themes/simple/.gitignore index 07e6e472c..2c1954c3c 100644 --- a/searx/static/themes/simple/.gitignore +++ b/searx/static/themes/simple/.gitignore @@ -1 +1,2 @@ /node_modules +ion.less diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js index 271e21b26..1dea80bd4 100644 --- a/searx/static/themes/simple/gruntfile.js +++ b/searx/static/themes/simple/gruntfile.js @@ -88,35 +88,6 @@ module.exports = function(grunt) { } } }, - less: { - development: { - options: { - paths: ["less"], - banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n' - }, - files: { - "css/searx.css": "src/less/style.less", - "css/searx-rtl.css": "src/less/style-rtl.less" - } - }, - production: { - options: { - paths: ["less"], - plugins: [ - new (require('less-plugin-clean-css'))() - ], - sourceMap: true, - sourceMapURL: (name) => { const s = name.split('/'); return s[s.length - 1] + '.map';}, - outputSourceFiles: false, - sourceMapRootpath: '../', - banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n' - }, - files: { - "css/searx.min.css": "src/less/style.less", - "css/searx-rtl.min.css": "src/less/style-rtl.less" - } - }, - }, webfont: { icons: { // src: 'node_modules/ionicons-npm/src/*.svg', @@ -146,7 +117,7 @@ module.exports = function(grunt) { 'node_modules/ionicons-npm/src/android-close.svg', ], dest: 'fonts', - destLess: 'less', + destLess: '.', options: { font: 'ion', hashes : true, @@ -180,7 +151,36 @@ module.exports = function(grunt) { } } } - } + }, + less: { + development: { + options: { + paths: ["less"], + banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n' + }, + files: { + "css/searx.css": "src/less/style.less", + "css/searx-rtl.css": "src/less/style-rtl.less" + } + }, + production: { + options: { + paths: ["less"], + plugins: [ + new (require('less-plugin-clean-css'))() + ], + sourceMap: true, + sourceMapURL: (name) => { const s = name.split('/'); return s[s.length - 1] + '.map';}, + outputSourceFiles: false, + sourceMapRootpath: '../', + banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n' + }, + files: { + "css/searx.min.css": "src/less/style.less", + "css/searx-rtl.min.css": "src/less/style-rtl.less" + } + }, + }, }); grunt.loadNpmTasks('grunt-contrib-watch'); @@ -194,5 +194,5 @@ module.exports = function(grunt) { grunt.registerTask('test', ['jshint']); - grunt.registerTask('default', ['jshint', 'copy', 'concat', 'uglify', 'less:development', 'less:production']); + grunt.registerTask('default', ['jshint', 'copy', 'concat', 'uglify', 'webfont', 'less:development', 'less:production']); }; diff --git a/searx/static/themes/simple/src/less/ion.less b/searx/static/themes/simple/src/less/ion.less deleted file mode 100644 index c9e715591..000000000 --- a/searx/static/themes/simple/src/less/ion.less +++ /dev/null @@ -1,181 +0,0 @@ -// Generated by grunt-webfont - - -@font-face { - font-family:"ion"; - src:url("../fonts/ion.eot?ce7a0ead692560b4405a96d5b8471f51"); - src:url("../fonts/ion.eot?#iefix") format("embedded-opentype"), - url("../fonts/ion.woff2?ce7a0ead692560b4405a96d5b8471f51") format("woff2"), - url("../fonts/ion.woff?ce7a0ead692560b4405a96d5b8471f51") format("woff"), - url("../fonts/ion.ttf?ce7a0ead692560b4405a96d5b8471f51") format("truetype"), - url("../fonts/ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion") format("svg"); - font-weight:normal; - font-style:normal; -} - -.ion-icon { - &:before { - font-family:"ion"; - } - display:inline-block; - vertical-align:middle; - line-height:1; - font-weight:normal; - font-style:normal; - speak:none; - text-decoration:inherit; - text-transform:none; - text-rendering:auto; - -webkit-font-smoothing:antialiased; - -moz-osx-font-smoothing:grayscale; -} - - -// Icons - -.ion-navicon-round { - &:before { - content:"\f101"; - } -} - - -.ion-search { - &:before { - content:"\f102"; - } -} - - -.ion-play { - &:before { - content:"\f103"; - } -} - - -.ion-link { - &:before { - content:"\f104"; - } -} - - -.ion-chevron-up { - &:before { - content:"\f105"; - } -} - - -.ion-chevron-left { - &:before { - content:"\f106"; - } -} - - -.ion-chevron-right { - &:before { - content:"\f107"; - } -} - - -.ion-arrow-down-a { - &:before { - content:"\f108"; - } -} - - -.ion-arrow-up-a { - &:before { - content:"\f109"; - } -} - - -.ion-arrow-swap { - &:before { - content:"\f10a"; - } -} - - -.ion-arrow-dropdown { - &:before { - content:"\f10b"; - } -} - - -.ion-globe { - &:before { - content:"\f10c"; - } -} - - -.ion-time { - &:before { - content:"\f10d"; - } -} - - -.ion-location { - &:before { - content:"\f10e"; - } -} - - -.ion-warning { - &:before { - content:"\f10f"; - } -} - - -.ion-error { - &:before { - content:"\f110"; - } -} - - -.ion-film-outline { - &:before { - content:"\f111"; - } -} - - -.ion-music-note { - &:before { - content:"\f112"; - } -} - - -.ion-more-vertical { - &:before { - content:"\f113"; - } -} - - -.ion-magnet { - &:before { - content:"\f114"; - } -} - - -.ion-close { - &:before { - content:"\f115"; - } -} - diff --git a/searx/static/themes/simple/src/less/style.less b/searx/static/themes/simple/src/less/style.less index 61c0a93de..82fcb00ed 100644 --- a/searx/static/themes/simple/src/less/style.less +++ b/searx/static/themes/simple/src/less/style.less @@ -22,7 +22,7 @@ @import "autocomplete.less"; // ion-icon -@import "ion.less"; +@import "../../ion.less"; .ion-icon-big { .ion-icon; diff --git a/utils/searx.sh b/utils/searx.sh index a5345c075..e1ff4beb0 100755 --- a/utils/searx.sh +++ b/utils/searx.sh @@ -51,7 +51,7 @@ shellcheck" BUILD_PACKAGES_debian="\ firefox graphviz imagemagick texlive-xetex librsvg2-bin texlive-latex-recommended texlive-extra-utils fonts-dejavu -latexmk" +latexmk fontforge ttfautohint" # pacman packages SEARX_PACKAGES_arch="\ @@ -62,7 +62,7 @@ shellcheck" BUILD_PACKAGES_arch="\ firefox graphviz imagemagick texlive-bin extra/librsvg -texlive-core texlive-latexextra ttf-dejavu" +texlive-core texlive-latexextra ttf-dejavu fontforge ttfautohint" # dnf packages SEARX_PACKAGES_fedora="\ @@ -75,7 +75,7 @@ BUILD_PACKAGES_fedora="\ firefox graphviz graphviz-gd ImageMagick librsvg2-tools texlive-xetex-bin texlive-collection-fontsrecommended texlive-collection-latex dejavu-sans-fonts dejavu-serif-fonts -dejavu-sans-mono-fonts" +dejavu-sans-mono-fonts fontforge ttfautohint" # yum packages SEARX_PACKAGES_centos="\ @@ -88,7 +88,7 @@ BUILD_PACKAGES_centos="\ firefox graphviz graphviz-gd ImageMagick librsvg2-tools texlive-xetex-bin texlive-collection-fontsrecommended texlive-collection-latex dejavu-sans-fonts dejavu-serif-fonts -dejavu-sans-mono-fonts" +dejavu-sans-mono-fonts fontforge ttfautohint" case $DIST_ID-$DIST_VERS in ubuntu-16.04|ubuntu-18.04) From 85033f3d097c6ae796e8ddadf469a4db78b76fca Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Wed, 16 Jun 2021 14:23:44 +0200 Subject: [PATCH 08/11] Static build --- .../themes/simple/css/images/layers-2x.png | Bin 0 -> 1259 bytes .../themes/simple/css/images/layers.png | Bin 0 -> 696 bytes .../simple/css/images/marker-icon-2x.png | Bin 0 -> 2464 bytes .../themes/simple/css/images/marker-icon.png | Bin 0 -> 1466 bytes .../simple/css/images/marker-shadow.png | Bin 0 -> 618 bytes searx/static/themes/simple/css/leaflet.css | Bin 0 -> 14272 bytes searx/static/themes/simple/css/searx-rtl.css | 8 +- .../themes/simple/css/searx-rtl.min.css | Bin 33933 -> 33955 bytes .../themes/simple/css/searx-rtl.min.css.map | Bin 19007 -> 19024 bytes searx/static/themes/simple/css/searx.css | 8 +- searx/static/themes/simple/css/searx.min.css | Bin 33894 -> 33916 bytes .../themes/simple/css/searx.min.css.map | Bin 18955 -> 18968 bytes searx/static/themes/simple/fonts/ion.css | 14 +- searx/static/themes/simple/fonts/ion.eot | Bin 4094 -> 0 bytes searx/static/themes/simple/fonts/ion.html | 14 +- searx/static/themes/simple/fonts/ion.svg | Bin 12614 -> 12611 bytes searx/static/themes/simple/fonts/ion.ttf | Bin 3936 -> 3936 bytes searx/static/themes/simple/fonts/ion.woff | Bin 4856 -> 4856 bytes searx/static/themes/simple/fonts/ion.woff2 | Bin 2112 -> 2040 bytes searx/static/themes/simple/js/leaflet.js | Bin 0 -> 141941 bytes searx/static/themes/simple/js/searx.head.js | 2 +- .../static/themes/simple/js/searx.head.min.js | Bin 752 -> 786 bytes searx/static/themes/simple/js/searx.js | 1080 +++++++++-------- searx/static/themes/simple/js/searx.min.js | Bin 22757 -> 22677 bytes .../static/themes/simple/js/searx.min.js.map | Bin 29022 -> 28972 bytes 25 files changed, 563 insertions(+), 563 deletions(-) create mode 100644 searx/static/themes/simple/css/images/layers-2x.png create mode 100644 searx/static/themes/simple/css/images/layers.png create mode 100644 searx/static/themes/simple/css/images/marker-icon-2x.png create mode 100644 searx/static/themes/simple/css/images/marker-icon.png create mode 100644 searx/static/themes/simple/css/images/marker-shadow.png create mode 100644 searx/static/themes/simple/css/leaflet.css delete mode 100644 searx/static/themes/simple/fonts/ion.eot create mode 100644 searx/static/themes/simple/js/leaflet.js diff --git a/searx/static/themes/simple/css/images/layers-2x.png b/searx/static/themes/simple/css/images/layers-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..200c333dca9652ac4cba004d609e5af4eee168c1 GIT binary patch literal 1259 zcmVFhCYNy;#0irRPomHqW|G1C*;4?@4#E?jH>?v@U%cy?3dQAc-DchXVErpOh~ z-jbon+tNbnl6hoEb;)TVk+%hTDDi_G%i3*RZ&15!$Fjr^f;Ke&A@|?=`2&+{zr+3a z{D*=t(`AXyS%X7N z%a#RZw6vD^t_rnM`L4E>m=U&R!A-&}nZIi$BOPvkhrCuUe@BN~-lRD)f44;J%TwgE zcze8u!PQ_NR7?o(NylLXVTfDO zxs5=@|GsYEsNo4M#nT%N!UE(?dnS)t2+{ELYAFp*3=iF=|EQnTp`#vlSXuGVraYo? z+RCzXo6h3qA8{KG?S4nE(lM+;Eb4nT3XV;7gcAxUi5m)`k5tv}cPy()8ZR3TLW3I- zAS^}cq-IJvL7a4RgR!yk@~RT%$lA7{L5ES*hyx)M4(yxI$Ub(4f)K|^v1>zvwQY!_ zIrWw8q9GS^!Dp~}+?mbnB6jDF8mVlbQ!jFKDY;w=7;XO{9bq7>LXGK24WA`;rL)_Z z)&j}pbV(;6gY;VMhbxgvn`X;6x}VUEE-7 z%)7j-%t8S=ZL3yc)HbXDAqJZvBTPoiW_A-+a8m3_Z?v{DN7Tnr#O_VUMT0UBt$;p` zDh6JbGHN8JJ*JN%y2%msb97@_S>9!%Egwk;?PEkU9ntz&3uR}%Fj5d$JHQbQb3}a{ zSzFT^#n=VInPpcAS}CNxj?_ zVscANk5Cfz(51EI1pz};AWWb|kgbYNb4wCEGUn3+eMUMV?1-{=I4TlmLJMot@rd07 zZuo2hk1ccu{YmGkcYdWAVdk{Z4Nm?^cTD&}jGm+Q1SYIXMwmG*oO*83&#>l%nbR`G zhh=lZ%xIb7kU3#;TBbfECrnC9P=-XpL|TG2BoZdj61*XiFbW8?1Z_wp%#;>${SUIy V$8qr;L*)Pf002ovPDHLkV1hYLS~36t literal 0 HcmV?d00001 diff --git a/searx/static/themes/simple/css/images/layers.png b/searx/static/themes/simple/css/images/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..1a72e5784b2b456eac5d7670738db80697af3377 GIT binary patch literal 696 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 e-I|>x8~*?ZhF3snGbtJX0000cOl4 literal 0 HcmV?d00001 diff --git a/searx/static/themes/simple/css/images/marker-icon.png b/searx/static/themes/simple/css/images/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..950edf24677ded147df13b26f91baa2b0fa70513 GIT binary patch literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Amke9$Lam@{1K@O ze*LXqlKQHiv=gx+V^Cbb2?z@ISBQ*3amF;9UJ3SBg(N|710TLamQmYZ&Qjn2LuO<* zCZlB4n%@pc&7NNnY1}x+NWpHlq`OJEo|`aYN9<`RBUB+79g;>dgb6YlfN#kGL?lO_ z!6~M^7sOnbsUkKk<@Ysie&`G>ruxH&Mgy&8;i=A zB9OO!xR{AyODw>DS-q5YM{0ExFEAzt zm>RdS+ssW(-8|?xr0(?$vBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrP zs(rTFX@W#t$hXNvbgX`gK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z!4=W zi$giRj1{ zt;2w`VSCF#WE&*ev7jpsC=6175@(~nTE2;7M-L((0bH@yG}-TB$R~WXd?tA$s3|%y zA`9$sA(>F%J3ioz<-LJl*^o1|w84l>HBR`>3l9c8$5Xr@xCiIQ7{x$fMCzOk_-M=% z+{a_Q#;42`#KfUte@$NT77uaTz?b-fBe)1s5XE$yA79fm?KqM^VgLXD07*qoM6N<$ Ef<_J(9smFU literal 0 HcmV?d00001 diff --git a/searx/static/themes/simple/css/leaflet.css b/searx/static/themes/simple/css/leaflet.css new file mode 100644 index 0000000000000000000000000000000000000000..601476fe6dc25e611c787f0fe4ffeaba43d1fee1 GIT binary patch literal 14272 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 BYwZ94 delta 312 zcmcaGg>nBB#tCWlIjP0P`UREgxv6<2#d;u~l8%y|o<3MSFTW@^F(MjkW*&ygnfZBOg{)xPCjOPx1Y1~KQkjEcaAsagY6ZgB$^MKolk*wH zCU-LGGMPAS-oey`g1Y4@3qoa=h} zoNAhqWNcw-oNQu{lx%5gVvuT?W|nN6sA*kXlx$U6l%t`ir=OOeS5mB>nV+YZnqOj1 vNbBS{4{HU2igtQv5LU$KsYY0lyQdamMH4+kC+qp`-@Mx^mU*+DpM@C!i)vkW delta 232 zcmeycQU8iW-&d#Vvu)aj{3SkYzA(8;#ZqMOydWLZFr$?9GQ KHZ%KIngRgG97B`< diff --git a/searx/static/themes/simple/css/searx.min.css.map b/searx/static/themes/simple/css/searx.min.css.map index c18cd855bbedfd61c53c7b77ab8c36fbedf2eceb..b0c850c1cd1c85949c1418c201beb00d0c2acea9 100644 GIT binary patch delta 289 zcmeC4!Z>3JUfPah~Zu~y0qt|U1>B^6Z~ zqO~MHKPNl01XXI{L2<#%{5&+lSF)yX?5Gpz=;)~9>6pFwgH{+L nr=PPYPAG`$?H1vvQ;4MAJ!kVJ9ZOjNeGOfT delta 315 zcmbO+g|T}IUfPaiCvmtT~dn3GwRiY}3ypMoJ) zlAoWGomqmeG&i#%GY`Y$%=|pCLRPSC6aUI;f-NjAsm#GJI5RILwE|)6WPe7P$@z?0 zOeRj7XEQcxFj`KQ)l%Thb=EO+a&)$In(U$#!ItXi=&0jAd4^V;V3M;=CQ!mrClVy) w>6p8jT|10XIKWva5G0TYl7cIbm2q`()(Hhkc)LY8>J%dBbkEv+U&m4w0BezAy8r+H diff --git a/searx/static/themes/simple/fonts/ion.css b/searx/static/themes/simple/fonts/ion.css index ebf6c6259..b65aca967 100644 --- a/searx/static/themes/simple/fonts/ion.css +++ b/searx/static/themes/simple/fonts/ion.css @@ -1,14 +1,15 @@ /* Generated by grunt-webfont */ + @font-face { font-family:"ion"; - src:url("../fonts/ion.eot?ce7a0ead692560b4405a96d5b8471f51"); - src:url("../fonts/ion.eot?#iefix") format("embedded-opentype"), - url("../fonts/ion.woff2?ce7a0ead692560b4405a96d5b8471f51") format("woff2"), - url("../fonts/ion.woff?ce7a0ead692560b4405a96d5b8471f51") format("woff"), - url("../fonts/ion.ttf?ce7a0ead692560b4405a96d5b8471f51") format("truetype"), - url("../fonts/ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion") format("svg"); + src:url("../fonts/ion.eot?14747ff3e5db3853c40bc9540e9f6c3a"); + src:url("../fonts/ion.eot?14747ff3e5db3853c40bc9540e9f6c3a#iefix") format("embedded-opentype"), + url("../fonts/ion.woff2?14747ff3e5db3853c40bc9540e9f6c3a") format("woff2"), + url("../fonts/ion.woff?14747ff3e5db3853c40bc9540e9f6c3a") format("woff"), + url("../fonts/ion.ttf?14747ff3e5db3853c40bc9540e9f6c3a") format("truetype"), + url("../fonts/ion.svg?14747ff3e5db3853c40bc9540e9f6c3a#ion") format("svg"); font-weight:normal; font-style:normal; } @@ -18,7 +19,6 @@ font-family:"ion"; display:inline-block; - vertical-align:middle; line-height:1; font-weight:normal; font-style:normal; diff --git a/searx/static/themes/simple/fonts/ion.eot b/searx/static/themes/simple/fonts/ion.eot deleted file mode 100644 index 96b3ee98cbf8cb84911a77b871f1d34940d76478..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4094 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 diff --git a/searx/static/themes/simple/fonts/ion.html b/searx/static/themes/simple/fonts/ion.html index d92237994..011a63170 100644 --- a/searx/static/themes/simple/fonts/ion.html +++ b/searx/static/themes/simple/fonts/ion.html @@ -58,14 +58,15 @@ /* Generated by grunt-webfont */ + @font-face { font-family:"ion"; - src:url("ion.eot?ce7a0ead692560b4405a96d5b8471f51"); - src:url("ion.eot?#iefix") format("embedded-opentype"), - url("ion.woff2?ce7a0ead692560b4405a96d5b8471f51") format("woff2"), - url("ion.woff?ce7a0ead692560b4405a96d5b8471f51") format("woff"), - url("ion.ttf?ce7a0ead692560b4405a96d5b8471f51") format("truetype"), - url("ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion") format("svg"); + src:url("ion.eot?14747ff3e5db3853c40bc9540e9f6c3a"); + src:url("ion.eot?14747ff3e5db3853c40bc9540e9f6c3a#iefix") format("embedded-opentype"), + url("ion.woff2?14747ff3e5db3853c40bc9540e9f6c3a") format("woff2"), + url("ion.woff?14747ff3e5db3853c40bc9540e9f6c3a") format("woff"), + url("ion.ttf?14747ff3e5db3853c40bc9540e9f6c3a") format("truetype"), + url("ion.svg?14747ff3e5db3853c40bc9540e9f6c3a#ion") format("svg"); font-weight:normal; font-style:normal; } @@ -75,7 +76,6 @@ font-family:"ion"; display:inline-block; - vertical-align:middle; line-height:1; font-weight:normal; font-style:normal; diff --git a/searx/static/themes/simple/fonts/ion.svg b/searx/static/themes/simple/fonts/ion.svg index 97ca930bb603ed791eac616f463fdd03909f6782..c16155aab5124068c511ff997a4e70d147041a33 100644 GIT binary patch delta 70 zcmX?>bU10kM0O)XT{B%nvxzfy>RTFE7#J!fmMDa$rYLxo<|!DODHxhq85vla8YmbU a7#VUYI8`bn=A>36=A{&+Zf<5gtPcPN78P>< delta 73 zcmX?{bS!DYM0P_9T?<`9!-+F?8krkd8ks00mM8=Rv14hvf}x>;p^24|nU#@&f{}rt b1($+Tr9xs(YDHpRN>Qqgj?U%=#>4smM7kCF diff --git a/searx/static/themes/simple/fonts/ion.ttf b/searx/static/themes/simple/fonts/ion.ttf index ccc5482b5acace802396a5544a8408d2d3615bd7..8334ba424068d1aa4fe09a3f55a878714b4ccc9f 100644 GIT binary patch delta 166 zcmaDL_drgBfsuiMftR6yftew|%`L=tO4`aR6GdWJq`p)goLJ)HaOjEUCI$wcISdSp z4F&ndB?5CEon~O*lL7MOzYRV--YM3ER40XyH&i6uS`JD)i2WMJT#!@$7U zP>^3-BGB~cGy?;l43IAe)(g~sZMN{5cz&C&4BSjW!x$K@Pif16(VG|-@bDWl=rULU uu@Qp-gCT>(kgPk7!3e|-zww) diff --git a/searx/static/themes/simple/fonts/ion.woff b/searx/static/themes/simple/fonts/ion.woff index 0b7fe877afc3d93e1b5f9705dd04f56c5fb2e57f..dec02f7d6eccd6cd7da4bbbe8039a583e3ac093b 100644 GIT binary patch delta 339 zcmV-Z0j&P`CHN(fPz01_snn5FI0PE_dcl#9Oh>}xIkIqXb94Xz0;m8002TlM03iR} z02+9lV_;-pU;tuiS?){m{5D@1xS1G0;LiKGN^n~G|3k+6jPrq94hFC^03xpoU6UgL zihpG2z`)o8Ft9U36;ef|0B2xi;2vyTfsr%uNDUIPY=4fO=Kz@Ejs)M6DksP=QBEz8Iitl6fu(QG?T%2#nN!Sx6P`j2B|?OGMej9wwy016~Q)o8slDH3BAC4ad5nGCg`Fs8bN8BxPlWqb+4!0O2ffOSH l8UO$;83FgRz5@3T5nJu~{UG|z`?*Rm8URoc2X&Li5;AkQmIwd< delta 339 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 i7h3N+L3lcDbHpZ z&{n7cT1-Iz^XR~TuP^`)0}RwU@F-J!Khy;0G(!4}KC@AOwjbqm3?r}Nj!-ZHsx&ZI zhshDrw1$NMaX-1(xwi;l9KgH> zsQlEh7(n?Rbt*8Rx9ky@$uyRu!Dz;USk}b0Hr`D6BP>~ekdwpnDs90AtyW{!8(CJ% zlA=tz2|G(*^}LE_JlW53{^Ti0io)p==`_h_c+=jONja0@{VD5YC1Lm6D_kwkQBgwt@08l;eZs^*lb+lz6bPqZgcFEw?VNNrybt24REKdg^JzdE$J;%ZA)8G z%G%&3PufwEapps^?#-*g!xImFm74=coLA;~ayJl{Aiu6*#?QwfLO1t}f$OHQ!)t>sRw{O^gsM7<}vTRSEx9=X9;#0Pa|2>o_w<3YEAF{-Q}lAb|?Gf`&{DaPHES%&%(aZmiDw` zRVHbFTR|MWspljCw^_Q%!05~I>f?aVHIYy65lW`ONYlFBBm(?L zJ2^<^DFG-?bIx9q&it8A{;}xRL?O%R^2)<;cXBXz#-(%ByFJA- zSFe6JIb>$Z{NkedB}KCzKVSHGjnwoM4%~a|ZeQ-?;FGpvC)TOe$^!Lr?H#SU4%ttC zA{DNeTtfcKuBfv~iI@aYFt`j+W1c}UnvJHiZyFj8tTijtD2*EOjgH5dobg{gX3iJ$ zKh76iALU2Qe|IDM-nrx5-5({*p8UH@t#;+k4(WHpQ+>zJb$7oUNB{ohAj#9+JuiXu zOHtH^rNc`-%x7PquP@qvus@1yyzVxCty`=8c6xlBgr|RtIq^PYPsFo`$8l=Q+1}pd z|GA~Hw2swP-#TrM(U{87Vb?P+7-pI3tE#J2J$V~ThrzjR=ECaPD=wD1?&r_5=GZL` z=X%S{C`iOsanvK)@h?8OYtNG#R_7z^x%=N6_TGNHIAG=6aoi!@ys<0) zwR(QueDhp!x;Smw*6CXxI?LXFxmPF_R(K^*!nn}ZnyvG4#qnZ1ZCQ}r`s&tK4rB`z z9I(9+P94zwLt9bM_lKb)?a$kcPc`RG?*I45ckRDp%tZLiF~ZpVl+pIQZOTyYv+d6b z0t)84f|9grD(U)1V^F7Owr7u(W|eF<)q!zTPccoou)e5Z)P$P%i?`Z;J3Ll9h^c|F zxnwqGmuwPhz~sATnWmhtnJ}uLsOJ2X+)|;~Om)B}Cp|-qsUKdW4SQm!(iTQNTeo~w1$3cku*OA5Ig;8_YY^+ zRJuTG$2>K*zE#pu9W&TS16{WdO6ENnyIcdejX<9KSROj+P*z z1dn3~M2yEYJnO*bvvhJ|8w@xUsb4-F<>1vuoWGVQP--Bkz>gb$8027B3#vL00YqftiH{kD1jFumd!!E&c=mVMNeYKqT9` z4grMFi5B<}>(&H9oh`l!=en_@gxIQQ00OE|4iPXhbsg_&p;B_nFh0(yf*3U)56q3U zbzqBFC?Hgoi^4>I;W{+mNM&W&__8Xoa{Tp$o}w7q&xhg}u)Ji~s)Z*IYd^YL6f4U` z9!J=?!_T#|{TMJorxIpJzKe=jQj>;qNJ~26h$lT6$Vj1911Un4TZDQfj108x_EEef5 zYm9WamH9YIbw*)o@AgHFrH!#j)aPh*s3o!?z;=XN1KO5|-`DYEz8tiSwT0V4>VV%C zF?}%H(pnbj?6`$Y1-RDE_OQRKEz%J%v_@iqvaUd^BkcFJXj*-twm^s4-x6sL0002a CVIpw= diff --git a/searx/static/themes/simple/js/leaflet.js b/searx/static/themes/simple/js/leaflet.js new file mode 100644 index 0000000000000000000000000000000000000000..21f499c3e94160aafe5f6dfcae19b8e5b495cdff GIT binary patch literal 141941 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%0D6*4Wz71S@l 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 literal 0 HcmV?d00001 diff --git a/searx/static/themes/simple/js/searx.head.js b/searx/static/themes/simple/js/searx.head.js index e6964400b..be7560451 100644 --- a/searx/static/themes/simple/js/searx.head.js +++ b/searx/static/themes/simple/js/searx.head.js @@ -33,7 +33,7 @@ infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true', static_path: script.getAttribute('data-static-path'), translations: JSON.parse(script.getAttribute('data-translations')), - } + }; // update the css d.getElementsByTagName("html")[0].className = (w.searx.touch)?"js touch":"js"; diff --git a/searx/static/themes/simple/js/searx.head.min.js b/searx/static/themes/simple/js/searx.head.min.js index fa5033d6ef33a581ffc57d094678bf688b0ae23a..070d1c3ab8dd4e3385d4d90ca451db81b9fff4f9 100644 GIT binary patch delta 45 ucmeysI*Dz9x>80-NkOrdzJ7XUNk(asUUGh}esOAIQAJ)ljNYhzk_iBR>k$(G delta 10 RcmbQl_JMVR`bN)_OaK<`1PTBE diff --git a/searx/static/themes/simple/js/searx.js b/searx/static/themes/simple/js/searx.js index 92c99340c..5ded864cb 100644 --- a/searx/static/themes/simple/js/searx.js +++ b/searx/static/themes/simple/js/searx.js @@ -162,542 +162,6 @@ window.searx = (function(w, d) { return searx; })(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 e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o @baptistedonaux - */ -var AutoComplete = (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) { - 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); - } - }; - 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) { - var response = params._Cache(params._Pre()); - if (response === undefined) { - var request = AutoComplete.prototype.makeRequest(params, callback); - 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); - }; - return AutoComplete; -}()); -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)); - } - }, - 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 === true) { - this.DOMResults.setAttribute("class", "autocomplete"); - this.Input.setAttribute("data-autocomplete-old-value", this.Input.value); - } - 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 (event) { - params._Select(li); - }; - li.onmouseenter = function () { - var active = params.DOMResults.querySelector("li.active"); - if (active !== li) { - if (active !== null) { - active.classList.remove("active"); - } - li.classList.add("active"); - } - }; - } - }); - }, - /** - * 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) { - console.log('test test test'); - 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); - }, - $AjaxTimer: null, - $Cache: {}, - $Listeners: {} -}; -module.exports = AutoComplete; - -},{}]},{},[1])(1) -}); ;searx.ready(function() { searx.on('.result', 'click', function() { @@ -1097,8 +561,8 @@ module.exports = AutoComplete; var map_boundingbox = JSON.parse(this.dataset.mapBoundingbox); var map_geojson = JSON.parse(this.dataset.mapGeojson); - searx.loadStyle('leaflet/leaflet.css'); - searx.loadScript('leaflet/leaflet.js', function() { + searx.loadStyle('css/leaflet.css'); + searx.loadScript('js/leaflet.js', function() { var map_bounds = null; if(map_boundingbox) { var southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]); @@ -1500,3 +964,543 @@ module.exports = AutoComplete; w.searx.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) +}); diff --git a/searx/static/themes/simple/js/searx.min.js b/searx/static/themes/simple/js/searx.min.js index 88a2d5060101ea91f45f64ac598271a3873b3bf7..b3057c324516dbe130dc2bb78e0e9c521706a5c3 100644 GIT binary patch delta 1116 zcmaJ=&ube;6h@?p9r+UM{OBR6qF0hz>q_sJ+$XSFnevGkVE=Mr-h1=C@6CI2TzP(6 zdA8(*#tigItFHW%g2&erd4vdg-EkKfRqE8_aiV5IU^w9$E#NE=8BkPc>nql4~ z*<;K+9)RrE6#S3~1$LpjSWU13lc>0s*sW@JuBgFM7!IT|dL_*=U)q1F=%}dJX?Hu& z^~doMGEbfW&WIw4juS{gN`Bcms3ZK8oa*&4IRb3ihtD*PAl@@x=tHA{ zBcvSzd_rMzO^_jMf1X)8bCb67e`j7!*{f%&*3Nyps#pv^)*fu$-EiZ%=lTY1h-5%_ z3t$sWD0>JKULf~XR*>`g*M;iN1T}cnP2}0C*c<1&v*INRQl;%{#Js5t~ zN8T+DFEG|@YMg+wRm5}*b7649Lk>f%h<*B8B6MU@MDyluDv#%?${?S)HMzR+D(oalj! zHTVX7aPWv_&2{Lmb6JUAWjB_WaT+7+razve$~P~qR|-`_r_MSLLO>IlM)C;8SmLDU zix_%1Eyk>vrUNC7EMA>c?-7jkM?egTv48rQ@AILp^pP{?k5J6yEl`PBLqu(7>v9Ic%=YQ3IJ3C!m yKtrzW+uAkzD|s3W-yVFH0u^0;+71fHqPwd572*Cria}C delta 1055 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 EKRe|5aR2}S literal 29022 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 From c01325688158fdde886e2ecb347d8d4d9707a84d Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Wed, 16 Jun 2021 15:39:32 +0200 Subject: [PATCH 09/11] [mod] remove common grunt install Before this commit, there are 3 node_modules directory: * one in . * two others in ./searx/statics/themes/* This is no desirable: * it declares the npm depdenencies in the shell script. * dependabot can't updates theses dependencies. * this is a not standard way to build a package (two different locations for the dependencies). With this commit and the PR #150 there is one unique node_modules directory per theme. --- manage | 36 +++++++------------------ searx/static/themes/simple/package.json | 6 ++--- 2 files changed, 12 insertions(+), 30 deletions(-) diff --git a/manage b/manage index d91904255..024fdf39a 100755 --- a/manage +++ b/manage @@ -13,7 +13,6 @@ source_dot_config PYOBJECTS="searx" PY_SETUP_EXTRAS='[test]' -NPM_PACKAGES="less@2.7 less-plugin-clean-css grunt-cli" GECKODRIVER_VERSION="v0.28.0" # SPHINXOPTS= @@ -296,39 +295,24 @@ gecko.driver() { } node.env() { - local err=0 - pushd "${REPO_ROOT}" &> /dev/null # shellcheck disable=SC2230 which npm &> /dev/null || die 1 'node.env - npm is not found!' ( set -e - # shellcheck disable=SC2030 - PATH="$(npm bin):$PATH" - export PATH - build_msg INSTALL "npm install $NPM_PACKAGES" - # shellcheck disable=SC2086 - npm install $NPM_PACKAGES + build_msg INSTALL "theme: oscar" + npm --prefix searx/static/themes/oscar install - cd "${REPO_ROOT}/searx/static/themes/oscar" - build_msg INSTALL "($(pwd)) npm install" - npm install - - build_msg INSTALL "($(pwd)) npm install" - cd "${REPO_ROOT}/searx/static/themes/simple" - npm install + build_msg INSTALL "theme: simple" + npm --prefix searx/static/themes/simple install ) - err=$? - popd &> /dev/null - dump_return "$err" + dump_return $? } node.clean() { build_msg CLEAN "locally installed npm dependencies" rm -rf \ - ./node_modules \ - ./package-lock.json \ ./searx/static/themes/oscar/package-lock.json \ ./searx/static/themes/oscar/node_modules \ ./searx/static/themes/simple/package-lock.json \ @@ -482,16 +466,14 @@ themes.all() { } themes.oscar() { - local gruntfile=searx/static/themes/oscar/gruntfile.js - build_msg GRUNT "${gruntfile}" - PATH="$(npm bin):$PATH" grunt --gruntfile "${gruntfile}" + build_msg GRUNT "theme: oscar" + npm --prefix searx/static/themes/oscar run build dump_return $? } themes.simple() { - local gruntfile=searx/static/themes/simple/gruntfile.js - build_msg GRUNT "${gruntfile}" - PATH="$(npm bin):$PATH" grunt --gruntfile "${gruntfile}" + build_msg GRUNT "theme: simple" + npm --prefix searx/static/themes/simple run build dump_return $? } diff --git a/searx/static/themes/simple/package.json b/searx/static/themes/simple/package.json index 038520a3d..e23157bf4 100644 --- a/searx/static/themes/simple/package.json +++ b/searx/static/themes/simple/package.json @@ -20,8 +20,8 @@ "leaflet": "^1.7.1" }, "scripts": { - "build": "npm install && grunt", - "start": "grunt watch", - "test": "grunt" + "all": "npm install && grunt", + "build": "grunt", + "watch": "grunt watch" } } From 14ba56fd1a9e82206f964a8830953a1b51eecbdd Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Wed, 16 Jun 2021 15:51:43 +0200 Subject: [PATCH 10/11] [mod] make node.clean: call the "clean" script from the packages.json The dependencies and build process are described in the gruntfiles.js and packages.json files. It makes sense to move the clean up to these files too. --- manage | 11 ++++------- searx/static/themes/oscar/package.json | 22 +++++++++++++--------- searx/static/themes/simple/package.json | 3 ++- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/manage b/manage index 024fdf39a..c042d8ebd 100755 --- a/manage +++ b/manage @@ -310,14 +310,11 @@ node.env() { } node.clean() { - build_msg CLEAN "locally installed npm dependencies" - rm -rf \ - ./searx/static/themes/oscar/package-lock.json \ - ./searx/static/themes/oscar/node_modules \ - ./searx/static/themes/simple/package-lock.json \ - ./searx/static/themes/simple/node_modules - ./searx/static/themes/simple/ion.less \ + ( set -e + npm --prefix searx/static/themes/oscar run clean + npm --prefix searx/static/themes/simple run clean + ) dump_return $? } diff --git a/searx/static/themes/oscar/package.json b/searx/static/themes/oscar/package.json index 8a3d48787..94883873d 100644 --- a/searx/static/themes/oscar/package.json +++ b/searx/static/themes/oscar/package.json @@ -1,23 +1,27 @@ { "devDependencies": { - "grunt": "^1.3.0", - "grunt-cli": "^1.3.2", + "grunt": "~1.4.1", + "grunt-cli": "^1.4.3", "grunt-contrib-concat": "~1.0.1", "grunt-contrib-copy": "^1.0.0", "grunt-contrib-jshint": "~3.0.0", "grunt-contrib-less": "~3.0.0", - "grunt-contrib-uglify": "~5.0.0", - "grunt-contrib-watch": "~1.1.0" - }, - "scripts": { - "build": "npm install && grunt", - "start": "grunt watch", - "test": "grunt" + "grunt-contrib-uglify": "~5.0.1", + "grunt-contrib-watch": "~1.1.0", + "jslint": "^0.12.1", + "less": "^4.1.1", + "less-plugin-clean-css": "^1.5.1" }, "dependencies": { "bootstrap": "^3.4.1", "corejs-typeahead": "^1.3.1", "jquery": "^3.6.0", "leaflet": "^1.7.1" + }, + "scripts": { + "all": "npm install && grunt", + "build": "grunt", + "watch": "grunt watch", + "clean": "rm -Rf node_modules package-lock.json" } } diff --git a/searx/static/themes/simple/package.json b/searx/static/themes/simple/package.json index e23157bf4..22357a4c7 100644 --- a/searx/static/themes/simple/package.json +++ b/searx/static/themes/simple/package.json @@ -22,6 +22,7 @@ "scripts": { "all": "npm install && grunt", "build": "grunt", - "watch": "grunt watch" + "watch": "grunt watch", + "clean": "rm -Rf node_modules package-lock.json ion.less" } } From ae677cb64b4456ee336bc62484cbf022e9d6493f Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Wed, 16 Jun 2021 19:18:13 +0200 Subject: [PATCH 11/11] [enh] ./manage node.env - check build tools first The node.env build environment require npm, ttfautohint and fontforge installed in the OS. These tools can be installed by:: sudo -H ./utils/searx.sh install buildhost If one of the tools is not installed, the script node.env stops with a appropriate message. BTW: We ignore CentOS-7 as developer & build platform Signed-off-by: Markus Heiser --- manage | 11 +++++++---- utils/searx.sh | 17 +++++++++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/manage b/manage index c042d8ebd..7019f429b 100755 --- a/manage +++ b/manage @@ -295,15 +295,18 @@ gecko.driver() { } node.env() { - # shellcheck disable=SC2230 - which npm &> /dev/null || die 1 'node.env - npm is not found!' + if ! required_commands npm fontforge ttfautohint; then + info_msg "to install build tools use::" + info_msg " sudo -H ./utils/searx.sh install buildhost" + die 1 "install needed build tools first" + fi ( set -e - build_msg INSTALL "theme: oscar" + build_msg INSTALL "searx/static/themes/oscar/package.json" npm --prefix searx/static/themes/oscar install - build_msg INSTALL "theme: simple" + build_msg INSTALL "searx/static/themes/simple/package.json" npm --prefix searx/static/themes/simple install ) dump_return $? diff --git a/utils/searx.sh b/utils/searx.sh index e1ff4beb0..69068b914 100755 --- a/utils/searx.sh +++ b/utils/searx.sh @@ -51,7 +51,8 @@ shellcheck" BUILD_PACKAGES_debian="\ firefox graphviz imagemagick texlive-xetex librsvg2-bin texlive-latex-recommended texlive-extra-utils fonts-dejavu -latexmk fontforge ttfautohint" +latexmk fontforge ttfautohint +npm" # pacman packages SEARX_PACKAGES_arch="\ @@ -62,7 +63,8 @@ shellcheck" BUILD_PACKAGES_arch="\ firefox graphviz imagemagick texlive-bin extra/librsvg -texlive-core texlive-latexextra ttf-dejavu fontforge ttfautohint" +texlive-core texlive-latexextra ttf-dejavu fontforge ttfautohint +npm" # dnf packages SEARX_PACKAGES_fedora="\ @@ -75,9 +77,16 @@ BUILD_PACKAGES_fedora="\ firefox graphviz graphviz-gd ImageMagick librsvg2-tools texlive-xetex-bin texlive-collection-fontsrecommended texlive-collection-latex dejavu-sans-fonts dejavu-serif-fonts -dejavu-sans-mono-fonts fontforge ttfautohint" +dejavu-sans-mono-fonts fontforge ttfautohint +npm" # yum packages +# +# hint: We do no longer support yum packages, it is to complex to maintain +# automate installation of packages like npm. In the firts step we ignore +# CentOS-7 as developer & build platform (the inital patch which brought +# CentOS-7 supports was not intended to be a developer platform). + SEARX_PACKAGES_centos="\ python36 python36-pip python36-lxml python-babel uwsgi uwsgi-plugin-python3 @@ -88,7 +97,7 @@ BUILD_PACKAGES_centos="\ firefox graphviz graphviz-gd ImageMagick librsvg2-tools texlive-xetex-bin texlive-collection-fontsrecommended texlive-collection-latex dejavu-sans-fonts dejavu-serif-fonts -dejavu-sans-mono-fonts fontforge ttfautohint" +dejavu-sans-mono-fonts" case $DIST_ID-$DIST_VERS in ubuntu-16.04|ubuntu-18.04)